import { GoogleGenAI } from '@google/genai';
export interface ChatSession {
chat: any;
turnCount: number;
lastActivity: number;
}
const sessions = new Map<string, ChatSession>();
const SESSION_TIMEOUT = 30 * 60 * 1000; // 30 minutes
export function createClient(apiKey: string): GoogleGenAI {
return new GoogleGenAI({ apiKey });
}
export function generateSessionId(): string {
return crypto.randomUUID();
}
export function getSession(id: string): ChatSession | undefined {
const session = sessions.get(id);
if (session) {
session.lastActivity = Date.now();
}
return session;
}
export function storeSession(id: string, session: ChatSession): void {
sessions.set(id, session);
}
export function deleteSession(id: string): boolean {
return sessions.delete(id);
}
// Cleanup expired sessions every 5 minutes
const cleanupInterval = setInterval(() => {
const now = Date.now();
for (const [id, session] of sessions) {
if (now - session.lastActivity > SESSION_TIMEOUT) {
sessions.delete(id);
}
}
}, 5 * 60 * 1000);
cleanupInterval.unref();