@librechat/agents 3.4.0 → 3.4.2

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 (204) hide show
  1. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  2. package/dist/cjs/graphs/Graph.cjs +165 -57
  3. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  4. package/dist/cjs/graphs/MultiAgentGraph.cjs +81 -33
  5. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  6. package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs +14 -0
  7. package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs.map +1 -0
  8. package/dist/cjs/graphs/createGraph.cjs +15 -0
  9. package/dist/cjs/graphs/createGraph.cjs.map +1 -0
  10. package/dist/cjs/graphs/index.cjs +1 -0
  11. package/dist/cjs/hooks/HookRegistry.cjs +83 -0
  12. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  13. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +1 -1
  14. package/dist/cjs/hooks/executeHooks.cjs +60 -14
  15. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  16. package/dist/cjs/hooks/index.cjs.map +1 -1
  17. package/dist/cjs/hooks/types.cjs +2 -0
  18. package/dist/cjs/hooks/types.cjs.map +1 -1
  19. package/dist/cjs/llm/init.cjs +3 -3
  20. package/dist/cjs/llm/invoke.cjs +2 -2
  21. package/dist/cjs/main.cjs +34 -24
  22. package/dist/cjs/messages/format.cjs +40 -23
  23. package/dist/cjs/messages/format.cjs.map +1 -1
  24. package/dist/cjs/run.cjs +130 -53
  25. package/dist/cjs/run.cjs.map +1 -1
  26. package/dist/cjs/session/AgentSession.cjs +37 -2
  27. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  28. package/dist/cjs/session/JsonlSessionStore.cjs +2 -2
  29. package/dist/cjs/stream.cjs +1 -1
  30. package/dist/cjs/summarization/node.cjs +6 -3
  31. package/dist/cjs/summarization/node.cjs.map +1 -1
  32. package/dist/cjs/tools/BashExecutor.cjs +1 -1
  33. package/dist/cjs/tools/CodeExecutor.cjs +1 -1
  34. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +1 -1
  35. package/dist/cjs/tools/SubagentTool.cjs +4 -4
  36. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  37. package/dist/cjs/tools/ToolNode.cjs +321 -95
  38. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  39. package/dist/cjs/tools/ToolSearch.cjs +1 -1
  40. package/dist/cjs/tools/eagerEventExecution.cjs +1 -0
  41. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +3 -3
  42. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +2 -2
  43. package/dist/cjs/tools/search/rerankers.cjs +154 -1
  44. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  45. package/dist/cjs/tools/search/tool.cjs +4 -1
  46. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  47. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs +601 -0
  48. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs.map +1 -0
  49. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +1114 -233
  50. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  51. package/dist/cjs/tools/subagent/SubagentReplay.cjs +177 -0
  52. package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -0
  53. package/dist/cjs/tools/subagent/childGraphConfig.cjs +278 -0
  54. package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -0
  55. package/dist/cjs/tools/subagent/index.cjs +1 -0
  56. package/dist/cjs/tools/subagent/runtimeLimits.cjs +5 -0
  57. package/dist/cjs/tools/subagent/runtimeLimits.cjs.map +1 -0
  58. package/dist/cjs/tools/toolOutputReferences.cjs +20 -0
  59. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  60. package/dist/cjs/utils/index.cjs +2 -2
  61. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  62. package/dist/esm/graphs/Graph.mjs +165 -57
  63. package/dist/esm/graphs/Graph.mjs.map +1 -1
  64. package/dist/esm/graphs/MultiAgentGraph.mjs +81 -33
  65. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  66. package/dist/esm/graphs/applyGraphRuntimeConfig.mjs +14 -0
  67. package/dist/esm/graphs/applyGraphRuntimeConfig.mjs.map +1 -0
  68. package/dist/esm/graphs/createGraph.mjs +15 -0
  69. package/dist/esm/graphs/createGraph.mjs.map +1 -0
  70. package/dist/esm/graphs/index.mjs +1 -0
  71. package/dist/esm/hooks/HookRegistry.mjs +83 -0
  72. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  73. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +1 -1
  74. package/dist/esm/hooks/executeHooks.mjs +60 -14
  75. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  76. package/dist/esm/hooks/index.mjs.map +1 -1
  77. package/dist/esm/hooks/types.mjs +2 -1
  78. package/dist/esm/hooks/types.mjs.map +1 -1
  79. package/dist/esm/llm/init.mjs +1 -1
  80. package/dist/esm/llm/invoke.mjs +2 -2
  81. package/dist/esm/main.mjs +21 -19
  82. package/dist/esm/messages/format.mjs +40 -23
  83. package/dist/esm/messages/format.mjs.map +1 -1
  84. package/dist/esm/run.mjs +131 -54
  85. package/dist/esm/run.mjs.map +1 -1
  86. package/dist/esm/session/AgentSession.mjs +37 -2
  87. package/dist/esm/session/AgentSession.mjs.map +1 -1
  88. package/dist/esm/session/JsonlSessionStore.mjs +2 -2
  89. package/dist/esm/stream.mjs +1 -1
  90. package/dist/esm/summarization/node.mjs +6 -3
  91. package/dist/esm/summarization/node.mjs.map +1 -1
  92. package/dist/esm/tools/BashExecutor.mjs +1 -1
  93. package/dist/esm/tools/CodeExecutor.mjs +1 -1
  94. package/dist/esm/tools/ProgrammaticToolCalling.mjs +1 -1
  95. package/dist/esm/tools/SubagentTool.mjs +4 -4
  96. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  97. package/dist/esm/tools/ToolNode.mjs +322 -96
  98. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  99. package/dist/esm/tools/ToolSearch.mjs +1 -1
  100. package/dist/esm/tools/eagerEventExecution.mjs +1 -1
  101. package/dist/esm/tools/local/LocalExecutionEngine.mjs +3 -3
  102. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +2 -2
  103. package/dist/esm/tools/search/rerankers.mjs +154 -1
  104. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  105. package/dist/esm/tools/search/tool.mjs +4 -1
  106. package/dist/esm/tools/search/tool.mjs.map +1 -1
  107. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +597 -0
  108. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -0
  109. package/dist/esm/tools/subagent/SubagentExecutor.mjs +1114 -233
  110. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  111. package/dist/esm/tools/subagent/SubagentReplay.mjs +170 -0
  112. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -0
  113. package/dist/esm/tools/subagent/childGraphConfig.mjs +272 -0
  114. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -0
  115. package/dist/esm/tools/subagent/index.mjs +1 -0
  116. package/dist/esm/tools/subagent/runtimeLimits.mjs +5 -0
  117. package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -0
  118. package/dist/esm/tools/toolOutputReferences.mjs +20 -0
  119. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  120. package/dist/esm/utils/index.mjs +2 -2
  121. package/dist/types/agents/AgentContext.d.ts +1 -1
  122. package/dist/types/graphs/Graph.d.ts +22 -2
  123. package/dist/types/graphs/MultiAgentGraph.d.ts +7 -1
  124. package/dist/types/graphs/applyGraphRuntimeConfig.d.ts +3 -0
  125. package/dist/types/graphs/createGraph.d.ts +13 -0
  126. package/dist/types/graphs/graphFactory.d.ts +13 -0
  127. package/dist/types/graphs/index.d.ts +2 -0
  128. package/dist/types/hooks/HookRegistry.d.ts +10 -1
  129. package/dist/types/hooks/executeHooks.d.ts +5 -1
  130. package/dist/types/hooks/index.d.ts +2 -2
  131. package/dist/types/hooks/types.d.ts +12 -0
  132. package/dist/types/run.d.ts +6 -3
  133. package/dist/types/session/AgentSession.d.ts +1 -0
  134. package/dist/types/tools/SubagentTool.d.ts +1 -1
  135. package/dist/types/tools/ToolNode.d.ts +23 -15
  136. package/dist/types/tools/search/rerankers.d.ts +28 -0
  137. package/dist/types/tools/search/types.d.ts +38 -1
  138. package/dist/types/tools/subagent/SubagentExecutionRegistry.d.ts +171 -0
  139. package/dist/types/tools/subagent/SubagentExecutor.d.ts +70 -36
  140. package/dist/types/tools/subagent/SubagentReplay.d.ts +85 -0
  141. package/dist/types/tools/subagent/childGraphConfig.d.ts +37 -0
  142. package/dist/types/tools/subagent/index.d.ts +1 -1
  143. package/dist/types/tools/subagent/runtimeLimits.d.ts +4 -0
  144. package/dist/types/tools/toolOutputReferences.d.ts +12 -0
  145. package/dist/types/types/graph.d.ts +189 -24
  146. package/dist/types/types/hitl.d.ts +15 -0
  147. package/package.json +8 -2
  148. package/src/agents/AgentContext.ts +1 -1
  149. package/src/graphs/Graph.ts +349 -104
  150. package/src/graphs/MultiAgentGraph.ts +149 -47
  151. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +48 -9
  152. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +1 -1
  153. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +80 -0
  154. package/src/graphs/__tests__/MultiAgentGraph.test.ts +86 -0
  155. package/src/graphs/__tests__/composition.smoke.test.ts +152 -0
  156. package/src/graphs/__tests__/createGraph.test.ts +206 -0
  157. package/src/graphs/applyGraphRuntimeConfig.ts +25 -0
  158. package/src/graphs/createGraph.ts +32 -0
  159. package/src/graphs/graphFactory.ts +12 -0
  160. package/src/graphs/index.ts +2 -0
  161. package/src/hooks/HookRegistry.ts +151 -1
  162. package/src/hooks/__tests__/HookRegistry.test.ts +96 -0
  163. package/src/hooks/__tests__/executeHooks.test.ts +160 -0
  164. package/src/hooks/executeHooks.ts +133 -15
  165. package/src/hooks/index.ts +3 -1
  166. package/src/hooks/types.ts +16 -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 +214 -56
  172. package/src/session/AgentSession.ts +52 -2
  173. package/src/session/__tests__/JsonlSessionStore.test.ts +53 -0
  174. package/src/specs/graph-subagent.live.test.ts +242 -0
  175. package/src/specs/graph-subagent.test.ts +322 -0
  176. package/src/specs/langfuse-routing.integration.test.ts +120 -1
  177. package/src/specs/subagent.test.ts +130 -4
  178. package/src/summarization/__tests__/node.test.ts +32 -14
  179. package/src/summarization/node.ts +15 -11
  180. package/src/tools/SubagentTool.ts +4 -4
  181. package/src/tools/ToolNode.ts +643 -157
  182. package/src/tools/__tests__/SubagentExecutor.test.ts +740 -15
  183. package/src/tools/__tests__/SubagentReplay.test.ts +329 -0
  184. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +208 -2
  185. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +512 -2
  186. package/src/tools/__tests__/hitl.test.ts +234 -5
  187. package/src/tools/__tests__/subagentHooks.test.ts +1126 -61
  188. package/src/tools/__tests__/toolOutputReferences.test.ts +19 -2
  189. package/src/tools/search/rag-api-reranker.test.ts +891 -0
  190. package/src/tools/search/rerankers.ts +260 -0
  191. package/src/tools/search/tool.ts +6 -0
  192. package/src/tools/search/types.ts +45 -1
  193. package/src/tools/subagent/SubagentExecutionRegistry.ts +1159 -0
  194. package/src/tools/subagent/SubagentExecutor.ts +2232 -312
  195. package/src/tools/subagent/SubagentReplay.ts +584 -0
  196. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +637 -0
  197. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +3054 -0
  198. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +521 -0
  199. package/src/tools/subagent/childGraphConfig.ts +694 -0
  200. package/src/tools/subagent/index.ts +6 -0
  201. package/src/tools/subagent/runtimeLimits.ts +7 -0
  202. package/src/tools/toolOutputReferences.ts +40 -1
  203. package/src/types/graph.ts +222 -24
  204. package/src/types/hitl.ts +16 -0
