wulf-pulse/lib/services/llm/client.ts

33 lines
918 B
TypeScript
Raw Normal View History

/**
* Anthropic SDK singleton.
*
* Lazy: the client is constructed on first access so importing this module is
* cheap and doesn't require ANTHROPIC_API_KEY to be set at boot. Throws on
* first use if the env var is missing.
*/
import Anthropic from '@anthropic-ai/sdk';
let instance: Anthropic | null = null;
export function getAnthropicClient(): Anthropic {
if (instance) return instance;
const apiKey = process.env.ANTHROPIC_API_KEY;
if (!apiKey) {
throw new Error(
'ANTHROPIC_API_KEY is not set. The AI Ticket Analyzer cannot run without it.'
);
}
instance = new Anthropic({ apiKey });
return instance;
}
export function isAnthropicConfigured(): boolean {
return !!process.env.ANTHROPIC_API_KEY;
}
/** Test-only: replace the singleton (e.g. with a vitest-mocked client). */
export function _setAnthropicClientForTests(client: Anthropic | null): void {
instance = client;
}