sel-chat-coach / src /lib /shared-agent-manager.ts
tblaisaacliao's picture
feat: Complete SEL Chat Coach - Traditional Chinese social-emotional learning platform
e6fe3d0
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');
}