UNPKG

@just-every/ensemble

Version:

LLM provider abstraction layer with unified streaming interface

58 lines 1.71 kB
let globalTraceLoggers = []; const turnSequenceMap = new Map(); function nextSequence(turnId) { const next = (turnSequenceMap.get(turnId) || 0) + 1; turnSequenceMap.set(turnId, next); return next; } export function setEnsembleTraceLogger(logger) { if (logger === null) { globalTraceLoggers = []; turnSequenceMap.clear(); } else if (!globalTraceLoggers.includes(logger)) { globalTraceLoggers.push(logger); } } export function addEnsembleTraceLogger(logger) { if (!globalTraceLoggers.includes(logger)) { globalTraceLoggers.push(logger); } } export function removeEnsembleTraceLogger(logger) { const index = globalTraceLoggers.indexOf(logger); if (index > -1) { globalTraceLoggers.splice(index, 1); } } export function getEnsembleTraceLogger() { return globalTraceLoggers[0] || null; } export function getAllEnsembleTraceLoggers() { return [...globalTraceLoggers]; } export async function emitTraceEvent(event) { if (globalTraceLoggers.length === 0) { return; } const sequence = event.sequence ?? nextSequence(event.turn_id); const timestamp = event.timestamp || new Date().toISOString(); const finalEvent = { ...event, sequence, timestamp, }; const calls = globalTraceLoggers.map(async (logger) => { try { await logger.log_trace_event(finalEvent); } catch (error) { console.error('Error in logger.log_trace_event:', error); } }); await Promise.all(calls); if (event.type === 'turn_end') { turnSequenceMap.delete(event.turn_id); } } //# sourceMappingURL=trace_logger.js.map