export type SessionResourceCleanup = (sessionId?: string) => void; const sessionResourceCleanups = new Set(); export function registerSessionResourceCleanup(cleanup: SessionResourceCleanup): () => void { sessionResourceCleanups.add(cleanup); return () => { sessionResourceCleanups.delete(cleanup); }; } export function cleanupSessionResources(sessionId?: string): void { const errors: unknown[] = []; for (const cleanup of sessionResourceCleanups) { try { cleanup(sessionId); } catch (error) { errors.push(error); } } if (errors.length > 0) { throw new AggregateError(errors, "Failed to cleanup session resources"); } }