@illuma-ai/agents 1.4.0-alpha.5 → 1.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 (769) hide show
  1. package/README.md +62 -0
  2. package/dist/cjs/agents/AgentContext.cjs +274 -67
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +44 -13
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +182 -5
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  11. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  12. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  13. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  14. package/dist/cjs/hooks/matchers.cjs +256 -0
  15. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  16. package/dist/cjs/hooks/types.cjs +27 -0
  17. package/dist/cjs/hooks/types.cjs.map +1 -0
  18. package/dist/cjs/langchain/google-common.cjs +3 -0
  19. package/dist/cjs/langchain/google-common.cjs.map +1 -0
  20. package/dist/cjs/langchain/index.cjs +86 -0
  21. package/dist/cjs/langchain/index.cjs.map +1 -0
  22. package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
  23. package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
  24. package/dist/cjs/langchain/messages/tool.cjs +3 -0
  25. package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
  26. package/dist/cjs/langchain/messages.cjs +51 -0
  27. package/dist/cjs/langchain/messages.cjs.map +1 -0
  28. package/dist/cjs/langchain/openai.cjs +3 -0
  29. package/dist/cjs/langchain/openai.cjs.map +1 -0
  30. package/dist/cjs/langchain/prompts.cjs +11 -0
  31. package/dist/cjs/langchain/prompts.cjs.map +1 -0
  32. package/dist/cjs/langchain/runnables.cjs +19 -0
  33. package/dist/cjs/langchain/runnables.cjs.map +1 -0
  34. package/dist/cjs/langchain/tools.cjs +23 -0
  35. package/dist/cjs/langchain/tools.cjs.map +1 -0
  36. package/dist/cjs/langchain/utils/env.cjs +11 -0
  37. package/dist/cjs/langchain/utils/env.cjs.map +1 -0
  38. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
  39. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  40. package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
  41. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
  42. package/dist/cjs/llm/bedrock/index.cjs +61 -33
  43. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  44. package/dist/cjs/llm/openai/index.cjs +0 -3
  45. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  46. package/dist/cjs/llm/openai/utils/index.cjs +27 -10
  47. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  48. package/dist/cjs/main.cjs +178 -117
  49. package/dist/cjs/main.cjs.map +1 -1
  50. package/dist/cjs/messages/cache.cjs +89 -0
  51. package/dist/cjs/messages/cache.cjs.map +1 -1
  52. package/dist/cjs/messages/contextPruning.cjs +156 -0
  53. package/dist/cjs/messages/contextPruning.cjs.map +1 -0
  54. package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
  55. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
  56. package/dist/cjs/messages/format.cjs +144 -20
  57. package/dist/cjs/messages/format.cjs.map +1 -1
  58. package/dist/cjs/messages/prune.cjs +505 -4
  59. package/dist/cjs/messages/prune.cjs.map +1 -1
  60. package/dist/cjs/run.cjs +141 -1
  61. package/dist/cjs/run.cjs.map +1 -1
  62. package/dist/cjs/tools/BashExecutor.cjs +235 -0
  63. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  64. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
  65. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  66. package/dist/cjs/tools/CodeExecutor.cjs +44 -47
  67. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  68. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
  69. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  70. package/dist/cjs/tools/ReadFile.cjs +44 -0
  71. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  72. package/dist/cjs/tools/SkillTool.cjs +51 -0
  73. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  74. package/dist/cjs/tools/SubagentTool.cjs +93 -0
  75. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  76. package/dist/cjs/tools/ToolNode.cjs +450 -24
  77. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  78. package/dist/cjs/tools/search/search.cjs +11 -3
  79. package/dist/cjs/tools/search/search.cjs.map +1 -1
  80. package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
  81. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
  82. package/dist/cjs/tools/search/tavily-search.cjs +372 -0
  83. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
  84. package/dist/cjs/tools/search/tool.cjs +28 -4
  85. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  86. package/dist/cjs/tools/search/utils.cjs +10 -3
  87. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  88. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  89. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  90. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
  91. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  92. package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
  93. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
  94. package/dist/cjs/types/agent-cache.cjs +53 -0
  95. package/dist/cjs/types/agent-cache.cjs.map +1 -0
  96. package/dist/cjs/types/graph.cjs.map +1 -1
  97. package/dist/cjs/utils/truncation.cjs +135 -0
  98. package/dist/cjs/utils/truncation.cjs.map +1 -0
  99. package/dist/esm/agents/AgentContext.mjs +274 -67
  100. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  101. package/dist/esm/common/enum.mjs +44 -12
  102. package/dist/esm/common/enum.mjs.map +1 -1
  103. package/dist/esm/graphs/Graph.mjs +182 -5
  104. package/dist/esm/graphs/Graph.mjs.map +1 -1
  105. package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
  106. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  107. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  108. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  109. package/dist/esm/hooks/executeHooks.mjs +273 -0
  110. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  111. package/dist/esm/hooks/matchers.mjs +251 -0
  112. package/dist/esm/hooks/matchers.mjs.map +1 -0
  113. package/dist/esm/hooks/types.mjs +25 -0
  114. package/dist/esm/hooks/types.mjs.map +1 -0
  115. package/dist/esm/langchain/google-common.mjs +2 -0
  116. package/dist/esm/langchain/google-common.mjs.map +1 -0
  117. package/dist/esm/langchain/index.mjs +5 -0
  118. package/dist/esm/langchain/index.mjs.map +1 -0
  119. package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
  120. package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
  121. package/dist/esm/langchain/messages/tool.mjs +2 -0
  122. package/dist/esm/langchain/messages/tool.mjs.map +1 -0
  123. package/dist/esm/langchain/messages.mjs +2 -0
  124. package/dist/esm/langchain/messages.mjs.map +1 -0
  125. package/dist/esm/langchain/openai.mjs +2 -0
  126. package/dist/esm/langchain/openai.mjs.map +1 -0
  127. package/dist/esm/langchain/prompts.mjs +2 -0
  128. package/dist/esm/langchain/prompts.mjs.map +1 -0
  129. package/dist/esm/langchain/runnables.mjs +2 -0
  130. package/dist/esm/langchain/runnables.mjs.map +1 -0
  131. package/dist/esm/langchain/tools.mjs +2 -0
  132. package/dist/esm/langchain/tools.mjs.map +1 -0
  133. package/dist/esm/langchain/utils/env.mjs +2 -0
  134. package/dist/esm/langchain/utils/env.mjs.map +1 -0
  135. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
  136. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  137. package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
  138. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
  139. package/dist/esm/llm/bedrock/index.mjs +61 -34
  140. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  141. package/dist/esm/llm/openai/index.mjs +0 -3
  142. package/dist/esm/llm/openai/index.mjs.map +1 -1
  143. package/dist/esm/llm/openai/utils/index.mjs +27 -10
  144. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  145. package/dist/esm/main.mjs +21 -24
  146. package/dist/esm/main.mjs.map +1 -1
  147. package/dist/esm/messages/cache.mjs +89 -0
  148. package/dist/esm/messages/cache.mjs.map +1 -1
  149. package/dist/esm/messages/contextPruning.mjs +154 -0
  150. package/dist/esm/messages/contextPruning.mjs.map +1 -0
  151. package/dist/esm/messages/contextPruningSettings.mjs +50 -0
  152. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
  153. package/dist/esm/messages/format.mjs +136 -12
  154. package/dist/esm/messages/format.mjs.map +1 -1
  155. package/dist/esm/messages/prune.mjs +504 -7
  156. package/dist/esm/messages/prune.mjs.map +1 -1
  157. package/dist/esm/run.mjs +141 -1
  158. package/dist/esm/run.mjs.map +1 -1
  159. package/dist/esm/tools/BashExecutor.mjs +227 -0
  160. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  161. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
  162. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  163. package/dist/esm/tools/CodeExecutor.mjs +44 -48
  164. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  165. package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
  166. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  167. package/dist/esm/tools/ReadFile.mjs +39 -0
  168. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  169. package/dist/esm/tools/SkillTool.mjs +46 -0
  170. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  171. package/dist/esm/tools/SubagentTool.mjs +86 -0
  172. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  173. package/dist/esm/tools/ToolNode.mjs +452 -26
  174. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  175. package/dist/esm/tools/search/search.mjs +11 -3
  176. package/dist/esm/tools/search/search.mjs.map +1 -1
  177. package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
  178. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
  179. package/dist/esm/tools/search/tavily-search.mjs +370 -0
  180. package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
  181. package/dist/esm/tools/search/tool.mjs +28 -4
  182. package/dist/esm/tools/search/tool.mjs.map +1 -1
  183. package/dist/esm/tools/search/utils.mjs +10 -3
  184. package/dist/esm/tools/search/utils.mjs.map +1 -1
  185. package/dist/esm/tools/skillCatalog.mjs +82 -0
  186. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  187. package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
  188. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  189. package/dist/esm/tools/toolOutputReferences.mjs +662 -0
  190. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
  191. package/dist/esm/types/agent-cache.mjs +51 -0
  192. package/dist/esm/types/agent-cache.mjs.map +1 -0
  193. package/dist/esm/types/graph.mjs.map +1 -1
  194. package/dist/esm/utils/truncation.mjs +128 -0
  195. package/dist/esm/utils/truncation.mjs.map +1 -0
  196. package/dist/types/agents/AgentContext.d.ts +101 -8
  197. package/dist/types/common/enum.d.ts +39 -12
  198. package/dist/types/common/index.d.ts +0 -1
  199. package/dist/types/graphs/Graph.d.ts +43 -0
  200. package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
  201. package/dist/types/graphs/index.d.ts +0 -1
  202. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  203. package/dist/types/hooks/executeHooks.d.ts +79 -0
  204. package/dist/types/hooks/index.d.ts +6 -0
  205. package/dist/types/hooks/matchers.d.ts +95 -0
  206. package/dist/types/hooks/types.d.ts +320 -0
  207. package/dist/types/index.d.ts +9 -4
  208. package/dist/types/langchain/google-common.d.ts +1 -0
  209. package/dist/types/langchain/index.d.ts +8 -0
  210. package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
  211. package/dist/types/langchain/messages/tool.d.ts +1 -0
  212. package/dist/types/langchain/messages.d.ts +2 -0
  213. package/dist/types/langchain/openai.d.ts +1 -0
  214. package/dist/types/langchain/prompts.d.ts +1 -0
  215. package/dist/types/langchain/runnables.d.ts +2 -0
  216. package/dist/types/langchain/tools.d.ts +2 -0
  217. package/dist/types/langchain/utils/env.d.ts +1 -0
  218. package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
  219. package/dist/types/llm/bedrock/index.d.ts +54 -1
  220. package/dist/types/messages/contextPruning.d.ts +42 -0
  221. package/dist/types/messages/contextPruningSettings.d.ts +44 -0
  222. package/dist/types/messages/format.d.ts +9 -1
  223. package/dist/types/messages/index.d.ts +2 -0
  224. package/dist/types/messages/prune.d.ts +91 -1
  225. package/dist/types/run.d.ts +2 -0
  226. package/dist/types/tools/BashExecutor.d.ts +76 -0
  227. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  228. package/dist/types/tools/CodeExecutor.d.ts +8 -26
  229. package/dist/types/tools/ReadFile.d.ts +28 -0
  230. package/dist/types/tools/SkillTool.d.ts +40 -0
  231. package/dist/types/tools/SubagentTool.d.ts +36 -0
  232. package/dist/types/tools/ToolNode.d.ts +77 -5
  233. package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
  234. package/dist/types/tools/search/tavily-search.d.ts +4 -0
  235. package/dist/types/tools/search/types.d.ts +99 -5
  236. package/dist/types/tools/search/utils.d.ts +2 -2
  237. package/dist/types/tools/skillCatalog.d.ts +19 -0
  238. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  239. package/dist/types/tools/subagent/index.d.ts +2 -0
  240. package/dist/types/tools/subagent/types.d.ts +84 -0
  241. package/dist/types/tools/toolOutputReferences.d.ts +236 -0
  242. package/dist/types/types/agent-cache.d.ts +70 -0
  243. package/dist/types/types/graph.d.ts +162 -22
  244. package/dist/types/types/index.d.ts +3 -0
  245. package/dist/types/types/messages.d.ts +26 -0
  246. package/dist/types/types/run.d.ts +22 -0
  247. package/dist/types/types/skill.d.ts +9 -0
  248. package/dist/types/types/tools.d.ts +111 -0
  249. package/dist/types/utils/index.d.ts +1 -3
  250. package/dist/types/utils/truncation.d.ts +70 -0
  251. package/package.json +58 -13
  252. package/src/agents/AgentContext.js.map +1 -0
  253. package/src/agents/AgentContext.test.js.map +1 -0
  254. package/src/agents/AgentContext.ts +321 -78
  255. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
  256. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
  257. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
  258. package/src/agents/__tests__/AgentContext.test.js.map +1 -0
  259. package/src/agents/__tests__/AgentContext.test.ts +632 -0
  260. package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
  261. package/src/common/__tests__/enum.test.ts +7 -17
  262. package/src/common/enum.js.map +1 -0
  263. package/src/common/enum.ts +43 -12
  264. package/src/common/index.js.map +1 -0
  265. package/src/common/index.ts +0 -1
  266. package/src/events.js.map +1 -0
  267. package/src/graphs/Graph.js.map +1 -0
  268. package/src/graphs/Graph.ts +222 -2
  269. package/src/graphs/MultiAgentGraph.js.map +1 -0
  270. package/src/graphs/MultiAgentGraph.ts +154 -1466
  271. package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
  272. package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
  273. package/src/graphs/__tests__/structured-output.test.js.map +1 -0
  274. package/src/graphs/contextManagement.e2e.test.js.map +1 -0
  275. package/src/graphs/contextManagement.test.js.map +1 -0
  276. package/src/graphs/handoffValidation.test.js.map +1 -0
  277. package/src/graphs/index.js.map +1 -0
  278. package/src/graphs/index.ts +0 -1
  279. package/src/hooks/HookRegistry.ts +208 -0
  280. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  281. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  282. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  283. package/src/hooks/__tests__/integration.test.ts +337 -0
  284. package/src/hooks/__tests__/matchers.test.ts +238 -0
  285. package/src/hooks/__tests__/toolHooks.test.ts +665 -0
  286. package/src/hooks/executeHooks.ts +375 -0
  287. package/src/hooks/index.ts +57 -0
  288. package/src/hooks/matchers.ts +280 -0
  289. package/src/hooks/types.ts +404 -0
  290. package/src/index.js.map +1 -0
  291. package/src/index.ts +15 -5
  292. package/src/instrumentation.js.map +1 -0
  293. package/src/langchain/google-common.ts +1 -0
  294. package/src/langchain/index.ts +8 -0
  295. package/src/langchain/language_models/chat_models.ts +1 -0
  296. package/src/langchain/messages/tool.ts +5 -0
  297. package/src/langchain/messages.ts +21 -0
  298. package/src/langchain/openai.ts +1 -0
  299. package/src/langchain/prompts.ts +1 -0
  300. package/src/langchain/runnables.ts +7 -0
  301. package/src/langchain/tools.ts +8 -0
  302. package/src/langchain/utils/env.ts +1 -0
  303. package/src/llm/anthropic/index.js.map +1 -0
  304. package/src/llm/anthropic/types.js.map +1 -0
  305. package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
  306. package/src/llm/anthropic/utils/message_inputs.ts +10 -1
  307. package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
  308. package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
  309. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
  310. package/src/llm/anthropic/utils/tools.js.map +1 -0
  311. package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
  312. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
  313. package/src/llm/bedrock/cacheSupport.test.ts +99 -0
  314. package/src/llm/bedrock/cacheSupport.ts +53 -0
  315. package/src/llm/bedrock/index.js.map +1 -0
  316. package/src/llm/bedrock/index.ts +116 -41
  317. package/src/llm/bedrock/types.js.map +1 -0
  318. package/src/llm/bedrock/utils/index.js.map +1 -0
  319. package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
  320. package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
  321. package/src/llm/fake.js.map +1 -0
  322. package/src/llm/google/index.js.map +1 -0
  323. package/src/llm/google/types.js.map +1 -0
  324. package/src/llm/google/utils/common.js.map +1 -0
  325. package/src/llm/google/utils/tools.js.map +1 -0
  326. package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
  327. package/src/llm/openai/index.js.map +1 -0
  328. package/src/llm/openai/types.js.map +1 -0
  329. package/src/llm/openai/utils/index.js.map +1 -0
  330. package/src/llm/openai/utils/index.ts +31 -14
  331. package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
  332. package/src/llm/openrouter/index.js.map +1 -0
  333. package/src/llm/openrouter/reasoning.test.js.map +1 -0
  334. package/src/llm/providers.js.map +1 -0
  335. package/src/llm/text.js.map +1 -0
  336. package/src/llm/vertexai/index.js.map +1 -0
  337. package/src/messages/__tests__/contextPruning.test.ts +228 -0
  338. package/src/messages/__tests__/tools.test.js.map +1 -0
  339. package/src/messages/cache.js.map +1 -0
  340. package/src/messages/cache.test.js.map +1 -0
  341. package/src/messages/cache.test.ts +62 -24
  342. package/src/messages/cache.ts +112 -0
  343. package/src/messages/content.js.map +1 -0
  344. package/src/messages/content.test.js.map +1 -0
  345. package/src/messages/contextPruning.ts +191 -0
  346. package/src/messages/contextPruningSettings.ts +90 -0
  347. package/src/messages/core.js.map +1 -0
  348. package/src/messages/ensureThinkingBlock.test.js.map +1 -0
  349. package/src/messages/format.js.map +1 -0
  350. package/src/messages/format.ts +164 -12
  351. package/src/messages/formatAgentMessages.skills.test.ts +413 -0
  352. package/src/messages/formatAgentMessages.test.js.map +1 -0
  353. package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
  354. package/src/messages/formatMessage.test.js.map +1 -0
  355. package/src/messages/ids.js.map +1 -0
  356. package/src/messages/index.js.map +1 -0
  357. package/src/messages/index.ts +2 -0
  358. package/src/messages/labelContentByAgent.test.js.map +1 -0
  359. package/src/messages/prune.js.map +1 -0
  360. package/src/messages/prune.ts +661 -4
  361. package/src/messages/reducer.js.map +1 -0
  362. package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
  363. package/src/messages/summarize.js.map +1 -0
  364. package/src/messages/summarize.test.js.map +1 -0
  365. package/src/messages/tools.js.map +1 -0
  366. package/src/mockStream.js.map +1 -0
  367. package/src/prompts/collab.js.map +1 -0
  368. package/src/prompts/index.js.map +1 -0
  369. package/src/prompts/taskmanager.js.map +1 -0
  370. package/src/run.js.map +1 -0
  371. package/src/run.ts +155 -1
  372. package/src/schemas/index.js.map +1 -0
  373. package/src/schemas/schema-preparation.test.js.map +1 -0
  374. package/src/schemas/validate.js.map +1 -0
  375. package/src/schemas/validate.test.js.map +1 -0
  376. package/src/scripts/abort.js.map +1 -0
  377. package/src/scripts/ant_web_search.js.map +1 -0
  378. package/src/scripts/ant_web_search_edge_case.js.map +1 -0
  379. package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
  380. package/src/scripts/args.js.map +1 -0
  381. package/src/scripts/bedrock-cache-debug.js.map +1 -0
  382. package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
  383. package/src/scripts/bedrock-merge-test.js.map +1 -0
  384. package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
  385. package/src/scripts/caching.js.map +1 -0
  386. package/src/scripts/cli.js.map +1 -0
  387. package/src/scripts/cli2.js.map +1 -0
  388. package/src/scripts/cli3.js.map +1 -0
  389. package/src/scripts/cli4.js.map +1 -0
  390. package/src/scripts/cli5.js.map +1 -0
  391. package/src/scripts/code_exec.js.map +1 -0
  392. package/src/scripts/code_exec_files.js.map +1 -0
  393. package/src/scripts/code_exec_multi_session.js.map +1 -0
  394. package/src/scripts/code_exec_ptc.js.map +1 -0
  395. package/src/scripts/code_exec_session.js.map +1 -0
  396. package/src/scripts/code_exec_simple.js.map +1 -0
  397. package/src/scripts/content.js.map +1 -0
  398. package/src/scripts/empty_input.js.map +1 -0
  399. package/src/scripts/handoff-test.js.map +1 -0
  400. package/src/scripts/image.js.map +1 -0
  401. package/src/scripts/memory.js.map +1 -0
  402. package/src/scripts/multi-agent-chain.js.map +1 -0
  403. package/src/scripts/multi-agent-chain.ts +2 -2
  404. package/src/scripts/multi-agent-conditional.js.map +1 -0
  405. package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
  406. package/src/scripts/multi-agent-document-review-chain.ts +2 -2
  407. package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
  408. package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
  409. package/src/scripts/multi-agent-parallel-start.js.map +1 -0
  410. package/src/scripts/multi-agent-parallel.js.map +1 -0
  411. package/src/scripts/multi-agent-parallel.ts +3 -3
  412. package/src/scripts/multi-agent-sequence.js.map +1 -0
  413. package/src/scripts/multi-agent-sequence.ts +3 -3
  414. package/src/scripts/multi-agent-subagent.ts +246 -0
  415. package/src/scripts/multi-agent-supervisor.js.map +1 -0
  416. package/src/scripts/multi-agent-supervisor.ts +5 -5
  417. package/src/scripts/multi-agent-test.js.map +1 -0
  418. package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
  419. package/src/scripts/parallel-full-metadata-test.js.map +1 -0
  420. package/src/scripts/parallel-tools-test.js.map +1 -0
  421. package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
  422. package/src/scripts/programmatic_exec.js.map +1 -0
  423. package/src/scripts/programmatic_exec_agent.js.map +1 -0
  424. package/src/scripts/search.js.map +1 -0
  425. package/src/scripts/sequential-full-metadata-test.js.map +1 -0
  426. package/src/scripts/sequential-full-metadata-test.ts +2 -2
  427. package/src/scripts/simple.js.map +1 -0
  428. package/src/scripts/single-agent-metadata-test.js.map +1 -0
  429. package/src/scripts/stream.js.map +1 -0
  430. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  431. package/src/scripts/subagent-tools-debug.ts +160 -0
  432. package/src/scripts/test-custom-prompt-key.js.map +1 -0
  433. package/src/scripts/test-custom-prompt-key.ts +3 -3
  434. package/src/scripts/test-handoff-input.js.map +1 -0
  435. package/src/scripts/test-handoff-input.ts +1 -1
  436. package/src/scripts/test-handoff-preamble.js.map +1 -0
  437. package/src/scripts/test-handoff-steering.js.map +1 -0
  438. package/src/scripts/test-handoff-steering.ts +3 -3
  439. package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
  440. package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
  441. package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
  442. package/src/scripts/test-parallel-agent-labeling.ts +3 -3
  443. package/src/scripts/test-parallel-handoffs.js.map +1 -0
  444. package/src/scripts/test-parallel-handoffs.ts +2 -2
  445. package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
  446. package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
  447. package/src/scripts/test-thinking-handoff.js.map +1 -0
  448. package/src/scripts/test-thinking-handoff.ts +1 -1
  449. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
  450. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
  451. package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
  452. package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
  453. package/src/scripts/test-tools-before-handoff.js.map +1 -0
  454. package/src/scripts/test-tools-before-handoff.ts +1 -1
  455. package/src/scripts/test_code_api.js.map +1 -0
  456. package/src/scripts/thinking-bedrock.js.map +1 -0
  457. package/src/scripts/thinking-vertexai.js.map +1 -0
  458. package/src/scripts/thinking.js.map +1 -0
  459. package/src/scripts/tool_search.js.map +1 -0
  460. package/src/scripts/tools.js.map +1 -0
  461. package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
  462. package/src/specs/agent-handoffs.test.js.map +1 -0
  463. package/src/specs/agent-handoffs.test.ts +26 -483
  464. package/src/specs/anthropic.simple.test.js.map +1 -0
  465. package/src/specs/anthropic.simple.test.ts +61 -0
  466. package/src/specs/azure.simple.test.js.map +1 -0
  467. package/src/specs/cache.simple.test.js.map +1 -0
  468. package/src/specs/custom-event-await.test.js.map +1 -0
  469. package/src/specs/deepseek.simple.test.js.map +1 -0
  470. package/src/specs/emergency-prune.test.js.map +1 -0
  471. package/src/specs/moonshot.simple.test.js.map +1 -0
  472. package/src/specs/multi-agent-summarization.test.ts +396 -0
  473. package/src/specs/observability.integration.test.js.map +1 -0
  474. package/src/specs/openai.simple.test.js.map +1 -0
  475. package/src/specs/openrouter.simple.test.js.map +1 -0
  476. package/src/specs/prune.orphans.test.ts +248 -0
  477. package/src/specs/prune.test.js.map +1 -0
  478. package/src/specs/prune.test.ts +104 -16
  479. package/src/specs/reasoning.test.js.map +1 -0
  480. package/src/specs/spec.utils.js.map +1 -0
  481. package/src/specs/thinking-handoff.test.js.map +1 -0
  482. package/src/specs/thinking-handoff.test.ts +19 -19
  483. package/src/specs/thinking-prune.test.js.map +1 -0
  484. package/src/specs/token-distribution-edge-case.test.js.map +1 -0
  485. package/src/specs/token-memoization.test.js.map +1 -0
  486. package/src/specs/tokens.test.js.map +1 -0
  487. package/src/specs/tool-error.test.js.map +1 -0
  488. package/src/splitStream.js.map +1 -0
  489. package/src/splitStream.test.js.map +1 -0
  490. package/src/stream.js.map +1 -0
  491. package/src/stream.test.js.map +1 -0
  492. package/src/test/mockTools.js.map +1 -0
  493. package/src/tools/BashExecutor.ts +281 -0
  494. package/src/tools/BashProgrammaticToolCalling.ts +397 -0
  495. package/src/tools/BrowserTools.js.map +1 -0
  496. package/src/tools/Calculator.js.map +1 -0
  497. package/src/tools/Calculator.test.js.map +1 -0
  498. package/src/tools/CodeExecutor.js.map +1 -0
  499. package/src/tools/CodeExecutor.ts +62 -54
  500. package/src/tools/ProgrammaticToolCalling.js.map +1 -0
  501. package/src/tools/ProgrammaticToolCalling.ts +29 -14
  502. package/src/tools/ReadFile.ts +39 -0
  503. package/src/tools/SkillTool.ts +46 -0
  504. package/src/tools/StreamingToolCallBuffer.js.map +1 -0
  505. package/src/tools/SubagentTool.ts +100 -0
  506. package/src/tools/ToolNode.js.map +1 -0
  507. package/src/tools/ToolNode.ts +548 -26
  508. package/src/tools/ToolSearch.js.map +1 -0
  509. package/src/tools/__tests__/BashExecutor.test.ts +49 -0
  510. package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
  511. package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
  512. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
  513. package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
  514. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
  515. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  516. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  517. package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
  518. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  519. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  520. package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
  521. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
  522. package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
  523. package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
  524. package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
  525. package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
  526. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
  527. package/src/tools/__tests__/handlers.test.js.map +1 -0
  528. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  529. package/src/tools/__tests__/subagentHooks.test.ts +210 -0
  530. package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
  531. package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
  532. package/src/tools/handlers.js.map +1 -0
  533. package/src/tools/schema.js.map +1 -0
  534. package/src/tools/search/anthropic.js.map +1 -0
  535. package/src/tools/search/content.js.map +1 -0
  536. package/src/tools/search/content.test.js.map +1 -0
  537. package/src/tools/search/firecrawl.js.map +1 -0
  538. package/src/tools/search/format.js.map +1 -0
  539. package/src/tools/search/highlights.js.map +1 -0
  540. package/src/tools/search/index.js.map +1 -0
  541. package/src/tools/search/jina-reranker.test.js.map +1 -0
  542. package/src/tools/search/rerankers.js.map +1 -0
  543. package/src/tools/search/schema.js.map +1 -0
  544. package/src/tools/search/search.js.map +1 -0
  545. package/src/tools/search/search.ts +12 -2
  546. package/src/tools/search/serper-scraper.js.map +1 -0
  547. package/src/tools/search/tavily-scraper.ts +235 -0
  548. package/src/tools/search/tavily-search.ts +424 -0
  549. package/src/tools/search/tavily.test.ts +965 -0
  550. package/src/tools/search/test.js.map +1 -0
  551. package/src/tools/search/tool.js.map +1 -0
  552. package/src/tools/search/tool.ts +36 -2
  553. package/src/tools/search/types.js.map +1 -0
  554. package/src/tools/search/types.ts +133 -8
  555. package/src/tools/search/utils.js.map +1 -0
  556. package/src/tools/search/utils.ts +13 -5
  557. package/src/tools/skillCatalog.ts +126 -0
  558. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  559. package/src/tools/subagent/index.ts +13 -0
  560. package/src/tools/subagent/types.test.ts +70 -0
  561. package/src/tools/subagent/types.ts +115 -0
  562. package/src/tools/toolOutputReferences.ts +825 -0
  563. package/src/types/agent-cache.ts +73 -0
  564. package/src/types/graph.js.map +1 -0
  565. package/src/types/graph.test.js.map +1 -0
  566. package/src/types/graph.ts +171 -20
  567. package/src/types/index.js.map +1 -0
  568. package/src/types/index.ts +3 -0
  569. package/src/types/llm.js.map +1 -0
  570. package/src/types/messages.js.map +1 -0
  571. package/src/types/messages.ts +27 -0
  572. package/src/types/run.js.map +1 -0
  573. package/src/types/run.ts +22 -0
  574. package/src/types/skill.ts +11 -0
  575. package/src/types/stream.js.map +1 -0
  576. package/src/types/tools.js.map +1 -0
  577. package/src/types/tools.ts +118 -0
  578. package/src/utils/__tests__/truncation.test.ts +66 -0
  579. package/src/utils/contextAnalytics.js.map +1 -0
  580. package/src/utils/contextAnalytics.test.js.map +1 -0
  581. package/src/utils/events.js.map +1 -0
  582. package/src/utils/graph.js.map +1 -0
  583. package/src/utils/handlers.js.map +1 -0
  584. package/src/utils/index.js.map +1 -0
  585. package/src/utils/index.ts +1 -3
  586. package/src/utils/llm.js.map +1 -0
  587. package/src/utils/llmConfig.js.map +1 -0
  588. package/src/utils/logging.js.map +1 -0
  589. package/src/utils/misc.js.map +1 -0
  590. package/src/utils/run.js.map +1 -0
  591. package/src/utils/schema.js.map +1 -0
  592. package/src/utils/title.js.map +1 -0
  593. package/src/utils/tokens.js.map +1 -0
  594. package/src/utils/toonFormat.js.map +1 -0
  595. package/src/utils/truncation.ts +154 -0
  596. package/dist/cjs/common/spawnPath.cjs +0 -104
  597. package/dist/cjs/common/spawnPath.cjs.map +0 -1
  598. package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
  599. package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
  600. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
  601. package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
  602. package/dist/cjs/providers/a2a/client.cjs +0 -92
  603. package/dist/cjs/providers/a2a/client.cjs.map +0 -1
  604. package/dist/cjs/providers/a2a/config.cjs +0 -38
  605. package/dist/cjs/providers/a2a/config.cjs.map +0 -1
  606. package/dist/cjs/providers/capabilityNaming.cjs +0 -43
  607. package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
  608. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
  609. package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
  610. package/dist/cjs/providers/mcp/config.cjs +0 -42
  611. package/dist/cjs/providers/mcp/config.cjs.map +0 -1
  612. package/dist/cjs/providers/mcp/transport.cjs +0 -65
  613. package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
  614. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
  615. package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
  616. package/dist/cjs/providers/types.cjs +0 -51
  617. package/dist/cjs/providers/types.cjs.map +0 -1
  618. package/dist/cjs/tools/artifacts/schema.cjs +0 -86
  619. package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
  620. package/dist/cjs/tools/artifacts/tool.cjs +0 -219
  621. package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
  622. package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
  623. package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
  624. package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
  625. package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
  626. package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
  627. package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
  628. package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
  629. package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
  630. package/dist/cjs/tools/proxyTool.cjs +0 -102
  631. package/dist/cjs/tools/proxyTool.cjs.map +0 -1
  632. package/dist/cjs/utils/childAgentContext.cjs +0 -242
  633. package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
  634. package/dist/cjs/utils/credentials.cjs +0 -142
  635. package/dist/cjs/utils/credentials.cjs.map +0 -1
  636. package/dist/cjs/utils/httpClient.cjs +0 -74
  637. package/dist/cjs/utils/httpClient.cjs.map +0 -1
  638. package/dist/cjs/utils/toolManifest.cjs +0 -100
  639. package/dist/cjs/utils/toolManifest.cjs.map +0 -1
  640. package/dist/esm/common/spawnPath.mjs +0 -95
  641. package/dist/esm/common/spawnPath.mjs.map +0 -1
  642. package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
  643. package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
  644. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
  645. package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
  646. package/dist/esm/providers/a2a/client.mjs +0 -88
  647. package/dist/esm/providers/a2a/client.mjs.map +0 -1
  648. package/dist/esm/providers/a2a/config.mjs +0 -35
  649. package/dist/esm/providers/a2a/config.mjs.map +0 -1
  650. package/dist/esm/providers/capabilityNaming.mjs +0 -39
  651. package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
  652. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
  653. package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
  654. package/dist/esm/providers/mcp/config.mjs +0 -39
  655. package/dist/esm/providers/mcp/config.mjs.map +0 -1
  656. package/dist/esm/providers/mcp/transport.mjs +0 -63
  657. package/dist/esm/providers/mcp/transport.mjs.map +0 -1
  658. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
  659. package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
  660. package/dist/esm/providers/types.mjs +0 -51
  661. package/dist/esm/providers/types.mjs.map +0 -1
  662. package/dist/esm/tools/artifacts/schema.mjs +0 -79
  663. package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
  664. package/dist/esm/tools/artifacts/tool.mjs +0 -213
  665. package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
  666. package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
  667. package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
  668. package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
  669. package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
  670. package/dist/esm/tools/fileSearch/schema.mjs +0 -15
  671. package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
  672. package/dist/esm/tools/fileSearch/tool.mjs +0 -152
  673. package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
  674. package/dist/esm/tools/proxyTool.mjs +0 -100
  675. package/dist/esm/tools/proxyTool.mjs.map +0 -1
  676. package/dist/esm/utils/childAgentContext.mjs +0 -237
  677. package/dist/esm/utils/childAgentContext.mjs.map +0 -1
  678. package/dist/esm/utils/credentials.mjs +0 -135
  679. package/dist/esm/utils/credentials.mjs.map +0 -1
  680. package/dist/esm/utils/httpClient.mjs +0 -70
  681. package/dist/esm/utils/httpClient.mjs.map +0 -1
  682. package/dist/esm/utils/toolManifest.mjs +0 -96
  683. package/dist/esm/utils/toolManifest.mjs.map +0 -1
  684. package/dist/types/common/spawnPath.d.ts +0 -59
  685. package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
  686. package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
  687. package/dist/types/providers/a2a/client.d.ts +0 -47
  688. package/dist/types/providers/a2a/config.d.ts +0 -18
  689. package/dist/types/providers/a2a/index.d.ts +0 -6
  690. package/dist/types/providers/a2a/types.d.ts +0 -173
  691. package/dist/types/providers/capabilityNaming.d.ts +0 -25
  692. package/dist/types/providers/index.d.ts +0 -12
  693. package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
  694. package/dist/types/providers/mcp/config.d.ts +0 -20
  695. package/dist/types/providers/mcp/index.d.ts +0 -5
  696. package/dist/types/providers/mcp/transport.d.ts +0 -18
  697. package/dist/types/providers/mcp/types.d.ts +0 -112
  698. package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
  699. package/dist/types/providers/tools-server/index.d.ts +0 -1
  700. package/dist/types/providers/types.d.ts +0 -184
  701. package/dist/types/tools/artifacts/index.d.ts +0 -3
  702. package/dist/types/tools/artifacts/schema.d.ts +0 -63
  703. package/dist/types/tools/artifacts/tool.d.ts +0 -16
  704. package/dist/types/tools/artifacts/types.d.ts +0 -127
  705. package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
  706. package/dist/types/tools/fileSearch/index.d.ts +0 -5
  707. package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
  708. package/dist/types/tools/fileSearch/schema.d.ts +0 -13
  709. package/dist/types/tools/fileSearch/tool.d.ts +0 -18
  710. package/dist/types/tools/fileSearch/types.d.ts +0 -139
  711. package/dist/types/tools/proxyTool.d.ts +0 -62
  712. package/dist/types/utils/childAgentContext.d.ts +0 -99
  713. package/dist/types/utils/credentials.d.ts +0 -77
  714. package/dist/types/utils/httpClient.d.ts +0 -46
  715. package/dist/types/utils/toolManifest.d.ts +0 -49
  716. package/src/common/__tests__/spawnPath.test.ts +0 -110
  717. package/src/common/spawnPath.ts +0 -101
  718. package/src/graphs/HandoffRegistry.ts +0 -199
  719. package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
  720. package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
  721. package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
  722. package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
  723. package/src/graphs/handoffValidation.test.ts +0 -353
  724. package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
  725. package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -269
  726. package/src/providers/__tests__/types.test.ts +0 -64
  727. package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
  728. package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
  729. package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
  730. package/src/providers/a2a/client.ts +0 -115
  731. package/src/providers/a2a/config.ts +0 -40
  732. package/src/providers/a2a/index.ts +0 -29
  733. package/src/providers/a2a/types.ts +0 -191
  734. package/src/providers/capabilityNaming.ts +0 -42
  735. package/src/providers/index.ts +0 -68
  736. package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
  737. package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
  738. package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
  739. package/src/providers/mcp/config.ts +0 -45
  740. package/src/providers/mcp/index.ts +0 -21
  741. package/src/providers/mcp/transport.ts +0 -76
  742. package/src/providers/mcp/types.ts +0 -139
  743. package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -248
  744. package/src/providers/tools-server/index.ts +0 -1
  745. package/src/providers/types.ts +0 -204
  746. package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
  747. package/src/scripts/test-handoff-preamble.ts +0 -278
  748. package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
  749. package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
  750. package/src/tools/artifacts/index.ts +0 -33
  751. package/src/tools/artifacts/schema.ts +0 -99
  752. package/src/tools/artifacts/tool.ts +0 -289
  753. package/src/tools/artifacts/types.ts +0 -162
  754. package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
  755. package/src/tools/fileSearch/formatter.ts +0 -129
  756. package/src/tools/fileSearch/index.ts +0 -23
  757. package/src/tools/fileSearch/ragClient.ts +0 -137
  758. package/src/tools/fileSearch/schema.ts +0 -19
  759. package/src/tools/fileSearch/tool.ts +0 -207
  760. package/src/tools/fileSearch/types.ts +0 -149
  761. package/src/tools/proxyTool.ts +0 -166
  762. package/src/utils/__tests__/childAgentContext.test.ts +0 -217
  763. package/src/utils/__tests__/credentials.test.ts +0 -130
  764. package/src/utils/__tests__/httpClient.test.ts +0 -75
  765. package/src/utils/__tests__/toolManifest.test.ts +0 -116
  766. package/src/utils/childAgentContext.ts +0 -259
  767. package/src/utils/credentials.ts +0 -157
  768. package/src/utils/httpClient.ts +0 -92
  769. package/src/utils/toolManifest.ts +0 -109
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/llm/openai/index.ts"],"sourcesContent":["import { AzureOpenAI as AzureOpenAIClient } from 'openai';\nimport { ChatXAI as OriginalChatXAI } from '@langchain/xai';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport { AIMessage, AIMessageChunk } from '@langchain/core/messages';\nimport { ToolDefinition } from '@langchain/core/language_models/base';\nimport { isLangChainTool } from '@langchain/core/utils/function_calling';\nimport { ChatDeepSeek as OriginalChatDeepSeek } from '@langchain/deepseek';\nimport { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport {\n getEndpoint,\n OpenAIClient,\n formatToOpenAITool,\n ChatOpenAI as OriginalChatOpenAI,\n AzureChatOpenAI as OriginalAzureChatOpenAI,\n} from '@langchain/openai';\nimport type {\n OpenAIChatCallOptions,\n OpenAIRoleEnum,\n HeaderValue,\n HeadersLike,\n} from './types';\nimport type { BindToolsInput } from '@langchain/core/language_models/chat_models';\nimport type { BaseMessage, UsageMetadata } from '@langchain/core/messages';\nimport type { ChatResult, ChatGeneration } from '@langchain/core/outputs';\nimport type { ChatXAIInput } from '@langchain/xai';\nimport type * as t from '@langchain/openai';\nimport {\n isReasoningModel,\n _convertMessagesToOpenAIParams,\n _convertMessagesToOpenAIResponsesParams,\n _convertOpenAIResponsesDeltaToBaseMessageChunk,\n type ResponseReturnStreamEvents,\n} from './utils';\nimport { sleep } from '@/utils';\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst iife = <T>(fn: () => T) => fn();\n\nexport function isHeaders(headers: unknown): headers is Headers {\n return (\n typeof Headers !== 'undefined' &&\n headers !== null &&\n typeof headers === 'object' &&\n Object.prototype.toString.call(headers) === '[object Headers]'\n );\n}\n\nexport function normalizeHeaders(\n headers: HeadersLike\n): Record<string, HeaderValue | readonly HeaderValue[]> {\n const output = iife(() => {\n // If headers is a Headers instance\n if (isHeaders(headers)) {\n return headers;\n }\n // If headers is an array of [key, value] pairs\n else if (Array.isArray(headers)) {\n return new Headers(headers);\n }\n // If headers is a NullableHeaders-like object (has 'values' property that is a Headers)\n else if (\n typeof headers === 'object' &&\n headers !== null &&\n 'values' in headers &&\n isHeaders(headers.values)\n ) {\n return headers.values;\n }\n // If headers is a plain object\n else if (typeof headers === 'object' && headers !== null) {\n const entries: [string, string][] = Object.entries(headers)\n .filter(([, v]) => typeof v === 'string')\n .map(([k, v]) => [k, v as string]);\n return new Headers(entries);\n }\n return new Headers();\n });\n\n return Object.fromEntries(output.entries());\n}\n\ntype OpenAICompletionParam =\n OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\ntype OpenAICoreRequestOptions = OpenAIClient.RequestOptions;\n\nfunction createAbortHandler(controller: AbortController): () => void {\n return function (): void {\n controller.abort();\n };\n}\n/**\n * Formats a tool in either OpenAI format, or LangChain structured tool format\n * into an OpenAI tool format. If the tool is already in OpenAI format, return without\n * any changes. If it is in LangChain structured tool format, convert it to OpenAI tool format\n * using OpenAI's `zodFunction` util, falling back to `convertToOpenAIFunction` if the parameters\n * returned from the `zodFunction` util are not defined.\n *\n * @param {BindToolsInput} tool The tool to convert to an OpenAI tool.\n * @param {Object} [fields] Additional fields to add to the OpenAI tool.\n * @returns {ToolDefinition} The inputted tool in OpenAI tool format.\n */\nexport function _convertToOpenAITool(\n tool: BindToolsInput,\n fields?: {\n /**\n * If `true`, model output is guaranteed to exactly match the JSON Schema\n * provided in the function definition.\n */\n strict?: boolean;\n }\n): OpenAIClient.ChatCompletionTool {\n let toolDef: OpenAIClient.ChatCompletionTool | undefined;\n\n if (isLangChainTool(tool)) {\n toolDef = formatToOpenAITool(tool);\n } else {\n toolDef = tool as ToolDefinition;\n }\n\n if (fields?.strict !== undefined) {\n toolDef.function.strict = fields.strict;\n }\n\n return toolDef;\n}\nexport class CustomOpenAIClient extends OpenAIClient {\n abortHandler?: () => void;\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = createAbortHandler(controller);\n this.abortHandler = handler;\n if (signal) signal.addEventListener('abort', handler, { once: true });\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n })\n );\n }\n}\nexport class CustomAzureOpenAIClient extends AzureOpenAIClient {\n abortHandler?: () => void;\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = createAbortHandler(controller);\n this.abortHandler = handler;\n if (signal) signal.addEventListener('abort', handler, { once: true });\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n })\n );\n }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class ChatOpenAI extends OriginalChatOpenAI<t.ChatOpenAICallOptions> {\n _lc_stream_delay?: number;\n\n constructor(\n fields?: t.ChatOpenAICallOptions & {\n _lc_stream_delay?: number;\n } & t.OpenAIChatInput['modelKwargs']\n ) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): string {\n return 'IllumaOpenAI';\n }\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n /**\n * Returns backwards compatible reasoning parameters from constructor params and call options\n * @internal\n */\n getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n // apply options in reverse order of importance -- newer options supersede older options\n let reasoning: OpenAIClient.Reasoning | undefined;\n if (this.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...this.reasoning,\n };\n }\n if (options?.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...options.reasoning,\n };\n }\n\n return reasoning;\n }\n\n protected _getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n return this.getReasoningParams(options);\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (!this._useResponseApi(options)) {\n return yield* this._streamResponseChunks2(messages, options, runManager);\n }\n const streamIterable = await this.responseApiWithRetry(\n {\n ...this.invocationParams<'responses'>(options, { streaming: true }),\n input: _convertMessagesToOpenAIResponsesParams(\n messages,\n this.model,\n this.zdrEnabled\n ),\n stream: true,\n },\n options\n );\n\n for await (const data of streamIterable) {\n const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n data as ResponseReturnStreamEvents\n );\n if (chunk == null) continue;\n yield chunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n chunk.text || '',\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n\n return;\n }\n\n async *_streamResponseChunks2(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n } else if ('reasoning' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning;\n }\n if ('provider_specific_fields' in delta) {\n chunk.additional_kwargs.provider_specific_fields =\n delta.provider_specific_fields;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: options.promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n // Only include system fingerprint in the last chunk for now\n // to avoid concatenation issues\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class AzureChatOpenAI extends OriginalAzureChatOpenAI {\n _lc_stream_delay?: number;\n\n constructor(fields?: t.AzureOpenAIInput & { _lc_stream_delay?: number }) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): 'IllumaAzureOpenAI' {\n return 'IllumaAzureOpenAI';\n }\n /**\n * Returns backwards compatible reasoning parameters from constructor params and call options\n * @internal\n */\n getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n if (!isReasoningModel(this.model)) {\n return;\n }\n\n // apply options in reverse order of importance -- newer options supersede older options\n let reasoning: OpenAIClient.Reasoning | undefined;\n if (this.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...this.reasoning,\n };\n }\n if (options?.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...options.reasoning,\n };\n }\n\n return reasoning;\n }\n\n protected _getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n return this.getReasoningParams(options);\n }\n\n protected _getClientOptions(\n options: OpenAICoreRequestOptions | undefined\n ): OpenAICoreRequestOptions {\n if (!(this.client as unknown as AzureOpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,\n azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,\n azureOpenAIApiKey: this.azureOpenAIApiKey,\n azureOpenAIBasePath: this.azureOpenAIBasePath,\n azureADTokenProvider: this.azureADTokenProvider,\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n\n if (!this.azureADTokenProvider) {\n params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;\n }\n\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n const defaultHeaders = normalizeHeaders(params.defaultHeaders);\n params.defaultHeaders = {\n ...params.defaultHeaders,\n 'User-Agent':\n defaultHeaders['User-Agent'] != null\n ? `${defaultHeaders['User-Agent']}: illuma-azure-openai-v2`\n : 'illuma-azure-openai-v2',\n };\n\n this.client = new CustomAzureOpenAIClient({\n apiVersion: this.azureOpenAIApiVersion,\n azureADTokenProvider: this.azureADTokenProvider,\n ...(params as t.AzureOpenAIInput),\n }) as unknown as CustomOpenAIClient;\n }\n\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n if (this.azureOpenAIApiKey != null) {\n requestOptions.headers = {\n 'api-key': this.azureOpenAIApiKey,\n ...requestOptions.headers,\n };\n requestOptions.query = {\n 'api-version': this.azureOpenAIApiVersion,\n ...requestOptions.query,\n };\n }\n return requestOptions;\n }\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (!this._useResponseApi(options)) {\n return yield* super._streamResponseChunks(messages, options, runManager);\n }\n const streamIterable = await this.responseApiWithRetry(\n {\n ...this.invocationParams<'responses'>(options, { streaming: true }),\n input: _convertMessagesToOpenAIResponsesParams(\n messages,\n this.model,\n this.zdrEnabled\n ),\n stream: true,\n },\n options\n );\n\n for await (const data of streamIterable) {\n const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n data as ResponseReturnStreamEvents\n );\n if (chunk == null) continue;\n yield chunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n chunk.text || '',\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n\n return;\n }\n}\nexport class ChatDeepSeek extends OriginalChatDeepSeek {\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): 'IllumaDeepSeek' {\n return 'IllumaDeepSeek';\n }\n\n protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n return _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'] | undefined,\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const params = this.invocationParams(options);\n\n if (params.stream === true) {\n return super._generate(messages, options ?? {}, runManager);\n }\n\n const messagesMapped = this._convertMessages(messages);\n const data = await this.completionWithRetry(\n {\n ...params,\n stream: false,\n messages: messagesMapped,\n },\n {\n signal: options?.signal,\n ...options?.options,\n }\n );\n\n const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n const generations = [];\n for (const part of data.choices ?? []) {\n const text = part.message.content ?? '';\n const generation: ChatGeneration = {\n text: typeof text === 'string' ? text : '',\n message: this._convertResponseToMessage(part, data),\n };\n generation.generationInfo = {\n ...(part.finish_reason != null\n ? { finish_reason: part.finish_reason }\n : {}),\n ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n };\n generations.push(generation);\n }\n\n return {\n generations,\n llmOutput: {\n tokenUsage: {\n completionTokens: completion_tokens,\n promptTokens: prompt_tokens,\n totalTokens: total_tokens,\n },\n },\n };\n }\n\n protected _convertResponseToMessage(\n choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n data: OpenAIClient.Chat.Completions.ChatCompletion\n ): AIMessage {\n const { message } = choice;\n const rawToolCalls = message.tool_calls;\n const toolCalls = rawToolCalls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: JSON.parse(tc.function.arguments || '{}'),\n type: 'tool_call' as const,\n }));\n\n const additional_kwargs: Record<string, unknown> = {};\n if (rawToolCalls) {\n additional_kwargs.tool_calls = rawToolCalls;\n }\n if (\n 'reasoning_content' in message &&\n message.reasoning_content != null &&\n message.reasoning_content !== ''\n ) {\n additional_kwargs.reasoning_content = message.reasoning_content;\n }\n\n return new AIMessage({\n content: message.content ?? '',\n tool_calls: toolCalls,\n additional_kwargs,\n usage_metadata: data.usage\n ? {\n input_tokens: data.usage.prompt_tokens,\n output_tokens: data.usage.completion_tokens,\n total_tokens: data.usage.total_tokens,\n }\n : undefined,\n response_metadata: {\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n finish_reason: choice.finish_reason,\n },\n });\n }\n\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\n/** xAI-specific usage metadata type */\nexport interface XAIUsageMetadata\n extends OpenAIClient.Completions.CompletionUsage {\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n text_tokens?: number;\n image_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n accepted_prediction_tokens?: number;\n rejected_prediction_tokens?: number;\n };\n num_sources_used?: number;\n}\n\nexport class ChatMoonshot extends ChatOpenAI {\n static lc_name(): 'LibreChatMoonshot' {\n return 'LibreChatMoonshot';\n }\n\n protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n return _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const params = this.invocationParams(options);\n\n if (params.stream === true) {\n return super._generate(messages, options, runManager);\n }\n\n const messagesMapped = this._convertMessages(messages);\n const data = await this.completionWithRetry(\n {\n ...params,\n stream: false,\n messages: messagesMapped,\n },\n {\n signal: options.signal,\n ...options.options,\n }\n );\n\n const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n const generations = [];\n for (const part of data.choices ?? []) {\n const text = part.message.content ?? '';\n const generation: ChatGeneration = {\n text: typeof text === 'string' ? text : '',\n message: this._convertResponseToMessage(part, data),\n };\n generation.generationInfo = {\n ...(part.finish_reason ? { finish_reason: part.finish_reason } : {}),\n ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n };\n generations.push(generation);\n }\n\n return {\n generations,\n llmOutput: {\n tokenUsage: {\n completionTokens: completion_tokens,\n promptTokens: prompt_tokens,\n totalTokens: total_tokens,\n },\n },\n };\n }\n\n protected _convertResponseToMessage(\n choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n data: OpenAIClient.Chat.Completions.ChatCompletion\n ): AIMessage {\n const { message } = choice;\n const rawToolCalls = message.tool_calls;\n const toolCalls = rawToolCalls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: JSON.parse(tc.function.arguments || '{}'),\n type: 'tool_call' as const,\n }));\n\n const additional_kwargs: Record<string, unknown> = {};\n if (rawToolCalls) {\n additional_kwargs.tool_calls = rawToolCalls;\n }\n if (\n 'reasoning_content' in message &&\n message.reasoning_content != null &&\n message.reasoning_content !== ''\n ) {\n additional_kwargs.reasoning_content = message.reasoning_content;\n }\n\n return new AIMessage({\n content: message.content ?? '',\n tool_calls: toolCalls,\n additional_kwargs,\n usage_metadata: data.usage\n ? {\n input_tokens: data.usage.prompt_tokens,\n output_tokens: data.usage.completion_tokens,\n total_tokens: data.usage.total_tokens,\n }\n : undefined,\n response_metadata: {\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n finish_reason: choice.finish_reason,\n },\n });\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\nexport class ChatXAI extends OriginalChatXAI {\n _lc_stream_delay?: number;\n\n constructor(\n fields?: Partial<ChatXAIInput> & {\n configuration?: { baseURL?: string };\n clientConfig?: { baseURL?: string };\n _lc_stream_delay?: number;\n }\n ) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n const customBaseURL =\n fields?.configuration?.baseURL ?? fields?.clientConfig?.baseURL;\n if (customBaseURL != null && customBaseURL) {\n this.clientConfig = {\n ...this.clientConfig,\n baseURL: customBaseURL,\n };\n // Reset the client to force recreation with new config\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.client = undefined as any;\n }\n }\n\n static lc_name(): 'IllumaXAI' {\n return 'IllumaXAI';\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if (chunk.usage_metadata != null) {\n chunk.usage_metadata = {\n input_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).input_tokens ?? 0,\n output_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).output_tokens ?? 0,\n total_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).total_tokens ?? 0,\n };\n }\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n // Only include system fingerprint in the last chunk for now\n // to avoid concatenation issues\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n // Type assertion for xAI-specific usage structure\n const xaiUsage = usage as XAIUsageMetadata;\n const inputTokenDetails = {\n // Standard OpenAI fields\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n // Add xAI-specific prompt token details if they exist\n ...(xaiUsage.prompt_tokens_details?.text_tokens != null && {\n text: xaiUsage.prompt_tokens_details.text_tokens,\n }),\n ...(xaiUsage.prompt_tokens_details?.image_tokens != null && {\n image: xaiUsage.prompt_tokens_details.image_tokens,\n }),\n };\n const outputTokenDetails = {\n // Standard OpenAI fields\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n // Add xAI-specific completion token details if they exist\n ...(xaiUsage.completion_tokens_details?.accepted_prediction_tokens !=\n null && {\n accepted_prediction:\n xaiUsage.completion_tokens_details.accepted_prediction_tokens,\n }),\n ...(xaiUsage.completion_tokens_details?.rejected_prediction_tokens !=\n null && {\n rejected_prediction:\n xaiUsage.completion_tokens_details.rejected_prediction_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n // Include xAI-specific metadata if it exists\n ...(xaiUsage.num_sources_used != null && {\n num_sources_used: xaiUsage.num_sources_used,\n }),\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n"],"names":["AzureOpenAIClient","OriginalChatOpenAI","OriginalAzureChatOpenAI","OriginalChatDeepSeek","OriginalChatXAI"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/llm/openai/index.ts"],"sourcesContent":["import { AzureOpenAI as AzureOpenAIClient } from 'openai';\nimport { ChatXAI as OriginalChatXAI } from '@langchain/xai';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport { AIMessage, AIMessageChunk } from '@langchain/core/messages';\nimport { ToolDefinition } from '@langchain/core/language_models/base';\nimport { isLangChainTool } from '@langchain/core/utils/function_calling';\nimport { ChatDeepSeek as OriginalChatDeepSeek } from '@langchain/deepseek';\nimport { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport {\n getEndpoint,\n OpenAIClient,\n formatToOpenAITool,\n ChatOpenAI as OriginalChatOpenAI,\n AzureChatOpenAI as OriginalAzureChatOpenAI,\n} from '@langchain/openai';\nimport type {\n OpenAIChatCallOptions,\n OpenAIRoleEnum,\n HeaderValue,\n HeadersLike,\n} from './types';\nimport type { BindToolsInput } from '@langchain/core/language_models/chat_models';\nimport type { BaseMessage, UsageMetadata } from '@langchain/core/messages';\nimport type { ChatResult, ChatGeneration } from '@langchain/core/outputs';\nimport type { ChatXAIInput } from '@langchain/xai';\nimport type * as t from '@langchain/openai';\nimport {\n isReasoningModel,\n _convertMessagesToOpenAIParams,\n _convertMessagesToOpenAIResponsesParams,\n _convertOpenAIResponsesDeltaToBaseMessageChunk,\n type ResponseReturnStreamEvents,\n} from './utils';\nimport { sleep } from '@/utils';\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst iife = <T>(fn: () => T) => fn();\n\nexport function isHeaders(headers: unknown): headers is Headers {\n return (\n typeof Headers !== 'undefined' &&\n headers !== null &&\n typeof headers === 'object' &&\n Object.prototype.toString.call(headers) === '[object Headers]'\n );\n}\n\nexport function normalizeHeaders(\n headers: HeadersLike\n): Record<string, HeaderValue | readonly HeaderValue[]> {\n const output = iife(() => {\n // If headers is a Headers instance\n if (isHeaders(headers)) {\n return headers;\n }\n // If headers is an array of [key, value] pairs\n else if (Array.isArray(headers)) {\n return new Headers(headers);\n }\n // If headers is a NullableHeaders-like object (has 'values' property that is a Headers)\n else if (\n typeof headers === 'object' &&\n headers !== null &&\n 'values' in headers &&\n isHeaders(headers.values)\n ) {\n return headers.values;\n }\n // If headers is a plain object\n else if (typeof headers === 'object' && headers !== null) {\n const entries: [string, string][] = Object.entries(headers)\n .filter(([, v]) => typeof v === 'string')\n .map(([k, v]) => [k, v as string]);\n return new Headers(entries);\n }\n return new Headers();\n });\n\n return Object.fromEntries(output.entries());\n}\n\ntype OpenAICompletionParam =\n OpenAIClient.Chat.Completions.ChatCompletionMessageParam;\n\ntype OpenAICoreRequestOptions = OpenAIClient.RequestOptions;\n\nfunction createAbortHandler(controller: AbortController): () => void {\n return function (): void {\n controller.abort();\n };\n}\n/**\n * Formats a tool in either OpenAI format, or LangChain structured tool format\n * into an OpenAI tool format. If the tool is already in OpenAI format, return without\n * any changes. If it is in LangChain structured tool format, convert it to OpenAI tool format\n * using OpenAI's `zodFunction` util, falling back to `convertToOpenAIFunction` if the parameters\n * returned from the `zodFunction` util are not defined.\n *\n * @param {BindToolsInput} tool The tool to convert to an OpenAI tool.\n * @param {Object} [fields] Additional fields to add to the OpenAI tool.\n * @returns {ToolDefinition} The inputted tool in OpenAI tool format.\n */\nexport function _convertToOpenAITool(\n tool: BindToolsInput,\n fields?: {\n /**\n * If `true`, model output is guaranteed to exactly match the JSON Schema\n * provided in the function definition.\n */\n strict?: boolean;\n }\n): OpenAIClient.ChatCompletionTool {\n let toolDef: OpenAIClient.ChatCompletionTool | undefined;\n\n if (isLangChainTool(tool)) {\n toolDef = formatToOpenAITool(tool);\n } else {\n toolDef = tool as ToolDefinition;\n }\n\n if (fields?.strict !== undefined) {\n toolDef.function.strict = fields.strict;\n }\n\n return toolDef;\n}\nexport class CustomOpenAIClient extends OpenAIClient {\n abortHandler?: () => void;\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = createAbortHandler(controller);\n this.abortHandler = handler;\n if (signal) signal.addEventListener('abort', handler, { once: true });\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n })\n );\n }\n}\nexport class CustomAzureOpenAIClient extends AzureOpenAIClient {\n abortHandler?: () => void;\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = createAbortHandler(controller);\n this.abortHandler = handler;\n if (signal) signal.addEventListener('abort', handler, { once: true });\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n })\n );\n }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class ChatOpenAI extends OriginalChatOpenAI<t.ChatOpenAICallOptions> {\n _lc_stream_delay?: number;\n\n constructor(\n fields?: t.ChatOpenAICallOptions & {\n _lc_stream_delay?: number;\n } & t.OpenAIChatInput['modelKwargs']\n ) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): string {\n return 'IllumaOpenAI';\n }\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n /**\n * Returns backwards compatible reasoning parameters from constructor params and call options\n * @internal\n */\n getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n // apply options in reverse order of importance -- newer options supersede older options\n let reasoning: OpenAIClient.Reasoning | undefined;\n if (this.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...this.reasoning,\n };\n }\n if (options?.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...options.reasoning,\n };\n }\n\n return reasoning;\n }\n\n protected _getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n return this.getReasoningParams(options);\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (!this._useResponseApi(options)) {\n return yield* this._streamResponseChunks2(messages, options, runManager);\n }\n const streamIterable = await this.responseApiWithRetry(\n {\n ...this.invocationParams<'responses'>(options, { streaming: true }),\n input: _convertMessagesToOpenAIResponsesParams(\n messages,\n this.model,\n this.zdrEnabled\n ),\n stream: true,\n },\n options\n );\n\n for await (const data of streamIterable) {\n const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n data as ResponseReturnStreamEvents\n );\n if (chunk == null) continue;\n yield chunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n chunk.text || '',\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n\n return;\n }\n\n async *_streamResponseChunks2(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n } else if ('reasoning' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning;\n }\n if ('provider_specific_fields' in delta) {\n chunk.additional_kwargs.provider_specific_fields =\n delta.provider_specific_fields;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: options.promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n // Only include system fingerprint in the last chunk for now\n // to avoid concatenation issues\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\n/** @ts-expect-error We are intentionally overriding `getReasoningParams` */\nexport class AzureChatOpenAI extends OriginalAzureChatOpenAI {\n _lc_stream_delay?: number;\n\n constructor(fields?: t.AzureOpenAIInput & { _lc_stream_delay?: number }) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): 'IllumaAzureOpenAI' {\n return 'IllumaAzureOpenAI';\n }\n /**\n * Returns backwards compatible reasoning parameters from constructor params and call options\n * @internal\n */\n getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n if (!isReasoningModel(this.model)) {\n return;\n }\n\n // apply options in reverse order of importance -- newer options supersede older options\n let reasoning: OpenAIClient.Reasoning | undefined;\n if (this.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...this.reasoning,\n };\n }\n if (options?.reasoning !== undefined) {\n reasoning = {\n ...reasoning,\n ...options.reasoning,\n };\n }\n\n return reasoning;\n }\n\n protected _getReasoningParams(\n options?: this['ParsedCallOptions']\n ): OpenAIClient.Reasoning | undefined {\n return this.getReasoningParams(options);\n }\n\n protected _getClientOptions(\n options: OpenAICoreRequestOptions | undefined\n ): OpenAICoreRequestOptions {\n if (!(this.client as unknown as AzureOpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,\n azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,\n azureOpenAIApiKey: this.azureOpenAIApiKey,\n azureOpenAIBasePath: this.azureOpenAIBasePath,\n azureADTokenProvider: this.azureADTokenProvider,\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n\n if (!this.azureADTokenProvider) {\n params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;\n }\n\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n const defaultHeaders = normalizeHeaders(params.defaultHeaders);\n params.defaultHeaders = {\n ...params.defaultHeaders,\n 'User-Agent':\n defaultHeaders['User-Agent'] != null\n ? `${defaultHeaders['User-Agent']}: illuma-azure-openai-v2`\n : 'illuma-azure-openai-v2',\n };\n\n this.client = new CustomAzureOpenAIClient({\n apiVersion: this.azureOpenAIApiVersion,\n azureADTokenProvider: this.azureADTokenProvider,\n ...(params as t.AzureOpenAIInput),\n }) as unknown as CustomOpenAIClient;\n }\n\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n if (this.azureOpenAIApiKey != null) {\n requestOptions.headers = {\n 'api-key': this.azureOpenAIApiKey,\n ...requestOptions.headers,\n };\n requestOptions.query = {\n 'api-version': this.azureOpenAIApiVersion,\n ...requestOptions.query,\n };\n }\n return requestOptions;\n }\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n if (!this._useResponseApi(options)) {\n return yield* super._streamResponseChunks(messages, options, runManager);\n }\n const streamIterable = await this.responseApiWithRetry(\n {\n ...this.invocationParams<'responses'>(options, { streaming: true }),\n input: _convertMessagesToOpenAIResponsesParams(\n messages,\n this.model,\n this.zdrEnabled\n ),\n stream: true,\n },\n options\n );\n\n for await (const data of streamIterable) {\n const chunk = _convertOpenAIResponsesDeltaToBaseMessageChunk(\n data as ResponseReturnStreamEvents\n );\n if (chunk == null) continue;\n yield chunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n chunk.text || '',\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n\n return;\n }\n}\nexport class ChatDeepSeek extends OriginalChatDeepSeek {\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n static lc_name(): 'IllumaDeepSeek' {\n return 'IllumaDeepSeek';\n }\n\n protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n return _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'] | undefined,\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const params = this.invocationParams(options);\n\n if (params.stream === true) {\n return super._generate(messages, options ?? {}, runManager);\n }\n\n const messagesMapped = this._convertMessages(messages);\n const data = await this.completionWithRetry(\n {\n ...params,\n stream: false,\n messages: messagesMapped,\n },\n {\n signal: options?.signal,\n ...options?.options,\n }\n );\n\n const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n const generations = [];\n for (const part of data.choices ?? []) {\n const text = part.message.content ?? '';\n const generation: ChatGeneration = {\n text: typeof text === 'string' ? text : '',\n message: this._convertResponseToMessage(part, data),\n };\n generation.generationInfo = {\n ...(part.finish_reason != null\n ? { finish_reason: part.finish_reason }\n : {}),\n ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n };\n generations.push(generation);\n }\n\n return {\n generations,\n llmOutput: {\n tokenUsage: {\n completionTokens: completion_tokens,\n promptTokens: prompt_tokens,\n totalTokens: total_tokens,\n },\n },\n };\n }\n\n protected _convertResponseToMessage(\n choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n data: OpenAIClient.Chat.Completions.ChatCompletion\n ): AIMessage {\n const { message } = choice;\n const rawToolCalls = message.tool_calls;\n const toolCalls = rawToolCalls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: JSON.parse(tc.function.arguments || '{}'),\n type: 'tool_call' as const,\n }));\n\n const additional_kwargs: Record<string, unknown> = {};\n if (rawToolCalls) {\n additional_kwargs.tool_calls = rawToolCalls;\n }\n if (\n 'reasoning_content' in message &&\n message.reasoning_content != null &&\n message.reasoning_content !== ''\n ) {\n additional_kwargs.reasoning_content = message.reasoning_content;\n }\n\n return new AIMessage({\n content: message.content ?? '',\n tool_calls: toolCalls,\n additional_kwargs,\n usage_metadata: data.usage\n ? {\n input_tokens: data.usage.prompt_tokens,\n output_tokens: data.usage.completion_tokens,\n total_tokens: data.usage.total_tokens,\n }\n : undefined,\n response_metadata: {\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n finish_reason: choice.finish_reason,\n },\n });\n }\n\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\n/** xAI-specific usage metadata type */\nexport interface XAIUsageMetadata\n extends OpenAIClient.Completions.CompletionUsage {\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n text_tokens?: number;\n image_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n accepted_prediction_tokens?: number;\n rejected_prediction_tokens?: number;\n };\n num_sources_used?: number;\n}\n\nexport class ChatMoonshot extends ChatOpenAI {\n static lc_name(): 'LibreChatMoonshot' {\n return 'LibreChatMoonshot';\n }\n\n protected _convertMessages(messages: BaseMessage[]): OpenAICompletionParam[] {\n return _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const params = this.invocationParams(options);\n\n if (params.stream === true) {\n return super._generate(messages, options, runManager);\n }\n\n const messagesMapped = this._convertMessages(messages);\n const data = await this.completionWithRetry(\n {\n ...params,\n stream: false,\n messages: messagesMapped,\n },\n {\n signal: options.signal,\n ...options.options,\n }\n );\n\n const { completion_tokens, prompt_tokens, total_tokens } = data.usage ?? {};\n\n const generations = [];\n for (const part of data.choices ?? []) {\n const text = part.message.content ?? '';\n const generation: ChatGeneration = {\n text: typeof text === 'string' ? text : '',\n message: this._convertResponseToMessage(part, data),\n };\n generation.generationInfo = {\n ...(part.finish_reason ? { finish_reason: part.finish_reason } : {}),\n ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n };\n generations.push(generation);\n }\n\n return {\n generations,\n llmOutput: {\n tokenUsage: {\n completionTokens: completion_tokens,\n promptTokens: prompt_tokens,\n totalTokens: total_tokens,\n },\n },\n };\n }\n\n protected _convertResponseToMessage(\n choice: OpenAIClient.Chat.Completions.ChatCompletion.Choice,\n data: OpenAIClient.Chat.Completions.ChatCompletion\n ): AIMessage {\n const { message } = choice;\n const rawToolCalls = message.tool_calls;\n const toolCalls = rawToolCalls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n args: JSON.parse(tc.function.arguments || '{}'),\n type: 'tool_call' as const,\n }));\n\n const additional_kwargs: Record<string, unknown> = {};\n if (rawToolCalls) {\n additional_kwargs.tool_calls = rawToolCalls;\n }\n if (\n 'reasoning_content' in message &&\n message.reasoning_content != null &&\n message.reasoning_content !== ''\n ) {\n additional_kwargs.reasoning_content = message.reasoning_content;\n }\n\n return new AIMessage({\n content: message.content ?? '',\n tool_calls: toolCalls,\n additional_kwargs,\n usage_metadata: data.usage\n ? {\n input_tokens: data.usage.prompt_tokens,\n output_tokens: data.usage.completion_tokens,\n total_tokens: data.usage.total_tokens,\n }\n : undefined,\n response_metadata: {\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n finish_reason: choice.finish_reason,\n },\n });\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model, {\n includeReasoningContent: true,\n });\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n\nexport class ChatXAI extends OriginalChatXAI {\n _lc_stream_delay?: number;\n\n constructor(\n fields?: Partial<ChatXAIInput> & {\n configuration?: { baseURL?: string };\n clientConfig?: { baseURL?: string };\n _lc_stream_delay?: number;\n }\n ) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay;\n const customBaseURL =\n fields?.configuration?.baseURL ?? fields?.clientConfig?.baseURL;\n if (customBaseURL != null && customBaseURL) {\n this.clientConfig = {\n ...this.clientConfig,\n baseURL: customBaseURL,\n };\n // Reset the client to force recreation with new config\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.client = undefined as any;\n }\n }\n\n static lc_name(): 'IllumaXAI' {\n return 'IllumaXAI';\n }\n\n public get exposedClient(): CustomOpenAIClient {\n return this.client;\n }\n\n protected _getClientOptions(\n options?: OpenAICoreRequestOptions\n ): OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as OpenAICoreRequestOptions;\n return requestOptions;\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAICompletionParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIRoleEnum | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data.choices[0] as\n | Partial<OpenAIClient.Chat.Completions.ChatCompletionChunk.Choice>\n | undefined;\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n if (chunk.usage_metadata != null) {\n chunk.usage_metadata = {\n input_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).input_tokens ?? 0,\n output_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).output_tokens ?? 0,\n total_tokens:\n (chunk.usage_metadata as Partial<UsageMetadata>).total_tokens ?? 0,\n };\n }\n if ('reasoning_content' in delta) {\n chunk.additional_kwargs.reasoning_content = delta.reasoning_content;\n }\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: (options as OpenAIChatCallOptions).promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== 'string') {\n // eslint-disable-next-line no-console\n console.log(\n '[WARNING]: Received non-string content from OpenAI. This is currently not supported.'\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n // Only include system fingerprint in the last chunk for now\n // to avoid concatenation issues\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs == true) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n await runManager?.handleLLMNewToken(\n generationChunk.text || '',\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n // Type assertion for xAI-specific usage structure\n const xaiUsage = usage as XAIUsageMetadata;\n const inputTokenDetails = {\n // Standard OpenAI fields\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n // Add xAI-specific prompt token details if they exist\n ...(xaiUsage.prompt_tokens_details?.text_tokens != null && {\n text: xaiUsage.prompt_tokens_details.text_tokens,\n }),\n ...(xaiUsage.prompt_tokens_details?.image_tokens != null && {\n image: xaiUsage.prompt_tokens_details.image_tokens,\n }),\n };\n const outputTokenDetails = {\n // Standard OpenAI fields\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n // Add xAI-specific completion token details if they exist\n ...(xaiUsage.completion_tokens_details?.accepted_prediction_tokens !=\n null && {\n accepted_prediction:\n xaiUsage.completion_tokens_details.accepted_prediction_tokens,\n }),\n ...(xaiUsage.completion_tokens_details?.rejected_prediction_tokens !=\n null && {\n rejected_prediction:\n xaiUsage.completion_tokens_details.rejected_prediction_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: '',\n response_metadata: {\n usage: { ...usage },\n // Include xAI-specific metadata if it exists\n ...(xaiUsage.num_sources_used != null && {\n num_sources_used: xaiUsage.num_sources_used,\n }),\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: '',\n });\n yield generationChunk;\n if (this._lc_stream_delay != null) {\n await sleep(this._lc_stream_delay);\n }\n }\n if (options.signal?.aborted === true) {\n throw new Error('AbortError');\n }\n }\n}\n"],"names":["AzureOpenAIClient","OriginalChatOpenAI","OriginalAzureChatOpenAI","OriginalChatDeepSeek","OriginalChatXAI"],"mappings":"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"}
@@ -163,6 +163,10 @@ const completionsApiContentBlockConverter = {
163
163
  };
164
164
  // Used in LangSmith, export is important here
165
165
  function _convertMessagesToOpenAIParams(messages, model, options) {
166
+ /* DeepSeek reasoning roundtrip (upstream PR #136): reasoning_content on
167
+ * an AI message must be re-sent only when the message participates in a
168
+ * tool-call exchange. Track context across the message flat-map. */
169
+ let hasReasoningToolCallContext = false;
166
170
  // TODO: Function messages do not support array content, fix cast
167
171
  return messages.flatMap((message) => {
168
172
  let role = messageToOpenAIRole(message);
@@ -187,6 +191,8 @@ function _convertMessagesToOpenAIParams(messages, model, options) {
187
191
  role,
188
192
  content,
189
193
  };
194
+ let messageHasToolCalls = false;
195
+ let messageIsToolResult = false;
190
196
  if (message.name != null) {
191
197
  completionParam.name = message.name;
192
198
  }
@@ -195,13 +201,9 @@ function _convertMessagesToOpenAIParams(messages, model, options) {
195
201
  completionParam.content = '';
196
202
  }
197
203
  if (isAIMessage(message) && !!message.tool_calls?.length) {
204
+ messageHasToolCalls = true;
198
205
  completionParam.tool_calls = message.tool_calls.map(convertLangChainToolCallToOpenAI);
199
206
  completionParam.content = hasAnthropicThinkingBlock ? content : '';
200
- if (options?.includeReasoningContent === true &&
201
- message.additional_kwargs.reasoning_content != null) {
202
- completionParam.reasoning_content =
203
- message.additional_kwargs.reasoning_content;
204
- }
205
207
  if (options?.includeReasoningDetails === true &&
206
208
  message.additional_kwargs.reasoning_details != null) {
207
209
  // For Claude via OpenRouter, convert reasoning_details to content blocks
@@ -243,12 +245,10 @@ function _convertMessagesToOpenAIParams(messages, model, options) {
243
245
  }
244
246
  else {
245
247
  if (message.additional_kwargs.tool_calls != null) {
248
+ messageHasToolCalls =
249
+ !Array.isArray(message.additional_kwargs.tool_calls) ||
250
+ message.additional_kwargs.tool_calls.length > 0;
246
251
  completionParam.tool_calls = message.additional_kwargs.tool_calls;
247
- if (options?.includeReasoningContent === true &&
248
- message.additional_kwargs.reasoning_content != null) {
249
- completionParam.reasoning_content =
250
- message.additional_kwargs.reasoning_content;
251
- }
252
252
  if (options?.includeReasoningDetails === true &&
253
253
  message.additional_kwargs.reasoning_details != null) {
254
254
  // For Claude via OpenRouter, convert reasoning_details to content blocks
@@ -289,9 +289,26 @@ function _convertMessagesToOpenAIParams(messages, model, options) {
289
289
  }
290
290
  }
291
291
  if (message.tool_call_id != null) {
292
+ messageIsToolResult = true;
292
293
  completionParam.tool_call_id = message.tool_call_id;
293
294
  }
294
295
  }
296
+ /* DeepSeek reasoning roundtrip (upstream PR #136): emit
297
+ * reasoning_content only when the message is part of a tool-call
298
+ * exchange — either the message itself has tool_calls, or a previous
299
+ * AI/tool message established the context. Skipping the gate causes
300
+ * DeepSeek to drop reasoning content during multi-turn replays. */
301
+ if (options?.includeReasoningContent === true &&
302
+ isAIMessage(message) &&
303
+ (hasReasoningToolCallContext || messageHasToolCalls) &&
304
+ typeof message.additional_kwargs.reasoning_content === 'string' &&
305
+ message.additional_kwargs.reasoning_content !== '') {
306
+ completionParam.reasoning_content =
307
+ message.additional_kwargs.reasoning_content;
308
+ }
309
+ if (messageHasToolCalls || messageIsToolResult) {
310
+ hasReasoningToolCallContext = true;
311
+ }
295
312
  if (message.additional_kwargs.audio &&
296
313
  typeof message.additional_kwargs.audio === 'object' &&
297
314
  'id' in message.additional_kwargs.audio) {