@librechat/agents 3.4.7 → 3.5.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 (1026) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +0 -356
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/agents/projection.cjs +0 -9
  4. package/dist/cjs/agents/projection.cjs.map +1 -1
  5. package/dist/cjs/common/constants.cjs +0 -26
  6. package/dist/cjs/common/constants.cjs.map +1 -1
  7. package/dist/cjs/common/enum.cjs +0 -85
  8. package/dist/cjs/common/enum.cjs.map +1 -1
  9. package/dist/cjs/events.cjs +0 -14
  10. package/dist/cjs/events.cjs.map +1 -1
  11. package/dist/cjs/graphs/Graph.cjs +1 -909
  12. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  13. package/dist/cjs/graphs/MultiAgentGraph.cjs +7 -272
  14. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  15. package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs.map +1 -1
  16. package/dist/cjs/graphs/createGraph.cjs.map +1 -1
  17. package/dist/cjs/hitl/askUserQuestion.cjs +0 -53
  18. package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
  19. package/dist/cjs/hitl/askUserQuestions.cjs +0 -20
  20. package/dist/cjs/hitl/askUserQuestions.cjs.map +1 -1
  21. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs +0 -6
  22. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs.map +1 -1
  23. package/dist/cjs/hooks/HookRegistry.cjs +0 -127
  24. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  25. package/dist/cjs/hooks/createToolPolicyHook.cjs +0 -38
  26. package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
  27. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +0 -77
  28. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
  29. package/dist/cjs/hooks/executeHooks.cjs +0 -79
  30. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  31. package/dist/cjs/hooks/index.cjs +0 -16
  32. package/dist/cjs/hooks/index.cjs.map +1 -1
  33. package/dist/cjs/hooks/matchers.cjs +0 -104
  34. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  35. package/dist/cjs/hooks/types.cjs +0 -8
  36. package/dist/cjs/hooks/types.cjs.map +1 -1
  37. package/dist/cjs/instrumentation.cjs +0 -14
  38. package/dist/cjs/instrumentation.cjs.map +1 -1
  39. package/dist/cjs/langfuse.cjs +0 -75
  40. package/dist/cjs/langfuse.cjs.map +1 -1
  41. package/dist/cjs/langfuseConfig.cjs.map +1 -1
  42. package/dist/cjs/langfuseRuntimeContext.cjs +0 -13
  43. package/dist/cjs/langfuseRuntimeContext.cjs.map +1 -1
  44. package/dist/cjs/langfuseRuntimeScope.cjs +0 -4
  45. package/dist/cjs/langfuseRuntimeScope.cjs.map +1 -1
  46. package/dist/cjs/langfuseSpanRegistry.cjs +0 -28
  47. package/dist/cjs/langfuseSpanRegistry.cjs.map +1 -1
  48. package/dist/cjs/langfuseToolOutputTracing.cjs +0 -3
  49. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  50. package/dist/cjs/langfuseTraceShaping.cjs +0 -74
  51. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  52. package/dist/cjs/llm/anthropic/index.cjs +0 -3
  53. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  54. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  55. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -111
  56. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  57. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +0 -1
  58. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  59. package/dist/cjs/llm/anthropic/utils/stream_events.cjs +0 -8
  60. package/dist/cjs/llm/anthropic/utils/stream_events.cjs.map +1 -1
  61. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  62. package/dist/cjs/llm/bedrock/cachePoints.cjs.map +1 -1
  63. package/dist/cjs/llm/bedrock/index.cjs +1 -95
  64. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  65. package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
  66. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +0 -78
  67. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  68. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +0 -24
  69. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
  70. package/dist/cjs/llm/contextOverflowRecovery.cjs +0 -62
  71. package/dist/cjs/llm/contextOverflowRecovery.cjs.map +1 -1
  72. package/dist/cjs/llm/fake.cjs.map +1 -1
  73. package/dist/cjs/llm/google/index.cjs +2 -21
  74. package/dist/cjs/llm/google/index.cjs.map +1 -1
  75. package/dist/cjs/llm/google/utils/common.cjs +0 -35
  76. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  77. package/dist/cjs/llm/init.cjs +0 -9
  78. package/dist/cjs/llm/init.cjs.map +1 -1
  79. package/dist/cjs/llm/invoke.cjs +1 -270
  80. package/dist/cjs/llm/invoke.cjs.map +1 -1
  81. package/dist/cjs/llm/mistral/index.cjs.map +1 -1
  82. package/dist/cjs/llm/openai/index.cjs +0 -99
  83. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  84. package/dist/cjs/llm/openai/streamMetadata.cjs +0 -21
  85. package/dist/cjs/llm/openai/streamMetadata.cjs.map +1 -1
  86. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  87. package/dist/cjs/llm/openrouter/index.cjs +0 -1
  88. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  89. package/dist/cjs/llm/openrouter/toolCache.cjs +0 -6
  90. package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
  91. package/dist/cjs/llm/preempt.cjs +0 -75
  92. package/dist/cjs/llm/preempt.cjs.map +1 -1
  93. package/dist/cjs/llm/providers.cjs.map +1 -1
  94. package/dist/cjs/llm/request.cjs +0 -10
  95. package/dist/cjs/llm/request.cjs.map +1 -1
  96. package/dist/cjs/llm/stream/chunkAdapters.cjs +0 -62
  97. package/dist/cjs/llm/stream/chunkAdapters.cjs.map +1 -1
  98. package/dist/cjs/llm/stream/smoother.cjs +0 -58
  99. package/dist/cjs/llm/stream/smoother.cjs.map +1 -1
  100. package/dist/cjs/llm/streamLimits.cjs +4 -293
  101. package/dist/cjs/llm/streamLimits.cjs.map +1 -1
  102. package/dist/cjs/llm/truncation.cjs +0 -36
  103. package/dist/cjs/llm/truncation.cjs.map +1 -1
  104. package/dist/cjs/llm/vertexai/index.cjs +0 -330
  105. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  106. package/dist/cjs/messages/alternation.cjs +0 -43
  107. package/dist/cjs/messages/alternation.cjs.map +1 -1
  108. package/dist/cjs/messages/anthropicToolCache.cjs +0 -45
  109. package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
  110. package/dist/cjs/messages/assistantPhase.cjs +0 -12
  111. package/dist/cjs/messages/assistantPhase.cjs.map +1 -1
  112. package/dist/cjs/messages/budget.cjs +0 -9
  113. package/dist/cjs/messages/budget.cjs.map +1 -1
  114. package/dist/cjs/messages/cache.cjs +0 -172
  115. package/dist/cjs/messages/cache.cjs.map +1 -1
  116. package/dist/cjs/messages/content.cjs +0 -9
  117. package/dist/cjs/messages/content.cjs.map +1 -1
  118. package/dist/cjs/messages/contextPruning.cjs +0 -15
  119. package/dist/cjs/messages/contextPruning.cjs.map +1 -1
  120. package/dist/cjs/messages/contextPruningSettings.cjs +0 -3
  121. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
  122. package/dist/cjs/messages/core.cjs +0 -48
  123. package/dist/cjs/messages/core.cjs.map +1 -1
  124. package/dist/cjs/messages/format.cjs +1 -345
  125. package/dist/cjs/messages/format.cjs.map +1 -1
  126. package/dist/cjs/messages/handoffCue.cjs +0 -36
  127. package/dist/cjs/messages/handoffCue.cjs.map +1 -1
  128. package/dist/cjs/messages/ids.cjs.map +1 -1
  129. package/dist/cjs/messages/injected.cjs +0 -33
  130. package/dist/cjs/messages/injected.cjs.map +1 -1
  131. package/dist/cjs/messages/langchain.cjs +0 -14
  132. package/dist/cjs/messages/langchain.cjs.map +1 -1
  133. package/dist/cjs/messages/prune.cjs +1 -184
  134. package/dist/cjs/messages/prune.cjs.map +1 -1
  135. package/dist/cjs/messages/recency.cjs +0 -32
  136. package/dist/cjs/messages/recency.cjs.map +1 -1
  137. package/dist/cjs/messages/reducer.cjs +0 -30
  138. package/dist/cjs/messages/reducer.cjs.map +1 -1
  139. package/dist/cjs/messages/tools.cjs +0 -14
  140. package/dist/cjs/messages/tools.cjs.map +1 -1
  141. package/dist/cjs/openai/index.cjs.map +1 -1
  142. package/dist/cjs/prompts/activityLabel.cjs +9 -79
  143. package/dist/cjs/prompts/activityLabel.cjs.map +1 -1
  144. package/dist/cjs/responses/index.cjs.map +1 -1
  145. package/dist/cjs/run.cjs +2 -538
  146. package/dist/cjs/run.cjs.map +1 -1
  147. package/dist/cjs/session/AgentSession.cjs +1 -17
  148. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  149. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  150. package/dist/cjs/session/handlers.cjs +0 -7
  151. package/dist/cjs/session/handlers.cjs.map +1 -1
  152. package/dist/cjs/session/ids.cjs.map +1 -1
  153. package/dist/cjs/session/messageSerialization.cjs +0 -4
  154. package/dist/cjs/session/messageSerialization.cjs.map +1 -1
  155. package/dist/cjs/stream.cjs +1 -93
  156. package/dist/cjs/stream.cjs.map +1 -1
  157. package/dist/cjs/summarization/index.cjs +0 -27
  158. package/dist/cjs/summarization/index.cjs.map +1 -1
  159. package/dist/cjs/summarization/node.cjs +0 -273
  160. package/dist/cjs/summarization/node.cjs.map +1 -1
  161. package/dist/cjs/tools/BashExecutor.cjs +0 -35
  162. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  163. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +0 -24
  164. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  165. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  166. package/dist/cjs/tools/CodeExecutor.cjs +0 -13
  167. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  168. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
  169. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +0 -101
  170. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  171. package/dist/cjs/tools/ReadFile.cjs.map +1 -1
  172. package/dist/cjs/tools/SkillTool.cjs +0 -5
  173. package/dist/cjs/tools/SkillTool.cjs.map +1 -1
  174. package/dist/cjs/tools/SubagentTool.cjs +0 -10
  175. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  176. package/dist/cjs/tools/ToolNode.cjs +6 -1038
  177. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  178. package/dist/cjs/tools/ToolSearch.cjs +0 -179
  179. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  180. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
  181. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  182. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +0 -39
  183. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
  184. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
  185. package/dist/cjs/tools/eagerEventExecution.cjs +0 -6
  186. package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
  187. package/dist/cjs/tools/handlers.cjs +1 -41
  188. package/dist/cjs/tools/handlers.cjs.map +1 -1
  189. package/dist/cjs/tools/intentArg.cjs +1 -132
  190. package/dist/cjs/tools/intentArg.cjs.map +1 -1
  191. package/dist/cjs/tools/local/CompileCheckTool.cjs +0 -25
  192. package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
  193. package/dist/cjs/tools/local/FileCheckpointer.cjs +0 -23
  194. package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
  195. package/dist/cjs/tools/local/LocalCodingTools.cjs +0 -80
  196. package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
  197. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +0 -126
  198. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  199. package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
  200. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +0 -12
  201. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  202. package/dist/cjs/tools/local/attachments.cjs +0 -44
  203. package/dist/cjs/tools/local/attachments.cjs.map +1 -1
  204. package/dist/cjs/tools/local/bashAst.cjs +0 -16
  205. package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
  206. package/dist/cjs/tools/local/editStrategies.cjs +0 -14
  207. package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
  208. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  209. package/dist/cjs/tools/local/syntaxCheck.cjs +0 -31
  210. package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
  211. package/dist/cjs/tools/local/textEncoding.cjs +0 -11
  212. package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
  213. package/dist/cjs/tools/local/workspaceFS.cjs +0 -33
  214. package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
  215. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  216. package/dist/cjs/tools/schema.cjs +0 -8
  217. package/dist/cjs/tools/schema.cjs.map +1 -1
  218. package/dist/cjs/tools/search/anthropic.cjs +0 -9
  219. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  220. package/dist/cjs/tools/search/content.cjs.map +1 -1
  221. package/dist/cjs/tools/search/crw-scraper.cjs +0 -33
  222. package/dist/cjs/tools/search/crw-scraper.cjs.map +1 -1
  223. package/dist/cjs/tools/search/crw-search.cjs +0 -2
  224. package/dist/cjs/tools/search/crw-search.cjs.map +1 -1
  225. package/dist/cjs/tools/search/firecrawl.cjs +0 -25
  226. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  227. package/dist/cjs/tools/search/format.cjs +0 -30
  228. package/dist/cjs/tools/search/format.cjs.map +1 -1
  229. package/dist/cjs/tools/search/highlights.cjs +0 -16
  230. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  231. package/dist/cjs/tools/search/keenable-scraper.cjs +0 -8
  232. package/dist/cjs/tools/search/keenable-scraper.cjs.map +1 -1
  233. package/dist/cjs/tools/search/keenable-search.cjs +0 -7
  234. package/dist/cjs/tools/search/keenable-search.cjs.map +1 -1
  235. package/dist/cjs/tools/search/rerankers.cjs +0 -35
  236. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  237. package/dist/cjs/tools/search/schema.cjs +0 -1
  238. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  239. package/dist/cjs/tools/search/search.cjs +1 -14
  240. package/dist/cjs/tools/search/search.cjs.map +1 -1
  241. package/dist/cjs/tools/search/serper-scraper.cjs +0 -46
  242. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  243. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
  244. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
  245. package/dist/cjs/tools/search/tool.cjs +0 -25
  246. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  247. package/dist/cjs/tools/search/utils.cjs +0 -8
  248. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  249. package/dist/cjs/tools/skillCatalog.cjs +0 -6
  250. package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
  251. package/dist/cjs/tools/streamedToolCallSeals.cjs +0 -6
  252. package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
  253. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs +0 -2
  254. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs.map +1 -1
  255. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +3 -213
  256. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  257. package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -1
  258. package/dist/cjs/tools/subagent/childGraphConfig.cjs +0 -4
  259. package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -1
  260. package/dist/cjs/tools/subagent/runtimeLimits.cjs.map +1 -1
  261. package/dist/cjs/tools/toolOutputReferences.cjs +1 -322
  262. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  263. package/dist/cjs/types/hitl.cjs +0 -5
  264. package/dist/cjs/types/hitl.cjs.map +1 -1
  265. package/dist/cjs/utils/callbacks.cjs.map +1 -1
  266. package/dist/cjs/utils/errors.cjs +14 -165
  267. package/dist/cjs/utils/errors.cjs.map +1 -1
  268. package/dist/cjs/utils/events.cjs +0 -10
  269. package/dist/cjs/utils/events.cjs.map +1 -1
  270. package/dist/cjs/utils/graph.cjs.map +1 -1
  271. package/dist/cjs/utils/handlers.cjs +0 -3
  272. package/dist/cjs/utils/handlers.cjs.map +1 -1
  273. package/dist/cjs/utils/llm.cjs +0 -1
  274. package/dist/cjs/utils/llm.cjs.map +1 -1
  275. package/dist/cjs/utils/misc.cjs +0 -16
  276. package/dist/cjs/utils/misc.cjs.map +1 -1
  277. package/dist/cjs/utils/proxy.cjs +0 -26
  278. package/dist/cjs/utils/proxy.cjs.map +1 -1
  279. package/dist/cjs/utils/run.cjs +0 -6
  280. package/dist/cjs/utils/run.cjs.map +1 -1
  281. package/dist/cjs/utils/schema.cjs +0 -5
  282. package/dist/cjs/utils/schema.cjs.map +1 -1
  283. package/dist/cjs/utils/title.cjs +0 -6
  284. package/dist/cjs/utils/title.cjs.map +1 -1
  285. package/dist/cjs/utils/tokens.cjs +0 -113
  286. package/dist/cjs/utils/tokens.cjs.map +1 -1
  287. package/dist/cjs/utils/toolContent.cjs +0 -41
  288. package/dist/cjs/utils/toolContent.cjs.map +1 -1
  289. package/dist/cjs/utils/truncation.cjs +0 -61
  290. package/dist/cjs/utils/truncation.cjs.map +1 -1
  291. package/dist/esm/agents/AgentContext.mjs +0 -356
  292. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  293. package/dist/esm/agents/projection.mjs +0 -9
  294. package/dist/esm/agents/projection.mjs.map +1 -1
  295. package/dist/esm/common/constants.mjs +0 -26
  296. package/dist/esm/common/constants.mjs.map +1 -1
  297. package/dist/esm/common/enum.mjs +0 -85
  298. package/dist/esm/common/enum.mjs.map +1 -1
  299. package/dist/esm/events.mjs +0 -14
  300. package/dist/esm/events.mjs.map +1 -1
  301. package/dist/esm/graphs/Graph.mjs +1 -909
  302. package/dist/esm/graphs/Graph.mjs.map +1 -1
  303. package/dist/esm/graphs/MultiAgentGraph.mjs +7 -272
  304. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  305. package/dist/esm/graphs/applyGraphRuntimeConfig.mjs.map +1 -1
  306. package/dist/esm/graphs/createGraph.mjs.map +1 -1
  307. package/dist/esm/hitl/askUserQuestion.mjs +0 -53
  308. package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
  309. package/dist/esm/hitl/askUserQuestions.mjs +0 -20
  310. package/dist/esm/hitl/askUserQuestions.mjs.map +1 -1
  311. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs +0 -6
  312. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs.map +1 -1
  313. package/dist/esm/hooks/HookRegistry.mjs +0 -127
  314. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  315. package/dist/esm/hooks/createToolPolicyHook.mjs +0 -38
  316. package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
  317. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +0 -77
  318. package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
  319. package/dist/esm/hooks/executeHooks.mjs +0 -79
  320. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  321. package/dist/esm/hooks/index.mjs +0 -16
  322. package/dist/esm/hooks/index.mjs.map +1 -1
  323. package/dist/esm/hooks/matchers.mjs +0 -104
  324. package/dist/esm/hooks/matchers.mjs.map +1 -1
  325. package/dist/esm/hooks/types.mjs +0 -8
  326. package/dist/esm/hooks/types.mjs.map +1 -1
  327. package/dist/esm/instrumentation.mjs +0 -14
  328. package/dist/esm/instrumentation.mjs.map +1 -1
  329. package/dist/esm/langfuse.mjs +0 -75
  330. package/dist/esm/langfuse.mjs.map +1 -1
  331. package/dist/esm/langfuseConfig.mjs.map +1 -1
  332. package/dist/esm/langfuseRuntimeContext.mjs +0 -13
  333. package/dist/esm/langfuseRuntimeContext.mjs.map +1 -1
  334. package/dist/esm/langfuseRuntimeScope.mjs +0 -4
  335. package/dist/esm/langfuseRuntimeScope.mjs.map +1 -1
  336. package/dist/esm/langfuseSpanRegistry.mjs +0 -28
  337. package/dist/esm/langfuseSpanRegistry.mjs.map +1 -1
  338. package/dist/esm/langfuseToolOutputTracing.mjs +0 -3
  339. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  340. package/dist/esm/langfuseTraceShaping.mjs +0 -74
  341. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  342. package/dist/esm/llm/anthropic/index.mjs +0 -3
  343. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  344. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  345. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -111
  346. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  347. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +0 -1
  348. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  349. package/dist/esm/llm/anthropic/utils/stream_events.mjs +0 -8
  350. package/dist/esm/llm/anthropic/utils/stream_events.mjs.map +1 -1
  351. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  352. package/dist/esm/llm/bedrock/cachePoints.mjs.map +1 -1
  353. package/dist/esm/llm/bedrock/index.mjs +1 -95
  354. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  355. package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
  356. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +0 -78
  357. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  358. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +0 -24
  359. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
  360. package/dist/esm/llm/contextOverflowRecovery.mjs +0 -62
  361. package/dist/esm/llm/contextOverflowRecovery.mjs.map +1 -1
  362. package/dist/esm/llm/fake.mjs.map +1 -1
  363. package/dist/esm/llm/google/index.mjs +2 -21
  364. package/dist/esm/llm/google/index.mjs.map +1 -1
  365. package/dist/esm/llm/google/utils/common.mjs +0 -35
  366. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  367. package/dist/esm/llm/init.mjs +0 -9
  368. package/dist/esm/llm/init.mjs.map +1 -1
  369. package/dist/esm/llm/invoke.mjs +1 -270
  370. package/dist/esm/llm/invoke.mjs.map +1 -1
  371. package/dist/esm/llm/mistral/index.mjs.map +1 -1
  372. package/dist/esm/llm/openai/index.mjs +0 -99
  373. package/dist/esm/llm/openai/index.mjs.map +1 -1
  374. package/dist/esm/llm/openai/streamMetadata.mjs +0 -21
  375. package/dist/esm/llm/openai/streamMetadata.mjs.map +1 -1
  376. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  377. package/dist/esm/llm/openrouter/index.mjs +0 -1
  378. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  379. package/dist/esm/llm/openrouter/toolCache.mjs +0 -6
  380. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  381. package/dist/esm/llm/preempt.mjs +0 -75
  382. package/dist/esm/llm/preempt.mjs.map +1 -1
  383. package/dist/esm/llm/providers.mjs.map +1 -1
  384. package/dist/esm/llm/request.mjs +0 -10
  385. package/dist/esm/llm/request.mjs.map +1 -1
  386. package/dist/esm/llm/stream/chunkAdapters.mjs +0 -62
  387. package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -1
  388. package/dist/esm/llm/stream/smoother.mjs +0 -58
  389. package/dist/esm/llm/stream/smoother.mjs.map +1 -1
  390. package/dist/esm/llm/streamLimits.mjs +4 -293
  391. package/dist/esm/llm/streamLimits.mjs.map +1 -1
  392. package/dist/esm/llm/truncation.mjs +0 -36
  393. package/dist/esm/llm/truncation.mjs.map +1 -1
  394. package/dist/esm/llm/vertexai/index.mjs +0 -330
  395. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  396. package/dist/esm/messages/alternation.mjs +0 -43
  397. package/dist/esm/messages/alternation.mjs.map +1 -1
  398. package/dist/esm/messages/anthropicToolCache.mjs +0 -45
  399. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  400. package/dist/esm/messages/assistantPhase.mjs +0 -12
  401. package/dist/esm/messages/assistantPhase.mjs.map +1 -1
  402. package/dist/esm/messages/budget.mjs +0 -9
  403. package/dist/esm/messages/budget.mjs.map +1 -1
  404. package/dist/esm/messages/cache.mjs +0 -172
  405. package/dist/esm/messages/cache.mjs.map +1 -1
  406. package/dist/esm/messages/content.mjs +0 -9
  407. package/dist/esm/messages/content.mjs.map +1 -1
  408. package/dist/esm/messages/contextPruning.mjs +0 -15
  409. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  410. package/dist/esm/messages/contextPruningSettings.mjs +0 -3
  411. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  412. package/dist/esm/messages/core.mjs +0 -48
  413. package/dist/esm/messages/core.mjs.map +1 -1
  414. package/dist/esm/messages/format.mjs +1 -345
  415. package/dist/esm/messages/format.mjs.map +1 -1
  416. package/dist/esm/messages/handoffCue.mjs +0 -36
  417. package/dist/esm/messages/handoffCue.mjs.map +1 -1
  418. package/dist/esm/messages/ids.mjs.map +1 -1
  419. package/dist/esm/messages/injected.mjs +0 -33
  420. package/dist/esm/messages/injected.mjs.map +1 -1
  421. package/dist/esm/messages/langchain.mjs +0 -14
  422. package/dist/esm/messages/langchain.mjs.map +1 -1
  423. package/dist/esm/messages/prune.mjs +1 -184
  424. package/dist/esm/messages/prune.mjs.map +1 -1
  425. package/dist/esm/messages/recency.mjs +0 -32
  426. package/dist/esm/messages/recency.mjs.map +1 -1
  427. package/dist/esm/messages/reducer.mjs +0 -30
  428. package/dist/esm/messages/reducer.mjs.map +1 -1
  429. package/dist/esm/messages/tools.mjs +0 -14
  430. package/dist/esm/messages/tools.mjs.map +1 -1
  431. package/dist/esm/openai/index.mjs.map +1 -1
  432. package/dist/esm/prompts/activityLabel.mjs +9 -79
  433. package/dist/esm/prompts/activityLabel.mjs.map +1 -1
  434. package/dist/esm/responses/index.mjs.map +1 -1
  435. package/dist/esm/run.mjs +2 -538
  436. package/dist/esm/run.mjs.map +1 -1
  437. package/dist/esm/session/AgentSession.mjs +1 -17
  438. package/dist/esm/session/AgentSession.mjs.map +1 -1
  439. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  440. package/dist/esm/session/handlers.mjs +0 -7
  441. package/dist/esm/session/handlers.mjs.map +1 -1
  442. package/dist/esm/session/ids.mjs.map +1 -1
  443. package/dist/esm/session/messageSerialization.mjs +0 -4
  444. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  445. package/dist/esm/stream.mjs +1 -93
  446. package/dist/esm/stream.mjs.map +1 -1
  447. package/dist/esm/summarization/index.mjs +0 -27
  448. package/dist/esm/summarization/index.mjs.map +1 -1
  449. package/dist/esm/summarization/node.mjs +0 -273
  450. package/dist/esm/summarization/node.mjs.map +1 -1
  451. package/dist/esm/tools/BashExecutor.mjs +0 -35
  452. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  453. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +0 -24
  454. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  455. package/dist/esm/tools/Calculator.mjs.map +1 -1
  456. package/dist/esm/tools/CodeExecutor.mjs +0 -13
  457. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  458. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  459. package/dist/esm/tools/ProgrammaticToolCalling.mjs +0 -101
  460. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  461. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  462. package/dist/esm/tools/SkillTool.mjs +0 -5
  463. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  464. package/dist/esm/tools/SubagentTool.mjs +0 -10
  465. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  466. package/dist/esm/tools/ToolNode.mjs +6 -1038
  467. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  468. package/dist/esm/tools/ToolSearch.mjs +0 -179
  469. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  470. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  471. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  472. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +0 -39
  473. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  474. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  475. package/dist/esm/tools/eagerEventExecution.mjs +0 -6
  476. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  477. package/dist/esm/tools/handlers.mjs +1 -41
  478. package/dist/esm/tools/handlers.mjs.map +1 -1
  479. package/dist/esm/tools/intentArg.mjs +1 -132
  480. package/dist/esm/tools/intentArg.mjs.map +1 -1
  481. package/dist/esm/tools/local/CompileCheckTool.mjs +0 -25
  482. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  483. package/dist/esm/tools/local/FileCheckpointer.mjs +0 -23
  484. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  485. package/dist/esm/tools/local/LocalCodingTools.mjs +0 -80
  486. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  487. package/dist/esm/tools/local/LocalExecutionEngine.mjs +0 -126
  488. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  489. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  490. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +0 -12
  491. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  492. package/dist/esm/tools/local/attachments.mjs +0 -44
  493. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  494. package/dist/esm/tools/local/bashAst.mjs +0 -16
  495. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  496. package/dist/esm/tools/local/editStrategies.mjs +0 -14
  497. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  498. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  499. package/dist/esm/tools/local/syntaxCheck.mjs +0 -31
  500. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  501. package/dist/esm/tools/local/textEncoding.mjs +0 -11
  502. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  503. package/dist/esm/tools/local/workspaceFS.mjs +0 -33
  504. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  505. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  506. package/dist/esm/tools/schema.mjs +0 -8
  507. package/dist/esm/tools/schema.mjs.map +1 -1
  508. package/dist/esm/tools/search/anthropic.mjs +0 -9
  509. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  510. package/dist/esm/tools/search/content.mjs.map +1 -1
  511. package/dist/esm/tools/search/crw-scraper.mjs +0 -33
  512. package/dist/esm/tools/search/crw-scraper.mjs.map +1 -1
  513. package/dist/esm/tools/search/crw-search.mjs +0 -2
  514. package/dist/esm/tools/search/crw-search.mjs.map +1 -1
  515. package/dist/esm/tools/search/firecrawl.mjs +0 -25
  516. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  517. package/dist/esm/tools/search/format.mjs +0 -30
  518. package/dist/esm/tools/search/format.mjs.map +1 -1
  519. package/dist/esm/tools/search/highlights.mjs +0 -16
  520. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  521. package/dist/esm/tools/search/keenable-scraper.mjs +0 -8
  522. package/dist/esm/tools/search/keenable-scraper.mjs.map +1 -1
  523. package/dist/esm/tools/search/keenable-search.mjs +0 -7
  524. package/dist/esm/tools/search/keenable-search.mjs.map +1 -1
  525. package/dist/esm/tools/search/rerankers.mjs +0 -35
  526. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  527. package/dist/esm/tools/search/schema.mjs +0 -1
  528. package/dist/esm/tools/search/schema.mjs.map +1 -1
  529. package/dist/esm/tools/search/search.mjs +1 -14
  530. package/dist/esm/tools/search/search.mjs.map +1 -1
  531. package/dist/esm/tools/search/serper-scraper.mjs +0 -46
  532. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  533. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  534. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  535. package/dist/esm/tools/search/tool.mjs +0 -25
  536. package/dist/esm/tools/search/tool.mjs.map +1 -1
  537. package/dist/esm/tools/search/utils.mjs +0 -8
  538. package/dist/esm/tools/search/utils.mjs.map +1 -1
  539. package/dist/esm/tools/skillCatalog.mjs +0 -6
  540. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  541. package/dist/esm/tools/streamedToolCallSeals.mjs +0 -6
  542. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  543. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +0 -2
  544. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -1
  545. package/dist/esm/tools/subagent/SubagentExecutor.mjs +3 -213
  546. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  547. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
  548. package/dist/esm/tools/subagent/childGraphConfig.mjs +0 -4
  549. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
  550. package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -1
  551. package/dist/esm/tools/toolOutputReferences.mjs +1 -322
  552. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  553. package/dist/esm/types/hitl.mjs +0 -5
  554. package/dist/esm/types/hitl.mjs.map +1 -1
  555. package/dist/esm/utils/callbacks.mjs.map +1 -1
  556. package/dist/esm/utils/errors.mjs +14 -165
  557. package/dist/esm/utils/errors.mjs.map +1 -1
  558. package/dist/esm/utils/events.mjs +0 -10
  559. package/dist/esm/utils/events.mjs.map +1 -1
  560. package/dist/esm/utils/graph.mjs.map +1 -1
  561. package/dist/esm/utils/handlers.mjs +0 -3
  562. package/dist/esm/utils/handlers.mjs.map +1 -1
  563. package/dist/esm/utils/llm.mjs +0 -1
  564. package/dist/esm/utils/llm.mjs.map +1 -1
  565. package/dist/esm/utils/misc.mjs +0 -16
  566. package/dist/esm/utils/misc.mjs.map +1 -1
  567. package/dist/esm/utils/proxy.mjs +0 -26
  568. package/dist/esm/utils/proxy.mjs.map +1 -1
  569. package/dist/esm/utils/run.mjs +0 -6
  570. package/dist/esm/utils/run.mjs.map +1 -1
  571. package/dist/esm/utils/schema.mjs +0 -5
  572. package/dist/esm/utils/schema.mjs.map +1 -1
  573. package/dist/esm/utils/title.mjs +0 -6
  574. package/dist/esm/utils/title.mjs.map +1 -1
  575. package/dist/esm/utils/tokens.mjs +0 -113
  576. package/dist/esm/utils/tokens.mjs.map +1 -1
  577. package/dist/esm/utils/toolContent.mjs +0 -41
  578. package/dist/esm/utils/toolContent.mjs.map +1 -1
  579. package/dist/esm/utils/truncation.mjs +0 -61
  580. package/dist/esm/utils/truncation.mjs.map +1 -1
  581. package/dist/types/agents/AgentContext.d.ts +3 -3
  582. package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +3 -3
  583. package/dist/types/agents/projection.d.ts +1 -1
  584. package/dist/types/events.d.ts +2 -2
  585. package/dist/types/graphs/Graph.d.ts +11 -11
  586. package/dist/types/graphs/MultiAgentGraph.d.ts +2 -2
  587. package/dist/types/graphs/createGraph.d.ts +4 -4
  588. package/dist/types/graphs/graphFactory.d.ts +1 -1
  589. package/dist/types/hitl/askUserQuestion.d.ts +1 -1
  590. package/dist/types/hitl/askUserQuestions.d.ts +1 -1
  591. package/dist/types/hitl/askUserQuestionsInterrupt.d.ts +1 -1
  592. package/dist/types/hooks/types.d.ts +1 -1
  593. package/dist/types/instrumentation.d.ts +1 -1
  594. package/dist/types/langfuse.d.ts +3 -3
  595. package/dist/types/langfuseConfig.d.ts +2 -2
  596. package/dist/types/langfuseRuntimeContext.d.ts +1 -1
  597. package/dist/types/langfuseRuntimeScope.d.ts +2 -2
  598. package/dist/types/langfuseSpanRegistry.d.ts +1 -1
  599. package/dist/types/langfuseToolOutputTracing.d.ts +3 -3
  600. package/dist/types/llm/anthropic/index.d.ts +1 -1
  601. package/dist/types/llm/bedrock/index.d.ts +1 -1
  602. package/dist/types/llm/bedrock/toolCache.d.ts +2 -2
  603. package/dist/types/llm/contextOverflowRecovery.d.ts +2 -2
  604. package/dist/types/llm/google/index.d.ts +1 -1
  605. package/dist/types/llm/init.d.ts +2 -2
  606. package/dist/types/llm/invoke.d.ts +6 -6
  607. package/dist/types/llm/mistral/index.d.ts +1 -1
  608. package/dist/types/llm/openai/index.d.ts +2 -2
  609. package/dist/types/llm/openrouter/index.d.ts +2 -2
  610. package/dist/types/llm/openrouter/toolCache.d.ts +2 -2
  611. package/dist/types/llm/providers.d.ts +2 -2
  612. package/dist/types/llm/request.d.ts +2 -2
  613. package/dist/types/llm/stream/chunkAdapters.d.ts +1 -1
  614. package/dist/types/llm/streamLimits.d.ts +1 -1
  615. package/dist/types/llm/truncation.d.ts +1 -1
  616. package/dist/types/llm/vertexai/index.d.ts +1 -1
  617. package/dist/types/messages/alternation.d.ts +1 -1
  618. package/dist/types/messages/anthropicToolCache.d.ts +2 -2
  619. package/dist/types/messages/assistantPhase.d.ts +3 -3
  620. package/dist/types/messages/budget.d.ts +1 -1
  621. package/dist/types/messages/cache.d.ts +1 -1
  622. package/dist/types/messages/contextPruning.d.ts +2 -2
  623. package/dist/types/messages/core.d.ts +2 -2
  624. package/dist/types/messages/format.d.ts +2 -2
  625. package/dist/types/messages/ids.d.ts +2 -2
  626. package/dist/types/messages/injected.d.ts +1 -1
  627. package/dist/types/messages/langchain.d.ts +1 -1
  628. package/dist/types/messages/prune.d.ts +3 -3
  629. package/dist/types/openai/index.d.ts +1 -1
  630. package/dist/types/prompts/activityLabel.d.ts +2 -2
  631. package/dist/types/responses/index.d.ts +1 -1
  632. package/dist/types/run.d.ts +3 -3
  633. package/dist/types/session/handlers.d.ts +1 -1
  634. package/dist/types/session/types.d.ts +1 -1
  635. package/dist/types/stream.d.ts +4 -4
  636. package/dist/types/summarization/index.d.ts +1 -1
  637. package/dist/types/summarization/node.d.ts +6 -6
  638. package/dist/types/test/mockTools.d.ts +1 -1
  639. package/dist/types/tools/BashExecutor.d.ts +2 -2
  640. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +2 -2
  641. package/dist/types/tools/CodeExecutor.d.ts +3 -3
  642. package/dist/types/tools/CodeSessionFileSummary.d.ts +1 -1
  643. package/dist/types/tools/ProgrammaticToolCalling.d.ts +2 -2
  644. package/dist/types/tools/ReadFile.d.ts +1 -1
  645. package/dist/types/tools/SkillTool.d.ts +1 -1
  646. package/dist/types/tools/SubagentTool.d.ts +3 -3
  647. package/dist/types/tools/ToolNode.d.ts +5 -5
  648. package/dist/types/tools/ToolSearch.d.ts +2 -2
  649. package/dist/types/tools/cloudflare/CloudflareBridgeRuntime.d.ts +1 -1
  650. package/dist/types/tools/cloudflare/CloudflareProgrammaticToolCalling.d.ts +1 -1
  651. package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +2 -2
  652. package/dist/types/tools/cloudflare/CloudflareSandboxTools.d.ts +1 -1
  653. package/dist/types/tools/eagerEventExecution.d.ts +1 -1
  654. package/dist/types/tools/handlers.d.ts +3 -3
  655. package/dist/types/tools/intentArg.d.ts +1 -1
  656. package/dist/types/tools/local/CompileCheckTool.d.ts +2 -2
  657. package/dist/types/tools/local/FileCheckpointer.d.ts +1 -1
  658. package/dist/types/tools/local/LocalCodingTools.d.ts +2 -2
  659. package/dist/types/tools/local/LocalExecutionEngine.d.ts +1 -1
  660. package/dist/types/tools/local/LocalExecutionTools.d.ts +1 -1
  661. package/dist/types/tools/local/LocalProgrammaticToolCalling.d.ts +1 -1
  662. package/dist/types/tools/local/bashAst.d.ts +1 -1
  663. package/dist/types/tools/local/resolveLocalExecutionTools.d.ts +1 -1
  664. package/dist/types/tools/local/syntaxCheck.d.ts +1 -1
  665. package/dist/types/tools/ptcTimeout.d.ts +1 -1
  666. package/dist/types/tools/schema.d.ts +1 -1
  667. package/dist/types/tools/search/anthropic.d.ts +1 -1
  668. package/dist/types/tools/skillCatalog.d.ts +1 -1
  669. package/dist/types/tools/subagent/SubagentExecutor.d.ts +5 -5
  670. package/dist/types/tools/subagent/SubagentReplay.d.ts +3 -3
  671. package/dist/types/tools/subagent/childGraphConfig.d.ts +2 -2
  672. package/dist/types/types/activityLabel.d.ts +3 -3
  673. package/dist/types/types/graph.d.ts +7 -7
  674. package/dist/types/types/llm.d.ts +9 -9
  675. package/dist/types/types/run.d.ts +7 -7
  676. package/dist/types/types/stream.d.ts +5 -5
  677. package/dist/types/types/summarize.d.ts +2 -2
  678. package/dist/types/types/tools.d.ts +5 -5
  679. package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +1 -1
  680. package/dist/types/utils/errors.d.ts +1 -1
  681. package/dist/types/utils/events.d.ts +1 -1
  682. package/dist/types/utils/handlers.d.ts +3 -3
  683. package/dist/types/utils/llm.d.ts +1 -1
  684. package/dist/types/utils/llmConfig.d.ts +1 -1
  685. package/dist/types/utils/title.d.ts +1 -1
  686. package/package.json +10 -3
  687. package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
  688. package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
  689. package/src/__tests__/stream.streamLimits.test.ts +0 -1982
  690. package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
  691. package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
  692. package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
  693. package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
  694. package/src/agents/__tests__/AgentContext.test.ts +0 -2425
  695. package/src/agents/__tests__/projection.test.ts +0 -73
  696. package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
  697. package/src/aggregator.test.ts +0 -1214
  698. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
  699. package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
  700. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
  701. package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
  702. package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
  703. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
  704. package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
  705. package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
  706. package/src/graphs/__tests__/createGraph.test.ts +0 -206
  707. package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
  708. package/src/hooks/__tests__/compactHooks.test.ts +0 -250
  709. package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
  710. package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
  711. package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
  712. package/src/hooks/__tests__/integration.test.ts +0 -337
  713. package/src/hooks/__tests__/matchers.test.ts +0 -238
  714. package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
  715. package/src/hooks/__tests__/toolHooks.test.ts +0 -669
  716. package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
  717. package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
  718. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  719. package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
  720. package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
  721. package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
  722. package/src/llm/anthropic/llm.spec.ts +0 -3394
  723. package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
  724. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
  725. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
  726. package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
  727. package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
  728. package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
  729. package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
  730. package/src/llm/bedrock/inherited.spec.ts +0 -724
  731. package/src/llm/bedrock/llm.spec.ts +0 -1533
  732. package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
  733. package/src/llm/bedrock/toolCache.test.ts +0 -194
  734. package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
  735. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
  736. package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
  737. package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
  738. package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
  739. package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
  740. package/src/llm/google/data/gettysburg10.wav +0 -0
  741. package/src/llm/google/data/hotdog.jpg +0 -0
  742. package/src/llm/google/inherited-stream-events.spec.ts +0 -350
  743. package/src/llm/google/llm.spec.ts +0 -1388
  744. package/src/llm/google/streamSmoothing.test.ts +0 -121
  745. package/src/llm/google/utils/common.test.ts +0 -196
  746. package/src/llm/invoke.alternation.test.ts +0 -87
  747. package/src/llm/invoke.handoffCue.test.ts +0 -112
  748. package/src/llm/invoke.streamLimits.test.ts +0 -142
  749. package/src/llm/invoke.test.ts +0 -1198
  750. package/src/llm/mistral/streamSmoothing.test.ts +0 -97
  751. package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
  752. package/src/llm/openai/contentBlocks.test.ts +0 -381
  753. package/src/llm/openai/deepseek.test.ts +0 -747
  754. package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
  755. package/src/llm/openai/inherited-xai.spec.ts +0 -416
  756. package/src/llm/openai/llm.spec.ts +0 -1774
  757. package/src/llm/openai/managedRequests.test.ts +0 -182
  758. package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
  759. package/src/llm/openai/streamMetadata.spec.ts +0 -86
  760. package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
  761. package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
  762. package/src/llm/openai/utils/messages.test.ts +0 -488
  763. package/src/llm/openrouter/reasoning.test.ts +0 -561
  764. package/src/llm/openrouter/toolCache.test.ts +0 -134
  765. package/src/llm/preempt.test.ts +0 -323
  766. package/src/llm/stream/chunkAdapters.test.ts +0 -202
  767. package/src/llm/stream/reassembly.test.ts +0 -241
  768. package/src/llm/stream/smoother.bench.test.ts +0 -155
  769. package/src/llm/stream/smoother.test.ts +0 -519
  770. package/src/llm/streamLimits.test.ts +0 -450
  771. package/src/llm/truncation.test.ts +0 -242
  772. package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
  773. package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
  774. package/src/llm/vertexai/llm.spec.ts +0 -159
  775. package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
  776. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
  777. package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
  778. package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
  779. package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
  780. package/src/messages/__tests__/observationMasking.test.ts +0 -312
  781. package/src/messages/__tests__/recency.test.ts +0 -267
  782. package/src/messages/__tests__/tools.test.ts +0 -473
  783. package/src/messages/alternation.test.ts +0 -212
  784. package/src/messages/assistantPhase.test.ts +0 -75
  785. package/src/messages/cache.tail.test.ts +0 -533
  786. package/src/messages/cache.test.ts +0 -2166
  787. package/src/messages/content.test.ts +0 -362
  788. package/src/messages/contextPruning.test.ts +0 -184
  789. package/src/messages/ensureThinkingBlock.test.ts +0 -1427
  790. package/src/messages/foldToollessToolBlocks.test.ts +0 -596
  791. package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
  792. package/src/messages/formatAgentMessages.skills.test.ts +0 -513
  793. package/src/messages/formatAgentMessages.steer.test.ts +0 -598
  794. package/src/messages/formatAgentMessages.test.ts +0 -8111
  795. package/src/messages/formatAgentMessages.tools.test.ts +0 -522
  796. package/src/messages/formatMessage.test.ts +0 -693
  797. package/src/messages/handoffCue.test.ts +0 -96
  798. package/src/messages/injected.test.ts +0 -107
  799. package/src/messages/labelContentByAgent.test.ts +0 -962
  800. package/src/messages/reducer.spec.ts +0 -32
  801. package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
  802. package/src/messages/tailCacheConversion.test.ts +0 -161
  803. package/src/openai/__tests__/openai.test.ts +0 -337
  804. package/src/responses/__tests__/responses.test.ts +0 -652
  805. package/src/scripts/abort.ts +0 -157
  806. package/src/scripts/activity-labels/captured.json +0 -56
  807. package/src/scripts/activity-labels/checks.cjs +0 -205
  808. package/src/scripts/activity-labels/corpus.cjs +0 -473
  809. package/src/scripts/activity-labels/report.cjs +0 -203
  810. package/src/scripts/activity-labels/rescore.cjs +0 -102
  811. package/src/scripts/activity-labels/run.ts +0 -705
  812. package/src/scripts/activity-labels/variants.ts +0 -71
  813. package/src/scripts/ant_web_search.ts +0 -159
  814. package/src/scripts/ant_web_search_edge_case.ts +0 -163
  815. package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
  816. package/src/scripts/args.ts +0 -48
  817. package/src/scripts/bedrock-cache-debug.ts +0 -250
  818. package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
  819. package/src/scripts/bedrock-merge-test.ts +0 -107
  820. package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
  821. package/src/scripts/bench-prompt-cache.ts +0 -479
  822. package/src/scripts/caching.ts +0 -132
  823. package/src/scripts/cli.ts +0 -172
  824. package/src/scripts/cli2.ts +0 -133
  825. package/src/scripts/cli3.ts +0 -184
  826. package/src/scripts/cli4.ts +0 -191
  827. package/src/scripts/cli5.ts +0 -191
  828. package/src/scripts/code_exec.ts +0 -214
  829. package/src/scripts/code_exec_files.ts +0 -237
  830. package/src/scripts/code_exec_multi_session.ts +0 -237
  831. package/src/scripts/code_exec_ptc.ts +0 -335
  832. package/src/scripts/code_exec_session.ts +0 -283
  833. package/src/scripts/code_exec_simple.ts +0 -148
  834. package/src/scripts/compare_pi_vs_ours.ts +0 -1259
  835. package/src/scripts/content.ts +0 -139
  836. package/src/scripts/context-overflow-probe.ts +0 -997
  837. package/src/scripts/empty_input.ts +0 -137
  838. package/src/scripts/handoff-test.ts +0 -134
  839. package/src/scripts/local_engine.ts +0 -166
  840. package/src/scripts/local_engine_checkpointer.ts +0 -205
  841. package/src/scripts/local_engine_compile.ts +0 -263
  842. package/src/scripts/local_engine_hooks.ts +0 -226
  843. package/src/scripts/local_engine_image.ts +0 -201
  844. package/src/scripts/local_engine_ptc.ts +0 -151
  845. package/src/scripts/local_engine_workspace.ts +0 -258
  846. package/src/scripts/memory.ts +0 -107
  847. package/src/scripts/multi-agent-chain.ts +0 -332
  848. package/src/scripts/multi-agent-conditional.ts +0 -222
  849. package/src/scripts/multi-agent-document-review-chain.ts +0 -198
  850. package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
  851. package/src/scripts/multi-agent-parallel-start.ts +0 -265
  852. package/src/scripts/multi-agent-parallel.ts +0 -395
  853. package/src/scripts/multi-agent-sequence.ts +0 -217
  854. package/src/scripts/multi-agent-subagent.ts +0 -246
  855. package/src/scripts/multi-agent-supervisor.ts +0 -366
  856. package/src/scripts/multi-agent-test.ts +0 -187
  857. package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
  858. package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
  859. package/src/scripts/parallel-full-metadata-test.ts +0 -241
  860. package/src/scripts/parallel-tools-test.ts +0 -341
  861. package/src/scripts/preempt-probe.ts +0 -330
  862. package/src/scripts/preempt-scenarios.ts +0 -388
  863. package/src/scripts/programmatic_exec.ts +0 -387
  864. package/src/scripts/programmatic_exec_agent.ts +0 -232
  865. package/src/scripts/search.ts +0 -147
  866. package/src/scripts/sequential-full-metadata-test.ts +0 -198
  867. package/src/scripts/session_live.ts +0 -548
  868. package/src/scripts/simple.ts +0 -226
  869. package/src/scripts/single-agent-metadata-test.ts +0 -196
  870. package/src/scripts/stream.ts +0 -141
  871. package/src/scripts/subagent-configurable-inheritance.ts +0 -252
  872. package/src/scripts/subagent-event-driven-debug.ts +0 -190
  873. package/src/scripts/subagent-tools-debug.ts +0 -160
  874. package/src/scripts/subagent-usage-sink.ts +0 -176
  875. package/src/scripts/summarization-recency.ts +0 -462
  876. package/src/scripts/test-custom-prompt-key.ts +0 -145
  877. package/src/scripts/test-handoff-input.ts +0 -170
  878. package/src/scripts/test-handoff-preamble.ts +0 -278
  879. package/src/scripts/test-handoff-steering.ts +0 -430
  880. package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
  881. package/src/scripts/test-parallel-agent-labeling.ts +0 -327
  882. package/src/scripts/test-parallel-handoffs.ts +0 -292
  883. package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
  884. package/src/scripts/test-thinking-handoff.ts +0 -156
  885. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
  886. package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
  887. package/src/scripts/test-tools-before-handoff.ts +0 -222
  888. package/src/scripts/test_code_api.ts +0 -354
  889. package/src/scripts/thinking-bedrock.ts +0 -160
  890. package/src/scripts/thinking-vertexai.ts +0 -168
  891. package/src/scripts/thinking.ts +0 -172
  892. package/src/scripts/tool_search.ts +0 -153
  893. package/src/scripts/tools.ts +0 -163
  894. package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
  895. package/src/session/__tests__/handlers.test.ts +0 -161
  896. package/src/specs/activity-label-observability.live.test.ts +0 -262
  897. package/src/specs/activity-label-observability.test.ts +0 -167
  898. package/src/specs/activity-label-prompt.test.ts +0 -359
  899. package/src/specs/activity-label-trace-seed.test.ts +0 -47
  900. package/src/specs/activity-phase-label.test.ts +0 -306
  901. package/src/specs/agent-handoffs.live.test.ts +0 -140
  902. package/src/specs/agent-handoffs.test.ts +0 -2465
  903. package/src/specs/anthropic.simple.test.ts +0 -453
  904. package/src/specs/ask-user-question-batch.test.ts +0 -289
  905. package/src/specs/ask-user-questions.live.test.ts +0 -185
  906. package/src/specs/ask-user-questions.test.ts +0 -293
  907. package/src/specs/azure.simple.test.ts +0 -502
  908. package/src/specs/bedrock-toolless.live.test.ts +0 -123
  909. package/src/specs/bedrock-truncation.live.test.ts +0 -191
  910. package/src/specs/cache.simple.test.ts +0 -416
  911. package/src/specs/context-accuracy.live.test.ts +0 -409
  912. package/src/specs/context-overflow-recovery.live.test.ts +0 -213
  913. package/src/specs/context-usage-event.test.ts +0 -117
  914. package/src/specs/context-usage.live.test.ts +0 -297
  915. package/src/specs/custom-event-await.test.ts +0 -304
  916. package/src/specs/deepseek.simple.test.ts +0 -290
  917. package/src/specs/deterministic-trace-id.test.ts +0 -43
  918. package/src/specs/discovered-tools.test.ts +0 -217
  919. package/src/specs/durability-checkpoint.integration.test.ts +0 -243
  920. package/src/specs/graph-subagent.live.test.ts +0 -242
  921. package/src/specs/graph-subagent.test.ts +0 -322
  922. package/src/specs/handoffCue.test.ts +0 -165
  923. package/src/specs/langfuse-callbacks.test.ts +0 -1578
  924. package/src/specs/langfuse-config.test.ts +0 -247
  925. package/src/specs/langfuse-instrumentation.test.ts +0 -393
  926. package/src/specs/langfuse-metadata.test.ts +0 -245
  927. package/src/specs/langfuse-routing.integration.test.ts +0 -844
  928. package/src/specs/langfuse-runtime-context.test.ts +0 -92
  929. package/src/specs/langfuse-span-registry.test.ts +0 -87
  930. package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
  931. package/src/specs/langfuse-trace-shaping.test.ts +0 -591
  932. package/src/specs/moonshot.simple.test.ts +0 -367
  933. package/src/specs/multi-agent-summarization.test.ts +0 -396
  934. package/src/specs/openai.simple.test.ts +0 -315
  935. package/src/specs/openrouter.simple.test.ts +0 -275
  936. package/src/specs/preemptSeal.test.ts +0 -678
  937. package/src/specs/prune.test.ts +0 -3741
  938. package/src/specs/reasoning.test.ts +0 -201
  939. package/src/specs/run-step-timestamps.test.ts +0 -414
  940. package/src/specs/spec.utils.ts +0 -15
  941. package/src/specs/subagent.test.ts +0 -864
  942. package/src/specs/summarization-unit.test.ts +0 -973
  943. package/src/specs/summarization.test.ts +0 -3823
  944. package/src/specs/summarize-prune.test.ts +0 -376
  945. package/src/specs/thinking-handoff.test.ts +0 -621
  946. package/src/specs/thinking-prune.test.ts +0 -827
  947. package/src/specs/token-accounting-e2e.test.ts +0 -1034
  948. package/src/specs/token-accounting-pipeline.test.ts +0 -1008
  949. package/src/specs/token-distribution-edge-case.test.ts +0 -315
  950. package/src/specs/token-memoization.test.ts +0 -40
  951. package/src/specs/tokens.test.ts +0 -1000
  952. package/src/specs/tool-error-resume.test.ts +0 -194
  953. package/src/specs/tool-error.test.ts +0 -198
  954. package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
  955. package/src/stream.dispatch.test.ts +0 -63
  956. package/src/stream.test.ts +0 -144
  957. package/src/summarization/__tests__/aggregator.test.ts +0 -236
  958. package/src/summarization/__tests__/node.test.ts +0 -1996
  959. package/src/summarization/__tests__/trigger.test.ts +0 -149
  960. package/src/summarization/chunkHandler.test.ts +0 -196
  961. package/src/test/mockTools.ts +0 -386
  962. package/src/tools/Calculator.test.ts +0 -278
  963. package/src/tools/__tests__/BashExecutor.test.ts +0 -108
  964. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
  965. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
  966. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
  967. package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
  968. package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
  969. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
  970. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
  971. package/src/tools/__tests__/ReadFile.test.ts +0 -44
  972. package/src/tools/__tests__/SkillTool.test.ts +0 -442
  973. package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
  974. package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
  975. package/src/tools/__tests__/SubagentTool.test.ts +0 -149
  976. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
  977. package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
  978. package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
  979. package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
  980. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
  981. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
  982. package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
  983. package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
  984. package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
  985. package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
  986. package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
  987. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
  988. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
  989. package/src/tools/__tests__/directToolHooks.test.ts +0 -700
  990. package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
  991. package/src/tools/__tests__/handlers.test.ts +0 -997
  992. package/src/tools/__tests__/hitl.test.ts +0 -4663
  993. package/src/tools/__tests__/intentArg.test.ts +0 -357
  994. package/src/tools/__tests__/intentCoverage.test.ts +0 -139
  995. package/src/tools/__tests__/localToolNames.test.ts +0 -75
  996. package/src/tools/__tests__/skillCatalog.test.ts +0 -161
  997. package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
  998. package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
  999. package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
  1000. package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
  1001. package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
  1002. package/src/tools/search/content.test.ts +0 -173
  1003. package/src/tools/search/crw.test.ts +0 -836
  1004. package/src/tools/search/format.test.ts +0 -242
  1005. package/src/tools/search/http-agent.test.ts +0 -133
  1006. package/src/tools/search/jina-reranker.test.ts +0 -306
  1007. package/src/tools/search/keenable-scraper.test.ts +0 -153
  1008. package/src/tools/search/keenable.test.ts +0 -183
  1009. package/src/tools/search/outcome.test.ts +0 -90
  1010. package/src/tools/search/output.md +0 -2775
  1011. package/src/tools/search/rag-api-reranker.test.ts +0 -891
  1012. package/src/tools/search/source-processing.test.ts +0 -516
  1013. package/src/tools/search/tavily.test.ts +0 -965
  1014. package/src/tools/search/test.html +0 -884
  1015. package/src/tools/search/test.md +0 -643
  1016. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
  1017. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
  1018. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
  1019. package/src/utils/__tests__/apportion.test.ts +0 -32
  1020. package/src/utils/__tests__/errors.test.ts +0 -270
  1021. package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
  1022. package/src/utils/__tests__/redactSecrets.test.ts +0 -56
  1023. package/src/utils/__tests__/truncation.test.ts +0 -66
  1024. package/src/utils/llm.test.ts +0 -18
  1025. package/src/utils/proxy.test.ts +0 -176
  1026. package/src/utils/toolContent.test.ts +0 -1432
