@librechat/agents 3.2.64 → 3.2.66

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 (106) hide show
  1. package/dist/cjs/graphs/Graph.cjs +18 -2
  2. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  3. package/dist/cjs/instrumentation.cjs +15 -3
  4. package/dist/cjs/instrumentation.cjs.map +1 -1
  5. package/dist/cjs/langfuseToolOutputTracing.cjs +1 -2
  6. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  7. package/dist/cjs/langfuseTraceShaping.cjs +51 -24
  8. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  9. package/dist/cjs/llm/anthropic/index.cjs +73 -9
  10. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  11. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  12. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +49 -9
  13. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  14. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +3 -1
  15. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  16. package/dist/cjs/llm/anthropic/utils/stream_events.cjs +337 -0
  17. package/dist/cjs/llm/anthropic/utils/stream_events.cjs.map +1 -0
  18. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +8 -0
  19. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  20. package/dist/cjs/tools/BashExecutor.cjs +9 -8
  21. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  22. package/dist/cjs/tools/CodeExecutor.cjs +9 -7
  23. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  24. package/dist/cjs/tools/search/crw-scraper.cjs +165 -0
  25. package/dist/cjs/tools/search/crw-scraper.cjs.map +1 -0
  26. package/dist/cjs/tools/search/crw-search.cjs +105 -0
  27. package/dist/cjs/tools/search/crw-search.cjs.map +1 -0
  28. package/dist/cjs/tools/search/search.cjs +4 -2
  29. package/dist/cjs/tools/search/search.cjs.map +1 -1
  30. package/dist/cjs/tools/search/tool.cjs +15 -3
  31. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  32. package/dist/esm/graphs/Graph.mjs +18 -2
  33. package/dist/esm/graphs/Graph.mjs.map +1 -1
  34. package/dist/esm/instrumentation.mjs +15 -3
  35. package/dist/esm/instrumentation.mjs.map +1 -1
  36. package/dist/esm/langfuseToolOutputTracing.mjs +1 -2
  37. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  38. package/dist/esm/langfuseTraceShaping.mjs +51 -24
  39. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  40. package/dist/esm/llm/anthropic/index.mjs +73 -9
  41. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  42. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  43. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +49 -9
  44. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  45. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +3 -2
  46. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  47. package/dist/esm/llm/anthropic/utils/stream_events.mjs +337 -0
  48. package/dist/esm/llm/anthropic/utils/stream_events.mjs.map +1 -0
  49. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +8 -0
  50. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  51. package/dist/esm/tools/BashExecutor.mjs +9 -8
  52. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  53. package/dist/esm/tools/CodeExecutor.mjs +9 -7
  54. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  55. package/dist/esm/tools/search/crw-scraper.mjs +163 -0
  56. package/dist/esm/tools/search/crw-scraper.mjs.map +1 -0
  57. package/dist/esm/tools/search/crw-search.mjs +103 -0
  58. package/dist/esm/tools/search/crw-search.mjs.map +1 -0
  59. package/dist/esm/tools/search/search.mjs +4 -2
  60. package/dist/esm/tools/search/search.mjs.map +1 -1
  61. package/dist/esm/tools/search/tool.mjs +15 -3
  62. package/dist/esm/tools/search/tool.mjs.map +1 -1
  63. package/dist/types/graphs/Graph.d.ts +2 -0
  64. package/dist/types/langfuseTraceShaping.d.ts +12 -6
  65. package/dist/types/llm/anthropic/index.d.ts +2 -0
  66. package/dist/types/llm/anthropic/types.d.ts +2 -0
  67. package/dist/types/llm/anthropic/utils/message_outputs.d.ts +1 -2
  68. package/dist/types/llm/anthropic/utils/stream_events.d.ts +25 -0
  69. package/dist/types/tools/BashExecutor.d.ts +7 -6
  70. package/dist/types/tools/CodeExecutor.d.ts +7 -5
  71. package/dist/types/tools/search/crw-scraper.d.ts +41 -0
  72. package/dist/types/tools/search/crw-search.d.ts +4 -0
  73. package/dist/types/tools/search/types.d.ts +88 -3
  74. package/dist/types/types/graph.d.ts +10 -3
  75. package/package.json +1 -1
  76. package/src/graphs/Graph.ts +36 -3
  77. package/src/instrumentation.ts +20 -0
  78. package/src/langfuseToolOutputTracing.ts +2 -4
  79. package/src/langfuseTraceShaping.ts +73 -20
  80. package/src/llm/anthropic/index.ts +134 -10
  81. package/src/llm/anthropic/inherited-content-utils.spec.ts +10 -5
  82. package/src/llm/anthropic/inherited-stream-events.spec.ts +513 -9
  83. package/src/llm/anthropic/llm.spec.ts +100 -16
  84. package/src/llm/anthropic/types.ts +3 -0
  85. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +110 -0
  86. package/src/llm/anthropic/utils/message_inputs.ts +75 -3
  87. package/src/llm/anthropic/utils/message_outputs.ts +10 -2
  88. package/src/llm/anthropic/utils/stream_events.ts +471 -0
  89. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +122 -0
  90. package/src/llm/bedrock/utils/message_inputs.ts +13 -0
  91. package/src/specs/langfuse-instrumentation.test.ts +64 -0
  92. package/src/specs/langfuse-routing.integration.test.ts +49 -4
  93. package/src/specs/langfuse-tool-output-tracing.test.ts +5 -4
  94. package/src/specs/langfuse-trace-shaping.test.ts +80 -9
  95. package/src/specs/subagent.test.ts +180 -0
  96. package/src/tools/BashExecutor.ts +9 -8
  97. package/src/tools/CodeExecutor.ts +9 -7
  98. package/src/tools/__tests__/BashExecutor.test.ts +16 -5
  99. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +17 -6
  100. package/src/tools/search/crw-scraper.ts +244 -0
  101. package/src/tools/search/crw-search.ts +167 -0
  102. package/src/tools/search/crw.test.ts +836 -0
  103. package/src/tools/search/search.ts +7 -1
  104. package/src/tools/search/tool.ts +23 -3
  105. package/src/tools/search/types.ts +103 -3
  106. package/src/types/graph.ts +10 -3
