@librechat/agents 3.3.13 → 3.4.1

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 (192) hide show
  1. package/dist/cjs/graphs/Graph.cjs +121 -27
  2. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  3. package/dist/cjs/hooks/HookRegistry.cjs +83 -0
  4. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  5. package/dist/cjs/hooks/executeHooks.cjs +60 -14
  6. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  7. package/dist/cjs/hooks/index.cjs.map +1 -1
  8. package/dist/cjs/hooks/types.cjs +2 -0
  9. package/dist/cjs/hooks/types.cjs.map +1 -1
  10. package/dist/cjs/llm/anthropic/index.cjs +35 -206
  11. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  12. package/dist/cjs/llm/bedrock/index.cjs +121 -241
  13. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  14. package/dist/cjs/llm/google/index.cjs +19 -12
  15. package/dist/cjs/llm/google/index.cjs.map +1 -1
  16. package/dist/cjs/llm/init.cjs +3 -3
  17. package/dist/cjs/llm/invoke.cjs +2 -2
  18. package/dist/cjs/llm/mistral/index.cjs +26 -0
  19. package/dist/cjs/llm/mistral/index.cjs.map +1 -0
  20. package/dist/cjs/llm/openai/index.cjs +82 -80
  21. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  22. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  23. package/dist/cjs/llm/providers.cjs +19 -19
  24. package/dist/cjs/llm/providers.cjs.map +1 -1
  25. package/dist/cjs/llm/stream/chunkAdapters.cjs +198 -0
  26. package/dist/cjs/llm/stream/chunkAdapters.cjs.map +1 -0
  27. package/dist/cjs/llm/stream/smoother.cjs +369 -0
  28. package/dist/cjs/llm/stream/smoother.cjs.map +1 -0
  29. package/dist/cjs/llm/vertexai/index.cjs +13 -1
  30. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  31. package/dist/cjs/main.cjs +25 -16
  32. package/dist/cjs/messages/format.cjs +40 -23
  33. package/dist/cjs/messages/format.cjs.map +1 -1
  34. package/dist/cjs/run.cjs +82 -15
  35. package/dist/cjs/run.cjs.map +1 -1
  36. package/dist/cjs/session/AgentSession.cjs +37 -2
  37. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  38. package/dist/cjs/stream.cjs +1 -1
  39. package/dist/cjs/summarization/node.cjs +6 -3
  40. package/dist/cjs/summarization/node.cjs.map +1 -1
  41. package/dist/cjs/tools/BashExecutor.cjs +1 -1
  42. package/dist/cjs/tools/CodeExecutor.cjs +1 -1
  43. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +1 -1
  44. package/dist/cjs/tools/ToolNode.cjs +316 -94
  45. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  46. package/dist/cjs/tools/ToolSearch.cjs +1 -1
  47. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +664 -80
  48. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  49. package/dist/cjs/tools/subagent/SubagentReplay.cjs +175 -0
  50. package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -0
  51. package/dist/cjs/tools/toolOutputReferences.cjs +20 -0
  52. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  53. package/dist/cjs/utils/index.cjs +2 -2
  54. package/dist/cjs/utils/tokens.cjs +76 -29
  55. package/dist/cjs/utils/tokens.cjs.map +1 -1
  56. package/dist/esm/graphs/Graph.mjs +121 -27
  57. package/dist/esm/graphs/Graph.mjs.map +1 -1
  58. package/dist/esm/hooks/HookRegistry.mjs +83 -0
  59. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  60. package/dist/esm/hooks/executeHooks.mjs +60 -14
  61. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  62. package/dist/esm/hooks/index.mjs.map +1 -1
  63. package/dist/esm/hooks/types.mjs +2 -1
  64. package/dist/esm/hooks/types.mjs.map +1 -1
  65. package/dist/esm/llm/anthropic/index.mjs +34 -205
  66. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  67. package/dist/esm/llm/bedrock/index.mjs +120 -240
  68. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  69. package/dist/esm/llm/google/index.mjs +19 -12
  70. package/dist/esm/llm/google/index.mjs.map +1 -1
  71. package/dist/esm/llm/init.mjs +1 -1
  72. package/dist/esm/llm/invoke.mjs +2 -2
  73. package/dist/esm/llm/mistral/index.mjs +26 -0
  74. package/dist/esm/llm/mistral/index.mjs.map +1 -0
  75. package/dist/esm/llm/openai/index.mjs +82 -80
  76. package/dist/esm/llm/openai/index.mjs.map +1 -1
  77. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  78. package/dist/esm/llm/providers.mjs +3 -3
  79. package/dist/esm/llm/providers.mjs.map +1 -1
  80. package/dist/esm/llm/stream/chunkAdapters.mjs +195 -0
  81. package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -0
  82. package/dist/esm/llm/stream/smoother.mjs +365 -0
  83. package/dist/esm/llm/stream/smoother.mjs.map +1 -0
  84. package/dist/esm/llm/vertexai/index.mjs +13 -1
  85. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  86. package/dist/esm/main.mjs +13 -11
  87. package/dist/esm/messages/format.mjs +40 -23
  88. package/dist/esm/messages/format.mjs.map +1 -1
  89. package/dist/esm/run.mjs +83 -16
  90. package/dist/esm/run.mjs.map +1 -1
  91. package/dist/esm/session/AgentSession.mjs +37 -2
  92. package/dist/esm/session/AgentSession.mjs.map +1 -1
  93. package/dist/esm/stream.mjs +1 -1
  94. package/dist/esm/summarization/node.mjs +6 -3
  95. package/dist/esm/summarization/node.mjs.map +1 -1
  96. package/dist/esm/tools/BashExecutor.mjs +1 -1
  97. package/dist/esm/tools/CodeExecutor.mjs +1 -1
  98. package/dist/esm/tools/ProgrammaticToolCalling.mjs +1 -1
  99. package/dist/esm/tools/ToolNode.mjs +317 -95
  100. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  101. package/dist/esm/tools/ToolSearch.mjs +1 -1
  102. package/dist/esm/tools/subagent/SubagentExecutor.mjs +665 -81
  103. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  104. package/dist/esm/tools/subagent/SubagentReplay.mjs +168 -0
  105. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -0
  106. package/dist/esm/tools/toolOutputReferences.mjs +20 -0
  107. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  108. package/dist/esm/utils/index.mjs +2 -2
  109. package/dist/esm/utils/tokens.mjs +76 -30
  110. package/dist/esm/utils/tokens.mjs.map +1 -1
  111. package/dist/types/graphs/Graph.d.ts +19 -1
  112. package/dist/types/hooks/HookRegistry.d.ts +10 -1
  113. package/dist/types/hooks/executeHooks.d.ts +5 -1
  114. package/dist/types/hooks/index.d.ts +2 -2
  115. package/dist/types/hooks/types.d.ts +12 -0
  116. package/dist/types/index.d.ts +3 -0
  117. package/dist/types/llm/google/index.d.ts +2 -0
  118. package/dist/types/llm/mistral/index.d.ts +11 -0
  119. package/dist/types/llm/openai/index.d.ts +20 -4
  120. package/dist/types/llm/openrouter/index.d.ts +4 -1
  121. package/dist/types/llm/stream/chunkAdapters.d.ts +48 -0
  122. package/dist/types/llm/stream/smoother.d.ts +95 -0
  123. package/dist/types/llm/vertexai/index.d.ts +2 -0
  124. package/dist/types/run.d.ts +4 -1
  125. package/dist/types/session/AgentSession.d.ts +1 -0
  126. package/dist/types/tools/ToolNode.d.ts +23 -15
  127. package/dist/types/tools/subagent/SubagentExecutor.d.ts +49 -7
  128. package/dist/types/tools/subagent/SubagentReplay.d.ts +81 -0
  129. package/dist/types/tools/toolOutputReferences.d.ts +12 -0
  130. package/dist/types/types/graph.d.ts +5 -5
  131. package/dist/types/types/hitl.d.ts +15 -0
  132. package/dist/types/types/llm.d.ts +21 -14
  133. package/dist/types/utils/tokens.d.ts +10 -0
  134. package/package.json +6 -2
  135. package/src/graphs/Graph.ts +257 -52
  136. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +48 -9
  137. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +1 -1
  138. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +80 -0
  139. package/src/hooks/HookRegistry.ts +151 -1
  140. package/src/hooks/__tests__/HookRegistry.test.ts +96 -0
  141. package/src/hooks/__tests__/executeHooks.test.ts +160 -0
  142. package/src/hooks/executeHooks.ts +133 -15
  143. package/src/hooks/index.ts +3 -1
  144. package/src/hooks/types.ts +16 -0
  145. package/src/index.ts +8 -0
  146. package/src/llm/anthropic/index.ts +85 -354
  147. package/src/llm/bedrock/index.ts +174 -390
  148. package/src/llm/bedrock/llm.spec.ts +2 -0
  149. package/src/llm/bedrock/streamSealDispatch.test.ts +76 -0
  150. package/src/llm/custom-chat-models.smoke.test.ts +16 -1
  151. package/src/llm/google/index.ts +17 -18
  152. package/src/llm/google/streamSmoothing.test.ts +121 -0
  153. package/src/llm/mistral/index.ts +33 -0
  154. package/src/llm/mistral/streamSmoothing.test.ts +97 -0
  155. package/src/llm/openai/deepseek.test.ts +56 -0
  156. package/src/llm/openai/index.ts +119 -126
  157. package/src/llm/openrouter/index.ts +4 -1
  158. package/src/llm/providers.ts +3 -3
  159. package/src/llm/stream/chunkAdapters.test.ts +202 -0
  160. package/src/llm/stream/chunkAdapters.ts +317 -0
  161. package/src/llm/stream/reassembly.test.ts +241 -0
  162. package/src/llm/stream/smoother.bench.test.ts +155 -0
  163. package/src/llm/stream/smoother.test.ts +519 -0
  164. package/src/llm/stream/smoother.ts +574 -0
  165. package/src/llm/vertexai/index.ts +17 -1
  166. package/src/llm/vertexai/streamSmoothing.test.ts +109 -0
  167. package/src/messages/format.ts +54 -26
  168. package/src/messages/formatAgentMessages.reducer.test.ts +162 -0
  169. package/src/messages/formatAgentMessages.steer.test.ts +16 -11
  170. package/src/messages/formatAgentMessages.test.ts +7 -2
  171. package/src/run.ts +164 -18
  172. package/src/session/AgentSession.ts +52 -2
  173. package/src/session/__tests__/JsonlSessionStore.test.ts +53 -0
  174. package/src/specs/subagent.test.ts +44 -0
  175. package/src/specs/tokens.test.ts +159 -14
  176. package/src/summarization/__tests__/node.test.ts +32 -14
  177. package/src/summarization/node.ts +15 -11
  178. package/src/tools/ToolNode.ts +631 -157
  179. package/src/tools/__tests__/SubagentExecutor.test.ts +590 -7
  180. package/src/tools/__tests__/SubagentReplay.test.ts +300 -0
  181. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +208 -2
  182. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +486 -2
  183. package/src/tools/__tests__/hitl.test.ts +234 -5
  184. package/src/tools/__tests__/subagentHooks.test.ts +1040 -62
  185. package/src/tools/__tests__/toolOutputReferences.test.ts +19 -2
  186. package/src/tools/subagent/SubagentExecutor.ts +1438 -136
  187. package/src/tools/subagent/SubagentReplay.ts +575 -0
  188. package/src/tools/toolOutputReferences.ts +40 -1
  189. package/src/types/graph.ts +5 -5
  190. package/src/types/hitl.ts +16 -0
  191. package/src/types/llm.ts +53 -36
  192. package/src/utils/tokens.ts +115 -30
