import { type GenerationPlan } from "./generation-plan.js"; import { type GenerationDownloadInput } from "./generation-download.js"; import { GenerationStore, type GenerationVerification } from "./generation-store.js"; import { type PersistedOperationObserver } from "../persisted-operation-observer.js"; export interface GenerationInstallOperation { schemaVersion: 1; id: string; planDigest: string; phase: "queued" | "downloading" | "verifying" | "verified" | "failed" | "interrupted"; candidateId?: string; createdAt: string; finishedAt?: string; error?: "ARTIFACT_INPUT_FAILED" | "CANDIDATE_ALLOCATION_FAILED" | "DOWNLOAD_FAILED" | "VERIFICATION_FAILED" | "INSTALL_FAILED" | "INTERRUPTED"; } export interface GenerationInstallerOptions { operationsDirectory: string; store: GenerationStore; verify(directory: string, plan: GenerationPlan, options: { signal?: AbortSignal; privateRoot: string; }): Promise; /** 仅受信宿主配置可覆盖执行器,HTTP 请求不得指定可执行文件或验证器。 */ download?: (input: GenerationDownloadInput) => Promise; pnpmExecutable?: string; pnpmScript?: string; onOperation?: PersistedOperationObserver; } /** * 在独占工作区内持久化并串行执行安装;验证成功也不改变活动版本。 * 重复请求复用同一操作。冷启动发现中断时保留候选供恢复诊断,不自动重试或清理。 */ export declare class GenerationInstaller { private readonly options; private readonly directory; private readonly running; private tail; private closed; constructor(options: GenerationInstallerOptions); status(id: string): GenerationInstallOperation; install(id: string, input: GenerationPlan, options?: { token?: string; signal?: AbortSignal; }): Promise; /** 正常关闭等待所有已接受操作完成;上层可先取消其 AbortSignal。 */ close(): Promise; private execute; private file; private save; private observe; } //# sourceMappingURL=generation-installer.d.ts.map