@openai/agents-core 0.11.3 → 0.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentToolRunConfig.js +4 -0
- package/dist/agentToolRunConfig.js.map +1 -1
- package/dist/agentToolRunConfig.mjs +4 -0
- package/dist/agentToolRunConfig.mjs.map +1 -1
- package/dist/handoff.d.ts +45 -0
- package/dist/handoff.js +28 -0
- package/dist/handoff.js.map +1 -1
- package/dist/handoff.mjs +28 -0
- package/dist/handoff.mjs.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/memory/session.d.ts +7 -0
- package/dist/memory/session.js.map +1 -1
- package/dist/memory/session.mjs.map +1 -1
- package/dist/metadata.js +2 -2
- package/dist/metadata.mjs +2 -2
- package/dist/run.d.ts +18 -4
- package/dist/run.js +30 -6
- package/dist/run.js.map +1 -1
- package/dist/run.mjs +31 -7
- package/dist/run.mjs.map +1 -1
- package/dist/runState.d.ts +14 -1
- package/dist/runState.js +25 -2
- package/dist/runState.js.map +1 -1
- package/dist/runState.mjs +25 -2
- package/dist/runState.mjs.map +1 -1
- package/dist/runner/items.d.ts +1 -0
- package/dist/runner/items.js +14 -7
- package/dist/runner/items.js.map +1 -1
- package/dist/runner/items.mjs +13 -7
- package/dist/runner/items.mjs.map +1 -1
- package/dist/runner/modelOutputs.d.ts +3 -2
- package/dist/runner/modelOutputs.js +43 -14
- package/dist/runner/modelOutputs.js.map +1 -1
- package/dist/runner/modelOutputs.mjs +43 -14
- package/dist/runner/modelOutputs.mjs.map +1 -1
- package/dist/runner/sessionPersistence.d.ts +2 -0
- package/dist/runner/sessionPersistence.js +19 -13
- package/dist/runner/sessionPersistence.js.map +1 -1
- package/dist/runner/sessionPersistence.mjs +20 -14
- package/dist/runner/sessionPersistence.mjs.map +1 -1
- package/dist/runner/toolExecution.js +4 -1
- package/dist/runner/toolExecution.js.map +1 -1
- package/dist/runner/toolExecution.mjs +4 -1
- package/dist/runner/toolExecution.mjs.map +1 -1
- package/dist/runner/turnResolution.js +51 -0
- package/dist/runner/turnResolution.js.map +1 -1
- package/dist/runner/turnResolution.mjs +50 -2
- package/dist/runner/turnResolution.mjs.map +1 -1
- package/dist/runner/types.d.ts +5 -0
- package/dist/shims/shims-browser.d.ts +6 -5
- package/dist/shims/shims-browser.js +62 -2
- package/dist/shims/shims-browser.js.map +1 -1
- package/dist/shims/shims-browser.mjs +62 -2
- package/dist/shims/shims-browser.mjs.map +1 -1
- package/dist/tracing/context.d.ts +38 -0
- package/dist/tracing/context.js +115 -1
- package/dist/tracing/context.js.map +1 -1
- package/dist/tracing/context.mjs +112 -1
- package/dist/tracing/context.mjs.map +1 -1
- package/dist/tracing/index.d.ts +31 -3
- package/dist/tracing/index.js +37 -1
- package/dist/tracing/index.js.map +1 -1
- package/dist/tracing/index.mjs +31 -3
- package/dist/tracing/index.mjs.map +1 -1
- package/dist/tracing/processor.d.ts +10 -0
- package/dist/tracing/processor.js +64 -5
- package/dist/tracing/processor.js.map +1 -1
- package/dist/tracing/processor.mjs +64 -5
- package/dist/tracing/processor.mjs.map +1 -1
- package/dist/tracing/provider.d.ts +34 -1
- package/dist/tracing/provider.js +64 -3
- package/dist/tracing/provider.js.map +1 -1
- package/dist/tracing/provider.mjs +65 -4
- package/dist/tracing/provider.mjs.map +1 -1
- package/dist/tracing/utils.d.ts +5 -0
- package/dist/tracing/utils.js +5 -1
- package/dist/tracing/utils.js.map +1 -1
- package/dist/tracing/utils.mjs +4 -0
- package/dist/tracing/utils.mjs.map +1 -1
- package/dist/usage.d.ts +10 -2
- package/dist/usage.js +12 -0
- package/dist/usage.js.map +1 -1
- package/dist/usage.mjs +12 -0
- package/dist/usage.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,8 @@ exports.defaultProcessor = defaultProcessor;
|
|
|
9
9
|
const logger_1 = __importDefault(require("../logger.js"));
|
|
10
10
|
const _shims_1 = require("@openai/agents-core/_shims");
|
|
11
11
|
const config_1 = require("../config.js");
|
|
12
|
+
const abortSignals_1 = require("../utils/abortSignals.js");
|
|
13
|
+
const utils_1 = require("./utils.js");
|
|
12
14
|
/**
|
|
13
15
|
* Prints the traces and spans to the console
|
|
14
16
|
*/
|
|
@@ -40,6 +42,7 @@ class BatchTraceProcessor {
|
|
|
40
42
|
#timeout = null;
|
|
41
43
|
#exportInProgress = false;
|
|
42
44
|
#timeoutAbortController = null;
|
|
45
|
+
#activeExportAbortControllers = new Set();
|
|
43
46
|
constructor(exporter, { maxQueueSize = 1000, maxBatchSize = 100, scheduleDelay = 5000, // 5 seconds
|
|
44
47
|
exportTriggerRatio = 0.8, } = {}) {
|
|
45
48
|
this.#maxQueueSize = maxQueueSize;
|
|
@@ -90,14 +93,19 @@ class BatchTraceProcessor {
|
|
|
90
93
|
logger_1.default.debug(`Exporting batches. Force: ${force}. Buffer size: ${this.#buffer.length}`);
|
|
91
94
|
const exportBatch = async (batch) => {
|
|
92
95
|
this.#exportInProgress = true;
|
|
96
|
+
const activeExportAbortController = new AbortController();
|
|
97
|
+
this.#activeExportAbortControllers.add(activeExportAbortController);
|
|
98
|
+
const combinedSignal = (0, abortSignals_1.combineAbortSignals)(signal, activeExportAbortController.signal);
|
|
93
99
|
try {
|
|
94
|
-
await this.#exporter.export(batch, signal);
|
|
100
|
+
await this.#exporter.export(batch, combinedSignal.signal);
|
|
95
101
|
}
|
|
96
102
|
catch (error) {
|
|
97
103
|
logger_1.default.error('Tracing exporter failed to export batch', error);
|
|
98
104
|
}
|
|
99
105
|
finally {
|
|
100
|
-
|
|
106
|
+
combinedSignal.cleanup();
|
|
107
|
+
this.#activeExportAbortControllers.delete(activeExportAbortController);
|
|
108
|
+
this.#exportInProgress = this.#activeExportAbortControllers.size > 0;
|
|
101
109
|
}
|
|
102
110
|
};
|
|
103
111
|
if (force || this.#buffer.length < this.#maxBatchSize) {
|
|
@@ -110,6 +118,33 @@ class BatchTraceProcessor {
|
|
|
110
118
|
await exportBatch(batch);
|
|
111
119
|
}
|
|
112
120
|
}
|
|
121
|
+
#abortActiveExports() {
|
|
122
|
+
for (const controller of this.#activeExportAbortControllers) {
|
|
123
|
+
controller.abort();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async #waitForShutdownProgress(signal) {
|
|
127
|
+
await new Promise((resolve) => {
|
|
128
|
+
if (signal?.aborted) {
|
|
129
|
+
resolve();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const state = {};
|
|
133
|
+
const cleanup = () => {
|
|
134
|
+
if (state.timeout) {
|
|
135
|
+
this.#timer.clearTimeout(state.timeout);
|
|
136
|
+
}
|
|
137
|
+
signal?.removeEventListener('abort', onAbort);
|
|
138
|
+
};
|
|
139
|
+
const done = () => {
|
|
140
|
+
cleanup();
|
|
141
|
+
resolve();
|
|
142
|
+
};
|
|
143
|
+
const onAbort = () => done();
|
|
144
|
+
state.timeout = this.#timer.setTimeout(done, 500);
|
|
145
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
146
|
+
});
|
|
147
|
+
}
|
|
113
148
|
async onTraceStart(trace) {
|
|
114
149
|
await this.#safeAddItem(trace);
|
|
115
150
|
}
|
|
@@ -132,6 +167,7 @@ class BatchTraceProcessor {
|
|
|
132
167
|
shutdownTimeout = this.#timer.setTimeout(() => {
|
|
133
168
|
// Force shutdown the HTTP request.
|
|
134
169
|
shutdownAbortController?.abort();
|
|
170
|
+
this.#abortActiveExports();
|
|
135
171
|
}, timeout);
|
|
136
172
|
if (typeof shutdownTimeout.unref === 'function') {
|
|
137
173
|
shutdownTimeout.unref();
|
|
@@ -139,9 +175,9 @@ class BatchTraceProcessor {
|
|
|
139
175
|
}
|
|
140
176
|
try {
|
|
141
177
|
logger_1.default.debug('Shutting down gracefully');
|
|
142
|
-
while (this.#buffer.length > 0) {
|
|
178
|
+
while (this.#buffer.length > 0 || this.#exportInProgress) {
|
|
143
179
|
logger_1.default.debug(`Waiting for buffer to empty. Items left: ${this.#buffer.length}`);
|
|
144
|
-
if (!this.#exportInProgress) {
|
|
180
|
+
if (!this.#exportInProgress && this.#buffer.length > 0) {
|
|
145
181
|
// No current export in progress. Forcing all items to be exported.
|
|
146
182
|
await this.#exportBatches(true, shutdownAbortController?.signal);
|
|
147
183
|
}
|
|
@@ -150,7 +186,7 @@ class BatchTraceProcessor {
|
|
|
150
186
|
break;
|
|
151
187
|
}
|
|
152
188
|
// Using setTimeout to add to the event loop and keep this alive until done.
|
|
153
|
-
await
|
|
189
|
+
await this.#waitForShutdownProgress(shutdownAbortController?.signal);
|
|
154
190
|
}
|
|
155
191
|
logger_1.default.debug('Buffer empty. Exiting');
|
|
156
192
|
}
|
|
@@ -210,6 +246,29 @@ class MultiTracingProcessor {
|
|
|
210
246
|
await processor.onSpanEnd(span);
|
|
211
247
|
}
|
|
212
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Dispatches a completed trace lifecycle to every registered processor without
|
|
251
|
+
* calling Trace.start() or Trace.end().
|
|
252
|
+
*/
|
|
253
|
+
async dispatchTrace(trace) {
|
|
254
|
+
if (trace.traceId === utils_1.NOOP_TRACE_OR_SPAN_ID) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
await this.onTraceStart(trace);
|
|
258
|
+
await this.onTraceEnd(trace);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Dispatches a completed span lifecycle to every registered processor without
|
|
262
|
+
* calling Span.start() or Span.end().
|
|
263
|
+
*/
|
|
264
|
+
async dispatchSpan(span) {
|
|
265
|
+
if (span.traceId === utils_1.NOOP_TRACE_OR_SPAN_ID ||
|
|
266
|
+
span.spanId === utils_1.NOOP_TRACE_OR_SPAN_ID) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
await this.onSpanStart(span);
|
|
270
|
+
await this.onSpanEnd(span);
|
|
271
|
+
}
|
|
213
272
|
async shutdown(timeout) {
|
|
214
273
|
for (const processor of this.#processors) {
|
|
215
274
|
await processor.shutdown(timeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/tracing/processor.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/tracing/processor.ts"],"names":[],"mappings":";;;;;;AA+ZA,0CAMC;AAED,4CAKC;AA1aD,0DAA+B;AAC/B,uDAGoC;AAEpC,yCAAoC;AACpC,2DAA4D;AAC5D,sCAAgD;AAyDhD;;GAEG;AACH,MAAa,mBAAmB;IAC9B,KAAK,CAAC,MAAM,CAAC,KAAuB;QAClC,IAAI,gBAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,gBAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CACT,mCAAmC,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACrH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAjBD,kDAiBC;AAqBD,MAAa,mBAAmB;IACrB,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,cAAc,CAAS;IACvB,kBAAkB,CAAS;IAC3B,SAAS,CAAkB;IAEpC,OAAO,GAAwB,EAAE,CAAC;IAClC,MAAM,CAAQ;IACd,QAAQ,GAAmB,IAAI,CAAC;IAChC,iBAAiB,GAAG,KAAK,CAAC;IAC1B,uBAAuB,GAA2B,IAAI,CAAC;IACvD,6BAA6B,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE3D,YACE,QAAyB,EACzB,EACE,YAAY,GAAG,IAAI,EACnB,YAAY,GAAG,GAAG,EAClB,aAAa,GAAG,IAAI,EAAE,YAAY;IAClC,kBAAkB,GAAG,GAAG,MACM,EAAE;QAElC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,cAAM,CAAC;QACrB,IAAI,IAAA,sCAA6B,GAAE,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,gBAAM,CAAC,KAAK,CACV,uJAAuJ,CACxJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAkB;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjD,gBAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClD,8BAA8B;YAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChD,mBAAmB;YACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAExB,yFAAyF;QACzF,yCAAyC;QACzC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAiB,KAAK,EACtB,MAAoB;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,gBAAM,CAAC,KAAK,CACV,6BAA6B,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAC1E,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,EAAE,KAA0B,EAAiB,EAAE;YACtE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,MAAM,2BAA2B,GAAG,IAAI,eAAe,EAAE,CAAC;YAC1D,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,IAAA,kCAAmB,EACxC,MAAM,EACN,2BAA2B,CAAC,MAAM,CACnC,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACT,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBACvE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAC5D,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,MAAoB;QACjD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAA0B,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC;YACF,MAAM,IAAI,GAAG,GAAG,EAAE;gBAChB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAE7B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAY;QAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAa;QAC5B,oEAAoE;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAW;QAC3B,+DAA+D;IACjE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAU;QACxB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,IAAI,eAAoC,CAAC;QACzC,MAAM,uBAAuB,GAAG,OAAO;YACrC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,eAAe,EAAE,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,IAAI,IAAI,CAAC;YAC/D,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC5C,mCAAmC;gBACnC,uBAAuB,EAAE,KAAK,EAAE,CAAC;gBACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChD,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,gBAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzD,gBAAM,CAAC,KAAK,CACV,4CAA4C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAClE,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvD,mEAAmE;oBACnE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;gBACnE,CAAC;gBACD,IAAI,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC5C,gBAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBAChD,MAAM;gBACR,CAAC;gBACD,4EAA4E;gBAC5E,MAAM,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;YACvE,CAAC;YACD,gBAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,0CAA0C;gBAC1C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AArND,kDAqNC;AAED,MAAa,qBAAqB;IAChC,WAAW,GAAuB,EAAE,CAAC;IAErC,KAAK;QACH,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,SAA2B;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,UAA8B;QAC1C,gBAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAY;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAY;QAC3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAU;QAC1B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAU;QACxB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,KAAY;QAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,6BAAqB,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,IAAU;QAC3B,IACE,IAAI,CAAC,OAAO,KAAK,6BAAqB;YACtC,IAAI,CAAC,MAAM,KAAK,6BAAqB,EACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAvFD,sDAuFC;AAED,IAAI,gBAAgB,GAA+B,IAAI,CAAC;AACxD,IAAI,iBAAiB,GAA+B,IAAI,CAAC;AAEzD,SAAgB,eAAe;IAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,iBAAiB,GAAG,IAAI,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import logger from "../logger.mjs";
|
|
2
2
|
import { timer as _timer, isTracingLoopRunningByDefault, } from '@openai/agents-core/_shims';
|
|
3
3
|
import { tracing } from "../config.mjs";
|
|
4
|
+
import { combineAbortSignals } from "../utils/abortSignals.mjs";
|
|
5
|
+
import { NOOP_TRACE_OR_SPAN_ID } from "./utils.mjs";
|
|
4
6
|
/**
|
|
5
7
|
* Prints the traces and spans to the console
|
|
6
8
|
*/
|
|
@@ -31,6 +33,7 @@ export class BatchTraceProcessor {
|
|
|
31
33
|
#timeout = null;
|
|
32
34
|
#exportInProgress = false;
|
|
33
35
|
#timeoutAbortController = null;
|
|
36
|
+
#activeExportAbortControllers = new Set();
|
|
34
37
|
constructor(exporter, { maxQueueSize = 1000, maxBatchSize = 100, scheduleDelay = 5000, // 5 seconds
|
|
35
38
|
exportTriggerRatio = 0.8, } = {}) {
|
|
36
39
|
this.#maxQueueSize = maxQueueSize;
|
|
@@ -81,14 +84,19 @@ export class BatchTraceProcessor {
|
|
|
81
84
|
logger.debug(`Exporting batches. Force: ${force}. Buffer size: ${this.#buffer.length}`);
|
|
82
85
|
const exportBatch = async (batch) => {
|
|
83
86
|
this.#exportInProgress = true;
|
|
87
|
+
const activeExportAbortController = new AbortController();
|
|
88
|
+
this.#activeExportAbortControllers.add(activeExportAbortController);
|
|
89
|
+
const combinedSignal = combineAbortSignals(signal, activeExportAbortController.signal);
|
|
84
90
|
try {
|
|
85
|
-
await this.#exporter.export(batch, signal);
|
|
91
|
+
await this.#exporter.export(batch, combinedSignal.signal);
|
|
86
92
|
}
|
|
87
93
|
catch (error) {
|
|
88
94
|
logger.error('Tracing exporter failed to export batch', error);
|
|
89
95
|
}
|
|
90
96
|
finally {
|
|
91
|
-
|
|
97
|
+
combinedSignal.cleanup();
|
|
98
|
+
this.#activeExportAbortControllers.delete(activeExportAbortController);
|
|
99
|
+
this.#exportInProgress = this.#activeExportAbortControllers.size > 0;
|
|
92
100
|
}
|
|
93
101
|
};
|
|
94
102
|
if (force || this.#buffer.length < this.#maxBatchSize) {
|
|
@@ -101,6 +109,33 @@ export class BatchTraceProcessor {
|
|
|
101
109
|
await exportBatch(batch);
|
|
102
110
|
}
|
|
103
111
|
}
|
|
112
|
+
#abortActiveExports() {
|
|
113
|
+
for (const controller of this.#activeExportAbortControllers) {
|
|
114
|
+
controller.abort();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async #waitForShutdownProgress(signal) {
|
|
118
|
+
await new Promise((resolve) => {
|
|
119
|
+
if (signal?.aborted) {
|
|
120
|
+
resolve();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const state = {};
|
|
124
|
+
const cleanup = () => {
|
|
125
|
+
if (state.timeout) {
|
|
126
|
+
this.#timer.clearTimeout(state.timeout);
|
|
127
|
+
}
|
|
128
|
+
signal?.removeEventListener('abort', onAbort);
|
|
129
|
+
};
|
|
130
|
+
const done = () => {
|
|
131
|
+
cleanup();
|
|
132
|
+
resolve();
|
|
133
|
+
};
|
|
134
|
+
const onAbort = () => done();
|
|
135
|
+
state.timeout = this.#timer.setTimeout(done, 500);
|
|
136
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
137
|
+
});
|
|
138
|
+
}
|
|
104
139
|
async onTraceStart(trace) {
|
|
105
140
|
await this.#safeAddItem(trace);
|
|
106
141
|
}
|
|
@@ -123,6 +158,7 @@ export class BatchTraceProcessor {
|
|
|
123
158
|
shutdownTimeout = this.#timer.setTimeout(() => {
|
|
124
159
|
// Force shutdown the HTTP request.
|
|
125
160
|
shutdownAbortController?.abort();
|
|
161
|
+
this.#abortActiveExports();
|
|
126
162
|
}, timeout);
|
|
127
163
|
if (typeof shutdownTimeout.unref === 'function') {
|
|
128
164
|
shutdownTimeout.unref();
|
|
@@ -130,9 +166,9 @@ export class BatchTraceProcessor {
|
|
|
130
166
|
}
|
|
131
167
|
try {
|
|
132
168
|
logger.debug('Shutting down gracefully');
|
|
133
|
-
while (this.#buffer.length > 0) {
|
|
169
|
+
while (this.#buffer.length > 0 || this.#exportInProgress) {
|
|
134
170
|
logger.debug(`Waiting for buffer to empty. Items left: ${this.#buffer.length}`);
|
|
135
|
-
if (!this.#exportInProgress) {
|
|
171
|
+
if (!this.#exportInProgress && this.#buffer.length > 0) {
|
|
136
172
|
// No current export in progress. Forcing all items to be exported.
|
|
137
173
|
await this.#exportBatches(true, shutdownAbortController?.signal);
|
|
138
174
|
}
|
|
@@ -141,7 +177,7 @@ export class BatchTraceProcessor {
|
|
|
141
177
|
break;
|
|
142
178
|
}
|
|
143
179
|
// Using setTimeout to add to the event loop and keep this alive until done.
|
|
144
|
-
await
|
|
180
|
+
await this.#waitForShutdownProgress(shutdownAbortController?.signal);
|
|
145
181
|
}
|
|
146
182
|
logger.debug('Buffer empty. Exiting');
|
|
147
183
|
}
|
|
@@ -200,6 +236,29 @@ export class MultiTracingProcessor {
|
|
|
200
236
|
await processor.onSpanEnd(span);
|
|
201
237
|
}
|
|
202
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Dispatches a completed trace lifecycle to every registered processor without
|
|
241
|
+
* calling Trace.start() or Trace.end().
|
|
242
|
+
*/
|
|
243
|
+
async dispatchTrace(trace) {
|
|
244
|
+
if (trace.traceId === NOOP_TRACE_OR_SPAN_ID) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
await this.onTraceStart(trace);
|
|
248
|
+
await this.onTraceEnd(trace);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Dispatches a completed span lifecycle to every registered processor without
|
|
252
|
+
* calling Span.start() or Span.end().
|
|
253
|
+
*/
|
|
254
|
+
async dispatchSpan(span) {
|
|
255
|
+
if (span.traceId === NOOP_TRACE_OR_SPAN_ID ||
|
|
256
|
+
span.spanId === NOOP_TRACE_OR_SPAN_ID) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
await this.onSpanStart(span);
|
|
260
|
+
await this.onSpanEnd(span);
|
|
261
|
+
}
|
|
203
262
|
async shutdown(timeout) {
|
|
204
263
|
for (const processor of this.#processors) {
|
|
205
264
|
await processor.shutdown(timeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.mjs","sourceRoot":"","sources":["../../src/tracing/processor.ts"],"names":[],"mappings":"OAEO,MAAM;OACN,EACL,KAAK,IAAI,MAAM,EACf,6BAA6B,GAC9B,MAAM,4BAA4B;OAE5B,EAAE,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"processor.mjs","sourceRoot":"","sources":["../../src/tracing/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { TracingProcessor } from './processor';
|
|
2
2
|
import { Span, SpanData, SpanOptions } from './spans';
|
|
3
3
|
import { Trace, TraceOptions } from './traces';
|
|
4
|
+
import { type TracingIdGenerator } from './utils';
|
|
4
5
|
export type CreateSpanOptions<TData extends SpanData> = Omit<SpanOptions<TData>, 'traceId'> & {
|
|
5
6
|
traceId?: string;
|
|
6
7
|
disabled?: boolean;
|
|
7
8
|
};
|
|
9
|
+
export type TraceProviderOptions = {
|
|
10
|
+
idGenerator?: Partial<TracingIdGenerator>;
|
|
11
|
+
};
|
|
8
12
|
export declare class TraceProvider {
|
|
9
13
|
#private;
|
|
10
|
-
constructor();
|
|
14
|
+
constructor(options?: TraceProviderOptions);
|
|
11
15
|
/**
|
|
12
16
|
* Add a processor to the list of processors. Each processor will receive all traces/spans.
|
|
13
17
|
*
|
|
@@ -28,7 +32,36 @@ export declare class TraceProvider {
|
|
|
28
32
|
getCurrentTrace(): Trace | null;
|
|
29
33
|
getCurrentSpan(): Span<any> | null;
|
|
30
34
|
setDisabled(disabled: boolean): void;
|
|
35
|
+
setIdGenerator(idGenerator?: Partial<TracingIdGenerator>): void;
|
|
36
|
+
/**
|
|
37
|
+
* Generate a new trace ID.
|
|
38
|
+
*
|
|
39
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
40
|
+
*/
|
|
41
|
+
generateTraceId(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate a new span ID.
|
|
44
|
+
*
|
|
45
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
46
|
+
*/
|
|
47
|
+
generateSpanId(): string;
|
|
31
48
|
startExportLoop(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Dispatches a completed trace lifecycle to all registered processors.
|
|
51
|
+
*
|
|
52
|
+
* This is useful when an integration receives a trace that was started and
|
|
53
|
+
* ended outside this process and needs to fan out the lifecycle without
|
|
54
|
+
* mutating the trace state.
|
|
55
|
+
*/
|
|
56
|
+
dispatchTrace(trace: Trace): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Dispatches a completed span lifecycle to all registered processors.
|
|
59
|
+
*
|
|
60
|
+
* This is useful when an integration receives a span that already has
|
|
61
|
+
* lifecycle timestamps and needs to fan out the lifecycle without mutating
|
|
62
|
+
* those timestamps.
|
|
63
|
+
*/
|
|
64
|
+
dispatchSpan<TSpanData extends SpanData>(span: Span<TSpanData>): Promise<void>;
|
|
32
65
|
createTrace(traceOptions: TraceOptions): Trace;
|
|
33
66
|
createSpan<TSpanData extends SpanData>(spanOptions: CreateSpanOptions<TSpanData>, parent?: Span<any> | Trace): Span<TSpanData>;
|
|
34
67
|
shutdown(timeout?: number): Promise<void>;
|
package/dist/tracing/provider.js
CHANGED
|
@@ -12,14 +12,22 @@ const processor_1 = require("./processor.js");
|
|
|
12
12
|
const spans_1 = require("./spans.js");
|
|
13
13
|
const traces_1 = require("./traces.js");
|
|
14
14
|
const utils_1 = require("./utils.js");
|
|
15
|
+
function resolveTracingIdGenerator(idGenerator) {
|
|
16
|
+
return {
|
|
17
|
+
generateTraceId: idGenerator?.generateTraceId ?? utils_1.defaultTracingIdGenerator.generateTraceId,
|
|
18
|
+
generateSpanId: idGenerator?.generateSpanId ?? utils_1.defaultTracingIdGenerator.generateSpanId,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
15
21
|
class TraceProvider {
|
|
16
22
|
#multiProcessor;
|
|
17
23
|
#disabled;
|
|
18
24
|
#shutdownPromise;
|
|
19
|
-
|
|
25
|
+
#idGenerator;
|
|
26
|
+
constructor(options = {}) {
|
|
20
27
|
this.#multiProcessor = new processor_1.MultiTracingProcessor();
|
|
21
28
|
this.#disabled = config_1.tracing.disabled;
|
|
22
29
|
this.#shutdownPromise = null;
|
|
30
|
+
this.#idGenerator = resolveTracingIdGenerator(options.idGenerator);
|
|
23
31
|
this.#addCleanupListeners();
|
|
24
32
|
}
|
|
25
33
|
/**
|
|
@@ -54,15 +62,62 @@ class TraceProvider {
|
|
|
54
62
|
setDisabled(disabled) {
|
|
55
63
|
this.#disabled = disabled;
|
|
56
64
|
}
|
|
65
|
+
setIdGenerator(idGenerator) {
|
|
66
|
+
this.#idGenerator = resolveTracingIdGenerator(idGenerator);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate a new trace ID.
|
|
70
|
+
*
|
|
71
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
72
|
+
*/
|
|
73
|
+
generateTraceId() {
|
|
74
|
+
return this.#idGenerator.generateTraceId();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generate a new span ID.
|
|
78
|
+
*
|
|
79
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
80
|
+
*/
|
|
81
|
+
generateSpanId() {
|
|
82
|
+
return this.#idGenerator.generateSpanId();
|
|
83
|
+
}
|
|
57
84
|
startExportLoop() {
|
|
58
85
|
this.#multiProcessor.start();
|
|
59
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Dispatches a completed trace lifecycle to all registered processors.
|
|
89
|
+
*
|
|
90
|
+
* This is useful when an integration receives a trace that was started and
|
|
91
|
+
* ended outside this process and needs to fan out the lifecycle without
|
|
92
|
+
* mutating the trace state.
|
|
93
|
+
*/
|
|
94
|
+
async dispatchTrace(trace) {
|
|
95
|
+
if (this.#disabled) {
|
|
96
|
+
logger_1.default.debug('Tracing is disabled, Not dispatching trace %o', trace);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
await this.#multiProcessor.dispatchTrace(trace);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Dispatches a completed span lifecycle to all registered processors.
|
|
103
|
+
*
|
|
104
|
+
* This is useful when an integration receives a span that already has
|
|
105
|
+
* lifecycle timestamps and needs to fan out the lifecycle without mutating
|
|
106
|
+
* those timestamps.
|
|
107
|
+
*/
|
|
108
|
+
async dispatchSpan(span) {
|
|
109
|
+
if (this.#disabled) {
|
|
110
|
+
logger_1.default.debug('Tracing is disabled, Not dispatching span %o', span);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
await this.#multiProcessor.dispatchSpan(span);
|
|
114
|
+
}
|
|
60
115
|
createTrace(traceOptions) {
|
|
61
116
|
if (this.#disabled) {
|
|
62
117
|
logger_1.default.debug('Tracing is disabled, Not creating trace %o', traceOptions);
|
|
63
118
|
return new traces_1.NoopTrace();
|
|
64
119
|
}
|
|
65
|
-
const traceId = traceOptions.traceId ??
|
|
120
|
+
const traceId = traceOptions.traceId ?? this.generateTraceId();
|
|
66
121
|
const name = traceOptions.name ?? 'Agent workflow';
|
|
67
122
|
logger_1.default.debug('Creating trace %s with name %s', traceId, name);
|
|
68
123
|
return new traces_1.Trace({ ...traceOptions, name, traceId }, this.#multiProcessor);
|
|
@@ -131,9 +186,15 @@ class TraceProvider {
|
|
|
131
186
|
logger_1.default.error('No traceId found. Make sure to start a trace with `withTrace()` first. Returning NoopSpan.');
|
|
132
187
|
return new spans_1.NoopSpan(spanOptions.data, this.#multiProcessor);
|
|
133
188
|
}
|
|
134
|
-
|
|
189
|
+
const spanId = spanOptions.spanId ?? this.generateSpanId();
|
|
190
|
+
if (spanId === utils_1.NOOP_TRACE_OR_SPAN_ID) {
|
|
191
|
+
logger_1.default.debug('Span id is no-op, returning NoopSpan');
|
|
192
|
+
return new spans_1.NoopSpan(spanOptions.data, this.#multiProcessor);
|
|
193
|
+
}
|
|
194
|
+
logger_1.default.debug(`Creating span ${JSON.stringify(spanOptions.data)} with id ${spanId}`);
|
|
135
195
|
return new spans_1.Span({
|
|
136
196
|
...spanOptions,
|
|
197
|
+
spanId,
|
|
137
198
|
traceId,
|
|
138
199
|
parentId,
|
|
139
200
|
traceMetadata: traceMetadata ?? spanOptions.traceMetadata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tracing/provider.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tracing/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,23 @@ import logger from "../logger.mjs";
|
|
|
4
4
|
import { MultiTracingProcessor } from "./processor.mjs";
|
|
5
5
|
import { NoopSpan, Span } from "./spans.mjs";
|
|
6
6
|
import { NoopTrace, Trace } from "./traces.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { defaultTracingIdGenerator, NOOP_TRACE_OR_SPAN_ID, } from "./utils.mjs";
|
|
8
|
+
function resolveTracingIdGenerator(idGenerator) {
|
|
9
|
+
return {
|
|
10
|
+
generateTraceId: idGenerator?.generateTraceId ?? defaultTracingIdGenerator.generateTraceId,
|
|
11
|
+
generateSpanId: idGenerator?.generateSpanId ?? defaultTracingIdGenerator.generateSpanId,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
8
14
|
export class TraceProvider {
|
|
9
15
|
#multiProcessor;
|
|
10
16
|
#disabled;
|
|
11
17
|
#shutdownPromise;
|
|
12
|
-
|
|
18
|
+
#idGenerator;
|
|
19
|
+
constructor(options = {}) {
|
|
13
20
|
this.#multiProcessor = new MultiTracingProcessor();
|
|
14
21
|
this.#disabled = tracing.disabled;
|
|
15
22
|
this.#shutdownPromise = null;
|
|
23
|
+
this.#idGenerator = resolveTracingIdGenerator(options.idGenerator);
|
|
16
24
|
this.#addCleanupListeners();
|
|
17
25
|
}
|
|
18
26
|
/**
|
|
@@ -47,15 +55,62 @@ export class TraceProvider {
|
|
|
47
55
|
setDisabled(disabled) {
|
|
48
56
|
this.#disabled = disabled;
|
|
49
57
|
}
|
|
58
|
+
setIdGenerator(idGenerator) {
|
|
59
|
+
this.#idGenerator = resolveTracingIdGenerator(idGenerator);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generate a new trace ID.
|
|
63
|
+
*
|
|
64
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
65
|
+
*/
|
|
66
|
+
generateTraceId() {
|
|
67
|
+
return this.#idGenerator.generateTraceId();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate a new span ID.
|
|
71
|
+
*
|
|
72
|
+
* Override this in custom providers to take precedence over configured ID generators.
|
|
73
|
+
*/
|
|
74
|
+
generateSpanId() {
|
|
75
|
+
return this.#idGenerator.generateSpanId();
|
|
76
|
+
}
|
|
50
77
|
startExportLoop() {
|
|
51
78
|
this.#multiProcessor.start();
|
|
52
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Dispatches a completed trace lifecycle to all registered processors.
|
|
82
|
+
*
|
|
83
|
+
* This is useful when an integration receives a trace that was started and
|
|
84
|
+
* ended outside this process and needs to fan out the lifecycle without
|
|
85
|
+
* mutating the trace state.
|
|
86
|
+
*/
|
|
87
|
+
async dispatchTrace(trace) {
|
|
88
|
+
if (this.#disabled) {
|
|
89
|
+
logger.debug('Tracing is disabled, Not dispatching trace %o', trace);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
await this.#multiProcessor.dispatchTrace(trace);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Dispatches a completed span lifecycle to all registered processors.
|
|
96
|
+
*
|
|
97
|
+
* This is useful when an integration receives a span that already has
|
|
98
|
+
* lifecycle timestamps and needs to fan out the lifecycle without mutating
|
|
99
|
+
* those timestamps.
|
|
100
|
+
*/
|
|
101
|
+
async dispatchSpan(span) {
|
|
102
|
+
if (this.#disabled) {
|
|
103
|
+
logger.debug('Tracing is disabled, Not dispatching span %o', span);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
await this.#multiProcessor.dispatchSpan(span);
|
|
107
|
+
}
|
|
53
108
|
createTrace(traceOptions) {
|
|
54
109
|
if (this.#disabled) {
|
|
55
110
|
logger.debug('Tracing is disabled, Not creating trace %o', traceOptions);
|
|
56
111
|
return new NoopTrace();
|
|
57
112
|
}
|
|
58
|
-
const traceId = traceOptions.traceId ?? generateTraceId();
|
|
113
|
+
const traceId = traceOptions.traceId ?? this.generateTraceId();
|
|
59
114
|
const name = traceOptions.name ?? 'Agent workflow';
|
|
60
115
|
logger.debug('Creating trace %s with name %s', traceId, name);
|
|
61
116
|
return new Trace({ ...traceOptions, name, traceId }, this.#multiProcessor);
|
|
@@ -124,9 +179,15 @@ export class TraceProvider {
|
|
|
124
179
|
logger.error('No traceId found. Make sure to start a trace with `withTrace()` first. Returning NoopSpan.');
|
|
125
180
|
return new NoopSpan(spanOptions.data, this.#multiProcessor);
|
|
126
181
|
}
|
|
127
|
-
|
|
182
|
+
const spanId = spanOptions.spanId ?? this.generateSpanId();
|
|
183
|
+
if (spanId === NOOP_TRACE_OR_SPAN_ID) {
|
|
184
|
+
logger.debug('Span id is no-op, returning NoopSpan');
|
|
185
|
+
return new NoopSpan(spanOptions.data, this.#multiProcessor);
|
|
186
|
+
}
|
|
187
|
+
logger.debug(`Creating span ${JSON.stringify(spanOptions.data)} with id ${spanId}`);
|
|
128
188
|
return new Span({
|
|
129
189
|
...spanOptions,
|
|
190
|
+
spanId,
|
|
130
191
|
traceId,
|
|
131
192
|
parentId,
|
|
132
193
|
traceMetadata: traceMetadata ?? spanOptions.traceMetadata,
|