import type { ZodType } from 'zod'; import type { ContentBlockParam } from '@anthropic-ai/sdk/resources'; import { AbortGraph } from '../abort-graph.js'; import type { HookRegistry } from '../hooks.js'; import type { IAgentSession, Message } from '../types.js'; import type { OutputEvent, SubagentProgressSink, SubagentProgressMeta } from '../types/session-types.js'; import type { TraceSink } from '../trace/index.js'; import { PauseAwareCeiling } from './pause-ceiling.js'; import type { WorkspaceEntry, WorkspaceStore } from '../workspace/workspace-store.js'; import { type SubagentResult, type SubagentStatus, type SubagentTrace } from './result.js'; export type { SubagentProgressMeta }; export interface SubagentHandle { readonly id: string; readonly status: SubagentStatus; readonly session: IAgentSession; run(prompt: string | ContentBlockParam[]): Promise; runToResult(prompt: string | ContentBlockParam[]): Promise>; runInBackground(prompt: string, onResult?: (result: SubagentResult) => void, onProgress?: (event: OutputEvent) => void): void; cancel(): Promise; teardown(options?: { deferInjectContextToCaller?: boolean; }): Promise; getLastStopInjectContext(): string | undefined; readonly durationMs: number | undefined; sendMessage(text: string): void; steer(text: string): void; } export declare class SubagentHandleImpl implements SubagentHandle { readonly id: string; readonly session: IAgentSession; readonly _controller: AbortController; private readonly abortGraph; readonly _outputSchema: ZodType | undefined; private readonly timeoutMs; readonly _hookRegistry: HookRegistry | undefined; readonly _onTerminal: () => void; readonly _parentInputStreamRef?: ReturnType | undefined; readonly _parentAbortSignal?: AbortSignal | undefined; readonly _agentType?: string | undefined; readonly _traceWriter?: TraceSink | undefined; private readonly onSubagentSucceeded?; readonly _idleTimeoutMs: number; _currentStatus: SubagentStatus; private inFlight; _lastMessage: string | undefined; _lastDurationMs: number | undefined; private latestTerminalStatus; _stopDispatched: boolean; _lastStopInjectContext: string | undefined; readonly _progressSink: SubagentProgressSink | undefined; _parentId: string | undefined; _currentTrace: SubagentTrace; _lastStreamedContent: string; _pauseCeiling: PauseAwareCeiling | undefined; _lastStopReason: string | undefined; _logWriter?: { write(event: OutputEvent): void; close(): Promise; }; constructor(id: string, session: IAgentSession, _controller: AbortController, abortGraph: AbortGraph, _outputSchema: ZodType | undefined, timeoutMs: number, _hookRegistry: HookRegistry | undefined, _onTerminal: () => void, _parentInputStreamRef?: ReturnType | undefined, _parentAbortSignal?: AbortSignal | undefined, _agentType?: string | undefined, progressSink?: SubagentProgressSink, parentId?: string, _traceWriter?: TraceSink | undefined, onSubagentSucceeded?: ((usage: SubagentTrace["usage"], costUsd: number | undefined) => void) | undefined, _idleTimeoutMs?: number); get status(): SubagentStatus; get durationMs(): number | undefined; run(prompt: string | ContentBlockParam[], sinkOverride?: SubagentProgressSink): Promise; runToResult(prompt: string | ContentBlockParam[], sinkOverride?: SubagentProgressSink): Promise>; runInBackground(prompt: string, onResult?: (result: SubagentResult) => void, onProgress?: (event: OutputEvent) => void): void; cancel(): Promise; teardown(options?: { deferInjectContextToCaller?: boolean; }): Promise; getLastStopInjectContext(): string | undefined; readonly _pendingUserMessages: string[]; private _drainingMessages; sendMessage(text: string): void; readonly _steeringMessages: string[]; readonly _progressEvents: import('../tools/subagent/emit-progress.js').ProgressEventPayload[]; readonly _pendingWorkspaceEntries: WorkspaceEntry[]; _workspaceDroppedSinceDrain: number; _workspaceStore: WorkspaceStore | undefined; steer(text: string): void; emitProgress(payload: import('../tools/subagent/emit-progress.js').ProgressEventPayload): void; private _drainWorkspaceDeliveries; get _beforeNextRound(): () => string | undefined; }