import type { CompiledBuildPlan } from "../core/buildPlan.js"; import { type BuildHumanIntegrationDecision } from "../core/buildExecution.js"; import type { GraphExecutionState } from "../core/scheduler.js"; import { type GraphCheckpointLease } from "../runtime/graphCheckpoint.js"; import type { RunPaths } from "./artifacts.js"; import { type GitRunner } from "./worktreeExecution.js"; export interface BuildHumanIntegrationCandidateReview { nodeId: string; worktreePath: string; changedPaths: readonly string[]; validationArtifactSha256: readonly string[]; } export interface BuildHumanIntegrationReview { nodeId: string; mainWorkspaceHeadBefore: string; candidates: readonly Readonly[]; capturedAt: string; } export interface CompleteBuildHumanIntegrationInput { decision: "integrated" | "declined"; selectedCandidateNodeIds: readonly string[]; confirmedByUser: true; } export interface CompleteBuildHumanIntegrationResult { decision: Readonly; state: Readonly; } /** Capture the exact main/candidate evidence shown at the human gate. Re-entry * reads the immutable snapshot instead of silently refreshing what was shown. */ export declare function prepareBuildHumanIntegrationReview(paths: RunPaths, compiled: Readonly, state: Readonly, options: Readonly<{ owner: Readonly; repositoryRoot: string; git: GitRunner; now(): string; }>): Readonly; /** Record an already-performed manual integration (or explicit decline). This * function only inspects Git and checkpoints evidence; it never changes Git. */ export declare function completeBuildHumanIntegration(paths: RunPaths, compiled: Readonly, state: Readonly, input: Readonly, options: Readonly<{ owner: Readonly; graphOwner: Readonly; repositoryRoot: string; git: GitRunner; now(): string; failAt?(point: "after-effect-result"): void; }>): Promise>;