/** * In-memory LRU + TTL cache of recent investigations. * * log10x_investigate writes a record per call; log10x_investigation_get * reads by id. The cache lets follow-up turns reference a prior report * without re-running the correlation, and lets the model cross-reference * pattern lists across investigations in the same session. * * Capped at 50 entries (LRU eviction) and 30 minutes per entry (TTL). * Without the TTL, long-running Claude Desktop sessions accumulate * multi-hour-old investigations forever; expiring them means a model citing * "investigation abc123 from earlier" gets a clean "expired" response * rather than stale data. * * Not persistent — state dies with the process. That's fine: MCP * conversations are per-process and this is session-local memory. */ export interface InvestigationRecord { investigationId: string; createdAt: number; startingPoint: string; environment: string; reporterTier: string; shape: 'acute' | 'drift' | 'flat' | 'environment' | 'unresolved'; /** The full markdown report returned to the caller. */ report: string; /** Flattened list of pattern identities touched by this investigation. */ patternsReferenced: string[]; } export declare function recordInvestigation(rec: InvestigationRecord): void; export declare function getInvestigation(investigationId: string): InvestigationRecord | undefined; export declare function listInvestigations(limit?: number): InvestigationRecord[]; /** Clear the cache — exposed for tests. */ export declare function clearInvestigationsForTest(): void;