import type { ModelRegistry, ThinkingLevel } from "@earendil-works/pi-coding-agent"; import type { CompiledBuildPlan } from "../core/buildPlan.js"; import type { BuildExecutionPolicy } from "../core/buildExecution.js"; import type { ExecutionLimits } from "../core/scheduler.js"; import type { GraphCheckpointLease } from "../runtime/graphCheckpoint.js"; import type { PiBuildModel, PiNestedSessionFactory } from "../runtime/piBuildWorker.js"; import type { RunPaths } from "./artifacts.js"; import { type BuildCoordinatorResult, type BuildWorkerBudgetEstimates } from "./buildCoordinator.js"; import { type PiBuildCoordinatorRuntimeOptions, type ReviewedCommandResult } from "./piBuildCoordinatorAdapter.js"; import { type GitRunner } from "./worktreeExecution.js"; export interface ExecutePiBuildGraphLifecycleOptions { compiled: Readonly; paths: RunPaths; owner: Readonly; graphOwner: Readonly; repositoryRoot: string; candidateRoot: string; protectedWorkspacePaths: readonly string[]; model: Readonly; thinkingLevel: ThinkingLevel; modelRegistry: ModelRegistry; family?: string; now(): string; pid: number; limits: Readonly; policy: Omit; maxActionConcurrency: number; routingDecisionId: string; budgetForNode(nodeId: string): Readonly>; runReviewedCommand(command: string, options: Readonly<{ cwd: string; timeoutMs: number; signal?: AbortSignal; }>): Promise; validateReviewedCommands: PiBuildCoordinatorRuntimeOptions["validateReviewedCommands"]; validateStructuredOutput?: PiBuildCoordinatorRuntimeOptions["validateStructuredOutput"]; sessionFactory?: Readonly; git?: Readonly; signal?: AbortSignal; isProcessAlive?(pid: number): boolean; } /** Compose the supported production Pi BUILD stack. The outer lifecycle owns * the selected model and lease; nested workers reuse those exact trusted * objects while the coordinator alone owns durable graph/artifact mutation. */ export declare function executeBuildGraphLifecycle(options: Readonly): Promise;