braintrust 3.3.0 → 3.5.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/README.md +52 -67
- package/dev/dist/index.d.mts +98 -14
- package/dev/dist/index.d.ts +98 -14
- package/dev/dist/index.js +2751 -1463
- package/dev/dist/index.mjs +2383 -1095
- package/dist/auto-instrumentations/bundler/esbuild.cjs +476 -31
- package/dist/auto-instrumentations/bundler/esbuild.d.mts +2 -2
- package/dist/auto-instrumentations/bundler/esbuild.d.ts +2 -2
- package/dist/auto-instrumentations/bundler/esbuild.mjs +2 -2
- package/dist/auto-instrumentations/bundler/rollup.cjs +476 -31
- package/dist/auto-instrumentations/bundler/rollup.mjs +2 -2
- package/dist/auto-instrumentations/bundler/vite.cjs +476 -31
- package/dist/auto-instrumentations/bundler/vite.d.mts +2 -2
- package/dist/auto-instrumentations/bundler/vite.d.ts +2 -2
- package/dist/auto-instrumentations/bundler/vite.mjs +2 -2
- package/dist/auto-instrumentations/bundler/webpack.cjs +476 -31
- package/dist/auto-instrumentations/bundler/webpack.d.mts +2 -2
- package/dist/auto-instrumentations/bundler/webpack.d.ts +2 -2
- package/dist/auto-instrumentations/bundler/webpack.mjs +2 -2
- package/dist/auto-instrumentations/chunk-DQTPSXJB.mjs +733 -0
- package/dist/auto-instrumentations/chunk-EVUKFMHG.mjs +41 -0
- package/dist/auto-instrumentations/{chunk-OLOPGWTJ.mjs → chunk-F3TJZ3Z2.mjs} +1 -1
- package/dist/auto-instrumentations/chunk-VLEJ5AEK.mjs +41 -0
- package/dist/auto-instrumentations/hook.mjs +540 -37
- package/dist/auto-instrumentations/index.cjs +476 -31
- package/dist/auto-instrumentations/index.d.mts +5 -5
- package/dist/auto-instrumentations/index.d.ts +5 -5
- package/dist/auto-instrumentations/index.mjs +1 -1
- package/dist/auto-instrumentations/loader/cjs-patch.cjs +32 -10
- package/dist/auto-instrumentations/loader/cjs-patch.mjs +10 -5
- package/dist/auto-instrumentations/loader/esm-hook.mjs +11 -12
- package/dist/auto-instrumentations/loader/get-package-version.cjs +28 -8
- package/dist/auto-instrumentations/loader/get-package-version.d.mts +2 -1
- package/dist/auto-instrumentations/loader/get-package-version.d.ts +2 -1
- package/dist/auto-instrumentations/loader/get-package-version.mjs +3 -1
- package/dist/browser.d.mts +806 -306
- package/dist/browser.d.ts +806 -306
- package/dist/browser.js +3235 -2317
- package/dist/browser.mjs +3235 -2317
- package/dist/cli.js +2672 -1347
- package/dist/edge-light.d.mts +1 -1
- package/dist/edge-light.d.ts +1 -1
- package/dist/edge-light.js +3035 -2087
- package/dist/edge-light.mjs +3035 -2087
- package/dist/index.d.mts +806 -306
- package/dist/index.d.ts +806 -306
- package/dist/index.js +3570 -2654
- package/dist/index.mjs +3235 -2319
- package/dist/instrumentation/index.d.mts +16 -22
- package/dist/instrumentation/index.d.ts +16 -22
- package/dist/instrumentation/index.js +2241 -1077
- package/dist/instrumentation/index.mjs +2241 -1077
- package/dist/workerd.d.mts +1 -1
- package/dist/workerd.d.ts +1 -1
- package/dist/workerd.js +3035 -2087
- package/dist/workerd.mjs +3035 -2087
- package/package.json +26 -7
- package/dist/auto-instrumentations/chunk-KVX7OFPD.mjs +0 -288
- package/dist/auto-instrumentations/chunk-XDBPUTVE.mjs +0 -22
- package/dist/auto-instrumentations/chunk-ZEC7BCL4.mjs +0 -22
|
@@ -1,18 +1,197 @@
|
|
|
1
1
|
import {
|
|
2
|
+
getPackageName,
|
|
2
3
|
getPackageVersion
|
|
3
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EVUKFMHG.mjs";
|
|
4
5
|
|
|
5
6
|
// src/auto-instrumentations/hook.mts
|
|
6
|
-
import { register } from "
|
|
7
|
+
import { register } from "module";
|
|
8
|
+
|
|
9
|
+
// src/isomorph.ts
|
|
10
|
+
var DefaultAsyncLocalStorage = class {
|
|
11
|
+
constructor() {
|
|
12
|
+
}
|
|
13
|
+
enterWith(_) {
|
|
14
|
+
}
|
|
15
|
+
run(_, callback) {
|
|
16
|
+
return callback();
|
|
17
|
+
}
|
|
18
|
+
getStore() {
|
|
19
|
+
return void 0;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var DefaultChannel = class {
|
|
23
|
+
constructor(name) {
|
|
24
|
+
this.name = name;
|
|
25
|
+
}
|
|
26
|
+
hasSubscribers = false;
|
|
27
|
+
subscribe(_subscription) {
|
|
28
|
+
}
|
|
29
|
+
unsubscribe(_subscription) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
bindStore(_store, _transform) {
|
|
33
|
+
}
|
|
34
|
+
unbindStore(_store) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
publish(_message) {
|
|
38
|
+
}
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
|
+
runStores(_message, fn, thisArg, ...args) {
|
|
41
|
+
return fn.apply(thisArg, args);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
var DefaultTracingChannel = class {
|
|
45
|
+
start;
|
|
46
|
+
end;
|
|
47
|
+
asyncStart;
|
|
48
|
+
asyncEnd;
|
|
49
|
+
error;
|
|
50
|
+
constructor(nameOrChannels) {
|
|
51
|
+
if (typeof nameOrChannels === "string") {
|
|
52
|
+
this.start = new DefaultChannel(`tracing:${nameOrChannels}:start`);
|
|
53
|
+
this.end = new DefaultChannel(`tracing:${nameOrChannels}:end`);
|
|
54
|
+
this.asyncStart = new DefaultChannel(
|
|
55
|
+
`tracing:${nameOrChannels}:asyncStart`
|
|
56
|
+
);
|
|
57
|
+
this.asyncEnd = new DefaultChannel(`tracing:${nameOrChannels}:asyncEnd`);
|
|
58
|
+
this.error = new DefaultChannel(`tracing:${nameOrChannels}:error`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.start = nameOrChannels.start ?? new DefaultChannel("tracing:start");
|
|
62
|
+
this.end = nameOrChannels.end ?? new DefaultChannel("tracing:end");
|
|
63
|
+
this.asyncStart = nameOrChannels.asyncStart ?? new DefaultChannel("tracing:asyncStart");
|
|
64
|
+
this.asyncEnd = nameOrChannels.asyncEnd ?? new DefaultChannel("tracing:asyncEnd");
|
|
65
|
+
this.error = nameOrChannels.error ?? new DefaultChannel("tracing:error");
|
|
66
|
+
}
|
|
67
|
+
get hasSubscribers() {
|
|
68
|
+
return this.start.hasSubscribers || this.end.hasSubscribers || this.asyncStart.hasSubscribers || this.asyncEnd.hasSubscribers || this.error.hasSubscribers;
|
|
69
|
+
}
|
|
70
|
+
subscribe(_handlers) {
|
|
71
|
+
}
|
|
72
|
+
unsubscribe(_handlers) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
76
|
+
traceSync(fn, _message, thisArg, ...args) {
|
|
77
|
+
return fn.apply(thisArg, args);
|
|
78
|
+
}
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
tracePromise(fn, _message, thisArg, ...args) {
|
|
81
|
+
return Promise.resolve(fn.apply(thisArg, args));
|
|
82
|
+
}
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
+
traceCallback(fn, _position, _message, thisArg, ...args) {
|
|
85
|
+
return fn.apply(thisArg, args);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var iso = {
|
|
89
|
+
buildType: "unknown",
|
|
90
|
+
// Will be set by configureBrowser() or configureNode()
|
|
91
|
+
getRepoInfo: async (_settings) => void 0,
|
|
92
|
+
getPastNAncestors: async () => [],
|
|
93
|
+
getEnv: (_name) => void 0,
|
|
94
|
+
getCallerLocation: () => void 0,
|
|
95
|
+
newAsyncLocalStorage: () => new DefaultAsyncLocalStorage(),
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
97
|
+
newTracingChannel: (nameOrChannels) => new DefaultTracingChannel(nameOrChannels),
|
|
98
|
+
processOn: (_0, _1) => {
|
|
99
|
+
},
|
|
100
|
+
basename: (filepath) => filepath.split(/[\\/]/).pop() || filepath,
|
|
101
|
+
writeln: (text) => console.log(text)
|
|
102
|
+
};
|
|
103
|
+
var isomorph_default = iso;
|
|
104
|
+
|
|
105
|
+
// src/instrumentation/core/channel-definitions.ts
|
|
106
|
+
function channel(spec) {
|
|
107
|
+
return spec;
|
|
108
|
+
}
|
|
109
|
+
function defineChannels(pkg, channels) {
|
|
110
|
+
return Object.fromEntries(
|
|
111
|
+
Object.entries(channels).map(([key, spec]) => {
|
|
112
|
+
const fullChannelName = `orchestrion:${pkg}:${spec.channelName}`;
|
|
113
|
+
if (spec.kind === "async") {
|
|
114
|
+
const asyncSpec = spec;
|
|
115
|
+
const tracingChannel2 = () => isomorph_default.newTracingChannel(
|
|
116
|
+
fullChannelName
|
|
117
|
+
);
|
|
118
|
+
return [
|
|
119
|
+
key,
|
|
120
|
+
{
|
|
121
|
+
...asyncSpec,
|
|
122
|
+
tracingChannel: tracingChannel2,
|
|
123
|
+
tracePromise: (fn, context) => tracingChannel2().tracePromise(
|
|
124
|
+
fn,
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
126
|
+
context
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
const syncSpec = spec;
|
|
132
|
+
const tracingChannel = () => isomorph_default.newTracingChannel(
|
|
133
|
+
fullChannelName
|
|
134
|
+
);
|
|
135
|
+
return [
|
|
136
|
+
key,
|
|
137
|
+
{
|
|
138
|
+
...syncSpec,
|
|
139
|
+
tracingChannel,
|
|
140
|
+
traceSync: (fn, context) => tracingChannel().traceSync(
|
|
141
|
+
fn,
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
143
|
+
context
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
];
|
|
147
|
+
})
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/instrumentation/plugins/openai-channels.ts
|
|
152
|
+
var openAIChannels = defineChannels("openai", {
|
|
153
|
+
chatCompletionsCreate: channel({
|
|
154
|
+
channelName: "chat.completions.create",
|
|
155
|
+
kind: "async"
|
|
156
|
+
}),
|
|
157
|
+
embeddingsCreate: channel({
|
|
158
|
+
channelName: "embeddings.create",
|
|
159
|
+
kind: "async"
|
|
160
|
+
}),
|
|
161
|
+
betaChatCompletionsParse: channel({
|
|
162
|
+
channelName: "beta.chat.completions.parse",
|
|
163
|
+
kind: "async"
|
|
164
|
+
}),
|
|
165
|
+
betaChatCompletionsStream: channel({
|
|
166
|
+
channelName: "beta.chat.completions.stream",
|
|
167
|
+
kind: "sync-stream"
|
|
168
|
+
}),
|
|
169
|
+
moderationsCreate: channel({
|
|
170
|
+
channelName: "moderations.create",
|
|
171
|
+
kind: "async"
|
|
172
|
+
}),
|
|
173
|
+
responsesCreate: channel({
|
|
174
|
+
channelName: "responses.create",
|
|
175
|
+
kind: "async"
|
|
176
|
+
}),
|
|
177
|
+
responsesStream: channel({
|
|
178
|
+
channelName: "responses.stream",
|
|
179
|
+
kind: "sync-stream"
|
|
180
|
+
}),
|
|
181
|
+
responsesParse: channel({
|
|
182
|
+
channelName: "responses.parse",
|
|
183
|
+
kind: "async"
|
|
184
|
+
})
|
|
185
|
+
});
|
|
7
186
|
|
|
8
187
|
// src/auto-instrumentations/configs/openai.ts
|
|
9
188
|
var openaiConfigs = [
|
|
10
189
|
// Chat Completions
|
|
11
190
|
{
|
|
12
|
-
channelName:
|
|
191
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
13
192
|
module: {
|
|
14
193
|
name: "openai",
|
|
15
|
-
versionRange: ">=4.0.0",
|
|
194
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
16
195
|
filePath: "resources/chat/completions.mjs"
|
|
17
196
|
},
|
|
18
197
|
functionQuery: {
|
|
@@ -21,9 +200,35 @@ var openaiConfigs = [
|
|
|
21
200
|
kind: "Async"
|
|
22
201
|
}
|
|
23
202
|
},
|
|
203
|
+
{
|
|
204
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
205
|
+
module: {
|
|
206
|
+
name: "openai",
|
|
207
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
208
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
209
|
+
},
|
|
210
|
+
functionQuery: {
|
|
211
|
+
className: "Completions",
|
|
212
|
+
methodName: "create",
|
|
213
|
+
kind: "Async"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
218
|
+
module: {
|
|
219
|
+
name: "openai",
|
|
220
|
+
versionRange: ">=5.0.0",
|
|
221
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
222
|
+
},
|
|
223
|
+
functionQuery: {
|
|
224
|
+
className: "Completions",
|
|
225
|
+
methodName: "create",
|
|
226
|
+
kind: "Async"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
24
229
|
// Embeddings
|
|
25
230
|
{
|
|
26
|
-
channelName:
|
|
231
|
+
channelName: openAIChannels.embeddingsCreate.channelName,
|
|
27
232
|
module: {
|
|
28
233
|
name: "openai",
|
|
29
234
|
versionRange: ">=4.0.0",
|
|
@@ -37,10 +242,10 @@ var openaiConfigs = [
|
|
|
37
242
|
},
|
|
38
243
|
// Beta Chat Completions Parse
|
|
39
244
|
{
|
|
40
|
-
channelName:
|
|
245
|
+
channelName: openAIChannels.betaChatCompletionsParse.channelName,
|
|
41
246
|
module: {
|
|
42
247
|
name: "openai",
|
|
43
|
-
versionRange: ">=4.0.0",
|
|
248
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
44
249
|
filePath: "resources/beta/chat/completions.mjs"
|
|
45
250
|
},
|
|
46
251
|
functionQuery: {
|
|
@@ -49,9 +254,22 @@ var openaiConfigs = [
|
|
|
49
254
|
kind: "Async"
|
|
50
255
|
}
|
|
51
256
|
},
|
|
257
|
+
{
|
|
258
|
+
channelName: openAIChannels.betaChatCompletionsParse.channelName,
|
|
259
|
+
module: {
|
|
260
|
+
name: "openai",
|
|
261
|
+
versionRange: ">=5.0.0",
|
|
262
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
263
|
+
},
|
|
264
|
+
functionQuery: {
|
|
265
|
+
className: "Completions",
|
|
266
|
+
methodName: "parse",
|
|
267
|
+
kind: "Async"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
52
270
|
// Moderations
|
|
53
271
|
{
|
|
54
|
-
channelName:
|
|
272
|
+
channelName: openAIChannels.moderationsCreate.channelName,
|
|
55
273
|
module: {
|
|
56
274
|
name: "openai",
|
|
57
275
|
versionRange: ">=4.0.0",
|
|
@@ -65,10 +283,10 @@ var openaiConfigs = [
|
|
|
65
283
|
},
|
|
66
284
|
// Beta Chat Completions Stream
|
|
67
285
|
{
|
|
68
|
-
channelName:
|
|
286
|
+
channelName: openAIChannels.betaChatCompletionsStream.channelName,
|
|
69
287
|
module: {
|
|
70
288
|
name: "openai",
|
|
71
|
-
versionRange: ">=4.0.0",
|
|
289
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
72
290
|
filePath: "resources/beta/chat/completions.mjs"
|
|
73
291
|
},
|
|
74
292
|
functionQuery: {
|
|
@@ -77,9 +295,22 @@ var openaiConfigs = [
|
|
|
77
295
|
kind: "Sync"
|
|
78
296
|
}
|
|
79
297
|
},
|
|
298
|
+
{
|
|
299
|
+
channelName: openAIChannels.betaChatCompletionsStream.channelName,
|
|
300
|
+
module: {
|
|
301
|
+
name: "openai",
|
|
302
|
+
versionRange: ">=5.0.0",
|
|
303
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
304
|
+
},
|
|
305
|
+
functionQuery: {
|
|
306
|
+
className: "Completions",
|
|
307
|
+
methodName: "stream",
|
|
308
|
+
kind: "Sync"
|
|
309
|
+
}
|
|
310
|
+
},
|
|
80
311
|
// Responses API (v4.87.0+)
|
|
81
312
|
{
|
|
82
|
-
channelName:
|
|
313
|
+
channelName: openAIChannels.responsesCreate.channelName,
|
|
83
314
|
module: {
|
|
84
315
|
name: "openai",
|
|
85
316
|
versionRange: ">=4.87.0",
|
|
@@ -92,7 +323,7 @@ var openaiConfigs = [
|
|
|
92
323
|
}
|
|
93
324
|
},
|
|
94
325
|
{
|
|
95
|
-
channelName:
|
|
326
|
+
channelName: openAIChannels.responsesStream.channelName,
|
|
96
327
|
module: {
|
|
97
328
|
name: "openai",
|
|
98
329
|
versionRange: ">=4.87.0",
|
|
@@ -105,7 +336,7 @@ var openaiConfigs = [
|
|
|
105
336
|
}
|
|
106
337
|
},
|
|
107
338
|
{
|
|
108
|
-
channelName:
|
|
339
|
+
channelName: openAIChannels.responsesParse.channelName,
|
|
109
340
|
module: {
|
|
110
341
|
name: "openai",
|
|
111
342
|
versionRange: ">=4.87.0",
|
|
@@ -119,15 +350,27 @@ var openaiConfigs = [
|
|
|
119
350
|
}
|
|
120
351
|
];
|
|
121
352
|
|
|
353
|
+
// src/instrumentation/plugins/anthropic-channels.ts
|
|
354
|
+
var anthropicChannels = defineChannels("@anthropic-ai/sdk", {
|
|
355
|
+
messagesCreate: channel({
|
|
356
|
+
channelName: "messages.create",
|
|
357
|
+
kind: "async"
|
|
358
|
+
}),
|
|
359
|
+
betaMessagesCreate: channel({
|
|
360
|
+
channelName: "beta.messages.create",
|
|
361
|
+
kind: "async"
|
|
362
|
+
})
|
|
363
|
+
});
|
|
364
|
+
|
|
122
365
|
// src/auto-instrumentations/configs/anthropic.ts
|
|
123
366
|
var anthropicConfigs = [
|
|
124
367
|
// Messages API - create (supports streaming via stream=true parameter)
|
|
125
368
|
{
|
|
126
|
-
channelName:
|
|
369
|
+
channelName: anthropicChannels.messagesCreate.channelName,
|
|
127
370
|
module: {
|
|
128
371
|
name: "@anthropic-ai/sdk",
|
|
129
372
|
versionRange: ">=0.60.0",
|
|
130
|
-
filePath: "resources/messages.mjs"
|
|
373
|
+
filePath: "resources/messages/messages.mjs"
|
|
131
374
|
},
|
|
132
375
|
functionQuery: {
|
|
133
376
|
className: "Messages",
|
|
@@ -137,7 +380,7 @@ var anthropicConfigs = [
|
|
|
137
380
|
},
|
|
138
381
|
// Beta Messages API - create (supports streaming via stream=true parameter)
|
|
139
382
|
{
|
|
140
|
-
channelName:
|
|
383
|
+
channelName: anthropicChannels.betaMessagesCreate.channelName,
|
|
141
384
|
module: {
|
|
142
385
|
name: "@anthropic-ai/sdk",
|
|
143
386
|
versionRange: ">=0.60.0",
|
|
@@ -151,11 +394,55 @@ var anthropicConfigs = [
|
|
|
151
394
|
}
|
|
152
395
|
];
|
|
153
396
|
|
|
397
|
+
// src/instrumentation/plugins/ai-sdk-channels.ts
|
|
398
|
+
var aiSDKChannels = defineChannels("ai", {
|
|
399
|
+
generateText: channel({
|
|
400
|
+
channelName: "generateText",
|
|
401
|
+
kind: "async"
|
|
402
|
+
}),
|
|
403
|
+
streamText: channel({
|
|
404
|
+
channelName: "streamText",
|
|
405
|
+
kind: "async"
|
|
406
|
+
}),
|
|
407
|
+
streamTextSync: channel({
|
|
408
|
+
channelName: "streamText.sync",
|
|
409
|
+
kind: "sync-stream"
|
|
410
|
+
}),
|
|
411
|
+
generateObject: channel({
|
|
412
|
+
channelName: "generateObject",
|
|
413
|
+
kind: "async"
|
|
414
|
+
}),
|
|
415
|
+
streamObject: channel({
|
|
416
|
+
channelName: "streamObject",
|
|
417
|
+
kind: "async"
|
|
418
|
+
}),
|
|
419
|
+
streamObjectSync: channel({
|
|
420
|
+
channelName: "streamObject.sync",
|
|
421
|
+
kind: "sync-stream"
|
|
422
|
+
}),
|
|
423
|
+
agentGenerate: channel({
|
|
424
|
+
channelName: "Agent.generate",
|
|
425
|
+
kind: "async"
|
|
426
|
+
}),
|
|
427
|
+
agentStream: channel({
|
|
428
|
+
channelName: "Agent.stream",
|
|
429
|
+
kind: "async"
|
|
430
|
+
}),
|
|
431
|
+
toolLoopAgentGenerate: channel({
|
|
432
|
+
channelName: "ToolLoopAgent.generate",
|
|
433
|
+
kind: "async"
|
|
434
|
+
}),
|
|
435
|
+
toolLoopAgentStream: channel({
|
|
436
|
+
channelName: "ToolLoopAgent.stream",
|
|
437
|
+
kind: "async"
|
|
438
|
+
})
|
|
439
|
+
});
|
|
440
|
+
|
|
154
441
|
// src/auto-instrumentations/configs/ai-sdk.ts
|
|
155
442
|
var aiSDKConfigs = [
|
|
156
443
|
// generateText - async function
|
|
157
444
|
{
|
|
158
|
-
channelName:
|
|
445
|
+
channelName: aiSDKChannels.generateText.channelName,
|
|
159
446
|
module: {
|
|
160
447
|
name: "ai",
|
|
161
448
|
versionRange: ">=3.0.0",
|
|
@@ -166,9 +453,21 @@ var aiSDKConfigs = [
|
|
|
166
453
|
kind: "Async"
|
|
167
454
|
}
|
|
168
455
|
},
|
|
456
|
+
{
|
|
457
|
+
channelName: aiSDKChannels.generateText.channelName,
|
|
458
|
+
module: {
|
|
459
|
+
name: "ai",
|
|
460
|
+
versionRange: ">=3.0.0",
|
|
461
|
+
filePath: "dist/index.js"
|
|
462
|
+
},
|
|
463
|
+
functionQuery: {
|
|
464
|
+
functionName: "generateText",
|
|
465
|
+
kind: "Async"
|
|
466
|
+
}
|
|
467
|
+
},
|
|
169
468
|
// streamText - async function
|
|
170
469
|
{
|
|
171
|
-
channelName:
|
|
470
|
+
channelName: aiSDKChannels.streamText.channelName,
|
|
172
471
|
module: {
|
|
173
472
|
name: "ai",
|
|
174
473
|
versionRange: ">=3.0.0",
|
|
@@ -179,9 +478,21 @@ var aiSDKConfigs = [
|
|
|
179
478
|
kind: "Async"
|
|
180
479
|
}
|
|
181
480
|
},
|
|
481
|
+
{
|
|
482
|
+
channelName: aiSDKChannels.streamTextSync.channelName,
|
|
483
|
+
module: {
|
|
484
|
+
name: "ai",
|
|
485
|
+
versionRange: ">=3.0.0",
|
|
486
|
+
filePath: "dist/index.js"
|
|
487
|
+
},
|
|
488
|
+
functionQuery: {
|
|
489
|
+
functionName: "streamText",
|
|
490
|
+
kind: "Sync"
|
|
491
|
+
}
|
|
492
|
+
},
|
|
182
493
|
// generateObject - async function
|
|
183
494
|
{
|
|
184
|
-
channelName:
|
|
495
|
+
channelName: aiSDKChannels.generateObject.channelName,
|
|
185
496
|
module: {
|
|
186
497
|
name: "ai",
|
|
187
498
|
versionRange: ">=3.0.0",
|
|
@@ -192,9 +503,21 @@ var aiSDKConfigs = [
|
|
|
192
503
|
kind: "Async"
|
|
193
504
|
}
|
|
194
505
|
},
|
|
506
|
+
{
|
|
507
|
+
channelName: aiSDKChannels.generateObject.channelName,
|
|
508
|
+
module: {
|
|
509
|
+
name: "ai",
|
|
510
|
+
versionRange: ">=3.0.0",
|
|
511
|
+
filePath: "dist/index.js"
|
|
512
|
+
},
|
|
513
|
+
functionQuery: {
|
|
514
|
+
functionName: "generateObject",
|
|
515
|
+
kind: "Async"
|
|
516
|
+
}
|
|
517
|
+
},
|
|
195
518
|
// streamObject - async function
|
|
196
519
|
{
|
|
197
|
-
channelName:
|
|
520
|
+
channelName: aiSDKChannels.streamObject.channelName,
|
|
198
521
|
module: {
|
|
199
522
|
name: "ai",
|
|
200
523
|
versionRange: ">=3.0.0",
|
|
@@ -205,41 +528,152 @@ var aiSDKConfigs = [
|
|
|
205
528
|
kind: "Async"
|
|
206
529
|
}
|
|
207
530
|
},
|
|
208
|
-
// Agent.generate - async method (v3-v5 only, Agent structure changed in v6)
|
|
209
531
|
{
|
|
210
|
-
channelName:
|
|
532
|
+
channelName: aiSDKChannels.streamObjectSync.channelName,
|
|
533
|
+
module: {
|
|
534
|
+
name: "ai",
|
|
535
|
+
versionRange: ">=3.0.0",
|
|
536
|
+
filePath: "dist/index.js"
|
|
537
|
+
},
|
|
538
|
+
functionQuery: {
|
|
539
|
+
functionName: "streamObject",
|
|
540
|
+
kind: "Sync"
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
// Agent.generate - async method (v5 only)
|
|
544
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
545
|
+
// target the first async `generate` method in the file instead of a class name.
|
|
546
|
+
{
|
|
547
|
+
channelName: aiSDKChannels.agentGenerate.channelName,
|
|
211
548
|
module: {
|
|
212
549
|
name: "ai",
|
|
213
|
-
versionRange: ">=
|
|
550
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
214
551
|
filePath: "dist/index.mjs"
|
|
215
552
|
},
|
|
216
553
|
functionQuery: {
|
|
217
|
-
className: "Agent",
|
|
218
554
|
methodName: "generate",
|
|
219
|
-
kind: "Async"
|
|
555
|
+
kind: "Async",
|
|
556
|
+
index: 0
|
|
220
557
|
}
|
|
221
558
|
},
|
|
222
|
-
// Agent.stream - async method (v3-v5 only, Agent structure changed in v6)
|
|
223
559
|
{
|
|
224
|
-
channelName:
|
|
560
|
+
channelName: aiSDKChannels.agentGenerate.channelName,
|
|
561
|
+
module: {
|
|
562
|
+
name: "ai",
|
|
563
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
564
|
+
filePath: "dist/index.js"
|
|
565
|
+
},
|
|
566
|
+
functionQuery: {
|
|
567
|
+
methodName: "generate",
|
|
568
|
+
kind: "Async",
|
|
569
|
+
index: 0
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
// Agent.stream - async method (v5 only)
|
|
573
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
574
|
+
// target the first async `stream` method in the file instead of a class name.
|
|
575
|
+
{
|
|
576
|
+
channelName: aiSDKChannels.agentStream.channelName,
|
|
225
577
|
module: {
|
|
226
578
|
name: "ai",
|
|
227
|
-
versionRange: ">=
|
|
579
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
228
580
|
filePath: "dist/index.mjs"
|
|
229
581
|
},
|
|
230
582
|
functionQuery: {
|
|
231
|
-
className: "Agent",
|
|
232
583
|
methodName: "stream",
|
|
233
|
-
kind: "Async"
|
|
584
|
+
kind: "Async",
|
|
585
|
+
index: 0
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
channelName: aiSDKChannels.agentStream.channelName,
|
|
590
|
+
module: {
|
|
591
|
+
name: "ai",
|
|
592
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
593
|
+
filePath: "dist/index.js"
|
|
594
|
+
},
|
|
595
|
+
functionQuery: {
|
|
596
|
+
methodName: "stream",
|
|
597
|
+
kind: "Async",
|
|
598
|
+
index: 0
|
|
599
|
+
}
|
|
600
|
+
},
|
|
601
|
+
// ToolLoopAgent.generate - async method (v6 only, Experimental_Agent is an alias)
|
|
602
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
603
|
+
// target the first async `generate` method in the file instead of a class name.
|
|
604
|
+
{
|
|
605
|
+
channelName: aiSDKChannels.toolLoopAgentGenerate.channelName,
|
|
606
|
+
module: {
|
|
607
|
+
name: "ai",
|
|
608
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
609
|
+
filePath: "dist/index.mjs"
|
|
610
|
+
},
|
|
611
|
+
functionQuery: {
|
|
612
|
+
methodName: "generate",
|
|
613
|
+
kind: "Async",
|
|
614
|
+
index: 0
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
channelName: aiSDKChannels.toolLoopAgentGenerate.channelName,
|
|
619
|
+
module: {
|
|
620
|
+
name: "ai",
|
|
621
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
622
|
+
filePath: "dist/index.js"
|
|
623
|
+
},
|
|
624
|
+
functionQuery: {
|
|
625
|
+
methodName: "generate",
|
|
626
|
+
kind: "Async",
|
|
627
|
+
index: 0
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
// ToolLoopAgent.stream - async method (v6 only, Experimental_Agent is an alias)
|
|
631
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
632
|
+
// target the first async `stream` method in the file instead of a class name.
|
|
633
|
+
{
|
|
634
|
+
channelName: aiSDKChannels.toolLoopAgentStream.channelName,
|
|
635
|
+
module: {
|
|
636
|
+
name: "ai",
|
|
637
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
638
|
+
filePath: "dist/index.mjs"
|
|
639
|
+
},
|
|
640
|
+
functionQuery: {
|
|
641
|
+
methodName: "stream",
|
|
642
|
+
kind: "Async",
|
|
643
|
+
index: 0
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
channelName: aiSDKChannels.toolLoopAgentStream.channelName,
|
|
648
|
+
module: {
|
|
649
|
+
name: "ai",
|
|
650
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
651
|
+
filePath: "dist/index.js"
|
|
652
|
+
},
|
|
653
|
+
functionQuery: {
|
|
654
|
+
methodName: "stream",
|
|
655
|
+
kind: "Async",
|
|
656
|
+
index: 0
|
|
234
657
|
}
|
|
235
658
|
}
|
|
236
659
|
];
|
|
237
660
|
|
|
661
|
+
// src/instrumentation/plugins/claude-agent-sdk-channels.ts
|
|
662
|
+
var claudeAgentSDKChannels = defineChannels(
|
|
663
|
+
"@anthropic-ai/claude-agent-sdk",
|
|
664
|
+
{
|
|
665
|
+
query: channel({
|
|
666
|
+
channelName: "query",
|
|
667
|
+
kind: "async"
|
|
668
|
+
})
|
|
669
|
+
}
|
|
670
|
+
);
|
|
671
|
+
|
|
238
672
|
// src/auto-instrumentations/configs/claude-agent-sdk.ts
|
|
239
673
|
var claudeAgentSDKConfigs = [
|
|
240
674
|
// query - Main entry point for agent interactions (top-level exported async generator function)
|
|
241
675
|
{
|
|
242
|
-
channelName:
|
|
676
|
+
channelName: claudeAgentSDKChannels.query.channelName,
|
|
243
677
|
module: {
|
|
244
678
|
name: "@anthropic-ai/claude-agent-sdk",
|
|
245
679
|
versionRange: ">=0.1.0",
|
|
@@ -252,12 +686,24 @@ var claudeAgentSDKConfigs = [
|
|
|
252
686
|
}
|
|
253
687
|
];
|
|
254
688
|
|
|
689
|
+
// src/instrumentation/plugins/google-genai-channels.ts
|
|
690
|
+
var googleGenAIChannels = defineChannels("@google/genai", {
|
|
691
|
+
generateContent: channel({
|
|
692
|
+
channelName: "models.generateContent",
|
|
693
|
+
kind: "async"
|
|
694
|
+
}),
|
|
695
|
+
generateContentStream: channel({
|
|
696
|
+
channelName: "models.generateContentStream",
|
|
697
|
+
kind: "async"
|
|
698
|
+
})
|
|
699
|
+
});
|
|
700
|
+
|
|
255
701
|
// src/auto-instrumentations/configs/google-genai.ts
|
|
256
702
|
var googleGenAIConfigs = [
|
|
257
703
|
// Models.generateContentInternal - The actual class method (Node.js entry point)
|
|
258
704
|
// Note: generateContent is an arrow function property that calls this internal method
|
|
259
705
|
{
|
|
260
|
-
channelName:
|
|
706
|
+
channelName: googleGenAIChannels.generateContent.channelName,
|
|
261
707
|
module: {
|
|
262
708
|
name: "@google/genai",
|
|
263
709
|
versionRange: ">=1.0.0",
|
|
@@ -272,7 +718,7 @@ var googleGenAIConfigs = [
|
|
|
272
718
|
// Models.generateContentStreamInternal - The actual class method (Node.js entry point)
|
|
273
719
|
// Note: generateContentStream is an arrow function property that calls this internal method
|
|
274
720
|
{
|
|
275
|
-
channelName:
|
|
721
|
+
channelName: googleGenAIChannels.generateContentStream.channelName,
|
|
276
722
|
module: {
|
|
277
723
|
name: "@google/genai",
|
|
278
724
|
versionRange: ">=1.0.0",
|
|
@@ -290,8 +736,8 @@ var googleGenAIConfigs = [
|
|
|
290
736
|
import {
|
|
291
737
|
create
|
|
292
738
|
} from "@apm-js-collab/code-transformer";
|
|
293
|
-
import * as Module from "
|
|
294
|
-
import { sep } from "
|
|
739
|
+
import * as Module from "module";
|
|
740
|
+
import { sep } from "path";
|
|
295
741
|
import moduleDetailsFromPath from "module-details-from-path";
|
|
296
742
|
var ModulePatch = class {
|
|
297
743
|
packages;
|
|
@@ -315,11 +761,15 @@ var ModulePatch = class {
|
|
|
315
761
|
const [content, filename] = args;
|
|
316
762
|
const normalizedForPlatform = filename.split("/").join(sep);
|
|
317
763
|
const resolvedModule = moduleDetailsFromPath(normalizedForPlatform);
|
|
318
|
-
if (resolvedModule
|
|
764
|
+
if (resolvedModule) {
|
|
765
|
+
const packageName = getPackageName(resolvedModule.basedir) ?? resolvedModule.name;
|
|
766
|
+
if (!self.packages.has(packageName)) {
|
|
767
|
+
return self.originalCompile.apply(this, args);
|
|
768
|
+
}
|
|
319
769
|
const version = getPackageVersion(resolvedModule.basedir);
|
|
320
770
|
const normalizedModulePath = resolvedModule.path.replace(/\\/g, "/");
|
|
321
771
|
const transformer = self.instrumentator.getTransformer(
|
|
322
|
-
|
|
772
|
+
packageName,
|
|
323
773
|
version,
|
|
324
774
|
normalizedModulePath
|
|
325
775
|
);
|
|
@@ -347,6 +797,59 @@ var ModulePatch = class {
|
|
|
347
797
|
};
|
|
348
798
|
|
|
349
799
|
// src/auto-instrumentations/hook.mts
|
|
800
|
+
var dcPath = ["node", "diagnostics_channel"].join(":");
|
|
801
|
+
var dc = await import(
|
|
802
|
+
/* @vite-ignore */
|
|
803
|
+
dcPath
|
|
804
|
+
);
|
|
805
|
+
var dummyChannel = dc.tracingChannel("dummy");
|
|
806
|
+
var TracingChannel = dummyChannel.constructor;
|
|
807
|
+
if (TracingChannel && !Object.getOwnPropertyDescriptor(TracingChannel.prototype, "hasSubscribers")) {
|
|
808
|
+
Object.defineProperty(TracingChannel.prototype, "hasSubscribers", {
|
|
809
|
+
configurable: true,
|
|
810
|
+
enumerable: false,
|
|
811
|
+
get() {
|
|
812
|
+
return Boolean(
|
|
813
|
+
this.start?.hasSubscribers || this.end?.hasSubscribers || this.asyncStart?.hasSubscribers || this.asyncEnd?.hasSubscribers || this.error?.hasSubscribers
|
|
814
|
+
);
|
|
815
|
+
}
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
if (TracingChannel && TracingChannel.prototype.tracePromise) {
|
|
819
|
+
TracingChannel.prototype.tracePromise = function(fn, context = {}, thisArg, ...args) {
|
|
820
|
+
const { start, end, asyncStart, asyncEnd, error } = this;
|
|
821
|
+
function reject(err) {
|
|
822
|
+
context.error = err;
|
|
823
|
+
error?.publish(context);
|
|
824
|
+
asyncStart?.publish(context);
|
|
825
|
+
asyncEnd?.publish(context);
|
|
826
|
+
return Promise.reject(err);
|
|
827
|
+
}
|
|
828
|
+
function resolve(result) {
|
|
829
|
+
context.result = result;
|
|
830
|
+
asyncStart?.publish(context);
|
|
831
|
+
asyncEnd?.publish(context);
|
|
832
|
+
return result;
|
|
833
|
+
}
|
|
834
|
+
start?.publish(context);
|
|
835
|
+
try {
|
|
836
|
+
const result = Reflect.apply(fn, thisArg, args);
|
|
837
|
+
if (result && (typeof result === "object" || typeof result === "function") && typeof result.then === "function") {
|
|
838
|
+
return result.then(resolve, reject);
|
|
839
|
+
}
|
|
840
|
+
context.result = result;
|
|
841
|
+
asyncStart?.publish(context);
|
|
842
|
+
asyncEnd?.publish(context);
|
|
843
|
+
return result;
|
|
844
|
+
} catch (err) {
|
|
845
|
+
context.error = err;
|
|
846
|
+
error?.publish(context);
|
|
847
|
+
throw err;
|
|
848
|
+
} finally {
|
|
849
|
+
end?.publish(context);
|
|
850
|
+
}
|
|
851
|
+
};
|
|
852
|
+
}
|
|
350
853
|
var allConfigs = [
|
|
351
854
|
...openaiConfigs,
|
|
352
855
|
...anthropicConfigs,
|