import { type Readable, type Writable } from "node:stream"; import type { SpawnResult, SpawnUsage } from "../../agent-spawn/dist/index.js"; export type SpawnProcess = typeof import("node:child_process").spawn; export type AgentChildProcessKind = "exec" | "execFile" | "spawn"; export interface AgentChildProcessAttempt { kind: AgentChildProcessKind; command: string; args: string[]; cwd?: string; exitCode: number; signal?: NodeJS.Signals; stdout: string; stderr: string; } export interface AgentChildProcessFollowUp { agent: string; model?: string; stdout: string; stderr: string; exitCode: number; threadId?: string; usage?: SpawnUsage; logFile?: string; } export interface AgentChildProcessResult extends AgentChildProcessAttempt { attempts: [AgentChildProcessAttempt]; agent?: AgentChildProcessFollowUp; } export interface AgentExitPolicy { agent: string; model?: string; prompt: string; when?(attempt: AgentChildProcessAttempt): boolean | Promise; } interface AgentChildProcessRunAgentInput { agent: string; prompt: string; cwd?: string; model?: string; signal?: AbortSignal; } export type AgentChildProcessRunAgent = (input: AgentChildProcessRunAgentInput) => Promise; export interface AgentChildProcessOptions { spawnProcess?: SpawnProcess; runAgent?: AgentChildProcessRunAgent; cwd?: string; env?: Record; signal?: AbortSignal; rejectOnNonZeroExit?: boolean; context?: string; onExit?: AgentExitPolicy; } export interface AgentChildProcessHandle { pid?: number; stdin: Writable | null; stdout: Readable | null; stderr: Readable | null; kill(signal?: NodeJS.Signals | number): boolean; result: Promise; } export declare class AgentChildProcessError extends Error { readonly result: AgentChildProcessResult; constructor(message: string, result: AgentChildProcessResult, options?: { cause?: unknown; }); } export declare function exec(command: string, options?: AgentChildProcessOptions): Promise; export declare function execFile(file: string, args?: string[], options?: AgentChildProcessOptions): Promise; export declare function execFile(file: string, options?: AgentChildProcessOptions): Promise; export declare function spawn(file: string, args?: string[], options?: AgentChildProcessOptions): AgentChildProcessHandle; export declare function spawn(file: string, options?: AgentChildProcessOptions): AgentChildProcessHandle; export {};