@@ -23,6 +23,7 @@ const require_graph = require("../utils/graph.cjs");
23
23
  const require_llm = require("../utils/llm.cjs");
24
24
  const require_handlers = require("../tools/handlers.cjs");
25
25
  const require_toolOutputReferences = require("../tools/toolOutputReferences.cjs");
26
+ const require_events$1 = require("../events.cjs");
26
27
  const require_run = require("../utils/run.cjs");
27
28
  require("../utils/index.cjs");
28
29
  const require_toolCache = require("../llm/openrouter/toolCache.cjs");
@@ -52,6 +53,13 @@ let nanoid = require("nanoid");
52
53
  const { AGENT, TOOLS, SUMMARIZE } = require_enum.GraphNodeKeys;
53
54
  /** Minimum relative variance before calibrated toolSchemaTokens overrides current value. */
54
55
  const CALIBRATION_VARIANCE_THRESHOLD = .15;
56
+ function createToolHandlerRegistry(source) {
57
+ const toolHandler = source?.getHandler("on_tool_execute");
58
+ if (toolHandler == null) return;
59
+ const registry = new require_events$1.HandlerRegistry();
60
+ registry.register("on_tool_execute", toolHandler);
61
+ return registry;
62
+ }
55
63
  /**
56
64
  * Start index of the span post-prune formatters can mutate in place: the
57
65
  * trailing tool batch plus its owning AI message (artifact formatting touches
@@ -242,6 +250,8 @@ var Graph = class {
242
250
  /** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */
243
251
  invokedToolIds;
244
252
  handlerRegistry;
