braintrust 3.2.0 → 3.3.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/dist/index.mjs CHANGED
@@ -5921,6 +5921,7 @@ function utf8ByteLength(value) {
5921
5921
  function now() {
5922
5922
  return (/* @__PURE__ */ new Date()).getTime();
5923
5923
  }
5924
+ var DEFAULT_FLUSH_BACKPRESSURE_BYTES = 10 * 1024 * 1024;
5924
5925
  var TestBackgroundLogger = class {
5925
5926
  items = [];
5926
5927
  maskingFunction = null;
@@ -5933,6 +5934,12 @@ var TestBackgroundLogger = class {
5933
5934
  async flush() {
5934
5935
  return Promise.resolve();
5935
5936
  }
5937
+ pendingFlushBytes() {
5938
+ return 0;
5939
+ }
5940
+ flushBackpressureBytes() {
5941
+ return DEFAULT_FLUSH_BACKPRESSURE_BYTES;
5942
+ }
5936
5943
  async drain() {
5937
5944
  const items = this.items;
5938
5945
  this.items = [];
@@ -5990,7 +5997,8 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5990
5997
  queueDropLoggingPeriod = 60;
5991
5998
  failedPublishPayloadsDir = void 0;
5992
5999
  allPublishPayloadsDir = void 0;
5993
- flushChunkSize = 25;
6000
+ _flushBackpressureBytes = DEFAULT_FLUSH_BACKPRESSURE_BYTES;
6001
+ _pendingBytes = 0;
5994
6002
  _disabled = false;
5995
6003
  queueDropLoggingState = {
5996
6004
  numDropped: 0,
@@ -6030,11 +6038,16 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6030
6038
  if (!isNaN(queueDropLoggingPeriodEnv)) {
6031
6039
  this.queueDropLoggingPeriod = queueDropLoggingPeriodEnv;
6032
6040
  }
6033
- const flushChunkSizeEnv = Number(
6034
- isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")
6041
+ if (isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")) {
6042
+ console.warn(
6043
+ "BRAINTRUST_LOG_FLUSH_CHUNK_SIZE is deprecated and no longer has any effect. Log flushing now sends all items at once and batches them automatically. This environment variable will be removed in a future major release."
6044
+ );
6045
+ }
6046
+ const flushBackpressureBytesEnv = Number(
6047
+ isomorph_default.getEnv("BRAINTRUST_FLUSH_BACKPRESSURE_BYTES")
6035
6048
  );
6036
- if (!isNaN(flushChunkSizeEnv) && flushChunkSizeEnv > 0) {
6037
- this.flushChunkSize = flushChunkSizeEnv;
6049
+ if (!isNaN(flushBackpressureBytesEnv) && flushBackpressureBytesEnv > 0) {
6050
+ this._flushBackpressureBytes = flushBackpressureBytesEnv;
6038
6051
  }
6039
6052
  const failedPublishPayloadsDirEnv = isomorph_default.getEnv(
6040
6053
  "BRAINTRUST_FAILED_PUBLISH_PAYLOADS_DIR"
@@ -6058,6 +6071,12 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6058
6071
  setMaskingFunction(maskingFunction) {
6059
6072
  this.maskingFunction = maskingFunction;
6060
6073
  }
6074
+ pendingFlushBytes() {
6075
+ return this._pendingBytes;
6076
+ }
6077
+ flushBackpressureBytes() {
6078
+ return this._flushBackpressureBytes;
6079
+ }
6061
6080
  log(items) {
6062
6081
  if (this._disabled) {
6063
6082
  return;
@@ -6120,14 +6139,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6120
6139
  if (wrappedItems.length === 0) {
6121
6140
  return;
6122
6141
  }
6123
- const chunkSize = Math.max(1, Math.min(batchSize, this.flushChunkSize));
6124
- let index = 0;
6125
- while (index < wrappedItems.length) {
6126
- const chunk = wrappedItems.slice(index, index + chunkSize);
6127
- await this.flushWrappedItemsChunk(chunk, batchSize);
6128
- index += chunk.length;
6129
- }
6130
- wrappedItems.length = 0;
6142
+ await this.flushWrappedItemsChunk(wrappedItems, batchSize);
6131
6143
  if (this.queue.length() > 0) {
6132
6144
  await this.flushOnce(args);
6133
6145
  }
@@ -6140,9 +6152,13 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6140
6152
  if (allItems.length === 0) {
6141
6153
  return;
6142
6154
  }
6143
- const allItemsWithMeta = allItems.map(
6144
- (item) => stringifyWithOverflowMeta(item)
6145
- );
6155
+ let chunkBytes = 0;
6156
+ const allItemsWithMeta = allItems.map((item) => {
6157
+ const withMeta = stringifyWithOverflowMeta(item);
6158
+ chunkBytes += withMeta.str.length;
6159
+ return withMeta;
6160
+ });
6161
+ this._pendingBytes += chunkBytes;
6146
6162
  const maxRequestSizeResult = await this.getMaxRequestSize();
6147
6163
  const batches = batchItems({
6148
6164
  items: allItemsWithMeta,
@@ -6161,6 +6177,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
6161
6177
  })()
6162
6178
  );
6163
6179
  const results = await Promise.all(postPromises);
6180
+ this._pendingBytes = Math.max(0, this._pendingBytes - chunkBytes);
6164
6181
  const failingResultErrors = results.map((r) => r.type === "success" ? void 0 : r.value).filter((r) => r !== void 0);
6165
6182
  if (failingResultErrors.length) {
6166
6183
  throw new AggregateError(
@@ -12047,6 +12064,7 @@ __export(exports_exports, {
12047
12064
  promptDefinitionToPromptData: () => promptDefinitionToPromptData,
12048
12065
  promptDefinitionWithToolsSchema: () => promptDefinitionWithToolsSchema,
12049
12066
  registerOtelFlush: () => registerOtelFlush,
12067
+ registerSandbox: () => registerSandbox,
12050
12068
  registerTemplatePlugin: () => registerTemplatePlugin,
12051
12069
  renderMessage: () => renderMessage,
12052
12070
  renderPromptParams: () => renderPromptParams,
@@ -12083,6 +12101,99 @@ __export(exports_exports, {
12083
12101
  wrapVitest: () => wrapVitest
12084
12102
  });
12085
12103
 
12104
+ // src/sandbox.ts
12105
+ import { z as z9 } from "zod/v3";
12106
+ var SANDBOX_GROUP_NAME_METADATA_KEY = "_bt_sandbox_group_name";
12107
+ async function registerSandbox(options) {
12108
+ const state = options.state ?? _internalGetGlobalState();
12109
+ await state.login({
12110
+ apiKey: options.apiKey,
12111
+ appUrl: options.appUrl,
12112
+ orgName: options.orgName
12113
+ });
12114
+ const projectResponse = await state.appConn().post_json("api/project/register", {
12115
+ project_name: options.project,
12116
+ org_id: state.orgId
12117
+ });
12118
+ const projectId = projectResponse.project.id;
12119
+ if (!state.orgName) {
12120
+ throw new Error("Organization name is required to register sandbox evals");
12121
+ }
12122
+ const runtimeContext = {
12123
+ runtime: "node",
12124
+ version: process.version.slice(1)
12125
+ };
12126
+ const listResponse = await state.proxyConn().post(
12127
+ "function/sandbox-list",
12128
+ {
12129
+ sandbox_spec: {
12130
+ provider: options.sandbox.provider,
12131
+ snapshot_ref: options.sandbox.snapshotRef
12132
+ },
12133
+ entrypoints: options.entrypoints,
12134
+ project_id: projectId
12135
+ },
12136
+ {
12137
+ headers: {
12138
+ "x-bt-org-name": state.orgName
12139
+ }
12140
+ }
12141
+ );
12142
+ const evaluatorDefinitions = z9.record(z9.unknown()).parse(await listResponse.json());
12143
+ const functions = [];
12144
+ for (const [evalName, evaluatorDefinition] of Object.entries(
12145
+ evaluatorDefinitions
12146
+ )) {
12147
+ const functionName = evalName;
12148
+ const functionSlug = slugify(evalName, { lower: true, strict: true });
12149
+ const functionDef = {
12150
+ project_id: projectId,
12151
+ org_name: state.orgName,
12152
+ name: functionName,
12153
+ slug: functionSlug,
12154
+ function_type: "sandbox",
12155
+ function_data: {
12156
+ type: "code",
12157
+ data: {
12158
+ type: "bundle",
12159
+ runtime_context: runtimeContext,
12160
+ location: {
12161
+ type: "sandbox",
12162
+ sandbox_spec: {
12163
+ provider: options.sandbox.provider,
12164
+ snapshot_ref: options.sandbox.snapshotRef
12165
+ },
12166
+ entrypoints: options.entrypoints,
12167
+ eval_name: evalName,
12168
+ evaluator_definition: evaluatorDefinition
12169
+ },
12170
+ bundle_id: null,
12171
+ preview: null
12172
+ }
12173
+ },
12174
+ metadata: {
12175
+ ...options.metadata ?? {},
12176
+ [SANDBOX_GROUP_NAME_METADATA_KEY]: options.name
12177
+ },
12178
+ if_exists: options.ifExists ?? "replace"
12179
+ };
12180
+ if (options.description !== void 0) {
12181
+ functionDef.description = options.description;
12182
+ }
12183
+ const response = await state.apiConn().post_json("v1/function", functionDef);
12184
+ functions.push({
12185
+ evalName,
12186
+ id: response.id,
12187
+ name: response.name,
12188
+ slug: response.slug
12189
+ });
12190
+ }
12191
+ return {
12192
+ projectId,
12193
+ functions
12194
+ };
12195
+ }
12196
+
12086
12197
  // src/functions/invoke.ts
12087
12198
  async function invoke(args) {
12088
12199
  const {
@@ -18555,29 +18666,29 @@ var SimpleProgressReporter = class {
18555
18666
  };
18556
18667
 
18557
18668
  // src/eval-parameters.ts
18558
- import { z as z10 } from "zod/v3";
18669
+ import { z as z11 } from "zod/v3";
18559
18670
  import Ajv from "ajv";
18560
18671
 
18561
18672
  // src/prompt-schemas.ts
18562
- import { z as z9 } from "zod/v3";
18563
- var promptContentsSchema = z9.union([
18564
- z9.object({
18565
- prompt: z9.string()
18673
+ import { z as z10 } from "zod/v3";
18674
+ var promptContentsSchema = z10.union([
18675
+ z10.object({
18676
+ prompt: z10.string()
18566
18677
  }),
18567
- z9.object({
18568
- messages: z9.array(ChatCompletionMessageParam)
18678
+ z10.object({
18679
+ messages: z10.array(ChatCompletionMessageParam)
18569
18680
  })
18570
18681
  ]);
18571
18682
  var promptDefinitionSchema = promptContentsSchema.and(
18572
- z9.object({
18573
- model: z9.string(),
18683
+ z10.object({
18684
+ model: z10.string(),
18574
18685
  params: ModelParams.optional(),
18575
- templateFormat: z9.enum(["mustache", "nunjucks", "none"]).optional()
18686
+ templateFormat: z10.enum(["mustache", "nunjucks", "none"]).optional()
18576
18687
  })
18577
18688
  );
18578
18689
  var promptDefinitionWithToolsSchema = promptDefinitionSchema.and(
18579
- z9.object({
18580
- tools: z9.array(ToolFunctionDefinition).optional()
18690
+ z10.object({
18691
+ tools: z10.array(ToolFunctionDefinition).optional()
18581
18692
  })
18582
18693
  );
18583
18694
  function promptDefinitionToPromptData(promptDefinition, rawTools) {
@@ -18600,15 +18711,15 @@ function promptDefinitionToPromptData(promptDefinition, rawTools) {
18600
18711
  }
18601
18712
 
18602
18713
  // src/eval-parameters.ts
18603
- var evalParametersSchema = z10.record(
18604
- z10.string(),
18605
- z10.union([
18606
- z10.object({
18607
- type: z10.literal("prompt"),
18714
+ var evalParametersSchema = z11.record(
18715
+ z11.string(),
18716
+ z11.union([
18717
+ z11.object({
18718
+ type: z11.literal("prompt"),
18608
18719
  default: promptDefinitionWithToolsSchema.optional(),
18609
- description: z10.string().optional()
18720
+ description: z11.string().optional()
18610
18721
  }),
18611
- z10.instanceof(z10.ZodType)
18722
+ z11.instanceof(z11.ZodType)
18612
18723
  // For Zod schemas
18613
18724
  ])
18614
18725
  );
@@ -19227,7 +19338,8 @@ async function runEvaluatorInternal(experiment, evaluator, progressReporter, fil
19227
19338
  });
19228
19339
  } else {
19229
19340
  const result = await experiment.traced(callback, baseEvent);
19230
- if (evaluator.maxConcurrency !== void 0) {
19341
+ const bgLogger = experiment.loggingState.bgLogger();
19342
+ if (evaluator.maxConcurrency !== void 0 && bgLogger.pendingFlushBytes() >= bgLogger.flushBackpressureBytes()) {
19231
19343
  await experiment.flush();
19232
19344
  }
19233
19345
  return result;
@@ -19491,7 +19603,7 @@ var defaultReporter = {
19491
19603
  };
19492
19604
 
19493
19605
  // src/framework2.ts
19494
- import { z as z11 } from "zod/v3";
19606
+ import { z as z12 } from "zod/v3";
19495
19607
  var currentFilename = typeof __filename !== "undefined" ? __filename : "unknown";
19496
19608
  var ProjectBuilder = class {
19497
19609
  create(opts) {
@@ -19883,7 +19995,7 @@ var ProjectNameIdMap = class {
19883
19995
  const response = await _internalGetGlobalState().appConn().post_json("api/project/register", {
19884
19996
  project_name: projectName
19885
19997
  });
19886
- const result = z11.object({
19998
+ const result = z12.object({
19887
19999
  project: Project
19888
20000
  }).parse(response);
19889
20001
  const projectId = result.project.id;
@@ -19897,7 +20009,7 @@ var ProjectNameIdMap = class {
19897
20009
  const response = await _internalGetGlobalState().appConn().post_json("api/project/get", {
19898
20010
  id: projectId
19899
20011
  });
19900
- const result = z11.array(Project).nonempty().parse(response);
20012
+ const result = z12.array(Project).nonempty().parse(response);
19901
20013
  const projectName = result[0].name;
19902
20014
  this.idToName[projectId] = projectName;
19903
20015
  this.nameToId[projectName] = projectId;
@@ -19913,73 +20025,73 @@ var ProjectNameIdMap = class {
19913
20025
  };
19914
20026
 
19915
20027
  // dev/types.ts
19916
- import { z as z12 } from "zod/v3";
19917
- var evalBodySchema = z12.object({
19918
- name: z12.string(),
19919
- parameters: z12.record(z12.string(), z12.unknown()).nullish(),
20028
+ import { z as z13 } from "zod/v3";
20029
+ var evalBodySchema = z13.object({
20030
+ name: z13.string(),
20031
+ parameters: z13.record(z13.string(), z13.unknown()).nullish(),
19920
20032
  data: RunEval.shape.data,
19921
- scores: z12.array(
19922
- z12.object({
20033
+ scores: z13.array(
20034
+ z13.object({
19923
20035
  function_id: FunctionId,
19924
- name: z12.string()
20036
+ name: z13.string()
19925
20037
  })
19926
20038
  ).nullish(),
19927
- experiment_name: z12.string().nullish(),
19928
- project_id: z12.string().nullish(),
20039
+ experiment_name: z13.string().nullish(),
20040
+ project_id: z13.string().nullish(),
19929
20041
  parent: InvokeParent.optional(),
19930
- stream: z12.boolean().optional()
20042
+ stream: z13.boolean().optional()
19931
20043
  });
19932
- var staticParametersSchema = z12.record(
19933
- z12.string(),
19934
- z12.union([
19935
- z12.object({
19936
- type: z12.literal("prompt"),
20044
+ var staticParametersSchema = z13.record(
20045
+ z13.string(),
20046
+ z13.union([
20047
+ z13.object({
20048
+ type: z13.literal("prompt"),
19937
20049
  default: PromptData.optional(),
19938
- description: z12.string().optional()
20050
+ description: z13.string().optional()
19939
20051
  }),
19940
- z12.object({
19941
- type: z12.literal("data"),
19942
- schema: z12.record(z12.unknown()),
19943
- default: z12.unknown().optional(),
19944
- description: z12.string().optional()
20052
+ z13.object({
20053
+ type: z13.literal("data"),
20054
+ schema: z13.record(z13.unknown()),
20055
+ default: z13.unknown().optional(),
20056
+ description: z13.string().optional()
19945
20057
  })
19946
20058
  ])
19947
20059
  );
19948
- var parametersSchema = z12.object({
19949
- type: z12.literal("object"),
19950
- properties: z12.record(z12.string(), z12.record(z12.unknown())),
19951
- required: z12.array(z12.string()).optional(),
19952
- additionalProperties: z12.boolean().optional()
20060
+ var parametersSchema = z13.object({
20061
+ type: z13.literal("object"),
20062
+ properties: z13.record(z13.string(), z13.record(z13.unknown())),
20063
+ required: z13.array(z13.string()).optional(),
20064
+ additionalProperties: z13.boolean().optional()
19953
20065
  });
19954
- var parametersSourceSchema = z12.object({
19955
- parametersId: z12.string().optional(),
19956
- slug: z12.string(),
19957
- name: z12.string(),
19958
- projectId: z12.string().optional(),
19959
- version: z12.string().optional()
20066
+ var parametersSourceSchema = z13.object({
20067
+ parametersId: z13.string().optional(),
20068
+ slug: z13.string(),
20069
+ name: z13.string(),
20070
+ projectId: z13.string().optional(),
20071
+ version: z13.string().optional()
19960
20072
  });
19961
- var parametersContainerSchema = z12.object({
19962
- type: z12.literal("braintrust.parameters"),
20073
+ var parametersContainerSchema = z13.object({
20074
+ type: z13.literal("braintrust.parameters"),
19963
20075
  schema: parametersSchema,
19964
20076
  source: parametersSourceSchema
19965
20077
  });
19966
- var staticParametersContainerSchema = z12.object({
19967
- type: z12.literal("braintrust.staticParameters"),
20078
+ var staticParametersContainerSchema = z13.object({
20079
+ type: z13.literal("braintrust.staticParameters"),
19968
20080
  schema: staticParametersSchema,
19969
- source: z12.null()
20081
+ source: z13.null()
19970
20082
  });
19971
- var serializedParametersContainerSchema = z12.union([
20083
+ var serializedParametersContainerSchema = z13.union([
19972
20084
  parametersContainerSchema,
19973
20085
  staticParametersContainerSchema,
19974
20086
  // keeping this type here since old versions of the SDK will still pass the unwrapped schema and we need to handle this in the app
19975
20087
  staticParametersSchema
19976
20088
  ]);
19977
- var evaluatorDefinitionSchema = z12.object({
20089
+ var evaluatorDefinitionSchema = z13.object({
19978
20090
  parameters: serializedParametersContainerSchema.optional(),
19979
- scores: z12.array(z12.object({ name: z12.string() })).optional()
20091
+ scores: z13.array(z13.object({ name: z13.string() })).optional()
19980
20092
  });
19981
- var evaluatorDefinitionsSchema = z12.record(
19982
- z12.string(),
20093
+ var evaluatorDefinitionsSchema = z13.record(
20094
+ z13.string(),
19983
20095
  evaluatorDefinitionSchema
19984
20096
  );
19985
20097
 
@@ -20083,6 +20195,7 @@ export {
20083
20195
  promptDefinitionToPromptData,
20084
20196
  promptDefinitionWithToolsSchema,
20085
20197
  registerOtelFlush,
20198
+ registerSandbox,
20086
20199
  registerTemplatePlugin,
20087
20200
  renderMessage,
20088
20201
  renderPromptParams,
@@ -5499,6 +5499,7 @@ function utf8ByteLength(value) {
5499
5499
  function now() {
5500
5500
  return (/* @__PURE__ */ new Date()).getTime();
5501
5501
  }
5502
+ var DEFAULT_FLUSH_BACKPRESSURE_BYTES = 10 * 1024 * 1024;
5502
5503
  var BACKGROUND_LOGGER_BASE_SLEEP_TIME_S = 1;
5503
5504
  var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5504
5505
  apiConn;
@@ -5517,7 +5518,8 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5517
5518
  queueDropLoggingPeriod = 60;
5518
5519
  failedPublishPayloadsDir = void 0;
5519
5520
  allPublishPayloadsDir = void 0;
5520
- flushChunkSize = 25;
5521
+ _flushBackpressureBytes = DEFAULT_FLUSH_BACKPRESSURE_BYTES;
5522
+ _pendingBytes = 0;
5521
5523
  _disabled = false;
5522
5524
  queueDropLoggingState = {
5523
5525
  numDropped: 0,
@@ -5557,11 +5559,16 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5557
5559
  if (!isNaN(queueDropLoggingPeriodEnv)) {
5558
5560
  this.queueDropLoggingPeriod = queueDropLoggingPeriodEnv;
5559
5561
  }
5560
- const flushChunkSizeEnv = Number(
5561
- isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")
5562
+ if (isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")) {
5563
+ console.warn(
5564
+ "BRAINTRUST_LOG_FLUSH_CHUNK_SIZE is deprecated and no longer has any effect. Log flushing now sends all items at once and batches them automatically. This environment variable will be removed in a future major release."
5565
+ );
5566
+ }
5567
+ const flushBackpressureBytesEnv = Number(
5568
+ isomorph_default.getEnv("BRAINTRUST_FLUSH_BACKPRESSURE_BYTES")
5562
5569
  );
5563
- if (!isNaN(flushChunkSizeEnv) && flushChunkSizeEnv > 0) {
5564
- this.flushChunkSize = flushChunkSizeEnv;
5570
+ if (!isNaN(flushBackpressureBytesEnv) && flushBackpressureBytesEnv > 0) {
5571
+ this._flushBackpressureBytes = flushBackpressureBytesEnv;
5565
5572
  }
5566
5573
  const failedPublishPayloadsDirEnv = isomorph_default.getEnv(
5567
5574
  "BRAINTRUST_FAILED_PUBLISH_PAYLOADS_DIR"
@@ -5585,6 +5592,12 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5585
5592
  setMaskingFunction(maskingFunction) {
5586
5593
  this.maskingFunction = maskingFunction;
5587
5594
  }
5595
+ pendingFlushBytes() {
5596
+ return this._pendingBytes;
5597
+ }
5598
+ flushBackpressureBytes() {
5599
+ return this._flushBackpressureBytes;
5600
+ }
5588
5601
  log(items) {
5589
5602
  if (this._disabled) {
5590
5603
  return;
@@ -5647,14 +5660,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5647
5660
  if (wrappedItems.length === 0) {
5648
5661
  return;
5649
5662
  }
5650
- const chunkSize = Math.max(1, Math.min(batchSize, this.flushChunkSize));
5651
- let index = 0;
5652
- while (index < wrappedItems.length) {
5653
- const chunk = wrappedItems.slice(index, index + chunkSize);
5654
- await this.flushWrappedItemsChunk(chunk, batchSize);
5655
- index += chunk.length;
5656
- }
5657
- wrappedItems.length = 0;
5663
+ await this.flushWrappedItemsChunk(wrappedItems, batchSize);
5658
5664
  if (this.queue.length() > 0) {
5659
5665
  await this.flushOnce(args);
5660
5666
  }
@@ -5667,9 +5673,13 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5667
5673
  if (allItems.length === 0) {
5668
5674
  return;
5669
5675
  }
5670
- const allItemsWithMeta = allItems.map(
5671
- (item) => stringifyWithOverflowMeta(item)
5672
- );
5676
+ let chunkBytes = 0;
5677
+ const allItemsWithMeta = allItems.map((item) => {
5678
+ const withMeta = stringifyWithOverflowMeta(item);
5679
+ chunkBytes += withMeta.str.length;
5680
+ return withMeta;
5681
+ });
5682
+ this._pendingBytes += chunkBytes;
5673
5683
  const maxRequestSizeResult = await this.getMaxRequestSize();
5674
5684
  const batches = batchItems({
5675
5685
  items: allItemsWithMeta,
@@ -5688,6 +5698,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5688
5698
  })()
5689
5699
  );
5690
5700
  const results = await Promise.all(postPromises);
5701
+ this._pendingBytes = Math.max(0, this._pendingBytes - chunkBytes);
5691
5702
  const failingResultErrors = results.map((r) => r.type === "success" ? void 0 : r.value).filter((r) => r !== void 0);
5692
5703
  if (failingResultErrors.length) {
5693
5704
  throw new AggregateError(
@@ -5460,6 +5460,7 @@ function utf8ByteLength(value) {
5460
5460
  function now() {
5461
5461
  return (/* @__PURE__ */ new Date()).getTime();
5462
5462
  }
5463
+ var DEFAULT_FLUSH_BACKPRESSURE_BYTES = 10 * 1024 * 1024;
5463
5464
  var BACKGROUND_LOGGER_BASE_SLEEP_TIME_S = 1;
5464
5465
  var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5465
5466
  apiConn;
@@ -5478,7 +5479,8 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5478
5479
  queueDropLoggingPeriod = 60;
5479
5480
  failedPublishPayloadsDir = void 0;
5480
5481
  allPublishPayloadsDir = void 0;
5481
- flushChunkSize = 25;
5482
+ _flushBackpressureBytes = DEFAULT_FLUSH_BACKPRESSURE_BYTES;
5483
+ _pendingBytes = 0;
5482
5484
  _disabled = false;
5483
5485
  queueDropLoggingState = {
5484
5486
  numDropped: 0,
@@ -5518,11 +5520,16 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5518
5520
  if (!isNaN(queueDropLoggingPeriodEnv)) {
5519
5521
  this.queueDropLoggingPeriod = queueDropLoggingPeriodEnv;
5520
5522
  }
5521
- const flushChunkSizeEnv = Number(
5522
- isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")
5523
+ if (isomorph_default.getEnv("BRAINTRUST_LOG_FLUSH_CHUNK_SIZE")) {
5524
+ console.warn(
5525
+ "BRAINTRUST_LOG_FLUSH_CHUNK_SIZE is deprecated and no longer has any effect. Log flushing now sends all items at once and batches them automatically. This environment variable will be removed in a future major release."
5526
+ );
5527
+ }
5528
+ const flushBackpressureBytesEnv = Number(
5529
+ isomorph_default.getEnv("BRAINTRUST_FLUSH_BACKPRESSURE_BYTES")
5523
5530
  );
5524
- if (!isNaN(flushChunkSizeEnv) && flushChunkSizeEnv > 0) {
5525
- this.flushChunkSize = flushChunkSizeEnv;
5531
+ if (!isNaN(flushBackpressureBytesEnv) && flushBackpressureBytesEnv > 0) {
5532
+ this._flushBackpressureBytes = flushBackpressureBytesEnv;
5526
5533
  }
5527
5534
  const failedPublishPayloadsDirEnv = isomorph_default.getEnv(
5528
5535
  "BRAINTRUST_FAILED_PUBLISH_PAYLOADS_DIR"
@@ -5546,6 +5553,12 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5546
5553
  setMaskingFunction(maskingFunction) {
5547
5554
  this.maskingFunction = maskingFunction;
5548
5555
  }
5556
+ pendingFlushBytes() {
5557
+ return this._pendingBytes;
5558
+ }
5559
+ flushBackpressureBytes() {
5560
+ return this._flushBackpressureBytes;
5561
+ }
5549
5562
  log(items) {
5550
5563
  if (this._disabled) {
5551
5564
  return;
@@ -5608,14 +5621,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5608
5621
  if (wrappedItems.length === 0) {
5609
5622
  return;
5610
5623
  }
5611
- const chunkSize = Math.max(1, Math.min(batchSize, this.flushChunkSize));
5612
- let index = 0;
5613
- while (index < wrappedItems.length) {
5614
- const chunk = wrappedItems.slice(index, index + chunkSize);
5615
- await this.flushWrappedItemsChunk(chunk, batchSize);
5616
- index += chunk.length;
5617
- }
5618
- wrappedItems.length = 0;
5624
+ await this.flushWrappedItemsChunk(wrappedItems, batchSize);
5619
5625
  if (this.queue.length() > 0) {
5620
5626
  await this.flushOnce(args);
5621
5627
  }
@@ -5628,9 +5634,13 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5628
5634
  if (allItems.length === 0) {
5629
5635
  return;
5630
5636
  }
5631
- const allItemsWithMeta = allItems.map(
5632
- (item) => stringifyWithOverflowMeta(item)
5633
- );
5637
+ let chunkBytes = 0;
5638
+ const allItemsWithMeta = allItems.map((item) => {
5639
+ const withMeta = stringifyWithOverflowMeta(item);
5640
+ chunkBytes += withMeta.str.length;
5641
+ return withMeta;
5642
+ });
5643
+ this._pendingBytes += chunkBytes;
5634
5644
  const maxRequestSizeResult = await this.getMaxRequestSize();
5635
5645
  const batches = batchItems({
5636
5646
  items: allItemsWithMeta,
@@ -5649,6 +5659,7 @@ var HTTPBackgroundLogger = class _HTTPBackgroundLogger {
5649
5659
  })()
5650
5660
  );
5651
5661
  const results = await Promise.all(postPromises);
5662
+ this._pendingBytes = Math.max(0, this._pendingBytes - chunkBytes);
5652
5663
  const failingResultErrors = results.map((r) => r.type === "success" ? void 0 : r.value).filter((r) => r !== void 0);
5653
5664
  if (failingResultErrors.length) {
5654
5665
  throw new AggregateError(
@@ -1,2 +1,2 @@
1
- export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustMiddleware, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetRecord, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalHooks, EvalParameterSerializedSchema, EvalParameters, EvalResult, EvalResultWithSummary, EvalScorer, EvalScorerArgs, EvalTask, Evaluator, EvaluatorDef, EvaluatorDefinition, EvaluatorDefinitions, EvaluatorFile, EvaluatorManifest, Experiment, ExperimentLogFullArgs, ExperimentLogPartialArgs, ExperimentSummary, Exportable, ExternalAttachment, ExternalAttachmentParams, FailedHTTPResponse, FullInitDatasetOptions, FullInitOptions, FullLoginOptions, FunctionEvent, GetThreadOptions, IDGenerator, IdField, InitDatasetOptions, InitLoggerOptions, InitOptions, InputField, InstrumentationConfig, InvokeFunctionArgs, InvokeReturn, JSONAttachment, LEGACY_CACHED_HEADER, LOGS3_OVERFLOW_REFERENCE_TYPE, LazyValue, LoadPromptOptions, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, ReadonlyAttachment, ReadonlyExperiment, Reporter, ReporterBody, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, invoke, isTemplateFormat, loadParameters, loadPrompt, log, logError, login, loginToState, logs3OverflowUploadSchema, newId, parseCachedHeader, parseTemplateFormat, permalink, pickLogs3OverflowObjectIds, projects, promptContentsSchema, promptDefinitionSchema, promptDefinitionToPromptData, promptDefinitionWithToolsSchema, registerOtelFlush, registerTemplatePlugin, renderMessage, renderPromptParams, renderTemplateContent, reportFailures, runEvaluator, setFetch, setMaskingFunction, spanComponentsToObjectId, startSpan, summarize, templateRegistry, toolFunctionDefinitionSchema, traceable, traced, updateSpan, uploadLogs3OverflowPayload, utf8ByteLength, withCurrent, withDataset, withExperiment, withLogger, withParent, wrapAISDK, wrapAISDKModel, wrapAgentClass, wrapAnthropic, wrapClaudeAgentSDK, wrapGoogleGenAI, wrapMastraAgent, wrapOpenAI, wrapOpenAIv4, wrapTraced, wrapVitest } from './browser.mjs';
1
+ export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustMiddleware, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetRecord, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalHooks, EvalParameterSerializedSchema, EvalParameters, EvalResult, EvalResultWithSummary, EvalScorer, EvalScorerArgs, EvalTask, Evaluator, EvaluatorDef, EvaluatorDefinition, EvaluatorDefinitions, EvaluatorFile, EvaluatorManifest, Experiment, ExperimentLogFullArgs, ExperimentLogPartialArgs, ExperimentSummary, Exportable, ExternalAttachment, ExternalAttachmentParams, FailedHTTPResponse, FullInitDatasetOptions, FullInitOptions, FullLoginOptions, FunctionEvent, GetThreadOptions, IDGenerator, IdField, InitDatasetOptions, InitLoggerOptions, InitOptions, InputField, InstrumentationConfig, InvokeFunctionArgs, InvokeReturn, JSONAttachment, LEGACY_CACHED_HEADER, LOGS3_OVERFLOW_REFERENCE_TYPE, LazyValue, LoadPromptOptions, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, invoke, isTemplateFormat, loadParameters, loadPrompt, log, logError, login, loginToState, logs3OverflowUploadSchema, newId, parseCachedHeader, parseTemplateFormat, permalink, pickLogs3OverflowObjectIds, projects, promptContentsSchema, promptDefinitionSchema, promptDefinitionToPromptData, promptDefinitionWithToolsSchema, registerOtelFlush, registerSandbox, registerTemplatePlugin, renderMessage, renderPromptParams, renderTemplateContent, reportFailures, runEvaluator, setFetch, setMaskingFunction, spanComponentsToObjectId, startSpan, summarize, templateRegistry, toolFunctionDefinitionSchema, traceable, traced, updateSpan, uploadLogs3OverflowPayload, utf8ByteLength, withCurrent, withDataset, withExperiment, withLogger, withParent, wrapAISDK, wrapAISDKModel, wrapAgentClass, wrapAnthropic, wrapClaudeAgentSDK, wrapGoogleGenAI, wrapMastraAgent, wrapOpenAI, wrapOpenAIv4, wrapTraced, wrapVitest } from './browser.mjs';
2
2
  import 'zod/v3';
package/dist/workerd.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustMiddleware, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetRecord, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalHooks, EvalParameterSerializedSchema, EvalParameters, EvalResult, EvalResultWithSummary, EvalScorer, EvalScorerArgs, EvalTask, Evaluator, EvaluatorDef, EvaluatorDefinition, EvaluatorDefinitions, EvaluatorFile, EvaluatorManifest, Experiment, ExperimentLogFullArgs, ExperimentLogPartialArgs, ExperimentSummary, Exportable, ExternalAttachment, ExternalAttachmentParams, FailedHTTPResponse, FullInitDatasetOptions, FullInitOptions, FullLoginOptions, FunctionEvent, GetThreadOptions, IDGenerator, IdField, InitDatasetOptions, InitLoggerOptions, InitOptions, InputField, InstrumentationConfig, InvokeFunctionArgs, InvokeReturn, JSONAttachment, LEGACY_CACHED_HEADER, LOGS3_OVERFLOW_REFERENCE_TYPE, LazyValue, LoadPromptOptions, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, ReadonlyAttachment, ReadonlyExperiment, Reporter, ReporterBody, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, invoke, isTemplateFormat, loadParameters, loadPrompt, log, logError, login, loginToState, logs3OverflowUploadSchema, newId, parseCachedHeader, parseTemplateFormat, permalink, pickLogs3OverflowObjectIds, projects, promptContentsSchema, promptDefinitionSchema, promptDefinitionToPromptData, promptDefinitionWithToolsSchema, registerOtelFlush, registerTemplatePlugin, renderMessage, renderPromptParams, renderTemplateContent, reportFailures, runEvaluator, setFetch, setMaskingFunction, spanComponentsToObjectId, startSpan, summarize, templateRegistry, toolFunctionDefinitionSchema, traceable, traced, updateSpan, uploadLogs3OverflowPayload, utf8ByteLength, withCurrent, withDataset, withExperiment, withLogger, withParent, wrapAISDK, wrapAISDKModel, wrapAgentClass, wrapAnthropic, wrapClaudeAgentSDK, wrapGoogleGenAI, wrapMastraAgent, wrapOpenAI, wrapOpenAIv4, wrapTraced, wrapVitest } from './browser.js';
1
+ export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustMiddleware, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetRecord, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalHooks, EvalParameterSerializedSchema, EvalParameters, EvalResult, EvalResultWithSummary, EvalScorer, EvalScorerArgs, EvalTask, Evaluator, EvaluatorDef, EvaluatorDefinition, EvaluatorDefinitions, EvaluatorFile, EvaluatorManifest, Experiment, ExperimentLogFullArgs, ExperimentLogPartialArgs, ExperimentSummary, Exportable, ExternalAttachment, ExternalAttachmentParams, FailedHTTPResponse, FullInitDatasetOptions, FullInitOptions, FullLoginOptions, FunctionEvent, GetThreadOptions, IDGenerator, IdField, InitDatasetOptions, InitLoggerOptions, InitOptions, InputField, InstrumentationConfig, InvokeFunctionArgs, InvokeReturn, JSONAttachment, LEGACY_CACHED_HEADER, LOGS3_OVERFLOW_REFERENCE_TYPE, LazyValue, LoadPromptOptions, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, invoke, isTemplateFormat, loadParameters, loadPrompt, log, logError, login, loginToState, logs3OverflowUploadSchema, newId, parseCachedHeader, parseTemplateFormat, permalink, pickLogs3OverflowObjectIds, projects, promptContentsSchema, promptDefinitionSchema, promptDefinitionToPromptData, promptDefinitionWithToolsSchema, registerOtelFlush, registerSandbox, registerTemplatePlugin, renderMessage, renderPromptParams, renderTemplateContent, reportFailures, runEvaluator, setFetch, setMaskingFunction, spanComponentsToObjectId, startSpan, summarize, templateRegistry, toolFunctionDefinitionSchema, traceable, traced, updateSpan, uploadLogs3OverflowPayload, utf8ByteLength, withCurrent, withDataset, withExperiment, withLogger, withParent, wrapAISDK, wrapAISDKModel, wrapAgentClass, wrapAnthropic, wrapClaudeAgentSDK, wrapGoogleGenAI, wrapMastraAgent, wrapOpenAI, wrapOpenAIv4, wrapTraced, wrapVitest } from './browser.js';
2
2
  import 'zod/v3';