@librechat/agents 3.4.6 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1027) 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 +5 -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 +5 -35
  366. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  367. package/dist/esm/llm/init.mjs +0 -9
  368. package/dist/esm/llm/init.mjs.map +1 -1
  369. package/dist/esm/llm/invoke.mjs +1 -270
  370. package/dist/esm/llm/invoke.mjs.map +1 -1
  371. package/dist/esm/llm/mistral/index.mjs.map +1 -1
  372. package/dist/esm/llm/openai/index.mjs +0 -99
  373. package/dist/esm/llm/openai/index.mjs.map +1 -1
  374. package/dist/esm/llm/openai/streamMetadata.mjs +0 -21
  375. package/dist/esm/llm/openai/streamMetadata.mjs.map +1 -1
  376. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  377. package/dist/esm/llm/openrouter/index.mjs +0 -1
  378. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  379. package/dist/esm/llm/openrouter/toolCache.mjs +0 -6
  380. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  381. package/dist/esm/llm/preempt.mjs +0 -75
  382. package/dist/esm/llm/preempt.mjs.map +1 -1
  383. package/dist/esm/llm/providers.mjs.map +1 -1
  384. package/dist/esm/llm/request.mjs +0 -10
  385. package/dist/esm/llm/request.mjs.map +1 -1
  386. package/dist/esm/llm/stream/chunkAdapters.mjs +0 -62
  387. package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -1
  388. package/dist/esm/llm/stream/smoother.mjs +0 -58
  389. package/dist/esm/llm/stream/smoother.mjs.map +1 -1
  390. package/dist/esm/llm/streamLimits.mjs +4 -293
  391. package/dist/esm/llm/streamLimits.mjs.map +1 -1
  392. package/dist/esm/llm/truncation.mjs +0 -36
  393. package/dist/esm/llm/truncation.mjs.map +1 -1
  394. package/dist/esm/llm/vertexai/index.mjs +0 -330
  395. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  396. package/dist/esm/messages/alternation.mjs +0 -43
  397. package/dist/esm/messages/alternation.mjs.map +1 -1
  398. package/dist/esm/messages/anthropicToolCache.mjs +0 -45
  399. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  400. package/dist/esm/messages/assistantPhase.mjs +0 -12
  401. package/dist/esm/messages/assistantPhase.mjs.map +1 -1
  402. package/dist/esm/messages/budget.mjs +0 -9
  403. package/dist/esm/messages/budget.mjs.map +1 -1
  404. package/dist/esm/messages/cache.mjs +0 -172
  405. package/dist/esm/messages/cache.mjs.map +1 -1
  406. package/dist/esm/messages/content.mjs +0 -9
  407. package/dist/esm/messages/content.mjs.map +1 -1
  408. package/dist/esm/messages/contextPruning.mjs +0 -15
  409. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  410. package/dist/esm/messages/contextPruningSettings.mjs +0 -3
  411. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  412. package/dist/esm/messages/core.mjs +0 -48
  413. package/dist/esm/messages/core.mjs.map +1 -1
  414. package/dist/esm/messages/format.mjs +1 -345
  415. package/dist/esm/messages/format.mjs.map +1 -1
  416. package/dist/esm/messages/handoffCue.mjs +0 -36
  417. package/dist/esm/messages/handoffCue.mjs.map +1 -1
  418. package/dist/esm/messages/ids.mjs.map +1 -1
  419. package/dist/esm/messages/injected.mjs +0 -33
  420. package/dist/esm/messages/injected.mjs.map +1 -1
  421. package/dist/esm/messages/langchain.mjs +0 -14
  422. package/dist/esm/messages/langchain.mjs.map +1 -1
  423. package/dist/esm/messages/prune.mjs +1 -184
  424. package/dist/esm/messages/prune.mjs.map +1 -1
  425. package/dist/esm/messages/recency.mjs +0 -32
  426. package/dist/esm/messages/recency.mjs.map +1 -1
  427. package/dist/esm/messages/reducer.mjs +0 -30
  428. package/dist/esm/messages/reducer.mjs.map +1 -1
  429. package/dist/esm/messages/tools.mjs +0 -14
  430. package/dist/esm/messages/tools.mjs.map +1 -1
  431. package/dist/esm/openai/index.mjs.map +1 -1
  432. package/dist/esm/prompts/activityLabel.mjs +9 -79
  433. package/dist/esm/prompts/activityLabel.mjs.map +1 -1
  434. package/dist/esm/responses/index.mjs.map +1 -1
  435. package/dist/esm/run.mjs +2 -538
  436. package/dist/esm/run.mjs.map +1 -1
  437. package/dist/esm/session/AgentSession.mjs +1 -17
  438. package/dist/esm/session/AgentSession.mjs.map +1 -1
  439. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  440. package/dist/esm/session/handlers.mjs +0 -7
  441. package/dist/esm/session/handlers.mjs.map +1 -1
  442. package/dist/esm/session/ids.mjs.map +1 -1
  443. package/dist/esm/session/messageSerialization.mjs +0 -4
  444. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  445. package/dist/esm/stream.mjs +1 -93
  446. package/dist/esm/stream.mjs.map +1 -1
  447. package/dist/esm/summarization/index.mjs +0 -27
  448. package/dist/esm/summarization/index.mjs.map +1 -1
  449. package/dist/esm/summarization/node.mjs +0 -273
  450. package/dist/esm/summarization/node.mjs.map +1 -1
  451. package/dist/esm/tools/BashExecutor.mjs +0 -35
  452. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  453. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +0 -24
  454. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  455. package/dist/esm/tools/Calculator.mjs.map +1 -1
  456. package/dist/esm/tools/CodeExecutor.mjs +0 -13
  457. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  458. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  459. package/dist/esm/tools/ProgrammaticToolCalling.mjs +0 -101
  460. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  461. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  462. package/dist/esm/tools/SkillTool.mjs +0 -5
  463. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  464. package/dist/esm/tools/SubagentTool.mjs +0 -10
  465. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  466. package/dist/esm/tools/ToolNode.mjs +6 -1038
  467. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  468. package/dist/esm/tools/ToolSearch.mjs +0 -179
  469. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  470. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  471. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  472. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +0 -39
  473. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  474. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  475. package/dist/esm/tools/eagerEventExecution.mjs +0 -6
  476. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  477. package/dist/esm/tools/handlers.mjs +1 -41
  478. package/dist/esm/tools/handlers.mjs.map +1 -1
  479. package/dist/esm/tools/intentArg.mjs +1 -132
  480. package/dist/esm/tools/intentArg.mjs.map +1 -1
  481. package/dist/esm/tools/local/CompileCheckTool.mjs +0 -25
  482. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  483. package/dist/esm/tools/local/FileCheckpointer.mjs +0 -23
  484. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  485. package/dist/esm/tools/local/LocalCodingTools.mjs +0 -80
  486. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  487. package/dist/esm/tools/local/LocalExecutionEngine.mjs +0 -126
  488. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  489. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  490. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +0 -12
  491. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  492. package/dist/esm/tools/local/attachments.mjs +0 -44
  493. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  494. package/dist/esm/tools/local/bashAst.mjs +0 -16
  495. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  496. package/dist/esm/tools/local/editStrategies.mjs +0 -14
  497. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  498. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  499. package/dist/esm/tools/local/syntaxCheck.mjs +0 -31
  500. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  501. package/dist/esm/tools/local/textEncoding.mjs +0 -11
  502. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  503. package/dist/esm/tools/local/workspaceFS.mjs +0 -33
  504. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  505. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  506. package/dist/esm/tools/schema.mjs +0 -8
  507. package/dist/esm/tools/schema.mjs.map +1 -1
  508. package/dist/esm/tools/search/anthropic.mjs +0 -9
  509. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  510. package/dist/esm/tools/search/content.mjs.map +1 -1
  511. package/dist/esm/tools/search/crw-scraper.mjs +0 -33
  512. package/dist/esm/tools/search/crw-scraper.mjs.map +1 -1
  513. package/dist/esm/tools/search/crw-search.mjs +0 -2
  514. package/dist/esm/tools/search/crw-search.mjs.map +1 -1
  515. package/dist/esm/tools/search/firecrawl.mjs +0 -25
  516. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  517. package/dist/esm/tools/search/format.mjs +0 -30
  518. package/dist/esm/tools/search/format.mjs.map +1 -1
  519. package/dist/esm/tools/search/highlights.mjs +0 -16
  520. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  521. package/dist/esm/tools/search/keenable-scraper.mjs +0 -8
  522. package/dist/esm/tools/search/keenable-scraper.mjs.map +1 -1
  523. package/dist/esm/tools/search/keenable-search.mjs +0 -7
  524. package/dist/esm/tools/search/keenable-search.mjs.map +1 -1
  525. package/dist/esm/tools/search/rerankers.mjs +0 -35
  526. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  527. package/dist/esm/tools/search/schema.mjs +0 -1
  528. package/dist/esm/tools/search/schema.mjs.map +1 -1
  529. package/dist/esm/tools/search/search.mjs +1 -14
  530. package/dist/esm/tools/search/search.mjs.map +1 -1
  531. package/dist/esm/tools/search/serper-scraper.mjs +0 -46
  532. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  533. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  534. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  535. package/dist/esm/tools/search/tool.mjs +0 -25
  536. package/dist/esm/tools/search/tool.mjs.map +1 -1
  537. package/dist/esm/tools/search/utils.mjs +0 -8
  538. package/dist/esm/tools/search/utils.mjs.map +1 -1
  539. package/dist/esm/tools/skillCatalog.mjs +0 -6
  540. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  541. package/dist/esm/tools/streamedToolCallSeals.mjs +0 -6
  542. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  543. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +0 -2
  544. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -1
  545. package/dist/esm/tools/subagent/SubagentExecutor.mjs +3 -213
  546. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  547. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
  548. package/dist/esm/tools/subagent/childGraphConfig.mjs +0 -4
  549. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
  550. package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -1
  551. package/dist/esm/tools/toolOutputReferences.mjs +1 -322
  552. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  553. package/dist/esm/types/hitl.mjs +0 -5
  554. package/dist/esm/types/hitl.mjs.map +1 -1
  555. package/dist/esm/utils/callbacks.mjs.map +1 -1
  556. package/dist/esm/utils/errors.mjs +14 -165
  557. package/dist/esm/utils/errors.mjs.map +1 -1
  558. package/dist/esm/utils/events.mjs +0 -10
  559. package/dist/esm/utils/events.mjs.map +1 -1
  560. package/dist/esm/utils/graph.mjs.map +1 -1
  561. package/dist/esm/utils/handlers.mjs +0 -3
  562. package/dist/esm/utils/handlers.mjs.map +1 -1
  563. package/dist/esm/utils/llm.mjs +0 -1
  564. package/dist/esm/utils/llm.mjs.map +1 -1
  565. package/dist/esm/utils/misc.mjs +0 -16
  566. package/dist/esm/utils/misc.mjs.map +1 -1
  567. package/dist/esm/utils/proxy.mjs +0 -26
  568. package/dist/esm/utils/proxy.mjs.map +1 -1
  569. package/dist/esm/utils/run.mjs +0 -6
  570. package/dist/esm/utils/run.mjs.map +1 -1
  571. package/dist/esm/utils/schema.mjs +0 -5
  572. package/dist/esm/utils/schema.mjs.map +1 -1
  573. package/dist/esm/utils/title.mjs +0 -6
  574. package/dist/esm/utils/title.mjs.map +1 -1
  575. package/dist/esm/utils/tokens.mjs +0 -113
  576. package/dist/esm/utils/tokens.mjs.map +1 -1
  577. package/dist/esm/utils/toolContent.mjs +0 -41
  578. package/dist/esm/utils/toolContent.mjs.map +1 -1
  579. package/dist/esm/utils/truncation.mjs +0 -61
  580. package/dist/esm/utils/truncation.mjs.map +1 -1
  581. package/dist/types/agents/AgentContext.d.ts +3 -3
  582. package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +3 -3
  583. package/dist/types/agents/projection.d.ts +1 -1
  584. package/dist/types/events.d.ts +2 -2
  585. package/dist/types/graphs/Graph.d.ts +11 -11
  586. package/dist/types/graphs/MultiAgentGraph.d.ts +2 -2
  587. package/dist/types/graphs/createGraph.d.ts +4 -4
  588. package/dist/types/graphs/graphFactory.d.ts +1 -1
  589. package/dist/types/hitl/askUserQuestion.d.ts +1 -1
  590. package/dist/types/hitl/askUserQuestions.d.ts +1 -1
  591. package/dist/types/hitl/askUserQuestionsInterrupt.d.ts +1 -1
  592. package/dist/types/hooks/types.d.ts +1 -1
  593. package/dist/types/instrumentation.d.ts +1 -1
  594. package/dist/types/langfuse.d.ts +3 -3
  595. package/dist/types/langfuseConfig.d.ts +2 -2
  596. package/dist/types/langfuseRuntimeContext.d.ts +1 -1
  597. package/dist/types/langfuseRuntimeScope.d.ts +2 -2
  598. package/dist/types/langfuseSpanRegistry.d.ts +1 -1
  599. package/dist/types/langfuseToolOutputTracing.d.ts +3 -3
  600. package/dist/types/llm/anthropic/index.d.ts +1 -1
  601. package/dist/types/llm/bedrock/index.d.ts +1 -1
  602. package/dist/types/llm/bedrock/toolCache.d.ts +2 -2
  603. package/dist/types/llm/contextOverflowRecovery.d.ts +2 -2
  604. package/dist/types/llm/google/index.d.ts +1 -1
  605. package/dist/types/llm/init.d.ts +2 -2
  606. package/dist/types/llm/invoke.d.ts +6 -6
  607. package/dist/types/llm/mistral/index.d.ts +1 -1
  608. package/dist/types/llm/openai/index.d.ts +2 -2
  609. package/dist/types/llm/openrouter/index.d.ts +2 -2
  610. package/dist/types/llm/openrouter/toolCache.d.ts +2 -2
  611. package/dist/types/llm/providers.d.ts +2 -2
  612. package/dist/types/llm/request.d.ts +2 -2
  613. package/dist/types/llm/stream/chunkAdapters.d.ts +1 -1
  614. package/dist/types/llm/streamLimits.d.ts +1 -1
  615. package/dist/types/llm/truncation.d.ts +1 -1
  616. package/dist/types/llm/vertexai/index.d.ts +1 -1
  617. package/dist/types/messages/alternation.d.ts +1 -1
  618. package/dist/types/messages/anthropicToolCache.d.ts +2 -2
  619. package/dist/types/messages/assistantPhase.d.ts +3 -3
  620. package/dist/types/messages/budget.d.ts +1 -1
  621. package/dist/types/messages/cache.d.ts +1 -1
  622. package/dist/types/messages/contextPruning.d.ts +2 -2
  623. package/dist/types/messages/core.d.ts +2 -2
  624. package/dist/types/messages/format.d.ts +2 -2
  625. package/dist/types/messages/ids.d.ts +2 -2
  626. package/dist/types/messages/injected.d.ts +1 -1
  627. package/dist/types/messages/langchain.d.ts +1 -1
  628. package/dist/types/messages/prune.d.ts +3 -3
  629. package/dist/types/openai/index.d.ts +1 -1
  630. package/dist/types/prompts/activityLabel.d.ts +2 -2
  631. package/dist/types/responses/index.d.ts +1 -1
  632. package/dist/types/run.d.ts +3 -3
  633. package/dist/types/session/handlers.d.ts +1 -1
  634. package/dist/types/session/types.d.ts +1 -1
  635. package/dist/types/stream.d.ts +4 -4
  636. package/dist/types/summarization/index.d.ts +1 -1
  637. package/dist/types/summarization/node.d.ts +6 -6
  638. package/dist/types/test/mockTools.d.ts +1 -1
  639. package/dist/types/tools/BashExecutor.d.ts +2 -2
  640. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +2 -2
  641. package/dist/types/tools/CodeExecutor.d.ts +3 -3
  642. package/dist/types/tools/CodeSessionFileSummary.d.ts +1 -1
  643. package/dist/types/tools/ProgrammaticToolCalling.d.ts +2 -2
  644. package/dist/types/tools/ReadFile.d.ts +1 -1
  645. package/dist/types/tools/SkillTool.d.ts +1 -1
  646. package/dist/types/tools/SubagentTool.d.ts +3 -3
  647. package/dist/types/tools/ToolNode.d.ts +5 -5
  648. package/dist/types/tools/ToolSearch.d.ts +2 -2
  649. package/dist/types/tools/cloudflare/CloudflareBridgeRuntime.d.ts +1 -1
  650. package/dist/types/tools/cloudflare/CloudflareProgrammaticToolCalling.d.ts +1 -1
  651. package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +2 -2
  652. package/dist/types/tools/cloudflare/CloudflareSandboxTools.d.ts +1 -1
  653. package/dist/types/tools/eagerEventExecution.d.ts +1 -1
  654. package/dist/types/tools/handlers.d.ts +3 -3
  655. package/dist/types/tools/intentArg.d.ts +1 -1
  656. package/dist/types/tools/local/CompileCheckTool.d.ts +2 -2
  657. package/dist/types/tools/local/FileCheckpointer.d.ts +1 -1
  658. package/dist/types/tools/local/LocalCodingTools.d.ts +2 -2
  659. package/dist/types/tools/local/LocalExecutionEngine.d.ts +1 -1
  660. package/dist/types/tools/local/LocalExecutionTools.d.ts +1 -1
  661. package/dist/types/tools/local/LocalProgrammaticToolCalling.d.ts +1 -1
  662. package/dist/types/tools/local/bashAst.d.ts +1 -1
  663. package/dist/types/tools/local/resolveLocalExecutionTools.d.ts +1 -1
  664. package/dist/types/tools/local/syntaxCheck.d.ts +1 -1
  665. package/dist/types/tools/ptcTimeout.d.ts +1 -1
  666. package/dist/types/tools/schema.d.ts +1 -1
  667. package/dist/types/tools/search/anthropic.d.ts +1 -1
  668. package/dist/types/tools/skillCatalog.d.ts +1 -1
  669. package/dist/types/tools/subagent/SubagentExecutor.d.ts +5 -5
  670. package/dist/types/tools/subagent/SubagentReplay.d.ts +3 -3
  671. package/dist/types/tools/subagent/childGraphConfig.d.ts +2 -2
  672. package/dist/types/types/activityLabel.d.ts +3 -3
  673. package/dist/types/types/graph.d.ts +7 -7
  674. package/dist/types/types/llm.d.ts +9 -9
  675. package/dist/types/types/run.d.ts +7 -7
  676. package/dist/types/types/stream.d.ts +5 -5
  677. package/dist/types/types/summarize.d.ts +2 -2
  678. package/dist/types/types/tools.d.ts +5 -5
  679. package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +1 -1
  680. package/dist/types/utils/errors.d.ts +1 -1
  681. package/dist/types/utils/events.d.ts +1 -1
  682. package/dist/types/utils/handlers.d.ts +3 -3
  683. package/dist/types/utils/llm.d.ts +1 -1
  684. package/dist/types/utils/llmConfig.d.ts +1 -1
  685. package/dist/types/utils/title.d.ts +1 -1
  686. package/package.json +10 -3
  687. package/src/llm/google/utils/common.ts +6 -4
  688. package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
  689. package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
  690. package/src/__tests__/stream.streamLimits.test.ts +0 -1982
  691. package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
  692. package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
  693. package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
  694. package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
  695. package/src/agents/__tests__/AgentContext.test.ts +0 -2425
  696. package/src/agents/__tests__/projection.test.ts +0 -73
  697. package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
  698. package/src/aggregator.test.ts +0 -1214
  699. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
  700. package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
  701. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
  702. package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
  703. package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
  704. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
  705. package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
  706. package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
  707. package/src/graphs/__tests__/createGraph.test.ts +0 -206
  708. package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
  709. package/src/hooks/__tests__/compactHooks.test.ts +0 -250
  710. package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
  711. package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
  712. package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
  713. package/src/hooks/__tests__/integration.test.ts +0 -337
  714. package/src/hooks/__tests__/matchers.test.ts +0 -238
  715. package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
  716. package/src/hooks/__tests__/toolHooks.test.ts +0 -669
  717. package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
  718. package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
  719. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  720. package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
  721. package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
  722. package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
  723. package/src/llm/anthropic/llm.spec.ts +0 -3394
  724. package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
  725. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
  726. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
  727. package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
  728. package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
  729. package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
  730. package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
  731. package/src/llm/bedrock/inherited.spec.ts +0 -724
  732. package/src/llm/bedrock/llm.spec.ts +0 -1533
  733. package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
  734. package/src/llm/bedrock/toolCache.test.ts +0 -194
  735. package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
  736. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
  737. package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
  738. package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
  739. package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
  740. package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
  741. package/src/llm/google/data/gettysburg10.wav +0 -0
  742. package/src/llm/google/data/hotdog.jpg +0 -0
  743. package/src/llm/google/inherited-stream-events.spec.ts +0 -350
  744. package/src/llm/google/llm.spec.ts +0 -1388
  745. package/src/llm/google/streamSmoothing.test.ts +0 -121
  746. package/src/llm/google/utils/common.test.ts +0 -185
  747. package/src/llm/invoke.alternation.test.ts +0 -87
  748. package/src/llm/invoke.handoffCue.test.ts +0 -112
  749. package/src/llm/invoke.streamLimits.test.ts +0 -142
  750. package/src/llm/invoke.test.ts +0 -1198
  751. package/src/llm/mistral/streamSmoothing.test.ts +0 -97
  752. package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
  753. package/src/llm/openai/contentBlocks.test.ts +0 -381
  754. package/src/llm/openai/deepseek.test.ts +0 -747
  755. package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
  756. package/src/llm/openai/inherited-xai.spec.ts +0 -416
  757. package/src/llm/openai/llm.spec.ts +0 -1774
  758. package/src/llm/openai/managedRequests.test.ts +0 -182
  759. package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
  760. package/src/llm/openai/streamMetadata.spec.ts +0 -86
  761. package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
  762. package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
  763. package/src/llm/openai/utils/messages.test.ts +0 -488
  764. package/src/llm/openrouter/reasoning.test.ts +0 -561
  765. package/src/llm/openrouter/toolCache.test.ts +0 -134
  766. package/src/llm/preempt.test.ts +0 -323
  767. package/src/llm/stream/chunkAdapters.test.ts +0 -202
  768. package/src/llm/stream/reassembly.test.ts +0 -241
  769. package/src/llm/stream/smoother.bench.test.ts +0 -155
  770. package/src/llm/stream/smoother.test.ts +0 -519
  771. package/src/llm/streamLimits.test.ts +0 -450
  772. package/src/llm/truncation.test.ts +0 -242
  773. package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
  774. package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
  775. package/src/llm/vertexai/llm.spec.ts +0 -159
  776. package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
  777. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
  778. package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
  779. package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
  780. package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
  781. package/src/messages/__tests__/observationMasking.test.ts +0 -312
  782. package/src/messages/__tests__/recency.test.ts +0 -267
  783. package/src/messages/__tests__/tools.test.ts +0 -473
  784. package/src/messages/alternation.test.ts +0 -212
  785. package/src/messages/assistantPhase.test.ts +0 -75
  786. package/src/messages/cache.tail.test.ts +0 -533
  787. package/src/messages/cache.test.ts +0 -2166
  788. package/src/messages/content.test.ts +0 -362
  789. package/src/messages/contextPruning.test.ts +0 -184
  790. package/src/messages/ensureThinkingBlock.test.ts +0 -1427
  791. package/src/messages/foldToollessToolBlocks.test.ts +0 -596
  792. package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
  793. package/src/messages/formatAgentMessages.skills.test.ts +0 -513
  794. package/src/messages/formatAgentMessages.steer.test.ts +0 -598
  795. package/src/messages/formatAgentMessages.test.ts +0 -8111
  796. package/src/messages/formatAgentMessages.tools.test.ts +0 -522
  797. package/src/messages/formatMessage.test.ts +0 -693
  798. package/src/messages/handoffCue.test.ts +0 -96
  799. package/src/messages/injected.test.ts +0 -107
  800. package/src/messages/labelContentByAgent.test.ts +0 -962
  801. package/src/messages/reducer.spec.ts +0 -32
  802. package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
  803. package/src/messages/tailCacheConversion.test.ts +0 -161
  804. package/src/openai/__tests__/openai.test.ts +0 -337
  805. package/src/responses/__tests__/responses.test.ts +0 -652
  806. package/src/scripts/abort.ts +0 -157
  807. package/src/scripts/activity-labels/captured.json +0 -56
  808. package/src/scripts/activity-labels/checks.cjs +0 -205
  809. package/src/scripts/activity-labels/corpus.cjs +0 -473
  810. package/src/scripts/activity-labels/report.cjs +0 -203
  811. package/src/scripts/activity-labels/rescore.cjs +0 -102
  812. package/src/scripts/activity-labels/run.ts +0 -705
  813. package/src/scripts/activity-labels/variants.ts +0 -71
  814. package/src/scripts/ant_web_search.ts +0 -159
  815. package/src/scripts/ant_web_search_edge_case.ts +0 -163
  816. package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
  817. package/src/scripts/args.ts +0 -48
  818. package/src/scripts/bedrock-cache-debug.ts +0 -250
  819. package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
  820. package/src/scripts/bedrock-merge-test.ts +0 -107
  821. package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
  822. package/src/scripts/bench-prompt-cache.ts +0 -479
  823. package/src/scripts/caching.ts +0 -132
  824. package/src/scripts/cli.ts +0 -172
  825. package/src/scripts/cli2.ts +0 -133
  826. package/src/scripts/cli3.ts +0 -184
  827. package/src/scripts/cli4.ts +0 -191
  828. package/src/scripts/cli5.ts +0 -191
  829. package/src/scripts/code_exec.ts +0 -214
  830. package/src/scripts/code_exec_files.ts +0 -237
  831. package/src/scripts/code_exec_multi_session.ts +0 -237
  832. package/src/scripts/code_exec_ptc.ts +0 -335
  833. package/src/scripts/code_exec_session.ts +0 -283
  834. package/src/scripts/code_exec_simple.ts +0 -148
  835. package/src/scripts/compare_pi_vs_ours.ts +0 -1259
  836. package/src/scripts/content.ts +0 -139
  837. package/src/scripts/context-overflow-probe.ts +0 -997
  838. package/src/scripts/empty_input.ts +0 -137
  839. package/src/scripts/handoff-test.ts +0 -134
  840. package/src/scripts/local_engine.ts +0 -166
  841. package/src/scripts/local_engine_checkpointer.ts +0 -205
  842. package/src/scripts/local_engine_compile.ts +0 -263
  843. package/src/scripts/local_engine_hooks.ts +0 -226
  844. package/src/scripts/local_engine_image.ts +0 -201
  845. package/src/scripts/local_engine_ptc.ts +0 -151
  846. package/src/scripts/local_engine_workspace.ts +0 -258
  847. package/src/scripts/memory.ts +0 -107
  848. package/src/scripts/multi-agent-chain.ts +0 -332
  849. package/src/scripts/multi-agent-conditional.ts +0 -222
  850. package/src/scripts/multi-agent-document-review-chain.ts +0 -198
  851. package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
  852. package/src/scripts/multi-agent-parallel-start.ts +0 -265
  853. package/src/scripts/multi-agent-parallel.ts +0 -395
  854. package/src/scripts/multi-agent-sequence.ts +0 -217
  855. package/src/scripts/multi-agent-subagent.ts +0 -246
  856. package/src/scripts/multi-agent-supervisor.ts +0 -366
  857. package/src/scripts/multi-agent-test.ts +0 -187
  858. package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
  859. package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
  860. package/src/scripts/parallel-full-metadata-test.ts +0 -241
  861. package/src/scripts/parallel-tools-test.ts +0 -341
  862. package/src/scripts/preempt-probe.ts +0 -330
  863. package/src/scripts/preempt-scenarios.ts +0 -388
  864. package/src/scripts/programmatic_exec.ts +0 -387
  865. package/src/scripts/programmatic_exec_agent.ts +0 -232
  866. package/src/scripts/search.ts +0 -147
  867. package/src/scripts/sequential-full-metadata-test.ts +0 -198
  868. package/src/scripts/session_live.ts +0 -548
  869. package/src/scripts/simple.ts +0 -226
  870. package/src/scripts/single-agent-metadata-test.ts +0 -196
  871. package/src/scripts/stream.ts +0 -141
  872. package/src/scripts/subagent-configurable-inheritance.ts +0 -252
  873. package/src/scripts/subagent-event-driven-debug.ts +0 -190
  874. package/src/scripts/subagent-tools-debug.ts +0 -160
  875. package/src/scripts/subagent-usage-sink.ts +0 -176
  876. package/src/scripts/summarization-recency.ts +0 -462
  877. package/src/scripts/test-custom-prompt-key.ts +0 -145
  878. package/src/scripts/test-handoff-input.ts +0 -170
  879. package/src/scripts/test-handoff-preamble.ts +0 -278
  880. package/src/scripts/test-handoff-steering.ts +0 -430
  881. package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
  882. package/src/scripts/test-parallel-agent-labeling.ts +0 -327
  883. package/src/scripts/test-parallel-handoffs.ts +0 -292
  884. package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
  885. package/src/scripts/test-thinking-handoff.ts +0 -156
  886. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
  887. package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
  888. package/src/scripts/test-tools-before-handoff.ts +0 -222
  889. package/src/scripts/test_code_api.ts +0 -354
  890. package/src/scripts/thinking-bedrock.ts +0 -160
  891. package/src/scripts/thinking-vertexai.ts +0 -168
  892. package/src/scripts/thinking.ts +0 -172
  893. package/src/scripts/tool_search.ts +0 -153
  894. package/src/scripts/tools.ts +0 -163
  895. package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
  896. package/src/session/__tests__/handlers.test.ts +0 -161
  897. package/src/specs/activity-label-observability.live.test.ts +0 -262
  898. package/src/specs/activity-label-observability.test.ts +0 -167
  899. package/src/specs/activity-label-prompt.test.ts +0 -359
  900. package/src/specs/activity-label-trace-seed.test.ts +0 -47
  901. package/src/specs/activity-phase-label.test.ts +0 -306
  902. package/src/specs/agent-handoffs.live.test.ts +0 -140
  903. package/src/specs/agent-handoffs.test.ts +0 -2465
  904. package/src/specs/anthropic.simple.test.ts +0 -453
  905. package/src/specs/ask-user-question-batch.test.ts +0 -289
  906. package/src/specs/ask-user-questions.live.test.ts +0 -185
  907. package/src/specs/ask-user-questions.test.ts +0 -293
  908. package/src/specs/azure.simple.test.ts +0 -502
  909. package/src/specs/bedrock-toolless.live.test.ts +0 -123
  910. package/src/specs/bedrock-truncation.live.test.ts +0 -191
  911. package/src/specs/cache.simple.test.ts +0 -416
  912. package/src/specs/context-accuracy.live.test.ts +0 -409
  913. package/src/specs/context-overflow-recovery.live.test.ts +0 -213
  914. package/src/specs/context-usage-event.test.ts +0 -117
  915. package/src/specs/context-usage.live.test.ts +0 -297
  916. package/src/specs/custom-event-await.test.ts +0 -304
  917. package/src/specs/deepseek.simple.test.ts +0 -290
  918. package/src/specs/deterministic-trace-id.test.ts +0 -43
  919. package/src/specs/discovered-tools.test.ts +0 -217
  920. package/src/specs/durability-checkpoint.integration.test.ts +0 -243
  921. package/src/specs/graph-subagent.live.test.ts +0 -242
  922. package/src/specs/graph-subagent.test.ts +0 -322
  923. package/src/specs/handoffCue.test.ts +0 -165
  924. package/src/specs/langfuse-callbacks.test.ts +0 -1578
  925. package/src/specs/langfuse-config.test.ts +0 -247
  926. package/src/specs/langfuse-instrumentation.test.ts +0 -393
  927. package/src/specs/langfuse-metadata.test.ts +0 -245
  928. package/src/specs/langfuse-routing.integration.test.ts +0 -844
  929. package/src/specs/langfuse-runtime-context.test.ts +0 -92
  930. package/src/specs/langfuse-span-registry.test.ts +0 -87
  931. package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
  932. package/src/specs/langfuse-trace-shaping.test.ts +0 -591
  933. package/src/specs/moonshot.simple.test.ts +0 -367
  934. package/src/specs/multi-agent-summarization.test.ts +0 -396
  935. package/src/specs/openai.simple.test.ts +0 -315
  936. package/src/specs/openrouter.simple.test.ts +0 -275
  937. package/src/specs/preemptSeal.test.ts +0 -678
  938. package/src/specs/prune.test.ts +0 -3741
  939. package/src/specs/reasoning.test.ts +0 -201
  940. package/src/specs/run-step-timestamps.test.ts +0 -414
  941. package/src/specs/spec.utils.ts +0 -15
  942. package/src/specs/subagent.test.ts +0 -864
  943. package/src/specs/summarization-unit.test.ts +0 -973
  944. package/src/specs/summarization.test.ts +0 -3823
  945. package/src/specs/summarize-prune.test.ts +0 -376
  946. package/src/specs/thinking-handoff.test.ts +0 -621
  947. package/src/specs/thinking-prune.test.ts +0 -827
  948. package/src/specs/token-accounting-e2e.test.ts +0 -1034
  949. package/src/specs/token-accounting-pipeline.test.ts +0 -1008
  950. package/src/specs/token-distribution-edge-case.test.ts +0 -315
  951. package/src/specs/token-memoization.test.ts +0 -40
  952. package/src/specs/tokens.test.ts +0 -1000
  953. package/src/specs/tool-error-resume.test.ts +0 -194
  954. package/src/specs/tool-error.test.ts +0 -198
  955. package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
  956. package/src/stream.dispatch.test.ts +0 -63
  957. package/src/stream.test.ts +0 -144
  958. package/src/summarization/__tests__/aggregator.test.ts +0 -236
  959. package/src/summarization/__tests__/node.test.ts +0 -1996
  960. package/src/summarization/__tests__/trigger.test.ts +0 -149
  961. package/src/summarization/chunkHandler.test.ts +0 -196
  962. package/src/test/mockTools.ts +0 -386
  963. package/src/tools/Calculator.test.ts +0 -278
  964. package/src/tools/__tests__/BashExecutor.test.ts +0 -108
  965. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
  966. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
  967. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
  968. package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
  969. package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
  970. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
  971. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
  972. package/src/tools/__tests__/ReadFile.test.ts +0 -44
  973. package/src/tools/__tests__/SkillTool.test.ts +0 -442
  974. package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
  975. package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
  976. package/src/tools/__tests__/SubagentTool.test.ts +0 -149
  977. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
  978. package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
  979. package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
  980. package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
  981. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
  982. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
  983. package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
  984. package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
  985. package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
  986. package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
  987. package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
  988. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
  989. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
  990. package/src/tools/__tests__/directToolHooks.test.ts +0 -700
  991. package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
  992. package/src/tools/__tests__/handlers.test.ts +0 -997
  993. package/src/tools/__tests__/hitl.test.ts +0 -4663
  994. package/src/tools/__tests__/intentArg.test.ts +0 -357
  995. package/src/tools/__tests__/intentCoverage.test.ts +0 -139
  996. package/src/tools/__tests__/localToolNames.test.ts +0 -75
  997. package/src/tools/__tests__/skillCatalog.test.ts +0 -161
  998. package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
  999. package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
  1000. package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
  1001. package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
  1002. package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
  1003. package/src/tools/search/content.test.ts +0 -173
  1004. package/src/tools/search/crw.test.ts +0 -836
  1005. package/src/tools/search/format.test.ts +0 -242
  1006. package/src/tools/search/http-agent.test.ts +0 -133
  1007. package/src/tools/search/jina-reranker.test.ts +0 -306
  1008. package/src/tools/search/keenable-scraper.test.ts +0 -153
  1009. package/src/tools/search/keenable.test.ts +0 -183
  1010. package/src/tools/search/outcome.test.ts +0 -90
  1011. package/src/tools/search/output.md +0 -2775
  1012. package/src/tools/search/rag-api-reranker.test.ts +0 -891
  1013. package/src/tools/search/source-processing.test.ts +0 -516
  1014. package/src/tools/search/tavily.test.ts +0 -965
  1015. package/src/tools/search/test.html +0 -884
  1016. package/src/tools/search/test.md +0 -643
  1017. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
  1018. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
  1019. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
  1020. package/src/utils/__tests__/apportion.test.ts +0 -32
  1021. package/src/utils/__tests__/errors.test.ts +0 -270
  1022. package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
  1023. package/src/utils/__tests__/redactSecrets.test.ts +0 -56
  1024. package/src/utils/__tests__/truncation.test.ts +0 -66
  1025. package/src/utils/llm.test.ts +0 -18
  1026. package/src/utils/proxy.test.ts +0 -176
  1027. package/src/utils/toolContent.test.ts +0 -1432
