/**
 * SwarmOrchestrator - 에이전트 자가 복제 패턴 (Swarm Pattern)
 *
 * SKILL.md 참조: Claude Code의 Swarm 패턴을 Core 자체 구현으로 재현
 * - 에이전트가 "너무 복잡하다" 판단 시 하위 에이전트 동적 생성
 * - 기존 launch()/poll() 인프라 활용
 * - Claude Code + Cursor IDE 모두 지원 (플랫폼 독립)
 */
import { ToolResult } from '../types/tool.js';
import type { AgentResult, ClaudeModel } from './types.js';
/** Swarm 설정 */
export interface SwarmConfig {
    /** 루트 프롬프트 */
    prompt: string;
    /** 에이전트 이름 (선택) */
    agentName?: string;
    /** 모델 (기본: sonnet) */
    model?: ClaudeModel;
    /** 최대 분할 깊이 (기본: 2) */
    maxDepth?: number;
    /** 복잡도 임계값 - 이 이상이면 분할 (기본: 15) */
    splitThreshold?: number;
    /** 최대 동시 하위 에이전트 수 (기본: 5) */
    maxConcurrentChildren?: number;
    /** 분할 시 콜백 */
    onSplit?: (task: SwarmTask) => void;
    /** 완료 시 콜백 */
    onComplete?: (task: SwarmTask, result: AgentResult) => void;
    /** 프로젝트 경로 */
    projectPath?: string;
    /** 타임아웃 (ms, 기본: 5분) */
    timeout?: number;
}
/** Swarm 작업 */
export interface SwarmTask {
    id: string;
    parentId: string | null;
    prompt: string;
    depth: number;
    status: 'pending' | 'analyzing' | 'running' | 'splitting' | 'completed' | 'failed';
    complexity?: number;
    children: string[];
    taskId?: string;
    result?: AgentResult;
    error?: string;
    createdAt: number;
    startedAt?: number;
    completedAt?: number;
}
/** Swarm 결과 */
export interface SwarmResult {
    rootTaskId: string;
    tasks: SwarmTask[];
    totalDuration: number;
    splitCount: number;
    successCount: number;
    failureCount: number;
    maxDepthReached: number;
    mergedResult: string;
}
/** 복잡도 분석 결과 */
interface ComplexityAnalysis {
    score: number;
    factors: string[];
    suggestedSplits?: string[];
}
export declare class SwarmOrchestrator {
    private tasks;
    private config;
    private startTime;
    constructor(config: SwarmConfig);
    /**
     * Swarm 실행
     */
    execute(): Promise<SwarmResult>;
    /**
     * 태스크 처리
     */
    private processTask;
    /**
     * 복잡도 분석
     */
    private analyzeComplexity;
    /**
     * 분할 제안 생성
     */
    private suggestSplits;
    /**
     * 분할 여부 결정
     */
    private shouldSplit;
    /**
     * 태스크 분할
     */
    private splitTask;
    /**
     * 하위 프롬프트 생성
     */
    private createChildPrompt;
    /**
     * 하위 결과 병합
     */
    private mergeChildResults;
    /**
     * 태스크 실행 (분할 없이) — 실패 시 자동 재시도
     */
    private executeTask;
    /**
     * 결과 수집
     */
    private collectResults;
    /**
     * 태스크 생성
     */
    private createTask;
    private sleep;
}
/**
 * Swarm 패턴으로 복잡한 작업 실행
 *
 * @example
 * import { swarm } from '@su-record/vibe/orchestrator';
 *
 * const result = await swarm({
 *   prompt: 'Implement login feature with: 1. UI form 2. Validation 3. API call 4. Error handling',
 *   maxDepth: 2,
 *   splitThreshold: 15,
 *   onSplit: (task) => console.log(`Splitting: ${task.id}`),
 * });
 */
export declare function swarm(config: SwarmConfig): Promise<ToolResult & {
    swarmResult: SwarmResult;
}>;
/**
 * 작업 복잡도 분석 (swarm 없이)
 *
 * @example
 * const analysis = analyzeTaskComplexity('Implement login with validation and error handling');
 * console.log(analysis.score); // 15
 */
export declare function analyzeTaskComplexity(prompt: string): ComplexityAnalysis;
export {};
//# sourceMappingURL=SwarmOrchestrator.d.ts.map