@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
96 lines • 3.03 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TraceContext = void 0;
exports.createTraceContext = createTraceContext;
const crypto_1 = require("crypto");
const trace_logger_js_1 = require("./trace_logger.cjs");
class TraceContext {
agent;
operation;
turnId;
requestCount = 0;
requestNumbers = new Map();
constructor(agent, operation, turnId) {
this.agent = agent;
this.operation = operation;
this.turnId = turnId || (0, crypto_1.randomUUID)();
}
async emitTurnStart(data) {
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'turn_start',
turn_id: this.turnId,
data: {
operation: this.operation,
agent_id: this.agent.agent_id,
name: this.agent.name,
model: this.agent.model,
model_class: this.agent.modelClass,
...data,
},
});
}
async emitRequestStart(requestId, data) {
this.requestCount += 1;
this.requestNumbers.set(requestId, this.requestCount);
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'request_start',
turn_id: this.turnId,
request_id: requestId,
data: {
request_number: this.requestCount,
...data,
},
});
return this.requestCount;
}
async emitToolStart(requestId, toolCallId, data) {
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'tool_start',
turn_id: this.turnId,
request_id: requestId,
tool_call_id: toolCallId,
data,
});
}
async emitToolDone(requestId, toolCallId, data) {
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'tool_done',
turn_id: this.turnId,
request_id: requestId,
tool_call_id: toolCallId,
data,
});
}
async emitRequestEnd(requestId, data) {
const requestNumber = requestId ? this.requestNumbers.get(requestId) : undefined;
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'request_end',
turn_id: this.turnId,
request_id: requestId,
data: {
request_number: requestNumber,
...data,
},
});
}
async emitTurnEnd(status, reason, data) {
await (0, trace_logger_js_1.emitTraceEvent)({
type: 'turn_end',
turn_id: this.turnId,
data: {
status,
reason,
request_count: this.requestCount,
...data,
},
});
}
getRequestCount() {
return this.requestCount;
}
}
exports.TraceContext = TraceContext;
function createTraceContext(agent, operation, turnId) {
return new TraceContext(agent, operation, turnId);
}
//# sourceMappingURL=trace_context.js.map