// ─── Provider Resolver ─────────────────────────────────────────────────────── import type { ProviderAdapter } from '../../core/provider/index.js'; import { OpenAIProvider } from '../../providers/openai/index.js'; import { AnthropicProvider } from '../../providers/anthropic/index.js'; import { GeminiProvider } from '../../providers/gemini/index.js'; import { OpenAICompatibleProvider, OpenRouterProvider } from '../../providers/openrouter/index.js'; export function resolveProvider(id: string, config?: { apiKey?: string; baseUrl?: string }): ProviderAdapter { switch (id) { case 'openai': return new OpenAIProvider({ id: 'openai', ...config }); case 'anthropic': return new AnthropicProvider({ id: 'anthropic', ...config }); case 'gemini': return new GeminiProvider({ id: 'gemini', ...config }); case 'openrouter': return new OpenRouterProvider({ ...config }); default: // Treat as OpenAI-compatible endpoint return new OpenAICompatibleProvider({ id, label: id, baseUrl: config?.baseUrl ?? process.env[`${id.toUpperCase()}_BASE_URL`], apiKey: config?.apiKey ?? process.env[`${id.toUpperCase()}_API_KEY`], } as any); } }