import { LLM_CONFIG } from "../../config/llm.js"; import { OpenAiCompatibleAdapter } from "./openai-compatible.js"; import { GeminiAdapter } from "./gemini.js"; import type { LlmAdapter } from "./types.js"; export function createAdapter(): LlmAdapter { switch (LLM_CONFIG.provider) { case "local": return new OpenAiCompatibleAdapter( LLM_CONFIG.url, undefined, LLM_CONFIG.model, ); case "openrouter": return new OpenAiCompatibleAdapter( LLM_CONFIG.url, process.env["OPENROUTER_API_KEY"], LLM_CONFIG.model, ); case "deepseek": return new OpenAiCompatibleAdapter( LLM_CONFIG.url, process.env["DEEPSEEK_API_KEY"], LLM_CONFIG.model, ); case "groq": return new OpenAiCompatibleAdapter( LLM_CONFIG.url, process.env["GROQ_API_KEY"], LLM_CONFIG.model, ); case "gemini": { const apiKey = process.env["GEMINI_API_KEY"]; if (!apiKey) throw new Error("GEMINI_API_KEY env var not set"); if (!LLM_CONFIG.model) throw new Error("LLM_CONFIG.model required for gemini"); return new GeminiAdapter(apiKey, LLM_CONFIG.model); } default: throw new Error(`Unknown provider: ${LLM_CONFIG.provider as string}`); } }