import {$, api, badge, escapeHtml, exposeHandlers, pageWrap, setPanel} from './core.js?v=20260819-3'; export async function renderMemory() { const memory = await api('/api/memory'); const categories = memory.categories || {}; const total = Object.values(categories).reduce((sum, value) => sum + value, 0); const cards = Object.entries(categories).map(([name, value]) => `
${escapeHtml(name)}
${value}
`).join(''); setPanel('Memory', pageWrap(`

Memory

${badge(`${total} total`, 'grey')}`, `
${cards || '
No memory entries yet.
'}
Intelligence retention

Preview expired operational records and low-value knowledge before deleting them.

`)); } export async function runIntelligenceMaintenance(execute) { if (execute && !confirm('Delete the retention candidates shown by the current policy?')) return; const message = $('intelligence-maintenance-msg'); message.textContent = execute ? 'Deleting...' : 'Calculating...'; try { const result = await api(`/api/maintenance/intelligence?execute=${execute ? 'true' : 'false'}`, {method:'POST'}); const entries = Object.entries(result).filter(([key, value]) => !['ok','executed'].includes(key) && Number.isFinite(value)); message.textContent = `${execute ? 'Deleted' : 'Candidates'} - ${entries.map(([key, value]) => `${key.replaceAll('_', ' ')}: ${value}`).join(' - ') || 'none'}`; } catch (error) { message.textContent = `Error: ${error.message}`; } } exposeHandlers({runIntelligenceMaintenance});