/** * LLM singleton for NoteLett backend. * * Wraps @bytelyst/llm with lazy initialization. * Provider is auto-detected from env vars (LLM_PROVIDER, OPENAI_API_KEY, etc.). */ import { getLLM, createLLMProvider, setLLM } from '@bytelyst/llm'; import type { LLMProvider } from '@bytelyst/llm'; let initialized = false; /** * Initialize the LLM provider singleton. * Safe to call multiple times — only initializes once. */ export function initLLM(): LLMProvider { if (!initialized) { const providerType = (process.env.LLM_PROVIDER || 'mock') as 'azure' | 'openai' | 'mock'; const provider = createLLMProvider(providerType); setLLM(provider); initialized = true; } return getLLM(); } /** * Get the initialized LLM provider. * Calls initLLM() if not yet initialized. */ export function llm(): LLMProvider { if (!initialized) { return initLLM(); } return getLLM(); }