"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AI_MODELS = exports.AI_PROVIDERS = void 0;
exports.getModelsByProvider = getModelsByProvider;
exports.getModelById = getModelById;
exports.getProviderById = getProviderById;
exports.AI_PROVIDERS = [
    { id: 'anthropic', name: 'Anthropic (Claude)', baseUrl: 'https://api.anthropic.com/v1', requiresApiKey: true },
    { id: 'openai', name: 'OpenAI (GPT)', baseUrl: 'https://api.openai.com/v1', requiresApiKey: true },
    { id: 'google', name: 'Google (Gemini)', baseUrl: 'https://generativelanguage.googleapis.com/v1beta', requiresApiKey: true },
    { id: 'xai', name: 'xAI (Grok)', baseUrl: 'https://api.x.ai/v1', requiresApiKey: true },
    { id: 'deepseek', name: 'DeepSeek', baseUrl: 'https://api.deepseek.com/v1', requiresApiKey: true },
    { id: 'mistral', name: 'Mistral AI', baseUrl: 'https://api.mistral.ai/v1', requiresApiKey: true },
    { id: 'groq', name: 'Groq (Free)', baseUrl: 'https://api.groq.com/openai/v1', requiresApiKey: false, description: 'Free tier available - Fast inference' },
    { id: 'huggingface', name: 'Hugging Face (Free)', baseUrl: 'https://api-inference.huggingface.co', requiresApiKey: false, description: 'Free tier available - Open source models' },
    { id: 'together', name: 'Together AI (Free)', baseUrl: 'https://api.together.xyz/v1', requiresApiKey: false, description: 'Free tier available - Multiple models' },
    { id: 'perplexity', name: 'Perplexity (Free)', baseUrl: 'https://api.perplexity.ai', requiresApiKey: false, description: 'Free tier available - Research-focused' },
];
exports.AI_MODELS = [
    // ==================== ANTHROPIC (CLAUDE) ====================
    { id: 'claude-opus-4', name: 'Claude Opus 4', provider: 'anthropic', apiModelId: 'claude-opus-4-20250514', maxTokens: 32000, supportsVision: true, description: 'Most capable Claude model' },
    { id: 'claude-sonnet-4', name: 'Claude Sonnet 4', provider: 'anthropic', apiModelId: 'claude-sonnet-4-20250514', maxTokens: 64000, supportsVision: true, description: 'Best balance of speed and capability' },
    { id: 'claude-3.7-sonnet', name: 'Claude 3.7 Sonnet', provider: 'anthropic', apiModelId: 'claude-3-7-sonnet-20250219', maxTokens: 64000, supportsVision: true, supportsThinking: true, description: 'Extended thinking capability' },
    { id: 'claude-3.5-sonnet', name: 'Claude 3.5 Sonnet', provider: 'anthropic', apiModelId: 'claude-3-5-sonnet-20241022', maxTokens: 8192, supportsVision: true },
    { id: 'claude-3.5-haiku', name: 'Claude 3.5 Haiku', provider: 'anthropic', apiModelId: 'claude-3-5-haiku-20241022', maxTokens: 8192, supportsVision: true, description: 'Fast and efficient' },
    { id: 'claude-3-opus', name: 'Claude 3 Opus', provider: 'anthropic', apiModelId: 'claude-3-opus-20240229', maxTokens: 4096, supportsVision: true },
    { id: 'claude-3-sonnet', name: 'Claude 3 Sonnet', provider: 'anthropic', apiModelId: 'claude-3-sonnet-20240229', maxTokens: 4096, supportsVision: true },
    { id: 'claude-3-haiku', name: 'Claude 3 Haiku', provider: 'anthropic', apiModelId: 'claude-3-haiku-20240307', maxTokens: 4096, supportsVision: true, description: 'Fastest Claude' },
    // ==================== OPENAI (GPT) ====================
    { id: 'gpt-4.1', name: 'GPT-4.1', provider: 'openai', apiModelId: 'gpt-4.1-2025-04-14', maxTokens: 32768, description: 'Latest GPT-4 model' },
    { id: 'gpt-4.1-mini', name: 'GPT-4.1 Mini', provider: 'openai', apiModelId: 'gpt-4.1-mini-2025-04-14', maxTokens: 32768 },
    { id: 'gpt-4.1-nano', name: 'GPT-4.1 Nano', provider: 'openai', apiModelId: 'gpt-4.1-nano-2025-04-14', maxTokens: 32768, description: 'Ultra-fast' },
    { id: 'gpt-4o', name: 'GPT-4o', provider: 'openai', apiModelId: 'gpt-4o', maxTokens: 16384, supportsVision: true, description: 'Multimodal GPT-4' },
    { id: 'gpt-4o-mini', name: 'GPT-4o Mini', provider: 'openai', apiModelId: 'gpt-4o-mini', maxTokens: 16384, supportsVision: true },
    { id: 'gpt-4-turbo', name: 'GPT-4 Turbo', provider: 'openai', apiModelId: 'gpt-4-turbo', maxTokens: 4096, supportsVision: true },
    { id: 'gpt-4', name: 'GPT-4', provider: 'openai', apiModelId: 'gpt-4', maxTokens: 8192 },
    { id: 'gpt-3.5-turbo', name: 'GPT-3.5 Turbo', provider: 'openai', apiModelId: 'gpt-3.5-turbo', maxTokens: 4096 },
    // ==================== OPENAI O-SERIES (REASONING) ====================
    { id: 'o3-pro', name: 'O3 Pro', provider: 'openai', apiModelId: 'o3-pro', maxTokens: 100000, supportsThinking: true, description: 'Best reasoning model' },
    { id: 'o3', name: 'O3', provider: 'openai', apiModelId: 'o3', maxTokens: 100000, supportsThinking: true },
    { id: 'o3-mini', name: 'O3 Mini', provider: 'openai', apiModelId: 'o3-mini', maxTokens: 65536, supportsThinking: true },
    { id: 'o4-mini', name: 'O4 Mini', provider: 'openai', apiModelId: 'o4-mini', maxTokens: 65536, supportsThinking: true },
    { id: 'o1', name: 'O1', provider: 'openai', apiModelId: 'o1', maxTokens: 100000, supportsThinking: true },
    { id: 'o1-pro', name: 'O1 Pro', provider: 'openai', apiModelId: 'o1-pro', maxTokens: 100000, supportsThinking: true },
    { id: 'o1-mini', name: 'O1 Mini', provider: 'openai', apiModelId: 'o1-mini', maxTokens: 65536, supportsThinking: true },
    // ==================== GOOGLE (GEMINI) ====================
    { id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', provider: 'google', apiModelId: 'gemini-2.5-pro-preview-06-05', maxTokens: 65536, supportsVision: true, supportsThinking: true, description: 'Most capable Gemini' },
    { id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', provider: 'google', apiModelId: 'gemini-2.5-flash-preview-05-20', maxTokens: 65536, supportsVision: true, supportsThinking: true },
    { id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', provider: 'google', apiModelId: 'gemini-2.0-flash', maxTokens: 8192, supportsVision: true },
    { id: 'gemini-2.0-flash-lite', name: 'Gemini 2.0 Flash Lite', provider: 'google', apiModelId: 'gemini-2.0-flash-lite', maxTokens: 8192, supportsVision: true, description: 'Fastest Gemini' },
    { id: 'gemini-1.5-pro', name: 'Gemini 1.5 Pro', provider: 'google', apiModelId: 'gemini-1.5-pro', maxTokens: 8192, supportsVision: true },
    { id: 'gemini-1.5-flash', name: 'Gemini 1.5 Flash', provider: 'google', apiModelId: 'gemini-1.5-flash', maxTokens: 8192, supportsVision: true },
    // ==================== XAI (GROK) ====================
    { id: 'grok-3', name: 'Grok 3', provider: 'xai', apiModelId: 'grok-3', maxTokens: 131072, description: 'Latest Grok model' },
    { id: 'grok-3-fast', name: 'Grok 3 Fast', provider: 'xai', apiModelId: 'grok-3-fast', maxTokens: 131072 },
    { id: 'grok-3-mini', name: 'Grok 3 Mini', provider: 'xai', apiModelId: 'grok-3-mini', maxTokens: 131072 },
    { id: 'grok-3-mini-fast', name: 'Grok 3 Mini Fast', provider: 'xai', apiModelId: 'grok-3-mini-fast', maxTokens: 131072, description: 'Ultra-fast' },
    { id: 'grok-2', name: 'Grok 2', provider: 'xai', apiModelId: 'grok-2-1212', maxTokens: 131072 },
    { id: 'grok-2-vision', name: 'Grok 2 Vision', provider: 'xai', apiModelId: 'grok-2-vision-1212', maxTokens: 32768, supportsVision: true },
    { id: 'grok-beta', name: 'Grok Beta', provider: 'xai', apiModelId: 'grok-beta', maxTokens: 131072 },
    // ==================== DEEPSEEK ====================
    { id: 'deepseek-chat', name: 'DeepSeek V3', provider: 'deepseek', apiModelId: 'deepseek-chat', maxTokens: 8192, description: 'Latest chat model' },
    { id: 'deepseek-reasoner', name: 'DeepSeek R1', provider: 'deepseek', apiModelId: 'deepseek-reasoner', maxTokens: 8192, supportsThinking: true, description: 'Reasoning model' },
    { id: 'deepseek-coder', name: 'DeepSeek Coder', provider: 'deepseek', apiModelId: 'deepseek-coder', maxTokens: 8192, description: 'Code specialist' },
    // ==================== MISTRAL ====================
    { id: 'mistral-large', name: 'Mistral Large', provider: 'mistral', apiModelId: 'mistral-large-latest', maxTokens: 32768, description: 'Most capable Mistral' },
    { id: 'mistral-medium', name: 'Mistral Medium', provider: 'mistral', apiModelId: 'mistral-medium-latest', maxTokens: 32768 },
    { id: 'mistral-small', name: 'Mistral Small', provider: 'mistral', apiModelId: 'mistral-small-latest', maxTokens: 32768 },
    { id: 'codestral', name: 'Codestral', provider: 'mistral', apiModelId: 'codestral-latest', maxTokens: 32768, description: 'Code specialist' },
    { id: 'pixtral-large', name: 'Pixtral Large', provider: 'mistral', apiModelId: 'pixtral-large-latest', maxTokens: 32768, supportsVision: true },
    { id: 'ministral-8b', name: 'Ministral 8B', provider: 'mistral', apiModelId: 'ministral-8b-latest', maxTokens: 32768, description: 'Small & fast' },
    // ==================== GROQ (FREE TIER) ====================
    { id: 'llama-3.1-70b', name: 'Llama 3.1 70B (Groq)', provider: 'groq', apiModelId: 'llama-3.1-70b-versatile', maxTokens: 8192, description: 'Free - Fast inference' },
    { id: 'llama-3.1-8b', name: 'Llama 3.1 8B (Groq)', provider: 'groq', apiModelId: 'llama-3.1-8b-instant', maxTokens: 8192, description: 'Free - Ultra fast' },
    { id: 'mixtral-8x7b', name: 'Mixtral 8x7B (Groq)', provider: 'groq', apiModelId: 'mixtral-8x7b-32768', maxTokens: 32768, description: 'Free - High quality' },
    { id: 'gemma-7b', name: 'Gemma 7B (Groq)', provider: 'groq', apiModelId: 'gemma-7b-it', maxTokens: 8192, description: 'Free - Google model' },
    // ==================== HUGGING FACE (FREE TIER) ====================
    { id: 'meta-llama-3-8b', name: 'Llama 3 8B (HF)', provider: 'huggingface', apiModelId: 'meta-llama/Meta-Llama-3-8B-Instruct', maxTokens: 4096, description: 'Free - Meta Llama' },
    { id: 'mistral-7b', name: 'Mistral 7B (HF)', provider: 'huggingface', apiModelId: 'mistralai/Mistral-7B-Instruct-v0.2', maxTokens: 4096, description: 'Free - Mistral model' },
    { id: 'codellama-7b', name: 'CodeLlama 7B (HF)', provider: 'huggingface', apiModelId: 'codellama/CodeLlama-7b-Instruct-hf', maxTokens: 4096, description: 'Free - Code specialist' },
    { id: 'phi-2', name: 'Phi-2 (HF)', provider: 'huggingface', apiModelId: 'microsoft/Phi-2', maxTokens: 2048, description: 'Free - Microsoft model' },
    // ==================== TOGETHER AI (FREE TIER) ====================
    { id: 'together-llama-3-70b', name: 'Llama 3 70B (Together)', provider: 'together', apiModelId: 'meta-llama/Llama-3-70b-chat-hf', maxTokens: 8192, description: 'Free - High quality' },
    { id: 'together-mixtral-8x7b', name: 'Mixtral 8x7B (Together)', provider: 'together', apiModelId: 'mistralai/Mixtral-8x7B-Instruct-v0.1', maxTokens: 32768, description: 'Free - Mixtral' },
    { id: 'together-qwen-2.5', name: 'Qwen 2.5 72B (Together)', provider: 'together', apiModelId: 'Qwen/Qwen2.5-72B-Instruct', maxTokens: 8192, description: 'Free - Alibaba model' },
    // ==================== PERPLEXITY (FREE TIER) ====================
    { id: 'pplx-sonar', name: 'Sonar (Perplexity)', provider: 'perplexity', apiModelId: 'sonar', maxTokens: 4096, description: 'Free - Research assistant' },
    { id: 'pplx-sonar-online', name: 'Sonar Online (Perplexity)', provider: 'perplexity', apiModelId: 'sonar-online', maxTokens: 4096, description: 'Free - With web search' },
];
function getModelsByProvider(provider) {
    return exports.AI_MODELS.filter(m => m.provider === provider);
}
function getModelById(id) {
    return exports.AI_MODELS.find(m => m.id === id);
}
function getProviderById(id) {
    return exports.AI_PROVIDERS.find(p => p.id === id);
}
//# sourceMappingURL=AIModels.js.map