import OpenAI from 'openai'; import { AgentManager } from './agent-manager'; import { FilePersistenceAdapter } from './file-persistence-adapter'; let sharedAgentManager: AgentManager | null = null; let sharedOpenAIClient: OpenAI | null = null; export function getSharedOpenAIClient(): OpenAI { if (!sharedOpenAIClient) { sharedOpenAIClient = new OpenAI({ apiKey: process.env.CZ_OPENAI_API_KEY || '', }); console.log('Shared OpenAI client created for Responses API'); } return sharedOpenAIClient; } export function getSharedAgentManager(): AgentManager { if (!sharedAgentManager) { // Legacy support - using AI SDK for backwards compatibility const { createOpenAI } = require('@ai-sdk/openai'); const customOpenAI = createOpenAI({ apiKey: process.env.CZ_OPENAI_API_KEY || '', }); const persistenceAdapter = new FilePersistenceAdapter(); sharedAgentManager = new AgentManager(customOpenAI.chat(process.env.MODEL_NAME || 'gpt-5'), persistenceAdapter); console.log('Shared Agent Manager created with file persistence'); } return sharedAgentManager; } /** * Reset the shared singleton instances for testing purposes. * This should ONLY be called in test environments. */ export function resetSharedAgentManagerForTesting(): void { sharedAgentManager = null; sharedOpenAIClient = null; console.log('Shared Agent Manager and OpenAI client reset for testing'); }