@librechat/agents 3.2.32 → 3.2.34

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 (597) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  2. package/dist/cjs/agents/AgentContext.cjs +844 -1046
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/constants.cjs +13 -13
  5. package/dist/cjs/common/constants.cjs.map +1 -1
  6. package/dist/cjs/common/enum.cjs +233 -240
  7. package/dist/cjs/common/enum.cjs.map +1 -1
  8. package/dist/cjs/common/index.cjs +2 -0
  9. package/dist/cjs/events.cjs +121 -169
  10. package/dist/cjs/events.cjs.map +1 -1
  11. package/dist/cjs/graphs/Graph.cjs +1389 -1807
  12. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  13. package/dist/cjs/graphs/MultiAgentGraph.cjs +713 -945
  14. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  15. package/dist/cjs/graphs/index.cjs +2 -0
  16. package/dist/cjs/hitl/askUserQuestion.cjs +60 -62
  17. package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
  18. package/dist/cjs/hitl/index.cjs +1 -0
  19. package/dist/cjs/hooks/HookRegistry.cjs +176 -202
  20. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  21. package/dist/cjs/hooks/createToolPolicyHook.cjs +71 -101
  22. package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
  23. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +170 -273
  24. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
  25. package/dist/cjs/hooks/executeHooks.cjs +227 -282
  26. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  27. package/dist/cjs/hooks/index.cjs +6 -0
  28. package/dist/cjs/hooks/matchers.cjs +196 -230
  29. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  30. package/dist/cjs/hooks/types.cjs +24 -24
  31. package/dist/cjs/hooks/types.cjs.map +1 -1
  32. package/dist/cjs/instrumentation.cjs +110 -137
  33. package/dist/cjs/instrumentation.cjs.map +1 -1
  34. package/dist/cjs/langchain/google-common.cjs +0 -3
  35. package/dist/cjs/langchain/index.cjs +80 -43
  36. package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
  37. package/dist/cjs/langchain/messages/tool.cjs +0 -3
  38. package/dist/cjs/langchain/messages.cjs +35 -18
  39. package/dist/cjs/langchain/openai.cjs +0 -3
  40. package/dist/cjs/langchain/prompts.cjs +5 -8
  41. package/dist/cjs/langchain/runnables.cjs +11 -10
  42. package/dist/cjs/langchain/tools.cjs +14 -11
  43. package/dist/cjs/langchain/utils/env.cjs +5 -8
  44. package/dist/cjs/langfuse.cjs +60 -79
  45. package/dist/cjs/langfuse.cjs.map +1 -1
  46. package/dist/cjs/langfuseToolOutputTracing.cjs +267 -399
  47. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  48. package/dist/cjs/llm/anthropic/index.cjs +432 -562
  49. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  50. package/dist/cjs/llm/anthropic/types.cjs +23 -47
  51. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  52. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +441 -731
  53. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  54. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +171 -256
  55. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  56. package/dist/cjs/llm/anthropic/utils/output_parsers.cjs +2 -0
  57. package/dist/cjs/llm/anthropic/utils/tools.cjs +12 -26
  58. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  59. package/dist/cjs/llm/bedrock/index.cjs +214 -240
  60. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  61. package/dist/cjs/llm/bedrock/toolCache.cjs +84 -106
  62. package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
  63. package/dist/cjs/llm/bedrock/utils/index.cjs +2 -0
  64. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +357 -620
  65. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  66. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +141 -149
  67. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
  68. package/dist/cjs/llm/fake.cjs +86 -96
  69. package/dist/cjs/llm/fake.cjs.map +1 -1
  70. package/dist/cjs/llm/google/index.cjs +183 -237
  71. package/dist/cjs/llm/google/index.cjs.map +1 -1
  72. package/dist/cjs/llm/google/utils/common.cjs +404 -674
  73. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  74. package/dist/cjs/llm/google/utils/zod_to_genai_parameters.cjs +2 -0
  75. package/dist/cjs/llm/init.cjs +44 -53
  76. package/dist/cjs/llm/init.cjs.map +1 -1
  77. package/dist/cjs/llm/invoke.cjs +142 -182
  78. package/dist/cjs/llm/invoke.cjs.map +1 -1
  79. package/dist/cjs/llm/openai/index.cjs +1035 -1273
  80. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  81. package/dist/cjs/llm/openai/utils/index.cjs +189 -316
  82. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  83. package/dist/cjs/llm/openrouter/index.cjs +102 -153
  84. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  85. package/dist/cjs/llm/openrouter/toolCache.cjs +35 -44
  86. package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
  87. package/dist/cjs/llm/providers.cjs +29 -37
  88. package/dist/cjs/llm/providers.cjs.map +1 -1
  89. package/dist/cjs/llm/request.cjs +20 -33
  90. package/dist/cjs/llm/request.cjs.map +1 -1
  91. package/dist/cjs/llm/vertexai/index.cjs +446 -453
  92. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  93. package/dist/cjs/main.cjs +547 -528
  94. package/dist/cjs/messages/anthropicToolCache.cjs +68 -119
  95. package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
  96. package/dist/cjs/messages/cache.cjs +305 -418
  97. package/dist/cjs/messages/cache.cjs.map +1 -1
  98. package/dist/cjs/messages/content.cjs +36 -49
  99. package/dist/cjs/messages/content.cjs.map +1 -1
  100. package/dist/cjs/messages/contextPruning.cjs +112 -145
  101. package/dist/cjs/messages/contextPruning.cjs.map +1 -1
  102. package/dist/cjs/messages/contextPruningSettings.cjs +36 -46
  103. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
  104. package/dist/cjs/messages/core.cjs +256 -397
  105. package/dist/cjs/messages/core.cjs.map +1 -1
  106. package/dist/cjs/messages/format.cjs +904 -1387
  107. package/dist/cjs/messages/format.cjs.map +1 -1
  108. package/dist/cjs/messages/ids.cjs +16 -20
  109. package/dist/cjs/messages/ids.cjs.map +1 -1
  110. package/dist/cjs/messages/index.cjs +12 -0
  111. package/dist/cjs/messages/langchain.cjs +18 -18
  112. package/dist/cjs/messages/langchain.cjs.map +1 -1
  113. package/dist/cjs/messages/prune.cjs +1054 -1517
  114. package/dist/cjs/messages/prune.cjs.map +1 -1
  115. package/dist/cjs/messages/recency.cjs +77 -95
  116. package/dist/cjs/messages/recency.cjs.map +1 -1
  117. package/dist/cjs/messages/reducer.cjs +63 -78
  118. package/dist/cjs/messages/reducer.cjs.map +1 -1
  119. package/dist/cjs/messages/tools.cjs +51 -79
  120. package/dist/cjs/messages/tools.cjs.map +1 -1
  121. package/dist/cjs/openai/index.cjs +171 -217
  122. package/dist/cjs/openai/index.cjs.map +1 -1
  123. package/dist/cjs/responses/index.cjs +302 -391
  124. package/dist/cjs/responses/index.cjs.map +1 -1
  125. package/dist/cjs/run.cjs +903 -1113
  126. package/dist/cjs/run.cjs.map +1 -1
  127. package/dist/cjs/session/AgentSession.cjs +805 -986
  128. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  129. package/dist/cjs/session/JsonlSessionStore.cjs +327 -410
  130. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  131. package/dist/cjs/session/handlers.cjs +192 -208
  132. package/dist/cjs/session/handlers.cjs.map +1 -1
  133. package/dist/cjs/session/ids.cjs +9 -10
  134. package/dist/cjs/session/ids.cjs.map +1 -1
  135. package/dist/cjs/session/index.cjs +4 -0
  136. package/dist/cjs/session/messageSerialization.cjs +94 -156
  137. package/dist/cjs/session/messageSerialization.cjs.map +1 -1
  138. package/dist/cjs/splitStream.cjs +147 -206
  139. package/dist/cjs/splitStream.cjs.map +1 -1
  140. package/dist/cjs/stream.cjs +874 -1344
  141. package/dist/cjs/stream.cjs.map +1 -1
  142. package/dist/cjs/summarization/index.cjs +57 -101
  143. package/dist/cjs/summarization/index.cjs.map +1 -1
  144. package/dist/cjs/summarization/node.cjs +643 -796
  145. package/dist/cjs/summarization/node.cjs.map +1 -1
  146. package/dist/cjs/tools/BashExecutor.cjs +110 -136
  147. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  148. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +165 -245
  149. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  150. package/dist/cjs/tools/Calculator.cjs +36 -57
  151. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  152. package/dist/cjs/tools/CodeExecutor.cjs +126 -168
  153. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  154. package/dist/cjs/tools/CodeSessionFileSummary.cjs +36 -46
  155. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
  156. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +459 -649
  157. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  158. package/dist/cjs/tools/ReadFile.cjs +17 -20
  159. package/dist/cjs/tools/ReadFile.cjs.map +1 -1
  160. package/dist/cjs/tools/SkillTool.cjs +26 -27
  161. package/dist/cjs/tools/SkillTool.cjs.map +1 -1
  162. package/dist/cjs/tools/SubagentTool.cjs +59 -61
  163. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  164. package/dist/cjs/tools/ToolNode.cjs +2146 -2686
  165. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  166. package/dist/cjs/tools/ToolSearch.cjs +663 -825
  167. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  168. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs +248 -340
  169. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
  170. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +170 -197
  171. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  172. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +425 -520
  173. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
  174. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +91 -124
  175. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
  176. package/dist/cjs/tools/cloudflare/index.cjs +4 -0
  177. package/dist/cjs/tools/eagerEventExecution.cjs +75 -99
  178. package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
  179. package/dist/cjs/tools/handlers.cjs +200 -262
  180. package/dist/cjs/tools/handlers.cjs.map +1 -1
  181. package/dist/cjs/tools/local/CompileCheckTool.cjs +150 -212
  182. package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
  183. package/dist/cjs/tools/local/FileCheckpointer.cjs +77 -85
  184. package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
  185. package/dist/cjs/tools/local/LocalCodingTools.cjs +763 -1022
  186. package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
  187. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +666 -941
  188. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  189. package/dist/cjs/tools/local/LocalExecutionTools.cjs +49 -92
  190. package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
  191. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +286 -354
  192. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  193. package/dist/cjs/tools/local/attachments.cjs +108 -165
  194. package/dist/cjs/tools/local/attachments.cjs.map +1 -1
  195. package/dist/cjs/tools/local/bashAst.cjs +99 -113
  196. package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
  197. package/dist/cjs/tools/local/editStrategies.cjs +126 -169
  198. package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
  199. package/dist/cjs/tools/local/index.cjs +12 -0
  200. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +136 -218
  201. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  202. package/dist/cjs/tools/local/syntaxCheck.cjs +142 -161
  203. package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
  204. package/dist/cjs/tools/local/textEncoding.cjs +25 -23
  205. package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
  206. package/dist/cjs/tools/local/workspaceFS.cjs +38 -46
  207. package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
  208. package/dist/cjs/tools/ptcTimeout.cjs +27 -47
  209. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  210. package/dist/cjs/tools/schema.cjs +24 -23
  211. package/dist/cjs/tools/schema.cjs.map +1 -1
  212. package/dist/cjs/tools/search/anthropic.cjs +24 -33
  213. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  214. package/dist/cjs/tools/search/content.cjs +95 -137
  215. package/dist/cjs/tools/search/content.cjs.map +1 -1
  216. package/dist/cjs/tools/search/firecrawl.cjs +141 -172
  217. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  218. package/dist/cjs/tools/search/format.cjs +128 -196
  219. package/dist/cjs/tools/search/format.cjs.map +1 -1
  220. package/dist/cjs/tools/search/highlights.cjs +165 -232
  221. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  222. package/dist/cjs/tools/search/index.cjs +2 -0
  223. package/dist/cjs/tools/search/rerankers.cjs +151 -174
  224. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  225. package/dist/cjs/tools/search/schema.cjs +40 -39
  226. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  227. package/dist/cjs/tools/search/search.cjs +428 -530
  228. package/dist/cjs/tools/search/search.cjs.map +1 -1
  229. package/dist/cjs/tools/search/serper-scraper.cjs +106 -127
  230. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  231. package/dist/cjs/tools/search/tavily-scraper.cjs +129 -181
  232. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
  233. package/dist/cjs/tools/search/tavily-search.cjs +295 -359
  234. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
  235. package/dist/cjs/tools/search/tool.cjs +260 -299
  236. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  237. package/dist/cjs/tools/search/utils.cjs +74 -117
  238. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  239. package/dist/cjs/tools/skillCatalog.cjs +54 -72
  240. package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
  241. package/dist/cjs/tools/streamedToolCallSeals.cjs +46 -34
  242. package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
  243. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +612 -771
  244. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  245. package/dist/cjs/tools/subagent/index.cjs +1 -0
  246. package/dist/cjs/tools/toolOutputReferences.cjs +523 -630
  247. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  248. package/dist/cjs/utils/callbacks.cjs +11 -21
  249. package/dist/cjs/utils/callbacks.cjs.map +1 -1
  250. package/dist/cjs/utils/errors.cjs +70 -95
  251. package/dist/cjs/utils/errors.cjs.map +1 -1
  252. package/dist/cjs/utils/events.cjs +32 -42
  253. package/dist/cjs/utils/events.cjs.map +1 -1
  254. package/dist/cjs/utils/graph.cjs +8 -12
  255. package/dist/cjs/utils/graph.cjs.map +1 -1
  256. package/dist/cjs/utils/handlers.cjs +60 -82
  257. package/dist/cjs/utils/handlers.cjs.map +1 -1
  258. package/dist/cjs/utils/index.cjs +9 -0
  259. package/dist/cjs/utils/llm.cjs +19 -27
  260. package/dist/cjs/utils/llm.cjs.map +1 -1
  261. package/dist/cjs/utils/misc.cjs +30 -46
  262. package/dist/cjs/utils/misc.cjs.map +1 -1
  263. package/dist/cjs/utils/run.cjs +50 -66
  264. package/dist/cjs/utils/run.cjs.map +1 -1
  265. package/dist/cjs/utils/schema.cjs +11 -19
  266. package/dist/cjs/utils/schema.cjs.map +1 -1
  267. package/dist/cjs/utils/title.cjs +71 -106
  268. package/dist/cjs/utils/title.cjs.map +1 -1
  269. package/dist/cjs/utils/tokens.cjs +186 -283
  270. package/dist/cjs/utils/tokens.cjs.map +1 -1
  271. package/dist/cjs/utils/truncation.cjs +95 -114
  272. package/dist/cjs/utils/truncation.cjs.map +1 -1
  273. package/dist/esm/agents/AgentContext.mjs +844 -1044
  274. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  275. package/dist/esm/common/constants.mjs +13 -11
  276. package/dist/esm/common/constants.mjs.map +1 -1
  277. package/dist/esm/common/enum.mjs +221 -238
  278. package/dist/esm/common/enum.mjs.map +1 -1
  279. package/dist/esm/common/index.mjs +3 -0
  280. package/dist/esm/events.mjs +121 -167
  281. package/dist/esm/events.mjs.map +1 -1
  282. package/dist/esm/graphs/Graph.mjs +1388 -1804
  283. package/dist/esm/graphs/Graph.mjs.map +1 -1
  284. package/dist/esm/graphs/MultiAgentGraph.mjs +713 -943
  285. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  286. package/dist/esm/graphs/index.mjs +3 -0
  287. package/dist/esm/hitl/askUserQuestion.mjs +60 -60
  288. package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
  289. package/dist/esm/hitl/index.mjs +2 -0
  290. package/dist/esm/hooks/HookRegistry.mjs +176 -200
  291. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  292. package/dist/esm/hooks/createToolPolicyHook.mjs +71 -99
  293. package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
  294. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +170 -271
  295. package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
  296. package/dist/esm/hooks/executeHooks.mjs +227 -280
  297. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  298. package/dist/esm/hooks/index.mjs +7 -0
  299. package/dist/esm/hooks/matchers.mjs +196 -228
  300. package/dist/esm/hooks/matchers.mjs.map +1 -1
  301. package/dist/esm/hooks/types.mjs +24 -22
  302. package/dist/esm/hooks/types.mjs.map +1 -1
  303. package/dist/esm/instrumentation.mjs +109 -132
  304. package/dist/esm/instrumentation.mjs.map +1 -1
  305. package/dist/esm/langchain/google-common.mjs +1 -2
  306. package/dist/esm/langchain/index.mjs +5 -5
  307. package/dist/esm/langchain/language_models/chat_models.mjs +1 -2
  308. package/dist/esm/langchain/messages/tool.mjs +1 -2
  309. package/dist/esm/langchain/messages.mjs +2 -2
  310. package/dist/esm/langchain/openai.mjs +1 -2
  311. package/dist/esm/langchain/prompts.mjs +2 -2
  312. package/dist/esm/langchain/runnables.mjs +2 -2
  313. package/dist/esm/langchain/tools.mjs +2 -2
  314. package/dist/esm/langchain/utils/env.mjs +2 -2
  315. package/dist/esm/langfuse.mjs +60 -76
  316. package/dist/esm/langfuse.mjs.map +1 -1
  317. package/dist/esm/langfuseToolOutputTracing.mjs +267 -395
  318. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  319. package/dist/esm/llm/anthropic/index.mjs +432 -559
  320. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  321. package/dist/esm/llm/anthropic/types.mjs +23 -45
  322. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  323. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +439 -725
  324. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  325. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +171 -253
  326. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  327. package/dist/esm/llm/anthropic/utils/output_parsers.mjs +3 -0
  328. package/dist/esm/llm/anthropic/utils/tools.mjs +12 -24
  329. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  330. package/dist/esm/llm/bedrock/index.mjs +214 -238
  331. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  332. package/dist/esm/llm/bedrock/toolCache.mjs +84 -104
  333. package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
  334. package/dist/esm/llm/bedrock/utils/index.mjs +3 -0
  335. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +357 -618
  336. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  337. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +140 -147
  338. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
  339. package/dist/esm/llm/fake.mjs +86 -94
  340. package/dist/esm/llm/fake.mjs.map +1 -1
  341. package/dist/esm/llm/google/index.mjs +183 -235
  342. package/dist/esm/llm/google/index.mjs.map +1 -1
  343. package/dist/esm/llm/google/utils/common.mjs +403 -666
  344. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  345. package/dist/esm/llm/google/utils/zod_to_genai_parameters.mjs +3 -0
  346. package/dist/esm/llm/init.mjs +44 -51
  347. package/dist/esm/llm/init.mjs.map +1 -1
  348. package/dist/esm/llm/invoke.mjs +142 -180
  349. package/dist/esm/llm/invoke.mjs.map +1 -1
  350. package/dist/esm/llm/openai/index.mjs +1035 -1268
  351. package/dist/esm/llm/openai/index.mjs.map +1 -1
  352. package/dist/esm/llm/openai/utils/index.mjs +188 -312
  353. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  354. package/dist/esm/llm/openrouter/index.mjs +102 -151
  355. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  356. package/dist/esm/llm/openrouter/toolCache.mjs +35 -42
  357. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  358. package/dist/esm/llm/providers.mjs +29 -34
  359. package/dist/esm/llm/providers.mjs.map +1 -1
  360. package/dist/esm/llm/request.mjs +20 -31
  361. package/dist/esm/llm/request.mjs.map +1 -1
  362. package/dist/esm/llm/vertexai/index.mjs +446 -449
  363. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  364. package/dist/esm/main.mjs +99 -87
  365. package/dist/esm/messages/anthropicToolCache.mjs +68 -117
  366. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  367. package/dist/esm/messages/cache.mjs +305 -416
  368. package/dist/esm/messages/cache.mjs.map +1 -1
  369. package/dist/esm/messages/content.mjs +36 -47
  370. package/dist/esm/messages/content.mjs.map +1 -1
  371. package/dist/esm/messages/contextPruning.mjs +112 -143
  372. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  373. package/dist/esm/messages/contextPruningSettings.mjs +36 -44
  374. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  375. package/dist/esm/messages/core.mjs +254 -393
  376. package/dist/esm/messages/core.mjs.map +1 -1
  377. package/dist/esm/messages/format.mjs +902 -1383
  378. package/dist/esm/messages/format.mjs.map +1 -1
  379. package/dist/esm/messages/ids.mjs +16 -18
  380. package/dist/esm/messages/ids.mjs.map +1 -1
  381. package/dist/esm/messages/index.mjs +13 -0
  382. package/dist/esm/messages/langchain.mjs +18 -16
  383. package/dist/esm/messages/langchain.mjs.map +1 -1
  384. package/dist/esm/messages/prune.mjs +1053 -1514
  385. package/dist/esm/messages/prune.mjs.map +1 -1
  386. package/dist/esm/messages/recency.mjs +77 -93
  387. package/dist/esm/messages/recency.mjs.map +1 -1
  388. package/dist/esm/messages/reducer.mjs +63 -76
  389. package/dist/esm/messages/reducer.mjs.map +1 -1
  390. package/dist/esm/messages/tools.mjs +49 -75
  391. package/dist/esm/messages/tools.mjs.map +1 -1
  392. package/dist/esm/openai/index.mjs +170 -215
  393. package/dist/esm/openai/index.mjs.map +1 -1
  394. package/dist/esm/responses/index.mjs +301 -389
  395. package/dist/esm/responses/index.mjs.map +1 -1
  396. package/dist/esm/run.mjs +903 -1111
  397. package/dist/esm/run.mjs.map +1 -1
  398. package/dist/esm/session/AgentSession.mjs +806 -985
  399. package/dist/esm/session/AgentSession.mjs.map +1 -1
  400. package/dist/esm/session/JsonlSessionStore.mjs +326 -407
  401. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  402. package/dist/esm/session/handlers.mjs +192 -206
  403. package/dist/esm/session/handlers.mjs.map +1 -1
  404. package/dist/esm/session/ids.mjs +9 -8
  405. package/dist/esm/session/ids.mjs.map +1 -1
  406. package/dist/esm/session/index.mjs +5 -0
  407. package/dist/esm/session/messageSerialization.mjs +94 -154
  408. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  409. package/dist/esm/splitStream.mjs +147 -204
  410. package/dist/esm/splitStream.mjs.map +1 -1
  411. package/dist/esm/stream.mjs +872 -1341
  412. package/dist/esm/stream.mjs.map +1 -1
  413. package/dist/esm/summarization/index.mjs +57 -99
  414. package/dist/esm/summarization/index.mjs.map +1 -1
  415. package/dist/esm/summarization/node.mjs +640 -790
  416. package/dist/esm/summarization/node.mjs.map +1 -1
  417. package/dist/esm/tools/BashExecutor.mjs +103 -129
  418. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  419. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +162 -239
  420. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  421. package/dist/esm/tools/Calculator.mjs +34 -36
  422. package/dist/esm/tools/Calculator.mjs.map +1 -1
  423. package/dist/esm/tools/CodeExecutor.mjs +123 -164
  424. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  425. package/dist/esm/tools/CodeSessionFileSummary.mjs +36 -44
  426. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  427. package/dist/esm/tools/ProgrammaticToolCalling.mjs +454 -644
  428. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  429. package/dist/esm/tools/ReadFile.mjs +17 -18
  430. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  431. package/dist/esm/tools/SkillTool.mjs +26 -25
  432. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  433. package/dist/esm/tools/SubagentTool.mjs +59 -59
  434. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  435. package/dist/esm/tools/ToolNode.mjs +2144 -2684
  436. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  437. package/dist/esm/tools/ToolSearch.mjs +659 -804
  438. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  439. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs +248 -338
  440. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  441. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +170 -195
  442. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  443. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +424 -517
  444. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  445. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +91 -122
  446. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  447. package/dist/esm/tools/cloudflare/index.mjs +5 -0
  448. package/dist/esm/tools/eagerEventExecution.mjs +75 -96
  449. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  450. package/dist/esm/tools/handlers.mjs +200 -260
  451. package/dist/esm/tools/handlers.mjs.map +1 -1
  452. package/dist/esm/tools/local/CompileCheckTool.mjs +150 -210
  453. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  454. package/dist/esm/tools/local/FileCheckpointer.mjs +77 -83
  455. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  456. package/dist/esm/tools/local/LocalCodingTools.mjs +760 -1017
  457. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  458. package/dist/esm/tools/local/LocalExecutionEngine.mjs +663 -936
  459. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  460. package/dist/esm/tools/local/LocalExecutionTools.mjs +49 -90
  461. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  462. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +283 -349
  463. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  464. package/dist/esm/tools/local/attachments.mjs +108 -163
  465. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  466. package/dist/esm/tools/local/bashAst.mjs +99 -111
  467. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  468. package/dist/esm/tools/local/editStrategies.mjs +126 -167
  469. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  470. package/dist/esm/tools/local/index.mjs +13 -0
  471. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +136 -216
  472. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  473. package/dist/esm/tools/local/syntaxCheck.mjs +138 -155
  474. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  475. package/dist/esm/tools/local/textEncoding.mjs +25 -21
  476. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  477. package/dist/esm/tools/local/workspaceFS.mjs +38 -44
  478. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  479. package/dist/esm/tools/ptcTimeout.mjs +27 -42
  480. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  481. package/dist/esm/tools/schema.mjs +24 -21
  482. package/dist/esm/tools/schema.mjs.map +1 -1
  483. package/dist/esm/tools/search/anthropic.mjs +24 -31
  484. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  485. package/dist/esm/tools/search/content.mjs +93 -116
  486. package/dist/esm/tools/search/content.mjs.map +1 -1
  487. package/dist/esm/tools/search/firecrawl.mjs +139 -169
  488. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  489. package/dist/esm/tools/search/format.mjs +128 -194
  490. package/dist/esm/tools/search/format.mjs.map +1 -1
  491. package/dist/esm/tools/search/highlights.mjs +165 -230
  492. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  493. package/dist/esm/tools/search/index.mjs +3 -0
  494. package/dist/esm/tools/search/rerankers.mjs +149 -168
  495. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  496. package/dist/esm/tools/search/schema.mjs +39 -37
  497. package/dist/esm/tools/search/schema.mjs.map +1 -1
  498. package/dist/esm/tools/search/search.mjs +426 -528
  499. package/dist/esm/tools/search/search.mjs.map +1 -1
  500. package/dist/esm/tools/search/serper-scraper.mjs +104 -124
  501. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  502. package/dist/esm/tools/search/tavily-scraper.mjs +127 -178
  503. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  504. package/dist/esm/tools/search/tavily-search.mjs +293 -357
  505. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  506. package/dist/esm/tools/search/tool.mjs +259 -297
  507. package/dist/esm/tools/search/tool.mjs.map +1 -1
  508. package/dist/esm/tools/search/utils.mjs +74 -115
  509. package/dist/esm/tools/search/utils.mjs.map +1 -1
  510. package/dist/esm/tools/skillCatalog.mjs +54 -70
  511. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  512. package/dist/esm/tools/streamedToolCallSeals.mjs +42 -31
  513. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  514. package/dist/esm/tools/subagent/SubagentExecutor.mjs +612 -768
  515. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  516. package/dist/esm/tools/subagent/index.mjs +2 -0
  517. package/dist/esm/tools/toolOutputReferences.mjs +523 -624
  518. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  519. package/dist/esm/utils/callbacks.mjs +11 -19
  520. package/dist/esm/utils/callbacks.mjs.map +1 -1
  521. package/dist/esm/utils/errors.mjs +70 -93
  522. package/dist/esm/utils/errors.mjs.map +1 -1
  523. package/dist/esm/utils/events.mjs +32 -40
  524. package/dist/esm/utils/events.mjs.map +1 -1
  525. package/dist/esm/utils/graph.mjs +8 -10
  526. package/dist/esm/utils/graph.mjs.map +1 -1
  527. package/dist/esm/utils/handlers.mjs +60 -80
  528. package/dist/esm/utils/handlers.mjs.map +1 -1
  529. package/dist/esm/utils/index.mjs +10 -0
  530. package/dist/esm/utils/llm.mjs +19 -25
  531. package/dist/esm/utils/llm.mjs.map +1 -1
  532. package/dist/esm/utils/misc.mjs +30 -44
  533. package/dist/esm/utils/misc.mjs.map +1 -1
  534. package/dist/esm/utils/run.mjs +50 -64
  535. package/dist/esm/utils/run.mjs.map +1 -1
  536. package/dist/esm/utils/schema.mjs +11 -17
  537. package/dist/esm/utils/schema.mjs.map +1 -1
  538. package/dist/esm/utils/title.mjs +71 -104
  539. package/dist/esm/utils/title.mjs.map +1 -1
  540. package/dist/esm/utils/tokens.mjs +186 -281
  541. package/dist/esm/utils/tokens.mjs.map +1 -1
  542. package/dist/esm/utils/truncation.mjs +95 -112
  543. package/dist/esm/utils/truncation.mjs.map +1 -1
  544. package/dist/types/llm/bedrock/utils/index.d.ts +1 -1
  545. package/dist/types/llm/bedrock/utils/message_outputs.d.ts +9 -0
  546. package/dist/types/llm/vertexai/index.d.ts +10 -0
  547. package/dist/types/tools/ToolNode.d.ts +8 -0
  548. package/dist/types/tools/search/tool.d.ts +17 -0
  549. package/dist/types/tools/search/types.d.ts +4 -0
  550. package/dist/types/tools/streamedToolCallSeals.d.ts +5 -1
  551. package/dist/types/types/tools.d.ts +10 -0
  552. package/package.json +4 -10
  553. package/src/__tests__/stream.eagerEventExecution.test.ts +703 -0
  554. package/src/llm/bedrock/index.ts +40 -0
  555. package/src/llm/bedrock/streamSealDispatch.test.ts +158 -0
  556. package/src/llm/bedrock/utils/index.ts +1 -0
  557. package/src/llm/bedrock/utils/message_outputs.test.ts +85 -0
  558. package/src/llm/bedrock/utils/message_outputs.ts +43 -0
  559. package/src/llm/google/utils/common.test.ts +64 -0
  560. package/src/llm/google/utils/common.ts +18 -0
  561. package/src/llm/openai/index.ts +95 -1
  562. package/src/llm/openai/sequentialToolCallSeals.test.ts +199 -0
  563. package/src/llm/vertexai/index.ts +31 -0
  564. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +88 -0
  565. package/src/llm/vertexai/streamSealDispatch.test.ts +148 -0
  566. package/src/stream.ts +40 -6
  567. package/src/tools/ToolNode.ts +85 -3
  568. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +368 -0
  569. package/src/tools/search/highlights.ts +9 -1
  570. package/src/tools/search/search.ts +41 -3
  571. package/src/tools/search/source-processing.test.ts +373 -0
  572. package/src/tools/search/tool.ts +22 -2
  573. package/src/tools/search/types.ts +4 -0
  574. package/src/tools/streamedToolCallSeals.ts +37 -9
  575. package/src/types/tools.ts +10 -0
  576. package/dist/cjs/langchain/google-common.cjs.map +0 -1
  577. package/dist/cjs/langchain/index.cjs.map +0 -1
  578. package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
  579. package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
  580. package/dist/cjs/langchain/messages.cjs.map +0 -1
  581. package/dist/cjs/langchain/openai.cjs.map +0 -1
  582. package/dist/cjs/langchain/prompts.cjs.map +0 -1
  583. package/dist/cjs/langchain/runnables.cjs.map +0 -1
  584. package/dist/cjs/langchain/tools.cjs.map +0 -1
  585. package/dist/cjs/langchain/utils/env.cjs.map +0 -1
  586. package/dist/cjs/main.cjs.map +0 -1
  587. package/dist/esm/langchain/google-common.mjs.map +0 -1
  588. package/dist/esm/langchain/index.mjs.map +0 -1
  589. package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
  590. package/dist/esm/langchain/messages/tool.mjs.map +0 -1
  591. package/dist/esm/langchain/messages.mjs.map +0 -1
  592. package/dist/esm/langchain/openai.mjs.map +0 -1
  593. package/dist/esm/langchain/prompts.mjs.map +0 -1
  594. package/dist/esm/langchain/runnables.mjs.map +0 -1
  595. package/dist/esm/langchain/tools.mjs.map +0 -1
  596. package/dist/esm/langchain/utils/env.mjs.map +0 -1
  597. package/dist/esm/main.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
