import type { MorePartsResponse } from '../../../agents/agent-usecases.js'; import type { CompanionFinding, PartDefinition, PartResult } from '../../models/types.js'; import { type TeamLeaderExecutionPublicationFence } from './team-leader-execution-terminal.js'; type DeepReadonly = T extends object ? { readonly [Key in keyof T]: DeepReadonly; } : T; interface TeamLeaderFeedbackArgs { readonly partResults: readonly DeepReadonly[]; readonly latestBatchResults: readonly DeepReadonly[]; readonly completedPartResults: readonly DeepReadonly[]; readonly plannedParts: readonly DeepReadonly[]; readonly scheduledIds: readonly string[]; readonly cancellablePartIds: readonly string[]; readonly abortSignal: AbortSignal; readonly companionFindings?: readonly DeepReadonly[]; } interface TeamLeaderExecutionTerminalArgs { readonly partResults: readonly DeepReadonly[]; readonly plannedParts: readonly DeepReadonly[]; readonly scheduledIds: readonly string[]; } export interface TeamLeaderExecutionOptions { initialParts: PartDefinition[]; maxConcurrency: number; abortSignal?: AbortSignal; beforeInitialPartExecution?: () => Promise; /** IDs allow a failed delivery to remain pending without restarting planning forever. */ getPendingLiveInterventionIds?: () => readonly number[]; runPart: (part: PartDefinition, partIndex: number, publicationFence: TeamLeaderExecutionPublicationFence, abortSignal: AbortSignal) => Promise; requestMoreParts: (args: TeamLeaderFeedbackArgs) => Promise; reviewCompletion?: (args: Omit) => Promise; onPartQueued?: (part: DeepReadonly, partIndex: number) => void; onPartCompleted?: (result: DeepReadonly) => void; onPlanningDone?: (feedback: { reason: string; plannedParts: number; completedParts: number; }) => void; onPlanningNoNewParts?: (feedback: { reason: string; plannedParts: number; completedParts: number; }) => void; onPartsAdded?: (feedback: { parts: readonly DeepReadonly[]; reason: string; totalPlanned: number; }) => void; onPlanningError?: (error: unknown) => void; onCompletionPlanningFailure?: (error: unknown) => void; onTerminalError?: (error: unknown) => void; onExecutionTerminal?: (args: TeamLeaderExecutionTerminalArgs) => Promise; } export interface TeamLeaderExecutionResult { plannedParts: PartDefinition[]; partResults: PartResult[]; } export declare function runTeamLeaderExecution(options: TeamLeaderExecutionOptions): Promise; export {}; //# sourceMappingURL=team-leader-execution.d.ts.map