import type { ThinkingLevel } from "./config.js"; export type Phase = "idle" | "planning" | "awaiting_approval" | "coding" | "judging" | "replanning" | "done" | "failed"; export type Verdict = "approve" | "reject"; export interface JudgeReport { verdict: Verdict; reasons: string; requiredFixes?: string; } export interface OriginalModelState { provider: string; id: string; thinking: ThinkingLevel; } export interface OrchestratorState { phase: Phase; task: string; plan?: string; coderIterations: number; consecutiveRejections: number; judgeReports: JudgeReport[]; yolo: boolean; pendingProviderRetry?: "plan" | "judge"; originalModel?: OriginalModelState; } export interface LoopConfig { maxCoderIterations: number; plannerEscalationAfterRejections: number; requirePlanApproval: boolean; } export type LoopEvent = { type: "start"; task: string; yolo: boolean; } | { type: "plan_produced"; plan?: string; } | { type: "plan_approved"; } | { type: "plan_rejected_by_user"; } | { type: "code_produced"; } | { type: "verdict"; verdict: Verdict; reasons?: string; requiredFixes?: string; } | { type: "recovery_directed"; action: "retry" | "repair" | "replan" | "fail"; providerKind?: "plan" | "judge"; } | { type: "provider_failed"; } | { type: "cancelled"; }; export declare const DEFAULT_LOOP_CONFIG: LoopConfig; export type RejectedBuildOutcome = "fail" | "replan" | "retry"; export declare function decideRejectedBuildOutcome(coderIterations: number, consecutiveRejections: number, config: LoopConfig): RejectedBuildOutcome; export declare function createIdleState(overrides?: Partial): OrchestratorState; export declare function nextPhase(state: OrchestratorState, event: LoopEvent, config?: LoopConfig): OrchestratorState;