@librechat/agents 3.4.7 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (924) 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/package.json +35 -32
  582. package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +0 -52
  583. package/dist/types/test/mockTools.d.ts +0 -28
  584. package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +0 -40
  585. package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
  586. package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
  587. package/src/__tests__/stream.streamLimits.test.ts +0 -1982
  588. package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
  589. package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
  590. package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
  591. package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
  592. package/src/agents/__tests__/AgentContext.test.ts +0 -2425
  593. package/src/agents/__tests__/projection.test.ts +0 -73
  594. package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
  595. package/src/aggregator.test.ts +0 -1214
  596. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
  597. package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
  598. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
  599. package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
  600. package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
  601. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
  602. package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
  603. package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
  604. package/src/graphs/__tests__/createGraph.test.ts +0 -206
  605. package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
  606. package/src/hooks/__tests__/compactHooks.test.ts +0 -250
  607. package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
  608. package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
  609. package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
  610. package/src/hooks/__tests__/integration.test.ts +0 -337
  611. package/src/hooks/__tests__/matchers.test.ts +0 -238
  612. package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
  613. package/src/hooks/__tests__/toolHooks.test.ts +0 -669
  614. package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
  615. package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
  616. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  617. package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
  618. package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
  619. package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
  620. package/src/llm/anthropic/llm.spec.ts +0 -3394
  621. package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
  622. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
  623. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
  624. package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
  625. package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
  626. package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
  627. package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
  628. package/src/llm/bedrock/inherited.spec.ts +0 -724
  629. package/src/llm/bedrock/llm.spec.ts +0 -1533
  630. package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
  631. package/src/llm/bedrock/toolCache.test.ts +0 -194
  632. package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
  633. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
  634. package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
  635. package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
  636. package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
  637. package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
  638. package/src/llm/google/data/gettysburg10.wav +0 -0
  639. package/src/llm/google/data/hotdog.jpg +0 -0
  640. package/src/llm/google/inherited-stream-events.spec.ts +0 -350
  641. package/src/llm/google/llm.spec.ts +0 -1388
  642. package/src/llm/google/streamSmoothing.test.ts +0 -121
  643. package/src/llm/google/utils/common.test.ts +0 -196
  644. package/src/llm/invoke.alternation.test.ts +0 -87
  645. package/src/llm/invoke.handoffCue.test.ts +0 -112
  646. package/src/llm/invoke.streamLimits.test.ts +0 -142
  647. package/src/llm/invoke.test.ts +0 -1198
  648. package/src/llm/mistral/streamSmoothing.test.ts +0 -97
  649. package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
  650. package/src/llm/openai/contentBlocks.test.ts +0 -381
  651. package/src/llm/openai/deepseek.test.ts +0 -747
  652. package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
  653. package/src/llm/openai/inherited-xai.spec.ts +0 -416
  654. package/src/llm/openai/llm.spec.ts +0 -1774
  655. package/src/llm/openai/managedRequests.test.ts +0 -182
  656. package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
  657. package/src/llm/openai/streamMetadata.spec.ts +0 -86
  658. package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
  659. package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
  660. package/src/llm/openai/utils/messages.test.ts +0 -488
  661. package/src/llm/openrouter/reasoning.test.ts +0 -561
  662. package/src/llm/openrouter/toolCache.test.ts +0 -134
  663. package/src/llm/preempt.test.ts +0 -323
  664. package/src/llm/stream/chunkAdapters.test.ts +0 -202
  665. package/src/llm/stream/reassembly.test.ts +0 -241
  666. package/src/llm/stream/smoother.bench.test.ts +0 -155
  667. package/src/llm/stream/smoother.test.ts +0 -519
  668. package/src/llm/streamLimits.test.ts +0 -450
  669. package/src/llm/truncation.test.ts +0 -242
  670. package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
  671. package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
  672. package/src/llm/vertexai/llm.spec.ts +0 -159
  673. package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
  674. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
  675. package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
  676. package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
  677. package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
  678. package/src/messages/__tests__/observationMasking.test.ts +0 -312
  679. package/src/messages/__tests__/recency.test.ts +0 -267
  680. package/src/messages/__tests__/tools.test.ts +0 -473
  681. package/src/messages/alternation.test.ts +0 -212
  682. package/src/messages/assistantPhase.test.ts +0 -75
  683. package/src/messages/cache.tail.test.ts +0 -533
  684. package/src/messages/cache.test.ts +0 -2166
  685. package/src/messages/content.test.ts +0 -362
  686. package/src/messages/contextPruning.test.ts +0 -184
  687. package/src/messages/ensureThinkingBlock.test.ts +0 -1427
  688. package/src/messages/foldToollessToolBlocks.test.ts +0 -596
  689. package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
  690. package/src/messages/formatAgentMessages.skills.test.ts +0 -513
  691. package/src/messages/formatAgentMessages.steer.test.ts +0 -598
  692. package/src/messages/formatAgentMessages.test.ts +0 -8111
  693. package/src/messages/formatAgentMessages.tools.test.ts +0 -522
  694. package/src/messages/formatMessage.test.ts +0 -693
  695. package/src/messages/handoffCue.test.ts +0 -96
  696. package/src/messages/injected.test.ts +0 -107
  697. package/src/messages/labelContentByAgent.test.ts +0 -962
  698. package/src/messages/reducer.spec.ts +0 -32
  699. package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
  700. package/src/messages/tailCacheConversion.test.ts +0 -161
  701. package/src/openai/__tests__/openai.test.ts +0 -337
  702. package/src/responses/__tests__/responses.test.ts +0 -652
  703. package/src/scripts/abort.ts +0 -157
  704. package/src/scripts/activity-labels/captured.json +0 -56
  705. package/src/scripts/activity-labels/checks.cjs +0 -205
  706. package/src/scripts/activity-labels/corpus.cjs +0 -473
  707. package/src/scripts/activity-labels/report.cjs +0 -203
  708. package/src/scripts/activity-labels/rescore.cjs +0 -102
  709. package/src/scripts/activity-labels/run.ts +0 -705
  710. package/src/scripts/activity-labels/variants.ts +0 -71
  711. package/src/scripts/ant_web_search.ts +0 -159
  712. package/src/scripts/ant_web_search_edge_case.ts +0 -163
  713. package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
  714. package/src/scripts/args.ts +0 -48
  715. package/src/scripts/bedrock-cache-debug.ts +0 -250
  716. package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
  717. package/src/scripts/bedrock-merge-test.ts +0 -107
  718. package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
  719. package/src/scripts/bench-prompt-cache.ts +0 -479
  720. package/src/scripts/caching.ts +0 -132
  721. package/src/scripts/cli.ts +0 -172
  722. package/src/scripts/cli2.ts +0 -133
  723. package/src/scripts/cli3.ts +0 -184
  724. package/src/scripts/cli4.ts +0 -191
  725. package/src/scripts/cli5.ts +0 -191
  726. package/src/scripts/code_exec.ts +0 -214
  727. package/src/scripts/code_exec_files.ts +0 -237
  728. package/src/scripts/code_exec_multi_session.ts +0 -237
  729. package/src/scripts/code_exec_ptc.ts +0 -335
  730. package/src/scripts/code_exec_session.ts +0 -283
  731. package/src/scripts/code_exec_simple.ts +0 -148
  732. package/src/scripts/compare_pi_vs_ours.ts +0 -1259
  733. package/src/scripts/content.ts +0 -139
  734. package/src/scripts/context-overflow-probe.ts +0 -997
  735. package/src/scripts/empty_input.ts +0 -137
  736. package/src/scripts/handoff-test.ts +0 -134
  737. package/src/scripts/local_engine.ts +0 -166
  738. package/src/scripts/local_engine_checkpointer.ts +0 -205
  739. package/src/scripts/local_engine_compile.ts +0 -263
  740. package/src/scripts/local_engine_hooks.ts +0 -226
  741. package/src/scripts/local_engine_image.ts +0 -201
  742. package/src/scripts/local_engine_ptc.ts +0 -151
  743. package/src/scripts/local_engine_workspace.ts +0 -258
  744. package/src/scripts/memory.ts +0 -107
  745. package/src/scripts/multi-agent-chain.ts +0 -332
  746. package/src/scripts/multi-agent-conditional.ts +0 -222
  747. package/src/scripts/multi-agent-document-review-chain.ts +0 -198
  748. package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
  749. package/src/scripts/multi-agent-parallel-start.ts +0 -265
  750. package/src/scripts/multi-agent-parallel.ts +0 -395
  751. package/src/scripts/multi-agent-sequence.ts +0 -217
  752. package/src/scripts/multi-agent-subagent.ts +0 -246
  753. package/src/scripts/multi-agent-supervisor.ts +0 -366
  754. package/src/scripts/multi-agent-test.ts +0 -187
  755. package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
  756. package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
  757. package/src/scripts/parallel-full-metadata-test.ts +0 -241
  758. package/src/scripts/parallel-tools-test.ts +0 -341
  759. package/src/scripts/preempt-probe.ts +0 -330
  760. package/src/scripts/preempt-scenarios.ts +0 -388
  761. package/src/scripts/programmatic_exec.ts +0 -387
  762. package/src/scripts/programmatic_exec_agent.ts +0 -232
  763. package/src/scripts/search.ts +0 -147
  764. package/src/scripts/sequential-full-metadata-test.ts +0 -198
  765. package/src/scripts/session_live.ts +0 -548
  766. package/src/scripts/simple.ts +0 -226
  767. package/src/scripts/single-agent-metadata-test.ts +0 -196
  768. package/src/scripts/stream.ts +0 -141
  769. package/src/scripts/subagent-configurable-inheritance.ts +0 -252
  770. package/src/scripts/subagent-event-driven-debug.ts +0 -190
  771. package/src/scripts/subagent-tools-debug.ts +0 -160
  772. package/src/scripts/subagent-usage-sink.ts +0 -176
  773. package/src/scripts/summarization-recency.ts +0 -462
  774. package/src/scripts/test-custom-prompt-key.ts +0 -145
  775. package/src/scripts/test-handoff-input.ts +0 -170
  776. package/src/scripts/test-handoff-preamble.ts +0 -278
  777. package/src/scripts/test-handoff-steering.ts +0 -430
  778. package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
  779. package/src/scripts/test-parallel-agent-labeling.ts +0 -327
  780. package/src/scripts/test-parallel-handoffs.ts +0 -292
  781. package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
  782. package/src/scripts/test-thinking-handoff.ts +0 -156
  783. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
  784. package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
  785. package/src/scripts/test-tools-before-handoff.ts +0 -222
  786. package/src/scripts/test_code_api.ts +0 -354
  787. package/src/scripts/thinking-bedrock.ts +0 -160
  788. package/src/scripts/thinking-vertexai.ts +0 -168
  789. package/src/scripts/thinking.ts +0 -172
  790. package/src/scripts/tool_search.ts +0 -153
  791. package/src/scripts/tools.ts +0 -163
  792. package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
  793. package/src/session/__tests__/handlers.test.ts +0 -161
  794. package/src/specs/activity-label-observability.live.test.ts +0 -262
  795. package/src/specs/activity-label-observability.test.ts +0 -167
  796. package/src/specs/activity-label-prompt.test.ts +0 -359
  797. package/src/specs/activity-label-trace-seed.test.ts +0 -47
  798. package/src/specs/activity-phase-label.test.ts +0 -306
  799. package/src/specs/agent-handoffs.live.test.ts +0 -140
  800. package/src/specs/agent-handoffs.test.ts +0 -2465
  801. package/src/specs/anthropic.simple.test.ts +0 -453
  802. package/src/specs/ask-user-question-batch.test.ts +0 -289
  803. package/src/specs/ask-user-questions.live.test.ts +0 -185
  804. package/src/specs/ask-user-questions.test.ts +0 -293
  805. package/src/specs/azure.simple.test.ts +0 -502
  806. package/src/specs/bedrock-toolless.live.test.ts +0 -123
  807. package/src/specs/bedrock-truncation.live.test.ts +0 -191
  808. package/src/specs/cache.simple.test.ts +0 -416
  809. package/src/specs/context-accuracy.live.test.ts +0 -409
  810. package/src/specs/context-overflow-recovery.live.test.ts +0 -213
  811. package/src/specs/context-usage-event.test.ts +0 -117
  812. package/src/specs/context-usage.live.test.ts +0 -297
  813. package/src/specs/custom-event-await.test.ts +0 -304
  814. package/src/specs/deepseek.simple.test.ts +0 -290
  815. package/src/specs/deterministic-trace-id.test.ts +0 -43
  816. package/src/specs/discovered-tools.test.ts +0 -217
  817. package/src/specs/durability-checkpoint.integration.test.ts +0 -243
  818. package/src/specs/graph-subagent.live.test.ts +0 -242
  819. package/src/specs/graph-subagent.test.ts +0 -322
  820. package/src/specs/handoffCue.test.ts +0 -165
  821. package/src/specs/langfuse-callbacks.test.ts +0 -1578
  822. package/src/specs/langfuse-config.test.ts +0 -247
  823. package/src/specs/langfuse-instrumentation.test.ts +0 -393
  824. package/src/specs/langfuse-metadata.test.ts +0 -245
  825. package/src/specs/langfuse-routing.integration.test.ts +0 -844
  826. package/src/specs/langfuse-runtime-context.test.ts +0 -92
  827. package/src/specs/langfuse-span-registry.test.ts +0 -87
  828. package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
  829. package/src/specs/langfuse-trace-shaping.test.ts +0 -591
  830. package/src/specs/moonshot.simple.test.ts +0 -367
  831. package/src/specs/multi-agent-summarization.test.ts +0 -396
  832. package/src/specs/openai.simple.test.ts +0 -315
  833. package/src/specs/openrouter.simple.test.ts +0 -275
  834. package/src/specs/preemptSeal.test.ts +0 -678
  835. package/src/specs/prune.test.ts +0 -3741
  836. package/src/specs/reasoning.test.ts +0 -201
  837. package/src/specs/run-step-timestamps.test.ts +0 -414
  838. package/src/specs/spec.utils.ts +0 -15
  839. package/src/specs/subagent.test.ts +0 -864
  840. package/src/specs/summarization-unit.test.ts +0 -973
  841. package/src/specs/summarization.test.ts +0 -3823
  842. package/src/specs/summarize-prune.test.ts +0 -376
  843. package/src/specs/thinking-handoff.test.ts +0 -621
  844. package/src/specs/thinking-prune.test.ts +0 -827
  845. package/src/specs/token-accounting-e2e.test.ts +0 -1034
  846. package/src/specs/token-accounting-pipeline.test.ts +0 -1008
  847. package/src/specs/token-distribution-edge-case.test.ts +0 -315
  848. package/src/specs/token-memoization.test.ts +0 -40
  849. package/src/specs/tokens.test.ts +0 -1000
  850. package/src/specs/tool-error-resume.test.ts +0 -194
  851. package/src/specs/tool-error.test.ts +0 -198
  852. package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
  853. package/src/stream.dispatch.test.ts +0 -63
  854. package/src/stream.test.ts +0 -144
  855. package/src/summarization/__tests__/aggregator.test.ts +0 -236
  856. package/src/summarization/__tests__/node.test.ts +0 -1996
  857. package/src/summarization/__tests__/trigger.test.ts +0 -149
  858. package/src/summarization/chunkHandler.test.ts +0 -196
  859. package/src/test/mockTools.ts +0 -386
  860. package/src/tools/Calculator.test.ts +0 -278
  861. package/src/tools/__tests__/BashExecutor.test.ts +0 -108
  862. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
  863. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
  864. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
  865. package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
  866. package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
  867. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
  868. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
  869. package/src/tools/__tests__/ReadFile.test.ts +0 -44
  870. package/src/tools/__tests__/SkillTool.test.ts +0 -442
  871. package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
  872. package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
  873. package/src/tools/__tests__/SubagentTool.test.ts +0 -149
  874. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
  875. package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
  876. package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
  877. package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
  878. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
  879. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
  880. package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
  881. package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
  882. package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
  883. package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
  884. package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
  885. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
  886. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
  887. package/src/tools/__tests__/directToolHooks.test.ts +0 -700
  888. package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
  889. package/src/tools/__tests__/handlers.test.ts +0 -997
  890. package/src/tools/__tests__/hitl.test.ts +0 -4663
  891. package/src/tools/__tests__/intentArg.test.ts +0 -357
  892. package/src/tools/__tests__/intentCoverage.test.ts +0 -139
  893. package/src/tools/__tests__/localToolNames.test.ts +0 -75
  894. package/src/tools/__tests__/skillCatalog.test.ts +0 -161
  895. package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
  896. package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
  897. package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
  898. package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
  899. package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
  900. package/src/tools/search/content.test.ts +0 -173
  901. package/src/tools/search/crw.test.ts +0 -836
  902. package/src/tools/search/format.test.ts +0 -242
  903. package/src/tools/search/http-agent.test.ts +0 -133
  904. package/src/tools/search/jina-reranker.test.ts +0 -306
  905. package/src/tools/search/keenable-scraper.test.ts +0 -153
  906. package/src/tools/search/keenable.test.ts +0 -183
  907. package/src/tools/search/outcome.test.ts +0 -90
  908. package/src/tools/search/output.md +0 -2775
  909. package/src/tools/search/rag-api-reranker.test.ts +0 -891
  910. package/src/tools/search/source-processing.test.ts +0 -516
  911. package/src/tools/search/tavily.test.ts +0 -965
  912. package/src/tools/search/test.html +0 -884
  913. package/src/tools/search/test.md +0 -643
  914. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
  915. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
  916. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
  917. package/src/utils/__tests__/apportion.test.ts +0 -32
  918. package/src/utils/__tests__/errors.test.ts +0 -270
  919. package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
  920. package/src/utils/__tests__/redactSecrets.test.ts +0 -56
  921. package/src/utils/__tests__/truncation.test.ts +0 -66
  922. package/src/utils/llm.test.ts +0 -18
  923. package/src/utils/proxy.test.ts +0 -176
  924. package/src/utils/toolContent.test.ts +0 -1432
@@ -1 +1 @@
1
- {"version":3,"file":"Graph.mjs","names":["messagesStateReducer","CustomToolNode"],"sources":["../../../src/graphs/Graph.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { v4 } from 'uuid';\nimport { nanoid } from 'nanoid';\nimport { tool } from '@langchain/core/tools';\nimport { ToolNode } from '@langchain/langgraph/prebuilt';\nimport { ContextOverflowError } from '@langchain/core/errors';\nimport { Runnable, RunnableConfig } from '@langchain/core/runnables';\nimport { START, END, StateGraph, Annotation } from '@langchain/langgraph';\nimport {\n ToolMessage,\n HumanMessage,\n AIMessageChunk,\n} from '@langchain/core/messages';\nimport type {\n UsageMetadata,\n BaseMessage,\n MessageContent,\n} from '@langchain/core/messages';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type {\n ReplayableSubagentTool,\n SubagentGraphResumeState,\n SubagentResumeManifest,\n SubagentToolNodeResumeState,\n SettledSubagentToolOutput,\n} from '@/tools/subagent/SubagentReplay';\nimport type {\n ResolvedStreamLimits,\n RunBreakerScope,\n StreamedToolCallArgTally,\n StreamDeltaEventTally,\n} from '@/llm/streamLimits';\nimport type {\n GraphFactory,\n GraphFactoryDependencies,\n} from '@/graphs/graphFactory';\nimport type { OverflowRecoveryPlan } from '@/llm/contextOverflowRecovery';\nimport type { FallbackErrorContext } from '@/llm/invoke';\nimport type { HookRegistry } from '@/hooks';\nimport type * as t from '@/types';\nimport {\n projectAnthropicArtifactContent,\n ensureThinkingBlockInMessages,\n foldToolBlocksForToollessAgent,\n convertMessagesToContent,\n sanitizeOrphanToolBlocks,\n extractToolDiscoveries,\n addBedrockTailCacheControl,\n projectArtifactPayload,\n formatContentStrings,\n CALIBRATION_RATIO_MAX,\n REPLY_PRIMER_TOKENS,\n createPruneMessages,\n projectToolCallInputs,\n calculateMaxToolCallInputChars,\n projectToolStreamContentForProvider,\n syncBudgetDerivedFields,\n addTailCacheControl,\n resolvePromptCacheTtl,\n resolveBedrockPromptCacheTtl,\n supportsBedrockToolCache,\n isSyntheticProviderContextMessage,\n getMessageId,\n getMessageCreationContentMetadata,\n splitAssistantTextContentByPhase,\n makeIsDeferred,\n partitionAndMarkAnthropicToolCache,\n DEFAULT_RETAIN_RECENT_TURNS,\n splitAtRecencyBoundary,\n convertInjectedMessages,\n coalesceAdjacentUserTurns,\n strictAlternationProviders,\n appendPredecessorHandoffCue,\n removePredecessorHandoffCue,\n} from '@/messages';\nimport {\n resetIfNotEmpty,\n isAnthropicLike,\n isOpenAILike,\n isGoogleLike,\n apportionTokenCounts,\n calculateMaxToolResultChars,\n composeAbortSignals,\n joinKeys,\n sleep,\n} from '@/utils';\nimport {\n attemptInvoke,\n tryFallbackProviders,\n getFallbackErrorContext,\n getFallbackOverflowCandidates,\n projectMessagesForProvider,\n resolveServingModelId,\n} from '@/llm/invoke';\nimport {\n resolveStreamLimits,\n StreamLimitExceededError,\n sweepStaleStreamLimitEntries,\n STREAM_LIMIT_EPOCH_KEY,\n RUN_BREAKER_SCOPE_CONFIG_KEY,\n} from '@/llm/streamLimits';\nimport {\n DEFAULT_SUBAGENT_DESCRIPTION,\n SubagentExecutor,\n isGraphSubagentConfig,\n normalizeSubagentConfigEntries,\n} from '@/tools/subagent';\nimport {\n Constants,\n GraphNodeKeys,\n ContentTypes,\n GraphEvents,\n Providers,\n StepTypes,\n PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS,\n} from '@/common';\nimport {\n createLangfuseHandler,\n createLangfuseTraceMetadata,\n disposeLangfuseHandler,\n isLangfuseCallbackHandler,\n} from '@/langfuse';\nimport {\n getBlindRecoveryBudget,\n planContextOverflowRecovery,\n translateRecoveryBudget,\n} from '@/llm/contextOverflowRecovery';\nimport {\n hasToolOutputTracingConfig,\n resolveLangfuseConfig,\n resolveToolOutputTracingConfig,\n} from '@/langfuseConfig';\nimport {\n compactToolContent,\n getToolContentCharLength,\n serializeToolContentBounded,\n} from '@/utils/toolContent';\nimport {\n annotateMessagesForLLM,\n ToolOutputReferenceRegistry,\n} from '@/tools/toolOutputReferences';\nimport {\n resolveLangfuseRuntimeScope,\n withLangfuseRuntimeScope,\n} from '@/langfuseRuntimeScope';\nimport {\n appendCallbacks,\n findCallback,\n type CallbackEntry,\n} from '@/utils/callbacks';\nimport { partitionAndMarkOpenRouterToolCache } from '@/llm/openrouter/toolCache';\nimport { ToolNode as CustomToolNode, toolsCondition } from '@/tools/ToolNode';\nimport { shouldTraceToolNodeForLangfuse } from '@/langfuseToolOutputTracing';\nimport { createLocalCodingToolBundle } from '@/tools/local/LocalCodingTools';\nimport { SUBAGENT_REPLAY_CONTROLLER } from '@/tools/subagent/SubagentReplay';\nimport { applyGraphRuntimeConfig } from '@/graphs/applyGraphRuntimeConfig';\nimport { partitionAndMarkBedrockToolCache } from '@/llm/bedrock/toolCache';\nimport { safeDispatchCustomEvent, emitAgentLog } from '@/utils/events';\nimport { createCloudflareCodingToolBundle } from '@/tools/cloudflare';\nimport { buildSubagentToolParams } from '@/tools/SubagentTool';\nimport { initializeLangfuseTracing } from '@/instrumentation';\nimport { shouldTriggerSummarization } from '@/summarization';\nimport { resolveLocalToolsForBinding } from '@/tools/local';\nimport { createSummarizeNode } from '@/summarization/node';\nimport { messagesStateReducer } from '@/messages/reducer';\nimport { createSchemaOnlyTools } from '@/tools/schema';\nimport { AgentContext } from '@/agents/AgentContext';\nimport { createFakeStreamingLLM } from '@/llm/fake';\nimport { handleToolCalls } from '@/tools/handlers';\nimport { isThinkingEnabled } from '@/llm/request';\nimport { resolveMaxSeals } from '@/llm/preempt';\nimport { initializeModel } from '@/llm/init';\nimport { HandlerRegistry } from '@/events';\nimport { ChatOpenAI } from '@/llm/openai';\nimport { executeHooks } from '@/hooks';\n\nconst { AGENT, TOOLS, SUMMARIZE } = GraphNodeKeys;\n\n/** What a `PreemptBoundary` drain resolved to. */\ntype PreemptBoundaryResult = {\n messages: BaseMessage[];\n /** A hook asked for no further model turn; the seal must not self-loop. */\n preventContinuation: boolean;\n};\n\nconst EMPTY_PREEMPT_BOUNDARY: PreemptBoundaryResult = {\n messages: [],\n preventContinuation: false,\n};\n\n/** Minimum relative variance before calibrated toolSchemaTokens overrides current value. */\nconst CALIBRATION_VARIANCE_THRESHOLD = 0.15;\n\nfunction createChildHandlerRegistry(\n source: HandlerRegistry | undefined\n): HandlerRegistry | undefined {\n const toolHandler = source?.getHandler(GraphEvents.ON_TOOL_EXECUTE);\n const updateHandler = source?.getHandler(GraphEvents.ON_SUBAGENT_UPDATE);\n if (toolHandler == null && updateHandler == null) {\n return undefined;\n }\n const registry = new HandlerRegistry();\n if (toolHandler != null) {\n registry.register(GraphEvents.ON_TOOL_EXECUTE, toolHandler);\n }\n if (updateHandler != null) {\n registry.register(GraphEvents.ON_SUBAGENT_UPDATE, updateHandler);\n }\n return registry;\n}\n\ntype ReasoningKey = 'reasoning_content' | 'reasoning';\ntype ReasoningSummary = { summary?: Array<{ text?: string }> };\ntype ReasoningDetail = { type?: string; text?: string };\n\nfunction getHandlerDispatchedEventKey(\n eventName: string,\n stepId: string\n): string {\n return `${eventName}:${stepId}`;\n}\n\nfunction getReasoningText(\n value: string | Partial<ReasoningSummary> | null | undefined\n): string | undefined {\n if (typeof value === 'string') {\n return value !== '' ? value : undefined;\n }\n const summaryText = value?.summary\n ?.map((summary) => summary.text ?? '')\n .filter((text) => text !== '')\n .join('');\n return summaryText != null && summaryText !== '' ? summaryText : undefined;\n}\n\nfunction getReasoningDetailsText(\n value: ReasoningDetail[] | null | undefined\n): string | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const reasoningText = value\n .filter((detail) => detail.type === 'reasoning.text')\n .map((detail) => detail.text ?? '')\n .filter((text) => text !== '')\n .join('');\n return reasoningText !== '' ? reasoningText : undefined;\n}\n\nfunction getResponseReasoningContent({\n responseMessage,\n reasoningKey,\n}: {\n responseMessage?: Partial<AIMessageChunk>;\n reasoningKey: ReasoningKey;\n}): string | undefined {\n const additionalKwargs = responseMessage?.additional_kwargs;\n if (additionalKwargs == null) {\n return undefined;\n }\n\n const keyedReasoning = getReasoningText(\n additionalKwargs[reasoningKey] as\n | string\n | Partial<ReasoningSummary>\n | null\n | undefined\n );\n if (keyedReasoning != null) {\n return keyedReasoning;\n }\n\n const reasoningContent = getReasoningText(\n additionalKwargs.reasoning_content as\n | string\n | Partial<ReasoningSummary>\n | null\n | undefined\n );\n if (reasoningContent != null) {\n return reasoningContent;\n }\n\n const reasoning = getReasoningText(\n additionalKwargs.reasoning as\n | string\n | Partial<ReasoningSummary>\n | null\n | undefined\n );\n if (reasoning != null) {\n return reasoning;\n }\n\n return getReasoningDetailsText(\n additionalKwargs.reasoning_details as ReasoningDetail[] | null | undefined\n );\n}\n\nfunction isTextMessageContentPart(\n contentPart: MessageContent[number] | t.MessageContentComplex\n): boolean {\n return (\n typeof contentPart === 'object' &&\n 'type' in contentPart &&\n typeof contentPart.type === 'string' &&\n contentPart.type.startsWith('text')\n );\n}\n\nfunction isGoogleServerSideToolMessageContentPart(\n contentPart: MessageContent[number] | t.MessageContentComplex\n): boolean {\n return (\n typeof contentPart === 'object' &&\n 'type' in contentPart &&\n (contentPart.type === 'toolCall' || contentPart.type === 'toolResponse')\n );\n}\n\nfunction hasGoogleServerSideToolDeltaContent(\n provider: Providers | undefined,\n content: t.MessageDelta['content']\n): content is t.MessageContentComplex[] {\n return (\n isGoogleLike(provider) &&\n Array.isArray(content) &&\n content.some((contentPart) =>\n isGoogleServerSideToolMessageContentPart(contentPart)\n )\n );\n}\n\nfunction getMessageDeltaContent(\n provider: Providers | undefined,\n content: MessageContent | undefined\n): t.MessageDelta['content'] | undefined {\n if (content == null) {\n return undefined;\n }\n if (typeof content === 'string') {\n return content !== ''\n ? [{ type: ContentTypes.TEXT, text: content }]\n : undefined;\n }\n if (content.length === 0) {\n return undefined;\n }\n\n const hasGoogleServerSideToolPart =\n isGoogleLike(provider) &&\n content.some((contentPart) =>\n isGoogleServerSideToolMessageContentPart(contentPart)\n );\n if (content.every((contentPart) => isTextMessageContentPart(contentPart))) {\n return content as t.MessageDelta['content'];\n }\n if (!hasGoogleServerSideToolPart) {\n return undefined;\n }\n const messageContent = content.filter(\n (contentPart) =>\n isTextMessageContentPart(contentPart) ||\n isGoogleServerSideToolMessageContentPart(contentPart)\n );\n return messageContent.length > 0\n ? (messageContent as t.MessageDelta['content'])\n : undefined;\n}\n\nfunction hasTextDeltaContent(\n content: t.MessageDelta['content'] | undefined\n): boolean {\n if (content == null) {\n return false;\n }\n return content.some((contentPart) => {\n if (contentPart.type?.startsWith(ContentTypes.TEXT) !== true) {\n return false;\n }\n const text = (contentPart as Partial<{ text: string }>).text;\n return typeof text === 'string' && text !== '';\n });\n}\n\nfunction hasReasoningDeltaContent(\n content: t.ReasoningDelta['content'] | undefined\n): boolean {\n if (content == null) {\n return false;\n }\n return content.some(\n (contentPart) =>\n contentPart.type === ContentTypes.THINK && contentPart.think !== ''\n );\n}\n\nfunction getCurrentStepIds({\n graph,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n metadata: Record<string, unknown>;\n}): string[] {\n const baseStepKey = graph.getStepBaseKey(metadata);\n const currentStepIds: string[] = [];\n for (const [stepKey, stepIds] of graph.stepKeyIds) {\n if (stepKey !== baseStepKey && !stepKey.startsWith(`${baseStepKey}_`)) {\n continue;\n }\n currentStepIds.push(...stepIds);\n }\n return currentStepIds;\n}\n\nfunction hasCurrentTextDeltaStep({\n graph,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n metadata: Record<string, unknown>;\n}): boolean {\n return getCurrentStepIds({ graph, metadata }).some((stepId) =>\n graph.messageStepHasTextDeltas.has(stepId)\n );\n}\n\nfunction hasCurrentReasoningDeltaStep({\n graph,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n metadata: Record<string, unknown>;\n}): boolean {\n return getCurrentStepIds({ graph, metadata }).some((stepId) =>\n graph.reasoningStepHasDeltas.has(stepId)\n );\n}\n\nfunction clearCurrentDeltaStepMarkers({\n graph,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n metadata: Record<string, unknown>;\n}): void {\n for (const stepId of getCurrentStepIds({ graph, metadata })) {\n graph.messageStepHasTextDeltas.delete(stepId);\n graph.reasoningStepHasDeltas.delete(stepId);\n }\n}\n\n/**\n * The completion allowance the caller configured, under whichever key the\n * provider's client uses. Providers count it against the same ceiling as the\n * prompt, so overflow recovery has to reserve it when the error did not\n * itemize the total.\n */\nfunction getConfiguredCompletionTokens(\n clientOptions: t.ClientOptions | undefined\n): number | undefined {\n const options = clientOptions as\n | { maxTokens?: unknown; maxOutputTokens?: unknown }\n | undefined;\n for (const value of [options?.maxTokens, options?.maxOutputTokens]) {\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) {\n return value;\n }\n }\n return undefined;\n}\n\n/**\n * Our own estimate of the prompt that was actually sent, derived from the\n * pre-invoke usage snapshot. Used to corroborate ambiguous provider errors\n * and to measure how far our token accounting sits from the provider's.\n */\nfunction getEstimatedPromptTokens(\n contextUsage: t.ContextUsageEvent | null\n): number | undefined {\n const budget = contextUsage?.contextBudget;\n const remaining = contextUsage?.remainingContextTokens;\n if (\n budget == null ||\n remaining == null ||\n !Number.isFinite(budget) ||\n !Number.isFinite(remaining)\n ) {\n return undefined;\n }\n const used = budget - remaining;\n return used > 0 ? used : undefined;\n}\n\nfunction minDefined(\n left: number | undefined,\n right: number | undefined\n): number | undefined {\n if (left == null) {\n return right;\n }\n if (right == null) {\n return left;\n }\n return Math.min(left, right);\n}\n\nasync function dispatchMessageCreationStep({\n graph,\n stepKey,\n messageId,\n content,\n contentType,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n stepKey: string;\n messageId: string;\n content?: string | t.MessageContentComplex[];\n contentType?: ContentTypes.TEXT | ContentTypes.THINK;\n metadata: Record<string, unknown>;\n}): Promise<string> {\n await graph.dispatchRunStep(\n stepKey,\n {\n type: StepTypes.MESSAGE_CREATION,\n message_creation: {\n message_id: messageId,\n ...getMessageCreationContentMetadata(content, contentType),\n },\n },\n metadata\n );\n return graph.getStepIdByKey(stepKey);\n}\n\nasync function dispatchTextMessageContent({\n graph,\n stepKey,\n provider,\n content,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n stepKey: string;\n provider?: Providers;\n content: t.MessageDelta['content'];\n metadata: Record<string, unknown>;\n}): Promise<boolean> {\n const messageId = getMessageId(stepKey, graph) ?? '';\n if (!messageId) {\n return false;\n }\n if (hasGoogleServerSideToolDeltaContent(provider, content)) {\n for (const contentPart of content) {\n const stepId = await dispatchMessageCreationStep({\n graph,\n stepKey,\n messageId,\n content: [contentPart],\n metadata,\n });\n await graph.dispatchMessageDelta(\n stepId,\n { content: [contentPart] },\n metadata\n );\n }\n return true;\n }\n const contentGroups = Array.isArray(content)\n ? splitAssistantTextContentByPhase(content)\n : [content];\n for (const contentGroup of contentGroups) {\n const stepId = await dispatchMessageCreationStep({\n graph,\n stepKey,\n messageId,\n content: contentGroup,\n contentType: ContentTypes.TEXT,\n metadata,\n });\n await graph.dispatchMessageDelta(\n stepId,\n { content: contentGroup },\n metadata\n );\n }\n return true;\n}\n\nasync function dispatchReasoningContent({\n graph,\n agentContext,\n reasoningContent,\n metadata,\n}: {\n graph: Graph<t.BaseGraphState>;\n agentContext: AgentContext;\n reasoningContent: string;\n metadata: Record<string, unknown>;\n}): Promise<boolean> {\n const previousTokenType = agentContext.currentTokenType;\n const previousTokenTypeSwitch = agentContext.tokenTypeSwitch;\n const previousTransitionCount = agentContext.reasoningTransitionCount;\n\n agentContext.currentTokenType = ContentTypes.THINK;\n agentContext.tokenTypeSwitch = 'reasoning';\n\n const stepKey = graph.getStepKey(metadata);\n const messageId = getMessageId(stepKey, graph) ?? '';\n if (!messageId) {\n agentContext.currentTokenType = previousTokenType;\n agentContext.tokenTypeSwitch = previousTokenTypeSwitch;\n agentContext.reasoningTransitionCount = previousTransitionCount;\n return false;\n }\n\n await graph.dispatchRunStep(\n stepKey,\n {\n type: StepTypes.MESSAGE_CREATION,\n message_creation: {\n message_id: messageId,\n content_type: ContentTypes.THINK,\n },\n },\n metadata\n );\n const stepId = graph.getStepIdByKey(stepKey);\n await graph.dispatchReasoningDelta(\n stepId,\n {\n content: [{ type: ContentTypes.THINK, think: reasoningContent }],\n },\n metadata\n );\n return true;\n}\n\nfunction markPostReasoningContent(agentContext: AgentContext): void {\n if (\n agentContext.tokenTypeSwitch !== 'reasoning' ||\n agentContext.currentTokenType === ContentTypes.TEXT\n ) {\n return;\n }\n agentContext.currentTokenType = ContentTypes.TEXT;\n agentContext.tokenTypeSwitch = 'content';\n agentContext.reasoningTransitionCount++;\n}\n\nfunction getDispatchableFinalReasoningContent({\n agentContext,\n responseReasoningContent,\n hasStreamedTextDeltaStep,\n hasStreamedReasoningDeltaStep,\n}: {\n agentContext: AgentContext;\n responseReasoningContent: string | undefined;\n hasStreamedTextDeltaStep: boolean;\n hasStreamedReasoningDeltaStep: boolean;\n}): string | undefined {\n if (responseReasoningContent == null || hasStreamedReasoningDeltaStep) {\n return undefined;\n }\n if (\n agentContext.provider === Providers.OPENROUTER &&\n hasStreamedTextDeltaStep\n ) {\n return undefined;\n }\n return responseReasoningContent;\n}\n\nexport abstract class Graph<\n T extends t.BaseGraphState = t.BaseGraphState,\n _TNodeName extends string = string,\n> {\n abstract resetValues(keepContent?: boolean, checkpointScope?: string): void;\n restoreCheckpointMessages(\n _messages: BaseMessage[],\n _pendingMessages?: BaseMessage[]\n ): void {}\n abstract initializeTools({\n currentTools,\n currentToolMap,\n }: {\n currentTools?: t.GraphTools;\n currentToolMap?: t.ToolMap;\n }): CustomToolNode<T> | ToolNode<T>;\n abstract getRunMessages(): BaseMessage[] | undefined;\n /** Returns a snapshot of deferred tools discovered by this graph. */\n getDiscoveredTools(_agentId?: string): string[] {\n return [];\n }\n abstract getContentParts(): t.MessageContentComplex[] | undefined;\n abstract generateStepId(stepKey: string): [string, number];\n abstract getKeyList(\n metadata: Record<string, unknown> | undefined\n ): (string | number | undefined)[];\n abstract getStepBaseKey(\n metadata: Record<string, unknown> | undefined\n ): string;\n abstract getStepKey(metadata: Record<string, unknown> | undefined): string;\n abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;\n abstract getStepIdByKey(stepKey: string, index?: number): string;\n abstract getRunStep(stepId: string): t.RunStep | undefined;\n abstract dispatchRunStep(\n stepKey: string,\n stepDetails: t.StepDetails,\n metadata?: Record<string, unknown>\n ): Promise<string>;\n abstract dispatchRunStepDelta(\n id: string,\n delta: t.ToolCallDelta,\n metadata?: Record<string, unknown>\n ): Promise<void>;\n abstract dispatchMessageDelta(\n id: string,\n delta: t.MessageDelta,\n metadata?: Record<string, unknown>\n ): Promise<void>;\n abstract dispatchReasoningDelta(\n stepId: string,\n delta: t.ReasoningDelta,\n metadata?: Record<string, unknown>\n ): Promise<void>;\n abstract createCallModel(\n agentId?: string,\n currentModel?: t.ChatModel\n ): (\n state: t.AgentSubgraphState,\n config?: RunnableConfig\n ) => Promise<Partial<t.AgentSubgraphState>>;\n messageStepHasTextDeltas: Set<string> = new Set();\n messageStepHasToolCalls: Map<string, boolean> = new Map();\n messageIdsByStepKey: Map<string, string> = new Map();\n prelimMessageIdsByStepKey: Map<string, string> = new Map();\n config: RunnableConfig | undefined;\n contentData: t.RunStep[] = [];\n stepKeyIds: Map<string, string[]> = new Map<string, string[]>();\n contentIndexMap: Map<string, number> = new Map();\n toolCallStepIds: Map<string, string> = new Map();\n /** Step ID -> tool call IDs whose completions have not yet arrived. */\n pendingToolCallsByStep: Map<string, Set<string>> = new Map();\n /**\n * Step ID -> latest producer completion time seen for that step. Parallel\n * calls sharing a step can settle out of producer order when their host\n * handlers differ in latency, so the call that happens to drain the set is\n * not necessarily the one that finished last.\n */\n latestCompletionByStep: Map<string, number> = new Map();\n /** Agent key ('' for single-agent) -> currently open MESSAGE_CREATION step ID. */\n openMessageStepByAgent: Map<string, string> = new Map();\n /**\n * Step IDs dispatched through the handler registry during this run.\n * Event echo suppression is tracked separately so repeated deltas for\n * the same step are scoped to the active custom event dispatch.\n */\n handlerDispatchedStepIds: Set<string> = new Set();\n reasoningStepHasDeltas: Set<string> = new Set();\n protected handlerDispatchedEventCounts: Map<string, number> = new Map();\n signal?: AbortSignal;\n /**\n * The abort signal the CALLER handed to the current `processStream` call,\n * assigned unconditionally — including back to `undefined` — on every call.\n *\n * Kept separate from {@link signal} on purpose. That field is construction\n * state with its own consumers (model-call config, subagent parentSignal),\n * so adopting a per-call signal into it would leak one call's controller\n * into the next — `clearHeavyState()` is skipped on HITL interrupts, so a\n * host that aborts a finished request's controller would poison the resumed\n * run's model calls and boundary drains with an already-aborted signal.\n * Boundary dispatch composes the two instead; see\n * `StandardGraph.dispatchPreemptBoundary`.\n */\n callerSignal?: AbortSignal;\n /** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */\n invokedToolIds?: Set<string>;\n handlerRegistry: HandlerRegistry | undefined;\n /** Host registry retained only for forwarding tools from nested child graphs. */\n protected parentToolHandlerRegistry: HandlerRegistry | undefined;\n /**\n * True when event-driven tool execution can be routed through callbacks even\n * though this graph intentionally does not own the full handler registry.\n * Self-spawned subagent graphs use this shape: their callback forwarder sends\n * `ON_TOOL_EXECUTE` to the parent's handler, while child run-step events stay\n * wrapped as `ON_SUBAGENT_UPDATE` instead of leaking as parent events.\n */\n eventToolExecutionAvailable: boolean = false;\n hookRegistry: HookRegistry | undefined;\n /**\n * Run-scoped HITL configuration. When `humanInTheLoop?.enabled` is\n * `true`, `ToolNode` raises a real `interrupt()` for `PreToolUse`\n * `ask` decisions instead of treating them as a synchronous deny.\n * Threaded from `RunConfig.humanInTheLoop`.\n */\n humanInTheLoop: t.HumanInTheLoopConfig | undefined;\n /**\n * Run-scoped config for the tool output reference registry. Threaded\n * from `RunConfig.toolOutputReferences` down into every ToolNode this\n * graph compiles.\n */\n toolOutputReferences: t.ToolOutputReferencesConfig | undefined;\n /**\n * Run-scoped Langfuse defaults. Per-agent config wins when present.\n */\n langfuse: t.LangfuseConfig | undefined;\n /**\n * Run-scoped opt-in for eager event-driven tool execution. The stream\n * handler may prestart eligible event-driven tools; ToolNode later\n * consumes the settled promises while preserving final ToolMessage order.\n */\n eagerEventToolExecution: t.EagerEventToolExecutionConfig | undefined;\n codeSessionToolNames: string[] | undefined;\n /**\n * Run-scoped names of tools whose in-process body may raise a LangGraph\n * `interrupt()` (e.g. `ask_user_question`). Threaded from\n * `RunConfig.interruptingToolNames` into every ToolNode this graph\n * compiles so a mid-batch interrupt cannot double-execute non-idempotent\n * siblings on resume. See {@link t.ToolNodeOptions.interruptingToolNames}.\n */\n interruptingToolNames: string[] | undefined;\n eagerEventToolExecutions: Map<string, t.EagerEventToolExecution> = new Map();\n eagerEventToolUsageCount: Map<string, number> = new Map();\n private eagerEventToolUsageCountsByAgentId: Map<string, Map<string, number>> =\n new Map();\n eagerEventToolCallChunks: Map<string, t.EagerEventToolCallChunkState> =\n new Map();\n /**\n * Per-run eager prestart circuit breaker, shared by reference with every\n * ToolNode this graph compiles. When a prestarted execution's args turn\n * out to differ from the final request, ToolNode records the tool name\n * here and the stream handler stops prestarting that tool for the rest of\n * the run — the retry then executes normally instead of re-diverging in a\n * loop (LibreChat#14371).\n */\n eagerEventToolSuppressions: Set<string> = new Set();\n /**\n * Run-scoped execution backend for built-in code tools. Defaults to the\n * remote Code API sandbox when unset.\n */\n toolExecution: t.ToolExecutionConfig | undefined;\n /**\n * Shared registry instance used by every ToolNode compiled from this\n * graph. Lazily constructed on first access so multi-agent graphs\n * produce one registry per run (not one per agent), letting cross-\n * agent `{{tool<i>turn<n>}}` substitutions resolve.\n */\n private _toolOutputRegistry?: ToolOutputReferenceRegistry;\n /**\n * Tool session contexts for automatic state persistence across tool invocations.\n * Keyed by tool name (e.g., Constants.EXECUTE_CODE).\n * Currently supports code execution session tracking (session_id, files).\n */\n sessions: t.ToolSessionMap = new Map();\n\n /**\n * Clears heavy references to allow GC to reclaim memory held by\n * LangGraph's internal config / AsyncLocalStorage RunTree chain.\n * Call after a run completes and content has been extracted.\n */\n clearHeavyState(): void {\n this.config = undefined;\n this.signal = undefined;\n this.callerSignal = undefined;\n this.contentData = [];\n this.contentIndexMap = new Map();\n this.stepKeyIds = new Map();\n this.toolCallStepIds.clear();\n this.pendingToolCallsByStep.clear();\n this.latestCompletionByStep.clear();\n this.openMessageStepByAgent.clear();\n this.messageIdsByStepKey = new Map();\n this.messageStepHasTextDeltas = new Set();\n this.reasoningStepHasDeltas = new Set();\n this.messageStepHasToolCalls = new Map();\n this.prelimMessageIdsByStepKey = new Map();\n this.invokedToolIds = undefined;\n this.handlerRegistry = undefined;\n this.parentToolHandlerRegistry = undefined;\n this.hookRegistry = undefined;\n this.humanInTheLoop = undefined;\n this.toolOutputReferences = undefined;\n this.eagerEventToolExecution = undefined;\n this.codeSessionToolNames = undefined;\n this.interruptingToolNames = undefined;\n this.eagerEventToolExecutions.clear();\n this.clearEagerEventToolUsageCounts();\n this.eagerEventToolCallChunks.clear();\n this.eagerEventToolSuppressions.clear();\n this.toolExecution = undefined;\n this.handlerDispatchedEventCounts.clear();\n /**\n * ToolNodes compiled from this graph captured the registry\n * instance at construction time, so simply dropping the Graph's\n * own reference would leave their captured reference — and every\n * stored `tool<i>turn<n>` entry, plus up to `maxTotalSize` of raw\n * output — alive across subsequent `processStream()` calls. Wipe\n * the registry's contents first so subsequent runs start fresh.\n */\n this._toolOutputRegistry?.clear();\n this._toolOutputRegistry = undefined;\n // NB: `_fileCheckpointer` is intentionally NOT cleared here.\n // `Run.processStream()` calls `clearHeavyState()` in its\n // finally block on natural-completion / error paths — exactly\n // when the host is most likely to want `Run.rewindFiles()` (for\n // rollback after a failed batch). Per-Run isolation is already\n // automatic because each `Run.create()` constructs a brand-new\n // Graph instance, so the next Run gets its own checkpointer\n // without us needing to reset this field. Codex P1 #32: pre-fix\n // the checkpointer was nulled before the caller could reach it.\n // Flush each compiled ToolNode's direct-path turn cache so it\n // doesn't leak across Runs (Codex P2 #33). The cache survives\n // `run()` re-entry by design (resume-stable), but end-of-Run\n // is the right point to reset it. Retain the registrations because\n // the compiled workflow can be reused for later Runs; compilation\n // will not register these instances again.\n for (const node of this._compiledToolNodes) {\n node.clearDirectPathTurns();\n }\n // Subagent executors are likewise compiled once and reused. Clear\n // their per-Run state without dropping the registrations needed by\n // subsequent cleanup cycles.\n for (const executor of this._subagentExecutors) {\n executor.clearHeavyState();\n }\n this.sessions.clear();\n }\n\n getEagerEventToolUsageCount(agentId?: string): Map<string, number> {\n if (agentId == null || agentId === '') {\n return this.eagerEventToolUsageCount;\n }\n let usageCount = this.eagerEventToolUsageCountsByAgentId.get(agentId);\n if (usageCount == null) {\n usageCount = new Map<string, number>();\n this.eagerEventToolUsageCountsByAgentId.set(agentId, usageCount);\n }\n return usageCount;\n }\n\n protected clearEagerEventToolUsageCounts(): void {\n this.eagerEventToolUsageCount.clear();\n for (const usageCount of this.eagerEventToolUsageCountsByAgentId.values()) {\n usageCount.clear();\n }\n }\n\n /**\n * Tracks a tool call whose completion must arrive before its step can be\n * considered finished. Registered wherever `toolCallStepIds` gains entries,\n * except cross-process subagent resume restoration, where pending state\n * cannot be faithfully rebuilt and closes fall back to completions/sweep.\n */\n registerPendingToolCall(toolCallId: string, stepId: string): void {\n if (!toolCallId || !stepId) {\n return;\n }\n this.getPendingToolCallSet(stepId).add(toolCallId);\n }\n\n /** Lazily creates a step's pending-completions set; callers registering a\n * batch hoist this lookup out of their per-call loop. */\n protected getPendingToolCallSet(stepId: string): Set<string> {\n let pending = this.pendingToolCallsByStep.get(stepId);\n if (!pending) {\n pending = new Set();\n this.pendingToolCallsByStep.set(stepId, pending);\n }\n return pending;\n }\n\n markHandlerDispatchedEvent(eventName: string, stepId: string): () => void {\n const key = getHandlerDispatchedEventKey(eventName, stepId);\n this.handlerDispatchedEventCounts.set(\n key,\n (this.handlerDispatchedEventCounts.get(key) ?? 0) + 1\n );\n return () => {\n const count = this.handlerDispatchedEventCounts.get(key) ?? 0;\n if (count <= 1) {\n this.handlerDispatchedEventCounts.delete(key);\n return;\n }\n this.handlerDispatchedEventCounts.set(key, count - 1);\n };\n }\n\n hasHandlerDispatchedEvent(eventName: string, stepId: string): boolean {\n const key = getHandlerDispatchedEventKey(eventName, stepId);\n return (this.handlerDispatchedEventCounts.get(key) ?? 0) > 0;\n }\n\n /**\n * Subclass hook to register a freshly compiled ToolNode so\n * `clearHeavyState` can flush its per-Run direct-path turn cache\n * at end-of-Run. Internal — called from `initializeTools` in the\n * concrete graph subclasses.\n */\n protected registerCompiledToolNode(node: {\n clearDirectPathTurns(): void;\n createSubagentResumeState(): SubagentToolNodeResumeState;\n restoreSubagentResumeState(state: SubagentToolNodeResumeState): void;\n }): void {\n this._compiledToolNodes.add(node);\n }\n\n protected registerSubagentExecutor(executor: SubagentExecutor): void {\n this._subagentExecutors.add(executor);\n }\n\n protected resetSubagentCheckpointThreadIds(): void {\n for (const executor of this._subagentExecutors) {\n executor.resetCheckpointThreadIds();\n }\n }\n\n getChildCheckpointThreadIds(): string[] {\n const threadIds = new Set<string>();\n for (const executor of this._subagentExecutors) {\n for (const threadId of executor.getChildCheckpointThreadIds()) {\n threadIds.add(threadId);\n }\n }\n return [...threadIds];\n }\n\n createSubagentResumeState(runId: string): SubagentGraphResumeState {\n return {\n toolCallSteps: [...this.toolCallStepIds].map(([toolCallId, stepId]) => ({\n toolCallId,\n stepId,\n })),\n toolSessions: [...this.sessions].map(([toolName, context]) => ({\n toolName,\n context: {\n ...context,\n ...(context.files == null\n ? {}\n : { files: context.files.map((file) => ({ ...file })) }),\n },\n })),\n toolNodes: [...this._compiledToolNodes].map((node) =>\n node.createSubagentResumeState()\n ),\n eagerToolUsage: [\n {\n agentId: '',\n toolUsageCounts: [...this.eagerEventToolUsageCount].map(\n ([toolName, count]) => ({ toolName, count })\n ),\n },\n ...[...this.eagerEventToolUsageCountsByAgentId].map(\n ([agentId, usageCounts]) => ({\n agentId,\n toolUsageCounts: [...usageCounts].map(([toolName, count]) => ({\n toolName,\n count,\n })),\n })\n ),\n ],\n eagerToolSuppressions: [...this.eagerEventToolSuppressions],\n ...(this._toolOutputRegistry == null\n ? {}\n : {\n toolOutputReferences: this._toolOutputRegistry.snapshotState(runId),\n }),\n };\n }\n\n restoreSubagentResumeState(\n state: SubagentGraphResumeState,\n runId: string\n ): void {\n const toolNodesByKey = new Map(\n [...this._compiledToolNodes].map((node) => {\n const nodeState = node.createSubagentResumeState();\n return [nodeState.stateKey, node] as const;\n })\n );\n if (toolNodesByKey.size !== state.toolNodes.length) {\n throw new Error('Cannot restore changed subagent tool topology.');\n }\n for (const nodeState of state.toolNodes) {\n if (!toolNodesByKey.has(nodeState.stateKey)) {\n throw new Error(\n `Cannot restore subagent tool state for \"${nodeState.stateKey}\".`\n );\n }\n }\n const registry =\n state.toolOutputReferences == null\n ? undefined\n : this.getOrCreateToolOutputRegistry();\n if (state.toolOutputReferences != null && registry == null) {\n throw new Error('Cannot restore disabled tool output references.');\n }\n\n this.toolCallStepIds.clear();\n for (const { toolCallId, stepId } of state.toolCallSteps) {\n this.toolCallStepIds.set(toolCallId, stepId);\n }\n this.sessions.clear();\n for (const { toolName, context } of state.toolSessions) {\n this.sessions.set(toolName, {\n ...context,\n ...(context.files == null\n ? {}\n : { files: context.files.map((file) => ({ ...file })) }),\n });\n }\n for (const nodeState of state.toolNodes) {\n const node = toolNodesByKey.get(nodeState.stateKey)!;\n node.restoreSubagentResumeState(nodeState);\n }\n this.clearEagerEventToolUsageCounts();\n for (const usageState of state.eagerToolUsage) {\n const usageCounts = this.getEagerEventToolUsageCount(usageState.agentId);\n for (const { toolName, count } of usageState.toolUsageCounts) {\n usageCounts.set(toolName, count);\n }\n }\n this.eagerEventToolSuppressions.clear();\n for (const toolName of state.eagerToolSuppressions) {\n this.eagerEventToolSuppressions.add(toolName);\n }\n if (state.toolOutputReferences != null && registry != null) {\n registry.restoreState(runId, state.toolOutputReferences);\n }\n }\n\n /**\n * Returns the shared `ToolOutputReferenceRegistry` for this run,\n * constructing it on first access. Returns `undefined` when the\n * feature is disabled. All ToolNodes compiled from this graph share\n * this single instance so cross-agent `{{…}}` references resolve.\n *\n * @internal Public so `attemptInvoke` can read it through the typed\n * `InvokeContext` and project ToolMessages into LLM-facing annotated\n * copies right before each provider call (see\n * `annotateMessagesForLLM`). Host code should not call this directly\n * — registry mutations outside the ToolNode lifecycle break the\n * partitioning, eviction, and turn-counter invariants.\n */\n public getOrCreateToolOutputRegistry():\n | ToolOutputReferenceRegistry\n | undefined {\n if (this.toolOutputReferences?.enabled !== true) {\n return undefined;\n }\n if (this._toolOutputRegistry == null) {\n this._toolOutputRegistry = new ToolOutputReferenceRegistry({\n maxOutputSize: this.toolOutputReferences.maxOutputSize,\n maxTotalSize: this.toolOutputReferences.maxTotalSize,\n });\n }\n return this._toolOutputRegistry;\n }\n\n /**\n * Single per-Run file checkpointer shared across every ToolNode the\n * graph compiles. Lazily constructed when\n * `toolExecution.local.fileCheckpointing === true` or\n * `toolExecution.cloudflare.fileCheckpointing === true` so\n * multi-agent graphs see ONE snapshot store, not one-per-agent.\n * Returns undefined when checkpointing is disabled or a supported\n * coding-tool engine isn't selected. Exposed via\n * `Run.getFileCheckpointer()` / `Run.rewindFiles()`.\n */\n private _fileCheckpointer?: t.LocalFileCheckpointer;\n /**\n * ToolNodes compiled into this Graph's workflow. Tracked so\n * `clearHeavyState()` can flush their per-Run direct-path turn\n * cache (`directPathTurns`) at end-of-Run — that map intentionally\n * survives `run()` re-entry (resume-stable per Codex P2 #30) but\n * would otherwise grow linearly with tool calls and could collide\n * across Runs if a provider reuses call ids (Codex P2 #33).\n */\n private _compiledToolNodes: Set<{\n clearDirectPathTurns(): void;\n createSubagentResumeState(): SubagentToolNodeResumeState;\n restoreSubagentResumeState(state: SubagentToolNodeResumeState): void;\n }> = new Set();\n private _subagentExecutors = new Set<SubagentExecutor>();\n public getOrCreateFileCheckpointer(): t.LocalFileCheckpointer | undefined {\n // Return the cached instance unconditionally if one exists. The\n // toolExecution check below decides whether to *create* a new\n // one — `clearHeavyState` nulls `this.toolExecution` at end-of-\n // Run, but we want post-Run `Run.rewindFiles()` to still resolve\n // to the checkpointer that captured the writes. Codex P1 #32.\n if (this._fileCheckpointer != null) {\n return this._fileCheckpointer;\n }\n // Eagerly create via the bundle factory so the construction path\n // matches the bundle-only callers (and future bundle-internal\n // cleanup hooks fire). The bundle factory itself accepts a pre-\n // supplied checkpointer when present, so re-injecting this one\n // into every ToolNode is idempotent.\n if (\n this.toolExecution?.engine === 'local' &&\n this.toolExecution.local?.fileCheckpointing === true\n ) {\n const bundle = createLocalCodingToolBundle(\n this.toolExecution.local ?? {}\n );\n this._fileCheckpointer = bundle.checkpointer;\n return this._fileCheckpointer;\n }\n if (\n this.toolExecution?.engine === 'cloudflare-sandbox' &&\n this.toolExecution.cloudflare?.fileCheckpointing === true\n ) {\n const bundle = createCloudflareCodingToolBundle(\n this.toolExecution.cloudflare\n );\n this._fileCheckpointer = bundle.checkpointer;\n return this._fileCheckpointer;\n }\n return undefined;\n }\n}\n\nexport class StandardGraph extends Graph<t.BaseGraphState, t.GraphNode> {\n overrideModel?: t.ChatModel;\n private subagentModelOverride?: t.ChatModel;\n private readonly graphFactory: GraphFactory;\n private readonly supportsMultiAgentChildren: boolean;\n /** Optional compile options passed into workflow.compile() */\n compileOptions?: t.CompileOptions | undefined;\n /** Whether the workflow was actually compiled with a checkpointer. */\n hasCompiledCheckpointer: boolean = false;\n messages: BaseMessage[] = [];\n /** Whether a rebuilt resume seeded the message baseline from its checkpoint. */\n private hasRestoredCheckpointMessages = false;\n /** Cached run messages preserved before clearHeavyState() so getRunMessages() works after cleanup. */\n private cachedRunMessages?: BaseMessage[];\n /** Per-agent discovery snapshots preserved before contexts are reset on cleanup. */\n private cachedDiscoveredTools?: Map<string, string[]>;\n /** Ids of AI turns the agent node returned THIS run; see isRunProducedMessage. */\n protected runProducedAiMessageIds = new Set<string>();\n /** Checkpoint scope whose messages match index-keyed tool snapshots. */\n private originalToolContentCheckpointScope?: string;\n runId: string | undefined;\n /**\n * Identity used to stamp Langfuse runtime scopes and handlers (see\n * `LangfuseRuntimeContext.runId`). Carries an opaque per-instance\n * component: public run ids are unrestricted and may repeat across\n * concurrently executing runs (retries, duplicate submissions,\n * tenant-local message ids), and equal stamps would let those runs adopt\n * each other's scopes. One graph instance = one execution's stamp, shared\n * by the stream handler and every graph-level scope of that execution.\n */\n readonly langfuseScopeRunId: string;\n /**\n * Boundary between historical messages (loaded from conversation state)\n * and messages produced during the current run. Set once in the state\n * reducer when messages first arrive. Used by `getRunMessages()` and\n * multi-agent message filtering — NOT for pruner token counting (the\n * pruner maintains its own `lastTurnStartIndex` in its closure).\n */\n startIndex: number = 0;\n signal?: AbortSignal;\n /** Map of agent contexts by agent ID */\n agentContexts: Map<string, AgentContext> = new Map();\n /** Default agent ID to use */\n defaultAgentId: string;\n /**\n * Host sink for model usage emitted inside subagent child runs. Threaded\n * into each `SubagentExecutor` this graph creates (and from there into\n * child graphs, so nested subagents report too). See\n * {@link t.StandardGraphInput.subagentUsageSink}.\n */\n subagentUsageSink?: t.SubagentUsageSink;\n /** See {@link t.StandardGraphInput.subagentScope}. */\n subagentScope: boolean;\n /** See {@link t.StandardGraphInput.subagentExecutionContext}. */\n private readonly subagentExecutionContext?: t.SubagentExecutionContext;\n /** See {@link t.StandardGraphInput.preemption}. */\n preemption?: t.StreamPreemption;\n /**\n * Stream circuit breakers, resolved once from\n * {@link t.StandardGraphInput.streamLimits}. The stream handler enforces\n * these on every streamed chunk event.\n */\n streamLimits: ResolvedStreamLimits;\n /**\n * Cumulative streamed argument bytes per in-flight tool call, keyed by\n * generation key + chunk index (see `resolveGenerationKey`). Per-run\n * accumulation state, cleared by both reset paths.\n */\n streamedToolCallArgTallies: Map<string, StreamedToolCallArgTally> = new Map();\n /** Streamed chunk events per model generation, keyed by generation key. */\n streamDeltaEventCounts: Map<string, StreamDeltaEventTally> = new Map();\n /** Per-chunk-object, per-generation charge balances (lazily created; see\n * `StreamLimitState`). Reinitialized by both reset paths: a model may\n * retain and re-yield one mutable chunk object, whose nested map would\n * otherwise grow by one attempt-stamped entry per model call for the\n * graph's lifetime. */\n streamLimitChargeCredits?: WeakMap<object, Map<string, number>>;\n /** Run-scoped breaker abort: composed into every model invocation and\n * every SubagentExecutor child signal, and tripped when a stream circuit\n * breaker fires anywhere in the run, so parallel agent nodes' in-flight\n * provider calls and subagents stop consuming quota while the rejection\n * propagates. Recreated by both reset paths — the abort is one-way within\n * a run, and a reused graph must start its next run unaborted. */\n breakerAbort = new AbortController();\n\n /** Incremented whenever `breakerAbort` is replaced. Stamped into each\n * model attempt's metadata ({@link STREAM_LIMIT_EPOCH_KEY}) so the stream\n * handler's consumer-side trip binds to the run that produced the event\n * rather than whichever controller is live when a straggling chunk is\n * finally handled. */\n breakerEpoch = 0;\n\n /** Immutable snapshot of the run's breaker identity (epoch + controller),\n * replaced as ONE object whenever `resetValues` installs a fresh\n * controller. Sites that pause across awaits capture it at entry and\n * revalidate by REFERENCE afterwards — a single identity comparison\n * proves no reset happened while suspended, where separate epoch and\n * controller reads could interleave with one. */\n runScope: RunBreakerScope = Object.freeze({\n epoch: 0,\n controller: this.breakerAbort,\n });\n\n /** Generation keys of model attempts still in flight (see\n * `StreamLimitState.activeStreamLimitGenerations`). Lazily created by the\n * attempt lease; spans resets on purpose. */\n activeStreamLimitGenerations?: Set<string>;\n\n /** The stream-limit error behind an already-fired breaker, whether this\n * graph's own controller tripped or a parent run's breaker arrived through\n * the composed constructor signal (child graphs own separate controllers).\n * Providers can translate either abort into a generic error, and recovery\n * paths must not run in that state. */\n protected resolveTrippedBreakerReason(\n breakerSignal: AbortSignal = this.breakerAbort.signal\n ): StreamLimitExceededError | undefined {\n if (\n breakerSignal.aborted &&\n breakerSignal.reason instanceof StreamLimitExceededError\n ) {\n return breakerSignal.reason;\n }\n if (\n this.signal?.aborted === true &&\n this.signal.reason instanceof StreamLimitExceededError\n ) {\n return this.signal.reason;\n }\n return undefined;\n }\n /**\n * Seals charged against `preemption.maxSeals`. Per-turn: cleared by both\n * reset paths so a fresh turn gets a fresh budget, while a HITL resume —\n * which skips `resetValues` — keeps what it had left.\n */\n private preemptSealBudgetUsed = 0;\n /**\n * Seals honored over the graph's lifetime. Reported by\n * {@link getPreemptStats}, so it deliberately SURVIVES `clearHeavyState()`\n * — a host reads it after `processStream` returns, which is strictly after\n * cleanup runs.\n */\n preemptSealCount = 0;\n /** Boundaries that produced nothing to inject, so the turn stopped early. */\n preemptEmptyBoundaries = 0;\n /**\n * Set between claiming a seal and resolving its boundary. `MultiAgentGraph`\n * fans parallel agents through this one instance against a single host\n * request, so without a one-at-a-time gate several streams would each seal\n * for the same queued message and every loser would take the\n * nothing-to-inject path and cut its answer short.\n */\n private preemptSealInFlight = false;\n /**\n * True when a seal ended the turn without a resume. The assistant turn is\n * real and kept, but it is not the answer the model intended to finish —\n * hosts persist it as unfinished rather than complete.\n */\n preemptIncomplete = false;\n /**\n * `stopReason` from a `PreemptBoundary` hook that halted the turn.\n *\n * Clearing the registry halt is what keeps the sealed turn alive, but the\n * registry held the only copy of the reason — so it is captured here first.\n * Without it `getHaltReason()` returns undefined and a host records a\n * hook-halted turn as an ordinary completion.\n */\n preemptHaltReason: string | undefined;\n /**\n * Agent IDs whose next superstep must return to the agent node. Keyed by\n * agent because `MultiAgentGraph` routes every parallel agent through this\n * same instance, and a single field would let one agent's boundary resume\n * another's turn.\n */\n pendingPreemptReturn = new Set<string>();\n\n constructor(\n {\n runId,\n signal,\n agents,\n langfuse,\n tokenCounter,\n indexTokenCountMap,\n calibrationRatio,\n subagentUsageSink,\n subagentScope,\n subagentExecutionContext,\n preemption,\n streamLimits,\n }: t.StandardGraphInput,\n dependencies?: GraphFactoryDependencies\n ) {\n super();\n this.supportsMultiAgentChildren = dependencies != null;\n this.graphFactory =\n dependencies?.graphFactory ??\n ((request): StandardGraph => {\n if (request.kind !== 'standard') {\n throw new Error(\n 'A polymorphic graph factory is required for multi-agent graph construction.'\n );\n }\n return new StandardGraph(request.input);\n });\n this.runId = runId;\n this.langfuseScopeRunId = `${runId ?? 'graph'}:${nanoid()}`;\n this.signal = signal;\n this.langfuse = langfuse;\n this.subagentUsageSink = subagentUsageSink;\n this.subagentScope = subagentScope === true;\n this.subagentExecutionContext = subagentExecutionContext;\n this.preemption = preemption;\n this.streamLimits = resolveStreamLimits(streamLimits);\n\n if (agents.length === 0) {\n throw new Error('At least one agent configuration is required');\n }\n\n for (const agentConfig of agents) {\n const agentContext = AgentContext.fromConfig(\n agentConfig,\n tokenCounter,\n indexTokenCountMap\n );\n if (calibrationRatio != null && calibrationRatio > 0) {\n agentContext.calibrationRatio = calibrationRatio;\n }\n\n this.agentContexts.set(agentConfig.agentId, agentContext);\n }\n\n this.defaultAgentId = agents[0].agentId;\n }\n\n /* Init */\n\n resetValues(keepContent?: boolean, checkpointScope?: string): void {\n this.resetSubagentCheckpointThreadIds();\n this.messages = [];\n this.hasRestoredCheckpointMessages = false;\n this.cachedRunMessages = undefined;\n this.cachedDiscoveredTools = undefined;\n this.config = resetIfNotEmpty(this.config, undefined);\n if (keepContent !== true) {\n this.contentData = resetIfNotEmpty(this.contentData, []);\n this.contentIndexMap = resetIfNotEmpty(this.contentIndexMap, new Map());\n }\n this.stepKeyIds = resetIfNotEmpty(this.stepKeyIds, new Map());\n /**\n * Clear in-place instead of replacing with a new Map to preserve the\n * shared reference held by ToolNode (passed at construction time).\n * Using resetIfNotEmpty would create a new Map, leaving ToolNode with\n * a stale reference on 2nd+ processStream calls.\n */\n this.toolCallStepIds.clear();\n this.pendingToolCallsByStep.clear();\n this.latestCompletionByStep.clear();\n this.openMessageStepByAgent.clear();\n this.runProducedAiMessageIds.clear();\n this.eagerEventToolExecutions.clear();\n this.clearEagerEventToolUsageCounts();\n this.eagerEventToolCallChunks.clear();\n this.eagerEventToolSuppressions.clear();\n /** Grace sweep instead of a clear: producer loops of straggling\n * attempts use these maps directly and sit outside the consumer-only\n * epoch gate — clearing would hand a cancellation-ignoring provider a\n * fresh allowance at every run start. Entries from the epoch that is\n * ending survive exactly one reset so those stragglers stay on their\n * original budgets; older entries are removed. */\n sweepStaleStreamLimitEntries(\n this.streamedToolCallArgTallies,\n this.breakerEpoch,\n this.activeStreamLimitGenerations\n );\n sweepStaleStreamLimitEntries(\n this.streamDeltaEventCounts,\n this.breakerEpoch,\n this.activeStreamLimitGenerations\n );\n this.streamLimitChargeCredits = undefined;\n /** Run-start is the only safe replacement point for the breaker:\n * end-of-run cleanup must leave it in place so straggling parallel\n * children from the failed run cannot start on a fresh signal.\n * Replaced UNCONDITIONALLY here — a run that failed on an ordinary\n * error leaves the controller un-aborted, and stragglers still settling\n * hold their entry-time capture of it; a late stream-limit trip on that\n * old controller must not cancel the run starting now. */\n this.breakerAbort = new AbortController();\n this.breakerEpoch += 1;\n this.runScope = Object.freeze({\n epoch: this.breakerEpoch,\n controller: this.breakerAbort,\n });\n this.handlerDispatchedStepIds = resetIfNotEmpty(\n this.handlerDispatchedStepIds,\n new Set()\n );\n this.handlerDispatchedEventCounts = resetIfNotEmpty(\n this.handlerDispatchedEventCounts,\n new Map()\n );\n this.messageIdsByStepKey = resetIfNotEmpty(\n this.messageIdsByStepKey,\n new Map()\n );\n this.messageStepHasToolCalls = resetIfNotEmpty(\n this.messageStepHasToolCalls,\n new Map()\n );\n this.messageStepHasTextDeltas = resetIfNotEmpty(\n this.messageStepHasTextDeltas,\n new Set()\n );\n this.reasoningStepHasDeltas = resetIfNotEmpty(\n this.reasoningStepHasDeltas,\n new Set()\n );\n this.prelimMessageIdsByStepKey = resetIfNotEmpty(\n this.prelimMessageIdsByStepKey,\n new Map()\n );\n this.invokedToolIds = resetIfNotEmpty(this.invokedToolIds, undefined);\n this.resetPreemptTurnState();\n this.resetPreemptTotals();\n const hasScopedCheckpoint =\n this.hasCompiledCheckpointer &&\n checkpointScope != null &&\n checkpointScope !== '';\n const preserveOriginalToolContent =\n hasScopedCheckpoint &&\n this.originalToolContentCheckpointScope === checkpointScope;\n for (const context of this.agentContexts.values()) {\n context.reset({ preserveOriginalToolContent });\n }\n this.originalToolContentCheckpointScope = hasScopedCheckpoint\n ? checkpointScope\n : undefined;\n }\n\n /** Seeds the sidecar message view that checkpoint restoration bypasses. */\n override restoreCheckpointMessages(\n messages: BaseMessage[],\n pendingMessages?: BaseMessage[]\n ): void {\n if (this.messages.length > 0) {\n return;\n }\n this.messages =\n pendingMessages == null\n ? [...messages]\n : messagesStateReducer(messages, pendingMessages);\n this.startIndex = this.messages.length;\n this.hasRestoredCheckpointMessages = true;\n this.cachedRunMessages = undefined;\n }\n\n override clearHeavyState(): void {\n this.cachedRunMessages = this.messages.slice(this.startIndex);\n this.cachedDiscoveredTools = new Map(\n Array.from(this.agentContexts, ([agentId, context]) => [\n agentId,\n context.getDiscoveredTools(),\n ])\n );\n super.clearHeavyState();\n this.messages = [];\n this.overrideModel = undefined;\n this.subagentModelOverride = undefined;\n /** Stream-limit accounting (argument tallies, event counts, charge\n * credits) deliberately SURVIVES cleanup: this runs in `processStream`'s\n * finally, which an ordinary parallel-branch failure reaches while\n * sibling attempts are still unwinding on the retained breaker — a\n * cancellation-ignoring provider's late chunks would otherwise recreate\n * their budgets from zero and stream another full allowance. The maps\n * are bounded by in-flight call sizes and `resetValues` clears them at\n * the next run start, where the epoch bump already drops stamped\n * straggler events before accounting. */\n /** Deliberately NOT recreating a tripped breakerAbort here: this runs in\n * `processStream`'s cleanup, which a rejected parallel batch reaches\n * while sibling subagents can still be pre-invoke — a fresh controller\n * would hand them an un-aborted signal and let provider requests start\n * after the run already failed. `resetValues` recreates it when the next\n * run begins. */\n /**\n * Turn state only. The reported totals must outlive cleanup — this runs\n * in `processStream`'s `finally`, and the host reads `getPreemptStats()`\n * after that returns.\n */\n this.resetPreemptTurnState();\n const preserveOriginalToolContent =\n this.hasCompiledCheckpointer &&\n this.originalToolContentCheckpointScope != null;\n for (const context of this.agentContexts.values()) {\n context.reset({ preserveOriginalToolContent });\n }\n }\n\n /**\n * Per-turn seal budget and routing markers. Cleared by both reset paths so\n * a new turn starts with a full budget and no stale resume marker.\n *\n * The REPORTED counters are deliberately not touched here — see\n * {@link resetPreemptTotals}.\n */\n private resetPreemptTurnState(): void {\n this.preemptSealBudgetUsed = 0;\n this.preemptSealInFlight = false;\n this.pendingPreemptReturn.clear();\n }\n\n /**\n * Lifetime seal totals, cleared only when a genuinely new run starts.\n * `clearHeavyState()` must NOT call this: it runs in `processStream`'s\n * `finally`, so zeroing here would make {@link getPreemptStats} and\n * `preemptIncomplete` unreadable for every caller of the method that just\n * produced them.\n */\n private resetPreemptTotals(): void {\n this.preemptSealCount = 0;\n this.preemptEmptyBoundaries = 0;\n this.preemptIncomplete = false;\n this.preemptHaltReason = undefined;\n }\n\n /**\n * True when the host has requested a cooperative seal AND this graph may\n * honor it. Read once per streamed chunk, so it stays property reads plus\n * one host callback — no I/O, no allocation.\n *\n * Non-mutating: a true result only means a seal is worth evaluating. The\n * budget is taken by {@link claimPreemptSeal} once the accumulated chunk is\n * known to be safe, so a chunk that cannot seal never spends budget.\n *\n * Subagent scopes never seal: a steer targets the top-level conversation,\n * and a child run must finish so its parent sees a complete result.\n */\n /** Internal seal preconditions only — no host callback, no side effects. */\n private canClaimPreemptSeal(): boolean {\n /**\n * Resolved and required here with the same rule `dispatchPreemptBoundary`\n * uses. Without it a direct `StandardGraph` consumer that supplies no\n * `runId` could claim a seal on the strength of a global matcher, then hit\n * the boundary's own null-runId guard and get nothing back — truncating\n * the answer for a drain that provably could not run.\n */\n const runId =\n (this.config?.configurable?.run_id as string | undefined) ?? this.runId;\n return (\n !this.subagentScope &&\n this.preemption != null &&\n !this.preemptSealInFlight &&\n this.preemptSealBudgetUsed < resolveMaxSeals(this.preemption.maxSeals) &&\n runId != null &&\n /**\n * A seal only buys room for an injection. With no `PreemptBoundary`\n * matcher live — never registered, or a `once` matcher already\n * consumed — the boundary provably returns nothing and the answer is\n * cut short for no gain, so refuse the seal instead. Failing closed\n * lands on the documented no-preemption behavior: the model finishes\n * and the message waits for the next tool boundary.\n *\n * Same session resolution as `dispatchPreemptBoundary`, or a\n * session-scoped matcher would be visible at one site and not the other.\n */\n this.hookRegistry?.hasDispatchableHookFor('PreemptBoundary', runId) ===\n true\n );\n }\n\n shouldPreemptStream(): boolean {\n return (\n this.canClaimPreemptSeal() && this.preemption?.shouldPreempt() === true\n );\n }\n\n /**\n * Takes the seal slot, or returns false if another stream already holds it.\n *\n * Assumes the caller already polled `shouldPreemptStream()` for THIS chunk,\n * and deliberately does not poll the host again — `StreamPreemption`\n * documents `shouldPreempt` as once per chunk, and a host that consumes a\n * pending flag on read would lose the request to a second call.\n *\n * The guard and both mutations remain one synchronous body, which is what\n * makes this safe under a parallel `MultiAgentGraph`: several agents share\n * one graph and can each see the poll as true, but no `await` can split the\n * claim, so only one takes the slot. The loser keeps streaming normally\n * rather than sealing for a message it would never receive.\n */\n claimPreemptSeal(): boolean {\n if (!this.canClaimPreemptSeal()) {\n return false;\n }\n this.preemptSealInFlight = true;\n this.preemptSealBudgetUsed += 1;\n this.preemptSealCount += 1;\n return true;\n }\n\n /** Releases the seal slot once its boundary has resolved, win or lose. */\n releasePreemptSeal(): void {\n this.preemptSealInFlight = false;\n }\n\n getPreemptStats(): t.PreemptStats {\n return {\n seals: this.preemptSealCount,\n emptyBoundaries: this.preemptEmptyBoundaries,\n };\n }\n\n /* Run Step Processing */\n\n getRunStep(stepId: string): t.RunStep | undefined {\n const index = this.contentIndexMap.get(stepId);\n if (index !== undefined) {\n return this.contentData[index];\n }\n return undefined;\n }\n\n /**\n * Derives the same lane key `dispatchRunStep` stamps as `runStep.agentId`.\n * The multi-agent check gates the lookup because `getAgentContext` signals\n * a miss by throwing: single-agent graphs key every step under `''`, so\n * resolving the context could only ever produce a thrown-and-discarded\n * Error on a per-model-call path.\n */\n protected getStepAgentKey(metadata?: Record<string, unknown>): string {\n if (!metadata || !this.isMultiAgentGraph()) {\n return '';\n }\n try {\n const agentContext = this.getAgentContext(metadata);\n if (agentContext.agentId) {\n return agentContext.agentId;\n }\n } catch (_e) {\n /** No agent context — fall back to the default lane */\n }\n return '';\n }\n\n /**\n * O(1) reverse lookup: both dispatch funnels key the open-message map by\n * `runStep.agentId ?? ''`, so the entry is addressable without scanning.\n */\n private untrackRunStep(runStep: t.RunStep): void {\n this.pendingToolCallsByStep.delete(runStep.id);\n this.latestCompletionByStep.delete(runStep.id);\n const agentKey = runStep.agentId ?? '';\n if (this.openMessageStepByAgent.get(agentKey) === runStep.id) {\n this.openMessageStepByAgent.delete(agentKey);\n }\n }\n\n /**\n * Shared step accounting for both dispatch funnels: a successor step in\n * the same agent lane marks the previous message step as finished — its\n * CLOSED event must precede the successor's ON_RUN_STEP so hosts observe\n * a consistent open-step timeline — then the step is registered in the\n * content maps and tracked as the lane's open message step when\n * applicable.\n */\n protected async trackDispatchedRunStep(\n runStep: t.RunStep,\n metadata?: Record<string, unknown>,\n /**\n * Summarization steps are typed MESSAGE_CREATION but own an explicit\n * completion, and their model call emits `CHAT_MODEL_END` well before the\n * summary is assembled. Tracking one as the lane's open step would let\n * model-end publish an authoritative `completed` closure early — the\n * measured duration would exclude the remaining work and a later\n * post-model failure could no longer change the status. They close\n * through `recordStepCompletion` instead.\n */\n trackAsOpenMessageStep: boolean = true\n ): Promise<void> {\n const agentKey = runStep.agentId ?? '';\n const openMessageStepId = this.openMessageStepByAgent.get(agentKey);\n /**\n * Reserve the content index and register the step SYNCHRONOUSLY, before\n * awaiting the predecessor's closure. Parallel agent lanes dispatch\n * successors concurrently: if both yielded here first, they would push\n * with the same `contentData.length` and `contentIndexMap` would resolve\n * one step id to the other lane's entry, so later deltas and completions\n * would mutate the wrong agent's step. Assigning the index at push time\n * also supersedes whatever the caller computed before this await point.\n */\n runStep.index = this.contentData.length;\n this.contentData.push(runStep);\n this.contentIndexMap.set(runStep.id, runStep.index);\n if (trackAsOpenMessageStep && runStep.type === StepTypes.MESSAGE_CREATION) {\n this.openMessageStepByAgent.set(agentKey, runStep.id);\n } else {\n this.openMessageStepByAgent.delete(agentKey);\n }\n /**\n * Awaited after registration but before the caller dispatches this step's\n * ON_RUN_STEP, so the predecessor's CLOSED event still precedes the\n * successor's start event.\n */\n if (openMessageStepId != null && openMessageStepId !== runStep.id) {\n /**\n * Isolated: this step is already registered in `contentData`, so a\n * predecessor delivery failure rejecting here would abort the caller\n * before it publishes this step's ON_RUN_STEP — leaving the sweep to\n * emit a terminal event for a step that never announced a start.\n */\n try {\n await this.closeRunStep(openMessageStepId, 'completed', { metadata });\n } catch (_e) {\n /** Predecessor delivery must not abort the successor's lifecycle */\n }\n }\n /**\n * Stamped last, after the predecessor's closure has been delivered and\n * immediately before the caller publishes this step's ON_RUN_STEP.\n * `created_at` documents when the step was dispatched, so it must not\n * absorb the latency of an arbitrarily slow predecessor handler.\n */\n runStep.created_at = Date.now();\n }\n\n /**\n * Closes a run step: stamps its terminal status + timestamp on the stored\n * `RunStep` and emits `ON_RUN_STEP_CLOSED`. First close wins — later calls\n * are no-ops — except a `restamp` close, which lets a `completed`\n * TOOL_CALLS step refresh `completed_at` when a late-registered parallel\n * tool call finishes after the step already closed (the eager-execution\n * race). `cancelled`/`failed` are immutable once stamped.\n */\n async closeRunStep(\n stepId: string,\n status: Exclude<t.RunStepStatus, 'in_progress'>,\n options?: t.RunStepCloseOptions\n ): Promise<boolean> {\n if (!stepId) {\n return false;\n }\n const runStep = this.getRunStep(stepId);\n if (!runStep) {\n return false;\n }\n if (runStep.status != null && runStep.status !== 'in_progress') {\n this.untrackRunStep(runStep);\n return false;\n }\n\n const closedAt = options?.at ?? Date.now();\n runStep.status = status;\n if (status === 'completed') {\n runStep.completed_at = closedAt;\n } else if (status === 'cancelled') {\n runStep.cancelled_at = closedAt;\n } else {\n runStep.failed_at = closedAt;\n }\n\n const closedEvent: t.RunStepClosedEvent = {\n id: stepId,\n index: runStep.index,\n type: runStep.type,\n status,\n closed_at: closedAt,\n };\n if (runStep.created_at != null) {\n closedEvent.created_at = runStep.created_at;\n }\n if (runStep.runId != null) {\n closedEvent.runId = runStep.runId;\n }\n if (runStep.agentId != null) {\n closedEvent.agentId = runStep.agentId;\n }\n if (runStep.groupId != null) {\n closedEvent.groupId = runStep.groupId;\n }\n if (runStep.stepIndex != null) {\n closedEvent.stepIndex = runStep.stepIndex;\n }\n this.untrackRunStep(runStep);\n\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_RUN_STEP_CLOSED\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_RUN_STEP_CLOSED,\n closedEvent,\n options?.metadata,\n this\n );\n this.handlerDispatchedStepIds.add(stepId);\n }\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(GraphEvents.ON_RUN_STEP_CLOSED, stepId)\n : undefined;\n try {\n if (this.config) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_RUN_STEP_CLOSED,\n closedEvent,\n this.config\n );\n }\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n return true;\n }\n\n /**\n * Observes one `ON_RUN_STEP_COMPLETED` for a step and closes the step when\n * no registered tool calls remain pending. Steps without pending tracking\n * (summaries, cross-process resume) close on their first completion; the\n * terminal-status guard in `closeRunStep` absorbs duplicate echoes.\n */\n async recordStepCompletion(\n stepId: string,\n options?: t.RecordStepCompletionOptions\n ): Promise<void> {\n if (!stepId) {\n return;\n }\n const { toolCallId, metadata, at } = options ?? {};\n if (at != null) {\n const latest = this.latestCompletionByStep.get(stepId);\n if (latest == null || at > latest) {\n this.latestCompletionByStep.set(stepId, at);\n }\n }\n const closeAt = this.latestCompletionByStep.get(stepId) ?? at;\n const pending = this.pendingToolCallsByStep.get(stepId);\n if (pending == null) {\n await this.closeRunStep(stepId, 'completed', { metadata, at: closeAt });\n return;\n }\n if (toolCallId != null && toolCallId !== '') {\n pending.delete(toolCallId);\n }\n if (pending.size > 0) {\n return;\n }\n await this.closeRunStep(stepId, 'completed', { metadata, at: closeAt });\n }\n\n /**\n * Closes the tracked open MESSAGE_CREATION step for the event's agent lane.\n * Fires on every model end, so the empty-map check short-circuits ahead of\n * resolving the lane key — a turn whose message step already closed through\n * successor-close does no work here.\n */\n async closeOpenMessageStep(\n metadata?: Record<string, unknown>,\n /** Model-end time captured before host handlers ran, so a slow usage sink\n * cannot inflate the step's measured duration. */\n at?: number\n ): Promise<void> {\n if (this.openMessageStepByAgent.size === 0) {\n return;\n }\n const agentKey = this.getStepAgentKey(metadata);\n const openStepId = this.openMessageStepByAgent.get(agentKey);\n if (openStepId == null) {\n return;\n }\n await this.closeRunStep(openStepId, 'completed', { metadata, at });\n }\n\n /**\n * End-of-run sweep: closes every step that never reached a terminal\n * status. Dual-dispatches like any other close — the custom-event channel\n * is usually already torn down here and `safeDispatchCustomEvent` reports\n * that quietly, but callback-only subscribers still receive the terminal\n * signal whenever it is alive.\n */\n async closeUnfinishedRunSteps(\n status: Exclude<t.RunStepStatus, 'in_progress'>,\n at?: number\n ): Promise<void> {\n const closedAt = at ?? Date.now();\n for (const runStep of this.contentData) {\n if (runStep.status != null && runStep.status !== 'in_progress') {\n continue;\n }\n /**\n * Isolated per step: one host handler throwing must not strand the\n * remaining steps `in_progress` with no terminal event. The step is\n * stamped before dispatch either way, so a thrown handler still leaves\n * consistent state behind.\n */\n try {\n await this.closeRunStep(runStep.id, status, { at: closedAt });\n } catch (_e) {\n /** Delivery failure for one step must not halt the sweep */\n }\n }\n this.pendingToolCallsByStep.clear();\n this.latestCompletionByStep.clear();\n this.openMessageStepByAgent.clear();\n }\n\n getAgentContext(metadata: Record<string, unknown> | undefined): AgentContext {\n if (!metadata) {\n throw new Error('No metadata provided to retrieve agent context');\n }\n\n const currentNode = metadata.langgraph_node as string;\n if (!currentNode) {\n throw new Error(\n 'No langgraph_node in metadata to retrieve agent context'\n );\n }\n\n let agentId: string | undefined;\n if (currentNode.startsWith(AGENT)) {\n agentId = currentNode.substring(AGENT.length);\n } else if (currentNode.startsWith(TOOLS)) {\n agentId = currentNode.substring(TOOLS.length);\n } else if (currentNode.startsWith(SUMMARIZE)) {\n agentId = currentNode.substring(SUMMARIZE.length);\n }\n\n const agentContext = this.agentContexts.get(agentId ?? '');\n if (!agentContext) {\n throw new Error(`No agent context found for agent ID ${agentId}`);\n }\n\n return agentContext;\n }\n\n getStepBaseKey(metadata: Record<string, unknown> | undefined): string {\n if (!metadata) return '';\n\n const keyList = this.getInvocationKeyList(metadata);\n if (this.checkKeyList(keyList)) {\n throw new Error('Missing metadata');\n }\n\n return joinKeys(keyList);\n }\n\n getStepKey(metadata: Record<string, unknown> | undefined): string {\n if (!metadata) return '';\n\n const keyList = this.getKeyList(metadata);\n if (this.checkKeyList(keyList)) {\n throw new Error('Missing metadata');\n }\n\n return joinKeys(keyList);\n }\n\n getStepIdByKey(stepKey: string, index?: number): string {\n const stepIds = this.stepKeyIds.get(stepKey);\n if (!stepIds) {\n throw new Error(`No step IDs found for stepKey ${stepKey}`);\n }\n\n if (index === undefined) {\n return stepIds[stepIds.length - 1];\n }\n\n return stepIds[index];\n }\n\n generateStepId(stepKey: string): [string, number] {\n const stepIds = this.stepKeyIds.get(stepKey);\n let newStepId: string | undefined;\n let stepIndex = 0;\n if (stepIds) {\n stepIndex = stepIds.length;\n newStepId = `step_${nanoid()}`;\n stepIds.push(newStepId);\n this.stepKeyIds.set(stepKey, stepIds);\n } else {\n newStepId = `step_${nanoid()}`;\n this.stepKeyIds.set(stepKey, [newStepId]);\n }\n\n return [newStepId, stepIndex];\n }\n\n getKeyList(\n metadata: Record<string, unknown> | undefined\n ): (string | number | undefined)[] {\n if (!metadata) return [];\n\n const keyList = this.getInvocationKeyList(metadata);\n const agentContext = this.getAgentContext(metadata);\n if (\n agentContext.currentTokenType === ContentTypes.THINK ||\n agentContext.currentTokenType === 'think_and_text'\n ) {\n keyList.push('reasoning');\n } else if (agentContext.tokenTypeSwitch === 'content') {\n keyList.push(`post-reasoning-${agentContext.reasoningTransitionCount}`);\n }\n\n return keyList;\n }\n\n private getInvocationKeyList(\n metadata: Record<string, unknown>\n ): (string | number | undefined)[] {\n const keyList = this.getBaseKeyList(metadata);\n if (this.invokedToolIds != null && this.invokedToolIds.size > 0) {\n keyList.push(this.invokedToolIds.size + '');\n }\n return keyList;\n }\n\n private getBaseKeyList(\n metadata: Record<string, unknown>\n ): (string | number | undefined)[] {\n const configurable = this.config?.configurable;\n const runId =\n (metadata.run_id as string | undefined) ??\n (configurable?.run_id as string | undefined) ??\n this.runId;\n const threadId =\n (metadata.thread_id as string | undefined) ??\n (configurable?.thread_id as string | undefined) ??\n runId;\n const checkpointNs =\n (metadata.checkpoint_ns as string | undefined) ??\n (metadata.langgraph_checkpoint_ns as string | undefined) ??\n '';\n const keyList = [\n runId,\n threadId,\n metadata.langgraph_node as string,\n metadata.langgraph_step as number,\n checkpointNs,\n ];\n\n return keyList;\n }\n\n checkKeyList(keyList: (string | number | undefined)[]): boolean {\n return keyList.some((key) => key === undefined);\n }\n\n /* Misc.*/\n\n getRunMessages(): BaseMessage[] | undefined {\n /** Runtime-honest widening: a disposed-but-cached graph (HITL\n * resume/reconnect through a WeakRef cache) can carry null here despite\n * the field type. */\n const messages = this.messages as BaseMessage[] | undefined;\n if (messages == null) {\n return this.cachedRunMessages;\n }\n if (messages.length === 0 && this.cachedRunMessages != null) {\n return this.cachedRunMessages;\n }\n return messages.slice(this.startIndex);\n }\n\n override getDiscoveredTools(agentId?: string): string[] {\n if (agentId != null) {\n const current =\n this.agentContexts.get(agentId)?.getDiscoveredTools() ?? [];\n if (current.length > 0 || this.cachedDiscoveredTools == null) {\n return current;\n }\n return [...(this.cachedDiscoveredTools.get(agentId) ?? [])];\n }\n\n const discoveredTools = new Set<string>();\n for (const context of this.agentContexts.values()) {\n for (const toolName of context.getDiscoveredTools()) {\n discoveredTools.add(toolName);\n }\n }\n if (discoveredTools.size === 0 && this.cachedDiscoveredTools != null) {\n for (const snapshot of this.cachedDiscoveredTools.values()) {\n for (const toolName of snapshot) {\n discoveredTools.add(toolName);\n }\n }\n }\n return Array.from(discoveredTools);\n }\n\n /**\n * True when THIS RUN produced `message` — the provenance the handoff cue\n * gate needs. Tracked as an id set rather than inferred from `startIndex`\n * arithmetic: summarization's remove-all compaction rewrites the live\n * array and leaves `startIndex` stale, so index-based run/host\n * discrimination silently breaks right after a mid-run summarize. Ids\n * survive compaction (retained messages keep theirs), host-supplied\n * prefill messages are never in the set, and membership is O(1) per\n * model call.\n */\n isRunProducedMessage(message: BaseMessage): boolean {\n const id = message.id;\n return (\n typeof id === 'string' &&\n id !== '' &&\n this.runProducedAiMessageIds.has(id)\n );\n }\n\n getContentParts(): t.MessageContentComplex[] | undefined {\n // `messages` can be null/undefined on a graph that has been disposed\n // (clearHeavyState) but is still reachable via a cache (e.g. RedisJobStore's\n // WeakRef) during a HITL resume/reconnect. Guard instead of dereferencing null.\n const messages = this.messages as BaseMessage[] | undefined;\n if (messages == null) {\n return undefined;\n }\n return convertMessagesToContent(messages.slice(this.startIndex));\n }\n\n getCalibrationRatio(): number {\n const context = this.agentContexts.get(this.defaultAgentId);\n return context?.calibrationRatio ?? 1;\n }\n\n getResolvedInstructionOverhead(): number | undefined {\n const context = this.agentContexts.get(this.defaultAgentId);\n return context?.resolvedInstructionOverhead;\n }\n\n getToolCount(): number {\n const context = this.agentContexts.get(this.defaultAgentId);\n return (\n (context?.tools?.length ?? 0) +\n (context?.toolDefinitions?.length ?? 0) +\n /**\n * Graph-managed + host-supplied direct tools (handoff, subagent,\n * `AgentInputs.graphTools`) are bound to the model and token-accounted,\n * so a count that omits them under-reports the run's tool surface\n * (Codex #289 P3).\n */\n (context?.graphTools?.length ?? 0)\n );\n }\n\n /**\n * Get all run steps, optionally filtered by agent ID\n */\n getRunSteps(agentId?: string): t.RunStep[] {\n // `contentData` can be null/undefined on a disposed-but-cached graph during a\n // HITL resume/reconnect; without this guard `[...this.contentData]` throws\n // \"this.contentData is not iterable\".\n const contentData = this.contentData as t.RunStep[] | undefined;\n if (contentData == null) {\n return [];\n }\n if (agentId == null || agentId === '') {\n return [...contentData];\n }\n return contentData.filter((step) => step.agentId === agentId);\n }\n\n /**\n * Get run steps grouped by agent ID\n */\n getRunStepsByAgent(): Map<string, t.RunStep[]> {\n const stepsByAgent = new Map<string, t.RunStep[]>();\n\n for (const step of this.contentData) {\n if (step.agentId == null || step.agentId === '') continue;\n\n const steps = stepsByAgent.get(step.agentId) ?? [];\n steps.push(step);\n stepsByAgent.set(step.agentId, steps);\n }\n\n return stepsByAgent;\n }\n\n /**\n * Get agent IDs that participated in this run\n */\n getActiveAgentIds(): string[] {\n const agentIds = new Set<string>();\n for (const step of this.contentData) {\n if (step.agentId != null && step.agentId !== '') {\n agentIds.add(step.agentId);\n }\n }\n return Array.from(agentIds);\n }\n\n /**\n * Maps contentPart indices to agent IDs for post-run analysis\n * Returns a map where key is the contentPart index and value is the agentId\n */\n getContentPartAgentMap(): Map<number, string> {\n const contentPartAgentMap = new Map<number, string>();\n\n for (const step of this.contentData) {\n if (\n step.agentId != null &&\n step.agentId !== '' &&\n Number.isFinite(step.index)\n ) {\n contentPartAgentMap.set(step.index, step.agentId);\n }\n }\n\n return contentPartAgentMap;\n }\n\n /* Graph */\n\n initializeTools({\n currentTools,\n currentToolMap,\n agentContext,\n }: {\n currentTools?: t.GraphTools;\n currentToolMap?: t.ToolMap;\n agentContext?: AgentContext;\n }): CustomToolNode<t.BaseGraphState> | ToolNode<t.BaseGraphState> {\n const toolDefinitions = agentContext?.toolDefinitions;\n const eventDrivenMode =\n toolDefinitions != null && toolDefinitions.length > 0;\n const traceToolNode = shouldTraceToolNodeForLangfuse({\n runLangfuse: this.langfuse,\n agentLangfuse: agentContext?.langfuse,\n });\n const interruptingToolNames = new Set(this.interruptingToolNames ?? []);\n if (\n this.humanInTheLoop?.enabled === true &&\n (agentContext?.subagentConfigs?.length ?? 0) > 0\n ) {\n interruptingToolNames.add(Constants.SUBAGENT);\n }\n const effectiveInterruptingToolNames =\n interruptingToolNames.size > 0 ? interruptingToolNames : undefined;\n\n if (eventDrivenMode) {\n const schemaTools = createSchemaOnlyTools(toolDefinitions);\n const toolDefMap = new Map(toolDefinitions.map((def) => [def.name, def]));\n const graphTools = agentContext?.graphTools as\n | t.GenericTool[]\n | undefined;\n\n const directToolNames = new Set<string>();\n const allTools = [...schemaTools] as t.GenericTool[];\n const allToolMap: t.ToolMap = new Map(\n schemaTools.map((tool) => [tool.name, tool])\n );\n\n if (graphTools && graphTools.length > 0) {\n for (const tool of graphTools) {\n if ('name' in tool) {\n allTools.push(tool);\n allToolMap.set(tool.name, tool);\n directToolNames.add(tool.name);\n }\n }\n }\n\n const node = new CustomToolNode<t.BaseGraphState>({\n tools: allTools,\n toolMap: allToolMap,\n trace: traceToolNode,\n runLangfuse: this.langfuse,\n agentLangfuse: agentContext?.langfuse,\n eventDrivenMode: true,\n sessions: this.sessions,\n toolDefinitions: toolDefMap,\n // `agentId` is the subagent-scope marker — set ONLY for child-run\n // graphs (hooks fire for child scopes too, via the inherited\n // run_id); `executingAgentId` always identifies the owning agent.\n agentId: this.subagentScope ? agentContext?.agentId : undefined,\n executingAgentId: agentContext?.agentId,\n toolCallStepIds: this.toolCallStepIds,\n toolRegistry: agentContext?.toolRegistry,\n hookRegistry: this.hookRegistry,\n humanInTheLoop: this.humanInTheLoop,\n eagerEventToolExecution: this.eagerEventToolExecution,\n codeSessionToolNames: this.codeSessionToolNames,\n eagerEventToolExecutions: this.eagerEventToolExecutions,\n eagerEventToolUsageCount: this.getEagerEventToolUsageCount(\n agentContext?.agentId\n ),\n eagerEventToolSuppressions: this.eagerEventToolSuppressions,\n toolExecution: this.toolExecution,\n directToolNames: directToolNames.size > 0 ? directToolNames : undefined,\n interruptingToolNames: effectiveInterruptingToolNames,\n maxContextTokens: agentContext?.maxContextTokens,\n maxToolResultChars: agentContext?.maxToolResultChars,\n toolOutputRegistry: this.getOrCreateToolOutputRegistry(),\n fileCheckpointer: this.getOrCreateFileCheckpointer(),\n getBreakerSignal: (): AbortSignal => this.breakerAbort.signal,\n getRunScope: (): RunBreakerScope => this.runScope,\n errorHandler: (data, metadata): Promise<boolean> =>\n StandardGraph.handleToolCallErrorStatic(this, data, metadata),\n });\n this.registerCompiledToolNode(node);\n return node;\n }\n\n const graphTools = agentContext?.graphTools as t.GenericTool[] | undefined;\n const baseTools = (currentTools as t.GenericTool[] | undefined) ?? [];\n const allTraditionalTools =\n graphTools && graphTools.length > 0\n ? [...baseTools, ...graphTools]\n : baseTools;\n /**\n * ToolNode treats a supplied `toolMap` as authoritative (it only derives\n * one from `tools` when the param is undefined), so when graphTools force\n * us to build a merged map here, an absent `currentToolMap` must be\n * seeded from the BASE tools first — otherwise ordinary tools stay bound\n * to the model but vanish from the execution map and every call to them\n * fails as an unknown tool (Codex #289 round 2).\n */\n const traditionalToolMap =\n graphTools && graphTools.length > 0\n ? new Map([\n ...(currentToolMap ??\n new Map(\n baseTools\n .filter(\n (t): t is t.GenericTool & { name: string } => 'name' in t\n )\n .map((t) => [t.name, t] as [string, t.GenericTool])\n )),\n ...graphTools\n .filter((t): t is t.GenericTool & { name: string } => 'name' in t)\n .map((t) => [t.name, t] as [string, t.GenericTool]),\n ])\n : currentToolMap;\n\n const node = new CustomToolNode<t.BaseGraphState>({\n tools: allTraditionalTools,\n toolMap: traditionalToolMap,\n trace: traceToolNode,\n runLangfuse: this.langfuse,\n agentLangfuse: agentContext?.langfuse,\n // `agentId` is the subagent-scope marker — set ONLY for child-run\n // graphs; `executingAgentId` always identifies the owning agent so\n // hooks can attribute the batch even at the top level.\n agentId: this.subagentScope ? agentContext?.agentId : undefined,\n executingAgentId: agentContext?.agentId,\n toolCallStepIds: this.toolCallStepIds,\n errorHandler: (data, metadata): Promise<boolean> =>\n StandardGraph.handleToolCallErrorStatic(this, data, metadata),\n toolRegistry: agentContext?.toolRegistry,\n sessions: this.sessions,\n toolExecution: this.toolExecution,\n codeSessionToolNames: this.codeSessionToolNames,\n interruptingToolNames: effectiveInterruptingToolNames,\n hookRegistry: this.hookRegistry,\n humanInTheLoop: this.humanInTheLoop,\n maxContextTokens: agentContext?.maxContextTokens,\n maxToolResultChars: agentContext?.maxToolResultChars,\n toolOutputRegistry: this.getOrCreateToolOutputRegistry(),\n fileCheckpointer: this.getOrCreateFileCheckpointer(),\n getBreakerSignal: (): AbortSignal => this.breakerAbort.signal,\n getRunScope: (): RunBreakerScope => this.runScope,\n });\n this.registerCompiledToolNode(node);\n return node;\n }\n\n overrideTestModel(\n responses: string[],\n sleep?: number,\n toolCalls?: ToolCall[]\n ): void {\n this.overrideModel = createFakeStreamingLLM({\n responses,\n sleep,\n toolCalls,\n });\n }\n\n /** Explicitly overrides the model used by isolated descendant subagent graphs. */\n setSubagentModelOverride(model: t.ChatModel): void {\n this.subagentModelOverride = model;\n }\n\n getUsageMetadata(\n finalMessage?: BaseMessage\n ): Partial<UsageMetadata> | undefined {\n if (\n finalMessage &&\n 'usage_metadata' in finalMessage &&\n finalMessage.usage_metadata != null\n ) {\n return finalMessage.usage_metadata as Partial<UsageMetadata>;\n }\n }\n\n cleanupSignalListener(currentModel?: t.ChatModel): void {\n if (!this.signal) {\n return;\n }\n const model = this.overrideModel ?? currentModel;\n if (!model) {\n return;\n }\n const client = (model as ChatOpenAI | undefined)?.exposedClient;\n if (!client?.abortHandler) {\n return;\n }\n this.signal.removeEventListener('abort', client.abortHandler);\n client.abortHandler = undefined;\n }\n\n /**\n * Applies a context-overflow recovery plan and hands control to the\n * summarize node, which compacts and then routes straight back here for a\n * retry against the corrected budget.\n *\n * Returning the detour rather than rethrowing is the whole point: the\n * caller never sees the provider's rejection, only a slightly longer turn.\n */\n private beginOverflowRecovery({\n recovery,\n agentContext,\n agentId,\n config,\n originalToolContent,\n estimatedPromptTokens,\n }: {\n recovery: OverflowRecoveryPlan;\n agentContext: AgentContext;\n agentId: string;\n config?: RunnableConfig;\n /** Masking record from the prune pass that built the rejected prompt. */\n originalToolContent?: Map<number, string>;\n /** Size of the rejected prompt, recorded to detect a correction that changed nothing. */\n estimatedPromptTokens?: number;\n }): Partial<t.AgentSubgraphState> {\n const previousBudget = agentContext.maxContextTokens;\n /**\n * Deterministic compaction first. Re-pruning against the corrected budget\n * raises context pressure, which is what drives the pruner's tool-output\n * truncation and observation masking — no model call, no cost, and no\n * message content lost. A summarization call is held back until that has\n * been tried and the provider rejected the prompt again.\n */\n const allowSummarization = agentContext.shouldSummarizeOverflow();\n\n agentContext.preserveOriginalToolContent(originalToolContent);\n agentContext.applyContextBudgetCorrection(\n recovery.budgetTokens,\n estimatedPromptTokens\n );\n agentContext.applyObservedOverflowCalibration(\n recovery.info.provider,\n recovery.observedCalibrationRatio\n );\n\n emitAgentLog(\n config,\n 'warn',\n 'graph',\n 'Provider rejected the prompt as too large — compacting and retrying',\n {\n kind: recovery.info.kind,\n previousBudget,\n recoveredBudget: recovery.budgetTokens,\n providerReportedLimit: recovery.info.limitTokens,\n providerReportedTokens: recovery.info.requestedTokens,\n providerReportedPromptTokens: recovery.info.promptTokens,\n observedCalibrationRatio: recovery.observedCalibrationRatio,\n detectedBy: recovery.info.source,\n attempt: agentContext.overflowRecoveryAttempts,\n compaction: allowSummarization ? 'summarize' : 'compress',\n },\n { runId: this.runId, agentId },\n { force: true }\n );\n\n return {\n summarizationRequest: {\n remainingContextTokens: 0,\n agentId: agentId || agentContext.agentId,\n reason: 'overflow',\n allowSummarization,\n },\n };\n }\n\n createCallModel(agentId = 'default') {\n return async (\n state: t.AgentSubgraphState,\n config?: RunnableConfig\n ): Promise<Partial<t.AgentSubgraphState>> => {\n /** Captured at node ENTRY, before any host-facing await (context-usage\n * dispatch, hooks): a sibling's trip can fail the run and a prompt\n * next run can reset the controller while this node is paused in one\n * of those awaits, and a later capture would bind this attempt to the\n * fresh controller. Trips and reason reads below stay on this\n * capture. */\n const attemptBreaker = this.breakerAbort;\n const attemptBreakerEpoch = this.breakerEpoch;\n /** Already-tripped-at-entry: a parallel sibling's breach has failed\n * the run before this node was scheduled. Rethrow before hooks or the\n * provider call — a custom provider that doesn't synchronously reject\n * an aborted signal would otherwise start another model request on a\n * failed run. */\n const entryTripReason = this.resolveTrippedBreakerReason(\n attemptBreaker.signal\n );\n if (entryTripReason != null) {\n throw entryTripReason;\n }\n const agentContext = this.agentContexts.get(agentId);\n if (!agentContext) {\n throw new Error(`Agent context not found for agentId: ${agentId}`);\n }\n\n if (!config) {\n throw new Error('No config provided');\n }\n\n /**\n * A `PreemptBoundary` hook halted this run and the sealed commit is\n * already in state. Enforced at every model node's ENTRY because that\n * is the only site that covers all of `MultiAgentGraph`'s onward\n * routing at once — static direct edges, Command fan-out, fan-in\n * wrappers, and parallel siblings' subsequent inner-loop turns — none\n * of which consult the halt (the registry signal was deliberately\n * cleared to keep the stream-cancel from destroying the sealed turn).\n * Declining the model call turns every routed-to successor into a\n * no-op, so the outer workflow drains to END without new turns or tool\n * side effects. Reset per turn in `resetPreemptTotals`, so the next\n * `processStream` call starts clean.\n */\n if (this.preemptHaltReason != null) {\n return { messages: [] };\n }\n\n const { messages } = state;\n\n const discoveredNames = extractToolDiscoveries(messages);\n if (discoveredNames.length > 0) {\n agentContext.markToolsAsDiscovered(discoveredNames);\n }\n\n const rawToolsForBinding = resolveLocalToolsForBinding({\n tools: agentContext.getToolsForBinding(),\n toolExecution: this.toolExecution,\n });\n\n /**\n * Anthropic prompt-cache breakpoint on the tool definitions.\n *\n * Without this, the (often static) tool inventory shows up as\n * fresh input on every turn — measured at ~28k tokens/turn for\n * the local engine's coding-tool bundle, dominating per-turn\n * cost even when message-level caching is on.\n *\n * Strategy: partition tools into [static, deferred] and stamp\n * `cache_control: ephemeral` on the last static tool.\n * Discovered deferred tools that arrive across turns sit *after*\n * the breakpoint and don't invalidate the prefix.\n */\n let toolsForBinding = rawToolsForBinding;\n if (\n agentContext.provider === Providers.ANTHROPIC &&\n (agentContext.clientOptions as t.AnthropicClientOptions | undefined)\n ?.promptCache === true\n ) {\n toolsForBinding =\n partitionAndMarkAnthropicToolCache(\n rawToolsForBinding,\n makeIsDeferred(agentContext.toolDefinitions),\n resolvePromptCacheTtl(\n (\n agentContext.clientOptions as\n | t.AnthropicClientOptions\n | undefined\n )?.promptCacheTtl\n )\n ) ?? rawToolsForBinding;\n } else if (\n agentContext.provider === Providers.OPENROUTER &&\n (\n agentContext.clientOptions as\n | t.ProviderOptionsMap[Providers.OPENROUTER]\n | undefined\n )?.promptCache === true\n ) {\n toolsForBinding =\n partitionAndMarkOpenRouterToolCache(\n rawToolsForBinding,\n makeIsDeferred(agentContext.toolDefinitions),\n resolvePromptCacheTtl(\n (\n agentContext.clientOptions as\n | t.ProviderOptionsMap[Providers.OPENROUTER]\n | undefined\n )?.promptCacheTtl\n )\n ) ?? rawToolsForBinding;\n } else if (\n agentContext.provider === Providers.BEDROCK &&\n (\n agentContext.clientOptions as\n | t.BedrockAnthropicClientOptions\n | undefined\n )?.promptCache === true\n ) {\n const bedrockModel = (\n agentContext.clientOptions as { model?: string } | undefined\n )?.model;\n // An omitted model falls back to LangChain's default Claude model (which\n // supports tool caching); only an explicit non-Claude model (e.g. Nova)\n // skips tool marking so its stray marker never leaks into toolConfig.\n if (bedrockModel == null || supportsBedrockToolCache(bedrockModel)) {\n toolsForBinding =\n partitionAndMarkBedrockToolCache(\n rawToolsForBinding,\n makeIsDeferred(agentContext.toolDefinitions)\n ) ?? rawToolsForBinding;\n }\n }\n\n let model =\n this.overrideModel ??\n initializeModel({\n tools: toolsForBinding,\n provider: agentContext.provider,\n clientOptions: agentContext.clientOptions,\n });\n\n if (agentContext.systemRunnable) {\n model = agentContext.systemRunnable.pipe(model as Runnable);\n }\n\n if (agentContext.tokenCalculationPromise) {\n await agentContext.tokenCalculationPromise;\n }\n if (!config.signal) {\n config.signal = this.signal;\n }\n this.config = config;\n\n let messagesToUse = messages;\n let contextUsage: t.ContextUsageEvent | null = null;\n /**\n * Held outside the prune block so overflow recovery — which detours to\n * the summarize node from the invoke catch below — can preserve the\n * same masking record the configured trigger preserves.\n */\n let prunedOriginalToolContent: Map<number, string> | undefined;\n if (\n !agentContext.pruneMessages &&\n agentContext.tokenCounter &&\n agentContext.maxContextTokens != null\n ) {\n agentContext.pruneMessages = createPruneMessages({\n startIndex:\n agentContext.indexTokenCountMap[0] != null ? this.startIndex : 0,\n provider: agentContext.provider,\n tokenCounter: agentContext.tokenCounter,\n maxTokens: agentContext.maxContextTokens,\n maxToolResultChars: agentContext.maxToolResultChars,\n thinkingEnabled: isThinkingEnabled(\n agentContext.provider,\n agentContext.clientOptions\n ),\n indexTokenCountMap: agentContext.indexTokenCountMap,\n contextPruningConfig: agentContext.contextPruningConfig,\n summarizationEnabled: agentContext.summarizationEnabled,\n reserveRatio: agentContext.summarizationConfig?.reserveRatio,\n calibrationRatio: agentContext.calibrationRatio,\n getInstructionTokens: () => agentContext.instructionTokens,\n log: (level, message, data) => {\n emitAgentLog(config, level, 'prune', message, data, {\n runId: this.runId,\n agentId,\n });\n },\n });\n }\n if (agentContext.pruneMessages) {\n const {\n context,\n indexTokenCountMap,\n messagesToRefine,\n prePruneContextTokens,\n remainingContextTokens,\n newOriginalToolContent,\n calibrationRatio,\n resolvedInstructionOverhead,\n contextBudget,\n effectiveInstructionTokens,\n } = agentContext.pruneMessages({\n messages,\n usageMetadata: agentContext.currentUsage,\n lastCallUsage: agentContext.lastCallUsage,\n totalTokensFresh: agentContext.totalTokensFresh,\n });\n prunedOriginalToolContent = newOriginalToolContent;\n /**\n * Masking rewrites tool content in `state.messages` in place, so this\n * map is the only surviving copy of the full output. Persist it on\n * every prune, not just when a summary is about to be written — the\n * pruner closure that produced it is discarded on the next reset, and\n * with it any chance of a later summary restoring the real content.\n * AgentContext bounds what accumulates.\n */\n agentContext.preserveOriginalToolContent(newOriginalToolContent);\n agentContext.indexTokenCountMap = indexTokenCountMap;\n if (calibrationRatio != null && calibrationRatio > 0) {\n agentContext.calibrationRatio = calibrationRatio;\n }\n if (resolvedInstructionOverhead != null) {\n agentContext.resolvedInstructionOverhead =\n resolvedInstructionOverhead;\n const nonToolOverhead =\n agentContext.instructionTokens - agentContext.toolSchemaTokens;\n const calibratedToolTokens = Math.max(\n 0,\n resolvedInstructionOverhead - nonToolOverhead\n );\n const currentToolTokens = agentContext.toolSchemaTokens;\n const variance =\n currentToolTokens > 0\n ? Math.abs(calibratedToolTokens - currentToolTokens) /\n currentToolTokens\n : 1;\n if (variance > CALIBRATION_VARIANCE_THRESHOLD) {\n agentContext.toolSchemaTokens = calibratedToolTokens;\n /** Largest-remainder apportionment keeps the per-tool breakdown\n * summing exactly to the calibrated aggregate */\n if (agentContext.toolTokenCounts != null && currentToolTokens > 0) {\n agentContext.toolTokenCounts = apportionTokenCounts(\n agentContext.toolTokenCounts,\n calibratedToolTokens / currentToolTokens,\n calibratedToolTokens\n );\n }\n }\n }\n messagesToUse = context;\n\n /** Dispatched right before the model invoke — a summarization\n * detour returns from this node without an LLM call, and the\n * post-summary retry produces its own snapshot.\n *\n * The breakdown describes the post-prune prompt: counts from the\n * kept context, message tokens derived from the same calibrated\n * budget math as `remainingContextTokens` (the index map is keyed\n * by pre-prune state indices, so summing it over `context` would\n * missum); `prePruneContextTokens` carries the pre-prune metric. */\n const usageBreakdown = agentContext.getTokenBudgetBreakdown(messages);\n usageBreakdown.messageCount = context.length;\n contextUsage = {\n runId: this.runId,\n agentId,\n breakdown: usageBreakdown,\n contextBudget,\n effectiveInstructionTokens,\n prePruneContextTokens,\n remainingContextTokens,\n calibrationRatio: agentContext.calibrationRatio,\n };\n syncBudgetDerivedFields(contextUsage);\n\n const hasPrunedMessages =\n agentContext.summarizationEnabled === true &&\n Array.isArray(messagesToRefine) &&\n messagesToRefine.length > 0;\n\n if (hasPrunedMessages) {\n const shouldSkip = agentContext.shouldSkipSummarization(\n messages.length\n );\n const triggerResult =\n !shouldSkip &&\n shouldTriggerSummarization({\n trigger: agentContext.summarizationConfig?.trigger,\n maxContextTokens: agentContext.maxContextTokens,\n prePruneContextTokens:\n prePruneContextTokens != null\n ? prePruneContextTokens + agentContext.instructionTokens\n : undefined,\n remainingContextTokens,\n messagesToRefineCount: messagesToRefine.length,\n });\n\n if (triggerResult) {\n emitAgentLog(\n config,\n 'info',\n 'graph',\n 'Summarization triggered',\n undefined,\n { runId: this.runId, agentId }\n );\n emitAgentLog(\n config,\n 'debug',\n 'graph',\n 'Summarization trigger details',\n {\n totalMessages: messages.length,\n remainingContextTokens: remainingContextTokens ?? 0,\n summaryVersion: agentContext.summaryVersion + 1,\n toolSchemaTokens: agentContext.toolSchemaTokens,\n instructionTokens: agentContext.instructionTokens,\n systemMessageTokens: agentContext.systemMessageTokens,\n },\n { runId: this.runId, agentId }\n );\n agentContext.markSummarizationTriggered(messages.length);\n return {\n summarizationRequest: {\n remainingContextTokens: remainingContextTokens ?? 0,\n agentId: agentId || agentContext.agentId,\n },\n };\n }\n\n if (shouldSkip) {\n emitAgentLog(\n config,\n 'debug',\n 'graph',\n 'Summarization skipped — no new messages or per-run cap reached',\n {\n messageCount: messages.length,\n messagesToRefineCount: messagesToRefine.length,\n contextLength: context.length,\n },\n { runId: this.runId, agentId }\n );\n }\n }\n }\n\n let finalMessages = messagesToUse;\n /**\n * Keep the pruner's provider-grounded aggregate as the authoritative\n * baseline, then attribute it across retained messages. Provider\n * transforms can shrink one message while expanding or adding another;\n * per-origin accounting prevents that unrelated shrink from canceling\n * the expansion. Raw counts are frozen before in-place formatters run.\n */\n let providerMessageBaseline:\n | Array<{ rawTokens: number; accountingWeight: number }>\n | undefined;\n const providerMessageOrigins = new WeakMap<BaseMessage, number>();\n if (contextUsage != null && agentContext.tokenCounter != null) {\n const sourceIndices = new WeakMap<BaseMessage, number>();\n for (let i = 0; i < messages.length; i++) {\n sourceIndices.set(messages[i], i);\n }\n providerMessageBaseline = messagesToUse.map((message, index) => {\n const rawTokens = agentContext.tokenCounter!(message);\n const sourceIndex = sourceIndices.get(message);\n const indexedTokens =\n sourceIndex != null\n ? agentContext.indexTokenCountMap[sourceIndex]\n : undefined;\n const accountingWeight =\n indexedTokens != null &&\n Number.isFinite(indexedTokens) &&\n indexedTokens >= 0\n ? indexedTokens\n : rawTokens;\n if (!providerMessageOrigins.has(message)) {\n providerMessageOrigins.set(message, index);\n }\n return { rawTokens, accountingWeight };\n });\n }\n\n const getProviderMessageOriginKey = (\n message: BaseMessage\n ): string | undefined => {\n const type = message.getType();\n if (\n message instanceof ToolMessage &&\n typeof message.tool_call_id === 'string' &&\n message.tool_call_id.length > 0\n ) {\n return `tool:call:${message.tool_call_id}`;\n }\n if (typeof message.id === 'string' && message.id.length > 0) {\n return `${type}:id:${message.id}`;\n }\n return undefined;\n };\n\n /**\n * Provider projections clone messages. Preserve their baseline origin\n * without writing tracking metadata onto the wire. Synthetic fold\n * messages intentionally remain unattributed and are charged in full.\n */\n const trackProviderMessageOrigins = (\n before: BaseMessage[],\n after: BaseMessage[]\n ): BaseMessage[] => {\n if (providerMessageBaseline == null || before === after) {\n return after;\n }\n if (before.length === after.length) {\n for (let i = 0; i < after.length; i++) {\n const origin = providerMessageOrigins.get(before[i]);\n if (\n origin != null &&\n !providerMessageOrigins.has(after[i]) &&\n before[i].getType() === after[i].getType() &&\n !isSyntheticProviderContextMessage(after[i])\n ) {\n providerMessageOrigins.set(after[i], origin);\n }\n }\n return after;\n }\n\n const keyedOrigins = new Map<string, number | null>();\n for (const message of before) {\n const origin = providerMessageOrigins.get(message);\n const key = getProviderMessageOriginKey(message);\n if (origin == null || key == null) {\n continue;\n }\n keyedOrigins.set(key, keyedOrigins.has(key) ? null : origin);\n }\n for (const message of after) {\n if (\n providerMessageOrigins.has(message) ||\n isSyntheticProviderContextMessage(message)\n ) {\n continue;\n }\n const key = getProviderMessageOriginKey(message);\n const origin = key != null ? keyedOrigins.get(key) : undefined;\n if (origin != null) {\n providerMessageOrigins.set(message, origin);\n }\n }\n return after;\n };\n\n if (agentContext.useLegacyContent) {\n const before = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n before,\n formatContentStrings(before)\n );\n }\n\n const maxProviderToolResultChars =\n agentContext.maxToolResultChars ??\n calculateMaxToolResultChars(agentContext.maxContextTokens);\n const beforeToolStreamProjection = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeToolStreamProjection,\n projectToolStreamContentForProvider(beforeToolStreamProjection)\n );\n const beforeToolInputProjection = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeToolInputProjection,\n projectToolCallInputs(\n beforeToolInputProjection,\n calculateMaxToolCallInputChars(agentContext.maxContextTokens)\n )\n );\n\n const lastMessageX =\n finalMessages.length >= 2\n ? finalMessages[finalMessages.length - 2]\n : null;\n const lastMessageY =\n finalMessages.length >= 1\n ? finalMessages[finalMessages.length - 1]\n : null;\n\n const anthropicLike = isAnthropicLike(\n agentContext.provider,\n agentContext.clientOptions as { model?: string }\n );\n\n if (\n agentContext.provider === Providers.BEDROCK &&\n lastMessageX instanceof AIMessageChunk &&\n lastMessageY instanceof ToolMessage &&\n typeof lastMessageX.content === 'string'\n ) {\n const trimmed = lastMessageX.content.trim();\n finalMessages[finalMessages.length - 2].content =\n trimmed.length > 0 ? [{ type: 'text' as const, text: trimmed }] : '';\n }\n\n const localProviderOverflowMeasurements = new WeakMap<\n object,\n {\n contextBudget: number;\n estimatedPromptTokens: number;\n }\n >();\n const measureProviderPayload = (\n candidate: BaseMessage[],\n contextBudgetOverride?: number,\n forceRawRecount = false\n ): {\n fits: boolean;\n projectedMessageTokens?: number;\n availableMessageTokens?: number;\n contextBudget?: number;\n effectiveInstructionTokens?: number;\n } => {\n const contextBudget =\n contextBudgetOverride ?? contextUsage?.contextBudget;\n const effectiveInstructionTokens =\n contextUsage?.effectiveInstructionTokens ??\n (forceRawRecount ? agentContext.instructionTokens : undefined);\n if (\n agentContext.tokenCounter == null ||\n contextBudget == null ||\n effectiveInstructionTokens == null\n ) {\n return { fits: true };\n }\n const availableMessageTokens = Math.max(\n 0,\n contextBudget - effectiveInstructionTokens\n );\n let usageRatio =\n agentContext.calibrationRatio > 0 ? agentContext.calibrationRatio : 1;\n if (\n contextUsage?.calibrationRatio != null &&\n contextUsage.calibrationRatio > 0\n ) {\n usageRatio = contextUsage.calibrationRatio;\n }\n if (forceRawRecount) {\n usageRatio = Math.max(1, usageRatio);\n }\n const baselineRemaining = contextUsage?.remainingContextTokens;\n const accountedMessageTokens =\n !forceRawRecount &&\n providerMessageBaseline != null &&\n baselineRemaining != null &&\n Number.isFinite(baselineRemaining)\n ? availableMessageTokens -\n Math.min(availableMessageTokens, Math.max(0, baselineRemaining))\n : undefined;\n\n let projectedMessageTokens: number;\n if (accountedMessageTokens != null && providerMessageBaseline != null) {\n const replyPrimerTokens = Math.round(\n REPLY_PRIMER_TOKENS * usageRatio\n );\n const rawWeights: Record<string, number> = {};\n let totalWeight = 0;\n for (let i = 0; i < providerMessageBaseline.length; i++) {\n const weight = providerMessageBaseline[i].accountingWeight;\n rawWeights[i] = weight;\n totalWeight += weight;\n }\n const attributableTokens =\n totalWeight > 0\n ? Math.min(\n Math.max(0, accountedMessageTokens - replyPrimerTokens),\n Math.round(totalWeight * usageRatio)\n )\n : 0;\n const apportionedTokens =\n totalWeight > 0\n ? apportionTokenCounts(\n rawWeights,\n attributableTokens / totalWeight,\n attributableTokens\n )\n : {};\n const attributedByOrigin = providerMessageBaseline.map(\n (_, origin) => apportionedTokens[origin] || 0\n );\n projectedMessageTokens = Math.max(\n replyPrimerTokens,\n accountedMessageTokens - attributableTokens\n );\n let newRawTokens = 0;\n const usedOrigins = new Set<number>();\n for (const message of candidate) {\n const rawTokens = agentContext.tokenCounter(message);\n const origin = providerMessageOrigins.get(message);\n if (origin == null || usedOrigins.has(origin)) {\n newRawTokens += rawTokens;\n continue;\n }\n usedOrigins.add(origin);\n projectedMessageTokens += Math.max(\n 0,\n attributedByOrigin[origin] +\n Math.round(\n (rawTokens - providerMessageBaseline[origin].rawTokens) *\n usageRatio\n )\n );\n }\n projectedMessageTokens += Math.round(newRawTokens * usageRatio);\n } else {\n let rawTokens = REPLY_PRIMER_TOKENS;\n for (const message of candidate) {\n rawTokens += agentContext.tokenCounter(message);\n }\n projectedMessageTokens = Math.round(rawTokens * usageRatio);\n }\n return {\n fits: projectedMessageTokens <= availableMessageTokens,\n projectedMessageTokens,\n availableMessageTokens,\n contextBudget,\n effectiveInstructionTokens,\n };\n };\n\n const createProviderPayloadOverflowError = ({\n projection,\n provider,\n info,\n }: {\n projection: ReturnType<typeof measureProviderPayload>;\n provider?: Providers;\n info: string;\n }): ContextOverflowError => {\n const error = new ContextOverflowError(\n JSON.stringify({\n type: 'final_context_overflow',\n info,\n provider,\n projectedMessageTokens: projection.projectedMessageTokens,\n availableMessageTokens: projection.availableMessageTokens,\n })\n );\n if (\n projection.projectedMessageTokens != null &&\n projection.contextBudget != null &&\n projection.effectiveInstructionTokens != null\n ) {\n localProviderOverflowMeasurements.set(error, {\n contextBudget: projection.contextBudget,\n estimatedPromptTokens:\n projection.projectedMessageTokens +\n projection.effectiveInstructionTokens,\n });\n }\n return error;\n };\n\n const applyProviderMessageTransforms = (\n candidate: BaseMessage[]\n ): BaseMessage[] => {\n let transformed = candidate;\n if (\n isThinkingEnabled(agentContext.provider, agentContext.clientOptions)\n ) {\n /**\n * Current-run AI messages may validly omit a thinking block. The\n * boundary prevents them from being mistaken for foreign history.\n */\n const before = transformed;\n transformed = trackProviderMessageOrigins(\n before,\n ensureThinkingBlockInMessages(\n before,\n agentContext.provider,\n config,\n this.startIndex\n )\n );\n }\n\n /**\n * Tool-less destinations cannot send inherited tool blocks without a\n * tool schema, so fold those interactions into provider-valid content.\n */\n if (toolsForBinding == null || toolsForBinding.length === 0) {\n const before = transformed;\n transformed = trackProviderMessageOrigins(\n before,\n foldToolBlocksForToollessAgent(before, config)\n );\n if (agentContext.useLegacyContent) {\n const beforeLegacyFormat = transformed;\n transformed = trackProviderMessageOrigins(\n beforeLegacyFormat,\n formatContentStrings(beforeLegacyFormat)\n );\n }\n }\n /**\n * Applied HERE for the primary so the cue is part of the MEASURED\n * payload — the pre-invoke projection and overflow guard run on this\n * stage's output, and a post-measure append could push a just-fits\n * prompt over budget unreported (#346 round 2). The attemptInvoke\n * funnel re-keys per SERVING provider: it strips this cue for a\n * tolerant fallback and adds it for a Claude fallback behind a\n * tolerant primary.\n */\n if (\n isAnthropicLike(\n agentContext.provider,\n agentContext.clientOptions as { model?: string }\n )\n ) {\n const before = transformed;\n transformed = trackProviderMessageOrigins(\n before,\n appendPredecessorHandoffCue(before, (message) =>\n this.isRunProducedMessage(message)\n )\n );\n }\n return transformed;\n };\n\n const toolOutputRegistry = this.getOrCreateToolOutputRegistry();\n const providerRunId = config.configurable?.run_id as string | undefined;\n const projectProviderReferences = (\n candidate: BaseMessage[]\n ): BaseMessage[] =>\n trackProviderMessageOrigins(\n candidate,\n annotateMessagesForLLM(candidate, toolOutputRegistry, providerRunId)\n );\n\n const compactSyntheticProviderContext = (\n candidate: BaseMessage[]\n ): BaseMessage[] => {\n const synthetic: Array<{\n index: number;\n message: HumanMessage;\n chars: number;\n }> = [];\n for (let i = 0; i < candidate.length; i++) {\n const message = candidate[i];\n if (\n !(message instanceof HumanMessage) ||\n !isSyntheticProviderContextMessage(message)\n ) {\n continue;\n }\n const content = message.content;\n synthetic.push({\n index: i,\n message,\n chars: getToolContentCharLength(content),\n });\n }\n if (synthetic.length === 0) {\n return candidate;\n }\n\n const buildCandidate = (scale: number): BaseMessage[] => {\n const compacted = [...candidate];\n for (const { index, message, chars } of synthetic) {\n const content = compactToolContent(\n message.content,\n Math.floor(chars * scale)\n ).content;\n compacted[index] = new HumanMessage({\n content,\n id: message.id,\n name: message.name,\n additional_kwargs: message.additional_kwargs,\n response_metadata: message.response_metadata,\n });\n }\n return compacted;\n };\n\n let best = buildCandidate(0);\n if (!measureProviderPayload(best).fits) {\n return candidate;\n }\n let low = 0;\n let high = 1;\n for (let i = 0; i < 12; i++) {\n const scale = (low + high) / 2;\n const attempt = buildCandidate(scale);\n if (measureProviderPayload(attempt).fits) {\n best = attempt;\n low = scale;\n } else {\n high = scale;\n }\n }\n return best;\n };\n\n let artifactBaseMessages: BaseMessage[] | undefined;\n if (lastMessageY instanceof ToolMessage) {\n let artifactCandidate = finalMessages;\n if (anthropicLike) {\n artifactCandidate = trackProviderMessageOrigins(\n finalMessages,\n projectAnthropicArtifactContent(\n finalMessages,\n maxProviderToolResultChars\n )\n );\n } else if (\n (isOpenAILike(agentContext.provider) &&\n agentContext.provider !== Providers.DEEPSEEK) ||\n isGoogleLike(agentContext.provider)\n ) {\n artifactCandidate = trackProviderMessageOrigins(\n finalMessages,\n projectArtifactPayload(finalMessages, maxProviderToolResultChars)\n );\n }\n\n if (artifactCandidate !== finalMessages) {\n const projection = measureProviderPayload(artifactCandidate);\n if (projection.fits) {\n artifactBaseMessages = finalMessages;\n finalMessages = artifactCandidate;\n } else {\n emitAgentLog(\n config,\n 'warn',\n 'graph',\n 'Artifact payload omitted because it exceeds the remaining context budget',\n {\n projectedMessageTokens: projection.projectedMessageTokens,\n availableMessageTokens: projection.availableMessageTokens,\n },\n { runId: this.runId, agentId }\n );\n }\n }\n }\n\n finalMessages = projectProviderReferences(\n applyProviderMessageTransforms(finalMessages)\n );\n let finalProjection = measureProviderPayload(finalMessages);\n if (artifactBaseMessages != null) {\n if (!finalProjection.fits) {\n finalMessages = projectProviderReferences(\n applyProviderMessageTransforms(artifactBaseMessages)\n );\n finalProjection = measureProviderPayload(finalMessages);\n emitAgentLog(\n config,\n 'warn',\n 'graph',\n 'Artifact payload omitted after final provider formatting exceeded the remaining context budget',\n {\n projectedMessageTokens: finalProjection.projectedMessageTokens,\n availableMessageTokens: finalProjection.availableMessageTokens,\n },\n { runId: this.runId, agentId }\n );\n }\n }\n if (!finalProjection.fits) {\n const compacted = compactSyntheticProviderContext(finalMessages);\n if (compacted !== finalMessages) {\n finalMessages = compacted;\n finalProjection = measureProviderPayload(finalMessages);\n emitAgentLog(\n config,\n finalProjection.fits ? 'warn' : 'error',\n 'graph',\n finalProjection.fits\n ? 'Synthetic provider context compacted to fit the final payload budget'\n : 'Final provider payload still exceeds budget after synthetic context compaction',\n {\n projectedMessageTokens: finalProjection.projectedMessageTokens,\n availableMessageTokens: finalProjection.availableMessageTokens,\n },\n { runId: this.runId, agentId }\n );\n }\n }\n\n /**\n * Mistral rejects consecutive user turns outright; Bedrock's Converse\n * API documents strict user/assistant alternation across its model\n * families, with enforcement varying by family (Claude on Converse\n * currently tolerates the shape — verified live — but the payload is\n * normalized for all of them rather than betting on leniency). Four\n * sites can emit them — the `PostToolBatch` and `PreemptBoundary` hook\n * boundaries (a consolidated context message followed by one\n * `HumanMessage` per injected entry), a queue drain carrying more than\n * one steer, and `run.ts`'s pre-stream context push onto a payload that\n * already ends on a user turn.\n *\n * Normalized here, at the last provider-facing hop, rather than at any\n * one boundary: the boundaries must keep per-message identity, because\n * `additional_kwargs.source`/`skillName` drive steer rendering and the\n * trailing-steer anchor downstream. Graph state and the host's\n * persisted messages are untouched — this shapes only what goes on the\n * wire, for the providers that actually care.\n *\n * Runs AFTER synthetic-context compaction: that pass can rewrite or\n * drop messages, so coalescing has to see its output, and it is the\n * last shaping step before the cache breakpoint is chosen.\n */\n if (strictAlternationProviders.has(agentContext.provider)) {\n /**\n * Wrapped like every other provider transform: the merged message is\n * a NEW object, and without re-attachment the final pre-invoke\n * measurement would drop both source turns' calibrated shares and\n * recharge the merge at full raw estimate — enough to flip a\n * just-fits payload (the synthetic-context compaction above binary\n * searches to exactly that) into a spurious pre-invoke overflow. The\n * merge keeps the first source's id, so the keyed branch re-attaches\n * that origin; the absorbed turn's tokens are charged as new raw\n * growth, which only ever under-estimates by less than the old\n * behavior over-estimated.\n */\n const beforeCoalesce = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeCoalesce,\n coalesceAdjacentUserTurns(beforeCoalesce)\n );\n }\n\n // Determine the prompt-cache strategy up front. Two distinct facts:\n //\n // `providerPromptCacheEnabled` — prompt caching is on for this provider\n // at all. This drives orphan cleanup, because EVERY cached send must be\n // sanitized — including the system-runnable path, where AgentContext (not\n // this node) adds the body marker.\n //\n // `willAddTailCache` — THIS node will add the marker itself. Anthropic /\n // OpenRouter defer to the system runnable when one owns the system-prompt\n // breakpoint, so they exclude that case; Bedrock always marks here.\n const anthropicPromptCacheEnabled =\n agentContext.provider === Providers.ANTHROPIC &&\n (agentContext.clientOptions as t.AnthropicClientOptions | undefined)\n ?.promptCache === true;\n const openRouterPromptCacheEnabled =\n agentContext.provider === Providers.OPENROUTER &&\n (\n agentContext.clientOptions as\n | t.ProviderOptionsMap[Providers.OPENROUTER]\n | undefined\n )?.promptCache === true;\n // Message/system cache points work on all cache-capable Bedrock models,\n // including Nova (verified live: HTTP 200 with cacheWriteInputTokens). Only\n // the tool checkpoint is Claude-only, so this is gated on promptCache alone.\n const bedrockPromptCacheEnabled =\n agentContext.provider === Providers.BEDROCK &&\n (\n agentContext.clientOptions as\n | t.BedrockAnthropicClientOptions\n | undefined\n )?.promptCache === true;\n const providerPromptCacheEnabled =\n anthropicPromptCacheEnabled ||\n openRouterPromptCacheEnabled ||\n bedrockPromptCacheEnabled;\n\n // Intentionally broad: runs when the pruner wasn't used, when any\n // post-pruning transform (ensureThinkingBlock, etc.) reassigned\n // finalMessages, OR when this is a prompt-cached send. The last clause\n // matters because the marker is now applied AFTER this gate (and, for the\n // system-runnable path, in AgentContext entirely): without it, a cached\n // send whose pruner returned the context unchanged would skip cleanup and\n // could ship orphaned AI/tool pairs from persisted history.\n // sanitizeOrphanToolBlocks fast-paths to a Set diff check when no orphans\n // exist, so the cost is negligible.\n const needsOrphanSanitize =\n anthropicLike &&\n (!agentContext.pruneMessages ||\n finalMessages !== messagesToUse ||\n providerPromptCacheEnabled);\n if (needsOrphanSanitize) {\n const beforeSanitize = finalMessages.length;\n const beforeSanitizeMessages = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeSanitizeMessages,\n sanitizeOrphanToolBlocks(beforeSanitizeMessages, (source, clone) => {\n const origin = providerMessageOrigins.get(source);\n if (origin != null) {\n providerMessageOrigins.set(clone, origin);\n }\n })\n );\n if (finalMessages.length !== beforeSanitize) {\n emitAgentLog(\n config,\n 'warn',\n 'sanitize',\n 'Orphan tool blocks removed',\n {\n before: beforeSanitize,\n after: finalMessages.length,\n dropped: beforeSanitize - finalMessages.length,\n },\n { runId: this.runId, agentId }\n );\n }\n }\n\n // Place the single tail prompt-cache breakpoint LAST, after thinking\n // normalization and orphan sanitization. ensureThinkingBlockInMessages can\n // fold a trailing non-thinking AI→Tool chain into a `[Previous agent\n // context]` HumanMessage whose builder copies text but not cache_control /\n // cachePoint, and sanitizeOrphanToolBlocks can drop the anchored block — so\n // marking earlier would let the only breakpoint vanish before the model\n // call (zero message caching). Anchoring on the final message list keeps\n // the marker on a block that actually ships. The system-runnable path\n // adds its body marker in AgentContext, so this node skips it there.\n if (\n (anthropicPromptCacheEnabled || openRouterPromptCacheEnabled) &&\n !agentContext.systemRunnable\n ) {\n const beforeCacheControl = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeCacheControl,\n addTailCacheControl<BaseMessage>(\n beforeCacheControl,\n resolvePromptCacheTtl(\n anthropicPromptCacheEnabled\n ? (\n agentContext.clientOptions as\n | t.AnthropicClientOptions\n | undefined\n )?.promptCacheTtl\n : (\n agentContext.clientOptions as\n | t.ProviderOptionsMap[Providers.OPENROUTER]\n | undefined\n )?.promptCacheTtl\n )\n )\n );\n } else if (bedrockPromptCacheEnabled) {\n const bedrockOptions = agentContext.clientOptions as\n | t.BedrockAnthropicClientOptions\n | undefined;\n // Non-Claude models (Nova) reject the extended 1h TTL, so resolve it\n // against the model — message/system caching stays on, clamped to 5m.\n const beforeCacheControl = finalMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeCacheControl,\n addBedrockTailCacheControl<BaseMessage>(\n beforeCacheControl,\n resolveBedrockPromptCacheTtl(\n bedrockOptions?.promptCacheTtl,\n (bedrockOptions as { model?: string } | undefined)?.model\n )\n )\n );\n }\n\n const fallbackBaseMessages = finalMessages;\n const beforeFinalProviderProjection = fallbackBaseMessages;\n finalMessages = trackProviderMessageOrigins(\n beforeFinalProviderProjection,\n projectMessagesForProvider({\n model: (this.overrideModel ?? model) as t.ChatModel,\n messages: beforeFinalProviderProjection,\n provider: agentContext.provider,\n maxToolResultChars: maxProviderToolResultChars,\n callOptions: config,\n })\n );\n\n /**\n * Prompt-cache placement and orphan sanitization are provider-wire\n * transforms too. Re-measure after both so no content added after the\n * earlier artifact/synthetic compaction decision can bypass the guard.\n */\n finalProjection = measureProviderPayload(finalMessages);\n const preInvokeContextOverflowError = !finalProjection.fits\n ? createProviderPayloadOverflowError({\n projection: finalProjection,\n provider: agentContext.provider,\n info: 'Provider message formatting exceeded the context budget and no safe synthetic-context compaction could make it fit.',\n })\n : undefined;\n\n if (\n agentContext.lastStreamCall != null &&\n agentContext.streamBuffer != null\n ) {\n const timeSinceLastCall = Date.now() - agentContext.lastStreamCall;\n if (timeSinceLastCall < agentContext.streamBuffer) {\n const timeToWait =\n Math.ceil((agentContext.streamBuffer - timeSinceLastCall) / 1000) *\n 1000;\n await sleep(timeToWait);\n }\n }\n\n agentContext.lastStreamCall = Date.now();\n agentContext.markTokensStale();\n\n let result: Partial<t.BaseGraphState> | undefined;\n const fallbacks =\n (agentContext.clientOptions as t.LLMConfig | undefined)?.fallbacks ??\n [];\n\n if (\n finalMessages.length === 0 &&\n !agentContext.hasPendingCompactionSummary()\n ) {\n const budgetBreakdown = agentContext.getTokenBudgetBreakdown(messages);\n const breakdown = agentContext.formatTokenBudgetBreakdown(messages);\n const instructionsExceedBudget =\n budgetBreakdown.instructionTokens > budgetBreakdown.maxContextTokens;\n\n let guidance: string;\n if (instructionsExceedBudget) {\n const toolPct =\n budgetBreakdown.toolSchemaTokens > 0\n ? Math.round(\n (budgetBreakdown.toolSchemaTokens /\n budgetBreakdown.instructionTokens) *\n 100\n )\n : 0;\n guidance =\n toolPct > 50\n ? `Tool definitions consume ${budgetBreakdown.toolSchemaTokens} tokens (${toolPct}% of instructions) across ${budgetBreakdown.toolCount} tools, exceeding maxContextTokens (${budgetBreakdown.maxContextTokens}). Reduce the number of tools or increase maxContextTokens.`\n : `Instructions (${budgetBreakdown.instructionTokens} tokens) exceed maxContextTokens (${budgetBreakdown.maxContextTokens}). Increase maxContextTokens or shorten the system prompt.`;\n if (agentContext.summarizationEnabled === true) {\n guidance +=\n ' Summarization was skipped because the summary would further increase the instruction overhead.';\n }\n } else {\n guidance =\n 'Please increase the context window size or make your message shorter.';\n }\n\n emitAgentLog(\n config,\n 'error',\n 'graph',\n 'Empty messages after pruning',\n {\n messageCount: messages.length,\n instructionsExceedBudget,\n breakdown,\n },\n { runId: this.runId, agentId }\n );\n throw new Error(\n JSON.stringify({\n type: 'empty_messages',\n info: `Message pruning removed all messages as none fit in the context window. ${guidance}\\n${breakdown}`,\n })\n );\n }\n\n /** Past the empty-prompt guard — a model call is now guaranteed */\n if (contextUsage != null) {\n if (\n finalProjection.projectedMessageTokens != null &&\n finalProjection.availableMessageTokens != null\n ) {\n contextUsage.breakdown.messageCount = finalMessages.length;\n contextUsage.remainingContextTokens = Math.max(\n 0,\n finalProjection.availableMessageTokens -\n finalProjection.projectedMessageTokens\n );\n }\n syncBudgetDerivedFields(contextUsage);\n /** Awaited so async host handlers receive the pre-invoke snapshot\n * before any model deltas are emitted */\n await safeDispatchCustomEvent(\n GraphEvents.ON_CONTEXT_USAGE,\n contextUsage,\n config\n );\n }\n\n const invokeStart = Date.now();\n const invokeMeta = { runId: this.runId, agentId };\n emitAgentLog(\n config,\n 'debug',\n 'graph',\n 'Invoking LLM',\n {\n messageCount: finalMessages.length,\n provider: agentContext.provider,\n },\n invokeMeta,\n { force: true }\n );\n\n const langfuse = resolveLangfuseConfig(\n this.langfuse,\n agentContext.langfuse\n );\n const traceMetadata = createLangfuseTraceMetadata({\n messageId: this.runId,\n parentMessageId: config.configurable?.requestBody?.parentMessageId,\n agentId,\n agentName: agentContext.name,\n });\n let langfuseHandler: CallbackEntry | undefined;\n let invokeConfig = {\n ...config,\n /** The run-scoped breaker composed in, so a stream-limit trip in one\n * parallel agent node also cancels sibling nodes' in-flight model\n * calls, not only their subagents. */\n signal: composeAbortSignals(config.signal, attemptBreaker.signal),\n metadata: {\n ...(config.metadata ?? {}),\n ...traceMetadata,\n /** Canonical agent identity, stamped OUTSIDE trace-metadata\n * filtering: `createLangfuseTraceMetadata` drops values over its\n * length cap, but scope trust (`isForeignScope`) needs the id\n * verbatim regardless of length. */\n agentId,\n [STREAM_LIMIT_EPOCH_KEY]: attemptBreakerEpoch,\n },\n };\n initializeLangfuseTracing(langfuse);\n if (findCallback(config.callbacks, isLangfuseCallbackHandler) == null) {\n langfuseHandler = createLangfuseHandler({\n langfuse,\n userId: config.configurable?.user_id as string | undefined,\n sessionId: config.configurable?.thread_id as string | undefined,\n traceMetadata,\n tags: ['librechat', 'agent'],\n traceIdSeed:\n langfuse?.deterministicTraceId === true ? this.runId : undefined,\n runId: this.langfuseScopeRunId,\n toolOutputTracing: hasToolOutputTracingConfig(\n this.langfuse,\n agentContext.langfuse\n )\n ? resolveToolOutputTracingConfig(\n this.langfuse,\n agentContext.langfuse\n )\n : undefined,\n });\n if (langfuseHandler != null) {\n invokeConfig = {\n ...invokeConfig,\n callbacks: appendCallbacks(invokeConfig.callbacks, [\n langfuseHandler,\n ]),\n };\n }\n }\n const metadata = config.metadata as Record<string, unknown>;\n\n try {\n if (preInvokeContextOverflowError != null) {\n throw preInvokeContextOverflowError;\n }\n /** Rechecked after the pre-invoke awaits (context-usage dispatch,\n * hooks): a sibling can trip the breaker while this node is paused\n * in one of them, and a provider that doesn't synchronously reject\n * an aborted signal would still start the request. */\n {\n const preInvokeTrip = this.resolveTrippedBreakerReason(\n attemptBreaker.signal\n );\n if (preInvokeTrip != null) {\n throw preInvokeTrip;\n }\n }\n result = await withLangfuseRuntimeScope(\n resolveLangfuseRuntimeScope({\n runLangfuse: this.langfuse,\n langfuseOverlay: agentContext.langfuse,\n runId: this.langfuseScopeRunId,\n agentId,\n }),\n () =>\n attemptInvoke(\n {\n model: (this.overrideModel ?? model) as t.ChatModel,\n messages: finalMessages,\n provider: agentContext.provider,\n context: this,\n },\n invokeConfig\n )\n );\n } catch (primaryError) {\n clearCurrentDeltaStepMarkers({\n graph: this,\n metadata,\n });\n /**\n * A tripped stream circuit breaker is a deliberate abort, not a\n * provider failure: entering overflow recovery or the fallback chain\n * would spend more provider work after the safety limit fired, and a\n * succeeding fallback would resolve a run the public contract says\n * must reject. Rethrow before any recovery path.\n */\n if (primaryError instanceof StreamLimitExceededError) {\n /** Tripped before rethrowing so parallel agent nodes' in-flight\n * model calls and subagents stop while the rejection propagates. */\n attemptBreaker.abort(primaryError);\n throw primaryError;\n }\n /** A sibling that tripped the shared breaker aborts this branch's\n * composed signal, and some providers surface that as a generic\n * abort error; entering overflow planning or the fallback chain\n * would start new provider work after the run-wide breaker fired.\n * Rethrow the breaker's own stream-limit reason instead. */\n {\n const trippedReason = this.resolveTrippedBreakerReason(\n attemptBreaker.signal\n );\n if (trippedReason != null) {\n throw trippedReason;\n }\n }\n /**\n * A context overflow is a deterministic consequence of the payload,\n * not a provider being unavailable — so it is answered by compacting\n * and retrying rather than by re-sending the same oversized prompt\n * down the fallback chain. Fallbacks still run for every other\n * failure, and for an overflow whose recovery budget is spent.\n */\n /**\n * Compaction has to have something to work with. Without a token\n * counter there is no pruner, and with summarization disabled the\n * summarize node deliberately no-ops — so in that combination the\n * retry would resend a byte-identical prompt. Skipping the detour\n * keeps the original error and one round trip instead of three.\n */\n const estimatedPromptTokens = getEstimatedPromptTokens(contextUsage);\n\n const canSummarizeOverflow =\n agentContext.summarizationEnabled === true &&\n splitAtRecencyBoundary(messages, {\n turns:\n agentContext.summarizationConfig?.retainRecent?.turns ??\n DEFAULT_RETAIN_RECENT_TURNS,\n tokens: agentContext.summarizationConfig?.retainRecent?.tokens,\n tokenCounter: agentContext.tokenCounter,\n }).head.length > 0;\n\n const getLocalProviderOverflowMeasurement = (\n error: unknown\n ):\n | {\n contextBudget: number;\n estimatedPromptTokens: number;\n }\n | undefined =>\n typeof error === 'object' && error !== null\n ? localProviderOverflowMeasurements.get(error)\n : undefined;\n\n const getRecoveryPromptEstimate = (\n error: unknown,\n fallbackContext?: FallbackErrorContext\n ): number | undefined => {\n const resolvedFallbackContext =\n fallbackContext ?? getFallbackErrorContext(error);\n return (\n getLocalProviderOverflowMeasurement(error)?.estimatedPromptTokens ??\n (resolvedFallbackContext == null\n ? estimatedPromptTokens\n : undefined)\n );\n };\n\n const planRecovery = (\n error: unknown,\n attributedFallbackContext?: FallbackErrorContext\n ): OverflowRecoveryPlan | null => {\n /**\n * When the rejection came from a fallback, plan against *that*\n * client: its window and output allowance are why it was configured\n * as an alternative in the first place.\n */\n const fallbackContext =\n attributedFallbackContext ?? getFallbackErrorContext(error);\n const localMeasurement = getLocalProviderOverflowMeasurement(error);\n const recoveryPromptEstimate = getRecoveryPromptEstimate(\n error,\n fallbackContext\n );\n /**\n * A previous correction that left the rejected prompt no smaller\n * proves this state has nothing left to compact. Use the fallback\n * projection when one exists so unlike provider formats are never\n * compared through the primary's cheaper pre-projection estimate.\n */\n if (agentContext.overflowRecoveryStalled(recoveryPromptEstimate)) {\n return null;\n }\n const recovery = planContextOverflowRecovery({\n error,\n provider: fallbackContext?.provider ?? agentContext.provider,\n maxContextTokens:\n localMeasurement?.contextBudget ??\n fallbackContext?.maxContextTokens ??\n agentContext.maxContextTokens,\n estimatedPromptTokens: recoveryPromptEstimate,\n calibrationRatio: agentContext.calibrationRatio,\n instructionTokens: agentContext.instructionTokens,\n canSummarize: agentContext.summarizationEnabled === true,\n configuredCompletionTokens: getConfiguredCompletionTokens(\n fallbackContext?.clientOptions ?? agentContext.clientOptions\n ),\n attemptsSoFar: agentContext.overflowRecoveryAttempts,\n });\n if (recovery == null) {\n return null;\n }\n const translatedRecovery =\n fallbackContext != null\n ? {\n ...recovery,\n budgetTokens: minDefined(\n getBlindRecoveryBudget(agentContext.maxContextTokens),\n localMeasurement != null\n ? recovery.budgetTokens\n : translateRecoveryBudget(\n recovery.budgetTokens,\n recovery.observedCalibrationRatio ??\n CALIBRATION_RATIO_MAX,\n agentContext.calibrationRatio\n )\n ),\n observedCalibrationRatio: undefined,\n }\n : recovery;\n const canReduceContext =\n canSummarizeOverflow ||\n (agentContext.tokenCounter != null &&\n translatedRecovery.budgetTokens != null);\n return canReduceContext ? translatedRecovery : null;\n };\n\n const recovery = planRecovery(primaryError);\n if (recovery != null) {\n const recoveryPromptEstimate =\n getRecoveryPromptEstimate(primaryError);\n return this.beginOverflowRecovery({\n recovery,\n agentContext,\n agentId,\n config,\n originalToolContent: prunedOriginalToolContent,\n estimatedPromptTokens: recoveryPromptEstimate,\n });\n }\n /**\n * A fallback can reject the same prompt as too large even when the\n * primary failed for an unrelated reason — a fallback with a smaller\n * window is the obvious case. Planning against the exhausted-chain\n * error keeps that path recoverable instead of surfacing it.\n */\n try {\n result = await withLangfuseRuntimeScope(\n resolveLangfuseRuntimeScope({\n runLangfuse: this.langfuse,\n langfuseOverlay: agentContext.langfuse,\n runId: this.langfuseScopeRunId,\n agentId,\n }),\n () =>\n tryFallbackProviders({\n fallbacks,\n tools: agentContext.tools,\n messages: fallbackBaseMessages,\n config: invokeConfig,\n primaryError,\n context: this,\n /**\n * Lets the chain recognise a fallback overflow whose signature\n * carries no reason of its own (Vertex AI's bare 400) and\n * surface it rather than a later unrelated failure.\n */\n overflowContext: {\n provider: agentContext.provider,\n estimatedPromptTokens: getEstimatedPromptTokens(contextUsage),\n maxContextTokens: agentContext.maxContextTokens,\n },\n prepareProviderMessages: ({\n model: fallbackModel,\n messages: fallbackMessages,\n provider: fallbackProvider,\n maxContextTokens: fallbackMaxContextTokens,\n config: fallbackConfig,\n }) => {\n const fallbackToolResultChars =\n agentContext.maxToolResultChars ??\n calculateMaxToolResultChars(\n fallbackMaxContextTokens ?? agentContext.maxContextTokens\n );\n /**\n * Serving-provider cue shaping BEFORE the fallback payload\n * is measured: a Claude fallback behind a tolerant primary\n * gains the cue inside the guarded projection (a prompt\n * within the cue's cost of the fallback budget must take\n * the recovery path, not ship oversized), and a tolerant\n * fallback behind an Anthropic primary sheds the baked cue\n * before it is measured against the tighter budget. The\n * attemptInvoke funnel pass then finds nothing to change.\n */\n const cueShapedFallbackMessages = trackProviderMessageOrigins(\n fallbackMessages,\n isAnthropicLike(fallbackProvider, {\n model: resolveServingModelId(fallbackModel),\n })\n ? appendPredecessorHandoffCue(fallbackMessages, (m) =>\n this.isRunProducedMessage(m)\n )\n : removePredecessorHandoffCue(fallbackMessages)\n );\n const projectedFallbackMessages = trackProviderMessageOrigins(\n cueShapedFallbackMessages,\n projectMessagesForProvider({\n model: fallbackModel,\n messages: cueShapedFallbackMessages,\n provider: fallbackProvider,\n maxToolResultChars: fallbackToolResultChars,\n callOptions: fallbackConfig,\n })\n );\n const primaryContextBudget = contextUsage?.contextBudget;\n const fallbackContextBudget =\n fallbackMaxContextTokens == null\n ? primaryContextBudget\n : Math.min(\n primaryContextBudget ?? fallbackMaxContextTokens,\n fallbackMaxContextTokens\n );\n const projection = measureProviderPayload(\n projectedFallbackMessages,\n fallbackContextBudget,\n true\n );\n if (!projection.fits) {\n throw createProviderPayloadOverflowError({\n projection,\n provider: fallbackProvider,\n info: 'Fallback provider message formatting exceeded the context budget before invocation.',\n });\n }\n return projectedFallbackMessages;\n },\n })\n );\n } catch (fallbackError) {\n if (fallbackError instanceof StreamLimitExceededError) {\n /** Same treatment as the primary path: a fallback stream that\n * trips the breaker must stop parallel agent nodes' model calls\n * and subagents before the rejection propagates. */\n attemptBreaker.abort(fallbackError);\n throw fallbackError;\n }\n {\n /** Same sibling-abort translation guard as the primary catch. */\n const trippedReason = this.resolveTrippedBreakerReason(\n attemptBreaker.signal\n );\n if (trippedReason != null) {\n throw trippedReason;\n }\n }\n const overflowCandidates =\n getFallbackOverflowCandidates(fallbackError);\n let fallbackRecovery: OverflowRecoveryPlan | null = null;\n let fallbackRecoveryPromptEstimate: number | undefined;\n for (const candidate of overflowCandidates) {\n fallbackRecovery = planRecovery(candidate.error, candidate.context);\n if (fallbackRecovery != null) {\n fallbackRecoveryPromptEstimate = getRecoveryPromptEstimate(\n candidate.error,\n candidate.context\n );\n break;\n }\n }\n if (overflowCandidates.length === 0) {\n fallbackRecovery = planRecovery(fallbackError);\n fallbackRecoveryPromptEstimate =\n getRecoveryPromptEstimate(fallbackError);\n }\n if (fallbackRecovery == null) {\n throw fallbackError;\n }\n return this.beginOverflowRecovery({\n recovery: fallbackRecovery,\n agentContext,\n agentId,\n config,\n originalToolContent: prunedOriginalToolContent,\n estimatedPromptTokens: fallbackRecoveryPromptEstimate,\n });\n }\n } finally {\n await disposeLangfuseHandler(langfuseHandler);\n }\n\n if (!result) {\n throw new Error('No result after model invocation');\n }\n\n /**\n * Fallback: populate toolCallStepIds in the graph execution context.\n *\n * When model.stream() is available (the common case), attemptInvoke\n * processes all chunks through a local ChatModelStreamHandler which\n * creates run steps and populates toolCallStepIds before returning.\n * The code below is a fallback for the rare case where model.stream\n * is unavailable and model.invoke() was used instead.\n *\n * Text content is dispatched FIRST so that MESSAGE_CREATION is the\n * current step when handleToolCalls runs. handleToolCalls then creates\n * TOOL_CALLS on top of it. The dedup in getMessageId and\n * toolCallStepIds.has makes this safe when attemptInvoke already\n * handled everything — both paths become no-ops.\n */\n const responseMessage = result.messages?.[0];\n /**\n * Provenance for the handoff-cue gate: recorded at the node, where the\n * produced turn is unambiguous. The public ChatModel contract does not\n * require implementations to set message ids — the reducer would\n * assign one AFTER this node returns, which is too late for the set —\n * so an id is assigned here first, the same way the reducer does it\n * (`v4()`, mirrored into `lc_kwargs`), and the reducer's\n * keep-existing-id rule makes the state message match.\n */\n if (responseMessage?.getType() === 'ai') {\n if (\n typeof responseMessage.id !== 'string' ||\n responseMessage.id === ''\n ) {\n responseMessage.id = v4();\n responseMessage.lc_kwargs.id = responseMessage.id;\n }\n this.runProducedAiMessageIds.add(responseMessage.id);\n }\n const toolCalls = (responseMessage as AIMessageChunk | undefined)\n ?.tool_calls;\n const hasToolCalls = Array.isArray(toolCalls) && toolCalls.length > 0;\n const responseReasoningContent = getResponseReasoningContent({\n responseMessage: responseMessage as Partial<AIMessageChunk> | undefined,\n reasoningKey: agentContext.reasoningKey,\n });\n const textMessageContent = getMessageDeltaContent(\n agentContext.provider,\n responseMessage?.content as MessageContent | undefined\n );\n const hasStreamedTextDeltaStep = hasCurrentTextDeltaStep({\n graph: this,\n metadata,\n });\n const hasStreamedReasoningDeltaStep = hasCurrentReasoningDeltaStep({\n graph: this,\n metadata,\n });\n const dispatchableFinalReasoningContent =\n getDispatchableFinalReasoningContent({\n agentContext,\n responseReasoningContent,\n hasStreamedTextDeltaStep,\n hasStreamedReasoningDeltaStep,\n });\n\n if (hasToolCalls) {\n const dispatchedReasoning =\n dispatchableFinalReasoningContent != null &&\n (await dispatchReasoningContent({\n graph: this,\n agentContext,\n reasoningContent: dispatchableFinalReasoningContent,\n metadata,\n }));\n if (dispatchedReasoning) {\n markPostReasoningContent(agentContext);\n }\n if (textMessageContent != null && !hasStreamedTextDeltaStep) {\n const stepKey = this.getStepKey(metadata);\n const dispatchedText = await dispatchTextMessageContent({\n graph: this,\n stepKey,\n provider: agentContext.provider,\n content: textMessageContent,\n metadata,\n });\n if (dispatchedText) {\n markPostReasoningContent(agentContext);\n }\n }\n\n await handleToolCalls(toolCalls as ToolCall[], metadata, this);\n }\n\n /**\n * When streaming events are unavailable, ChatModelStreamHandler never\n * fires. Dispatch final reasoning/text content here. getMessageId makes\n * this a no-op when the streaming path already handled the same step.\n */\n if (!hasToolCalls && responseMessage != null) {\n const dispatchedReasoning =\n dispatchableFinalReasoningContent != null &&\n (await dispatchReasoningContent({\n graph: this,\n agentContext,\n reasoningContent: dispatchableFinalReasoningContent,\n metadata,\n }));\n if (dispatchedReasoning && textMessageContent != null) {\n markPostReasoningContent(agentContext);\n }\n if (textMessageContent != null && !hasStreamedTextDeltaStep) {\n const stepKey = this.getStepKey(metadata);\n await dispatchTextMessageContent({\n graph: this,\n stepKey,\n provider: agentContext.provider,\n content: textMessageContent,\n metadata,\n });\n }\n }\n\n const invokeElapsed = ((Date.now() - invokeStart) / 1000).toFixed(2);\n agentContext.currentUsage = this.getUsageMetadata(result.messages?.[0]);\n /**\n * Synthetic usage from a sealed turn is an estimate derived from the\n * host's own counter, so feeding it to calibration would teach a ratio\n * of exactly 1.0 — self-consistent by construction, and wrong for any\n * provider whose real ratio differs. It still flows to `currentUsage`\n * for host billing; it just does not get to move the EMA.\n */\n const estimatedUsage =\n (result.messages?.[0] as AIMessageChunk | undefined)?.response_metadata\n .estimated_usage === true;\n if (agentContext.currentUsage) {\n if (!estimatedUsage) {\n agentContext.updateLastCallUsage(agentContext.currentUsage);\n }\n emitAgentLog(\n config,\n 'debug',\n 'graph',\n `LLM call complete (${invokeElapsed}s)`,\n {\n ...agentContext.currentUsage,\n elapsedSeconds: Number(invokeElapsed),\n instructionTokens: agentContext.instructionTokens,\n toolSchemaTokens: agentContext.toolSchemaTokens,\n messageCount: finalMessages.length,\n },\n invokeMeta,\n { force: true }\n );\n } else {\n emitAgentLog(\n config,\n 'debug',\n 'graph',\n `LLM call complete (${invokeElapsed}s)`,\n {\n elapsedSeconds: Number(invokeElapsed),\n messageCount: finalMessages.length,\n },\n invokeMeta,\n { force: true }\n );\n }\n if (\n (responseMessage as AIMessageChunk | undefined)?.response_metadata\n .preempted === true\n ) {\n const { messages: injected, preventContinuation } =\n await this.dispatchPreemptBoundary(agentId, config);\n /**\n * Release before branching: the slot is held only for the duration of\n * the drain, and an early return below must not strand it.\n */\n this.releasePreemptSeal();\n if (preventContinuation) {\n /**\n * A hook halted at the boundary. Commit the sealed turn and anything\n * it injected, but do NOT self-loop: `preventContinuation` promises\n * no further model turn, and the run-loop poll in `processStream`\n * only sees the halt AFTER the next call would already have started\n * — direct graph consumers never poll it at all. A trailing injected\n * HumanMessage carries no tool calls, so `toolsCondition` routes it\n * to END.\n */\n this.preemptIncomplete = true;\n /**\n * A halting boundary that ALSO injected nothing is still an empty\n * boundary by the `getPreemptStats().emptyBoundaries` contract —\n * hosts use the counter for truncated-seal telemetry, and both\n * paths end the turn with nothing to resume from.\n */\n if (injected.length === 0) {\n this.preemptEmptyBoundaries += 1;\n }\n this.cleanupSignalListener();\n return injected.length > 0\n ? { messages: [...(result.messages ?? []), ...injected] }\n : result;\n }\n if (injected.length > 0) {\n this.pendingPreemptReturn.add(agentId);\n this.cleanupSignalListener();\n return { messages: [...(result.messages ?? []), ...injected] };\n }\n /**\n * Nothing to inject — the host cancelled or already drained. Do NOT\n * self-loop: a trailing model turn with no new input is dropped by\n * some Gemini models and read as prefill by Anthropic. Do NOT pretend\n * the turn completed either; the answer really was cut short.\n */\n this.preemptEmptyBoundaries += 1;\n this.preemptIncomplete = true;\n }\n\n this.cleanupSignalListener();\n return result;\n };\n }\n\n /**\n * Fires `PreemptBoundary` after a sealed turn and returns whatever the\n * hooks asked to inject, converted through the same `convertInjectedMessages`\n * the tool boundary uses so the two sites cannot emit different shapes.\n *\n * Never throws: a drain that fails or times out costs the injection, not the\n * run. The caller treats an empty result as \"nothing to resume with\".\n *\n * `preventContinuation` is surfaced alongside the messages rather than left\n * to the registry halt signal, which `processStream` only polls between\n * stream events — by then the self-loop it was meant to prevent has already\n * issued another model call, and a direct graph consumer never polls it.\n */\n private async dispatchPreemptBoundary(\n agentId: string,\n config: RunnableConfig | undefined\n ): Promise<PreemptBoundaryResult> {\n if (this.hookRegistry == null) {\n return EMPTY_PREEMPT_BOUNDARY;\n }\n const configurable = config?.configurable;\n const runId = (configurable?.run_id as string | undefined) ?? this.runId;\n if (runId == null) {\n return EMPTY_PREEMPT_BOUNDARY;\n }\n const result = await executeHooks({\n registry: this.hookRegistry,\n input: {\n hook_event_name: 'PreemptBoundary',\n runId,\n threadId: configurable?.thread_id as string | undefined,\n agentId: this.subagentScope ? agentId : undefined,\n executingAgentId: agentId,\n sealCount: this.preemptSealCount,\n },\n sessionId: runId,\n timeoutMs: PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS,\n /**\n * The host's own abort signal(s), deliberately NOT `config.signal` —\n * inside a node the latter is LangGraph's composed signal, which also\n * fires when an unrelated sibling in the same superstep throws.\n * Cancellation already returns control in milliseconds without this;\n * what it buys is that a drain does not keep running after the run it\n * belongs to died.\n *\n * Composed because the host can cancel through either channel: the\n * construction signal, or the per-call `callerConfig.signal` — the only\n * one a multi-agent run has, since `MultiAgentGraphConfig` exposes no\n * construction signal. When both exist they may be different\n * controllers, and a drain must stop when EITHER fires.\n */\n signal: composeAbortSignals(this.signal, this.callerSignal),\n }).catch((): undefined => undefined);\n if (result == null) {\n return EMPTY_PREEMPT_BOUNDARY;\n }\n /**\n * `executeHooks` raises a registry halt whenever a hook returns\n * `preventContinuation`. That halt has exactly one consumer — the poll in\n * `Run.processStream` — and its `break` cancels the stream iterator, which\n * aborts Pregel. The abort lands BEFORE the outer reducer commits\n * `StandardGraph.messages`, so honoring the halt here would destroy the\n * sealed assistant turn: the run returns empty content and the host\n * persists nothing. Measured deterministically — the commit is several\n * stream events downstream of the point the halt becomes observable.\n *\n * The `preventContinuation` branch in `createCallModel` already enforces\n * the contract locally by declining to self-loop, and a sealed chunk\n * provably carries no tool calls, so the turn routes to END after exactly\n * one model call either way. Clearing the halt therefore costs nothing it\n * was buying and saves the content the seal exists to preserve.\n *\n * Scoped to a halt this event raised, so a halt from an earlier hook in\n * the same run — `haltRun` is first-write-wins — is left alone.\n */\n const halt = this.hookRegistry.getHaltSignal(runId);\n if (\n result.preventContinuation === true &&\n halt?.source === 'PreemptBoundary'\n ) {\n this.preemptHaltReason = halt.reason;\n this.hookRegistry.clearHaltSignal(runId);\n }\n const injected: BaseMessage[] = [];\n /**\n * `PreemptBoundaryHookOutput` is `BaseHookOutput`, so `additionalContext`\n * is part of the contract here just as it is at the tool boundary. It has\n * to be materialized BEFORE the emptiness test, or a hook that returns\n * context alone would read as \"nothing to resume with\" and cut the answer\n * short. Same system-flavored `HumanMessage` convention `ToolNode` uses —\n * Anthropic and Google reject a mid-conversation `SystemMessage`.\n */\n /**\n * Whitespace-only entries are dropped for the same reason empty\n * `injectedMessages` are: `executeHooks` keeps them because their raw\n * length is nonzero, but a blank turn is not something to resume from —\n * it costs a model call and strict providers reject it outright.\n */\n const contexts = result.additionalContexts.filter(\n (context) => context.trim() !== ''\n );\n if (contexts.length > 0) {\n injected.push(\n new HumanMessage({\n content: contexts.join('\\n\\n'),\n additional_kwargs: { role: 'system', isMeta: true, source: 'hook' },\n })\n );\n }\n if (result.injectedMessages.length > 0) {\n try {\n injected.push(...convertInjectedMessages(result.injectedMessages));\n } catch (e) {\n console.warn(\n '[StandardGraph] Failed to convert PreemptBoundary injectedMessages:',\n e instanceof Error ? e.message : e\n );\n }\n }\n return {\n messages: injected,\n preventContinuation: result.preventContinuation === true,\n };\n }\n\n createAgentNode(agentId: string): t.CompiledAgentWorfklow {\n const getConfig = (): RunnableConfig | undefined => this.config;\n const agentContext = this.agentContexts.get(agentId);\n if (!agentContext) {\n throw new Error(`Agent context not found for agentId: ${agentId}`);\n }\n\n /**\n * Depth countdown across graph boundaries: the parent's `maxSubagentDepth`\n * becomes this executor's `maxDepth`. When the child graph is constructed,\n * `buildChildInputs()` decrements `maxSubagentDepth` on the child's\n * `AgentInputs` (only when `allowNested: true`; otherwise subagentConfigs\n * are stripped entirely). The child graph's own `createAgentNode()` then\n * reads the decremented value here and creates a narrower executor —\n * recursion is bounded even though each graph has its own separate\n * executor instance.\n */\n const effectiveSubagentDepth = agentContext.maxSubagentDepth ?? 1;\n if (\n agentContext.subagentConfigs != null &&\n agentContext.subagentConfigs.length > 0 &&\n effectiveSubagentDepth > 0\n ) {\n const executableConfigs = normalizeSubagentConfigEntries(\n agentContext.subagentConfigs,\n agentContext\n );\n if (executableConfigs.length > 0) {\n if (\n !this.supportsMultiAgentChildren &&\n executableConfigs.some(isGraphSubagentConfig)\n ) {\n throw new Error(\n 'Graph subagents require constructing the parent with createGraph() or an injected GraphFactory dependency.'\n );\n }\n const getParentHandlerRegistry = (): HandlerRegistry | undefined =>\n this.handlerRegistry ?? this.parentToolHandlerRegistry;\n const createConfiguredChildGraph: GraphFactory = (request) => {\n const childGraph = this.graphFactory(request);\n if (this.subagentModelOverride != null) {\n childGraph.overrideModel = this.subagentModelOverride;\n childGraph.setSubagentModelOverride(this.subagentModelOverride);\n }\n const childHandlerRegistry = createChildHandlerRegistry(\n getParentHandlerRegistry()\n );\n // Pure execution-ordering hint (unlike `humanInTheLoop`). It only\n // reorders tools already in the child's direct group; it does not\n // force a schema-only event tool onto the direct execution path.\n applyGraphRuntimeConfig(childGraph, {\n hookRegistry: this.hookRegistry,\n humanInTheLoop: this.humanInTheLoop,\n toolOutputReferences: this.toolOutputReferences,\n eagerEventToolExecution: this.eagerEventToolExecution,\n codeSessionToolNames: this.codeSessionToolNames,\n interruptingToolNames: this.interruptingToolNames,\n toolExecution: this.toolExecution,\n });\n if (this.humanInTheLoop?.enabled === true) {\n childGraph.compileOptions = {\n checkpointer: this.compileOptions?.checkpointer,\n };\n }\n childGraph.parentToolHandlerRegistry = childHandlerRegistry;\n childGraph.eventToolExecutionAvailable =\n childHandlerRegistry?.getHandler(GraphEvents.ON_TOOL_EXECUTE) !=\n null;\n return childGraph;\n };\n const executor = new SubagentExecutor({\n configs: new Map(\n executableConfigs.map((config) => [config.type, config])\n ),\n parentSignal: this.signal,\n breakerScope: {\n controller: (): AbortController => this.breakerAbort,\n },\n hookRegistry: this.hookRegistry,\n /** Lazy — Run wires the registry onto the graph AFTER\n * `createWorkflow()` runs, so a direct capture here would be\n * `undefined` at construction time. */\n parentHandlerRegistry: getParentHandlerRegistry,\n parentRunId: this.runId ?? '',\n parentAgentId: agentContext.agentId,\n executionContext: this.subagentExecutionContext,\n langfuse: this.langfuse,\n tokenCounter: agentContext.tokenCounter,\n usageSink: this.subagentUsageSink,\n streamLimits: this.streamLimits,\n humanInTheLoop: this.humanInTheLoop,\n checkpointer: this.compileOptions?.checkpointer,\n maxDepth: effectiveSubagentDepth,\n createChildGraph: (input): StandardGraph =>\n createConfiguredChildGraph({\n kind: 'standard',\n input,\n }),\n createChildGraphByKind: createConfiguredChildGraph,\n });\n this.registerSubagentExecutor(executor);\n\n const subagentTool = tool(async (rawInput, config) => {\n const input = rawInput as {\n description?: string;\n subagent_type?: string;\n };\n const description =\n typeof input.description === 'string' &&\n input.description.trim().length > 0\n ? input.description\n : DEFAULT_SUBAGENT_DESCRIPTION;\n const subagentType =\n typeof input.subagent_type === 'string' ? input.subagent_type : '';\n const threadId = config.configurable?.thread_id as string | undefined;\n /** Surface the parent call id so child checkpoints, interrupts, and\n * update events remain correlated across replay and resume. */\n const toolRuntime = config as {\n toolCallId?: string;\n toolCall?: { id?: string };\n };\n const toolCall = toolRuntime.toolCall;\n let parentToolCallId: string | undefined;\n if (\n typeof toolRuntime.toolCallId === 'string' &&\n toolRuntime.toolCallId !== ''\n ) {\n parentToolCallId = toolRuntime.toolCallId;\n } else if (typeof toolCall?.id === 'string' && toolCall.id !== '') {\n parentToolCallId = toolCall.id;\n }\n /** The parent tool batch's entry-captured scope (stamped by\n * ToolNode before PreToolUse hooks) — binds this child to the\n * run that dispatched it, not to whatever controller a reset\n * installed while the hooks were awaited. */\n const batchScope = config.configurable?.[\n RUN_BREAKER_SCOPE_CONFIG_KEY\n ] as RunBreakerScope | undefined;\n const result = await executor.execute({\n description,\n subagentType,\n threadId,\n signal: config.signal,\n parentToolCallId,\n breaker: batchScope?.controller,\n /**\n * Forward the parent's `configurable` so host-set fields\n * (`requestBody`, `user`, etc.) propagate into the child\n * workflow. The executor scrubs run-identity fields before\n * forwarding — see `SubagentExecuteParams.parentConfigurable`.\n */\n parentConfigurable: config.configurable as\n | Record<string, unknown>\n | undefined,\n });\n return result.content;\n }, buildSubagentToolParams(executableConfigs));\n const replayableSubagentTool = subagentTool as typeof subagentTool &\n ReplayableSubagentTool;\n replayableSubagentTool[SUBAGENT_REPLAY_CONTROLLER] = {\n getResumeManifest: (\n parentToolCallIds,\n config\n ): Promise<SubagentResumeManifest | undefined> =>\n executor.getResumeManifest(parentToolCallIds, config),\n getSettledOutput: (\n call,\n config\n ): Promise<SettledSubagentToolOutput | undefined> =>\n executor.getSettledToolOutput(call, config),\n persistSettledOutput: (call, config, output): Promise<void> =>\n executor.persistSettledToolOutput(call, config, output),\n };\n\n if (!agentContext.graphTools) {\n agentContext.graphTools = [];\n }\n (agentContext.graphTools as t.GenericTool[]).push(subagentTool);\n\n /**\n * Refresh toolSchemaTokens to include the subagent tool's schema.\n * `calculateInstructionTokens()` was kicked off in `fromConfig()`\n * before graphTools was populated, so its result did not count this\n * tool. Without this retrigger, token-budget/pruning logic\n * underestimates prompt overhead.\n */\n if (agentContext.tokenCounter) {\n const { tokenCounter, baseIndexTokenCountMap } = agentContext;\n agentContext.tokenCalculationPromise = agentContext\n .calculateInstructionTokens(tokenCounter)\n .then(() => {\n agentContext.updateTokenMapWithInstructions(\n baseIndexTokenCountMap\n );\n })\n .catch((err) => {\n console.error(\n 'Error recalculating instruction tokens after subagent tool injection:',\n err\n );\n });\n }\n }\n }\n\n const agentNode = `${AGENT}${agentId}` as const;\n const toolNode = `${TOOLS}${agentId}` as const;\n const summarizeNode = `${SUMMARIZE}${agentId}` as const;\n\n const routeMessage = (\n state: t.AgentSubgraphState,\n config?: RunnableConfig\n ): string => {\n this.config = config;\n /**\n * A sealed turn that injected messages resumes in the SAME pregel run:\n * back to the agent node as a new superstep, so the model continues in\n * one assistant message instead of restarting the graph.\n */\n if (this.pendingPreemptReturn.delete(agentId)) {\n return agentNode;\n }\n if (state.summarizationRequest != null) {\n return summarizeNode;\n }\n return toolsCondition(\n state as t.BaseGraphState,\n toolNode,\n this.invokedToolIds\n );\n };\n\n const StateAnnotation = Annotation.Root({\n messages: Annotation<BaseMessage[]>({\n reducer: messagesStateReducer,\n default: () => [],\n }),\n summarizationRequest: Annotation<t.SummarizationNodeInput | undefined>({\n reducer: (\n _: t.SummarizationNodeInput | undefined,\n b: t.SummarizationNodeInput | undefined\n ) => b,\n default: () => undefined,\n }),\n });\n\n const readChargeCredits = ():\n | WeakMap<object, Map<string, number>>\n | undefined => this.streamLimitChargeCredits;\n const readBreakerEpoch = (): number => this.breakerEpoch;\n const readActiveGenerations = (): Set<string> | undefined =>\n this.activeStreamLimitGenerations;\n const writeActiveGenerations = (value: Set<string> | undefined): void => {\n this.activeStreamLimitGenerations = value;\n };\n const writeChargeCredits = (\n value: WeakMap<object, Map<string, number>> | undefined\n ): void => {\n this.streamLimitChargeCredits = value;\n };\n\n const workflow = new StateGraph(StateAnnotation)\n .addNode(agentNode, this.createCallModel(agentId))\n .addNode(\n toolNode,\n this.initializeTools({\n currentTools: agentContext.tools,\n currentToolMap: agentContext.toolMap,\n agentContext,\n })\n )\n .addNode(\n summarizeNode,\n createSummarizeNode({\n agentContext,\n graph: {\n contentData: this.contentData,\n contentIndexMap: this.contentIndexMap,\n get config() {\n return getConfig();\n },\n runId: this.runId,\n isMultiAgent: this.isMultiAgentGraph(),\n hookRegistry: this.hookRegistry,\n /**\n * Live references (both maps are cleared in place, never\n * replaced), so summarization streams share the run's event\n * budget accounting under their own generation key.\n */\n streamLimits: this.streamLimits,\n streamDeltaEventCounts: this.streamDeltaEventCounts,\n streamedToolCallArgTallies: this.streamedToolCallArgTallies,\n /** Accessor pair, not a value copy: unlike the two maps above,\n * the credit map is REPLACED by graph resets rather than cleared\n * in place, and the guards' lazy `??=` must install onto the\n * graph — a copy held here would survive resets and grow one\n * attempt-stamped entry per compaction for a retained reused\n * chunk object. */\n get streamLimitChargeCredits() {\n return readChargeCredits();\n },\n set streamLimitChargeCredits(\n value: WeakMap<object, Map<string, number>> | undefined\n ) {\n writeChargeCredits(value);\n },\n /** Live epoch, so summary tallies are creation-tagged and the\n * resetValues grace sweep treats them like model-attempt\n * entries. */\n get breakerEpoch(): number {\n return readBreakerEpoch();\n },\n /** Accessor pair like the charge credits: summary attempts\n * lease their generations on the GRAPH's active set, and the\n * lazy `??=` in the lease helper must install there. */\n get activeStreamLimitGenerations(): Set<string> | undefined {\n return readActiveGenerations();\n },\n set activeStreamLimitGenerations(value: Set<string> | undefined) {\n writeActiveGenerations(value);\n },\n /** Read per attempt: a sibling branch tripping the run breaker\n * must also cancel in-flight summarization model calls. */\n getBreakerSignal: (): AbortSignal => this.breakerAbort.signal,\n /** The node captures this at entry so its own chunk handler's\n * breach trips the run that STARTED the summarization, not a\n * controller installed by a later reset. */\n getBreakerController: (): AbortController => this.breakerAbort,\n /** Captured at node entry and stamped into the summary attempt\n * metadata, so the wire consumer epoch-gates old-run summary\n * chunks exactly like model-attempt chunks. */\n getBreakerEpoch: (): number => this.breakerEpoch,\n dispatchRunStep: async (runStep, nodeConfig) => {\n const resolvedConfig = nodeConfig ?? this.config;\n if (runStep.agentId != null) {\n const groupId = this.resolveParallelGroupId(\n runStep.agentId,\n resolvedConfig?.metadata\n );\n if (groupId != null) {\n runStep.groupId = groupId;\n }\n }\n runStep.status ??= 'in_progress';\n await this.trackDispatchedRunStep(\n runStep,\n resolvedConfig?.metadata,\n false\n );\n\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_RUN_STEP\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_RUN_STEP,\n runStep,\n resolvedConfig?.configurable,\n this\n );\n this.handlerDispatchedStepIds.add(runStep.id);\n }\n\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(\n GraphEvents.ON_RUN_STEP,\n runStep.id\n )\n : undefined;\n try {\n if (resolvedConfig) {\n await safeDispatchCustomEvent(\n GraphEvents.ON_RUN_STEP,\n runStep,\n resolvedConfig\n );\n }\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n },\n closeRunStep: async (\n stepId: string,\n status: Exclude<t.RunStepStatus, 'in_progress'>,\n nodeConfig?: RunnableConfig\n ) => {\n await this.closeRunStep(stepId, status, {\n metadata: (nodeConfig ?? this.config)?.metadata,\n });\n },\n dispatchRunStepCompleted: async (\n stepId: string,\n result: t.StepCompleted,\n nodeConfig?: RunnableConfig\n ) => {\n const resolvedConfig = nodeConfig ?? this.config;\n const completedAt = Date.now();\n const runStep = this.getRunStep(stepId);\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_RUN_STEP_COMPLETED\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_RUN_STEP_COMPLETED,\n {\n result: {\n ...result,\n id: stepId,\n index: runStep?.index ?? 0,\n completed_at: completedAt,\n },\n },\n resolvedConfig?.configurable,\n this\n );\n }\n await this.recordStepCompletion(stepId, {\n metadata: resolvedConfig?.metadata,\n at: completedAt,\n });\n },\n },\n generateStepId: (stepKey: string) => this.generateStepId(stepKey),\n })\n )\n .addEdge(START, agentNode)\n .addConditionalEdges(agentNode, routeMessage)\n .addEdge(summarizeNode, agentNode)\n .addEdge(toolNode, agentContext.toolEnd ? END : agentNode);\n\n return workflow.compile();\n }\n\n createWorkflow(): t.CompiledStateWorkflow {\n this.hasCompiledCheckpointer = this.compileOptions?.checkpointer != null;\n const agentNode = this.createAgentNode(this.defaultAgentId);\n const StateAnnotation = Annotation.Root({\n messages: Annotation<BaseMessage[]>({\n reducer: (a, b) => {\n if (!this.messages.length && !this.hasRestoredCheckpointMessages) {\n this.startIndex = a.length + b.length;\n }\n const result = messagesStateReducer(a, b);\n this.messages = result;\n return result;\n },\n default: () => [],\n }),\n });\n const workflow = new StateGraph(StateAnnotation)\n .addNode(\n this.defaultAgentId,\n agentNode as Runnable<\n t.AgentSubgraphState,\n Partial<t.AgentSubgraphState>\n >,\n { ends: [END] }\n )\n .addEdge(START, this.defaultAgentId)\n // LangGraph compile() types are overly strict for opt-in options\n .compile(this.compileOptions as unknown as never);\n\n return workflow;\n }\n\n /**\n * Indicates if this is a multi-agent graph.\n * Override in MultiAgentGraph to return true.\n * Used to conditionally include agentId in RunStep for frontend rendering.\n */\n protected isMultiAgentGraph(): boolean {\n return false;\n }\n\n /**\n * Get the parallel group ID for an agent, if any.\n * Override in MultiAgentGraph to provide actual group IDs.\n * Group IDs are incrementing numbers (1, 2, 3...) reflecting execution order.\n * @param _agentId - The agent ID to look up\n * @returns undefined for StandardGraph (no parallel groups), or group number for MultiAgentGraph\n */\n protected getParallelGroupIdForAgent(_agentId: string): number | undefined {\n return undefined;\n }\n\n protected resolveParallelGroupId(\n agentId: string,\n metadata?: Record<string, unknown>\n ): number | undefined {\n if (\n metadata == null ||\n !Object.prototype.hasOwnProperty.call(\n metadata,\n Constants.HANDOFF_GROUP_ID\n )\n ) {\n return this.getParallelGroupIdForAgent(agentId);\n }\n const runtimeGroupId = metadata[Constants.HANDOFF_GROUP_ID];\n if (runtimeGroupId === null) {\n return undefined;\n }\n if (\n typeof runtimeGroupId === 'number' &&\n Number.isSafeInteger(runtimeGroupId) &&\n runtimeGroupId > 0\n ) {\n return runtimeGroupId;\n }\n return this.getParallelGroupIdForAgent(agentId);\n }\n\n /* Dispatchers */\n\n /**\n * Dispatches a run step to the client, returns the step ID\n */\n async dispatchRunStep(\n stepKey: string,\n stepDetails: t.StepDetails,\n metadata?: Record<string, unknown>\n ): Promise<string> {\n if (!this.config) {\n throw new Error('No config provided');\n }\n\n const [stepId, stepIndex] = this.generateStepId(stepKey);\n if (stepDetails.type === StepTypes.TOOL_CALLS && stepDetails.tool_calls) {\n let pendingToolCalls: Set<string> | undefined;\n for (const tool_call of stepDetails.tool_calls) {\n const toolCallId = tool_call.id ?? '';\n if (!toolCallId || this.toolCallStepIds.has(toolCallId)) {\n continue;\n }\n this.toolCallStepIds.set(toolCallId, stepId);\n pendingToolCalls ??= this.getPendingToolCallSet(stepId);\n pendingToolCalls.add(toolCallId);\n }\n }\n\n const runStep: t.RunStep = {\n stepIndex,\n id: stepId,\n type: stepDetails.type,\n index: this.contentData.length,\n stepDetails,\n usage: null,\n status: 'in_progress',\n };\n\n const runId = this.runId ?? '';\n if (runId) {\n runStep.runId = runId;\n }\n\n /**\n * `agentId`/`groupId` are multi-agent-only, and `getAgentContext` signals a\n * miss by throwing — so for a single-agent graph the lookup could only ever\n * build and discard an Error while producing the same undefined fields.\n * The constant-time check gates it out of the per-step dispatch path.\n */\n if (metadata && this.isMultiAgentGraph()) {\n try {\n const agentContext = this.getAgentContext(metadata);\n if (agentContext.agentId) {\n runStep.agentId = agentContext.agentId;\n const groupId = this.resolveParallelGroupId(\n agentContext.agentId,\n metadata\n );\n if (groupId != null) {\n runStep.groupId = groupId;\n }\n }\n } catch (_e) {\n /** If we can't get agent context, that's okay - agentId remains undefined */\n }\n }\n\n await this.trackDispatchedRunStep(runStep, metadata);\n\n // Primary dispatch: handler registry (reliable, always works).\n // This mirrors how handleToolCallCompleted dispatches ON_RUN_STEP_COMPLETED\n // via the handler registry, ensuring the event always reaches the handler\n // even when LangGraph's callback system drops the custom event.\n const handler = this.handlerRegistry?.getHandler(GraphEvents.ON_RUN_STEP);\n if (handler) {\n await handler.handle(GraphEvents.ON_RUN_STEP, runStep, metadata, this);\n this.handlerDispatchedStepIds.add(stepId);\n }\n\n // Secondary dispatch: custom event for LangGraph callback chain\n // (tracing, Langfuse, external consumers). May be silently dropped\n // in some scenarios (stale run ID, subgraph callback propagation issues),\n // but the primary dispatch above guarantees the event reaches the handler.\n // The customEventCallback in run.ts skips events already dispatched above\n // to prevent double handling.\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(GraphEvents.ON_RUN_STEP, stepId)\n : undefined;\n try {\n await safeDispatchCustomEvent(\n GraphEvents.ON_RUN_STEP,\n runStep,\n this.config\n );\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n return stepId;\n }\n\n /**\n * Static version of handleToolCallError to avoid creating strong references\n * that prevent garbage collection.\n *\n * Returns whether the error completion event was actually dispatched. A\n * tool can error before this graph instance has a run step for the call —\n * on a resume pass the interrupted batch re-executes IMMEDIATELY on graph\n * re-entry, before any step replay has registered `toolCallStepIds` (a\n * fast-failing tool, e.g. a schema-validation reject, loses that race).\n * That is a caller-recoverable condition, not an invariant violation: the\n * ToolNode falls back to its normal completion dispatch for the error\n * ToolMessage when this returns `false`, so throwing here would only\n * replace a recoverable miss with a lost completion event and a scary log.\n */\n static async handleToolCallErrorStatic(\n graph: StandardGraph,\n data: t.ToolErrorData,\n metadata?: Record<string, unknown>\n ): Promise<boolean> {\n if (!data.id) {\n console.warn('No Tool ID provided for Tool Error');\n return false;\n }\n\n const stepId = graph.toolCallStepIds.get(data.id) ?? '';\n if (!stepId) {\n return false;\n }\n\n const { name, input: args, error } = data;\n const eventValueLimit = calculateMaxToolResultChars();\n const errorOutputPrefix = 'Error processing tool';\n const errorDetail =\n error?.message != null\n ? `: ${serializeToolContentBounded(\n error.message,\n Math.max(0, eventValueLimit - errorOutputPrefix.length - 2)\n )}`\n : '';\n\n const runStep = graph.getRunStep(stepId);\n if (!runStep) {\n return false;\n }\n\n const completedAt = Date.now();\n const tool_call: t.ProcessedToolCall = {\n id: data.id,\n name: name || '',\n args: serializeToolContentBounded(args, eventValueLimit),\n output: `${errorOutputPrefix}${errorDetail}`,\n progress: 1,\n };\n\n // No registered ON_RUN_STEP_COMPLETED handler ⇒ nothing was dispatched.\n // Report `false` so the ToolNode runs its own fallback dispatch; returning\n // `true` here would silently drop the error completion for hosts that wire\n // completions through callback-based custom events instead of a handler.\n const handler = graph.handlerRegistry?.getHandler(\n GraphEvents.ON_RUN_STEP_COMPLETED\n );\n if (!handler) {\n return false;\n }\n\n await handler.handle(\n GraphEvents.ON_RUN_STEP_COMPLETED,\n {\n result: {\n id: stepId,\n index: runStep.index,\n type: 'tool_call',\n tool_call,\n completed_at: completedAt,\n } as t.ToolCompleteEvent,\n },\n metadata,\n graph\n );\n await graph.recordStepCompletion(stepId, {\n toolCallId: data.id,\n metadata,\n at: completedAt,\n });\n return true;\n }\n\n /**\n * Instance method that delegates to the static method\n * Kept for backward compatibility\n */\n async handleToolCallError(\n data: t.ToolErrorData,\n metadata?: Record<string, unknown>\n ): Promise<boolean> {\n return StandardGraph.handleToolCallErrorStatic(this, data, metadata);\n }\n\n async dispatchRunStepDelta(\n id: string,\n delta: t.ToolCallDelta,\n metadata?: Record<string, unknown>\n ): Promise<void> {\n if (!this.config) {\n throw new Error('No config provided');\n } else if (!id) {\n throw new Error('No step ID found');\n }\n const runStepDelta: t.RunStepDeltaEvent = {\n id,\n delta,\n };\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_RUN_STEP_DELTA\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_RUN_STEP_DELTA,\n runStepDelta,\n metadata,\n this\n );\n this.handlerDispatchedStepIds.add(id);\n }\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(GraphEvents.ON_RUN_STEP_DELTA, id)\n : undefined;\n try {\n await safeDispatchCustomEvent(\n GraphEvents.ON_RUN_STEP_DELTA,\n runStepDelta,\n this.config\n );\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n }\n\n async dispatchMessageDelta(\n id: string,\n delta: t.MessageDelta,\n metadata?: Record<string, unknown>\n ): Promise<void> {\n if (!this.config) {\n throw new Error('No config provided');\n }\n const messageDelta: t.MessageDeltaEvent = {\n id,\n delta,\n };\n if (hasTextDeltaContent(delta.content)) {\n this.messageStepHasTextDeltas.add(id);\n }\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_MESSAGE_DELTA\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_MESSAGE_DELTA,\n messageDelta,\n metadata,\n this\n );\n this.handlerDispatchedStepIds.add(id);\n }\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(GraphEvents.ON_MESSAGE_DELTA, id)\n : undefined;\n try {\n await safeDispatchCustomEvent(\n GraphEvents.ON_MESSAGE_DELTA,\n messageDelta,\n this.config\n );\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n }\n\n dispatchReasoningDelta = async (\n stepId: string,\n delta: t.ReasoningDelta,\n metadata?: Record<string, unknown>\n ): Promise<void> => {\n if (!this.config) {\n throw new Error('No config provided');\n }\n const reasoningDelta: t.ReasoningDeltaEvent = {\n id: stepId,\n delta,\n };\n if (hasReasoningDeltaContent(delta.content)) {\n this.reasoningStepHasDeltas.add(stepId);\n }\n const handler = this.handlerRegistry?.getHandler(\n GraphEvents.ON_REASONING_DELTA\n );\n if (handler) {\n await handler.handle(\n GraphEvents.ON_REASONING_DELTA,\n reasoningDelta,\n metadata,\n this\n );\n this.handlerDispatchedStepIds.add(stepId);\n }\n const unmarkHandlerDispatchedEvent = handler\n ? this.markHandlerDispatchedEvent(GraphEvents.ON_REASONING_DELTA, stepId)\n : undefined;\n try {\n await safeDispatchCustomEvent(\n GraphEvents.ON_REASONING_DELTA,\n reasoningDelta,\n this.config\n );\n } finally {\n unmarkHandlerDispatchedEvent?.();\n }\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgLA,MAAM,EAAE,OAAO,OAAO,cAAc;AASpC,MAAM,yBAAgD;CACpD,UAAU,CAAC;CACX,qBAAqB;AACvB;;AAGA,MAAM,iCAAiC;AAEvC,SAAS,2BACP,QAC6B;CAC7B,MAAM,cAAc,QAAQ,WAAA,iBAAsC;CAClE,MAAM,gBAAgB,QAAQ,WAAA,oBAAyC;CACvE,IAAI,eAAe,QAAQ,iBAAiB,MAC1C;CAEF,MAAM,WAAW,IAAI,gBAAgB;CACrC,IAAI,eAAe,MACjB,SAAS,SAAA,mBAAsC,WAAW;CAE5D,IAAI,iBAAiB,MACnB,SAAS,SAAA,sBAAyC,aAAa;CAEjE,OAAO;AACT;AAMA,SAAS,6BACP,WACA,QACQ;CACR,OAAO,GAAG,UAAU,GAAG;AACzB;AAEA,SAAS,iBACP,OACoB;CACpB,IAAI,OAAO,UAAU,UACnB,OAAO,UAAU,KAAK,QAAQ,KAAA;CAEhC,MAAM,cAAc,OAAO,SACvB,KAAK,YAAY,QAAQ,QAAQ,EAAE,CAAC,CACrC,QAAQ,SAAS,SAAS,EAAE,CAAC,CAC7B,KAAK,EAAE;CACV,OAAO,eAAe,QAAQ,gBAAgB,KAAK,cAAc,KAAA;AACnE;AAEA,SAAS,wBACP,OACoB;CACpB,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB;CAEF,MAAM,gBAAgB,MACnB,QAAQ,WAAW,OAAO,SAAS,gBAAgB,CAAC,CACpD,KAAK,WAAW,OAAO,QAAQ,EAAE,CAAC,CAClC,QAAQ,SAAS,SAAS,EAAE,CAAC,CAC7B,KAAK,EAAE;CACV,OAAO,kBAAkB,KAAK,gBAAgB,KAAA;AAChD;AAEA,SAAS,4BAA4B,EACnC,iBACA,gBAIqB;CACrB,MAAM,mBAAmB,iBAAiB;CAC1C,IAAI,oBAAoB,MACtB;CAGF,MAAM,iBAAiB,iBACrB,iBAAiB,aAKnB;CACA,IAAI,kBAAkB,MACpB,OAAO;CAGT,MAAM,mBAAmB,iBACvB,iBAAiB,iBAKnB;CACA,IAAI,oBAAoB,MACtB,OAAO;CAGT,MAAM,YAAY,iBAChB,iBAAiB,SAKnB;CACA,IAAI,aAAa,MACf,OAAO;CAGT,OAAO,wBACL,iBAAiB,iBACnB;AACF;AAEA,SAAS,yBACP,aACS;CACT,OACE,OAAO,gBAAgB,YACvB,UAAU,eACV,OAAO,YAAY,SAAS,YAC5B,YAAY,KAAK,WAAW,MAAM;AAEtC;AAEA,SAAS,yCACP,aACS;CACT,OACE,OAAO,gBAAgB,YACvB,UAAU,gBACT,YAAY,SAAS,cAAc,YAAY,SAAS;AAE7D;AAEA,SAAS,oCACP,UACA,SACsC;CACtC,OACE,aAAa,QAAQ,KACrB,MAAM,QAAQ,OAAO,KACrB,QAAQ,MAAM,gBACZ,yCAAyC,WAAW,CACtD;AAEJ;AAEA,SAAS,uBACP,UACA,SACuC;CACvC,IAAI,WAAW,MACb;CAEF,IAAI,OAAO,YAAY,UACrB,OAAO,YAAY,KACf,CAAC;EAAE,MAAA;EAAyB,MAAM;CAAQ,CAAC,IAC3C,KAAA;CAEN,IAAI,QAAQ,WAAW,GACrB;CAGF,MAAM,8BACJ,aAAa,QAAQ,KACrB,QAAQ,MAAM,gBACZ,yCAAyC,WAAW,CACtD;CACF,IAAI,QAAQ,OAAO,gBAAgB,yBAAyB,WAAW,CAAC,GACtE,OAAO;CAET,IAAI,CAAC,6BACH;CAEF,MAAM,iBAAiB,QAAQ,QAC5B,gBACC,yBAAyB,WAAW,KACpC,yCAAyC,WAAW,CACxD;CACA,OAAO,eAAe,SAAS,IAC1B,iBACD,KAAA;AACN;AAEA,SAAS,oBACP,SACS;CACT,IAAI,WAAW,MACb,OAAO;CAET,OAAO,QAAQ,MAAM,gBAAgB;EACnC,IAAI,YAAY,MAAM,WAAA,MAA4B,MAAM,MACtD,OAAO;EAET,MAAM,OAAQ,YAA0C;EACxD,OAAO,OAAO,SAAS,YAAY,SAAS;CAC9C,CAAC;AACH;AAEA,SAAS,yBACP,SACS;CACT,IAAI,WAAW,MACb,OAAO;CAET,OAAO,QAAQ,MACZ,gBACC,YAAY,SAAA,WAA+B,YAAY,UAAU,EACrE;AACF;AAEA,SAAS,kBAAkB,EACzB,OACA,YAIW;CACX,MAAM,cAAc,MAAM,eAAe,QAAQ;CACjD,MAAM,iBAA2B,CAAC;CAClC,KAAK,MAAM,CAAC,SAAS,YAAY,MAAM,YAAY;EACjD,IAAI,YAAY,eAAe,CAAC,QAAQ,WAAW,GAAG,YAAY,EAAE,GAClE;EAEF,eAAe,KAAK,GAAG,OAAO;CAChC;CACA,OAAO;AACT;AAEA,SAAS,wBAAwB,EAC/B,OACA,YAIU;CACV,OAAO,kBAAkB;EAAE;EAAO;CAAS,CAAC,CAAC,CAAC,MAAM,WAClD,MAAM,yBAAyB,IAAI,MAAM,CAC3C;AACF;AAEA,SAAS,6BAA6B,EACpC,OACA,YAIU;CACV,OAAO,kBAAkB;EAAE;EAAO;CAAS,CAAC,CAAC,CAAC,MAAM,WAClD,MAAM,uBAAuB,IAAI,MAAM,CACzC;AACF;AAEA,SAAS,6BAA6B,EACpC,OACA,YAIO;CACP,KAAK,MAAM,UAAU,kBAAkB;EAAE;EAAO;CAAS,CAAC,GAAG;EAC3D,MAAM,yBAAyB,OAAO,MAAM;EAC5C,MAAM,uBAAuB,OAAO,MAAM;CAC5C;AACF;;;;;;;AAQA,SAAS,8BACP,eACoB;CACpB,MAAM,UAAU;CAGhB,KAAK,MAAM,SAAS,CAAC,SAAS,WAAW,SAAS,eAAe,GAC/D,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,QAAQ,GACjE,OAAO;AAIb;;;;;;AAOA,SAAS,yBACP,cACoB;CACpB,MAAM,SAAS,cAAc;CAC7B,MAAM,YAAY,cAAc;CAChC,IACE,UAAU,QACV,aAAa,QACb,CAAC,OAAO,SAAS,MAAM,KACvB,CAAC,OAAO,SAAS,SAAS,GAE1B;CAEF,MAAM,OAAO,SAAS;CACtB,OAAO,OAAO,IAAI,OAAO,KAAA;AAC3B;AAEA,SAAS,WACP,MACA,OACoB;CACpB,IAAI,QAAQ,MACV,OAAO;CAET,IAAI,SAAS,MACX,OAAO;CAET,OAAO,KAAK,IAAI,MAAM,KAAK;AAC7B;AAEA,eAAe,4BAA4B,EACzC,OACA,SACA,WACA,SACA,aACA,YAQkB;CAClB,MAAM,MAAM,gBACV,SACA;EACE,MAAA;EACA,kBAAkB;GAChB,YAAY;GACZ,GAAG,kCAAkC,SAAS,WAAW;EAC3D;CACF,GACA,QACF;CACA,OAAO,MAAM,eAAe,OAAO;AACrC;AAEA,eAAe,2BAA2B,EACxC,OACA,SACA,UACA,SACA,YAOmB;CACnB,MAAM,YAAY,aAAa,SAAS,KAAK,KAAK;CAClD,IAAI,CAAC,WACH,OAAO;CAET,IAAI,oCAAoC,UAAU,OAAO,GAAG;EAC1D,KAAK,MAAM,eAAe,SAAS;GACjC,MAAM,SAAS,MAAM,4BAA4B;IAC/C;IACA;IACA;IACA,SAAS,CAAC,WAAW;IACrB;GACF,CAAC;GACD,MAAM,MAAM,qBACV,QACA,EAAE,SAAS,CAAC,WAAW,EAAE,GACzB,QACF;EACF;EACA,OAAO;CACT;CACA,MAAM,gBAAgB,MAAM,QAAQ,OAAO,IACvC,iCAAiC,OAAO,IACxC,CAAC,OAAO;CACZ,KAAK,MAAM,gBAAgB,eAAe;EACxC,MAAM,SAAS,MAAM,4BAA4B;GAC/C;GACA;GACA;GACA,SAAS;GACT,aAAA;GACA;EACF,CAAC;EACD,MAAM,MAAM,qBACV,QACA,EAAE,SAAS,aAAa,GACxB,QACF;CACF;CACA,OAAO;AACT;AAEA,eAAe,yBAAyB,EACtC,OACA,cACA,kBACA,YAMmB;CACnB,MAAM,oBAAoB,aAAa;CACvC,MAAM,0BAA0B,aAAa;CAC7C,MAAM,0BAA0B,aAAa;CAE7C,aAAa,mBAAA;CACb,aAAa,kBAAkB;CAE/B,MAAM,UAAU,MAAM,WAAW,QAAQ;CACzC,MAAM,YAAY,aAAa,SAAS,KAAK,KAAK;CAClD,IAAI,CAAC,WAAW;EACd,aAAa,mBAAmB;EAChC,aAAa,kBAAkB;EAC/B,aAAa,2BAA2B;EACxC,OAAO;CACT;CAEA,MAAM,MAAM,gBACV,SACA;EACE,MAAA;EACA,kBAAkB;GAChB,YAAY;GACZ,cAAA;EACF;CACF,GACA,QACF;CACA,MAAM,SAAS,MAAM,eAAe,OAAO;CAC3C,MAAM,MAAM,uBACV,QACA,EACE,SAAS,CAAC;EAAE,MAAA;EAA0B,OAAO;CAAiB,CAAC,EACjE,GACA,QACF;CACA,OAAO;AACT;AAEA,SAAS,yBAAyB,cAAkC;CAClE,IACE,aAAa,oBAAoB,eACjC,aAAa,qBAAA,QAEb;CAEF,aAAa,mBAAA;CACb,aAAa,kBAAkB;CAC/B,aAAa;AACf;AAEA,SAAS,qCAAqC,EAC5C,cACA,0BACA,0BACA,iCAMqB;CACrB,IAAI,4BAA4B,QAAQ,+BACtC;CAEF,IACE,aAAa,aAAA,gBACb,0BAEA;CAEF,OAAO;AACT;AAEA,IAAsB,QAAtB,MAGE;CAEA,0BACE,WACA,kBACM,CAAC;;CAUT,mBAAmB,UAA6B;EAC9C,OAAO,CAAC;CACV;CAwCA,2CAAwC,IAAI,IAAI;CAChD,0CAAgD,IAAI,IAAI;CACxD,sCAA2C,IAAI,IAAI;CACnD,4CAAiD,IAAI,IAAI;CACzD;CACA,cAA2B,CAAC;CAC5B,6BAAoC,IAAI,IAAsB;CAC9D,kCAAuC,IAAI,IAAI;CAC/C,kCAAuC,IAAI,IAAI;;CAE/C,yCAAmD,IAAI,IAAI;;;;;;;CAO3D,yCAA8C,IAAI,IAAI;;CAEtD,yCAA8C,IAAI,IAAI;;;;;;CAMtD,2CAAwC,IAAI,IAAI;CAChD,yCAAsC,IAAI,IAAI;CAC9C,+CAA8D,IAAI,IAAI;CACtE;;;;;;;;;;;;;;CAcA;;CAEA;CACA;;CAEA;;;;;;;;CAQA,8BAAuC;CACvC;;;;;;;CAOA;;;;;;CAMA;;;;CAIA;;;;;;CAMA;CACA;;;;;;;;CAQA;CACA,2CAAmE,IAAI,IAAI;CAC3E,2CAAgD,IAAI,IAAI;CACxD,qDACE,IAAI,IAAI;CACV,2CACE,IAAI,IAAI;;;;;;;;;CASV,6CAA0C,IAAI,IAAI;;;;;CAKlD;;;;;;;CAOA;;;;;;CAMA,2BAA6B,IAAI,IAAI;;;;;;CAOrC,kBAAwB;EACtB,KAAK,SAAS,KAAA;EACd,KAAK,SAAS,KAAA;EACd,KAAK,eAAe,KAAA;EACpB,KAAK,cAAc,CAAC;EACpB,KAAK,kCAAkB,IAAI,IAAI;EAC/B,KAAK,6BAAa,IAAI,IAAI;EAC1B,KAAK,gBAAgB,MAAM;EAC3B,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;EAClC,KAAK,sCAAsB,IAAI,IAAI;EACnC,KAAK,2CAA2B,IAAI,IAAI;EACxC,KAAK,yCAAyB,IAAI,IAAI;EACtC,KAAK,0CAA0B,IAAI,IAAI;EACvC,KAAK,4CAA4B,IAAI,IAAI;EACzC,KAAK,iBAAiB,KAAA;EACtB,KAAK,kBAAkB,KAAA;EACvB,KAAK,4BAA4B,KAAA;EACjC,KAAK,eAAe,KAAA;EACpB,KAAK,iBAAiB,KAAA;EACtB,KAAK,uBAAuB,KAAA;EAC5B,KAAK,0BAA0B,KAAA;EAC/B,KAAK,uBAAuB,KAAA;EAC5B,KAAK,wBAAwB,KAAA;EAC7B,KAAK,yBAAyB,MAAM;EACpC,KAAK,+BAA+B;EACpC,KAAK,yBAAyB,MAAM;EACpC,KAAK,2BAA2B,MAAM;EACtC,KAAK,gBAAgB,KAAA;EACrB,KAAK,6BAA6B,MAAM;;;;;;;;;EASxC,KAAK,qBAAqB,MAAM;EAChC,KAAK,sBAAsB,KAAA;EAgB3B,KAAK,MAAM,QAAQ,KAAK,oBACtB,KAAK,qBAAqB;EAK5B,KAAK,MAAM,YAAY,KAAK,oBAC1B,SAAS,gBAAgB;EAE3B,KAAK,SAAS,MAAM;CACtB;CAEA,4BAA4B,SAAuC;EACjE,IAAI,WAAW,QAAQ,YAAY,IACjC,OAAO,KAAK;EAEd,IAAI,aAAa,KAAK,mCAAmC,IAAI,OAAO;EACpE,IAAI,cAAc,MAAM;GACtB,6BAAa,IAAI,IAAoB;GACrC,KAAK,mCAAmC,IAAI,SAAS,UAAU;EACjE;EACA,OAAO;CACT;CAEA,iCAAiD;EAC/C,KAAK,yBAAyB,MAAM;EACpC,KAAK,MAAM,cAAc,KAAK,mCAAmC,OAAO,GACtE,WAAW,MAAM;CAErB;;;;;;;CAQA,wBAAwB,YAAoB,QAAsB;EAChE,IAAI,CAAC,cAAc,CAAC,QAClB;EAEF,KAAK,sBAAsB,MAAM,CAAC,CAAC,IAAI,UAAU;CACnD;;;CAIA,sBAAgC,QAA6B;EAC3D,IAAI,UAAU,KAAK,uBAAuB,IAAI,MAAM;EACpD,IAAI,CAAC,SAAS;GACZ,0BAAU,IAAI,IAAI;GAClB,KAAK,uBAAuB,IAAI,QAAQ,OAAO;EACjD;EACA,OAAO;CACT;CAEA,2BAA2B,WAAmB,QAA4B;EACxE,MAAM,MAAM,6BAA6B,WAAW,MAAM;EAC1D,KAAK,6BAA6B,IAChC,MACC,KAAK,6BAA6B,IAAI,GAAG,KAAK,KAAK,CACtD;EACA,aAAa;GACX,MAAM,QAAQ,KAAK,6BAA6B,IAAI,GAAG,KAAK;GAC5D,IAAI,SAAS,GAAG;IACd,KAAK,6BAA6B,OAAO,GAAG;IAC5C;GACF;GACA,KAAK,6BAA6B,IAAI,KAAK,QAAQ,CAAC;EACtD;CACF;CAEA,0BAA0B,WAAmB,QAAyB;EACpE,MAAM,MAAM,6BAA6B,WAAW,MAAM;EAC1D,QAAQ,KAAK,6BAA6B,IAAI,GAAG,KAAK,KAAK;CAC7D;;;;;;;CAQA,yBAAmC,MAI1B;EACP,KAAK,mBAAmB,IAAI,IAAI;CAClC;CAEA,yBAAmC,UAAkC;EACnE,KAAK,mBAAmB,IAAI,QAAQ;CACtC;CAEA,mCAAmD;EACjD,KAAK,MAAM,YAAY,KAAK,oBAC1B,SAAS,yBAAyB;CAEtC;CAEA,8BAAwC;EACtC,MAAM,4BAAY,IAAI,IAAY;EAClC,KAAK,MAAM,YAAY,KAAK,oBAC1B,KAAK,MAAM,YAAY,SAAS,4BAA4B,GAC1D,UAAU,IAAI,QAAQ;EAG1B,OAAO,CAAC,GAAG,SAAS;CACtB;CAEA,0BAA0B,OAAyC;EACjE,OAAO;GACL,eAAe,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa;IACtE;IACA;GACF,EAAE;GACF,cAAc,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,cAAc;IAC7D;IACA,SAAS;KACP,GAAG;KACH,GAAI,QAAQ,SAAS,OACjB,CAAC,IACD,EAAE,OAAO,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE;IAC1D;GACF,EAAE;GACF,WAAW,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC,KAAK,SAC3C,KAAK,0BAA0B,CACjC;GACA,gBAAgB,CACd;IACE,SAAS;IACT,iBAAiB,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAC,KACjD,CAAC,UAAU,YAAY;KAAE;KAAU;IAAM,EAC5C;GACF,GACA,GAAG,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC,KAC7C,CAAC,SAAS,kBAAkB;IAC3B;IACA,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,YAAY;KAC5D;KACA;IACF,EAAE;GACJ,EACF,CACF;GACA,uBAAuB,CAAC,GAAG,KAAK,0BAA0B;GAC1D,GAAI,KAAK,uBAAuB,OAC5B,CAAC,IACD,EACA,sBAAsB,KAAK,oBAAoB,cAAc,KAAK,EACpE;EACJ;CACF;CAEA,2BACE,OACA,OACM;EACN,MAAM,iBAAiB,IAAI,IACzB,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC,KAAK,SAAS;GAEzC,OAAO,CADW,KAAK,0BACP,CAAC,CAAC,UAAU,IAAI;EAClC,CAAC,CACH;EACA,IAAI,eAAe,SAAS,MAAM,UAAU,QAC1C,MAAM,IAAI,MAAM,gDAAgD;EAElE,KAAK,MAAM,aAAa,MAAM,WAC5B,IAAI,CAAC,eAAe,IAAI,UAAU,QAAQ,GACxC,MAAM,IAAI,MACR,2CAA2C,UAAU,SAAS,GAChE;EAGJ,MAAM,WACJ,MAAM,wBAAwB,OAC1B,KAAA,IACA,KAAK,8BAA8B;EACzC,IAAI,MAAM,wBAAwB,QAAQ,YAAY,MACpD,MAAM,IAAI,MAAM,iDAAiD;EAGnE,KAAK,gBAAgB,MAAM;EAC3B,KAAK,MAAM,EAAE,YAAY,YAAY,MAAM,eACzC,KAAK,gBAAgB,IAAI,YAAY,MAAM;EAE7C,KAAK,SAAS,MAAM;EACpB,KAAK,MAAM,EAAE,UAAU,aAAa,MAAM,cACxC,KAAK,SAAS,IAAI,UAAU;GAC1B,GAAG;GACH,GAAI,QAAQ,SAAS,OACjB,CAAC,IACD,EAAE,OAAO,QAAQ,MAAM,KAAK,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE;EAC1D,CAAC;EAEH,KAAK,MAAM,aAAa,MAAM,WAE5B,eAD4B,IAAI,UAAU,QACvC,CAAC,CAAC,2BAA2B,SAAS;EAE3C,KAAK,+BAA+B;EACpC,KAAK,MAAM,cAAc,MAAM,gBAAgB;GAC7C,MAAM,cAAc,KAAK,4BAA4B,WAAW,OAAO;GACvE,KAAK,MAAM,EAAE,UAAU,WAAW,WAAW,iBAC3C,YAAY,IAAI,UAAU,KAAK;EAEnC;EACA,KAAK,2BAA2B,MAAM;EACtC,KAAK,MAAM,YAAY,MAAM,uBAC3B,KAAK,2BAA2B,IAAI,QAAQ;EAE9C,IAAI,MAAM,wBAAwB,QAAQ,YAAY,MACpD,SAAS,aAAa,OAAO,MAAM,oBAAoB;CAE3D;;;;;;;;;;;;;;CAeA,gCAEc;EACZ,IAAI,KAAK,sBAAsB,YAAY,MACzC;EAEF,IAAI,KAAK,uBAAuB,MAC9B,KAAK,sBAAsB,IAAI,4BAA4B;GACzD,eAAe,KAAK,qBAAqB;GACzC,cAAc,KAAK,qBAAqB;EAC1C,CAAC;EAEH,OAAO,KAAK;CACd;;;;;;;;;;;CAYA;;;;;;;;;CASA,qCAIK,IAAI,IAAI;CACb,qCAA6B,IAAI,IAAsB;CACvD,8BAA0E;EAMxE,IAAI,KAAK,qBAAqB,MAC5B,OAAO,KAAK;EAOd,IACE,KAAK,eAAe,WAAW,WAC/B,KAAK,cAAc,OAAO,sBAAsB,MAChD;GACA,MAAM,SAAS,4BACb,KAAK,cAAc,SAAS,CAAC,CAC/B;GACA,KAAK,oBAAoB,OAAO;GAChC,OAAO,KAAK;EACd;EACA,IACE,KAAK,eAAe,WAAW,wBAC/B,KAAK,cAAc,YAAY,sBAAsB,MACrD;GACA,MAAM,SAAS,iCACb,KAAK,cAAc,UACrB;GACA,KAAK,oBAAoB,OAAO;GAChC,OAAO,KAAK;EACd;CAEF;AACF;AAEA,IAAa,gBAAb,MAAa,sBAAsB,MAAqC;CACtE;CACA;CACA;CACA;;CAEA;;CAEA,0BAAmC;CACnC,WAA0B,CAAC;;CAE3B,gCAAwC;;CAExC;;CAEA;;CAEA,0CAAoC,IAAI,IAAY;;CAEpD;CACA;;;;;;;;;;CAUA;;;;;;;;CAQA,aAAqB;CACrB;;CAEA,gCAA2C,IAAI,IAAI;;CAEnD;;;;;;;CAOA;;CAEA;;CAEA;;CAEA;;;;;;CAMA;;;;;;CAMA,6CAAoE,IAAI,IAAI;;CAE5E,yCAA6D,IAAI,IAAI;;;;;;CAMrE;;;;;;;CAOA,eAAe,IAAI,gBAAgB;;;;;;CAOnC,eAAe;;;;;;;CAQf,WAA4B,OAAO,OAAO;EACxC,OAAO;EACP,YAAY,KAAK;CACnB,CAAC;;;;CAKD;;;;;;CAOA,4BACE,gBAA6B,KAAK,aAAa,QACT;EACtC,IACE,cAAc,WACd,cAAc,kBAAkB,0BAEhC,OAAO,cAAc;EAEvB,IACE,KAAK,QAAQ,YAAY,QACzB,KAAK,OAAO,kBAAkB,0BAE9B,OAAO,KAAK,OAAO;CAGvB;;;;;;CAMA,wBAAgC;;;;;;;CAOhC,mBAAmB;;CAEnB,yBAAyB;;;;;;;;CAQzB,sBAA8B;;;;;;CAM9B,oBAAoB;;;;;;;;;CASpB;;;;;;;CAOA,uCAAuB,IAAI,IAAY;CAEvC,YACE,EACE,OACA,QACA,QACA,UACA,cACA,oBACA,kBACA,mBACA,eACA,0BACA,YACA,gBAEF,cACA;EACA,MAAM;EACN,KAAK,6BAA6B,gBAAgB;EAClD,KAAK,eACH,cAAc,kBACZ,YAA2B;GAC3B,IAAI,QAAQ,SAAS,YACnB,MAAM,IAAI,MACR,6EACF;GAEF,OAAO,IAAI,cAAc,QAAQ,KAAK;EACxC;EACF,KAAK,QAAQ;EACb,KAAK,qBAAqB,GAAG,SAAS,QAAQ,GAAG,OAAO;EACxD,KAAK,SAAS;EACd,KAAK,WAAW;EAChB,KAAK,oBAAoB;EACzB,KAAK,gBAAgB,kBAAkB;EACvC,KAAK,2BAA2B;EAChC,KAAK,aAAa;EAClB,KAAK,eAAe,oBAAoB,YAAY;EAEpD,IAAI,OAAO,WAAW,GACpB,MAAM,IAAI,MAAM,8CAA8C;EAGhE,KAAK,MAAM,eAAe,QAAQ;GAChC,MAAM,eAAe,aAAa,WAChC,aACA,cACA,kBACF;GACA,IAAI,oBAAoB,QAAQ,mBAAmB,GACjD,aAAa,mBAAmB;GAGlC,KAAK,cAAc,IAAI,YAAY,SAAS,YAAY;EAC1D;EAEA,KAAK,iBAAiB,OAAO,EAAE,CAAC;CAClC;CAIA,YAAY,aAAuB,iBAAgC;EACjE,KAAK,iCAAiC;EACtC,KAAK,WAAW,CAAC;EACjB,KAAK,gCAAgC;EACrC,KAAK,oBAAoB,KAAA;EACzB,KAAK,wBAAwB,KAAA;EAC7B,KAAK,SAAS,gBAAgB,KAAK,QAAQ,KAAA,CAAS;EACpD,IAAI,gBAAgB,MAAM;GACxB,KAAK,cAAc,gBAAgB,KAAK,aAAa,CAAC,CAAC;GACvD,KAAK,kBAAkB,gBAAgB,KAAK,iCAAiB,IAAI,IAAI,CAAC;EACxE;EACA,KAAK,aAAa,gBAAgB,KAAK,4BAAY,IAAI,IAAI,CAAC;;;;;;;EAO5D,KAAK,gBAAgB,MAAM;EAC3B,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;EAClC,KAAK,wBAAwB,MAAM;EACnC,KAAK,yBAAyB,MAAM;EACpC,KAAK,+BAA+B;EACpC,KAAK,yBAAyB,MAAM;EACpC,KAAK,2BAA2B,MAAM;;;;;;;EAOtC,6BACE,KAAK,4BACL,KAAK,cACL,KAAK,4BACP;EACA,6BACE,KAAK,wBACL,KAAK,cACL,KAAK,4BACP;EACA,KAAK,2BAA2B,KAAA;;;;;;;;EAQhC,KAAK,eAAe,IAAI,gBAAgB;EACxC,KAAK,gBAAgB;EACrB,KAAK,WAAW,OAAO,OAAO;GAC5B,OAAO,KAAK;GACZ,YAAY,KAAK;EACnB,CAAC;EACD,KAAK,2BAA2B,gBAC9B,KAAK,0CACL,IAAI,IAAI,CACV;EACA,KAAK,+BAA+B,gBAClC,KAAK,8CACL,IAAI,IAAI,CACV;EACA,KAAK,sBAAsB,gBACzB,KAAK,qCACL,IAAI,IAAI,CACV;EACA,KAAK,0BAA0B,gBAC7B,KAAK,yCACL,IAAI,IAAI,CACV;EACA,KAAK,2BAA2B,gBAC9B,KAAK,0CACL,IAAI,IAAI,CACV;EACA,KAAK,yBAAyB,gBAC5B,KAAK,wCACL,IAAI,IAAI,CACV;EACA,KAAK,4BAA4B,gBAC/B,KAAK,2CACL,IAAI,IAAI,CACV;EACA,KAAK,iBAAiB,gBAAgB,KAAK,gBAAgB,KAAA,CAAS;EACpE,KAAK,sBAAsB;EAC3B,KAAK,mBAAmB;EACxB,MAAM,sBACJ,KAAK,2BACL,mBAAmB,QACnB,oBAAoB;EACtB,MAAM,8BACJ,uBACA,KAAK,uCAAuC;EAC9C,KAAK,MAAM,WAAW,KAAK,cAAc,OAAO,GAC9C,QAAQ,MAAM,EAAE,4BAA4B,CAAC;EAE/C,KAAK,qCAAqC,sBACtC,kBACA,KAAA;CACN;;CAGA,0BACE,UACA,iBACM;EACN,IAAI,KAAK,SAAS,SAAS,GACzB;EAEF,KAAK,WACH,mBAAmB,OACf,CAAC,GAAG,QAAQ,IACZA,uBAAqB,UAAU,eAAe;EACpD,KAAK,aAAa,KAAK,SAAS;EAChC,KAAK,gCAAgC;EACrC,KAAK,oBAAoB,KAAA;CAC3B;CAEA,kBAAiC;EAC/B,KAAK,oBAAoB,KAAK,SAAS,MAAM,KAAK,UAAU;EAC5D,KAAK,wBAAwB,IAAI,IAC/B,MAAM,KAAK,KAAK,gBAAgB,CAAC,SAAS,aAAa,CACrD,SACA,QAAQ,mBAAmB,CAC7B,CAAC,CACH;EACA,MAAM,gBAAgB;EACtB,KAAK,WAAW,CAAC;EACjB,KAAK,gBAAgB,KAAA;EACrB,KAAK,wBAAwB,KAAA;;;;;;;;;;;;;;;;;;;;;EAqB7B,KAAK,sBAAsB;EAC3B,MAAM,8BACJ,KAAK,2BACL,KAAK,sCAAsC;EAC7C,KAAK,MAAM,WAAW,KAAK,cAAc,OAAO,GAC9C,QAAQ,MAAM,EAAE,4BAA4B,CAAC;CAEjD;;;;;;;;CASA,wBAAsC;EACpC,KAAK,wBAAwB;EAC7B,KAAK,sBAAsB;EAC3B,KAAK,qBAAqB,MAAM;CAClC;;;;;;;;CASA,qBAAmC;EACjC,KAAK,mBAAmB;EACxB,KAAK,yBAAyB;EAC9B,KAAK,oBAAoB;EACzB,KAAK,oBAAoB,KAAA;CAC3B;;;;;;;;;;;;;;CAeA,sBAAuC;;;;;;;;EAQrC,MAAM,QACH,KAAK,QAAQ,cAAc,UAAiC,KAAK;EACpE,OACE,CAAC,KAAK,iBACN,KAAK,cAAc,QACnB,CAAC,KAAK,uBACN,KAAK,wBAAwB,gBAAgB,KAAK,WAAW,QAAQ,KACrE,SAAS,QAYT,KAAK,cAAc,uBAAuB,mBAAmB,KAAK,MAChE;CAEN;CAEA,sBAA+B;EAC7B,OACE,KAAK,oBAAoB,KAAK,KAAK,YAAY,cAAc,MAAM;CAEvE;;;;;;;;;;;;;;;CAgBA,mBAA4B;EAC1B,IAAI,CAAC,KAAK,oBAAoB,GAC5B,OAAO;EAET,KAAK,sBAAsB;EAC3B,KAAK,yBAAyB;EAC9B,KAAK,oBAAoB;EACzB,OAAO;CACT;;CAGA,qBAA2B;EACzB,KAAK,sBAAsB;CAC7B;CAEA,kBAAkC;EAChC,OAAO;GACL,OAAO,KAAK;GACZ,iBAAiB,KAAK;EACxB;CACF;CAIA,WAAW,QAAuC;EAChD,MAAM,QAAQ,KAAK,gBAAgB,IAAI,MAAM;EAC7C,IAAI,UAAU,KAAA,GACZ,OAAO,KAAK,YAAY;CAG5B;;;;;;;;CASA,gBAA0B,UAA4C;EACpE,IAAI,CAAC,YAAY,CAAC,KAAK,kBAAkB,GACvC,OAAO;EAET,IAAI;GACF,MAAM,eAAe,KAAK,gBAAgB,QAAQ;GAClD,IAAI,aAAa,SACf,OAAO,aAAa;EAExB,SAAS,IAAI,CAEb;EACA,OAAO;CACT;;;;;CAMA,eAAuB,SAA0B;EAC/C,KAAK,uBAAuB,OAAO,QAAQ,EAAE;EAC7C,KAAK,uBAAuB,OAAO,QAAQ,EAAE;EAC7C,MAAM,WAAW,QAAQ,WAAW;EACpC,IAAI,KAAK,uBAAuB,IAAI,QAAQ,MAAM,QAAQ,IACxD,KAAK,uBAAuB,OAAO,QAAQ;CAE/C;;;;;;;;;CAUA,MAAgB,uBACd,SACA,UAUA,yBAAkC,MACnB;EACf,MAAM,WAAW,QAAQ,WAAW;EACpC,MAAM,oBAAoB,KAAK,uBAAuB,IAAI,QAAQ;;;;;;;;;;EAUlE,QAAQ,QAAQ,KAAK,YAAY;EACjC,KAAK,YAAY,KAAK,OAAO;EAC7B,KAAK,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,KAAK;EAClD,IAAI,0BAA0B,QAAQ,SAAA,oBACpC,KAAK,uBAAuB,IAAI,UAAU,QAAQ,EAAE;OAEpD,KAAK,uBAAuB,OAAO,QAAQ;;;;;;EAO7C,IAAI,qBAAqB,QAAQ,sBAAsB,QAAQ;;;;;;;EAO7D,IAAI;GACF,MAAM,KAAK,aAAa,mBAAmB,aAAa,EAAE,SAAS,CAAC;EACtE,SAAS,IAAI,CAEb;;;;;;;EAQF,QAAQ,aAAa,KAAK,IAAI;CAChC;;;;;;;;;CAUA,MAAM,aACJ,QACA,QACA,SACkB;EAClB,IAAI,CAAC,QACH,OAAO;EAET,MAAM,UAAU,KAAK,WAAW,MAAM;EACtC,IAAI,CAAC,SACH,OAAO;EAET,IAAI,QAAQ,UAAU,QAAQ,QAAQ,WAAW,eAAe;GAC9D,KAAK,eAAe,OAAO;GAC3B,OAAO;EACT;EAEA,MAAM,WAAW,SAAS,MAAM,KAAK,IAAI;EACzC,QAAQ,SAAS;EACjB,IAAI,WAAW,aACb,QAAQ,eAAe;OAClB,IAAI,WAAW,aACpB,QAAQ,eAAe;OAEvB,QAAQ,YAAY;EAGtB,MAAM,cAAoC;GACxC,IAAI;GACJ,OAAO,QAAQ;GACf,MAAM,QAAQ;GACd;GACA,WAAW;EACb;EACA,IAAI,QAAQ,cAAc,MACxB,YAAY,aAAa,QAAQ;EAEnC,IAAI,QAAQ,SAAS,MACnB,YAAY,QAAQ,QAAQ;EAE9B,IAAI,QAAQ,WAAW,MACrB,YAAY,UAAU,QAAQ;EAEhC,IAAI,QAAQ,WAAW,MACrB,YAAY,UAAU,QAAQ;EAEhC,IAAI,QAAQ,aAAa,MACvB,YAAY,YAAY,QAAQ;EAElC,KAAK,eAAe,OAAO;EAE3B,MAAM,UAAU,KAAK,iBAAiB,WAAA,oBAEtC;EACA,IAAI,SAAS;GACX,MAAM,QAAQ,OAAA,sBAEZ,aACA,SAAS,UACT,IACF;GACA,KAAK,yBAAyB,IAAI,MAAM;EAC1C;EACA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,sBAA2D,MAAM,IACtE,KAAA;EACJ,IAAI;GACF,IAAI,KAAK,QACP,MAAM,wBAAA,sBAEJ,aACA,KAAK,MACP;EAEJ,UAAU;GACR,+BAA+B;EACjC;EACA,OAAO;CACT;;;;;;;CAQA,MAAM,qBACJ,QACA,SACe;EACf,IAAI,CAAC,QACH;EAEF,MAAM,EAAE,YAAY,UAAU,OAAO,WAAW,CAAC;EACjD,IAAI,MAAM,MAAM;GACd,MAAM,SAAS,KAAK,uBAAuB,IAAI,MAAM;GACrD,IAAI,UAAU,QAAQ,KAAK,QACzB,KAAK,uBAAuB,IAAI,QAAQ,EAAE;EAE9C;EACA,MAAM,UAAU,KAAK,uBAAuB,IAAI,MAAM,KAAK;EAC3D,MAAM,UAAU,KAAK,uBAAuB,IAAI,MAAM;EACtD,IAAI,WAAW,MAAM;GACnB,MAAM,KAAK,aAAa,QAAQ,aAAa;IAAE;IAAU,IAAI;GAAQ,CAAC;GACtE;EACF;EACA,IAAI,cAAc,QAAQ,eAAe,IACvC,QAAQ,OAAO,UAAU;EAE3B,IAAI,QAAQ,OAAO,GACjB;EAEF,MAAM,KAAK,aAAa,QAAQ,aAAa;GAAE;GAAU,IAAI;EAAQ,CAAC;CACxE;;;;;;;CAQA,MAAM,qBACJ,UAGA,IACe;EACf,IAAI,KAAK,uBAAuB,SAAS,GACvC;EAEF,MAAM,WAAW,KAAK,gBAAgB,QAAQ;EAC9C,MAAM,aAAa,KAAK,uBAAuB,IAAI,QAAQ;EAC3D,IAAI,cAAc,MAChB;EAEF,MAAM,KAAK,aAAa,YAAY,aAAa;GAAE;GAAU;EAAG,CAAC;CACnE;;;;;;;;CASA,MAAM,wBACJ,QACA,IACe;EACf,MAAM,WAAW,MAAM,KAAK,IAAI;EAChC,KAAK,MAAM,WAAW,KAAK,aAAa;GACtC,IAAI,QAAQ,UAAU,QAAQ,QAAQ,WAAW,eAC/C;;;;;;;GAQF,IAAI;IACF,MAAM,KAAK,aAAa,QAAQ,IAAI,QAAQ,EAAE,IAAI,SAAS,CAAC;GAC9D,SAAS,IAAI,CAEb;EACF;EACA,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;EAClC,KAAK,uBAAuB,MAAM;CACpC;CAEA,gBAAgB,UAA6D;EAC3E,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,gDAAgD;EAGlE,MAAM,cAAc,SAAS;EAC7B,IAAI,CAAC,aACH,MAAM,IAAI,MACR,yDACF;EAGF,IAAI;EACJ,IAAI,YAAY,WAAW,KAAK,GAC9B,UAAU,YAAY,UAAU,MAAM,MAAM;OACvC,IAAI,YAAY,WAAW,KAAK,GACrC,UAAU,YAAY,UAAU,MAAM,MAAM;OACvC,IAAI,YAAY,WAAW,SAAS,GACzC,UAAU,YAAY,UAAU,UAAU,MAAM;EAGlD,MAAM,eAAe,KAAK,cAAc,IAAI,WAAW,EAAE;EACzD,IAAI,CAAC,cACH,MAAM,IAAI,MAAM,uCAAuC,SAAS;EAGlE,OAAO;CACT;CAEA,eAAe,UAAuD;EACpE,IAAI,CAAC,UAAU,OAAO;EAEtB,MAAM,UAAU,KAAK,qBAAqB,QAAQ;EAClD,IAAI,KAAK,aAAa,OAAO,GAC3B,MAAM,IAAI,MAAM,kBAAkB;EAGpC,OAAO,SAAS,OAAO;CACzB;CAEA,WAAW,UAAuD;EAChE,IAAI,CAAC,UAAU,OAAO;EAEtB,MAAM,UAAU,KAAK,WAAW,QAAQ;EACxC,IAAI,KAAK,aAAa,OAAO,GAC3B,MAAM,IAAI,MAAM,kBAAkB;EAGpC,OAAO,SAAS,OAAO;CACzB;CAEA,eAAe,SAAiB,OAAwB;EACtD,MAAM,UAAU,KAAK,WAAW,IAAI,OAAO;EAC3C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,iCAAiC,SAAS;EAG5D,IAAI,UAAU,KAAA,GACZ,OAAO,QAAQ,QAAQ,SAAS;EAGlC,OAAO,QAAQ;CACjB;CAEA,eAAe,SAAmC;EAChD,MAAM,UAAU,KAAK,WAAW,IAAI,OAAO;EAC3C,IAAI;EACJ,IAAI,YAAY;EAChB,IAAI,SAAS;GACX,YAAY,QAAQ;GACpB,YAAY,QAAQ,OAAO;GAC3B,QAAQ,KAAK,SAAS;GACtB,KAAK,WAAW,IAAI,SAAS,OAAO;EACtC,OAAO;GACL,YAAY,QAAQ,OAAO;GAC3B,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,CAAC;EAC1C;EAEA,OAAO,CAAC,WAAW,SAAS;CAC9B;CAEA,WACE,UACiC;EACjC,IAAI,CAAC,UAAU,OAAO,CAAC;EAEvB,MAAM,UAAU,KAAK,qBAAqB,QAAQ;EAClD,MAAM,eAAe,KAAK,gBAAgB,QAAQ;EAClD,IACE,aAAa,qBAAA,WACb,aAAa,qBAAqB,kBAElC,QAAQ,KAAK,WAAW;OACnB,IAAI,aAAa,oBAAoB,WAC1C,QAAQ,KAAK,kBAAkB,aAAa,0BAA0B;EAGxE,OAAO;CACT;CAEA,qBACE,UACiC;EACjC,MAAM,UAAU,KAAK,eAAe,QAAQ;EAC5C,IAAI,KAAK,kBAAkB,QAAQ,KAAK,eAAe,OAAO,GAC5D,QAAQ,KAAK,KAAK,eAAe,OAAO,EAAE;EAE5C,OAAO;CACT;CAEA,eACE,UACiC;EACjC,MAAM,eAAe,KAAK,QAAQ;EAClC,MAAM,QACH,SAAS,UACT,cAAc,UACf,KAAK;EACP,MAAM,WACH,SAAS,aACT,cAAc,aACf;EACF,MAAM,eACH,SAAS,iBACT,SAAS,2BACV;EASF,OAAO;GAPL;GACA;GACA,SAAS;GACT,SAAS;GACT;EAGW;CACf;CAEA,aAAa,SAAmD;EAC9D,OAAO,QAAQ,MAAM,QAAQ,QAAQ,KAAA,CAAS;CAChD;CAIA,iBAA4C;;;;EAI1C,MAAM,WAAW,KAAK;EACtB,IAAI,YAAY,MACd,OAAO,KAAK;EAEd,IAAI,SAAS,WAAW,KAAK,KAAK,qBAAqB,MACrD,OAAO,KAAK;EAEd,OAAO,SAAS,MAAM,KAAK,UAAU;CACvC;CAEA,mBAA4B,SAA4B;EACtD,IAAI,WAAW,MAAM;GACnB,MAAM,UACJ,KAAK,cAAc,IAAI,OAAO,CAAC,EAAE,mBAAmB,KAAK,CAAC;GAC5D,IAAI,QAAQ,SAAS,KAAK,KAAK,yBAAyB,MACtD,OAAO;GAET,OAAO,CAAC,GAAI,KAAK,sBAAsB,IAAI,OAAO,KAAK,CAAC,CAAE;EAC5D;EAEA,MAAM,kCAAkB,IAAI,IAAY;EACxC,KAAK,MAAM,WAAW,KAAK,cAAc,OAAO,GAC9C,KAAK,MAAM,YAAY,QAAQ,mBAAmB,GAChD,gBAAgB,IAAI,QAAQ;EAGhC,IAAI,gBAAgB,SAAS,KAAK,KAAK,yBAAyB,MAC9D,KAAK,MAAM,YAAY,KAAK,sBAAsB,OAAO,GACvD,KAAK,MAAM,YAAY,UACrB,gBAAgB,IAAI,QAAQ;EAIlC,OAAO,MAAM,KAAK,eAAe;CACnC;;;;;;;;;;;CAYA,qBAAqB,SAA+B;EAClD,MAAM,KAAK,QAAQ;EACnB,OACE,OAAO,OAAO,YACd,OAAO,MACP,KAAK,wBAAwB,IAAI,EAAE;CAEvC;CAEA,kBAAyD;EAIvD,MAAM,WAAW,KAAK;EACtB,IAAI,YAAY,MACd;EAEF,OAAO,yBAAyB,SAAS,MAAM,KAAK,UAAU,CAAC;CACjE;CAEA,sBAA8B;EAE5B,OADgB,KAAK,cAAc,IAAI,KAAK,cAC/B,CAAC,EAAE,oBAAoB;CACtC;CAEA,iCAAqD;EAEnD,OADgB,KAAK,cAAc,IAAI,KAAK,cAC/B,CAAC,EAAE;CAClB;CAEA,eAAuB;EACrB,MAAM,UAAU,KAAK,cAAc,IAAI,KAAK,cAAc;EAC1D,QACG,SAAS,OAAO,UAAU,MAC1B,SAAS,iBAAiB,UAAU,MAOpC,SAAS,YAAY,UAAU;CAEpC;;;;CAKA,YAAY,SAA+B;EAIzC,MAAM,cAAc,KAAK;EACzB,IAAI,eAAe,MACjB,OAAO,CAAC;EAEV,IAAI,WAAW,QAAQ,YAAY,IACjC,OAAO,CAAC,GAAG,WAAW;EAExB,OAAO,YAAY,QAAQ,SAAS,KAAK,YAAY,OAAO;CAC9D;;;;CAKA,qBAA+C;EAC7C,MAAM,+BAAe,IAAI,IAAyB;EAElD,KAAK,MAAM,QAAQ,KAAK,aAAa;GACnC,IAAI,KAAK,WAAW,QAAQ,KAAK,YAAY,IAAI;GAEjD,MAAM,QAAQ,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;GACjD,MAAM,KAAK,IAAI;GACf,aAAa,IAAI,KAAK,SAAS,KAAK;EACtC;EAEA,OAAO;CACT;;;;CAKA,oBAA8B;EAC5B,MAAM,2BAAW,IAAI,IAAY;EACjC,KAAK,MAAM,QAAQ,KAAK,aACtB,IAAI,KAAK,WAAW,QAAQ,KAAK,YAAY,IAC3C,SAAS,IAAI,KAAK,OAAO;EAG7B,OAAO,MAAM,KAAK,QAAQ;CAC5B;;;;;CAMA,yBAA8C;EAC5C,MAAM,sCAAsB,IAAI,IAAoB;EAEpD,KAAK,MAAM,QAAQ,KAAK,aACtB,IACE,KAAK,WAAW,QAChB,KAAK,YAAY,MACjB,OAAO,SAAS,KAAK,KAAK,GAE1B,oBAAoB,IAAI,KAAK,OAAO,KAAK,OAAO;EAIpD,OAAO;CACT;CAIA,gBAAgB,EACd,cACA,gBACA,gBAKgE;EAChE,MAAM,kBAAkB,cAAc;EACtC,MAAM,kBACJ,mBAAmB,QAAQ,gBAAgB,SAAS;EACtD,MAAM,gBAAgB,+BAA+B;GACnD,aAAa,KAAK;GAClB,eAAe,cAAc;EAC/B,CAAC;EACD,MAAM,wBAAwB,IAAI,IAAI,KAAK,yBAAyB,CAAC,CAAC;EACtE,IACE,KAAK,gBAAgB,YAAY,SAChC,cAAc,iBAAiB,UAAU,KAAK,GAE/C,sBAAsB,IAAA,UAAsB;EAE9C,MAAM,iCACJ,sBAAsB,OAAO,IAAI,wBAAwB,KAAA;EAE3D,IAAI,iBAAiB;GACnB,MAAM,cAAc,sBAAsB,eAAe;GACzD,MAAM,aAAa,IAAI,IAAI,gBAAgB,KAAK,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;GACxE,MAAM,aAAa,cAAc;GAIjC,MAAM,kCAAkB,IAAI,IAAY;GACxC,MAAM,WAAW,CAAC,GAAG,WAAW;GAChC,MAAM,aAAwB,IAAI,IAChC,YAAY,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAC7C;GAEA,IAAI,cAAc,WAAW,SAAS;SAC/B,MAAM,QAAQ,YACjB,IAAI,UAAU,MAAM;KAClB,SAAS,KAAK,IAAI;KAClB,WAAW,IAAI,KAAK,MAAM,IAAI;KAC9B,gBAAgB,IAAI,KAAK,IAAI;IAC/B;;GAIJ,MAAM,OAAO,IAAIC,SAAiC;IAChD,OAAO;IACP,SAAS;IACT,OAAO;IACP,aAAa,KAAK;IAClB,eAAe,cAAc;IAC7B,iBAAiB;IACjB,UAAU,KAAK;IACf,iBAAiB;IAIjB,SAAS,KAAK,gBAAgB,cAAc,UAAU,KAAA;IACtD,kBAAkB,cAAc;IAChC,iBAAiB,KAAK;IACtB,cAAc,cAAc;IAC5B,cAAc,KAAK;IACnB,gBAAgB,KAAK;IACrB,yBAAyB,KAAK;IAC9B,sBAAsB,KAAK;IAC3B,0BAA0B,KAAK;IAC/B,0BAA0B,KAAK,4BAC7B,cAAc,OAChB;IACA,4BAA4B,KAAK;IACjC,eAAe,KAAK;IACpB,iBAAiB,gBAAgB,OAAO,IAAI,kBAAkB,KAAA;IAC9D,uBAAuB;IACvB,kBAAkB,cAAc;IAChC,oBAAoB,cAAc;IAClC,oBAAoB,KAAK,8BAA8B;IACvD,kBAAkB,KAAK,4BAA4B;IACnD,wBAAqC,KAAK,aAAa;IACvD,mBAAoC,KAAK;IACzC,eAAe,MAAM,aACnB,cAAc,0BAA0B,MAAM,MAAM,QAAQ;GAChE,CAAC;GACD,KAAK,yBAAyB,IAAI;GAClC,OAAO;EACT;EAEA,MAAM,aAAa,cAAc;EACjC,MAAM,YAAa,gBAAgD,CAAC;EA8BpE,MAAM,OAAO,IAAIA,SAAiC;GAChD,OA7BA,cAAc,WAAW,SAAS,IAC9B,CAAC,GAAG,WAAW,GAAG,UAAU,IAC5B;GA4BJ,SAlBA,cAAc,WAAW,SAAS,IAC9B,IAAI,IAAI,CACR,GAAI,kBACA,IAAI,IACF,UACG,QACE,MAA6C,UAAU,CAC1D,CAAC,CACA,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAA4B,CACtD,GACJ,GAAG,WACA,QAAQ,MAA6C,UAAU,CAAC,CAAC,CACjE,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAA4B,CACtD,CAAC,IACC;GAKJ,OAAO;GACP,aAAa,KAAK;GAClB,eAAe,cAAc;GAI7B,SAAS,KAAK,gBAAgB,cAAc,UAAU,KAAA;GACtD,kBAAkB,cAAc;GAChC,iBAAiB,KAAK;GACtB,eAAe,MAAM,aACnB,cAAc,0BAA0B,MAAM,MAAM,QAAQ;GAC9D,cAAc,cAAc;GAC5B,UAAU,KAAK;GACf,eAAe,KAAK;GACpB,sBAAsB,KAAK;GAC3B,uBAAuB;GACvB,cAAc,KAAK;GACnB,gBAAgB,KAAK;GACrB,kBAAkB,cAAc;GAChC,oBAAoB,cAAc;GAClC,oBAAoB,KAAK,8BAA8B;GACvD,kBAAkB,KAAK,4BAA4B;GACnD,wBAAqC,KAAK,aAAa;GACvD,mBAAoC,KAAK;EAC3C,CAAC;EACD,KAAK,yBAAyB,IAAI;EAClC,OAAO;CACT;CAEA,kBACE,WACA,OACA,WACM;EACN,KAAK,gBAAgB,uBAAuB;GAC1C;GACA;GACA;EACF,CAAC;CACH;;CAGA,yBAAyB,OAA0B;EACjD,KAAK,wBAAwB;CAC/B;CAEA,iBACE,cACoC;EACpC,IACE,gBACA,oBAAoB,gBACpB,aAAa,kBAAkB,MAE/B,OAAO,aAAa;CAExB;CAEA,sBAAsB,cAAkC;EACtD,IAAI,CAAC,KAAK,QACR;EAEF,MAAM,QAAQ,KAAK,iBAAiB;EACpC,IAAI,CAAC,OACH;EAEF,MAAM,SAAU,OAAkC;EAClD,IAAI,CAAC,QAAQ,cACX;EAEF,KAAK,OAAO,oBAAoB,SAAS,OAAO,YAAY;EAC5D,OAAO,eAAe,KAAA;CACxB;;;;;;;;;CAUA,sBAA8B,EAC5B,UACA,cACA,SACA,QACA,qBACA,yBAUgC;EAChC,MAAM,iBAAiB,aAAa;;;;;;;;EAQpC,MAAM,qBAAqB,aAAa,wBAAwB;EAEhE,aAAa,4BAA4B,mBAAmB;EAC5D,aAAa,6BACX,SAAS,cACT,qBACF;EACA,aAAa,iCACX,SAAS,KAAK,UACd,SAAS,wBACX;EAEA,aACE,QACA,QACA,SACA,uEACA;GACE,MAAM,SAAS,KAAK;GACpB;GACA,iBAAiB,SAAS;GAC1B,uBAAuB,SAAS,KAAK;GACrC,wBAAwB,SAAS,KAAK;GACtC,8BAA8B,SAAS,KAAK;GAC5C,0BAA0B,SAAS;GACnC,YAAY,SAAS,KAAK;GAC1B,SAAS,aAAa;GACtB,YAAY,qBAAqB,cAAc;EACjD,GACA;GAAE,OAAO,KAAK;GAAO;EAAQ,GAC7B,EAAE,OAAO,KAAK,CAChB;EAEA,OAAO,EACL,sBAAsB;GACpB,wBAAwB;GACxB,SAAS,WAAW,aAAa;GACjC,QAAQ;GACR;EACF,EACF;CACF;CAEA,gBAAgB,UAAU,WAAW;EACnC,OAAO,OACL,OACA,WAC2C;;;;;;;GAO3C,MAAM,iBAAiB,KAAK;GAC5B,MAAM,sBAAsB,KAAK;;;;;;GAMjC,MAAM,kBAAkB,KAAK,4BAC3B,eAAe,MACjB;GACA,IAAI,mBAAmB,MACrB,MAAM;GAER,MAAM,eAAe,KAAK,cAAc,IAAI,OAAO;GACnD,IAAI,CAAC,cACH,MAAM,IAAI,MAAM,wCAAwC,SAAS;GAGnE,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,oBAAoB;;;;;;;;;;;;;;GAgBtC,IAAI,KAAK,qBAAqB,MAC5B,OAAO,EAAE,UAAU,CAAC,EAAE;GAGxB,MAAM,EAAE,aAAa;GAErB,MAAM,kBAAkB,uBAAuB,QAAQ;GACvD,IAAI,gBAAgB,SAAS,GAC3B,aAAa,sBAAsB,eAAe;GAGpD,MAAM,qBAAqB,4BAA4B;IACrD,OAAO,aAAa,mBAAmB;IACvC,eAAe,KAAK;GACtB,CAAC;;;;;;;;;;;;;;GAeD,IAAI,kBAAkB;GACtB,IACE,aAAa,aAAA,eACZ,aAAa,eACV,gBAAgB,MAEpB,kBACE,mCACE,oBACA,eAAe,aAAa,eAAe,GAC3C,sBAEI,aAAa,eAGZ,cACL,CACF,KAAK;QACF,IACL,aAAa,aAAA,gBAEX,aAAa,eAGZ,gBAAgB,MAEnB,kBACE,oCACE,oBACA,eAAe,aAAa,eAAe,GAC3C,sBAEI,aAAa,eAGZ,cACL,CACF,KAAK;QACF,IACL,aAAa,aAAA,aAEX,aAAa,eAGZ,gBAAgB,MACnB;IACA,MAAM,eACJ,aAAa,eACZ;IAIH,IAAI,gBAAgB,QAAQ,yBAAyB,YAAY,GAC/D,kBACE,iCACE,oBACA,eAAe,aAAa,eAAe,CAC7C,KAAK;GAEX;GAEA,IAAI,QACF,KAAK,iBACL,gBAAgB;IACd,OAAO;IACP,UAAU,aAAa;IACvB,eAAe,aAAa;GAC9B,CAAC;GAEH,IAAI,aAAa,gBACf,QAAQ,aAAa,eAAe,KAAK,KAAiB;GAG5D,IAAI,aAAa,yBACf,MAAM,aAAa;GAErB,IAAI,CAAC,OAAO,QACV,OAAO,SAAS,KAAK;GAEvB,KAAK,SAAS;GAEd,IAAI,gBAAgB;GACpB,IAAI,eAA2C;;;;;;GAM/C,IAAI;GACJ,IACE,CAAC,aAAa,iBACd,aAAa,gBACb,aAAa,oBAAoB,MAEjC,aAAa,gBAAgB,oBAAoB;IAC/C,YACE,aAAa,mBAAmB,MAAM,OAAO,KAAK,aAAa;IACjE,UAAU,aAAa;IACvB,cAAc,aAAa;IAC3B,WAAW,aAAa;IACxB,oBAAoB,aAAa;IACjC,iBAAiB,kBACf,aAAa,UACb,aAAa,aACf;IACA,oBAAoB,aAAa;IACjC,sBAAsB,aAAa;IACnC,sBAAsB,aAAa;IACnC,cAAc,aAAa,qBAAqB;IAChD,kBAAkB,aAAa;IAC/B,4BAA4B,aAAa;IACzC,MAAM,OAAO,SAAS,SAAS;KAC7B,aAAa,QAAQ,OAAO,SAAS,SAAS,MAAM;MAClD,OAAO,KAAK;MACZ;KACF,CAAC;IACH;GACF,CAAC;GAEH,IAAI,aAAa,eAAe;IAC9B,MAAM,EACJ,SACA,oBACA,kBACA,uBACA,wBACA,wBACA,kBACA,6BACA,eACA,+BACE,aAAa,cAAc;KAC7B;KACA,eAAe,aAAa;KAC5B,eAAe,aAAa;KAC5B,kBAAkB,aAAa;IACjC,CAAC;IACD,4BAA4B;;;;;;;;;IAS5B,aAAa,4BAA4B,sBAAsB;IAC/D,aAAa,qBAAqB;IAClC,IAAI,oBAAoB,QAAQ,mBAAmB,GACjD,aAAa,mBAAmB;IAElC,IAAI,+BAA+B,MAAM;KACvC,aAAa,8BACX;KACF,MAAM,kBACJ,aAAa,oBAAoB,aAAa;KAChD,MAAM,uBAAuB,KAAK,IAChC,GACA,8BAA8B,eAChC;KACA,MAAM,oBAAoB,aAAa;KAMvC,KAJE,oBAAoB,IAChB,KAAK,IAAI,uBAAuB,iBAAiB,IACjD,oBACA,KACS,gCAAgC;MAC7C,aAAa,mBAAmB;;;MAGhC,IAAI,aAAa,mBAAmB,QAAQ,oBAAoB,GAC9D,aAAa,kBAAkB,qBAC7B,aAAa,iBACb,uBAAuB,mBACvB,oBACF;KAEJ;IACF;IACA,gBAAgB;;;;;;;;;;IAWhB,MAAM,iBAAiB,aAAa,wBAAwB,QAAQ;IACpE,eAAe,eAAe,QAAQ;IACtC,eAAe;KACb,OAAO,KAAK;KACZ;KACA,WAAW;KACX;KACA;KACA;KACA;KACA,kBAAkB,aAAa;IACjC;IACA,wBAAwB,YAAY;IAOpC,IAJE,aAAa,yBAAyB,QACtC,MAAM,QAAQ,gBAAgB,KAC9B,iBAAiB,SAAS,GAEL;KACrB,MAAM,aAAa,aAAa,wBAC9B,SAAS,MACX;KAcA,IAZE,CAAC,cACD,2BAA2B;MACzB,SAAS,aAAa,qBAAqB;MAC3C,kBAAkB,aAAa;MAC/B,uBACE,yBAAyB,OACrB,wBAAwB,aAAa,oBACrC,KAAA;MACN;MACA,uBAAuB,iBAAiB;KAC1C,CAAC,GAEgB;MACjB,aACE,QACA,QACA,SACA,2BACA,KAAA,GACA;OAAE,OAAO,KAAK;OAAO;MAAQ,CAC/B;MACA,aACE,QACA,SACA,SACA,iCACA;OACE,eAAe,SAAS;OACxB,wBAAwB,0BAA0B;OAClD,gBAAgB,aAAa,iBAAiB;OAC9C,kBAAkB,aAAa;OAC/B,mBAAmB,aAAa;OAChC,qBAAqB,aAAa;MACpC,GACA;OAAE,OAAO,KAAK;OAAO;MAAQ,CAC/B;MACA,aAAa,2BAA2B,SAAS,MAAM;MACvD,OAAO,EACL,sBAAsB;OACpB,wBAAwB,0BAA0B;OAClD,SAAS,WAAW,aAAa;MACnC,EACF;KACF;KAEA,IAAI,YACF,aACE,QACA,SACA,SACA,kEACA;MACE,cAAc,SAAS;MACvB,uBAAuB,iBAAiB;MACxC,eAAe,QAAQ;KACzB,GACA;MAAE,OAAO,KAAK;MAAO;KAAQ,CAC/B;IAEJ;GACF;GAEA,IAAI,gBAAgB;;;;;;;;GAQpB,IAAI;GAGJ,MAAM,yCAAyB,IAAI,QAA6B;GAChE,IAAI,gBAAgB,QAAQ,aAAa,gBAAgB,MAAM;IAC7D,MAAM,gCAAgB,IAAI,QAA6B;IACvD,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KACnC,cAAc,IAAI,SAAS,IAAI,CAAC;IAElC,0BAA0B,cAAc,KAAK,SAAS,UAAU;KAC9D,MAAM,YAAY,aAAa,aAAc,OAAO;KACpD,MAAM,cAAc,cAAc,IAAI,OAAO;KAC7C,MAAM,gBACJ,eAAe,OACX,aAAa,mBAAmB,eAChC,KAAA;KACN,MAAM,mBACJ,iBAAiB,QACjB,OAAO,SAAS,aAAa,KAC7B,iBAAiB,IACb,gBACA;KACN,IAAI,CAAC,uBAAuB,IAAI,OAAO,GACrC,uBAAuB,IAAI,SAAS,KAAK;KAE3C,OAAO;MAAE;MAAW;KAAiB;IACvC,CAAC;GACH;GAEA,MAAM,+BACJ,YACuB;IACvB,MAAM,OAAO,QAAQ,QAAQ;IAC7B,IACE,mBAAmB,eACnB,OAAO,QAAQ,iBAAiB,YAChC,QAAQ,aAAa,SAAS,GAE9B,OAAO,aAAa,QAAQ;IAE9B,IAAI,OAAO,QAAQ,OAAO,YAAY,QAAQ,GAAG,SAAS,GACxD,OAAO,GAAG,KAAK,MAAM,QAAQ;GAGjC;;;;;;GAOA,MAAM,+BACJ,QACA,UACkB;IAClB,IAAI,2BAA2B,QAAQ,WAAW,OAChD,OAAO;IAET,IAAI,OAAO,WAAW,MAAM,QAAQ;KAClC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;MACrC,MAAM,SAAS,uBAAuB,IAAI,OAAO,EAAE;MACnD,IACE,UAAU,QACV,CAAC,uBAAuB,IAAI,MAAM,EAAE,KACpC,OAAO,EAAE,CAAC,QAAQ,MAAM,MAAM,EAAE,CAAC,QAAQ,KACzC,CAAC,kCAAkC,MAAM,EAAE,GAE3C,uBAAuB,IAAI,MAAM,IAAI,MAAM;KAE/C;KACA,OAAO;IACT;IAEA,MAAM,+BAAe,IAAI,IAA2B;IACpD,KAAK,MAAM,WAAW,QAAQ;KAC5B,MAAM,SAAS,uBAAuB,IAAI,OAAO;KACjD,MAAM,MAAM,4BAA4B,OAAO;KAC/C,IAAI,UAAU,QAAQ,OAAO,MAC3B;KAEF,aAAa,IAAI,KAAK,aAAa,IAAI,GAAG,IAAI,OAAO,MAAM;IAC7D;IACA,KAAK,MAAM,WAAW,OAAO;KAC3B,IACE,uBAAuB,IAAI,OAAO,KAClC,kCAAkC,OAAO,GAEzC;KAEF,MAAM,MAAM,4BAA4B,OAAO;KAC/C,MAAM,SAAS,OAAO,OAAO,aAAa,IAAI,GAAG,IAAI,KAAA;KACrD,IAAI,UAAU,MACZ,uBAAuB,IAAI,SAAS,MAAM;IAE9C;IACA,OAAO;GACT;GAEA,IAAI,aAAa,kBAAkB;IACjC,MAAM,SAAS;IACf,gBAAgB,4BACd,QACA,qBAAqB,MAAM,CAC7B;GACF;GAEA,MAAM,6BACJ,aAAa,sBACb,4BAA4B,aAAa,gBAAgB;GAC3D,MAAM,6BAA6B;GACnC,gBAAgB,4BACd,4BACA,oCAAoC,0BAA0B,CAChE;GACA,MAAM,4BAA4B;GAClC,gBAAgB,4BACd,2BACA,sBACE,2BACA,+BAA+B,aAAa,gBAAgB,CAC9D,CACF;GAEA,MAAM,eACJ,cAAc,UAAU,IACpB,cAAc,cAAc,SAAS,KACrC;GACN,MAAM,eACJ,cAAc,UAAU,IACpB,cAAc,cAAc,SAAS,KACrC;GAEN,MAAM,gBAAgB,gBACpB,aAAa,UACb,aAAa,aACf;GAEA,IACE,aAAa,aAAA,aACb,wBAAwB,kBACxB,wBAAwB,eACxB,OAAO,aAAa,YAAY,UAChC;IACA,MAAM,UAAU,aAAa,QAAQ,KAAK;IAC1C,cAAc,cAAc,SAAS,EAAE,CAAC,UACtC,QAAQ,SAAS,IAAI,CAAC;KAAE,MAAM;KAAiB,MAAM;IAAQ,CAAC,IAAI;GACtE;GAEA,MAAM,oDAAoC,IAAI,QAM5C;GACF,MAAM,0BACJ,WACA,uBACA,kBAAkB,UAOf;IACH,MAAM,gBACJ,yBAAyB,cAAc;IACzC,MAAM,6BACJ,cAAc,+BACb,kBAAkB,aAAa,oBAAoB,KAAA;IACtD,IACE,aAAa,gBAAgB,QAC7B,iBAAiB,QACjB,8BAA8B,MAE9B,OAAO,EAAE,MAAM,KAAK;IAEtB,MAAM,yBAAyB,KAAK,IAClC,GACA,gBAAgB,0BAClB;IACA,IAAI,aACF,aAAa,mBAAmB,IAAI,aAAa,mBAAmB;IACtE,IACE,cAAc,oBAAoB,QAClC,aAAa,mBAAmB,GAEhC,aAAa,aAAa;IAE5B,IAAI,iBACF,aAAa,KAAK,IAAI,GAAG,UAAU;IAErC,MAAM,oBAAoB,cAAc;IACxC,MAAM,yBACJ,CAAC,mBACD,2BAA2B,QAC3B,qBAAqB,QACrB,OAAO,SAAS,iBAAiB,IAC7B,yBACA,KAAK,IAAI,wBAAwB,KAAK,IAAI,GAAG,iBAAiB,CAAC,IAC/D,KAAA;IAEN,IAAI;IACJ,IAAI,0BAA0B,QAAQ,2BAA2B,MAAM;KACrE,MAAM,oBAAoB,KAAK,MAAA,IACP,UACxB;KACA,MAAM,aAAqC,CAAC;KAC5C,IAAI,cAAc;KAClB,KAAK,IAAI,IAAI,GAAG,IAAI,wBAAwB,QAAQ,KAAK;MACvD,MAAM,SAAS,wBAAwB,EAAE,CAAC;MAC1C,WAAW,KAAK;MAChB,eAAe;KACjB;KACA,MAAM,qBACJ,cAAc,IACV,KAAK,IACL,KAAK,IAAI,GAAG,yBAAyB,iBAAiB,GACtD,KAAK,MAAM,cAAc,UAAU,CACrC,IACE;KACN,MAAM,oBACJ,cAAc,IACV,qBACA,YACA,qBAAqB,aACrB,kBACF,IACE,CAAC;KACP,MAAM,qBAAqB,wBAAwB,KAChD,GAAG,WAAW,kBAAkB,WAAW,CAC9C;KACA,yBAAyB,KAAK,IAC5B,mBACA,yBAAyB,kBAC3B;KACA,IAAI,eAAe;KACnB,MAAM,8BAAc,IAAI,IAAY;KACpC,KAAK,MAAM,WAAW,WAAW;MAC/B,MAAM,YAAY,aAAa,aAAa,OAAO;MACnD,MAAM,SAAS,uBAAuB,IAAI,OAAO;MACjD,IAAI,UAAU,QAAQ,YAAY,IAAI,MAAM,GAAG;OAC7C,gBAAgB;OAChB;MACF;MACA,YAAY,IAAI,MAAM;MACtB,0BAA0B,KAAK,IAC7B,GACA,mBAAmB,UACjB,KAAK,OACF,YAAY,wBAAwB,OAAO,CAAC,aAC3C,UACJ,CACJ;KACF;KACA,0BAA0B,KAAK,MAAM,eAAe,UAAU;IAChE,OAAO;KACL,IAAI,YAAA;KACJ,KAAK,MAAM,WAAW,WACpB,aAAa,aAAa,aAAa,OAAO;KAEhD,yBAAyB,KAAK,MAAM,YAAY,UAAU;IAC5D;IACA,OAAO;KACL,MAAM,0BAA0B;KAChC;KACA;KACA;KACA;IACF;GACF;GAEA,MAAM,sCAAsC,EAC1C,YACA,UACA,WAK0B;IAC1B,MAAM,QAAQ,IAAI,qBAChB,KAAK,UAAU;KACb,MAAM;KACN;KACA;KACA,wBAAwB,WAAW;KACnC,wBAAwB,WAAW;IACrC,CAAC,CACH;IACA,IACE,WAAW,0BAA0B,QACrC,WAAW,iBAAiB,QAC5B,WAAW,8BAA8B,MAEzC,kCAAkC,IAAI,OAAO;KAC3C,eAAe,WAAW;KAC1B,uBACE,WAAW,yBACX,WAAW;IACf,CAAC;IAEH,OAAO;GACT;GAEA,MAAM,kCACJ,cACkB;IAClB,IAAI,cAAc;IAClB,IACE,kBAAkB,aAAa,UAAU,aAAa,aAAa,GACnE;;;;;KAKA,MAAM,SAAS;KACf,cAAc,4BACZ,QACA,8BACE,QACA,aAAa,UACb,QACA,KAAK,UACP,CACF;IACF;;;;;IAMA,IAAI,mBAAmB,QAAQ,gBAAgB,WAAW,GAAG;KAC3D,MAAM,SAAS;KACf,cAAc,4BACZ,QACA,+BAA+B,QAAQ,MAAM,CAC/C;KACA,IAAI,aAAa,kBAAkB;MACjC,MAAM,qBAAqB;MAC3B,cAAc,4BACZ,oBACA,qBAAqB,kBAAkB,CACzC;KACF;IACF;;;;;;;;;;IAUA,IACE,gBACE,aAAa,UACb,aAAa,aACf,GACA;KACA,MAAM,SAAS;KACf,cAAc,4BACZ,QACA,4BAA4B,SAAS,YACnC,KAAK,qBAAqB,OAAO,CACnC,CACF;IACF;IACA,OAAO;GACT;GAEA,MAAM,qBAAqB,KAAK,8BAA8B;GAC9D,MAAM,gBAAgB,OAAO,cAAc;GAC3C,MAAM,6BACJ,cAEA,4BACE,WACA,uBAAuB,WAAW,oBAAoB,aAAa,CACrE;GAEF,MAAM,mCACJ,cACkB;IAClB,MAAM,YAID,CAAC;IACN,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,MAAM,UAAU,UAAU;KAC1B,IACE,EAAE,mBAAmB,iBACrB,CAAC,kCAAkC,OAAO,GAE1C;KAEF,MAAM,UAAU,QAAQ;KACxB,UAAU,KAAK;MACb,OAAO;MACP;MACA,OAAO,yBAAyB,OAAO;KACzC,CAAC;IACH;IACA,IAAI,UAAU,WAAW,GACvB,OAAO;IAGT,MAAM,kBAAkB,UAAiC;KACvD,MAAM,YAAY,CAAC,GAAG,SAAS;KAC/B,KAAK,MAAM,EAAE,OAAO,SAAS,WAAW,WAAW;MACjD,MAAM,UAAU,mBACd,QAAQ,SACR,KAAK,MAAM,QAAQ,KAAK,CAC1B,CAAC,CAAC;MACF,UAAU,SAAS,IAAI,aAAa;OAClC;OACA,IAAI,QAAQ;OACZ,MAAM,QAAQ;OACd,mBAAmB,QAAQ;OAC3B,mBAAmB,QAAQ;MAC7B,CAAC;KACH;KACA,OAAO;IACT;IAEA,IAAI,OAAO,eAAe,CAAC;IAC3B,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC,MAChC,OAAO;IAET,IAAI,MAAM;IACV,IAAI,OAAO;IACX,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;KAC3B,MAAM,SAAS,MAAM,QAAQ;KAC7B,MAAM,UAAU,eAAe,KAAK;KACpC,IAAI,uBAAuB,OAAO,CAAC,CAAC,MAAM;MACxC,OAAO;MACP,MAAM;KACR,OACE,OAAO;IAEX;IACA,OAAO;GACT;GAEA,IAAI;GACJ,IAAI,wBAAwB,aAAa;IACvC,IAAI,oBAAoB;IACxB,IAAI,eACF,oBAAoB,4BAClB,eACA,gCACE,eACA,0BACF,CACF;SACK,IACJ,aAAa,aAAa,QAAQ,KACjC,aAAa,aAAA,cACf,aAAa,aAAa,QAAQ,GAElC,oBAAoB,4BAClB,eACA,uBAAuB,eAAe,0BAA0B,CAClE;IAGF,IAAI,sBAAsB,eAAe;KACvC,MAAM,aAAa,uBAAuB,iBAAiB;KAC3D,IAAI,WAAW,MAAM;MACnB,uBAAuB;MACvB,gBAAgB;KAClB,OACE,aACE,QACA,QACA,SACA,4EACA;MACE,wBAAwB,WAAW;MACnC,wBAAwB,WAAW;KACrC,GACA;MAAE,OAAO,KAAK;MAAO;KAAQ,CAC/B;IAEJ;GACF;GAEA,gBAAgB,0BACd,+BAA+B,aAAa,CAC9C;GACA,IAAI,kBAAkB,uBAAuB,aAAa;GAC1D,IAAI,wBAAwB;QACtB,CAAC,gBAAgB,MAAM;KACzB,gBAAgB,0BACd,+BAA+B,oBAAoB,CACrD;KACA,kBAAkB,uBAAuB,aAAa;KACtD,aACE,QACA,QACA,SACA,kGACA;MACE,wBAAwB,gBAAgB;MACxC,wBAAwB,gBAAgB;KAC1C,GACA;MAAE,OAAO,KAAK;MAAO;KAAQ,CAC/B;IACF;;GAEF,IAAI,CAAC,gBAAgB,MAAM;IACzB,MAAM,YAAY,gCAAgC,aAAa;IAC/D,IAAI,cAAc,eAAe;KAC/B,gBAAgB;KAChB,kBAAkB,uBAAuB,aAAa;KACtD,aACE,QACA,gBAAgB,OAAO,SAAS,SAChC,SACA,gBAAgB,OACZ,yEACA,kFACJ;MACE,wBAAwB,gBAAgB;MACxC,wBAAwB,gBAAgB;KAC1C,GACA;MAAE,OAAO,KAAK;MAAO;KAAQ,CAC/B;IACF;GACF;;;;;;;;;;;;;;;;;;;;;;;;GAyBA,IAAI,2BAA2B,IAAI,aAAa,QAAQ,GAAG;;;;;;;;;;;;;IAazD,MAAM,iBAAiB;IACvB,gBAAgB,4BACd,gBACA,0BAA0B,cAAc,CAC1C;GACF;GAYA,MAAM,8BACJ,aAAa,aAAA,eACZ,aAAa,eACV,gBAAgB;GACtB,MAAM,+BACJ,aAAa,aAAA,gBAEX,aAAa,eAGZ,gBAAgB;GAIrB,MAAM,4BACJ,aAAa,aAAA,aAEX,aAAa,eAGZ,gBAAgB;GACrB,MAAM,6BACJ,+BACA,gCACA;GAgBF,IAJE,kBACC,CAAC,aAAa,iBACb,kBAAkB,iBAClB,6BACqB;IACvB,MAAM,iBAAiB,cAAc;IACrC,MAAM,yBAAyB;IAC/B,gBAAgB,4BACd,wBACA,yBAAyB,yBAAyB,QAAQ,UAAU;KAClE,MAAM,SAAS,uBAAuB,IAAI,MAAM;KAChD,IAAI,UAAU,MACZ,uBAAuB,IAAI,OAAO,MAAM;IAE5C,CAAC,CACH;IACA,IAAI,cAAc,WAAW,gBAC3B,aACE,QACA,QACA,YACA,8BACA;KACE,QAAQ;KACR,OAAO,cAAc;KACrB,SAAS,iBAAiB,cAAc;IAC1C,GACA;KAAE,OAAO,KAAK;KAAO;IAAQ,CAC/B;GAEJ;GAWA,KACG,+BAA+B,iCAChC,CAAC,aAAa,gBACd;IACA,MAAM,qBAAqB;IAC3B,gBAAgB,4BACd,oBACA,oBACE,oBACA,sBACE,8BAEM,aAAa,eAGd,iBAEC,aAAa,eAGd,cACP,CACF,CACF;GACF,OAAO,IAAI,2BAA2B;IACpC,MAAM,iBAAiB,aAAa;IAKpC,MAAM,qBAAqB;IAC3B,gBAAgB,4BACd,oBACA,2BACE,oBACA,6BACE,gBAAgB,gBACf,gBAAmD,KACtD,CACF,CACF;GACF;GAEA,MAAM,uBAAuB;GAC7B,MAAM,gCAAgC;GACtC,gBAAgB,4BACd,+BACA,2BAA2B;IACzB,OAAQ,KAAK,iBAAiB;IAC9B,UAAU;IACV,UAAU,aAAa;IACvB,oBAAoB;IACpB,aAAa;GACf,CAAC,CACH;;;;;;GAOA,kBAAkB,uBAAuB,aAAa;GACtD,MAAM,gCAAgC,CAAC,gBAAgB,OACnD,mCAAmC;IACnC,YAAY;IACZ,UAAU,aAAa;IACvB,MAAM;GACR,CAAC,IACC,KAAA;GAEJ,IACE,aAAa,kBAAkB,QAC/B,aAAa,gBAAgB,MAC7B;IACA,MAAM,oBAAoB,KAAK,IAAI,IAAI,aAAa;IACpD,IAAI,oBAAoB,aAAa,cAInC,MAAM,MAFJ,KAAK,MAAM,aAAa,eAAe,qBAAqB,GAAI,IAChE,GACoB;GAE1B;GAEA,aAAa,iBAAiB,KAAK,IAAI;GACvC,aAAa,gBAAgB;GAE7B,IAAI;GACJ,MAAM,YACH,aAAa,eAA2C,aACzD,CAAC;GAEH,IACE,cAAc,WAAW,KACzB,CAAC,aAAa,4BAA4B,GAC1C;IACA,MAAM,kBAAkB,aAAa,wBAAwB,QAAQ;IACrE,MAAM,YAAY,aAAa,2BAA2B,QAAQ;IAClE,MAAM,2BACJ,gBAAgB,oBAAoB,gBAAgB;IAEtD,IAAI;IACJ,IAAI,0BAA0B;KAC5B,MAAM,UACJ,gBAAgB,mBAAmB,IAC/B,KAAK,MACJ,gBAAgB,mBACb,gBAAgB,oBAChB,GACN,IACE;KACN,WACE,UAAU,KACN,4BAA4B,gBAAgB,iBAAiB,WAAW,QAAQ,4BAA4B,gBAAgB,UAAU,sCAAsC,gBAAgB,iBAAiB,+DAC7M,iBAAiB,gBAAgB,kBAAkB,oCAAoC,gBAAgB,iBAAiB;KAC9H,IAAI,aAAa,yBAAyB,MACxC,YACE;IAEN,OACE,WACE;IAGJ,aACE,QACA,SACA,SACA,gCACA;KACE,cAAc,SAAS;KACvB;KACA;IACF,GACA;KAAE,OAAO,KAAK;KAAO;IAAQ,CAC/B;IACA,MAAM,IAAI,MACR,KAAK,UAAU;KACb,MAAM;KACN,MAAM,2EAA2E,SAAS,IAAI;IAChG,CAAC,CACH;GACF;;GAGA,IAAI,gBAAgB,MAAM;IACxB,IACE,gBAAgB,0BAA0B,QAC1C,gBAAgB,0BAA0B,MAC1C;KACA,aAAa,UAAU,eAAe,cAAc;KACpD,aAAa,yBAAyB,KAAK,IACzC,GACA,gBAAgB,yBACd,gBAAgB,sBACpB;IACF;IACA,wBAAwB,YAAY;;;IAGpC,MAAM,wBAAA,oBAEJ,cACA,MACF;GACF;GAEA,MAAM,cAAc,KAAK,IAAI;GAC7B,MAAM,aAAa;IAAE,OAAO,KAAK;IAAO;GAAQ;GAChD,aACE,QACA,SACA,SACA,gBACA;IACE,cAAc,cAAc;IAC5B,UAAU,aAAa;GACzB,GACA,YACA,EAAE,OAAO,KAAK,CAChB;GAEA,MAAM,WAAW,sBACf,KAAK,UACL,aAAa,QACf;GACA,MAAM,gBAAgB,4BAA4B;IAChD,WAAW,KAAK;IAChB,iBAAiB,OAAO,cAAc,aAAa;IACnD;IACA,WAAW,aAAa;GAC1B,CAAC;GACD,IAAI;GACJ,IAAI,eAAe;IACjB,GAAG;;;;IAIH,QAAQ,oBAAoB,OAAO,QAAQ,eAAe,MAAM;IAChE,UAAU;KACR,GAAI,OAAO,YAAY,CAAC;KACxB,GAAG;;;;;KAKH;MACC,yBAAyB;IAC5B;GACF;GACA,0BAA0B,QAAQ;GAClC,IAAI,aAAa,OAAO,WAAW,yBAAyB,KAAK,MAAM;IACrE,kBAAkB,sBAAsB;KACtC;KACA,QAAQ,OAAO,cAAc;KAC7B,WAAW,OAAO,cAAc;KAChC;KACA,MAAM,CAAC,aAAa,OAAO;KAC3B,aACE,UAAU,yBAAyB,OAAO,KAAK,QAAQ,KAAA;KACzD,OAAO,KAAK;KACZ,mBAAmB,2BACjB,KAAK,UACL,aAAa,QACf,IACI,+BACA,KAAK,UACL,aAAa,QACf,IACE,KAAA;IACN,CAAC;IACD,IAAI,mBAAmB,MACrB,eAAe;KACb,GAAG;KACH,WAAW,gBAAgB,aAAa,WAAW,CACjD,eACF,CAAC;IACH;GAEJ;GACA,MAAM,WAAW,OAAO;GAExB,IAAI;IACF,IAAI,iCAAiC,MACnC,MAAM;;;;;IAMR;KACE,MAAM,gBAAgB,KAAK,4BACzB,eAAe,MACjB;KACA,IAAI,iBAAiB,MACnB,MAAM;IAEV;IACA,SAAS,MAAM,yBACb,4BAA4B;KAC1B,aAAa,KAAK;KAClB,iBAAiB,aAAa;KAC9B,OAAO,KAAK;KACZ;IACF,CAAC,SAEC,cACE;KACE,OAAQ,KAAK,iBAAiB;KAC9B,UAAU;KACV,UAAU,aAAa;KACvB,SAAS;IACX,GACA,YACF,CACJ;GACF,SAAS,cAAc;IACrB,6BAA6B;KAC3B,OAAO;KACP;IACF,CAAC;;;;;;;;IAQD,IAAI,wBAAwB,0BAA0B;;;KAGpD,eAAe,MAAM,YAAY;KACjC,MAAM;IACR;;;;;;IAMA;KACE,MAAM,gBAAgB,KAAK,4BACzB,eAAe,MACjB;KACA,IAAI,iBAAiB,MACnB,MAAM;IAEV;;;;;;;;;;;;;;;IAeA,MAAM,wBAAwB,yBAAyB,YAAY;IAEnE,MAAM,uBACJ,aAAa,yBAAyB,QACtC,uBAAuB,UAAU;KAC/B,OACE,aAAa,qBAAqB,cAAc,SAAA;KAElD,QAAQ,aAAa,qBAAqB,cAAc;KACxD,cAAc,aAAa;IAC7B,CAAC,CAAC,CAAC,KAAK,SAAS;IAEnB,MAAM,uCACJ,UAOA,OAAO,UAAU,YAAY,UAAU,OACnC,kCAAkC,IAAI,KAAK,IAC3C,KAAA;IAEN,MAAM,6BACJ,OACA,oBACuB;KACvB,MAAM,0BACJ,mBAAmB,wBAAwB,KAAK;KAClD,OACE,oCAAoC,KAAK,CAAC,EAAE,0BAC3C,2BAA2B,OACxB,wBACA,KAAA;IAER;IAEA,MAAM,gBACJ,OACA,8BACgC;;;;;;KAMhC,MAAM,kBACJ,6BAA6B,wBAAwB,KAAK;KAC5D,MAAM,mBAAmB,oCAAoC,KAAK;KAClE,MAAM,yBAAyB,0BAC7B,OACA,eACF;;;;;;;KAOA,IAAI,aAAa,wBAAwB,sBAAsB,GAC7D,OAAO;KAET,MAAM,WAAW,4BAA4B;MAC3C;MACA,UAAU,iBAAiB,YAAY,aAAa;MACpD,kBACE,kBAAkB,iBAClB,iBAAiB,oBACjB,aAAa;MACf,uBAAuB;MACvB,kBAAkB,aAAa;MAC/B,mBAAmB,aAAa;MAChC,cAAc,aAAa,yBAAyB;MACpD,4BAA4B,8BAC1B,iBAAiB,iBAAiB,aAAa,aACjD;MACA,eAAe,aAAa;KAC9B,CAAC;KACD,IAAI,YAAY,MACd,OAAO;KAET,MAAM,qBACJ,mBAAmB,OACf;MACA,GAAG;MACH,cAAc,WACZ,uBAAuB,aAAa,gBAAgB,GACpD,oBAAoB,OAChB,SAAS,eACT,wBACA,SAAS,cACT,SAAS,4BAAA,GAET,aAAa,gBACf,CACJ;MACA,0BAA0B,KAAA;KAC5B,IACE;KAKN,OAHE,wBACC,aAAa,gBAAgB,QAC5B,mBAAmB,gBAAgB,OACb,qBAAqB;IACjD;IAEA,MAAM,WAAW,aAAa,YAAY;IAC1C,IAAI,YAAY,MAAM;KACpB,MAAM,yBACJ,0BAA0B,YAAY;KACxC,OAAO,KAAK,sBAAsB;MAChC;MACA;MACA;MACA;MACA,qBAAqB;MACrB,uBAAuB;KACzB,CAAC;IACH;;;;;;;IAOA,IAAI;KACF,SAAS,MAAM,yBACb,4BAA4B;MAC1B,aAAa,KAAK;MAClB,iBAAiB,aAAa;MAC9B,OAAO,KAAK;MACZ;KACF,CAAC,SAEC,qBAAqB;MACnB;MACA,OAAO,aAAa;MACpB,UAAU;MACV,QAAQ;MACR;MACA,SAAS;;;;;;MAMT,iBAAiB;OACf,UAAU,aAAa;OACvB,uBAAuB,yBAAyB,YAAY;OAC5D,kBAAkB,aAAa;MACjC;MACA,0BAA0B,EACxB,OAAO,eACP,UAAU,kBACV,UAAU,kBACV,kBAAkB,0BAClB,QAAQ,qBACJ;OACJ,MAAM,0BACJ,aAAa,sBACb,4BACE,4BAA4B,aAAa,gBAC3C;;;;;;;;;;;OAWF,MAAM,4BAA4B,4BAChC,kBACA,gBAAgB,kBAAkB,EAChC,OAAO,sBAAsB,aAAa,EAC5C,CAAC,IACG,4BAA4B,mBAAmB,MAC/C,KAAK,qBAAqB,CAAC,CAC7B,IACE,4BAA4B,gBAAgB,CAClD;OACA,MAAM,4BAA4B,4BAChC,2BACA,2BAA2B;QACzB,OAAO;QACP,UAAU;QACV,UAAU;QACV,oBAAoB;QACpB,aAAa;OACf,CAAC,CACH;OACA,MAAM,uBAAuB,cAAc;OAQ3C,MAAM,aAAa,uBACjB,2BAPA,4BAA4B,OACxB,uBACA,KAAK,IACL,wBAAwB,0BACxB,wBACF,GAIF,IACF;OACA,IAAI,CAAC,WAAW,MACd,MAAM,mCAAmC;QACvC;QACA,UAAU;QACV,MAAM;OACR,CAAC;OAEH,OAAO;MACT;KACF,CAAC,CACL;IACF,SAAS,eAAe;KACtB,IAAI,yBAAyB,0BAA0B;;;;MAIrD,eAAe,MAAM,aAAa;MAClC,MAAM;KACR;KACA;;MAEE,MAAM,gBAAgB,KAAK,4BACzB,eAAe,MACjB;MACA,IAAI,iBAAiB,MACnB,MAAM;KAEV;KACA,MAAM,qBACJ,8BAA8B,aAAa;KAC7C,IAAI,mBAAgD;KACpD,IAAI;KACJ,KAAK,MAAM,aAAa,oBAAoB;MAC1C,mBAAmB,aAAa,UAAU,OAAO,UAAU,OAAO;MAClE,IAAI,oBAAoB,MAAM;OAC5B,iCAAiC,0BAC/B,UAAU,OACV,UAAU,OACZ;OACA;MACF;KACF;KACA,IAAI,mBAAmB,WAAW,GAAG;MACnC,mBAAmB,aAAa,aAAa;MAC7C,iCACE,0BAA0B,aAAa;KAC3C;KACA,IAAI,oBAAoB,MACtB,MAAM;KAER,OAAO,KAAK,sBAAsB;MAChC,UAAU;MACV;MACA;MACA;MACA,qBAAqB;MACrB,uBAAuB;KACzB,CAAC;IACH;GACF,UAAU;IACR,MAAM,uBAAuB,eAAe;GAC9C;GAEA,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,kCAAkC;;;;;;;;;;;;;;;;GAkBpD,MAAM,kBAAkB,OAAO,WAAW;;;;;;;;;;GAU1C,IAAI,iBAAiB,QAAQ,MAAM,MAAM;IACvC,IACE,OAAO,gBAAgB,OAAO,YAC9B,gBAAgB,OAAO,IACvB;KACA,gBAAgB,KAAK,GAAG;KACxB,gBAAgB,UAAU,KAAK,gBAAgB;IACjD;IACA,KAAK,wBAAwB,IAAI,gBAAgB,EAAE;GACrD;GACA,MAAM,YAAa,iBACf;GACJ,MAAM,eAAe,MAAM,QAAQ,SAAS,KAAK,UAAU,SAAS;GACpE,MAAM,2BAA2B,4BAA4B;IAC1C;IACjB,cAAc,aAAa;GAC7B,CAAC;GACD,MAAM,qBAAqB,uBACzB,aAAa,UACb,iBAAiB,OACnB;GACA,MAAM,2BAA2B,wBAAwB;IACvD,OAAO;IACP;GACF,CAAC;GAKD,MAAM,oCACJ,qCAAqC;IACnC;IACA;IACA;IACA,+BATkC,6BAA6B;KACjE,OAAO;KACP;IACF,CAMgC;GAC9B,CAAC;GAEH,IAAI,cAAc;IAShB,IAPE,qCAAqC,QACpC,MAAM,yBAAyB;KAC9B,OAAO;KACP;KACA,kBAAkB;KAClB;IACF,CAAC,GAED,yBAAyB,YAAY;IAEvC,IAAI,sBAAsB,QAAQ,CAAC,0BAA0B;KAC3D,MAAM,UAAU,KAAK,WAAW,QAAQ;KAQxC,IAAI,MAPyB,2BAA2B;MACtD,OAAO;MACP;MACA,UAAU,aAAa;MACvB,SAAS;MACT;KACF,CAAC,GAEC,yBAAyB,YAAY;IAEzC;IAEA,MAAM,gBAAgB,WAAyB,UAAU,IAAI;GAC/D;;;;;;GAOA,IAAI,CAAC,gBAAgB,mBAAmB,MAAM;IAS5C,IAPE,qCAAqC,QACpC,MAAM,yBAAyB;KAC9B,OAAO;KACP;KACA,kBAAkB;KAClB;IACF,CAAC,KACwB,sBAAsB,MAC/C,yBAAyB,YAAY;IAEvC,IAAI,sBAAsB,QAAQ,CAAC,0BAA0B;KAC3D,MAAM,UAAU,KAAK,WAAW,QAAQ;KACxC,MAAM,2BAA2B;MAC/B,OAAO;MACP;MACA,UAAU,aAAa;MACvB,SAAS;MACT;KACF,CAAC;IACH;GACF;GAEA,MAAM,kBAAkB,KAAK,IAAI,IAAI,eAAe,IAAA,CAAM,QAAQ,CAAC;GACnE,aAAa,eAAe,KAAK,iBAAiB,OAAO,WAAW,EAAE;;;;;;;;GAQtE,MAAM,kBACH,OAAO,WAAW,EAAE,GAAiC,kBACnD,oBAAoB;GACzB,IAAI,aAAa,cAAc;IAC7B,IAAI,CAAC,gBACH,aAAa,oBAAoB,aAAa,YAAY;IAE5D,aACE,QACA,SACA,SACA,sBAAsB,cAAc,KACpC;KACE,GAAG,aAAa;KAChB,gBAAgB,OAAO,aAAa;KACpC,mBAAmB,aAAa;KAChC,kBAAkB,aAAa;KAC/B,cAAc,cAAc;IAC9B,GACA,YACA,EAAE,OAAO,KAAK,CAChB;GACF,OACE,aACE,QACA,SACA,SACA,sBAAsB,cAAc,KACpC;IACE,gBAAgB,OAAO,aAAa;IACpC,cAAc,cAAc;GAC9B,GACA,YACA,EAAE,OAAO,KAAK,CAChB;GAEF,IACG,iBAAgD,kBAC9C,cAAc,MACjB;IACA,MAAM,EAAE,UAAU,UAAU,wBAC1B,MAAM,KAAK,wBAAwB,SAAS,MAAM;;;;;IAKpD,KAAK,mBAAmB;IACxB,IAAI,qBAAqB;;;;;;;;;;KAUvB,KAAK,oBAAoB;;;;;;;KAOzB,IAAI,SAAS,WAAW,GACtB,KAAK,0BAA0B;KAEjC,KAAK,sBAAsB;KAC3B,OAAO,SAAS,SAAS,IACrB,EAAE,UAAU,CAAC,GAAI,OAAO,YAAY,CAAC,GAAI,GAAG,QAAQ,EAAE,IACtD;IACN;IACA,IAAI,SAAS,SAAS,GAAG;KACvB,KAAK,qBAAqB,IAAI,OAAO;KACrC,KAAK,sBAAsB;KAC3B,OAAO,EAAE,UAAU,CAAC,GAAI,OAAO,YAAY,CAAC,GAAI,GAAG,QAAQ,EAAE;IAC/D;;;;;;;IAOA,KAAK,0BAA0B;IAC/B,KAAK,oBAAoB;GAC3B;GAEA,KAAK,sBAAsB;GAC3B,OAAO;EACT;CACF;;;;;;;;;;;;;;CAeA,MAAc,wBACZ,SACA,QACgC;EAChC,IAAI,KAAK,gBAAgB,MACvB,OAAO;EAET,MAAM,eAAe,QAAQ;EAC7B,MAAM,QAAS,cAAc,UAAiC,KAAK;EACnE,IAAI,SAAS,MACX,OAAO;EAET,MAAM,SAAS,MAAM,aAAa;GAChC,UAAU,KAAK;GACf,OAAO;IACL,iBAAiB;IACjB;IACA,UAAU,cAAc;IACxB,SAAS,KAAK,gBAAgB,UAAU,KAAA;IACxC,kBAAkB;IAClB,WAAW,KAAK;GAClB;GACA,WAAW;GACX,WAAW;;;;;;;;;;;;;;;GAeX,QAAQ,oBAAoB,KAAK,QAAQ,KAAK,YAAY;EAC5D,CAAC,CAAC,CAAC,YAAuB,KAAA,CAAS;EACnC,IAAI,UAAU,MACZ,OAAO;;;;;;;;;;;;;;;;;;;;EAqBT,MAAM,OAAO,KAAK,aAAa,cAAc,KAAK;EAClD,IACE,OAAO,wBAAwB,QAC/B,MAAM,WAAW,mBACjB;GACA,KAAK,oBAAoB,KAAK;GAC9B,KAAK,aAAa,gBAAgB,KAAK;EACzC;EACA,MAAM,WAA0B,CAAC;;;;;;;;;;;;;;;EAejC,MAAM,WAAW,OAAO,mBAAmB,QACxC,YAAY,QAAQ,KAAK,MAAM,EAClC;EACA,IAAI,SAAS,SAAS,GACpB,SAAS,KACP,IAAI,aAAa;GACf,SAAS,SAAS,KAAK,MAAM;GAC7B,mBAAmB;IAAE,MAAM;IAAU,QAAQ;IAAM,QAAQ;GAAO;EACpE,CAAC,CACH;EAEF,IAAI,OAAO,iBAAiB,SAAS,GACnC,IAAI;GACF,SAAS,KAAK,GAAG,wBAAwB,OAAO,gBAAgB,CAAC;EACnE,SAAS,GAAG;GACV,QAAQ,KACN,uEACA,aAAa,QAAQ,EAAE,UAAU,CACnC;EACF;EAEF,OAAO;GACL,UAAU;GACV,qBAAqB,OAAO,wBAAwB;EACtD;CACF;CAEA,gBAAgB,SAA0C;EACxD,MAAM,kBAA8C,KAAK;EACzD,MAAM,eAAe,KAAK,cAAc,IAAI,OAAO;EACnD,IAAI,CAAC,cACH,MAAM,IAAI,MAAM,wCAAwC,SAAS;;;;;;;;;;;EAanE,MAAM,yBAAyB,aAAa,oBAAoB;EAChE,IACE,aAAa,mBAAmB,QAChC,aAAa,gBAAgB,SAAS,KACtC,yBAAyB,GACzB;GACA,MAAM,oBAAoB,+BACxB,aAAa,iBACb,YACF;GACA,IAAI,kBAAkB,SAAS,GAAG;IAChC,IACE,CAAC,KAAK,8BACN,kBAAkB,KAAK,qBAAqB,GAE5C,MAAM,IAAI,MACR,4GACF;IAEF,MAAM,iCACJ,KAAK,mBAAmB,KAAK;IAC/B,MAAM,8BAA4C,YAAY;KAC5D,MAAM,aAAa,KAAK,aAAa,OAAO;KAC5C,IAAI,KAAK,yBAAyB,MAAM;MACtC,WAAW,gBAAgB,KAAK;MAChC,WAAW,yBAAyB,KAAK,qBAAqB;KAChE;KACA,MAAM,uBAAuB,2BAC3B,yBAAyB,CAC3B;KAIA,wBAAwB,YAAY;MAClC,cAAc,KAAK;MACnB,gBAAgB,KAAK;MACrB,sBAAsB,KAAK;MAC3B,yBAAyB,KAAK;MAC9B,sBAAsB,KAAK;MAC3B,uBAAuB,KAAK;MAC5B,eAAe,KAAK;KACtB,CAAC;KACD,IAAI,KAAK,gBAAgB,YAAY,MACnC,WAAW,iBAAiB,EAC1B,cAAc,KAAK,gBAAgB,aACrC;KAEF,WAAW,4BAA4B;KACvC,WAAW,8BACT,sBAAsB,WAAA,iBAAsC,KAC5D;KACF,OAAO;IACT;IACA,MAAM,WAAW,IAAI,iBAAiB;KACpC,SAAS,IAAI,IACX,kBAAkB,KAAK,WAAW,CAAC,OAAO,MAAM,MAAM,CAAC,CACzD;KACA,cAAc,KAAK;KACnB,cAAc,EACZ,kBAAmC,KAAK,aAC1C;KACA,cAAc,KAAK;;;;KAInB,uBAAuB;KACvB,aAAa,KAAK,SAAS;KAC3B,eAAe,aAAa;KAC5B,kBAAkB,KAAK;KACvB,UAAU,KAAK;KACf,cAAc,aAAa;KAC3B,WAAW,KAAK;KAChB,cAAc,KAAK;KACnB,gBAAgB,KAAK;KACrB,cAAc,KAAK,gBAAgB;KACnC,UAAU;KACV,mBAAmB,UACjB,2BAA2B;MACzB,MAAM;MACN;KACF,CAAC;KACH,wBAAwB;IAC1B,CAAC;IACD,KAAK,yBAAyB,QAAQ;IAEtC,MAAM,eAAe,KAAK,OAAO,UAAU,WAAW;KACpD,MAAM,QAAQ;KAId,MAAM,cACJ,OAAO,MAAM,gBAAgB,YAC7B,MAAM,YAAY,KAAK,CAAC,CAAC,SAAS,IAC9B,MAAM,cACN;KACN,MAAM,eACJ,OAAO,MAAM,kBAAkB,WAAW,MAAM,gBAAgB;KAClE,MAAM,WAAW,OAAO,cAAc;;;KAGtC,MAAM,cAAc;KAIpB,MAAM,WAAW,YAAY;KAC7B,IAAI;KACJ,IACE,OAAO,YAAY,eAAe,YAClC,YAAY,eAAe,IAE3B,mBAAmB,YAAY;UAC1B,IAAI,OAAO,UAAU,OAAO,YAAY,SAAS,OAAO,IAC7D,mBAAmB,SAAS;;;;;KAM9B,MAAM,aAAa,OAAO,eACxB;KAmBF,QAAO,MAjBc,SAAS,QAAQ;MACpC;MACA;MACA;MACA,QAAQ,OAAO;MACf;MACA,SAAS,YAAY;;;;;;;MAOrB,oBAAoB,OAAO;KAG7B,CAAC,EAAA,CACa;IAChB,GAAG,wBAAwB,iBAAiB,CAAC;IAC7C,MAAM,yBAAyB;IAE/B,uBAAuB,8BAA8B;KACnD,oBACE,mBACA,WAEA,SAAS,kBAAkB,mBAAmB,MAAM;KACtD,mBACE,MACA,WAEA,SAAS,qBAAqB,MAAM,MAAM;KAC5C,uBAAuB,MAAM,QAAQ,WACnC,SAAS,yBAAyB,MAAM,QAAQ,MAAM;IAC1D;IAEA,IAAI,CAAC,aAAa,YAChB,aAAa,aAAa,CAAC;IAE7B,aAAc,WAA+B,KAAK,YAAY;;;;;;;;IAS9D,IAAI,aAAa,cAAc;KAC7B,MAAM,EAAE,cAAc,2BAA2B;KACjD,aAAa,0BAA0B,aACpC,2BAA2B,YAAY,CAAC,CACxC,WAAW;MACV,aAAa,+BACX,sBACF;KACF,CAAC,CAAC,CACD,OAAO,QAAQ;MACd,QAAQ,MACN,yEACA,GACF;KACF,CAAC;IACL;GACF;EACF;EAEA,MAAM,YAAY,GAAG,QAAQ;EAC7B,MAAM,WAAW,GAAG,QAAQ;EAC5B,MAAM,gBAAgB,GAAG,YAAY;EAErC,MAAM,gBACJ,OACA,WACW;GACX,KAAK,SAAS;;;;;;GAMd,IAAI,KAAK,qBAAqB,OAAO,OAAO,GAC1C,OAAO;GAET,IAAI,MAAM,wBAAwB,MAChC,OAAO;GAET,OAAO,eACL,OACA,UACA,KAAK,cACP;EACF;EAEA,MAAM,kBAAkB,WAAW,KAAK;GACtC,UAAU,WAA0B;IAClC,SAASD;IACT,eAAe,CAAC;GAClB,CAAC;GACD,sBAAsB,WAAiD;IACrE,UACE,GACA,MACG;IACL,eAAe,KAAA;GACjB,CAAC;EACH,CAAC;EAED,MAAM,0BAEW,KAAK;EACtB,MAAM,yBAAiC,KAAK;EAC5C,MAAM,8BACJ,KAAK;EACP,MAAM,0BAA0B,UAAyC;GACvE,KAAK,+BAA+B;EACtC;EACA,MAAM,sBACJ,UACS;GACT,KAAK,2BAA2B;EAClC;EA2KA,OAzKiB,IAAI,WAAW,eAAe,CAAC,CAC7C,QAAQ,WAAW,KAAK,gBAAgB,OAAO,CAAC,CAAC,CACjD,QACC,UACA,KAAK,gBAAgB;GACnB,cAAc,aAAa;GAC3B,gBAAgB,aAAa;GAC7B;EACF,CAAC,CACH,CAAC,CACA,QACC,eACA,oBAAoB;GAClB;GACA,OAAO;IACL,aAAa,KAAK;IAClB,iBAAiB,KAAK;IACtB,IAAI,SAAS;KACX,OAAO,UAAU;IACnB;IACA,OAAO,KAAK;IACZ,cAAc,KAAK,kBAAkB;IACrC,cAAc,KAAK;;;;;;IAMnB,cAAc,KAAK;IACnB,wBAAwB,KAAK;IAC7B,4BAA4B,KAAK;;;;;;;IAOjC,IAAI,2BAA2B;KAC7B,OAAO,kBAAkB;IAC3B;IACA,IAAI,yBACF,OACA;KACA,mBAAmB,KAAK;IAC1B;;;;IAIA,IAAI,eAAuB;KACzB,OAAO,iBAAiB;IAC1B;;;;IAIA,IAAI,+BAAwD;KAC1D,OAAO,sBAAsB;IAC/B;IACA,IAAI,6BAA6B,OAAgC;KAC/D,uBAAuB,KAAK;IAC9B;;;IAGA,wBAAqC,KAAK,aAAa;;;;IAIvD,4BAA6C,KAAK;;;;IAIlD,uBAA+B,KAAK;IACpC,iBAAiB,OAAO,SAAS,eAAe;KAC9C,MAAM,iBAAiB,cAAc,KAAK;KAC1C,IAAI,QAAQ,WAAW,MAAM;MAC3B,MAAM,UAAU,KAAK,uBACnB,QAAQ,SACR,gBAAgB,QAClB;MACA,IAAI,WAAW,MACb,QAAQ,UAAU;KAEtB;KACA,QAAQ,WAAW;KACnB,MAAM,KAAK,uBACT,SACA,gBAAgB,UAChB,KACF;KAEA,MAAM,UAAU,KAAK,iBAAiB,WAAA,aAEtC;KACA,IAAI,SAAS;MACX,MAAM,QAAQ,OAAA,eAEZ,SACA,gBAAgB,cAChB,IACF;MACA,KAAK,yBAAyB,IAAI,QAAQ,EAAE;KAC9C;KAEA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,eAEL,QAAQ,EACV,IACE,KAAA;KACJ,IAAI;MACF,IAAI,gBACF,MAAM,wBAAA,eAEJ,SACA,cACF;KAEJ,UAAU;MACR,+BAA+B;KACjC;IACF;IACA,cAAc,OACZ,QACA,QACA,eACG;KACH,MAAM,KAAK,aAAa,QAAQ,QAAQ,EACtC,WAAW,cAAc,KAAK,OAAA,EAAS,SACzC,CAAC;IACH;IACA,0BAA0B,OACxB,QACA,QACA,eACG;KACH,MAAM,iBAAiB,cAAc,KAAK;KAC1C,MAAM,cAAc,KAAK,IAAI;KAC7B,MAAM,UAAU,KAAK,WAAW,MAAM;KACtC,MAAM,UAAU,KAAK,iBAAiB,WAAA,uBAEtC;KACA,IAAI,SACF,MAAM,QAAQ,OAAA,yBAEZ,EACE,QAAQ;MACN,GAAG;MACH,IAAI;MACJ,OAAO,SAAS,SAAS;MACzB,cAAc;KAChB,EACF,GACA,gBAAgB,cAChB,IACF;KAEF,MAAM,KAAK,qBAAqB,QAAQ;MACtC,UAAU,gBAAgB;MAC1B,IAAI;KACN,CAAC;IACH;GACF;GACA,iBAAiB,YAAoB,KAAK,eAAe,OAAO;EAClE,CAAC,CACH,CAAC,CACA,QAAQ,OAAO,SAAS,CAAC,CACzB,oBAAoB,WAAW,YAAY,CAAC,CAC5C,QAAQ,eAAe,SAAS,CAAC,CACjC,QAAQ,UAAU,aAAa,UAAU,MAAM,SAEpC,CAAC,CAAC,QAAQ;CAC1B;CAEA,iBAA0C;EACxC,KAAK,0BAA0B,KAAK,gBAAgB,gBAAgB;EACpE,MAAM,YAAY,KAAK,gBAAgB,KAAK,cAAc;EA2B1D,OAbiB,IAAI,WAbG,WAAW,KAAK,EACtC,UAAU,WAA0B;GAClC,UAAU,GAAG,MAAM;IACjB,IAAI,CAAC,KAAK,SAAS,UAAU,CAAC,KAAK,+BACjC,KAAK,aAAa,EAAE,SAAS,EAAE;IAEjC,MAAM,SAASA,uBAAqB,GAAG,CAAC;IACxC,KAAK,WAAW;IAChB,OAAO;GACT;GACA,eAAe,CAAC;EAClB,CAAC,EACH,CAC8C,CAAC,CAAC,CAC7C,QACC,KAAK,gBACL,WAIA,EAAE,MAAM,CAAC,GAAG,EAAE,CAChB,CAAC,CACA,QAAQ,OAAO,KAAK,cAAc,CAAC,CAEnC,QAAQ,KAAK,cAEF;CAChB;;;;;;CAOA,oBAAuC;EACrC,OAAO;CACT;;;;;;;;CASA,2BAAqC,UAAsC,CAE3E;CAEA,uBACE,SACA,UACoB;EACpB,IACE,YAAY,QACZ,CAAC,OAAO,UAAU,eAAe,KAC/B,UAAA,oBAEF,GAEA,OAAO,KAAK,2BAA2B,OAAO;EAEhD,MAAM,iBAAiB,SAAA;EACvB,IAAI,mBAAmB,MACrB;EAEF,IACE,OAAO,mBAAmB,YAC1B,OAAO,cAAc,cAAc,KACnC,iBAAiB,GAEjB,OAAO;EAET,OAAO,KAAK,2BAA2B,OAAO;CAChD;;;;CAOA,MAAM,gBACJ,SACA,aACA,UACiB;EACjB,IAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,oBAAoB;EAGtC,MAAM,CAAC,QAAQ,aAAa,KAAK,eAAe,OAAO;EACvD,IAAI,YAAY,SAAA,gBAAiC,YAAY,YAAY;GACvE,IAAI;GACJ,KAAK,MAAM,aAAa,YAAY,YAAY;IAC9C,MAAM,aAAa,UAAU,MAAM;IACnC,IAAI,CAAC,cAAc,KAAK,gBAAgB,IAAI,UAAU,GACpD;IAEF,KAAK,gBAAgB,IAAI,YAAY,MAAM;IAC3C,qBAAqB,KAAK,sBAAsB,MAAM;IACtD,iBAAiB,IAAI,UAAU;GACjC;EACF;EAEA,MAAM,UAAqB;GACzB;GACA,IAAI;GACJ,MAAM,YAAY;GAClB,OAAO,KAAK,YAAY;GACxB;GACA,OAAO;GACP,QAAQ;EACV;EAEA,MAAM,QAAQ,KAAK,SAAS;EAC5B,IAAI,OACF,QAAQ,QAAQ;;;;;;;EASlB,IAAI,YAAY,KAAK,kBAAkB,GACrC,IAAI;GACF,MAAM,eAAe,KAAK,gBAAgB,QAAQ;GAClD,IAAI,aAAa,SAAS;IACxB,QAAQ,UAAU,aAAa;IAC/B,MAAM,UAAU,KAAK,uBACnB,aAAa,SACb,QACF;IACA,IAAI,WAAW,MACb,QAAQ,UAAU;GAEtB;EACF,SAAS,IAAI,CAEb;EAGF,MAAM,KAAK,uBAAuB,SAAS,QAAQ;EAMnD,MAAM,UAAU,KAAK,iBAAiB,WAAA,aAAkC;EACxE,IAAI,SAAS;GACX,MAAM,QAAQ,OAAA,eAAgC,SAAS,UAAU,IAAI;GACrE,KAAK,yBAAyB,IAAI,MAAM;EAC1C;EAQA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,eAAoD,MAAM,IAC/D,KAAA;EACJ,IAAI;GACF,MAAM,wBAAA,eAEJ,SACA,KAAK,MACP;EACF,UAAU;GACR,+BAA+B;EACjC;EACA,OAAO;CACT;;;;;;;;;;;;;;;CAgBA,aAAa,0BACX,OACA,MACA,UACkB;EAClB,IAAI,CAAC,KAAK,IAAI;GACZ,QAAQ,KAAK,oCAAoC;GACjD,OAAO;EACT;EAEA,MAAM,SAAS,MAAM,gBAAgB,IAAI,KAAK,EAAE,KAAK;EACrD,IAAI,CAAC,QACH,OAAO;EAGT,MAAM,EAAE,MAAM,OAAO,MAAM,UAAU;EACrC,MAAM,kBAAkB,4BAA4B;EACpD,MAAM,oBAAoB;EAC1B,MAAM,cACJ,OAAO,WAAW,OACd,KAAK,4BACL,MAAM,SACN,KAAK,IAAI,GAAG,kBAAkB,KAA2B,CAAC,CAC5D,MACE;EAEN,MAAM,UAAU,MAAM,WAAW,MAAM;EACvC,IAAI,CAAC,SACH,OAAO;EAGT,MAAM,cAAc,KAAK,IAAI;EAC7B,MAAM,YAAiC;GACrC,IAAI,KAAK;GACT,MAAM,QAAQ;GACd,MAAM,4BAA4B,MAAM,eAAe;GACvD,QAAQ,GAAG,oBAAoB;GAC/B,UAAU;EACZ;EAMA,MAAM,UAAU,MAAM,iBAAiB,WAAA,uBAEvC;EACA,IAAI,CAAC,SACH,OAAO;EAGT,MAAM,QAAQ,OAAA,yBAEZ,EACE,QAAQ;GACN,IAAI;GACJ,OAAO,QAAQ;GACf,MAAM;GACN;GACA,cAAc;EAChB,EACF,GACA,UACA,KACF;EACA,MAAM,MAAM,qBAAqB,QAAQ;GACvC,YAAY,KAAK;GACjB;GACA,IAAI;EACN,CAAC;EACD,OAAO;CACT;;;;;CAMA,MAAM,oBACJ,MACA,UACkB;EAClB,OAAO,cAAc,0BAA0B,MAAM,MAAM,QAAQ;CACrE;CAEA,MAAM,qBACJ,IACA,OACA,UACe;EACf,IAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,oBAAoB;OAC/B,IAAI,CAAC,IACV,MAAM,IAAI,MAAM,kBAAkB;EAEpC,MAAM,eAAoC;GACxC;GACA;EACF;EACA,MAAM,UAAU,KAAK,iBAAiB,WAAA,mBAEtC;EACA,IAAI,SAAS;GACX,MAAM,QAAQ,OAAA,qBAEZ,cACA,UACA,IACF;GACA,KAAK,yBAAyB,IAAI,EAAE;EACtC;EACA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,qBAA0D,EAAE,IACjE,KAAA;EACJ,IAAI;GACF,MAAM,wBAAA,qBAEJ,cACA,KAAK,MACP;EACF,UAAU;GACR,+BAA+B;EACjC;CACF;CAEA,MAAM,qBACJ,IACA,OACA,UACe;EACf,IAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,oBAAoB;EAEtC,MAAM,eAAoC;GACxC;GACA;EACF;EACA,IAAI,oBAAoB,MAAM,OAAO,GACnC,KAAK,yBAAyB,IAAI,EAAE;EAEtC,MAAM,UAAU,KAAK,iBAAiB,WAAA,kBAEtC;EACA,IAAI,SAAS;GACX,MAAM,QAAQ,OAAA,oBAEZ,cACA,UACA,IACF;GACA,KAAK,yBAAyB,IAAI,EAAE;EACtC;EACA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,oBAAyD,EAAE,IAChE,KAAA;EACJ,IAAI;GACF,MAAM,wBAAA,oBAEJ,cACA,KAAK,MACP;EACF,UAAU;GACR,+BAA+B;EACjC;CACF;CAEA,yBAAyB,OACvB,QACA,OACA,aACkB;EAClB,IAAI,CAAC,KAAK,QACR,MAAM,IAAI,MAAM,oBAAoB;EAEtC,MAAM,iBAAwC;GAC5C,IAAI;GACJ;EACF;EACA,IAAI,yBAAyB,MAAM,OAAO,GACxC,KAAK,uBAAuB,IAAI,MAAM;EAExC,MAAM,UAAU,KAAK,iBAAiB,WAAA,oBAEtC;EACA,IAAI,SAAS;GACX,MAAM,QAAQ,OAAA,sBAEZ,gBACA,UACA,IACF;GACA,KAAK,yBAAyB,IAAI,MAAM;EAC1C;EACA,MAAM,+BAA+B,UACjC,KAAK,2BAAA,sBAA2D,MAAM,IACtE,KAAA;EACJ,IAAI;GACF,MAAM,wBAAA,sBAEJ,gBACA,KAAK,MACP;EACF,UAAU;GACR,+BAA+B;EACjC;CACF;AACF"}
1
+ {"version":3,"file":"Graph.mjs","names":["messagesStateReducer","CustomToolNode"],"sources":["../../../src/graphs/Graph.ts"],"mappings":"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"}