Files
adventure/apps/web/src/lib/ai/provider-registry.ts
Zaine 3b37368e7d
Some checks failed
CI / test (push) Has been cancelled
initial 2
2026-06-26 09:26:50 +01:00

39 lines
1023 B
TypeScript
Executable File

import type { AIProvider, AIProviderType } from "./types";
import { createOllamaProvider } from "./providers/ollama";
import {
createOpenAICompatibleProvider,
createLlamaCppProvider,
} from "./providers/openai-compatible";
const providers: Record<AIProviderType, () => 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"],
},
];
}