/** Explicit memory tiers (types), ordered low → high on the promotion ladder. */ export declare const MEMORY_TIERS: readonly ["ephemeral", "project", "reference", "global"]; export type MemoryTier = (typeof MEMORY_TIERS)[number]; /** Tiers that must never be silently evicted or truncated. */ export declare const PROTECTED_TIERS: readonly MemoryTier[]; export interface MemoryBit { id: string; content: string; category: 'preferences' | 'technical' | 'business' | 'people' | 'lessons'; tags: string[]; sourceRepo?: string; createdAt: string; usedCount: number; /** Memory tier. New in P5-09; legacy entries default to 'project' on load. */ tier: MemoryTier; /** ISO timestamp of the last recorded use — drives LRU eviction. Optional; * falls back to `createdAt` when absent. */ lastUsedAt?: string; } interface TierPolicy { /** Max number of entries retained in this tier before eviction kicks in. */ maxEntries: number; /** Max content length (chars). Enforced by truncation on evictable tiers. */ maxContentChars: number; } /** * Per-tier caps. Deliberately generous for durable tiers, tight for scratch. * Protected tiers (reference/global) use these as soft budgets: over-budget * warns loudly but never drops an entry. */ export declare const TIER_POLICY: Record; /** * Mask obvious secrets in a string. Returns the redacted text and how many * secrets were masked. Never throws; non-string input yields an empty result. */ export declare function redactSecrets(content: string): { redacted: string; count: number; }; export declare function addMemory(content: string, category?: MemoryBit['category'], tags?: string[], sourceRepo?: string, tier?: MemoryTier): MemoryBit; /** * Promote an entry UP the ladder. Manual only — this IS the deliberate proof of * value. By default it moves exactly one tier up. An explicit `to` may jump * further but MUST be strictly higher than the current tier (never a demotion). * The default one-step promotion requires evidence of use (`usedCount > 0`) * unless `force` is set. Returns the updated bit, or null if not found / no-op. */ export declare function promoteMemory(id: string, opts?: { to?: MemoryTier; reason?: string; force?: boolean; }): MemoryBit | null; /** * Record that an entry was used — the auditable evidence a later promotion can * rely on. Bumps `usedCount` and `lastUsedAt`. Explicit by design: search does * NOT auto-record, so reads stay pure and nothing is promoted behind your back. */ export declare function recordMemoryUse(id: string): MemoryBit | null; export declare function searchMemory(query: string): MemoryBit[]; export declare function listMemory(): MemoryBit[]; export declare function getMemoryStats(): { total: number; byCategory: Record; byTier: Record; }; export {};