import type { AgentMessage, StreamFn, ToolDefinition } from '../../../core/core-types.js';
import type { AgentDefinition } from '../../agent-definition.js';
import type { ExtensionContext } from '../../extensions/index.js';
import { type TaskSidechainArtifact } from './sidechain.js';
import type { TaskSubagentProgress, TaskSubagentResult } from './types.js';
/**
 * Lightweight task-subagent runner.
 *
 * This intentionally reuses the core AgentController/AgentEngine loop instead
 * of booting AgentSession or spawning a child CLI. The task tool owns policy
 * inheritance; this module owns child execution and progress rollup.
 */
export interface RunTaskSubagentOptions {
    task: string;
    agent: AgentDefinition;
    tools: readonly ToolDefinition[];
    context: ExtensionContext;
    userMessageId?: string;
    initialMessages?: AgentMessage[];
    agentId?: string;
    sidechain?: TaskSidechainArtifact;
    appendSidechain?: boolean;
    streamFn?: StreamFn;
    signal?: AbortSignal;
    onProgress?: (progress: TaskSubagentProgress) => void;
    onReady?: (controls: {
        sendMessage: (message: string) => boolean;
    }) => void;
}
/** Run a task subagent to completion using the in-process AgentController. */
export declare function runTaskSubagent(options: RunTaskSubagentOptions): Promise<TaskSubagentResult>;
//# sourceMappingURL=runner.d.ts.map