import type { HumanDecisionReceipt } from "../workflows/types.js"; export type PlanApprovalMode = "auto" | "required" | "skip"; export type PlanApprovalPolicy = { mode?: PlanApprovalMode; audience?: string; timeoutMinutes?: number; maxReplans?: number; }; export type ResolvedPlanApprovalPolicy = { mode: PlanApprovalMode; audience: string; timeoutMinutes?: number; maxReplans: number; }; export type PlanApprovalInput = { task: string; plan: unknown; planDigest: string; approval?: PlanApprovalPolicy; revision?: number; }; export type NormalizedPlanApprovalInput = Omit & { approval: ResolvedPlanApprovalPolicy; }; export type PlanApprovalResolution = { provenance: "skipped"; revision: number; } | { provenance: "human"; decision: HumanDecisionReceipt; } | { provenance: "timeout"; decision: HumanDecisionReceipt; }; export type PlanApprovalContinue = { status: "continue"; plan: unknown; planDigest: string; resolution: PlanApprovalResolution; }; export type PlanApprovalStop = { status: "stop"; planDigest: string; resolution: { provenance: "human"; decision: HumanDecisionReceipt; }; }; export type PlanApprovalReplan = { status: "replan"; plan: unknown; planDigest: string; instructions: string; resolution: { provenance: "human"; decision: HumanDecisionReceipt; }; }; export declare function parsePlanApprovalPolicy(value: unknown): ResolvedPlanApprovalPolicy; export declare const planApprovalWorkflow: import("../workflows/types.js").WorkflowDefinition PlanApprovalContinue; }; readonly stop: { readonly from: "stopped"; readonly validate: (value: unknown) => PlanApprovalStop; }; readonly replan: { readonly from: "replan"; readonly validate: (value: unknown) => PlanApprovalReplan; }; }, import("../workflows/types.js").WorkflowIncludeMap> & { nodes: { readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition; readonly approve: import("../workflows/types.js").WorkflowNodeCommon & { nodeType: "checkpoint"; summary?: string; run?: (context: import("../workflows/types.js").WorkflowNodeContext) => import("../workflows/types.js").MaybePromise; humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract; } & { readonly __humanChoices?: { readonly continue: { readonly label: "Yes, continue"; }; readonly stop: { readonly label: "No, stop"; }; readonly replan: { readonly label: "Replan"; readonly input: import("../workflows/types.js").HumanDecisionTextInput & { name: "instructions"; }; }; }; }; readonly continued: import("../workflows/types.js").ComputeNodeDefinition; readonly stopped: import("../workflows/types.js").ComputeNodeDefinition; readonly replan: import("../workflows/types.js").ComputeNodeDefinition; }; includes?: import("../workflows/types.js").WorkflowIncludeMap; exits?: { readonly continue: { readonly from: "continued"; readonly validate: (value: unknown) => PlanApprovalContinue; }; readonly stop: { readonly from: "stopped"; readonly validate: (value: unknown) => PlanApprovalStop; }; readonly replan: { readonly from: "replan"; readonly validate: (value: unknown) => PlanApprovalReplan; }; }; }; export default planApprovalWorkflow;