braintrust 3.3.0 → 3.4.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.
Files changed (44) hide show
  1. package/README.md +52 -67
  2. package/dev/dist/index.d.mts +53 -9
  3. package/dev/dist/index.d.ts +53 -9
  4. package/dev/dist/index.js +1839 -1298
  5. package/dev/dist/index.mjs +1503 -962
  6. package/dist/auto-instrumentations/bundler/esbuild.cjs +270 -23
  7. package/dist/auto-instrumentations/bundler/esbuild.mjs +2 -2
  8. package/dist/auto-instrumentations/bundler/rollup.cjs +270 -23
  9. package/dist/auto-instrumentations/bundler/rollup.mjs +2 -2
  10. package/dist/auto-instrumentations/bundler/vite.cjs +270 -23
  11. package/dist/auto-instrumentations/bundler/vite.mjs +2 -2
  12. package/dist/auto-instrumentations/bundler/webpack.cjs +270 -23
  13. package/dist/auto-instrumentations/bundler/webpack.mjs +2 -2
  14. package/dist/auto-instrumentations/{chunk-OLOPGWTJ.mjs → chunk-D5ZPIUEL.mjs} +1 -1
  15. package/dist/auto-instrumentations/chunk-LVWWLUMN.mjs +535 -0
  16. package/dist/auto-instrumentations/hook.mjs +306 -23
  17. package/dist/auto-instrumentations/index.cjs +270 -23
  18. package/dist/auto-instrumentations/index.d.mts +5 -5
  19. package/dist/auto-instrumentations/index.d.ts +5 -5
  20. package/dist/auto-instrumentations/index.mjs +1 -1
  21. package/dist/auto-instrumentations/loader/esm-hook.mjs +7 -8
  22. package/dist/browser.d.mts +474 -47
  23. package/dist/browser.d.ts +474 -47
  24. package/dist/browser.js +2258 -2095
  25. package/dist/browser.mjs +2258 -2095
  26. package/dist/cli.js +1817 -1232
  27. package/dist/edge-light.d.mts +1 -1
  28. package/dist/edge-light.d.ts +1 -1
  29. package/dist/edge-light.js +2188 -2027
  30. package/dist/edge-light.mjs +2188 -2027
  31. package/dist/index.d.mts +474 -47
  32. package/dist/index.d.ts +474 -47
  33. package/dist/index.js +2576 -2415
  34. package/dist/index.mjs +2259 -2098
  35. package/dist/instrumentation/index.d.mts +16 -22
  36. package/dist/instrumentation/index.d.ts +16 -22
  37. package/dist/instrumentation/index.js +1558 -1068
  38. package/dist/instrumentation/index.mjs +1558 -1068
  39. package/dist/workerd.d.mts +1 -1
  40. package/dist/workerd.d.ts +1 -1
  41. package/dist/workerd.js +2188 -2027
  42. package/dist/workerd.mjs +2188 -2027
  43. package/package.json +6 -3
  44. package/dist/auto-instrumentations/chunk-KVX7OFPD.mjs +0 -288
@@ -42,14 +42,146 @@ var import_fs = require("fs");
42
42
  var import_url = require("url");
43
43
  var import_module_details_from_path = __toESM(require("module-details-from-path"));
44
44
 
