import type { AIProvider, AIProviderType } from "./types"; import { createOllamaProvider } from "./providers/ollama"; import { createOpenAICompatibleProvider, createLlamaCppProvider, } from "./providers/openai-compatible"; const providers: Record AIProvider> = { ollama: createOllamaProvider, openai_compatible: () => createOpenAICompatibleProvider("openai_compatible"), llamacpp: createLlamaCppProvider, }; export function getProvider(type: AIProviderType): AIProvider { const factory = providers[type]; if (!factory) throw new Error(`Unknown provider: ${type}`); return factory(); } export function listProviderTypes(): { type: AIProviderType; name: string; envVars: string[]; }[] { return [ { type: "ollama", name: "Ollama", envVars: [] }, { type: "openai_compatible", name: "OpenAI Compatible", envVars: ["OPENAI_API_KEY"], }, { type: "llamacpp", name: "llama.cpp Server", envVars: ["LLAMACPP_API_KEY"], }, ]; }