Repository Public
1import { env } from "../lib/env";2import { createXaiImage, createXaiLLM, createXaiSpeech, createXaiVideo } from "./xai";3import type { ImageProvider, LLMProvider, SpeechProvider, VideoProvider } from "./types";45/** Provider registry: the only place that knows which vendor backs each interface. */6export interface Providers { llm: LLMProvider; image: ImageProvider; video: VideoProvider; speech: SpeechProvider; name: string }7let cached: Providers | null = null;8export function providers(): Providers {9 if (cached) return cached;10 const cfg = { apiKey: env.xaiKey, llmModel: env.llmModel, imageModel: env.imageModel };11 return (cached = { name: "xai", llm: createXaiLLM(cfg), image: createXaiImage(cfg), video: createXaiVideo(cfg), speech: createXaiSpeech(cfg) });12}13/** Test seam. */14export function setProviders(p: Providers | null) { cached = p; }15