45
+ // src/isomorph.ts
46
+ var DefaultAsyncLocalStorage = class {
47
+ constructor() {
48
+ }
49
+ enterWith(_) {
50
+ }
51
+ run(_, callback) {
52
+ return callback();
53
+ }
54
+ getStore() {
55
+ return void 0;
56
+ }
57
+ };
58
+ var DefaultTracingChannel = class {
59
+ hasSubscribers = false;
60
+ subscribe(_handlers) {
61
+ }
62
+ unsubscribe(_handlers) {
63
+ return false;
64
+ }
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
+ traceSync(fn, _message, thisArg, ...args) {
67
+ return fn.apply(thisArg, args);
68
+ }
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ tracePromise(fn, _message, thisArg, ...args) {
71
+ return Promise.resolve(fn.apply(thisArg, args));
72
+ }
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ traceCallback(fn, _position, _message, thisArg, ...args) {
75
+ return fn.apply(thisArg, args);
76
+ }
77
+ };
78
+ var iso = {
79
+ buildType: "unknown",
80
+ // Will be set by configureBrowser() or configureNode()
81
+ getRepoInfo: async (_settings) => void 0,
82
+ getPastNAncestors: async () => [],
83
+ getEnv: (_name) => void 0,
84
+ getCallerLocation: () => void 0,
85
+ newAsyncLocalStorage: () => new DefaultAsyncLocalStorage(),
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ newTracingChannel: (_nameOrChannels) => new DefaultTracingChannel(),
88
+ processOn: (_0, _1) => {
89
+ },
90
+ basename: (filepath) => filepath.split(/[\\/]/).pop() || filepath,
91
+ writeln: (text) => console.log(text)
92
+ };
93
+ var isomorph_default = iso;
94
+
95
+ // src/instrumentation/core/channel-definitions.ts
96
+ function channel(spec) {
97
+ return spec;
98
+ }
99
+ function defineChannels(pkg, channels) {
100
+ return Object.fromEntries(
101
+ Object.entries(channels).map(([key, spec]) => {
102
+ const fullChannelName = `orchestrion:${pkg}:${spec.channelName}`;
103
+ if (spec.kind === "async") {
104
+ const asyncSpec = spec;
105
+ const tracingChannel2 = () => isomorph_default.newTracingChannel(
106
+ fullChannelName
107
+ );
108
+ return [
109
+ key,
110
+ {
111
+ ...asyncSpec,
112
+ tracingChannel: tracingChannel2,
113
+ tracePromise: (fn, context) => tracingChannel2().tracePromise(
114
+ fn,
115
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
116
+ context
117
+ )
118
+ }
119
+ ];
120
+ }
121
+ const syncSpec = spec;
122
+ const tracingChannel = () => isomorph_default.newTracingChannel(
123
+ fullChannelName
124
+ );
125
+ return [
126
+ key,
127
+ {
128
+ ...syncSpec,
129
+ tracingChannel,
130
+ traceSync: (fn, context) => tracingChannel().traceSync(
131
+ fn,
132
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
133
+ context
134
+ )
135
+ }
136
+ ];
137
+ })
138
+ );
139
+ }
140
+
141
+ // src/instrumentation/plugins/openai-channels.ts
142
+ var openAIChannels = defineChannels("openai", {
143
+ chatCompletionsCreate: channel({
144
+ channelName: "chat.completions.create",
145
+ kind: "async"
146
+ }),
147
+ embeddingsCreate: channel({
148
+ channelName: "embeddings.create",
149
+ kind: "async"
150
+ }),
151
+ betaChatCompletionsParse: channel({
152
+ channelName: "beta.chat.completions.parse",
153
+ kind: "async"
154
+ }),
155
+ betaChatCompletionsStream: channel({
156
+ channelName: "beta.chat.completions.stream",
157
+ kind: "sync-stream"
158
+ }),
159
+ moderationsCreate: channel({
160
+ channelName: "moderations.create",
161
+ kind: "async"
162
+ }),
163
+ responsesCreate: channel({
164
+ channelName: "responses.create",
165
+ kind: "async"
166
+ }),
167
+ responsesStream: channel({
168
+ channelName: "responses.stream",
169
+ kind: "sync-stream"
170
+ }),
171
+ responsesParse: channel({
172
+ channelName: "responses.parse",
173
+ kind: "async"
174
+ })
175
+ });
176
+
45
177
  // src/auto-instrumentations/configs/openai.ts
