export type OrchestratorAgentRoleKind = 'coordinator' | 'specialist' | 'verifier';
export interface OrchestratorAgentRole {
    /** Role category */
    role: OrchestratorAgentRoleKind;
    /** Human-readable name, e.g. "Specialist-1: Storage Layer" */
    name: string;
    /** Files exclusively owned by this agent (empty for coordinator) */
    files: string[];
    /** Fully self-contained prompt the user pastes to launch this agent */
    prompt: string;
    /** Execution wave: 1=coordinator, 2=specialists (parallel), 3=verifier */
    wave: 1 | 2 | 3;
}
export interface OrchestrationPlan {
    specId: string;
    specTitle: string;
    agentCount: number;
    totalWaves: 3;
    roles: OrchestratorAgentRole[];
    /** Markdown guide explaining how to launch each wave */
    executionGuide: string;
}
export interface OrchestrateAgentsPlanInput {
    specId: string;
    projectPath: string;
    agentCount?: number;
}
import type { Spec } from './spec/core.js';
export interface CoordinatorPromptInput {
    spec: Spec;
    specContent: string;
    technicalContent: string;
    count: number;
}
export interface SpecialistPromptInput {
    spec: Spec;
    specContent: string;
    index: number;
    label: string;
    files: string[];
    criteria: string[];
    totalSpecialists: number;
}
export interface VerifierPromptInput {
    spec: Spec;
    criteria: string[];
    allFiles: string[];
}
export interface ExecutionGuideInput {
    spec: Spec;
    count: number;
    roles: OrchestratorAgentRole[];
}
/** SPEC-638: Internal registry entry for a role definition. */
export interface AgentRoleRegistryEntry {
    roleId: string;
    name: string;
    model: 'haiku' | 'sonnet' | 'opus';
    tags: string[];
    fileOwnership: string[];
    alwaysInclude?: boolean;
    runAfterWorkers?: boolean;
}
/** SPEC-638: Shape of src/config/agent-role-registry.json. */
export interface AgentRoleRegistryConfig {
    roles: AgentRoleRegistryEntry[];
}
/** SPEC-694: Compact orchestration plan summary included in update_status(approved) response. */
export interface OrchestrationPlanSummary {
    /** Ordered wave labels: ["Wave 1: Coordinator", "Wave 2: Specialist-1, Specialist-2", ...] */
    executionOrder: string[];
    /** Agent name → exclusive file list (empty arrays = no files assigned yet) */
    fileOwnership: Record<string, string[]>;
    /** true if no two agents share a file — safe for parallel execution */
    parallelSafetyVerdict: boolean;
}
//# sourceMappingURL=agent-orchestration.d.ts.map