UNPKG

@just-every/ensemble

Version:

LLM provider abstraction layer with unified streaming interface

66 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setEnsembleTraceLogger = setEnsembleTraceLogger; exports.addEnsembleTraceLogger = addEnsembleTraceLogger; exports.removeEnsembleTraceLogger = removeEnsembleTraceLogger; exports.getEnsembleTraceLogger = getEnsembleTraceLogger; exports.getAllEnsembleTraceLoggers = getAllEnsembleTraceLoggers; exports.emitTraceEvent = emitTraceEvent; let globalTraceLoggers = []; const turnSequenceMap = new Map(); function nextSequence(turnId) { const next = (turnSequenceMap.get(turnId) || 0) + 1; turnSequenceMap.set(turnId, next); return next; } function setEnsembleTraceLogger(logger) { if (logger === null) { globalTraceLoggers = []; turnSequenceMap.clear(); } else if (!globalTraceLoggers.includes(logger)) { globalTraceLoggers.push(logger); } } function addEnsembleTraceLogger(logger) { if (!globalTraceLoggers.includes(logger)) { globalTraceLoggers.push(logger); } } function removeEnsembleTraceLogger(logger) { const index = globalTraceLoggers.indexOf(logger); if (index > -1) { globalTraceLoggers.splice(index, 1); } } function getEnsembleTraceLogger() { return globalTraceLoggers[0] || null; } function getAllEnsembleTraceLoggers() { return [...globalTraceLoggers]; } 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