export type SubagentRole = "explorer" | "reviewer" | "worker" | "verifier" | "custom"; export type SubagentStatus = "completed" | "failed" | "timed_out"; export interface SubagentPermissions { readOnly?: boolean; allowedPaths?: string[]; writePaths?: string[]; allowNetwork?: boolean; } export interface SubagentSpec { id?: string; role: SubagentRole; goal: string; agentRef?: string; model?: string; tools?: string[]; permissions?: SubagentPermissions; maxSteps?: number; maxToolCalls?: number; timeoutMs?: number; } export interface SubagentResult { id: string; role: SubagentRole; goal: string; status: SubagentStatus; summary: string; output: string; toolCallsExecuted: number; touchedFiles: string[]; warnings: string[]; startedAt: string; endedAt: string; durationMs: number; error?: string; metadata?: Record; } export interface SubagentRunnerInput { spec: Required> & SubagentSpec; parentRunId: string; } export interface SubagentRunnerResult { output: string; toolCallsExecuted?: number; touchedFiles?: string[]; warnings?: string[]; metadata?: Record; } export type SubagentRunner = (input: SubagentRunnerInput) => Promise; export interface SubagentOrchestratorOptions { parentRunId: string; maxParallel?: number; maxSubagents?: number; defaultTimeoutMs?: number; runner: SubagentRunner; onEvent?: (event: { type: "subagent_start" | "subagent_result"; result?: SubagentResult; spec?: SubagentSpec; }) => void; } export declare const normalizeSubagentSpec: (spec: SubagentSpec, index: number) => SubagentRunnerInput["spec"]; export declare const assertNoOverlappingWriteScopes: (specs: SubagentSpec[]) => void; export declare class SubagentOrchestrator { private options; constructor(options: SubagentOrchestratorOptions); run(specs: SubagentSpec[]): Promise; } //# sourceMappingURL=SubagentOrchestrator.d.ts.map