export type CompactionDecisionMode = "none" | "request_time" | "after_turn"; export type CompactionDecisionSource = "automatic" | "explicit"; export type CompactionDecisionReason = "explicit" | "disabled" | "in_flight" | "cooldown" | "insufficient_material" | "automatic_trigger" | "no_trigger"; export type CompactionDecisionSignal = "context_ratio" | "absolute_threshold" | "raw_threshold" | "iteration"; export interface CompactionDecisionInput { source: CompactionDecisionSource; explicitMode?: Exclude; /** True while work is actively executing; otherwise compaction runs after the turn. */ isMidRun: boolean; enabled: boolean; inFlight?: boolean; pending?: boolean; cooldownActive?: boolean; hasSufficientMaterial: boolean; contextRatioReached?: boolean; absoluteThresholdReached?: boolean; rawThresholdReached?: boolean; iterationReached?: boolean; } export interface CompactionDecision { mode: CompactionDecisionMode; reason: CompactionDecisionReason; satisfiedSignals: readonly CompactionDecisionSignal[]; } /** * Deterministically selects whether and when compaction should run. Callers * provide already-evaluated guards and thresholds so this remains runtime-free. */ export declare function decideCompaction(input: CompactionDecisionInput): CompactionDecision; //# sourceMappingURL=decision-policy.d.ts.map