/** * Process Mission Executor (2.3.0). * * The transitional executor that adapts the current spawned-CLI path to the * first-class mission contract. This is the ONLY mission-domain file allowed to * depend on process-spawn machinery (and it imports none of the domain's * provider/CLI/UI concerns). The default harness uses Node `child_process`; * callers may inject a harness for deterministic tests. * * Invariants: * - A raw exit code of 0 is NEVER classified as SUCCEEDED. Without a verifier * it is PARTIAL ("execution completed but unverified"). * - The handle exposes `executionId` and `cancel`, never a ChildProcess. */ import type { MissionExecutor, MissionLaunchOptions } from "./mission-executor.js"; import { type MissionHandle } from "./mission-handle.js"; import type { MissionRequest } from "./mission-request.js"; import { type ExecutorOutcome, type MissionResult } from "./mission-result.js"; export interface ProcessMissionLaunch { command: string; args: readonly string[]; cwd: string; env?: Record; callbacks?: { onStdout?: (chunk: string) => void; onStderr?: (chunk: string) => void; }; } export interface ProcessMissionOutcome extends ExecutorOutcome { stdout: string; stderr: string; } export type ProcessMissionHarness = (launch: ProcessMissionLaunch, signal?: AbortSignal) => Promise; export interface ProcessMissionVerifierInput { request: MissionRequest; outcome: ProcessMissionOutcome; } export interface ProcessMissionVerification { verified: boolean; summary?: string; criterionIds?: string[]; } export type ProcessMissionVerifier = (input: ProcessMissionVerifierInput) => Promise; export interface ProcessMissionExecutorOptions { executorId?: string; /** Maps a MissionRequest to a concrete process launch (executor detail). */ buildLaunch: (request: MissionRequest) => ProcessMissionLaunch; /** Spawn harness override (default: Node child_process). */ harness?: ProcessMissionHarness; /** Optional verifier that may promote an exit-0 outcome to SUCCEEDED. */ verifier?: ProcessMissionVerifier; timeoutMs?: number; /** Execution id factory (default: UUID). Never a process id. */ executionIdFactory?: (request: MissionRequest) => string; } export declare class ProcessMissionExecutor implements MissionExecutor { readonly executorId: string; private readonly _buildLaunch; private readonly _harness; private readonly _verifier?; private readonly _executionIdFactory; private readonly _active; constructor(options: ProcessMissionExecutorOptions); launch(request: MissionRequest, options?: MissionLaunchOptions): Promise; awaitResult(handle: MissionHandle): Promise; cancel(handle: MissionHandle, reason?: string): Promise; private _cancelActive; private _classify; } //# sourceMappingURL=process-mission-executor.d.ts.map