braintrust 3.27.0 → 3.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +1 -1
  2. package/dev/dist/index.d.mts +879 -197
  3. package/dev/dist/index.d.ts +879 -197
  4. package/dev/dist/index.js +2960 -1865
  5. package/dev/dist/index.mjs +2217 -1122
  6. package/dist/apply-auto-instrumentation.js +345 -260
  7. package/dist/apply-auto-instrumentation.mjs +137 -52
  8. package/dist/auto-instrumentations/bundler/esbuild.cjs +124 -7
  9. package/dist/auto-instrumentations/bundler/esbuild.mjs +2 -2
  10. package/dist/auto-instrumentations/bundler/next.cjs +124 -7
  11. package/dist/auto-instrumentations/bundler/next.mjs +3 -3
  12. package/dist/auto-instrumentations/bundler/rollup.cjs +124 -7
  13. package/dist/auto-instrumentations/bundler/rollup.mjs +2 -2
  14. package/dist/auto-instrumentations/bundler/vite.cjs +124 -7
  15. package/dist/auto-instrumentations/bundler/vite.mjs +2 -2
  16. package/dist/auto-instrumentations/bundler/webpack-loader.cjs +124 -7
  17. package/dist/auto-instrumentations/bundler/webpack.cjs +124 -7
  18. package/dist/auto-instrumentations/bundler/webpack.mjs +3 -3
  19. package/dist/auto-instrumentations/{chunk-ZNHTSSGI.mjs → chunk-AOIYCVEL.mjs} +34 -3
  20. package/dist/auto-instrumentations/{chunk-XEYKUBLY.mjs → chunk-DKTGDNA7.mjs} +91 -5
  21. package/dist/auto-instrumentations/{chunk-BW33ULMW.mjs → chunk-OMCZ3MV2.mjs} +1 -1
  22. package/dist/auto-instrumentations/hook.mjs +1186 -161
  23. package/dist/auto-instrumentations/index.cjs +34 -3
  24. package/dist/auto-instrumentations/index.mjs +1 -1
  25. package/dist/browser.d.mts +1388 -75
  26. package/dist/browser.d.ts +1388 -75
  27. package/dist/browser.js +3954 -1124
  28. package/dist/browser.mjs +3954 -1124
  29. package/dist/{chunk-MF7NU6BT.js → chunk-6Z5S7VOU.js} +175 -25
  30. package/dist/{chunk-CZM5JIQL.mjs → chunk-7FA6VP2S.mjs} +172 -22
  31. package/dist/{chunk-YKD22IMR.mjs → chunk-M6XPNJC4.mjs} +2102 -1113
  32. package/dist/{chunk-QRHGVBKU.js → chunk-XLLGRXGR.js} +3273 -2284
  33. package/dist/cli.js +6353 -1483
  34. package/dist/edge-light.d.mts +1 -1
  35. package/dist/edge-light.d.ts +1 -1
  36. package/dist/edge-light.js +3954 -1124
  37. package/dist/edge-light.mjs +3954 -1124
  38. package/dist/index.d.mts +1972 -659
  39. package/dist/index.d.ts +1972 -659
  40. package/dist/index.js +2453 -676
  41. package/dist/index.mjs +1973 -196
  42. package/dist/instrumentation/index.d.mts +738 -15
  43. package/dist/instrumentation/index.d.ts +738 -15
  44. package/dist/instrumentation/index.js +2791 -874
  45. package/dist/instrumentation/index.mjs +2791 -874
  46. package/dist/vitest-evals-reporter.js +16 -16
  47. package/dist/vitest-evals-reporter.mjs +2 -2
  48. package/dist/workerd.d.mts +1 -1
  49. package/dist/workerd.d.ts +1 -1
  50. package/dist/workerd.js +3954 -1124
  51. package/dist/workerd.mjs +3954 -1124
  52. package/package.json +2 -3
  53. package/util/dist/index.d.mts +1596 -109
  54. package/util/dist/index.d.ts +1596 -109
