/** * Smart Windowing — Programmatic context compaction * * Three-zone architecture: * Zone 1 (recent): Intact — last N tokens of conversation * Zone 2 (middle): Soft-compacted — importance-aware truncation * Zone 3 (old): Event log — one line per turn * * Trigger: total history tokens > targetHistoryTokens * Method: Purely programmatic (zero LLM calls) * * @see /workspace/project-docs/00-requirements/compilr-dev-agents/smart-windowing-spec.md */ import type { Message } from '../providers/types.js'; export interface WindowingConfig { /** Target maximum tokens for conversation history. Default: 60000 */ targetHistoryTokens: number; /** Tokens reserved for recent window (never compacted). Default: 15000 */ recentWindowTokens: number; /** Whether windowing is enabled. Default: true */ enabled: boolean; } export declare const DEFAULT_WINDOWING_CONFIG: WindowingConfig; export type ImportanceLevel = 'high' | 'medium' | 'low'; export interface TurnPair { /** User messages (usually 1, may include tool_result follow-ups) */ userMessages: Message[]; /** Assistant messages (1+ including tool loops) */ assistantMessages: Message[]; /** Total tokens for this turn pair */ tokenCount: number; /** Importance score */ importance: ImportanceLevel; } interface Zones { recent: TurnPair[]; middle: TurnPair[]; old: TurnPair[]; } export interface WindowingResult { /** Whether windowing was applied */ applied: boolean; /** Messages after windowing */ messages: Message[]; /** Tokens before windowing */ tokensBefore: number; /** Tokens after windowing */ tokensAfter: number; /** Zone sizes */ zones: { recent: number; middle: number; old: number; }; /** Importance distribution */ importanceCounts: Record; } export declare function groupIntoTurnPairs(messages: Message[]): TurnPair[]; export declare function identifyZones(turnPairs: TurnPair[], config: WindowingConfig): Zones; export declare function scoreTurnImportance(pair: TurnPair, allPairs: TurnPair[], index: number): ImportanceLevel; export declare function softCompact(turnPairs: TurnPair[]): Message[]; export declare function compactToEventLog(turnPairs: TurnPair[]): Message[]; export declare function applyWindowing(messages: Message[], config?: WindowingConfig): WindowingResult; export {};