File size: 1,340 Bytes
908562b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // βββ 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);
}
}
|