package/dist/cjs/main.cjs CHANGED
@@ -22,27 +22,37 @@ 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_smoother = require("./llm/stream/smoother.cjs");
31
- const require_index$2 = require("./llm/mistral/index.cjs");
32
- const require_index$3 = require("./llm/openai/index.cjs");
33
- const require_index$4 = require("./llm/openrouter/index.cjs");
34
- const require_providers = require("./llm/providers.cjs");
35
- const require_errors = require("./utils/errors.cjs");
36
- const require_preempt = require("./llm/preempt.cjs");
37
- const require_graph = require("./utils/graph.cjs");
38
- const require_proxy = require("./utils/proxy.cjs");
39
32
  const require_events = require("./events.cjs");
40
33
  const require_handlers$1 = require("./utils/handlers.cjs");
41
34
  const require_run = require("./utils/run.cjs");
42
35
  const require_schema = require("./utils/schema.cjs");
36
+ const require_errors = require("./utils/errors.cjs");
43
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");
44
44
  const require_init = require("./llm/init.cjs");
45
45
  const require_invoke = require("./llm/invoke.cjs");
46
+ const require_HookRegistry = require("./hooks/HookRegistry.cjs");
47
+ const require_matchers = require("./hooks/matchers.cjs");
48
+ const require_executeHooks = require("./hooks/executeHooks.cjs");
49
+ const require_createToolPolicyHook = require("./hooks/createToolPolicyHook.cjs");
50
+ const require_createWorkspacePolicyHook = require("./hooks/createWorkspacePolicyHook.cjs");
51
+ const require_types = require("./hooks/types.cjs");
52
+ const require_index$6 = require("./hooks/index.cjs");
53
+ const require_childGraphConfig = require("./tools/subagent/childGraphConfig.cjs");
54
+ const require_SubagentExecutor = require("./tools/subagent/SubagentExecutor.cjs");
55
+ require("./tools/subagent/index.cjs");
46
56
  const require_bashAst = require("./tools/local/bashAst.cjs");