package/dist/cjs/main.cjs CHANGED
@@ -22,23 +22,25 @@ const require_handoffCue = require("./messages/handoffCue.cjs");
22
22
  const require_reducer = require("./messages/reducer.cjs");
23
23
  const require_recency = require("./messages/recency.cjs");
24
24
  require("./messages/index.cjs");
25
+ const require_graph = require("./utils/graph.cjs");
26
+ const require_llm = require("./utils/llm.cjs");
27
+ const require_proxy = require("./utils/proxy.cjs");
25
28
  const require_handlers = require("./tools/handlers.cjs");
26
29
  const require_streamLimits = require("./llm/streamLimits.cjs");
27
30
  const require_intentArg = require("./tools/intentArg.cjs");
28
- const require_llm = require("./utils/llm.cjs");
29
31
  const require_stream = require("./stream.cjs");
30
- const require_index$2 = require("./llm/openai/index.cjs");
31
- const require_index$3 = require("./llm/openrouter/index.cjs");
32
- const require_providers = require("./llm/providers.cjs");
33
- const require_errors = require("./utils/errors.cjs");
34
- const require_preempt = require("./llm/preempt.cjs");
35
- const require_graph = require("./utils/graph.cjs");
36
- const require_proxy = require("./utils/proxy.cjs");
37
32
  const require_events = require("./events.cjs");