@@ -1 +1 @@
1
- {"version":3,"file":"node.cjs","names":["AIMessage","serializeToolContentBounded","ToolMessage","isComputerCallOutputMessage","calculateMaxToolResultChars","compactToolContent","cloneToolMessageWithContent","getMaxOutputTokensKey","SystemMessage","initializeModel","resolvePromptCacheTtl","StreamLimitExceededError","tryFallbackProviders","HumanMessage","safeDispatchCustomEvent","executeHooks","splitAtRecencyBoundary","STREAM_LIMIT_EPOCH_KEY","createRemoveAllMessage","getChunkContent","chunkAny","attemptInvoke","addTailCacheControl"],"sources":["../../../src/summarization/node.ts"],"sourcesContent":["import {\n AIMessage,\n ToolMessage,\n HumanMessage,\n SystemMessage,\n} from '@langchain/core/messages';\nimport type { UsageMetadata, BaseMessage } from '@langchain/core/messages';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type { StreamLimitState } from '@/llm/streamLimits';\nimport type { AgentContext } from '@/agents/AgentContext';\nimport type { HookRegistry } from '@/hooks';\nimport type { OnChunk } from '@/llm/invoke';\nimport type * as t from '@/types';\nimport {\n cloneToolMessageWithContent,\n compactToolContent,\n isComputerCallOutputMessage,\n serializeToolContentBounded,\n} from '@/utils/toolContent';\nimport {\n enforceStreamLimitsForWireChunk,\n StreamLimitExceededError,\n STREAM_LIMIT_EPOCH_KEY,\n} from '@/llm/streamLimits';\nimport {\n addTailCacheControl,\n resolvePromptCacheTtl,\n type PromptCacheTtl,\n} from '@/messages/cache';\nimport {\n DEFAULT_RETAIN_RECENT_TURNS,\n splitAtRecencyBoundary,\n} from '@/messages/recency';\nimport {\n Constants,\n ContentTypes,\n GraphEvents,\n StepTypes,\n Providers,\n} from '@/common';\nimport { safeDispatchCustomEvent, emitAgentLog } from '@/utils/events';\nimport { attemptInvoke, tryFallbackProviders } from '@/llm/invoke';\nimport { calculateMaxToolResultChars } from '@/utils/truncation';\nimport { createRemoveAllMessage } from '@/messages/reducer';\nimport { getMaxOutputTokensKey } from '@/llm/request';\nimport { initializeModel } from '@/llm/init';\nimport { getChunkContent } from '@/stream';\nimport { executeHooks } from '@/hooks';\n\nconst SUMMARIZATION_PARAM_KEYS = new Set(['maxSummaryTokens']);\n\n/**\n * Default number of recent user-led turns preserved verbatim during\n * compaction. A turn begins at a HumanMessage and includes every\n * following AIMessage and ToolMessage up to the next HumanMessage.\n * The most recent turn is always retained regardless of this value;\n * the default of `2` additionally keeps the prior exchange so the\n * model has fresh context on what just happened. Setting\n * `retainRecent.turns` to `0` reverts to the legacy \"summarize every\n * message\" behavior.\n */\n/**\n * Token overhead of the XML wrapper + instruction text added around the\n * summary at injection time in AgentContext.buildSystemRunnable:\n * `<summary>\\n${text}\\n</summary>\\n\\nYour context window was compacted...`\n * ~33 tokens on Anthropic, ~24-27 on OpenAI. Using 33 as a safe ceiling.\n */\nconst SUMMARY_WRAPPER_OVERHEAD_TOKENS = 33;\n\n/** Structured checkpoint prompt for fresh summarization (no prior summary). */\nexport const DEFAULT_SUMMARIZATION_PROMPT = `Hold on, before you continue I need you to write me a checkpoint of everything so far. Your context window is filling up and this checkpoint replaces the messages above, so capture everything you need to pick right back up.\n\nDon't second-guess or fact-check anything you did, your tool results reflect exactly what happened. If a tool result appears truncated, that's just a display artifact from context management: the tool executed fully. Just record what you did and what you observed. Only the checkpoint, don't respond to me or continue the conversation.\n\n## Checkpoint\n\n## Goal\nWhat I asked you to do and any sub-goals you identified.\n\n## Constraints & Preferences\nAny rules, preferences, or configuration I established.\n\n## Progress\n### Done\n- What you completed and the outcomes\n\n### In Progress\n- What you're currently working on\n\n## Key Decisions\nDecisions you made and why.\n\n## Next Steps\nConcrete task actions remaining, in priority order.\n\n## Critical Context\nExact identifiers, names, error messages, URLs, and details you need to preserve verbatim.\n\nRules:\n- Record what you did and observed, don't judge or re-evaluate it\n- For each tool call: the tool name, key inputs, and the outcome\n- Preserve exact identifiers, names, errors, and references verbatim\n- Short declarative sentences\n- Skip empty sections`;\n\n/** Prompt for re-compaction when a prior summary exists. */\nexport const DEFAULT_UPDATE_SUMMARIZATION_PROMPT = `Hold on again, update your checkpoint. Merge the new messages into your existing checkpoint and give me a single consolidated replacement.\n\nKeep it roughly the same length as your last checkpoint. Compress older details to make room for what's new, don't just append. Give recent actions more detail, compress older items to one-liners.\n\nDon't fact-check or second-guess anything, your tool results are ground truth. If a tool result appears truncated, that's just a display artifact: the tool executed fully. Only the checkpoint, don't respond to me or continue the conversation.\n\nRules:\n- Merge new progress into existing sections, don't duplicate headers\n- Compress older completed items into one-line entries\n- Move items from \"In Progress\" to \"Done\" when you completed them\n- Update \"Next Steps\" to reflect current task priorities.\n- For each new tool call: the tool name, key inputs, and the outcome\n- Preserve exact identifiers, names, errors, and references verbatim\n- Skip empty sections`;\n\nfunction separateParameters(parameters: Record<string, unknown>): {\n llmParams: Record<string, unknown>;\n maxSummaryTokens?: number;\n} {\n const llmParams: Record<string, unknown> = {};\n let maxSummaryTokens: number | undefined;\n\n for (const [key, value] of Object.entries(parameters)) {\n if (SUMMARIZATION_PARAM_KEYS.has(key)) {\n if (\n key === 'maxSummaryTokens' &&\n typeof value === 'number' &&\n value > 0\n ) {\n maxSummaryTokens = value;\n }\n } else {\n llmParams[key] = value;\n }\n }\n\n return { llmParams, maxSummaryTokens };\n}\n\n/**\n * Generates a structural metadata summary without making an LLM call.\n * Used as a last-resort fallback when all summarization attempts fail.\n * Preserves tool names and message counts so the agent retains basic context.\n */\nfunction generateMetadataStub(messages: BaseMessage[]): string {\n const counts: Record<string, number> = {};\n const toolNames = new Set<string>();\n\n for (const msg of messages) {\n const role = msg.getType();\n counts[role] = (counts[role] ?? 0) + 1;\n\n if (role === 'tool' && msg.name != null && msg.name !== '') {\n toolNames.add(msg.name);\n }\n\n if (\n role === 'ai' &&\n msg instanceof AIMessage &&\n msg.tool_calls &&\n msg.tool_calls.length > 0\n ) {\n for (const tc of msg.tool_calls) {\n toolNames.add(tc.name);\n }\n }\n }\n\n const countParts = Object.entries(counts)\n .map(([role, count]) => `${count} ${role}`)\n .join(', ');\n\n const lines = [\n `[Metadata summary: ${messages.length} messages (${countParts})]`,\n ];\n\n if (toolNames.size > 0) {\n lines.push(`[Tools used: ${Array.from(toolNames).join(', ')}]`);\n }\n\n return lines.join('\\n');\n}\n\n/** Maximum number of tool failures to include in the enrichment section. */\nconst MAX_TOOL_FAILURES = 8;\n/** Maximum chars per failure summary line. */\nconst MAX_TOOL_FAILURE_CHARS = 240;\n\n/**\n * Extracts failed tool results from messages and formats them as a structured\n * section. LLMs often omit specific failure details (exit codes, error messages)\n * from their summaries, this mechanical enrichment guarantees they survive.\n */\nfunction extractToolFailuresSection(messages: BaseMessage[]): string {\n const failures: Array<{ toolName: string; summary: string }> = [];\n const seen = new Set<string>();\n\n for (const msg of messages) {\n if (msg.getType() !== 'tool') {\n continue;\n }\n const toolMsg = msg as ToolMessage;\n if (toolMsg.status !== 'error') {\n continue;\n }\n // Deduplicate by tool_call_id\n const callId = toolMsg.tool_call_id;\n if (callId && seen.has(callId)) {\n continue;\n }\n if (callId) {\n seen.add(callId);\n }\n\n const toolName = toolMsg.name ?? 'tool';\n const content = serializeToolContentBounded(\n toolMsg.content,\n MAX_TOOL_FAILURE_CHARS * 4\n );\n const normalized = content.replace(/\\s+/g, ' ').trim();\n const summary =\n normalized.length > MAX_TOOL_FAILURE_CHARS\n ? `${normalized.slice(0, MAX_TOOL_FAILURE_CHARS - 3)}...`\n : normalized;\n\n failures.push({ toolName, summary });\n }\n\n if (failures.length === 0) {\n return '';\n }\n\n const lines = failures\n .slice(0, MAX_TOOL_FAILURES)\n .map((f) => `- ${f.toolName}: ${f.summary}`);\n if (failures.length > MAX_TOOL_FAILURES) {\n lines.push(`- ...and ${failures.length - MAX_TOOL_FAILURES} more`);\n }\n\n return `\\n\\n## Tool Failures\\n${lines.join('\\n')}`;\n}\n\n/**\n * Appends mechanical enrichment sections to an LLM-generated summary.\n * Tool failures are appended verbatim because LLMs often omit specific\n * error details from their summaries.\n */\nfunction enrichSummary(summaryText: string, messages: BaseMessage[]): string {\n return summaryText + extractToolFailuresSection(messages);\n}\n\n/**\n * Restores pre-masking tool content onto the messages array using\n * `pendingOriginalToolContent` stored on AgentContext. Only allocates\n * a new array when there are entries to restore; otherwise returns the\n * input reference unchanged.\n */\nfunction restoreOriginalToolContent(\n messages: BaseMessage[],\n originalToolContent: Map<number, string> | undefined,\n maxContextTokens?: number\n): BaseMessage[] {\n if (originalToolContent == null || originalToolContent.size === 0) {\n return messages;\n }\n\n const restorable: Array<{\n index: number;\n message: ToolMessage;\n content: string;\n }> = [];\n for (const [index, content] of originalToolContent) {\n const message = messages[index];\n if (\n message instanceof ToolMessage &&\n !isComputerCallOutputMessage(message)\n ) {\n restorable.push({ index, message, content });\n }\n }\n if (restorable.length === 0) {\n return messages;\n }\n\n /**\n * Restored originals improve checkpoint quality, but they still feed a\n * provider call. Share one tool-result budget across every restoration so\n * several previously masked results cannot overflow the summarizer.\n */\n let remainingChars = calculateMaxToolResultChars(maxContextTokens);\n const restored = [...messages];\n for (let i = 0; i < restorable.length; i++) {\n const { index, message, content } = restorable[i];\n const maxChars = Math.floor(remainingChars / (restorable.length - i));\n const compacted = compactToolContent(content, maxChars).content;\n restored[index] = cloneToolMessageWithContent(message, compacted);\n remainingChars -= serializeToolContentBounded(compacted, maxChars).length;\n }\n return restored;\n}\n\n// ---------------------------------------------------------------------------\n// Extracted helpers for createSummarizeNode\n// ---------------------------------------------------------------------------\n\ninterface SummarizationClientConfig {\n provider: string;\n modelName?: string;\n clientOptions: Record<string, unknown>;\n effectiveMaxSummaryTokens?: number;\n promptText: string;\n updatePromptText: string;\n}\n\n/** Assembles the summarization model's client options from agent and config. */\nfunction buildSummarizationClientConfig(\n agentContext: AgentContext,\n summarizationConfig?: t.SummarizationConfig\n): SummarizationClientConfig {\n const provider = (summarizationConfig?.provider ??\n agentContext.provider) as string;\n const modelName = summarizationConfig?.model;\n const parameters = summarizationConfig?.parameters ?? {};\n const promptText =\n summarizationConfig?.prompt ?? DEFAULT_SUMMARIZATION_PROMPT;\n const updatePromptText =\n summarizationConfig?.updatePrompt ?? DEFAULT_UPDATE_SUMMARIZATION_PROMPT;\n\n const { llmParams, maxSummaryTokens: paramMaxSummaryTokens } =\n separateParameters(parameters);\n\n const isSelfSummarize = provider === (agentContext.provider as string);\n const baseOptions =\n isSelfSummarize && agentContext.clientOptions\n ? { ...agentContext.clientOptions }\n : {};\n\n const clientOptions: Record<string, unknown> = {\n ...baseOptions,\n ...llmParams,\n };\n\n if (modelName != null && modelName !== '') {\n clientOptions.model = modelName;\n clientOptions.modelName = modelName;\n }\n\n const effectiveMaxSummaryTokens =\n paramMaxSummaryTokens ?? summarizationConfig?.maxSummaryTokens;\n\n if (effectiveMaxSummaryTokens != null) {\n clientOptions[getMaxOutputTokensKey(provider)] = effectiveMaxSummaryTokens;\n }\n\n return {\n provider,\n modelName,\n clientOptions,\n effectiveMaxSummaryTokens,\n promptText,\n updatePromptText,\n };\n}\n\n/** Computes the token count for a summary, preferring provider output tokens when available. */\nfunction computeSummaryTokenCount(\n summaryText: string,\n summaryUsage: Partial<UsageMetadata> | undefined,\n tokenCounter?: (message: BaseMessage) => number\n): number {\n const providerOutputTokens = Number(summaryUsage?.output_tokens) || 0;\n if (providerOutputTokens > 0) {\n return providerOutputTokens + SUMMARY_WRAPPER_OVERHEAD_TOKENS;\n }\n if (tokenCounter) {\n return (\n tokenCounter(new SystemMessage(summaryText)) +\n SUMMARY_WRAPPER_OVERHEAD_TOKENS\n );\n }\n return 0;\n}\n\n/**\n * Names the first retained message so the summary declares its own extent\n * rather than leaving the next run to infer coverage from where the block\n * happens to sit.\n *\n * Anchored to the retained side, not the covered side. One source message can\n * expand into several messages — a steer splits an assistant entry into\n * pre-steer, steer, and post-steer entries sharing its ID — and the recency\n * split lands on any human-type message, including the steer. Naming the last\n * *covered* message would then name a half-covered ID with no correct reading;\n * naming the first *retained* message makes that same message the anchor, so it\n * survives whole and everything before it is unambiguously covered.\n *\n * Synthetic entries are skipped, because they can sit *before* a resolvable\n * one. `formatAgentMessages` reconstructs skill bodies inside its payload loop\n * (see the `pendingSkillNames` block) and keeps processing payload entries\n * afterwards, so an unstamped skill body — which `messagesStateReducer` then\n * gives a UUID no payload entry carries — is followed by stamped messages.\n * Anchoring on the UUID would look resolvable at write time and degrade to\n * positional trimming on read, dropping the retained tail. Skipping it reaches\n * the stamped message behind it.\n *\n * `convertInjectedMessages` records `injected` on everything it builds, which is\n * what makes this decidable: `isMeta` and `source` are both optional on\n * `InjectedMessage`, so a bare entry carries no marker of its own, and an\n * injected `source: 'steer'` is otherwise indistinguishable from a replayed one.\n * The remaining `isMeta`/`source` checks cover the constructors that build\n * synthetic entries directly instead of going through that funnel — hook context\n * in `ToolNode` and `StandardGraph`, handoff cues, reconstructed skill bodies.\n *\n * `steer` is exempt from the `source` check because a replayed steer *is*\n * correlated with its payload entry; rejecting every marked `source` once\n * dropped exactly those retained steers. Injected steers are still caught, by\n * `injected`.\n *\n * Known limitation: a payload entry that omits `messageId` is never stamped, so\n * the reducer's UUID is recorded and cannot resolve on the next run. There is no\n * write-time fix — such an entry has no stable ID to name in the next payload\n * either — and the reader's positional fallback is what `main` already does, so\n * the anchor degrades rather than misleads.\n */\nfunction isSyntheticContext(message: BaseMessage): boolean {\n const { additional_kwargs: kwargs } = message;\n if (kwargs.injected === true || kwargs.isMeta === true) {\n return true;\n }\n return kwargs.source != null && kwargs.source !== 'steer';\n}\n\nfunction resolveSummaryCoverage(\n messagesToRetain: BaseMessage[]\n): t.SummaryCoverage | undefined {\n for (let i = 0; i < messagesToRetain.length; i++) {\n const message = messagesToRetain[i];\n if (isSyntheticContext(message)) {\n continue;\n }\n const sourceMessageId = message.additional_kwargs.sourceMessageId;\n const sourceId =\n typeof sourceMessageId === 'string' ? sourceMessageId.trim() : '';\n const id = sourceId !== '' ? sourceId : message.id?.trim();\n if (id != null && id !== '') {\n return { retainedFromMessageId: id };\n }\n }\n return undefined;\n}\n\n/** Constructs the SummaryContentBlock persisted in the run step and dispatched to events. */\nfunction buildSummaryBlock(params: {\n summaryText: string;\n tokenCount: number;\n coverage?: t.SummaryCoverage;\n stepId: string;\n stepIndex: number;\n modelName?: string;\n provider: string;\n summaryVersion: number;\n}): t.SummaryContentBlock {\n return {\n type: ContentTypes.SUMMARY,\n content: [\n {\n type: ContentTypes.TEXT,\n text: params.summaryText,\n } as t.MessageContentComplex,\n ],\n tokenCount: params.tokenCount,\n ...(params.coverage != null ? { coverage: params.coverage } : {}),\n summaryVersion: params.summaryVersion,\n boundary: {\n messageId: params.stepId,\n contentIndex: params.stepIndex,\n },\n model: params.modelName,\n provider: params.provider,\n createdAt: new Date().toISOString(),\n };\n}\n\ntype LogFn = (\n level: 'debug' | 'info' | 'warn' | 'error',\n message: string,\n data?: Record<string, unknown>\n) => void;\n\n/**\n * Extracts an HTTP status code from a thrown LLM-provider error. Returns\n * `undefined` for non-object values (including `null` or `undefined`, both\n * valid `throw` targets in JS) so callers never dereference a nullish\n * value.\n */\nfunction extractHttpStatus(err: unknown): number | undefined {\n if (err == null || typeof err !== 'object') {\n return undefined;\n }\n const errRecord = err as Record<string, unknown>;\n const direct = errRecord.status;\n if (typeof direct === 'number') {\n return direct;\n }\n const statusCode = errRecord.statusCode;\n if (typeof statusCode === 'number') {\n return statusCode;\n }\n const response = errRecord.response;\n if (response != null && typeof response === 'object') {\n const nested = (response as Record<string, unknown>).status;\n if (typeof nested === 'number') {\n return nested;\n }\n }\n return undefined;\n}\n\n/**\n * Formats a provider-level error for logging. Returns both a human-readable\n * suffix (safe to include in the message string so it survives any host-side\n * formatter) and a structured metadata bag for rich log backends.\n */\nfunction describeProviderError(\n err: unknown,\n provider: string,\n modelName?: string\n): { suffix: string; data: Record<string, unknown> } {\n const providerLabel = `${provider}/${modelName ?? '(no-model)'}`;\n const errMsg = err instanceof Error ? err.message : String(err);\n\n const data: Record<string, unknown> = {\n provider,\n model: modelName,\n };\n if (err instanceof Error) {\n data.errorName = err.name;\n data.errorStack = err.stack;\n }\n\n const status = extractHttpStatus(err);\n const statusSuffix = status != null ? ` (HTTP ${status})` : '';\n if (status != null) {\n data.status = status;\n }\n\n return {\n suffix: `[${providerLabel}]${statusSuffix}: ${errMsg}`,\n data,\n };\n}\n\n/**\n * Formats an exhausted-fallback error. `tryFallbackProviders` throws the\n * last fallback provider's error, which may be from any of the configured\n * fallbacks — not the primary — so we label the log with the list of\n * fallback providers attempted rather than mis-attributing to the primary.\n *\n * Entries in `fallbacks` are normally strongly typed, but we defend against\n * malformed runtime config (null/undefined entries, missing `provider`\n * field) so a recoverable summarization failure is never promoted to an\n * uncaught exception from inside the logging path.\n */\nfunction describeFallbackError(\n err: unknown,\n fallbacks: unknown\n): { suffix: string; data: Record<string, unknown> } {\n const errMsg = err instanceof Error ? err.message : String(err);\n const list: ReadonlyArray<unknown> = Array.isArray(fallbacks)\n ? fallbacks\n : [];\n const providerNames = list\n .map((f) => {\n if (f == null || typeof f !== 'object') {\n return undefined;\n }\n const raw = (f as { provider?: unknown }).provider;\n return raw != null ? String(raw) : undefined;\n })\n .filter((p): p is string => typeof p === 'string');\n const label =\n providerNames.length > 0\n ? `fallbacks=[${providerNames.join(',')}]`\n : 'no-fallbacks';\n\n const data: Record<string, unknown> = {\n fallbackProviders: providerNames,\n fallbackCount: list.length,\n };\n if (err instanceof Error) {\n data.errorName = err.name;\n data.errorStack = err.stack;\n }\n const status = extractHttpStatus(err);\n const statusSuffix = status != null ? ` (HTTP ${status})` : '';\n if (status != null) {\n data.status = status;\n }\n\n return {\n suffix: `[${label}]${statusSuffix}: ${errMsg}`,\n data,\n };\n}\n\n/**\n * Runs the summarization LLM call with primary + fallback providers,\n * falling back to a metadata stub when all calls fail.\n */\nasync function executeSummarizationWithFallback(params: {\n agentContext: AgentContext;\n messages: BaseMessage[];\n clientConfig: SummarizationClientConfig;\n summarizeConfig?: RunnableConfig;\n stepId: string;\n usePromptCache: boolean;\n log: LogFn;\n /** Carries the run's stream limits so the event cap covers summary streams. */\n graph?: StreamLimitState & { getBreakerSignal?: () => AbortSignal };\n}): Promise<{\n text: string;\n usage?: Partial<UsageMetadata>;\n /**\n * True when every model call failed and `text` is the generated metadata\n * stub rather than a real summary. Callers that would replace history with\n * this need to know it carries none of the original content.\n */\n usedMetadataStub?: boolean;\n}> {\n const {\n agentContext,\n messages,\n clientConfig,\n summarizeConfig,\n stepId,\n usePromptCache,\n log,\n graph,\n } = params;\n\n const priorSummaryText = agentContext.getSummaryText()?.trim() ?? '';\n\n let summaryText = '';\n let summaryUsage: Partial<UsageMetadata> | undefined;\n let usedMetadataStub = false;\n\n try {\n /**\n * Initialize inside the try so that a misconfigured provider\n * (e.g. an unrecognized summarization.provider) surfaces through the\n * `log('error', ...)` path below rather than bubbling up silently.\n */\n const summarizationModel = initializeModel({\n provider: clientConfig.provider as Providers,\n clientOptions: clientConfig.clientOptions as t.ClientOptions,\n tools: agentContext.getToolsForBinding(),\n }) as t.ChatModel;\n\n const result = await summarizeWithCacheHit({\n model: summarizationModel,\n messages,\n promptText: clientConfig.promptText,\n updatePromptText: clientConfig.updatePromptText,\n priorSummaryText,\n config: summarizeConfig,\n stepId,\n provider: clientConfig.provider as Providers,\n reasoningKey: agentContext.reasoningKey,\n graph,\n usePromptCache,\n promptCacheTtl:\n (clientConfig.provider as Providers) === Providers.ANTHROPIC ||\n (clientConfig.provider as Providers) === Providers.OPENROUTER\n ? resolvePromptCacheTtl(\n (\n clientConfig.clientOptions as {\n promptCacheTtl?: PromptCacheTtl;\n }\n ).promptCacheTtl\n )\n : undefined,\n log,\n });\n summaryText = result.text;\n summaryUsage = result.usage;\n } catch (primaryError) {\n const primaryDescribed = describeProviderError(\n primaryError,\n clientConfig.provider,\n clientConfig.modelName\n );\n log('error', `Summarization LLM call failed ${primaryDescribed.suffix}`, {\n ...primaryDescribed.data,\n messagesToRefineCount: messages.length,\n });\n\n /**\n * A tripped stream circuit breaker is a safety abort, not a\n * summarization failure to recover from: retrying on fallback providers\n * would spend more provider work after the limit fired, and degrading to\n * the metadata stub would let the run continue (and periodic compaction\n * commit the stub) despite the `StreamLimits` contract that a breach\n * rejects the run. Rethrown so the summarize node fails the run with\n * the actionable limit error, consistent with agent turns and subagents.\n */\n if (primaryError instanceof StreamLimitExceededError) {\n throw primaryError;\n }\n /** A parallel branch's trip aborts the composed summarization signal,\n * and a provider can surface that as a generic abort error; entering\n * fallback recovery or degrading to the metadata stub would continue\n * work after the run-wide safety abort. Checked on BOTH channels: the\n * graph's own breaker, and the composed config signal that carries a\n * parent run's trip into subagent child graphs. */\n {\n const trippedReason = findStreamLimitAbortReason(\n graph?.getBreakerSignal?.(),\n summarizeConfig?.signal\n );\n if (trippedReason != null) {\n throw trippedReason;\n }\n }\n\n const rawFallbacks = (\n clientConfig.clientOptions as unknown as t.LLMConfig | undefined\n )?.fallbacks;\n const fallbacks = Array.isArray(rawFallbacks) ? rawFallbacks : [];\n if (fallbacks.length > 0) {\n try {\n const onChunk = createSummarizationChunkHandler({\n stepId,\n config: traceConfig(summarizeConfig, 'cache_hit_compaction'),\n provider: clientConfig.provider as Providers,\n reasoningKey: agentContext.reasoningKey,\n graph,\n });\n const fbResult = await tryFallbackProviders({\n fallbacks,\n tools: agentContext.getToolsForBinding(),\n messages: [\n ...messages,\n new HumanMessage(\n buildSummarizationInstruction(\n clientConfig.promptText,\n clientConfig.updatePromptText,\n priorSummaryText\n )\n ),\n ],\n config: withBreakerSignal(\n traceConfig(summarizeConfig, 'cache_hit_compaction'),\n graph\n ),\n primaryError,\n onChunk,\n streamLimitState: graph,\n });\n const fbMsg = fbResult?.messages?.[0];\n if (fbMsg) {\n summaryText = extractResponseText(\n fbMsg as { content: string | object }\n );\n }\n } catch (fbErr) {\n if (fbErr instanceof StreamLimitExceededError) {\n throw fbErr;\n }\n const fbDescribed = describeFallbackError(fbErr, fallbacks);\n log('warn', `Fallback providers also failed ${fbDescribed.suffix}`, {\n ...fbDescribed.data,\n });\n }\n }\n if (!summaryText) {\n log(\n 'warn',\n `Summarization failed, falling back to metadata stub ${primaryDescribed.suffix}`,\n {\n ...primaryDescribed.data,\n messagesToRefineCount: messages.length,\n }\n );\n summaryText = generateMetadataStub(messages);\n usedMetadataStub = true;\n }\n }\n\n return { text: summaryText, usage: summaryUsage, usedMetadataStub };\n}\n\n/** Dispatches run step completion, ON_SUMMARIZE_COMPLETE, and rebuilds token map. */\nasync function dispatchCompletionEvents(params: {\n graph: CreateSummarizeNodeParams['graph'];\n runnableConfig?: RunnableConfig;\n stepId: string;\n summaryBlock: t.SummaryContentBlock;\n agentContext: AgentContext;\n runStep: t.RunStep;\n summaryUsage?: Partial<UsageMetadata>;\n agentId: string;\n /**\n * Number of messages preserved verbatim by the recency window after\n * compaction. Reported via the PostCompact hook payload so observers\n * (metrics, cleanup) see the true post-compaction message count\n * instead of always-zero.\n */\n messagesAfterCount: number;\n}): Promise<void> {\n const {\n graph,\n runnableConfig,\n stepId,\n summaryBlock,\n agentContext,\n runStep,\n summaryUsage,\n agentId,\n messagesAfterCount,\n } = params;\n\n runStep.summary = summaryBlock;\n if (summaryUsage) {\n runStep.usage = {\n prompt_tokens: Number(summaryUsage.input_tokens) || 0,\n completion_tokens: Number(summaryUsage.output_tokens) || 0,\n total_tokens:\n (Number(summaryUsage.input_tokens) || 0) +\n (Number(summaryUsage.output_tokens) || 0),\n };\n }\n\n await graph.dispatchRunStepCompleted(\n stepId,\n { type: 'summary', summary: summaryBlock } satisfies t.SummaryCompleted,\n runnableConfig\n );\n\n if (runnableConfig) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_SUMMARIZE_COMPLETE,\n {\n id: stepId,\n agentId,\n summary: summaryBlock,\n } satisfies t.SummarizeCompleteEvent,\n runnableConfig\n );\n }\n\n const sessionId = graph.runId ?? '';\n if (graph.hookRegistry?.hasHookFor('PostCompact', sessionId) === true) {\n const threadId = (\n runnableConfig?.configurable as Record<string, unknown> | undefined\n )?.thread_id as string | undefined;\n const firstBlock = summaryBlock.content?.[0];\n const summaryText =\n firstBlock != null &&\n typeof firstBlock === 'object' &&\n 'text' in firstBlock &&\n typeof firstBlock.text === 'string'\n ? firstBlock.text\n : '';\n await executeHooks({\n registry: graph.hookRegistry,\n input: {\n hook_event_name: 'PostCompact',\n runId: sessionId,\n threadId,\n agentId,\n summary: summaryText,\n messagesAfterCount,\n },\n sessionId,\n }).catch(() => {\n /* PostCompact is observational — swallow errors */\n });\n }\n\n agentContext.rebuildTokenMapAfterSummarization({});\n}\n\n// ---------------------------------------------------------------------------\n// createSummarizeNode\n// ---------------------------------------------------------------------------\n\ninterface CreateSummarizeNodeParams {\n agentContext: AgentContext;\n graph: {\n contentData: t.RunStep[];\n contentIndexMap: Map<string, number>;\n config?: RunnableConfig;\n runId?: string;\n isMultiAgent: boolean;\n hookRegistry?: HookRegistry;\n dispatchRunStep: (\n runStep: t.RunStep,\n config?: RunnableConfig\n ) => Promise<void>;\n dispatchRunStepCompleted: (\n stepId: string,\n result: t.StepCompleted,\n config?: RunnableConfig\n ) => Promise<void>;\n /**\n * Terminal close for a summary step that ends without a completion —\n * an errored or empty summary would otherwise stay `in_progress` until\n * the run-end sweep reported it as `completed`.\n */\n closeRunStep?: (\n stepId: string,\n status: Exclude<t.RunStepStatus, 'in_progress'>,\n config?: RunnableConfig\n ) => Promise<void>;\n /** The run's shared breaker signal, composed into every summarization\n * model attempt so a sibling branch tripping a stream limit also\n * cancels in-flight summaries. */\n getBreakerSignal?: () => AbortSignal;\n /** The run's shared breaker controller. Preferred over the bare signal\n * accessor: the node captures it at entry so a breach detected by its\n * own chunk handler trips the run that STARTED the summarization. */\n getBreakerController?: () => AbortController;\n /** The controller's epoch, captured at entry and stamped into summary\n * attempt metadata so the wire consumer epoch-gates old-run summary\n * chunks like model-attempt chunks. */\n getBreakerEpoch?: () => number;\n } & StreamLimitState;\n generateStepId: (stepKey: string) => [string, number];\n}\n\n/** Composes the run's breaker signal (when the adapter provides one) into a\n * summarization attempt's config, so breaches in sibling branches cancel\n * summaries too. */\nfunction withBreakerSignal<T extends { signal?: AbortSignal }>(\n config: T | undefined,\n graph?: { getBreakerSignal?: () => AbortSignal }\n): T | undefined {\n const breakerSignal = graph?.getBreakerSignal?.();\n if (breakerSignal == null) {\n return config;\n }\n if (config == null) {\n return { signal: breakerSignal } as T;\n }\n const existing = config.signal;\n if (existing == null || existing === breakerSignal) {\n return { ...config, signal: breakerSignal };\n }\n return { ...config, signal: AbortSignal.any([existing, breakerSignal]) };\n}\n\n/** First stream-limit reason found on any of the given signals. Checked\n * alongside the graph's own breaker because a subagent child graph receives\n * a ROOT sibling's trip through its constructor/invocation signal — the\n * child's private breaker never fires for it. */\nfunction findStreamLimitAbortReason(\n ...signals: Array<AbortSignal | undefined>\n): StreamLimitExceededError | undefined {\n for (const signal of signals) {\n if (\n signal?.aborted === true &&\n signal.reason instanceof StreamLimitExceededError\n ) {\n return signal.reason;\n }\n }\n return undefined;\n}\n\nexport function createSummarizeNode({\n agentContext,\n graph: adapterGraph,\n generateStepId,\n}: CreateSummarizeNodeParams) {\n return async (\n state: {\n messages: BaseMessage[];\n summarizationRequest?: t.SummarizationNodeInput;\n },\n config?: RunnableConfig\n ): Promise<{ summarizationRequest: undefined; messages?: BaseMessage[] }> => {\n /** The breaker signal is captured at node ENTRY, before dispatchRunStep,\n * ON_SUMMARIZE_START, or PreCompact awaits: a sibling's trip plus a\n * prompt next run can reset the controller during one of those awaits,\n * and resolving the live accessor later would bind this summarization\n * to the fresh controller. `Object.create` freezes the signal while\n * DELEGATING every other adapter member — spreading would snapshot the\n * charge-credit accessor pair and detach it from graph resets. */\n const entryBreakerController = adapterGraph.getBreakerController?.();\n const entryBreakerSignal =\n entryBreakerController?.signal ?? adapterGraph.getBreakerSignal?.();\n const entryBreakerEpoch = adapterGraph.getBreakerEpoch?.();\n const graph =\n entryBreakerSignal == null\n ? adapterGraph\n : (Object.create(adapterGraph, {\n getBreakerSignal: { value: (): AbortSignal => entryBreakerSignal },\n ...(entryBreakerController != null && {\n getBreakerController: {\n value: (): AbortController => entryBreakerController,\n },\n }),\n }) as typeof adapterGraph);\n const request = state.summarizationRequest;\n if (request == null) {\n return { summarizationRequest: undefined };\n }\n /** Already-tripped-at-entry: a parallel sibling's breach failed the run\n * before this node was scheduled — via this graph's own breaker or, in\n * a subagent child graph, the parent trip on the invocation signal.\n * Rethrow before dispatching steps, hooks, or the model call — an\n * adapter that doesn't synchronously reject an aborted signal would\n * otherwise spend summarization provider work on a failed run. */\n const entryTripReason = findStreamLimitAbortReason(\n entryBreakerSignal,\n config?.signal\n );\n if (entryTripReason != null) {\n throw entryTripReason;\n }\n\n /**\n * Overflow recovery routes through this node purely to get back to the\n * agent node with a corrected budget, and deliberately spends no model\n * call on its first attempt: re-pruning under the raised context pressure\n * drives the pruner's tool-output compression and masking, which is\n * cheaper than a summary and cannot lose message content. Summarization\n * is also skipped outright when the caller never enabled it.\n */\n if (\n request.reason === 'overflow' &&\n (request.allowSummarization !== true ||\n agentContext.summarizationEnabled !== true)\n ) {\n emitAgentLog(\n config,\n 'debug',\n 'summarize',\n 'Overflow recovery re-prune — compressing tool output without a summarization call',\n {\n maxContextTokens: agentContext.maxContextTokens,\n summarizationEnabled: agentContext.summarizationEnabled === true,\n allowSummarization: request.allowSummarization === true,\n },\n { runId: graph.runId, agentId: request.agentId }\n );\n return { summarizationRequest: undefined };\n }\n\n const maxCtx = agentContext.maxContextTokens ?? 0;\n if (maxCtx > 0 && agentContext.instructionTokens >= maxCtx) {\n emitAgentLog(\n config,\n 'warn',\n 'summarize',\n 'Summarization skipped, instructions exceed context budget. Reduce the number of tools or increase maxContextTokens.',\n {\n instructionTokens: agentContext.instructionTokens,\n maxContextTokens: maxCtx,\n breakdown: agentContext.formatTokenBudgetBreakdown(),\n },\n { runId: graph.runId, agentId: request.agentId }\n );\n return { summarizationRequest: undefined };\n }\n\n /**\n * Capture the original-tool-content map locally before doing the\n * split. We need it in three places: to restore the head for\n * summarizer quality, to leave intact on the skip path (state is\n * unchanged), and — critically — to carry forward the tail-relevant\n * entries on the summarize-fired path. Clearing it eagerly here\n * would lose the originals for masked tool messages that the\n * recency window keeps in the tail; a future summarization could\n * then only summarize the masked stub instead of the full payload.\n */\n const originalPending = agentContext.pendingOriginalToolContent;\n\n const restoredMessages = restoreOriginalToolContent(\n state.messages,\n originalPending,\n agentContext.maxContextTokens\n );\n\n const runnableConfig = config ?? graph.config;\n\n const retainRecent = agentContext.summarizationConfig?.retainRecent;\n const { head: messagesToRefine, tailStartIndex } = splitAtRecencyBoundary(\n restoredMessages,\n {\n turns: retainRecent?.turns ?? DEFAULT_RETAIN_RECENT_TURNS,\n tokens: retainRecent?.tokens,\n tokenCounter: agentContext.tokenCounter,\n }\n );\n /**\n * Use the *masked* messages for the retained tail so that any\n * truncation prune applied to oversized ToolMessage content stays\n * truncated in live state. The summarizer above reads the restored\n * (full-content) head for summary quality, but reinjecting restored\n * tool payloads into state would defeat masking and bloat the\n * checkpoint, forcing more expensive re-pruning on later turns.\n * `restoreOriginalToolContent` returns an array with identical\n * length and structure to `state.messages` (replacements only at\n * specific indices), so the same tailStartIndex slices both arrays\n * at the same turn boundary.\n */\n const messagesToRetain = state.messages.slice(tailStartIndex);\n\n if (messagesToRefine.length === 0) {\n /**\n * Recency window covers the entire conversation — there is no\n * older content to summarize. Skipping prevents the model from\n * destroying the user's most recent message (e.g. a large pasted\n * payload on the first turn) by replacing it with a generic\n * checkpoint summary. Mark the trigger so the same unchanged\n * state is not re-evaluated on the next prune cycle.\n */\n emitAgentLog(\n config,\n 'debug',\n 'summarize',\n 'Summarization skipped — recency window retains all messages',\n {\n messagesRetained: messagesToRetain.length,\n retainTurns: retainRecent?.turns ?? DEFAULT_RETAIN_RECENT_TURNS,\n },\n { runId: graph.runId, agentId: request.agentId }\n );\n agentContext.markSummarizationTriggered(state.messages.length);\n return { summarizationRequest: undefined };\n }\n\n const clientConfig = buildSummarizationClientConfig(\n agentContext,\n agentContext.summarizationConfig\n );\n\n const stepKey = `summarize-${request.agentId}`;\n const [stepId, stepIndex] = generateStepId(stepKey);\n\n const placeholderSummary: t.SummaryContentBlock = {\n type: ContentTypes.SUMMARY,\n model: clientConfig.modelName,\n provider: clientConfig.provider,\n };\n\n const runStep: t.RunStep = {\n stepIndex,\n id: stepId,\n type: StepTypes.MESSAGE_CREATION,\n index: graph.contentData.length,\n stepDetails: {\n type: StepTypes.MESSAGE_CREATION,\n message_creation: { message_id: stepId },\n },\n summary: placeholderSummary,\n usage: null,\n };\n\n if (graph.runId != null && graph.runId !== '') {\n runStep.runId = graph.runId;\n }\n if (graph.isMultiAgent && agentContext.agentId) {\n runStep.agentId = agentContext.agentId;\n }\n\n await graph.dispatchRunStep(runStep, runnableConfig);\n\n if (runnableConfig) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_SUMMARIZE_START,\n {\n agentId: request.agentId,\n provider: clientConfig.provider,\n model: clientConfig.modelName,\n messagesToRefineCount: messagesToRefine.length,\n summaryVersion: agentContext.summaryVersion + 1,\n } satisfies t.SummarizeStartEvent,\n runnableConfig\n );\n }\n\n const sessionId = graph.runId ?? '';\n if (graph.hookRegistry?.hasHookFor('PreCompact', sessionId) === true) {\n const threadId = (\n runnableConfig?.configurable as Record<string, unknown> | undefined\n )?.thread_id as string | undefined;\n await executeHooks({\n registry: graph.hookRegistry,\n input: {\n hook_event_name: 'PreCompact',\n runId: sessionId,\n threadId,\n agentId: request.agentId,\n messagesBeforeCount: messagesToRefine.length,\n trigger: agentContext.summarizationConfig?.trigger?.type ?? 'default',\n },\n sessionId,\n }).catch(() => {\n /* PreCompact is observational — swallow errors */\n });\n }\n\n const isSelfSummarizeModel =\n clientConfig.provider === (agentContext.provider as string);\n const hasPromptCache =\n isSelfSummarizeModel &&\n (agentContext.clientOptions as Record<string, unknown> | undefined)\n ?.promptCache === true;\n\n const log: LogFn = (level, message, data) => {\n emitAgentLog(runnableConfig, level, 'summarize', message, data, {\n runId: graph.runId,\n agentId: request.agentId,\n });\n };\n\n log('debug', 'Summarization starting', {\n messagesToRefineCount: messagesToRefine.length,\n hasPriorSummary: (agentContext.getSummaryText()?.trim() ?? '') !== '',\n summaryVersion: agentContext.summaryVersion + 1,\n isSelfSummarize: isSelfSummarizeModel,\n hasPromptCache,\n provider: clientConfig.provider,\n });\n\n const summarizeConfig: RunnableConfig | undefined = config\n ? {\n ...config,\n metadata: {\n ...config.metadata,\n agent_id: request.agentId,\n /** Canonical agent-identity key, overwritten by every component\n * that stamps identity (graph model path, ToolNode, here) so the\n * closest stamper always wins via spread order — Langfuse scope\n * trust relies on it (see `isForeignScope`). */\n agentId: request.agentId,\n summarization_provider: clientConfig.provider,\n summarization_model: clientConfig.modelName,\n /**\n * Per-call model attribution for usage consumers (the subagent\n * usage-capture handler): the summarizer's model can differ from\n * the agent's primary, and providers that emit no `ls_model_name`\n * would otherwise be billed against the primary config's model.\n * Omitted for self-summarize (no explicit model — the primary\n * config fallback is then correct). `tryFallbackProviders`\n * overrides this per fallback attempt; `INVOKED_PROVIDER` is\n * stamped by `attemptInvoke` itself.\n */\n ...(clientConfig.modelName != null && clientConfig.modelName !== ''\n ? { [Constants.INVOKED_MODEL]: clientConfig.modelName }\n : {}),\n /** Entry-captured breaker epoch: the wire consumer epoch-gates\n * old-run summary chunks exactly like model-attempt chunks —\n * without the stamp, a straggling summary from a failed run\n * reads as current and could abort the next run's controller. */\n ...(entryBreakerEpoch != null\n ? { [STREAM_LIMIT_EPOCH_KEY]: entryBreakerEpoch }\n : {}),\n },\n }\n : undefined;\n\n /** Rechecked after the pre-call awaits (dispatchRunStep,\n * ON_SUMMARIZE_START, PreCompact): a sibling can trip the breaker while\n * this node is paused in one of them, and a provider that doesn't\n * synchronously reject an aborted signal would still start the\n * summarization call. Mirrors the model node's pre-invoke recheck. */\n {\n const preCallTrip = findStreamLimitAbortReason(\n entryBreakerSignal,\n config?.signal\n );\n if (preCallTrip != null) {\n throw preCallTrip;\n }\n }\n const {\n text: rawText,\n usage: summaryUsage,\n usedMetadataStub,\n } = await executeSummarizationWithFallback({\n agentContext,\n messages: messagesToRefine,\n clientConfig,\n summarizeConfig,\n stepId,\n usePromptCache: isSelfSummarizeModel && hasPromptCache,\n log,\n graph,\n });\n\n /**\n * The metadata stub describes the history rather than summarizing it, so\n * committing it means removing the head and keeping nothing of what it\n * said. That trade is never worth making to paper over an overflow: the\n * recovery would \"succeed\" only by destroying the conversation it was\n * supposed to preserve. Leave state untouched and let the provider error\n * surface instead.\n */\n if (usedMetadataStub === true && request.reason === 'overflow') {\n log(\n 'warn',\n 'Overflow summarization failed; keeping history rather than replacing it with a metadata stub'\n );\n agentContext.markSummarizationTriggered(state.messages.length);\n /**\n * The run step was already dispatched, so it has to be resolved here or\n * consumers tracking step lifecycle keep an unfinished placeholder for\n * the rest of the run.\n */\n await graph.dispatchRunStepCompleted(\n stepId,\n {\n type: 'summary',\n summary: placeholderSummary,\n } satisfies t.SummaryCompleted,\n runnableConfig\n );\n if (runnableConfig) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_SUMMARIZE_COMPLETE,\n {\n id: stepId,\n agentId: request.agentId,\n error:\n 'Summarization failed during overflow recovery; conversation history was preserved',\n } satisfies t.SummarizeCompleteEvent,\n runnableConfig\n );\n }\n return { summarizationRequest: undefined };\n }\n\n if (!rawText) {\n agentContext.markSummarizationTriggered(0);\n if (runnableConfig) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_SUMMARIZE_COMPLETE,\n {\n id: stepId,\n agentId: request.agentId,\n error: 'Summarization produced empty output',\n } satisfies t.SummarizeCompleteEvent,\n runnableConfig\n );\n }\n await graph.closeRunStep?.(stepId, 'failed', runnableConfig);\n return { summarizationRequest: undefined };\n }\n\n const summaryText = enrichSummary(rawText, messagesToRefine);\n\n const tokenCount = computeSummaryTokenCount(\n summaryText,\n summaryUsage,\n agentContext.tokenCounter\n );\n\n agentContext.setSummary(summaryText, tokenCount);\n\n log('info', 'Summary persisted');\n log('debug', 'Summary details', {\n summaryTokens: tokenCount,\n textLength: summaryText.length,\n messagesCompacted: messagesToRefine.length,\n summaryVersion: agentContext.summaryVersion,\n ...(summaryUsage != null\n ? {\n input_tokens: summaryUsage.input_tokens,\n output_tokens: summaryUsage.output_tokens,\n cache_read: summaryUsage.input_token_details?.cache_read,\n cache_creation: summaryUsage.input_token_details?.cache_creation,\n }\n : {}),\n });\n\n const summaryBlock = buildSummaryBlock({\n summaryText,\n tokenCount,\n coverage: resolveSummaryCoverage(messagesToRetain),\n stepId,\n stepIndex: runStep.index,\n modelName: clientConfig.modelName,\n provider: clientConfig.provider,\n summaryVersion: agentContext.summaryVersion,\n });\n\n await dispatchCompletionEvents({\n graph,\n runnableConfig,\n stepId,\n summaryBlock,\n agentContext,\n runStep,\n summaryUsage,\n agentId: request.agentId,\n messagesAfterCount: messagesToRetain.length,\n });\n\n /**\n * `dispatchCompletionEvents` calls `rebuildTokenMapAfterSummarization({})`\n * which resets the dedupe baseline to 0 — correct under the legacy\n * \"remove-all only\" shape where no messages survived, but stale once\n * the recency window keeps a tail. Realign the baseline to the\n * surviving tail length so a subsequent prune cycle on the unchanged\n * tail short-circuits via `shouldSkipSummarization` instead of\n * looping back into another summarize call.\n */\n agentContext.markSummarizationTriggered(messagesToRetain.length);\n\n /**\n * Carry forward the original-content entries that correspond to the\n * retained tail, reindexed for the post-removeAll state where tail\n * messages start at index 0. Without this, a future summarization\n * that pulls these tail messages into its head would only see the\n * masked stubs (since `setSummary` clears `pruneMessages`, and the\n * fresh pruner at the next turn has no record of prior masks).\n * Entries for indices < `tailStartIndex` belong to messages we just\n * summarized — they are no longer reachable so they are dropped.\n */\n if (originalPending != null && originalPending.size > 0) {\n const tailPending = new Map<number, string>();\n for (const [idx, content] of originalPending) {\n if (idx >= tailStartIndex) {\n tailPending.set(idx - tailStartIndex, content);\n }\n }\n agentContext.pendingOriginalToolContent =\n tailPending.size > 0 ? tailPending : undefined;\n } else {\n agentContext.pendingOriginalToolContent = undefined;\n }\n\n return {\n summarizationRequest: undefined,\n messages:\n messagesToRetain.length > 0\n ? [createRemoveAllMessage(), ...messagesToRetain]\n : [createRemoveAllMessage()],\n };\n };\n}\n\n/** Extracts text from an LLM response, skipping reasoning/thinking blocks. */\nfunction extractResponseText(response: { content: string | object }): string {\n const { content } = response;\n if (typeof content === 'string') {\n return content.trim();\n }\n if (!Array.isArray(content)) {\n return '';\n }\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block === 'string') {\n parts.push(block);\n continue;\n }\n if (block == null || typeof block !== 'object') {\n continue;\n }\n const rec = block as Record<string, unknown>;\n if (\n rec.type === ContentTypes.THINKING ||\n rec.type === ContentTypes.REASONING_CONTENT ||\n rec.type === 'redacted_thinking'\n ) {\n continue;\n }\n if (rec.type === 'text' && typeof rec.text === 'string') {\n parts.push(rec.text);\n }\n }\n return parts.join('').trim();\n}\n\nfunction buildSummarizationInstruction(\n promptText: string,\n updatePromptText: string | undefined,\n priorSummaryText: string\n): string {\n const effectivePrompt = priorSummaryText\n ? (updatePromptText ?? promptText)\n : promptText;\n const parts = [effectivePrompt];\n if (priorSummaryText) {\n parts.push(\n `\\n\\n<previous-summary>\\n${priorSummaryText}\\n</previous-summary>`\n );\n }\n return parts.join('');\n}\n\n/** Creates an `onChunk` callback that dispatches `ON_SUMMARIZE_DELTA` events for streaming. */\nexport function createSummarizationChunkHandler({\n stepId,\n config,\n provider,\n reasoningKey = 'reasoning_content',\n graph,\n}: {\n stepId?: string;\n config?: RunnableConfig;\n provider?: Providers;\n reasoningKey?: 'reasoning_content' | 'reasoning';\n graph?: StreamLimitState & { getBreakerController?: () => AbortController };\n}): OnChunk | undefined {\n if (stepId == null || stepId === '' || !config) {\n return undefined;\n }\n const limitMetadata = config.metadata as Record<string, unknown> | undefined;\n return (chunk, attemptMetadata) => {\n /**\n * Charged as `producer` so it PAIRS with the run's registered stream\n * handler: inside a live run the provider callbacks route each chunk\n * through the graph's `on_chat_model_stream` consumer too, and two\n * same-side consumer claims would charge the chunk twice — halving an\n * opt-in event cap. Standalone callers (tests, custom hosts, runs with\n * no registered handler) still get single-sided enforcement from this\n * one claim. Summarization deliberately passes NO `context` to\n * `attemptInvoke`, whose onChunk branch would otherwise add a second\n * producer claim. A breach trips the run's shared breaker (the\n * ENTRY-captured controller when the adapter provides one) before\n * rethrowing: this producer claim wins the race, so the wire consumer's\n * breaker-aborting catch never fires for the same chunk — without the\n * trip here, sibling model calls, tools, and subagents would keep\n * consuming quota while the summary branch rejects.\n * `executeSummarizationWithFallback` then rethrows past fallbacks and\n * the metadata stub, failing the run like any other breach.\n */\n if (graph != null) {\n try {\n enforceStreamLimitsForWireChunk({\n graph,\n metadata: attemptMetadata ?? limitMetadata,\n chunk: chunk as Parameters<\n typeof enforceStreamLimitsForWireChunk\n >[0]['chunk'],\n });\n } catch (error) {\n if (error instanceof StreamLimitExceededError) {\n graph.getBreakerController?.().abort(error);\n }\n throw error;\n }\n }\n const chunkAny = chunk as Parameters<typeof getChunkContent>[0]['chunk'];\n const raw = getChunkContent({ chunk: chunkAny, provider, reasoningKey });\n if (raw == null || (typeof raw === 'string' && !raw)) {\n return;\n }\n const contentBlocks: t.MessageContentComplex[] =\n typeof raw === 'string'\n ? [{ type: ContentTypes.TEXT, text: raw } as t.MessageContentComplex]\n : raw;\n\n void safeDispatchCustomEvent(\n GraphEvents.ON_SUMMARIZE_DELTA,\n {\n id: stepId,\n delta: {\n summary: {\n type: ContentTypes.SUMMARY,\n content: contentBlocks,\n provider: String(config.metadata?.summarization_provider ?? ''),\n model: String(config.metadata?.summarization_model ?? ''),\n },\n },\n } satisfies t.SummarizeDeltaEvent,\n config\n );\n };\n}\n\nfunction traceConfig(\n config: RunnableConfig | undefined,\n stage: string\n): RunnableConfig | undefined {\n if (!config) {\n return undefined;\n }\n return {\n ...config,\n runName: `summarization:${stage}`,\n metadata: { ...config.metadata, summarization: true, stage },\n };\n}\n\n/**\n * Cache-friendly compaction: sends raw conversation messages with the\n * summarization instruction appended as the final HumanMessage.\n * Providers with prompt caching get a cache hit on the system prompt +\n * tool definitions prefix.\n */\nasync function summarizeWithCacheHit({\n model,\n messages,\n promptText,\n updatePromptText,\n priorSummaryText,\n config,\n stepId,\n provider,\n reasoningKey,\n graph,\n usePromptCache,\n promptCacheTtl,\n log,\n}: {\n model: t.ChatModel;\n messages: BaseMessage[];\n promptText: string;\n updatePromptText?: string;\n priorSummaryText: string;\n config?: RunnableConfig;\n stepId?: string;\n provider: Providers;\n reasoningKey?: 'reasoning_content' | 'reasoning';\n graph?: StreamLimitState & { getBreakerSignal?: () => AbortSignal };\n usePromptCache?: boolean;\n promptCacheTtl?: PromptCacheTtl;\n log?: LogFn;\n}): Promise<{ text: string; usage?: Partial<UsageMetadata> }> {\n const instruction = buildSummarizationInstruction(\n promptText,\n updatePromptText,\n priorSummaryText\n );\n\n const fullMessages = [...messages, new HumanMessage(instruction)];\n const invokeMessages =\n usePromptCache === true\n ? addTailCacheControl(fullMessages, promptCacheTtl)\n : fullMessages;\n\n const result = await attemptInvoke(\n {\n model,\n messages: invokeMessages,\n provider,\n onChunk: createSummarizationChunkHandler({\n stepId,\n config: traceConfig(config, 'cache_hit_compaction'),\n provider,\n reasoningKey,\n graph,\n }),\n /** Accounting lease only (summarization passes no `context` so its\n * producer claim never stacks with the onChunk handler's). */\n streamLimitState: graph,\n },\n withBreakerSignal(traceConfig(config, 'cache_hit_compaction'), graph)\n );\n\n const responseMsg = result.messages?.[0];\n const text = responseMsg\n ? extractResponseText(responseMsg as { content: string | object })\n : '';\n let usage: Partial<UsageMetadata> | undefined;\n let usageSource = 'none';\n if (\n responseMsg != null &&\n 'usage_metadata' in responseMsg &&\n responseMsg.usage_metadata != null\n ) {\n usage = responseMsg.usage_metadata as Partial<UsageMetadata>;\n usageSource = 'usage_metadata';\n } else if (responseMsg != null) {\n const respMeta = responseMsg.response_metadata as\n | Record<string, unknown>\n | undefined;\n const raw = (respMeta?.metadata as Record<string, unknown> | undefined)\n ?.usage as Record<string, unknown> | undefined;\n if (raw != null) {\n usage = {\n input_tokens: Number(raw.inputTokens) || undefined,\n output_tokens: Number(raw.outputTokens) || undefined,\n } as Partial<UsageMetadata>;\n usageSource = 'response_metadata';\n }\n }\n const cacheDetails = (\n usage as\n | {\n input_token_details?: {\n cache_read?: number;\n cache_creation?: number;\n };\n }\n | undefined\n )?.input_token_details;\n log?.('debug', 'Summarization LLM usage', {\n source: usageSource,\n input_tokens: usage?.input_tokens,\n output_tokens: usage?.output_tokens,\n ...(cacheDetails?.cache_read != null || cacheDetails?.cache_creation != null\n ? {\n 'input_token_details.cache_read': cacheDetails.cache_read,\n 'input_token_details.cache_creation': cacheDetails.cache_creation,\n }\n : {}),\n });\n return { text, usage };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"node.cjs","names":["AIMessage","serializeToolContentBounded","ToolMessage","isComputerCallOutputMessage","calculateMaxToolResultChars","compactToolContent","cloneToolMessageWithContent","getMaxOutputTokensKey","SystemMessage","initializeModel","resolvePromptCacheTtl","StreamLimitExceededError","tryFallbackProviders","HumanMessage","safeDispatchCustomEvent","executeHooks","splitAtRecencyBoundary","STREAM_LIMIT_EPOCH_KEY","createRemoveAllMessage","getChunkContent","chunkAny","attemptInvoke","addTailCacheControl"],"sources":["../../../src/summarization/node.ts"],"mappings":";;;;;;;;;;;;;;;;;AAiDA,MAAM,2BAA2B,IAAI,IAAI,CAAC,kBAAkB,CAAC;AAkB7D,MAAM,kCAAkC;AAGxC,MAAa,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoC5C,MAAa,sCAAsC;;;;;;;;;;;;;;AAenD,SAAS,mBAAmB,YAG1B;CACA,MAAM,YAAqC,CAAC;CAC5C,IAAI;CAEJ,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,GAClD,IAAI,yBAAyB,IAAI,GAAG;MAEhC,QAAQ,sBACR,OAAO,UAAU,YACjB,QAAQ,GAER,mBAAmB;CAAA,OAGrB,UAAU,OAAO;CAIrB,OAAO;EAAE;EAAW;CAAiB;AACvC;AAOA,SAAS,qBAAqB,UAAiC;CAC7D,MAAM,SAAiC,CAAC;CACxC,MAAM,4BAAY,IAAI,IAAY;CAElC,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,OAAO,IAAI,QAAQ;EACzB,OAAO,SAAS,OAAO,SAAS,KAAK;EAErC,IAAI,SAAS,UAAU,IAAI,QAAQ,QAAQ,IAAI,SAAS,IACtD,UAAU,IAAI,IAAI,IAAI;EAGxB,IACE,SAAS,QACT,eAAeA,yBAAAA,aACf,IAAI,cACJ,IAAI,WAAW,SAAS,GAExB,KAAK,MAAM,MAAM,IAAI,YACnB,UAAU,IAAI,GAAG,IAAI;CAG3B;CAEA,MAAM,aAAa,OAAO,QAAQ,MAAM,CAAC,CACtC,KAAK,CAAC,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,CAC1C,KAAK,IAAI;CAEZ,MAAM,QAAQ,CACZ,sBAAsB,SAAS,OAAO,aAAa,WAAW,GAChE;CAEA,IAAI,UAAU,OAAO,GACnB,MAAM,KAAK,gBAAgB,MAAM,KAAK,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE;CAGhE,OAAO,MAAM,KAAK,IAAI;AACxB;AAGA,MAAM,oBAAoB;AAE1B,MAAM,yBAAyB;AAO/B,SAAS,2BAA2B,UAAiC;CACnE,MAAM,WAAyD,CAAC;CAChE,MAAM,uBAAO,IAAI,IAAY;CAE7B,KAAK,MAAM,OAAO,UAAU;EAC1B,IAAI,IAAI,QAAQ,MAAM,QACpB;EAEF,MAAM,UAAU;EAChB,IAAI,QAAQ,WAAW,SACrB;EAGF,MAAM,SAAS,QAAQ;EACvB,IAAI,UAAU,KAAK,IAAI,MAAM,GAC3B;EAEF,IAAI,QACF,KAAK,IAAI,MAAM;EAGjB,MAAM,WAAW,QAAQ,QAAQ;EAKjC,MAAM,aAJUC,oBAAAA,4BACd,QAAQ,SACR,yBAAyB,CAEF,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;EACrD,MAAM,UACJ,WAAW,SAAS,yBAChB,GAAG,WAAW,MAAM,GAAG,yBAAyB,CAAC,EAAE,OACnD;EAEN,SAAS,KAAK;GAAE;GAAU;EAAQ,CAAC;CACrC;CAEA,IAAI,SAAS,WAAW,GACtB,OAAO;CAGT,MAAM,QAAQ,SACX,MAAM,GAAG,iBAAiB,CAAC,CAC3B,KAAK,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,SAAS;CAC7C,IAAI,SAAS,SAAS,mBACpB,MAAM,KAAK,YAAY,SAAS,SAAS,kBAAkB,MAAM;CAGnE,OAAO,yBAAyB,MAAM,KAAK,IAAI;AACjD;AAOA,SAAS,cAAc,aAAqB,UAAiC;CAC3E,OAAO,cAAc,2BAA2B,QAAQ;AAC1D;AAQA,SAAS,2BACP,UACA,qBACA,kBACe;CACf,IAAI,uBAAuB,QAAQ,oBAAoB,SAAS,GAC9D,OAAO;CAGT,MAAM,aAID,CAAC;CACN,KAAK,MAAM,CAAC,OAAO,YAAY,qBAAqB;EAClD,MAAM,UAAU,SAAS;EACzB,IACE,mBAAmBC,yBAAAA,eACnB,CAACC,oBAAAA,4BAA4B,OAAO,GAEpC,WAAW,KAAK;GAAE;GAAO;GAAS;EAAQ,CAAC;CAE/C;CACA,IAAI,WAAW,WAAW,GACxB,OAAO;CAQT,IAAI,iBAAiBC,mBAAAA,4BAA4B,gBAAgB;CACjE,MAAM,WAAW,CAAC,GAAG,QAAQ;CAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;EAC1C,MAAM,EAAE,OAAO,SAAS,YAAY,WAAW;EAC/C,MAAM,WAAW,KAAK,MAAM,kBAAkB,WAAW,SAAS,EAAE;EACpE,MAAM,YAAYC,oBAAAA,mBAAmB,SAAS,QAAQ,CAAC,CAAC;EACxD,SAAS,SAASC,oBAAAA,4BAA4B,SAAS,SAAS;EAChE,kBAAkBL,oBAAAA,4BAA4B,WAAW,QAAQ,CAAC,CAAC;CACrE;CACA,OAAO;AACT;AAgBA,SAAS,+BACP,cACA,qBAC2B;CAC3B,MAAM,WAAY,qBAAqB,YACrC,aAAa;CACf,MAAM,YAAY,qBAAqB;CACvC,MAAM,aAAa,qBAAqB,cAAc,CAAC;CACvD,MAAM,aACJ,qBAAqB,UAAU;CACjC,MAAM,mBACJ,qBAAqB,gBAAgB;CAEvC,MAAM,EAAE,WAAW,kBAAkB,0BACnC,mBAAmB,UAAU;CAQ/B,MAAM,gBAAyC;EAC7C,GAPsB,aAAc,aAAa,YAE9B,aAAa,gBAC5B,EAAE,GAAG,aAAa,cAAc,IAChC,CAAC;EAIL,GAAG;CACL;CAEA,IAAI,aAAa,QAAQ,cAAc,IAAI;EACzC,cAAc,QAAQ;EACtB,cAAc,YAAY;CAC5B;CAEA,MAAM,4BACJ,yBAAyB,qBAAqB;CAEhD,IAAI,6BAA6B,MAC/B,cAAcM,gBAAAA,sBAAsB,QAAQ,KAAK;CAGnD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;CACF;AACF;AAGA,SAAS,yBACP,aACA,cACA,cACQ;CACR,MAAM,uBAAuB,OAAO,cAAc,aAAa,KAAK;CACpE,IAAI,uBAAuB,GACzB,OAAO,uBAAuB;CAEhC,IAAI,cACF,OACE,aAAa,IAAIC,yBAAAA,cAAc,WAAW,CAAC,IAC3C;CAGJ,OAAO;AACT;AA2CA,SAAS,mBAAmB,SAA+B;CACzD,MAAM,EAAE,mBAAmB,WAAW;CACtC,IAAI,OAAO,aAAa,QAAQ,OAAO,WAAW,MAChD,OAAO;CAET,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAW;AACpD;AAEA,SAAS,uBACP,kBAC+B;CAC/B,KAAK,IAAI,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;EAChD,MAAM,UAAU,iBAAiB;EACjC,IAAI,mBAAmB,OAAO,GAC5B;EAEF,MAAM,kBAAkB,QAAQ,kBAAkB;EAClD,MAAM,WACJ,OAAO,oBAAoB,WAAW,gBAAgB,KAAK,IAAI;EACjE,MAAM,KAAK,aAAa,KAAK,WAAW,QAAQ,IAAI,KAAK;EACzD,IAAI,MAAM,QAAQ,OAAO,IACvB,OAAO,EAAE,uBAAuB,GAAG;CAEvC;AAEF;AAGA,SAAS,kBAAkB,QASD;CACxB,OAAO;EACL,MAAA;EACA,SAAS,CACP;GACE,MAAA;GACA,MAAM,OAAO;EACf,CACF;EACA,YAAY,OAAO;EACnB,GAAI,OAAO,YAAY,OAAO,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;EAC/D,gBAAgB,OAAO;EACvB,UAAU;GACR,WAAW,OAAO;GAClB,cAAc,OAAO;EACvB;EACA,OAAO,OAAO;EACd,UAAU,OAAO;EACjB,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;CACpC;AACF;AAcA,SAAS,kBAAkB,KAAkC;CAC3D,IAAI,OAAO,QAAQ,OAAO,QAAQ,UAChC;CAEF,MAAM,YAAY;CAClB,MAAM,SAAS,UAAU;CACzB,IAAI,OAAO,WAAW,UACpB,OAAO;CAET,MAAM,aAAa,UAAU;CAC7B,IAAI,OAAO,eAAe,UACxB,OAAO;CAET,MAAM,WAAW,UAAU;CAC3B,IAAI,YAAY,QAAQ,OAAO,aAAa,UAAU;EACpD,MAAM,SAAU,SAAqC;EACrD,IAAI,OAAO,WAAW,UACpB,OAAO;CAEX;AAEF;AAOA,SAAS,sBACP,KACA,UACA,WACmD;CACnD,MAAM,gBAAgB,GAAG,SAAS,GAAG,aAAa;CAClD,MAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;CAE9D,MAAM,OAAgC;EACpC;EACA,OAAO;CACT;CACA,IAAI,eAAe,OAAO;EACxB,KAAK,YAAY,IAAI;EACrB,KAAK,aAAa,IAAI;CACxB;CAEA,MAAM,SAAS,kBAAkB,GAAG;CACpC,MAAM,eAAe,UAAU,OAAO,UAAU,OAAO,KAAK;CAC5D,IAAI,UAAU,MACZ,KAAK,SAAS;CAGhB,OAAO;EACL,QAAQ,IAAI,cAAc,GAAG,aAAa,IAAI;EAC9C;CACF;AACF;AAaA,SAAS,sBACP,KACA,WACmD;CACnD,MAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;CAC9D,MAAM,OAA+B,MAAM,QAAQ,SAAS,IACxD,YACA,CAAC;CACL,MAAM,gBAAgB,KACnB,KAAK,MAAM;EACV,IAAI,KAAK,QAAQ,OAAO,MAAM,UAC5B;EAEF,MAAM,MAAO,EAA6B;EAC1C,OAAO,OAAO,OAAO,OAAO,GAAG,IAAI,KAAA;CACrC,CAAC,CAAC,CACD,QAAQ,MAAmB,OAAO,MAAM,QAAQ;CACnD,MAAM,QACJ,cAAc,SAAS,IACnB,cAAc,cAAc,KAAK,GAAG,EAAE,KACtC;CAEN,MAAM,OAAgC;EACpC,mBAAmB;EACnB,eAAe,KAAK;CACtB;CACA,IAAI,eAAe,OAAO;EACxB,KAAK,YAAY,IAAI;EACrB,KAAK,aAAa,IAAI;CACxB;CACA,MAAM,SAAS,kBAAkB,GAAG;CACpC,MAAM,eAAe,UAAU,OAAO,UAAU,OAAO,KAAK;CAC5D,IAAI,UAAU,MACZ,KAAK,SAAS;CAGhB,OAAO;EACL,QAAQ,IAAI,MAAM,GAAG,aAAa,IAAI;EACtC;CACF;AACF;AAMA,eAAe,iCAAiC,QAmB7C;CACD,MAAM,EACJ,cACA,UACA,cACA,iBACA,QACA,gBACA,KACA,UACE;CAEJ,MAAM,mBAAmB,aAAa,eAAe,CAAC,EAAE,KAAK,KAAK;CAElE,IAAI,cAAc;CAClB,IAAI;CACJ,IAAI,mBAAmB;CAEvB,IAAI;EAYF,MAAM,SAAS,MAAM,sBAAsB;GACzC,OAPyBC,aAAAA,gBAAgB;IACzC,UAAU,aAAa;IACvB,eAAe,aAAa;IAC5B,OAAO,aAAa,mBAAmB;GACzC,CAG0B;GACxB;GACA,YAAY,aAAa;GACzB,kBAAkB,aAAa;GAC/B;GACA,QAAQ;GACR;GACA,UAAU,aAAa;GACvB,cAAc,aAAa;GAC3B;GACA;GACA,gBACG,aAAa,aAAA,eACb,aAAa,aAAA,eACVC,cAAAA,sBAEI,aAAa,cAGf,cACJ,IACE,KAAA;GACN;EACF,CAAC;EACD,cAAc,OAAO;EACrB,eAAe,OAAO;CACxB,SAAS,cAAc;EACrB,MAAM,mBAAmB,sBACvB,cACA,aAAa,UACb,aAAa,SACf;EACA,IAAI,SAAS,iCAAiC,iBAAiB,UAAU;GACvE,GAAG,iBAAiB;GACpB,uBAAuB,SAAS;EAClC,CAAC;EAWD,IAAI,wBAAwBC,qBAAAA,0BAC1B,MAAM;EAQR;GACE,MAAM,gBAAgB,2BACpB,OAAO,mBAAmB,GAC1B,iBAAiB,MACnB;GACA,IAAI,iBAAiB,MACnB,MAAM;EAEV;EAEA,MAAM,eACJ,aAAa,eACZ;EACH,MAAM,YAAY,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC;EAChE,IAAI,UAAU,SAAS,GACrB,IAAI;GACF,MAAM,UAAU,gCAAgC;IAC9C;IACA,QAAQ,YAAY,iBAAiB,sBAAsB;IAC3D,UAAU,aAAa;IACvB,cAAc,aAAa;IAC3B;GACF,CAAC;GAsBD,MAAM,SAAQ,MArBSC,eAAAA,qBAAqB;IAC1C;IACA,OAAO,aAAa,mBAAmB;IACvC,UAAU,CACR,GAAG,UACH,IAAIC,yBAAAA,aACF,8BACE,aAAa,YACb,aAAa,kBACb,gBACF,CACF,CACF;IACA,QAAQ,kBACN,YAAY,iBAAiB,sBAAsB,GACnD,KACF;IACA;IACA;IACA,kBAAkB;GACpB,CAAC,EAAA,EACuB,WAAW;GACnC,IAAI,OACF,cAAc,oBACZ,KACF;EAEJ,SAAS,OAAO;GACd,IAAI,iBAAiBF,qBAAAA,0BACnB,MAAM;GAER,MAAM,cAAc,sBAAsB,OAAO,SAAS;GAC1D,IAAI,QAAQ,kCAAkC,YAAY,UAAU,EAClE,GAAG,YAAY,KACjB,CAAC;EACH;EAEF,IAAI,CAAC,aAAa;GAChB,IACE,QACA,uDAAuD,iBAAiB,UACxE;IACE,GAAG,iBAAiB;IACpB,uBAAuB,SAAS;GAClC,CACF;GACA,cAAc,qBAAqB,QAAQ;GAC3C,mBAAmB;EACrB;CACF;CAEA,OAAO;EAAE,MAAM;EAAa,OAAO;EAAc;CAAiB;AACpE;AAGA,eAAe,yBAAyB,QAgBtB;CAChB,MAAM,EACJ,OACA,gBACA,QACA,cACA,cACA,SACA,cACA,SACA,uBACE;CAEJ,QAAQ,UAAU;CAClB,IAAI,cACF,QAAQ,QAAQ;EACd,eAAe,OAAO,aAAa,YAAY,KAAK;EACpD,mBAAmB,OAAO,aAAa,aAAa,KAAK;EACzD,eACG,OAAO,aAAa,YAAY,KAAK,MACrC,OAAO,aAAa,aAAa,KAAK;CAC3C;CAGF,MAAM,MAAM,yBACV,QACA;EAAE,MAAM;EAAW,SAAS;CAAa,GACzC,cACF;CAEA,IAAI,gBACF,MAAMG,eAAAA,wBAAAA,yBAEJ;EACE,IAAI;EACJ;EACA,SAAS;CACX,GACA,cACF;CAGF,MAAM,YAAY,MAAM,SAAS;CACjC,IAAI,MAAM,cAAc,WAAW,eAAe,SAAS,MAAM,MAAM;EACrE,MAAM,YACJ,gBAAgB,aAAA,EACf;EACH,MAAM,aAAa,aAAa,UAAU;EAC1C,MAAM,cACJ,cAAc,QACd,OAAO,eAAe,YACtB,UAAU,cACV,OAAO,WAAW,SAAS,WACvB,WAAW,OACX;EACN,MAAMC,qBAAAA,aAAa;GACjB,UAAU,MAAM;GAChB,OAAO;IACL,iBAAiB;IACjB,OAAO;IACP;IACA;IACA,SAAS;IACT;GACF;GACA;EACF,CAAC,CAAC,CAAC,YAAY,CAEf,CAAC;CACH;CAEA,aAAa,kCAAkC,CAAC,CAAC;AACnD;AAqDA,SAAS,kBACP,QACA,OACe;CACf,MAAM,gBAAgB,OAAO,mBAAmB;CAChD,IAAI,iBAAiB,MACnB,OAAO;CAET,IAAI,UAAU,MACZ,OAAO,EAAE,QAAQ,cAAc;CAEjC,MAAM,WAAW,OAAO;CACxB,IAAI,YAAY,QAAQ,aAAa,eACnC,OAAO;EAAE,GAAG;EAAQ,QAAQ;CAAc;CAE5C,OAAO;EAAE,GAAG;EAAQ,QAAQ,YAAY,IAAI,CAAC,UAAU,aAAa,CAAC;CAAE;AACzE;AAMA,SAAS,2BACP,GAAG,SACmC;CACtC,KAAK,MAAM,UAAU,SACnB,IACE,QAAQ,YAAY,QACpB,OAAO,kBAAkBJ,qBAAAA,0BAEzB,OAAO,OAAO;AAIpB;AAEA,SAAgB,oBAAoB,EAClC,cACA,OAAO,cACP,kBAC4B;CAC5B,OAAO,OACL,OAIA,WAC2E;EAQ3E,MAAM,yBAAyB,aAAa,uBAAuB;EACnE,MAAM,qBACJ,wBAAwB,UAAU,aAAa,mBAAmB;EACpE,MAAM,oBAAoB,aAAa,kBAAkB;EACzD,MAAM,QACJ,sBAAsB,OAClB,eACC,OAAO,OAAO,cAAc;GAC7B,kBAAkB,EAAE,aAA0B,mBAAmB;GACjE,GAAI,0BAA0B,QAAQ,EACpC,sBAAsB,EACpB,aAA8B,uBAChC,EACF;EACF,CAAC;EACL,MAAM,UAAU,MAAM;EACtB,IAAI,WAAW,MACb,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAQ3C,MAAM,kBAAkB,2BACtB,oBACA,QAAQ,MACV;EACA,IAAI,mBAAmB,MACrB,MAAM;EAWR,IACE,QAAQ,WAAW,eAClB,QAAQ,uBAAuB,QAC9B,aAAa,yBAAyB,OACxC;GACA,eAAA,aACE,QACA,SACA,aACA,qFACA;IACE,kBAAkB,aAAa;IAC/B,sBAAsB,aAAa,yBAAyB;IAC5D,oBAAoB,QAAQ,uBAAuB;GACrD,GACA;IAAE,OAAO,MAAM;IAAO,SAAS,QAAQ;GAAQ,CACjD;GACA,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAC3C;EAEA,MAAM,SAAS,aAAa,oBAAoB;EAChD,IAAI,SAAS,KAAK,aAAa,qBAAqB,QAAQ;GAC1D,eAAA,aACE,QACA,QACA,aACA,uHACA;IACE,mBAAmB,aAAa;IAChC,kBAAkB;IAClB,WAAW,aAAa,2BAA2B;GACrD,GACA;IAAE,OAAO,MAAM;IAAO,SAAS,QAAQ;GAAQ,CACjD;GACA,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAC3C;EAYA,MAAM,kBAAkB,aAAa;EAErC,MAAM,mBAAmB,2BACvB,MAAM,UACN,iBACA,aAAa,gBACf;EAEA,MAAM,iBAAiB,UAAU,MAAM;EAEvC,MAAM,eAAe,aAAa,qBAAqB;EACvD,MAAM,EAAE,MAAM,kBAAkB,mBAAmBK,gBAAAA,uBACjD,kBACA;GACE,OAAO,cAAc,SAAA;GACrB,QAAQ,cAAc;GACtB,cAAc,aAAa;EAC7B,CACF;EAaA,MAAM,mBAAmB,MAAM,SAAS,MAAM,cAAc;EAE5D,IAAI,iBAAiB,WAAW,GAAG;GASjC,eAAA,aACE,QACA,SACA,aACA,+DACA;IACE,kBAAkB,iBAAiB;IACnC,aAAa,cAAc,SAAA;GAC7B,GACA;IAAE,OAAO,MAAM;IAAO,SAAS,QAAQ;GAAQ,CACjD;GACA,aAAa,2BAA2B,MAAM,SAAS,MAAM;GAC7D,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAC3C;EAEA,MAAM,eAAe,+BACnB,cACA,aAAa,mBACf;EAGA,MAAM,CAAC,QAAQ,aAAa,eAAe,aADd,QAAQ,SACa;EAElD,MAAM,qBAA4C;GAChD,MAAA;GACA,OAAO,aAAa;GACpB,UAAU,aAAa;EACzB;EAEA,MAAM,UAAqB;GACzB;GACA,IAAI;GACJ,MAAA;GACA,OAAO,MAAM,YAAY;GACzB,aAAa;IACX,MAAA;IACA,kBAAkB,EAAE,YAAY,OAAO;GACzC;GACA,SAAS;GACT,OAAO;EACT;EAEA,IAAI,MAAM,SAAS,QAAQ,MAAM,UAAU,IACzC,QAAQ,QAAQ,MAAM;EAExB,IAAI,MAAM,gBAAgB,aAAa,SACrC,QAAQ,UAAU,aAAa;EAGjC,MAAM,MAAM,gBAAgB,SAAS,cAAc;EAEnD,IAAI,gBACF,MAAMF,eAAAA,wBAAAA,sBAEJ;GACE,SAAS,QAAQ;GACjB,UAAU,aAAa;GACvB,OAAO,aAAa;GACpB,uBAAuB,iBAAiB;GACxC,gBAAgB,aAAa,iBAAiB;EAChD,GACA,cACF;EAGF,MAAM,YAAY,MAAM,SAAS;EACjC,IAAI,MAAM,cAAc,WAAW,cAAc,SAAS,MAAM,MAAM;GACpE,MAAM,YACJ,gBAAgB,aAAA,EACf;GACH,MAAMC,qBAAAA,aAAa;IACjB,UAAU,MAAM;IAChB,OAAO;KACL,iBAAiB;KACjB,OAAO;KACP;KACA,SAAS,QAAQ;KACjB,qBAAqB,iBAAiB;KACtC,SAAS,aAAa,qBAAqB,SAAS,QAAQ;IAC9D;IACA;GACF,CAAC,CAAC,CAAC,YAAY,CAEf,CAAC;EACH;EAEA,MAAM,uBACJ,aAAa,aAAc,aAAa;EAC1C,MAAM,iBACJ,wBACC,aAAa,eACV,gBAAgB;EAEtB,MAAM,OAAc,OAAO,SAAS,SAAS;GAC3C,eAAA,aAAa,gBAAgB,OAAO,aAAa,SAAS,MAAM;IAC9D,OAAO,MAAM;IACb,SAAS,QAAQ;GACnB,CAAC;EACH;EAEA,IAAI,SAAS,0BAA0B;GACrC,uBAAuB,iBAAiB;GACxC,kBAAkB,aAAa,eAAe,CAAC,EAAE,KAAK,KAAK,QAAQ;GACnE,gBAAgB,aAAa,iBAAiB;GAC9C,iBAAiB;GACjB;GACA,UAAU,aAAa;EACzB,CAAC;EAED,MAAM,kBAA8C,SAChD;GACA,GAAG;GACH,UAAU;IACR,GAAG,OAAO;IACV,UAAU,QAAQ;IAKlB,SAAS,QAAQ;IACjB,wBAAwB,aAAa;IACrC,qBAAqB,aAAa;IAWlC,GAAI,aAAa,aAAa,QAAQ,aAAa,cAAc,KAC7D,GAAA,oBAA6B,aAAa,UAAU,IACpD,CAAC;IAKL,GAAI,qBAAqB,OACrB,GAAGE,qBAAAA,yBAAyB,kBAAkB,IAC9C,CAAC;GACP;EACF,IACE,KAAA;EAOJ;GACE,MAAM,cAAc,2BAClB,oBACA,QAAQ,MACV;GACA,IAAI,eAAe,MACjB,MAAM;EAEV;EACA,MAAM,EACJ,MAAM,SACN,OAAO,cACP,qBACE,MAAM,iCAAiC;GACzC;GACA,UAAU;GACV;GACA;GACA;GACA,gBAAgB,wBAAwB;GACxC;GACA;EACF,CAAC;EAUD,IAAI,qBAAqB,QAAQ,QAAQ,WAAW,YAAY;GAC9D,IACE,QACA,8FACF;GACA,aAAa,2BAA2B,MAAM,SAAS,MAAM;GAM7D,MAAM,MAAM,yBACV,QACA;IACE,MAAM;IACN,SAAS;GACX,GACA,cACF;GACA,IAAI,gBACF,MAAMH,eAAAA,wBAAAA,yBAEJ;IACE,IAAI;IACJ,SAAS,QAAQ;IACjB,OACE;GACJ,GACA,cACF;GAEF,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAC3C;EAEA,IAAI,CAAC,SAAS;GACZ,aAAa,2BAA2B,CAAC;GACzC,IAAI,gBACF,MAAMA,eAAAA,wBAAAA,yBAEJ;IACE,IAAI;IACJ,SAAS,QAAQ;IACjB,OAAO;GACT,GACA,cACF;GAEF,MAAM,MAAM,eAAe,QAAQ,UAAU,cAAc;GAC3D,OAAO,EAAE,sBAAsB,KAAA,EAAU;EAC3C;EAEA,MAAM,cAAc,cAAc,SAAS,gBAAgB;EAE3D,MAAM,aAAa,yBACjB,aACA,cACA,aAAa,YACf;EAEA,aAAa,WAAW,aAAa,UAAU;EAE/C,IAAI,QAAQ,mBAAmB;EAC/B,IAAI,SAAS,mBAAmB;GAC9B,eAAe;GACf,YAAY,YAAY;GACxB,mBAAmB,iBAAiB;GACpC,gBAAgB,aAAa;GAC7B,GAAI,gBAAgB,OAChB;IACA,cAAc,aAAa;IAC3B,eAAe,aAAa;IAC5B,YAAY,aAAa,qBAAqB;IAC9C,gBAAgB,aAAa,qBAAqB;GACpD,IACE,CAAC;EACP,CAAC;EAaD,MAAM,yBAAyB;GAC7B;GACA;GACA;GACA,cAfmB,kBAAkB;IACrC;IACA;IACA,UAAU,uBAAuB,gBAAgB;IACjD;IACA,WAAW,QAAQ;IACnB,WAAW,aAAa;IACxB,UAAU,aAAa;IACvB,gBAAgB,aAAa;GAC/B,CAMa;GACX;GACA;GACA;GACA,SAAS,QAAQ;GACjB,oBAAoB,iBAAiB;EACvC,CAAC;EAWD,aAAa,2BAA2B,iBAAiB,MAAM;EAY/D,IAAI,mBAAmB,QAAQ,gBAAgB,OAAO,GAAG;GACvD,MAAM,8BAAc,IAAI,IAAoB;GAC5C,KAAK,MAAM,CAAC,KAAK,YAAY,iBAC3B,IAAI,OAAO,gBACT,YAAY,IAAI,MAAM,gBAAgB,OAAO;GAGjD,aAAa,6BACX,YAAY,OAAO,IAAI,cAAc,KAAA;EACzC,OACE,aAAa,6BAA6B,KAAA;EAG5C,OAAO;GACL,sBAAsB,KAAA;GACtB,UACE,iBAAiB,SAAS,IACtB,CAACI,gBAAAA,uBAAuB,GAAG,GAAG,gBAAgB,IAC9C,CAACA,gBAAAA,uBAAuB,CAAC;EACjC;CACF;AACF;AAGA,SAAS,oBAAoB,UAAgD;CAC3E,MAAM,EAAE,YAAY;CACpB,IAAI,OAAO,YAAY,UACrB,OAAO,QAAQ,KAAK;CAEtB,IAAI,CAAC,MAAM,QAAQ,OAAO,GACxB,OAAO;CAET,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,SAAS,SAAS;EAC3B,IAAI,OAAO,UAAU,UAAU;GAC7B,MAAM,KAAK,KAAK;GAChB;EACF;EACA,IAAI,SAAS,QAAQ,OAAO,UAAU,UACpC;EAEF,MAAM,MAAM;EACZ,IACE,IAAI,SAAA,cACJ,IAAI,SAAA,uBACJ,IAAI,SAAS,qBAEb;EAEF,IAAI,IAAI,SAAS,UAAU,OAAO,IAAI,SAAS,UAC7C,MAAM,KAAK,IAAI,IAAI;CAEvB;CACA,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,KAAK;AAC7B;AAEA,SAAS,8BACP,YACA,kBACA,kBACQ;CAIR,MAAM,QAAQ,CAHU,mBACnB,oBAAoB,aACrB,UAC0B;CAC9B,IAAI,kBACF,MAAM,KACJ,2BAA2B,iBAAiB,sBAC9C;CAEF,OAAO,MAAM,KAAK,EAAE;AACtB;AAGA,SAAgB,gCAAgC,EAC9C,QACA,QACA,UACA,eAAe,qBACf,SAOsB;CACtB,IAAI,UAAU,QAAQ,WAAW,MAAM,CAAC,QACtC;CAEF,MAAM,gBAAgB,OAAO;CAC7B,QAAQ,OAAO,oBAAoB;EAmBjC,IAAI,SAAS,MACX,IAAI;GACF,qBAAA,gCAAgC;IAC9B;IACA,UAAU,mBAAmB;IACtB;GAGT,CAAC;EACH,SAAS,OAAO;GACd,IAAI,iBAAiBP,qBAAAA,0BACnB,MAAM,uBAAuB,CAAC,CAAC,MAAM,KAAK;GAE5C,MAAM;EACR;EAGF,MAAM,MAAMQ,eAAAA,gBAAgB;GAASC;GAAU;GAAU;EAAa,CAAC;EACvE,IAAI,OAAO,QAAS,OAAO,QAAQ,YAAY,CAAC,KAC9C;EAEF,MAAM,gBACJ,OAAO,QAAQ,WACX,CAAC;GAAE,MAAA;GAAyB,MAAM;EAAI,CAA4B,IAClE;EAEN,eAAKN,wBAAAA,sBAEH;GACE,IAAI;GACJ,OAAO,EACL,SAAS;IACP,MAAA;IACA,SAAS;IACT,UAAU,OAAO,OAAO,UAAU,0BAA0B,EAAE;IAC9D,OAAO,OAAO,OAAO,UAAU,uBAAuB,EAAE;GAC1D,EACF;EACF,GACA,MACF;CACF;AACF;AAEA,SAAS,YACP,QACA,OAC4B;CAC5B,IAAI,CAAC,QACH;CAEF,OAAO;EACL,GAAG;EACH,SAAS,iBAAiB;EAC1B,UAAU;GAAE,GAAG,OAAO;GAAU,eAAe;GAAM;EAAM;CAC7D;AACF;AAQA,eAAe,sBAAsB,EACnC,OACA,UACA,YACA,kBACA,kBACA,QACA,QACA,UACA,cACA,OACA,gBACA,gBACA,OAe4D;CAC5D,MAAM,cAAc,8BAClB,YACA,kBACA,gBACF;CAEA,MAAM,eAAe,CAAC,GAAG,UAAU,IAAID,yBAAAA,aAAa,WAAW,CAAC;CAyBhE,MAAM,eAAc,MAnBCQ,eAAAA,cACnB;EACE;EACA,UAPF,mBAAmB,OACfC,cAAAA,oBAAoB,cAAc,cAAc,IAChD;EAMF;EACA,SAAS,gCAAgC;GACvC;GACA,QAAQ,YAAY,QAAQ,sBAAsB;GAClD;GACA;GACA;EACF,CAAC;EAGD,kBAAkB;CACpB,GACA,kBAAkB,YAAY,QAAQ,sBAAsB,GAAG,KAAK,CACtE,EAAA,CAE2B,WAAW;CACtC,MAAM,OAAO,cACT,oBAAoB,WAA2C,IAC/D;CACJ,IAAI;CACJ,IAAI,cAAc;CAClB,IACE,eAAe,QACf,oBAAoB,eACpB,YAAY,kBAAkB,MAC9B;EACA,QAAQ,YAAY;EACpB,cAAc;CAChB,OAAO,IAAI,eAAe,MAAM;EAI9B,MAAM,OAHW,YAAY,mBAGN,SAAA,EACnB;EACJ,IAAI,OAAO,MAAM;GACf,QAAQ;IACN,cAAc,OAAO,IAAI,WAAW,KAAK,KAAA;IACzC,eAAe,OAAO,IAAI,YAAY,KAAK,KAAA;GAC7C;GACA,cAAc;EAChB;CACF;CACA,MAAM,eACJ,OAQC;CACH,MAAM,SAAS,2BAA2B;EACxC,QAAQ;EACR,cAAc,OAAO;EACrB,eAAe,OAAO;EACtB,GAAI,cAAc,cAAc,QAAQ,cAAc,kBAAkB,OACpE;GACA,kCAAkC,aAAa;GAC/C,sCAAsC,aAAa;EACrD,IACE,CAAC;CACP,CAAC;CACD,OAAO;EAAE;EAAM;CAAM;AACvB"}
@@ -46,14 +46,6 @@ Usage:
46
46
  - ${require_CodeExecutor.BASH_SHELL_GUIDANCE}
47
47
  - NEVER use this tool to execute malicious commands.
48
48
  `.trim();
49
- /**
50
- * Bash statefulness is filesystem-tier and scoped to `/mnt/data`. The machine
51
- * is warm across calls, but each call runs in a fresh sandbox (new process
52
- * tree + private /tmp), so background processes are reaped when the call ends
53
- * and anything written outside /mnt/data is discarded. The note must not
54
- * promise otherwise: a model told background processes survive will start a
55
- * server in one call and assume it is listening in the next.
56
- */
57
49
  const STATEFUL_BASH_NOTE = "Session state: commands in this conversation run on the same warm machine, so files written to /mnt/data persist between calls. Each call runs in a fresh, isolated sandbox: shell variables, the working directory, /tmp, and background processes do NOT survive after the call returns — a process started in one call is terminated when that call ends. Only /mnt/data is durable (the machine itself may also be reset at any time).";
58
50
  const StatefulBashExecutionToolDescription = `
59
51
  Runs bash commands and returns stdout/stderr output. Commands in this conversation share one warm machine with a persistent /mnt/data, but each command runs in its own isolated sandbox (not a persistent shell session).
@@ -67,16 +59,6 @@ Usage:
67
59
  - ${require_CodeExecutor.BASH_SHELL_GUIDANCE}
68
60
  - NEVER use this tool to execute malicious commands.
69
61
  `.trim();
70
- /**
71
- * Supplemental prompt documenting the tool-output reference feature.
72
- *
73
- * Hosts should append this (separated by a blank line) to the base
74
- * {@link BashExecutionToolDescription} only when
75
- * `RunConfig.toolOutputReferences.enabled` is `true`. When the feature
76
- * is disabled, including this text would tell the LLM to emit
77
- * `{{tool0turn0}}` placeholders that pass through unsubstituted and
78
- * leak into the shell.
79
- */
80
62
  const BashToolOutputReferencesGuide = `
81
63
  Referencing previous tool outputs:
82
64
  - Every successful tool result is tagged with a reference key of the form \`tool<idx>turn<turn>\` (e.g., \`tool0turn0\`). The key appears either as a \`[ref: tool0turn0]\` prefix line or, when the output is a JSON object, as a \`_ref\` field on the object.
@@ -87,13 +69,6 @@ Referencing previous tool outputs:
87
69
  - Heredoc example: \`wc -c << 'EOF'\\n{{tool0turn0}}\\nEOF\` (the quotes around \`'EOF'\` disable interpolation inside the body).
88
70
  - Unknown reference keys are left in place and surfaced as \`[unresolved refs: …]\` after the output.
89
71
  `.trim();
90
- /**
91
- * Composes the bash tool description, optionally appending the
92
- * tool-output references guide. Hosts that enable
93
- * `RunConfig.toolOutputReferences` should pass `enableToolOutputReferences: true`
94
- * when registering the tool so the LLM learns the `{{…}}` syntax it
95
- * will actually be able to use.
96
- */
97
72
  function buildBashExecutionToolDescription(options) {
98
73
  const base = options?.statefulSessions === true ? StatefulBashExecutionToolDescription : BashExecutionToolDescription;
99
74
  if (options?.enableToolOutputReferences === true) return `${base}\n\n${BashToolOutputReferencesGuide}`;
@@ -116,16 +91,6 @@ function buildBashExecutionToolSchema(opts) {
116
91
  };
117
92
  }
118
93
  const BashExecutionToolName = "bash_tool";
119
- /**
120
- * Default bash tool definition using the base description.
121
- *
122
- * When `RunConfig.toolOutputReferences.enabled` is `true`, build a
123
- * reference-aware description with
124
- * {@link buildBashExecutionToolDescription}
125
- * (`{ enableToolOutputReferences: true }`) and construct a custom
126
- * definition using it — using this constant as-is leaves the LLM
127
- * unaware of the `{{tool<i>turn<n>}}` syntax.
128
- */
129
94
  const BashExecutionToolDefinition = {
130
95
  name: BashExecutionToolName,
131
96
  description: BashExecutionToolDescription,
@@ -1 +1 @@
1
- {"version":3,"file":"BashExecutor.cjs","names":["getCodeBaseURL","INTENT_PROPERTY","CODE_ARTIFACT_PATH_GUIDANCE","BASH_SHELL_GUIDANCE","resolveCodeApiAuthHeaders","resolveFetchProxyAgent","CodeApiRequestError","buildCodeApiHttpErrorMessage","emptyOutputMessage","appendTmpScratchReminder","appendCodeSessionFileSummary","appendFailedExecutionFileReminder","normalizeCodeApiRequestError"],"sources":["../../../src/tools/BashExecutor.ts"],"sourcesContent":["import { config } from 'dotenv';\nimport fetch, { RequestInit } from 'node-fetch';\nimport { tool, DynamicStructuredTool } from '@langchain/core/tools';\nimport type * as t from '@/types';\nimport {\n BASH_SHELL_GUIDANCE,\n CODE_ARTIFACT_PATH_GUIDANCE,\n appendFailedExecutionFileReminder,\n appendTmpScratchReminder,\n appendCodeSessionFileSummary,\n emptyOutputMessage,\n buildCodeApiHttpErrorMessage,\n CodeApiRequestError,\n getCodeBaseURL,\n normalizeCodeApiRequestError,\n resolveCodeApiAuthHeaders,\n} from './CodeExecutor';\nimport { resolveFetchProxyAgent } from '@/utils/proxy';\nimport { INTENT_PROPERTY } from '@/tools/intentArg';\nimport { Constants } from '@/common';\n\nconfig();\n\nconst baseEndpoint = getCodeBaseURL();\nconst EXEC_ENDPOINT = `${baseEndpoint}/exec`;\n\nexport const BashExecutionToolSchema = {\n type: 'object',\n properties: {\n intent: { ...INTENT_PROPERTY },\n command: {\n type: 'string',\n description: `The bash command or script to execute.\n- The environment is stateless; variables and state don't persist between executions.\n- Prior /mnt/data files are available and can be modified in place.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- ${BASH_SHELL_GUIDANCE}\n- Input code **IS ALREADY** displayed to the user, so **DO NOT** repeat it in your response unless asked.\n- Output code **IS NOT** displayed to the user, so **DO** write all desired output explicitly.\n- IMPORTANT: You MUST explicitly print/output ALL results you want the user to see.\n- Use \\`echo\\`, \\`printf\\`, or \\`cat\\` for all outputs.`,\n },\n args: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Additional arguments to execute the command with. This should only be used if the input command requires additional arguments to run.',\n },\n },\n required: ['command'],\n} as const;\n\nexport const BashExecutionToolDescription = `\nRuns bash commands and returns stdout/stderr output from a stateless execution environment, similar to running scripts in a command-line interface. Each execution is isolated and independent.\n\nUsage:\n- No network access available.\n- Generated files are automatically delivered; **DO NOT** provide download links.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- ${BASH_SHELL_GUIDANCE}\n- NEVER use this tool to execute malicious commands.\n`.trim();\n\n/**\n * Bash statefulness is filesystem-tier and scoped to `/mnt/data`. The machine\n * is warm across calls, but each call runs in a fresh sandbox (new process\n * tree + private /tmp), so background processes are reaped when the call ends\n * and anything written outside /mnt/data is discarded. The note must not\n * promise otherwise: a model told background processes survive will start a\n * server in one call and assume it is listening in the next.\n */\nexport const STATEFUL_BASH_NOTE =\n 'Session state: commands in this conversation run on the same warm machine, so files written to /mnt/data persist between calls. Each call runs in a fresh, isolated sandbox: shell variables, the working directory, /tmp, and background processes do NOT survive after the call returns — a process started in one call is terminated when that call ends. Only /mnt/data is durable (the machine itself may also be reset at any time).';\n\nexport const StatefulBashExecutionToolDescription = `\nRuns bash commands and returns stdout/stderr output. Commands in this conversation share one warm machine with a persistent /mnt/data, but each command runs in its own isolated sandbox (not a persistent shell session).\n\n${STATEFUL_BASH_NOTE}\n\nUsage:\n- No network access available.\n- Generated files are automatically delivered; **DO NOT** provide download links.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- ${BASH_SHELL_GUIDANCE}\n- NEVER use this tool to execute malicious commands.\n`.trim();\n\n/**\n * Supplemental prompt documenting the tool-output reference feature.\n *\n * Hosts should append this (separated by a blank line) to the base\n * {@link BashExecutionToolDescription} only when\n * `RunConfig.toolOutputReferences.enabled` is `true`. When the feature\n * is disabled, including this text would tell the LLM to emit\n * `{{tool0turn0}}` placeholders that pass through unsubstituted and\n * leak into the shell.\n */\nexport const BashToolOutputReferencesGuide = `\nReferencing previous tool outputs:\n- Every successful tool result is tagged with a reference key of the form \\`tool<idx>turn<turn>\\` (e.g., \\`tool0turn0\\`). The key appears either as a \\`[ref: tool0turn0]\\` prefix line or, when the output is a JSON object, as a \\`_ref\\` field on the object.\n- To pipe a previous tool output into this tool, embed the placeholder \\`{{tool<idx>turn<turn>}}\\` literally anywhere in the \\`command\\` string (or any string arg). It will be substituted with the stored output verbatim before the command runs.\n- The substituted value is the original output string (no \\`[ref: …]\\` prefix, no \\`_ref\\` key), so it is safe to pipe directly into \\`jq\\`, \\`grep\\`, \\`awk\\`, etc.\n- Example (simple ASCII output): \\`echo '{{tool0turn0}}' | jq '.foo'\\` takes the full output of the first tool from the first turn and pipes it into jq.\n- For payloads that may contain quotes, parentheses, backticks, or arbitrary bytes (random/binary data, JSON with embedded quotes, multi-line strings), prefer a quoted-delimiter heredoc over \\`echo '…'\\`. The heredoc body is not interpreted by the shell, so substituted payloads pass through unchanged.\n- Heredoc example: \\`wc -c << 'EOF'\\\\n{{tool0turn0}}\\\\nEOF\\` (the quotes around \\`'EOF'\\` disable interpolation inside the body).\n- Unknown reference keys are left in place and surfaced as \\`[unresolved refs: …]\\` after the output.\n`.trim();\n\n/**\n * Composes the bash tool description, optionally appending the\n * tool-output references guide. Hosts that enable\n * `RunConfig.toolOutputReferences` should pass `enableToolOutputReferences: true`\n * when registering the tool so the LLM learns the `{{…}}` syntax it\n * will actually be able to use.\n */\nexport function buildBashExecutionToolDescription(options?: {\n enableToolOutputReferences?: boolean;\n statefulSessions?: boolean;\n}): string {\n const base =\n options?.statefulSessions === true\n ? StatefulBashExecutionToolDescription\n : BashExecutionToolDescription;\n if (options?.enableToolOutputReferences === true) {\n return `${base}\\n\\n${BashToolOutputReferencesGuide}`;\n }\n return base;\n}\n\nconst STATELESS_BASH_PARAM_NOTE =\n 'The environment is stateless; variables and state don\\'t persist between executions.';\nconst STATEFUL_BASH_PARAM_NOTE =\n 'Files written to /mnt/data persist between calls on the same warm machine. Each call runs in a fresh sandbox: shell variables, cwd, /tmp, and background processes do NOT survive the call. Only /mnt/data is durable.';\n\nexport function buildBashExecutionToolSchema(opts?: {\n statefulSessions?: boolean;\n}): typeof BashExecutionToolSchema {\n const note =\n opts?.statefulSessions === true\n ? STATEFUL_BASH_PARAM_NOTE\n : STATELESS_BASH_PARAM_NOTE;\n const commandDescription =\n BashExecutionToolSchema.properties.command.description.replace(\n STATELESS_BASH_PARAM_NOTE,\n note\n );\n return {\n ...BashExecutionToolSchema,\n properties: {\n ...BashExecutionToolSchema.properties,\n command: {\n ...BashExecutionToolSchema.properties.command,\n description: commandDescription,\n },\n },\n } as typeof BashExecutionToolSchema;\n}\n\nexport const BashExecutionToolName = Constants.BASH_TOOL;\n\n/**\n * Default bash tool definition using the base description.\n *\n * When `RunConfig.toolOutputReferences.enabled` is `true`, build a\n * reference-aware description with\n * {@link buildBashExecutionToolDescription}\n * (`{ enableToolOutputReferences: true }`) and construct a custom\n * definition using it — using this constant as-is leaves the LLM\n * unaware of the `{{tool<i>turn<n>}}` syntax.\n */\nexport const BashExecutionToolDefinition = {\n name: BashExecutionToolName,\n description: BashExecutionToolDescription,\n schema: BashExecutionToolSchema,\n} as const;\n\nfunction createBashExecutionTool(\n params: t.BashExecutionToolParams | null = {}\n): DynamicStructuredTool {\n return tool(\n async (rawInput, config) => {\n /* `statefulSessions` is prompt-only — keep it out of the wire body. */\n const {\n authHeaders,\n statefulSessions: _statefulSessions,\n ...executionParams\n } = params ?? {};\n void _statefulSessions;\n /* Drop any model-supplied `runtime_session_hint` from the raw args: the\n * hint must only come from ToolNode's injected `_runtime_session_hint`\n * (below), never from the tool call itself. */\n /* `intent` is a UI display label — never part of the wire body. */\n const {\n command,\n intent: _ignoredIntent,\n runtime_session_hint: _ignoredModelHint,\n ...rest\n } = rawInput as {\n command: string;\n intent?: unknown;\n runtime_session_hint?: unknown;\n args?: string[];\n };\n void _ignoredModelHint;\n void _ignoredIntent;\n const { session_id, _injected_files, _runtime_session_hint } =\n (config.toolCall ?? {}) as {\n session_id?: string;\n _injected_files?: t.CodeEnvFile[];\n _runtime_session_hint?: string;\n };\n\n const postData: Record<string, unknown> = {\n lang: 'bash',\n code: command,\n ...rest,\n ...executionParams,\n };\n\n if (\n typeof _runtime_session_hint === 'string' &&\n _runtime_session_hint !== ''\n ) {\n postData.runtime_session_hint = _runtime_session_hint;\n }\n\n /* See `CodeExecutor.ts` for the rationale — `/files/<session_id>`\n * HTTP fallback was removed because codeapi's sessionAuth requires\n * kind/id query params unavailable at this point. */\n if (_injected_files && _injected_files.length > 0) {\n postData.files = _injected_files;\n } else if (\n session_id != null &&\n session_id.length > 0 &&\n !Array.isArray(postData.files)\n ) {\n // eslint-disable-next-line no-console\n console.debug(\n `[BashExecutor] No injected files for session_id=${session_id} — exec will run without input files`\n );\n }\n\n try {\n const resolvedAuthHeaders =\n await resolveCodeApiAuthHeaders(authHeaders);\n const fetchOptions: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'LibreChat/1.0',\n ...resolvedAuthHeaders,\n },\n body: JSON.stringify(postData),\n };\n\n const proxyAgent = resolveFetchProxyAgent(EXEC_ENDPOINT);\n if (proxyAgent) {\n fetchOptions.agent = proxyAgent;\n }\n const response = await fetch(EXEC_ENDPOINT, fetchOptions);\n if (!response.ok) {\n throw new CodeApiRequestError(\n await buildCodeApiHttpErrorMessage('POST', EXEC_ENDPOINT, response)\n );\n }\n\n const result: t.ExecuteResult = await response.json();\n let formattedOutput = '';\n if (result.stdout) {\n formattedOutput += `stdout:\\n${result.stdout}\\n`;\n } else {\n formattedOutput += emptyOutputMessage;\n }\n if (result.stderr) formattedOutput += `stderr:\\n${result.stderr}\\n`;\n\n const outputWithReminder = appendTmpScratchReminder(\n formattedOutput,\n command\n );\n const hasFiles = result.files != null && result.files.length > 0;\n const runtimeEcho =\n result.runtime_session_id != null\n ? {\n runtime_session_id: result.runtime_session_id,\n runtime_status: result.runtime_status,\n }\n : {};\n return [\n appendCodeSessionFileSummary(outputWithReminder, result.files),\n (hasFiles\n ? {\n session_id: result.session_id,\n files: result.files,\n ...runtimeEcho,\n }\n : {\n session_id: result.session_id,\n ...runtimeEcho,\n }) satisfies t.CodeExecutionArtifact,\n ];\n } catch (error) {\n const messageWithReminder = appendFailedExecutionFileReminder(\n normalizeCodeApiRequestError(error).message,\n command\n );\n throw new Error(`Execution error:\\n\\n${messageWithReminder}`);\n }\n },\n {\n name: BashExecutionToolName,\n description: buildBashExecutionToolDescription({\n statefulSessions: params?.statefulSessions,\n }),\n schema: buildBashExecutionToolSchema(params ?? undefined),\n responseFormat: Constants.CONTENT_AND_ARTIFACT,\n }\n );\n}\n\nexport { createBashExecutionTool };\n"],"mappings":"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"}
1
+ {"version":3,"file":"BashExecutor.cjs","names":["getCodeBaseURL","INTENT_PROPERTY","CODE_ARTIFACT_PATH_GUIDANCE","BASH_SHELL_GUIDANCE","resolveCodeApiAuthHeaders","resolveFetchProxyAgent","CodeApiRequestError","buildCodeApiHttpErrorMessage","emptyOutputMessage","appendTmpScratchReminder","appendCodeSessionFileSummary","appendFailedExecutionFileReminder","normalizeCodeApiRequestError"],"sources":["../../../src/tools/BashExecutor.ts"],"mappings":"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"}
@@ -9,7 +9,6 @@ let _langchain_core_tools = require("@langchain/core/tools");
9
9
  (0, require("dotenv").config)();
10
10
  const DEFAULT_MAX_ROUND_TRIPS = 20;
11
11
  const DEFAULT_RUN_TIMEOUT_MS = require_ptcTimeout.resolveCodeApiRunTimeoutMs();
12
- /** Bash reserved words that get `_tool` suffix when used as function names */
13
12
  const BASH_RESERVED = new Set([
14
13
  "if",
15
14
  "then",
@@ -124,13 +123,6 @@ function normalizeBashToolResultsForReplay(toolResults) {
124
123
  };
125
124
  });
126
125
  }
127
- /**
128
- * Normalizes a tool name to a valid bash function identifier.
129
- * 1. Replace hyphens, spaces, dots with underscores
130
- * 2. Remove any other invalid characters
131
- * 3. Prefix with underscore if starts with number
132
- * 4. Append `_tool` if it's a bash reserved word
133
- */
134
126
  function normalizeToBashIdentifier(name) {
135
127
  let normalized = name.replace(/[-\s.]/g, "_");
136
128
  normalized = normalized.replace(/[^a-zA-Z0-9_]/g, "");
@@ -138,11 +130,6 @@ function normalizeToBashIdentifier(name) {
138
130
  if (BASH_RESERVED.has(normalized)) normalized = normalized + "_tool";
139
131
  return normalized;
140
132
  }
141
- /**
142
- * Extracts tool names that are actually called in the bash code.
143
- * Bash functions are invoked as commands (no parentheses), so we match
144
- * the normalized name as a word boundary.
145
- */
146
133
  function extractUsedBashToolNames(code, toolNameMap) {
147
134
  const usedTools = /* @__PURE__ */ new Set();
148
135
  for (const [bashName, originalName] of toolNameMap) {
@@ -151,9 +138,6 @@ function extractUsedBashToolNames(code, toolNameMap) {
151
138
  }
152
139
  return usedTools;
153
140
  }
154
- /**
155
- * Filters tool definitions to only include tools actually used in the bash code.
156
- */
157
141
  function filterBashToolsByUsage(toolDefs, code, debug = false) {
158
142
  const toolNameMap = /* @__PURE__ */ new Map();
159
143
  for (const def of toolDefs) {
@@ -171,14 +155,6 @@ function filterBashToolsByUsage(toolDefs, code, debug = false) {
171
155
  }
172
156
  return toolDefs.filter((def) => usedToolNames.has(def.name));
173
157
  }
174
- /**
175
- * Creates a Bash Programmatic Tool Calling tool for multi-tool orchestration.
176
- *
177
- * This tool enables AI agents to write bash scripts that orchestrate multiple
178
- * tool calls programmatically via the remote Code API, reducing LLM round-trips.
179
- *
180
- * The tool map must be provided at runtime via config.toolCall (injected by ToolNode).
181
- */
182
158
  function createBashProgrammaticToolCallingTool(initParams = {}) {
183
159
  const baseUrl = initParams.baseUrl ?? require_CodeExecutor.getCodeBaseURL();
184
160
  const maxRoundTrips = initParams.maxRoundTrips ?? DEFAULT_MAX_ROUND_TRIPS;
@@ -1 +1 @@
1
- {"version":3,"file":"BashProgrammaticToolCalling.cjs","names":["resolveCodeApiRunTimeoutMs","CODE_ARTIFACT_PATH_GUIDANCE","BASH_SHELL_GUIDANCE","INTENT_PROPERTY","createCodeApiRunTimeoutSchema","getCodeBaseURL","clampCodeApiRunTimeoutMs","makeRequest","executeTools","formatCompletedResponse","buildCodeApiExecutionErrorMessage","CodeApiRequestError","appendFailedExecutionFileReminder"],"sources":["../../../src/tools/BashProgrammaticToolCalling.ts"],"sourcesContent":["import { config } from 'dotenv';\nimport { tool, DynamicStructuredTool } from '@langchain/core/tools';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type { ProgrammaticToolCallingJsonSchema } from './ptcTimeout';\nimport type * as t from '@/types';\nimport {\n BASH_SHELL_GUIDANCE,\n CODE_ARTIFACT_PATH_GUIDANCE,\n appendFailedExecutionFileReminder,\n buildCodeApiExecutionErrorMessage,\n CodeApiRequestError,\n getCodeBaseURL,\n} from './CodeExecutor';\nimport {\n clampCodeApiRunTimeoutMs,\n createCodeApiRunTimeoutSchema,\n resolveCodeApiRunTimeoutMs,\n} from './ptcTimeout';\nimport {\n makeRequest,\n executeTools,\n formatCompletedResponse,\n} from './ProgrammaticToolCalling';\nimport { INTENT_PROPERTY } from '@/tools/intentArg';\nimport { Constants } from '@/common';\n\nconfig();\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst DEFAULT_MAX_ROUND_TRIPS = 20;\nconst DEFAULT_RUN_TIMEOUT_MS = resolveCodeApiRunTimeoutMs();\n\n/** Bash reserved words that get `_tool` suffix when used as function names */\nconst BASH_RESERVED = new Set([\n 'if',\n 'then',\n 'else',\n 'elif',\n 'fi',\n 'case',\n 'esac',\n 'for',\n 'while',\n 'until',\n 'do',\n 'done',\n 'in',\n 'function',\n 'select',\n 'time',\n 'coproc',\n 'declare',\n 'typeset',\n 'local',\n 'readonly',\n 'export',\n 'unset',\n]);\n\n// ============================================================================\n// Description Components\n// ============================================================================\n\nconst STATELESS_WARNING = `CRITICAL - STATELESS EXECUTION:\nEach call is a fresh bash shell. Variables and state do NOT persist between calls.\nYou MUST complete your entire workflow in ONE code block.\nDO NOT split work across multiple calls expecting to reuse variables.`;\n\nconst CORE_RULES = `Rules:\n- One call: state does not persist\n- Tools are pre-defined as bash functions—DO NOT redefine them\n- Each tool function accepts a JSON string argument\n- Save tool output with raw=$(tool '{}'); printf '%s\\n' \"$raw\" > /mnt/data/file.json; direct tool > file may be empty\n- Tool stdout is normalized to one compact JSON value when possible; parse saved stdout once, then use fromjson? // . only for JSON-string fields\n- Only echo/printf output returns to the model\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- ${BASH_SHELL_GUIDANCE}\n- timeout caps one sandbox run/replay iteration, not the total multi-round-trip workflow`;\n\nconst ADDITIONAL_RULES =\n '- Tool names normalized: hyphens→underscores, reserved words get `_tool` suffix';\n\nconst EXAMPLES = `Example (Complete workflow in one call):\n # Query data and process\n data=$(query_database '{\"sql\": \"SELECT * FROM users\"}')\n echo \"$data\" | jq '.[] | .name'\n\nExample (Parallel calls):\n { sf=$(web_search '{\"query\": \"SF weather\"}'); printf '%s\\n' \"$sf\" > /mnt/data/sf.json; } &\n { ny=$(web_search '{\"query\": \"NY weather\"}'); printf '%s\\n' \"$ny\" > /mnt/data/ny.json; } &\n wait\n echo \"SF: $(jq -r . /mnt/data/sf.json)\"\n echo \"NY: $(jq -r . /mnt/data/ny.json)\"`;\n\nconst CODE_PARAM_DESCRIPTION = `Bash code that calls tools programmatically. Tools are available as bash functions.\n\n${STATELESS_WARNING}\n\nEach tool function accepts a JSON string as its argument.\nExample: tool_name '{\"key\": \"value\"}'\n\n${EXAMPLES}\n\n${CORE_RULES}`;\n\n// ============================================================================\n// Schema\n// ============================================================================\n\nexport function createBashProgrammaticToolCallingSchema(\n maxRunTimeoutMs = DEFAULT_RUN_TIMEOUT_MS\n): ProgrammaticToolCallingJsonSchema {\n return {\n type: 'object',\n properties: {\n intent: { ...INTENT_PROPERTY },\n code: {\n type: 'string',\n minLength: 1,\n description: CODE_PARAM_DESCRIPTION,\n },\n timeout: createCodeApiRunTimeoutSchema(maxRunTimeoutMs),\n },\n required: ['code'],\n } as const;\n}\n\nexport const BashProgrammaticToolCallingSchema =\n createBashProgrammaticToolCallingSchema();\n\nexport const BashProgrammaticToolCallingName =\n Constants.BASH_PROGRAMMATIC_TOOL_CALLING;\n\nexport const BashProgrammaticToolCallingDescription = `\nRun tools via bash code. Tools are available as bash functions that accept JSON string arguments.\n\n${STATELESS_WARNING}\n\n${CORE_RULES}\n${ADDITIONAL_RULES}\n\nWhen to use: shell pipelines, parallel execution (& and wait), file processing, text manipulation.\n\n${EXAMPLES}\n`.trim();\n\nexport const BashProgrammaticToolCallingDefinition = {\n name: BashProgrammaticToolCallingName,\n description: BashProgrammaticToolCallingDescription,\n schema: BashProgrammaticToolCallingSchema,\n} as const;\n\nfunction maybeParseJsonResultString(result: unknown): unknown {\n if (typeof result !== 'string') {\n return result;\n }\n\n const trimmed = result.trim();\n if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) {\n return result;\n }\n\n try {\n return JSON.parse(trimmed) as unknown;\n } catch {\n return result;\n }\n}\n\nexport function normalizeBashToolResultsForReplay(\n toolResults: t.PTCToolResult[]\n): t.PTCToolResult[] {\n return toolResults.map((toolResult) => {\n if (toolResult.is_error) {\n return toolResult;\n }\n\n return {\n ...toolResult,\n result: maybeParseJsonResultString(toolResult.result),\n };\n });\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Normalizes a tool name to a valid bash function identifier.\n * 1. Replace hyphens, spaces, dots with underscores\n * 2. Remove any other invalid characters\n * 3. Prefix with underscore if starts with number\n * 4. Append `_tool` if it's a bash reserved word\n */\nexport function normalizeToBashIdentifier(name: string): string {\n let normalized = name.replace(/[-\\s.]/g, '_');\n normalized = normalized.replace(/[^a-zA-Z0-9_]/g, '');\n\n if (/^[0-9]/.test(normalized)) {\n normalized = '_' + normalized;\n }\n\n if (BASH_RESERVED.has(normalized)) {\n normalized = normalized + '_tool';\n }\n\n return normalized;\n}\n\n/**\n * Extracts tool names that are actually called in the bash code.\n * Bash functions are invoked as commands (no parentheses), so we match\n * the normalized name as a word boundary.\n */\nexport function extractUsedBashToolNames(\n code: string,\n toolNameMap: Map<string, string>\n): Set<string> {\n const usedTools = new Set<string>();\n\n for (const [bashName, originalName] of toolNameMap) {\n const escapedName = bashName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const pattern = new RegExp(`\\\\b${escapedName}\\\\b`, 'g');\n\n if (pattern.test(code)) {\n usedTools.add(originalName);\n }\n }\n\n return usedTools;\n}\n\n/**\n * Filters tool definitions to only include tools actually used in the bash code.\n */\nexport function filterBashToolsByUsage(\n toolDefs: t.LCTool[],\n code: string,\n debug = false\n): t.LCTool[] {\n const toolNameMap = new Map<string, string>();\n for (const def of toolDefs) {\n const bashName = normalizeToBashIdentifier(def.name);\n toolNameMap.set(bashName, def.name);\n }\n\n const usedToolNames = extractUsedBashToolNames(code, toolNameMap);\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(\n `[BashPTC Debug] Tool filtering: found ${usedToolNames.size}/${toolDefs.length} tools in code`\n );\n if (usedToolNames.size > 0) {\n // eslint-disable-next-line no-console\n console.log(\n `[BashPTC Debug] Matched tools: ${Array.from(usedToolNames).join(', ')}`\n );\n }\n }\n\n if (usedToolNames.size === 0) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(\n '[BashPTC Debug] No tools detected in code - sending all tools as fallback'\n );\n }\n return toolDefs;\n }\n\n return toolDefs.filter((def) => usedToolNames.has(def.name));\n}\n\n// ============================================================================\n// Tool Factory\n// ============================================================================\n\n/**\n * Creates a Bash Programmatic Tool Calling tool for multi-tool orchestration.\n *\n * This tool enables AI agents to write bash scripts that orchestrate multiple\n * tool calls programmatically via the remote Code API, reducing LLM round-trips.\n *\n * The tool map must be provided at runtime via config.toolCall (injected by ToolNode).\n */\nexport function createBashProgrammaticToolCallingTool(\n initParams: t.BashProgrammaticToolCallingParams = {}\n): DynamicStructuredTool {\n const baseUrl = initParams.baseUrl ?? getCodeBaseURL();\n const maxRoundTrips = initParams.maxRoundTrips ?? DEFAULT_MAX_ROUND_TRIPS;\n const maxRunTimeoutMs = resolveCodeApiRunTimeoutMs(initParams.runTimeoutMs);\n const proxy = initParams.proxy ?? process.env.PROXY;\n const debug = initParams.debug ?? process.env.BASH_PTC_DEBUG === 'true';\n const EXEC_ENDPOINT = `${baseUrl}/exec/programmatic`;\n\n return tool(\n async (rawParams, config) => {\n const params = rawParams as { code: string; timeout?: number };\n const { code } = params;\n const timeout = clampCodeApiRunTimeoutMs(params.timeout, maxRunTimeoutMs);\n\n const toolCall = (config.toolCall ?? {}) as ToolCall &\n Partial<t.ProgrammaticCache> & {\n session_id?: string;\n _injected_files?: t.CodeEnvFile[];\n _runtime_session_hint?: string;\n };\n const {\n toolMap,\n toolDefs,\n session_id,\n _injected_files,\n _runtime_session_hint,\n } = toolCall;\n\n if (toolMap == null || toolMap.size === 0) {\n throw new Error(\n 'No toolMap provided. ' +\n 'ToolNode should inject this from AgentContext when invoked through the graph.'\n );\n }\n\n if (toolDefs == null || toolDefs.length === 0) {\n throw new Error(\n 'No tool definitions provided. ' +\n 'Either pass tools in the input or ensure ToolNode injects toolDefs.'\n );\n }\n\n let roundTrip = 0;\n\n try {\n // ====================================================================\n // Phase 1: Filter tools and make initial request\n // ====================================================================\n\n const effectiveTools = filterBashToolsByUsage(toolDefs, code, debug);\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(\n `[BashPTC Debug] Sending ${effectiveTools.length} tools to API ` +\n `(filtered from ${toolDefs.length})`\n );\n }\n\n /* `/files/<session_id>` HTTP fallback removed — codeapi's\n * sessionAuth requires kind/id query params unavailable at\n * this point. See `CodeExecutor.ts` for full rationale. */\n let files: t.CodeEnvFile[] | undefined;\n if (_injected_files && _injected_files.length > 0) {\n files = _injected_files;\n } else if (session_id != null && session_id.length > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[BashProgrammaticToolCalling] No injected files for session_id=${session_id} — exec will run without input files`\n );\n }\n\n /* Stateful sessions: hint on the INITIAL request only (continuations\n * bind via continuation_token). Wire-only in v1 — BashPTC keeps its\n * stateless prompt. */\n const runtimeSessionHint =\n typeof _runtime_session_hint === 'string' &&\n _runtime_session_hint !== ''\n ? _runtime_session_hint\n : undefined;\n\n let response = await makeRequest(\n EXEC_ENDPOINT,\n {\n lang: 'bash',\n code,\n tools: effectiveTools,\n session_id,\n timeout,\n ...(files && files.length > 0 ? { files } : {}),\n ...(runtimeSessionHint != null\n ? { runtime_session_hint: runtimeSessionHint }\n : {}),\n },\n proxy,\n initParams.authHeaders\n );\n\n // ====================================================================\n // Phase 2: Handle response loop\n // ====================================================================\n\n while (response.status === 'tool_call_required') {\n roundTrip++;\n\n if (roundTrip > maxRoundTrips) {\n throw new Error(\n `Exceeded maximum round trips (${maxRoundTrips}). ` +\n 'This may indicate an infinite loop, excessive tool calls, ' +\n 'or a logic error in your code.'\n );\n }\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(\n `[BashPTC Debug] Round trip ${roundTrip}: ${response.tool_calls?.length ?? 0} tool(s) to execute`\n );\n }\n\n const toolResults = normalizeBashToolResultsForReplay(\n await executeTools(\n response.tool_calls ?? [],\n toolMap,\n Constants.BASH_PROGRAMMATIC_TOOL_CALLING\n )\n );\n\n response = await makeRequest(\n EXEC_ENDPOINT,\n {\n continuation_token: response.continuation_token,\n tool_results: toolResults,\n },\n proxy,\n initParams.authHeaders\n );\n }\n\n // ====================================================================\n // Phase 3: Handle final state\n // ====================================================================\n\n if (response.status === 'completed') {\n return formatCompletedResponse(response, code);\n }\n\n if (response.status === 'error') {\n throw new Error(buildCodeApiExecutionErrorMessage(response));\n }\n\n throw new CodeApiRequestError();\n } catch (error) {\n const messageWithReminder = appendFailedExecutionFileReminder(\n (error as Error).message,\n code\n );\n throw new Error(\n `Bash programmatic execution failed: ${messageWithReminder}`\n );\n }\n },\n {\n name: Constants.BASH_PROGRAMMATIC_TOOL_CALLING,\n description: BashProgrammaticToolCallingDescription,\n schema: createBashProgrammaticToolCallingSchema(maxRunTimeoutMs),\n responseFormat: Constants.CONTENT_AND_ARTIFACT,\n }\n );\n}\n"],"mappings":";;;;;;;;8BA0BO;AAMP,MAAM,0BAA0B;AAChC,MAAM,yBAAyBA,mBAAAA,2BAA2B;;AAG1D,MAAM,gBAAgB,IAAI,IAAI;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAMD,MAAM,oBAAoB;;;;AAK1B,MAAM,aAAa;;;;;;;IAOfC,qBAAAA,4BAA4B;IAC5BC,qBAAAA,oBAAoB;;AAGxB,MAAM,mBACJ;AAEF,MAAM,WAAW;;;;;;;;;;;AAYjB,MAAM,yBAAyB;;EAE7B,kBAAkB;;;;;EAKlB,SAAS;;EAET;AAMF,SAAgB,wCACd,kBAAkB,wBACiB;CACnC,OAAO;EACL,MAAM;EACN,YAAY;GACV,QAAQ,EAAE,GAAGC,kBAAAA,gBAAgB;GAC7B,MAAM;IACJ,MAAM;IACN,WAAW;IACX,aAAa;GACf;GACA,SAASC,mBAAAA,8BAA8B,eAAe;EACxD;EACA,UAAU,CAAC,MAAM;CACnB;AACF;AAEA,MAAa,oCACX,wCAAwC;AAE1C,MAAa,kCAAA;AAGb,MAAa,yCAAyC;;;EAGpD,kBAAkB;;EAElB,WAAW;EACX,iBAAiB;;;;EAIjB,SAAS;EACT,KAAK;AAEP,MAAa,wCAAwC;CACnD,MAAM;CACN,aAAa;CACb,QAAQ;AACV;AAEA,SAAS,2BAA2B,QAA0B;CAC5D,IAAI,OAAO,WAAW,UACpB,OAAO;CAGT,MAAM,UAAU,OAAO,KAAK;CAC5B,IAAI,CAAC,QAAQ,WAAW,GAAG,KAAK,CAAC,QAAQ,WAAW,GAAG,GACrD,OAAO;CAGT,IAAI;EACF,OAAO,KAAK,MAAM,OAAO;CAC3B,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,kCACd,aACmB;CACnB,OAAO,YAAY,KAAK,eAAe;EACrC,IAAI,WAAW,UACb,OAAO;EAGT,OAAO;GACL,GAAG;GACH,QAAQ,2BAA2B,WAAW,MAAM;EACtD;CACF,CAAC;AACH;;;;;;;;AAaA,SAAgB,0BAA0B,MAAsB;CAC9D,IAAI,aAAa,KAAK,QAAQ,WAAW,GAAG;CAC5C,aAAa,WAAW,QAAQ,kBAAkB,EAAE;CAEpD,IAAI,SAAS,KAAK,UAAU,GAC1B,aAAa,MAAM;CAGrB,IAAI,cAAc,IAAI,UAAU,GAC9B,aAAa,aAAa;CAG5B,OAAO;AACT;;;;;;AAOA,SAAgB,yBACd,MACA,aACa;CACb,MAAM,4BAAY,IAAI,IAAY;CAElC,KAAK,MAAM,CAAC,UAAU,iBAAiB,aAAa;EAClD,MAAM,cAAc,SAAS,QAAQ,uBAAuB,MAAM;EAGlE,IAAI,IAFgB,OAAO,MAAM,YAAY,MAAM,GAEzC,CAAC,CAAC,KAAK,IAAI,GACnB,UAAU,IAAI,YAAY;CAE9B;CAEA,OAAO;AACT;;;;AAKA,SAAgB,uBACd,UACA,MACA,QAAQ,OACI;CACZ,MAAM,8BAAc,IAAI,IAAoB;CAC5C,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,WAAW,0BAA0B,IAAI,IAAI;EACnD,YAAY,IAAI,UAAU,IAAI,IAAI;CACpC;CAEA,MAAM,gBAAgB,yBAAyB,MAAM,WAAW;CAEhE,IAAI,OAAO;EAET,QAAQ,IACN,yCAAyC,cAAc,KAAK,GAAG,SAAS,OAAO,eACjF;EACA,IAAI,cAAc,OAAO,GAEvB,QAAQ,IACN,kCAAkC,MAAM,KAAK,aAAa,CAAC,CAAC,KAAK,IAAI,GACvE;CAEJ;CAEA,IAAI,cAAc,SAAS,GAAG;EAC5B,IAAI,OAEF,QAAQ,IACN,2EACF;EAEF,OAAO;CACT;CAEA,OAAO,SAAS,QAAQ,QAAQ,cAAc,IAAI,IAAI,IAAI,CAAC;AAC7D;;;;;;;;;AAcA,SAAgB,sCACd,aAAkD,CAAC,GAC5B;CACvB,MAAM,UAAU,WAAW,WAAWC,qBAAAA,eAAe;CACrD,MAAM,gBAAgB,WAAW,iBAAiB;CAClD,MAAM,kBAAkBL,mBAAAA,2BAA2B,WAAW,YAAY;CAC1E,MAAM,QAAQ,WAAW,SAAS,QAAQ,IAAI;CAC9C,MAAM,QAAQ,WAAW,SAAS,QAAQ,IAAI,mBAAmB;CACjE,MAAM,gBAAgB,GAAG,QAAQ;CAEjC,QAAA,GAAA,sBAAA,KAAA,CACE,OAAO,WAAW,WAAW;EAC3B,MAAM,SAAS;EACf,MAAM,EAAE,SAAS;EACjB,MAAM,UAAUM,mBAAAA,yBAAyB,OAAO,SAAS,eAAe;EAQxE,MAAM,EACJ,SACA,UACA,YACA,iBACA,0BAXgB,OAAO,YAAY,CAAC;EActC,IAAI,WAAW,QAAQ,QAAQ,SAAS,GACtC,MAAM,IAAI,MACR,oGAEF;EAGF,IAAI,YAAY,QAAQ,SAAS,WAAW,GAC1C,MAAM,IAAI,MACR,mGAEF;EAGF,IAAI,YAAY;EAEhB,IAAI;GAKF,MAAM,iBAAiB,uBAAuB,UAAU,MAAM,KAAK;GAEnE,IAAI,OAEF,QAAQ,IACN,2BAA2B,eAAe,OAAO,+BAC7B,SAAS,OAAO,EACtC;GAMF,IAAI;GACJ,IAAI,mBAAmB,gBAAgB,SAAS,GAC9C,QAAQ;QACH,IAAI,cAAc,QAAQ,WAAW,SAAS,GAEnD,QAAQ,MACN,kEAAkE,WAAW,qCAC/E;GAMF,MAAM,qBACJ,OAAO,0BAA0B,YACjC,0BAA0B,KACtB,wBACA,KAAA;GAEN,IAAI,WAAW,MAAMC,gCAAAA,YACnB,eACA;IACE,MAAM;IACN;IACA,OAAO;IACP;IACA;IACA,GAAI,SAAS,MAAM,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;IAC7C,GAAI,sBAAsB,OACtB,EAAE,sBAAsB,mBAAmB,IAC3C,CAAC;GACP,GACA,OACA,WAAW,WACb;GAMA,OAAO,SAAS,WAAW,sBAAsB;IAC/C;IAEA,IAAI,YAAY,eACd,MAAM,IAAI,MACR,iCAAiC,cAAc,4FAGjD;IAGF,IAAI,OAEF,QAAQ,IACN,8BAA8B,UAAU,IAAI,SAAS,YAAY,UAAU,EAAE,oBAC/E;IAGF,MAAM,cAAc,kCAClB,MAAMC,gCAAAA,aACJ,SAAS,cAAc,CAAC,GACxB,SAAA,qBAEF,CACF;IAEA,WAAW,MAAMD,gCAAAA,YACf,eACA;KACE,oBAAoB,SAAS;KAC7B,cAAc;IAChB,GACA,OACA,WAAW,WACb;GACF;GAMA,IAAI,SAAS,WAAW,aACtB,OAAOE,gCAAAA,wBAAwB,UAAU,IAAI;GAG/C,IAAI,SAAS,WAAW,SACtB,MAAM,IAAI,MAAMC,qBAAAA,kCAAkC,QAAQ,CAAC;GAG7D,MAAM,IAAIC,qBAAAA,oBAAoB;EAChC,SAAS,OAAO;GACd,MAAM,sBAAsBC,qBAAAA,kCACzB,MAAgB,SACjB,IACF;GACA,MAAM,IAAI,MACR,uCAAuC,qBACzC;EACF;CACF,GACA;EACE,MAAA;EACA,aAAa;EACb,QAAQ,wCAAwC,eAAe;EAC/D,gBAAA;CACF,CACF;AACF"}
1
+ {"version":3,"file":"BashProgrammaticToolCalling.cjs","names":["resolveCodeApiRunTimeoutMs","CODE_ARTIFACT_PATH_GUIDANCE","BASH_SHELL_GUIDANCE","INTENT_PROPERTY","createCodeApiRunTimeoutSchema","getCodeBaseURL","clampCodeApiRunTimeoutMs","makeRequest","executeTools","formatCompletedResponse","buildCodeApiExecutionErrorMessage","CodeApiRequestError","appendFailedExecutionFileReminder"],"sources":["../../../src/tools/BashProgrammaticToolCalling.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Calculator.cjs","names":["Tool","math"],"sources":["../../../src/tools/Calculator.ts"],"sourcesContent":["import * as math from 'mathjs';\nimport { Tool } from '@langchain/core/tools';\n\nexport const CalculatorToolName = 'calculator';\n\nexport const CalculatorToolDescription =\n 'Useful for getting the result of a math expression. The input to this tool should be a valid mathematical expression that could be executed by a simple calculator.';\n\nexport const CalculatorSchema = {\n type: 'object',\n properties: {\n input: {\n type: 'string',\n description: 'A valid mathematical expression to evaluate',\n },\n },\n required: ['input'],\n} as const;\n\nexport const CalculatorToolDefinition = {\n name: CalculatorToolName,\n description: CalculatorToolDescription,\n schema: CalculatorSchema,\n} as const;\n\nexport class Calculator extends Tool {\n static lc_name(): string {\n return 'Calculator';\n }\n\n get lc_namespace(): string[] {\n return [...super.lc_namespace, 'calculator'];\n }\n\n name = CalculatorToolName;\n\n async _call(input: string): Promise<string> {\n try {\n return math.evaluate(input).toString();\n } catch {\n return 'I don\\'t know how to do that.';\n }\n }\n\n description = CalculatorToolDescription;\n}\n"],"mappings":";;;;;AAGA,MAAa,qBAAqB;AAElC,MAAa,4BACX;AAEF,MAAa,mBAAmB;CAC9B,MAAM;CACN,YAAY,EACV,OAAO;EACL,MAAM;EACN,aAAa;CACf,EACF;CACA,UAAU,CAAC,OAAO;AACpB;AAEA,MAAa,2BAA2B;CACtC,MAAM;CACN,aAAa;CACb,QAAQ;AACV;AAEA,IAAa,aAAb,cAAgCA,sBAAAA,KAAK;CACnC,OAAO,UAAkB;EACvB,OAAO;CACT;CAEA,IAAI,eAAyB;EAC3B,OAAO,CAAC,GAAG,MAAM,cAAc,YAAY;CAC7C;CAEA,OAAO;CAEP,MAAM,MAAM,OAAgC;EAC1C,IAAI;GACF,OAAOC,OAAK,SAAS,KAAK,CAAC,CAAC,SAAS;EACvC,QAAQ;GACN,OAAO;EACT;CACF;CAEA,cAAc;AAChB"}
1
+ {"version":3,"file":"Calculator.cjs","names":["Tool","math"],"sources":["../../../src/tools/Calculator.ts"],"mappings":";;;;;AAGA,MAAa,qBAAqB;AAElC,MAAa,4BACX;AAEF,MAAa,mBAAmB;CAC9B,MAAM;CACN,YAAY,EACV,OAAO;EACL,MAAM;EACN,aAAa;CACf,EACF;CACA,UAAU,CAAC,OAAO;AACpB;AAEA,MAAa,2BAA2B;CACtC,MAAM;CACN,aAAa;CACb,QAAQ;AACV;AAEA,IAAa,aAAb,cAAgCA,sBAAAA,KAAK;CACnC,OAAO,UAAkB;EACvB,OAAO;CACT;CAEA,IAAI,eAAyB;EAC3B,OAAO,CAAC,GAAG,MAAM,cAAc,YAAY;CAC7C;CAEA,OAAO;CAEP,MAAM,MAAM,OAAgC;EAC1C,IAAI;GACF,OAAOC,OAAK,SAAS,KAAK,CAAC,CAAC,SAAS;EACvC,QAAQ;GACN,OAAO;EACT;CACF;CAEA,cAAc;AAChB"}
@@ -153,14 +153,6 @@ Usage:
153
153
  - ${CODE_ARTIFACT_PATH_GUIDANCE}
154
154
  - NEVER use this tool to execute malicious code.
155
155
  `.trim();
156
- /**
157
- * Statefulness here is FILESYSTEM-tier, not runtime-tier. Executions in a
158
- * session reuse one warm machine, so `/mnt/data` carries across calls — but
159
- * every execution is a brand-new interpreter process in a fresh sandbox, so
160
- * variables and imports never survive. The note must not imply otherwise: a
161
- * model told its in-memory state persists writes `df = ...` in one call and
162
- * `df.head()` in the next, then hits a NameError it was told to treat as rare.
163
- */
164
156
  const STATEFUL_ENV_NOTE = "Session state: executions in this conversation run on the same warm machine, so files persist between calls — but each execution is a NEW process. Variables, imports, and in-memory data NEVER carry over: every call must re-import and rebuild the state it needs. Only /mnt/data is durable (the machine itself may also be reset at any time), so write anything that must survive there and read it back next call.";
165
157
  const StatefulCodeExecutionToolDescription = `
166
158
  Runs code and returns stdout/stderr output. Executions in this conversation share one warm machine with a persistent /mnt/data, but each execution runs as a separate process (not a notebook-style kernel).
@@ -202,11 +194,6 @@ function createCodeExecutionTool(params = {}) {
202
194
  return (0, _langchain_core_tools.tool)(async (rawInput, config) => {
203
195
  const { authHeaders, statefulSessions: _statefulSessions, ...executionParams } = params ?? {};
204
196
  const { lang, code, intent: _ignoredIntent, runtime_session_hint: _ignoredModelHint, ...rest } = rawInput;
205
- /**
206
- * Extract session context from config.toolCall (injected by ToolNode).
207
- * - session_id: associates with the previous run.
208
- * - _injected_files: File refs to pass directly (avoids /files endpoint race condition).
209
- */
210
197
  const { session_id, _injected_files, _runtime_session_hint } = config.toolCall ?? {};
211
198
  const postData = {
212
199
  lang,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeExecutor.cjs","names":["INTENT_PROPERTY","resolveFetchProxyAgent","appendCodeSessionFileSummary"],"sources":["../../../src/tools/CodeExecutor.ts"],"sourcesContent":["import { config } from 'dotenv';\nimport fetch, { RequestInit } from 'node-fetch';\nimport { getEnvironmentVariable } from '@langchain/core/utils/env';\nimport { tool, DynamicStructuredTool } from '@langchain/core/tools';\nimport type * as t from '@/types';\nimport { appendCodeSessionFileSummary } from '@/tools/CodeSessionFileSummary';\nimport { resolveFetchProxyAgent } from '@/utils/proxy';\nimport { INTENT_PROPERTY } from '@/tools/intentArg';\nimport { EnvVar, Constants } from '@/common';\n\nexport {\n appendCodeSessionFileSummary,\n stripCodeSessionFileSummary,\n} from '@/tools/CodeSessionFileSummary';\n\nconfig();\n\nexport const getCodeBaseURL = (): string =>\n getEnvironmentVariable(EnvVar.CODE_BASEURL) ??\n Constants.OFFICIAL_CODE_BASEURL;\n\nexport const emptyOutputMessage =\n 'stdout: Empty. Ensure you\\'re writing output explicitly.\\n';\n\nexport const CODE_ARTIFACT_PATH_GUIDANCE =\n 'Anything a later call needs (data, helper scripts/modules, partial results) MUST be written under `/mnt/data` in the same call that produces it; `/tmp` never survives the call. `/mnt/data` keeps files with recognized extensions, covering common source, text, data, document, image, and archive formats (.py/.sh/.sql/.md/.json/.csv/.parquet/.png/.pdf/.zip and similar); extensionless or unusual extensions are not kept. Failed executions register nothing; fix the error and rerun before relying on new files.';\n\nexport const BASH_SHELL_GUIDANCE =\n 'Bash: multi-line files use heredoc/printf; run Python via python3 -c/heredoc, not bare Python.';\n\nconst TMP_PATH_PATTERN = /(^|[^A-Za-z0-9_])\\/tmp(?:\\/|\\b)/;\nconst MNT_DATA_PATH_PATTERN = /(^|[^A-Za-z0-9_])\\/mnt\\/data(?:\\/|\\b)/;\n\nexport const TMP_SCRATCH_OUTPUT_REMINDER =\n 'Note: /tmp files are same-call scratch only and were not persisted; use /mnt/data for files needed later.';\n\nexport const FAILED_EXECUTION_FILE_REMINDER =\n 'Note: any files written during this failed call were not registered for later calls; fix the error and rerun before relying on them.';\n\nexport function appendTmpScratchReminder(output: string, code: string): string {\n if (!TMP_PATH_PATTERN.test(code)) {\n return output;\n }\n return `${output.trimEnd()}\\n${TMP_SCRATCH_OUTPUT_REMINDER}\\n`;\n}\n\nexport function appendFailedExecutionFileReminder(\n output: string,\n code: string\n): string {\n if (\n !MNT_DATA_PATH_PATTERN.test(code) ||\n output.includes(FAILED_EXECUTION_FILE_REMINDER)\n ) {\n return output;\n }\n return `${output.trimEnd()}\\n${FAILED_EXECUTION_FILE_REMINDER}\\n`;\n}\n\nconst SUPPORTED_LANGUAGES = [\n 'py',\n 'js',\n 'ts',\n 'c',\n 'cpp',\n 'java',\n 'php',\n 'rs',\n 'go',\n 'd',\n 'f90',\n 'r',\n 'bash',\n] as const;\n\nexport const CodeExecutionToolSchema = {\n type: 'object',\n properties: {\n intent: { ...INTENT_PROPERTY },\n lang: {\n type: 'string',\n enum: SUPPORTED_LANGUAGES,\n description:\n 'The programming language or runtime to execute the code in.',\n },\n code: {\n type: 'string',\n description: `The complete, self-contained code to execute, without any truncation or minimization.\n- The environment is stateless; variables and imports don't persist between executions.\n- Prior /mnt/data files are available and can be modified in place.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- Input code **IS ALREADY** displayed to the user, so **DO NOT** repeat it in your response unless asked.\n- Output code **IS NOT** displayed to the user, so **DO** write all desired output explicitly.\n- IMPORTANT: You MUST explicitly print/output ALL results you want the user to see.\n- py: This is not a Jupyter notebook environment. Use \\`print()\\` for all outputs.\n- py: Matplotlib: Use \\`plt.savefig()\\` to save plots as files.\n- js: use the \\`console\\` or \\`process\\` methods for all outputs.\n- r: IMPORTANT: No X11 display available. ALL graphics MUST use Cairo library (library(Cairo)).\n- Other languages: use appropriate output functions.`,\n },\n args: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Additional arguments to execute the code with. This should only be used if the input code requires additional arguments to run.',\n },\n },\n required: ['lang', 'code'],\n} as const;\n\nconst baseEndpoint = getCodeBaseURL();\nconst EXEC_ENDPOINT = `${baseEndpoint}/exec`;\n\ntype SupportedLanguage = (typeof SUPPORTED_LANGUAGES)[number];\n\nconst MAX_RETRY_AFTER_SECONDS = 3600;\n\nexport const CODE_API_UNAVAILABLE_ERROR_MESSAGE =\n 'Code execution is temporarily unavailable. Please retry.';\nexport const CODE_API_AUTHORIZATION_ERROR_MESSAGE =\n 'Code execution is not authorized. Verify access before trying again.';\nexport const CODE_API_EXECUTION_FAILED_ERROR_MESSAGE = 'Code execution failed.';\nexport const CODE_API_INVALID_REQUEST_ERROR_MESSAGE =\n 'The code execution request was rejected. Please check the tool input and try again.';\nexport const CODE_API_RATE_LIMITED_ERROR_MESSAGE =\n 'Code execution is temporarily rate-limited. Please retry shortly.';\n\nconst SAFE_CODE_API_EXECUTION_ERROR_DETAILS: Readonly<\n Partial<Record<string, string>>\n> = {\n 'Execution failed or timed out': 'Execution failed or timed out.',\n 'Out of memory': 'Execution exceeded the memory limit.',\n 'Time limit exceeded': 'Execution exceeded the time limit.',\n 'sandbox emitted an empty pending tool call block; aborting to avoid a tight retry loop':\n 'Generated code emitted an invalid empty tool request.',\n 'stderr length exceeded': 'Execution error output exceeded the size limit.',\n 'stdout length exceeded': 'Execution output exceeded the size limit.',\n};\n\nexport class CodeApiRequestError extends Error {\n constructor(message = CODE_API_UNAVAILABLE_ERROR_MESSAGE) {\n super(message);\n this.name = 'CodeApiRequestError';\n }\n}\n\nfunction getRetryAfterSeconds(responseBody: string): number | undefined {\n try {\n const parsed = JSON.parse(responseBody) as {\n error?: unknown;\n retry_after_seconds?: unknown;\n };\n if (\n parsed.error !== 'rate_limited' ||\n typeof parsed.retry_after_seconds !== 'number' ||\n !Number.isFinite(parsed.retry_after_seconds) ||\n parsed.retry_after_seconds <= 0\n ) {\n return undefined;\n }\n return Math.min(\n Math.ceil(parsed.retry_after_seconds),\n MAX_RETRY_AFTER_SECONDS\n );\n } catch {\n return undefined;\n }\n}\n\nexport function normalizeCodeApiRequestError(\n error: unknown\n): CodeApiRequestError {\n return error instanceof CodeApiRequestError\n ? error\n : new CodeApiRequestError();\n}\n\nfunction getSafeCodeApiExecutionErrorDetail(\n error: unknown\n): string | undefined {\n if (typeof error !== 'string') {\n return undefined;\n }\n const exactMatch = SAFE_CODE_API_EXECUTION_ERROR_DETAILS[error];\n if (exactMatch != null) {\n return exactMatch;\n }\n if (/^Sandbox exited with code (?:-?\\d{1,4}|unknown)$/.test(error)) {\n return error.replace(/^Sandbox/, 'Execution');\n }\n if (/^Sandbox requested an unregistered tool: .+$/.test(error)) {\n return 'Generated code requested a tool that is not available.';\n }\n return undefined;\n}\n\nexport function buildCodeApiExecutionErrorMessage(response: {\n error?: unknown;\n stderr?: unknown;\n}): string {\n const safeDetail = getSafeCodeApiExecutionErrorDetail(response.error);\n const message =\n safeDetail != null\n ? `${CODE_API_EXECUTION_FAILED_ERROR_MESSAGE} ${safeDetail}`\n : CODE_API_EXECUTION_FAILED_ERROR_MESSAGE;\n if (typeof response.stderr === 'string' && response.stderr !== '') {\n return `${message}\\n\\nStderr:\\n${response.stderr}`;\n }\n return message;\n}\n\nexport async function resolveCodeApiAuthHeaders(\n authHeaders?: t.CodeApiAuthHeaders\n): Promise<t.CodeApiAuthHeaderMap> {\n if (authHeaders == null) {\n return {};\n }\n if (typeof authHeaders === 'function') {\n try {\n const resolvedHeaders = await authHeaders();\n return resolvedHeaders;\n } catch {\n throw new CodeApiRequestError(CODE_API_AUTHORIZATION_ERROR_MESSAGE);\n }\n }\n return authHeaders;\n}\n\nexport async function buildCodeApiHttpErrorMessage(\n _method: string,\n _endpoint: string,\n response: { status: number; text: () => Promise<string> }\n): Promise<string> {\n let responseBody = '';\n try {\n responseBody = await response.text();\n } catch {\n responseBody = '';\n }\n if (response.status === 429) {\n const retryAfterSeconds = getRetryAfterSeconds(responseBody);\n return retryAfterSeconds != null\n ? `Code execution is temporarily rate-limited. Retry after ${retryAfterSeconds} seconds.`\n : CODE_API_RATE_LIMITED_ERROR_MESSAGE;\n }\n if (response.status === 401 || response.status === 403) {\n return CODE_API_AUTHORIZATION_ERROR_MESSAGE;\n }\n if (response.status === 400 || response.status === 422) {\n return CODE_API_INVALID_REQUEST_ERROR_MESSAGE;\n }\n return CODE_API_UNAVAILABLE_ERROR_MESSAGE;\n}\n\nexport const CodeExecutionToolDescription = `\nRuns code and returns stdout/stderr output from a stateless execution environment, similar to running scripts in a command-line interface. Each execution is isolated and independent.\n\nUsage:\n- No network access available.\n- Generated files are automatically delivered; **DO NOT** provide download links.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- NEVER use this tool to execute malicious code.\n`.trim();\n\n/**\n * Statefulness here is FILESYSTEM-tier, not runtime-tier. Executions in a\n * session reuse one warm machine, so `/mnt/data` carries across calls — but\n * every execution is a brand-new interpreter process in a fresh sandbox, so\n * variables and imports never survive. The note must not imply otherwise: a\n * model told its in-memory state persists writes `df = ...` in one call and\n * `df.head()` in the next, then hits a NameError it was told to treat as rare.\n */\nexport const STATEFUL_ENV_NOTE =\n 'Session state: executions in this conversation run on the same warm machine, so files persist between calls — but each execution is a NEW process. Variables, imports, and in-memory data NEVER carry over: every call must re-import and rebuild the state it needs. Only /mnt/data is durable (the machine itself may also be reset at any time), so write anything that must survive there and read it back next call.';\n\nexport const StatefulCodeExecutionToolDescription = `\nRuns code and returns stdout/stderr output. Executions in this conversation share one warm machine with a persistent /mnt/data, but each execution runs as a separate process (not a notebook-style kernel).\n\n${STATEFUL_ENV_NOTE}\n\nUsage:\n- No network access available.\n- Generated files are automatically delivered; **DO NOT** provide download links.\n- ${CODE_ARTIFACT_PATH_GUIDANCE}\n- NEVER use this tool to execute malicious code.\n`.trim();\n\nexport function buildCodeExecutionToolDescription(opts?: {\n statefulSessions?: boolean;\n}): string {\n return opts?.statefulSessions === true\n ? StatefulCodeExecutionToolDescription\n : CodeExecutionToolDescription;\n}\n\nconst STATELESS_CODE_PARAM_NOTE =\n 'The environment is stateless; variables and imports don\\'t persist between executions.';\nconst STATEFUL_CODE_PARAM_NOTE =\n 'Executions in this conversation share one warm machine, so files written to /mnt/data persist between calls. Each execution is a new process: variables and imports do NOT carry over — re-import and reload from /mnt/data every call.';\n\nexport function buildCodeExecutionToolSchema(opts?: {\n statefulSessions?: boolean;\n}): typeof CodeExecutionToolSchema {\n const note =\n opts?.statefulSessions === true\n ? STATEFUL_CODE_PARAM_NOTE\n : STATELESS_CODE_PARAM_NOTE;\n const codeDescription =\n CodeExecutionToolSchema.properties.code.description.replace(\n STATELESS_CODE_PARAM_NOTE,\n note\n );\n return {\n ...CodeExecutionToolSchema,\n properties: {\n ...CodeExecutionToolSchema.properties,\n code: {\n ...CodeExecutionToolSchema.properties.code,\n description: codeDescription,\n },\n },\n } as typeof CodeExecutionToolSchema;\n}\n\nexport const CodeExecutionToolName = Constants.EXECUTE_CODE;\n\nexport const CodeExecutionToolDefinition = {\n name: CodeExecutionToolName,\n description: CodeExecutionToolDescription,\n schema: CodeExecutionToolSchema,\n} as const;\n\nfunction createCodeExecutionTool(\n params: t.CodeExecutionToolParams | null = {}\n): DynamicStructuredTool {\n return tool(\n async (rawInput, config) => {\n /* `statefulSessions` is a prompt-only flag (drives the description);\n * keep it out of the wire body. */\n const {\n authHeaders,\n statefulSessions: _statefulSessions,\n ...executionParams\n } = params ?? {};\n void _statefulSessions;\n /* Drop any model-supplied `runtime_session_hint` from the raw args: the\n * hint is host-controlled and must only ever come from ToolNode's\n * injected `_runtime_session_hint` (below). Spreading `...rest` into\n * postData would otherwise let a tool call opt itself into / pick a\n * stateful runtime even when statefulSessions is off. */\n /* `intent` is a UI display label — never part of the wire body. */\n const {\n lang,\n code,\n intent: _ignoredIntent,\n runtime_session_hint: _ignoredModelHint,\n ...rest\n } = rawInput as {\n lang: SupportedLanguage;\n code: string;\n intent?: unknown;\n runtime_session_hint?: unknown;\n args?: string[];\n };\n void _ignoredModelHint;\n void _ignoredIntent;\n /**\n * Extract session context from config.toolCall (injected by ToolNode).\n * - session_id: associates with the previous run.\n * - _injected_files: File refs to pass directly (avoids /files endpoint race condition).\n */\n const { session_id, _injected_files, _runtime_session_hint } =\n (config.toolCall ?? {}) as {\n session_id?: string;\n _injected_files?: t.CodeEnvFile[];\n _runtime_session_hint?: string;\n };\n\n const postData: Record<string, unknown> = {\n lang,\n code,\n ...rest,\n ...executionParams,\n };\n\n /* Stateful sessions: forward the hint so the Code API can route this\n * execution to a warm per-session runtime. Additive — stateless\n * servers ignore the unknown field. */\n if (\n typeof _runtime_session_hint === 'string' &&\n _runtime_session_hint !== ''\n ) {\n postData.runtime_session_hint = _runtime_session_hint;\n }\n\n /* File injection: `_injected_files` from ToolNode (set when host\n * primes a CodeSessionContext) or `params.files` from tool\n * factory (set by hosts that pre-resolve at construction time).\n * The legacy `/files/<session_id>` HTTP fallback was removed —\n * codeapi's `sessionAuth` middleware now requires kind/id query\n * params the tool can't supply at this point, so the fetch 400'd\n * silently and the catch swallowed the failure. */\n if (_injected_files && _injected_files.length > 0) {\n postData.files = _injected_files;\n } else if (\n session_id != null &&\n session_id.length > 0 &&\n !Array.isArray(postData.files)\n ) {\n // eslint-disable-next-line no-console\n console.debug(\n `[CodeExecutor] No injected files for session_id=${session_id} — exec will run without input files`\n );\n }\n\n try {\n const resolvedAuthHeaders =\n await resolveCodeApiAuthHeaders(authHeaders);\n const fetchOptions: RequestInit = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'LibreChat/1.0',\n ...resolvedAuthHeaders,\n },\n body: JSON.stringify(postData),\n };\n\n const proxyAgent = resolveFetchProxyAgent(EXEC_ENDPOINT);\n if (proxyAgent) {\n fetchOptions.agent = proxyAgent;\n }\n const response = await fetch(EXEC_ENDPOINT, fetchOptions);\n if (!response.ok) {\n throw new CodeApiRequestError(\n await buildCodeApiHttpErrorMessage('POST', EXEC_ENDPOINT, response)\n );\n }\n\n const result: t.ExecuteResult = await response.json();\n let formattedOutput = '';\n if (result.stdout) {\n formattedOutput += `stdout:\\n${result.stdout}\\n`;\n } else {\n formattedOutput += emptyOutputMessage;\n }\n if (result.stderr) formattedOutput += `stderr:\\n${result.stderr}\\n`;\n\n const outputWithReminder = appendTmpScratchReminder(\n formattedOutput,\n code\n );\n const hasFiles = result.files != null && result.files.length > 0;\n /* Echo the durable runtime session (stateful backends only) so hosts\n * can surface a \"session active / was reset\" signal later. Additive:\n * absent on stateless servers. */\n const runtimeEcho =\n result.runtime_session_id != null\n ? {\n runtime_session_id: result.runtime_session_id,\n runtime_status: result.runtime_status,\n }\n : {};\n return [\n appendCodeSessionFileSummary(outputWithReminder, result.files),\n (hasFiles\n ? {\n session_id: result.session_id,\n files: result.files,\n ...runtimeEcho,\n }\n : {\n session_id: result.session_id,\n ...runtimeEcho,\n }) satisfies t.CodeExecutionArtifact,\n ];\n } catch (error) {\n const messageWithReminder = appendFailedExecutionFileReminder(\n normalizeCodeApiRequestError(error).message,\n code\n );\n throw new Error(`Execution error:\\n\\n${messageWithReminder}`);\n }\n },\n {\n name: CodeExecutionToolName,\n description: buildCodeExecutionToolDescription(params ?? undefined),\n schema: buildCodeExecutionToolSchema(params ?? undefined),\n responseFormat: Constants.CONTENT_AND_ARTIFACT,\n }\n );\n}\n\nexport { createCodeExecutionTool };\n"],"mappings":"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"}
1
+ {"version":3,"file":"CodeExecutor.cjs","names":["INTENT_PROPERTY","resolveFetchProxyAgent","appendCodeSessionFileSummary"],"sources":["../../../src/tools/CodeExecutor.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSessionFileSummary.cjs","names":[],"sources":["../../../src/tools/CodeSessionFileSummary.ts"],"sourcesContent":["import type * as t from '@/types';\n\nconst IMAGE_FILE_EXTENSIONS = new Set([\n '.avif',\n '.bmp',\n '.gif',\n '.ico',\n '.jpeg',\n '.jpg',\n '.png',\n '.tif',\n '.tiff',\n '.webp',\n]);\n\nconst CODE_SESSION_FILE_SUMMARY_PATTERN =\n /^Generated files:\\nSession files: \\d+ persisted file\\(s\\) are available in \\/mnt\\/data, including \\d+ image\\(s\\)\\. Use known \\/mnt\\/data paths directly in later code-tool calls\\. The app displays files\\/images automatically; do not invent download links or wrap generated images in Markdown\\.$/;\n\nfunction getFileExtension(name: string): string {\n const lastSlash = name.lastIndexOf('/');\n const basename = lastSlash >= 0 ? name.slice(lastSlash + 1) : name;\n const lastDot = basename.lastIndexOf('.');\n return lastDot >= 0 ? basename.slice(lastDot).toLowerCase() : '';\n}\n\nfunction isImageFile(file: Partial<t.FileRef> | null | undefined): boolean {\n const name = file?.name;\n return (\n typeof name === 'string' &&\n IMAGE_FILE_EXTENSIONS.has(getFileExtension(name))\n );\n}\n\nfunction buildCodeSessionFileSummary(\n fileCount: number,\n imageCount: number\n): string {\n return (\n 'Generated files:\\n' +\n `Session files: ${fileCount} persisted file(s) are available in /mnt/data, including ${imageCount} image(s). ` +\n 'Use known /mnt/data paths directly in later code-tool calls. ' +\n 'The app displays files/images automatically; do not invent download links or wrap generated images in Markdown.'\n );\n}\n\nfunction isGeneratedFile(file: Partial<t.FileRef> | null | undefined): boolean {\n return file?.inherited !== true;\n}\n\nexport function stripCodeSessionFileSummary(output: string): string {\n const summaryStart = output.lastIndexOf('Generated files:');\n if (summaryStart < 0) return output;\n const beforeSummary = output.slice(0, summaryStart);\n if (beforeSummary !== '' && !beforeSummary.endsWith('\\n\\n')) return output;\n const maybeSummary = output.slice(summaryStart);\n if (!CODE_SESSION_FILE_SUMMARY_PATTERN.test(maybeSummary)) return output;\n return beforeSummary.trimEnd();\n}\n\nexport function appendCodeSessionFileSummary(\n output: string,\n files: t.FileRefs | undefined\n): string {\n if (files == null || files.length === 0) {\n return output.trim();\n }\n\n const generatedFiles = files.filter(isGeneratedFile);\n if (generatedFiles.length === 0) {\n return output.trim();\n }\n\n const imageCount = generatedFiles.filter(isImageFile).length;\n const summary = buildCodeSessionFileSummary(\n generatedFiles.length,\n imageCount\n );\n\n return `${output.trimEnd()}\\n\\n${summary}`.trim();\n}\n"],"mappings":";AAEA,MAAM,wBAAwB,IAAI,IAAI;CACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oCACJ;AAEF,SAAS,iBAAiB,MAAsB;CAC9C,MAAM,YAAY,KAAK,YAAY,GAAG;CACtC,MAAM,WAAW,aAAa,IAAI,KAAK,MAAM,YAAY,CAAC,IAAI;CAC9D,MAAM,UAAU,SAAS,YAAY,GAAG;CACxC,OAAO,WAAW,IAAI,SAAS,MAAM,OAAO,CAAC,CAAC,YAAY,IAAI;AAChE;AAEA,SAAS,YAAY,MAAsD;CACzE,MAAM,OAAO,MAAM;CACnB,OACE,OAAO,SAAS,YAChB,sBAAsB,IAAI,iBAAiB,IAAI,CAAC;AAEpD;AAEA,SAAS,4BACP,WACA,YACQ;CACR,OACE;iBACkB,UAAU,2DAA2D,WAAW;AAItG;AAEA,SAAS,gBAAgB,MAAsD;CAC7E,OAAO,MAAM,cAAc;AAC7B;AAEA,SAAgB,4BAA4B,QAAwB;CAClE,MAAM,eAAe,OAAO,YAAY,kBAAkB;CAC1D,IAAI,eAAe,GAAG,OAAO;CAC7B,MAAM,gBAAgB,OAAO,MAAM,GAAG,YAAY;CAClD,IAAI,kBAAkB,MAAM,CAAC,cAAc,SAAS,MAAM,GAAG,OAAO;CACpE,MAAM,eAAe,OAAO,MAAM,YAAY;CAC9C,IAAI,CAAC,kCAAkC,KAAK,YAAY,GAAG,OAAO;CAClE,OAAO,cAAc,QAAQ;AAC/B;AAEA,SAAgB,6BACd,QACA,OACQ;CACR,IAAI,SAAS,QAAQ,MAAM,WAAW,GACpC,OAAO,OAAO,KAAK;CAGrB,MAAM,iBAAiB,MAAM,OAAO,eAAe;CACnD,IAAI,eAAe,WAAW,GAC5B,OAAO,OAAO,KAAK;CAGrB,MAAM,aAAa,eAAe,OAAO,WAAW,CAAC,CAAC;CACtD,MAAM,UAAU,4BACd,eAAe,QACf,UACF;CAEA,OAAO,GAAG,OAAO,QAAQ,EAAE,MAAM,UAAU,KAAK;AAClD"}
1
+ {"version":3,"file":"CodeSessionFileSummary.cjs","names":[],"sources":["../../../src/tools/CodeSessionFileSummary.ts"],"mappings":";AAEA,MAAM,wBAAwB,IAAI,IAAI;CACpC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oCACJ;AAEF,SAAS,iBAAiB,MAAsB;CAC9C,MAAM,YAAY,KAAK,YAAY,GAAG;CACtC,MAAM,WAAW,aAAa,IAAI,KAAK,MAAM,YAAY,CAAC,IAAI;CAC9D,MAAM,UAAU,SAAS,YAAY,GAAG;CACxC,OAAO,WAAW,IAAI,SAAS,MAAM,OAAO,CAAC,CAAC,YAAY,IAAI;AAChE;AAEA,SAAS,YAAY,MAAsD;CACzE,MAAM,OAAO,MAAM;CACnB,OACE,OAAO,SAAS,YAChB,sBAAsB,IAAI,iBAAiB,IAAI,CAAC;AAEpD;AAEA,SAAS,4BACP,WACA,YACQ;CACR,OACE;iBACkB,UAAU,2DAA2D,WAAW;AAItG;AAEA,SAAS,gBAAgB,MAAsD;CAC7E,OAAO,MAAM,cAAc;AAC7B;AAEA,SAAgB,4BAA4B,QAAwB;CAClE,MAAM,eAAe,OAAO,YAAY,kBAAkB;CAC1D,IAAI,eAAe,GAAG,OAAO;CAC7B,MAAM,gBAAgB,OAAO,MAAM,GAAG,YAAY;CAClD,IAAI,kBAAkB,MAAM,CAAC,cAAc,SAAS,MAAM,GAAG,OAAO;CACpE,MAAM,eAAe,OAAO,MAAM,YAAY;CAC9C,IAAI,CAAC,kCAAkC,KAAK,YAAY,GAAG,OAAO;CAClE,OAAO,cAAc,QAAQ;AAC/B;AAEA,SAAgB,6BACd,QACA,OACQ;CACR,IAAI,SAAS,QAAQ,MAAM,WAAW,GACpC,OAAO,OAAO,KAAK;CAGrB,MAAM,iBAAiB,MAAM,OAAO,eAAe;CACnD,IAAI,eAAe,WAAW,GAC5B,OAAO,OAAO,KAAK;CAGrB,MAAM,aAAa,eAAe,OAAO,WAAW,CAAC,CAAC;CACtD,MAAM,UAAU,4BACd,eAAe,QACf,UACF;CAEA,OAAO,GAAG,OAAO,QAAQ,EAAE,MAAM,UAAU,KAAK;AAClD"}