/** * Memory forgetting — age-based real deletion across knowledge/ and raw/. * * Two entry points: * bumpAndMaybeForget(piMindDir) — called from saveMemory; auto-runs forget * every FORGET_EVERY_N_WRITES writes. * forgetOldMemories(piMindDir, {dryRun}) — manual call from knowledge-lint --prune * and from the bump path above. * * Retention policy (intentionally conservative on user/project; aggressive on * regenerable content): * - knowledge/ type=user → never auto-delete (durable preference) * - knowledge/ type=project → never auto-delete (durable decision) * - knowledge/ type=agent-feedback → delete when frontmatter date > 60 days * - knowledge/ type=reference → delete when frontmatter date > 90 days * - knowledge/ type=compaction → covered by raw/compaction below * - raw/compaction/*.md → delete when mtime > 30 days * - raw/sessions//*.jsonl → delete when mtime > 14 days (the eval * temp-dir pollution problem); empty * subdirs are pruned afterwards * - raw/maintenance-log/*.jsonl → delete when mtime > 30 days; the * last-audit.json / last-forget.json * markers in this directory are preserved * * Marker file: raw/maintenance-log/last-forget.json tracks the write counter * and the most recent run (timestamp + deleted count) for observability. */ export declare const FORGET_EVERY_N_WRITES = 50; export interface ForgetResult { dryRun: boolean; deletedCount: number; byCategory: { knowledge: number; rawCompaction: number; rawSessions: number; rawMaintenanceLog: number; rawImages: number; }; /** Paths that were (or would be) deleted. */ files: string[]; } /** * Increment the per-write counter and, if it crosses the threshold, run * forget synchronously and reset the counter. Call from saveMemory after * a successful write (skip on dedup hits / failures). * * Returns the ForgetResult if forget ran this call; null otherwise. */ export declare function bumpAndMaybeForget(piMindDir: string): ForgetResult | null; /** * Explicitly reset the counter without running forget. Used by knowledge-lint * --prune --apply so that hook-driven and manual forget don't double-fire * shortly after one another. */ export declare function resetForgetCounter(piMindDir: string, lastDeletedCount?: number): void; /** * Run the forget pass. Returns a structured result. With dryRun, no files * are deleted — the result still lists what would have been deleted. */ export declare function forgetOldMemories(piMindDir: string, opts?: { dryRun?: boolean; }): ForgetResult; //# sourceMappingURL=forget.d.ts.map