/** * Freeze-plan use-case: on explicit approval, dispatches a final architect * step to rewrite the plan as clean/frozen with a "Decisions & rationale" * section distilling the negotiation, then persists issue status as "planned". */ import type { AgentPort } from "../ports/agent.ts"; import type { FsPort } from "../ports/fs.ts"; export interface FreezePlanDeps { agent: AgentPort; fs: FsPort; } export interface FreezePlanConfig { issue: string; worktree: string; planPath: string; diabloDir: string; plannerSkills: string[]; /** * The stable per-negotiation identifier. Passing the SAME runId used in * proposePlan/negotiateTurn resumes the same session, so the planner has * the full negotiation transcript to distill into the rationale section. */ runId: string; } /** * Freezes the plan after explicit approval. Dispatches a final architect * step (SAME stable session as the proposal/negotiation) instructing the * planner to REWRITE the plan at planPath as a clean, frozen plan PLUS a * "Decisions & rationale" section distilling the *why* from the negotiation. * Then persists issue status as "planned". */ export declare function freezePlan(deps: FreezePlanDeps, config: FreezePlanConfig): Promise;