import { z } from 'zod';
import { runAgentSchema, type RunAgentInternalArgs } from '../../tools/run_agent.js';
export type AgentSpec = z.infer<typeof runAgentSchema> & {
    taskId?: string;
};
export type { RunAgentInternalArgs };
export interface DispatchOptions {
    waitAll: boolean;
}
export interface AgentDispatchResult {
    label: string;
    runner: string;
    agentName?: string;
    status: 'success' | 'error';
    elapsed: string;
    result: string;
}
export declare function runAgentsLocally(agents: AgentSpec[], opts: DispatchOptions): Promise<{
    content: [{
        type: 'text';
        text: string;
    }];
    isError: boolean;
}>;
/**
 * Main dispatcher entry point (v3.0 — Refactored).
 *
 * Routing logic:
 *   - ALL agents are Hermes + waitAll=true → dispatch via Kanban (durable, SQLite-backed)
 *   - Otherwise → dispatch via runAgentsLocally (in-process, spawn direct)
 *
 * Kanban dispatch is only used for Hermes-only groups because:
 *   1. Kanban provides durability (survives crashes)
 *   2. Kanban provides circuit breaker (auto-reclaim, auto-retry)
 *   3. Kanban provides dependency graph (parent→child)
 *   4. Non-Hermes runners (claude, kilo, etc.) can't be spawned by the Kanban dispatcher
 */
export declare function dispatchAgents(agents: AgentSpec[], opts: DispatchOptions): Promise<{
    content: [{
        type: "text";
        text: string;
    }];
    isError: boolean;
}>;
//# sourceMappingURL=dispatcher.d.ts.map