@@ -659,8 +659,6 @@ function newGlobalTracingChannel(nameOrChannels) {
659
659
  var DefaultAsyncLocalStorage = class {
660
660
  constructor() {
661
661
  }
662
- enterWith(_) {
663
- }
664
662
  run(_, callback) {
665
663
  return callback();
666
664
  }
@@ -687,6 +685,118 @@ var iso = {
687
685
  };
688
686
  var isomorph_default = iso;
689
687
 
688
+ // src/debug-logger.ts
689
+ var PREFIX = "[braintrust]";
690
+ var DEBUG_LOG_LEVEL_SYMBOL = /* @__PURE__ */ Symbol.for("braintrust-debug-log-level");
691
+ var LOG_LEVEL_PRIORITY = {
692
+ error: 0,
693
+ warn: 1,
694
+ info: 2,
695
+ debug: 3
696
+ };
697
+ var hasWarnedAboutInvalidEnvValue = false;
698
+ var debugLogStateResolver = void 0;
699
+ function warnInvalidEnvValue(value) {
700
+ if (hasWarnedAboutInvalidEnvValue) {
701
+ return;
702
+ }
703
+ hasWarnedAboutInvalidEnvValue = true;
704
+ console.warn(
705
+ PREFIX,
706
+ `Invalid BRAINTRUST_DEBUG_LOG_LEVEL value "${value}". Expected "error", "warn", "info", or "debug".`
707
+ );
708
+ }
709
+ function normalizeDebugLogLevelOption(option) {
710
+ if (option === false) {
711
+ return void 0;
712
+ }
713
+ if (option === "error" || option === "warn" || option === "info" || option === "debug") {
714
+ return option;
715
+ }
716
+ throw new Error(
717
+ `Invalid debugLogLevel value "${option}". Expected false, "error", "warn", "info", or "debug".`
718
+ );
719
+ }
720
+ function parseDebugLogLevelEnv(value) {
721
+ if (!value) {
722
+ return void 0;
723
+ }
724
+ if (value === "error" || value === "warn" || value === "info" || value === "debug") {
725
+ return value;
726
+ }
727
+ warnInvalidEnvValue(value);
728
+ return void 0;
729
+ }
730
+ function getEnvDebugLogLevel() {
731
+ return parseDebugLogLevelEnv(isomorph_default.getEnv("BRAINTRUST_DEBUG_LOG_LEVEL"));
732
+ }
733
+ function setGlobalDebugLogLevel(level) {
734
+ globalThis[DEBUG_LOG_LEVEL_SYMBOL] = level;
735
+ }
736
+ function resetDebugLoggerForTests() {
737
+ hasWarnedAboutInvalidEnvValue = false;
738
+ setGlobalDebugLogLevel(void 0);
739
+ }
740
+ function setDebugLogStateResolver(resolver) {
741
+ debugLogStateResolver = resolver;
742
+ }
743
+ function resolveDebugLogLevel(state) {
744
+ const stateLevel = _optionalChain([state, 'optionalAccess', _3 => _3.getDebugLogLevel, 'optionalCall', _4 => _4()]);
745
+ const hasStateOverride = _nullishCoalesce(_optionalChain([state, 'optionalAccess', _5 => _5.hasDebugLogLevelOverride, 'optionalCall', _6 => _6()]), () => ( false));
746
+ if (hasStateOverride) {
747
+ return stateLevel;
748
+ }
749
+ const globalLevel = (
750
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
751
+ globalThis[DEBUG_LOG_LEVEL_SYMBOL]
752
+ );
753
+ if (globalLevel !== void 0) {
754
+ return globalLevel === false ? void 0 : globalLevel;
755
+ }
756
+ return getEnvDebugLogLevel();
757
+ }
758
+ function emit(method, state, args) {
759
+ const level = resolveDebugLogLevel(state);
760
+ if (!level || LOG_LEVEL_PRIORITY[method] > LOG_LEVEL_PRIORITY[level]) {
761
+ return;
762
+ }
763
+ if (method === "info") {
764
+ console.log(PREFIX, ...args);
765
+ } else if (method === "debug") {
766
+ console.debug(PREFIX, ...args);
767
+ } else if (method === "warn") {
768
+ console.warn(PREFIX, ...args);
769
+ } else {
770
+ console.error(PREFIX, ...args);
771
+ }
772
+ }
773
+ function createDebugLogger(state) {
774
+ const resolveState = () => _nullishCoalesce(state, () => ( _optionalChain([debugLogStateResolver, 'optionalCall', _7 => _7()])));
775
+ return {
776
+ info(...args) {
777
+ emit("info", resolveState(), args);
778
+ },
779
+ debug(...args) {
780
+ emit("debug", resolveState(), args);
781
+ },
782
+ warn(...args) {
783
+ emit("warn", resolveState(), args);
784
+ },
785
+ error(...args) {
786
+ emit("error", resolveState(), args);
787
+ }
788
+ };
789
+ }
790
+ var debugLogger = {
791
+ ...createDebugLogger(),
792
+ forState(state) {
793
+ return createDebugLogger(state);
794
+ }
795
+ };
796
+ setGlobalHookErrorReporter((error) => {
797
+ debugLogger.error("Global instrumentation hook error:", error);
798
+ });
799
+
690
800
  // src/span-origin.ts
691
801
  var INSTRUMENTATION_NAMES = {
692
802
  AI_SDK: "ai-sdk",
@@ -699,6 +809,7 @@ var INSTRUMENTATION_NAMES = {
699
809
  CLOUDFLARE_THINK: "cloudflare-think",
700
810
  COHERE: "cohere",
701
811
  CURSOR_SDK: "cursor-sdk",
812
+ DEEPSEEK_HARNESS: "deepseek-harness",
702
813
  EVE: "eve",
703
814
  FLUE: "flue",
704
815
  GENKIT: "genkit",
@@ -718,12 +829,13 @@ var INSTRUMENTATION_NAMES = {
718
829
  OPENROUTER: "openrouter",
719
830
  OPENROUTER_AGENT: "openrouter-agent",
720
831
  PI_CODING_AGENT: "pi-coding-agent",
721
- STRANDS_AGENT_SDK: "strands-agent-sdk"
832
+ STRANDS_AGENT_SDK: "strands-agent-sdk",
833
+ VOYAGEAI: "voyageai"
722
834
  };
723
835
  var INTERNAL_SPAN_INSTRUMENTATION_NAME = /* @__PURE__ */ Symbol.for(
724
836
  "braintrust.spanInstrumentationName"
725
837
  );
726
- var SDK_VERSION = true ? "3.27.0" : "0.0.0";
838
+ var SDK_VERSION = true ? "3.29.0" : "0.0.0";
727
839
  function withSpanInstrumentationName(args, instrumentationName) {
728
840
  return {
729
841
  ...args,
@@ -770,10 +882,10 @@ function detectSpanOriginEnvironment(explicit) {
770
882
  return { type: "server", name: "ecs" };
771
883
  }
772
884
  const awsExecutionEnv = isomorph_default.getEnv("AWS_EXECUTION_ENV");
773
- if (_optionalChain([awsExecutionEnv, 'optionalAccess', _3 => _3.startsWith, 'call', _4 => _4("AWS_ECS_")])) {
885
+ if (_optionalChain([awsExecutionEnv, 'optionalAccess', _8 => _8.startsWith, 'call', _9 => _9("AWS_ECS_")])) {
774
886
  return { type: "server", name: "ecs" };
775
887
  }
776
- if (_optionalChain([awsExecutionEnv, 'optionalAccess', _5 => _5.startsWith, 'call', _6 => _6("AWS_Lambda_")])) {
888
+ if (_optionalChain([awsExecutionEnv, 'optionalAccess', _10 => _10.startsWith, 'call', _11 => _11("AWS_Lambda_")])) {
777
889
  return { type: "server", name: "aws_lambda" };
778
890
  }
779
891
  if (isomorph_default.getEnv("AWS_LAMBDA_FUNCTION_NAME")) {
@@ -812,7 +924,7 @@ function isSpanInstrumentationName(value) {
812
924
  return Object.values(INSTRUMENTATION_NAMES).some((name) => name === value);
813
925
  }
814
926
  function firstPresent(entries) {
815
- return _optionalChain([entries, 'access', _7 => _7.find, 'call', _8 => _8(([key]) => Boolean(isomorph_default.getEnv(key))), 'optionalAccess', _9 => _9[1]]);
927
+ return _optionalChain([entries, 'access', _12 => _12.find, 'call', _13 => _13(([key]) => Boolean(isomorph_default.getEnv(key))), 'optionalAccess', _14 => _14[1]]);
816
928
  }
817
929
  function deploymentModeEnvironment(_key, value) {
818
930
  if (!value) return void 0;
@@ -994,6 +1106,10 @@ var aiSDKChannels = defineChannels(
994
1106
  channelName: "generateText",
995
1107
  kind: "async"
996
1108
  }),
1109
+ generateImage: channel({
1110
+ channelName: "generateImage",
1111
+ kind: "async"
1112
+ }),
997
1113
  streamText: channel({
998
1114
  channelName: "streamText",
999
1115
  kind: "async"
@@ -1565,6 +1681,30 @@ var strandsAgentSDKChannels = defineChannels(
1565
1681
  { instrumentationName: INSTRUMENTATION_NAMES.STRANDS_AGENT_SDK }
1566
1682
  );
1567
1683
 
1684
+ // src/instrumentation/plugins/voyageai-channels.ts
1685
+ var voyageAIChannels = defineChannels(
1686
+ "voyageai",
1687
+ {
1688
+ embed: channel({
1689
+ channelName: "embed",
1690
+ kind: "async"
1691
+ }),
1692
+ multimodalEmbed: channel({
1693
+ channelName: "multimodalEmbed",
1694
+ kind: "async"
1695
+ }),
1696
+ rerank: channel({
1697
+ channelName: "rerank",
1698
+ kind: "async"
1699
+ }),
1700
+ contextualizedEmbed: channel({
1701
+ channelName: "contextualizedEmbed",
1702
+ kind: "async"
1703
+ })
1704
+ },
1705
+ { instrumentationName: INSTRUMENTATION_NAMES.VOYAGEAI }
1706
+ );
1707
+
1568
1708
  // src/instrumentation/plugins/cloudflare-agents-channels.ts
1569
1709
  var cloudflareAgentsChannels = defineChannels(
1570
1710
  "agents",
@@ -1649,7 +1789,10 @@ var envIntegrationAliases = {
1649
1789
  "langchain-js": "langchain",
1650
1790
  "@langchain": "langchain",
1651
1791
  langgraph: "langgraph",
1652
- langsmith: "langsmith"
1792
+ langsmith: "langsmith",
1793
+ voyage: "voyageai",
1794
+ "voyage-ai": "voyageai",
1795
+ voyageai: "voyageai"
1653
1796
  };
1654
1797
  function getDefaultInstrumentationIntegrations() {
1655
1798
  return {
@@ -1684,6 +1827,7 @@ function getDefaultInstrumentationIntegrations() {
1684
1827
  langchain: true,
1685
1828
  langgraph: true,
1686
1829
  langsmith: true,
1830
+ voyageai: true,
1687
1831
  piCodingAgent: true,
1688
1832
  strandsAgentSDK: true,
1689
1833
  cloudflareAgents: true
@@ -1703,7 +1847,7 @@ function readDisabledInstrumentationEnvConfig(disabledList) {
1703
1847
  return { integrations };
1704
1848
  }
1705
1849
  function isInstrumentationIntegrationDisabled(integrations, ...names) {
1706
- return names.some((name) => _optionalChain([integrations, 'optionalAccess', _10 => _10[name]]) === false);
1850
+ return names.some((name) => _optionalChain([integrations, 'optionalAccess', _15 => _15[name]]) === false);
1707
1851
  }
1708
1852
 
1709
1853
  // src/auto-instrumentations/loader/mastra-observability-patch.ts
@@ -1879,6 +2023,22 @@ function patchMastraSource(source, target, format) {
1879
2023
  return source + OBSERVABILITY_APPEND_BODY;
1880
2024
  }
1881
2025
 
2026
+ // src/instrumentation/plugins/cloudflare-ai-chat-channels.ts
2027
+ var cloudflareAIChatChannels = defineChannels(
2028
+ "@cloudflare/ai-chat",
2029
+ {
2030
+ runExclusiveChatTurn: channel({
2031
+ channelName: "AIChatAgent._runExclusiveChatTurn",
2032
+ kind: "async"
2033
+ }),
2034
+ onChatResponse: channel({
2035
+ channelName: "AIChatAgent.onChatResponse",
2036
+ kind: "sync-stream"
2037
+ })
2038
+ },
2039
+ { instrumentationName: INSTRUMENTATION_NAMES.CLOUDFLARE_AI_CHAT }
2040
+ );
2041
+
1882
2042
  // src/instrumentation/plugins/openai-agents-channels.ts
1883
2043
  var openAIAgentsCoreChannels = defineChannels(
1884
2044
  "@openai/agents-core",
@@ -1919,21 +2079,6 @@ var langChainChannels = defineChannels(
1919
2079
  { instrumentationName: INSTRUMENTATION_NAMES.LANGCHAIN }
1920
2080
  );
1921
2081
 
1922
- // src/instrumentation/plugins/cloudflare-ai-chat-channels.ts
1923
- var cloudflareAIChatChannels = defineChannels(
1924
- "@cloudflare/ai-chat",
1925
- {
1926
- runExclusiveChatTurn: channel({
1927
- channelName: "AIChatAgent._runExclusiveChatTurn",
1928
- kind: "async"
1929
- }),
1930
- onChatResponse: channel({
1931
- channelName: "AIChatAgent.onChatResponse",
1932
- kind: "sync-stream"
1933
- })
1934
- },
1935
- { instrumentationName: INSTRUMENTATION_NAMES.CLOUDFLARE_AI_CHAT }
1936
- );
1937
2082
 
1938
2083
 
1939
2084
 
@@ -1989,4 +2134,9 @@ var cloudflareAIChatChannels = defineChannels(
1989
2134
 
1990
2135
 
1991
2136
 
1992
- exports.__export = __export; exports.GLOBAL_INSTRUMENTATION_HOOKS_KEY = GLOBAL_INSTRUMENTATION_HOOKS_KEY; exports.GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION = GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION; exports.GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND = GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND; exports.GLOBAL_INSTRUMENTATION_HOOK_BRAND = GLOBAL_INSTRUMENTATION_HOOK_BRAND; exports.setGlobalHookErrorReporter = setGlobalHookErrorReporter; exports.isomorph_default = isomorph_default; exports.INSTRUMENTATION_NAMES = INSTRUMENTATION_NAMES; exports.withSpanInstrumentationName = withSpanInstrumentationName; exports.getSpanInstrumentationName = getSpanInstrumentationName; exports.detectSpanOriginEnvironment = detectSpanOriginEnvironment; exports.mergeSpanOriginContext = mergeSpanOriginContext; exports.openAIChannels = openAIChannels; exports.openAICodexChannels = openAICodexChannels; exports.anthropicChannels = anthropicChannels; exports.aiSDKChannels = aiSDKChannels; exports.harnessAgentChannels = harnessAgentChannels; exports.claudeAgentSDKChannels = claudeAgentSDKChannels; exports.cloudflareThinkChannels = cloudflareThinkChannels; exports.cursorSDKChannels = cursorSDKChannels; exports.openAIAgentsCoreChannels = openAIAgentsCoreChannels; exports.googleGenAIChannels = googleGenAIChannels; exports.huggingFaceChannels = huggingFaceChannels; exports.isSupportedHuggingFaceTransformersTask = isSupportedHuggingFaceTransformersTask; exports.registerHuggingFaceTransformersPipeline = registerHuggingFaceTransformersPipeline; exports.getHuggingFaceTransformersPipelineInfo = getHuggingFaceTransformersPipelineInfo; exports.huggingFaceTransformersChannels = huggingFaceTransformersChannels; exports.openRouterAgentChannels = openRouterAgentChannels; exports.openRouterChannels = openRouterChannels; exports.mistralChannels = mistralChannels; exports.ollamaChannels = ollamaChannels; exports.googleADKChannels = googleADKChannels; exports.cohereChannels = cohereChannels; exports.groqChannels = groqChannels; exports.bedrockRuntimeChannels = bedrockRuntimeChannels; exports.smithyCoreChannels = smithyCoreChannels; exports.smithyClientChannels = smithyClientChannels; exports.genkitChannels = genkitChannels; exports.genkitCoreChannels = genkitCoreChannels; exports.gitHubCopilotChannels = gitHubCopilotChannels; exports.flueChannels = flueChannels; exports.langChainChannels = langChainChannels; exports.langSmithChannels = langSmithChannels; exports.piCodingAgentChannels = piCodingAgentChannels; exports.strandsAgentSDKChannels = strandsAgentSDKChannels; exports.cloudflareAIChatChannels = cloudflareAIChatChannels; exports.cloudflareAgentsChannels = cloudflareAgentsChannels; exports.getDefaultInstrumentationIntegrations = getDefaultInstrumentationIntegrations; exports.readDisabledInstrumentationEnvConfig = readDisabledInstrumentationEnvConfig; exports.isInstrumentationIntegrationDisabled = isInstrumentationIntegrationDisabled; exports.installMastraExporterFactory = installMastraExporterFactory; exports.classifyMastraTarget = classifyMastraTarget; exports.patchMastraSource = patchMastraSource;
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+ exports.__export = __export; exports.GLOBAL_INSTRUMENTATION_HOOKS_KEY = GLOBAL_INSTRUMENTATION_HOOKS_KEY; exports.GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION = GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION; exports.GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND = GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND; exports.GLOBAL_INSTRUMENTATION_HOOK_BRAND = GLOBAL_INSTRUMENTATION_HOOK_BRAND; exports.isomorph_default = isomorph_default; exports.normalizeDebugLogLevelOption = normalizeDebugLogLevelOption; exports.getEnvDebugLogLevel = getEnvDebugLogLevel; exports.setGlobalDebugLogLevel = setGlobalDebugLogLevel; exports.resetDebugLoggerForTests = resetDebugLoggerForTests; exports.setDebugLogStateResolver = setDebugLogStateResolver; exports.debugLogger = debugLogger; exports.INSTRUMENTATION_NAMES = INSTRUMENTATION_NAMES; exports.withSpanInstrumentationName = withSpanInstrumentationName; exports.getSpanInstrumentationName = getSpanInstrumentationName; exports.detectSpanOriginEnvironment = detectSpanOriginEnvironment; exports.mergeSpanOriginContext = mergeSpanOriginContext; exports.openAIChannels = openAIChannels; exports.openAICodexChannels = openAICodexChannels; exports.anthropicChannels = anthropicChannels; exports.aiSDKChannels = aiSDKChannels; exports.harnessAgentChannels = harnessAgentChannels; exports.claudeAgentSDKChannels = claudeAgentSDKChannels; exports.cloudflareThinkChannels = cloudflareThinkChannels; exports.cursorSDKChannels = cursorSDKChannels; exports.openAIAgentsCoreChannels = openAIAgentsCoreChannels; exports.googleGenAIChannels = googleGenAIChannels; exports.huggingFaceChannels = huggingFaceChannels; exports.isSupportedHuggingFaceTransformersTask = isSupportedHuggingFaceTransformersTask; exports.registerHuggingFaceTransformersPipeline = registerHuggingFaceTransformersPipeline; exports.getHuggingFaceTransformersPipelineInfo = getHuggingFaceTransformersPipelineInfo; exports.huggingFaceTransformersChannels = huggingFaceTransformersChannels; exports.openRouterAgentChannels = openRouterAgentChannels; exports.openRouterChannels = openRouterChannels; exports.mistralChannels = mistralChannels; exports.ollamaChannels = ollamaChannels; exports.googleADKChannels = googleADKChannels; exports.cohereChannels = cohereChannels; exports.groqChannels = groqChannels; exports.bedrockRuntimeChannels = bedrockRuntimeChannels; exports.smithyCoreChannels = smithyCoreChannels; exports.smithyClientChannels = smithyClientChannels; exports.genkitChannels = genkitChannels; exports.genkitCoreChannels = genkitCoreChannels; exports.gitHubCopilotChannels = gitHubCopilotChannels; exports.flueChannels = flueChannels; exports.langChainChannels = langChainChannels; exports.langSmithChannels = langSmithChannels; exports.piCodingAgentChannels = piCodingAgentChannels; exports.strandsAgentSDKChannels = strandsAgentSDKChannels; exports.voyageAIChannels = voyageAIChannels; exports.cloudflareAIChatChannels = cloudflareAIChatChannels; exports.cloudflareAgentsChannels = cloudflareAgentsChannels; exports.getDefaultInstrumentationIntegrations = getDefaultInstrumentationIntegrations; exports.readDisabledInstrumentationEnvConfig = readDisabledInstrumentationEnvConfig; exports.isInstrumentationIntegrationDisabled = isInstrumentationIntegrationDisabled; exports.installMastraExporterFactory = installMastraExporterFactory; exports.classifyMastraTarget = classifyMastraTarget; exports.patchMastraSource = patchMastraSource;
@@ -659,8 +659,6 @@ function newGlobalTracingChannel(nameOrChannels) {
659
659
  var DefaultAsyncLocalStorage = class {
660
660
  constructor() {
661
661
  }
662
- enterWith(_) {
663
- }
664
662
  run(_, callback) {
665
663
  return callback();
666
664
  }
@@ -687,6 +685,118 @@ var iso = {
687
685
  };
688
686
  var isomorph_default = iso;
689
687
 
688
+ // src/debug-logger.ts
689
+ var PREFIX = "[braintrust]";
690
+ var DEBUG_LOG_LEVEL_SYMBOL = /* @__PURE__ */ Symbol.for("braintrust-debug-log-level");
691
+ var LOG_LEVEL_PRIORITY = {
692
+ error: 0,
693
+ warn: 1,
694
+ info: 2,
695
+ debug: 3
696
+ };
697
+ var hasWarnedAboutInvalidEnvValue = false;
698
+ var debugLogStateResolver = void 0;
699
+ function warnInvalidEnvValue(value) {
700
+ if (hasWarnedAboutInvalidEnvValue) {
701
+ return;
702
+ }
703
+ hasWarnedAboutInvalidEnvValue = true;
704
+ console.warn(
705
+ PREFIX,
706
+ `Invalid BRAINTRUST_DEBUG_LOG_LEVEL value "${value}". Expected "error", "warn", "info", or "debug".`
707
+ );
708
+ }
709
+ function normalizeDebugLogLevelOption(option) {
710
+ if (option === false) {
711
+ return void 0;
712
+ }
713
+ if (option === "error" || option === "warn" || option === "info" || option === "debug") {
714
+ return option;
715
+ }
716
+ throw new Error(
717
+ `Invalid debugLogLevel value "${option}". Expected false, "error", "warn", "info", or "debug".`
718
+ );
719
+ }
720
+ function parseDebugLogLevelEnv(value) {
721
+ if (!value) {
722
+ return void 0;
723
+ }
724
+ if (value === "error" || value === "warn" || value === "info" || value === "debug") {
725
+ return value;
726
+ }
727
+ warnInvalidEnvValue(value);
728
+ return void 0;
729
+ }
730
+ function getEnvDebugLogLevel() {
731
+ return parseDebugLogLevelEnv(isomorph_default.getEnv("BRAINTRUST_DEBUG_LOG_LEVEL"));
732
+ }
733
+ function setGlobalDebugLogLevel(level) {
734
+ globalThis[DEBUG_LOG_LEVEL_SYMBOL] = level;
735
+ }
736
+ function resetDebugLoggerForTests() {
737
+ hasWarnedAboutInvalidEnvValue = false;
738
+ setGlobalDebugLogLevel(void 0);
739
+ }
740
+ function setDebugLogStateResolver(resolver) {
741
+ debugLogStateResolver = resolver;
742
+ }
743
+ function resolveDebugLogLevel(state) {
744
+ const stateLevel = state?.getDebugLogLevel?.();
745
+ const hasStateOverride = state?.hasDebugLogLevelOverride?.() ?? false;
746
+ if (hasStateOverride) {
747
+ return stateLevel;
748
+ }
749
+ const globalLevel = (
750
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
751
+ globalThis[DEBUG_LOG_LEVEL_SYMBOL]
752
+ );
753
+ if (globalLevel !== void 0) {
754
+ return globalLevel === false ? void 0 : globalLevel;
755
+ }
756
+ return getEnvDebugLogLevel();
757
+ }
758
+ function emit(method, state, args) {
759
+ const level = resolveDebugLogLevel(state);
760
+ if (!level || LOG_LEVEL_PRIORITY[method] > LOG_LEVEL_PRIORITY[level]) {
761
+ return;
762
+ }
763
+ if (method === "info") {
764
+ console.log(PREFIX, ...args);
765
+ } else if (method === "debug") {
766
+ console.debug(PREFIX, ...args);
767
+ } else if (method === "warn") {
768
+ console.warn(PREFIX, ...args);
769
+ } else {
770
+ console.error(PREFIX, ...args);
771
+ }
772
+ }
773
+ function createDebugLogger(state) {
774
+ const resolveState = () => state ?? debugLogStateResolver?.();
775
+ return {
776
+ info(...args) {
777
+ emit("info", resolveState(), args);
778
+ },
779
+ debug(...args) {
780
+ emit("debug", resolveState(), args);
781
+ },
782
+ warn(...args) {
783
+ emit("warn", resolveState(), args);
784
+ },
785
+ error(...args) {
786
+ emit("error", resolveState(), args);
787
+ }
788
+ };
789
+ }
790
+ var debugLogger = {
791
+ ...createDebugLogger(),
792
+ forState(state) {
793
+ return createDebugLogger(state);
794
+ }
795
+ };
796
+ setGlobalHookErrorReporter((error) => {
797
+ debugLogger.error("Global instrumentation hook error:", error);
798
+ });
799
+
690
800
  // src/span-origin.ts
691
801
  var INSTRUMENTATION_NAMES = {
692
802
  AI_SDK: "ai-sdk",
@@ -699,6 +809,7 @@ var INSTRUMENTATION_NAMES = {
699
809
  CLOUDFLARE_THINK: "cloudflare-think",
700
810
  COHERE: "cohere",
701
811
  CURSOR_SDK: "cursor-sdk",
812
+ DEEPSEEK_HARNESS: "deepseek-harness",
702
813
  EVE: "eve",
703
814
  FLUE: "flue",
704
815
  GENKIT: "genkit",
@@ -718,12 +829,13 @@ var INSTRUMENTATION_NAMES = {
718
829
  OPENROUTER: "openrouter",
719
830
  OPENROUTER_AGENT: "openrouter-agent",
720
831
  PI_CODING_AGENT: "pi-coding-agent",
721
- STRANDS_AGENT_SDK: "strands-agent-sdk"
832
+ STRANDS_AGENT_SDK: "strands-agent-sdk",
833
+ VOYAGEAI: "voyageai"
722
834
  };
723
835
  var INTERNAL_SPAN_INSTRUMENTATION_NAME = /* @__PURE__ */ Symbol.for(
724
836
  "braintrust.spanInstrumentationName"
725
837
  );
726
- var SDK_VERSION = true ? "3.27.0" : "0.0.0";
838
+ var SDK_VERSION = true ? "3.29.0" : "0.0.0";
727
839
  function withSpanInstrumentationName(args, instrumentationName) {
728
840
  return {
729
841
  ...args,
@@ -994,6 +1106,10 @@ var aiSDKChannels = defineChannels(
994
1106
  channelName: "generateText",
995
1107
  kind: "async"
996
1108
  }),
1109
+ generateImage: channel({
1110
+ channelName: "generateImage",
1111
+ kind: "async"
1112
+ }),
997
1113
  streamText: channel({
998
1114
  channelName: "streamText",
999
1115
  kind: "async"
@@ -1565,6 +1681,30 @@ var strandsAgentSDKChannels = defineChannels(
1565
1681
  { instrumentationName: INSTRUMENTATION_NAMES.STRANDS_AGENT_SDK }
1566
1682
  );
1567
1683
 
1684
+ // src/instrumentation/plugins/voyageai-channels.ts
1685
+ var voyageAIChannels = defineChannels(
1686
+ "voyageai",
1687
+ {
1688
+ embed: channel({
1689
+ channelName: "embed",
1690
+ kind: "async"
1691
+ }),
1692
+ multimodalEmbed: channel({
1693
+ channelName: "multimodalEmbed",
1694
+ kind: "async"
1695
+ }),
1696
+ rerank: channel({
1697
+ channelName: "rerank",
1698
+ kind: "async"
1699
+ }),
1700
+ contextualizedEmbed: channel({
1701
+ channelName: "contextualizedEmbed",
1702
+ kind: "async"
1703
+ })
1704
+ },
1705
+ { instrumentationName: INSTRUMENTATION_NAMES.VOYAGEAI }
1706
+ );
1707
+
1568
1708
  // src/instrumentation/plugins/cloudflare-agents-channels.ts
1569
1709
  var cloudflareAgentsChannels = defineChannels(
1570
1710
  "agents",
@@ -1649,7 +1789,10 @@ var envIntegrationAliases = {
1649
1789
  "langchain-js": "langchain",
1650
1790
  "@langchain": "langchain",
1651
1791
  langgraph: "langgraph",
1652
- langsmith: "langsmith"
1792
+ langsmith: "langsmith",
1793
+ voyage: "voyageai",
1794
+ "voyage-ai": "voyageai",
1795
+ voyageai: "voyageai"
1653
1796
  };
1654
1797
  function getDefaultInstrumentationIntegrations() {
1655
1798
  return {
@@ -1684,6 +1827,7 @@ function getDefaultInstrumentationIntegrations() {
1684
1827
  langchain: true,
1685
1828
  langgraph: true,
1686
1829
  langsmith: true,
1830
+ voyageai: true,
1687
1831
  piCodingAgent: true,
1688
1832
  strandsAgentSDK: true,
1689
1833
  cloudflareAgents: true
@@ -1879,6 +2023,22 @@ function patchMastraSource(source, target, format) {
1879
2023
  return source + OBSERVABILITY_APPEND_BODY;
1880
2024
  }
1881
2025
 
2026
+ // src/instrumentation/plugins/cloudflare-ai-chat-channels.ts
2027
+ var cloudflareAIChatChannels = defineChannels(
2028
+ "@cloudflare/ai-chat",
2029
+ {
2030
+ runExclusiveChatTurn: channel({
2031
+ channelName: "AIChatAgent._runExclusiveChatTurn",
2032
+ kind: "async"
2033
+ }),
2034
+ onChatResponse: channel({
2035
+ channelName: "AIChatAgent.onChatResponse",
2036
+ kind: "sync-stream"
2037
+ })
2038
+ },
2039
+ { instrumentationName: INSTRUMENTATION_NAMES.CLOUDFLARE_AI_CHAT }
2040
+ );
2041
+
1882
2042
  // src/instrumentation/plugins/openai-agents-channels.ts
1883
2043
  var openAIAgentsCoreChannels = defineChannels(
1884
2044
  "@openai/agents-core",
@@ -1919,30 +2079,19 @@ var langChainChannels = defineChannels(
1919
2079
  { instrumentationName: INSTRUMENTATION_NAMES.LANGCHAIN }
1920
2080
  );
1921
2081
 
1922
- // src/instrumentation/plugins/cloudflare-ai-chat-channels.ts
1923
- var cloudflareAIChatChannels = defineChannels(
1924
- "@cloudflare/ai-chat",
1925
- {
1926
- runExclusiveChatTurn: channel({
1927
- channelName: "AIChatAgent._runExclusiveChatTurn",
1928
- kind: "async"
1929
- }),
1930
- onChatResponse: channel({
1931
- channelName: "AIChatAgent.onChatResponse",
1932
- kind: "sync-stream"
1933
- })
1934
- },
1935
- { instrumentationName: INSTRUMENTATION_NAMES.CLOUDFLARE_AI_CHAT }
1936
- );
1937
-
1938
2082
  export {
1939
2083
  __export,
1940
2084
  GLOBAL_INSTRUMENTATION_HOOKS_KEY,
1941
2085
  GLOBAL_INSTRUMENTATION_HOOKS_PROTOCOL_VERSION,
1942
2086
  GLOBAL_INSTRUMENTATION_HOOKS_REGISTRY_BRAND,
1943
2087
  GLOBAL_INSTRUMENTATION_HOOK_BRAND,
1944
- setGlobalHookErrorReporter,
1945
2088
  isomorph_default,
2089
+ normalizeDebugLogLevelOption,
2090
+ getEnvDebugLogLevel,
2091
+ setGlobalDebugLogLevel,
2092
+ resetDebugLoggerForTests,
2093
+ setDebugLogStateResolver,
2094
+ debugLogger,
1946
2095
  INSTRUMENTATION_NAMES,
1947
2096
  withSpanInstrumentationName,
1948
2097
  getSpanInstrumentationName,
@@ -1981,6 +2130,7 @@ export {
1981
2130
  langSmithChannels,
1982
2131
  piCodingAgentChannels,
1983
2132
  strandsAgentSDKChannels,
2133
+ voyageAIChannels,
1984
2134
  cloudflareAIChatChannels,
1985
2135
  cloudflareAgentsChannels,
1986
2136
  getDefaultInstrumentationIntegrations,