braintrust 3.30.0 → 3.31.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 +4 -1
- package/dev/dist/index.d.ts +4 -1
- package/dev/dist/index.js +28 -7
- package/dev/dist/index.mjs +28 -7
- package/dist/apply-auto-instrumentation.js +216 -216
- package/dist/apply-auto-instrumentation.mjs +1 -1
- package/dist/auto-instrumentations/bundler/next.cjs +9 -3
- package/dist/auto-instrumentations/bundler/next.mjs +9 -3
- package/dist/auto-instrumentations/hook.mjs +3 -1
- package/dist/browser.d.mts +481 -478
- package/dist/browser.d.ts +481 -478
- package/dist/browser.js +30 -9
- package/dist/browser.mjs +30 -9
- package/dist/{chunk-2XDW3UCG.js → chunk-4AQGZS6X.js} +1 -1
- package/dist/{chunk-BU6SM54N.mjs → chunk-AJT4FR25.mjs} +17 -6
- package/dist/{chunk-N3JKQ3D3.mjs → chunk-CE3BLB2L.mjs} +1 -1
- package/dist/{chunk-TWCDSYJN.js → chunk-V32LW47Z.js} +535 -524
- package/dist/cli.js +29 -8
- package/dist/edge-light.js +30 -9
- package/dist/edge-light.mjs +30 -9
- package/dist/index.d.mts +481 -478
- package/dist/index.d.ts +481 -478
- package/dist/index.js +460 -450
- package/dist/index.mjs +15 -5
- package/dist/instrumentation/index.js +17 -6
- package/dist/instrumentation/index.mjs +17 -6
- package/dist/vitest-evals-reporter.js +16 -16
- package/dist/vitest-evals-reporter.mjs +2 -2
- package/dist/workerd.js +30 -9
- package/dist/workerd.mjs +30 -9
- package/package.json +1 -1
package/dev/dist/index.d.mts
CHANGED
|
@@ -520,6 +520,9 @@ interface Score {
|
|
|
520
520
|
*/
|
|
521
521
|
error?: unknown;
|
|
522
522
|
}
|
|
523
|
+
type SingleScore = Omit<Score, "name"> & {
|
|
524
|
+
name?: string;
|
|
525
|
+
};
|
|
523
526
|
|
|
524
527
|
declare const spanComponentsV4Schema: z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
|
|
525
528
|
object_type: z.ZodNativeEnum<typeof SpanObjectTypeV3>;
|
|
@@ -15436,7 +15439,7 @@ type EvalScorerArgs<Input, Output, Expected, Metadata extends BaseMetadata = Def
|
|
|
15436
15439
|
output: Output;
|
|
15437
15440
|
trace?: Trace;
|
|
15438
15441
|
};
|
|
15439
|
-
type OneOrMoreScores =
|
|
15442
|
+
type OneOrMoreScores = SingleScore | number | null | Array<Score>;
|
|
15440
15443
|
type EvalScorer<Input, Output, Expected, Metadata extends BaseMetadata = DefaultMetadataType> = (args: EvalScorerArgs<Input, Output, Expected, Metadata>) => OneOrMoreScores | Promise<OneOrMoreScores>;
|
|
15441
15444
|
type OneOrMoreClassifications = Classification | Classification[] | null;
|
|
15442
15445
|
type EvalClassifier<Input, Output, Expected, Metadata extends BaseMetadata = DefaultMetadataType> = (args: EvalScorerArgs<Input, Output, Expected, Metadata>) => OneOrMoreClassifications | Promise<OneOrMoreClassifications>;
|
package/dev/dist/index.d.ts
CHANGED
|
@@ -520,6 +520,9 @@ interface Score {
|
|
|
520
520
|
*/
|
|
521
521
|
error?: unknown;
|
|
522
522
|
}
|
|
523
|
+
type SingleScore = Omit<Score, "name"> & {
|
|
524
|
+
name?: string;
|
|
525
|
+
};
|
|
523
526
|
|
|
524
527
|
declare const spanComponentsV4Schema: z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
|
|
525
528
|
object_type: z.ZodNativeEnum<typeof SpanObjectTypeV3>;
|
|
@@ -15436,7 +15439,7 @@ type EvalScorerArgs<Input, Output, Expected, Metadata extends BaseMetadata = Def
|
|
|
15436
15439
|
output: Output;
|
|
15437
15440
|
trace?: Trace;
|
|
15438
15441
|
};
|
|
15439
|
-
type OneOrMoreScores =
|
|
15442
|
+
type OneOrMoreScores = SingleScore | number | null | Array<Score>;
|
|
15440
15443
|
type EvalScorer<Input, Output, Expected, Metadata extends BaseMetadata = DefaultMetadataType> = (args: EvalScorerArgs<Input, Output, Expected, Metadata>) => OneOrMoreScores | Promise<OneOrMoreScores>;
|
|
15441
15444
|
type OneOrMoreClassifications = Classification | Classification[] | null;
|
|
15442
15445
|
type EvalClassifier<Input, Output, Expected, Metadata extends BaseMetadata = DefaultMetadataType> = (args: EvalScorerArgs<Input, Output, Expected, Metadata>) => OneOrMoreClassifications | Promise<OneOrMoreClassifications>;
|
package/dev/dist/index.js
CHANGED
|
@@ -4118,6 +4118,7 @@ var ProjectSettings = _v3.z.union([
|
|
|
4118
4118
|
]),
|
|
4119
4119
|
disable_realtime_queries: _v3.z.union([_v3.z.boolean(), _v3.z.null()]),
|
|
4120
4120
|
monitor_charts_use_metrics_start: _v3.z.union([_v3.z.boolean(), _v3.z.null()]),
|
|
4121
|
+
blind_reviews: _v3.z.union([_v3.z.boolean(), _v3.z.null()]),
|
|
4121
4122
|
default_preprocessor: NullableSavedFunctionId
|
|
4122
4123
|
}).partial(),
|
|
4123
4124
|
_v3.z.null()
|
|
@@ -4179,6 +4180,7 @@ var WindowedAutomationConfig = _v3.z.object({
|
|
|
4179
4180
|
auto_approve_tools: _v3.z.array(_v3.z.string().min(1)).optional().default([]),
|
|
4180
4181
|
harness: _v3.z.enum(["native", "codex", "claude-code"]).optional(),
|
|
4181
4182
|
model: _v3.z.string().min(1).optional(),
|
|
4183
|
+
endpoint_name: _v3.z.string().min(1).optional(),
|
|
4182
4184
|
reasoning_effort: _v3.z.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]).optional()
|
|
4183
4185
|
}).optional(),
|
|
4184
4186
|
actions: _v3.z.array(
|
|
@@ -5972,7 +5974,7 @@ var INSTRUMENTATION_NAMES = {
|
|
|
5972
5974
|
var INTERNAL_SPAN_INSTRUMENTATION_NAME = /* @__PURE__ */ Symbol.for(
|
|
5973
5975
|
"braintrust.spanInstrumentationName"
|
|
5974
5976
|
);
|
|
5975
|
-
var SDK_VERSION = true ? "3.
|
|
5977
|
+
var SDK_VERSION = true ? "3.31.0" : "0.0.0";
|
|
5976
5978
|
function withSpanInstrumentationName(args, instrumentationName) {
|
|
5977
5979
|
return {
|
|
5978
5980
|
...args,
|
|
@@ -19197,6 +19199,12 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19197
19199
|
if (!activeEntry) {
|
|
19198
19200
|
return result;
|
|
19199
19201
|
}
|
|
19202
|
+
const executionOptions = args[1];
|
|
19203
|
+
const toolCallId = isObject(executionOptions) ? executionOptions.toolCallId : void 0;
|
|
19204
|
+
const toolInput = {
|
|
19205
|
+
input: serializeToolExecutionInput(args),
|
|
19206
|
+
...typeof toolCallId === "string" ? { metadata: { toolCallId } } : {}
|
|
19207
|
+
};
|
|
19200
19208
|
if (isAsyncGenerator(result)) {
|
|
19201
19209
|
return (async function* () {
|
|
19202
19210
|
const span = activeEntry.parentSpan.startSpan(
|
|
@@ -19210,7 +19218,7 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19210
19218
|
INSTRUMENTATION_NAMES.AI_SDK
|
|
19211
19219
|
)
|
|
19212
19220
|
);
|
|
19213
|
-
span.log(
|
|
19221
|
+
span.log(toolInput);
|
|
19214
19222
|
try {
|
|
19215
19223
|
let lastValue;
|
|
19216
19224
|
for await (const value of result) {
|
|
@@ -19228,7 +19236,7 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19228
19236
|
}
|
|
19229
19237
|
return activeEntry.parentSpan.traced(
|
|
19230
19238
|
async (span) => {
|
|
19231
|
-
span.log(
|
|
19239
|
+
span.log(toolInput);
|
|
19232
19240
|
const awaitedResult = await result;
|
|
19233
19241
|
span.log({ output: awaitedResult });
|
|
19234
19242
|
return awaitedResult;
|
|
@@ -33350,14 +33358,17 @@ function getMetricsFromResponse(response) {
|
|
|
33350
33358
|
if (!isRecord(usageMetadata)) {
|
|
33351
33359
|
continue;
|
|
33352
33360
|
}
|
|
33353
|
-
const inputTokenDetails = usageMetadata.input_token_details;
|
|
33361
|
+
const inputTokenDetails = isRecord(usageMetadata.input_token_details) ? usageMetadata.input_token_details : {};
|
|
33354
33362
|
const outputTokenDetails = usageMetadata.output_token_details;
|
|
33355
33363
|
return normalizeTokenMetrics({
|
|
33356
33364
|
total_tokens: usageMetadata.total_tokens,
|
|
33357
33365
|
prompt_tokens: usageMetadata.input_tokens,
|
|
33358
33366
|
completion_tokens: usageMetadata.output_tokens,
|
|
33359
|
-
|
|
33360
|
-
|
|
33367
|
+
// Prefer TTL-specific cache writes over the aggregate when available.
|
|
33368
|
+
prompt_cache_creation_tokens: inputTokenDetails.ephemeral_5m_input_tokens == null && inputTokenDetails.ephemeral_1h_input_tokens == null ? inputTokenDetails.cache_creation : void 0,
|
|
33369
|
+
prompt_cache_creation_5m_tokens: inputTokenDetails.ephemeral_5m_input_tokens,
|
|
33370
|
+
prompt_cache_creation_1h_tokens: inputTokenDetails.ephemeral_1h_input_tokens,
|
|
33371
|
+
prompt_cached_tokens: inputTokenDetails.cache_read,
|
|
33361
33372
|
completion_reasoning_tokens: isRecord(outputTokenDetails) ? outputTokenDetails.reasoning : void 0
|
|
33362
33373
|
});
|
|
33363
33374
|
}
|
|
@@ -39371,19 +39382,29 @@ function buildSpanScores(results) {
|
|
|
39371
39382
|
function _internalPrepareEvaluatorScore(scoreValue, name) {
|
|
39372
39383
|
if (scoreValue === null) return { results: null };
|
|
39373
39384
|
if (Array.isArray(scoreValue)) {
|
|
39385
|
+
const names = /* @__PURE__ */ new Set();
|
|
39374
39386
|
for (const score of scoreValue) {
|
|
39375
39387
|
if (!(typeof score === "object" && !isEmpty2(score))) {
|
|
39376
39388
|
throw new Error(
|
|
39377
39389
|
`When returning an array of scores, each score must be a non-empty object. Got: ${JSON.stringify(score)}`
|
|
39378
39390
|
);
|
|
39379
39391
|
}
|
|
39392
|
+
if (typeof score.name !== "string") {
|
|
39393
|
+
throw new Error(
|
|
39394
|
+
`When returning an array of scores, each score must have a name. Got: ${JSON.stringify(score)}`
|
|
39395
|
+
);
|
|
39396
|
+
}
|
|
39397
|
+
if (names.has(score.name)) {
|
|
39398
|
+
throw new Error(`Duplicate score name '${score.name}' in score array`);
|
|
39399
|
+
}
|
|
39400
|
+
names.add(score.name);
|
|
39380
39401
|
}
|
|
39381
39402
|
}
|
|
39382
39403
|
let results;
|
|
39383
39404
|
if (Array.isArray(scoreValue)) {
|
|
39384
39405
|
results = scoreValue;
|
|
39385
39406
|
} else if (typeof scoreValue === "object" && !isEmpty2(scoreValue)) {
|
|
39386
|
-
results = [scoreValue];
|
|
39407
|
+
results = [{ ...scoreValue, name: _nullishCoalesce(scoreValue.name, () => ( name)) }];
|
|
39387
39408
|
} else {
|
|
39388
39409
|
results = [{ name, score: scoreValue }];
|
|
39389
39410
|
}
|
package/dev/dist/index.mjs
CHANGED
|
@@ -4118,6 +4118,7 @@ var ProjectSettings = z6.union([
|
|
|
4118
4118
|
]),
|
|
4119
4119
|
disable_realtime_queries: z6.union([z6.boolean(), z6.null()]),
|
|
4120
4120
|
monitor_charts_use_metrics_start: z6.union([z6.boolean(), z6.null()]),
|
|
4121
|
+
blind_reviews: z6.union([z6.boolean(), z6.null()]),
|
|
4121
4122
|
default_preprocessor: NullableSavedFunctionId
|
|
4122
4123
|
}).partial(),
|
|
4123
4124
|
z6.null()
|
|
@@ -4179,6 +4180,7 @@ var WindowedAutomationConfig = z6.object({
|
|
|
4179
4180
|
auto_approve_tools: z6.array(z6.string().min(1)).optional().default([]),
|
|
4180
4181
|
harness: z6.enum(["native", "codex", "claude-code"]).optional(),
|
|
4181
4182
|
model: z6.string().min(1).optional(),
|
|
4183
|
+
endpoint_name: z6.string().min(1).optional(),
|
|
4182
4184
|
reasoning_effort: z6.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]).optional()
|
|
4183
4185
|
}).optional(),
|
|
4184
4186
|
actions: z6.array(
|
|
@@ -5972,7 +5974,7 @@ var INSTRUMENTATION_NAMES = {
|
|
|
5972
5974
|
var INTERNAL_SPAN_INSTRUMENTATION_NAME = /* @__PURE__ */ Symbol.for(
|
|
5973
5975
|
"braintrust.spanInstrumentationName"
|
|
5974
5976
|
);
|
|
5975
|
-
var SDK_VERSION = true ? "3.
|
|
5977
|
+
var SDK_VERSION = true ? "3.31.0" : "0.0.0";
|
|
5976
5978
|
function withSpanInstrumentationName(args, instrumentationName) {
|
|
5977
5979
|
return {
|
|
5978
5980
|
...args,
|
|
@@ -19197,6 +19199,12 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19197
19199
|
if (!activeEntry) {
|
|
19198
19200
|
return result;
|
|
19199
19201
|
}
|
|
19202
|
+
const executionOptions = args[1];
|
|
19203
|
+
const toolCallId = isObject(executionOptions) ? executionOptions.toolCallId : void 0;
|
|
19204
|
+
const toolInput = {
|
|
19205
|
+
input: serializeToolExecutionInput(args),
|
|
19206
|
+
...typeof toolCallId === "string" ? { metadata: { toolCallId } } : {}
|
|
19207
|
+
};
|
|
19200
19208
|
if (isAsyncGenerator(result)) {
|
|
19201
19209
|
return (async function* () {
|
|
19202
19210
|
const span = activeEntry.parentSpan.startSpan(
|
|
@@ -19210,7 +19218,7 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19210
19218
|
INSTRUMENTATION_NAMES.AI_SDK
|
|
19211
19219
|
)
|
|
19212
19220
|
);
|
|
19213
|
-
span.log(
|
|
19221
|
+
span.log(toolInput);
|
|
19214
19222
|
try {
|
|
19215
19223
|
let lastValue;
|
|
19216
19224
|
for await (const value of result) {
|
|
@@ -19228,7 +19236,7 @@ function prepareAISDKChildTracing(params, self, parentSpan, denyOutputPaths, aiS
|
|
|
19228
19236
|
}
|
|
19229
19237
|
return activeEntry.parentSpan.traced(
|
|
19230
19238
|
async (span) => {
|
|
19231
|
-
span.log(
|
|
19239
|
+
span.log(toolInput);
|
|
19232
19240
|
const awaitedResult = await result;
|
|
19233
19241
|
span.log({ output: awaitedResult });
|
|
19234
19242
|
return awaitedResult;
|
|
@@ -33350,14 +33358,17 @@ function getMetricsFromResponse(response) {
|
|
|
33350
33358
|
if (!isRecord(usageMetadata)) {
|
|
33351
33359
|
continue;
|
|
33352
33360
|
}
|
|
33353
|
-
const inputTokenDetails = usageMetadata.input_token_details;
|
|
33361
|
+
const inputTokenDetails = isRecord(usageMetadata.input_token_details) ? usageMetadata.input_token_details : {};
|
|
33354
33362
|
const outputTokenDetails = usageMetadata.output_token_details;
|
|
33355
33363
|
return normalizeTokenMetrics({
|
|
33356
33364
|
total_tokens: usageMetadata.total_tokens,
|
|
33357
33365
|
prompt_tokens: usageMetadata.input_tokens,
|
|
33358
33366
|
completion_tokens: usageMetadata.output_tokens,
|
|
33359
|
-
|
|
33360
|
-
|
|
33367
|
+
// Prefer TTL-specific cache writes over the aggregate when available.
|
|
33368
|
+
prompt_cache_creation_tokens: inputTokenDetails.ephemeral_5m_input_tokens == null && inputTokenDetails.ephemeral_1h_input_tokens == null ? inputTokenDetails.cache_creation : void 0,
|
|
33369
|
+
prompt_cache_creation_5m_tokens: inputTokenDetails.ephemeral_5m_input_tokens,
|
|
33370
|
+
prompt_cache_creation_1h_tokens: inputTokenDetails.ephemeral_1h_input_tokens,
|
|
33371
|
+
prompt_cached_tokens: inputTokenDetails.cache_read,
|
|
33361
33372
|
completion_reasoning_tokens: isRecord(outputTokenDetails) ? outputTokenDetails.reasoning : void 0
|
|
33362
33373
|
});
|
|
33363
33374
|
}
|
|
@@ -39371,19 +39382,29 @@ function buildSpanScores(results) {
|
|
|
39371
39382
|
function _internalPrepareEvaluatorScore(scoreValue, name) {
|
|
39372
39383
|
if (scoreValue === null) return { results: null };
|
|
39373
39384
|
if (Array.isArray(scoreValue)) {
|
|
39385
|
+
const names = /* @__PURE__ */ new Set();
|
|
39374
39386
|
for (const score of scoreValue) {
|
|
39375
39387
|
if (!(typeof score === "object" && !isEmpty2(score))) {
|
|
39376
39388
|
throw new Error(
|
|
39377
39389
|
`When returning an array of scores, each score must be a non-empty object. Got: ${JSON.stringify(score)}`
|
|
39378
39390
|
);
|
|
39379
39391
|
}
|
|
39392
|
+
if (typeof score.name !== "string") {
|
|
39393
|
+
throw new Error(
|
|
39394
|
+
`When returning an array of scores, each score must have a name. Got: ${JSON.stringify(score)}`
|
|
39395
|
+
);
|
|
39396
|
+
}
|
|
39397
|
+
if (names.has(score.name)) {
|
|
39398
|
+
throw new Error(`Duplicate score name '${score.name}' in score array`);
|
|
39399
|
+
}
|
|
39400
|
+
names.add(score.name);
|
|
39380
39401
|
}
|
|
39381
39402
|
}
|
|
39382
39403
|
let results;
|
|
39383
39404
|
if (Array.isArray(scoreValue)) {
|
|
39384
39405
|
results = scoreValue;
|
|
39385
39406
|
} else if (typeof scoreValue === "object" && !isEmpty2(scoreValue)) {
|
|
39386
|
-
results = [scoreValue];
|
|
39407
|
+
results = [{ ...scoreValue, name: scoreValue.name ?? name }];
|
|
39387
39408
|
} else {
|
|
39388
39409
|
results = [{ name, score: scoreValue }];
|
|
39389
39410
|
}
|