import type { Database } from "./schema.js"; import { type Episode } from "./episodes.js"; import { type SemanticNote } from "./semantic-notes.js"; import { getVoiceBaseline } from "./voice-sig.js"; export declare const MAX_BOOTSTRAP_CONVERSATION_CHARS = 100000; export declare const MAX_MESSAGE_CONTENT_CHARS = 500; export interface TopicEntry { topic: string; semanticCount: number; lastUpdated: string | null; avgConfidence: number; totalAccesses: number; } export interface MemoryStatus { totalEpisodes: number; unconsolidatedEpisodes: number; totalSemanticNotes: number; totalVoiceSignatures: number; lastConsolidation: string | null; topTopics: TopicEntry[]; dbSizeBytes: number; } export interface BootstrapNarratives { half_year?: string; quarter?: string; month?: string; week?: string; day?: string; } export interface BootstrapContext { identityPrompt?: string; threadId: number; queryThreadId: number; memorySourceThreadId?: number; recentEpisodes: Episode[]; guardrails: SemanticNote[]; keyKnowledge: SemanticNote[]; baseline: ReturnType; narratives: BootstrapNarratives | null; } export declare function getMemoryStatus(db: Database, threadId: number): MemoryStatus; /** * Top topics, computed on demand over the active notes' keywords. This replaced * the stored meta_topic_index aggregate (dropped in migration 29): the stored * counters needed increment/decrement bookkeeping on every write, expiry and * restore path, drifted whenever a path bypassed them, and fed nothing but * this display. Aggregating a few thousand active notes takes milliseconds. */ export declare function getTopicIndex(db: Database): TopicEntry[]; export declare function getBootstrapContext(db: Database, threadId: number, memorySourceThreadId?: number): Promise; export declare function getCompactRefreshNotes(db: Database, threadId: number): SemanticNote[]; export declare function forgetMemory(db: Database, memoryId: string, _reason: string): { layer: string; deleted: boolean; }; //# sourceMappingURL=bootstrap.d.ts.map