- import { ToolMessage, AIMessageChunk, AIMessage, HumanMessage } from '@langchain/core/messages';
2
- import { Providers, ContentTypes } from '../common/enum.mjs';
3
- import { toLangChainContent } from './langchain.mjs';
4
-
5
- // src/messages.ts
6
- function getConverseOverrideMessage({ userMessage, lastMessageX, lastMessageY, }) {
7
- const content = `
1
+ import "../common/enum.mjs";
2
+ import "../common/index.mjs";
3
+ import { toLangChainContent } from "./langchain.mjs";
4
+ import { AIMessage, AIMessageChunk, HumanMessage, ToolMessage } from "@langchain/core/messages";
5
+ //#region src/messages/core.ts
6
+ function getConverseOverrideMessage({ userMessage, lastMessageX, lastMessageY }) {
7
+ return new HumanMessage(`
8
8
  User: ${userMessage[1]}
9
9
 
10
10
  ---
@@ -14,421 +14,282 @@ User: ${userMessage[1]}
14
14
  - ${lastMessageX?.content}
15
15
 
16
16
  # Tool Calls:
17
- - ${lastMessageX?.tool_calls?.join('\n- ')}
17
+ - ${lastMessageX?.tool_calls?.join("\n- ")}
18
18
 
19
19
  # Tool Responses:
20
20
  - ${lastMessageY.content}
21
- `;
22
- return new HumanMessage(content);
21
+ `);
23
22
  }