253
+ /** Host registry retained only for forwarding tools from nested child graphs. */
254
+ parentToolHandlerRegistry;
245
255
  /**
246
256
  * True when event-driven tool execution can be routed through callbacks even
247
257
  * though this graph intentionally does not own the full handler registry.
@@ -324,6 +334,7 @@ var Graph = class {
324
334
  this.prelimMessageIdsByStepKey = /* @__PURE__ */ new Map();
325
335
  this.invokedToolIds = void 0;
326
336
  this.handlerRegistry = void 0;
337
+ this.parentToolHandlerRegistry = void 0;
327
338
  this.hookRegistry = void 0;
328
339
  this.humanInTheLoop = void 0;
329
340
  this.toolOutputReferences = void 0;
@@ -602,10 +613,12 @@ var StandardGraph = class StandardGraph extends Graph {
602
613
  return keyList.some((key) => key === void 0);
603
614
  }
604
615
  getRunMessages() {
616
+ if (this.messages == null) return this.cachedRunMessages;
605
617
  if (this.messages.length === 0 && this.cachedRunMessages != null) return this.cachedRunMessages;
606
618
  return this.messages.slice(this.startIndex);
607
619
  }
608
620
  getContentParts() {
621
+ if (this.messages == null) return;
609
622
  return require_core.convertMessagesToContent(this.messages.slice(this.startIndex));
610
623
  }
611
624
  getCalibrationRatio() {
@@ -622,6 +635,7 @@ var StandardGraph = class StandardGraph extends Graph {
622
635
  * Get all run steps, optionally filtered by agent ID
623
636
  */
624
637
  getRunSteps(agentId) {
638
+ if (this.contentData == null) return [];
625
639
  if (agentId == null || agentId === "") return [...this.contentData];
626
640
  return this.contentData.filter((step) => step.agentId === agentId);
627
641
  }
@@ -1240,7 +1254,7 @@ var StandardGraph = class StandardGraph extends Graph {
1240
1254
  if (agentContext.subagentConfigs != null && agentContext.subagentConfigs.length > 0 && effectiveSubagentDepth > 0) {
1241
1255
  const resolvedConfigs = require_SubagentExecutor.resolveSubagentConfigs(agentContext.subagentConfigs, agentContext);
1242
1256
  if (resolvedConfigs.length > 0) {
1243
- const getParentHandlerRegistry = () => this.handlerRegistry;
1257
+ const getParentHandlerRegistry = () => this.handlerRegistry ?? this.parentToolHandlerRegistry;
1244
1258
  const executor = new require_SubagentExecutor.SubagentExecutor({
1245
1259
  configs: new Map(resolvedConfigs.map((c) => [c.type, c])),
1246
1260
  parentSignal: this.signal,
@@ -1257,6 +1271,7 @@ var StandardGraph = class StandardGraph extends Graph {
1257
1271
  maxDepth: effectiveSubagentDepth,
1258
1272
  createChildGraph: (input) => {
1259
1273
  const childGraph = new StandardGraph(input);
1274
+ const toolHandlerRegistry = createToolHandlerRegistry(getParentHandlerRegistry());
1260
1275
  childGraph.hookRegistry = this.hookRegistry;
1261
1276
  /**
1262
1277
  * Do not propagate `humanInTheLoop` into the child graph yet:
@@ -1269,7 +1284,8 @@ var StandardGraph = class StandardGraph extends Graph {
1269
1284
  childGraph.codeSessionToolNames = this.codeSessionToolNames;
1270
1285
  childGraph.interruptingToolNames = this.interruptingToolNames;
1271
1286
  childGraph.toolExecution = this.toolExecution;
1272
- childGraph.eventToolExecutionAvailable = this.handlerRegistry?.getHandler("on_tool_execute") != null;
1287
+ childGraph.parentToolHandlerRegistry = toolHandlerRegistry;
1288
+ childGraph.eventToolExecutionAvailable = toolHandlerRegistry != null;
1273
1289
  return childGraph;
1274
1290
  }
1275
1291
  });