46
178
  var openaiConfigs = [
47
179
  // Chat Completions
48
180
  {
49
- channelName: "chat.completions.create",
181
+ channelName: openAIChannels.chatCompletionsCreate.channelName,
50
182
  module: {
51
183
  name: "openai",
52
- versionRange: ">=4.0.0",
184
+ versionRange: ">=4.0.0 <5.0.0",
53
185
  filePath: "resources/chat/completions.mjs"
54
186
  },
55
187
  functionQuery: {
@@ -58,9 +190,35 @@ var openaiConfigs = [
58
190
  kind: "Async"
59
191
  }
60
192
  },
193
+ {
194
+ channelName: openAIChannels.chatCompletionsCreate.channelName,
195
+ module: {
196
+ name: "openai",
197
+ versionRange: ">=4.0.0 <5.0.0",
198
+ filePath: "resources/chat/completions/completions.mjs"
199
+ },
200
+ functionQuery: {
201
+ className: "Completions",
202
+ methodName: "create",
203
+ kind: "Async"
204
+ }
205
+ },
206
+ {
207
+ channelName: openAIChannels.chatCompletionsCreate.channelName,
208
+ module: {
209
+ name: "openai",
210
+ versionRange: ">=5.0.0",
211
+ filePath: "resources/chat/completions/completions.mjs"
212
+ },
213
+ functionQuery: {
214
+ className: "Completions",
215
+ methodName: "create",
216
+ kind: "Async"
217
+ }
218
+ },
61
219
  // Embeddings
62
220
  {
63
- channelName: "embeddings.create",
221
+ channelName: openAIChannels.embeddingsCreate.channelName,
64
222
  module: {
65
223
  name: "openai",
66
224
  versionRange: ">=4.0.0",
@@ -74,10 +232,10 @@ var openaiConfigs = [
74
232
  },
75
233
  // Beta Chat Completions Parse
76
234
  {
77
- channelName: "beta.chat.completions.parse",
235
+ channelName: openAIChannels.betaChatCompletionsParse.channelName,
78
236
  module: {
79
237
  name: "openai",
80
- versionRange: ">=4.0.0",
238
+ versionRange: ">=4.0.0 <5.0.0",
81
239
  filePath: "resources/beta/chat/completions.mjs"
82
240
  },
83
241
  functionQuery: {
@@ -86,9 +244,22 @@ var openaiConfigs = [
86
244
  kind: "Async"
87
245
  }
88
246
  },
247
+ {
248
+ channelName: openAIChannels.betaChatCompletionsParse.channelName,
249
+ module: {
250
+ name: "openai",
251
+ versionRange: ">=5.0.0",
252
+ filePath: "resources/chat/completions/completions.mjs"
253
+ },
254
+ functionQuery: {
255
+ className: "Completions",
256
+ methodName: "parse",
257
+ kind: "Async"
258
+ }
259
+ },
89
260
  // Moderations
90
261
  {
91
- channelName: "moderations.create",
262
+ channelName: openAIChannels.moderationsCreate.channelName,
92
263
  module: {
93
264
  name: "openai",
94
265
  versionRange: ">=4.0.0",
@@ -102,10 +273,10 @@ var openaiConfigs = [
102
273
  },
103
274
  // Beta Chat Completions Stream
104
275
  {
105
- channelName: "beta.chat.completions.stream",
276
+ channelName: openAIChannels.betaChatCompletionsStream.channelName,
106
277
  module: {
107
278
  name: "openai",
108
- versionRange: ">=4.0.0",
279
+ versionRange: ">=4.0.0 <5.0.0",
109
280
  filePath: "resources/beta/chat/completions.mjs"
110
281
  },
111
282
  functionQuery: {
@@ -114,9 +285,22 @@ var openaiConfigs = [
114
285
  kind: "Sync"
115
286
  }
116
287
  },
288
+ {
289
+ channelName: openAIChannels.betaChatCompletionsStream.channelName,
290
+ module: {
291
+ name: "openai",
292
+ versionRange: ">=5.0.0",
293
+ filePath: "resources/chat/completions/completions.mjs"
294
+ },
295
+ functionQuery: {
296
+ className: "Completions",
297
+ methodName: "stream",
298
+ kind: "Sync"
299
+ }
300
+ },
117
301
  // Responses API (v4.87.0+)
118
302
  {
119
- channelName: "responses.create",
303
+ channelName: openAIChannels.responsesCreate.channelName,
120
304
  module: {
121
305
  name: "openai",
122
306
  versionRange: ">=4.87.0",
@@ -129,7 +313,7 @@ var openaiConfigs = [
129
313
  }
130
314
  },
131
315
  {
132
- channelName: "responses.stream",
316
+ channelName: openAIChannels.responsesStream.channelName,
133
317
  module: {
134
318
  name: "openai",
135
319
  versionRange: ">=4.87.0",
@@ -142,7 +326,7 @@ var openaiConfigs = [
142
326
  }
143
327
  },
144
328
  {
145
- channelName: "responses.parse",
329
+ channelName: openAIChannels.responsesParse.channelName,
146
330
  module: {
147
331
  name: "openai",
148
332
  versionRange: ">=4.87.0",
@@ -156,15 +340,27 @@ var openaiConfigs = [
156
340
  }
157
341
  ];
158
342
 
343
+ // src/instrumentation/plugins/anthropic-channels.ts
344
+ var anthropicChannels = defineChannels("@anthropic-ai/sdk", {
345
+ messagesCreate: channel({
346
+ channelName: "messages.create",
347
+ kind: "async"
348
+ }),
349
+ betaMessagesCreate: channel({
350
+ channelName: "beta.messages.create",
351
+ kind: "async"
352
+ })
353
+ });
354
+
159
355
  // src/auto-instrumentations/configs/anthropic.ts
160
356
  var anthropicConfigs = [
161
357
  // Messages API - create (supports streaming via stream=true parameter)
162
358
  {
163
- channelName: "messages.create",
359
+ channelName: anthropicChannels.messagesCreate.channelName,
164
360
  module: {
165
361
  name: "@anthropic-ai/sdk",
166
362
  versionRange: ">=0.60.0",
167
- filePath: "resources/messages.mjs"
363
+ filePath: "resources/messages/messages.mjs"
168
364
  },
169
365
  functionQuery: {
170
366
  className: "Messages",
@@ -174,7 +370,7 @@ var anthropicConfigs = [
174
370
  },
175
371
  // Beta Messages API - create (supports streaming via stream=true parameter)
176
372
  {
177
- channelName: "beta.messages.create",
373
+ channelName: anthropicChannels.betaMessagesCreate.channelName,
178
374
  module: {
179
375
  name: "@anthropic-ai/sdk",
180
376
  versionRange: ">=0.60.0",
@@ -188,11 +384,39 @@ var anthropicConfigs = [
188
384
  }
189
385
  ];
190
386
 
387
+ // src/instrumentation/plugins/ai-sdk-channels.ts
388
+ var aiSDKChannels = defineChannels("ai", {
389
+ generateText: channel({
390
+ channelName: "generateText",
391
+ kind: "async"
392
+ }),
393
+ streamText: channel({
394
+ channelName: "streamText",
395
+ kind: "async"
396
+ }),
397
+ generateObject: channel({
398
+ channelName: "generateObject",
399
+ kind: "async"
400
+ }),
401
+ streamObject: channel({
402
+ channelName: "streamObject",
403
+ kind: "async"
404
+ }),
405
+ agentGenerate: channel({
406
+ channelName: "Agent.generate",
407
+ kind: "async"
408
+ }),
409
+ agentStream: channel({
410
+ channelName: "Agent.stream",
411
+ kind: "async"
412
+ })
413
+ });
414
+
191
415
  // src/auto-instrumentations/configs/ai-sdk.ts
192
416
  var aiSDKConfigs = [
193
417
  // generateText - async function
194
418
  {
195
- channelName: "generateText",
419
+ channelName: aiSDKChannels.generateText.channelName,
196
420
  module: {
197
421
  name: "ai",
198
422
  versionRange: ">=3.0.0",
@@ -205,7 +429,7 @@ var aiSDKConfigs = [
205
429
  },
206
430
  // streamText - async function
207
431
  {
208
- channelName: "streamText",
432
+ channelName: aiSDKChannels.streamText.channelName,
209
433
  module: {
210
434
  name: "ai",
211
435
  versionRange: ">=3.0.0",
@@ -218,7 +442,7 @@ var aiSDKConfigs = [
218
442
  },
219
443
  // generateObject - async function
220
444
  {
221
- channelName: "generateObject",
445
+ channelName: aiSDKChannels.generateObject.channelName,
222
446
  module: {
223
447
  name: "ai",
224
448
  versionRange: ">=3.0.0",
@@ -231,7 +455,7 @@ var aiSDKConfigs = [
231
455
  },
232
456
  // streamObject - async function
233
457
  {
234
- channelName: "streamObject",
458
+ channelName: aiSDKChannels.streamObject.channelName,
235
459
  module: {
236
460
  name: "ai",
237
461
  versionRange: ">=3.0.0",
@@ -244,7 +468,7 @@ var aiSDKConfigs = [
244
468
  },
245
469
  // Agent.generate - async method (v3-v5 only, Agent structure changed in v6)
246
470
  {
247
- channelName: "Agent.generate",
471
+ channelName: aiSDKChannels.agentGenerate.channelName,
248
472
  module: {
249
473
  name: "ai",
250
474
  versionRange: ">=3.0.0 <6.0.0",
@@ -258,7 +482,7 @@ var aiSDKConfigs = [
258
482
  },
259
483
  // Agent.stream - async method (v3-v5 only, Agent structure changed in v6)
260
484
  {
261
- channelName: "Agent.stream",
485
+ channelName: aiSDKChannels.agentStream.channelName,
262
486
  module: {
263
487
  name: "ai",
264
488
  versionRange: ">=3.0.0 <6.0.0",
@@ -272,11 +496,22 @@ var aiSDKConfigs = [
272
496
  }
273
497
  ];
274
498
 
499
+ // src/instrumentation/plugins/claude-agent-sdk-channels.ts
500
+ var claudeAgentSDKChannels = defineChannels(
501
+ "@anthropic-ai/claude-agent-sdk",
502
+ {
503
+ query: channel({
504
+ channelName: "query",
505
+ kind: "async"
506
+ })
507
+ }
508
+ );
509
+
275
510
  // src/auto-instrumentations/configs/claude-agent-sdk.ts
276
511
  var claudeAgentSDKConfigs = [
277
512
  // query - Main entry point for agent interactions (top-level exported async generator function)
278
513
  {
279
- channelName: "query",
514
+ channelName: claudeAgentSDKChannels.query.channelName,
280
515
  module: {
281
516
  name: "@anthropic-ai/claude-agent-sdk",
282
517
  versionRange: ">=0.1.0",
@@ -289,12 +524,24 @@ var claudeAgentSDKConfigs = [
289
524
  }
290
525
  ];
291
526
 
527
+ // src/instrumentation/plugins/google-genai-channels.ts
528
+ var googleGenAIChannels = defineChannels("@google/genai", {
529
+ generateContent: channel({
530
+ channelName: "models.generateContent",
531
+ kind: "async"
532
+ }),
533
+ generateContentStream: channel({
534
+ channelName: "models.generateContentStream",
535
+ kind: "async"
536
+ })
537
+ });
538
+
292
539
  // src/auto-instrumentations/configs/google-genai.ts
293
540
  var googleGenAIConfigs = [
294
541
  // Models.generateContentInternal - The actual class method (Node.js entry point)
295
542
  // Note: generateContent is an arrow function property that calls this internal method
296
543
  {
297
- channelName: "models.generateContent",
544
+ channelName: googleGenAIChannels.generateContent.channelName,
298
545
  module: {
299
546
  name: "@google/genai",
300
547
  versionRange: ">=1.0.0",
@@ -309,7 +556,7 @@ var googleGenAIConfigs = [
309
556
  // Models.generateContentStreamInternal - The actual class method (Node.js entry point)
310
557
  // Note: generateContentStream is an arrow function property that calls this internal method
311
558
  {
312
- channelName: "models.generateContentStream",
559
+ channelName: googleGenAIChannels.generateContentStream.channelName,
313
560
  module: {
314
561
  name: "@google/genai",
315
562
  versionRange: ">=1.0.0",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  unplugin
3
- } from "../chunk-OLOPGWTJ.mjs";
4
- import "../chunk-KVX7OFPD.mjs";
3
+ } from "../chunk-D5ZPIUEL.mjs";
4
+ import "../chunk-LVWWLUMN.mjs";
5
5
 
6
6
  // src/auto-instrumentations/bundler/vite.ts
7
7
  var vitePlugin = unplugin.vite;