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