import type { WorkspaceEdit } from "./safety/transaction.js"; import { type ResolvedSubagentInvocation } from "./subagent-runtime.js"; export type CavecrewTerminalState = "completed" | "investigation_failed" | "plan_invalid" | "builder_scope_exceeded" | "builder_failed_and_rolled_back" | "review_changes_required" | "cancelled" | "blocked"; export interface CavecrewInvestigationResult { objective: string; summary: string; flow: string[]; rootCauses: string[]; relevantFiles: string[]; unknowns: string[]; recommendedNextAgent: string; } export interface CavecrewPlan { scope: string[]; nonGoals: string[]; implementationSteps: string[]; invariants: string[]; focusedTests: string[]; acceptanceCriteria: string[]; rollbackExpectations: string[]; } export interface CavecrewBuilderResult { objective: string; status: "implemented" | "failed"; filesChanged: string[]; validations: string[]; rollbackState: "confirmed" | "rolled_back" | "conflict"; remainingRisks: string[]; transactionId?: string; leaseId?: string; checkpointId?: string; } export interface CavecrewReviewResult { verdict: "pass" | "changes_required"; findings: string[]; missingTests: string[]; acceptanceGaps: string[]; } export interface CavecrewProviderFixtures { investigator: (assignment: string, invocation: ResolvedSubagentInvocation) => Promise; planner: (investigations: readonly CavecrewInvestigationResult[], invocation: ResolvedSubagentInvocation) => Promise; builder: (plan: CavecrewPlan, invocation: ResolvedSubagentInvocation) => Promise<{ edits: WorkspaceEdit[]; output: unknown; }>; reviewer: (input: { plan: CavecrewPlan; builder: CavecrewBuilderResult; }, invocation: ResolvedSubagentInvocation) => Promise; } export interface CavecrewRequest { objective: string; assignments: string[]; parentRunId?: string; cwd: string; storageDir: string; signal?: AbortSignal; fixtures: CavecrewProviderFixtures; } export interface CavecrewResult { parentRunId: string; childRunIds: string[]; state: CavecrewTerminalState; investigations: CavecrewInvestigationResult[]; plan?: CavecrewPlan; builder?: CavecrewBuilderResult; review?: CavecrewReviewResult; } export declare function runCavecrew(request: CavecrewRequest): Promise; //# sourceMappingURL=cavecrew-runtime.d.ts.map