/** * Eight-Exit Runtime — pure deterministic evaluator. * * EXIT_PRECEDENCE rationale (product decision — see contracts/exits.ts for rationale; * any change to this array requires updating that paragraph in the same commit): * human_interrupt > external_event > wall_clock > budget_cap > turn_cap > * goal_met > error_threshold > no_progress */ import type { ExitEvaluationV1, ExitPolicyV1, ExitSnapshotV1, LoopBudget, LoopLifecycleState, LoopStatus } from "../contracts/index.js"; export interface LegacyExitDecision { shouldExit: boolean; lifecycleState: LoopLifecycleState; status: LoopStatus; reason: string; reasonCode?: string; failureClass?: string; safetySurface?: string; exitEvaluation: ExitEvaluationV1; } export interface ExitPolicyOverrides { goal?: Partial; turns?: Partial; budget?: Partial; wallClock?: Partial; progress?: Partial; errors?: Partial; humanInterrupt?: Partial; externalEvent?: Partial; } export declare function createDefaultExitPolicy(budget: LoopBudget, overrides?: ExitPolicyOverrides): ExitPolicyV1; export declare function validateExitPolicy(policy: ExitPolicyV1): void; export declare function evaluateExitPolicy(policy: ExitPolicyV1, snapshot: ExitSnapshotV1): ExitEvaluationV1; export declare function toLegacyExitDecision(evaluation: ExitEvaluationV1, externalDisposition?: "satisfied" | "superseded" | "cancelled"): LegacyExitDecision; /** * Hash the meaningful workspace/verification state for no-progress detection. * Excludes timestamps, cost counters, prose summaries — only structural changes count. */ export declare function hashProgressState(value: unknown): string; /** @deprecated Use evaluateExitPolicy instead. Retained for downstream compatibility. */ export { inferExitCompat as inferExitCompat }; declare function inferExitCompat(_unused: unknown): never;