import type { Message } from '../session/session-jsonl.js'; import type { MiniAgentEvent } from '../subagent/agent-events.js'; import { type CompactHookRegistry } from './compact-hooks.js'; import type { AgentLoopLlmUsage } from './agent-loop-types.js'; export type RecoveryState = { kind: 'idle'; level: 0; llmCompactionFailureStreak: number; llmSummarize: 'available' | 'fused'; } | { kind: 'cheap'; level: 1; llmCompactionFailureStreak: number; llmSummarize: 'available' | 'fused'; } | { kind: 'llm_summarize'; level: 2; llmCompactionFailureStreak: number; llmSummarize: 'available' | 'fused'; } | { kind: 'truncate'; level: 3; llmCompactionFailureStreak: number; llmSummarize: 'available'; } | { kind: 'fused'; level: 3; llmCompactionFailureStreak: number; llmSummarize: 'fused'; }; export interface OverflowRecoveryState { recovery: RecoveryState; readonly level: RecoveryState['level']; readonly llmCompactionFailureStreak: number; readonly skipLlmCompactionOnOverflow: boolean; overflowRecoveries: number; contextCompactions: number; microcompactTotalSavedChars: number; compactionOverflowRetries: number; } export declare function createOverflowRecoveryState(): OverflowRecoveryState; export interface OverflowRecoveryParams { state: OverflowRecoveryState; errorText: string; currentMessages: Message[]; sessionKey: string; runId: string; prepareCompaction: (params: { messages: Message[]; sessionKey: string; runId: string; forceCompaction?: boolean; abortSignal?: AbortSignal; }) => Promise<{ summary?: string; summaryMessage?: Message; messages?: Message[]; droppedMessages?: number; checkpointOutline?: string[]; usage?: AgentLoopLlmUsage[]; }>; replaceMessages?: (sessionKey: string, messages: Message[]) => Promise; compactHooks?: CompactHookRegistry; push: (event: MiniAgentEvent) => void; abortSignal?: AbortSignal; } export type RecoveryOutcome = { kind: 'retry-same-turn'; replacedSummaryMessage?: Message; } | { kind: 'rethrow'; }; export declare function findSafeTruncationPoint(messages: Message[], targetKeep: number): number; export declare function runOverflowRecovery(params: OverflowRecoveryParams): Promise; //# sourceMappingURL=overflow-recovery.d.ts.map