@langchain/core 1.2.3 → 1.2.5

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 (1248) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agents.d.cts.map +1 -1
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/caches/index.cjs.map +1 -1
  5. package/dist/caches/index.d.cts +0 -1
  6. package/dist/caches/index.d.cts.map +1 -1
  7. package/dist/caches/index.d.ts +0 -1
  8. package/dist/caches/index.d.ts.map +1 -1
  9. package/dist/caches/index.js.map +1 -1
  10. package/dist/callbacks/base.cjs.map +1 -1
  11. package/dist/callbacks/base.d.cts +68 -36
  12. package/dist/callbacks/base.d.cts.map +1 -1
  13. package/dist/callbacks/base.d.ts +68 -36
  14. package/dist/callbacks/base.d.ts.map +1 -1
  15. package/dist/callbacks/base.js.map +1 -1
  16. package/dist/callbacks/dispatch/index.cjs +0 -1
  17. package/dist/callbacks/dispatch/index.cjs.map +1 -1
  18. package/dist/callbacks/dispatch/index.d.cts +1 -0
  19. package/dist/callbacks/dispatch/index.d.cts.map +1 -1
  20. package/dist/callbacks/dispatch/index.d.ts +1 -0
  21. package/dist/callbacks/dispatch/index.d.ts.map +1 -1
  22. package/dist/callbacks/dispatch/index.js.map +1 -1
  23. package/dist/callbacks/dispatch/web.cjs.map +1 -1
  24. package/dist/callbacks/dispatch/web.d.cts +1 -0
  25. package/dist/callbacks/dispatch/web.d.cts.map +1 -1
  26. package/dist/callbacks/dispatch/web.d.ts +1 -0
  27. package/dist/callbacks/dispatch/web.d.ts.map +1 -1
  28. package/dist/callbacks/dispatch/web.js.map +1 -1
  29. package/dist/callbacks/manager.cjs +75 -8
  30. package/dist/callbacks/manager.cjs.map +1 -1
  31. package/dist/callbacks/manager.d.cts +1 -2
  32. package/dist/callbacks/manager.d.cts.map +1 -1
  33. package/dist/callbacks/manager.d.ts +1 -2
  34. package/dist/callbacks/manager.d.ts.map +1 -1
  35. package/dist/callbacks/manager.js +75 -8
  36. package/dist/callbacks/manager.js.map +1 -1
  37. package/dist/chat_history.cjs.map +1 -1
  38. package/dist/chat_history.d.cts +1 -0
  39. package/dist/chat_history.d.cts.map +1 -1
  40. package/dist/chat_history.d.ts +1 -0
  41. package/dist/chat_history.d.ts.map +1 -1
  42. package/dist/chat_history.js.map +1 -1
  43. package/dist/context.cjs +0 -1
  44. package/dist/context.cjs.map +1 -1
  45. package/dist/context.d.cts +0 -1
  46. package/dist/context.d.cts.map +1 -1
  47. package/dist/context.d.ts +0 -1
  48. package/dist/context.d.ts.map +1 -1
  49. package/dist/context.js.map +1 -1
  50. package/dist/document_loaders/base.cjs.map +1 -1
  51. package/dist/document_loaders/base.d.cts +0 -1
  52. package/dist/document_loaders/base.d.cts.map +1 -1
  53. package/dist/document_loaders/base.d.ts +0 -1
  54. package/dist/document_loaders/base.d.ts.map +1 -1
  55. package/dist/document_loaders/base.js.map +1 -1
  56. package/dist/document_loaders/langsmith.cjs.map +1 -1
  57. package/dist/document_loaders/langsmith.d.cts +0 -1
  58. package/dist/document_loaders/langsmith.d.cts.map +1 -1
  59. package/dist/document_loaders/langsmith.d.ts +0 -1
  60. package/dist/document_loaders/langsmith.d.ts.map +1 -1
  61. package/dist/document_loaders/langsmith.js.map +1 -1
  62. package/dist/documents/document.cjs.map +1 -1
  63. package/dist/documents/document.d.cts.map +1 -1
  64. package/dist/documents/document.d.ts.map +1 -1
  65. package/dist/documents/document.js.map +1 -1
  66. package/dist/documents/transformers.cjs.map +1 -1
  67. package/dist/documents/transformers.d.cts +0 -1
  68. package/dist/documents/transformers.d.cts.map +1 -1
  69. package/dist/documents/transformers.d.ts +0 -1
  70. package/dist/documents/transformers.d.ts.map +1 -1
  71. package/dist/documents/transformers.js.map +1 -1
  72. package/dist/embeddings.cjs.map +1 -1
  73. package/dist/embeddings.d.cts +0 -1
  74. package/dist/embeddings.d.cts.map +1 -1
  75. package/dist/embeddings.d.ts +0 -1
  76. package/dist/embeddings.d.ts.map +1 -1
  77. package/dist/embeddings.js.map +1 -1
  78. package/dist/errors/index.cjs.map +1 -1
  79. package/dist/errors/index.d.cts +0 -1
  80. package/dist/errors/index.d.cts.map +1 -1
  81. package/dist/errors/index.d.ts +0 -1
  82. package/dist/errors/index.d.ts.map +1 -1
  83. package/dist/errors/index.js.map +1 -1
  84. package/dist/example_selectors/base.cjs.map +1 -1
  85. package/dist/example_selectors/base.d.cts +0 -1
  86. package/dist/example_selectors/base.d.cts.map +1 -1
  87. package/dist/example_selectors/base.d.ts +0 -1
  88. package/dist/example_selectors/base.d.ts.map +1 -1
  89. package/dist/example_selectors/base.js.map +1 -1
  90. package/dist/example_selectors/conditional.cjs.map +1 -1
  91. package/dist/example_selectors/conditional.d.cts +0 -1
  92. package/dist/example_selectors/conditional.d.cts.map +1 -1
  93. package/dist/example_selectors/conditional.d.ts +0 -1
  94. package/dist/example_selectors/conditional.d.ts.map +1 -1
  95. package/dist/example_selectors/conditional.js.map +1 -1
  96. package/dist/example_selectors/length_based.cjs.map +1 -1
  97. package/dist/example_selectors/length_based.d.cts +0 -1
  98. package/dist/example_selectors/length_based.d.cts.map +1 -1
  99. package/dist/example_selectors/length_based.d.ts +0 -1
  100. package/dist/example_selectors/length_based.d.ts.map +1 -1
  101. package/dist/example_selectors/length_based.js.map +1 -1
  102. package/dist/example_selectors/semantic_similarity.cjs +2 -1
  103. package/dist/example_selectors/semantic_similarity.cjs.map +1 -1
  104. package/dist/example_selectors/semantic_similarity.d.cts +0 -1
  105. package/dist/example_selectors/semantic_similarity.d.cts.map +1 -1
  106. package/dist/example_selectors/semantic_similarity.d.ts +0 -1
  107. package/dist/example_selectors/semantic_similarity.d.ts.map +1 -1
  108. package/dist/example_selectors/semantic_similarity.js +2 -1
  109. package/dist/example_selectors/semantic_similarity.js.map +1 -1
  110. package/dist/index.d.cts +1 -1
  111. package/dist/index.d.ts +1 -1
  112. package/dist/indexing/base.cjs.map +1 -1
  113. package/dist/indexing/base.d.cts +0 -1
  114. package/dist/indexing/base.d.cts.map +1 -1
  115. package/dist/indexing/base.d.ts +0 -1
  116. package/dist/indexing/base.d.ts.map +1 -1
  117. package/dist/indexing/base.js.map +1 -1
  118. package/dist/indexing/record_manager.cjs.map +1 -1
  119. package/dist/indexing/record_manager.d.cts +0 -1
  120. package/dist/indexing/record_manager.d.cts.map +1 -1
  121. package/dist/indexing/record_manager.d.ts +0 -1
  122. package/dist/indexing/record_manager.d.ts.map +1 -1
  123. package/dist/indexing/record_manager.js.map +1 -1
  124. package/dist/language_models/base.cjs +1 -1
  125. package/dist/language_models/base.cjs.map +1 -1
  126. package/dist/language_models/base.d.cts +10 -17
  127. package/dist/language_models/base.d.cts.map +1 -1
  128. package/dist/language_models/base.d.ts +10 -17
  129. package/dist/language_models/base.d.ts.map +1 -1
  130. package/dist/language_models/base.js +1 -1
  131. package/dist/language_models/base.js.map +1 -1
  132. package/dist/language_models/chat_models.cjs +12 -6
  133. package/dist/language_models/chat_models.cjs.map +1 -1
  134. package/dist/language_models/chat_models.d.cts +7 -9
  135. package/dist/language_models/chat_models.d.cts.map +1 -1
  136. package/dist/language_models/chat_models.d.ts +7 -9
  137. package/dist/language_models/chat_models.d.ts.map +1 -1
  138. package/dist/language_models/chat_models.js +12 -6
  139. package/dist/language_models/chat_models.js.map +1 -1
  140. package/dist/language_models/compat.cjs.map +1 -1
  141. package/dist/language_models/compat.d.cts +0 -1
  142. package/dist/language_models/compat.d.cts.map +1 -1
  143. package/dist/language_models/compat.d.ts +0 -1
  144. package/dist/language_models/compat.d.ts.map +1 -1
  145. package/dist/language_models/compat.js.map +1 -1
  146. package/dist/language_models/event.d.cts +0 -1
  147. package/dist/language_models/event.d.cts.map +1 -1
  148. package/dist/language_models/event.d.ts +0 -1
  149. package/dist/language_models/event.d.ts.map +1 -1
  150. package/dist/language_models/llms.cjs.map +1 -1
  151. package/dist/language_models/llms.d.cts +2 -9
  152. package/dist/language_models/llms.d.cts.map +1 -1
  153. package/dist/language_models/llms.d.ts +2 -9
  154. package/dist/language_models/llms.d.ts.map +1 -1
  155. package/dist/language_models/llms.js.map +1 -1
  156. package/dist/language_models/openai_completions_stream.cjs.map +1 -1
  157. package/dist/language_models/openai_completions_stream.d.cts +0 -1
  158. package/dist/language_models/openai_completions_stream.d.cts.map +1 -1
  159. package/dist/language_models/openai_completions_stream.d.ts +0 -1
  160. package/dist/language_models/openai_completions_stream.d.ts.map +1 -1
  161. package/dist/language_models/openai_completions_stream.js.map +1 -1
  162. package/dist/language_models/profile.d.cts.map +1 -1
  163. package/dist/language_models/profile.d.ts.map +1 -1
  164. package/dist/language_models/stream.cjs.map +1 -1
  165. package/dist/language_models/stream.d.cts +2 -1
  166. package/dist/language_models/stream.d.cts.map +1 -1
  167. package/dist/language_models/stream.d.ts +2 -1
  168. package/dist/language_models/stream.d.ts.map +1 -1
  169. package/dist/language_models/stream.js.map +1 -1
  170. package/dist/language_models/structured_output.cjs.map +1 -1
  171. package/dist/language_models/structured_output.d.cts +4 -0
  172. package/dist/language_models/structured_output.d.cts.map +1 -1
  173. package/dist/language_models/structured_output.d.ts +4 -0
  174. package/dist/language_models/structured_output.d.ts.map +1 -1
  175. package/dist/language_models/structured_output.js.map +1 -1
  176. package/dist/language_models/utils.cjs.map +1 -1
  177. package/dist/language_models/utils.js.map +1 -1
  178. package/dist/load/import_constants.cjs.map +1 -1
  179. package/dist/load/import_constants.js.map +1 -1
  180. package/dist/load/import_map.cjs +410 -0
  181. package/dist/load/import_map.cjs.map +1 -1
  182. package/dist/load/import_map.js +3 -1
  183. package/dist/load/import_map.js.map +1 -1
  184. package/dist/load/import_type.d.cts.map +1 -1
  185. package/dist/load/import_type.d.ts.map +1 -1
  186. package/dist/load/index.cjs.map +1 -1
  187. package/dist/load/index.d.cts +0 -1
  188. package/dist/load/index.d.cts.map +1 -1
  189. package/dist/load/index.d.ts +0 -1
  190. package/dist/load/index.d.ts.map +1 -1
  191. package/dist/load/index.js.map +1 -1
  192. package/dist/load/map_keys.cjs.map +1 -1
  193. package/dist/load/map_keys.d.cts.map +1 -1
  194. package/dist/load/map_keys.d.ts.map +1 -1
  195. package/dist/load/map_keys.js.map +1 -1
  196. package/dist/load/serializable.cjs.map +1 -1
  197. package/dist/load/serializable.d.cts +0 -1
  198. package/dist/load/serializable.d.cts.map +1 -1
  199. package/dist/load/serializable.d.ts +0 -1
  200. package/dist/load/serializable.d.ts.map +1 -1
  201. package/dist/load/serializable.js.map +1 -1
  202. package/dist/load/validation.cjs +3 -0
  203. package/dist/load/validation.cjs.map +1 -1
  204. package/dist/load/validation.js +1 -1
  205. package/dist/load/validation.js.map +1 -1
  206. package/dist/memory.cjs +8 -2
  207. package/dist/memory.cjs.map +1 -1
  208. package/dist/memory.d.cts.map +1 -1
  209. package/dist/memory.d.ts.map +1 -1
  210. package/dist/memory.js +8 -2
  211. package/dist/memory.js.map +1 -1
  212. package/dist/messages/ai.cjs.map +1 -1
  213. package/dist/messages/ai.d.cts +0 -1
  214. package/dist/messages/ai.d.cts.map +1 -1
  215. package/dist/messages/ai.d.ts +0 -1
  216. package/dist/messages/ai.d.ts.map +1 -1
  217. package/dist/messages/ai.js.map +1 -1
  218. package/dist/messages/base.cjs.map +1 -1
  219. package/dist/messages/base.d.cts +6 -9
  220. package/dist/messages/base.d.cts.map +1 -1
  221. package/dist/messages/base.d.ts +6 -9
  222. package/dist/messages/base.d.ts.map +1 -1
  223. package/dist/messages/base.js.map +1 -1
  224. package/dist/messages/block_translators/anthropic.cjs +2 -0
  225. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  226. package/dist/messages/block_translators/anthropic.js +1 -1
  227. package/dist/messages/block_translators/anthropic.js.map +1 -1
  228. package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
  229. package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
  230. package/dist/messages/block_translators/data.cjs +1 -0
  231. package/dist/messages/block_translators/data.cjs.map +1 -1
  232. package/dist/messages/block_translators/data.js +1 -1
  233. package/dist/messages/block_translators/data.js.map +1 -1
  234. package/dist/messages/block_translators/deepseek.cjs +1 -0
  235. package/dist/messages/block_translators/deepseek.cjs.map +1 -1
  236. package/dist/messages/block_translators/deepseek.js +1 -1
  237. package/dist/messages/block_translators/deepseek.js.map +1 -1
  238. package/dist/messages/block_translators/google.cjs.map +1 -1
  239. package/dist/messages/block_translators/google.js.map +1 -1
  240. package/dist/messages/block_translators/google_genai.cjs.map +1 -1
  241. package/dist/messages/block_translators/google_genai.js.map +1 -1
  242. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  243. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  244. package/dist/messages/block_translators/groq.cjs +1 -0
  245. package/dist/messages/block_translators/groq.cjs.map +1 -1
  246. package/dist/messages/block_translators/groq.js +1 -1
  247. package/dist/messages/block_translators/groq.js.map +1 -1
  248. package/dist/messages/block_translators/index.cjs +1 -1
  249. package/dist/messages/block_translators/index.cjs.map +1 -1
  250. package/dist/messages/block_translators/index.js +1 -1
  251. package/dist/messages/block_translators/index.js.map +1 -1
  252. package/dist/messages/block_translators/ollama.cjs +1 -0
  253. package/dist/messages/block_translators/ollama.cjs.map +1 -1
  254. package/dist/messages/block_translators/ollama.js +1 -1
  255. package/dist/messages/block_translators/ollama.js.map +1 -1
  256. package/dist/messages/block_translators/openai.cjs +4 -0
  257. package/dist/messages/block_translators/openai.cjs.map +1 -1
  258. package/dist/messages/block_translators/openai.js +1 -1
  259. package/dist/messages/block_translators/openai.js.map +1 -1
  260. package/dist/messages/block_translators/openrouter.cjs +1 -0
  261. package/dist/messages/block_translators/openrouter.cjs.map +1 -1
  262. package/dist/messages/block_translators/openrouter.js +1 -1
  263. package/dist/messages/block_translators/openrouter.js.map +1 -1
  264. package/dist/messages/block_translators/utils.cjs.map +1 -1
  265. package/dist/messages/block_translators/utils.js.map +1 -1
  266. package/dist/messages/block_translators/xai.cjs +1 -0
  267. package/dist/messages/block_translators/xai.cjs.map +1 -1
  268. package/dist/messages/block_translators/xai.js +1 -1
  269. package/dist/messages/block_translators/xai.js.map +1 -1
  270. package/dist/messages/chat.cjs.map +1 -1
  271. package/dist/messages/chat.d.cts +0 -1
  272. package/dist/messages/chat.d.cts.map +1 -1
  273. package/dist/messages/chat.d.ts +0 -1
  274. package/dist/messages/chat.d.ts.map +1 -1
  275. package/dist/messages/chat.js.map +1 -1
  276. package/dist/messages/content/base.d.cts.map +1 -1
  277. package/dist/messages/content/base.d.ts.map +1 -1
  278. package/dist/messages/content/data.cjs.map +1 -1
  279. package/dist/messages/content/data.d.cts +2 -9
  280. package/dist/messages/content/data.d.cts.map +1 -1
  281. package/dist/messages/content/data.d.ts +2 -9
  282. package/dist/messages/content/data.d.ts.map +1 -1
  283. package/dist/messages/content/data.js.map +1 -1
  284. package/dist/messages/content/index.cjs.map +1 -1
  285. package/dist/messages/content/index.d.cts +0 -1
  286. package/dist/messages/content/index.d.cts.map +1 -1
  287. package/dist/messages/content/index.d.ts +0 -1
  288. package/dist/messages/content/index.d.ts.map +1 -1
  289. package/dist/messages/content/index.js.map +1 -1
  290. package/dist/messages/content/multimodal.cjs.map +1 -1
  291. package/dist/messages/content/multimodal.d.cts +8 -5
  292. package/dist/messages/content/multimodal.d.cts.map +1 -1
  293. package/dist/messages/content/multimodal.d.ts +8 -5
  294. package/dist/messages/content/multimodal.d.ts.map +1 -1
  295. package/dist/messages/content/multimodal.js.map +1 -1
  296. package/dist/messages/content/tools.cjs.map +1 -1
  297. package/dist/messages/content/tools.d.cts +0 -1
  298. package/dist/messages/content/tools.d.cts.map +1 -1
  299. package/dist/messages/content/tools.d.ts +0 -1
  300. package/dist/messages/content/tools.d.ts.map +1 -1
  301. package/dist/messages/content/tools.js.map +1 -1
  302. package/dist/messages/format.cjs.map +1 -1
  303. package/dist/messages/format.d.cts.map +1 -1
  304. package/dist/messages/format.d.ts.map +1 -1
  305. package/dist/messages/format.js.map +1 -1
  306. package/dist/messages/function.cjs.map +1 -1
  307. package/dist/messages/function.d.cts +0 -1
  308. package/dist/messages/function.d.cts.map +1 -1
  309. package/dist/messages/function.d.ts +0 -1
  310. package/dist/messages/function.d.ts.map +1 -1
  311. package/dist/messages/function.js.map +1 -1
  312. package/dist/messages/human.cjs.map +1 -1
  313. package/dist/messages/human.d.cts +0 -1
  314. package/dist/messages/human.d.cts.map +1 -1
  315. package/dist/messages/human.d.ts +0 -1
  316. package/dist/messages/human.d.ts.map +1 -1
  317. package/dist/messages/human.js.map +1 -1
  318. package/dist/messages/message.cjs.map +1 -1
  319. package/dist/messages/message.d.cts +31 -22
  320. package/dist/messages/message.d.cts.map +1 -1
  321. package/dist/messages/message.d.ts +31 -22
  322. package/dist/messages/message.d.ts.map +1 -1
  323. package/dist/messages/message.js.map +1 -1
  324. package/dist/messages/metadata.cjs.map +1 -1
  325. package/dist/messages/metadata.d.cts +0 -1
  326. package/dist/messages/metadata.d.cts.map +1 -1
  327. package/dist/messages/metadata.d.ts +0 -1
  328. package/dist/messages/metadata.d.ts.map +1 -1
  329. package/dist/messages/metadata.js.map +1 -1
  330. package/dist/messages/modifier.cjs.map +1 -1
  331. package/dist/messages/modifier.d.cts +0 -1
  332. package/dist/messages/modifier.d.cts.map +1 -1
  333. package/dist/messages/modifier.d.ts +0 -1
  334. package/dist/messages/modifier.d.ts.map +1 -1
  335. package/dist/messages/modifier.js.map +1 -1
  336. package/dist/messages/system.cjs.map +1 -1
  337. package/dist/messages/system.d.cts +0 -1
  338. package/dist/messages/system.d.cts.map +1 -1
  339. package/dist/messages/system.d.ts +0 -1
  340. package/dist/messages/system.d.ts.map +1 -1
  341. package/dist/messages/system.js.map +1 -1
  342. package/dist/messages/tool.cjs.map +1 -1
  343. package/dist/messages/tool.d.cts +3 -4
  344. package/dist/messages/tool.d.cts.map +1 -1
  345. package/dist/messages/tool.d.ts +3 -4
  346. package/dist/messages/tool.d.ts.map +1 -1
  347. package/dist/messages/tool.js.map +1 -1
  348. package/dist/messages/transformers.cjs +1 -1
  349. package/dist/messages/transformers.cjs.map +1 -1
  350. package/dist/messages/transformers.d.cts +1 -3
  351. package/dist/messages/transformers.d.cts.map +1 -1
  352. package/dist/messages/transformers.d.ts +1 -3
  353. package/dist/messages/transformers.d.ts.map +1 -1
  354. package/dist/messages/transformers.js +1 -1
  355. package/dist/messages/transformers.js.map +1 -1
  356. package/dist/messages/utils.cjs.map +1 -1
  357. package/dist/messages/utils.d.cts +4 -5
  358. package/dist/messages/utils.d.cts.map +1 -1
  359. package/dist/messages/utils.d.ts +4 -5
  360. package/dist/messages/utils.d.ts.map +1 -1
  361. package/dist/messages/utils.js.map +1 -1
  362. package/dist/output_parsers/base.cjs.map +1 -1
  363. package/dist/output_parsers/base.d.cts +4 -1
  364. package/dist/output_parsers/base.d.cts.map +1 -1
  365. package/dist/output_parsers/base.d.ts +4 -1
  366. package/dist/output_parsers/base.d.ts.map +1 -1
  367. package/dist/output_parsers/base.js.map +1 -1
  368. package/dist/output_parsers/bytes.cjs.map +1 -1
  369. package/dist/output_parsers/bytes.d.cts +0 -1
  370. package/dist/output_parsers/bytes.d.cts.map +1 -1
  371. package/dist/output_parsers/bytes.d.ts +0 -1
  372. package/dist/output_parsers/bytes.d.ts.map +1 -1
  373. package/dist/output_parsers/bytes.js.map +1 -1
  374. package/dist/output_parsers/json.cjs +2 -0
  375. package/dist/output_parsers/json.cjs.map +1 -1
  376. package/dist/output_parsers/json.d.cts +2 -2
  377. package/dist/output_parsers/json.d.cts.map +1 -1
  378. package/dist/output_parsers/json.d.ts +2 -2
  379. package/dist/output_parsers/json.d.ts.map +1 -1
  380. package/dist/output_parsers/json.js +2 -2
  381. package/dist/output_parsers/json.js.map +1 -1
  382. package/dist/output_parsers/list.cjs.map +1 -1
  383. package/dist/output_parsers/list.d.cts +2 -5
  384. package/dist/output_parsers/list.d.cts.map +1 -1
  385. package/dist/output_parsers/list.d.ts +2 -5
  386. package/dist/output_parsers/list.d.ts.map +1 -1
  387. package/dist/output_parsers/list.js.map +1 -1
  388. package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
  389. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
  390. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts.map +1 -1
  391. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  392. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts.map +1 -1
  393. package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
  394. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  395. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +2 -2
  396. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts.map +1 -1
  397. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +2 -2
  398. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts.map +1 -1
  399. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  400. package/dist/output_parsers/standard_schema.cjs.map +1 -1
  401. package/dist/output_parsers/standard_schema.d.cts +1 -1
  402. package/dist/output_parsers/standard_schema.d.cts.map +1 -1
  403. package/dist/output_parsers/standard_schema.d.ts +1 -1
  404. package/dist/output_parsers/standard_schema.d.ts.map +1 -1
  405. package/dist/output_parsers/standard_schema.js.map +1 -1
  406. package/dist/output_parsers/string.cjs.map +1 -1
  407. package/dist/output_parsers/string.d.cts +1 -1
  408. package/dist/output_parsers/string.d.cts.map +1 -1
  409. package/dist/output_parsers/string.d.ts +1 -1
  410. package/dist/output_parsers/string.d.ts.map +1 -1
  411. package/dist/output_parsers/string.js.map +1 -1
  412. package/dist/output_parsers/structured.cjs +1 -1
  413. package/dist/output_parsers/structured.cjs.map +1 -1
  414. package/dist/output_parsers/structured.d.cts +2 -4
  415. package/dist/output_parsers/structured.d.cts.map +1 -1
  416. package/dist/output_parsers/structured.d.ts +2 -4
  417. package/dist/output_parsers/structured.d.ts.map +1 -1
  418. package/dist/output_parsers/structured.js +1 -0
  419. package/dist/output_parsers/structured.js.map +1 -1
  420. package/dist/output_parsers/transform.cjs +0 -1
  421. package/dist/output_parsers/transform.cjs.map +1 -1
  422. package/dist/output_parsers/transform.d.cts +0 -1
  423. package/dist/output_parsers/transform.d.cts.map +1 -1
  424. package/dist/output_parsers/transform.d.ts +0 -1
  425. package/dist/output_parsers/transform.d.ts.map +1 -1
  426. package/dist/output_parsers/transform.js.map +1 -1
  427. package/dist/output_parsers/xml.cjs.map +1 -1
  428. package/dist/output_parsers/xml.d.cts +0 -1
  429. package/dist/output_parsers/xml.d.cts.map +1 -1
  430. package/dist/output_parsers/xml.d.ts +0 -1
  431. package/dist/output_parsers/xml.d.ts.map +1 -1
  432. package/dist/output_parsers/xml.js.map +1 -1
  433. package/dist/outputs.cjs.map +1 -1
  434. package/dist/outputs.d.cts +0 -1
  435. package/dist/outputs.d.cts.map +1 -1
  436. package/dist/outputs.d.ts +0 -1
  437. package/dist/outputs.d.ts.map +1 -1
  438. package/dist/outputs.js.map +1 -1
  439. package/dist/prompt_values.cjs.map +1 -1
  440. package/dist/prompt_values.d.cts +3 -2
  441. package/dist/prompt_values.d.cts.map +1 -1
  442. package/dist/prompt_values.d.ts +3 -2
  443. package/dist/prompt_values.d.ts.map +1 -1
  444. package/dist/prompt_values.js.map +1 -1
  445. package/dist/prompts/base.cjs.map +1 -1
  446. package/dist/prompts/base.d.cts +2 -1
  447. package/dist/prompts/base.d.cts.map +1 -1
  448. package/dist/prompts/base.d.ts +2 -1
  449. package/dist/prompts/base.d.ts.map +1 -1
  450. package/dist/prompts/base.js.map +1 -1
  451. package/dist/prompts/chat.cjs +3 -2
  452. package/dist/prompts/chat.cjs.map +1 -1
  453. package/dist/prompts/chat.d.cts +4 -4
  454. package/dist/prompts/chat.d.cts.map +1 -1
  455. package/dist/prompts/chat.d.ts +4 -4
  456. package/dist/prompts/chat.d.ts.map +1 -1
  457. package/dist/prompts/chat.js +3 -2
  458. package/dist/prompts/chat.js.map +1 -1
  459. package/dist/prompts/dict.cjs.map +1 -1
  460. package/dist/prompts/dict.d.cts +0 -1
  461. package/dist/prompts/dict.d.cts.map +1 -1
  462. package/dist/prompts/dict.d.ts +0 -1
  463. package/dist/prompts/dict.d.ts.map +1 -1
  464. package/dist/prompts/dict.js.map +1 -1
  465. package/dist/prompts/few_shot.cjs +6 -4
  466. package/dist/prompts/few_shot.cjs.map +1 -1
  467. package/dist/prompts/few_shot.d.cts +1 -1
  468. package/dist/prompts/few_shot.d.cts.map +1 -1
  469. package/dist/prompts/few_shot.d.ts +1 -1
  470. package/dist/prompts/few_shot.d.ts.map +1 -1
  471. package/dist/prompts/few_shot.js +6 -4
  472. package/dist/prompts/few_shot.js.map +1 -1
  473. package/dist/prompts/image.cjs +3 -2
  474. package/dist/prompts/image.cjs.map +1 -1
  475. package/dist/prompts/image.d.cts +1 -1
  476. package/dist/prompts/image.d.cts.map +1 -1
  477. package/dist/prompts/image.d.ts +1 -1
  478. package/dist/prompts/image.d.ts.map +1 -1
  479. package/dist/prompts/image.js +3 -2
  480. package/dist/prompts/image.js.map +1 -1
  481. package/dist/prompts/pipeline.cjs.map +1 -1
  482. package/dist/prompts/pipeline.d.cts +0 -1
  483. package/dist/prompts/pipeline.d.cts.map +1 -1
  484. package/dist/prompts/pipeline.d.ts +0 -1
  485. package/dist/prompts/pipeline.d.ts.map +1 -1
  486. package/dist/prompts/pipeline.js.map +1 -1
  487. package/dist/prompts/prompt.cjs +9 -7
  488. package/dist/prompts/prompt.cjs.map +1 -1
  489. package/dist/prompts/prompt.d.cts +2 -2
  490. package/dist/prompts/prompt.d.cts.map +1 -1
  491. package/dist/prompts/prompt.d.ts +2 -2
  492. package/dist/prompts/prompt.d.ts.map +1 -1
  493. package/dist/prompts/prompt.js +9 -7
  494. package/dist/prompts/prompt.js.map +1 -1
  495. package/dist/prompts/serde.d.cts +1 -1
  496. package/dist/prompts/serde.d.cts.map +1 -1
  497. package/dist/prompts/serde.d.ts +1 -1
  498. package/dist/prompts/serde.d.ts.map +1 -1
  499. package/dist/prompts/string.cjs.map +1 -1
  500. package/dist/prompts/string.d.cts +0 -1
  501. package/dist/prompts/string.d.cts.map +1 -1
  502. package/dist/prompts/string.d.ts +0 -1
  503. package/dist/prompts/string.d.ts.map +1 -1
  504. package/dist/prompts/string.js.map +1 -1
  505. package/dist/prompts/structured.cjs.map +1 -1
  506. package/dist/prompts/structured.d.cts +2 -2
  507. package/dist/prompts/structured.d.cts.map +1 -1
  508. package/dist/prompts/structured.d.ts +2 -2
  509. package/dist/prompts/structured.d.ts.map +1 -1
  510. package/dist/prompts/structured.js.map +1 -1
  511. package/dist/prompts/template.cjs +9 -9
  512. package/dist/prompts/template.cjs.map +1 -1
  513. package/dist/prompts/template.d.cts +1 -0
  514. package/dist/prompts/template.d.cts.map +1 -1
  515. package/dist/prompts/template.d.ts +1 -0
  516. package/dist/prompts/template.d.ts.map +1 -1
  517. package/dist/prompts/template.js +9 -9
  518. package/dist/prompts/template.js.map +1 -1
  519. package/dist/retrievers/document_compressors/index.cjs.map +1 -1
  520. package/dist/retrievers/document_compressors/index.d.cts +0 -1
  521. package/dist/retrievers/document_compressors/index.d.cts.map +1 -1
  522. package/dist/retrievers/document_compressors/index.d.ts +0 -1
  523. package/dist/retrievers/document_compressors/index.d.ts.map +1 -1
  524. package/dist/retrievers/document_compressors/index.js.map +1 -1
  525. package/dist/retrievers/index.cjs.map +1 -1
  526. package/dist/retrievers/index.d.cts +1 -1
  527. package/dist/retrievers/index.d.cts.map +1 -1
  528. package/dist/retrievers/index.d.ts +1 -1
  529. package/dist/retrievers/index.d.ts.map +1 -1
  530. package/dist/retrievers/index.js.map +1 -1
  531. package/dist/runnables/base.cjs +2 -1
  532. package/dist/runnables/base.cjs.map +1 -1
  533. package/dist/runnables/base.d.cts +7 -19
  534. package/dist/runnables/base.d.cts.map +1 -1
  535. package/dist/runnables/base.d.ts +7 -19
  536. package/dist/runnables/base.d.ts.map +1 -1
  537. package/dist/runnables/base.js +1 -1
  538. package/dist/runnables/base.js.map +1 -1
  539. package/dist/runnables/branch.cjs.map +1 -1
  540. package/dist/runnables/branch.d.cts +1 -1
  541. package/dist/runnables/branch.d.cts.map +1 -1
  542. package/dist/runnables/branch.d.ts +1 -1
  543. package/dist/runnables/branch.d.ts.map +1 -1
  544. package/dist/runnables/branch.js.map +1 -1
  545. package/dist/runnables/config.cjs +3 -2
  546. package/dist/runnables/config.cjs.map +1 -1
  547. package/dist/runnables/config.d.cts +2 -10
  548. package/dist/runnables/config.d.cts.map +1 -1
  549. package/dist/runnables/config.d.ts +2 -10
  550. package/dist/runnables/config.d.ts.map +1 -1
  551. package/dist/runnables/config.js +3 -3
  552. package/dist/runnables/config.js.map +1 -1
  553. package/dist/runnables/graph.cjs.map +1 -1
  554. package/dist/runnables/graph.d.cts +1 -2
  555. package/dist/runnables/graph.d.cts.map +1 -1
  556. package/dist/runnables/graph.d.ts +1 -2
  557. package/dist/runnables/graph.d.ts.map +1 -1
  558. package/dist/runnables/graph.js.map +1 -1
  559. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  560. package/dist/runnables/graph_mermaid.js.map +1 -1
  561. package/dist/runnables/history.cjs.map +1 -1
  562. package/dist/runnables/history.d.cts +2 -1
  563. package/dist/runnables/history.d.cts.map +1 -1
  564. package/dist/runnables/history.d.ts +2 -1
  565. package/dist/runnables/history.d.ts.map +1 -1
  566. package/dist/runnables/history.js.map +1 -1
  567. package/dist/runnables/iter.cjs.map +1 -1
  568. package/dist/runnables/iter.js.map +1 -1
  569. package/dist/runnables/passthrough.cjs.map +1 -1
  570. package/dist/runnables/passthrough.d.cts +1 -1
  571. package/dist/runnables/passthrough.d.cts.map +1 -1
  572. package/dist/runnables/passthrough.d.ts +1 -1
  573. package/dist/runnables/passthrough.d.ts.map +1 -1
  574. package/dist/runnables/passthrough.js.map +1 -1
  575. package/dist/runnables/router.cjs.map +1 -1
  576. package/dist/runnables/router.d.cts +1 -1
  577. package/dist/runnables/router.d.cts.map +1 -1
  578. package/dist/runnables/router.d.ts +1 -1
  579. package/dist/runnables/router.d.ts.map +1 -1
  580. package/dist/runnables/router.js.map +1 -1
  581. package/dist/runnables/types.d.cts +2 -2
  582. package/dist/runnables/types.d.cts.map +1 -1
  583. package/dist/runnables/types.d.ts +2 -2
  584. package/dist/runnables/types.d.ts.map +1 -1
  585. package/dist/runnables/utils.cjs.map +1 -1
  586. package/dist/runnables/utils.js.map +1 -1
  587. package/dist/runnables/wrappers.cjs.map +1 -1
  588. package/dist/runnables/wrappers.js.map +1 -1
  589. package/dist/singletons/async_local_storage/context.cjs +0 -1
  590. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  591. package/dist/singletons/async_local_storage/context.d.cts +0 -1
  592. package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
  593. package/dist/singletons/async_local_storage/context.d.ts +0 -1
  594. package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
  595. package/dist/singletons/async_local_storage/context.js.map +1 -1
  596. package/dist/singletons/async_local_storage/globals.cjs +1 -0
  597. package/dist/singletons/async_local_storage/globals.cjs.map +1 -1
  598. package/dist/singletons/async_local_storage/globals.d.cts.map +1 -1
  599. package/dist/singletons/async_local_storage/globals.d.ts.map +1 -1
  600. package/dist/singletons/async_local_storage/globals.js +1 -1
  601. package/dist/singletons/async_local_storage/globals.js.map +1 -1
  602. package/dist/singletons/async_local_storage/index.cjs +0 -1
  603. package/dist/singletons/async_local_storage/index.cjs.map +1 -1
  604. package/dist/singletons/async_local_storage/index.d.cts +1 -2
  605. package/dist/singletons/async_local_storage/index.d.cts.map +1 -1
  606. package/dist/singletons/async_local_storage/index.d.ts +1 -2
  607. package/dist/singletons/async_local_storage/index.d.ts.map +1 -1
  608. package/dist/singletons/async_local_storage/index.js.map +1 -1
  609. package/dist/singletons/callbacks.cjs +1 -0
  610. package/dist/singletons/callbacks.cjs.map +1 -1
  611. package/dist/singletons/callbacks.d.cts +1 -0
  612. package/dist/singletons/callbacks.d.cts.map +1 -1
  613. package/dist/singletons/callbacks.d.ts +0 -1
  614. package/dist/singletons/callbacks.d.ts.map +1 -1
  615. package/dist/singletons/callbacks.js +1 -1
  616. package/dist/singletons/callbacks.js.map +1 -1
  617. package/dist/singletons/tracer.cjs +0 -1
  618. package/dist/singletons/tracer.cjs.map +1 -1
  619. package/dist/singletons/tracer.js.map +1 -1
  620. package/dist/stores.cjs.map +1 -1
  621. package/dist/stores.d.cts +0 -1
  622. package/dist/stores.d.cts.map +1 -1
  623. package/dist/stores.d.ts +0 -1
  624. package/dist/stores.d.ts.map +1 -1
  625. package/dist/stores.js.map +1 -1
  626. package/dist/structured_query/base.cjs.map +1 -1
  627. package/dist/structured_query/base.d.cts +0 -1
  628. package/dist/structured_query/base.d.cts.map +1 -1
  629. package/dist/structured_query/base.d.ts +0 -1
  630. package/dist/structured_query/base.d.ts.map +1 -1
  631. package/dist/structured_query/base.js.map +1 -1
  632. package/dist/structured_query/functional.cjs.map +1 -1
  633. package/dist/structured_query/functional.d.cts +0 -1
  634. package/dist/structured_query/functional.d.cts.map +1 -1
  635. package/dist/structured_query/functional.d.ts +0 -1
  636. package/dist/structured_query/functional.d.ts.map +1 -1
  637. package/dist/structured_query/functional.js.map +1 -1
  638. package/dist/structured_query/ir.cjs +7 -0
  639. package/dist/structured_query/ir.cjs.map +1 -1
  640. package/dist/structured_query/ir.d.cts +0 -1
  641. package/dist/structured_query/ir.d.cts.map +1 -1
  642. package/dist/structured_query/ir.d.ts +0 -1
  643. package/dist/structured_query/ir.d.ts.map +1 -1
  644. package/dist/structured_query/ir.js +7 -0
  645. package/dist/structured_query/ir.js.map +1 -1
  646. package/dist/structured_query/utils.cjs.map +1 -1
  647. package/dist/structured_query/utils.d.cts.map +1 -1
  648. package/dist/structured_query/utils.d.ts.map +1 -1
  649. package/dist/structured_query/utils.js.map +1 -1
  650. package/dist/testing/fake_model_builder.cjs.map +1 -1
  651. package/dist/testing/fake_model_builder.d.cts +1 -1
  652. package/dist/testing/fake_model_builder.d.cts.map +1 -1
  653. package/dist/testing/fake_model_builder.d.ts +1 -1
  654. package/dist/testing/fake_model_builder.d.ts.map +1 -1
  655. package/dist/testing/fake_model_builder.js.map +1 -1
  656. package/dist/testing/matchers.cjs.map +1 -1
  657. package/dist/testing/matchers.d.cts +0 -1
  658. package/dist/testing/matchers.d.cts.map +1 -1
  659. package/dist/testing/matchers.d.ts +0 -1
  660. package/dist/testing/matchers.d.ts.map +1 -1
  661. package/dist/testing/matchers.js.map +1 -1
  662. package/dist/tools/index.cjs.map +1 -1
  663. package/dist/tools/index.d.cts +8 -7
  664. package/dist/tools/index.d.cts.map +1 -1
  665. package/dist/tools/index.d.ts +8 -7
  666. package/dist/tools/index.d.ts.map +1 -1
  667. package/dist/tools/index.js.map +1 -1
  668. package/dist/tools/types.cjs.map +1 -1
  669. package/dist/tools/types.d.cts +4 -3
  670. package/dist/tools/types.d.cts.map +1 -1
  671. package/dist/tools/types.d.ts +4 -3
  672. package/dist/tools/types.d.ts.map +1 -1
  673. package/dist/tools/types.js.map +1 -1
  674. package/dist/tools/utils.cjs.map +1 -1
  675. package/dist/tools/utils.d.cts.map +1 -1
  676. package/dist/tools/utils.d.ts.map +1 -1
  677. package/dist/tools/utils.js.map +1 -1
  678. package/dist/tracers/base.cjs.map +1 -1
  679. package/dist/tracers/base.d.cts +18 -14
  680. package/dist/tracers/base.d.cts.map +1 -1
  681. package/dist/tracers/base.d.ts +18 -14
  682. package/dist/tracers/base.d.ts.map +1 -1
  683. package/dist/tracers/base.js.map +1 -1
  684. package/dist/tracers/console.cjs.map +1 -1
  685. package/dist/tracers/console.d.cts +0 -1
  686. package/dist/tracers/console.d.cts.map +1 -1
  687. package/dist/tracers/console.d.ts +0 -1
  688. package/dist/tracers/console.d.ts.map +1 -1
  689. package/dist/tracers/console.js.map +1 -1
  690. package/dist/tracers/event_stream.cjs.map +1 -1
  691. package/dist/tracers/event_stream.d.cts +5 -2
  692. package/dist/tracers/event_stream.d.cts.map +1 -1
  693. package/dist/tracers/event_stream.d.ts +5 -2
  694. package/dist/tracers/event_stream.d.ts.map +1 -1
  695. package/dist/tracers/event_stream.js.map +1 -1
  696. package/dist/tracers/log_stream.cjs.map +1 -1
  697. package/dist/tracers/log_stream.d.cts +30 -15
  698. package/dist/tracers/log_stream.d.cts.map +1 -1
  699. package/dist/tracers/log_stream.d.ts +30 -15
  700. package/dist/tracers/log_stream.d.ts.map +1 -1
  701. package/dist/tracers/log_stream.js.map +1 -1
  702. package/dist/tracers/root_listener.cjs.map +1 -1
  703. package/dist/tracers/root_listener.js.map +1 -1
  704. package/dist/tracers/run_collector.cjs.map +1 -1
  705. package/dist/tracers/run_collector.d.cts +1 -4
  706. package/dist/tracers/run_collector.d.cts.map +1 -1
  707. package/dist/tracers/run_collector.d.ts +1 -4
  708. package/dist/tracers/run_collector.d.ts.map +1 -1
  709. package/dist/tracers/run_collector.js.map +1 -1
  710. package/dist/tracers/tracer_langchain.cjs +8 -3
  711. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  712. package/dist/tracers/tracer_langchain.d.cts +3 -5
  713. package/dist/tracers/tracer_langchain.d.cts.map +1 -1
  714. package/dist/tracers/tracer_langchain.d.ts +3 -5
  715. package/dist/tracers/tracer_langchain.d.ts.map +1 -1
  716. package/dist/tracers/tracer_langchain.js +8 -3
  717. package/dist/tracers/tracer_langchain.js.map +1 -1
  718. package/dist/types/_internal.d.cts.map +1 -1
  719. package/dist/types/_internal.d.ts.map +1 -1
  720. package/dist/types/stream.d.cts +1 -1
  721. package/dist/types/stream.d.ts +1 -1
  722. package/dist/types/type-utils.d.cts +1 -1
  723. package/dist/types/type-utils.d.cts.map +1 -1
  724. package/dist/types/type-utils.d.ts +1 -1
  725. package/dist/types/type-utils.d.ts.map +1 -1
  726. package/dist/utils/async_caller.cjs.map +1 -1
  727. package/dist/utils/async_caller.d.cts.map +1 -1
  728. package/dist/utils/async_caller.d.ts.map +1 -1
  729. package/dist/utils/async_caller.js.map +1 -1
  730. package/dist/utils/callbacks.cjs.map +1 -1
  731. package/dist/utils/callbacks.js.map +1 -1
  732. package/dist/utils/chunk_array.cjs.map +1 -1
  733. package/dist/utils/chunk_array.d.cts.map +1 -1
  734. package/dist/utils/chunk_array.d.ts.map +1 -1
  735. package/dist/utils/chunk_array.js.map +1 -1
  736. package/dist/utils/context.cjs.map +1 -1
  737. package/dist/utils/context.d.cts.map +1 -1
  738. package/dist/utils/context.d.ts.map +1 -1
  739. package/dist/utils/context.js.map +1 -1
  740. package/dist/utils/env.cjs.map +1 -1
  741. package/dist/utils/env.d.cts.map +1 -1
  742. package/dist/utils/env.d.ts.map +1 -1
  743. package/dist/utils/env.js.map +1 -1
  744. package/dist/utils/event_source_parse.cjs +2 -2
  745. package/dist/utils/event_source_parse.cjs.map +1 -1
  746. package/dist/utils/event_source_parse.d.cts +0 -1
  747. package/dist/utils/event_source_parse.d.cts.map +1 -1
  748. package/dist/utils/event_source_parse.d.ts +0 -1
  749. package/dist/utils/event_source_parse.d.ts.map +1 -1
  750. package/dist/utils/event_source_parse.js +2 -2
  751. package/dist/utils/event_source_parse.js.map +1 -1
  752. package/dist/utils/fast-json-patch/index.cjs +9 -1
  753. package/dist/utils/fast-json-patch/index.cjs.map +1 -1
  754. package/dist/utils/fast-json-patch/index.js +3 -3
  755. package/dist/utils/fast-json-patch/index.js.map +1 -1
  756. package/dist/utils/fast-json-patch/src/core.cjs +7 -0
  757. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  758. package/dist/utils/fast-json-patch/src/core.d.cts +1 -1
  759. package/dist/utils/fast-json-patch/src/core.d.cts.map +1 -1
  760. package/dist/utils/fast-json-patch/src/core.d.ts +1 -1
  761. package/dist/utils/fast-json-patch/src/core.d.ts.map +1 -1
  762. package/dist/utils/fast-json-patch/src/core.js +6 -1
  763. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  764. package/dist/utils/fast-json-patch/src/duplex.cjs.map +1 -1
  765. package/dist/utils/fast-json-patch/src/duplex.d.cts +0 -1
  766. package/dist/utils/fast-json-patch/src/duplex.d.cts.map +1 -1
  767. package/dist/utils/fast-json-patch/src/duplex.d.ts +0 -1
  768. package/dist/utils/fast-json-patch/src/duplex.d.ts.map +1 -1
  769. package/dist/utils/fast-json-patch/src/duplex.js.map +1 -1
  770. package/dist/utils/fast-json-patch/src/helpers.cjs +4 -0
  771. package/dist/utils/fast-json-patch/src/helpers.cjs.map +1 -1
  772. package/dist/utils/fast-json-patch/src/helpers.js +4 -0
  773. package/dist/utils/fast-json-patch/src/helpers.js.map +1 -1
  774. package/dist/utils/format.d.cts.map +1 -1
  775. package/dist/utils/format.d.ts.map +1 -1
  776. package/dist/utils/function_calling.cjs.map +1 -1
  777. package/dist/utils/function_calling.d.cts +0 -1
  778. package/dist/utils/function_calling.d.cts.map +1 -1
  779. package/dist/utils/function_calling.d.ts +0 -1
  780. package/dist/utils/function_calling.d.ts.map +1 -1
  781. package/dist/utils/function_calling.js.map +1 -1
  782. package/dist/utils/gateway.cjs +43 -0
  783. package/dist/utils/gateway.cjs.map +1 -0
  784. package/dist/utils/gateway.d.cts +13 -0
  785. package/dist/utils/gateway.d.cts.map +1 -0
  786. package/dist/utils/gateway.d.ts +13 -0
  787. package/dist/utils/gateway.d.ts.map +1 -0
  788. package/dist/utils/gateway.js +36 -0
  789. package/dist/utils/gateway.js.map +1 -0
  790. package/dist/utils/hash.d.cts +0 -1
  791. package/dist/utils/hash.d.cts.map +1 -1
  792. package/dist/utils/hash.d.ts +0 -1
  793. package/dist/utils/hash.d.ts.map +1 -1
  794. package/dist/utils/is-network-error/index.cjs +1 -1
  795. package/dist/utils/is-network-error/index.cjs.map +1 -1
  796. package/dist/utils/is-network-error/index.js +1 -1
  797. package/dist/utils/is-network-error/index.js.map +1 -1
  798. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  799. package/dist/utils/js-sha256/hash.d.cts.map +1 -1
  800. package/dist/utils/js-sha256/hash.d.ts.map +1 -1
  801. package/dist/utils/js-sha256/hash.js.map +1 -1
  802. package/dist/utils/json.cjs +1 -0
  803. package/dist/utils/json.cjs.map +1 -1
  804. package/dist/utils/json.d.cts.map +1 -1
  805. package/dist/utils/json.d.ts.map +1 -1
  806. package/dist/utils/json.js +1 -1
  807. package/dist/utils/json.js.map +1 -1
  808. package/dist/utils/json_schema.cjs.map +1 -1
  809. package/dist/utils/json_schema.d.cts +1 -1
  810. package/dist/utils/json_schema.d.cts.map +1 -1
  811. package/dist/utils/json_schema.d.ts +1 -1
  812. package/dist/utils/json_schema.d.ts.map +1 -1
  813. package/dist/utils/json_schema.js.map +1 -1
  814. package/dist/utils/math.cjs.map +1 -1
  815. package/dist/utils/math.d.cts.map +1 -1
  816. package/dist/utils/math.d.ts.map +1 -1
  817. package/dist/utils/math.js.map +1 -1
  818. package/dist/utils/ml-distance/distances.cjs.map +1 -1
  819. package/dist/utils/ml-distance/distances.js.map +1 -1
  820. package/dist/utils/ml-distance/similarities.cjs.map +1 -1
  821. package/dist/utils/ml-distance/similarities.d.cts.map +1 -1
  822. package/dist/utils/ml-distance/similarities.d.ts.map +1 -1
  823. package/dist/utils/ml-distance/similarities.js.map +1 -1
  824. package/dist/utils/ml-distance-euclidean/euclidean.cjs +1 -0
  825. package/dist/utils/ml-distance-euclidean/euclidean.cjs.map +1 -1
  826. package/dist/utils/ml-distance-euclidean/euclidean.js +1 -1
  827. package/dist/utils/ml-distance-euclidean/euclidean.js.map +1 -1
  828. package/dist/utils/namespace.cjs +1 -0
  829. package/dist/utils/namespace.cjs.map +1 -1
  830. package/dist/utils/namespace.d.cts.map +1 -1
  831. package/dist/utils/namespace.d.ts.map +1 -1
  832. package/dist/utils/namespace.js +1 -1
  833. package/dist/utils/namespace.js.map +1 -1
  834. package/dist/utils/p-retry/index.cjs +1 -0
  835. package/dist/utils/p-retry/index.cjs.map +1 -1
  836. package/dist/utils/p-retry/index.js +1 -1
  837. package/dist/utils/p-retry/index.js.map +1 -1
  838. package/dist/utils/sax-js/sax.cjs.map +1 -1
  839. package/dist/utils/sax-js/sax.js.map +1 -1
  840. package/dist/utils/signal.cjs.map +1 -1
  841. package/dist/utils/signal.d.cts.map +1 -1
  842. package/dist/utils/signal.d.ts.map +1 -1
  843. package/dist/utils/signal.js.map +1 -1
  844. package/dist/utils/ssrf.cjs.map +1 -1
  845. package/dist/utils/ssrf.d.cts.map +1 -1
  846. package/dist/utils/ssrf.d.ts.map +1 -1
  847. package/dist/utils/ssrf.js.map +1 -1
  848. package/dist/utils/standard_schema.cjs.map +1 -1
  849. package/dist/utils/standard_schema.d.cts +0 -1
  850. package/dist/utils/standard_schema.d.cts.map +1 -1
  851. package/dist/utils/standard_schema.d.ts +0 -1
  852. package/dist/utils/standard_schema.d.ts.map +1 -1
  853. package/dist/utils/standard_schema.js.map +1 -1
  854. package/dist/utils/stream.cjs.map +1 -1
  855. package/dist/utils/stream.d.cts +0 -1
  856. package/dist/utils/stream.d.cts.map +1 -1
  857. package/dist/utils/stream.d.ts +0 -1
  858. package/dist/utils/stream.d.ts.map +1 -1
  859. package/dist/utils/stream.js.map +1 -1
  860. package/dist/utils/testing/chat_models.cjs.map +1 -1
  861. package/dist/utils/testing/chat_models.d.cts +2 -9
  862. package/dist/utils/testing/chat_models.d.cts.map +1 -1
  863. package/dist/utils/testing/chat_models.d.ts +2 -9
  864. package/dist/utils/testing/chat_models.d.ts.map +1 -1
  865. package/dist/utils/testing/chat_models.js.map +1 -1
  866. package/dist/utils/testing/embeddings.cjs.map +1 -1
  867. package/dist/utils/testing/embeddings.d.cts +0 -1
  868. package/dist/utils/testing/embeddings.d.cts.map +1 -1
  869. package/dist/utils/testing/embeddings.d.ts +0 -1
  870. package/dist/utils/testing/embeddings.d.ts.map +1 -1
  871. package/dist/utils/testing/embeddings.js.map +1 -1
  872. package/dist/utils/testing/llms.cjs.map +1 -1
  873. package/dist/utils/testing/llms.d.cts +0 -1
  874. package/dist/utils/testing/llms.d.cts.map +1 -1
  875. package/dist/utils/testing/llms.d.ts +0 -1
  876. package/dist/utils/testing/llms.d.ts.map +1 -1
  877. package/dist/utils/testing/llms.js.map +1 -1
  878. package/dist/utils/testing/message_history.cjs.map +1 -1
  879. package/dist/utils/testing/message_history.d.cts +1 -1
  880. package/dist/utils/testing/message_history.d.cts.map +1 -1
  881. package/dist/utils/testing/message_history.d.ts +1 -1
  882. package/dist/utils/testing/message_history.d.ts.map +1 -1
  883. package/dist/utils/testing/message_history.js.map +1 -1
  884. package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -1
  885. package/dist/utils/testing/openai_stream_fixtures.d.cts +0 -1
  886. package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -1
  887. package/dist/utils/testing/openai_stream_fixtures.d.ts +0 -1
  888. package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -1
  889. package/dist/utils/testing/openai_stream_fixtures.js.map +1 -1
  890. package/dist/utils/testing/output_parsers.cjs.map +1 -1
  891. package/dist/utils/testing/output_parsers.d.cts +0 -1
  892. package/dist/utils/testing/output_parsers.d.cts.map +1 -1
  893. package/dist/utils/testing/output_parsers.d.ts +0 -1
  894. package/dist/utils/testing/output_parsers.d.ts.map +1 -1
  895. package/dist/utils/testing/output_parsers.js.map +1 -1
  896. package/dist/utils/testing/retrievers.cjs.map +1 -1
  897. package/dist/utils/testing/retrievers.d.cts +0 -1
  898. package/dist/utils/testing/retrievers.d.cts.map +1 -1
  899. package/dist/utils/testing/retrievers.d.ts +0 -1
  900. package/dist/utils/testing/retrievers.d.ts.map +1 -1
  901. package/dist/utils/testing/retrievers.js.map +1 -1
  902. package/dist/utils/testing/runnables.cjs.map +1 -1
  903. package/dist/utils/testing/runnables.d.cts +0 -1
  904. package/dist/utils/testing/runnables.d.cts.map +1 -1
  905. package/dist/utils/testing/runnables.d.ts +0 -1
  906. package/dist/utils/testing/runnables.d.ts.map +1 -1
  907. package/dist/utils/testing/runnables.js.map +1 -1
  908. package/dist/utils/testing/stream.cjs +5 -0
  909. package/dist/utils/testing/stream.cjs.map +1 -1
  910. package/dist/utils/testing/stream.d.cts.map +1 -1
  911. package/dist/utils/testing/stream.d.ts.map +1 -1
  912. package/dist/utils/testing/stream.js +1 -1
  913. package/dist/utils/testing/stream.js.map +1 -1
  914. package/dist/utils/testing/tools.cjs.map +1 -1
  915. package/dist/utils/testing/tools.d.cts +0 -1
  916. package/dist/utils/testing/tools.d.cts.map +1 -1
  917. package/dist/utils/testing/tools.d.ts +0 -1
  918. package/dist/utils/testing/tools.d.ts.map +1 -1
  919. package/dist/utils/testing/tools.js.map +1 -1
  920. package/dist/utils/testing/tracers.cjs.map +1 -1
  921. package/dist/utils/testing/tracers.d.cts +0 -1
  922. package/dist/utils/testing/tracers.d.cts.map +1 -1
  923. package/dist/utils/testing/tracers.d.ts +0 -1
  924. package/dist/utils/testing/tracers.d.ts.map +1 -1
  925. package/dist/utils/testing/tracers.js.map +1 -1
  926. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  927. package/dist/utils/testing/vectorstores.d.cts +1 -5
  928. package/dist/utils/testing/vectorstores.d.cts.map +1 -1
  929. package/dist/utils/testing/vectorstores.d.ts +1 -5
  930. package/dist/utils/testing/vectorstores.d.ts.map +1 -1
  931. package/dist/utils/testing/vectorstores.js.map +1 -1
  932. package/dist/utils/tiktoken.cjs +1 -1
  933. package/dist/utils/tiktoken.cjs.map +1 -1
  934. package/dist/utils/tiktoken.d.cts +0 -1
  935. package/dist/utils/tiktoken.d.cts.map +1 -1
  936. package/dist/utils/tiktoken.d.ts +0 -1
  937. package/dist/utils/tiktoken.d.ts.map +1 -1
  938. package/dist/utils/tiktoken.js +1 -1
  939. package/dist/utils/tiktoken.js.map +1 -1
  940. package/dist/utils/types/index.d.cts +0 -1
  941. package/dist/utils/types/index.d.cts.map +1 -1
  942. package/dist/utils/types/index.d.ts +0 -1
  943. package/dist/utils/types/index.d.ts.map +1 -1
  944. package/dist/utils/types/zod.cjs +0 -1
  945. package/dist/utils/types/zod.cjs.map +1 -1
  946. package/dist/utils/types/zod.d.cts +2 -3
  947. package/dist/utils/types/zod.d.cts.map +1 -1
  948. package/dist/utils/types/zod.d.ts +2 -3
  949. package/dist/utils/types/zod.d.ts.map +1 -1
  950. package/dist/utils/types/zod.js.map +1 -1
  951. package/dist/utils/uuid/index.d.cts +10 -11
  952. package/dist/utils/uuid/index.d.cts.map +1 -1
  953. package/dist/utils/uuid/index.d.ts +10 -11
  954. package/dist/utils/uuid/index.d.ts.map +1 -1
  955. package/dist/utils/uuid/parse.cjs.map +1 -1
  956. package/dist/utils/uuid/parse.d.cts +1 -3
  957. package/dist/utils/uuid/parse.d.cts.map +1 -1
  958. package/dist/utils/uuid/parse.d.ts +1 -2
  959. package/dist/utils/uuid/parse.d.ts.map +1 -1
  960. package/dist/utils/uuid/parse.js.map +1 -1
  961. package/dist/utils/uuid/rng.cjs +1 -1
  962. package/dist/utils/uuid/rng.cjs.map +1 -1
  963. package/dist/utils/uuid/rng.js +1 -1
  964. package/dist/utils/uuid/rng.js.map +1 -1
  965. package/dist/utils/uuid/sha1.cjs +2 -2
  966. package/dist/utils/uuid/sha1.cjs.map +1 -1
  967. package/dist/utils/uuid/sha1.js +2 -2
  968. package/dist/utils/uuid/sha1.js.map +1 -1
  969. package/dist/utils/uuid/stringify.cjs.map +1 -1
  970. package/dist/utils/uuid/stringify.d.cts +1 -2
  971. package/dist/utils/uuid/stringify.d.cts.map +1 -1
  972. package/dist/utils/uuid/stringify.d.ts +1 -1
  973. package/dist/utils/uuid/stringify.d.ts.map +1 -1
  974. package/dist/utils/uuid/stringify.js.map +1 -1
  975. package/dist/utils/uuid/types.d.cts.map +1 -1
  976. package/dist/utils/uuid/types.d.ts.map +1 -1
  977. package/dist/utils/uuid/v1.cjs +2 -1
  978. package/dist/utils/uuid/v1.cjs.map +1 -1
  979. package/dist/utils/uuid/v1.d.cts +1 -3
  980. package/dist/utils/uuid/v1.d.cts.map +1 -1
  981. package/dist/utils/uuid/v1.d.ts +1 -2
  982. package/dist/utils/uuid/v1.d.ts.map +1 -1
  983. package/dist/utils/uuid/v1.js +2 -2
  984. package/dist/utils/uuid/v1.js.map +1 -1
  985. package/dist/utils/uuid/v1ToV6.cjs.map +1 -1
  986. package/dist/utils/uuid/v1ToV6.js.map +1 -1
  987. package/dist/utils/uuid/v35.cjs +1 -0
  988. package/dist/utils/uuid/v35.cjs.map +1 -1
  989. package/dist/utils/uuid/v35.d.cts +6 -0
  990. package/dist/utils/uuid/v35.d.cts.map +1 -0
  991. package/dist/utils/uuid/v35.d.ts +6 -0
  992. package/dist/utils/uuid/v35.d.ts.map +1 -0
  993. package/dist/utils/uuid/v35.js +1 -1
  994. package/dist/utils/uuid/v35.js.map +1 -1
  995. package/dist/utils/uuid/v4.cjs.map +1 -1
  996. package/dist/utils/uuid/v4.d.cts +1 -3
  997. package/dist/utils/uuid/v4.d.cts.map +1 -1
  998. package/dist/utils/uuid/v4.d.ts +1 -2
  999. package/dist/utils/uuid/v4.d.ts.map +1 -1
  1000. package/dist/utils/uuid/v4.js.map +1 -1
  1001. package/dist/utils/uuid/v5.cjs.map +1 -1
  1002. package/dist/utils/uuid/v5.d.cts +5 -8
  1003. package/dist/utils/uuid/v5.d.cts.map +1 -1
  1004. package/dist/utils/uuid/v5.d.ts +5 -7
  1005. package/dist/utils/uuid/v5.d.ts.map +1 -1
  1006. package/dist/utils/uuid/v5.js.map +1 -1
  1007. package/dist/utils/uuid/v6.cjs +1 -1
  1008. package/dist/utils/uuid/v6.cjs.map +1 -1
  1009. package/dist/utils/uuid/v6.d.cts +1 -3
  1010. package/dist/utils/uuid/v6.d.cts.map +1 -1
  1011. package/dist/utils/uuid/v6.d.ts +1 -2
  1012. package/dist/utils/uuid/v6.d.ts.map +1 -1
  1013. package/dist/utils/uuid/v6.js +1 -1
  1014. package/dist/utils/uuid/v6.js.map +1 -1
  1015. package/dist/utils/uuid/v7.cjs +2 -1
  1016. package/dist/utils/uuid/v7.cjs.map +1 -1
  1017. package/dist/utils/uuid/v7.d.cts +1 -3
  1018. package/dist/utils/uuid/v7.d.cts.map +1 -1
  1019. package/dist/utils/uuid/v7.d.ts +1 -2
  1020. package/dist/utils/uuid/v7.d.ts.map +1 -1
  1021. package/dist/utils/uuid/v7.js +2 -2
  1022. package/dist/utils/uuid/v7.js.map +1 -1
  1023. package/dist/utils/uuid/validate.cjs.map +1 -1
  1024. package/dist/utils/uuid/validate.d.cts +1 -2
  1025. package/dist/utils/uuid/validate.d.cts.map +1 -1
  1026. package/dist/utils/uuid/validate.d.ts +1 -1
  1027. package/dist/utils/uuid/validate.d.ts.map +1 -1
  1028. package/dist/utils/uuid/validate.js.map +1 -1
  1029. package/dist/utils/uuid/version.cjs.map +1 -1
  1030. package/dist/utils/uuid/version.d.cts +1 -2
  1031. package/dist/utils/uuid/version.d.cts.map +1 -1
  1032. package/dist/utils/uuid/version.d.ts +1 -1
  1033. package/dist/utils/uuid/version.d.ts.map +1 -1
  1034. package/dist/utils/uuid/version.js.map +1 -1
  1035. package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -1
  1036. package/dist/utils/zod-to-json-schema/Options.d.cts +3 -1
  1037. package/dist/utils/zod-to-json-schema/Options.d.ts +3 -1
  1038. package/dist/utils/zod-to-json-schema/Options.js.map +1 -1
  1039. package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -1
  1040. package/dist/utils/zod-to-json-schema/Refs.d.cts +3 -1
  1041. package/dist/utils/zod-to-json-schema/Refs.d.ts +3 -1
  1042. package/dist/utils/zod-to-json-schema/Refs.js.map +1 -1
  1043. package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -1
  1044. package/dist/utils/zod-to-json-schema/errorMessages.d.cts +2 -1
  1045. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -1
  1046. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +2 -1
  1047. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -1
  1048. package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -1
  1049. package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -1
  1050. package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -1
  1051. package/dist/utils/zod-to-json-schema/index.cjs +79 -37
  1052. package/dist/utils/zod-to-json-schema/index.d.cts +15 -1
  1053. package/dist/utils/zod-to-json-schema/index.d.ts +15 -1
  1054. package/dist/utils/zod-to-json-schema/index.js +38 -38
  1055. package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -1
  1056. package/dist/utils/zod-to-json-schema/parseDef.d.cts +3 -1
  1057. package/dist/utils/zod-to-json-schema/parseDef.d.ts +3 -1
  1058. package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -1
  1059. package/dist/utils/zod-to-json-schema/parseTypes.d.cts +0 -1
  1060. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -1
  1061. package/dist/utils/zod-to-json-schema/parseTypes.d.ts +0 -1
  1062. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -1
  1063. package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -1
  1064. package/dist/utils/zod-to-json-schema/parsers/any.d.cts +1 -0
  1065. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -1
  1066. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +1 -0
  1067. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -1
  1068. package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -1
  1069. package/dist/utils/zod-to-json-schema/parsers/array.cjs +0 -1
  1070. package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -1
  1071. package/dist/utils/zod-to-json-schema/parsers/array.d.cts +2 -0
  1072. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -1
  1073. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +2 -0
  1074. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -1
  1075. package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -1
  1076. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -1
  1077. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +2 -0
  1078. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -1
  1079. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +2 -0
  1080. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  1081. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -1
  1082. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -1
  1083. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -1
  1084. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -1
  1085. package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -1
  1086. package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -1
  1087. package/dist/utils/zod-to-json-schema/parsers/branded.d.cts +3 -1
  1088. package/dist/utils/zod-to-json-schema/parsers/branded.d.ts +3 -1
  1089. package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -1
  1090. package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -1
  1091. package/dist/utils/zod-to-json-schema/parsers/catch.d.cts +3 -1
  1092. package/dist/utils/zod-to-json-schema/parsers/catch.d.ts +3 -1
  1093. package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -1
  1094. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -1
  1095. package/dist/utils/zod-to-json-schema/parsers/date.d.cts +3 -0
  1096. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -1
  1097. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +3 -0
  1098. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -1
  1099. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -1
  1100. package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -1
  1101. package/dist/utils/zod-to-json-schema/parsers/default.d.cts +3 -1
  1102. package/dist/utils/zod-to-json-schema/parsers/default.d.ts +3 -1
  1103. package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -1
  1104. package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -1
  1105. package/dist/utils/zod-to-json-schema/parsers/effects.d.cts +3 -1
  1106. package/dist/utils/zod-to-json-schema/parsers/effects.d.ts +3 -1
  1107. package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -1
  1108. package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -1
  1109. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +1 -0
  1110. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -1
  1111. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +1 -0
  1112. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -1
  1113. package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -1
  1114. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -1
  1115. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +2 -0
  1116. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -1
  1117. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +2 -0
  1118. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -1
  1119. package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -1
  1120. package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -1
  1121. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +2 -0
  1122. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -1
  1123. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +2 -0
  1124. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  1125. package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -1
  1126. package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -1
  1127. package/dist/utils/zod-to-json-schema/parsers/map.d.cts +3 -0
  1128. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -1
  1129. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +3 -0
  1130. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -1
  1131. package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -1
  1132. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  1133. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +1 -0
  1134. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -1
  1135. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +1 -0
  1136. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -1
  1137. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  1138. package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -1
  1139. package/dist/utils/zod-to-json-schema/parsers/never.d.cts +1 -0
  1140. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -1
  1141. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +1 -0
  1142. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -1
  1143. package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -1
  1144. package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -1
  1145. package/dist/utils/zod-to-json-schema/parsers/null.d.cts +1 -0
  1146. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -1
  1147. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +1 -0
  1148. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  1149. package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -1
  1150. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -1
  1151. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +2 -0
  1152. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -1
  1153. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +2 -0
  1154. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  1155. package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -1
  1156. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -1
  1157. package/dist/utils/zod-to-json-schema/parsers/number.d.cts +2 -0
  1158. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -1
  1159. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +2 -0
  1160. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  1161. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -1
  1162. package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -1
  1163. package/dist/utils/zod-to-json-schema/parsers/object.d.cts +2 -0
  1164. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -1
  1165. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +2 -0
  1166. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -1
  1167. package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -1
  1168. package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -1
  1169. package/dist/utils/zod-to-json-schema/parsers/optional.d.cts +3 -1
  1170. package/dist/utils/zod-to-json-schema/parsers/optional.d.ts +3 -1
  1171. package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -1
  1172. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  1173. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.cts +4 -1
  1174. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.ts +4 -1
  1175. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  1176. package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -1
  1177. package/dist/utils/zod-to-json-schema/parsers/promise.d.cts +3 -1
  1178. package/dist/utils/zod-to-json-schema/parsers/promise.d.ts +3 -1
  1179. package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -1
  1180. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -1
  1181. package/dist/utils/zod-to-json-schema/parsers/readonly.d.cts +3 -1
  1182. package/dist/utils/zod-to-json-schema/parsers/readonly.d.ts +3 -1
  1183. package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -1
  1184. package/dist/utils/zod-to-json-schema/parsers/record.cjs +0 -1
  1185. package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -1
  1186. package/dist/utils/zod-to-json-schema/parsers/record.d.cts +2 -0
  1187. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -1
  1188. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +2 -0
  1189. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  1190. package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -1
  1191. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  1192. package/dist/utils/zod-to-json-schema/parsers/set.d.cts +2 -0
  1193. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -1
  1194. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +2 -0
  1195. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -1
  1196. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  1197. package/dist/utils/zod-to-json-schema/parsers/string.cjs +0 -2
  1198. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  1199. package/dist/utils/zod-to-json-schema/parsers/string.d.cts +2 -0
  1200. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -1
  1201. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +2 -0
  1202. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  1203. package/dist/utils/zod-to-json-schema/parsers/string.js +0 -2
  1204. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  1205. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -1
  1206. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +2 -0
  1207. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -1
  1208. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +2 -0
  1209. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -1
  1210. package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -1
  1211. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -1
  1212. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +1 -0
  1213. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -1
  1214. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +1 -0
  1215. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -1
  1216. package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -1
  1217. package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -1
  1218. package/dist/utils/zod-to-json-schema/parsers/union.d.cts +2 -0
  1219. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -1
  1220. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +2 -0
  1221. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  1222. package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -1
  1223. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -1
  1224. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +1 -0
  1225. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -1
  1226. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +1 -0
  1227. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -1
  1228. package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -1
  1229. package/dist/utils/zod-to-json-schema/selectParser.cjs +0 -1
  1230. package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -1
  1231. package/dist/utils/zod-to-json-schema/selectParser.d.cts +3 -1
  1232. package/dist/utils/zod-to-json-schema/selectParser.d.ts +2 -0
  1233. package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -1
  1234. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -1
  1235. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.cts +3 -1
  1236. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.ts +3 -1
  1237. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  1238. package/dist/vectorstores.cjs.map +1 -1
  1239. package/dist/vectorstores.d.cts +0 -1
  1240. package/dist/vectorstores.d.cts.map +1 -1
  1241. package/dist/vectorstores.d.ts +0 -1
  1242. package/dist/vectorstores.d.ts.map +1 -1
  1243. package/dist/vectorstores.js.map +1 -1
  1244. package/package.json +15 -4
  1245. package/utils/gateway.cjs +1 -0
  1246. package/utils/gateway.d.cts +1 -0
  1247. package/utils/gateway.d.ts +1 -0
  1248. package/utils/gateway.js +1 -0
