/**
 * Orchestrator Types - Agent SDK 기반 오케스트레이션 타입 정의
 */
import { detectLlmAvailability } from '../lib/llm-availability.js';
/**
 * 작업 유형별 LLM 우선순위
 * - GPT/Antigravity → Claude (fallback)
 * - Antigravity: UI/UX, 웹 검색
 */
export const TASK_LLM_PRIORITY = {
    'architecture': ['gpt', 'antigravity', 'claude'],
    'debugging': ['gpt', 'antigravity', 'claude'],
    'uiux': ['antigravity', 'gpt', 'claude'],
    'code-analysis': ['gpt', 'antigravity', 'claude'],
    'code-gen': ['gpt', 'claude'],
    'web-search': ['antigravity', 'gpt', 'claude'],
    'general': ['gpt', 'claude'],
    'code-review': ['gpt', 'antigravity', 'claude'],
    'reasoning': ['gpt', 'antigravity', 'claude'],
};
/**
 * 동적 LLM 우선순위 — Codex/Antigravity 활성화 상태에 따라 자동 조정
 *
 * 기본: Claude만 사용
 * +Codex: 추론/코딩/리뷰에 GPT 추가
 * +Antigravity: 리서치/리뷰/UI에 Antigravity 추가
 */
export function getTaskLlmPriority(type) {
    const { codex, antigravity } = detectLlmAvailability();
    // 둘 다 비활성화 → Claude only
    if (!codex && !antigravity) {
        return ['claude'];
    }
    // 기본 Claude 베이스
    const priority = [];
    if (codex) {
        // GPT 우선 작업 유형
        if (['architecture', 'reasoning', 'code-analysis', 'code-gen', 'debugging', 'code-review'].includes(type)) {
            priority.push('gpt');
        }
    }
    if (antigravity) {
        // Antigravity 우선 작업 유형
        if (['web-search', 'uiux'].includes(type)) {
            priority.unshift('antigravity');
        }
        else if (['code-review', 'architecture', 'reasoning'].includes(type)) {
            // 교차 검증용 — GPT 뒤에
            priority.push('antigravity');
        }
    }
    // Claude는 항상 fallback
    priority.push('claude');
    return priority;
}
//# sourceMappingURL=types.js.map