38
33
  const require_handlers$1 = require("./utils/handlers.cjs");
39
34
  const require_run = require("./utils/run.cjs");
40
35
  const require_schema = require("./utils/schema.cjs");
36
+ const require_errors = require("./utils/errors.cjs");
41
37
  require("./utils/index.cjs");
38
+ const require_smoother = require("./llm/stream/smoother.cjs");
39
+ const require_index$3 = require("./llm/mistral/index.cjs");
40
+ const require_index$4 = require("./llm/openai/index.cjs");
41
+ const require_index$5 = require("./llm/openrouter/index.cjs");
42
+ const require_providers = require("./llm/providers.cjs");
43
+ const require_preempt = require("./llm/preempt.cjs");
42
44
  const require_init = require("./llm/init.cjs");
43
45
  const require_invoke = require("./llm/invoke.cjs");
44
46
  const require_bashAst = require("./tools/local/bashAst.cjs");
@@ -55,7 +57,7 @@ const require_executeHooks = require("./hooks/executeHooks.cjs");
55
57
  const require_createToolPolicyHook = require("./hooks/createToolPolicyHook.cjs");
56
58
  const require_createWorkspacePolicyHook = require("./hooks/createWorkspacePolicyHook.cjs");
57
59
  const require_types = require("./hooks/types.cjs");
