braintrust 3.26.0 → 3.28.0
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/dev/dist/index.d.mts +519 -186
- package/dev/dist/index.d.ts +519 -186
- package/dev/dist/index.js +3727 -1526
- package/dev/dist/index.mjs +2815 -614
- package/dist/apply-auto-instrumentation.js +372 -261
- package/dist/apply-auto-instrumentation.mjs +171 -60
- package/dist/auto-instrumentations/bundler/esbuild.cjs +458 -61
- package/dist/auto-instrumentations/bundler/esbuild.mjs +5 -4
- package/dist/auto-instrumentations/bundler/next.cjs +460 -63
- package/dist/auto-instrumentations/bundler/next.mjs +6 -5
- package/dist/auto-instrumentations/bundler/rollup.cjs +458 -61
- package/dist/auto-instrumentations/bundler/rollup.mjs +5 -4
- package/dist/auto-instrumentations/bundler/vite.cjs +487 -62
- package/dist/auto-instrumentations/bundler/vite.mjs +34 -5
- package/dist/auto-instrumentations/bundler/webpack-loader.cjs +444 -61
- package/dist/auto-instrumentations/bundler/webpack.cjs +458 -61
- package/dist/auto-instrumentations/bundler/webpack.mjs +6 -5
- package/dist/auto-instrumentations/{chunk-6E22MYSW.mjs → chunk-26PKVUKB.mjs} +109 -5
- package/dist/auto-instrumentations/{chunk-AKKPLXTP.mjs → chunk-2AMDGD65.mjs} +160 -57
- package/dist/auto-instrumentations/{chunk-V5LEODRX.mjs → chunk-HD35AM3M.mjs} +1 -1
- package/dist/auto-instrumentations/{chunk-XYN63IG5.mjs → chunk-I55G56ZL.mjs} +21 -58
- package/dist/auto-instrumentations/{chunk-NRE4QUQR.mjs → chunk-JPUFNW7X.mjs} +140 -0
- package/dist/auto-instrumentations/{chunk-XZHHE4Y3.mjs → chunk-NP7V4XB2.mjs} +157 -3
- package/dist/auto-instrumentations/hook.mjs +396 -32
- package/dist/auto-instrumentations/index.cjs +298 -2
- package/dist/auto-instrumentations/index.d.mts +5 -1
- package/dist/auto-instrumentations/index.d.ts +5 -1
- package/dist/auto-instrumentations/index.mjs +6 -2
- package/dist/auto-instrumentations/loader/cjs-patch.cjs +105 -57
- package/dist/auto-instrumentations/loader/cjs-patch.mjs +2 -2
- package/dist/auto-instrumentations/loader/esm-hook.mjs +1 -1
- package/dist/browser.d.mts +683 -56
- package/dist/browser.d.ts +683 -56
- package/dist/browser.js +4242 -655
- package/dist/browser.mjs +4242 -655
- package/dist/{chunk-VYNNEKSA.js → chunk-BBE7SNRV.js} +248 -10
- package/dist/{chunk-VRZZQPAA.js → chunk-OBBWQW6K.js} +3351 -1392
- package/dist/{chunk-XIZOM2HO.mjs → chunk-UPFNQCGB.mjs} +2419 -460
- package/dist/{chunk-PN7EWK66.mjs → chunk-ZHUHZWFY.mjs} +241 -3
- package/dist/cli.js +2867 -668
- package/dist/edge-light.d.mts +1 -1
- package/dist/edge-light.d.ts +1 -1
- package/dist/edge-light.js +4242 -655
- package/dist/edge-light.mjs +4242 -655
- package/dist/index.d.mts +1267 -640
- package/dist/index.d.ts +1267 -640
- package/dist/index.js +2107 -630
- package/dist/index.mjs +1649 -172
- package/dist/instrumentation/index.d.mts +198 -6
- package/dist/instrumentation/index.d.ts +198 -6
- package/dist/instrumentation/index.js +2661 -581
- package/dist/instrumentation/index.mjs +2661 -581
- package/dist/vitest-evals-reporter.js +45 -43
- package/dist/vitest-evals-reporter.mjs +5 -3
- package/dist/workerd.d.mts +1 -1
- package/dist/workerd.d.ts +1 -1
- package/dist/workerd.js +4242 -655
- package/dist/workerd.mjs +4242 -655
- package/package.json +2 -3
- package/util/dist/index.d.mts +1545 -100
- package/util/dist/index.d.ts +1545 -100
|
@@ -40,8 +40,10 @@ var GLOBAL_INSTRUMENTATION_HOOKS_KEY = "__braintrust_instrumentation_hooks";
|
|
|
40
40
|
var GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION = 1;
|
|
41
41
|
var GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND = "braintrust.global-instrumentation-hooks.registry";
|
|
42
42
|
var GLOBAL_INSTRUMENTATION_HOOK_BRAND = "braintrust.global-instrumentation-hooks.hook";
|
|
43
|
+
var GLOBAL_INVOCATION_HOOK_BRAND = "braintrust.global-instrumentation-hooks.invocation-hook";
|
|
43
44
|
var registryBrand = Symbol.for(GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND);
|
|
44
45
|
var hookBrand = Symbol.for(GLOBAL_INSTRUMENTATION_HOOK_BRAND);
|
|
46
|
+
var invocationHookBrand = Symbol.for(GLOBAL_INVOCATION_HOOK_BRAND);
|
|
45
47
|
var errorReporter;
|
|
46
48
|
function reportError(error) {
|
|
47
49
|
try {
|
|
@@ -177,12 +179,69 @@ var traceEvents = [
|
|
|
177
179
|
"asyncEnd",
|
|
178
180
|
"error"
|
|
179
181
|
];
|
|
182
|
+
function traceInvocation(hook, operator, target, thisArg, args, additional, callbackIndex = -1) {
|
|
183
|
+
const context = {
|
|
184
|
+
...additional,
|
|
185
|
+
arguments: args,
|
|
186
|
+
self: thisArg
|
|
187
|
+
};
|
|
188
|
+
const invoke = () => hook.invoke(target, thisArg, args, additional);
|
|
189
|
+
if (operator === "traceCallback") {
|
|
190
|
+
return hook.traceCallback(invoke, callbackIndex, context);
|
|
191
|
+
}
|
|
192
|
+
if (operator === "tracePromise") {
|
|
193
|
+
return hook.tracePromise(invoke, context);
|
|
194
|
+
}
|
|
195
|
+
return hook.traceSync(invoke, context);
|
|
196
|
+
}
|
|
197
|
+
var InvocationHook = class {
|
|
198
|
+
interceptors = [];
|
|
199
|
+
get hasInterceptors() {
|
|
200
|
+
return this.interceptors.length > 0;
|
|
201
|
+
}
|
|
202
|
+
intercept(interceptor) {
|
|
203
|
+
if (typeof interceptor !== "function") {
|
|
204
|
+
throw new TypeError("interceptor must be a function");
|
|
205
|
+
}
|
|
206
|
+
this.interceptors = [...this.interceptors, interceptor];
|
|
207
|
+
let active = true;
|
|
208
|
+
return () => {
|
|
209
|
+
if (!active) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
active = false;
|
|
213
|
+
const index = this.interceptors.indexOf(interceptor);
|
|
214
|
+
if (index !== -1) {
|
|
215
|
+
this.interceptors = [
|
|
216
|
+
...this.interceptors.slice(0, index),
|
|
217
|
+
...this.interceptors.slice(index + 1)
|
|
218
|
+
];
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
invoke(target, thisArg, args, additional) {
|
|
223
|
+
const interceptors = this.interceptors;
|
|
224
|
+
if (interceptors.length === 0) {
|
|
225
|
+
return Reflect.apply(target, thisArg, args);
|
|
226
|
+
}
|
|
227
|
+
let next = target;
|
|
228
|
+
for (let index = interceptors.length - 1; index >= 0; index -= 1) {
|
|
229
|
+
const interceptor = interceptors[index];
|
|
230
|
+
const downstream = next;
|
|
231
|
+
next = function(...nextArgs) {
|
|
232
|
+
return interceptor(downstream, this, nextArgs, additional);
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
return Reflect.apply(next, thisArg, args);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
180
238
|
var TracingHook = class {
|
|
181
239
|
start;
|
|
182
240
|
end;
|
|
183
241
|
asyncStart;
|
|
184
242
|
asyncEnd;
|
|
185
243
|
error;
|
|
244
|
+
invocationHook = new InvocationHook();
|
|
186
245
|
constructor(nameOrChannels) {
|
|
187
246
|
Object.defineProperty(this, hookBrand, {
|
|
188
247
|
configurable: false,
|
|
@@ -190,6 +249,12 @@ var TracingHook = class {
|
|
|
190
249
|
value: GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION,
|
|
191
250
|
writable: false
|
|
192
251
|
});
|
|
252
|
+
Object.defineProperty(this, invocationHookBrand, {
|
|
253
|
+
configurable: false,
|
|
254
|
+
enumerable: false,
|
|
255
|
+
value: GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION,
|
|
256
|
+
writable: false
|
|
257
|
+
});
|
|
193
258
|
if (typeof nameOrChannels === "string") {
|
|
194
259
|
this.start = new HookChannel(`tracing:${nameOrChannels}:start`);
|
|
195
260
|
this.end = new HookChannel(`tracing:${nameOrChannels}:end`);
|
|
@@ -207,6 +272,26 @@ var TracingHook = class {
|
|
|
207
272
|
get hasSubscribers() {
|
|
208
273
|
return this.start.hasSubscribers || this.end.hasSubscribers || this.asyncStart.hasSubscribers || this.asyncEnd.hasSubscribers || this.error.hasSubscribers;
|
|
209
274
|
}
|
|
275
|
+
get hasInterceptors() {
|
|
276
|
+
return this.invocationHook.hasInterceptors;
|
|
277
|
+
}
|
|
278
|
+
intercept(interceptor) {
|
|
279
|
+
return this.invocationHook.intercept(interceptor);
|
|
280
|
+
}
|
|
281
|
+
invoke(target, thisArg, args, additional) {
|
|
282
|
+
return this.invocationHook.invoke(target, thisArg, args, additional);
|
|
283
|
+
}
|
|
284
|
+
traceInvocation(operator, target, thisArg, args, additional, callbackIndex = -1) {
|
|
285
|
+
return traceInvocation(
|
|
286
|
+
this,
|
|
287
|
+
operator,
|
|
288
|
+
target,
|
|
289
|
+
thisArg,
|
|
290
|
+
args,
|
|
291
|
+
additional,
|
|
292
|
+
callbackIndex
|
|
293
|
+
);
|
|
294
|
+
}
|
|
210
295
|
subscribe(handlers) {
|
|
211
296
|
for (const eventName of traceEvents) {
|
|
212
297
|
const handler = handlers[eventName];
|
|
@@ -428,6 +513,60 @@ function hasTracingHookShape(value) {
|
|
|
428
513
|
return false;
|
|
429
514
|
}
|
|
430
515
|
}
|
|
516
|
+
function hasInvocationHookShape(value) {
|
|
517
|
+
if (typeof value !== "object" && typeof value !== "function" || value === null) {
|
|
518
|
+
return false;
|
|
519
|
+
}
|
|
520
|
+
try {
|
|
521
|
+
const hook = value;
|
|
522
|
+
return value[invocationHookBrand] === GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION && typeof hook.hasInterceptors === "boolean" && typeof hook.intercept === "function" && typeof hook.invoke === "function";
|
|
523
|
+
} catch {
|
|
524
|
+
return false;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
function installInvocationHook(value) {
|
|
528
|
+
const hasInvocationHook = hasInvocationHookShape(value);
|
|
529
|
+
const invocationHook = new InvocationHook();
|
|
530
|
+
try {
|
|
531
|
+
if (!hasInvocationHook) {
|
|
532
|
+
Object.defineProperties(value, {
|
|
533
|
+
[invocationHookBrand]: {
|
|
534
|
+
configurable: false,
|
|
535
|
+
enumerable: false,
|
|
536
|
+
value: GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION,
|
|
537
|
+
writable: false
|
|
538
|
+
},
|
|
539
|
+
hasInterceptors: {
|
|
540
|
+
configurable: false,
|
|
541
|
+
enumerable: false,
|
|
542
|
+
get: () => invocationHook.hasInterceptors
|
|
543
|
+
},
|
|
544
|
+
intercept: {
|
|
545
|
+
configurable: false,
|
|
546
|
+
enumerable: false,
|
|
547
|
+
value: invocationHook.intercept.bind(invocationHook),
|
|
548
|
+
writable: false
|
|
549
|
+
},
|
|
550
|
+
invoke: {
|
|
551
|
+
configurable: false,
|
|
552
|
+
enumerable: false,
|
|
553
|
+
value: invocationHook.invoke.bind(invocationHook),
|
|
554
|
+
writable: false
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
if (typeof value.traceInvocation !== "function") {
|
|
559
|
+
Object.defineProperty(value, "traceInvocation", {
|
|
560
|
+
configurable: false,
|
|
561
|
+
enumerable: false,
|
|
562
|
+
value: traceInvocation.bind(void 0, value),
|
|
563
|
+
writable: false
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
} catch (error) {
|
|
567
|
+
reportError(error);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
431
570
|
function isCompatibleTracingHook(value) {
|
|
432
571
|
try {
|
|
433
572
|
return value[hookBrand] === GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION && hasTracingHookShape(value);
|
|
@@ -514,6 +653,7 @@ function newGlobalTracingChannel(nameOrChannels) {
|
|
|
514
653
|
return inertTracingHook;
|
|
515
654
|
}
|
|
516
655
|
if (isCompatibleTracingHook(existing)) {
|
|
656
|
+
installInvocationHook(existing);
|
|
517
657
|
return existing;
|
|
518
658
|
}
|
|
519
659
|
if (existing !== void 0) {
|
|
@@ -550,8 +690,7 @@ var transforms = {
|
|
|
550
690
|
tracingHookDeclaration(state, node) {
|
|
551
691
|
const {
|
|
552
692
|
channelName,
|
|
553
|
-
module: { name }
|
|
554
|
-
operator
|
|
693
|
+
module: { name }
|
|
555
694
|
} = state;
|
|
556
695
|
const channelVariable = formatChannelVariable(channelName);
|
|
557
696
|
const channelGetter = formatChannelGetter(channelName);
|
|
@@ -564,7 +703,7 @@ var transforms = {
|
|
|
564
703
|
return;
|
|
565
704
|
}
|
|
566
705
|
const sharedHookLookup = hasSharedHookLookup ? "" : `
|
|
567
|
-
const ${SHARED_HOOK_LOOKUP} = (__bt$hookName
|
|
706
|
+
const ${SHARED_HOOK_LOOKUP} = (__bt$hookName) => {
|
|
568
707
|
try {
|
|
569
708
|
const __bt$hooks = globalThis[${JSON.stringify(
|
|
570
709
|
GLOBAL_INSTRUMENTATION_HOOKS_KEY
|
|
@@ -586,8 +725,7 @@ var transforms = {
|
|
|
586
725
|
__bt$hook[Symbol.for(${JSON.stringify(
|
|
587
726
|
GLOBAL_INSTRUMENTATION_HOOK_BRAND
|
|
588
727
|
)})] !== ${GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION} ||
|
|
589
|
-
typeof __bt$hook.
|
|
590
|
-
typeof __bt$hook[__bt$operator] !== "function"
|
|
728
|
+
typeof __bt$hook.traceInvocation !== "function"
|
|
591
729
|
) return undefined;
|
|
592
730
|
return __bt$hook;
|
|
593
731
|
} catch {
|
|
@@ -600,8 +738,7 @@ var transforms = {
|
|
|
600
738
|
let ${channelVariable};
|
|
601
739
|
const ${channelGetter} = () =>
|
|
602
740
|
${channelVariable} ??= ${SHARED_HOOK_LOOKUP}(
|
|
603
|
-
${JSON.stringify(`orchestrion:${name}:${channelName}`)}
|
|
604
|
-
${JSON.stringify(operator)}
|
|
741
|
+
${JSON.stringify(`orchestrion:${name}:${channelName}`)}
|
|
605
742
|
);
|
|
606
743
|
`;
|
|
607
744
|
const sharedHookLookupIndex = node.body.findIndex(
|
|
@@ -676,28 +813,18 @@ function traceInstanceMethod(state, node, program) {
|
|
|
676
813
|
ctor.value.body.body.push(...ctorBody);
|
|
677
814
|
}
|
|
678
815
|
function wrap(state, node) {
|
|
679
|
-
const
|
|
680
|
-
const wrapper = operator === "traceCallback" ? wrapCallback(state) : operator === "tracePromise" ? wrapPromise(state) : wrapSync(state);
|
|
816
|
+
const wrapper = wrapInvocation(state);
|
|
681
817
|
const block = wrapper.body[0].body;
|
|
682
818
|
const common = (0, import_meriyah.parse)(
|
|
683
819
|
node.type === "ArrowFunctionExpression" ? `
|
|
684
|
-
const __bt$
|
|
685
|
-
arguments,
|
|
686
|
-
moduleVersion: ${JSON.stringify(moduleVersion)}
|
|
687
|
-
};
|
|
688
|
-
const __bt$traced = () => {
|
|
820
|
+
const __bt$target = (...__bt$args) => {
|
|
689
821
|
const __bt$wrapped = () => {};
|
|
690
|
-
return __bt$wrapped(...
|
|
822
|
+
return __bt$wrapped(...__bt$args);
|
|
691
823
|
};
|
|
692
824
|
` : `
|
|
693
|
-
const __bt$
|
|
694
|
-
arguments,
|
|
695
|
-
self: this,
|
|
696
|
-
moduleVersion: ${JSON.stringify(moduleVersion)}
|
|
697
|
-
};
|
|
698
|
-
const __bt$traced = () => {
|
|
825
|
+
const __bt$target = function (...__bt$args) {
|
|
699
826
|
const __bt$wrapped = () => {};
|
|
700
|
-
return __bt$wrapped.apply(this,
|
|
827
|
+
return __bt$wrapped.apply(this, __bt$args);
|
|
701
828
|
};
|
|
702
829
|
`
|
|
703
830
|
).body;
|
|
@@ -739,49 +866,25 @@ function wrapSuper(node) {
|
|
|
739
866
|
node.body.body.unshift((0, import_meriyah.parse)("const __bt$super = {}").body[0]);
|
|
740
867
|
}
|
|
741
868
|
}
|
|
742
|
-
function
|
|
743
|
-
const {
|
|
744
|
-
channelName,
|
|
745
|
-
functionQuery: { callbackIndex = -1 }
|
|
746
|
-
} = state;
|
|
869
|
+
function wrapInvocation(state) {
|
|
870
|
+
const { channelName, moduleVersion, operator, functionQuery } = state;
|
|
747
871
|
const channelGetter = formatChannelGetter(channelName);
|
|
872
|
+
const callbackIndex = functionQuery.callbackIndex ?? -1;
|
|
748
873
|
return (0, import_meriyah.parse)(`
|
|
749
874
|
function wrapper () {
|
|
750
875
|
const __bt$hook = ${channelGetter}();
|
|
751
|
-
if (!__bt$hook
|
|
752
|
-
__bt$
|
|
753
|
-
|
|
754
|
-
__bt$
|
|
755
|
-
|
|
756
|
-
|
|
876
|
+
if (!__bt$hook) return __bt$target.apply(this, arguments);
|
|
877
|
+
return __bt$hook.traceInvocation(
|
|
878
|
+
${JSON.stringify(operator)},
|
|
879
|
+
__bt$target,
|
|
880
|
+
this,
|
|
881
|
+
arguments,
|
|
882
|
+
{ moduleVersion: ${JSON.stringify(moduleVersion)} },
|
|
883
|
+
${callbackIndex}
|
|
757
884
|
);
|
|
758
885
|
}
|
|
759
886
|
`);
|
|
760
887
|
}
|
|
761
|
-
function wrapPromise(state) {
|
|
762
|
-
const { channelName } = state;
|
|
763
|
-
const channelGetter = formatChannelGetter(channelName);
|
|
764
|
-
return (0, import_meriyah.parse)(`
|
|
765
|
-
function wrapper () {
|
|
766
|
-
const __bt$hook = ${channelGetter}();
|
|
767
|
-
if (!__bt$hook?.hasSubscribers) return __bt$traced();
|
|
768
|
-
__bt$ctx.self ??= this;
|
|
769
|
-
return __bt$hook.tracePromise(__bt$traced, __bt$ctx);
|
|
770
|
-
}
|
|
771
|
-
`);
|
|
772
|
-
}
|
|
773
|
-
function wrapSync(state) {
|
|
774
|
-
const { channelName } = state;
|
|
775
|
-
const channelGetter = formatChannelGetter(channelName);
|
|
776
|
-
return (0, import_meriyah.parse)(`
|
|
777
|
-
function wrapper () {
|
|
778
|
-
const __bt$hook = ${channelGetter}();
|
|
779
|
-
if (!__bt$hook?.hasSubscribers) return __bt$traced();
|
|
780
|
-
__bt$ctx.self ??= this;
|
|
781
|
-
return __bt$hook.traceSync(__bt$traced, __bt$ctx);
|
|
782
|
-
}
|
|
783
|
-
`);
|
|
784
|
-
}
|
|
785
888
|
|
|
786
889
|
// src/auto-instrumentations/orchestrion-js/transformer.ts
|
|
787
890
|
var Transformer = class {
|
|
@@ -1056,6 +1159,7 @@ var envIntegrationAliases = {
|
|
|
1056
1159
|
cloudflareaichat: "cloudflareAIChat",
|
|
1057
1160
|
"cloudflare-ai-chat": "cloudflareAIChat",
|
|
1058
1161
|
"@cloudflare/ai-chat": "cloudflareAIChat",
|
|
1162
|
+
cloudflarethink: "cloudflareThink",
|
|
1059
1163
|
cursor: "cursor",
|
|
1060
1164
|
"cursor-sdk": "cursorSDK",
|
|
1061
1165
|
cursorsdk: "cursorSDK",
|
|
@@ -1076,6 +1180,7 @@ var envIntegrationAliases = {
|
|
|
1076
1180
|
openrouteragent: "openrouterAgent",
|
|
1077
1181
|
"openrouter-agent": "openrouterAgent",
|
|
1078
1182
|
mistral: "mistral",
|
|
1183
|
+
ollama: "ollama",
|
|
1079
1184
|
googleadk: "googleADK",
|
|
1080
1185
|
"google-adk": "googleADK",
|
|
1081
1186
|
cohere: "cohere",
|
|
@@ -1096,7 +1201,10 @@ var envIntegrationAliases = {
|
|
|
1096
1201
|
"langchain-js": "langchain",
|
|
1097
1202
|
"@langchain": "langchain",
|
|
1098
1203
|
langgraph: "langgraph",
|
|
1099
|
-
langsmith: "langsmith"
|
|
1204
|
+
langsmith: "langsmith",
|
|
1205
|
+
voyage: "voyageai",
|
|
1206
|
+
"voyage-ai": "voyageai",
|
|
1207
|
+
voyageai: "voyageai"
|
|
1100
1208
|
};
|
|
1101
1209
|
function readDisabledInstrumentationEnvConfig(disabledList) {
|
|
1102
1210
|
const integrations = {};
|
|
@@ -1161,11 +1269,21 @@ function defineChannels(pkg, channels, options) {
|
|
|
1161
1269
|
const tracingChannel2 = () => isomorph_default.newTracingChannel(
|
|
1162
1270
|
fullChannelName
|
|
1163
1271
|
);
|
|
1272
|
+
const intercept2 = (interceptor) => {
|
|
1273
|
+
const hook = tracingChannel2();
|
|
1274
|
+
return typeof hook.intercept === "function" ? hook.intercept(interceptor) : () => {
|
|
1275
|
+
};
|
|
1276
|
+
};
|
|
1164
1277
|
return [
|
|
1165
1278
|
key,
|
|
1166
1279
|
{
|
|
1167
1280
|
...asyncSpec,
|
|
1168
1281
|
instrumentationName,
|
|
1282
|
+
intercept: intercept2,
|
|
1283
|
+
invoke: (target, thisArg, args, additional) => {
|
|
1284
|
+
const hook = tracingChannel2();
|
|
1285
|
+
return typeof hook.invoke === "function" ? hook.invoke(target, thisArg, args, additional) : Reflect.apply(target, thisArg, args);
|
|
1286
|
+
},
|
|
1169
1287
|
tracingChannel: tracingChannel2,
|
|
1170
1288
|
tracePromise: (fn, context) => tracingChannel2().tracePromise(
|
|
1171
1289
|
fn,
|
|
@@ -1179,11 +1297,21 @@ function defineChannels(pkg, channels, options) {
|
|
|
1179
1297
|
const tracingChannel = () => isomorph_default.newTracingChannel(
|
|
1180
1298
|
fullChannelName
|
|
1181
1299
|
);
|
|
1300
|
+
const intercept = (interceptor) => {
|
|
1301
|
+
const hook = tracingChannel();
|
|
1302
|
+
return typeof hook.intercept === "function" ? hook.intercept(interceptor) : () => {
|
|
1303
|
+
};
|
|
1304
|
+
};
|
|
1182
1305
|
return [
|
|
1183
1306
|
key,
|
|
1184
1307
|
{
|
|
1185
1308
|
...syncSpec,
|
|
1186
1309
|
instrumentationName,
|
|
1310
|
+
intercept,
|
|
1311
|
+
invoke: (target, thisArg, args, additional) => {
|
|
1312
|
+
const hook = tracingChannel();
|
|
1313
|
+
return typeof hook.invoke === "function" ? hook.invoke(target, thisArg, args, additional) : Reflect.apply(target, thisArg, args);
|
|
1314
|
+
},
|
|
1187
1315
|
tracingChannel,
|
|
1188
1316
|
traceSync: (fn, context) => tracingChannel().traceSync(
|
|
1189
1317
|
fn,
|
|
@@ -1205,6 +1333,7 @@ var INSTRUMENTATION_NAMES = {
|
|
|
1205
1333
|
CLAUDE_AGENT_SDK: "claude-agent-sdk",
|
|
1206
1334
|
CLOUDFLARE_AI_CHAT: "cloudflare-ai-chat",
|
|
1207
1335
|
CLOUDFLARE_AGENTS: "cloudflare-agents",
|
|
1336
|
+
CLOUDFLARE_THINK: "cloudflare-think",
|
|
1208
1337
|
COHERE: "cohere",
|
|
1209
1338
|
CURSOR_SDK: "cursor-sdk",
|
|
1210
1339
|
EVE: "eve",
|
|
@@ -1219,13 +1348,15 @@ var INSTRUMENTATION_NAMES = {
|
|
|
1219
1348
|
LANGSMITH: "langsmith",
|
|
1220
1349
|
MASTRA: "mastra",
|
|
1221
1350
|
MISTRAL: "mistral",
|
|
1351
|
+
OLLAMA: "ollama",
|
|
1222
1352
|
OPENAI: "openai",
|
|
1223
1353
|
OPENAI_AGENTS: "openai-agents",
|
|
1224
1354
|
OPENAI_CODEX: "openai-codex",
|
|
1225
1355
|
OPENROUTER: "openrouter",
|
|
1226
1356
|
OPENROUTER_AGENT: "openrouter-agent",
|
|
1227
1357
|
PI_CODING_AGENT: "pi-coding-agent",
|
|
1228
|
-
STRANDS_AGENT_SDK: "strands-agent-sdk"
|
|
1358
|
+
STRANDS_AGENT_SDK: "strands-agent-sdk",
|
|
1359
|
+
VOYAGEAI: "voyageai"
|
|
1229
1360
|
};
|
|
1230
1361
|
|
|
1231
1362
|
// src/instrumentation/plugins/ai-sdk-channels.ts
|
|
@@ -1735,6 +1866,14 @@ var anthropicChannels = defineChannels(
|
|
|
1735
1866
|
betaMessagesToolRunner: channel({
|
|
1736
1867
|
channelName: "beta.messages.toolRunner",
|
|
1737
1868
|
kind: "sync-stream"
|
|
1869
|
+
}),
|
|
1870
|
+
betaSessionsEventsStream: channel({
|
|
1871
|
+
channelName: "beta.sessions.events.stream",
|
|
1872
|
+
kind: "async"
|
|
1873
|
+
}),
|
|
1874
|
+
betaSessionsThreadsEventsStream: channel({
|
|
1875
|
+
channelName: "beta.sessions.threads.events.stream",
|
|
1876
|
+
kind: "async"
|
|
1738
1877
|
})
|
|
1739
1878
|
},
|
|
1740
1879
|
{ instrumentationName: INSTRUMENTATION_NAMES.ANTHROPIC }
|
|
@@ -1853,7 +1992,40 @@ var anthropicConfigs = [
|
|
|
1853
1992
|
methodName: "toolRunner",
|
|
1854
1993
|
kind: "Sync"
|
|
1855
1994
|
}
|
|
1856
|
-
}
|
|
1995
|
+
},
|
|
1996
|
+
// Managed Agents Sessions event streams are discovered automatically, but
|
|
1997
|
+
// remain passive until the user calls collectAnthropicSession() on the
|
|
1998
|
+
// returned stream.
|
|
1999
|
+
...["mjs", "js"].map(
|
|
2000
|
+
(extension) => ({
|
|
2001
|
+
channelName: anthropicChannels.betaSessionsEventsStream.channelName,
|
|
2002
|
+
module: {
|
|
2003
|
+
name: "@anthropic-ai/sdk",
|
|
2004
|
+
versionRange: ">=0.86.0",
|
|
2005
|
+
filePath: `resources/beta/sessions/events.${extension}`
|
|
2006
|
+
},
|
|
2007
|
+
functionQuery: {
|
|
2008
|
+
className: "Events",
|
|
2009
|
+
methodName: "stream",
|
|
2010
|
+
kind: "Async"
|
|
2011
|
+
}
|
|
2012
|
+
})
|
|
2013
|
+
),
|
|
2014
|
+
...["mjs", "js"].map(
|
|
2015
|
+
(extension) => ({
|
|
2016
|
+
channelName: anthropicChannels.betaSessionsThreadsEventsStream.channelName,
|
|
2017
|
+
module: {
|
|
2018
|
+
name: "@anthropic-ai/sdk",
|
|
2019
|
+
versionRange: ">=0.86.0",
|
|
2020
|
+
filePath: `resources/beta/sessions/threads/events.${extension}`
|
|
2021
|
+
},
|
|
2022
|
+
functionQuery: {
|
|
2023
|
+
className: "Events",
|
|
2024
|
+
methodName: "stream",
|
|
2025
|
+
kind: "Async"
|
|
2026
|
+
}
|
|
2027
|
+
})
|
|
2028
|
+
)
|
|
1857
2029
|
];
|
|
1858
2030
|
|
|
1859
2031
|
// src/instrumentation/plugins/bedrock-runtime-channels.ts
|
|
@@ -2050,6 +2222,36 @@ var cloudflareAgentsConfigs = [
|
|
|
2050
2222
|
}
|
|
2051
2223
|
];
|
|
2052
2224
|
|
|
2225
|
+
// src/instrumentation/plugins/cloudflare-think-channels.ts
|
|
2226
|
+
var cloudflareThinkChannels = defineChannels(
|
|
2227
|
+
"@cloudflare/think",
|
|
2228
|
+
{
|
|
2229
|
+
runInferenceLoop: channel({
|
|
2230
|
+
channelName: "Think.runInferenceLoop",
|
|
2231
|
+
kind: "async"
|
|
2232
|
+
})
|
|
2233
|
+
},
|
|
2234
|
+
{ instrumentationName: INSTRUMENTATION_NAMES.CLOUDFLARE_THINK }
|
|
2235
|
+
);
|
|
2236
|
+
|
|
2237
|
+
// src/auto-instrumentations/configs/cloudflare-think.ts
|
|
2238
|
+
var cloudflareThinkVersionRange = ">=0.13.0 <0.14.0";
|
|
2239
|
+
var cloudflareThinkConfigs = [
|
|
2240
|
+
{
|
|
2241
|
+
channelName: cloudflareThinkChannels.runInferenceLoop.channelName,
|
|
2242
|
+
module: {
|
|
2243
|
+
name: "@cloudflare/think",
|
|
2244
|
+
versionRange: cloudflareThinkVersionRange,
|
|
2245
|
+
filePath: "dist/think.js"
|
|
2246
|
+
},
|
|
2247
|
+
functionQuery: {
|
|
2248
|
+
className: "Think",
|
|
2249
|
+
methodName: "_runInferenceLoop",
|
|
2250
|
+
kind: "Async"
|
|
2251
|
+
}
|
|
2252
|
+
}
|
|
2253
|
+
];
|
|
2254
|
+
|
|
2053
2255
|
// src/instrumentation/plugins/cohere-channels.ts
|
|
2054
2256
|
var cohereChannels = defineChannels(
|
|
2055
2257
|
"cohere-ai",
|
|
@@ -3933,6 +4135,51 @@ var mistralConfigs = [
|
|
|
3933
4135
|
}
|
|
3934
4136
|
];
|
|
3935
4137
|
|
|
4138
|
+
// src/instrumentation/plugins/ollama-channels.ts
|
|
4139
|
+
var ollamaChannels = defineChannels(
|
|
4140
|
+
"ollama",
|
|
4141
|
+
{
|
|
4142
|
+
chat: channel({
|
|
4143
|
+
channelName: "chat",
|
|
4144
|
+
kind: "async"
|
|
4145
|
+
}),
|
|
4146
|
+
generate: channel({
|
|
4147
|
+
channelName: "generate",
|
|
4148
|
+
kind: "async"
|
|
4149
|
+
}),
|
|
4150
|
+
embed: channel({
|
|
4151
|
+
channelName: "embed",
|
|
4152
|
+
kind: "async"
|
|
4153
|
+
})
|
|
4154
|
+
},
|
|
4155
|
+
{ instrumentationName: INSTRUMENTATION_NAMES.OLLAMA }
|
|
4156
|
+
);
|
|
4157
|
+
|
|
4158
|
+
// src/auto-instrumentations/configs/ollama.ts
|
|
4159
|
+
var methods = [
|
|
4160
|
+
["chat", ollamaChannels.chat.channelName],
|
|
4161
|
+
["generate", ollamaChannels.generate.channelName],
|
|
4162
|
+
["embed", ollamaChannels.embed.channelName]
|
|
4163
|
+
];
|
|
4164
|
+
var implementationFiles = ["dist/browser.mjs", "dist/browser.cjs"];
|
|
4165
|
+
var ollamaConfigs = [
|
|
4166
|
+
...implementationFiles.flatMap(
|
|
4167
|
+
(filePath) => methods.map(([methodName, channelName]) => ({
|
|
4168
|
+
channelName,
|
|
4169
|
+
module: {
|
|
4170
|
+
name: "ollama",
|
|
4171
|
+
versionRange: ">=0.6.0 <0.7.0",
|
|
4172
|
+
filePath
|
|
4173
|
+
},
|
|
4174
|
+
functionQuery: {
|
|
4175
|
+
className: "Ollama",
|
|
4176
|
+
methodName,
|
|
4177
|
+
kind: "Async"
|
|
4178
|
+
}
|
|
4179
|
+
}))
|
|
4180
|
+
)
|
|
4181
|
+
];
|
|
4182
|
+
|
|
3936
4183
|
// src/instrumentation/plugins/openai-agents-channels.ts
|
|
3937
4184
|
var openAIAgentsCoreChannels = defineChannels(
|
|
3938
4185
|
"@openai/agents-core",
|
|
@@ -4342,6 +4589,19 @@ var openRouterConfigs = [
|
|
|
4342
4589
|
kind: "Async"
|
|
4343
4590
|
}
|
|
4344
4591
|
},
|
|
4592
|
+
{
|
|
4593
|
+
channelName: openRouterChannels.betaResponsesSend.channelName,
|
|
4594
|
+
module: {
|
|
4595
|
+
name: "@openrouter/sdk",
|
|
4596
|
+
versionRange: ">=1.1.2 <2.0.0",
|
|
4597
|
+
filePath: "esm/sdk/betaresponses.js"
|
|
4598
|
+
},
|
|
4599
|
+
functionQuery: {
|
|
4600
|
+
className: "BetaResponses",
|
|
4601
|
+
methodName: "send",
|
|
4602
|
+
kind: "Async"
|
|
4603
|
+
}
|
|
4604
|
+
},
|
|
4345
4605
|
{
|
|
4346
4606
|
channelName: openRouterChannels.callModel.channelName,
|
|
4347
4607
|
module: {
|
|
@@ -4487,6 +4747,77 @@ var strandsAgentSDKConfigs = [
|
|
|
4487
4747
|
}
|
|
4488
4748
|
];
|
|
4489
4749
|
|
|
4750
|
+
// src/instrumentation/plugins/voyageai-channels.ts
|
|
4751
|
+
var voyageAIChannels = defineChannels(
|
|
4752
|
+
"voyageai",
|
|
4753
|
+
{
|
|
4754
|
+
embed: channel({
|
|
4755
|
+
channelName: "embed",
|
|
4756
|
+
kind: "async"
|
|
4757
|
+
}),
|
|
4758
|
+
multimodalEmbed: channel({
|
|
4759
|
+
channelName: "multimodalEmbed",
|
|
4760
|
+
kind: "async"
|
|
4761
|
+
}),
|
|
4762
|
+
rerank: channel({
|
|
4763
|
+
channelName: "rerank",
|
|
4764
|
+
kind: "async"
|
|
4765
|
+
}),
|
|
4766
|
+
contextualizedEmbed: channel({
|
|
4767
|
+
channelName: "contextualizedEmbed",
|
|
4768
|
+
kind: "async"
|
|
4769
|
+
})
|
|
4770
|
+
},
|
|
4771
|
+
{ instrumentationName: INSTRUMENTATION_NAMES.VOYAGEAI }
|
|
4772
|
+
);
|
|
4773
|
+
|
|
4774
|
+
// src/auto-instrumentations/configs/voyageai.ts
|
|
4775
|
+
var GENERATED_CLIENT_MODULES = [
|
|
4776
|
+
"dist/cjs/Client.js",
|
|
4777
|
+
"dist/esm/Client.mjs"
|
|
4778
|
+
];
|
|
4779
|
+
var generatedClientOperations = [
|
|
4780
|
+
{
|
|
4781
|
+
channelName: voyageAIChannels.embed.channelName,
|
|
4782
|
+
methodName: "embed",
|
|
4783
|
+
versionRange: ">=0.2.0 <1.0.0"
|
|
4784
|
+
},
|
|
4785
|
+
{
|
|
4786
|
+
channelName: voyageAIChannels.multimodalEmbed.channelName,
|
|
4787
|
+
methodName: "multimodalEmbed",
|
|
4788
|
+
versionRange: ">=0.2.0 <1.0.0"
|
|
4789
|
+
},
|
|
4790
|
+
{
|
|
4791
|
+
channelName: voyageAIChannels.rerank.channelName,
|
|
4792
|
+
methodName: "rerank",
|
|
4793
|
+
versionRange: ">=0.2.0 <1.0.0"
|
|
4794
|
+
},
|
|
4795
|
+
{
|
|
4796
|
+
channelName: voyageAIChannels.contextualizedEmbed.channelName,
|
|
4797
|
+
methodName: "contextualizedEmbed",
|
|
4798
|
+
versionRange: ">=0.2.0 <1.0.0"
|
|
4799
|
+
}
|
|
4800
|
+
];
|
|
4801
|
+
var voyageAIConfigs = [
|
|
4802
|
+
...GENERATED_CLIENT_MODULES.flatMap(
|
|
4803
|
+
(filePath) => generatedClientOperations.map(
|
|
4804
|
+
({ channelName, methodName, versionRange: versionRange2 }) => ({
|
|
4805
|
+
channelName,
|
|
4806
|
+
module: {
|
|
4807
|
+
name: "voyageai",
|
|
4808
|
+
versionRange: versionRange2,
|
|
4809
|
+
filePath
|
|
4810
|
+
},
|
|
4811
|
+
functionQuery: {
|
|
4812
|
+
className: "VoyageAIClient",
|
|
4813
|
+
methodName,
|
|
4814
|
+
kind: "Async"
|
|
4815
|
+
}
|
|
4816
|
+
})
|
|
4817
|
+
)
|
|
4818
|
+
)
|
|
4819
|
+
];
|
|
4820
|
+
|
|
4490
4821
|
// src/auto-instrumentations/configs/all.ts
|
|
4491
4822
|
var defaultInstrumentationConfigGroups = [
|
|
4492
4823
|
{ integrations: ["openai"], configs: openaiConfigs },
|
|
@@ -4515,6 +4846,10 @@ var defaultInstrumentationConfigGroups = [
|
|
|
4515
4846
|
integrations: ["cloudflareAgents"],
|
|
4516
4847
|
configs: cloudflareAgentsConfigs
|
|
4517
4848
|
},
|
|
4849
|
+
{
|
|
4850
|
+
integrations: ["cloudflareThink"],
|
|
4851
|
+
configs: cloudflareThinkConfigs
|
|
4852
|
+
},
|
|
4518
4853
|
{ integrations: ["cursor", "cursorSDK"], configs: cursorSDKConfigs },
|
|
4519
4854
|
{
|
|
4520
4855
|
integrations: ["openAIAgents"],
|
|
@@ -4539,6 +4874,7 @@ var defaultInstrumentationConfigGroups = [
|
|
|
4539
4874
|
configs: openRouterAgentConfigs
|
|
4540
4875
|
},
|
|
4541
4876
|
{ integrations: ["mistral"], configs: mistralConfigs },
|
|
4877
|
+
{ integrations: ["ollama"], configs: ollamaConfigs },
|
|
4542
4878
|
{ integrations: ["googleADK"], configs: googleADKConfigs },
|
|
4543
4879
|
{ integrations: ["cohere"], configs: cohereConfigs },
|
|
4544
4880
|
{ integrations: ["groq"], configs: groqConfigs },
|
|
@@ -4561,6 +4897,10 @@ var defaultInstrumentationConfigGroups = [
|
|
|
4561
4897
|
{
|
|
4562
4898
|
integrations: ["flue"],
|
|
4563
4899
|
configs: flueConfigs
|
|
4900
|
+
},
|
|
4901
|
+
{
|
|
4902
|
+
integrations: ["voyageai"],
|
|
4903
|
+
configs: voyageAIConfigs
|
|
4564
4904
|
}
|
|
4565
4905
|
// Note: `@mastra/core` is not listed here because its instrumentation
|
|
4566
4906
|
// doesn't go through the AST `code-transformer` matcher — Mastra's
|
|
@@ -4794,6 +5134,49 @@ function applySpecialCasePatch(input) {
|
|
|
4794
5134
|
return null;
|
|
4795
5135
|
}
|
|
4796
5136
|
|
|
5137
|
+
// src/auto-instrumentations/loader/get-package-version.ts
|
|
5138
|
+
var import_node_fs = require("fs");
|
|
5139
|
+
var import_node_path = require("path");
|
|
5140
|
+
var packageNames = /* @__PURE__ */ new Map();
|
|
5141
|
+
function readPackageJson(baseDir) {
|
|
5142
|
+
try {
|
|
5143
|
+
const packageJsonPath = (0, import_node_path.join)(baseDir, "package.json");
|
|
5144
|
+
const jsonFile = (0, import_node_fs.readFileSync)(packageJsonPath, "utf8");
|
|
5145
|
+
return JSON.parse(jsonFile);
|
|
5146
|
+
} catch {
|
|
5147
|
+
return void 0;
|
|
5148
|
+
}
|
|
5149
|
+
}
|
|
5150
|
+
function resolvePackageBaseDir(baseDir) {
|
|
5151
|
+
try {
|
|
5152
|
+
return (0, import_node_fs.realpathSync)(baseDir);
|
|
5153
|
+
} catch {
|
|
5154
|
+
return baseDir;
|
|
5155
|
+
}
|
|
5156
|
+
}
|
|
5157
|
+
function readPackageJsonWithFallback(baseDir) {
|
|
5158
|
+
const packageJson = readPackageJson(baseDir);
|
|
5159
|
+
if (packageJson) {
|
|
5160
|
+
return packageJson;
|
|
5161
|
+
}
|
|
5162
|
+
const resolvedBaseDir = resolvePackageBaseDir(baseDir);
|
|
5163
|
+
if (resolvedBaseDir === baseDir) {
|
|
5164
|
+
return void 0;
|
|
5165
|
+
}
|
|
5166
|
+
return readPackageJson(resolvedBaseDir);
|
|
5167
|
+
}
|
|
5168
|
+
function getPackageName(baseDir) {
|
|
5169
|
+
if (packageNames.has(baseDir)) {
|
|
5170
|
+
return packageNames.get(baseDir);
|
|
5171
|
+
}
|
|
5172
|
+
const packageJson = readPackageJsonWithFallback(baseDir);
|
|
5173
|
+
if (typeof packageJson?.name === "string") {
|
|
5174
|
+
packageNames.set(baseDir, packageJson.name);
|
|
5175
|
+
return packageJson.name;
|
|
5176
|
+
}
|
|
5177
|
+
return void 0;
|
|
5178
|
+
}
|
|
5179
|
+
|
|
4797
5180
|
// src/auto-instrumentations/bundler/webpack-loader.ts
|
|
4798
5181
|
function getModuleVersion(basedir) {
|
|
4799
5182
|
try {
|
|
@@ -4844,7 +5227,7 @@ function codeTransformerLoader(code, inputSourceMap) {
|
|
|
4844
5227
|
if (!moduleDetails) {
|
|
4845
5228
|
return callback(null, code, inputSourceMap);
|
|
4846
5229
|
}
|
|
4847
|
-
const moduleName = moduleDetails.name;
|
|
5230
|
+
const moduleName = getPackageName(moduleDetails.basedir) ?? moduleDetails.name;
|
|
4848
5231
|
const normalizedModulePath = moduleDetails.path.replace(/\\/g, "/");
|
|
4849
5232
|
const patched = applySpecialCasePatch({
|
|
4850
5233
|
packageName: moduleName,
|