export type MultiTaskAction = | "run" | "start" | "status" | "collect" | "cancel"; export type BatchStatus = "running" | "completed" | "failed" | "cancelled"; export type MultiTaskWorkerKind = "implementation" | "research"; export type WorkerStatus = | "queued" | "running" | "completed" | "failed" | "cancelled"; export interface MultiTaskInputTask { id: string; task: string; paths: string[]; kind?: MultiTaskWorkerKind; } export interface NormalizedMultiTaskTask extends MultiTaskInputTask { kind: MultiTaskWorkerKind; } export interface MultiTaskInput { action: MultiTaskAction; batchId?: string; tasks?: MultiTaskInputTask[]; maxConcurrency?: number; model?: string; } export interface MultiTaskToolCall { name: string; arguments: Record; } export interface MultiTaskWorker { id: string; task: string; paths: string[]; kind: MultiTaskWorkerKind; model: string; thinkingLevel?: string; status: WorkerStatus; startedAt?: string; completedAt?: string; output?: string; error?: string; runDir?: string; subagentId?: string; reusable?: boolean; turn?: number; progress?: string; toolCalls: MultiTaskToolCall[]; controller: AbortController; } export interface MultiTaskBatch { id: string; cwd: string; model: string; thinkingLevel?: string; parentSessionId: string; status: BatchStatus; createdAt: string; completedAt?: string; maxConcurrency: number; implementationTools: string[]; keepOpen: boolean; cancelRequested: boolean; workers: MultiTaskWorker[]; } export interface MultiTaskWorkerView { id: string; task: string; paths: string[]; kind: MultiTaskWorkerKind; model: string; thinkingLevel?: string; status: WorkerStatus; startedAt?: string; completedAt?: string; output?: string; error?: string; runDir?: string; subagentId?: string; reusable?: boolean; turn?: number; progress?: string; toolCalls: MultiTaskToolCall[]; } export interface MultiTaskBatchView { id: string; model: string; thinkingLevel?: string; status: BatchStatus; createdAt: string; completedAt?: string; maxConcurrency: number; workers: MultiTaskWorkerView[]; } export interface MultiTaskDetails { action: MultiTaskAction; batch: MultiTaskBatchView; } export interface MultiTaskBatchHandle { batch: MultiTaskBatch; completion: Promise; }