58
- const require_index$5 = require("./hooks/index.cjs");
60
+ const require_index$6 = require("./hooks/index.cjs");
59
61
  const require_LocalProgrammaticToolCalling = require("./tools/local/LocalProgrammaticToolCalling.cjs");
60
62
  const require_BashExecutor = require("./tools/BashExecutor.cjs");
61
63
  const require_LocalExecutionTools = require("./tools/local/LocalExecutionTools.cjs");
@@ -75,7 +77,7 @@ const require_ToolNode = require("./tools/ToolNode.cjs");
75
77
  const require_SubagentExecutor = require("./tools/subagent/SubagentExecutor.cjs");
76
78
  require("./tools/subagent/index.cjs");
77
79
  const require_SubagentTool = require("./tools/SubagentTool.cjs");
78
- const require_index$9 = require("./summarization/index.cjs");
80
+ const require_index$10 = require("./summarization/index.cjs");
79
81
  const require_request = require("./llm/request.cjs");
80
82
  const require_schema$1 = require("./tools/schema.cjs");
81
83
  const require_fake = require("./llm/fake.cjs");
@@ -165,7 +167,7 @@ exports.CalculatorToolDescription = require_Calculator.CalculatorToolDescription
165
167
  exports.CalculatorToolName = require_Calculator.CalculatorToolName;
166
168
  exports.Callback = require_enum.Callback;
167
169
  exports.ChatModelStreamHandler = require_stream.ChatModelStreamHandler;
168
- exports.ChatOpenRouter = require_index$3.ChatOpenRouter;
170
+ exports.ChatOpenRouter = require_index$5.ChatOpenRouter;
169
171
  exports.CloudflareBashExecutionToolDescription = require_CloudflareSandboxTools.CloudflareBashExecutionToolDescription;
170
172
  exports.CloudflareCodeExecutionToolDescription = require_CloudflareSandboxTools.CloudflareCodeExecutionToolDescription;
171
173
  exports.CodeApiRequestError = require_CodeExecutor.CodeApiRequestError;
@@ -183,7 +185,8 @@ exports.CommonEvents = require_enum.CommonEvents;
183
185
  exports.CompileCheckToolName = require_CompileCheckTool.CompileCheckToolName;
184
186
  exports.Constants = require_enum.Constants;
185
187
  exports.ContentTypes = require_enum.ContentTypes;
186
- exports.CustomOpenAIClient = require_index$2.CustomOpenAIClient;
188
+ exports.CustomChatMistralAI = require_index$3.CustomChatMistralAI;
189
+ exports.CustomOpenAIClient = require_index$4.CustomOpenAIClient;
187
190
  exports.DATE_RANGE = require_schema$2.DATE_RANGE;
