| // βββ 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); | |
| } | |
| } | |