@@ -1 +1 @@
1
- {"version":3,"file":"streamLimits.cjs","names":["getStreamedToolCallSeal"],"sources":["../../../src/llm/streamLimits.ts"],"sourcesContent":["// src/llm/streamLimits.ts\nimport type { ToolCallChunk } from '@langchain/core/messages/tool';\nimport type * as t from '@/types';\nimport { getStreamedToolCallSeal } from '@/tools/streamedToolCallSeals';\n\n/**\n * Circuit breakers for pathological model streams.\n *\n * A malformed generation can stream a single tool call's arguments for many\n * minutes at the provider's full token rate while the arguments never become\n * executable (observed live: one 149,923-char SQL argument streamed for 26\n * minutes before the 64k output-token ceiling finally ended the run). These\n * guards fail fast instead: when a limit trips, the stream handler throws\n * `StreamLimitExceededError` out of the run's `streamEvents` loop, which\n * tears down the in-flight provider request where it stands (see the\n * mid-flight halt notes in `Run.processStream`: leaving the loop cancels the\n * reader and langgraph aborts the model call).\n */\n\n/** Default cap on a single streamed tool call's cumulative argument bytes (64 KiB). */\nexport const DEFAULT_MAX_TOOL_CALL_ARG_BYTES = 65_536;\n\n/** Limits normalized by {@link resolveStreamLimits}; `0` uniformly means disabled. */\nexport interface ResolvedStreamLimits {\n maxToolCallArgBytes: number;\n /** Per-tool overrides of the byte cap, keyed by model-facing tool name. */\n maxToolCallArgBytesByTool?: Readonly<Record<string, number>>;\n maxDeltaEventsPerTurn: number;\n /** Precomputed once: whether ANY argument byte limit can fire. False when\n * the global cap is disabled and every per-tool entry is a zero-valued\n * disable — accounting must not allocate for guards that judge nothing. */\n hasEnforceableToolCallArgLimit: boolean;\n}\n\n/** Cumulative streamed argument bytes for one in-flight tool call. */\nexport interface StreamedToolCallArgTally {\n bytes: number;\n name?: string;\n /** The graph's breaker epoch when this tally was created. Entries from\n * the epoch that is ending survive one `resetValues` sweep, so producer\n * loops of straggling attempts — which are not behind the consumer-only\n * epoch gate — stay on their original budgets instead of receiving a\n * fresh allowance at every run start. */\n epoch?: number;\n /** Every tally-map key this tally is registered under: its primary key\n * (which can migrate through identifier transitions), the batch-position\n * fallback for id-bearing chunks, and the id for chunks carrying both\n * identifiers. Release deletes all of them — a call sealed through one\n * identity must not leave entries behind under another. */\n keys?: string[];\n /**\n * True when the previous chunk ended on an unpaired UTF-16 high surrogate.\n * Counting each half of a split surrogate pair alone yields 3 bytes per\n * half (the replacement-character encoding) versus 4 for the pair, so the\n * next chunk starting with the low surrogate reconciles by subtracting 2.\n */\n pendingHighSurrogate?: boolean;\n}\n\n/** Immutable snapshot of one run's breaker identity. Captured at\n * model/event/tool-batch entry and revalidated by REFERENCE after awaits —\n * one identity comparison proves no reset interleaved. */\nexport interface RunBreakerScope {\n readonly epoch: number;\n readonly controller: AbortController;\n}\n\n/** Streamed chunk events counted against one generation's event cap. */\nexport interface StreamDeltaEventTally {\n count: number;\n /** Creation-epoch tag, same grace semantics as\n * {@link StreamedToolCallArgTally.epoch}. */\n epoch?: number;\n}\n\n/**\n * The graph-owned state the guards read and write. Structural on purpose:\n * handler-level tests stub graphs with plain objects, and the guards lazily\n * create the tally maps so partial stubs need no extra setup.\n */\nexport interface StreamLimitState {\n streamLimits?: ResolvedStreamLimits;\n streamedToolCallArgTallies?: Map<string, StreamedToolCallArgTally>;\n streamDeltaEventCounts?: Map<string, StreamDeltaEventTally>;\n /** The graph's live breaker epoch; new accounting entries are tagged with\n * it so `resetValues` can sweep by age instead of clearing outright. */\n breakerEpoch?: number;\n /** Generation keys of model attempts still in flight. Each attempt leases\n * its generation at entry and releases it (with its accounting entries)\n * from its `finally`, so retention follows ATTEMPT LIFETIME — a\n * cancellation-ignoring straggler keeps its original budget no matter how\n * many runs start and reset while it drains. */\n activeStreamLimitGenerations?: Set<string>;\n /** Per-chunk-object, per-generation charge balance: producer visits\n * increment, consumer (handler echo) visits decrement, and a visit only\n * charges when the other side has not pre-charged the same emission.\n * Count-balancing rather than a lifetime set, because a streaming model\n * may mutate and re-yield the same chunk object; scoped by generation so\n * parallel generations sharing one reused object cannot cancel each\n * other's charges. */\n streamLimitChargeCredits?: WeakMap<object, Map<string, number>>;\n}\n\nfunction resolveLimit(value: number | undefined, fallback: number): number {\n if (value == null || Number.isNaN(value)) {\n return fallback;\n }\n if (!Number.isFinite(value)) {\n return 0;\n }\n const whole = Math.floor(value);\n return whole > 0 ? whole : 0;\n}\n\n/**\n * Normalizes host-supplied limits once at graph construction. `undefined`\n * applies the default for each guard (the tool-argument byte cap is ON by\n * default, the per-turn event cap is opt-in), `0` and negative values\n * disable a guard, `Infinity` means \"no limit\" and also disables, and `NaN`\n * falls back to the default.\n */\nexport function resolveStreamLimits(\n limits?: t.StreamLimits\n): ResolvedStreamLimits {\n const maxToolCallArgBytes = resolveLimit(\n limits?.maxToolCallArgBytes,\n DEFAULT_MAX_TOOL_CALL_ARG_BYTES\n );\n let maxToolCallArgBytesByTool: Record<string, number> | undefined;\n if (limits?.maxToolCallArgBytesByTool != null) {\n for (const [name, value] of Object.entries(\n limits.maxToolCallArgBytesByTool\n )) {\n /** An unusable entry (NaN) falls back to the global cap by omission,\n * matching how the global field treats NaN. */\n if (name === '' || Number.isNaN(value)) {\n continue;\n }\n /** Prototype-free: bracket-assigning a `__proto__` tool name into a\n * plain object invokes the prototype setter instead of creating an own\n * property, silently dropping that tool's configured override. */\n maxToolCallArgBytesByTool ??= Object.create(null) as Record<\n string,\n number\n >;\n maxToolCallArgBytesByTool[name] = resolveLimit(\n value,\n maxToolCallArgBytes\n );\n }\n }\n const hasEnforceableToolCallArgLimit =\n maxToolCallArgBytes > 0 ||\n (maxToolCallArgBytesByTool != null &&\n Object.values(maxToolCallArgBytesByTool).some((value) => value > 0));\n return {\n maxToolCallArgBytes,\n ...(maxToolCallArgBytesByTool != null && { maxToolCallArgBytesByTool }),\n maxDeltaEventsPerTurn: resolveLimit(limits?.maxDeltaEventsPerTurn, 0),\n hasEnforceableToolCallArgLimit,\n };\n}\n\nconst DEFAULT_RESOLVED_LIMITS: ResolvedStreamLimits = resolveStreamLimits();\n\nexport type StreamLimitKind = 'tool_call_args' | 'delta_events';\n\nfunction buildLimitMessage(\n kind: StreamLimitKind,\n limit: number,\n toolName?: string\n): string {\n if (kind === 'tool_call_args') {\n const named =\n toolName != null && toolName !== '' ? ` (tool call: ${toolName})` : '';\n return (\n `Streamed tool call arguments exceeded the ${limit}-byte safety limit${named}. ` +\n 'The generation was aborted mid-stream: arguments growing this large without completing ' +\n 'usually indicate a runaway or malformed tool call. Raise \\'maxToolCallArgBytes\\' (or the ' +\n 'tool\\'s \\'maxToolCallArgBytesByTool\\' entry) if your tools legitimately need larger arguments.'\n );\n }\n return (\n `Model stream exceeded the ${limit}-event safety limit for a single generation turn. ` +\n 'The generation was aborted mid-stream: this usually indicates a looping or duplicated ' +\n 'provider stream. Raise \\'maxDeltaEventsPerTurn\\' if legitimate generations need more stream events.'\n );\n}\n\n/**\n * Raised when a {@link t.StreamLimits} guard trips. Thrown from inside the\n * run's `streamEvents` loop, so the in-flight provider request is torn down\n * and `processStream` rejects with this error.\n */\nexport class StreamLimitExceededError extends Error {\n readonly kind: StreamLimitKind;\n readonly limit: number;\n readonly observed: number;\n readonly toolName?: string;\n\n constructor({\n kind,\n limit,\n observed,\n toolName,\n }: {\n kind: StreamLimitKind;\n limit: number;\n observed: number;\n toolName?: string;\n }) {\n super(buildLimitMessage(kind, limit, toolName));\n this.name = 'StreamLimitExceededError';\n this.kind = kind;\n this.limit = limit;\n this.observed = observed;\n this.toolName = toolName;\n }\n}\n\n/**\n * Identity of one model generation, derived from langgraph's node-execution\n * metadata. Deliberately NOT `Graph.getStepKey()`: the step key forks within\n * a single generation on reasoning transitions (`'reasoning'` /\n * `post-reasoning-<n>` suffixes in `getKeyList`) and on mid-turn server-tool\n * results (`invokedToolIds` count), which would hand a fresh budget to each\n * segment. One agent-node execution is one superstep, so\n * `checkpoint_ns + node + step` stays stable for the whole generation and\n * distinguishes parallel agents in the same superstep.\n *\n * The attempt stamp scopes attempts within one node execution:\n * `attemptInvoke` is the single funnel for primary, fallback, and\n * summarization model calls and stamps {@link STREAM_LIMIT_ATTEMPT_KEY}\n * with a unique sequence number into each attempt's callback metadata. A\n * fallback's chunks therefore key separately from the failed primary's,\n * even for two fallbacks configured with the same provider and model name,\n * and even when the decoupled `streamEvents` reader drains a failed\n * attempt's buffered chunks late. Those late chunks land in their own\n * attempt's bucket instead of polluting the next one's.\n */\nexport function resolveGenerationKey(\n metadata: Record<string, unknown> | undefined\n): string {\n if (metadata == null) {\n return '';\n }\n const checkpointNs = metadata.langgraph_checkpoint_ns ?? '';\n const node = metadata.langgraph_node ?? '';\n const step = metadata.langgraph_step ?? '';\n const attempt = metadata[STREAM_LIMIT_ATTEMPT_KEY] ?? '';\n return `${checkpointNs}|${node}|${step}|${attempt}`;\n}\n\n/**\n * Metadata key carrying the unique per-model-attempt sequence number that\n * `attemptInvoke` stamps into every attempt's callback metadata. Part of\n * the generation key so budgets never alias across attempts.\n */\nexport const STREAM_LIMIT_ATTEMPT_KEY = 'lc_stream_limit_attempt';\n\n/**\n * Event-metadata marker for a chunk the SDK re-dispatches inline after\n * transforming it (`attemptInvoke`'s OpenRouter final-reasoning replay). The\n * original wire chunk still reaches the handler through `streamEvents` and\n * is counted there, so the re-dispatch must not consume a second\n * event-budget slot.\n */\nexport const STREAM_LIMIT_REDISPATCH_KEY = 'lc_stream_limit_redispatch';\n\n/**\n * Metadata key carrying the graph's breaker epoch at the time a model\n * attempt started. The stream handler trips the shared breaker only when\n * the event's epoch matches the live controller's — a straggling chunk from\n * a failed run that outlived `resetValues()` must fail its own (dead) run,\n * not abort the controller now serving the next one. A primitive rather\n * than the controller itself so attempt metadata stays serialization-safe\n * for tracing.\n */\nexport const STREAM_LIMIT_EPOCH_KEY = 'lc_stream_limit_epoch';\n\n/**\n * Configurable key carrying the tool batch's entry-captured\n * {@link RunBreakerScope} to tools that spawn their own runs (subagents).\n * Captured BEFORE PreToolUse hooks, so a reset during a hook cannot rebind\n * the spawned child to the new run's controller. Stripped from host-facing\n * batch requests and from child-graph configurables.\n */\nexport const RUN_BREAKER_SCOPE_CONFIG_KEY = 'lc_run_breaker_scope';\n\n/**\n * True when the event's `single` seal marks this chunk's own call as\n * complete. On the OpenAI Responses adapter the sealing chunk RESTATES the\n * full argument string (`response.function_call_arguments.done`), so summing\n * it would double-count every legitimate call; on Bedrock Converse the\n * sealing chunk carries empty args. Either way the call is finished: its\n * tally is replaced by the sealing chunk's own bytes, checked, and released.\n */\nfunction sealsChunk(\n seal: ReturnType<typeof getStreamedToolCallSeal>,\n chunk: ToolCallChunk\n): boolean {\n if (seal == null || seal.kind !== 'single') {\n return false;\n }\n /** Either supplied identifier agreeing is sufficient (matching the\n * eager-call seal handling in stream.ts): a mismatch on one identifier\n * must not veto a match on the other, or an OpenAI-style full-argument\n * restatement gets ADDED to the tally instead of replacing it, and an\n * empty seal leaves the tally unreleased. */\n if (\n seal.index != null &&\n chunk.index != null &&\n seal.index === chunk.index\n ) {\n return true;\n }\n const sealId = seal.id != null && seal.id !== '' ? seal.id : undefined;\n return sealId != null && sealId === chunkCallId(chunk);\n}\n\nfunction chunkToolName(chunk: ToolCallChunk): string | undefined {\n return chunk.name != null && chunk.name !== '' ? chunk.name : undefined;\n}\n\n/** The chunk's id with empty-string placeholders treated as absent —\n * OpenAI-compatible adapters emit `id: ''` on continuation deltas, and a\n * shared placeholder must not merge independent calls onto one identity\n * (mirrors `getEagerToolChunkKey`). */\nfunction chunkCallId(chunk: ToolCallChunk): string | undefined {\n return chunk.id != null && chunk.id !== '' ? chunk.id : undefined;\n}\n\nfunction isHighSurrogate(code: number): boolean {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isLowSurrogate(code: number): boolean {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n\n/**\n * Accumulates the UTF-8 byte size of streamed tool-call argument chunks per\n * in-flight tool call and throws once a single call's cumulative bytes\n * exceed `maxToolCallArgBytes`. Runs once per streamed chunk event, before\n * complete tool calls are dispatched or eagerly executed and before chunks\n * are recorded, so a tripped limit stops the run without dispatching the\n * offending call.\n *\n * Calls are keyed by generation and chunk `index`, falling back to the\n * chunk `id` and then to the chunk's position within the event's batch when\n * a provider identifies chunks by neither (Google emits complete parallel\n * calls with optional ids and no index). A `kind: 'all'` arrival seal marks\n * every chunk in the event as its own complete call, so those are checked\n * standalone and never share a budget; a matching `kind: 'single'` seal\n * replaces the call's tally with the sealing chunk's own bytes (the OpenAI\n * Responses done-chunk restates the full argument string) and releases it.\n */\nexport function enforceStreamedToolCallArgLimit({\n graph,\n metadata,\n toolCallChunks,\n responseMetadata,\n parsedToolCalls,\n}: {\n graph: StreamLimitState;\n metadata: Record<string, unknown> | undefined;\n toolCallChunks: ToolCallChunk[];\n responseMetadata?: Record<string, unknown>;\n /** Complete parsed calls from the same event, used to name anonymous raw\n * chunks so per-tool overrides are honored before the global cap trips. */\n parsedToolCalls?: CompleteToolCallLike[];\n}): void {\n const resolved = graph.streamLimits ?? DEFAULT_RESOLVED_LIMITS;\n const globalLimit = resolved.maxToolCallArgBytes;\n const byTool = resolved.maxToolCallArgBytesByTool;\n if (!resolved.hasEnforceableToolCallArgLimit) {\n return;\n }\n /** An inline re-dispatch of a transformed chunk (OpenRouter final-reasoning\n * replay) duplicates tool-call chunks the original `streamEvents` event\n * already charged — the original always survives the content-specific\n * skips when it carries tool calls, so counting the marked copy would\n * double every legitimate argument byte. */\n if (metadata?.[STREAM_LIMIT_REDISPATCH_KEY] === true) {\n return;\n }\n const tallies: Map<string, StreamedToolCallArgTally> =\n (graph.streamedToolCallArgTallies ??= new Map<\n string,\n StreamedToolCallArgTally\n >());\n const generationKey = resolveGenerationKey(metadata);\n const seal = getStreamedToolCallSeal(responseMetadata);\n /** The complete call in this event sharing the chunk's id — the strongest\n * name evidence: adapters may stream raw names in FRAGMENTS, and an\n * id-correlated complete call states the full name outright. */\n const correlateParsedNameById = (id: string): string | undefined => {\n if (parsedToolCalls == null) {\n return undefined;\n }\n for (const parsed of parsedToolCalls) {\n if (parsed.id === id && parsed.name != null && parsed.name !== '') {\n return parsed.name;\n }\n }\n return undefined;\n };\n const generationPrefix = `${generationKey}:`;\n const getLiveGenerationTallies = (): StreamedToolCallArgTally[] => {\n const live = new Set<StreamedToolCallArgTally>();\n for (const [tallyKey, tally] of tallies) {\n if (tallyKey.startsWith(generationPrefix)) {\n live.add(tally);\n }\n }\n return [...live];\n };\n const resolveChunkName = (chunk: ToolCallChunk): string | undefined => {\n const chunkId = chunkCallId(chunk);\n const correlated =\n chunkId != null ? correlateParsedNameById(chunkId) : undefined;\n if (correlated != null) {\n return correlated;\n }\n const name = chunkToolName(chunk);\n if (name != null || parsedToolCalls == null || chunkId != null) {\n return name;\n }\n /** No id to correlate on; positional association is unambiguous only\n * when the event carries exactly one raw chunk AND one parsed call —\n * with several id-less raw chunks in flight, handing one parsed call's\n * name (and its override) to all of them would let an unrelated\n * still-partial call bypass the global cap. */\n if (parsedToolCalls.length === 1 && toolCallChunks.length === 1) {\n const only = parsedToolCalls[0];\n if (only.name != null && only.name !== '') {\n return only.name;\n }\n }\n return undefined;\n };\n const enforceTallyLimit = (target: StreamedToolCallArgTally): void => {\n const tallyLimit =\n byTool != null &&\n target.name != null &&\n Object.hasOwn(byTool, target.name)\n ? byTool[target.name]\n : globalLimit;\n if (tallyLimit > 0 && target.bytes > tallyLimit) {\n throw new StreamLimitExceededError({\n kind: 'tool_call_args',\n limit: tallyLimit,\n observed: target.bytes,\n toolName: target.name,\n });\n }\n };\n for (let i = 0; i < toolCallChunks.length; i++) {\n const chunk = toolCallChunks[i];\n const args = chunk.args;\n const hasArgs = typeof args === 'string' && args !== '';\n if (seal?.kind === 'all') {\n if (!hasArgs) {\n continue;\n }\n const bytes = Buffer.byteLength(args, 'utf8');\n const sealedName = resolveChunkName(chunk);\n const limit =\n byTool != null && sealedName != null && Object.hasOwn(byTool, sealedName)\n ? byTool[sealedName]\n : globalLimit;\n if (limit > 0 && bytes > limit) {\n throw new StreamLimitExceededError({\n kind: 'tool_call_args',\n limit,\n observed: bytes,\n toolName: sealedName,\n });\n }\n continue;\n }\n /** Keys are namespaced by identity kind (`i:` index, `c:` id, `#`\n * batch position) so an index and a string id with the same textual\n * value — index 0 and id \"0\" — cannot alias distinct calls onto one\n * tally. Empty-string ids are placeholders, not identities. */\n const chunkId = chunkCallId(chunk);\n const sealed = sealsChunk(seal, chunk);\n /** Applies this chunk's name contribution and reports whether the\n * effective name changed. Adapters may stream the name in FRAGMENTS\n * (\"create_\" then \"file\"), so unsealed fragments append — matching\n * langchain's own tool-call-chunk merge — while a sealing chunk's name\n * is a full restatement and replaces, mirroring how sealed args replace\n * the tally bytes. An id-correlated complete call in the same event\n * outranks both; positional parsed-call correlation fills in only when\n * the chunk carries no fragment. */\n const applyChunkName = (target: StreamedToolCallArgTally): boolean => {\n const correlated =\n chunkId != null ? correlateParsedNameById(chunkId) : undefined;\n const fragment = chunkToolName(chunk);\n let next = target.name;\n if (correlated != null) {\n /** An id-correlated complete call wins over fragment accumulation:\n * a raw name like \"create_\" must not hide the \"create_file\"\n * override behind the global cap. */\n next = correlated;\n } else if (fragment != null) {\n if (sealed || target.name == null) {\n next = fragment;\n } else if (fragment !== target.name) {\n /** A fragment identical to the accumulated name is a repeated\n * full-name delta (a common provider shape) and is a no-op; a\n * differing fragment is a continuation and appends. */\n next = target.name + fragment;\n }\n } else if (target.name == null) {\n next = resolveChunkName(chunk);\n }\n if (next === target.name) {\n return false;\n }\n target.name = next;\n return true;\n };\n /** A single identifier-less event while calls are live is a sparse\n * parallel continuation: its position is relative to this event, not to\n * the original batch, so `#0` cannot identify which call it belongs to.\n * With exactly one live call the association is unambiguous — charge\n * that tally, keeping its budget continuous (a fresh `#0` tally here\n * would RESET the sole remaining call's byte budget). With several,\n * charge every live candidate. Each tally is judged under its OWN\n * name-specific limit: comparing only against the global cap would let\n * a call with a lower per-tool override stream past it indefinitely\n * while its chunks stay anonymous. */\n if (\n chunk.index == null &&\n chunkId == null &&\n toolCallChunks.length === 1\n ) {\n const liveTallies = getLiveGenerationTallies();\n if (liveTallies.length > 0) {\n if (liveTallies.length === 1 && applyChunkName(liveTallies[0])) {\n /** A late name can select a lower override than the limit under\n * which prior bytes were accepted, so re-judge before charging\n * this continuation. */\n enforceTallyLimit(liveTallies[0]);\n }\n if (hasArgs) {\n const argBytes = Buffer.byteLength(args, 'utf8');\n for (const liveTally of liveTallies) {\n const reconcilesSplitPair =\n liveTally.pendingHighSurrogate === true &&\n isLowSurrogate(args.charCodeAt(0));\n liveTally.bytes += reconcilesSplitPair ? argBytes - 2 : argBytes;\n liveTally.pendingHighSurrogate = isHighSurrogate(\n args.charCodeAt(args.length - 1)\n );\n enforceTallyLimit(liveTally);\n }\n }\n continue;\n }\n }\n let key: string;\n if (chunk.index != null) {\n key = `${generationKey}:i:${chunk.index}`;\n } else if (chunkId != null) {\n key = `${generationKey}:c:${chunkId}`;\n } else {\n key = `${generationKey}:#${i}`;\n }\n /** Batch position is a stable identity only when the event carries a\n * single chunk: sparse parallel events reuse position 0 for whichever\n * call happens to continue, and a position alias would hand one call's\n * tally — and its per-tool override — to another live call's deltas. */\n const positionAliasSafe = toolCallChunks.length === 1;\n /** Secondary keys this call is also reachable under, so a later delta\n * that drops one or both identifiers still lands on the same tally:\n * id-bearing chunks register the batch-position fallback (single-chunk\n * events only), and chunks carrying both identifiers additionally\n * register the id. */\n const aliasCandidates: string[] = [];\n if (chunkId != null) {\n if (positionAliasSafe) {\n aliasCandidates.push(`${generationKey}:#${i}`);\n }\n if (chunk.index != null) {\n aliasCandidates.push(`${generationKey}:c:${chunkId}`);\n }\n }\n let tally = tallies.get(key);\n /** A later delta can also ADD an identifier, changing the primary key;\n * adopt the call's existing tally through a stronger prior identity\n * before allocating. An index maps to that call's original batch\n * position, never this sparse event's position. A newly arrived id can\n * adopt a position only when one anonymous tally is live; with several,\n * positional association is ambiguous. The old identity is recorded as\n * an alias and released together with the rest. */\n if (tally == null) {\n const adoptionCandidates: string[] = [];\n if (chunkId != null) {\n adoptionCandidates.push(`${generationKey}:c:${chunkId}`);\n }\n if (chunk.index != null) {\n /** An index is stable across sparse events; the loop position is\n * merely this event's position and may be 0 for call index 1. */\n const indexedPositionKey = `${generationKey}:#${chunk.index}`;\n adoptionCandidates.push(indexedPositionKey);\n /** A single anonymous call may first appear alone at event position\n * #0 and reveal a nonzero provider index only later. Exact indexed\n * position wins above; when it does not exist, one anonymous tally\n * is still an unambiguous fallback. */\n const liveTallies = getLiveGenerationTallies();\n const soleTally = liveTallies.length === 1 ? liveTallies[0] : undefined;\n if (\n soleTally?.keys?.[0]?.startsWith(`${generationPrefix}#`) === true\n ) {\n const anonymousKey = soleTally.keys[0];\n if (anonymousKey !== indexedPositionKey) {\n adoptionCandidates.push(anonymousKey);\n }\n }\n } else if (chunkId != null) {\n const anonymousTallies = getLiveGenerationTallies().filter(\n (liveTally: StreamedToolCallArgTally) =>\n liveTally.keys?.[0]?.startsWith(`${generationPrefix}#`) === true\n );\n if (anonymousTallies.length === 1) {\n const anonymousKey = anonymousTallies[0].keys?.[0];\n if (anonymousKey != null) {\n adoptionCandidates.push(anonymousKey);\n }\n }\n }\n for (const adoptionKey of adoptionCandidates) {\n if (adoptionKey === key) {\n continue;\n }\n const existing = tallies.get(adoptionKey);\n if (existing == null) {\n continue;\n }\n /** A position entry may only be adopted when the tally was CREATED\n * anonymous (its first key is the position): id-bearing calls also\n * alias their position, and adopting a live parallel call's alias\n * would merge distinct budgets. */\n if (\n adoptionKey.includes(':#') &&\n existing.keys?.[0] !== adoptionKey\n ) {\n continue;\n }\n tally = existing;\n tallies.set(key, existing);\n if (existing.keys?.includes(adoptionKey) !== true) {\n (existing.keys ??= []).push(adoptionKey);\n }\n if (!existing.keys.includes(key)) {\n existing.keys.push(key);\n }\n break;\n }\n }\n const registerAliasKeys = (\n target: StreamedToolCallArgTally,\n candidates: string[]\n ): void => {\n for (const aliasKey of candidates) {\n const currentOwner = tallies.get(aliasKey);\n if (currentOwner === target) {\n continue;\n }\n /** Parallel calls can contend for one batch position, so the newest\n * live call takes the alias over and the previous owner is disowned\n * — its seal must not delete a key it no longer holds. */\n if (currentOwner?.keys != null) {\n const remaining = currentOwner.keys.filter(\n (ownedKey: string) => ownedKey !== aliasKey\n );\n currentOwner.keys = remaining.length > 0 ? remaining : undefined;\n }\n tallies.set(aliasKey, target);\n (target.keys ??= []).push(aliasKey);\n }\n };\n const registerAliases = (target: StreamedToolCallArgTally): void => {\n registerAliasKeys(target, aliasCandidates);\n };\n /** Index-only calls register their batch position ONCE, at creation:\n * later deltas that drop the index then land on the same tally, while\n * the per-delta hot path (indexed id-less deltas) stays free of alias\n * work. */\n const registerCreationPositionAlias = (\n target: StreamedToolCallArgTally\n ): void => {\n if (chunkId != null || chunk.index == null || sealed) {\n return;\n }\n if (!positionAliasSafe) {\n return;\n }\n registerAliasKeys(target, [`${generationKey}:#${i}`]);\n };\n const releaseTally = (target: StreamedToolCallArgTally): void => {\n tallies.delete(key);\n if (target.keys == null) {\n return;\n }\n for (const aliasKey of target.keys) {\n if (tallies.get(aliasKey) === target) {\n tallies.delete(aliasKey);\n }\n }\n };\n if (!hasArgs) {\n if (tally == null) {\n if (!sealed) {\n tally = {\n bytes: 0,\n name: resolveChunkName(chunk),\n keys: [key],\n epoch: graph.breakerEpoch,\n };\n tallies.set(key, tally);\n registerAliases(tally);\n registerCreationPositionAlias(tally);\n }\n continue;\n }\n /** A sealing chunk is about to release this tally; taking the position\n * alias here would steal it from a still-live parallel call. */\n if (!sealed) {\n registerAliases(tally);\n }\n if (applyChunkName(tally)) {\n /** Bytes tallied under the previous (or absent) name were held\n * against that name's limit; a changed name — late arrival or a\n * completed fragment — must re-judge them, including on a sealing\n * chunk about to release the tally. */\n enforceTallyLimit(tally);\n }\n if (sealed) {\n releaseTally(tally);\n }\n continue;\n }\n if (tally == null) {\n tally = { bytes: 0, keys: [key], epoch: graph.breakerEpoch };\n tallies.set(key, tally);\n registerCreationPositionAlias(tally);\n }\n if (!sealed) {\n registerAliases(tally);\n }\n applyChunkName(tally);\n const argBytes = Buffer.byteLength(args, 'utf8');\n if (sealed) {\n tally.bytes = argBytes;\n } else {\n const reconcilesSplitPair =\n tally.pendingHighSurrogate === true &&\n isLowSurrogate(args.charCodeAt(0));\n tally.bytes += reconcilesSplitPair ? argBytes - 2 : argBytes;\n }\n tally.pendingHighSurrogate =\n !sealed && isHighSurrogate(args.charCodeAt(args.length - 1));\n const toolName = tally.name ?? resolveChunkName(chunk);\n const limit =\n byTool != null && toolName != null && Object.hasOwn(byTool, toolName)\n ? byTool[toolName]\n : globalLimit;\n if (limit > 0 && tally.bytes > limit) {\n throw new StreamLimitExceededError({\n kind: 'tool_call_args',\n limit,\n observed: tally.bytes,\n toolName,\n });\n }\n if (sealed) {\n releaseTally(tally);\n }\n }\n}\n\n/** Structural subset of a complete parsed tool call. */\ninterface CompleteToolCallLike {\n id?: string;\n name?: string;\n args?: unknown;\n}\n\n/**\n * Standalone byte check for complete parsed tool calls that arrive without a\n * raw chunk representation: a streaming custom or OpenAI-compatible\n * `ChatModel` can yield fully parsed `tool_calls` with empty\n * `tool_call_chunks`, which would otherwise dispatch without consuming any\n * byte budget. Complete calls are self-contained, so each is judged\n * standalone without tallying.\n */\nexport function enforceCompleteToolCallArgLimit({\n graph,\n metadata,\n toolCalls,\n}: {\n graph: StreamLimitState;\n metadata: Record<string, unknown> | undefined;\n toolCalls: CompleteToolCallLike[];\n}): void {\n const resolved = graph.streamLimits ?? DEFAULT_RESOLVED_LIMITS;\n const globalLimit = resolved.maxToolCallArgBytes;\n const byTool = resolved.maxToolCallArgBytesByTool;\n if (!resolved.hasEnforceableToolCallArgLimit) {\n return;\n }\n if (metadata?.[STREAM_LIMIT_REDISPATCH_KEY] === true) {\n return;\n }\n for (const toolCall of toolCalls) {\n const name =\n toolCall.name != null && toolCall.name !== '' ? toolCall.name : undefined;\n const limit =\n byTool != null && name != null && Object.hasOwn(byTool, name)\n ? byTool[name]\n : globalLimit;\n if (limit <= 0) {\n continue;\n }\n const args = toolCall.args;\n let serialized: string;\n if (typeof args === 'string') {\n serialized = args;\n } else if (args == null) {\n serialized = '';\n } else {\n serialized = JSON.stringify(args);\n }\n const bytes = Buffer.byteLength(serialized, 'utf8');\n if (bytes > limit) {\n throw new StreamLimitExceededError({\n kind: 'tool_call_args',\n limit,\n observed: bytes,\n toolName: name,\n });\n }\n }\n}\n\n/**\n * Whether a chunk needs charge accounting at all. With the event cap off\n * (the default) and no tool payload on the chunk, there is nothing a claim\n * could ever gate — skipping restores the documented zero-cost-disabled\n * behavior by avoiding a WeakMap entry and nested Map per ordinary text\n * delta. Both the producer and consumer paths use this same predicate on\n * the same chunk, so claim pairing is unaffected.\n */\nexport function requiresStreamLimitAccounting(\n graph: StreamLimitState,\n chunk: {\n tool_call_chunks?: unknown[];\n tool_calls?: unknown[];\n invalid_tool_calls?: unknown[];\n }\n): boolean {\n const resolved = graph.streamLimits ?? DEFAULT_RESOLVED_LIMITS;\n if (resolved.maxDeltaEventsPerTurn > 0) {\n return true;\n }\n /** With no argument limit able to fire (byte cap disabled and every\n * per-tool entry a zero-valued disable), neither enforcement function can\n * trip — hosts that explicitly disable the guards for legitimate large\n * arguments must not pay per-chunk claim allocations (generation keys,\n * WeakMap entries, nested Maps) for bookkeeping that judges nothing. */\n if (!resolved.hasEnforceableToolCallArgLimit) {\n return false;\n }\n return (\n (chunk.tool_call_chunks?.length ?? 0) > 0 ||\n (chunk.tool_calls?.length ?? 0) > 0 ||\n (chunk.invalid_tool_calls?.length ?? 0) > 0\n );\n}\n\n/** True when any stream-limit guard can fire for this graph. The attempt\n * lease and per-chunk claims are both gated on it — fully disabled guards\n * must allocate no bookkeeping at all, per-attempt included. */\nexport function streamLimitAccountingEnabled(\n graph: StreamLimitState\n): boolean {\n const resolved = graph.streamLimits ?? DEFAULT_RESOLVED_LIMITS;\n return (\n resolved.hasEnforceableToolCallArgLimit ||\n resolved.maxDeltaEventsPerTurn > 0\n );\n}\n\n/** Leases a model attempt's generation: entries under it are exempt from\n * the reset sweep until {@link releaseStreamLimitGeneration} runs from the\n * attempt's `finally`. */\nexport function registerActiveStreamLimitGeneration(\n graph: StreamLimitState,\n generationKey: string\n): void {\n (graph.activeStreamLimitGenerations ??= new Set()).add(generationKey);\n}\n\n/** Ends an attempt's lease and deletes its accounting entries — the\n * authoritative retirement point for attempt-scoped state. */\nexport function releaseStreamLimitGeneration(\n graph: StreamLimitState,\n generationKey: string\n): void {\n graph.activeStreamLimitGenerations?.delete(generationKey);\n deleteGenerationEntries(graph.streamedToolCallArgTallies, generationKey);\n deleteGenerationEntries(graph.streamDeltaEventCounts, generationKey);\n}\n\nfunction deleteGenerationEntries(\n entries: Map<string, unknown> | undefined,\n generationKey: string\n): void {\n if (entries == null) {\n return;\n }\n const prefix = `${generationKey}:`;\n for (const key of entries.keys()) {\n if (key === generationKey || key.startsWith(prefix)) {\n entries.delete(key);\n }\n }\n}\n\nfunction isOwnedByActiveGeneration(\n key: string,\n activeGenerations: ReadonlySet<string>\n): boolean {\n for (const generationKey of activeGenerations) {\n if (key === generationKey || key.startsWith(`${generationKey}:`)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Deletes accounting entries older than the epoch that is ending, EXCEPT\n * entries leased by a still-active attempt. Called by `resetValues` instead\n * of clearing: producer loops of straggling attempts use the graph's maps\n * directly and are not behind the consumer-only epoch gate, so a clear\n * would hand a cancellation-ignoring provider a fresh allowance at every\n * run start. Leased entries live until their attempt's `finally` releases\n * them; unleased entries (direct callers with no attempt stamp) get one\n * grace reset via their epoch tag.\n */\nexport function sweepStaleStreamLimitEntries(\n entries: Map<string, { epoch?: number }>,\n endingEpoch: number,\n activeGenerations?: ReadonlySet<string>\n): void {\n const hasActive = activeGenerations != null && activeGenerations.size > 0;\n for (const [key, value] of entries) {\n if (value.epoch === endingEpoch) {\n continue;\n }\n if (hasActive && isOwnedByActiveGeneration(key, activeGenerations)) {\n continue;\n }\n entries.delete(key);\n }\n}\n\n/** Links a secondary representation of a wire chunk (e.g. a provider\n * adapter's callback copy) to its canonical emission object, so claim\n * accounting treats both as one emission even though their identities\n * differ. Non-enumerable, so the link stays out of serialization and chunk\n * merges. */\nconst STREAM_LIMIT_CANONICAL: unique symbol = Symbol('streamLimitCanonical');\n\nexport function linkStreamLimitCanonical(\n copy: object,\n canonical: object\n): void {\n Object.defineProperty(copy, STREAM_LIMIT_CANONICAL, {\n value: canonical,\n enumerable: false,\n configurable: true,\n });\n}\n\nfunction canonicalChunk(chunk: object): object {\n const linked = (chunk as Record<PropertyKey, unknown>)[\n STREAM_LIMIT_CANONICAL\n ];\n return typeof linked === 'object' && linked != null ? linked : chunk;\n}\n\n/**\n * Claims accounting ownership of one EMISSION of a wire chunk. LangChain can\n * hand the same chunk object to the decoupled `streamEvents` handler\n * (`consumer`) and to the dispatch loop (`producer`) in either order, and a\n * streaming model may mutate and re-yield the same object across emissions —\n * so dedup is a signed credit balance per object rather than a lifetime set.\n * Each producer visit adds a credit, each consumer visit removes one, and a\n * visit charges only when the other side has not already charged that\n * emission (positive balance = producer ahead, negative = consumer ahead).\n * Paths where only one side ever observes the chunk (summarization, local\n * replay-skip) charge every visit, since their balance never crosses zero\n * the other way. Balances are scoped by generation identity so parallel\n * generations sharing one reused chunk object cannot cancel each other's\n * charges. Non-object chunks cannot be identity-tracked and are always\n * claimable.\n */\nexport function claimStreamLimitCharge(\n graph: StreamLimitState,\n chunk: unknown,\n side: 'producer' | 'consumer',\n metadata: Record<string, unknown> | undefined\n): boolean {\n if (typeof chunk !== 'object' || chunk == null) {\n return true;\n }\n const emission = canonicalChunk(chunk);\n const credits = (graph.streamLimitChargeCredits ??= new WeakMap());\n let byGeneration = credits.get(emission);\n if (byGeneration == null) {\n byGeneration = new Map();\n credits.set(emission, byGeneration);\n }\n const generationKey = resolveGenerationKey(metadata);\n const balance = byGeneration.get(generationKey) ?? 0;\n if (side === 'producer') {\n byGeneration.set(generationKey, balance + 1);\n return balance >= 0;\n }\n byGeneration.set(generationKey, balance - 1);\n return balance <= 0;\n}\n\n/**\n * Synchronous producer-side accounting for wire chunks that would otherwise\n * be judged only when the decoupled `streamEvents` reader catches up — or,\n * on replay-skipped and summarization chunks, not at all. A lagging reader\n * would let an oversized complete call return to LangGraph and reach\n * `ToolNode` before the queued handler throws; charging in the producer\n * loop keeps the breaker ahead of graph progression. Claim-based, so\n * whichever of this path and the handler echo sees the chunk object first\n * charges it and the other skips.\n */\nexport function enforceStreamLimitsForWireChunk({\n graph,\n metadata,\n chunk,\n side = 'producer',\n}: {\n graph: StreamLimitState;\n metadata: Record<string, unknown> | undefined;\n chunk: {\n tool_call_chunks?: ToolCallChunk[];\n tool_calls?: CompleteToolCallLike[];\n invalid_tool_calls?: CompleteToolCallLike[];\n response_metadata?: Record<string, unknown>;\n };\n /** Claim side for the credit balance. The local dispatch branch charges\n * as `consumer` because its handler-handled and replay-skipped emissions\n * of one reused object ALTERNATE — mixed sides would pair them as\n * producer/echo and swallow a charge. */\n side?: 'producer' | 'consumer';\n}): void {\n if (!requiresStreamLimitAccounting(graph, chunk)) {\n return;\n }\n if (!claimStreamLimitCharge(graph, chunk, side, metadata)) {\n return;\n }\n enforceStreamDeltaEventLimit({ graph, metadata });\n /** Combined view computed first so the raw-chunk guard can correlate\n * names from BOTH parsed and invalid calls in the same event; an unnamed\n * raw chunk twinned with a named invalid call must select that tool's\n * override, not the global cap. */\n const completeCalls = combineCompleteToolCalls(chunk);\n if (chunk.tool_call_chunks != null && chunk.tool_call_chunks.length > 0) {\n enforceStreamedToolCallArgLimit({\n graph,\n metadata,\n toolCallChunks: chunk.tool_call_chunks,\n responseMetadata: chunk.response_metadata,\n parsedToolCalls: completeCalls,\n });\n }\n /** Judged whenever parsed calls are present, not only when raw chunks are\n * absent: an adapter can pair an empty or partial raw chunk with a\n * complete parsed call, and the standalone check is stateless so the\n * common both-present case is not double-tallied. `invalid_tool_calls`\n * are included — ToolNode processes and promotes them, and a malformed\n * call streaming oversized arguments is the exact pathology this breaker\n * exists to stop. */\n if (completeCalls != null) {\n enforceCompleteToolCallArgLimit({ graph, metadata, toolCalls: completeCalls });\n }\n}\n\n/** Combined view of a chunk's parsed and invalid complete calls, avoiding\n * allocation on the common paths where one or both are absent. */\nexport function combineCompleteToolCalls(chunk: {\n tool_calls?: CompleteToolCallLike[];\n invalid_tool_calls?: CompleteToolCallLike[];\n}): CompleteToolCallLike[] | undefined {\n const parsed = chunk.tool_calls;\n const invalid = chunk.invalid_tool_calls;\n const hasParsed = parsed != null && parsed.length > 0;\n const hasInvalid = invalid != null && invalid.length > 0;\n if (hasParsed && hasInvalid) {\n return [...parsed, ...invalid];\n }\n if (hasParsed) {\n return parsed;\n }\n return hasInvalid ? invalid : undefined;\n}\n\n/**\n * Counts streamed chunk events per model generation and throws once a single\n * generation exceeds `maxDeltaEventsPerTurn`. Opt-in defense in depth for\n * pathologies a byte cap cannot see, such as a provider stream looping on\n * empty chunks. Zero cost while disabled.\n */\nexport function enforceStreamDeltaEventLimit({\n graph,\n metadata,\n}: {\n graph: StreamLimitState;\n metadata: Record<string, unknown> | undefined;\n}): void {\n const limit = (graph.streamLimits ?? DEFAULT_RESOLVED_LIMITS)\n .maxDeltaEventsPerTurn;\n if (limit <= 0) {\n return;\n }\n if (metadata?.[STREAM_LIMIT_REDISPATCH_KEY] === true) {\n return;\n }\n const counts = (graph.streamDeltaEventCounts ??= new Map());\n const key = resolveGenerationKey(metadata);\n const existing = counts.get(key);\n const next = (existing?.count ?? 0) + 1;\n if (next > limit) {\n throw new StreamLimitExceededError({\n kind: 'delta_events',\n limit,\n observed: next,\n });\n }\n if (existing != null) {\n existing.count = next;\n } else {\n counts.set(key, { count: next, epoch: graph.breakerEpoch });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"streamLimits.cjs","names":["getStreamedToolCallSeal"],"sources":["../../../src/llm/streamLimits.ts"],"mappings":"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"}
@@ -1,12 +1,6 @@
1
1
  require("../common/enum.cjs");
2
2
  require("../common/index.cjs");
3
3
  //#region src/llm/truncation.ts
4
- /**
5
- * Providers whose adapters deliver tool calls as complete, atomic objects
6
- * rather than streamed argument deltas. Google/Vertex (GenAI) emit each
7
- * `functionCall` whole and seal it on arrival, so a `MAX_TOKENS` finish does
8
- * NOT imply the arguments were cut off — the truncation guard must skip them.
9
- */
10
4
  const ATOMIC_TOOL_CALL_ARG_PROVIDERS = new Set(["google", "vertexai"]);
11
5
  const MAX_TOKEN_VALUES = new Set([
12
6
  "max_tokens",
@@ -22,20 +16,6 @@ function normalizeStopValue(value) {
22
16
  if (LENGTH_VALUES.has(normalized)) return "length";
23
17
  return null;
24
18
  }
25
- /**
26
- * Reads the truncation stop reason off a message, covering every provider
27
- * shape we stream:
28
- * - `response_metadata.stopReason` (Bedrock Converse, non-streaming)
29
- * - `response_metadata.messageStop.stopReason` (Bedrock Converse streaming)
30
- * - `response_metadata.stop_reason` (Anthropic, non-streaming)
31
- * - `additional_kwargs.stop_reason` (Anthropic streaming `message_delta`)
32
- * - `response_metadata.finish_reason` (OpenAI chat-completions / compatible)
33
- * - `response_metadata.incomplete_details.reason` (OpenAI Responses API)
34
- * - `response_metadata.finishReason` (Google)
35
- *
36
- * Returns the normalized reason when the model stopped because it hit the
37
- * output token ceiling, otherwise `null`.
38
- */
39
19
  function getTruncationStopReason(message) {
40
20
  const meta = message?.response_metadata;
41
21
  const additionalKwargs = message?.additional_kwargs;
@@ -61,12 +41,6 @@ function hasOpenToolCall(message) {
61
41
  const m = message;
62
42
  return (m.tool_calls?.length ?? 0) > 0 || (m.tool_call_chunks?.length ?? 0) > 0 || (m.invalid_tool_calls?.length ?? 0) > 0;
63
43
  }
64
- /**
65
- * Error raised when a model turn is cut off by the output token limit while it
66
- * was still emitting a tool call. The arguments are necessarily incomplete, so
67
- * executing or re-prompting the call would loop on a malformed request. Failing
68
- * fast with this surfaces an actionable message to the caller instead.
69
- */
70
44
  var OutputTruncationError = class extends Error {
71
45
  stopReason;
72
46
  toolCallNames;
@@ -87,16 +61,6 @@ function collectToolCallNames(message) {
87
61
  ].map((tc) => tc.name).filter((name) => typeof name === "string" && name !== "");
88
62
  return [...new Set(names)];
89
63
  }
90
- /**
91
- * Throws {@link OutputTruncationError} when `message` was truncated by the
92
- * output token limit AND still carries a tool call. For providers that stream
93
- * tool arguments incrementally (Anthropic, Bedrock, OpenAI), a tool call
94
- * emitted under truncation has incomplete arguments — the tool-use block is the
95
- * last thing the model streams — so letting it through makes the agent loop on a
96
- * malformed call. No-ops for normal completions, truncated plain-text turns, and
97
- * providers that deliver complete tool calls atomically (Google/Vertex), where
98
- * `MAX_TOKENS` does not imply the arguments were cut off.
99
- */
100
64
  function assertNotTruncatedToolCall(message, provider) {
101
65
  if (message == null) return;
102
66
  if (provider != null && ATOMIC_TOOL_CALL_ARG_PROVIDERS.has(provider)) return;
@@ -1 +1 @@
1
- {"version":3,"file":"truncation.cjs","names":[],"sources":["../../../src/llm/truncation.ts"],"sourcesContent":["import type { AIMessageChunk, BaseMessage } from '@langchain/core/messages';\nimport { Providers } from '@/common';\n\n/**\n * Providers whose adapters deliver tool calls as complete, atomic objects\n * rather than streamed argument deltas. Google/Vertex (GenAI) emit each\n * `functionCall` whole and seal it on arrival, so a `MAX_TOKENS` finish does\n * NOT imply the arguments were cut off — the truncation guard must skip them.\n */\nconst ATOMIC_TOOL_CALL_ARG_PROVIDERS = new Set<Providers>([\n Providers.GOOGLE,\n Providers.VERTEXAI,\n]);\n\n/**\n * Normalized truncation reasons across providers. Providers disagree on the\n * key and the value: Anthropic/Bedrock use `max_tokens`, OpenAI uses `length`,\n * Google uses `MAX_TOKENS`.\n */\nexport type TruncationStopReason = 'max_tokens' | 'length';\n\nconst MAX_TOKEN_VALUES = new Set([\n 'max_tokens',\n 'max_token',\n 'maxtokens',\n 'max_output_tokens',\n]);\nconst LENGTH_VALUES = new Set(['length']);\n\nfunction normalizeStopValue(value: unknown): TruncationStopReason | null {\n if (typeof value !== 'string') {\n return null;\n }\n const normalized = value.trim().toLowerCase();\n if (MAX_TOKEN_VALUES.has(normalized)) {\n return 'max_tokens';\n }\n if (LENGTH_VALUES.has(normalized)) {\n return 'length';\n }\n return null;\n}\n\n/**\n * Reads the truncation stop reason off a message, covering every provider\n * shape we stream:\n * - `response_metadata.stopReason` (Bedrock Converse, non-streaming)\n * - `response_metadata.messageStop.stopReason` (Bedrock Converse streaming)\n * - `response_metadata.stop_reason` (Anthropic, non-streaming)\n * - `additional_kwargs.stop_reason` (Anthropic streaming `message_delta`)\n * - `response_metadata.finish_reason` (OpenAI chat-completions / compatible)\n * - `response_metadata.incomplete_details.reason` (OpenAI Responses API)\n * - `response_metadata.finishReason` (Google)\n *\n * Returns the normalized reason when the model stopped because it hit the\n * output token ceiling, otherwise `null`.\n */\nexport function getTruncationStopReason(\n message:\n | Pick<BaseMessage, 'response_metadata' | 'additional_kwargs'>\n | undefined\n | null\n): TruncationStopReason | null {\n const meta = message?.response_metadata as\n | Record<string, unknown>\n | undefined;\n const additionalKwargs = message?.additional_kwargs as\n | Record<string, unknown>\n | undefined;\n if (meta == null && additionalKwargs == null) {\n return null;\n }\n\n const messageStop = meta?.messageStop as { stopReason?: unknown } | undefined;\n const incompleteDetails = meta?.incomplete_details as\n | { reason?: unknown }\n | undefined;\n const candidates: unknown[] = [\n meta?.stopReason,\n meta?.stop_reason,\n meta?.finish_reason,\n meta?.finishReason,\n messageStop?.stopReason,\n incompleteDetails?.reason,\n additionalKwargs?.stop_reason,\n ];\n\n for (const candidate of candidates) {\n const normalized = normalizeStopValue(candidate);\n if (normalized != null) {\n return normalized;\n }\n }\n return null;\n}\n\nfunction hasOpenToolCall(message: AIMessageChunk | BaseMessage): boolean {\n const m = message as AIMessageChunk & {\n tool_calls?: unknown[];\n tool_call_chunks?: unknown[];\n invalid_tool_calls?: unknown[];\n };\n return (\n (m.tool_calls?.length ?? 0) > 0 ||\n (m.tool_call_chunks?.length ?? 0) > 0 ||\n (m.invalid_tool_calls?.length ?? 0) > 0\n );\n}\n\n/**\n * Error raised when a model turn is cut off by the output token limit while it\n * was still emitting a tool call. The arguments are necessarily incomplete, so\n * executing or re-prompting the call would loop on a malformed request. Failing\n * fast with this surfaces an actionable message to the caller instead.\n */\nexport class OutputTruncationError extends Error {\n readonly stopReason: TruncationStopReason;\n readonly toolCallNames: string[];\n\n constructor(stopReason: TruncationStopReason, toolCallNames: string[]) {\n const named =\n toolCallNames.length > 0\n ? ` (tool call: ${toolCallNames.join(', ')})`\n : '';\n super(\n 'The model response was truncated at the maximum output token limit before ' +\n `the tool call arguments were complete${named}. Increase the model's max ` +\n 'output tokens, or have the model produce smaller arguments — for large ' +\n 'files, write a lean main file and move bulky content into separate files.'\n );\n this.name = 'OutputTruncationError';\n this.stopReason = stopReason;\n this.toolCallNames = toolCallNames;\n }\n}\n\nfunction collectToolCallNames(message: AIMessageChunk | BaseMessage): string[] {\n const m = message as AIMessageChunk & {\n tool_calls?: Array<{ name?: string }>;\n tool_call_chunks?: Array<{ name?: string }>;\n invalid_tool_calls?: Array<{ name?: string }>;\n };\n const names = [\n ...(m.tool_calls ?? []),\n ...(m.tool_call_chunks ?? []),\n ...(m.invalid_tool_calls ?? []),\n ]\n .map((tc) => tc.name)\n .filter((name): name is string => typeof name === 'string' && name !== '');\n return [...new Set(names)];\n}\n\n/**\n * Throws {@link OutputTruncationError} when `message` was truncated by the\n * output token limit AND still carries a tool call. For providers that stream\n * tool arguments incrementally (Anthropic, Bedrock, OpenAI), a tool call\n * emitted under truncation has incomplete arguments — the tool-use block is the\n * last thing the model streams — so letting it through makes the agent loop on a\n * malformed call. No-ops for normal completions, truncated plain-text turns, and\n * providers that deliver complete tool calls atomically (Google/Vertex), where\n * `MAX_TOKENS` does not imply the arguments were cut off.\n */\nexport function assertNotTruncatedToolCall(\n message: AIMessageChunk | BaseMessage | undefined | null,\n provider?: Providers\n): void {\n if (message == null) {\n return;\n }\n if (provider != null && ATOMIC_TOOL_CALL_ARG_PROVIDERS.has(provider)) {\n return;\n }\n const stopReason = getTruncationStopReason(message);\n if (stopReason == null || !hasOpenToolCall(message)) {\n return;\n }\n throw new OutputTruncationError(stopReason, collectToolCallNames(message));\n}\n"],"mappings":";;;;;;;;;AASA,MAAM,iCAAiC,IAAI,IAAe,CAAA,UAAA,UAG1D,CAAC;AASD,MAAM,mBAAmB,IAAI,IAAI;CAC/B;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC;AAExC,SAAS,mBAAmB,OAA6C;CACvE,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,YAAY;CAC5C,IAAI,iBAAiB,IAAI,UAAU,GACjC,OAAO;CAET,IAAI,cAAc,IAAI,UAAU,GAC9B,OAAO;CAET,OAAO;AACT;;;;;;;;;;;;;;;AAgBA,SAAgB,wBACd,SAI6B;CAC7B,MAAM,OAAO,SAAS;CAGtB,MAAM,mBAAmB,SAAS;CAGlC,IAAI,QAAQ,QAAQ,oBAAoB,MACtC,OAAO;CAGT,MAAM,cAAc,MAAM;CAC1B,MAAM,oBAAoB,MAAM;CAGhC,MAAM,aAAwB;EAC5B,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,aAAa;EACb,mBAAmB;EACnB,kBAAkB;CACpB;CAEA,KAAK,MAAM,aAAa,YAAY;EAClC,MAAM,aAAa,mBAAmB,SAAS;EAC/C,IAAI,cAAc,MAChB,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,gBAAgB,SAAgD;CACvE,MAAM,IAAI;CAKV,QACG,EAAE,YAAY,UAAU,KAAK,MAC7B,EAAE,kBAAkB,UAAU,KAAK,MACnC,EAAE,oBAAoB,UAAU,KAAK;AAE1C;;;;;;;AAQA,IAAa,wBAAb,cAA2C,MAAM;CAC/C;CACA;CAEA,YAAY,YAAkC,eAAyB;EACrE,MAAM,QACJ,cAAc,SAAS,IACnB,gBAAgB,cAAc,KAAK,IAAI,EAAE,KACzC;EACN,MACE,kHAC0C,MAAM,4KAGlD;EACA,KAAK,OAAO;EACZ,KAAK,aAAa;EAClB,KAAK,gBAAgB;CACvB;AACF;AAEA,SAAS,qBAAqB,SAAiD;CAC7E,MAAM,IAAI;CAKV,MAAM,QAAQ;EACZ,GAAI,EAAE,cAAc,CAAC;EACrB,GAAI,EAAE,oBAAoB,CAAC;EAC3B,GAAI,EAAE,sBAAsB,CAAC;CAC/B,CAAC,CACE,KAAK,OAAO,GAAG,IAAI,CAAC,CACpB,QAAQ,SAAyB,OAAO,SAAS,YAAY,SAAS,EAAE;CAC3E,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAC3B;;;;;;;;;;;AAYA,SAAgB,2BACd,SACA,UACM;CACN,IAAI,WAAW,MACb;CAEF,IAAI,YAAY,QAAQ,+BAA+B,IAAI,QAAQ,GACjE;CAEF,MAAM,aAAa,wBAAwB,OAAO;CAClD,IAAI,cAAc,QAAQ,CAAC,gBAAgB,OAAO,GAChD;CAEF,MAAM,IAAI,sBAAsB,YAAY,qBAAqB,OAAO,CAAC;AAC3E"}
1
+ {"version":3,"file":"truncation.cjs","names":[],"sources":["../../../src/llm/truncation.ts"],"mappings":";;;AASA,MAAM,iCAAiC,IAAI,IAAe,CAAA,UAAA,UAG1D,CAAC;AASD,MAAM,mBAAmB,IAAI,IAAI;CAC/B;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC;AAExC,SAAS,mBAAmB,OAA6C;CACvE,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,MAAM,aAAa,MAAM,KAAK,CAAC,CAAC,YAAY;CAC5C,IAAI,iBAAiB,IAAI,UAAU,GACjC,OAAO;CAET,IAAI,cAAc,IAAI,UAAU,GAC9B,OAAO;CAET,OAAO;AACT;AAgBA,SAAgB,wBACd,SAI6B;CAC7B,MAAM,OAAO,SAAS;CAGtB,MAAM,mBAAmB,SAAS;CAGlC,IAAI,QAAQ,QAAQ,oBAAoB,MACtC,OAAO;CAGT,MAAM,cAAc,MAAM;CAC1B,MAAM,oBAAoB,MAAM;CAGhC,MAAM,aAAwB;EAC5B,MAAM;EACN,MAAM;EACN,MAAM;EACN,MAAM;EACN,aAAa;EACb,mBAAmB;EACnB,kBAAkB;CACpB;CAEA,KAAK,MAAM,aAAa,YAAY;EAClC,MAAM,aAAa,mBAAmB,SAAS;EAC/C,IAAI,cAAc,MAChB,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,gBAAgB,SAAgD;CACvE,MAAM,IAAI;CAKV,QACG,EAAE,YAAY,UAAU,KAAK,MAC7B,EAAE,kBAAkB,UAAU,KAAK,MACnC,EAAE,oBAAoB,UAAU,KAAK;AAE1C;AAQA,IAAa,wBAAb,cAA2C,MAAM;CAC/C;CACA;CAEA,YAAY,YAAkC,eAAyB;EACrE,MAAM,QACJ,cAAc,SAAS,IACnB,gBAAgB,cAAc,KAAK,IAAI,EAAE,KACzC;EACN,MACE,kHAC0C,MAAM,4KAGlD;EACA,KAAK,OAAO;EACZ,KAAK,aAAa;EAClB,KAAK,gBAAgB;CACvB;AACF;AAEA,SAAS,qBAAqB,SAAiD;CAC7E,MAAM,IAAI;CAKV,MAAM,QAAQ;EACZ,GAAI,EAAE,cAAc,CAAC;EACrB,GAAI,EAAE,oBAAoB,CAAC;EAC3B,GAAI,EAAE,sBAAsB,CAAC;CAC/B,CAAC,CACE,KAAK,OAAO,GAAG,IAAI,CAAC,CACpB,QAAQ,SAAyB,OAAO,SAAS,YAAY,SAAS,EAAE;CAC3E,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAC3B;AAYA,SAAgB,2BACd,SACA,UACM;CACN,IAAI,WAAW,MACb;CAEF,IAAI,YAAY,QAAQ,+BAA+B,IAAI,QAAQ,GACjE;CAEF,MAAM,aAAa,wBAAwB,OAAO;CAClD,IAAI,cAAc,QAAQ,CAAC,gBAAgB,OAAO,GAChD;CAEF,MAAM,IAAI,sBAAsB,YAAY,qBAAqB,OAAO,CAAC;AAC3E"}
@@ -5,30 +5,6 @@ let _langchain_core_messages = require("@langchain/core/messages");
5
5
  let _langchain_google_gauth = require("@langchain/google-gauth");
6
6
  let _langchain_google_common = require("@langchain/google-common");
7
7
  //#region src/llm/vertexai/index.ts
8
- /**
9
- * `@langchain/google-common`'s `_streamResponseChunks` emits usage on TWO
10
- * different paths within the same stream:
11
- *
12
- * - Streaming chunks set `chunk.generationInfo.usage_metadata` via
13
- * `responseToUsageMetadata`, which correctly sums
14
- * `candidatesTokenCount + thoughtsTokenCount` and includes
15
- * `output_token_details.reasoning`.
16
- * - The trailing fallback chunk (emitted after the API stream exhausts)
17
- * attaches its own `chunk.message.usage_metadata` built inline as
18
- * `output_tokens = candidatesTokenCount` only — dropping
19
- * `thoughtsTokenCount` and `output_token_details` entirely.
20
- *
21
- * After `AIMessageChunk.concat`, only `message.usage_metadata` survives —
22
- * which is the buggy fallback value. This breaks the documented
23
- * `total_tokens === input_tokens + output_tokens` invariant and silently
24
- * undercharges thinking models for reasoning tokens.
25
- *
26
- * The repair: track the last `generationInfo.usage_metadata` we see, and
27
- * when the fallback chunk arrives with its buggy `message.usage_metadata`,
28
- * replace it with the tracked good value. `CustomChatGoogleGenerativeAI`
29
- * solves the same problem for the Google API path differently — by
30
- * overriding `_convertToUsageMetadata`.
31
- */
32
8
  function repairStreamUsageMetadata(current, generationInfoUsage) {
33
9
  if (!current) return current;
34
10
  if (!generationInfoUsage) return current;
@@ -36,14 +12,6 @@ function repairStreamUsageMetadata(current, generationInfoUsage) {
36
12
  if (generationInfoUsage.output_tokens <= current.output_tokens) return current;
37
13
  return generationInfoUsage;
38
14
  }
39
- /**
40
- * The Gemini API delivers function calls as complete objects — never as
41
- * partial arg deltas. `@langchain/google-common` pre-parses each streamed
42
- * functionCall part into `tool_calls` (invalid args land in
43
- * `invalid_tool_calls` instead), so a chunk whose tool-call chunks all parsed
44
- * cleanly is sealed on arrival for eager tool execution. Anything that fails
45
- * the parse check is left unstamped and falls back to the lazy path.
46
- */
47
15
  function sealCompleteStreamedToolCalls(message) {
48
16
  const chunkCount = message.tool_call_chunks?.length ?? 0;
49
17
  if (chunkCount === 0 || (message.invalid_tool_calls?.length ?? 0) > 0 || (message.tool_calls?.length ?? 0) !== chunkCount) return;
@@ -53,22 +21,6 @@ function sealCompleteStreamedToolCalls(message) {
53
21
  [require_streamedToolCallSeals.STREAMED_TOOL_CALL_SEAL_METADATA_KEY]: { kind: "all" }
54
22
  };
55
23
  }
56
- /**
57
- * Fixes thought signatures on functionCall parts in the formatted Gemini request.
58
- *
59
- * `@langchain/google-common` stores signatures as a flat array in
60
- * `additional_kwargs.signatures` (one per response part) and re-attaches them
61
- * by index only when `signatures.length === parts.length`. This fails when:
62
- * - The API omits a signature (length mismatch)
63
- * - Streaming chunks merge with different part counts
64
- * - The signature for a functionCall part is an empty string
65
- *
66
- * This function correlates each "model" content block in the formatted request
67
- * back to its originating AI message by *position*, then re-attaches non-empty
68
- * signatures that the library failed to apply. AI messages without signatures
69
- * still consume their slot — filtering them out shifted later messages onto
70
- * the wrong content block and dropped real signatures on the floor.
71
- */
72
24
  function fixThoughtSignatures(contents, input) {
73
25
  const aiMessages = input.filter(_langchain_core_messages.isAIMessage);
74
26
  const modelContents = contents.filter((c) => c.role === "model");
@@ -110,288 +62,6 @@ var CustomChatConnection = class extends _langchain_google_common.ChatConnection
110
62
  return formattedData;
111
63
  }
112
64
  };
113
- /**
114
- * Integration with Google Vertex AI chat models.
115
- *
116
- * Setup:
117
- * Install `@langchain/google-vertexai` and set your stringified
118
- * Vertex AI credentials as an environment variable named `GOOGLE_APPLICATION_CREDENTIALS`.
119
- *
120
- * ```bash
121
- * npm install @langchain/google-vertexai
122
- * export GOOGLE_APPLICATION_CREDENTIALS="path/to/credentials"
123
- * ```
124
- *
125
- * ## [Constructor args](https://api.js.langchain.com/classes/_langchain_google_vertexai.index.ChatVertexAI.html#constructor.new_ChatVertexAI)
126
- *
127
- * ## [Runtime args](https://api.js.langchain.com/interfaces/langchain_google_common_types.GoogleAIBaseLanguageModelCallOptions.html)
128
- *
129
- * Runtime args can be passed as the second argument to any of the base runnable methods `.invoke`. `.stream`, `.batch`, etc.
130
- * They can also be passed via `.withConfig`, or the second arg in `.bindTools`, like shown in the examples below:
131
- *
132
- * ```typescript
133
- * // When calling `.withConfig`, call options should be passed via the first argument
134
- * const llmWithArgsBound = llm.withConfig({
135
- * stop: ["\n"],
136
- * tools: [...],
137
- * });
138
- *
139
- * // When calling `.bindTools`, call options should be passed via the second argument
140
- * const llmWithTools = llm.bindTools(
141
- * [...],
142
- * {
143
- * tool_choice: "auto",
144
- * }
145
- * );
146
- * ```
147
- *
148
- * ## Examples
149
- *
150
- * <details open>
151
- * <summary><strong>Instantiate</strong></summary>
152
- *
153
- * ```typescript
154
- * import { ChatVertexAI } from '@langchain/google-vertexai';
155
- *
156
- * const llm = new ChatVertexAI({
157
- * model: "gemini-1.5-pro",
158
- * temperature: 0,
159
- * // other params...
160
- * });
161
- * ```
162
- * </details>
163
- *
164
- * <br />
165
- *
166
- * <details>
167
- * <summary><strong>Invoking</strong></summary>
168
- *
169
- * ```typescript
170
- * const input = `Translate "I love programming" into French.`;
171
- *
172
- * // Models also accept a list of chat messages or a formatted prompt
173
- * const result = await llm.invoke(input);
174
- * console.log(result);
175
- * ```
176
- *
177
- * ```txt
178
- * AIMessageChunk {
179
- * "content": "\"J'adore programmer\" \n\nHere's why this is the best translation:\n\n* **J'adore** means \"I love\" and conveys a strong passion.\n* **Programmer** is the French verb for \"to program.\"\n\nThis translation is natural and idiomatic in French. \n",
180
- * "additional_kwargs": {},
181
- * "response_metadata": {},
182
- * "tool_calls": [],
183
- * "tool_call_chunks": [],
184
- * "invalid_tool_calls": [],
185
- * "usage_metadata": {
186
- * "input_tokens": 9,
187
- * "output_tokens": 63,
188
- * "total_tokens": 72
189
- * }
190
- * }
191
- * ```
192
- * </details>
193
- *
194
- * <br />
195
- *
196
- * <details>
197
- * <summary><strong>Streaming Chunks</strong></summary>
198
- *
199
- * ```typescript
200
- * for await (const chunk of await llm.stream(input)) {
201
- * console.log(chunk);
202
- * }
203
- * ```
204
- *
205
- * ```txt
206
- * AIMessageChunk {
207
- * "content": "\"",
208
- * "additional_kwargs": {},
209
- * "response_metadata": {},
210
- * "tool_calls": [],
211
- * "tool_call_chunks": [],
212
- * "invalid_tool_calls": []
213
- * }
214
- * AIMessageChunk {
215
- * "content": "J'adore programmer\" \n",
216
- * "additional_kwargs": {},
217
- * "response_metadata": {},
218
- * "tool_calls": [],
219
- * "tool_call_chunks": [],
220
- * "invalid_tool_calls": []
221
- * }
222
- * AIMessageChunk {
223
- * "content": "",
224
- * "additional_kwargs": {},
225
- * "response_metadata": {},
226
- * "tool_calls": [],
227
- * "tool_call_chunks": [],
228
- * "invalid_tool_calls": []
229
- * }
230
- * AIMessageChunk {
231
- * "content": "",
232
- * "additional_kwargs": {},
233
- * "response_metadata": {
234
- * "finishReason": "stop"
235
- * },
236
- * "tool_calls": [],
237
- * "tool_call_chunks": [],
238
- * "invalid_tool_calls": [],
239
- * "usage_metadata": {
240
- * "input_tokens": 9,
241
- * "output_tokens": 8,
242
- * "total_tokens": 17
243
- * }
244
- * }
245
- * ```
246
- * </details>
247
- *
248
- * <br />
249
- *
250
- * <details>
251
- * <summary><strong>Aggregate Streamed Chunks</strong></summary>
252
- *
253
- * ```typescript
254
- * import { AIMessageChunk } from '@langchain/core/messages';
255
- * import { concat } from '@langchain/core/utils/stream';
256
- *
257
- * const stream = await llm.stream(input);
258
- * let full: AIMessageChunk | undefined;
259
- * for await (const chunk of stream) {
260
- * full = !full ? chunk : concat(full, chunk);
261
- * }
262
- * console.log(full);
263
- * ```
264
- *
265
- * ```txt
266
- * AIMessageChunk {
267
- * "content": "\"J'adore programmer\" \n",
268
- * "additional_kwargs": {},
269
- * "response_metadata": {
270
- * "finishReason": "stop"
271
- * },
272
- * "tool_calls": [],
273
- * "tool_call_chunks": [],
274
- * "invalid_tool_calls": [],
275
- * "usage_metadata": {
276
- * "input_tokens": 9,
277
- * "output_tokens": 8,
278
- * "total_tokens": 17
279
- * }
280
- * }
281
- * ```
282
- * </details>
283
- *
284
- * <br />
285
- *
286
- * <details>
287
- * <summary><strong>Bind tools</strong></summary>
288
- *
289
- * ```typescript
290
- * import { z } from 'zod';
291
- *
292
- * const GetWeather = {
293
- * name: "GetWeather",
294
- * description: "Get the current weather in a given location",
295
- * schema: z.object({
296
- * location: z.string().describe("The city and state, e.g. San Francisco, CA")
297
- * }),
298
- * }
299
- *
300
- * const GetPopulation = {
301
- * name: "GetPopulation",
302
- * description: "Get the current population in a given location",
303
- * schema: z.object({
304
- * location: z.string().describe("The city and state, e.g. San Francisco, CA")
305
- * }),
306
- * }
307
- *
308
- * const llmWithTools = llm.bindTools([GetWeather, GetPopulation]);
309
- * const aiMsg = await llmWithTools.invoke(
310
- * "Which city is hotter today and which is bigger: LA or NY?"
311
- * );
312
- * console.log(aiMsg.tool_calls);
313
- * ```
314
- *
315
- * ```txt
316
- * [
317
- * {
318
- * name: 'GetPopulation',
319
- * args: { location: 'New York City, NY' },
320
- * id: '33c1c1f47e2f492799c77d2800a43912',
321
- * type: 'tool_call'
322
- * }
323
- * ]
324
- * ```
325
- * </details>
326
- *
327
- * <br />
328
- *
329
- * <details>
330
- * <summary><strong>Structured Output</strong></summary>
331
- *
332
- * ```typescript
333
- * import { z } from 'zod';
334
- *
335
- * const Joke = z.object({
336
- * setup: z.string().describe("The setup of the joke"),
337
- * punchline: z.string().describe("The punchline to the joke"),
338
- * rating: z.number().optional().describe("How funny the joke is, from 1 to 10")
339
- * }).describe('Joke to tell user.');
340
- *
341
- * const structuredLlm = llm.withStructuredOutput(Joke, { name: "Joke" });
342
- * const jokeResult = await structuredLlm.invoke("Tell me a joke about cats");
343
- * console.log(jokeResult);
344
- * ```
345
- *
346
- * ```txt
347
- * {
348
- * setup: 'What do you call a cat that loves to bowl?',
349
- * punchline: 'An alley cat!'
350
- * }
351
- * ```
352
- * </details>
353
- *
354
- * <br />
355
- *
356
- * <details>
357
- * <summary><strong>Usage Metadata</strong></summary>
358
- *
359
- * ```typescript
360
- * const aiMsgForMetadata = await llm.invoke(input);
361
- * console.log(aiMsgForMetadata.usage_metadata);
362
- * ```
363
- *
364
- * ```txt
365
- * { input_tokens: 9, output_tokens: 8, total_tokens: 17 }
366
- * ```
367
- * </details>
368
- *
369
- * <br />
370
- *
371
- * <details>
372
- * <summary><strong>Stream Usage Metadata</strong></summary>
373
- *
374
- * ```typescript
375
- * const streamForMetadata = await llm.stream(
376
- * input,
377
- * {
378
- * streamUsage: true
379
- * }
380
- * );
381
- * let fullForMetadata: AIMessageChunk | undefined;
382
- * for await (const chunk of streamForMetadata) {
383
- * fullForMetadata = !fullForMetadata ? chunk : concat(fullForMetadata, chunk);
384
- * }
385
- * console.log(fullForMetadata?.usage_metadata);
386
- * ```
387
- *
388
- * ```txt
389
- * { input_tokens: 9, output_tokens: 8, total_tokens: 17 }
390
- * ```
391
- * </details>
392
- *
393
- * <br />
394
- */
395
65
  var ChatVertexAI = class extends _langchain_google_gauth.ChatGoogle {
396
66
  lc_namespace = [
397
67
  "langchain",