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