/** * Context Compaction with RLM (Retrieval-augmented Language Model) pattern. * * Strategy: * - Keep last N messages verbatim (the "hot window") * - Compact older messages into summaries (the "cold archive") * - Use keyword retrieval to pull relevant archived messages back * into context when the current prompt matches them * * This lets conversations go much longer without overwhelming context. */ export interface CompactedMessage { role: "user" | "assistant"; content: string; /** Original message ID for deduplication */ originalId?: string; /** Whether this is a compacted summary vs original */ isCompacted?: boolean; } export interface ContextWindow { /** System prompt pieces */ systemParts: string[]; /** Messages to send to the model */ messages: CompactedMessage[]; /** Total estimated tokens */ estimatedTokens: number; /** Number of messages that were compacted */ compactedCount: number; } export interface CompactionConfig { /** Messages to keep verbatim (the hot window). Default: 6 */ hotWindowSize: number; /** Max estimated tokens for the full context. Default: 8000 */ maxContextTokens: number; /** Number of archived messages to retrieve via RLM. Default: 3 */ rlmRetrievalCount: number; /** Trigger compaction when message count exceeds this. Default: 8 */ compactionThreshold: number; } export declare const DEFAULT_COMPACTION_CONFIG: CompactionConfig; /** * Build an optimized context window using RLM pattern. * * 1. Keep last `hotWindowSize` messages verbatim * 2. Archive older messages * 3. Use keyword retrieval to find relevant archived messages * 4. Compact remaining archived messages into a summary */ export declare function buildContextWindow(allMessages: CompactedMessage[], currentPrompt: string, config?: CompactionConfig): ContextWindow; //# sourceMappingURL=compaction.d.ts.map