188
191
  exports.DEFAULT_CONTEXT_PRUNING_SETTINGS = require_contextPruningSettings.DEFAULT_CONTEXT_PRUNING_SETTINGS;
189
192
  exports.DEFAULT_COUNTRY_DESCRIPTION = require_schema$2.DEFAULT_COUNTRY_DESCRIPTION;
@@ -195,6 +198,7 @@ exports.DEFAULT_QUERY_DESCRIPTION = require_schema$2.DEFAULT_QUERY_DESCRIPTION;
195
198
  exports.DEFAULT_RECURSION_LIMIT = require_constants.DEFAULT_RECURSION_LIMIT;
196
199
  exports.DEFAULT_RESERVE_RATIO = require_prune.DEFAULT_RESERVE_RATIO;
197
200
  exports.DEFAULT_RETAIN_RECENT_TURNS = require_recency.DEFAULT_RETAIN_RECENT_TURNS;
201
+ exports.DEFAULT_STREAM_DELAY = require_smoother.DEFAULT_STREAM_DELAY;
198
202
  exports.DEFAULT_TOOL_TOKEN_MULTIPLIER = require_constants.DEFAULT_TOOL_TOKEN_MULTIPLIER;
199
203
  Object.defineProperty(exports, "DynamicStructuredTool", {
200
204
  enumerable: true,
@@ -212,8 +216,8 @@ exports.GraphNodeKeys = require_enum.GraphNodeKeys;
212
216
  exports.HARD_MAX_TOOL_RESULT_CHARS = require_truncation.HARD_MAX_TOOL_RESULT_CHARS;
213
217
  exports.HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE = require_truncation.HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE;
214
218
  exports.HOOK_EVENTS = require_types.HOOK_EVENTS;
215
- exports.HOOK_INJECTED_MESSAGES_CAPABLE = require_index$5.HOOK_INJECTED_MESSAGES_CAPABLE;
216
- exports.HOOK_PREEMPT_BOUNDARY_CAPABLE = require_index$5.HOOK_PREEMPT_BOUNDARY_CAPABLE;
219
+ exports.HOOK_INJECTED_MESSAGES_CAPABLE = require_index$6.HOOK_INJECTED_MESSAGES_CAPABLE;
220
+ exports.HOOK_PREEMPT_BOUNDARY_CAPABLE = require_index$6.HOOK_PREEMPT_BOUNDARY_CAPABLE;
217
221
  exports.HandlerRegistry = require_events.HandlerRegistry;
218
222
  exports.HookRegistry = require_HookRegistry.HookRegistry;
219
223
  Object.defineProperty(exports, "HumanMessage", {
@@ -334,6 +338,7 @@ Object.defineProperty(exports, "SystemMessage", {
334
338
  }
335
339
  });
336
340
  exports.TMP_SCRATCH_OUTPUT_REMINDER = require_CodeExecutor.TMP_SCRATCH_OUTPUT_REMINDER;
341
+ exports.TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY = require_types.TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY;
337
342
  exports.TestChatStreamHandler = require_events.TestChatStreamHandler;
338
343
  exports.TestLLMStreamHandler = require_events.TestLLMStreamHandler;
339
344
  exports.TitleMethod = require_enum.TitleMethod;
@@ -357,6 +362,7 @@ exports.ToolSearchToolDefinition = require_ToolSearch.ToolSearchToolDefinition;
357
362
  exports.ToolSearchToolDescription = require_ToolSearch.ToolSearchToolDescription;
358
363
  exports.ToolSearchToolName = require_ToolSearch.ToolSearchToolName;
359
364
  exports.ToolSearchToolSchema = require_ToolSearch.ToolSearchToolSchema;
365
+ exports.UnsafeTokenMeasurementError = require_tokens.UnsafeTokenMeasurementError;
360
366
  exports.WebSearchToolDefinition = require_schema$2.WebSearchToolDefinition;
361
367
  exports.WebSearchToolDescription = require_schema$2.WebSearchToolDescription;
362
368
  exports.WebSearchToolName = require_schema$2.WebSearchToolName;
@@ -365,7 +371,7 @@ exports._createBashProgramForTests = require_LocalProgrammaticToolCalling._creat
365
371
  exports._resetLocalEngineWarningsForTests = require_LocalExecutionEngine._resetLocalEngineWarningsForTests;
366
372
  exports._resetRipgrepCacheForTests = require_LocalCodingTools._resetRipgrepCacheForTests;
367
373
  exports._resetSyntaxCheckProbeCacheForTests = require_syntaxCheck._resetSyntaxCheckProbeCacheForTests;
368
- exports._resetUnrecognizedTriggerWarnings = require_index$9._resetUnrecognizedTriggerWarnings;
374
+ exports._resetUnrecognizedTriggerWarnings = require_index$10._resetUnrecognizedTriggerWarnings;
369
375
  exports.addBedrockCacheControl = require_cache.addBedrockCacheControl;
370
376
  exports.addBedrockTailCacheControl = require_cache.addBedrockTailCacheControl;
371
377
  exports.addCacheControl = require_cache.addCacheControl;
@@ -408,6 +414,7 @@ exports.cloneMessage = require_cache.cloneMessage;
408
414
  exports.coalesceAdjacentUserTurns = require_alternation.coalesceAdjacentUserTurns;
409
415
  exports.composeAbortSignals = require_misc.composeAbortSignals;
410
416
  exports.composeEventHandlers = require_events.composeEventHandlers;
417
+ exports.computeAdaptivePieceSize = require_smoother.computeAdaptivePieceSize;
411
418
  exports.convertInjectedMessages = require_injected.convertInjectedMessages;
412
419
  exports.convertMessagesToContent = require_core.convertMessagesToContent;
413
420
  exports.countNestedGroups = require_ToolSearch.countNestedGroups;
@@ -644,6 +651,7 @@ exports.resolveLocalToolRegistry = require_resolveLocalExecutionTools.resolveLoc
644
651
  exports.resolveLocalToolsForBinding = require_resolveLocalExecutionTools.resolveLocalToolsForBinding;
645
652
  exports.resolvePromptCacheTtl = require_cache.resolvePromptCacheTtl;
646
653
  exports.resolveSearchOutcome = require_tool.resolveSearchOutcome;
654
+ exports.resolveStreamDelay = require_smoother.resolveStreamDelay;
647
655
  exports.resolveStreamLimits = require_streamLimits.resolveStreamLimits;
648
656
  exports.resolveSubagentConfigs = require_SubagentExecutor.resolveSubagentConfigs;
649
657
  exports.resolveToolOutcome = require_intentArg.resolveToolOutcome;
@@ -658,8 +666,9 @@ exports.serializeToolCallInput = require_prune.serializeToolCallInput;
658
666
  exports.shellQuote = require_LocalExecutionEngine.shellQuote;
659
667
  exports.shiftIndexTokenCountMap = require_format.shiftIndexTokenCountMap;
660
668
  exports.shouldBypassProxy = require_proxy.shouldBypassProxy;
661
- exports.shouldTriggerSummarization = require_index$9.shouldTriggerSummarization;
669
+ exports.shouldTriggerSummarization = require_index$10.shouldTriggerSummarization;
662
670
  exports.sleep = require_run.sleep;
671
+ exports.smoothStream = require_smoother.smoothStream;
663
672
  exports.spawnLocalProcess = require_LocalExecutionEngine.spawnLocalProcess;
664
673
  exports.splitAtRecencyBoundary = require_recency.splitAtRecencyBoundary;
665
674
  exports.strictAlternationProviders = require_alternation.strictAlternationProviders;
@@ -202,6 +202,10 @@ function endsWithSteerMessage(formatted) {
202
202
  */
203
203
  function formatAssistantMessage(message, options) {
204
204
  const formattedMessages = [];
205
+ const appendFormattedMessage = (formattedMessage) => {
206
+ stampSourceMessageIdentity(formattedMessage, options?.sourceMessageId, formattedMessages.length);
207
+ formattedMessages.push(formattedMessage);
208
+ };
205
209
  let currentContent = [];
206
210
  let lastAIMessage = null;
207
211
  let hasReasoning = false;
@@ -270,7 +274,7 @@ function formatAssistantMessage(message, options) {
270
274
  if (currentContent.some((content) => content.type !== "text")) {
271
275
  currentContent.push(part);
272
276
  lastAIMessage = createAIMessage(require_langchain.toLangChainContent(currentContent));
273
- formattedMessages.push(lastAIMessage);
277
+ appendFormattedMessage(lastAIMessage);
274
278
  currentContent = [];
275
279
  continue;
276
280
  }
@@ -280,12 +284,12 @@ function formatAssistantMessage(message, options) {
280
284
  }, "");
281
285
  content = `${content}\n${getTextContent(part)}`.trim();
282
286
  lastAIMessage = createAIMessage(content);
283
- formattedMessages.push(lastAIMessage);
287
+ appendFormattedMessage(lastAIMessage);
284
288
  currentContent = [];
285
289
  continue;
286
290
  }
287
291
  lastAIMessage = createAIMessage(getTextContent(part));
288
- formattedMessages.push(lastAIMessage);
292
+ appendFormattedMessage(lastAIMessage);
289
293
  } else if (part.type === "tool_call") {
290
294
  if (part.tool_call == null) continue;
291
295
  const toolCallId = getToolCallId(part);
@@ -305,7 +309,7 @@ function formatAssistantMessage(message, options) {
305
309
  }
306
310
  if (!lastAIMessage) {
307
311
  lastAIMessage = createAIMessage("");
308
- formattedMessages.push(lastAIMessage);
312
+ appendFormattedMessage(lastAIMessage);
309
313
  } else attachPendingReasoningContent(lastAIMessage);
310
314
  const tool_call = _tool_call;
311
315
  let args = _args;
@@ -328,7 +332,7 @@ function formatAssistantMessage(message, options) {
328
332
  if (!lastAIMessage.tool_calls) lastAIMessage.tool_calls = [];
329
333
  lastAIMessage.tool_calls.push(tool_call);
330
334
  }
331
- formattedMessages.push(withMessageRole(new _langchain_core_messages.ToolMessage({
335
+ appendFormattedMessage(withMessageRole(new _langchain_core_messages.ToolMessage({
332
336
  tool_call_id: tool_call.id ?? "",
333
337
  name: tool_call.name,
334
338
  content: formatToolCallOutput(output)
@@ -341,12 +345,12 @@ function formatAssistantMessage(message, options) {
341
345
  if (currentContent.length > 0) {
342
346
  if (currentContent.some((content) => content.type !== "text")) {
343
347
  lastAIMessage = createAIMessage(require_langchain.toLangChainContent(currentContent));
344
- formattedMessages.push(lastAIMessage);
348
+ appendFormattedMessage(lastAIMessage);
345
349
  } else {
346
350
  const flushed = currentContent.reduce((acc, curr) => `${acc}${getTextContent(curr)}\n`, "").trim();
347
351
  if (flushed.length > 0) {
348
352
  lastAIMessage = createAIMessage(flushed);
349
- formattedMessages.push(lastAIMessage);
353
+ appendFormattedMessage(lastAIMessage);
350
354
  }
351
355
  }
352
356
  currentContent = [];
@@ -359,12 +363,11 @@ function formatAssistantMessage(message, options) {
359
363
  * assistant reasoning silently vanishes on replay.
360
364
  */
361
365
  lastAIMessage = createAIMessage("");
362
- formattedMessages.push(lastAIMessage);
366
+ appendFormattedMessage(lastAIMessage);
363
367
  }
364
368
  const steerPart = part;
365
- const steerContent = Array.isArray(steerPart.media) && steerPart.media.length > 0 ? require_langchain.toLangChainContent(steerPart.media) : steerPart.steer ?? "";
366
- formattedMessages.push(withMessageRole(new _langchain_core_messages.HumanMessage({
367
- content: steerContent,
369
+ appendFormattedMessage(withMessageRole(new _langchain_core_messages.HumanMessage({
370
+ content: Array.isArray(steerPart.media) && steerPart.media.length > 0 ? require_langchain.toLangChainContent(steerPart.media) : steerPart.steer ?? "",
368
371
  additional_kwargs: {
369
372
  role: "user",
370
373
  source: "steer"
@@ -388,14 +391,14 @@ function formatAssistantMessage(message, options) {
388
391
  let content = "";
389
392
  for (const part of currentContent) {
390
393
  if (part.type !== "text") {
391
- formattedMessages.push(createAIMessage(require_langchain.toLangChainContent(currentContent)));
394
+ appendFormattedMessage(createAIMessage(require_langchain.toLangChainContent(currentContent)));
392
395
  return formattedMessages;
393
396
  }
394
397
  content += `${getTextContent(part)}\n`;
395
398
  }
396
399
  content = content.trim();
397
- if (content) formattedMessages.push(createAIMessage(content));
398
- } else if (currentContent.length > 0) formattedMessages.push(createAIMessage(require_langchain.toLangChainContent(currentContent)));
400
+ if (content) appendFormattedMessage(createAIMessage(content));
401
+ } else if (currentContent.length > 0) appendFormattedMessage(createAIMessage(require_langchain.toLangChainContent(currentContent)));
399
402
  return formattedMessages;
400
403
  }
401
404
  function getSourceMessageId(message) {
@@ -405,6 +408,20 @@ function getSourceMessageId(message) {
405
408
  return normalized.length > 0 ? normalized : void 0;
406
409
  }
407
410
  /**
411
+ * Keeps the first formatted message backward-compatible with its persisted
412
+ * source id and preserves source correlation on every derived message.
413
+ * Derived ids remain unset so the reducer can assign collision-free identities
414
+ * during its existing pass. This also prevents invented provider-shaped ids
415
+ * from leaking into provider request payloads.
416
+ */
417
+ function stampSourceMessageIdentity(message, sourceMessageId, derivedIndex = 0) {
418
+ if (sourceMessageId == null) return;
419
+ message.additional_kwargs.sourceMessageId = sourceMessageId;
420
+ if (derivedIndex !== 0) return;
421
+ message.id = sourceMessageId;
422
+ message.lc_kwargs.id = sourceMessageId;
423
+ }
424
+ /**
408
425
  * Labels all agent content for parallel patterns (fan-out/fan-in)
409
426
  * Groups consecutive content by agent and wraps with clear labels
410
427
  */
@@ -748,7 +765,7 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
748
765
  message,
749
766
  langChain: true
750
767
  });
751
- if (sourceMessageId != null && sourceMessageId !== "") formattedMessage.id = sourceMessageId;
768
+ stampSourceMessageIdentity(formattedMessage, sourceMessageId);
752
769
  flushSteerAnchor(formattedMessage);
753
770
  messages.push(formattedMessage);
754
771
  indexMapping[i] = [messages.length - 1];
@@ -850,9 +867,9 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
850
867
  const formattedMessages = formatAssistantMessage(processedMessage, {
851
868
  preserveUnpairedServerToolUses: i === payload.length - 1,
852
869
  preserveReasoningContent: options?.preserveReasoningContent ?? options?.provider === "deepseek",
853
- provider: options?.provider
870
+ provider: options?.provider,
871
+ sourceMessageId
854
872
  });
855
- if (sourceMessageId != null && sourceMessageId !== "") for (const formattedMessage of formattedMessages) formattedMessage.id = sourceMessageId;
856
873
  /**
857
874
  * A steer that ends an assistant message leaves the replay on a
858
875
  * `HumanMessage`. The next payload message is itself a user turn, so the
@@ -876,12 +893,12 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
876
893
  * the model may simply never answer. So the intent is recorded and flushed
877
894
  * only when a message actually follows.
878
895
  *
879
- * Pushed AFTER the id stamping above, deliberately. `messagesStateReducer`
880
- * treats a repeated id as replace-in-place, so an anchor carrying the
881
- * shared `sourceMessageId` would overwrite the steer it exists to protect.
882
- * Left unstamped, it reaches the reducer with a null id and is assigned a
883
- * fresh one. `endsWithSteerMessage` reads only `additional_kwargs.source`,
884
- * so the deferral cannot change which messages get anchored.
896
+ * Pushed AFTER source identity stamping above, deliberately. The anchor is
897
+ * synthetic rather than derived from the persisted assistant entry, so it
898
+ * must not claim that entry's source metadata. Left unstamped, it reaches
899
+ * the reducer with a null id and is assigned a fresh one.
900
+ * `endsWithSteerMessage` reads only `additional_kwargs.source`, so the
901
+ * deferral cannot change which messages get anchored.
885
902
  */
886
903
  /**
887
904
  * Guarded on emission: an assistant entry whose blocks all filtered away