import type { LanguageModel, ModelMessage } from 'ai'; import type { CompactionFactsConfig, KeyFactsConfig, Session } from '../types/index.js'; interface ExtractFactsBeforeCompactionOptions { compactionFacts?: CompactionFactsConfig; /** Effective compaction strategy; drives default for `compactionFacts.enabled` when omitted. */ compactionStrategy?: 'truncate' | 'summarize'; } /** * Fire-and-forget extraction of key facts from the latest user message into * `session.workingMemory['__keyFacts']`. Never await from the hot path. */ export declare function extractKeyFactsInBackground(userMessage: string, session: Session, config: KeyFactsConfig, model: LanguageModel): void; /** * Extract key facts from messages that are about to be compacted away. * Runs BEFORE compaction so that names, dates, numbers, and decisions * survive in `session.workingMemory['__keyFacts']` even after the * original messages are truncated or summarized. * * Returns a Promise so callers can track completion before session save. */ export declare function extractFactsBeforeCompaction(messages: ModelMessage[], session: Session, model: LanguageModel, options?: ExtractFactsBeforeCompactionOptions): Promise; /** * Per-turn extraction from a single user message. * Runs on EVERY turn to capture names, dates, IDs immediately — * before compaction can destroy them. * * Returns a Promise so callers can track completion before session save. */ export declare function extractFactsFromUserMessage(userMessage: string, session: Session, model: LanguageModel, options?: { compactionFacts?: CompactionFactsConfig; }): Promise; /** * Merges extracted string fields into `__keyFacts`. Duplicate values are ignored. * When a new value differs from the stored one, values are kept as a string array * with the latest extraction first (primary). */ export declare function mergeKeyFacts(session: Session, object: Record): void; export {};