47
57
  const require_LocalExecutionEngine = require("./tools/local/LocalExecutionEngine.cjs");
48
58
  const require_CompileCheckTool = require("./tools/local/CompileCheckTool.cjs");
@@ -51,13 +61,6 @@ const require_CodeSessionFileSummary = require("./tools/CodeSessionFileSummary.c
51
61
  const require_CodeExecutor = require("./tools/CodeExecutor.cjs");
52
62
  const require_ProgrammaticToolCalling = require("./tools/ProgrammaticToolCalling.cjs");
53
63
  const require_BashProgrammaticToolCalling = require("./tools/BashProgrammaticToolCalling.cjs");
54
- const require_HookRegistry = require("./hooks/HookRegistry.cjs");
55
- const require_matchers = require("./hooks/matchers.cjs");
56
- const require_executeHooks = require("./hooks/executeHooks.cjs");
57
- const require_createToolPolicyHook = require("./hooks/createToolPolicyHook.cjs");
58
- const require_createWorkspacePolicyHook = require("./hooks/createWorkspacePolicyHook.cjs");
59
- const require_types = require("./hooks/types.cjs");
60
- const require_index$6 = require("./hooks/index.cjs");
61
64
  const require_LocalProgrammaticToolCalling = require("./tools/local/LocalProgrammaticToolCalling.cjs");
62
65
  const require_BashExecutor = require("./tools/BashExecutor.cjs");
63
66
  const require_LocalExecutionTools = require("./tools/local/LocalExecutionTools.cjs");
@@ -74,8 +77,6 @@ require("./tools/cloudflare/index.cjs");
74
77
  const require_resolveLocalExecutionTools = require("./tools/local/resolveLocalExecutionTools.cjs");
75
78
  require("./tools/local/index.cjs");
76
79
  const require_ToolNode = require("./tools/ToolNode.cjs");
77
- const require_SubagentExecutor = require("./tools/subagent/SubagentExecutor.cjs");
78
- require("./tools/subagent/index.cjs");
79
80
  const require_SubagentTool = require("./tools/SubagentTool.cjs");
80
81
  const require_index$10 = require("./summarization/index.cjs");
81
82
  const require_request = require("./llm/request.cjs");
@@ -83,6 +84,7 @@ const require_schema$1 = require("./tools/schema.cjs");
83
84
  const require_fake = require("./llm/fake.cjs");
84
85
  const require_Graph = require("./graphs/Graph.cjs");
85
86
  const require_MultiAgentGraph = require("./graphs/MultiAgentGraph.cjs");
87
+ const require_createGraph = require("./graphs/createGraph.cjs");
86
88
  const require_run$1 = require("./run.cjs");
87
89
  require("./graphs/index.cjs");
88
90
  const require_projection = require("./agents/projection.cjs");
@@ -167,7 +169,7 @@ exports.CalculatorToolDescription = require_Calculator.CalculatorToolDescription
167
169
  exports.CalculatorToolName = require_Calculator.CalculatorToolName;
168
170
  exports.Callback = require_enum.Callback;
169
171
  exports.ChatModelStreamHandler = require_stream.ChatModelStreamHandler;
170
- exports.ChatOpenRouter = require_index$4.ChatOpenRouter;
172
+ exports.ChatOpenRouter = require_index$5.ChatOpenRouter;
171
173
  exports.CloudflareBashExecutionToolDescription = require_CloudflareSandboxTools.CloudflareBashExecutionToolDescription;
172
174
  exports.CloudflareCodeExecutionToolDescription = require_CloudflareSandboxTools.CloudflareCodeExecutionToolDescription;
173
175
  exports.CodeApiRequestError = require_CodeExecutor.CodeApiRequestError;
@@ -185,8 +187,8 @@ exports.CommonEvents = require_enum.CommonEvents;
185
187
  exports.CompileCheckToolName = require_CompileCheckTool.CompileCheckToolName;
186
188
  exports.Constants = require_enum.Constants;
187
189
  exports.ContentTypes = require_enum.ContentTypes;
188
- exports.CustomChatMistralAI = require_index$2.CustomChatMistralAI;
189
- exports.CustomOpenAIClient = require_index$3.CustomOpenAIClient;
190
+ exports.CustomChatMistralAI = require_index$3.CustomChatMistralAI;
191
+ exports.CustomOpenAIClient = require_index$4.CustomOpenAIClient;
190
192
  exports.DATE_RANGE = require_schema$2.DATE_RANGE;
191
193
  exports.DEFAULT_CONTEXT_PRUNING_SETTINGS = require_contextPruningSettings.DEFAULT_CONTEXT_PRUNING_SETTINGS;
192
194
  exports.DEFAULT_COUNTRY_DESCRIPTION = require_schema$2.DEFAULT_COUNTRY_DESCRIPTION;
@@ -199,6 +201,7 @@ exports.DEFAULT_RECURSION_LIMIT = require_constants.DEFAULT_RECURSION_LIMIT;
199
201
  exports.DEFAULT_RESERVE_RATIO = require_prune.DEFAULT_RESERVE_RATIO;
200
202
  exports.DEFAULT_RETAIN_RECENT_TURNS = require_recency.DEFAULT_RETAIN_RECENT_TURNS;
201
203
  exports.DEFAULT_STREAM_DELAY = require_smoother.DEFAULT_STREAM_DELAY;
204
+ exports.DEFAULT_SUBAGENT_DESCRIPTION = require_SubagentExecutor.DEFAULT_SUBAGENT_DESCRIPTION;
202
205
  exports.DEFAULT_TOOL_TOKEN_MULTIPLIER = require_constants.DEFAULT_TOOL_TOKEN_MULTIPLIER;
203
206
  Object.defineProperty(exports, "DynamicStructuredTool", {
204
207
  enumerable: true,
@@ -338,6 +341,7 @@ Object.defineProperty(exports, "SystemMessage", {
338
341
  }
339
342
  });
340
343
  exports.TMP_SCRATCH_OUTPUT_REMINDER = require_CodeExecutor.TMP_SCRATCH_OUTPUT_REMINDER;
344
+ exports.TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY = require_types.TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY;
341
345
  exports.TestChatStreamHandler = require_events.TestChatStreamHandler;
342
346
  exports.TestLLMStreamHandler = require_events.TestLLMStreamHandler;
343
347
  exports.TitleMethod = require_enum.TitleMethod;
@@ -392,7 +396,7 @@ exports.buildAnthropicCacheControl = require_cache.buildAnthropicCacheControl;
392
396
  exports.buildBashExecutionToolDescription = require_BashExecutor.buildBashExecutionToolDescription;
393
397
  exports.buildBashExecutionToolSchema = require_BashExecutor.buildBashExecutionToolSchema;
394
398
  exports.buildBedrockCachePoint = require_cache.buildBedrockCachePoint;
395
- exports.buildChildInputs = require_SubagentExecutor.buildChildInputs;
399
+ exports.buildChildInputs = require_childGraphConfig.buildChildInputs;
396
400
  exports.buildCodeApiExecutionErrorMessage = require_CodeExecutor.buildCodeApiExecutionErrorMessage;
397
401
  exports.buildCodeApiHttpErrorMessage = require_CodeExecutor.buildCodeApiHttpErrorMessage;
398
402
  exports.buildCodeExecutionToolDescription = require_CodeExecutor.buildCodeExecutionToolDescription;
@@ -437,6 +441,7 @@ exports.createCompileCheckTool = require_CompileCheckTool.createCompileCheckTool
437
441
  exports.createCompileCheckToolDefinition = require_CompileCheckTool.createCompileCheckToolDefinition;
438
442
  exports.createContentAggregator = require_stream.createContentAggregator;
439
443
  exports.createFakeStreamingLLM = require_fake.createFakeStreamingLLM;
444
+ exports.createGraph = require_createGraph.createGraph;
440
445
  exports.createHandlers = require_handlers$1.createHandlers;
441
446
  exports.createLocalBashExecutionTool = require_LocalExecutionTools.createLocalBashExecutionTool;
442
447
  exports.createLocalBashProgrammaticToolCallingTool = require_LocalProgrammaticToolCalling.createLocalBashProgrammaticToolCallingTool;
@@ -502,6 +507,7 @@ exports.extractUsedBashToolNames = require_BashProgrammaticToolCalling.extractUs
502
507
  exports.extractUsedToolNames = require_ProgrammaticToolCalling.extractUsedToolNames;
503
508
  exports.fetchSessionFiles = require_ProgrammaticToolCalling.fetchSessionFiles;
504
509
  exports.filterBashToolsByUsage = require_BashProgrammaticToolCalling.filterBashToolsByUsage;
510
+ exports.filterGraphSubagentResult = require_SubagentExecutor.filterGraphSubagentResult;
505
511
  exports.filterSubagentResult = require_SubagentExecutor.filterSubagentResult;
506
512
  exports.filterToolsByUsage = require_ProgrammaticToolCalling.filterToolsByUsage;
507
513
  exports.findLastIndex = require_core.findLastIndex;
@@ -579,6 +585,7 @@ exports.isDangerousPattern = require_ToolSearch.isDangerousPattern;
579
585
  exports.isFromAnyMcpServer = require_ToolSearch.isFromAnyMcpServer;
580
586
  exports.isFromMcpServer = require_ToolSearch.isFromMcpServer;
581
587
  exports.isGoogleLike = require_llm.isGoogleLike;
588
+ exports.isGraphSubagentConfig = require_childGraphConfig.isGraphSubagentConfig;
582
589
  exports.isIntentLabelProperty = require_intentArg.isIntentLabelProperty;
583
590
  Object.defineProperty(exports, "isInterrupted", {
584
591
  enumerable: true,
@@ -612,6 +619,8 @@ exports.newsSchema = require_schema$2.newsSchema;
612
619
  exports.normalizeBashToolResultsForReplay = require_BashProgrammaticToolCalling.normalizeBashToolResultsForReplay;
613
620
  exports.normalizeCodeApiRequestError = require_CodeExecutor.normalizeCodeApiRequestError;
614
621
  exports.normalizeServerFilter = require_ToolSearch.normalizeServerFilter;
622
+ exports.normalizeSubagentConfigEntries = require_childGraphConfig.normalizeSubagentConfigEntries;
623
+ exports.normalizeSubagentConfigs = require_childGraphConfig.normalizeSubagentConfigs;
615
624
  exports.normalizeToBashIdentifier = require_BashProgrammaticToolCalling.normalizeToBashIdentifier;
616
625
  exports.normalizeToPythonIdentifier = require_ProgrammaticToolCalling.normalizeToPythonIdentifier;
617
626
  exports.outcomeFieldsFromResult = require_intentArg.outcomeFieldsFromResult;
@@ -652,7 +661,8 @@ exports.resolvePromptCacheTtl = require_cache.resolvePromptCacheTtl;
652
661
  exports.resolveSearchOutcome = require_tool.resolveSearchOutcome;
653
662
  exports.resolveStreamDelay = require_smoother.resolveStreamDelay;
654
663
  exports.resolveStreamLimits = require_streamLimits.resolveStreamLimits;
655
- exports.resolveSubagentConfigs = require_SubagentExecutor.resolveSubagentConfigs;
664
+ exports.resolveSubagentConfigEntries = require_childGraphConfig.resolveSubagentConfigEntries;
665
+ exports.resolveSubagentConfigs = require_childGraphConfig.resolveSubagentConfigs;
656
666
  exports.resolveToolOutcome = require_intentArg.resolveToolOutcome;
657
667
  exports.resolveWorkspacePath = require_LocalExecutionEngine.resolveWorkspacePath;
658
668
  exports.resolveWorkspacePathSafe = require_LocalExecutionEngine.resolveWorkspacePathSafe;
@@ -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