24
- const _allowedTypes = ['image_url', 'text', 'tool_use', 'tool_result'];
23
+ const _allowedTypes = [
24
+ "image_url",
25
+ "text",
26
+ "tool_use",
27
+ "tool_result"
28
+ ];
25
29
  const allowedTypesByProvider = {
26
- default: _allowedTypes,
27
- [Providers.ANTHROPIC]: [
28
- ..._allowedTypes,
29
- 'thinking',
30
- 'redacted_thinking',
31
- 'server_tool_use',
32
- 'web_search_tool_result',
33
- 'web_search_result',
34
- ],
35
- [Providers.BEDROCK]: [..._allowedTypes, 'reasoning_content'],
36
- [Providers.OPENAI]: _allowedTypes,
30
+ default: _allowedTypes,
31
+ ["anthropic"]: [
32
+ ..._allowedTypes,
33
+ "thinking",
34
+ "redacted_thinking",
35
+ "server_tool_use",
36
+ "web_search_tool_result",
37
+ "web_search_result"
38
+ ],
39
+ ["bedrock"]: [..._allowedTypes, "reasoning_content"],
40
+ ["openAI"]: _allowedTypes
37
41
  };
38
- const modifyContent = ({ provider, messageType, content, }) => {
39
- const allowedTypes = allowedTypesByProvider[provider] ?? allowedTypesByProvider.default;
40
- return content.map((item) => {
41
- if (item &&
42
- typeof item === 'object' &&
43
- 'type' in item &&
44
- item.type != null &&
45
- item.type) {
46
- let newType = item.type;
47
- if (newType.endsWith('_delta')) {
48
- newType = newType.replace('_delta', '');
49
- }
50
- if (!allowedTypes.includes(newType)) {
51
- newType = 'text';
52
- }
53
- /* Handle the edge case for empty object 'tool_use' input in AI messages */
54
- if (messageType === 'ai' &&
55
- newType === 'tool_use' &&
56
- 'input' in item &&
57
- item.input === '') {
58
- return { ...item, type: newType, input: '{}' };
59
- }
60
- return { ...item, type: newType };
61
- }
62
- return item;
63
- });
42
+ const modifyContent = ({ provider, messageType, content }) => {
43
+ const allowedTypes = allowedTypesByProvider[provider] ?? allowedTypesByProvider.default;
44
+ return content.map((item) => {
45
+ if (item && typeof item === "object" && "type" in item && item.type != null && item.type) {
46
+ let newType = item.type;
47
+ if (newType.endsWith("_delta")) newType = newType.replace("_delta", "");
48
+ if (!allowedTypes.includes(newType)) newType = "text";
49
+ if (messageType === "ai" && newType === "tool_use" && "input" in item && item.input === "") return {
50
+ ...item,
51
+ type: newType,
52
+ input: "{}"
53
+ };
54
+ return {
55
+ ...item,
56
+ type: newType
57
+ };
58
+ }
59
+ return item;
60
+ });
64
61
  };
65
62
  function reduceBlocks(blocks) {
66
- const reduced = [];
67
- for (const block of blocks) {
68
- const lastBlock = reduced[reduced.length - 1];
69
- // Merge consecutive 'reasoning_content'
70
- if (block.type === 'reasoning_content' &&
71
- lastBlock?.type === 'reasoning_content') {
72
- // append text if exists
73
- if (block.reasoningText?.text != null && block.reasoningText.text) {
74
- lastBlock.reasoningText.text =
75
- (lastBlock.reasoningText?.text ?? '') + block.reasoningText.text;
76
- }
77
- // preserve the signature if exists
78
- if (block.reasoningText?.signature != null &&
79
- block.reasoningText.signature) {
80
- lastBlock.reasoningText.signature = block.reasoningText.signature;
81
- }
82
- }
83
- // Merge consecutive 'text'
84
- else if (block.type === 'text' && lastBlock?.type === 'text') {
85
- lastBlock.text += block.text;
86
- }
87
- // add a new block as it's a different type or first element
88
- else {
89
- // deep copy to avoid mutation of original
90
- reduced.push(JSON.parse(JSON.stringify(block)));
91
- }
92
- }
93
- return reduced;
63
+ const reduced = [];
64
+ for (const block of blocks) {
65
+ const lastBlock = reduced[reduced.length - 1];
66
+ if (block.type === "reasoning_content" && lastBlock?.type === "reasoning_content") {
67
+ if (block.reasoningText?.text != null && block.reasoningText.text) lastBlock.reasoningText.text = (lastBlock.reasoningText?.text ?? "") + block.reasoningText.text;
68
+ if (block.reasoningText?.signature != null && block.reasoningText.signature) lastBlock.reasoningText.signature = block.reasoningText.signature;
69
+ } else if (block.type === "text" && lastBlock?.type === "text") lastBlock.text += block.text;
70
+ else reduced.push(JSON.parse(JSON.stringify(block)));
71
+ }
72
+ return reduced;
94
73
  }
95
74
  function getReasoningText(value) {
96
- if (typeof value === 'string') {
97
- return value !== '' ? value : undefined;
98
- }
99
- const summaryText = value?.summary
100
- ?.map((summary) => summary.text ?? '')
101
- .filter((text) => text !== '')
102
- .join('');
103
- return summaryText != null && summaryText !== '' ? summaryText : undefined;
75
+ if (typeof value === "string") return value !== "" ? value : void 0;
76
+ const summaryText = value?.summary?.map((summary) => summary.text ?? "").filter((text) => text !== "").join("");
77
+ return summaryText != null && summaryText !== "" ? summaryText : void 0;
104
78
  }
105
79
  function getReasoningDetailsText(value) {
106
- if (!Array.isArray(value)) {
107
- return undefined;
108
- }
109
- const reasoningText = value
110
- .filter((detail) => detail.type === 'reasoning.text')
111
- .map((detail) => detail.text ?? '')
112
- .filter((text) => text !== '')
113
- .join('');
114
- return reasoningText !== '' ? reasoningText : undefined;
80
+ if (!Array.isArray(value)) return;
81
+ const reasoningText = value.filter((detail) => detail.type === "reasoning.text").map((detail) => detail.text ?? "").filter((text) => text !== "").join("");
82
+ return reasoningText !== "" ? reasoningText : void 0;
115
83
  }
116
84
  function getAdditionalReasoningContent(message) {
117
- const additionalKwargs = message.additional_kwargs;
118
- if (additionalKwargs == null) {
119
- return undefined;
120
- }
121
- const reasoningContent = getReasoningText(additionalKwargs.reasoning_content);
122
- if (reasoningContent != null) {
123
- return reasoningContent;
124
- }
125
- const reasoning = getReasoningText(additionalKwargs.reasoning);
126
- if (reasoning != null) {
127
- return reasoning;
128
- }
129
- return getReasoningDetailsText(additionalKwargs.reasoning_details);
85
+ const additionalKwargs = message.additional_kwargs;
86
+ if (additionalKwargs == null) return;
87
+ const reasoningContent = getReasoningText(additionalKwargs.reasoning_content);
88
+ if (reasoningContent != null) return reasoningContent;
89
+ const reasoning = getReasoningText(additionalKwargs.reasoning);
90
+ if (reasoning != null) return reasoning;
91
+ return getReasoningDetailsText(additionalKwargs.reasoning_details);
130
92
  }
131
93
  function hasReasoningContent(content) {
132
- if (!Array.isArray(content)) {
133
- return false;
134
- }
135
- return content.some((item) => {
136
- if (typeof item !== 'object' || !('type' in item)) {
137
- return false;
138
- }
139
- return (item.type === ContentTypes.THINK ||
140
- item.type === ContentTypes.THINKING ||
141
- item.type === ContentTypes.REASONING ||
142
- item.type === ContentTypes.REASONING_CONTENT ||
143
- item.type === 'redacted_thinking');
144
- });
94
+ if (!Array.isArray(content)) return false;
95
+ return content.some((item) => {
96
+ if (typeof item !== "object" || !("type" in item)) return false;
97
+ return item.type === "think" || item.type === "thinking" || item.type === "reasoning" || item.type === "reasoning_content" || item.type === "redacted_thinking";
98
+ });
145
99
  }
146
100
  function modifyDeltaProperties(provider, obj) {
147
- if (!obj || typeof obj !== 'object')
148
- return obj;
149
- const messageType = obj._getType
150
- ? obj._getType()
151
- : '';
152
- if (provider === Providers.BEDROCK && Array.isArray(obj.content)) {
153
- obj.content = toLangChainContent(reduceBlocks(obj.content));
154
- }
155
- if (Array.isArray(obj.content)) {
156
- obj.content = toLangChainContent(modifyContent({
157
- provider,
158
- messageType,
159
- content: obj.content,
160
- }));
161
- }
162
- if (obj.lc_kwargs &&
163
- Array.isArray(obj.lc_kwargs.content)) {
164
- if (provider === Providers.BEDROCK) {
165
- obj.lc_kwargs.content = reduceBlocks(obj.lc_kwargs.content);
166
- }
167
- obj.lc_kwargs.content = modifyContent({
168
- provider,
169
- messageType,
170
- content: obj.lc_kwargs.content,
171
- });
172
- }
173
- return obj;
101
+ if (!obj || typeof obj !== "object") return obj;
102
+ const messageType = obj._getType ? obj._getType() : "";
103
+ if (provider === "bedrock" && Array.isArray(obj.content)) obj.content = toLangChainContent(reduceBlocks(obj.content));
104
+ if (Array.isArray(obj.content)) obj.content = toLangChainContent(modifyContent({
105
+ provider,
106
+ messageType,
107
+ content: obj.content
108
+ }));
109
+ if (obj.lc_kwargs && Array.isArray(obj.lc_kwargs.content)) {
110
+ if (provider === "bedrock") obj.lc_kwargs.content = reduceBlocks(obj.lc_kwargs.content);
111
+ obj.lc_kwargs.content = modifyContent({
112
+ provider,
113
+ messageType,
114
+ content: obj.lc_kwargs.content
115
+ });
116
+ }
117
+ return obj;
174
118
  }
175
119
  function formatAnthropicMessage(message) {
176
- if (!message.tool_calls || message.tool_calls.length === 0) {
177
- return new AIMessage({ content: toLangChainContent(message.content) });
178
- }
179
- const toolCallMap = new Map(message.tool_calls.map((tc) => [tc.id, tc]));
180
- let formattedContent;
181
- if (Array.isArray(message.content)) {
182
- formattedContent = message.content.reduce((acc, item) => {
183
- if (typeof item === 'object') {
184
- const extendedItem = item;
185
- if (extendedItem.type === 'text' &&
186
- extendedItem.text != null &&
187
- extendedItem.text) {
188
- acc.push({ type: 'text', text: extendedItem.text });
189
- }
190
- else if (extendedItem.type === 'tool_use' &&
191
- extendedItem.id != null &&
192
- extendedItem.id) {
193
- const toolCall = toolCallMap.get(extendedItem.id);
194
- if (toolCall) {
195
- acc.push({
196
- type: 'tool_use',
197
- id: extendedItem.id,
198
- name: toolCall.name,
199
- input: toolCall.args,
200
- });
201
- }
202
- }
203
- else if ('input' in extendedItem &&
204
- extendedItem.input != null &&
205
- extendedItem.input) {
206
- try {
207
- const parsedInput = JSON.parse(extendedItem.input);
208
- const toolCall = message.tool_calls?.find((tc) => tc.args.input === parsedInput.input);
209
- if (toolCall) {
210
- acc.push({
211
- type: 'tool_use',
212
- id: toolCall.id,
213
- name: toolCall.name,
214
- input: toolCall.args,
215
- });
216
- }
217
- }
218
- catch {
219
- if (extendedItem.input) {
220
- acc.push({ type: 'text', text: extendedItem.input });
221
- }
222
- }
223
- }
224
- }
225
- else if (typeof item === 'string') {
226
- acc.push({ type: 'text', text: item });
227
- }
228
- return acc;
229
- }, []);
230
- }
231
- else if (typeof message.content === 'string') {
232
- formattedContent = message.content;
233
- }
234
- else {
235
- formattedContent = [];
236
- }
237
- // const formattedToolCalls: ToolCall[] = message.tool_calls.map(toolCall => ({
238
- // id: toolCall.id ?? '',
239
- // name: toolCall.name,
240
- // args: toolCall.args,
241
- // type: 'tool_call',
242
- // }));
243
- const formattedToolCalls = message.tool_calls.map((toolCall) => ({
244
- id: toolCall.id ?? '',
245
- type: 'function',
246
- function: {
247
- name: toolCall.name,
248
- arguments: toolCall.args,
249
- },
250
- }));
251
- return new AIMessage({
252
- content: toLangChainContent(formattedContent),
253
- tool_calls: formattedToolCalls,
254
- additional_kwargs: {
255
- ...message.additional_kwargs,
256
- },
257
- });
120
+ if (!message.tool_calls || message.tool_calls.length === 0) return new AIMessage({ content: toLangChainContent(message.content) });
121
+ const toolCallMap = new Map(message.tool_calls.map((tc) => [tc.id, tc]));
122
+ let formattedContent;
123
+ if (Array.isArray(message.content)) formattedContent = message.content.reduce((acc, item) => {
124
+ if (typeof item === "object") {
125
+ const extendedItem = item;
126
+ if (extendedItem.type === "text" && extendedItem.text != null && extendedItem.text) acc.push({
127
+ type: "text",
128
+ text: extendedItem.text
129
+ });
130
+ else if (extendedItem.type === "tool_use" && extendedItem.id != null && extendedItem.id) {
131
+ const toolCall = toolCallMap.get(extendedItem.id);
132
+ if (toolCall) acc.push({
133
+ type: "tool_use",
134
+ id: extendedItem.id,
135
+ name: toolCall.name,
136
+ input: toolCall.args
137
+ });
138
+ } else if ("input" in extendedItem && extendedItem.input != null && extendedItem.input) try {
139
+ const parsedInput = JSON.parse(extendedItem.input);
140
+ const toolCall = message.tool_calls?.find((tc) => tc.args.input === parsedInput.input);
141
+ if (toolCall) acc.push({
142
+ type: "tool_use",
143
+ id: toolCall.id,
144
+ name: toolCall.name,
145
+ input: toolCall.args
146
+ });
147
+ } catch {
148
+ if (extendedItem.input) acc.push({
149
+ type: "text",
150
+ text: extendedItem.input
151
+ });
152
+ }
153
+ } else if (typeof item === "string") acc.push({
154
+ type: "text",
155
+ text: item
156
+ });
157
+ return acc;
158
+ }, []);
159
+ else if (typeof message.content === "string") formattedContent = message.content;
160
+ else formattedContent = [];
161
+ const formattedToolCalls = message.tool_calls.map((toolCall) => ({
162
+ id: toolCall.id ?? "",
163
+ type: "function",
164
+ function: {
165
+ name: toolCall.name,
166
+ arguments: toolCall.args
167
+ }
168
+ }));
169
+ return new AIMessage({
170
+ content: toLangChainContent(formattedContent),
171
+ tool_calls: formattedToolCalls,
172
+ additional_kwargs: { ...message.additional_kwargs }
173
+ });
258
174
  }
259
175
  function convertMessagesToContent(messages) {
260
- const processedContent = [];
261
- const addToolCallBoundary = () => {
262
- processedContent.push({ type: ContentTypes.TEXT, text: '' });
263
- return processedContent.length - 1;
264
- };
265
- const addContentPart = (message) => {
266
- const content = message?.lc_kwargs.content != null
267
- ? message.lc_kwargs.content
268
- : message?.content;
269
- if (content === undefined) {
270
- return undefined;
271
- }
272
- const reasoningContent = message?._getType() === 'ai' && !hasReasoningContent(content)
273
- ? getAdditionalReasoningContent(message)
274
- : undefined;
275
- if (reasoningContent != null) {
276
- processedContent.push({
277
- type: ContentTypes.THINK,
278
- think: reasoningContent,
279
- });
280
- }
281
- if (typeof content === 'string') {
282
- if (content === '') {
283
- return undefined;
284
- }
285
- processedContent.push({
286
- type: ContentTypes.TEXT,
287
- text: content,
288
- });
289
- return processedContent.length - 1;
290
- }
291
- else if (Array.isArray(content)) {
292
- let textContentIndex;
293
- for (const item of content) {
294
- if (item == null || item.type === 'tool_use') {
295
- continue;
296
- }
297
- processedContent.push(item);
298
- if (item.type === ContentTypes.TEXT) {
299
- textContentIndex = processedContent.length - 1;
300
- }
301
- }
302
- return textContentIndex;
303
- }
304
- return undefined;
305
- };
306
- let currentAIMessageIndex = -1;
307
- const toolCallMap = new Map();
308
- for (let i = 0; i < messages.length; i++) {
309
- const message = messages[i];
310
- const messageType = message?._getType();
311
- if (messageType === 'ai' &&
312
- (message.tool_calls?.length ?? 0) > 0) {
313
- const tool_calls = message.tool_calls || [];
314
- for (const tool_call of tool_calls) {
315
- if (tool_call.id == null || !tool_call.id) {
316
- continue;
317
- }
318
- toolCallMap.set(tool_call.id, tool_call);
319
- }
320
- currentAIMessageIndex =
321
- addContentPart(message) ?? addToolCallBoundary();
322
- continue;
323
- }
324
- else if (messageType === 'tool' &&
325
- message.tool_call_id) {
326
- const id = message.tool_call_id;
327
- const output = message.content;
328
- const tool_call = toolCallMap.get(id);
329
- if (currentAIMessageIndex === -1) {
330
- processedContent.push({ type: 'text', text: '' });
331
- currentAIMessageIndex = processedContent.length - 1;
332
- }
333
- const contentPart = processedContent[currentAIMessageIndex];
334
- processedContent.push({
335
- type: 'tool_call',
336
- tool_call: Object.assign({}, tool_call, { output }),
337
- });
338
- const tool_call_ids = contentPart.tool_call_ids || [];
339
- tool_call_ids.push(id);
340
- contentPart.tool_call_ids = tool_call_ids;
341
- continue;
342
- }
343
- else if (messageType !== 'ai') {
344
- continue;
345
- }
346
- addContentPart(message);
347
- }
348
- return processedContent;
176
+ const processedContent = [];
177
+ const addToolCallBoundary = () => {
178
+ processedContent.push({
179
+ type: "text",
180
+ text: ""
181
+ });
182
+ return processedContent.length - 1;
183
+ };
184
+ const addContentPart = (message) => {
185
+ const content = message?.lc_kwargs.content != null ? message.lc_kwargs.content : message?.content;
186
+ if (content === void 0) return;
187
+ const reasoningContent = message?._getType() === "ai" && !hasReasoningContent(content) ? getAdditionalReasoningContent(message) : void 0;
188
+ if (reasoningContent != null) processedContent.push({
189
+ type: "think",
190
+ think: reasoningContent
191
+ });
192
+ if (typeof content === "string") {
193
+ if (content === "") return;
194
+ processedContent.push({
195
+ type: "text",
196
+ text: content
197
+ });
198
+ return processedContent.length - 1;
199
+ } else if (Array.isArray(content)) {
200
+ let textContentIndex;
201
+ for (const item of content) {
202
+ if (item == null || item.type === "tool_use") continue;
203
+ processedContent.push(item);
204
+ if (item.type === "text") textContentIndex = processedContent.length - 1;
205
+ }
206
+ return textContentIndex;
207
+ }
208
+ };
209
+ let currentAIMessageIndex = -1;
210
+ const toolCallMap = /* @__PURE__ */ new Map();
211
+ for (let i = 0; i < messages.length; i++) {
212
+ const message = messages[i];
213
+ const messageType = message?._getType();
214
+ if (messageType === "ai" && (message.tool_calls?.length ?? 0) > 0) {
215
+ const tool_calls = message.tool_calls || [];
216
+ for (const tool_call of tool_calls) {
217
+ if (tool_call.id == null || !tool_call.id) continue;
218
+ toolCallMap.set(tool_call.id, tool_call);
219
+ }
220
+ currentAIMessageIndex = addContentPart(message) ?? addToolCallBoundary();
221
+ continue;
222
+ } else if (messageType === "tool" && message.tool_call_id) {
223
+ const id = message.tool_call_id;
224
+ const output = message.content;
225
+ const tool_call = toolCallMap.get(id);
226
+ if (currentAIMessageIndex === -1) {
227
+ processedContent.push({
228
+ type: "text",
229
+ text: ""
230
+ });
231
+ currentAIMessageIndex = processedContent.length - 1;
232
+ }
233
+ const contentPart = processedContent[currentAIMessageIndex];
234
+ processedContent.push({
235
+ type: "tool_call",
236
+ tool_call: Object.assign({}, tool_call, { output })
237
+ });
238
+ const tool_call_ids = contentPart.tool_call_ids || [];
239
+ tool_call_ids.push(id);
240
+ contentPart.tool_call_ids = tool_call_ids;
241
+ continue;
242
+ } else if (messageType !== "ai") continue;
243
+ addContentPart(message);
244
+ }
245
+ return processedContent;
349
246
  }
350
247
  function stringifyToolMessageContent(content) {
351
- return content == null ? '' : String(content);
248
+ return content == null ? "" : String(content);
352
249
  }
353
250
  function formatAnthropicArtifactContent(messages) {
354
- const lastMessage = messages[messages.length - 1];
355
- if (!(lastMessage instanceof ToolMessage))
356
- return;
357
- // Find the latest AIMessage with tool_calls that this tool message belongs to
358
- const latestAIParentIndex = findLastIndex(messages, (msg) => (msg instanceof AIMessageChunk &&
359
- (msg.tool_calls?.length ?? 0) > 0 &&
360
- msg.tool_calls?.some((tc) => tc.id === lastMessage.tool_call_id)) ??
361
- false);
362
- if (latestAIParentIndex === -1)
363
- return;
364
- // Build tool call ID set and merge artifact content in a single forward pass.
365
- const message = messages[latestAIParentIndex];
366
- const toolCallIdSet = new Set();
367
- if (message.tool_calls) {
368
- for (const tc of message.tool_calls) {
369
- if (tc.id != null) {
370
- toolCallIdSet.add(tc.id);
371
- }
372
- }
373
- }
374
- for (let j = latestAIParentIndex + 1; j < messages.length; j++) {
375
- const msg = messages[j];
376
- if (msg instanceof ToolMessage &&
377
- toolCallIdSet.has(msg.tool_call_id) &&
378
- msg.artifact != null &&
379
- Array.isArray(msg.artifact?.content)) {
380
- const base = Array.isArray(msg.content)
381
- ? msg.content
382
- : [
383
- {
384
- type: ContentTypes.TEXT,
385
- text: stringifyToolMessageContent(msg.content),
386
- },
387
- ];
388
- msg.content = base.concat(msg.artifact.content);
389
- }
390
- }
251
+ const lastMessage = messages[messages.length - 1];
252
+ if (!(lastMessage instanceof ToolMessage)) return;
253
+ const latestAIParentIndex = findLastIndex(messages, (msg) => (msg instanceof AIMessageChunk && (msg.tool_calls?.length ?? 0) > 0 && msg.tool_calls?.some((tc) => tc.id === lastMessage.tool_call_id)) ?? false);
254
+ if (latestAIParentIndex === -1) return;
255
+ const message = messages[latestAIParentIndex];
256
+ const toolCallIdSet = /* @__PURE__ */ new Set();
257
+ if (message.tool_calls) {
258
+ for (const tc of message.tool_calls) if (tc.id != null) toolCallIdSet.add(tc.id);
259
+ }
260
+ for (let j = latestAIParentIndex + 1; j < messages.length; j++) {
261
+ const msg = messages[j];
262
+ if (msg instanceof ToolMessage && toolCallIdSet.has(msg.tool_call_id) && msg.artifact != null && Array.isArray(msg.artifact?.content)) msg.content = (Array.isArray(msg.content) ? msg.content : [{
263
+ type: "text",
264
+ text: stringifyToolMessageContent(msg.content)
265
+ }]).concat(msg.artifact.content);
266
+ }
391
267
  }
392
268
  function formatArtifactPayload(messages) {
393
- const lastMessageY = messages[messages.length - 1];
394
- if (!(lastMessageY instanceof ToolMessage))
395
- return;
396
- // Find the latest AIMessage with tool_calls that this tool message belongs to
397
- const latestAIParentIndex = findLastIndex(messages, (msg) => (msg instanceof AIMessageChunk &&
398
- (msg.tool_calls?.length ?? 0) > 0 &&
399
- msg.tool_calls?.some((tc) => tc.id === lastMessageY.tool_call_id)) ??
400
- false);
401
- if (latestAIParentIndex === -1)
402
- return;
403
- // Single pass: collect relevant tool messages with artifacts and aggregate
404
- const aggregatedContent = [];
405
- for (let i = latestAIParentIndex + 1; i < messages.length; i++) {
406
- const msg = messages[i];
407
- if (!(msg instanceof ToolMessage) ||
408
- !Array.isArray(msg.artifact?.content)) {
409
- continue;
410
- }
411
- let currentContent = msg.content;
412
- if (!Array.isArray(currentContent)) {
413
- currentContent = [{ type: 'text', text: msg.content }];
414
- }
415
- aggregatedContent.push(...currentContent);
416
- msg.content =
417
- 'Tool response is included in the next message as a Human message';
418
- aggregatedContent.push(...msg.artifact.content);
419
- }
420
- if (aggregatedContent.length > 0) {
421
- messages.push(new HumanMessage({ content: toLangChainContent(aggregatedContent) }));
422
- }
269
+ const lastMessageY = messages[messages.length - 1];
270
+ if (!(lastMessageY instanceof ToolMessage)) return;
271
+ const latestAIParentIndex = findLastIndex(messages, (msg) => (msg instanceof AIMessageChunk && (msg.tool_calls?.length ?? 0) > 0 && msg.tool_calls?.some((tc) => tc.id === lastMessageY.tool_call_id)) ?? false);
272
+ if (latestAIParentIndex === -1) return;
273
+ const aggregatedContent = [];
274
+ for (let i = latestAIParentIndex + 1; i < messages.length; i++) {
275
+ const msg = messages[i];
276
+ if (!(msg instanceof ToolMessage) || !Array.isArray(msg.artifact?.content)) continue;
277
+ let currentContent = msg.content;
278
+ if (!Array.isArray(currentContent)) currentContent = [{
279
+ type: "text",
280
+ text: msg.content
281
+ }];
282
+ aggregatedContent.push(...currentContent);
283
+ msg.content = "Tool response is included in the next message as a Human message";
284
+ aggregatedContent.push(...msg.artifact.content);
285
+ }
286
+ if (aggregatedContent.length > 0) messages.push(new HumanMessage({ content: toLangChainContent(aggregatedContent) }));
423
287
  }
424
288
  function findLastIndex(array, predicate) {
425
- for (let i = array.length - 1; i >= 0; i--) {
426
- if (predicate(array[i])) {
427
- return i;
428
- }
429
- }
430
- return -1;
289
+ for (let i = array.length - 1; i >= 0; i--) if (predicate(array[i])) return i;
290
+ return -1;
431
291
  }
432
-
292
+ //#endregion
433
293
  export { convertMessagesToContent, findLastIndex, formatAnthropicArtifactContent, formatAnthropicMessage, formatArtifactPayload, getConverseOverrideMessage, modifyDeltaProperties };
434
- //# sourceMappingURL=core.mjs.map
294
+
295
+ //# sourceMappingURL=core.mjs.map