ai-harness / src /cli /state /provider-resolver.ts
stevenkhan's picture
Initial AI Harness - production-grade model-agnostic CLI agent runtime
908562b verified
// ─── 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);
}
}