braintrust 3.21.0 → 3.22.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.
@@ -2064,19 +2064,30 @@ var CallEvent = _v3.z.union([
2064
2064
  var ChatCompletionContentPartTextWithTitle = _v3.z.object({
2065
2065
  text: _v3.z.string().default(""),
2066
2066
  type: _v3.z.literal("text"),
2067
- cache_control: _v3.z.object({ type: _v3.z.literal("ephemeral") }).optional()
2067
+ cache_control: _v3.z.object({
2068
+ type: _v3.z.literal("ephemeral"),
2069
+ ttl: _v3.z.enum(["5m", "1h"]).optional()
2070
+ }).optional()
2068
2071
  });
2069
2072
  var ChatCompletionContentPartImageWithTitle = _v3.z.object({
2070
2073
  image_url: _v3.z.object({
2071
2074
  url: _v3.z.string(),
2072
2075
  detail: _v3.z.union([_v3.z.literal("auto"), _v3.z.literal("low"), _v3.z.literal("high")]).optional()
2073
2076
  }),
2074
- type: _v3.z.literal("image_url")
2077
+ type: _v3.z.literal("image_url"),
2078
+ cache_control: _v3.z.object({
2079
+ type: _v3.z.literal("ephemeral"),
2080
+ ttl: _v3.z.enum(["5m", "1h"]).optional()
2081
+ }).optional()
2075
2082
  });
2076
2083
  var ChatCompletionContentPartFileFile = _v3.z.object({ file_data: _v3.z.string(), filename: _v3.z.string(), file_id: _v3.z.string() }).partial();
2077
2084
  var ChatCompletionContentPartFileWithTitle = _v3.z.object({
2078
2085
  file: ChatCompletionContentPartFileFile,
2079
- type: _v3.z.literal("file")
2086
+ type: _v3.z.literal("file"),
2087
+ cache_control: _v3.z.object({
2088
+ type: _v3.z.literal("ephemeral"),
2089
+ ttl: _v3.z.enum(["5m", "1h"]).optional()
2090
+ }).optional()
2080
2091
  });
2081
2092
  var ChatCompletionContentPart = _v3.z.union([
2082
2093
  ChatCompletionContentPartTextWithTitle,
@@ -2086,7 +2097,10 @@ var ChatCompletionContentPart = _v3.z.union([
2086
2097
  var ChatCompletionContentPartText = _v3.z.object({
2087
2098
  text: _v3.z.string().default(""),
2088
2099
  type: _v3.z.literal("text"),
2089
- cache_control: _v3.z.object({ type: _v3.z.literal("ephemeral") }).optional()
2100
+ cache_control: _v3.z.object({
2101
+ type: _v3.z.literal("ephemeral"),
2102
+ ttl: _v3.z.enum(["5m", "1h"]).optional()
2103
+ }).optional()
2090
2104
  });
2091
2105
  var ChatCompletionMessageToolCall = _v3.z.object({
2092
2106
  id: _v3.z.string(),
@@ -4196,13 +4210,23 @@ var LRUCache = class {
4196
4210
  * @returns The cached value if found, undefined otherwise.
4197
4211
  */
4198
4212
  get(key) {
4199
- const value = this.cache.get(key);
4200
- if (value === void 0) {
4213
+ const entry = this.cache.get(key);
4214
+ if (entry === void 0) {
4201
4215
  return void 0;
4202
4216
  }
4203
4217
  this.cache.delete(key);
4204
- this.cache.set(key, value);
4205
- return value;
4218
+ this.cache.set(key, entry);
4219
+ return entry.value;
4220
+ }
4221
+ /**
4222
+ * Checks whether a key exists and marks it as most recently used.
4223
+ */
4224
+ has(key) {
4225
+ if (!this.cache.has(key)) {
4226
+ return false;
4227
+ }
4228
+ this.get(key);
4229
+ return true;
4206
4230
  }
4207
4231
  /**
4208
4232
  * Stores a value in the cache.
@@ -4219,7 +4243,38 @@ var LRUCache = class {
4219
4243
  const first = this.cache.keys().next().value;
4220
4244
  this.cache.delete(first);
4221
4245
  }
4222
- this.cache.set(key, value);
4246
+ this.cache.set(key, { value });
4247
+ }
4248
+ /**
4249
+ * Removes an item from the cache.
4250
+ */
4251
+ delete(key) {
4252
+ return this.cache.delete(key);
4253
+ }
4254
+ /**
4255
+ * Iterates over cache entries from least to most recently used.
4256
+ */
4257
+ *entries() {
4258
+ for (const [key, entry] of this.cache) {
4259
+ yield [key, entry.value];
4260
+ }
4261
+ }
4262
+ /**
4263
+ * Iterates over cache keys from least to most recently used.
4264
+ */
4265
+ keys() {
4266
+ return this.cache.keys();
4267
+ }
4268
+ /**
4269
+ * Iterates over cache values from least to most recently used.
4270
+ */
4271
+ *values() {
4272
+ for (const entry of this.cache.values()) {
4273
+ yield entry.value;
4274
+ }
4275
+ }
4276
+ [Symbol.iterator]() {
4277
+ return this.entries();
4223
4278
  }
4224
4279
  /**
4225
4280
  * Removes all items from the cache.
@@ -4777,6 +4832,9 @@ function applyMaskingToField(maskingFunction, data, fieldName) {
4777
4832
  return `ERROR: Failed to mask field '${fieldName}' - ${errorType}`;
4778
4833
  }
4779
4834
  }
4835
+ var INITIAL_SPAN_WRITE_AS_MERGE = /* @__PURE__ */ Symbol(
4836
+ "braintrust.initial-span-write-as-merge"
4837
+ );
4780
4838
  var BRAINTRUST_CURRENT_SPAN_STORE = /* @__PURE__ */ Symbol.for(
4781
4839
  "braintrust.currentSpanStore"
4782
4840
  );
@@ -8427,6 +8485,12 @@ var traceable = wrapTraced;
8427
8485
  function startSpan(args) {
8428
8486
  return startSpanAndIsLogger(args).span;
8429
8487
  }
8488
+ function _internalStartSpanWithInitialMerge(args) {
8489
+ return startSpanAndIsLogger({
8490
+ ...args,
8491
+ [INITIAL_SPAN_WRITE_AS_MERGE]: true
8492
+ }).span;
8493
+ }
8430
8494
  async function flush(options) {
8431
8495
  const state = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _96 => _96.state]), () => ( _globalState));
8432
8496
  return await state.bgLogger().flush();
@@ -9337,7 +9401,7 @@ var SpanImpl = (_class13 = class _SpanImpl {
9337
9401
  this._spanId = resolvedIds.spanId;
9338
9402
  this._rootSpanId = resolvedIds.rootSpanId;
9339
9403
  this._spanParents = resolvedIds.spanParents;
9340
- this.isMerge = false;
9404
+ this.isMerge = args[INITIAL_SPAN_WRITE_AS_MERGE] === true;
9341
9405
  this.logInternal({ event, internalData });
9342
9406
  this.isMerge = true;
9343
9407
  }
@@ -30571,7 +30635,13 @@ var BraintrustObservabilityExporter = (_class29 = class {
30571
30635
  const args = {
30572
30636
  name: exported.name,
30573
30637
  spanAttributes: { type: spanTypeFor(exported.type) },
30574
- startTime: epochSeconds(exported.startTime)
30638
+ startTime: epochSeconds(exported.startTime),
30639
+ // Use the Mastra span id as the Braintrust row id so that
30640
+ // `logFeedback({ id: <mastra span id> })` (and Mastra's score events)
30641
+ // attach to the right row. Without this, `SpanImpl` auto-generates a
30642
+ // row id (`this._id = eventId ?? idGenerator.getSpanId()`) that no
30643
+ // external caller could know.
30644
+ event: { id: exported.id }
30575
30645
  };
30576
30646
  const parentRecord = exported.parentSpanId ? this.spans.get(exported.parentSpanId) : void 0;
30577
30647
  if (!this.capturedParent) {
@@ -31135,4 +31205,6 @@ async function summarizeAndFlush(experiment, options) {
31135
31205
 
31136
31206
 
31137
31207
 
31138
- exports.debugLogger = debugLogger; exports.IDGenerator = IDGenerator; exports.UUIDGenerator = UUIDGenerator; exports.OTELIDGenerator = OTELIDGenerator; exports.getIdGenerator = getIdGenerator; exports.TRACEPARENT_HEADER = TRACEPARENT_HEADER; exports.TRACESTATE_HEADER = TRACESTATE_HEADER; exports.BAGGAGE_HEADER = BAGGAGE_HEADER; exports.BRAINTRUST_PARENT_KEY = BRAINTRUST_PARENT_KEY; exports.spanObjectTypeV3ToTypedString = spanObjectTypeV3ToTypedString; exports.isObject = isObject; exports.mergeDicts = mergeDicts; exports.slugify = slugify; exports.SpanComponentsV4 = SpanComponentsV4; exports.makeScorerPropagatedEvent = makeScorerPropagatedEvent; exports.loadPrettyXact = loadPrettyXact; exports.getCurrentUnixTimestamp = getCurrentUnixTimestamp; exports.isEmpty = isEmpty2; exports.LazyValue = LazyValue; exports.addAzureBlobHeaders = addAzureBlobHeaders; exports.InternalAbortError = InternalAbortError; exports.AttachmentReference = AttachmentReference; exports.ChatCompletionMessageParam = ChatCompletionMessageParam; exports.ModelParams = ModelParams; exports.PromptData = PromptData; exports.FunctionId = FunctionId; exports.InvokeParent = InvokeParent; exports.ObjectReference = ObjectReference; exports.Project = Project; exports.RunEval = RunEval; exports.ToolFunctionDefinition = ToolFunctionDefinition; exports.templateRegistry = templateRegistry; exports.registerTemplatePlugin = registerTemplatePlugin; exports.getTemplateRenderer = getTemplateRenderer; exports.isTemplateFormat = isTemplateFormat; exports.parseTemplateFormat = parseTemplateFormat; exports.renderTemplateContent = renderTemplateContent; exports.braintrustStreamChunkSchema = braintrustStreamChunkSchema; exports.BraintrustStream = BraintrustStream; exports.createFinalValuePassThroughStream = createFinalValuePassThroughStream; exports.devNullWritableStream = devNullWritableStream; exports.LOGS3_OVERFLOW_REFERENCE_TYPE = LOGS3_OVERFLOW_REFERENCE_TYPE; exports.DEFAULT_MAX_REQUEST_SIZE = DEFAULT_MAX_REQUEST_SIZE; exports.LoginInvalidOrgError = LoginInvalidOrgError; exports.BRAINTRUST_CURRENT_SPAN_STORE = BRAINTRUST_CURRENT_SPAN_STORE; exports.ContextManager = ContextManager; exports.getContextManager = getContextManager; exports.NoopSpan = NoopSpan; exports.NOOP_SPAN = NOOP_SPAN; exports.NOOP_SPAN_PERMALINK = NOOP_SPAN_PERMALINK; exports.BraintrustState = BraintrustState; exports._internalSetInitialState = _internalSetInitialState; exports._internalGetGlobalState = _internalGetGlobalState; exports.registerOtelFlush = registerOtelFlush; exports.FailedHTTPResponse = FailedHTTPResponse; exports.BaseAttachment = BaseAttachment; exports.Attachment = Attachment; exports.ExternalAttachment = ExternalAttachment; exports.ReadonlyAttachment = ReadonlyAttachment; exports.JSONAttachment = JSONAttachment; exports.updateSpan = updateSpan; exports.spanComponentsToObjectId = spanComponentsToObjectId; exports.ERR_PERMALINK = ERR_PERMALINK; exports.permalink = permalink; exports.Logger = Logger; exports.logs3OverflowUploadSchema = logs3OverflowUploadSchema; exports.constructLogs3OverflowRequest = constructLogs3OverflowRequest; exports.pickLogs3OverflowObjectIds = pickLogs3OverflowObjectIds; exports.uploadLogs3OverflowPayload = uploadLogs3OverflowPayload; exports.utf8ByteLength = utf8ByteLength2; exports.TestBackgroundLogger = TestBackgroundLogger; exports.init = init; exports.initExperiment = initExperiment; exports.withExperiment = withExperiment; exports.withLogger = withLogger; exports.initDataset = initDataset; exports.withDataset = withDataset; exports.initLogger = initLogger; exports.loadPrompt = loadPrompt; exports.loadParameters = loadParameters; exports.setMaskingFunction = setMaskingFunction; exports.login = login; exports.loginToState = loginToState; exports.log = log; exports.summarize = summarize; exports.currentExperiment = currentExperiment; exports.currentLogger = currentLogger; exports.currentSpan = currentSpan; exports.getSpanParentObject = getSpanParentObject; exports.injectTraceContext = injectTraceContext; exports.extractTraceContextFromHeaders = extractTraceContextFromHeaders; exports.logError = logError; exports.traced = traced; exports.wrapTraced = wrapTraced; exports.traceable = traceable; exports.startSpan = startSpan; exports.flush = flush; exports.setFetch = setFetch; exports.withCurrent = withCurrent; exports.withParent = withParent; exports.deepCopyEvent = deepCopyEvent; exports.DEFAULT_FETCH_BATCH_SIZE = DEFAULT_FETCH_BATCH_SIZE; exports.ObjectFetcher = ObjectFetcher; exports.Experiment = Experiment2; exports.ReadonlyExperiment = ReadonlyExperiment; exports.newId = newId; exports.SpanImpl = SpanImpl; exports.Dataset = Dataset2; exports.renderMessage = renderMessage; exports.deserializePlainStringAsJSON = deserializePlainStringAsJSON; exports.renderPromptParams = renderPromptParams; exports.Prompt = Prompt2; exports.RemoteEvalParameters = RemoteEvalParameters; exports.getPromptVersions = getPromptVersions; exports._exportsForTestingOnly = _exportsForTestingOnly; exports.runWithAutoInstrumentationSuppressed = runWithAutoInstrumentationSuppressed; exports.processInputAttachments = processInputAttachments; exports.LEGACY_CACHED_HEADER = LEGACY_CACHED_HEADER; exports.X_CACHED_HEADER = X_CACHED_HEADER; exports.parseCachedHeader = parseCachedHeader; exports.finalizeAnthropicTokens = finalizeAnthropicTokens; exports.extractAnthropicCacheTokens = extractAnthropicCacheTokens; exports.zodToJsonSchema = zodToJsonSchema; exports.currentWorkflowAgentWrapperSpan = currentWorkflowAgentWrapperSpan; exports.braintrustAISDKTelemetry = braintrustAISDKTelemetry; exports.CLAUDE_AGENT_SDK_SKIP_LOCAL_TOOL_HOOKS_OPTION = CLAUDE_AGENT_SDK_SKIP_LOCAL_TOOL_HOOKS_OPTION; exports.wrapLocalClaudeToolHandler = wrapLocalClaudeToolHandler; exports.getBedrockRuntimeOperation = getBedrockRuntimeOperation; exports.buildBedrockRuntimeSpanInfo = buildBedrockRuntimeSpanInfo; exports.braintrustFlueInstrumentation = braintrustFlueInstrumentation; exports.braintrustFlueObserver = braintrustFlueObserver; exports.BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME = BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME; exports.BraintrustLangChainCallbackHandler = BraintrustLangChainCallbackHandler; exports.configureInstrumentation = configureInstrumentation; exports.BraintrustObservabilityExporter = BraintrustObservabilityExporter; exports.wrapMastraAgent = wrapMastraAgent; exports.configureNode = configureNode; exports.summarizeAndFlush = summarizeAndFlush;
31208
+
31209
+
31210
+ exports.debugLogger = debugLogger; exports.IDGenerator = IDGenerator; exports.UUIDGenerator = UUIDGenerator; exports.OTELIDGenerator = OTELIDGenerator; exports.getIdGenerator = getIdGenerator; exports.TRACEPARENT_HEADER = TRACEPARENT_HEADER; exports.TRACESTATE_HEADER = TRACESTATE_HEADER; exports.BAGGAGE_HEADER = BAGGAGE_HEADER; exports.BRAINTRUST_PARENT_KEY = BRAINTRUST_PARENT_KEY; exports.spanObjectTypeV3ToTypedString = spanObjectTypeV3ToTypedString; exports.isObject = isObject; exports.mergeDicts = mergeDicts; exports.slugify = slugify; exports.SpanComponentsV4 = SpanComponentsV4; exports.makeScorerPropagatedEvent = makeScorerPropagatedEvent; exports.loadPrettyXact = loadPrettyXact; exports.getCurrentUnixTimestamp = getCurrentUnixTimestamp; exports.isEmpty = isEmpty2; exports.LazyValue = LazyValue; exports.addAzureBlobHeaders = addAzureBlobHeaders; exports.InternalAbortError = InternalAbortError; exports.AttachmentReference = AttachmentReference; exports.ChatCompletionMessageParam = ChatCompletionMessageParam; exports.ModelParams = ModelParams; exports.PromptData = PromptData; exports.FunctionId = FunctionId; exports.InvokeParent = InvokeParent; exports.ObjectReference = ObjectReference; exports.Project = Project; exports.RunEval = RunEval; exports.ToolFunctionDefinition = ToolFunctionDefinition; exports.templateRegistry = templateRegistry; exports.registerTemplatePlugin = registerTemplatePlugin; exports.getTemplateRenderer = getTemplateRenderer; exports.isTemplateFormat = isTemplateFormat; exports.parseTemplateFormat = parseTemplateFormat; exports.renderTemplateContent = renderTemplateContent; exports.braintrustStreamChunkSchema = braintrustStreamChunkSchema; exports.BraintrustStream = BraintrustStream; exports.createFinalValuePassThroughStream = createFinalValuePassThroughStream; exports.devNullWritableStream = devNullWritableStream; exports.LRUCache = LRUCache; exports.LOGS3_OVERFLOW_REFERENCE_TYPE = LOGS3_OVERFLOW_REFERENCE_TYPE; exports.DEFAULT_MAX_REQUEST_SIZE = DEFAULT_MAX_REQUEST_SIZE; exports.LoginInvalidOrgError = LoginInvalidOrgError; exports.BRAINTRUST_CURRENT_SPAN_STORE = BRAINTRUST_CURRENT_SPAN_STORE; exports.ContextManager = ContextManager; exports.getContextManager = getContextManager; exports.NoopSpan = NoopSpan; exports.NOOP_SPAN = NOOP_SPAN; exports.NOOP_SPAN_PERMALINK = NOOP_SPAN_PERMALINK; exports.BraintrustState = BraintrustState; exports._internalSetInitialState = _internalSetInitialState; exports._internalGetGlobalState = _internalGetGlobalState; exports.registerOtelFlush = registerOtelFlush; exports.FailedHTTPResponse = FailedHTTPResponse; exports.BaseAttachment = BaseAttachment; exports.Attachment = Attachment; exports.ExternalAttachment = ExternalAttachment; exports.ReadonlyAttachment = ReadonlyAttachment; exports.JSONAttachment = JSONAttachment; exports.updateSpan = updateSpan; exports.spanComponentsToObjectId = spanComponentsToObjectId; exports.ERR_PERMALINK = ERR_PERMALINK; exports.permalink = permalink; exports.Logger = Logger; exports.logs3OverflowUploadSchema = logs3OverflowUploadSchema; exports.constructLogs3OverflowRequest = constructLogs3OverflowRequest; exports.pickLogs3OverflowObjectIds = pickLogs3OverflowObjectIds; exports.uploadLogs3OverflowPayload = uploadLogs3OverflowPayload; exports.utf8ByteLength = utf8ByteLength2; exports.TestBackgroundLogger = TestBackgroundLogger; exports.init = init; exports.initExperiment = initExperiment; exports.withExperiment = withExperiment; exports.withLogger = withLogger; exports.initDataset = initDataset; exports.withDataset = withDataset; exports.initLogger = initLogger; exports.loadPrompt = loadPrompt; exports.loadParameters = loadParameters; exports.setMaskingFunction = setMaskingFunction; exports.login = login; exports.loginToState = loginToState; exports.log = log; exports.summarize = summarize; exports.currentExperiment = currentExperiment; exports.currentLogger = currentLogger; exports.currentSpan = currentSpan; exports.getSpanParentObject = getSpanParentObject; exports.injectTraceContext = injectTraceContext; exports.extractTraceContextFromHeaders = extractTraceContextFromHeaders; exports.logError = logError; exports.traced = traced; exports.wrapTraced = wrapTraced; exports.traceable = traceable; exports.startSpan = startSpan; exports._internalStartSpanWithInitialMerge = _internalStartSpanWithInitialMerge; exports.flush = flush; exports.setFetch = setFetch; exports.withCurrent = withCurrent; exports.withParent = withParent; exports.deepCopyEvent = deepCopyEvent; exports.DEFAULT_FETCH_BATCH_SIZE = DEFAULT_FETCH_BATCH_SIZE; exports.ObjectFetcher = ObjectFetcher; exports.Experiment = Experiment2; exports.ReadonlyExperiment = ReadonlyExperiment; exports.newId = newId; exports.SpanImpl = SpanImpl; exports.Dataset = Dataset2; exports.renderMessage = renderMessage; exports.deserializePlainStringAsJSON = deserializePlainStringAsJSON; exports.renderPromptParams = renderPromptParams; exports.Prompt = Prompt2; exports.RemoteEvalParameters = RemoteEvalParameters; exports.getPromptVersions = getPromptVersions; exports._exportsForTestingOnly = _exportsForTestingOnly; exports.runWithAutoInstrumentationSuppressed = runWithAutoInstrumentationSuppressed; exports.processInputAttachments = processInputAttachments; exports.LEGACY_CACHED_HEADER = LEGACY_CACHED_HEADER; exports.X_CACHED_HEADER = X_CACHED_HEADER; exports.parseCachedHeader = parseCachedHeader; exports.finalizeAnthropicTokens = finalizeAnthropicTokens; exports.extractAnthropicCacheTokens = extractAnthropicCacheTokens; exports.zodToJsonSchema = zodToJsonSchema; exports.currentWorkflowAgentWrapperSpan = currentWorkflowAgentWrapperSpan; exports.braintrustAISDKTelemetry = braintrustAISDKTelemetry; exports.CLAUDE_AGENT_SDK_SKIP_LOCAL_TOOL_HOOKS_OPTION = CLAUDE_AGENT_SDK_SKIP_LOCAL_TOOL_HOOKS_OPTION; exports.wrapLocalClaudeToolHandler = wrapLocalClaudeToolHandler; exports.getBedrockRuntimeOperation = getBedrockRuntimeOperation; exports.buildBedrockRuntimeSpanInfo = buildBedrockRuntimeSpanInfo; exports.braintrustFlueInstrumentation = braintrustFlueInstrumentation; exports.braintrustFlueObserver = braintrustFlueObserver; exports.BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME = BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME; exports.BraintrustLangChainCallbackHandler = BraintrustLangChainCallbackHandler; exports.configureInstrumentation = configureInstrumentation; exports.BraintrustObservabilityExporter = BraintrustObservabilityExporter; exports.wrapMastraAgent = wrapMastraAgent; exports.configureNode = configureNode; exports.summarizeAndFlush = summarizeAndFlush;
@@ -2064,19 +2064,30 @@ var CallEvent = z6.union([
2064
2064
  var ChatCompletionContentPartTextWithTitle = z6.object({
2065
2065
  text: z6.string().default(""),
2066
2066
  type: z6.literal("text"),
2067
- cache_control: z6.object({ type: z6.literal("ephemeral") }).optional()
2067
+ cache_control: z6.object({
2068
+ type: z6.literal("ephemeral"),
2069
+ ttl: z6.enum(["5m", "1h"]).optional()
2070
+ }).optional()
2068
2071
  });
2069
2072
  var ChatCompletionContentPartImageWithTitle = z6.object({
2070
2073
  image_url: z6.object({
2071
2074
  url: z6.string(),
2072
2075
  detail: z6.union([z6.literal("auto"), z6.literal("low"), z6.literal("high")]).optional()
2073
2076
  }),
2074
- type: z6.literal("image_url")
2077
+ type: z6.literal("image_url"),
2078
+ cache_control: z6.object({
2079
+ type: z6.literal("ephemeral"),
2080
+ ttl: z6.enum(["5m", "1h"]).optional()
2081
+ }).optional()
2075
2082
  });
2076
2083
  var ChatCompletionContentPartFileFile = z6.object({ file_data: z6.string(), filename: z6.string(), file_id: z6.string() }).partial();
2077
2084
  var ChatCompletionContentPartFileWithTitle = z6.object({
2078
2085
  file: ChatCompletionContentPartFileFile,
2079
- type: z6.literal("file")
2086
+ type: z6.literal("file"),
2087
+ cache_control: z6.object({
2088
+ type: z6.literal("ephemeral"),
2089
+ ttl: z6.enum(["5m", "1h"]).optional()
2090
+ }).optional()
2080
2091
  });
2081
2092
  var ChatCompletionContentPart = z6.union([
2082
2093
  ChatCompletionContentPartTextWithTitle,
@@ -2086,7 +2097,10 @@ var ChatCompletionContentPart = z6.union([
2086
2097
  var ChatCompletionContentPartText = z6.object({
2087
2098
  text: z6.string().default(""),
2088
2099
  type: z6.literal("text"),
2089
- cache_control: z6.object({ type: z6.literal("ephemeral") }).optional()
2100
+ cache_control: z6.object({
2101
+ type: z6.literal("ephemeral"),
2102
+ ttl: z6.enum(["5m", "1h"]).optional()
2103
+ }).optional()
2090
2104
  });
2091
2105
  var ChatCompletionMessageToolCall = z6.object({
2092
2106
  id: z6.string(),
@@ -4196,13 +4210,23 @@ var LRUCache = class {
4196
4210
  * @returns The cached value if found, undefined otherwise.
4197
4211
  */
4198
4212
  get(key) {
4199
- const value = this.cache.get(key);
4200
- if (value === void 0) {
4213
+ const entry = this.cache.get(key);
4214
+ if (entry === void 0) {
4201
4215
  return void 0;
4202
4216
  }
4203
4217
  this.cache.delete(key);
4204
- this.cache.set(key, value);
4205
- return value;
4218
+ this.cache.set(key, entry);
4219
+ return entry.value;
4220
+ }
4221
+ /**
4222
+ * Checks whether a key exists and marks it as most recently used.
4223
+ */
4224
+ has(key) {
4225
+ if (!this.cache.has(key)) {
4226
+ return false;
4227
+ }
4228
+ this.get(key);
4229
+ return true;
4206
4230
  }
4207
4231
  /**
4208
4232
  * Stores a value in the cache.
@@ -4219,7 +4243,38 @@ var LRUCache = class {
4219
4243
  const first = this.cache.keys().next().value;
4220
4244
  this.cache.delete(first);
4221
4245
  }
4222
- this.cache.set(key, value);
4246
+ this.cache.set(key, { value });
4247
+ }
4248
+ /**
4249
+ * Removes an item from the cache.
4250
+ */
4251
+ delete(key) {
4252
+ return this.cache.delete(key);
4253
+ }
4254
+ /**
4255
+ * Iterates over cache entries from least to most recently used.
4256
+ */
4257
+ *entries() {
4258
+ for (const [key, entry] of this.cache) {
4259
+ yield [key, entry.value];
4260
+ }
4261
+ }
4262
+ /**
4263
+ * Iterates over cache keys from least to most recently used.
4264
+ */
4265
+ keys() {
4266
+ return this.cache.keys();
4267
+ }
4268
+ /**
4269
+ * Iterates over cache values from least to most recently used.
4270
+ */
4271
+ *values() {
4272
+ for (const entry of this.cache.values()) {
4273
+ yield entry.value;
4274
+ }
4275
+ }
4276
+ [Symbol.iterator]() {
4277
+ return this.entries();
4223
4278
  }
4224
4279
  /**
4225
4280
  * Removes all items from the cache.
@@ -4777,6 +4832,9 @@ function applyMaskingToField(maskingFunction, data, fieldName) {
4777
4832
  return `ERROR: Failed to mask field '${fieldName}' - ${errorType}`;
4778
4833
  }
4779
4834
  }
4835
+ var INITIAL_SPAN_WRITE_AS_MERGE = /* @__PURE__ */ Symbol(
4836
+ "braintrust.initial-span-write-as-merge"
4837
+ );
4780
4838
  var BRAINTRUST_CURRENT_SPAN_STORE = /* @__PURE__ */ Symbol.for(
4781
4839
  "braintrust.currentSpanStore"
4782
4840
  );
@@ -8427,6 +8485,12 @@ var traceable = wrapTraced;
8427
8485
  function startSpan(args) {
8428
8486
  return startSpanAndIsLogger(args).span;
8429
8487
  }
8488
+ function _internalStartSpanWithInitialMerge(args) {
8489
+ return startSpanAndIsLogger({
8490
+ ...args,
8491
+ [INITIAL_SPAN_WRITE_AS_MERGE]: true
8492
+ }).span;
8493
+ }
8430
8494
  async function flush(options) {
8431
8495
  const state = options?.state ?? _globalState;
8432
8496
  return await state.bgLogger().flush();
@@ -9337,7 +9401,7 @@ var SpanImpl = class _SpanImpl {
9337
9401
  this._spanId = resolvedIds.spanId;
9338
9402
  this._rootSpanId = resolvedIds.rootSpanId;
9339
9403
  this._spanParents = resolvedIds.spanParents;
9340
- this.isMerge = false;
9404
+ this.isMerge = args[INITIAL_SPAN_WRITE_AS_MERGE] === true;
9341
9405
  this.logInternal({ event, internalData });
9342
9406
  this.isMerge = true;
9343
9407
  }
@@ -30571,7 +30635,13 @@ var BraintrustObservabilityExporter = class {
30571
30635
  const args = {
30572
30636
  name: exported.name,
30573
30637
  spanAttributes: { type: spanTypeFor(exported.type) },
30574
- startTime: epochSeconds(exported.startTime)
30638
+ startTime: epochSeconds(exported.startTime),
30639
+ // Use the Mastra span id as the Braintrust row id so that
30640
+ // `logFeedback({ id: <mastra span id> })` (and Mastra's score events)
30641
+ // attach to the right row. Without this, `SpanImpl` auto-generates a
30642
+ // row id (`this._id = eventId ?? idGenerator.getSpanId()`) that no
30643
+ // external caller could know.
30644
+ event: { id: exported.id }
30575
30645
  };
30576
30646
  const parentRecord = exported.parentSpanId ? this.spans.get(exported.parentSpanId) : void 0;
30577
30647
  if (!this.capturedParent) {
@@ -31038,6 +31108,7 @@ export {
31038
31108
  BraintrustStream,
31039
31109
  createFinalValuePassThroughStream,
31040
31110
  devNullWritableStream,
31111
+ LRUCache,
31041
31112
  LOGS3_OVERFLOW_REFERENCE_TYPE,
31042
31113
  DEFAULT_MAX_REQUEST_SIZE,
31043
31114
  LoginInvalidOrgError,
@@ -31093,6 +31164,7 @@ export {
31093
31164
  wrapTraced,
31094
31165
  traceable,
31095
31166
  startSpan,
31167
+ _internalStartSpanWithInitialMerge,
31096
31168
  flush,
31097
31169
  setFetch,
31098
31170
  withCurrent,
package/dist/cli.js CHANGED
@@ -1232,7 +1232,7 @@ var require_package = __commonJS({
1232
1232
  "package.json"(exports2, module2) {
1233
1233
  module2.exports = {
1234
1234
  name: "braintrust",
1235
- version: "3.21.0",
1235
+ version: "3.22.0",
1236
1236
  description: "SDK for integrating Braintrust",
1237
1237
  repository: {
1238
1238
  type: "git",
@@ -1413,6 +1413,7 @@ var require_package = __commonJS({
1413
1413
  "@types/async": "^3.2.24",
1414
1414
  "@types/cli-progress": "^3.11.5",
1415
1415
  "@types/cors": "^2.8.17",
1416
+ "@types/esquery": "^1.5.4",
1416
1417
  "@types/express": "^5.0.0",
1417
1418
  "@types/http-errors": "^2.0.4",
1418
1419
  "@types/mustache": "^4.2.5",
@@ -1424,11 +1425,14 @@ var require_package = __commonJS({
1424
1425
  ai: "^6.0.0",
1425
1426
  async: "^3.2.5",
1426
1427
  "cross-env": "^7.0.3",
1428
+ "eslint-plugin-es-x": "9.7.0",
1429
+ "eslint-plugin-n": "^18.2.1",
1427
1430
  "eslint-plugin-node-import": "^1.0.5",
1428
1431
  openai: "6.25.0",
1429
1432
  rollup: "^4.60.3",
1430
1433
  tar: "^7.5.16",
1431
1434
  tinybench: "^4.0.1",
1435
+ "ts-declaration-location": "^1.0.7",
1432
1436
  tsup: "^8.5.1",
1433
1437
  tsx: "^4.21.0",
1434
1438
  typedoc: "^0.25.13",
@@ -1442,7 +1446,6 @@ var require_package = __commonJS({
1442
1446
  },
1443
1447
  dependencies: {
1444
1448
  "@next/env": "^14.2.3",
1445
- "@types/estree": "^1.0.8",
1446
1449
  "@vercel/functions": "^1.0.2",
1447
1450
  acorn: "^8.16.0",
1448
1451
  "acorn-import-attributes": "^1.9.5",
@@ -3724,19 +3727,30 @@ var CallEvent = import_v36.z.union([
3724
3727
  var ChatCompletionContentPartTextWithTitle = import_v36.z.object({
3725
3728
  text: import_v36.z.string().default(""),
3726
3729
  type: import_v36.z.literal("text"),
3727
- cache_control: import_v36.z.object({ type: import_v36.z.literal("ephemeral") }).optional()
3730
+ cache_control: import_v36.z.object({
3731
+ type: import_v36.z.literal("ephemeral"),
3732
+ ttl: import_v36.z.enum(["5m", "1h"]).optional()
3733
+ }).optional()
3728
3734
  });
3729
3735
  var ChatCompletionContentPartImageWithTitle = import_v36.z.object({
3730
3736
  image_url: import_v36.z.object({
3731
3737
  url: import_v36.z.string(),
3732
3738
  detail: import_v36.z.union([import_v36.z.literal("auto"), import_v36.z.literal("low"), import_v36.z.literal("high")]).optional()
3733
3739
  }),
3734
- type: import_v36.z.literal("image_url")
3740
+ type: import_v36.z.literal("image_url"),
3741
+ cache_control: import_v36.z.object({
3742
+ type: import_v36.z.literal("ephemeral"),
3743
+ ttl: import_v36.z.enum(["5m", "1h"]).optional()
3744
+ }).optional()
3735
3745
  });
3736
3746
  var ChatCompletionContentPartFileFile = import_v36.z.object({ file_data: import_v36.z.string(), filename: import_v36.z.string(), file_id: import_v36.z.string() }).partial();
3737
3747
  var ChatCompletionContentPartFileWithTitle = import_v36.z.object({
3738
3748
  file: ChatCompletionContentPartFileFile,
3739
- type: import_v36.z.literal("file")
3749
+ type: import_v36.z.literal("file"),
3750
+ cache_control: import_v36.z.object({
3751
+ type: import_v36.z.literal("ephemeral"),
3752
+ ttl: import_v36.z.enum(["5m", "1h"]).optional()
3753
+ }).optional()
3740
3754
  });
3741
3755
  var ChatCompletionContentPart = import_v36.z.union([
3742
3756
  ChatCompletionContentPartTextWithTitle,
@@ -3746,7 +3760,10 @@ var ChatCompletionContentPart = import_v36.z.union([
3746
3760
  var ChatCompletionContentPartText = import_v36.z.object({
3747
3761
  text: import_v36.z.string().default(""),
3748
3762
  type: import_v36.z.literal("text"),
3749
- cache_control: import_v36.z.object({ type: import_v36.z.literal("ephemeral") }).optional()
3763
+ cache_control: import_v36.z.object({
3764
+ type: import_v36.z.literal("ephemeral"),
3765
+ ttl: import_v36.z.enum(["5m", "1h"]).optional()
3766
+ }).optional()
3750
3767
  });
3751
3768
  var ChatCompletionMessageToolCall = import_v36.z.object({
3752
3769
  id: import_v36.z.string(),
@@ -5797,13 +5814,23 @@ var LRUCache = class {
5797
5814
  * @returns The cached value if found, undefined otherwise.
5798
5815
  */
5799
5816
  get(key) {
5800
- const value = this.cache.get(key);
5801
- if (value === void 0) {
5817
+ const entry = this.cache.get(key);
5818
+ if (entry === void 0) {
5802
5819
  return void 0;
5803
5820
  }
5804
5821
  this.cache.delete(key);
5805
- this.cache.set(key, value);
5806
- return value;
5822
+ this.cache.set(key, entry);
5823
+ return entry.value;
5824
+ }
5825
+ /**
5826
+ * Checks whether a key exists and marks it as most recently used.
5827
+ */
5828
+ has(key) {
5829
+ if (!this.cache.has(key)) {
5830
+ return false;
5831
+ }
5832
+ this.get(key);
5833
+ return true;
5807
5834
  }
5808
5835
  /**
5809
5836
  * Stores a value in the cache.
@@ -5820,7 +5847,38 @@ var LRUCache = class {
5820
5847
  const first = this.cache.keys().next().value;
5821
5848
  this.cache.delete(first);
5822
5849
  }
5823
- this.cache.set(key, value);
5850
+ this.cache.set(key, { value });
5851
+ }
5852
+ /**
5853
+ * Removes an item from the cache.
5854
+ */
5855
+ delete(key) {
5856
+ return this.cache.delete(key);
5857
+ }
5858
+ /**
5859
+ * Iterates over cache entries from least to most recently used.
5860
+ */
5861
+ *entries() {
5862
+ for (const [key, entry] of this.cache) {
5863
+ yield [key, entry.value];
5864
+ }
5865
+ }
5866
+ /**
5867
+ * Iterates over cache keys from least to most recently used.
5868
+ */
5869
+ keys() {
5870
+ return this.cache.keys();
5871
+ }
5872
+ /**
5873
+ * Iterates over cache values from least to most recently used.
5874
+ */
5875
+ *values() {
5876
+ for (const entry of this.cache.values()) {
5877
+ yield entry.value;
5878
+ }
5879
+ }
5880
+ [Symbol.iterator]() {
5881
+ return this.entries();
5824
5882
  }
5825
5883
  /**
5826
5884
  * Removes all items from the cache.
@@ -6378,6 +6436,9 @@ function applyMaskingToField(maskingFunction, data, fieldName) {
6378
6436
  return `ERROR: Failed to mask field '${fieldName}' - ${errorType}`;
6379
6437
  }
6380
6438
  }
6439
+ var INITIAL_SPAN_WRITE_AS_MERGE = /* @__PURE__ */ Symbol(
6440
+ "braintrust.initial-span-write-as-merge"
6441
+ );
6381
6442
  var BRAINTRUST_CURRENT_SPAN_STORE = /* @__PURE__ */ Symbol.for(
6382
6443
  "braintrust.currentSpanStore"
6383
6444
  );
@@ -10196,7 +10257,7 @@ var SpanImpl = class _SpanImpl {
10196
10257
  this._spanId = resolvedIds.spanId;
10197
10258
  this._rootSpanId = resolvedIds.rootSpanId;
10198
10259
  this._spanParents = resolvedIds.spanParents;
10199
- this.isMerge = false;
10260
+ this.isMerge = args[INITIAL_SPAN_WRITE_AS_MERGE] === true;
10200
10261
  this.logInternal({ event, internalData });
10201
10262
  this.isMerge = true;
10202
10263
  }
@@ -35135,7 +35196,13 @@ var BraintrustObservabilityExporter = class {
35135
35196
  const args = {
35136
35197
  name: exported.name,
35137
35198
  spanAttributes: { type: spanTypeFor(exported.type) },
35138
- startTime: epochSeconds(exported.startTime)
35199
+ startTime: epochSeconds(exported.startTime),
35200
+ // Use the Mastra span id as the Braintrust row id so that
35201
+ // `logFeedback({ id: <mastra span id> })` (and Mastra's score events)
35202
+ // attach to the right row. Without this, `SpanImpl` auto-generates a
35203
+ // row id (`this._id = eventId ?? idGenerator.getSpanId()`) that no
35204
+ // external caller could know.
35205
+ event: { id: exported.id }
35139
35206
  };
35140
35207
  const parentRecord = exported.parentSpanId ? this.spans.get(exported.parentSpanId) : void 0;
35141
35208
  if (!this.capturedParent) {
@@ -1,2 +1,2 @@
1
- export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BAGGAGE_HEADER, BRAINTRUST_CURRENT_SPAN_STORE, BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME, BRAINTRUST_PARENT_KEY, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustLangChainCallbackHandler, BraintrustMiddleware, BraintrustObservabilityExporter, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, CurrentSpanStore, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetPipeline, DatasetRecord, DatasetRestorePreviewResult, DatasetRestoreResult, DatasetSnapshot, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalClassifier, 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, LangChainCallbackHandlerOptions, LazyValue, LoadPromptOptions, LocalTrace, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MastraObservabilityExporter, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, OTELIDGenerator, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, ParsedTraceparent, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, PropagatedState, PropagationContext, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TRACEPARENT_HEADER, TRACESTATE_HEADER, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, TraceContextCarrier, TraceContextHeaders, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, agentAssertionScorer, braintrustAISDKTelemetry, braintrustFlueInstrumentation, braintrustFlueObserver, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, extractTraceContextFromHeaders, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, initNodeTestSuite, injectTraceContext, 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, wrapBedrockRuntime, wrapClaudeAgentSDK, wrapCohere, wrapCopilotClient, wrapCursorSDK, wrapGenkit, wrapGoogleADK, wrapGoogleGenAI, wrapGroq, wrapHuggingFace, wrapMastraAgent, wrapMistral, wrapOpenAI, wrapOpenAICodexSDK, wrapOpenAIv4, wrapOpenRouter, wrapOpenRouterAgent, wrapPiCodingAgentSDK, wrapStrandsAgentSDK, wrapTraced, wrapVitest } from './browser.mjs';
1
+ export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BAGGAGE_HEADER, BRAINTRUST_CURRENT_SPAN_STORE, BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME, BRAINTRUST_PARENT_KEY, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustLangChainCallbackHandler, BraintrustMiddleware, BraintrustObservabilityExporter, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, CurrentSpanStore, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetPipeline, DatasetRecord, DatasetRestorePreviewResult, DatasetRestoreResult, DatasetSnapshot, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalClassifier, 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, LangChainCallbackHandlerOptions, LazyValue, LoadPromptOptions, LocalTrace, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MastraObservabilityExporter, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, OTELIDGenerator, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, ParsedTraceparent, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, PropagatedState, PropagationContext, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TRACEPARENT_HEADER, TRACESTATE_HEADER, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, TraceContextCarrier, TraceContextHeaders, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, agentAssertionScorer, braintrustAISDKTelemetry, braintrustEveHook, braintrustEveInstrumentation, braintrustFlueInstrumentation, braintrustFlueObserver, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, extractTraceContextFromHeaders, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, initNodeTestSuite, injectTraceContext, 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, wrapBedrockRuntime, wrapClaudeAgentSDK, wrapCohere, wrapCopilotClient, wrapCursorSDK, wrapGenkit, wrapGoogleADK, wrapGoogleGenAI, wrapGroq, wrapHuggingFace, wrapMastraAgent, wrapMistral, wrapOpenAI, wrapOpenAICodexSDK, wrapOpenAIv4, wrapOpenRouter, wrapOpenRouterAgent, wrapPiCodingAgentSDK, wrapStrandsAgentSDK, wrapTraced, wrapVitest } from './browser.mjs';
2
2
  import 'zod/v3';
@@ -1,2 +1,2 @@
1
- export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BAGGAGE_HEADER, BRAINTRUST_CURRENT_SPAN_STORE, BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME, BRAINTRUST_PARENT_KEY, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustLangChainCallbackHandler, BraintrustMiddleware, BraintrustObservabilityExporter, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, CurrentSpanStore, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetPipeline, DatasetRecord, DatasetRestorePreviewResult, DatasetRestoreResult, DatasetSnapshot, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalClassifier, 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, LangChainCallbackHandlerOptions, LazyValue, LoadPromptOptions, LocalTrace, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MastraObservabilityExporter, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, OTELIDGenerator, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, ParsedTraceparent, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, PropagatedState, PropagationContext, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TRACEPARENT_HEADER, TRACESTATE_HEADER, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, TraceContextCarrier, TraceContextHeaders, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, agentAssertionScorer, braintrustAISDKTelemetry, braintrustFlueInstrumentation, braintrustFlueObserver, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, extractTraceContextFromHeaders, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, initNodeTestSuite, injectTraceContext, 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, wrapBedrockRuntime, wrapClaudeAgentSDK, wrapCohere, wrapCopilotClient, wrapCursorSDK, wrapGenkit, wrapGoogleADK, wrapGoogleGenAI, wrapGroq, wrapHuggingFace, wrapMastraAgent, wrapMistral, wrapOpenAI, wrapOpenAICodexSDK, wrapOpenAIv4, wrapOpenRouter, wrapOpenRouterAgent, wrapPiCodingAgentSDK, wrapStrandsAgentSDK, wrapTraced, wrapVitest } from './browser.js';
1
+ export { AnyDataset, Attachment, AttachmentParams, AttachmentReference, BAGGAGE_HEADER, BRAINTRUST_CURRENT_SPAN_STORE, BRAINTRUST_LANGCHAIN_CALLBACK_HANDLER_NAME, BRAINTRUST_PARENT_KEY, BackgroundLoggerOpts, BaseAttachment, BaseExperiment, BaseMetadata, BraintrustLangChainCallbackHandler, BraintrustMiddleware, BraintrustObservabilityExporter, BraintrustState, BraintrustStream, BraintrustStreamChunk, CachedSpanFetcher, ChatPrompt, CodeFunction, CodeOpts, CodePrompt, CommentEvent, CompiledPrompt, CompiledPromptParams, CompletionPrompt, ContextManager, ContextParentSpanIds, CreateProjectOpts, CurrentSpanStore, DEFAULT_FETCH_BATCH_SIZE, DEFAULT_MAX_REQUEST_SIZE, DataSummary, Dataset, DatasetPipeline, DatasetRecord, DatasetRestorePreviewResult, DatasetRestoreResult, DatasetSnapshot, DatasetSummary, DefaultMetadataType, DefaultPromptArgs, ERR_PERMALINK, EndSpanArgs, Eval, EvalCase, EvalClassifier, 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, LangChainCallbackHandlerOptions, LazyValue, LoadPromptOptions, LocalTrace, LogCommentFullArgs, LogFeedbackFullArgs, LogOptions, Logger, LoginInvalidOrgError, LoginOptions, Logs3OverflowInputRow, Logs3OverflowUpload, MastraObservabilityExporter, MetricSummary, NOOP_SPAN, NOOP_SPAN_PERMALINK, NoopSpan, OTELIDGenerator, ObjectFetcher, ObjectMetadata, OtherExperimentLogFields, ParametersSource, ParentExperimentIds, ParentProjectLogIds, ParsedTraceparent, Project, ProjectNameIdMap, PromiseUnless, Prompt, PromptBuilder, PromptContents, PromptDefinition, PromptDefinitionWithTools, PromptOpts, PromptRowWithId, PropagatedState, PropagationContext, ReadonlyAttachment, ReadonlyExperiment, RegisterSandboxOptions, RegisterSandboxResult, Reporter, ReporterBody, SandboxConfig, ScoreSummary, ScorerBuilder, ScorerOpts, SerializedBraintrustState, SetCurrentArg, Span, SpanContext, SpanData, SpanFetcher, SpanImpl, StartSpanArgs, TRACEPARENT_HEADER, TRACESTATE_HEADER, TemplateFormat, TemplateRenderer, TemplateRendererPlugin, TestBackgroundLogger, ToolBuilder, Trace, TraceContextCarrier, TraceContextHeaders, UUIDGenerator, WithTransactionId, X_CACHED_HEADER, _exportsForTestingOnly, _internalGetGlobalState, _internalIso, _internalSetInitialState, addAzureBlobHeaders, agentAssertionScorer, braintrustAISDKTelemetry, braintrustEveHook, braintrustEveInstrumentation, braintrustFlueInstrumentation, braintrustFlueObserver, braintrustStreamChunkSchema, buildLocalSummary, configureInstrumentation, constructLogs3OverflowRequest, createFinalValuePassThroughStream, currentExperiment, currentLogger, currentSpan, deepCopyEvent, default, defaultErrorScoreHandler, deserializePlainStringAsJSON, devNullWritableStream, evaluatorDefinitionSchema, evaluatorDefinitionsSchema, extractTraceContextFromHeaders, flush, getContextManager, getIdGenerator, getPromptVersions, getSpanParentObject, getTemplateRenderer, graph, init, initDataset, initExperiment, initFunction, initLogger, initNodeTestSuite, injectTraceContext, 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, wrapBedrockRuntime, wrapClaudeAgentSDK, wrapCohere, wrapCopilotClient, wrapCursorSDK, wrapGenkit, wrapGoogleADK, wrapGoogleGenAI, wrapGroq, wrapHuggingFace, wrapMastraAgent, wrapMistral, wrapOpenAI, wrapOpenAICodexSDK, wrapOpenAIv4, wrapOpenRouter, wrapOpenRouterAgent, wrapPiCodingAgentSDK, wrapStrandsAgentSDK, wrapTraced, wrapVitest } from './browser.js';
2
2
  import 'zod/v3';