import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import { type SubagentToolResult } from "./progress.js"; import type { SubagentProfile, SubagentTelemetry, SubagentUsage, ThinkingLevel } from "../types.js"; /** Mutable per-run state the backend-specific event handler updates from parsed CLI events. */ export interface CliSubagentRunState { setSessionId(sessionId: string): void; setResultText(text: string): void; setEventError(message: string): void; setDiagnosticError(message: string): void; addActivity(line: string): void; publishUsage(usage: SubagentUsage, telemetry: SubagentTelemetry): void; } export interface CliSubagentAdapter { command: string; buildArgs(taskPrompt: string): Promise<{ args: string[]; cleanup?: () => Promise; }>; isTerminalEvent(event: Record): boolean; parseLine(line: string): Record | undefined; extractSessionId(event: Record): string | undefined; extractActivity(event: Record): string | undefined; extractFinalText(event: Record): string | undefined; handleEvent(event: Record, state: CliSubagentRunState): void; } export declare function spawnCliSubagent(params: { label: string; prompt: string; profile: SubagentProfile; thinkingLevel: ThinkingLevel | undefined; ctx: ExtensionContext; signal: AbortSignal | undefined; progressEnabled: boolean; onProgress: ((result: SubagentToolResult) => void) | undefined; onUsage: (usage: SubagentUsage, telemetry: SubagentTelemetry) => void; appendInstructions?: string; sessionId?: string; persistSession?: boolean; adapter: CliSubagentAdapter; }): Promise;