import { ChatEntry } from "./llm-agent.js"; import { TokenCounter } from "../utils/token-counter.js"; import { LLMMessage } from "../grok/client.js"; /** * Dependencies required by ContextManager for managing conversation context */ export interface ContextManagerDependencies { /** Chat history entries for display */ chatHistory: ChatEntry[]; /** LLM API messages array */ messages: LLMMessage[]; /** Token counter instance */ tokenCounter: TokenCounter; /** Get current token count */ getCurrentTokenCount: () => number; /** Get maximum context size */ getMaxContextSize: () => number; /** Emit events */ emit: (event: string, data: any) => void; /** Clear cache when context limit reached */ clearCache: () => Promise; } /** * Manages conversation context size, warnings, and compaction * * Handles: * - Context usage monitoring and warnings * - Automatic cache clearing at 100% capacity * - Context compaction when size limits exceeded * - Event emission for context changes */ export declare class ContextManager { private deps; /** Warning flag for 80% context usage (one-time) */ private contextWarningAt80; /** Warning flag for 90% context usage (one-time) */ private contextWarningAt90; constructor(deps: ContextManagerDependencies); /** * Emit context change event and add warnings if needed * Called after message additions to monitor context usage */ emitContextChange(): Promise; /** * Add system warnings based on context usage percentage * - 80%: Initial warning (one-time) * - 90%: Urgent warning (one-time) * - 95%: Critical warning (every time) * - 100%: Auto-clear cache */ private addContextWarningIfNeeded; /** * Calculate current context usage as percentage * @returns Percentage of context capacity used (0-100+) */ getContextUsagePercent(): number; /** * Compact context by keeping only the last N messages * Used when context becomes too large for backend to handle * * @param keepLastMessages Number of recent messages to retain * @returns Number of messages removed */ compactContext(keepLastMessages?: number): number; /** * Reset context warning flags * Called when cache is cleared to allow warnings to trigger again */ resetContextWarnings(): void; }