@@ -6,10 +6,10 @@ import { InteropZodType } from "../utils/types/zod.cjs";
6
6
  import { CallbackManagerForLLMRun } from "../callbacks/manager.cjs";
7
7
  import { Runnable } from "../runnables/base.cjs";
8
8
  import { BaseLanguageModelInput, StructuredOutputMethodOptions, StructuredOutputMethodParams } from "../language_models/base.cjs";
9
+ import "../messages/index.cjs";
9
10
  import { StructuredTool } from "../tools/index.cjs";
10
11
  import { BaseChatModel, BaseChatModelCallOptions } from "../language_models/chat_models.cjs";
11
12
  import { ToolSpec } from "../utils/testing/chat_models.cjs";
12
-
13
13
  //#region src/testing/fake_model_builder.d.ts
14
14
  type ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;
15
15
  interface FakeModelCall {
@@ -1 +1 @@
1
- {"version":3,"file":"fake_model_builder.d.cts","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"mappings":";;;;;;;;;;;;;KAmBK,eAAA,IAAmB,QAAA,EAAU,WAAA,OAAkB,WAAA,GAAc,KAAA;AAAA,UAQxD,aAAA;EACR,QAAA,EAAU,WAAA;EACV,OAAA;AAAA;AAZ8D;;;;;;;;AAAA,cAyCnD,cAAA,SAAuB,aAAA;EAAA,QAC1B,KAAA;EAAA,QAEA,iBAAA;EAAA,QAEA,wBAAA;EAAA,QAEA,MAAA;EAAA,QAEA,MAAA;EAxCA;;;;;EAAA,IA+CJ,KAAA,CAAA,GAAS,aAAA;EA7Cb;;;EAAA,IAoDI,SAAA,CAAA;EAIJ,WAAA,CAAA;EAIA,QAAA,CAAA;EAIA,iBAAA,CAAA;EAUe;;;;;;EAAf,OAAA,CAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,GAAQ,eAAA;EA4DnB;;;;;;;EA1ClB,gBAAA,CACE,SAAA,EAAW,KAAA;IAAQ,IAAA;IAAc,IAAA,EAAM,MAAA;IAAqB,EAAA;EAAA;EAiEzC;;;;;EA9CrB,WAAA,CAAY,KAAA,EAAO,KAAA;EAkDf;;;;;EAxCJ,kBAAA,CAAmB,KAAA,EAAO,MAAA;EAsDV;;;;;;;EA1ChB,SAAA,CAAU,KAAA,GAAQ,cAAA,GAAiB,QAAA,MAAW,QAAA,CAAA,sBAAA,EAAA,cAAA,CAAA,gBAAA,CAAA,cAAA,IAAA,wBAAA;EAtGtC;;;;;;;EAyHR,oBAAA,mBACoB,MAAA,gBAAsB,MAAA,cAAA,CAExC,OAAA,EACI,4BAAA,CAA6B,SAAA,aAC7B,cAAA,CAAe,SAAA,IACf,MAAA,eACJ,OAAA,GAAU,6BAAA,YAER,QAAA,CAAS,sBAAA,EAAwB,SAAA,IACjC,QAAA,CACE,sBAAA;IACE,GAAA,EAAK,WAAA;IAAa,MAAA,EAAQ,SAAA;EAAA;EAQ5B,SAAA,CACJ,QAAA,EAAU,WAAA,IACV,OAAA,8BACA,WAAA,GAAc,wBAAA,GACb,OAAA,CAAQ,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6FG,SAAA,CAAA,GAAa,cAAA"}
1
+ {"version":3,"file":"fake_model_builder.d.cts","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"mappings":";;;;;;;;;;;;;KAmBK,mBAAmB,UAAU,kBAAkB,cAAc;UAQxD;EACR,UAAU;EACV;;;;;;;;;;cA6BW,uBAAuB;UAC1B;UAEA;UAEA;UAEA;UAEA;;;;;;MAOJ,SAAS;;;;MAOT;EAIJ;EAIA;EAIA;;;;;;;EAUA,QAAQ,OAAO,cAAc,QAAQ;;;;;;;;EAkBrC,iBACE,WAAW;IAAQ;IAAc,MAAM;IAAqB;;;;;;;EAmB9D,YAAY,OAAO;;;;;;EAUnB,mBAAmB,OAAO;;;;;;;;EAY1B,UAAU,QAAQ,iBAAiB,cAAW,SAAA,wBAAA,eAAA,iBAAA,kBAAA;;;;;;;;EAmB9C,qBACE,kBAAkB,sBAAsB,qBAExC,SACI,6BAA6B,sBAC7B,eAAe,aACf,qBACJ,UAAU,yCAER,SAAS,wBAAwB,aACjC,SACE;IACE,KAAK;IAAa,QAAQ;;EAQ5B,UACJ,UAAU,eACV,qCACA,cAAc,2BACb,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6FG,aAAa"}
@@ -6,10 +6,10 @@ import { InteropZodType } from "../utils/types/zod.js";
6
6
  import { CallbackManagerForLLMRun } from "../callbacks/manager.js";
7
7
  import { Runnable } from "../runnables/base.js";
8
8
  import { BaseLanguageModelInput, StructuredOutputMethodOptions, StructuredOutputMethodParams } from "../language_models/base.js";
9
+ import "../messages/index.js";
9
10
  import { StructuredTool } from "../tools/index.js";
10
11
  import { BaseChatModel, BaseChatModelCallOptions } from "../language_models/chat_models.js";
11
12
  import { ToolSpec } from "../utils/testing/chat_models.js";
12
-
13
13
  //#region src/testing/fake_model_builder.d.ts
14
14
  type ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;
15
15
  interface FakeModelCall {
@@ -1 +1 @@
1
- {"version":3,"file":"fake_model_builder.d.ts","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"mappings":";;;;;;;;;;;;;KAmBK,eAAA,IAAmB,QAAA,EAAU,WAAA,OAAkB,WAAA,GAAc,KAAA;AAAA,UAQxD,aAAA;EACR,QAAA,EAAU,WAAA;EACV,OAAA;AAAA;AAZ8D;;;;;;;;AAAA,cAyCnD,cAAA,SAAuB,aAAA;EAAA,QAC1B,KAAA;EAAA,QAEA,iBAAA;EAAA,QAEA,wBAAA;EAAA,QAEA,MAAA;EAAA,QAEA,MAAA;EAxCA;;;;;EAAA,IA+CJ,KAAA,CAAA,GAAS,aAAA;EA7Cb;;;EAAA,IAoDI,SAAA,CAAA;EAIJ,WAAA,CAAA;EAIA,QAAA,CAAA;EAIA,iBAAA,CAAA;EAUe;;;;;;EAAf,OAAA,CAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,GAAQ,eAAA;EA4DnB;;;;;;;EA1ClB,gBAAA,CACE,SAAA,EAAW,KAAA;IAAQ,IAAA;IAAc,IAAA,EAAM,MAAA;IAAqB,EAAA;EAAA;EAiEzC;;;;;EA9CrB,WAAA,CAAY,KAAA,EAAO,KAAA;EAkDf;;;;;EAxCJ,kBAAA,CAAmB,KAAA,EAAO,MAAA;EAsDV;;;;;;;EA1ChB,SAAA,CAAU,KAAA,GAAQ,cAAA,GAAiB,QAAA,MAAW,QAAA,CAAA,sBAAA,EAAA,cAAA,CAAA,gBAAA,CAAA,cAAA,IAAA,wBAAA;EAtGtC;;;;;;;EAyHR,oBAAA,mBACoB,MAAA,gBAAsB,MAAA,cAAA,CAExC,OAAA,EACI,4BAAA,CAA6B,SAAA,aAC7B,cAAA,CAAe,SAAA,IACf,MAAA,eACJ,OAAA,GAAU,6BAAA,YAER,QAAA,CAAS,sBAAA,EAAwB,SAAA,IACjC,QAAA,CACE,sBAAA;IACE,GAAA,EAAK,WAAA;IAAa,MAAA,EAAQ,SAAA;EAAA;EAQ5B,SAAA,CACJ,QAAA,EAAU,WAAA,IACV,OAAA,8BACA,WAAA,GAAc,wBAAA,GACb,OAAA,CAAQ,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6FG,SAAA,CAAA,GAAa,cAAA"}
1
+ {"version":3,"file":"fake_model_builder.d.ts","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"mappings":";;;;;;;;;;;;;KAmBK,mBAAmB,UAAU,kBAAkB,cAAc;UAQxD;EACR,UAAU;EACV;;;;;;;;;;cA6BW,uBAAuB;UAC1B;UAEA;UAEA;UAEA;UAEA;;;;;;MAOJ,SAAS;;;;MAOT;EAIJ;EAIA;EAIA;;;;;;;EAUA,QAAQ,OAAO,cAAc,QAAQ;;;;;;;;EAkBrC,iBACE,WAAW;IAAQ;IAAc,MAAM;IAAqB;;;;;;;EAmB9D,YAAY,OAAO;;;;;;EAUnB,mBAAmB,OAAO;;;;;;;;EAY1B,UAAU,QAAQ,iBAAiB,cAAW,SAAA,wBAAA,eAAA,iBAAA,kBAAA;;;;;;;;EAmB9C,qBACE,kBAAkB,sBAAsB,qBAExC,SACI,6BAA6B,sBAC7B,eAAe,aACf,qBACJ,UAAU,yCAER,SAAS,wBAAwB,aACjC,SACE;IACE,KAAK;IAAa,QAAQ;;EAQ5B,UACJ,UAAU,eACV,qCACA,cAAc,2BACb,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6FG,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"fake_model_builder.js","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport { CallbackManagerForLLMRun } from \"../callbacks/manager.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n} from \"../language_models/chat_models.js\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n StructuredOutputMethodParams,\n} from \"../language_models/base.js\";\nimport { BaseMessage, AIMessage } from \"../messages/index.js\";\nimport type { ToolCall } from \"../messages/tool.js\";\nimport type { ChatResult } from \"../outputs.js\";\nimport { Runnable, RunnableLambda } from \"../runnables/base.js\";\nimport { StructuredTool } from \"../tools/index.js\";\nimport type { InteropZodType } from \"../utils/types/zod.js\";\nimport type { ToolSpec } from \"../utils/testing/chat_models.js\";\n\ntype ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;\n\ntype QueueEntry =\n | { kind: \"message\"; message: BaseMessage }\n | { kind: \"toolCalls\"; toolCalls: ToolCall[] }\n | { kind: \"error\"; error: Error }\n | { kind: \"factory\"; factory: ResponseFactory };\n\ninterface FakeModelCall {\n messages: BaseMessage[];\n options: any;\n}\n\ninterface FakeModelState {\n callIndex: number;\n calls: FakeModelCall[];\n}\n\nfunction deriveContent(messages: BaseMessage[]): string {\n return messages\n .map((m) => m.text)\n .filter(Boolean)\n .join(\"-\");\n}\n\nlet idCounter = 0;\nfunction nextToolCallId(): string {\n idCounter += 1;\n return `fake_tc_${idCounter}`;\n}\n\n/**\n * A fake chat model for testing, created via {@link fakeModel}.\n *\n * Queue responses with `.respond()` and `.respondWithTools()`, then\n * pass the instance directly wherever a chat model is expected.\n * Responses are consumed in first-in-first-out order — one per `invoke()` call.\n * When all queued responses are consumed, further invocations throw.\n */\nexport class FakeBuiltModel extends BaseChatModel {\n private queue: QueueEntry[] = [];\n\n private _alwaysThrowError: Error | undefined;\n\n private _structuredResponseValue: any;\n\n private _tools: (StructuredTool | ToolSpec)[] = [];\n\n private _state: FakeModelState = { callIndex: 0, calls: [] };\n\n /**\n * All invocations recorded by this model, in order.\n * Each entry contains the `messages` array and `options` that were\n * passed to `invoke()`.\n */\n get calls(): FakeModelCall[] {\n return this._state.calls;\n }\n\n /**\n * The number of times this model has been invoked.\n */\n get callCount(): number {\n return this._state.calls.length;\n }\n\n constructor() {\n super({});\n }\n\n _llmType(): string {\n return \"fake-model-builder\";\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Enqueue a response that the model will return on its next invocation.\n * @param entry A {@link BaseMessage} to return, an `Error` to throw, or\n * a factory `(messages) => BaseMessage | Error` for dynamic responses.\n * @returns `this`, for chaining.\n */\n respond(entry: BaseMessage | Error | ResponseFactory): this {\n if (typeof entry === \"function\") {\n this.queue.push({ kind: \"factory\", factory: entry });\n } else if (BaseMessage.isInstance(entry)) {\n this.queue.push({ kind: \"message\", message: entry });\n } else {\n this.queue.push({ kind: \"error\", error: entry });\n }\n return this;\n }\n\n /**\n * Enqueue an {@link AIMessage} that carries the given tool calls.\n * Content is derived from the input messages at invocation time.\n * @param toolCalls Array of tool calls. Each entry needs `name` and\n * `args`; `id` is optional and auto-generated when omitted.\n * @returns `this`, for chaining.\n */\n respondWithTools(\n toolCalls: Array<{ name: string; args: Record<string, any>; id?: string }>\n ): this {\n this.queue.push({\n kind: \"toolCalls\",\n toolCalls: toolCalls.map((tc) => ({\n name: tc.name,\n args: tc.args,\n id: tc.id ?? nextToolCallId(),\n type: \"tool_call\" as const,\n })),\n });\n return this;\n }\n\n /**\n * Make every invocation throw the given error, regardless of the queue.\n * @param error The error to throw.\n * @returns `this`, for chaining.\n */\n alwaysThrow(error: Error): this {\n this._alwaysThrowError = error;\n return this;\n }\n\n /**\n * Set the value that {@link withStructuredOutput} will resolve to.\n * @param value The structured object to return.\n * @returns `this`, for chaining.\n */\n structuredResponse(value: Record<string, any>): this {\n this._structuredResponseValue = value;\n return this;\n }\n\n /**\n * Bind tools to the model. Returns a new model that shares the same\n * response queue and call history.\n * @param tools The tools to bind, as {@link StructuredTool} instances or\n * plain {@link ToolSpec} objects.\n * @returns A new RunnableBinding with the tools bound.\n */\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this._tools, ...tools];\n const next = new FakeBuiltModel();\n next.queue = this.queue;\n next._alwaysThrowError = this._alwaysThrowError;\n next._structuredResponseValue = this._structuredResponseValue;\n next._tools = merged;\n next._state = this._state;\n\n return next.withConfig({} as BaseChatModelCallOptions);\n }\n\n /**\n * Returns a {@link Runnable} that produces the {@link structuredResponse}\n * value. The schema argument is accepted for compatibility but ignored.\n * @param _params Schema or params (ignored).\n * @param _config Options (ignored).\n * @returns A Runnable that resolves to the structured response value.\n */\n withStructuredOutput<\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n const { _structuredResponseValue } = this;\n return RunnableLambda.from(async () => {\n return _structuredResponseValue as RunOutput;\n }) as Runnable;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n this._state.calls.push({ messages: [...messages], options });\n\n const currentCallIndex = this._state.callIndex;\n this._state.callIndex += 1;\n\n if (this._alwaysThrowError) {\n throw this._alwaysThrowError;\n }\n\n const entry = this.queue[currentCallIndex];\n if (!entry) {\n throw new Error(\n `FakeModel: no response queued for invocation ${currentCallIndex} (${this.queue.length} total queued).`\n );\n }\n\n if (entry.kind === \"error\") {\n throw entry.error;\n }\n\n if (entry.kind === \"factory\") {\n const result = entry.factory(messages);\n if (!BaseMessage.isInstance(result)) {\n throw result;\n }\n return {\n generations: [{ text: \"\", message: result }],\n };\n }\n\n if (entry.kind === \"message\") {\n return {\n generations: [{ text: \"\", message: entry.message }],\n };\n }\n\n const content = deriveContent(messages);\n const message = new AIMessage({\n content,\n id: currentCallIndex.toString(),\n tool_calls:\n entry.toolCalls.length > 0\n ? entry.toolCalls.map((tc) => ({\n ...tc,\n type: \"tool_call\" as const,\n }))\n : undefined,\n });\n\n return {\n generations: [{ text: content, message }],\n llmOutput: {},\n };\n }\n}\n\n/**\n * Creates a new {@link FakeBuiltModel} for testing.\n *\n * Returns a chainable builder — queue responses, then pass the model\n * anywhere a chat model is expected. Responses are consumed in FIFO\n * order, one per `invoke()` call.\n *\n * ## API summary\n *\n * | Method | Description |\n * | --- | --- |\n * | `fakeModel()` | Creates a new fake chat model. Returns a chainable builder. |\n * | `.respond(message)` | Queue an `AIMessage` (or any `BaseMessage`) to return on the next invocation. |\n * | `.respond(error)` | Queue an `Error` to throw on the next invocation. |\n * | `.respond(factory)` | Queue a function `(messages) => BaseMessage \\| Error` for dynamic responses. |\n * | `.respondWithTools(toolCalls)` | Shorthand for `.respond()` with tool calls. Each entry needs `name` and `args`; `id` is optional. |\n * | `.alwaysThrow(error)` | Make every invocation throw this error, regardless of the queue. |\n * | `.structuredResponse(value)` | Set the value returned by `.withStructuredOutput()`. |\n * | `.bindTools(tools)` | Bind tools to the model. Returns a `RunnableBinding` that shares the response queue and call recording. |\n * | `.withStructuredOutput(schema)` | Returns a runnable that produces the `.structuredResponse()` value. |\n * | `.calls` | Array of `{ messages, options }` for every invocation (read-only). |\n * | `.callCount` | Number of times the model has been invoked. |\n *\n * @example\n * ```typescript\n * const model = fakeModel()\n * .respondWithTools([{ name: \"search\", args: { query: \"weather\" } }])\n * .respond(new AIMessage(\"Sunny and warm.\"));\n *\n * const r1 = await model.invoke([new HumanMessage(\"What's the weather?\")]);\n * // r1.tool_calls[0].name === \"search\"\n *\n * const r2 = await model.invoke([new HumanMessage(\"Thanks\")]);\n * // r2.content === \"Sunny and warm.\"\n * ```\n */\nexport function fakeModel(): FakeBuiltModel {\n return new FakeBuiltModel();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fake_model_builder.js","names":[],"sources":["../../src/testing/fake_model_builder.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport { CallbackManagerForLLMRun } from \"../callbacks/manager.js\";\nimport {\n BaseChatModel,\n BaseChatModelCallOptions,\n} from \"../language_models/chat_models.js\";\nimport {\n BaseLanguageModelInput,\n StructuredOutputMethodOptions,\n StructuredOutputMethodParams,\n} from \"../language_models/base.js\";\nimport { BaseMessage, AIMessage } from \"../messages/index.js\";\nimport type { ToolCall } from \"../messages/tool.js\";\nimport type { ChatResult } from \"../outputs.js\";\nimport { Runnable, RunnableLambda } from \"../runnables/base.js\";\nimport { StructuredTool } from \"../tools/index.js\";\nimport type { InteropZodType } from \"../utils/types/zod.js\";\nimport type { ToolSpec } from \"../utils/testing/chat_models.js\";\n\ntype ResponseFactory = (messages: BaseMessage[]) => BaseMessage | Error;\n\ntype QueueEntry =\n | { kind: \"message\"; message: BaseMessage }\n | { kind: \"toolCalls\"; toolCalls: ToolCall[] }\n | { kind: \"error\"; error: Error }\n | { kind: \"factory\"; factory: ResponseFactory };\n\ninterface FakeModelCall {\n messages: BaseMessage[];\n options: any;\n}\n\ninterface FakeModelState {\n callIndex: number;\n calls: FakeModelCall[];\n}\n\nfunction deriveContent(messages: BaseMessage[]): string {\n return messages\n .map((m) => m.text)\n .filter(Boolean)\n .join(\"-\");\n}\n\nlet idCounter = 0;\nfunction nextToolCallId(): string {\n idCounter += 1;\n return `fake_tc_${idCounter}`;\n}\n\n/**\n * A fake chat model for testing, created via {@link fakeModel}.\n *\n * Queue responses with `.respond()` and `.respondWithTools()`, then\n * pass the instance directly wherever a chat model is expected.\n * Responses are consumed in first-in-first-out order — one per `invoke()` call.\n * When all queued responses are consumed, further invocations throw.\n */\nexport class FakeBuiltModel extends BaseChatModel {\n private queue: QueueEntry[] = [];\n\n private _alwaysThrowError: Error | undefined;\n\n private _structuredResponseValue: any;\n\n private _tools: (StructuredTool | ToolSpec)[] = [];\n\n private _state: FakeModelState = { callIndex: 0, calls: [] };\n\n /**\n * All invocations recorded by this model, in order.\n * Each entry contains the `messages` array and `options` that were\n * passed to `invoke()`.\n */\n get calls(): FakeModelCall[] {\n return this._state.calls;\n }\n\n /**\n * The number of times this model has been invoked.\n */\n get callCount(): number {\n return this._state.calls.length;\n }\n\n constructor() {\n super({});\n }\n\n _llmType(): string {\n return \"fake-model-builder\";\n }\n\n _combineLLMOutput() {\n return [];\n }\n\n /**\n * Enqueue a response that the model will return on its next invocation.\n * @param entry A {@link BaseMessage} to return, an `Error` to throw, or\n * a factory `(messages) => BaseMessage | Error` for dynamic responses.\n * @returns `this`, for chaining.\n */\n respond(entry: BaseMessage | Error | ResponseFactory): this {\n if (typeof entry === \"function\") {\n this.queue.push({ kind: \"factory\", factory: entry });\n } else if (BaseMessage.isInstance(entry)) {\n this.queue.push({ kind: \"message\", message: entry });\n } else {\n this.queue.push({ kind: \"error\", error: entry });\n }\n return this;\n }\n\n /**\n * Enqueue an {@link AIMessage} that carries the given tool calls.\n * Content is derived from the input messages at invocation time.\n * @param toolCalls Array of tool calls. Each entry needs `name` and\n * `args`; `id` is optional and auto-generated when omitted.\n * @returns `this`, for chaining.\n */\n respondWithTools(\n toolCalls: Array<{ name: string; args: Record<string, any>; id?: string }>\n ): this {\n this.queue.push({\n kind: \"toolCalls\",\n toolCalls: toolCalls.map((tc) => ({\n name: tc.name,\n args: tc.args,\n id: tc.id ?? nextToolCallId(),\n type: \"tool_call\" as const,\n })),\n });\n return this;\n }\n\n /**\n * Make every invocation throw the given error, regardless of the queue.\n * @param error The error to throw.\n * @returns `this`, for chaining.\n */\n alwaysThrow(error: Error): this {\n this._alwaysThrowError = error;\n return this;\n }\n\n /**\n * Set the value that {@link withStructuredOutput} will resolve to.\n * @param value The structured object to return.\n * @returns `this`, for chaining.\n */\n structuredResponse(value: Record<string, any>): this {\n this._structuredResponseValue = value;\n return this;\n }\n\n /**\n * Bind tools to the model. Returns a new model that shares the same\n * response queue and call history.\n * @param tools The tools to bind, as {@link StructuredTool} instances or\n * plain {@link ToolSpec} objects.\n * @returns A new RunnableBinding with the tools bound.\n */\n bindTools(tools: (StructuredTool | ToolSpec)[]) {\n const merged = [...this._tools, ...tools];\n const next = new FakeBuiltModel();\n next.queue = this.queue;\n next._alwaysThrowError = this._alwaysThrowError;\n next._structuredResponseValue = this._structuredResponseValue;\n next._tools = merged;\n next._state = this._state;\n\n return next.withConfig({} as BaseChatModelCallOptions);\n }\n\n /**\n * Returns a {@link Runnable} that produces the {@link structuredResponse}\n * value. The schema argument is accepted for compatibility but ignored.\n * @param _params Schema or params (ignored).\n * @param _config Options (ignored).\n * @returns A Runnable that resolves to the structured response value.\n */\n withStructuredOutput<\n RunOutput extends Record<string, any> = Record<string, any>,\n >(\n _params:\n | StructuredOutputMethodParams<RunOutput, boolean>\n | InteropZodType<RunOutput>\n | Record<string, any>,\n _config?: StructuredOutputMethodOptions<boolean>\n ):\n | Runnable<BaseLanguageModelInput, RunOutput>\n | Runnable<\n BaseLanguageModelInput,\n { raw: BaseMessage; parsed: RunOutput }\n > {\n const { _structuredResponseValue } = this;\n return RunnableLambda.from(async () => {\n return _structuredResponseValue as RunOutput;\n }) as Runnable;\n }\n\n async _generate(\n messages: BaseMessage[],\n options?: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n this._state.calls.push({ messages: [...messages], options });\n\n const currentCallIndex = this._state.callIndex;\n this._state.callIndex += 1;\n\n if (this._alwaysThrowError) {\n throw this._alwaysThrowError;\n }\n\n const entry = this.queue[currentCallIndex];\n if (!entry) {\n throw new Error(\n `FakeModel: no response queued for invocation ${currentCallIndex} (${this.queue.length} total queued).`\n );\n }\n\n if (entry.kind === \"error\") {\n throw entry.error;\n }\n\n if (entry.kind === \"factory\") {\n const result = entry.factory(messages);\n if (!BaseMessage.isInstance(result)) {\n throw result;\n }\n return {\n generations: [{ text: \"\", message: result }],\n };\n }\n\n if (entry.kind === \"message\") {\n return {\n generations: [{ text: \"\", message: entry.message }],\n };\n }\n\n const content = deriveContent(messages);\n const message = new AIMessage({\n content,\n id: currentCallIndex.toString(),\n tool_calls:\n entry.toolCalls.length > 0\n ? entry.toolCalls.map((tc) => ({\n ...tc,\n type: \"tool_call\" as const,\n }))\n : undefined,\n });\n\n return {\n generations: [{ text: content, message }],\n llmOutput: {},\n };\n }\n}\n\n/**\n * Creates a new {@link FakeBuiltModel} for testing.\n *\n * Returns a chainable builder — queue responses, then pass the model\n * anywhere a chat model is expected. Responses are consumed in FIFO\n * order, one per `invoke()` call.\n *\n * ## API summary\n *\n * | Method | Description |\n * | --- | --- |\n * | `fakeModel()` | Creates a new fake chat model. Returns a chainable builder. |\n * | `.respond(message)` | Queue an `AIMessage` (or any `BaseMessage`) to return on the next invocation. |\n * | `.respond(error)` | Queue an `Error` to throw on the next invocation. |\n * | `.respond(factory)` | Queue a function `(messages) => BaseMessage \\| Error` for dynamic responses. |\n * | `.respondWithTools(toolCalls)` | Shorthand for `.respond()` with tool calls. Each entry needs `name` and `args`; `id` is optional. |\n * | `.alwaysThrow(error)` | Make every invocation throw this error, regardless of the queue. |\n * | `.structuredResponse(value)` | Set the value returned by `.withStructuredOutput()`. |\n * | `.bindTools(tools)` | Bind tools to the model. Returns a `RunnableBinding` that shares the response queue and call recording. |\n * | `.withStructuredOutput(schema)` | Returns a runnable that produces the `.structuredResponse()` value. |\n * | `.calls` | Array of `{ messages, options }` for every invocation (read-only). |\n * | `.callCount` | Number of times the model has been invoked. |\n *\n * @example\n * ```typescript\n * const model = fakeModel()\n * .respondWithTools([{ name: \"search\", args: { query: \"weather\" } }])\n * .respond(new AIMessage(\"Sunny and warm.\"));\n *\n * const r1 = await model.invoke([new HumanMessage(\"What's the weather?\")]);\n * // r1.tool_calls[0].name === \"search\"\n *\n * const r2 = await model.invoke([new HumanMessage(\"Thanks\")]);\n * // r2.content === \"Sunny and warm.\"\n * ```\n */\nexport function fakeModel(): FakeBuiltModel {\n return new FakeBuiltModel();\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.cjs","names":["BaseMessage","HumanMessage","AIMessage","SystemMessage","ToolMessage","result","streamMatchers"],"sources":["../../src/testing/matchers.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {\n streamMatchers,\n type StreamMatchers,\n} from \"../utils/testing/stream.js\";\nimport { BaseMessage } from \"../messages/index.js\";\nimport { HumanMessage } from \"../messages/index.js\";\nimport { AIMessage } from \"../messages/index.js\";\nimport { SystemMessage } from \"../messages/index.js\";\nimport { ToolMessage } from \"../messages/index.js\";\n\n/**\n * The `this` context that Vitest and Jest provide to custom matchers\n * via `expect.extend`.\n *\n * Compatible with both frameworks:\n * - https://vitest.dev/guide/extending-matchers.html\n * - https://jestjs.io/docs/expect#expectextendmatchers\n */\ninterface ExpectExtendThis {\n isNot?: boolean;\n equals(a: unknown, b: unknown): boolean;\n utils: {\n matcherHint(name: string, received?: string, expected?: string): string;\n printReceived(value: unknown): string;\n printExpected(value: unknown): string;\n };\n}\n\ninterface ExpectationResult {\n pass: boolean;\n message: () => string;\n actual?: unknown;\n expected?: unknown;\n}\n\nfunction getMessageTypeName(msg: unknown): string {\n if (!BaseMessage.isInstance(msg)) return typeof msg;\n return msg.constructor.name || msg.type;\n}\n\nfunction makeMessageTypeMatcher(\n typeName: string,\n isInstance: (obj: unknown) => boolean\n) {\n return function (\n this: ExpectExtendThis,\n received: unknown,\n expected?: string | Record<string, unknown>\n ): ExpectationResult {\n const { isNot, utils } = this;\n\n const instancePass = isInstance(received);\n if (!instancePass) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${isNot ? \"not \" : \"\"}${typeName}\\n` +\n `Received: ${getMessageTypeName(received)}`,\n actual: getMessageTypeName(received),\n expected: typeName,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: not ${typeName}\\n` +\n `Received: ${typeName}`,\n };\n }\n\n const msg = received as BaseMessage;\n if (typeof expected === \"string\") {\n const contentPass = msg.content === expected;\n return {\n pass: contentPass,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} with content ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with content ${utils.printReceived(msg.content)}`,\n actual: msg.content,\n expected,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals((msg as any)[key], value)\n );\n return {\n pass: fieldsPass,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return (\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} matching ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with ${utils.printReceived(receivedFields)}`\n );\n },\n actual: (() => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return receivedFields;\n })(),\n expected,\n };\n };\n}\n\nexport const toBeHumanMessage = makeMessageTypeMatcher(\n \"HumanMessage\",\n HumanMessage.isInstance\n);\n\nexport const toBeAIMessage = makeMessageTypeMatcher(\n \"AIMessage\",\n AIMessage.isInstance\n);\n\nexport const toBeSystemMessage = makeMessageTypeMatcher(\n \"SystemMessage\",\n SystemMessage.isInstance\n);\n\nexport const toBeToolMessage = makeMessageTypeMatcher(\n \"ToolMessage\",\n ToolMessage.isInstance\n);\n\nexport function toHaveToolCalls(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n\n if (actual.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool call(s), received ${actual.length}`,\n actual: actual.length,\n expected: expected.length,\n };\n }\n\n const unmatched = expected.filter(\n (exp) =>\n !actual.some((tc) =>\n Object.entries(exp).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n )\n );\n\n if (unmatched.length > 0) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Could not find matching tool call(s) for:\\n` +\n `${utils.printExpected(unmatched)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })),\n expected,\n };\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected AIMessage not to have matching tool calls`,\n };\n}\n\nexport function toHaveToolCallCount(\n this: ExpectExtendThis,\n received: unknown,\n expected: number\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls?.length ?? 0;\n const pass = actual === expected;\n\n return {\n pass,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected} tool call(s)\\n` +\n `Received: ${actual}`,\n actual,\n expected,\n };\n}\n\nexport function toContainToolCall(\n this: ExpectExtendThis,\n received: unknown,\n expected: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n const found = actual.some((tc) =>\n Object.entries(expected).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n );\n\n return {\n pass: found,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected AIMessage ${isNot ? \"not \" : \"\"}to contain a tool call matching ${utils.printExpected(expected)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id })),\n expected,\n };\n}\n\nexport function toHaveToolMessages(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!Array.isArray(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected an array of messages\\n` +\n `Received: ${typeof received}`,\n };\n }\n\n const toolMessages = (received as BaseMessage[]).filter(\n ToolMessage.isInstance\n );\n\n if (toolMessages.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool message(s), found ${toolMessages.length}`,\n actual: toolMessages.length,\n expected: expected.length,\n };\n }\n\n for (let i = 0; i < expected.length; i++) {\n const match = Object.entries(expected[i]).every(([key, value]) =>\n this.equals((toolMessages[i] as any)[key], value)\n );\n if (!match) {\n return {\n pass: false,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected[i])) {\n receivedFields[key] = (toolMessages[i] as any)[key];\n }\n return (\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Tool message at index ${i} did not match:\\n` +\n `Expected: ${utils.printExpected(expected[i])}\\n` +\n `Received: ${utils.printReceived(receivedFields)}`\n );\n },\n actual: toolMessages[i],\n expected: expected[i],\n };\n }\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected messages not to contain matching tool messages`,\n };\n}\n\nexport function toHaveBeenInterrupted(\n this: ExpectExtendThis,\n received: unknown,\n expectedValue?: unknown\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const interrupts = result?.__interrupt__;\n const hasInterrupt = Array.isArray(interrupts) && interrupts.length > 0;\n\n if (!hasInterrupt) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have been interrupted\\n` +\n `Received __interrupt__: ${utils.printReceived(interrupts)}`,\n };\n }\n\n if (expectedValue === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result not to have been interrupted\\n` +\n `Received ${interrupts.length} interrupt(s)`,\n };\n }\n\n const actualValue = interrupts[0]?.value;\n const valuePass = this.equals(actualValue, expectedValue);\n\n return {\n pass: valuePass,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected interrupt value: ${utils.printExpected(expectedValue)}\\n` +\n `Received interrupt value: ${utils.printReceived(actualValue)}`,\n actual: actualValue,\n expected: expectedValue,\n };\n}\n\nexport function toHaveStructuredResponse(\n this: ExpectExtendThis,\n received: unknown,\n expected?: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const structuredResponse = result?.structuredResponse;\n const isDefined = structuredResponse !== undefined;\n\n if (!isDefined) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have a structured response\\n` +\n `Received structuredResponse: undefined`,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result not to have a structured response`,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals(structuredResponse[key], value)\n );\n\n return {\n pass: fieldsPass,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected structured response: ${utils.printExpected(expected)}\\n` +\n `Received structured response: ${utils.printReceived(structuredResponse)}`,\n actual: structuredResponse,\n expected,\n };\n}\n\n/**\n * All matcher functions bundled for convenient use with `expect.extend()`.\n */\nexport const langchainMatchers = {\n toBeHumanMessage,\n toBeAIMessage,\n toBeSystemMessage,\n toBeToolMessage,\n toHaveToolCalls,\n toHaveToolCallCount,\n toContainToolCall,\n toHaveToolMessages,\n toHaveBeenInterrupted,\n toHaveStructuredResponse,\n ...streamMatchers,\n};\n\nexport interface LangChainMatchers<R = unknown> extends StreamMatchers<R> {\n toBeHumanMessage(expected?: string | { content?: string; id?: string }): R;\n toBeAIMessage(expected?: string | { content?: string; name?: string }): R;\n toBeSystemMessage(\n expected?: string | { content?: string; additional_kwargs?: object }\n ): R;\n toBeToolMessage(\n expected?:\n | string\n | {\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }\n ): R;\n toHaveToolCalls(\n expected: Array<{\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }>\n ): R;\n toHaveToolCallCount(expected: number): R;\n toContainToolCall(expected: {\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }): R;\n toHaveToolMessages(\n expected: Array<{\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }>\n ): R;\n toHaveBeenInterrupted(expectedValue?: unknown): R;\n toHaveStructuredResponse(expected?: Record<string, unknown>): R;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"matchers.cjs","names":["BaseMessage","HumanMessage","AIMessage","SystemMessage","ToolMessage","result","streamMatchers"],"sources":["../../src/testing/matchers.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {\n streamMatchers,\n type StreamMatchers,\n} from \"../utils/testing/stream.js\";\nimport { BaseMessage } from \"../messages/index.js\";\nimport { HumanMessage } from \"../messages/index.js\";\nimport { AIMessage } from \"../messages/index.js\";\nimport { SystemMessage } from \"../messages/index.js\";\nimport { ToolMessage } from \"../messages/index.js\";\n\n/**\n * The `this` context that Vitest and Jest provide to custom matchers\n * via `expect.extend`.\n *\n * Compatible with both frameworks:\n * - https://vitest.dev/guide/extending-matchers.html\n * - https://jestjs.io/docs/expect#expectextendmatchers\n */\ninterface ExpectExtendThis {\n isNot?: boolean;\n equals(a: unknown, b: unknown): boolean;\n utils: {\n matcherHint(name: string, received?: string, expected?: string): string;\n printReceived(value: unknown): string;\n printExpected(value: unknown): string;\n };\n}\n\ninterface ExpectationResult {\n pass: boolean;\n message: () => string;\n actual?: unknown;\n expected?: unknown;\n}\n\nfunction getMessageTypeName(msg: unknown): string {\n if (!BaseMessage.isInstance(msg)) return typeof msg;\n return msg.constructor.name || msg.type;\n}\n\nfunction makeMessageTypeMatcher(\n typeName: string,\n isInstance: (obj: unknown) => boolean\n) {\n return function (\n this: ExpectExtendThis,\n received: unknown,\n expected?: string | Record<string, unknown>\n ): ExpectationResult {\n const { isNot, utils } = this;\n\n const instancePass = isInstance(received);\n if (!instancePass) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${isNot ? \"not \" : \"\"}${typeName}\\n` +\n `Received: ${getMessageTypeName(received)}`,\n actual: getMessageTypeName(received),\n expected: typeName,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: not ${typeName}\\n` +\n `Received: ${typeName}`,\n };\n }\n\n const msg = received as BaseMessage;\n if (typeof expected === \"string\") {\n const contentPass = msg.content === expected;\n return {\n pass: contentPass,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} with content ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with content ${utils.printReceived(msg.content)}`,\n actual: msg.content,\n expected,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals((msg as any)[key], value)\n );\n return {\n pass: fieldsPass,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return (\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} matching ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with ${utils.printReceived(receivedFields)}`\n );\n },\n actual: (() => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return receivedFields;\n })(),\n expected,\n };\n };\n}\n\nexport const toBeHumanMessage = makeMessageTypeMatcher(\n \"HumanMessage\",\n HumanMessage.isInstance\n);\n\nexport const toBeAIMessage = makeMessageTypeMatcher(\n \"AIMessage\",\n AIMessage.isInstance\n);\n\nexport const toBeSystemMessage = makeMessageTypeMatcher(\n \"SystemMessage\",\n SystemMessage.isInstance\n);\n\nexport const toBeToolMessage = makeMessageTypeMatcher(\n \"ToolMessage\",\n ToolMessage.isInstance\n);\n\nexport function toHaveToolCalls(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n\n if (actual.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool call(s), received ${actual.length}`,\n actual: actual.length,\n expected: expected.length,\n };\n }\n\n const unmatched = expected.filter(\n (exp) =>\n !actual.some((tc) =>\n Object.entries(exp).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n )\n );\n\n if (unmatched.length > 0) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Could not find matching tool call(s) for:\\n` +\n `${utils.printExpected(unmatched)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })),\n expected,\n };\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected AIMessage not to have matching tool calls`,\n };\n}\n\nexport function toHaveToolCallCount(\n this: ExpectExtendThis,\n received: unknown,\n expected: number\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls?.length ?? 0;\n const pass = actual === expected;\n\n return {\n pass,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected} tool call(s)\\n` +\n `Received: ${actual}`,\n actual,\n expected,\n };\n}\n\nexport function toContainToolCall(\n this: ExpectExtendThis,\n received: unknown,\n expected: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n const found = actual.some((tc) =>\n Object.entries(expected).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n );\n\n return {\n pass: found,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected AIMessage ${isNot ? \"not \" : \"\"}to contain a tool call matching ${utils.printExpected(expected)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id })),\n expected,\n };\n}\n\nexport function toHaveToolMessages(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!Array.isArray(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected an array of messages\\n` +\n `Received: ${typeof received}`,\n };\n }\n\n const toolMessages = (received as BaseMessage[]).filter(\n ToolMessage.isInstance\n );\n\n if (toolMessages.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool message(s), found ${toolMessages.length}`,\n actual: toolMessages.length,\n expected: expected.length,\n };\n }\n\n for (let i = 0; i < expected.length; i++) {\n const match = Object.entries(expected[i]).every(([key, value]) =>\n this.equals((toolMessages[i] as any)[key], value)\n );\n if (!match) {\n return {\n pass: false,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected[i])) {\n receivedFields[key] = (toolMessages[i] as any)[key];\n }\n return (\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Tool message at index ${i} did not match:\\n` +\n `Expected: ${utils.printExpected(expected[i])}\\n` +\n `Received: ${utils.printReceived(receivedFields)}`\n );\n },\n actual: toolMessages[i],\n expected: expected[i],\n };\n }\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected messages not to contain matching tool messages`,\n };\n}\n\nexport function toHaveBeenInterrupted(\n this: ExpectExtendThis,\n received: unknown,\n expectedValue?: unknown\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const interrupts = result?.__interrupt__;\n const hasInterrupt = Array.isArray(interrupts) && interrupts.length > 0;\n\n if (!hasInterrupt) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have been interrupted\\n` +\n `Received __interrupt__: ${utils.printReceived(interrupts)}`,\n };\n }\n\n if (expectedValue === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result not to have been interrupted\\n` +\n `Received ${interrupts.length} interrupt(s)`,\n };\n }\n\n const actualValue = interrupts[0]?.value;\n const valuePass = this.equals(actualValue, expectedValue);\n\n return {\n pass: valuePass,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected interrupt value: ${utils.printExpected(expectedValue)}\\n` +\n `Received interrupt value: ${utils.printReceived(actualValue)}`,\n actual: actualValue,\n expected: expectedValue,\n };\n}\n\nexport function toHaveStructuredResponse(\n this: ExpectExtendThis,\n received: unknown,\n expected?: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const structuredResponse = result?.structuredResponse;\n const isDefined = structuredResponse !== undefined;\n\n if (!isDefined) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have a structured response\\n` +\n `Received structuredResponse: undefined`,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result not to have a structured response`,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals(structuredResponse[key], value)\n );\n\n return {\n pass: fieldsPass,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected structured response: ${utils.printExpected(expected)}\\n` +\n `Received structured response: ${utils.printReceived(structuredResponse)}`,\n actual: structuredResponse,\n expected,\n };\n}\n\n/**\n * All matcher functions bundled for convenient use with `expect.extend()`.\n */\nexport const langchainMatchers = {\n toBeHumanMessage,\n toBeAIMessage,\n toBeSystemMessage,\n toBeToolMessage,\n toHaveToolCalls,\n toHaveToolCallCount,\n toContainToolCall,\n toHaveToolMessages,\n toHaveBeenInterrupted,\n toHaveStructuredResponse,\n ...streamMatchers,\n};\n\nexport interface LangChainMatchers<R = unknown> extends StreamMatchers<R> {\n toBeHumanMessage(expected?: string | { content?: string; id?: string }): R;\n toBeAIMessage(expected?: string | { content?: string; name?: string }): R;\n toBeSystemMessage(\n expected?: string | { content?: string; additional_kwargs?: object }\n ): R;\n toBeToolMessage(\n expected?:\n | string\n | {\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }\n ): R;\n toHaveToolCalls(\n expected: Array<{\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }>\n ): R;\n toHaveToolCallCount(expected: number): R;\n toContainToolCall(expected: {\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }): R;\n toHaveToolMessages(\n expected: Array<{\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }>\n ): R;\n toHaveBeenInterrupted(expectedValue?: unknown): R;\n toHaveStructuredResponse(expected?: Record<string, unknown>): R;\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { StreamMatchers, toHaveStreamOutput, toHaveStreamReasoning, toHaveStreamText, toHaveStreamToolCalls, toHaveStreamUsage } from "../utils/testing/stream.cjs";
2
-
3
2
  //#region src/testing/matchers.d.ts
4
3
  /**
5
4
  * The `this` context that Vitest and Jest provide to custom matchers
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.d.cts","names":[],"sources":["../../src/testing/matchers.ts"],"mappings":";;;;;AAIoC;;;;;;UAe1B,gBAAA;EACR,KAAA;EACA,MAAA,CAAO,CAAA,WAAY,CAAA;EACnB,KAAA;IACE,WAAA,CAAY,IAAA,UAAc,QAAA,WAAmB,QAAA;IAC7C,aAAA,CAAc,KAAA;IACd,aAAA,CAAc,KAAA;EAAA;AAAA;AAAA,UAIR,iBAAA;EACR,IAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,cAoFW,gBAAA,GAAgB,IAAA,EAvEnB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cAyEQ,aAAA,GAAa,IAAA,EA5EhB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cA8EQ,iBAAA,GAAiB,IAAA,EAjFpB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cAmFQ,eAAA,GAAe,IAAA,EAtFlB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,iBAwFW,eAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,KAAA,CAAM,MAAA,qBACf,iBAAA;AAAA,iBAwDa,mBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,WACC,iBAAA;AAAA,iBA2Ba,iBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,MAAA,oBACT,iBAAA;AAAA,iBA+Ba,kBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,KAAA,CAAM,MAAA,qBACf,iBAAA;AAAA,iBA6Da,qBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,aAAA,aACC,iBAAA;AAAA,iBAyCa,wBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,GAAW,MAAA,oBACV,iBAAA;;;;cA4CU,iBAAA;2BAYZ,gBAAA;;;;;2BAnYS,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;;;;;;;;;;;UAkYY,iBAAA,sBAAuC,cAAA,CAAe,CAAA;EACrE,gBAAA,CAAiB,QAAA;IAAsB,OAAA;IAAkB,EAAA;EAAA,IAAgB,CAAA;EACzE,aAAA,CAAc,QAAA;IAAsB,OAAA;IAAkB,IAAA;EAAA,IAAkB,CAAA;EACxE,iBAAA,CACE,QAAA;IAAsB,OAAA;IAAkB,iBAAA;EAAA,IACvC,CAAA;EACH,eAAA,CACE,QAAA;IAGM,OAAA;IACA,IAAA;IACA,MAAA;IACA,YAAA;EAAA,IAEL,CAAA;EACH,eAAA,CACE,QAAA,EAAU,KAAA;IACR,IAAA;IACA,EAAA;IACA,IAAA,GAAO,MAAA;EAAA,KAER,CAAA;EACH,mBAAA,CAAoB,QAAA,WAAmB,CAAA;EACvC,iBAAA,CAAkB,QAAA;IAChB,IAAA;IACA,EAAA;IACA,IAAA,GAAO,MAAA;EAAA,IACL,CAAA;EACJ,kBAAA,CACE,QAAA,EAAU,KAAA;IACR,OAAA;IACA,IAAA;IACA,MAAA;IACA,YAAA;EAAA,KAED,CAAA;EACH,qBAAA,CAAsB,aAAA,aAA0B,CAAA;EAChD,wBAAA,CAAyB,QAAA,GAAW,MAAA,oBAA0B,CAAA;AAAA"}
1
+ {"version":3,"file":"matchers.d.cts","names":[],"sources":["../../src/testing/matchers.ts"],"mappings":";;;;;;;;;;UAmBU;EACR;EACA,OAAO,YAAY;EACnB;IACE,YAAY,cAAc,mBAAmB;IAC7C,cAAc;IACd,cAAc;;;UAIR;EACR;EACA;EACA;EACA;;cAoFW,mBAAgB,MAvEnB,kBAAgB,mBACL,oBACG,4BACnB;cAyEQ,gBAAa,MA5EhB,kBAAgB,mBACL,oBACG,4BACnB;cA8EQ,oBAAiB,MAjFpB,kBAAgB,mBACL,oBACG,4BACnB;cAmFQ,kBAAe,MAtFlB,kBAAgB,mBACL,oBACG,4BACnB;iBAwFW,gBACd,MAAM,kBACN,mBACA,UAAU,MAAM,2BACf;iBAwDa,oBACd,MAAM,kBACN,mBACA,mBACC;iBA2Ba,kBACd,MAAM,kBACN,mBACA,UAAU,0BACT;iBA+Ba,mBACd,MAAM,kBACN,mBACA,UAAU,MAAM,2BACf;iBA6Da,sBACd,MAAM,kBACN,mBACA,0BACC;iBAyCa,yBACd,MAAM,kBACN,mBACA,WAAW,0BACV;;;;cA4CU;2BAAA;;;;;EAvXH,mBAAA,MAAA,kBAAgB,mBACL,oBACG,4BACnB;;;;;;;;;;;UAkYY,kBAAkB,qBAAqB,eAAe;EACrE,iBAAiB;IAAsB;IAAkB;MAAgB;EACzE,cAAc;IAAsB;IAAkB;MAAkB;EACxE,kBACE;IAAsB;IAAkB;MACvC;EACH,gBACE;IAGM;IACA;IACA;IACA;MAEL;EACH,gBACE,UAAU;IACR;IACA;IACA,OAAO;OAER;EACH,oBAAoB,mBAAmB;EACvC,kBAAkB;IAChB;IACA;IACA,OAAO;MACL;EACJ,mBACE,UAAU;IACR;IACA;IACA;IACA;OAED;EACH,sBAAsB,0BAA0B;EAChD,yBAAyB,WAAW,0BAA0B"}
@@ -1,5 +1,4 @@
1
1
  import { StreamMatchers, toHaveStreamOutput, toHaveStreamReasoning, toHaveStreamText, toHaveStreamToolCalls, toHaveStreamUsage } from "../utils/testing/stream.js";
2
-
3
2
  //#region src/testing/matchers.d.ts
4
3
  /**
5
4
  * The `this` context that Vitest and Jest provide to custom matchers
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.d.ts","names":[],"sources":["../../src/testing/matchers.ts"],"mappings":";;;;;AAIoC;;;;;;UAe1B,gBAAA;EACR,KAAA;EACA,MAAA,CAAO,CAAA,WAAY,CAAA;EACnB,KAAA;IACE,WAAA,CAAY,IAAA,UAAc,QAAA,WAAmB,QAAA;IAC7C,aAAA,CAAc,KAAA;IACd,aAAA,CAAc,KAAA;EAAA;AAAA;AAAA,UAIR,iBAAA;EACR,IAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,cAoFW,gBAAA,GAAgB,IAAA,EAvEnB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cAyEQ,aAAA,GAAa,IAAA,EA5EhB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cA8EQ,iBAAA,GAAiB,IAAA,EAjFpB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,cAmFQ,eAAA,GAAe,IAAA,EAtFlB,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;AAAA,iBAwFW,eAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,KAAA,CAAM,MAAA,qBACf,iBAAA;AAAA,iBAwDa,mBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,WACC,iBAAA;AAAA,iBA2Ba,iBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,MAAA,oBACT,iBAAA;AAAA,iBA+Ba,kBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,EAAU,KAAA,CAAM,MAAA,qBACf,iBAAA;AAAA,iBA6Da,qBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,aAAA,aACC,iBAAA;AAAA,iBAyCa,wBAAA,CACd,IAAA,EAAM,gBAAA,EACN,QAAA,WACA,QAAA,GAAW,MAAA,oBACV,iBAAA;;;;cA4CU,iBAAA;2BAYZ,gBAAA;;;;;2BAnYS,gBAAA,EAAgB,QAAA,WACL,QAAA,YACG,MAAA,sBACnB,iBAAA;;;;;;;;;;;UAkYY,iBAAA,sBAAuC,cAAA,CAAe,CAAA;EACrE,gBAAA,CAAiB,QAAA;IAAsB,OAAA;IAAkB,EAAA;EAAA,IAAgB,CAAA;EACzE,aAAA,CAAc,QAAA;IAAsB,OAAA;IAAkB,IAAA;EAAA,IAAkB,CAAA;EACxE,iBAAA,CACE,QAAA;IAAsB,OAAA;IAAkB,iBAAA;EAAA,IACvC,CAAA;EACH,eAAA,CACE,QAAA;IAGM,OAAA;IACA,IAAA;IACA,MAAA;IACA,YAAA;EAAA,IAEL,CAAA;EACH,eAAA,CACE,QAAA,EAAU,KAAA;IACR,IAAA;IACA,EAAA;IACA,IAAA,GAAO,MAAA;EAAA,KAER,CAAA;EACH,mBAAA,CAAoB,QAAA,WAAmB,CAAA;EACvC,iBAAA,CAAkB,QAAA;IAChB,IAAA;IACA,EAAA;IACA,IAAA,GAAO,MAAA;EAAA,IACL,CAAA;EACJ,kBAAA,CACE,QAAA,EAAU,KAAA;IACR,OAAA;IACA,IAAA;IACA,MAAA;IACA,YAAA;EAAA,KAED,CAAA;EACH,qBAAA,CAAsB,aAAA,aAA0B,CAAA;EAChD,wBAAA,CAAyB,QAAA,GAAW,MAAA,oBAA0B,CAAA;AAAA"}
1
+ {"version":3,"file":"matchers.d.ts","names":[],"sources":["../../src/testing/matchers.ts"],"mappings":";;;;;;;;;;UAmBU;EACR;EACA,OAAO,YAAY;EACnB;IACE,YAAY,cAAc,mBAAmB;IAC7C,cAAc;IACd,cAAc;;;UAIR;EACR;EACA;EACA;EACA;;cAoFW,mBAAgB,MAvEnB,kBAAgB,mBACL,oBACG,4BACnB;cAyEQ,gBAAa,MA5EhB,kBAAgB,mBACL,oBACG,4BACnB;cA8EQ,oBAAiB,MAjFpB,kBAAgB,mBACL,oBACG,4BACnB;cAmFQ,kBAAe,MAtFlB,kBAAgB,mBACL,oBACG,4BACnB;iBAwFW,gBACd,MAAM,kBACN,mBACA,UAAU,MAAM,2BACf;iBAwDa,oBACd,MAAM,kBACN,mBACA,mBACC;iBA2Ba,kBACd,MAAM,kBACN,mBACA,UAAU,0BACT;iBA+Ba,mBACd,MAAM,kBACN,mBACA,UAAU,MAAM,2BACf;iBA6Da,sBACd,MAAM,kBACN,mBACA,0BACC;iBAyCa,yBACd,MAAM,kBACN,mBACA,WAAW,0BACV;;;;cA4CU;2BAAA;;;;;EAvXH,mBAAA,MAAA,kBAAgB,mBACL,oBACG,4BACnB;;;;;;;;;;;UAkYY,kBAAkB,qBAAqB,eAAe;EACrE,iBAAiB;IAAsB;IAAkB;MAAgB;EACzE,cAAc;IAAsB;IAAkB;MAAkB;EACxE,kBACE;IAAsB;IAAkB;MACvC;EACH,gBACE;IAGM;IACA;IACA;IACA;MAEL;EACH,gBACE,UAAU;IACR;IACA;IACA,OAAO;OAER;EACH,oBAAoB,mBAAmB;EACvC,kBAAkB;IAChB;IACA;IACA,OAAO;MACL;EACJ,mBACE,UAAU;IACR;IACA;IACA;IACA;OAED;EACH,sBAAsB,0BAA0B;EAChD,yBAAyB,WAAW,0BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.js","names":["result"],"sources":["../../src/testing/matchers.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {\n streamMatchers,\n type StreamMatchers,\n} from \"../utils/testing/stream.js\";\nimport { BaseMessage } from \"../messages/index.js\";\nimport { HumanMessage } from \"../messages/index.js\";\nimport { AIMessage } from \"../messages/index.js\";\nimport { SystemMessage } from \"../messages/index.js\";\nimport { ToolMessage } from \"../messages/index.js\";\n\n/**\n * The `this` context that Vitest and Jest provide to custom matchers\n * via `expect.extend`.\n *\n * Compatible with both frameworks:\n * - https://vitest.dev/guide/extending-matchers.html\n * - https://jestjs.io/docs/expect#expectextendmatchers\n */\ninterface ExpectExtendThis {\n isNot?: boolean;\n equals(a: unknown, b: unknown): boolean;\n utils: {\n matcherHint(name: string, received?: string, expected?: string): string;\n printReceived(value: unknown): string;\n printExpected(value: unknown): string;\n };\n}\n\ninterface ExpectationResult {\n pass: boolean;\n message: () => string;\n actual?: unknown;\n expected?: unknown;\n}\n\nfunction getMessageTypeName(msg: unknown): string {\n if (!BaseMessage.isInstance(msg)) return typeof msg;\n return msg.constructor.name || msg.type;\n}\n\nfunction makeMessageTypeMatcher(\n typeName: string,\n isInstance: (obj: unknown) => boolean\n) {\n return function (\n this: ExpectExtendThis,\n received: unknown,\n expected?: string | Record<string, unknown>\n ): ExpectationResult {\n const { isNot, utils } = this;\n\n const instancePass = isInstance(received);\n if (!instancePass) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${isNot ? \"not \" : \"\"}${typeName}\\n` +\n `Received: ${getMessageTypeName(received)}`,\n actual: getMessageTypeName(received),\n expected: typeName,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: not ${typeName}\\n` +\n `Received: ${typeName}`,\n };\n }\n\n const msg = received as BaseMessage;\n if (typeof expected === \"string\") {\n const contentPass = msg.content === expected;\n return {\n pass: contentPass,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} with content ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with content ${utils.printReceived(msg.content)}`,\n actual: msg.content,\n expected,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals((msg as any)[key], value)\n );\n return {\n pass: fieldsPass,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return (\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} matching ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with ${utils.printReceived(receivedFields)}`\n );\n },\n actual: (() => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return receivedFields;\n })(),\n expected,\n };\n };\n}\n\nexport const toBeHumanMessage = makeMessageTypeMatcher(\n \"HumanMessage\",\n HumanMessage.isInstance\n);\n\nexport const toBeAIMessage = makeMessageTypeMatcher(\n \"AIMessage\",\n AIMessage.isInstance\n);\n\nexport const toBeSystemMessage = makeMessageTypeMatcher(\n \"SystemMessage\",\n SystemMessage.isInstance\n);\n\nexport const toBeToolMessage = makeMessageTypeMatcher(\n \"ToolMessage\",\n ToolMessage.isInstance\n);\n\nexport function toHaveToolCalls(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n\n if (actual.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool call(s), received ${actual.length}`,\n actual: actual.length,\n expected: expected.length,\n };\n }\n\n const unmatched = expected.filter(\n (exp) =>\n !actual.some((tc) =>\n Object.entries(exp).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n )\n );\n\n if (unmatched.length > 0) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Could not find matching tool call(s) for:\\n` +\n `${utils.printExpected(unmatched)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })),\n expected,\n };\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected AIMessage not to have matching tool calls`,\n };\n}\n\nexport function toHaveToolCallCount(\n this: ExpectExtendThis,\n received: unknown,\n expected: number\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls?.length ?? 0;\n const pass = actual === expected;\n\n return {\n pass,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected} tool call(s)\\n` +\n `Received: ${actual}`,\n actual,\n expected,\n };\n}\n\nexport function toContainToolCall(\n this: ExpectExtendThis,\n received: unknown,\n expected: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n const found = actual.some((tc) =>\n Object.entries(expected).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n );\n\n return {\n pass: found,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected AIMessage ${isNot ? \"not \" : \"\"}to contain a tool call matching ${utils.printExpected(expected)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id })),\n expected,\n };\n}\n\nexport function toHaveToolMessages(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!Array.isArray(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected an array of messages\\n` +\n `Received: ${typeof received}`,\n };\n }\n\n const toolMessages = (received as BaseMessage[]).filter(\n ToolMessage.isInstance\n );\n\n if (toolMessages.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool message(s), found ${toolMessages.length}`,\n actual: toolMessages.length,\n expected: expected.length,\n };\n }\n\n for (let i = 0; i < expected.length; i++) {\n const match = Object.entries(expected[i]).every(([key, value]) =>\n this.equals((toolMessages[i] as any)[key], value)\n );\n if (!match) {\n return {\n pass: false,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected[i])) {\n receivedFields[key] = (toolMessages[i] as any)[key];\n }\n return (\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Tool message at index ${i} did not match:\\n` +\n `Expected: ${utils.printExpected(expected[i])}\\n` +\n `Received: ${utils.printReceived(receivedFields)}`\n );\n },\n actual: toolMessages[i],\n expected: expected[i],\n };\n }\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected messages not to contain matching tool messages`,\n };\n}\n\nexport function toHaveBeenInterrupted(\n this: ExpectExtendThis,\n received: unknown,\n expectedValue?: unknown\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const interrupts = result?.__interrupt__;\n const hasInterrupt = Array.isArray(interrupts) && interrupts.length > 0;\n\n if (!hasInterrupt) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have been interrupted\\n` +\n `Received __interrupt__: ${utils.printReceived(interrupts)}`,\n };\n }\n\n if (expectedValue === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result not to have been interrupted\\n` +\n `Received ${interrupts.length} interrupt(s)`,\n };\n }\n\n const actualValue = interrupts[0]?.value;\n const valuePass = this.equals(actualValue, expectedValue);\n\n return {\n pass: valuePass,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected interrupt value: ${utils.printExpected(expectedValue)}\\n` +\n `Received interrupt value: ${utils.printReceived(actualValue)}`,\n actual: actualValue,\n expected: expectedValue,\n };\n}\n\nexport function toHaveStructuredResponse(\n this: ExpectExtendThis,\n received: unknown,\n expected?: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const structuredResponse = result?.structuredResponse;\n const isDefined = structuredResponse !== undefined;\n\n if (!isDefined) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have a structured response\\n` +\n `Received structuredResponse: undefined`,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result not to have a structured response`,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals(structuredResponse[key], value)\n );\n\n return {\n pass: fieldsPass,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected structured response: ${utils.printExpected(expected)}\\n` +\n `Received structured response: ${utils.printReceived(structuredResponse)}`,\n actual: structuredResponse,\n expected,\n };\n}\n\n/**\n * All matcher functions bundled for convenient use with `expect.extend()`.\n */\nexport const langchainMatchers = {\n toBeHumanMessage,\n toBeAIMessage,\n toBeSystemMessage,\n toBeToolMessage,\n toHaveToolCalls,\n toHaveToolCallCount,\n toContainToolCall,\n toHaveToolMessages,\n toHaveBeenInterrupted,\n toHaveStructuredResponse,\n ...streamMatchers,\n};\n\nexport interface LangChainMatchers<R = unknown> extends StreamMatchers<R> {\n toBeHumanMessage(expected?: string | { content?: string; id?: string }): R;\n toBeAIMessage(expected?: string | { content?: string; name?: string }): R;\n toBeSystemMessage(\n expected?: string | { content?: string; additional_kwargs?: object }\n ): R;\n toBeToolMessage(\n expected?:\n | string\n | {\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }\n ): R;\n toHaveToolCalls(\n expected: Array<{\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }>\n ): R;\n toHaveToolCallCount(expected: number): R;\n toContainToolCall(expected: {\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }): R;\n toHaveToolMessages(\n expected: Array<{\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }>\n ): R;\n toHaveBeenInterrupted(expectedValue?: unknown): R;\n toHaveStructuredResponse(expected?: Record<string, unknown>): R;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"matchers.js","names":["result"],"sources":["../../src/testing/matchers.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {\n streamMatchers,\n type StreamMatchers,\n} from \"../utils/testing/stream.js\";\nimport { BaseMessage } from \"../messages/index.js\";\nimport { HumanMessage } from \"../messages/index.js\";\nimport { AIMessage } from \"../messages/index.js\";\nimport { SystemMessage } from \"../messages/index.js\";\nimport { ToolMessage } from \"../messages/index.js\";\n\n/**\n * The `this` context that Vitest and Jest provide to custom matchers\n * via `expect.extend`.\n *\n * Compatible with both frameworks:\n * - https://vitest.dev/guide/extending-matchers.html\n * - https://jestjs.io/docs/expect#expectextendmatchers\n */\ninterface ExpectExtendThis {\n isNot?: boolean;\n equals(a: unknown, b: unknown): boolean;\n utils: {\n matcherHint(name: string, received?: string, expected?: string): string;\n printReceived(value: unknown): string;\n printExpected(value: unknown): string;\n };\n}\n\ninterface ExpectationResult {\n pass: boolean;\n message: () => string;\n actual?: unknown;\n expected?: unknown;\n}\n\nfunction getMessageTypeName(msg: unknown): string {\n if (!BaseMessage.isInstance(msg)) return typeof msg;\n return msg.constructor.name || msg.type;\n}\n\nfunction makeMessageTypeMatcher(\n typeName: string,\n isInstance: (obj: unknown) => boolean\n) {\n return function (\n this: ExpectExtendThis,\n received: unknown,\n expected?: string | Record<string, unknown>\n ): ExpectationResult {\n const { isNot, utils } = this;\n\n const instancePass = isInstance(received);\n if (!instancePass) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${isNot ? \"not \" : \"\"}${typeName}\\n` +\n `Received: ${getMessageTypeName(received)}`,\n actual: getMessageTypeName(received),\n expected: typeName,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: not ${typeName}\\n` +\n `Received: ${typeName}`,\n };\n }\n\n const msg = received as BaseMessage;\n if (typeof expected === \"string\") {\n const contentPass = msg.content === expected;\n return {\n pass: contentPass,\n message: () =>\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} with content ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with content ${utils.printReceived(msg.content)}`,\n actual: msg.content,\n expected,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals((msg as any)[key], value)\n );\n return {\n pass: fieldsPass,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return (\n `${utils.matcherHint(`toBe${typeName}`, undefined, undefined)}\\n\\n` +\n `Expected: ${typeName} matching ${utils.printExpected(expected)}\\n` +\n `Received: ${typeName} with ${utils.printReceived(receivedFields)}`\n );\n },\n actual: (() => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected)) {\n receivedFields[key] = (msg as any)[key];\n }\n return receivedFields;\n })(),\n expected,\n };\n };\n}\n\nexport const toBeHumanMessage = makeMessageTypeMatcher(\n \"HumanMessage\",\n HumanMessage.isInstance\n);\n\nexport const toBeAIMessage = makeMessageTypeMatcher(\n \"AIMessage\",\n AIMessage.isInstance\n);\n\nexport const toBeSystemMessage = makeMessageTypeMatcher(\n \"SystemMessage\",\n SystemMessage.isInstance\n);\n\nexport const toBeToolMessage = makeMessageTypeMatcher(\n \"ToolMessage\",\n ToolMessage.isInstance\n);\n\nexport function toHaveToolCalls(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n\n if (actual.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool call(s), received ${actual.length}`,\n actual: actual.length,\n expected: expected.length,\n };\n }\n\n const unmatched = expected.filter(\n (exp) =>\n !actual.some((tc) =>\n Object.entries(exp).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n )\n );\n\n if (unmatched.length > 0) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Could not find matching tool call(s) for:\\n` +\n `${utils.printExpected(unmatched)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id, args: tc.args })),\n expected,\n };\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCalls\")}\\n\\n` +\n `Expected AIMessage not to have matching tool calls`,\n };\n}\n\nexport function toHaveToolCallCount(\n this: ExpectExtendThis,\n received: unknown,\n expected: number\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls?.length ?? 0;\n const pass = actual === expected;\n\n return {\n pass,\n message: () =>\n `${utils.matcherHint(\"toHaveToolCallCount\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected} tool call(s)\\n` +\n `Received: ${actual}`,\n actual,\n expected,\n };\n}\n\nexport function toContainToolCall(\n this: ExpectExtendThis,\n received: unknown,\n expected: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!AIMessage.isInstance(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected: AIMessage\\n` +\n `Received: ${getMessageTypeName(received)}`,\n };\n }\n\n const actual = received.tool_calls ?? [];\n const found = actual.some((tc) =>\n Object.entries(expected).every(([key, value]) =>\n this.equals((tc as any)[key], value)\n )\n );\n\n return {\n pass: found,\n message: () =>\n `${utils.matcherHint(\"toContainToolCall\")}\\n\\n` +\n `Expected AIMessage ${isNot ? \"not \" : \"\"}to contain a tool call matching ${utils.printExpected(expected)}\\n` +\n `Received tool calls: ${utils.printReceived(actual.map((tc) => ({ name: tc.name, id: tc.id })))}`,\n actual: actual.map((tc) => ({ name: tc.name, id: tc.id })),\n expected,\n };\n}\n\nexport function toHaveToolMessages(\n this: ExpectExtendThis,\n received: unknown,\n expected: Array<Record<string, unknown>>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n if (!Array.isArray(received)) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected an array of messages\\n` +\n `Received: ${typeof received}`,\n };\n }\n\n const toolMessages = (received as BaseMessage[]).filter(\n ToolMessage.isInstance\n );\n\n if (toolMessages.length !== expected.length) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected ${isNot ? \"not \" : \"\"}${expected.length} tool message(s), found ${toolMessages.length}`,\n actual: toolMessages.length,\n expected: expected.length,\n };\n }\n\n for (let i = 0; i < expected.length; i++) {\n const match = Object.entries(expected[i]).every(([key, value]) =>\n this.equals((toolMessages[i] as any)[key], value)\n );\n if (!match) {\n return {\n pass: false,\n message: () => {\n const receivedFields: Record<string, unknown> = {};\n for (const key of Object.keys(expected[i])) {\n receivedFields[key] = (toolMessages[i] as any)[key];\n }\n return (\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Tool message at index ${i} did not match:\\n` +\n `Expected: ${utils.printExpected(expected[i])}\\n` +\n `Received: ${utils.printReceived(receivedFields)}`\n );\n },\n actual: toolMessages[i],\n expected: expected[i],\n };\n }\n }\n\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveToolMessages\")}\\n\\n` +\n `Expected messages not to contain matching tool messages`,\n };\n}\n\nexport function toHaveBeenInterrupted(\n this: ExpectExtendThis,\n received: unknown,\n expectedValue?: unknown\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const interrupts = result?.__interrupt__;\n const hasInterrupt = Array.isArray(interrupts) && interrupts.length > 0;\n\n if (!hasInterrupt) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have been interrupted\\n` +\n `Received __interrupt__: ${utils.printReceived(interrupts)}`,\n };\n }\n\n if (expectedValue === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected result not to have been interrupted\\n` +\n `Received ${interrupts.length} interrupt(s)`,\n };\n }\n\n const actualValue = interrupts[0]?.value;\n const valuePass = this.equals(actualValue, expectedValue);\n\n return {\n pass: valuePass,\n message: () =>\n `${utils.matcherHint(\"toHaveBeenInterrupted\")}\\n\\n` +\n `Expected interrupt value: ${utils.printExpected(expectedValue)}\\n` +\n `Received interrupt value: ${utils.printReceived(actualValue)}`,\n actual: actualValue,\n expected: expectedValue,\n };\n}\n\nexport function toHaveStructuredResponse(\n this: ExpectExtendThis,\n received: unknown,\n expected?: Record<string, unknown>\n): ExpectationResult {\n const { isNot, utils } = this;\n\n const result = received as Record<string, any>;\n const structuredResponse = result?.structuredResponse;\n const isDefined = structuredResponse !== undefined;\n\n if (!isDefined) {\n return {\n pass: false,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result ${isNot ? \"not \" : \"\"}to have a structured response\\n` +\n `Received structuredResponse: undefined`,\n };\n }\n\n if (expected === undefined) {\n return {\n pass: true,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected result not to have a structured response`,\n };\n }\n\n const fieldsPass = Object.entries(expected).every(([key, value]) =>\n this.equals(structuredResponse[key], value)\n );\n\n return {\n pass: fieldsPass,\n message: () =>\n `${utils.matcherHint(\"toHaveStructuredResponse\")}\\n\\n` +\n `Expected structured response: ${utils.printExpected(expected)}\\n` +\n `Received structured response: ${utils.printReceived(structuredResponse)}`,\n actual: structuredResponse,\n expected,\n };\n}\n\n/**\n * All matcher functions bundled for convenient use with `expect.extend()`.\n */\nexport const langchainMatchers = {\n toBeHumanMessage,\n toBeAIMessage,\n toBeSystemMessage,\n toBeToolMessage,\n toHaveToolCalls,\n toHaveToolCallCount,\n toContainToolCall,\n toHaveToolMessages,\n toHaveBeenInterrupted,\n toHaveStructuredResponse,\n ...streamMatchers,\n};\n\nexport interface LangChainMatchers<R = unknown> extends StreamMatchers<R> {\n toBeHumanMessage(expected?: string | { content?: string; id?: string }): R;\n toBeAIMessage(expected?: string | { content?: string; name?: string }): R;\n toBeSystemMessage(\n expected?: string | { content?: string; additional_kwargs?: object }\n ): R;\n toBeToolMessage(\n expected?:\n | string\n | {\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }\n ): R;\n toHaveToolCalls(\n expected: Array<{\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }>\n ): R;\n toHaveToolCallCount(expected: number): R;\n toContainToolCall(expected: {\n name?: string;\n id?: string;\n args?: Record<string, unknown>;\n }): R;\n toHaveToolMessages(\n expected: Array<{\n content?: string;\n name?: string;\n status?: string;\n tool_call_id?: string;\n }>\n ): R;\n toHaveBeenInterrupted(expectedValue?: unknown): R;\n toHaveStructuredResponse(expected?: Record<string, unknown>): R;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseLangChain","ensureConfig","mergeConfigs","_isToolCall","isInteropZodSchema","interopParseAsync","isInteropZodError","z4","ToolInputParsingException","parseCallbackConfigArg","CallbackManager","_configHasToolCallId","isAsyncGenerator","consumeAsyncGenerator","z","isSimpleStringZodSchema","validatesOnlyStrings","patchConfig","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","getAbortSignalError","isDirectToolOutput","ToolMessage"],"sources":["../../src/tools/index.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { z as z4, ZodError } from \"zod/v4\";\nimport {\n validate,\n type Schema as ValidationSchema,\n} from \"@cfworker/json-schema\";\nimport {\n CallbackManager,\n CallbackManagerForToolRun,\n parseCallbackConfigArg,\n} from \"../callbacks/manager.js\";\nimport { BaseLangChain } from \"../language_models/base.js\";\nimport {\n mergeConfigs,\n ensureConfig,\n patchConfig,\n pickRunnableConfigKeys,\n type RunnableConfig,\n} from \"../runnables/config.js\";\nimport type { RunnableFunc } from \"../runnables/base.js\";\nimport { isDirectToolOutput, ToolCall, ToolMessage } from \"../messages/tool.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { RunnableToolLike } from \"../runnables/base.js\";\nimport {\n _configHasToolCallId,\n _isToolCall,\n ToolInputParsingException,\n} from \"./utils.js\";\nimport {\n type InferInteropZodInput,\n type InferInteropZodOutput,\n type InteropZodObject,\n type InteropZodType,\n interopParseAsync,\n isSimpleStringZodSchema,\n isInteropZodError,\n isInteropZodSchema,\n type ZodStringV3,\n type ZodStringV4,\n type ZodObjectV3,\n type ZodObjectV4,\n} from \"../utils/types/zod.js\";\nimport { getAbortSignalError } from \"../utils/signal.js\";\nimport type {\n StructuredToolCallInput,\n ToolInputSchemaBase,\n ToolReturnType,\n ResponseFormat,\n ToolInputSchemaInputType,\n ToolInputSchemaOutputType,\n ToolParams,\n ToolRunnableConfig,\n StructuredToolInterface,\n DynamicToolInput,\n DynamicStructuredToolInput,\n StringInputToolSchema,\n ToolInterface,\n ToolOutputType,\n ToolRuntime,\n ToolEventType,\n InferToolEventFromFunc,\n InferToolOutputFromFunc,\n} from \"./types.js\";\nimport { type JSONSchema, validatesOnlyStrings } from \"../utils/json_schema.js\";\nimport { consumeAsyncGenerator, isAsyncGenerator } from \"../runnables/iter.js\";\n\nexport type {\n BaseDynamicToolInput,\n ContentAndArtifact,\n DynamicToolInput,\n DynamicStructuredToolInput,\n ResponseFormat,\n StructuredToolCallInput,\n StructuredToolInterface,\n StructuredToolParams,\n ToolInterface,\n ToolParams,\n ToolReturnType,\n ToolRunnableConfig,\n ToolInputSchemaBase as ToolSchemaBase,\n} from \"./types.js\";\n\nexport {\n isLangChainTool,\n isRunnableToolLike,\n isStructuredTool,\n isStructuredToolParams,\n type ToolRuntime,\n} from \"./types.js\";\n\nexport { ToolInputParsingException };\n/**\n * Base class for Tools that accept input of any shape defined by a Zod schema.\n */\nexport abstract class StructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n>\n extends BaseLangChain<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolOutputT | ToolMessage\n >\n implements StructuredToolInterface<SchemaT, SchemaInputT, ToolOutputT>\n{\n abstract name: string;\n\n abstract description: string;\n\n abstract schema: SchemaT;\n\n /**\n * Optional provider-specific extra fields for the tool.\n *\n * This is used to pass provider-specific configuration that doesn't fit into\n * standard tool fields.\n */\n extras?: Record<string, unknown>;\n\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect = false;\n\n verboseParsingErrors = false;\n\n get lc_namespace() {\n return [\"langchain\", \"tools\"];\n }\n\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat = \"content\";\n\n /**\n * Default config object for the tool runnable.\n */\n defaultConfig?: ToolRunnableConfig;\n\n constructor(fields?: ToolParams) {\n super(fields ?? {});\n\n this.verboseParsingErrors =\n fields?.verboseParsingErrors ?? this.verboseParsingErrors;\n this.responseFormat = fields?.responseFormat ?? this.responseFormat;\n this.defaultConfig = fields?.defaultConfig ?? this.defaultConfig;\n this.metadata = fields?.metadata ?? this.metadata;\n this.extras = fields?.extras ?? this.extras;\n }\n\n protected abstract _call(\n arg: SchemaOutputT,\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT>;\n\n /**\n * Invokes the tool with the provided input and configuration.\n * @param input The input for the tool.\n * @param config Optional configuration for the tool.\n * @returns A Promise that resolves with the tool's output.\n */\n async invoke<\n TInput extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n input: TInput,\n config?: TConfig\n ): Promise<ToolReturnType<TInput, TConfig, ToolOutputT>> {\n let toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n\n let enrichedConfig: ToolRunnableConfig = ensureConfig(\n mergeConfigs(this.defaultConfig, config)\n );\n if (_isToolCall(input)) {\n toolInput = input.args as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n enrichedConfig = {\n ...enrichedConfig,\n toolCall: input,\n };\n } else {\n toolInput = input as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n }\n\n return this.call(toolInput, enrichedConfig) as Promise<\n ToolReturnType<TInput, TConfig, ToolOutputT>\n >;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument, configuration, and tags. It\n * parses the input according to the schema, handles any errors, and\n * manages callbacks.\n * @param arg The input argument for the tool.\n * @param configArg Optional configuration or callbacks for the tool.\n * @param tags Optional tags for the tool.\n * @returns A Promise that resolves with a string.\n */\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<TArg, TConfig, ToolOutputT>> {\n // Determine the actual input that needs parsing/validation.\n // If arg is a ToolCall, use its args; otherwise, use arg directly.\n const inputForValidation = _isToolCall(arg) ? arg.args : arg;\n\n let parsed: SchemaOutputT; // This will hold the successfully parsed input of the expected output type.\n if (isInteropZodSchema(this.schema)) {\n try {\n // Validate the inputForValidation - TS needs help here as it can't exclude ToolCall based on the check\n parsed = await interopParseAsync(\n this.schema as InteropZodType,\n inputForValidation as Exclude<TArg, ToolCall>\n );\n } catch (e) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${(e as Error).message}`;\n }\n if (isInteropZodError(e)) {\n message = `${message}\\n\\n${z4.prettifyError(e as ZodError)}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n } else {\n const result = validate(\n inputForValidation,\n this.schema as ValidationSchema\n );\n if (!result.valid) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${result.errors\n .map((e) => `${e.keywordLocation}: ${e.error}`)\n .join(\"\\n\")}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n // Assign the validated input to parsed\n // We cast here because validate() doesn't narrow the type sufficiently for TS, but we know it's valid.\n parsed = inputForValidation as SchemaOutputT;\n }\n\n const config = parseCallbackConfigArg(configArg);\n const callbackManager_ = CallbackManager.configure(\n config.callbacks,\n this.callbacks,\n config.tags || tags,\n this.tags,\n config.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n\n let toolCallId: string | undefined;\n // Extract toolCallId ONLY if the original arg was a ToolCall\n if (_isToolCall(arg)) {\n toolCallId = arg.id;\n }\n // Or if it was provided in the config's toolCall property\n if (!toolCallId && _configHasToolCallId(config)) {\n toolCallId = config.toolCall.id;\n }\n\n const runManager = await callbackManager_?.handleToolStart(\n this.toJSON(),\n // Log the original raw input arg\n typeof arg === \"string\" ? arg : JSON.stringify(arg),\n config.runId,\n undefined,\n undefined,\n undefined,\n config.runName,\n toolCallId\n );\n delete config.runId;\n\n let result;\n try {\n const raw = await this._call(parsed, runManager, config);\n result = isAsyncGenerator(raw)\n ? await consumeAsyncGenerator(raw, async (chunk) => {\n try {\n await runManager?.handleToolEvent(chunk);\n } catch (streamError) {\n await runManager?.handleToolError(streamError);\n }\n })\n : raw;\n } catch (e) {\n await runManager?.handleToolError(e);\n throw e;\n }\n\n let content;\n let artifact;\n if (this.responseFormat === \"content_and_artifact\") {\n if (Array.isArray(result) && result.length === 2) {\n [content, artifact] = result;\n } else {\n throw new Error(\n `Tool response format is \"content_and_artifact\" but the output was not a two-tuple.\\nResult: ${JSON.stringify(\n result\n )}`\n );\n }\n } else {\n content = result;\n }\n\n const formattedOutput = _formatToolOutput<ToolOutputT>({\n content,\n artifact,\n toolCallId,\n name: this.name,\n metadata: this.metadata,\n });\n await runManager?.handleToolEnd(formattedOutput);\n return formattedOutput as ToolReturnType<TArg, TConfig, ToolOutputT>;\n }\n}\n\n/**\n * Base class for Tools that accept input as a string.\n */\nexport abstract class Tool<\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n>\n extends StructuredTool<\n StringInputToolSchema,\n ToolInputSchemaOutputType<StringInputToolSchema>,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT,\n ToolEventT\n >\n implements\n ToolInterface<\n StringInputToolSchema,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n{\n schema = z\n .object({ input: z.string().optional() })\n .transform((obj) => obj.input);\n\n constructor(fields?: ToolParams) {\n super(fields);\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument and callbacks. It handles\n * string inputs specifically.\n * @param arg The input argument for the tool, which can be a string, undefined, or an input of the tool's schema.\n * @param callbacks Optional callbacks for the tool.\n * @returns A Promise that resolves with a string.\n */\n // Match the base class signature including the generics and conditional return type\n call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n callbacks?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n // Prepare the input for the base class call method.\n // If arg is string or undefined, wrap it; otherwise, pass ToolCall or { input: ... } directly.\n const structuredArg =\n typeof arg === \"string\" || arg == null ? { input: arg } : arg;\n\n // Ensure TConfig is passed to super.call\n return super.call(structuredArg, callbacks);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and description.\n */\nexport class DynamicTool<\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n> extends Tool<ToolOutputT, ToolEventT> {\n static lc_name() {\n return \"DynamicTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicToolInput<ToolOutputT, ToolEventT>[\"func\"];\n\n constructor(fields: DynamicToolInput<ToolOutputT, ToolEventT>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n async call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n // Call the Tool class's call method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig);\n }\n\n /** @ignore */\n _call(\n input: string, // DynamicTool's _call specifically expects a string after schema transformation\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT> {\n return this.func(input, runManager, parentConfig);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and\n * description, designed to work with structured data. It extends the\n * StructuredTool class and overrides the _call method to execute the\n * provided function when the tool is called.\n *\n * Schema can be passed as Zod or JSON schema. The tool will not validate\n * input if JSON schema is passed.\n *\n * @template SchemaT The input schema type for the tool (Zod schema or JSON schema). Defaults to `ToolInputSchemaBase`.\n * @template SchemaOutputT The output type derived from the schema after parsing/validation. Defaults to `ToolInputSchemaOutputType<SchemaT>`.\n * @template SchemaInputT The input type derived from the schema before parsing. Defaults to `ToolInputSchemaInputType<SchemaT>`.\n * @template ToolOutputT The return type of the tool's function. Defaults to `ToolOutputType`.\n * @template NameT The literal type of the tool name (for discriminated union support). Defaults to `string`.\n */\nexport class DynamicStructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n NameT extends string = string,\n> extends StructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT\n> {\n static lc_name() {\n return \"DynamicStructuredTool\";\n }\n\n declare name: NameT;\n\n description: string;\n\n func: DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n >[\"func\"];\n\n schema: SchemaT;\n\n constructor(\n fields: DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n > & {\n name: NameT;\n }\n ) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n this.schema = fields.schema;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n // Match the base class signature\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n\n // Call the base class method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig, tags);\n }\n\n protected _call(\n arg: Parameters<\n DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n >[\"func\"]\n >[0],\n runManager?: CallbackManagerForToolRun,\n parentConfig?: RunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT> {\n return this.func(arg, runManager, parentConfig);\n }\n}\n\n/**\n * Abstract base class for toolkits in LangChain. Toolkits are collections\n * of tools that agents can use. Subclasses must implement the `tools`\n * property to provide the specific tools for the toolkit.\n */\nexport abstract class BaseToolkit {\n abstract tools: StructuredToolInterface[];\n\n getTools(): StructuredToolInterface[] {\n return this.tools;\n }\n}\n\n/**\n * Parameters for the tool function.\n * Schema can be provided as Zod or JSON schema.\n * Both schema types will be validated.\n * @template {ToolInputSchemaBase} RunInput The input schema for the tool.\n * @template {string} NameT The literal name type for discriminated union support.\n */\nexport interface ToolWrapperParams<\n RunInput = ToolInputSchemaBase | undefined,\n NameT extends string = string,\n> extends ToolParams {\n /**\n * The name of the tool. If using with an LLM, this\n * will be passed as the tool name.\n */\n name: NameT;\n /**\n * The description of the tool.\n * @default `${fields.name} tool`\n */\n description?: string;\n /**\n * The input schema for the tool. If using an LLM, this\n * will be passed as the tool schema to generate arguments\n * for.\n */\n schema?: RunInput;\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat;\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect?: boolean;\n}\n\n/**\n * Creates a new StructuredTool instance with the provided function, name, description, and schema.\n *\n * Schema can be provided as Zod or JSON schema, and both will be validated.\n *\n * @function\n * @template {ToolInputSchemaBase} SchemaT The input schema for the tool.\n * @template {ToolReturnType} ToolOutputT The output type of the tool.\n *\n * @param {RunnableFunc<z.output<SchemaT>, ToolOutputT>} func - The function to invoke when the tool is called.\n * @param {ToolWrapperParams<SchemaT>} fields - An object containing the following properties:\n * @param {string} fields.name The name of the tool.\n * @param {string | undefined} fields.description The description of the tool. Defaults to either the description on the Zod schema, or `${fields.name} tool`.\n * @param {z.AnyZodObject | z.ZodString | undefined} fields.schema The Zod schema defining the input for the tool. If undefined, it will default to a Zod string schema.\n *\n * @returns {DynamicStructuredTool<SchemaT>} A new StructuredTool instance.\n */\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n NameT extends string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n >\n | DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\n// Overloads with ToolRuntime as CallOptions\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n NameT extends string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n >\n | DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >\n | DynamicTool<ToolOutputT, ToolEventT> {\n const isSimpleStringSchema = isSimpleStringZodSchema(fields.schema);\n const isStringJSONSchema = validatesOnlyStrings(fields.schema);\n\n // If the schema is not provided, or it's a simple string schema, create a DynamicTool\n if (!fields.schema || isSimpleStringSchema || isStringJSONSchema) {\n return new DynamicTool<ToolOutputT, ToolEventT>({\n ...fields,\n description:\n fields.description ??\n (fields.schema as { description?: string } | undefined)?.description ??\n `${fields.name} tool`,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // oxlint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(func(input as any, childConfig as any));\n } catch (e) {\n reject(e);\n }\n }\n );\n });\n },\n });\n }\n\n const schema = fields.schema as InteropZodObject | JSONSchema;\n\n const description =\n fields.description ??\n (fields.schema as { description?: string }).description ??\n `${fields.name} tool`;\n\n return new DynamicStructuredTool<\n typeof schema,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >({\n ...fields,\n description,\n schema,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n let listener: (() => void) | undefined;\n const cleanup = () => {\n if (config?.signal && listener) {\n config.signal.removeEventListener(\"abort\", listener);\n }\n };\n\n if (config?.signal) {\n listener = () => {\n cleanup();\n reject(getAbortSignalError(config.signal));\n };\n config.signal.addEventListener(\"abort\", listener, { once: true });\n }\n\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // oxlint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await func(input as any, childConfig as any);\n if (isAsyncGenerator(result)) {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(result as any);\n return;\n }\n\n /**\n * If the signal is aborted, we don't want to resolve the promise\n * as the promise is already rejected.\n */\n if (config?.signal?.aborted) {\n cleanup();\n return;\n }\n\n cleanup();\n resolve(result);\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n );\n });\n },\n }) as DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >;\n}\n\nfunction _isMessageContentBlockShaped(item: unknown) {\n return typeof item === \"object\" && item !== null && \"type\" in item;\n}\n\nfunction _formatToolOutput<TOutput extends ToolOutputType>(params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}): ToolMessage | TOutput {\n const { content, artifact, toolCallId, metadata } = params;\n if (toolCallId && !isDirectToolOutput(content)) {\n if (\n typeof content === \"string\" ||\n (Array.isArray(content) && content.every(_isMessageContentBlockShaped))\n ) {\n return new ToolMessage({\n status: \"success\",\n content,\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n } else {\n return new ToolMessage({\n status: \"success\",\n content: _stringify(content),\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n }\n } else {\n return content;\n }\n}\n\nfunction _stringify(content: unknown): string {\n try {\n return JSON.stringify(content) ?? \"\";\n } catch (_noOp) {\n return `${content}`;\n }\n}\n\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool =\n | StructuredToolInterface\n | DynamicTool\n | RunnableToolLike;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["BaseLangChain","ensureConfig","mergeConfigs","_isToolCall","isInteropZodSchema","interopParseAsync","isInteropZodError","z4","ToolInputParsingException","parseCallbackConfigArg","CallbackManager","_configHasToolCallId","isAsyncGenerator","consumeAsyncGenerator","z","isSimpleStringZodSchema","validatesOnlyStrings","patchConfig","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","getAbortSignalError","isDirectToolOutput","ToolMessage"],"sources":["../../src/tools/index.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { z as z4, ZodError } from \"zod/v4\";\nimport {\n validate,\n type Schema as ValidationSchema,\n} from \"@cfworker/json-schema\";\nimport {\n CallbackManager,\n CallbackManagerForToolRun,\n parseCallbackConfigArg,\n} from \"../callbacks/manager.js\";\nimport { BaseLangChain } from \"../language_models/base.js\";\nimport {\n mergeConfigs,\n ensureConfig,\n patchConfig,\n pickRunnableConfigKeys,\n type RunnableConfig,\n} from \"../runnables/config.js\";\nimport type { RunnableFunc } from \"../runnables/base.js\";\nimport { isDirectToolOutput, ToolCall, ToolMessage } from \"../messages/tool.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { RunnableToolLike } from \"../runnables/base.js\";\nimport {\n _configHasToolCallId,\n _isToolCall,\n ToolInputParsingException,\n} from \"./utils.js\";\nimport {\n type InferInteropZodInput,\n type InferInteropZodOutput,\n type InteropZodObject,\n type InteropZodType,\n interopParseAsync,\n isSimpleStringZodSchema,\n isInteropZodError,\n isInteropZodSchema,\n type ZodStringV3,\n type ZodStringV4,\n type ZodObjectV3,\n type ZodObjectV4,\n} from \"../utils/types/zod.js\";\nimport { getAbortSignalError } from \"../utils/signal.js\";\nimport type {\n StructuredToolCallInput,\n ToolInputSchemaBase,\n ToolReturnType,\n ResponseFormat,\n ToolInputSchemaInputType,\n ToolInputSchemaOutputType,\n ToolParams,\n ToolRunnableConfig,\n StructuredToolInterface,\n DynamicToolInput,\n DynamicStructuredToolInput,\n StringInputToolSchema,\n ToolInterface,\n ToolOutputType,\n ToolRuntime,\n ToolEventType,\n InferToolEventFromFunc,\n InferToolOutputFromFunc,\n} from \"./types.js\";\nimport { type JSONSchema, validatesOnlyStrings } from \"../utils/json_schema.js\";\nimport { consumeAsyncGenerator, isAsyncGenerator } from \"../runnables/iter.js\";\n\nexport type {\n BaseDynamicToolInput,\n ContentAndArtifact,\n DynamicToolInput,\n DynamicStructuredToolInput,\n ResponseFormat,\n StructuredToolCallInput,\n StructuredToolInterface,\n StructuredToolParams,\n ToolInterface,\n ToolParams,\n ToolReturnType,\n ToolRunnableConfig,\n ToolInputSchemaBase as ToolSchemaBase,\n} from \"./types.js\";\n\nexport {\n isLangChainTool,\n isRunnableToolLike,\n isStructuredTool,\n isStructuredToolParams,\n type ToolRuntime,\n} from \"./types.js\";\n\nexport { ToolInputParsingException };\n/**\n * Base class for Tools that accept input of any shape defined by a Zod schema.\n */\nexport abstract class StructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n>\n extends BaseLangChain<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolOutputT | ToolMessage\n >\n implements StructuredToolInterface<SchemaT, SchemaInputT, ToolOutputT>\n{\n abstract name: string;\n\n abstract description: string;\n\n abstract schema: SchemaT;\n\n /**\n * Optional provider-specific extra fields for the tool.\n *\n * This is used to pass provider-specific configuration that doesn't fit into\n * standard tool fields.\n */\n extras?: Record<string, unknown>;\n\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect = false;\n\n verboseParsingErrors = false;\n\n get lc_namespace() {\n return [\"langchain\", \"tools\"];\n }\n\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat = \"content\";\n\n /**\n * Default config object for the tool runnable.\n */\n defaultConfig?: ToolRunnableConfig;\n\n constructor(fields?: ToolParams) {\n super(fields ?? {});\n\n this.verboseParsingErrors =\n fields?.verboseParsingErrors ?? this.verboseParsingErrors;\n this.responseFormat = fields?.responseFormat ?? this.responseFormat;\n this.defaultConfig = fields?.defaultConfig ?? this.defaultConfig;\n this.metadata = fields?.metadata ?? this.metadata;\n this.extras = fields?.extras ?? this.extras;\n }\n\n protected abstract _call(\n arg: SchemaOutputT,\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT>;\n\n /**\n * Invokes the tool with the provided input and configuration.\n * @param input The input for the tool.\n * @param config Optional configuration for the tool.\n * @returns A Promise that resolves with the tool's output.\n */\n async invoke<\n TInput extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n input: TInput,\n config?: TConfig\n ): Promise<ToolReturnType<TInput, TConfig, ToolOutputT>> {\n let toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n\n let enrichedConfig: ToolRunnableConfig = ensureConfig(\n mergeConfigs(this.defaultConfig, config)\n );\n if (_isToolCall(input)) {\n toolInput = input.args as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n enrichedConfig = {\n ...enrichedConfig,\n toolCall: input,\n };\n } else {\n toolInput = input as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n }\n\n return this.call(toolInput, enrichedConfig) as Promise<\n ToolReturnType<TInput, TConfig, ToolOutputT>\n >;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument, configuration, and tags. It\n * parses the input according to the schema, handles any errors, and\n * manages callbacks.\n * @param arg The input argument for the tool.\n * @param configArg Optional configuration or callbacks for the tool.\n * @param tags Optional tags for the tool.\n * @returns A Promise that resolves with a string.\n */\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<TArg, TConfig, ToolOutputT>> {\n // Determine the actual input that needs parsing/validation.\n // If arg is a ToolCall, use its args; otherwise, use arg directly.\n const inputForValidation = _isToolCall(arg) ? arg.args : arg;\n\n let parsed: SchemaOutputT; // This will hold the successfully parsed input of the expected output type.\n if (isInteropZodSchema(this.schema)) {\n try {\n // Validate the inputForValidation - TS needs help here as it can't exclude ToolCall based on the check\n parsed = await interopParseAsync(\n this.schema as InteropZodType,\n inputForValidation as Exclude<TArg, ToolCall>\n );\n } catch (e) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${(e as Error).message}`;\n }\n if (isInteropZodError(e)) {\n message = `${message}\\n\\n${z4.prettifyError(e as ZodError)}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n } else {\n const result = validate(\n inputForValidation,\n this.schema as ValidationSchema\n );\n if (!result.valid) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${result.errors\n .map((e) => `${e.keywordLocation}: ${e.error}`)\n .join(\"\\n\")}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n // Assign the validated input to parsed\n // We cast here because validate() doesn't narrow the type sufficiently for TS, but we know it's valid.\n parsed = inputForValidation as SchemaOutputT;\n }\n\n const config = parseCallbackConfigArg(configArg);\n const callbackManager_ = CallbackManager.configure(\n config.callbacks,\n this.callbacks,\n config.tags || tags,\n this.tags,\n config.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n\n let toolCallId: string | undefined;\n // Extract toolCallId ONLY if the original arg was a ToolCall\n if (_isToolCall(arg)) {\n toolCallId = arg.id;\n }\n // Or if it was provided in the config's toolCall property\n if (!toolCallId && _configHasToolCallId(config)) {\n toolCallId = config.toolCall.id;\n }\n\n const runManager = await callbackManager_?.handleToolStart(\n this.toJSON(),\n // Log the original raw input arg\n typeof arg === \"string\" ? arg : JSON.stringify(arg),\n config.runId,\n undefined,\n undefined,\n undefined,\n config.runName,\n toolCallId\n );\n delete config.runId;\n\n let result;\n try {\n const raw = await this._call(parsed, runManager, config);\n result = isAsyncGenerator(raw)\n ? await consumeAsyncGenerator(raw, async (chunk) => {\n try {\n await runManager?.handleToolEvent(chunk);\n } catch (streamError) {\n await runManager?.handleToolError(streamError);\n }\n })\n : raw;\n } catch (e) {\n await runManager?.handleToolError(e);\n throw e;\n }\n\n let content;\n let artifact;\n if (this.responseFormat === \"content_and_artifact\") {\n if (Array.isArray(result) && result.length === 2) {\n [content, artifact] = result;\n } else {\n throw new Error(\n `Tool response format is \"content_and_artifact\" but the output was not a two-tuple.\\nResult: ${JSON.stringify(\n result\n )}`\n );\n }\n } else {\n content = result;\n }\n\n const formattedOutput = _formatToolOutput<ToolOutputT>({\n content,\n artifact,\n toolCallId,\n name: this.name,\n metadata: this.metadata,\n });\n await runManager?.handleToolEnd(formattedOutput);\n return formattedOutput as ToolReturnType<TArg, TConfig, ToolOutputT>;\n }\n}\n\n/**\n * Base class for Tools that accept input as a string.\n */\nexport abstract class Tool<\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n>\n extends StructuredTool<\n StringInputToolSchema,\n ToolInputSchemaOutputType<StringInputToolSchema>,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT,\n ToolEventT\n >\n implements\n ToolInterface<\n StringInputToolSchema,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n{\n schema = z\n .object({ input: z.string().optional() })\n .transform((obj) => obj.input);\n\n constructor(fields?: ToolParams) {\n super(fields);\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument and callbacks. It handles\n * string inputs specifically.\n * @param arg The input argument for the tool, which can be a string, undefined, or an input of the tool's schema.\n * @param callbacks Optional callbacks for the tool.\n * @returns A Promise that resolves with a string.\n */\n // Match the base class signature including the generics and conditional return type\n call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n callbacks?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n // Prepare the input for the base class call method.\n // If arg is string or undefined, wrap it; otherwise, pass ToolCall or { input: ... } directly.\n const structuredArg =\n typeof arg === \"string\" || arg == null ? { input: arg } : arg;\n\n // Ensure TConfig is passed to super.call\n return super.call(structuredArg, callbacks);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and description.\n */\nexport class DynamicTool<\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n> extends Tool<ToolOutputT, ToolEventT> {\n static lc_name() {\n return \"DynamicTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicToolInput<ToolOutputT, ToolEventT>[\"func\"];\n\n constructor(fields: DynamicToolInput<ToolOutputT, ToolEventT>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n async call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n // Call the Tool class's call method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig);\n }\n\n /** @ignore */\n _call(\n input: string, // DynamicTool's _call specifically expects a string after schema transformation\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT> {\n return this.func(input, runManager, parentConfig);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and\n * description, designed to work with structured data. It extends the\n * StructuredTool class and overrides the _call method to execute the\n * provided function when the tool is called.\n *\n * Schema can be passed as Zod or JSON schema. The tool will not validate\n * input if JSON schema is passed.\n *\n * @template SchemaT The input schema type for the tool (Zod schema or JSON schema). Defaults to `ToolInputSchemaBase`.\n * @template SchemaOutputT The output type derived from the schema after parsing/validation. Defaults to `ToolInputSchemaOutputType<SchemaT>`.\n * @template SchemaInputT The input type derived from the schema before parsing. Defaults to `ToolInputSchemaInputType<SchemaT>`.\n * @template ToolOutputT The return type of the tool's function. Defaults to `ToolOutputType`.\n * @template NameT The literal type of the tool name (for discriminated union support). Defaults to `string`.\n */\nexport class DynamicStructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n NameT extends string = string,\n> extends StructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT\n> {\n static lc_name() {\n return \"DynamicStructuredTool\";\n }\n\n declare name: NameT;\n\n description: string;\n\n func: DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n >[\"func\"];\n\n schema: SchemaT;\n\n constructor(\n fields: DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n > & {\n name: NameT;\n }\n ) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n this.schema = fields.schema;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n // Match the base class signature\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined,\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n\n // Call the base class method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig, tags);\n }\n\n protected _call(\n arg: Parameters<\n DynamicStructuredToolInput<\n SchemaT,\n SchemaOutputT,\n ToolOutputT,\n ToolEventT\n >[\"func\"]\n >[0],\n runManager?: CallbackManagerForToolRun,\n parentConfig?: RunnableConfig\n ): Promise<ToolOutputT> | AsyncGenerator<ToolEventT, ToolOutputT> {\n return this.func(arg, runManager, parentConfig);\n }\n}\n\n/**\n * Abstract base class for toolkits in LangChain. Toolkits are collections\n * of tools that agents can use. Subclasses must implement the `tools`\n * property to provide the specific tools for the toolkit.\n */\nexport abstract class BaseToolkit {\n abstract tools: StructuredToolInterface[];\n\n getTools(): StructuredToolInterface[] {\n return this.tools;\n }\n}\n\n/**\n * Parameters for the tool function.\n * Schema can be provided as Zod or JSON schema.\n * Both schema types will be validated.\n * @template {ToolInputSchemaBase} RunInput The input schema for the tool.\n * @template {string} NameT The literal name type for discriminated union support.\n */\nexport interface ToolWrapperParams<\n RunInput = ToolInputSchemaBase | undefined,\n NameT extends string = string,\n> extends ToolParams {\n /**\n * The name of the tool. If using with an LLM, this\n * will be passed as the tool name.\n */\n name: NameT;\n /**\n * The description of the tool.\n * @default `${fields.name} tool`\n */\n description?: string;\n /**\n * The input schema for the tool. If using an LLM, this\n * will be passed as the tool schema to generate arguments\n * for.\n */\n schema?: RunInput;\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat;\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect?: boolean;\n}\n\n/**\n * Creates a new StructuredTool instance with the provided function, name, description, and schema.\n *\n * Schema can be provided as Zod or JSON schema, and both will be validated.\n *\n * @function\n * @template {ToolInputSchemaBase} SchemaT The input schema for the tool.\n * @template {ToolReturnType} ToolOutputT The output type of the tool.\n *\n * @param {RunnableFunc<z.output<SchemaT>, ToolOutputT>} func - The function to invoke when the tool is called.\n * @param {ToolWrapperParams<SchemaT>} fields - An object containing the following properties:\n * @param {string} fields.name The name of the tool.\n * @param {string | undefined} fields.description The description of the tool. Defaults to either the description on the Zod schema, or `${fields.name} tool`.\n * @param {z.AnyZodObject | z.ZodString | undefined} fields.schema The Zod schema defining the input for the tool. If undefined, it will default to a Zod string schema.\n *\n * @returns {DynamicStructuredTool<SchemaT>} A new StructuredTool instance.\n */\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n NameT extends string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n > = RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n >,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n FuncT extends RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig> =\n RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n>(\n func: FuncT,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n InferToolOutputFromFunc<FuncT>,\n InferToolEventFromFunc<FuncT>,\n NameT\n >\n | DynamicTool<InferToolOutputFromFunc<FuncT>, InferToolEventFromFunc<FuncT>>;\n\n// Overloads with ToolRuntime as CallOptions\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n NameT extends string,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n NameT extends string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n): DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventType,\n NameT\n >\n | DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends InteropZodObject | InteropZodType<string> | JSONSchema =\n InteropZodObject,\n NameT extends string = string,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n ToolEventT = ToolEventType,\n TState = unknown,\n TContext = unknown,\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT, NameT>\n):\n | DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >\n | DynamicTool<ToolOutputT, ToolEventT> {\n const isSimpleStringSchema = isSimpleStringZodSchema(fields.schema);\n const isStringJSONSchema = validatesOnlyStrings(fields.schema);\n\n // If the schema is not provided, or it's a simple string schema, create a DynamicTool\n if (!fields.schema || isSimpleStringSchema || isStringJSONSchema) {\n return new DynamicTool<ToolOutputT, ToolEventT>({\n ...fields,\n description:\n fields.description ??\n (fields.schema as { description?: string } | undefined)?.description ??\n `${fields.name} tool`,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // oxlint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(func(input as any, childConfig as any));\n } catch (e) {\n reject(e);\n }\n }\n );\n });\n },\n });\n }\n\n const schema = fields.schema as InteropZodObject | JSONSchema;\n\n const description =\n fields.description ??\n (fields.schema as { description?: string }).description ??\n `${fields.name} tool`;\n\n return new DynamicStructuredTool<\n typeof schema,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >({\n ...fields,\n description,\n schema,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n let listener: (() => void) | undefined;\n const cleanup = () => {\n if (config?.signal && listener) {\n config.signal.removeEventListener(\"abort\", listener);\n }\n };\n\n if (config?.signal) {\n listener = () => {\n cleanup();\n reject(getAbortSignalError(config.signal));\n };\n config.signal.addEventListener(\"abort\", listener, { once: true });\n }\n\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // oxlint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await func(input as any, childConfig as any);\n if (isAsyncGenerator(result)) {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(result as any);\n return;\n }\n\n /**\n * If the signal is aborted, we don't want to resolve the promise\n * as the promise is already rejected.\n */\n if (config?.signal?.aborted) {\n cleanup();\n return;\n }\n\n cleanup();\n resolve(result);\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n );\n });\n },\n }) as DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT,\n ToolEventT,\n NameT\n >;\n}\n\nfunction _isMessageContentBlockShaped(item: unknown) {\n return typeof item === \"object\" && item !== null && \"type\" in item;\n}\n\nfunction _formatToolOutput<TOutput extends ToolOutputType>(params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}): ToolMessage | TOutput {\n const { content, artifact, toolCallId, metadata } = params;\n if (toolCallId && !isDirectToolOutput(content)) {\n if (\n typeof content === \"string\" ||\n (Array.isArray(content) && content.every(_isMessageContentBlockShaped))\n ) {\n return new ToolMessage({\n status: \"success\",\n content,\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n } else {\n return new ToolMessage({\n status: \"success\",\n content: _stringify(content),\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n }\n } else {\n return content;\n }\n}\n\nfunction _stringify(content: unknown): string {\n try {\n return JSON.stringify(content) ?? \"\";\n } catch (_noOp) {\n return `${content}`;\n }\n}\n\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool =\n | StructuredToolInterface\n | DynamicTool\n | RunnableToolLike;\n"],"mappings":"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"}