@langchain/core 1.2.4 → 1.2.6

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 (1262) 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 +8 -0
  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 +8 -0
  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 +9 -16
  127. package/dist/language_models/base.d.cts.map +1 -1
  128. package/dist/language_models/base.d.ts +9 -16
  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 +6 -8
  135. package/dist/language_models/chat_models.d.cts.map +1 -1
  136. package/dist/language_models/chat_models.d.ts +6 -8
  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 +6 -0
  213. package/dist/messages/ai.cjs.map +1 -1
  214. package/dist/messages/ai.d.cts +3 -2
  215. package/dist/messages/ai.d.cts.map +1 -1
  216. package/dist/messages/ai.d.ts +3 -2
  217. package/dist/messages/ai.d.ts.map +1 -1
  218. package/dist/messages/ai.js +6 -0
  219. package/dist/messages/ai.js.map +1 -1
  220. package/dist/messages/base.cjs +6 -0
  221. package/dist/messages/base.cjs.map +1 -1
  222. package/dist/messages/base.d.cts +9 -10
  223. package/dist/messages/base.d.cts.map +1 -1
  224. package/dist/messages/base.d.ts +9 -10
  225. package/dist/messages/base.d.ts.map +1 -1
  226. package/dist/messages/base.js +6 -0
  227. package/dist/messages/base.js.map +1 -1
  228. package/dist/messages/block_translators/anthropic.cjs +2 -0
  229. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  230. package/dist/messages/block_translators/anthropic.js +1 -1
  231. package/dist/messages/block_translators/anthropic.js.map +1 -1
  232. package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
  233. package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
  234. package/dist/messages/block_translators/data.cjs +1 -0
  235. package/dist/messages/block_translators/data.cjs.map +1 -1
  236. package/dist/messages/block_translators/data.js +1 -1
  237. package/dist/messages/block_translators/data.js.map +1 -1
  238. package/dist/messages/block_translators/deepseek.cjs +1 -0
  239. package/dist/messages/block_translators/deepseek.cjs.map +1 -1
  240. package/dist/messages/block_translators/deepseek.js +1 -1
  241. package/dist/messages/block_translators/deepseek.js.map +1 -1
  242. package/dist/messages/block_translators/google.cjs.map +1 -1
  243. package/dist/messages/block_translators/google.js.map +1 -1
  244. package/dist/messages/block_translators/google_genai.cjs.map +1 -1
  245. package/dist/messages/block_translators/google_genai.js.map +1 -1
  246. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  247. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  248. package/dist/messages/block_translators/groq.cjs +1 -0
  249. package/dist/messages/block_translators/groq.cjs.map +1 -1
  250. package/dist/messages/block_translators/groq.js +1 -1
  251. package/dist/messages/block_translators/groq.js.map +1 -1
  252. package/dist/messages/block_translators/index.cjs +1 -1
  253. package/dist/messages/block_translators/index.cjs.map +1 -1
  254. package/dist/messages/block_translators/index.js +1 -1
  255. package/dist/messages/block_translators/index.js.map +1 -1
  256. package/dist/messages/block_translators/ollama.cjs +1 -0
  257. package/dist/messages/block_translators/ollama.cjs.map +1 -1
  258. package/dist/messages/block_translators/ollama.js +1 -1
  259. package/dist/messages/block_translators/ollama.js.map +1 -1
  260. package/dist/messages/block_translators/openai.cjs +4 -0
  261. package/dist/messages/block_translators/openai.cjs.map +1 -1
  262. package/dist/messages/block_translators/openai.js +1 -1
  263. package/dist/messages/block_translators/openai.js.map +1 -1
  264. package/dist/messages/block_translators/openrouter.cjs +1 -0
  265. package/dist/messages/block_translators/openrouter.cjs.map +1 -1
  266. package/dist/messages/block_translators/openrouter.js +1 -1
  267. package/dist/messages/block_translators/openrouter.js.map +1 -1
  268. package/dist/messages/block_translators/utils.cjs.map +1 -1
  269. package/dist/messages/block_translators/utils.js.map +1 -1
  270. package/dist/messages/block_translators/xai.cjs +1 -0
  271. package/dist/messages/block_translators/xai.cjs.map +1 -1
  272. package/dist/messages/block_translators/xai.js +1 -1
  273. package/dist/messages/block_translators/xai.js.map +1 -1
  274. package/dist/messages/chat.cjs +6 -0
  275. package/dist/messages/chat.cjs.map +1 -1
  276. package/dist/messages/chat.d.cts +3 -2
  277. package/dist/messages/chat.d.cts.map +1 -1
  278. package/dist/messages/chat.d.ts +3 -2
  279. package/dist/messages/chat.d.ts.map +1 -1
  280. package/dist/messages/chat.js +6 -0
  281. package/dist/messages/chat.js.map +1 -1
  282. package/dist/messages/content/base.d.cts.map +1 -1
  283. package/dist/messages/content/base.d.ts.map +1 -1
  284. package/dist/messages/content/data.cjs.map +1 -1
  285. package/dist/messages/content/data.d.cts +2 -9
  286. package/dist/messages/content/data.d.cts.map +1 -1
  287. package/dist/messages/content/data.d.ts +2 -9
  288. package/dist/messages/content/data.d.ts.map +1 -1
  289. package/dist/messages/content/data.js.map +1 -1
  290. package/dist/messages/content/index.cjs.map +1 -1
  291. package/dist/messages/content/index.d.cts +0 -1
  292. package/dist/messages/content/index.d.cts.map +1 -1
  293. package/dist/messages/content/index.d.ts +0 -1
  294. package/dist/messages/content/index.d.ts.map +1 -1
  295. package/dist/messages/content/index.js.map +1 -1
  296. package/dist/messages/content/multimodal.cjs.map +1 -1
  297. package/dist/messages/content/multimodal.d.cts +8 -5
  298. package/dist/messages/content/multimodal.d.cts.map +1 -1
  299. package/dist/messages/content/multimodal.d.ts +8 -5
  300. package/dist/messages/content/multimodal.d.ts.map +1 -1
  301. package/dist/messages/content/multimodal.js.map +1 -1
  302. package/dist/messages/content/tools.cjs.map +1 -1
  303. package/dist/messages/content/tools.d.cts +0 -1
  304. package/dist/messages/content/tools.d.cts.map +1 -1
  305. package/dist/messages/content/tools.d.ts +0 -1
  306. package/dist/messages/content/tools.d.ts.map +1 -1
  307. package/dist/messages/content/tools.js.map +1 -1
  308. package/dist/messages/format.cjs.map +1 -1
  309. package/dist/messages/format.d.cts.map +1 -1
  310. package/dist/messages/format.d.ts.map +1 -1
  311. package/dist/messages/format.js.map +1 -1
  312. package/dist/messages/function.cjs +12 -0
  313. package/dist/messages/function.cjs.map +1 -1
  314. package/dist/messages/function.d.cts +5 -2
  315. package/dist/messages/function.d.cts.map +1 -1
  316. package/dist/messages/function.d.ts +5 -2
  317. package/dist/messages/function.d.ts.map +1 -1
  318. package/dist/messages/function.js +12 -0
  319. package/dist/messages/function.js.map +1 -1
  320. package/dist/messages/human.cjs +6 -0
  321. package/dist/messages/human.cjs.map +1 -1
  322. package/dist/messages/human.d.cts +3 -2
  323. package/dist/messages/human.d.cts.map +1 -1
  324. package/dist/messages/human.d.ts +3 -2
  325. package/dist/messages/human.d.ts.map +1 -1
  326. package/dist/messages/human.js +6 -0
  327. package/dist/messages/human.js.map +1 -1
  328. package/dist/messages/message.cjs.map +1 -1
  329. package/dist/messages/message.d.cts +31 -22
  330. package/dist/messages/message.d.cts.map +1 -1
  331. package/dist/messages/message.d.ts +31 -22
  332. package/dist/messages/message.d.ts.map +1 -1
  333. package/dist/messages/message.js.map +1 -1
  334. package/dist/messages/metadata.cjs.map +1 -1
  335. package/dist/messages/metadata.d.cts +0 -1
  336. package/dist/messages/metadata.d.cts.map +1 -1
  337. package/dist/messages/metadata.d.ts +0 -1
  338. package/dist/messages/metadata.d.ts.map +1 -1
  339. package/dist/messages/metadata.js.map +1 -1
  340. package/dist/messages/modifier.cjs +3 -0
  341. package/dist/messages/modifier.cjs.map +1 -1
  342. package/dist/messages/modifier.d.cts +1 -1
  343. package/dist/messages/modifier.d.cts.map +1 -1
  344. package/dist/messages/modifier.d.ts +1 -1
  345. package/dist/messages/modifier.d.ts.map +1 -1
  346. package/dist/messages/modifier.js +3 -0
  347. package/dist/messages/modifier.js.map +1 -1
  348. package/dist/messages/system.cjs +6 -0
  349. package/dist/messages/system.cjs.map +1 -1
  350. package/dist/messages/system.d.cts +3 -2
  351. package/dist/messages/system.d.cts.map +1 -1
  352. package/dist/messages/system.d.ts +3 -2
  353. package/dist/messages/system.d.ts.map +1 -1
  354. package/dist/messages/system.js +6 -0
  355. package/dist/messages/system.js.map +1 -1
  356. package/dist/messages/tool.cjs +9 -0
  357. package/dist/messages/tool.cjs.map +1 -1
  358. package/dist/messages/tool.d.cts +7 -5
  359. package/dist/messages/tool.d.cts.map +1 -1
  360. package/dist/messages/tool.d.ts +7 -5
  361. package/dist/messages/tool.d.ts.map +1 -1
  362. package/dist/messages/tool.js +9 -0
  363. package/dist/messages/tool.js.map +1 -1
  364. package/dist/messages/transformers.cjs.map +1 -1
  365. package/dist/messages/transformers.d.cts +0 -1
  366. package/dist/messages/transformers.d.cts.map +1 -1
  367. package/dist/messages/transformers.d.ts +0 -1
  368. package/dist/messages/transformers.d.ts.map +1 -1
  369. package/dist/messages/transformers.js.map +1 -1
  370. package/dist/messages/utils.cjs.map +1 -1
  371. package/dist/messages/utils.d.cts +4 -5
  372. package/dist/messages/utils.d.cts.map +1 -1
  373. package/dist/messages/utils.d.ts +4 -5
  374. package/dist/messages/utils.d.ts.map +1 -1
  375. package/dist/messages/utils.js.map +1 -1
  376. package/dist/output_parsers/base.cjs.map +1 -1
  377. package/dist/output_parsers/base.d.cts +3 -0
  378. package/dist/output_parsers/base.d.cts.map +1 -1
  379. package/dist/output_parsers/base.d.ts +3 -0
  380. package/dist/output_parsers/base.d.ts.map +1 -1
  381. package/dist/output_parsers/base.js.map +1 -1
  382. package/dist/output_parsers/bytes.cjs.map +1 -1
  383. package/dist/output_parsers/bytes.d.cts +0 -1
  384. package/dist/output_parsers/bytes.d.cts.map +1 -1
  385. package/dist/output_parsers/bytes.d.ts +0 -1
  386. package/dist/output_parsers/bytes.d.ts.map +1 -1
  387. package/dist/output_parsers/bytes.js.map +1 -1
  388. package/dist/output_parsers/json.cjs +2 -0
  389. package/dist/output_parsers/json.cjs.map +1 -1
  390. package/dist/output_parsers/json.d.cts +2 -2
  391. package/dist/output_parsers/json.d.cts.map +1 -1
  392. package/dist/output_parsers/json.d.ts +2 -2
  393. package/dist/output_parsers/json.d.ts.map +1 -1
  394. package/dist/output_parsers/json.js +2 -2
  395. package/dist/output_parsers/json.js.map +1 -1
  396. package/dist/output_parsers/list.cjs.map +1 -1
  397. package/dist/output_parsers/list.d.cts +2 -5
  398. package/dist/output_parsers/list.d.cts.map +1 -1
  399. package/dist/output_parsers/list.d.ts +2 -5
  400. package/dist/output_parsers/list.d.ts.map +1 -1
  401. package/dist/output_parsers/list.js.map +1 -1
  402. package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
  403. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
  404. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts.map +1 -1
  405. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  406. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts.map +1 -1
  407. package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
  408. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  409. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +2 -2
  410. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts.map +1 -1
  411. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +2 -2
  412. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts.map +1 -1
  413. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  414. package/dist/output_parsers/standard_schema.cjs.map +1 -1
  415. package/dist/output_parsers/standard_schema.d.cts +1 -1
  416. package/dist/output_parsers/standard_schema.d.cts.map +1 -1
  417. package/dist/output_parsers/standard_schema.d.ts +1 -1
  418. package/dist/output_parsers/standard_schema.d.ts.map +1 -1
  419. package/dist/output_parsers/standard_schema.js.map +1 -1
  420. package/dist/output_parsers/string.cjs.map +1 -1
  421. package/dist/output_parsers/string.d.cts +1 -1
  422. package/dist/output_parsers/string.d.cts.map +1 -1
  423. package/dist/output_parsers/string.d.ts +1 -1
  424. package/dist/output_parsers/string.d.ts.map +1 -1
  425. package/dist/output_parsers/string.js.map +1 -1
  426. package/dist/output_parsers/structured.cjs +1 -1
  427. package/dist/output_parsers/structured.cjs.map +1 -1
  428. package/dist/output_parsers/structured.d.cts +2 -4
  429. package/dist/output_parsers/structured.d.cts.map +1 -1
  430. package/dist/output_parsers/structured.d.ts +2 -4
  431. package/dist/output_parsers/structured.d.ts.map +1 -1
  432. package/dist/output_parsers/structured.js +1 -0
  433. package/dist/output_parsers/structured.js.map +1 -1
  434. package/dist/output_parsers/transform.cjs +0 -1
  435. package/dist/output_parsers/transform.cjs.map +1 -1
  436. package/dist/output_parsers/transform.d.cts +0 -1
  437. package/dist/output_parsers/transform.d.cts.map +1 -1
  438. package/dist/output_parsers/transform.d.ts +0 -1
  439. package/dist/output_parsers/transform.d.ts.map +1 -1
  440. package/dist/output_parsers/transform.js.map +1 -1
  441. package/dist/output_parsers/xml.cjs.map +1 -1
  442. package/dist/output_parsers/xml.d.cts +0 -1
  443. package/dist/output_parsers/xml.d.cts.map +1 -1
  444. package/dist/output_parsers/xml.d.ts +0 -1
  445. package/dist/output_parsers/xml.d.ts.map +1 -1
  446. package/dist/output_parsers/xml.js.map +1 -1
  447. package/dist/outputs.cjs.map +1 -1
  448. package/dist/outputs.d.cts +0 -1
  449. package/dist/outputs.d.cts.map +1 -1
  450. package/dist/outputs.d.ts +0 -1
  451. package/dist/outputs.d.ts.map +1 -1
  452. package/dist/outputs.js.map +1 -1
  453. package/dist/prompt_values.cjs.map +1 -1
  454. package/dist/prompt_values.d.cts +3 -2
  455. package/dist/prompt_values.d.cts.map +1 -1
  456. package/dist/prompt_values.d.ts +3 -2
  457. package/dist/prompt_values.d.ts.map +1 -1
  458. package/dist/prompt_values.js.map +1 -1
  459. package/dist/prompts/base.cjs.map +1 -1
  460. package/dist/prompts/base.d.cts +1 -0
  461. package/dist/prompts/base.d.cts.map +1 -1
  462. package/dist/prompts/base.d.ts +1 -0
  463. package/dist/prompts/base.d.ts.map +1 -1
  464. package/dist/prompts/base.js.map +1 -1
  465. package/dist/prompts/chat.cjs +3 -2
  466. package/dist/prompts/chat.cjs.map +1 -1
  467. package/dist/prompts/chat.d.cts +3 -3
  468. package/dist/prompts/chat.d.cts.map +1 -1
  469. package/dist/prompts/chat.d.ts +3 -3
  470. package/dist/prompts/chat.d.ts.map +1 -1
  471. package/dist/prompts/chat.js +3 -2
  472. package/dist/prompts/chat.js.map +1 -1
  473. package/dist/prompts/dict.cjs.map +1 -1
  474. package/dist/prompts/dict.d.cts +0 -1
  475. package/dist/prompts/dict.d.cts.map +1 -1
  476. package/dist/prompts/dict.d.ts +0 -1
  477. package/dist/prompts/dict.d.ts.map +1 -1
  478. package/dist/prompts/dict.js.map +1 -1
  479. package/dist/prompts/few_shot.cjs +6 -4
  480. package/dist/prompts/few_shot.cjs.map +1 -1
  481. package/dist/prompts/few_shot.d.cts +1 -1
  482. package/dist/prompts/few_shot.d.cts.map +1 -1
  483. package/dist/prompts/few_shot.d.ts +1 -1
  484. package/dist/prompts/few_shot.d.ts.map +1 -1
  485. package/dist/prompts/few_shot.js +6 -4
  486. package/dist/prompts/few_shot.js.map +1 -1
  487. package/dist/prompts/image.cjs +3 -2
  488. package/dist/prompts/image.cjs.map +1 -1
  489. package/dist/prompts/image.d.cts +1 -1
  490. package/dist/prompts/image.d.cts.map +1 -1
  491. package/dist/prompts/image.d.ts +1 -1
  492. package/dist/prompts/image.d.ts.map +1 -1
  493. package/dist/prompts/image.js +3 -2
  494. package/dist/prompts/image.js.map +1 -1
  495. package/dist/prompts/pipeline.cjs.map +1 -1
  496. package/dist/prompts/pipeline.d.cts +0 -1
  497. package/dist/prompts/pipeline.d.cts.map +1 -1
  498. package/dist/prompts/pipeline.d.ts +0 -1
  499. package/dist/prompts/pipeline.d.ts.map +1 -1
  500. package/dist/prompts/pipeline.js.map +1 -1
  501. package/dist/prompts/prompt.cjs +9 -7
  502. package/dist/prompts/prompt.cjs.map +1 -1
  503. package/dist/prompts/prompt.d.cts +2 -2
  504. package/dist/prompts/prompt.d.cts.map +1 -1
  505. package/dist/prompts/prompt.d.ts +2 -2
  506. package/dist/prompts/prompt.d.ts.map +1 -1
  507. package/dist/prompts/prompt.js +9 -7
  508. package/dist/prompts/prompt.js.map +1 -1
  509. package/dist/prompts/serde.d.cts +1 -1
  510. package/dist/prompts/serde.d.cts.map +1 -1
  511. package/dist/prompts/serde.d.ts +1 -1
  512. package/dist/prompts/serde.d.ts.map +1 -1
  513. package/dist/prompts/string.cjs.map +1 -1
  514. package/dist/prompts/string.d.cts +0 -1
  515. package/dist/prompts/string.d.cts.map +1 -1
  516. package/dist/prompts/string.d.ts +0 -1
  517. package/dist/prompts/string.d.ts.map +1 -1
  518. package/dist/prompts/string.js.map +1 -1
  519. package/dist/prompts/structured.cjs.map +1 -1
  520. package/dist/prompts/structured.d.cts +1 -1
  521. package/dist/prompts/structured.d.cts.map +1 -1
  522. package/dist/prompts/structured.d.ts +1 -1
  523. package/dist/prompts/structured.d.ts.map +1 -1
  524. package/dist/prompts/structured.js.map +1 -1
  525. package/dist/prompts/template.cjs +9 -9
  526. package/dist/prompts/template.cjs.map +1 -1
  527. package/dist/prompts/template.d.cts +1 -0
  528. package/dist/prompts/template.d.cts.map +1 -1
  529. package/dist/prompts/template.d.ts +1 -0
  530. package/dist/prompts/template.d.ts.map +1 -1
  531. package/dist/prompts/template.js +9 -9
  532. package/dist/prompts/template.js.map +1 -1
  533. package/dist/retrievers/document_compressors/index.cjs.map +1 -1
  534. package/dist/retrievers/document_compressors/index.d.cts +0 -1
  535. package/dist/retrievers/document_compressors/index.d.cts.map +1 -1
  536. package/dist/retrievers/document_compressors/index.d.ts +0 -1
  537. package/dist/retrievers/document_compressors/index.d.ts.map +1 -1
  538. package/dist/retrievers/document_compressors/index.js.map +1 -1
  539. package/dist/retrievers/index.cjs.map +1 -1
  540. package/dist/retrievers/index.d.cts +1 -1
  541. package/dist/retrievers/index.d.cts.map +1 -1
  542. package/dist/retrievers/index.d.ts +1 -1
  543. package/dist/retrievers/index.d.ts.map +1 -1
  544. package/dist/retrievers/index.js.map +1 -1
  545. package/dist/runnables/base.cjs +2 -1
  546. package/dist/runnables/base.cjs.map +1 -1
  547. package/dist/runnables/base.d.cts +7 -19
  548. package/dist/runnables/base.d.cts.map +1 -1
  549. package/dist/runnables/base.d.ts +7 -19
  550. package/dist/runnables/base.d.ts.map +1 -1
  551. package/dist/runnables/base.js +1 -1
  552. package/dist/runnables/base.js.map +1 -1
  553. package/dist/runnables/branch.cjs.map +1 -1
  554. package/dist/runnables/branch.d.cts +1 -1
  555. package/dist/runnables/branch.d.cts.map +1 -1
  556. package/dist/runnables/branch.d.ts +1 -1
  557. package/dist/runnables/branch.d.ts.map +1 -1
  558. package/dist/runnables/branch.js.map +1 -1
  559. package/dist/runnables/config.cjs +3 -2
  560. package/dist/runnables/config.cjs.map +1 -1
  561. package/dist/runnables/config.d.cts +2 -10
  562. package/dist/runnables/config.d.cts.map +1 -1
  563. package/dist/runnables/config.d.ts +2 -10
  564. package/dist/runnables/config.d.ts.map +1 -1
  565. package/dist/runnables/config.js +3 -3
  566. package/dist/runnables/config.js.map +1 -1
  567. package/dist/runnables/graph.cjs.map +1 -1
  568. package/dist/runnables/graph.d.cts +1 -2
  569. package/dist/runnables/graph.d.cts.map +1 -1
  570. package/dist/runnables/graph.d.ts +1 -2
  571. package/dist/runnables/graph.d.ts.map +1 -1
  572. package/dist/runnables/graph.js.map +1 -1
  573. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  574. package/dist/runnables/graph_mermaid.js.map +1 -1
  575. package/dist/runnables/history.cjs.map +1 -1
  576. package/dist/runnables/history.d.cts +2 -1
  577. package/dist/runnables/history.d.cts.map +1 -1
  578. package/dist/runnables/history.d.ts +2 -1
  579. package/dist/runnables/history.d.ts.map +1 -1
  580. package/dist/runnables/history.js.map +1 -1
  581. package/dist/runnables/iter.cjs.map +1 -1
  582. package/dist/runnables/iter.js.map +1 -1
  583. package/dist/runnables/passthrough.cjs.map +1 -1
  584. package/dist/runnables/passthrough.d.cts +1 -1
  585. package/dist/runnables/passthrough.d.cts.map +1 -1
  586. package/dist/runnables/passthrough.d.ts +1 -1
  587. package/dist/runnables/passthrough.d.ts.map +1 -1
  588. package/dist/runnables/passthrough.js.map +1 -1
  589. package/dist/runnables/router.cjs.map +1 -1
  590. package/dist/runnables/router.d.cts +1 -1
  591. package/dist/runnables/router.d.cts.map +1 -1
  592. package/dist/runnables/router.d.ts +1 -1
  593. package/dist/runnables/router.d.ts.map +1 -1
  594. package/dist/runnables/router.js.map +1 -1
  595. package/dist/runnables/types.d.cts +2 -2
  596. package/dist/runnables/types.d.cts.map +1 -1
  597. package/dist/runnables/types.d.ts +2 -2
  598. package/dist/runnables/types.d.ts.map +1 -1
  599. package/dist/runnables/utils.cjs.map +1 -1
  600. package/dist/runnables/utils.js.map +1 -1
  601. package/dist/runnables/wrappers.cjs.map +1 -1
  602. package/dist/runnables/wrappers.js.map +1 -1
  603. package/dist/singletons/async_local_storage/context.cjs +0 -1
  604. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  605. package/dist/singletons/async_local_storage/context.d.cts +0 -1
  606. package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
  607. package/dist/singletons/async_local_storage/context.d.ts +0 -1
  608. package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
  609. package/dist/singletons/async_local_storage/context.js.map +1 -1
  610. package/dist/singletons/async_local_storage/globals.cjs +1 -0
  611. package/dist/singletons/async_local_storage/globals.cjs.map +1 -1
  612. package/dist/singletons/async_local_storage/globals.d.cts.map +1 -1
  613. package/dist/singletons/async_local_storage/globals.d.ts.map +1 -1
  614. package/dist/singletons/async_local_storage/globals.js +1 -1
  615. package/dist/singletons/async_local_storage/globals.js.map +1 -1
  616. package/dist/singletons/async_local_storage/index.cjs +0 -1
  617. package/dist/singletons/async_local_storage/index.cjs.map +1 -1
  618. package/dist/singletons/async_local_storage/index.d.cts +1 -2
  619. package/dist/singletons/async_local_storage/index.d.cts.map +1 -1
  620. package/dist/singletons/async_local_storage/index.d.ts +1 -2
  621. package/dist/singletons/async_local_storage/index.d.ts.map +1 -1
  622. package/dist/singletons/async_local_storage/index.js.map +1 -1
  623. package/dist/singletons/callbacks.cjs +1 -0
  624. package/dist/singletons/callbacks.cjs.map +1 -1
  625. package/dist/singletons/callbacks.d.cts +1 -0
  626. package/dist/singletons/callbacks.d.cts.map +1 -1
  627. package/dist/singletons/callbacks.d.ts +0 -1
  628. package/dist/singletons/callbacks.d.ts.map +1 -1
  629. package/dist/singletons/callbacks.js +1 -1
  630. package/dist/singletons/callbacks.js.map +1 -1
  631. package/dist/singletons/tracer.cjs +0 -1
  632. package/dist/singletons/tracer.cjs.map +1 -1
  633. package/dist/singletons/tracer.js.map +1 -1
  634. package/dist/stores.cjs.map +1 -1
  635. package/dist/stores.d.cts +0 -1
  636. package/dist/stores.d.cts.map +1 -1
  637. package/dist/stores.d.ts +0 -1
  638. package/dist/stores.d.ts.map +1 -1
  639. package/dist/stores.js.map +1 -1
  640. package/dist/structured_query/base.cjs.map +1 -1
  641. package/dist/structured_query/base.d.cts +0 -1
  642. package/dist/structured_query/base.d.cts.map +1 -1
  643. package/dist/structured_query/base.d.ts +0 -1
  644. package/dist/structured_query/base.d.ts.map +1 -1
  645. package/dist/structured_query/base.js.map +1 -1
  646. package/dist/structured_query/functional.cjs.map +1 -1
  647. package/dist/structured_query/functional.d.cts +0 -1
  648. package/dist/structured_query/functional.d.cts.map +1 -1
  649. package/dist/structured_query/functional.d.ts +0 -1
  650. package/dist/structured_query/functional.d.ts.map +1 -1
  651. package/dist/structured_query/functional.js.map +1 -1
  652. package/dist/structured_query/ir.cjs +7 -0
  653. package/dist/structured_query/ir.cjs.map +1 -1
  654. package/dist/structured_query/ir.d.cts +0 -1
  655. package/dist/structured_query/ir.d.cts.map +1 -1
  656. package/dist/structured_query/ir.d.ts +0 -1
  657. package/dist/structured_query/ir.d.ts.map +1 -1
  658. package/dist/structured_query/ir.js +7 -0
  659. package/dist/structured_query/ir.js.map +1 -1
  660. package/dist/structured_query/utils.cjs.map +1 -1
  661. package/dist/structured_query/utils.d.cts.map +1 -1
  662. package/dist/structured_query/utils.d.ts.map +1 -1
  663. package/dist/structured_query/utils.js.map +1 -1
  664. package/dist/testing/fake_model_builder.cjs.map +1 -1
  665. package/dist/testing/fake_model_builder.d.cts +1 -1
  666. package/dist/testing/fake_model_builder.d.cts.map +1 -1
  667. package/dist/testing/fake_model_builder.d.ts +1 -1
  668. package/dist/testing/fake_model_builder.d.ts.map +1 -1
  669. package/dist/testing/fake_model_builder.js.map +1 -1
  670. package/dist/testing/matchers.cjs.map +1 -1
  671. package/dist/testing/matchers.d.cts +0 -1
  672. package/dist/testing/matchers.d.cts.map +1 -1
  673. package/dist/testing/matchers.d.ts +0 -1
  674. package/dist/testing/matchers.d.ts.map +1 -1
  675. package/dist/testing/matchers.js.map +1 -1
  676. package/dist/tools/index.cjs.map +1 -1
  677. package/dist/tools/index.d.cts +8 -7
  678. package/dist/tools/index.d.cts.map +1 -1
  679. package/dist/tools/index.d.ts +8 -7
  680. package/dist/tools/index.d.ts.map +1 -1
  681. package/dist/tools/index.js.map +1 -1
  682. package/dist/tools/types.cjs.map +1 -1
  683. package/dist/tools/types.d.cts +4 -3
  684. package/dist/tools/types.d.cts.map +1 -1
  685. package/dist/tools/types.d.ts +4 -3
  686. package/dist/tools/types.d.ts.map +1 -1
  687. package/dist/tools/types.js.map +1 -1
  688. package/dist/tools/utils.cjs.map +1 -1
  689. package/dist/tools/utils.d.cts.map +1 -1
  690. package/dist/tools/utils.d.ts.map +1 -1
  691. package/dist/tools/utils.js.map +1 -1
  692. package/dist/tracers/base.cjs.map +1 -1
  693. package/dist/tracers/base.d.cts +18 -14
  694. package/dist/tracers/base.d.cts.map +1 -1
  695. package/dist/tracers/base.d.ts +18 -14
  696. package/dist/tracers/base.d.ts.map +1 -1
  697. package/dist/tracers/base.js.map +1 -1
  698. package/dist/tracers/console.cjs.map +1 -1
  699. package/dist/tracers/console.d.cts +0 -1
  700. package/dist/tracers/console.d.cts.map +1 -1
  701. package/dist/tracers/console.d.ts +0 -1
  702. package/dist/tracers/console.d.ts.map +1 -1
  703. package/dist/tracers/console.js.map +1 -1
  704. package/dist/tracers/event_stream.cjs.map +1 -1
  705. package/dist/tracers/event_stream.d.cts +5 -2
  706. package/dist/tracers/event_stream.d.cts.map +1 -1
  707. package/dist/tracers/event_stream.d.ts +5 -2
  708. package/dist/tracers/event_stream.d.ts.map +1 -1
  709. package/dist/tracers/event_stream.js.map +1 -1
  710. package/dist/tracers/log_stream.cjs.map +1 -1
  711. package/dist/tracers/log_stream.d.cts +30 -15
  712. package/dist/tracers/log_stream.d.cts.map +1 -1
  713. package/dist/tracers/log_stream.d.ts +30 -15
  714. package/dist/tracers/log_stream.d.ts.map +1 -1
  715. package/dist/tracers/log_stream.js.map +1 -1
  716. package/dist/tracers/root_listener.cjs.map +1 -1
  717. package/dist/tracers/root_listener.js.map +1 -1
  718. package/dist/tracers/run_collector.cjs.map +1 -1
  719. package/dist/tracers/run_collector.d.cts +1 -4
  720. package/dist/tracers/run_collector.d.cts.map +1 -1
  721. package/dist/tracers/run_collector.d.ts +1 -4
  722. package/dist/tracers/run_collector.d.ts.map +1 -1
  723. package/dist/tracers/run_collector.js.map +1 -1
  724. package/dist/tracers/tracer_langchain.cjs +4 -3
  725. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  726. package/dist/tracers/tracer_langchain.d.cts +1 -5
  727. package/dist/tracers/tracer_langchain.d.cts.map +1 -1
  728. package/dist/tracers/tracer_langchain.d.ts +1 -5
  729. package/dist/tracers/tracer_langchain.d.ts.map +1 -1
  730. package/dist/tracers/tracer_langchain.js +4 -3
  731. package/dist/tracers/tracer_langchain.js.map +1 -1
  732. package/dist/types/_internal.d.cts.map +1 -1
  733. package/dist/types/_internal.d.ts.map +1 -1
  734. package/dist/types/stream.d.cts +1 -1
  735. package/dist/types/stream.d.ts +1 -1
  736. package/dist/types/type-utils.d.cts +1 -1
  737. package/dist/types/type-utils.d.cts.map +1 -1
  738. package/dist/types/type-utils.d.ts +1 -1
  739. package/dist/types/type-utils.d.ts.map +1 -1
  740. package/dist/utils/async_caller.cjs.map +1 -1
  741. package/dist/utils/async_caller.d.cts.map +1 -1
  742. package/dist/utils/async_caller.d.ts.map +1 -1
  743. package/dist/utils/async_caller.js.map +1 -1
  744. package/dist/utils/callbacks.cjs.map +1 -1
  745. package/dist/utils/callbacks.js.map +1 -1
  746. package/dist/utils/chunk_array.cjs.map +1 -1
  747. package/dist/utils/chunk_array.d.cts.map +1 -1
  748. package/dist/utils/chunk_array.d.ts.map +1 -1
  749. package/dist/utils/chunk_array.js.map +1 -1
  750. package/dist/utils/context.cjs.map +1 -1
  751. package/dist/utils/context.d.cts.map +1 -1
  752. package/dist/utils/context.d.ts.map +1 -1
  753. package/dist/utils/context.js.map +1 -1
  754. package/dist/utils/env.cjs.map +1 -1
  755. package/dist/utils/env.d.cts.map +1 -1
  756. package/dist/utils/env.d.ts.map +1 -1
  757. package/dist/utils/env.js.map +1 -1
  758. package/dist/utils/event_source_parse.cjs +2 -2
  759. package/dist/utils/event_source_parse.cjs.map +1 -1
  760. package/dist/utils/event_source_parse.d.cts +0 -1
  761. package/dist/utils/event_source_parse.d.cts.map +1 -1
  762. package/dist/utils/event_source_parse.d.ts +0 -1
  763. package/dist/utils/event_source_parse.d.ts.map +1 -1
  764. package/dist/utils/event_source_parse.js +2 -2
  765. package/dist/utils/event_source_parse.js.map +1 -1
  766. package/dist/utils/fast-json-patch/index.cjs +9 -1
  767. package/dist/utils/fast-json-patch/index.cjs.map +1 -1
  768. package/dist/utils/fast-json-patch/index.js +3 -3
  769. package/dist/utils/fast-json-patch/index.js.map +1 -1
  770. package/dist/utils/fast-json-patch/src/core.cjs +7 -0
  771. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  772. package/dist/utils/fast-json-patch/src/core.d.cts +1 -1
  773. package/dist/utils/fast-json-patch/src/core.d.cts.map +1 -1
  774. package/dist/utils/fast-json-patch/src/core.d.ts +1 -1
  775. package/dist/utils/fast-json-patch/src/core.d.ts.map +1 -1
  776. package/dist/utils/fast-json-patch/src/core.js +6 -1
  777. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  778. package/dist/utils/fast-json-patch/src/duplex.cjs.map +1 -1
  779. package/dist/utils/fast-json-patch/src/duplex.d.cts +0 -1
  780. package/dist/utils/fast-json-patch/src/duplex.d.cts.map +1 -1
  781. package/dist/utils/fast-json-patch/src/duplex.d.ts +0 -1
  782. package/dist/utils/fast-json-patch/src/duplex.d.ts.map +1 -1
  783. package/dist/utils/fast-json-patch/src/duplex.js.map +1 -1
  784. package/dist/utils/fast-json-patch/src/helpers.cjs +4 -0
  785. package/dist/utils/fast-json-patch/src/helpers.cjs.map +1 -1
  786. package/dist/utils/fast-json-patch/src/helpers.js +4 -0
  787. package/dist/utils/fast-json-patch/src/helpers.js.map +1 -1
  788. package/dist/utils/format.d.cts.map +1 -1
  789. package/dist/utils/format.d.ts.map +1 -1
  790. package/dist/utils/function_calling.cjs.map +1 -1
  791. package/dist/utils/function_calling.d.cts +0 -1
  792. package/dist/utils/function_calling.d.cts.map +1 -1
  793. package/dist/utils/function_calling.d.ts +0 -1
  794. package/dist/utils/function_calling.d.ts.map +1 -1
  795. package/dist/utils/function_calling.js.map +1 -1
  796. package/dist/utils/gateway.cjs +43 -0
  797. package/dist/utils/gateway.cjs.map +1 -0
  798. package/dist/utils/gateway.d.cts +13 -0
  799. package/dist/utils/gateway.d.cts.map +1 -0
  800. package/dist/utils/gateway.d.ts +13 -0
  801. package/dist/utils/gateway.d.ts.map +1 -0
  802. package/dist/utils/gateway.js +36 -0
  803. package/dist/utils/gateway.js.map +1 -0
  804. package/dist/utils/hash.d.cts +0 -1
  805. package/dist/utils/hash.d.cts.map +1 -1
  806. package/dist/utils/hash.d.ts +0 -1
  807. package/dist/utils/hash.d.ts.map +1 -1
  808. package/dist/utils/is-network-error/index.cjs +1 -1
  809. package/dist/utils/is-network-error/index.cjs.map +1 -1
  810. package/dist/utils/is-network-error/index.js +1 -1
  811. package/dist/utils/is-network-error/index.js.map +1 -1
  812. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  813. package/dist/utils/js-sha256/hash.d.cts.map +1 -1
  814. package/dist/utils/js-sha256/hash.d.ts.map +1 -1
  815. package/dist/utils/js-sha256/hash.js.map +1 -1
  816. package/dist/utils/json.cjs +1 -0
  817. package/dist/utils/json.cjs.map +1 -1
  818. package/dist/utils/json.d.cts.map +1 -1
  819. package/dist/utils/json.d.ts.map +1 -1
  820. package/dist/utils/json.js +1 -1
  821. package/dist/utils/json.js.map +1 -1
  822. package/dist/utils/json_schema.cjs.map +1 -1
  823. package/dist/utils/json_schema.d.cts +1 -1
  824. package/dist/utils/json_schema.d.cts.map +1 -1
  825. package/dist/utils/json_schema.d.ts +1 -1
  826. package/dist/utils/json_schema.d.ts.map +1 -1
  827. package/dist/utils/json_schema.js.map +1 -1
  828. package/dist/utils/math.cjs.map +1 -1
  829. package/dist/utils/math.d.cts.map +1 -1
  830. package/dist/utils/math.d.ts.map +1 -1
  831. package/dist/utils/math.js.map +1 -1
  832. package/dist/utils/ml-distance/distances.cjs.map +1 -1
  833. package/dist/utils/ml-distance/distances.js.map +1 -1
  834. package/dist/utils/ml-distance/similarities.cjs.map +1 -1
  835. package/dist/utils/ml-distance/similarities.d.cts.map +1 -1
  836. package/dist/utils/ml-distance/similarities.d.ts.map +1 -1
  837. package/dist/utils/ml-distance/similarities.js.map +1 -1
  838. package/dist/utils/ml-distance-euclidean/euclidean.cjs +1 -0
  839. package/dist/utils/ml-distance-euclidean/euclidean.cjs.map +1 -1
  840. package/dist/utils/ml-distance-euclidean/euclidean.js +1 -1
  841. package/dist/utils/ml-distance-euclidean/euclidean.js.map +1 -1
  842. package/dist/utils/namespace.cjs +4 -0
  843. package/dist/utils/namespace.cjs.map +1 -1
  844. package/dist/utils/namespace.d.cts.map +1 -1
  845. package/dist/utils/namespace.d.ts.map +1 -1
  846. package/dist/utils/namespace.js +4 -1
  847. package/dist/utils/namespace.js.map +1 -1
  848. package/dist/utils/p-retry/index.cjs +1 -0
  849. package/dist/utils/p-retry/index.cjs.map +1 -1
  850. package/dist/utils/p-retry/index.js +1 -1
  851. package/dist/utils/p-retry/index.js.map +1 -1
  852. package/dist/utils/sax-js/sax.cjs.map +1 -1
  853. package/dist/utils/sax-js/sax.js.map +1 -1
  854. package/dist/utils/signal.cjs.map +1 -1
  855. package/dist/utils/signal.d.cts.map +1 -1
  856. package/dist/utils/signal.d.ts.map +1 -1
  857. package/dist/utils/signal.js.map +1 -1
  858. package/dist/utils/ssrf.cjs.map +1 -1
  859. package/dist/utils/ssrf.d.cts.map +1 -1
  860. package/dist/utils/ssrf.d.ts.map +1 -1
  861. package/dist/utils/ssrf.js.map +1 -1
  862. package/dist/utils/standard_schema.cjs.map +1 -1
  863. package/dist/utils/standard_schema.d.cts +0 -1
  864. package/dist/utils/standard_schema.d.cts.map +1 -1
  865. package/dist/utils/standard_schema.d.ts +0 -1
  866. package/dist/utils/standard_schema.d.ts.map +1 -1
  867. package/dist/utils/standard_schema.js.map +1 -1
  868. package/dist/utils/stream.cjs.map +1 -1
  869. package/dist/utils/stream.d.cts +0 -1
  870. package/dist/utils/stream.d.cts.map +1 -1
  871. package/dist/utils/stream.d.ts +0 -1
  872. package/dist/utils/stream.d.ts.map +1 -1
  873. package/dist/utils/stream.js.map +1 -1
  874. package/dist/utils/testing/chat_models.cjs.map +1 -1
  875. package/dist/utils/testing/chat_models.d.cts +2 -9
  876. package/dist/utils/testing/chat_models.d.cts.map +1 -1
  877. package/dist/utils/testing/chat_models.d.ts +2 -9
  878. package/dist/utils/testing/chat_models.d.ts.map +1 -1
  879. package/dist/utils/testing/chat_models.js.map +1 -1
  880. package/dist/utils/testing/embeddings.cjs.map +1 -1
  881. package/dist/utils/testing/embeddings.d.cts +0 -1
  882. package/dist/utils/testing/embeddings.d.cts.map +1 -1
  883. package/dist/utils/testing/embeddings.d.ts +0 -1
  884. package/dist/utils/testing/embeddings.d.ts.map +1 -1
  885. package/dist/utils/testing/embeddings.js.map +1 -1
  886. package/dist/utils/testing/llms.cjs.map +1 -1
  887. package/dist/utils/testing/llms.d.cts +0 -1
  888. package/dist/utils/testing/llms.d.cts.map +1 -1
  889. package/dist/utils/testing/llms.d.ts +0 -1
  890. package/dist/utils/testing/llms.d.ts.map +1 -1
  891. package/dist/utils/testing/llms.js.map +1 -1
  892. package/dist/utils/testing/message_history.cjs.map +1 -1
  893. package/dist/utils/testing/message_history.d.cts +1 -1
  894. package/dist/utils/testing/message_history.d.cts.map +1 -1
  895. package/dist/utils/testing/message_history.d.ts +1 -1
  896. package/dist/utils/testing/message_history.d.ts.map +1 -1
  897. package/dist/utils/testing/message_history.js.map +1 -1
  898. package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -1
  899. package/dist/utils/testing/openai_stream_fixtures.d.cts +0 -1
  900. package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -1
  901. package/dist/utils/testing/openai_stream_fixtures.d.ts +0 -1
  902. package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -1
  903. package/dist/utils/testing/openai_stream_fixtures.js.map +1 -1
  904. package/dist/utils/testing/output_parsers.cjs.map +1 -1
  905. package/dist/utils/testing/output_parsers.d.cts +0 -1
  906. package/dist/utils/testing/output_parsers.d.cts.map +1 -1
  907. package/dist/utils/testing/output_parsers.d.ts +0 -1
  908. package/dist/utils/testing/output_parsers.d.ts.map +1 -1
  909. package/dist/utils/testing/output_parsers.js.map +1 -1
  910. package/dist/utils/testing/retrievers.cjs.map +1 -1
  911. package/dist/utils/testing/retrievers.d.cts +0 -1
  912. package/dist/utils/testing/retrievers.d.cts.map +1 -1
  913. package/dist/utils/testing/retrievers.d.ts +0 -1
  914. package/dist/utils/testing/retrievers.d.ts.map +1 -1
  915. package/dist/utils/testing/retrievers.js.map +1 -1
  916. package/dist/utils/testing/runnables.cjs.map +1 -1
  917. package/dist/utils/testing/runnables.d.cts +0 -1
  918. package/dist/utils/testing/runnables.d.cts.map +1 -1
  919. package/dist/utils/testing/runnables.d.ts +0 -1
  920. package/dist/utils/testing/runnables.d.ts.map +1 -1
  921. package/dist/utils/testing/runnables.js.map +1 -1
  922. package/dist/utils/testing/stream.cjs +5 -0
  923. package/dist/utils/testing/stream.cjs.map +1 -1
  924. package/dist/utils/testing/stream.d.cts.map +1 -1
  925. package/dist/utils/testing/stream.d.ts.map +1 -1
  926. package/dist/utils/testing/stream.js +1 -1
  927. package/dist/utils/testing/stream.js.map +1 -1
  928. package/dist/utils/testing/tools.cjs.map +1 -1
  929. package/dist/utils/testing/tools.d.cts +0 -1
  930. package/dist/utils/testing/tools.d.cts.map +1 -1
  931. package/dist/utils/testing/tools.d.ts +0 -1
  932. package/dist/utils/testing/tools.d.ts.map +1 -1
  933. package/dist/utils/testing/tools.js.map +1 -1
  934. package/dist/utils/testing/tracers.cjs.map +1 -1
  935. package/dist/utils/testing/tracers.d.cts +0 -1
  936. package/dist/utils/testing/tracers.d.cts.map +1 -1
  937. package/dist/utils/testing/tracers.d.ts +0 -1
  938. package/dist/utils/testing/tracers.d.ts.map +1 -1
  939. package/dist/utils/testing/tracers.js.map +1 -1
  940. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  941. package/dist/utils/testing/vectorstores.d.cts +1 -5
  942. package/dist/utils/testing/vectorstores.d.cts.map +1 -1
  943. package/dist/utils/testing/vectorstores.d.ts +1 -5
  944. package/dist/utils/testing/vectorstores.d.ts.map +1 -1
  945. package/dist/utils/testing/vectorstores.js.map +1 -1
  946. package/dist/utils/tiktoken.cjs +1 -1
  947. package/dist/utils/tiktoken.cjs.map +1 -1
  948. package/dist/utils/tiktoken.d.cts +0 -1
  949. package/dist/utils/tiktoken.d.cts.map +1 -1
  950. package/dist/utils/tiktoken.d.ts +0 -1
  951. package/dist/utils/tiktoken.d.ts.map +1 -1
  952. package/dist/utils/tiktoken.js +1 -1
  953. package/dist/utils/tiktoken.js.map +1 -1
  954. package/dist/utils/types/index.d.cts +0 -1
  955. package/dist/utils/types/index.d.cts.map +1 -1
  956. package/dist/utils/types/index.d.ts +0 -1
  957. package/dist/utils/types/index.d.ts.map +1 -1
  958. package/dist/utils/types/zod.cjs +0 -1
  959. package/dist/utils/types/zod.cjs.map +1 -1
  960. package/dist/utils/types/zod.d.cts +2 -3
  961. package/dist/utils/types/zod.d.cts.map +1 -1
  962. package/dist/utils/types/zod.d.ts +2 -3
  963. package/dist/utils/types/zod.d.ts.map +1 -1
  964. package/dist/utils/types/zod.js.map +1 -1
  965. package/dist/utils/uuid/index.d.cts +10 -11
  966. package/dist/utils/uuid/index.d.cts.map +1 -1
  967. package/dist/utils/uuid/index.d.ts +10 -11
  968. package/dist/utils/uuid/index.d.ts.map +1 -1
  969. package/dist/utils/uuid/parse.cjs.map +1 -1
  970. package/dist/utils/uuid/parse.d.cts +1 -3
  971. package/dist/utils/uuid/parse.d.cts.map +1 -1
  972. package/dist/utils/uuid/parse.d.ts +1 -2
  973. package/dist/utils/uuid/parse.d.ts.map +1 -1
  974. package/dist/utils/uuid/parse.js.map +1 -1
  975. package/dist/utils/uuid/rng.cjs +1 -1
  976. package/dist/utils/uuid/rng.cjs.map +1 -1
  977. package/dist/utils/uuid/rng.js +1 -1
  978. package/dist/utils/uuid/rng.js.map +1 -1
  979. package/dist/utils/uuid/sha1.cjs +2 -2
  980. package/dist/utils/uuid/sha1.cjs.map +1 -1
  981. package/dist/utils/uuid/sha1.js +2 -2
  982. package/dist/utils/uuid/sha1.js.map +1 -1
  983. package/dist/utils/uuid/stringify.cjs.map +1 -1
  984. package/dist/utils/uuid/stringify.d.cts +1 -2
  985. package/dist/utils/uuid/stringify.d.cts.map +1 -1
  986. package/dist/utils/uuid/stringify.d.ts +1 -1
  987. package/dist/utils/uuid/stringify.d.ts.map +1 -1
  988. package/dist/utils/uuid/stringify.js.map +1 -1
  989. package/dist/utils/uuid/types.d.cts.map +1 -1
  990. package/dist/utils/uuid/types.d.ts.map +1 -1
  991. package/dist/utils/uuid/v1.cjs +2 -1
  992. package/dist/utils/uuid/v1.cjs.map +1 -1
  993. package/dist/utils/uuid/v1.d.cts +1 -3
  994. package/dist/utils/uuid/v1.d.cts.map +1 -1
  995. package/dist/utils/uuid/v1.d.ts +1 -2
  996. package/dist/utils/uuid/v1.d.ts.map +1 -1
  997. package/dist/utils/uuid/v1.js +2 -2
  998. package/dist/utils/uuid/v1.js.map +1 -1
  999. package/dist/utils/uuid/v1ToV6.cjs.map +1 -1
  1000. package/dist/utils/uuid/v1ToV6.js.map +1 -1
  1001. package/dist/utils/uuid/v35.cjs +1 -0
  1002. package/dist/utils/uuid/v35.cjs.map +1 -1
  1003. package/dist/utils/uuid/v35.d.cts +6 -0
  1004. package/dist/utils/uuid/v35.d.cts.map +1 -0
  1005. package/dist/utils/uuid/v35.d.ts +6 -0
  1006. package/dist/utils/uuid/v35.d.ts.map +1 -0
  1007. package/dist/utils/uuid/v35.js +1 -1
  1008. package/dist/utils/uuid/v35.js.map +1 -1
  1009. package/dist/utils/uuid/v4.cjs.map +1 -1
  1010. package/dist/utils/uuid/v4.d.cts +1 -3
  1011. package/dist/utils/uuid/v4.d.cts.map +1 -1
  1012. package/dist/utils/uuid/v4.d.ts +1 -2
  1013. package/dist/utils/uuid/v4.d.ts.map +1 -1
  1014. package/dist/utils/uuid/v4.js.map +1 -1
  1015. package/dist/utils/uuid/v5.cjs.map +1 -1
  1016. package/dist/utils/uuid/v5.d.cts +5 -8
  1017. package/dist/utils/uuid/v5.d.cts.map +1 -1
  1018. package/dist/utils/uuid/v5.d.ts +5 -7
  1019. package/dist/utils/uuid/v5.d.ts.map +1 -1
  1020. package/dist/utils/uuid/v5.js.map +1 -1
  1021. package/dist/utils/uuid/v6.cjs +1 -1
  1022. package/dist/utils/uuid/v6.cjs.map +1 -1
  1023. package/dist/utils/uuid/v6.d.cts +1 -3
  1024. package/dist/utils/uuid/v6.d.cts.map +1 -1
  1025. package/dist/utils/uuid/v6.d.ts +1 -2
  1026. package/dist/utils/uuid/v6.d.ts.map +1 -1
  1027. package/dist/utils/uuid/v6.js +1 -1
  1028. package/dist/utils/uuid/v6.js.map +1 -1
  1029. package/dist/utils/uuid/v7.cjs +2 -1
  1030. package/dist/utils/uuid/v7.cjs.map +1 -1
  1031. package/dist/utils/uuid/v7.d.cts +1 -3
  1032. package/dist/utils/uuid/v7.d.cts.map +1 -1
  1033. package/dist/utils/uuid/v7.d.ts +1 -2
  1034. package/dist/utils/uuid/v7.d.ts.map +1 -1
  1035. package/dist/utils/uuid/v7.js +2 -2
  1036. package/dist/utils/uuid/v7.js.map +1 -1
  1037. package/dist/utils/uuid/validate.cjs.map +1 -1
  1038. package/dist/utils/uuid/validate.d.cts +1 -2
  1039. package/dist/utils/uuid/validate.d.cts.map +1 -1
  1040. package/dist/utils/uuid/validate.d.ts +1 -1
  1041. package/dist/utils/uuid/validate.d.ts.map +1 -1
  1042. package/dist/utils/uuid/validate.js.map +1 -1
  1043. package/dist/utils/uuid/version.cjs.map +1 -1
  1044. package/dist/utils/uuid/version.d.cts +1 -2
  1045. package/dist/utils/uuid/version.d.cts.map +1 -1
  1046. package/dist/utils/uuid/version.d.ts +1 -1
  1047. package/dist/utils/uuid/version.d.ts.map +1 -1
  1048. package/dist/utils/uuid/version.js.map +1 -1
  1049. package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -1
  1050. package/dist/utils/zod-to-json-schema/Options.d.cts +3 -1
  1051. package/dist/utils/zod-to-json-schema/Options.d.ts +3 -1
  1052. package/dist/utils/zod-to-json-schema/Options.js.map +1 -1
  1053. package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -1
  1054. package/dist/utils/zod-to-json-schema/Refs.d.cts +3 -1
  1055. package/dist/utils/zod-to-json-schema/Refs.d.ts +3 -1
  1056. package/dist/utils/zod-to-json-schema/Refs.js.map +1 -1
  1057. package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -1
  1058. package/dist/utils/zod-to-json-schema/errorMessages.d.cts +2 -1
  1059. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -1
  1060. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +2 -1
  1061. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -1
  1062. package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -1
  1063. package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -1
  1064. package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -1
  1065. package/dist/utils/zod-to-json-schema/index.cjs +79 -37
  1066. package/dist/utils/zod-to-json-schema/index.d.cts +15 -1
  1067. package/dist/utils/zod-to-json-schema/index.d.ts +15 -1
  1068. package/dist/utils/zod-to-json-schema/index.js +38 -38
  1069. package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -1
  1070. package/dist/utils/zod-to-json-schema/parseDef.d.cts +3 -1
  1071. package/dist/utils/zod-to-json-schema/parseDef.d.ts +3 -1
  1072. package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -1
  1073. package/dist/utils/zod-to-json-schema/parseTypes.d.cts +0 -1
  1074. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -1
  1075. package/dist/utils/zod-to-json-schema/parseTypes.d.ts +0 -1
  1076. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -1
  1077. package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -1
  1078. package/dist/utils/zod-to-json-schema/parsers/any.d.cts +1 -0
  1079. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -1
  1080. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +1 -0
  1081. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -1
  1082. package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -1
  1083. package/dist/utils/zod-to-json-schema/parsers/array.cjs +0 -1
  1084. package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -1
  1085. package/dist/utils/zod-to-json-schema/parsers/array.d.cts +2 -0
  1086. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -1
  1087. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +2 -0
  1088. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -1
  1089. package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -1
  1090. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -1
  1091. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +2 -0
  1092. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -1
  1093. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +2 -0
  1094. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  1095. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -1
  1096. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -1
  1097. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -1
  1098. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -1
  1099. package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -1
  1100. package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -1
  1101. package/dist/utils/zod-to-json-schema/parsers/branded.d.cts +3 -1
  1102. package/dist/utils/zod-to-json-schema/parsers/branded.d.ts +3 -1
  1103. package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -1
  1104. package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -1
  1105. package/dist/utils/zod-to-json-schema/parsers/catch.d.cts +3 -1
  1106. package/dist/utils/zod-to-json-schema/parsers/catch.d.ts +3 -1
  1107. package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -1
  1108. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -1
  1109. package/dist/utils/zod-to-json-schema/parsers/date.d.cts +3 -0
  1110. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -1
  1111. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +3 -0
  1112. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -1
  1113. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -1
  1114. package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -1
  1115. package/dist/utils/zod-to-json-schema/parsers/default.d.cts +3 -1
  1116. package/dist/utils/zod-to-json-schema/parsers/default.d.ts +3 -1
  1117. package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -1
  1118. package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -1
  1119. package/dist/utils/zod-to-json-schema/parsers/effects.d.cts +3 -1
  1120. package/dist/utils/zod-to-json-schema/parsers/effects.d.ts +3 -1
  1121. package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -1
  1122. package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -1
  1123. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +1 -0
  1124. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -1
  1125. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +1 -0
  1126. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -1
  1127. package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -1
  1128. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -1
  1129. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +2 -0
  1130. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -1
  1131. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +2 -0
  1132. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -1
  1133. package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -1
  1134. package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -1
  1135. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +2 -0
  1136. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -1
  1137. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +2 -0
  1138. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  1139. package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -1
  1140. package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -1
  1141. package/dist/utils/zod-to-json-schema/parsers/map.d.cts +3 -0
  1142. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -1
  1143. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +3 -0
  1144. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -1
  1145. package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -1
  1146. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  1147. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +1 -0
  1148. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -1
  1149. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +1 -0
  1150. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -1
  1151. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  1152. package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -1
  1153. package/dist/utils/zod-to-json-schema/parsers/never.d.cts +1 -0
  1154. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -1
  1155. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +1 -0
  1156. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -1
  1157. package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -1
  1158. package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -1
  1159. package/dist/utils/zod-to-json-schema/parsers/null.d.cts +1 -0
  1160. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -1
  1161. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +1 -0
  1162. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  1163. package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -1
  1164. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -1
  1165. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +2 -0
  1166. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -1
  1167. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +2 -0
  1168. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  1169. package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -1
  1170. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -1
  1171. package/dist/utils/zod-to-json-schema/parsers/number.d.cts +2 -0
  1172. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -1
  1173. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +2 -0
  1174. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  1175. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -1
  1176. package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -1
  1177. package/dist/utils/zod-to-json-schema/parsers/object.d.cts +2 -0
  1178. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -1
  1179. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +2 -0
  1180. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -1
  1181. package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -1
  1182. package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -1
  1183. package/dist/utils/zod-to-json-schema/parsers/optional.d.cts +3 -1
  1184. package/dist/utils/zod-to-json-schema/parsers/optional.d.ts +3 -1
  1185. package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -1
  1186. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  1187. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.cts +4 -1
  1188. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.ts +4 -1
  1189. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  1190. package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -1
  1191. package/dist/utils/zod-to-json-schema/parsers/promise.d.cts +3 -1
  1192. package/dist/utils/zod-to-json-schema/parsers/promise.d.ts +3 -1
  1193. package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -1
  1194. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -1
  1195. package/dist/utils/zod-to-json-schema/parsers/readonly.d.cts +3 -1
  1196. package/dist/utils/zod-to-json-schema/parsers/readonly.d.ts +3 -1
  1197. package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -1
  1198. package/dist/utils/zod-to-json-schema/parsers/record.cjs +0 -1
  1199. package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -1
  1200. package/dist/utils/zod-to-json-schema/parsers/record.d.cts +2 -0
  1201. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -1
  1202. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +2 -0
  1203. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  1204. package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -1
  1205. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  1206. package/dist/utils/zod-to-json-schema/parsers/set.d.cts +2 -0
  1207. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -1
  1208. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +2 -0
  1209. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -1
  1210. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  1211. package/dist/utils/zod-to-json-schema/parsers/string.cjs +0 -2
  1212. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  1213. package/dist/utils/zod-to-json-schema/parsers/string.d.cts +2 -0
  1214. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -1
  1215. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +2 -0
  1216. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  1217. package/dist/utils/zod-to-json-schema/parsers/string.js +0 -2
  1218. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  1219. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -1
  1220. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +2 -0
  1221. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -1
  1222. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +2 -0
  1223. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -1
  1224. package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -1
  1225. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -1
  1226. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +1 -0
  1227. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -1
  1228. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +1 -0
  1229. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -1
  1230. package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -1
  1231. package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -1
  1232. package/dist/utils/zod-to-json-schema/parsers/union.d.cts +2 -0
  1233. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -1
  1234. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +2 -0
  1235. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  1236. package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -1
  1237. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -1
  1238. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +1 -0
  1239. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -1
  1240. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +1 -0
  1241. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -1
  1242. package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -1
  1243. package/dist/utils/zod-to-json-schema/selectParser.cjs +0 -1
  1244. package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -1
  1245. package/dist/utils/zod-to-json-schema/selectParser.d.cts +3 -1
  1246. package/dist/utils/zod-to-json-schema/selectParser.d.ts +2 -0
  1247. package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -1
  1248. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -1
  1249. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.cts +3 -1
  1250. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.ts +3 -1
  1251. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  1252. package/dist/vectorstores.cjs.map +1 -1
  1253. package/dist/vectorstores.d.cts +0 -1
  1254. package/dist/vectorstores.d.cts.map +1 -1
  1255. package/dist/vectorstores.d.ts +0 -1
  1256. package/dist/vectorstores.d.ts.map +1 -1
  1257. package/dist/vectorstores.js.map +1 -1
  1258. package/package.json +15 -4
  1259. package/utils/gateway.cjs +1 -0
  1260. package/utils/gateway.d.cts +1 -0
  1261. package/utils/gateway.d.ts +1 -0
  1262. package/utils/gateway.js +1 -0
@@ -120,6 +120,9 @@ var AIMessage = class extends require_base.BaseMessage {
120
120
  static isInstance(obj) {
121
121
  return super.isInstance(obj) && obj.type === "ai";
122
122
  }
123
+ static [Symbol.hasInstance](obj) {
124
+ return this.isInstance(obj);
125
+ }
123
126
  };
124
127
  /**
125
128
  * @deprecated Use {@link AIMessage.isInstance} instead
@@ -240,6 +243,9 @@ var AIMessageChunk = class extends require_base.BaseMessageChunk {
240
243
  static isInstance(obj) {
241
244
  return super.isInstance(obj) && obj.type === "ai";
242
245
  }
246
+ static [Symbol.hasInstance](obj) {
247
+ return this.isInstance(obj);
248
+ }
243
249
  };
244
250
  //#endregion
245
251
  exports.AIMessage = AIMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"ai.cjs","names":["BaseMessage","defaultToolCallParser","getTranslator","BaseMessageChunk","collapseToolCallChunks","mergeContent","_mergeDicts","mergeResponseMetadata","_mergeLists","mergeUsageMetadata"],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n mergeContent,\n _mergeDicts,\n _mergeLists,\n BaseMessageFields,\n} from \"./base.js\";\nimport { getTranslator } from \"./block_translators/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport {\n $InferMessageContent,\n $InferMessageProperty,\n $InferToolCalls,\n MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { collapseToolCallChunks, Constructor } from \"./utils.js\";\n\nfunction coerceToContentBlocks(value: unknown): ContentBlock.Standard[] {\n if (typeof value === \"string\") {\n return value.length > 0 ? [{ type: \"text\", text: value }] : [];\n }\n if (Array.isArray(value)) {\n return value as Array<ContentBlock.Standard>;\n }\n if (value == null) {\n return [];\n }\n return [value as ContentBlock.Standard];\n}\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: $InferToolCalls<TStructure>[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\n\nexport class AIMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"ai\">\n implements AIMessageFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n constructor(\n fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>\n ) {\n let initParams: AIMessageFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n additional_kwargs: {},\n };\n } else {\n initParams = fields;\n const rawToolCalls = initParams.additional_kwargs?.tool_calls;\n const toolCalls = initParams.tool_calls;\n if (\n !(rawToolCalls == null) &&\n rawToolCalls.length > 0 &&\n (toolCalls === undefined || toolCalls.length === 0)\n ) {\n console.warn(\n [\n \"New LangChain packages are available that more efficiently handle\",\n \"tool calling.\\n\\nPlease upgrade your packages to versions that set\",\n \"message tool calls. e.g., `pnpm install @langchain/anthropic`,\",\n \"pnpm install @langchain/openai`, etc.\",\n ].join(\" \")\n );\n }\n try {\n if (!(rawToolCalls == null) && toolCalls === undefined) {\n const [parsedToolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls =\n (parsedToolCalls as $InferToolCalls<TStructure>[]) ?? [];\n initParams.invalid_tool_calls = invalidToolCalls ?? [];\n } else {\n initParams.tool_calls = initParams.tool_calls ?? [];\n initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];\n }\n } catch {\n // Do nothing if parsing fails\n initParams.tool_calls = [] as $InferToolCalls<TStructure>[];\n initParams.invalid_tool_calls = [];\n }\n\n // Convert content to content blocks if output version is v1.\n // Serialized LangGraph payloads often still carry string `content` even\n // when `output_version` is \"v1\"; normalize to an array before mutating.\n if (\n initParams.response_metadata !== undefined &&\n \"output_version\" in initParams.response_metadata &&\n initParams.response_metadata.output_version === \"v1\" &&\n initParams.content !== undefined\n ) {\n initParams.contentBlocks = coerceToContentBlocks(initParams.content);\n initParams.content = undefined;\n }\n\n if (initParams.contentBlocks !== undefined) {\n if (!Array.isArray(initParams.contentBlocks)) {\n initParams.contentBlocks = coerceToContentBlocks(\n initParams.contentBlocks\n );\n }\n // Add constructor tool calls as content blocks only when they are not\n // already represented in the v1 content payload.\n if (initParams.tool_calls) {\n const missingContentBlockToolCalls = initParams.tool_calls.filter(\n (toolCall) =>\n !initParams.contentBlocks?.some(\n (block) =>\n block.type === \"tool_call\" &&\n block.id === toolCall.id &&\n block.name === toolCall.name\n )\n );\n initParams.contentBlocks.push(\n ...missingContentBlockToolCalls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n }))\n );\n }\n // Add content block tool calls that aren't in the constructor tool calls\n const missingToolCalls = initParams.contentBlocks\n .filter<ContentBlock.Tools.ToolCall>(\n (block): block is ContentBlock.Tools.ToolCall =>\n block.type === \"tool_call\"\n )\n .filter(\n (block) =>\n !initParams.tool_calls?.some(\n (toolCall) =>\n toolCall.id === block.id && toolCall.name === block.name\n )\n );\n if (missingToolCalls.length > 0) {\n initParams.tool_calls = [\n ...(initParams.tool_calls ?? []),\n ...missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id!,\n name: block.name,\n args: block.args as Record<string, unknown>,\n })),\n ] as $InferToolCalls<TStructure>[];\n }\n }\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n if (typeof initParams !== \"string\") {\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n }\n this.usage_metadata = initParams.usage_metadata;\n }\n\n static lc_name() {\n return \"AIMessage\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n const missingToolCalls = this.tool_calls.filter(\n (block) =>\n !blocks.some((b) => b.id === block.id && b.name === block.name)\n );\n blocks.push(\n ...(missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\n })) as ContentBlock.Tools.ToolCall[])\n );\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n /**\n * Type guard to check if an object is an AIMessage.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessage<T>;\n /**\n * Type guard to check if an object is an AIMessage.\n * @overload When called with unknown, returns base AIMessage type\n */\n static isInstance(obj: unknown): obj is AIMessage;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessage<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n}\n\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport function isAIMessage<TStructure extends MessageStructure>(\n x: BaseMessage\n): x is AIMessage<TStructure> {\n return x._getType() === \"ai\";\n}\n\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport function isAIMessageChunk<TStructure extends MessageStructure>(\n x: BaseMessageChunk\n): x is AIMessageChunk<TStructure> {\n return x._getType() === \"ai\";\n}\n\nexport type AIMessageChunkFields<\n TStructure extends MessageStructure = MessageStructure,\n> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport class AIMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n>\n extends BaseMessageChunk<TStructure, \"ai\">\n implements AIMessage<TStructure>, AIMessageChunkFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n tool_call_chunks?: ToolCallChunk[] = [];\n\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>\n ) {\n let initParams: AIMessageChunkFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n };\n } else if (\n fields.tool_call_chunks === undefined ||\n fields.tool_call_chunks.length === 0\n ) {\n initParams = {\n ...fields,\n tool_calls: fields.tool_calls ?? [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n } else {\n const collapsed = collapseToolCallChunks(fields.tool_call_chunks ?? []);\n initParams = {\n ...fields,\n tool_call_chunks: collapsed.tool_call_chunks,\n tool_calls: collapsed.tool_calls as $InferToolCalls<TStructure>[],\n invalid_tool_calls: collapsed.invalid_tool_calls,\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n this.tool_call_chunks =\n initParams.tool_call_chunks ?? this.tool_call_chunks;\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n this.usage_metadata = initParams.usage_metadata;\n }\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n tool_call_chunks: \"tool_call_chunks\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n if (typeof this.content !== \"string\") {\n const contentToolCalls = this.content\n .filter((block) => block.type === \"tool_call\")\n .map((block) => block.id);\n for (const toolCall of this.tool_calls) {\n if (toolCall.id && !contentToolCalls.includes(toolCall.id)) {\n blocks.push({\n ...toolCall,\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n });\n }\n }\n }\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n tool_call_chunks: this.tool_call_chunks,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n concat(chunk: AIMessageChunk<TStructure>) {\n const combinedFields: AIMessageChunkFields = {\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: mergeResponseMetadata(\n this.response_metadata,\n chunk.response_metadata\n ),\n tool_call_chunks: [],\n tool_calls: [],\n id: this.id ?? chunk.id,\n };\n if (\n this.tool_call_chunks !== undefined ||\n chunk.tool_call_chunks !== undefined\n ) {\n const rawToolCalls = _mergeLists(\n this.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[],\n chunk.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_call_chunks = rawToolCalls as ToolCallChunk[];\n }\n }\n if (this.tool_calls !== undefined || chunk.tool_calls !== undefined) {\n const rawToolCalls = _mergeLists(\n this.tool_calls as ContentBlock.Tools.ToolCall[],\n chunk.tool_calls as ContentBlock.Tools.ToolCall[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_calls =\n rawToolCalls as $InferToolCalls<TStructure>[];\n }\n }\n if (\n this.usage_metadata !== undefined ||\n chunk.usage_metadata !== undefined\n ) {\n combinedFields.usage_metadata = mergeUsageMetadata(\n this.usage_metadata,\n chunk.usage_metadata\n );\n }\n const Cls = this.constructor as Constructor<this>;\n return new Cls(combinedFields);\n }\n\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessageChunk<T>;\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * @overload When called with unknown, returns base AIMessageChunk type\n */\n static isInstance(obj: unknown): obj is AIMessageChunk;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessageChunk<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ai.cjs","names":["BaseMessage","defaultToolCallParser","getTranslator","BaseMessageChunk","collapseToolCallChunks","mergeContent","_mergeDicts","mergeResponseMetadata","_mergeLists","mergeUsageMetadata"],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n mergeContent,\n _mergeDicts,\n _mergeLists,\n BaseMessageFields,\n} from \"./base.js\";\nimport { getTranslator } from \"./block_translators/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport {\n $InferMessageContent,\n $InferMessageProperty,\n $InferToolCalls,\n MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { collapseToolCallChunks, Constructor } from \"./utils.js\";\n\nfunction coerceToContentBlocks(value: unknown): ContentBlock.Standard[] {\n if (typeof value === \"string\") {\n return value.length > 0 ? [{ type: \"text\", text: value }] : [];\n }\n if (Array.isArray(value)) {\n return value as Array<ContentBlock.Standard>;\n }\n if (value == null) {\n return [];\n }\n return [value as ContentBlock.Standard];\n}\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: $InferToolCalls<TStructure>[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\n\nexport class AIMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"ai\">\n implements AIMessageFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n constructor(\n fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>\n ) {\n let initParams: AIMessageFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n additional_kwargs: {},\n };\n } else {\n initParams = fields;\n const rawToolCalls = initParams.additional_kwargs?.tool_calls;\n const toolCalls = initParams.tool_calls;\n if (\n !(rawToolCalls == null) &&\n rawToolCalls.length > 0 &&\n (toolCalls === undefined || toolCalls.length === 0)\n ) {\n console.warn(\n [\n \"New LangChain packages are available that more efficiently handle\",\n \"tool calling.\\n\\nPlease upgrade your packages to versions that set\",\n \"message tool calls. e.g., `pnpm install @langchain/anthropic`,\",\n \"pnpm install @langchain/openai`, etc.\",\n ].join(\" \")\n );\n }\n try {\n if (!(rawToolCalls == null) && toolCalls === undefined) {\n const [parsedToolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls =\n (parsedToolCalls as $InferToolCalls<TStructure>[]) ?? [];\n initParams.invalid_tool_calls = invalidToolCalls ?? [];\n } else {\n initParams.tool_calls = initParams.tool_calls ?? [];\n initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];\n }\n } catch {\n // Do nothing if parsing fails\n initParams.tool_calls = [] as $InferToolCalls<TStructure>[];\n initParams.invalid_tool_calls = [];\n }\n\n // Convert content to content blocks if output version is v1.\n // Serialized LangGraph payloads often still carry string `content` even\n // when `output_version` is \"v1\"; normalize to an array before mutating.\n if (\n initParams.response_metadata !== undefined &&\n \"output_version\" in initParams.response_metadata &&\n initParams.response_metadata.output_version === \"v1\" &&\n initParams.content !== undefined\n ) {\n initParams.contentBlocks = coerceToContentBlocks(initParams.content);\n initParams.content = undefined;\n }\n\n if (initParams.contentBlocks !== undefined) {\n if (!Array.isArray(initParams.contentBlocks)) {\n initParams.contentBlocks = coerceToContentBlocks(\n initParams.contentBlocks\n );\n }\n // Add constructor tool calls as content blocks only when they are not\n // already represented in the v1 content payload.\n if (initParams.tool_calls) {\n const missingContentBlockToolCalls = initParams.tool_calls.filter(\n (toolCall) =>\n !initParams.contentBlocks?.some(\n (block) =>\n block.type === \"tool_call\" &&\n block.id === toolCall.id &&\n block.name === toolCall.name\n )\n );\n initParams.contentBlocks.push(\n ...missingContentBlockToolCalls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n }))\n );\n }\n // Add content block tool calls that aren't in the constructor tool calls\n const missingToolCalls = initParams.contentBlocks\n .filter<ContentBlock.Tools.ToolCall>(\n (block): block is ContentBlock.Tools.ToolCall =>\n block.type === \"tool_call\"\n )\n .filter(\n (block) =>\n !initParams.tool_calls?.some(\n (toolCall) =>\n toolCall.id === block.id && toolCall.name === block.name\n )\n );\n if (missingToolCalls.length > 0) {\n initParams.tool_calls = [\n ...(initParams.tool_calls ?? []),\n ...missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id!,\n name: block.name,\n args: block.args as Record<string, unknown>,\n })),\n ] as $InferToolCalls<TStructure>[];\n }\n }\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n if (typeof initParams !== \"string\") {\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n }\n this.usage_metadata = initParams.usage_metadata;\n }\n\n static lc_name() {\n return \"AIMessage\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n const missingToolCalls = this.tool_calls.filter(\n (block) =>\n !blocks.some((b) => b.id === block.id && b.name === block.name)\n );\n blocks.push(\n ...(missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\n })) as ContentBlock.Tools.ToolCall[])\n );\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n /**\n * Type guard to check if an object is an AIMessage.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessage<T>;\n /**\n * Type guard to check if an object is an AIMessage.\n * @overload When called with unknown, returns base AIMessage type\n */\n static isInstance(obj: unknown): obj is AIMessage;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessage<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n}\n\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport function isAIMessage<TStructure extends MessageStructure>(\n x: BaseMessage\n): x is AIMessage<TStructure> {\n return x._getType() === \"ai\";\n}\n\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport function isAIMessageChunk<TStructure extends MessageStructure>(\n x: BaseMessageChunk\n): x is AIMessageChunk<TStructure> {\n return x._getType() === \"ai\";\n}\n\nexport type AIMessageChunkFields<\n TStructure extends MessageStructure = MessageStructure,\n> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport class AIMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n>\n extends BaseMessageChunk<TStructure, \"ai\">\n implements AIMessage<TStructure>, AIMessageChunkFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n tool_call_chunks?: ToolCallChunk[] = [];\n\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>\n ) {\n let initParams: AIMessageChunkFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n };\n } else if (\n fields.tool_call_chunks === undefined ||\n fields.tool_call_chunks.length === 0\n ) {\n initParams = {\n ...fields,\n tool_calls: fields.tool_calls ?? [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n } else {\n const collapsed = collapseToolCallChunks(fields.tool_call_chunks ?? []);\n initParams = {\n ...fields,\n tool_call_chunks: collapsed.tool_call_chunks,\n tool_calls: collapsed.tool_calls as $InferToolCalls<TStructure>[],\n invalid_tool_calls: collapsed.invalid_tool_calls,\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n this.tool_call_chunks =\n initParams.tool_call_chunks ?? this.tool_call_chunks;\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n this.usage_metadata = initParams.usage_metadata;\n }\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n tool_call_chunks: \"tool_call_chunks\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n if (typeof this.content !== \"string\") {\n const contentToolCalls = this.content\n .filter((block) => block.type === \"tool_call\")\n .map((block) => block.id);\n for (const toolCall of this.tool_calls) {\n if (toolCall.id && !contentToolCalls.includes(toolCall.id)) {\n blocks.push({\n ...toolCall,\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n });\n }\n }\n }\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n tool_call_chunks: this.tool_call_chunks,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n concat(chunk: AIMessageChunk<TStructure>) {\n const combinedFields: AIMessageChunkFields = {\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: mergeResponseMetadata(\n this.response_metadata,\n chunk.response_metadata\n ),\n tool_call_chunks: [],\n tool_calls: [],\n id: this.id ?? chunk.id,\n };\n if (\n this.tool_call_chunks !== undefined ||\n chunk.tool_call_chunks !== undefined\n ) {\n const rawToolCalls = _mergeLists(\n this.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[],\n chunk.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_call_chunks = rawToolCalls as ToolCallChunk[];\n }\n }\n if (this.tool_calls !== undefined || chunk.tool_calls !== undefined) {\n const rawToolCalls = _mergeLists(\n this.tool_calls as ContentBlock.Tools.ToolCall[],\n chunk.tool_calls as ContentBlock.Tools.ToolCall[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_calls =\n rawToolCalls as $InferToolCalls<TStructure>[];\n }\n }\n if (\n this.usage_metadata !== undefined ||\n chunk.usage_metadata !== undefined\n ) {\n combinedFields.usage_metadata = mergeUsageMetadata(\n this.usage_metadata,\n chunk.usage_metadata\n );\n }\n const Cls = this.constructor as Constructor<this>;\n return new Cls(combinedFields);\n }\n\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessageChunk<T>;\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * @overload When called with unknown, returns base AIMessageChunk type\n */\n static isInstance(obj: unknown): obj is AIMessageChunk;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessageChunk<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n}\n"],"mappings":";;;;;;AAwBA,SAAS,sBAAsB,OAAyC;CACtE,IAAI,OAAO,UAAU,UACnB,OAAO,MAAM,SAAS,IAAI,CAAC;EAAE,MAAM;EAAQ,MAAM;CAAM,CAAC,IAAI,CAAC;CAE/D,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO;CAET,IAAI,SAAS,MACX,OAAO,CAAC;CAEV,OAAO,CAAC,KAA8B;AACxC;AAUA,IAAa,YAAb,cACUA,aAAAA,YAEV;CACE,OAAgB;CAEhB,aAA6C,CAAC;CAE9C,qBAAyC,CAAC;CAE1C;CAEA,IAAI,aAAqC;EAEvC,OAAO;GACL,GAAG,MAAM;GACT,YAAY;GACZ,oBAAoB;GACpB,gBAAgB;EAClB;CACF;CAEA,YACE,QACA;EACA,IAAI;EACJ,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GACpD,aAAa;GACX,SAAS;GACT,YAAY,CAAC;GACb,oBAAoB,CAAC;GACrB,mBAAmB,CAAC;EACtB;OACK;GACL,aAAa;GACb,MAAM,eAAe,WAAW,mBAAmB;GACnD,MAAM,YAAY,WAAW;GAC7B,IACE,EAAE,gBAAgB,SAClB,aAAa,SAAS,MACrB,cAAc,KAAA,KAAa,UAAU,WAAW,IAEjD,QAAQ,KACN;IACE;IACA;IACA;IACA;GACF,CAAC,CAAC,KAAK,GAAG,CACZ;GAEF,IAAI;IACF,IAAI,EAAE,gBAAgB,SAAS,cAAc,KAAA,GAAW;KACtD,MAAM,CAAC,iBAAiB,oBACtBC,sBAAAA,sBAAsB,YAAY;KACpC,WAAW,aACR,mBAAqD,CAAC;KACzD,WAAW,qBAAqB,oBAAoB,CAAC;IACvD,OAAO;KACL,WAAW,aAAa,WAAW,cAAc,CAAC;KAClD,WAAW,qBAAqB,WAAW,sBAAsB,CAAC;IACpE;GACF,QAAQ;IAEN,WAAW,aAAa,CAAC;IACzB,WAAW,qBAAqB,CAAC;GACnC;GAKA,IACE,WAAW,sBAAsB,KAAA,KACjC,oBAAoB,WAAW,qBAC/B,WAAW,kBAAkB,mBAAmB,QAChD,WAAW,YAAY,KAAA,GACvB;IACA,WAAW,gBAAgB,sBAAsB,WAAW,OAAO;IACnE,WAAW,UAAU,KAAA;GACvB;GAEA,IAAI,WAAW,kBAAkB,KAAA,GAAW;IAC1C,IAAI,CAAC,MAAM,QAAQ,WAAW,aAAa,GACzC,WAAW,gBAAgB,sBACzB,WAAW,aACb;IAIF,IAAI,WAAW,YAAY;KACzB,MAAM,+BAA+B,WAAW,WAAW,QACxD,aACC,CAAC,WAAW,eAAe,MACxB,UACC,MAAM,SAAS,eACf,MAAM,OAAO,SAAS,MACtB,MAAM,SAAS,SAAS,IAC5B,CACJ;KACA,WAAW,cAAc,KACvB,GAAG,6BAA6B,KAAK,cAAc;MACjD,MAAM;MACN,IAAI,SAAS;MACb,MAAM,SAAS;MACf,MAAM,SAAS;KACjB,EAAE,CACJ;IACF;IAEA,MAAM,mBAAmB,WAAW,cACjC,QACE,UACC,MAAM,SAAS,WACnB,CAAC,CACA,QACE,UACC,CAAC,WAAW,YAAY,MACrB,aACC,SAAS,OAAO,MAAM,MAAM,SAAS,SAAS,MAAM,IACxD,CACJ;IACF,IAAI,iBAAiB,SAAS,GAC5B,WAAW,aAAa,CACtB,GAAI,WAAW,cAAc,CAAC,GAC9B,GAAG,iBAAiB,KAAK,WAAW;KAClC,MAAM;KACN,IAAI,MAAM;KACV,MAAM,MAAM;KACZ,MAAM,MAAM;IACd,EAAE,CACJ;GAEJ;EACF;EAGA,MAAM,UAAU;EAChB,IAAI,OAAO,eAAe,UAAU;GAClC,KAAK,aAAa,WAAW,cAAc,KAAK;GAChD,KAAK,qBACH,WAAW,sBAAsB,KAAK;EAC1C;EACA,KAAK,iBAAiB,WAAW;CACnC;CAEA,OAAO,UAAU;EACf,OAAO;CACT;CAEA,IAAI,gBAA8C;EAChD,IACE,KAAK,qBACL,oBAAoB,KAAK,qBACzB,KAAK,kBAAkB,mBAAmB,MAE1C,OAAO,KAAK;EAGd,IACE,KAAK,qBACL,oBAAoB,KAAK,qBACzB,OAAO,KAAK,kBAAkB,mBAAmB,UACjD;GACA,MAAM,aAAaC,cAAAA,cAAc,KAAK,kBAAkB,cAAc;GACtE,IAAI,YACF,OAAO,WAAW,iBAAiB,IAAiB;EAExD;EAEA,MAAM,SAAS,MAAM;EAErB,IAAI,KAAK,YAAY;GACnB,MAAM,mBAAmB,KAAK,WAAW,QACtC,UACC,CAAC,OAAO,MAAM,MAAM,EAAE,OAAO,MAAM,MAAM,EAAE,SAAS,MAAM,IAAI,CAClE;GACA,OAAO,KACL,GAAI,iBAAiB,KAAK,WAAW;IACnC,MAAM;IACN,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,MAAM,MAAM;GACd,EAAE,CACJ;EACF;EAEA,OAAO;CACT;CAEA,IAAa,mBAA4C;EACvD,OAAO;GACL,GAAG,MAAM;GACT,YAAY,KAAK;GACjB,oBAAoB,KAAK;GACzB,gBAAgB,KAAK;EACvB;CACF;CAeA,OAAO,WACL,KACqB;EACrB,OAAO,MAAM,WAAW,GAAG,KAAM,IAAyB,SAAS;CACrE;CAEA,QAAQ,OAAO,aAAa,KAAc;EACxC,OAAO,KAAK,WAAW,GAAG;CAC5B;AACF;;;;AAKA,SAAgB,YACd,GAC4B;CAC5B,OAAO,EAAE,SAAS,MAAM;AAC1B;;;;AAKA,SAAgB,iBACd,GACiC;CACjC,OAAO,EAAE,SAAS,MAAM;AAC1B;;;;;AAYA,IAAa,iBAAb,cAGUC,aAAAA,iBAEV;CACE,OAAgB;CAEhB,aAA6C,CAAC;CAE9C,qBAAyC,CAAC;CAE1C,mBAAqC,CAAC;CAEtC;CAEA,YACE,QAGA;EACA,IAAI;EACJ,IAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GACpD,aAAa;GACX,SAAS;GACT,YAAY,CAAC;GACb,oBAAoB,CAAC;GACrB,kBAAkB,CAAC;EACrB;OACK,IACL,OAAO,qBAAqB,KAAA,KAC5B,OAAO,iBAAiB,WAAW,GAEnC,aAAa;GACX,GAAG;GACH,YAAY,OAAO,cAAc,CAAC;GAClC,oBAAoB,CAAC;GACrB,kBAAkB,CAAC;GACnB,gBACE,OAAO,mBAAmB,KAAA,IACtB,OAAO,iBACP,KAAA;EACR;OACK;GACL,MAAM,YAAYC,cAAAA,uBAAuB,OAAO,oBAAoB,CAAC,CAAC;GACtE,aAAa;IACX,GAAG;IACH,kBAAkB,UAAU;IAC5B,YAAY,UAAU;IACtB,oBAAoB,UAAU;IAC9B,gBACE,OAAO,mBAAmB,KAAA,IACtB,OAAO,iBACP,KAAA;GACR;EACF;EAGA,MAAM,UAAU;EAChB,KAAK,mBACH,WAAW,oBAAoB,KAAK;EACtC,KAAK,aAAa,WAAW,cAAc,KAAK;EAChD,KAAK,qBACH,WAAW,sBAAsB,KAAK;EACxC,KAAK,iBAAiB,WAAW;CACnC;CAEA,IAAI,aAAqC;EAEvC,OAAO;GACL,GAAG,MAAM;GACT,YAAY;GACZ,oBAAoB;GACpB,kBAAkB;GAClB,gBAAgB;EAClB;CACF;CAEA,OAAO,UAAU;EACf,OAAO;CACT;CAEA,IAAI,gBAA8C;EAChD,IACE,KAAK,qBACL,oBAAoB,KAAK,qBACzB,KAAK,kBAAkB,mBAAmB,MAE1C,OAAO,KAAK;EAGd,IACE,KAAK,qBACL,oBAAoB,KAAK,qBACzB,OAAO,KAAK,kBAAkB,mBAAmB,UACjD;GACA,MAAM,aAAaF,cAAAA,cAAc,KAAK,kBAAkB,cAAc;GACtE,IAAI,YACF,OAAO,WAAW,iBAAiB,IAAiB;EAExD;EAEA,MAAM,SAAS,MAAM;EAErB,IAAI,KAAK,YACH;OAAA,OAAO,KAAK,YAAY,UAAU;IACpC,MAAM,mBAAmB,KAAK,QAC3B,QAAQ,UAAU,MAAM,SAAS,WAAW,CAAC,CAC7C,KAAK,UAAU,MAAM,EAAE;IAC1B,KAAK,MAAM,YAAY,KAAK,YAC1B,IAAI,SAAS,MAAM,CAAC,iBAAiB,SAAS,SAAS,EAAE,GACvD,OAAO,KAAK;KACV,GAAG;KACH,MAAM;KACN,IAAI,SAAS;KACb,MAAM,SAAS;KACf,MAAM,SAAS;IACjB,CAAC;GAGP;;EAGF,OAAO;CACT;CAEA,IAAa,mBAA4C;EACvD,OAAO;GACL,GAAG,MAAM;GACT,YAAY,KAAK;GACjB,kBAAkB,KAAK;GACvB,oBAAoB,KAAK;GACzB,gBAAgB,KAAK;EACvB;CACF;CAEA,OAAO,OAAmC;EACxC,MAAM,iBAAuC;GAC3C,SAASG,aAAAA,aAAa,KAAK,SAAS,MAAM,OAAO;GACjD,mBAAmBC,aAAAA,YACjB,KAAK,mBACL,MAAM,iBACR;GACA,mBAAmBC,iBAAAA,sBACjB,KAAK,mBACL,MAAM,iBACR;GACA,kBAAkB,CAAC;GACnB,YAAY,CAAC;GACb,IAAI,KAAK,MAAM,MAAM;EACvB;EACA,IACE,KAAK,qBAAqB,KAAA,KAC1B,MAAM,qBAAqB,KAAA,GAC3B;GACA,MAAM,eAAeC,aAAAA,YACnB,KAAK,kBACL,MAAM,gBACR;GACA,IAAI,iBAAiB,KAAA,KAAa,aAAa,SAAS,GACtD,eAAe,mBAAmB;EAEtC;EACA,IAAI,KAAK,eAAe,KAAA,KAAa,MAAM,eAAe,KAAA,GAAW;GACnE,MAAM,eAAeA,aAAAA,YACnB,KAAK,YACL,MAAM,UACR;GACA,IAAI,iBAAiB,KAAA,KAAa,aAAa,SAAS,GACtD,eAAe,aACb;EAEN;EACA,IACE,KAAK,mBAAmB,KAAA,KACxB,MAAM,mBAAmB,KAAA,GAEzB,eAAe,iBAAiBC,iBAAAA,mBAC9B,KAAK,gBACL,MAAM,cACR;EAEF,MAAM,MAAM,KAAK;EACjB,OAAO,IAAI,IAAI,cAAc;CAC/B;CAeA,OAAO,WACL,KAC0B;EAC1B,OAAO,MAAM,WAAW,GAAG,KAAM,IAAyB,SAAS;CACrE;CAEA,QAAQ,OAAO,aAAa,KAAc;EACxC,OAAO,KAAK,WAAW,GAAG;CAC5B;AACF"}
@@ -1,8 +1,7 @@
1
1
  import { ContentBlock } from "./content/index.cjs";
2
2
  import { BaseMessage, BaseMessageChunk, BaseMessageFields } from "./base.cjs";
3
3
  import { InvalidToolCall, ToolCallChunk } from "./tool.cjs";
4
- import { $InferMessageContent, $InferMessageProperty, $InferToolCalls, MessageStructure } from "./message.cjs";
5
-
4
+ import { $InferMessageContent, $InferMessageProperty, $InferToolCalls, MessageStructure, MessageToolSet } from "./message.cjs";
6
5
  //#region src/messages/ai.d.ts
7
6
  interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, "ai"> {
8
7
  tool_calls?: $InferToolCalls<TStructure>[];
@@ -30,6 +29,7 @@ declare class AIMessage<TStructure extends MessageStructure = MessageStructure>
30
29
  * @overload When called with unknown, returns base AIMessage type
31
30
  */
32
31
  static isInstance(obj: unknown): obj is AIMessage;
32
+ static [Symbol.hasInstance](obj: unknown): obj is AIMessage<MessageStructure<MessageToolSet>>;
33
33
  }
34
34
  /**
35
35
  * @deprecated Use {@link AIMessage.isInstance} instead
@@ -69,6 +69,7 @@ declare class AIMessageChunk<TStructure extends MessageStructure = MessageStruct
69
69
  * @overload When called with unknown, returns base AIMessageChunk type
70
70
  */
71
71
  static isInstance(obj: unknown): obj is AIMessageChunk;
72
+ static [Symbol.hasInstance](obj: unknown): obj is AIMessageChunk<MessageStructure<MessageToolSet>>;
72
73
  }
73
74
  //#endregion
74
75
  export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, isAIMessage, isAIMessageChunk };
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.cts","names":[],"sources":["../../src/messages/ai.ts"],"mappings":";;;;;;UAqCiB,eAAA,oBACI,gBAAA,GAAmB,gBAAA,UAC9B,iBAAA,CAAkB,UAAA;EAC1B,UAAA,GAAa,eAAA,CAAgB,UAAA;EAC7B,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,qBAAA,CAAsB,UAAA;AAAA;AAAA,cAG5B,SAAA,oBAA6B,gBAAA,GAAmB,gBAAA,UACnD,WAAA,CAAY,UAAA,mBACT,eAAA,CAAgB,UAAA;EAAA,SAElB,IAAA;EAET,UAAA,GAAa,eAAA,CAAgB,UAAA;EAE7B,kBAAA,GAAqB,eAAA;EAErB,cAAA,GAAiB,eAAA,CAAgB,UAAA;EAAA,IAE7B,UAAA,CAAA,GAAc,MAAA;EAUlB,WAAA,CACE,MAAA,EAAQ,oBAAA,CAAqB,UAAA,UAAoB,eAAA,CAAgB,UAAA;EAAA,OA0H5D,OAAA,CAAA;EAAA,IAIH,aAAA,CAAA,GAAiB,KAAA,CAAM,YAAA,CAAa,QAAA;EAAA,IAwC3B,gBAAA,CAAA,GAAoB,MAAA;EAnMR;;;;;EAAA,OAiNlB,UAAA,WAAqB,gBAAA,CAAA,CAC1B,GAAA,EAAK,WAAA,CAAY,CAAA,IAChB,GAAA,IAAO,WAAA,CAAY,CAAA,IAAK,SAAA,CAAU,CAAA;EAlNrC;;;;EAAA,OAuNO,UAAA,CAAW,GAAA,YAAe,GAAA,IAAO,SAAA;AAAA;;;;iBAW1B,WAAA,oBAA+B,gBAAA,CAAA,CAC7C,CAAA,EAAG,WAAA,GACF,CAAA,IAAK,SAAA,CAAU,UAAA;AA/NlB;;;AAAA,iBAsOgB,gBAAA,oBAAoC,gBAAA,CAAA,CAClD,CAAA,EAAG,gBAAA,GACF,CAAA,IAAK,cAAA,CAAe,UAAA;AAAA,KAIX,oBAAA,oBACS,gBAAA,GAAmB,gBAAA,IACpC,eAAA,CAAgB,UAAA;EAClB,gBAAA,GAAmB,aAAA;AAAA;;;;;cAOR,cAAA,oBACQ,gBAAA,GAAmB,gBAAA,UAE9B,gBAAA,CAAiB,UAAA,mBACd,SAAA,CAAU,UAAA,GAAa,oBAAA,CAAqB,UAAA;EAAA,SAE9C,IAAA;EAET,UAAA,GAAa,eAAA,CAAgB,UAAA;EAE7B,kBAAA,GAAqB,eAAA;EAErB,gBAAA,GAAmB,aAAA;EAEnB,cAAA,GAAiB,oBAAA,CAAqB,UAAA;EAEtC,WAAA,CACE,MAAA,EACI,oBAAA,CAAqB,UAAA,UACrB,oBAAA,CAAqB,UAAA;EAAA,IAgDvB,UAAA,CAAA,GAAc,MAAA;EAAA,OAWX,OAAA,CAAA;EAAA,IAIH,aAAA,CAAA,GAAiB,KAAA,CAAM,YAAA,CAAa,QAAA;EAAA,IA4C3B,gBAAA,CAAA,GAAoB,MAAA;EAUjC,MAAA,CAAO,KAAA,EAAO,cAAA,CAAe,UAAA;EAjLP;;;;;EAAA,OAwOf,UAAA,WAAqB,gBAAA,CAAA,CAC1B,GAAA,EAAK,WAAA,CAAY,CAAA,IAChB,GAAA,IAAO,WAAA,CAAY,CAAA,IAAK,cAAA,CAAe,CAAA;EArb/B;;;;EAAA,OA0bJ,UAAA,CAAW,GAAA,YAAe,GAAA,IAAO,cAAA;AAAA"}
1
+ {"version":3,"file":"ai.d.cts","names":[],"sources":["../../src/messages/ai.ts"],"mappings":";;;;;UAqCiB,gBACf,mBAAmB,mBAAmB,0BAC9B,kBAAkB;EAC1B,aAAa,gBAAgB;EAC7B,qBAAqB;EACrB,iBAAiB,sBAAsB;;cAG5B,UAAU,mBAAmB,mBAAmB,0BACnD,YAAY,6BACT,gBAAgB;WAElB;EAET,aAAa,gBAAgB;EAE7B,qBAAqB;EAErB,iBAAiB,gBAAgB;MAE7B,cAAc;EAUlB,YACE,QAAQ,qBAAqB,oBAAoB,gBAAgB;SA0H5D;MAIH,iBAAiB,MAAM,aAAa;MAwC3B,oBAAoB;;;;;;SAc1B,WAAW,UAAU,kBAC1B,KAAK,YAAY,KAChB,OAAO,YAAY,KAAK,UAAU;;;;;SAK9B,WAAW,eAAe,OAAO;UAOhC,OAAO,aAAa,eAAY,OAAA,UAAA,iBAPA;;;;;iBAe1B,YAAY,mBAAmB,kBAC7C,GAAG,cACF,KAAK,UAAU;;;;iBAOF,iBAAiB,mBAAmB,kBAClD,GAAG,mBACF,KAAK,eAAe;KAIX,qBACV,mBAAmB,mBAAmB,oBACpC,gBAAgB;EAClB,mBAAmB;;;;;;cAOR,eACX,mBAAmB,mBAAmB,0BAE9B,iBAAiB,6BACd,UAAU,aAAa,qBAAqB;WAE9C;EAET,aAAa,gBAAgB;EAE7B,qBAAqB;EAErB,mBAAmB;EAEnB,iBAAiB,qBAAqB;EAEtC,YACE,QACI,qBAAqB,oBACrB,qBAAqB;MAgDvB,cAAc;SAWX;MAIH,iBAAiB,MAAM,aAAa;MA4C3B,oBAAoB;EAUjC,OAAO,OAAO,eAAe;;;;;;SAuDtB,WAAW,UAAU,kBAC1B,KAAK,YAAY,KAChB,OAAO,YAAY,KAAK,eAAe;;;;;SAKnC,WAAW,eAAe,OAAO;UAOhC,OAAO,aAAa,eAAY,OAAA,eAAA,iBAPA"}
@@ -1,8 +1,7 @@
1
1
  import { ContentBlock } from "./content/index.js";
2
2
  import { BaseMessage, BaseMessageChunk, BaseMessageFields } from "./base.js";
3
3
  import { InvalidToolCall, ToolCallChunk } from "./tool.js";
4
- import { $InferMessageContent, $InferMessageProperty, $InferToolCalls, MessageStructure } from "./message.js";
5
-
4
+ import { $InferMessageContent, $InferMessageProperty, $InferToolCalls, MessageStructure, MessageToolSet } from "./message.js";
6
5
  //#region src/messages/ai.d.ts
7
6
  interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, "ai"> {
8
7
  tool_calls?: $InferToolCalls<TStructure>[];
@@ -30,6 +29,7 @@ declare class AIMessage<TStructure extends MessageStructure = MessageStructure>
30
29
  * @overload When called with unknown, returns base AIMessage type
31
30
  */
32
31
  static isInstance(obj: unknown): obj is AIMessage;
32
+ static [Symbol.hasInstance](obj: unknown): obj is AIMessage<MessageStructure<MessageToolSet>>;
33
33
  }
34
34
  /**
35
35
  * @deprecated Use {@link AIMessage.isInstance} instead
@@ -69,6 +69,7 @@ declare class AIMessageChunk<TStructure extends MessageStructure = MessageStruct
69
69
  * @overload When called with unknown, returns base AIMessageChunk type
70
70
  */
71
71
  static isInstance(obj: unknown): obj is AIMessageChunk;
72
+ static [Symbol.hasInstance](obj: unknown): obj is AIMessageChunk<MessageStructure<MessageToolSet>>;
72
73
  }
73
74
  //#endregion
74
75
  export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, isAIMessage, isAIMessageChunk };
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","names":[],"sources":["../../src/messages/ai.ts"],"mappings":";;;;;;UAqCiB,eAAA,oBACI,gBAAA,GAAmB,gBAAA,UAC9B,iBAAA,CAAkB,UAAA;EAC1B,UAAA,GAAa,eAAA,CAAgB,UAAA;EAC7B,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,qBAAA,CAAsB,UAAA;AAAA;AAAA,cAG5B,SAAA,oBAA6B,gBAAA,GAAmB,gBAAA,UACnD,WAAA,CAAY,UAAA,mBACT,eAAA,CAAgB,UAAA;EAAA,SAElB,IAAA;EAET,UAAA,GAAa,eAAA,CAAgB,UAAA;EAE7B,kBAAA,GAAqB,eAAA;EAErB,cAAA,GAAiB,eAAA,CAAgB,UAAA;EAAA,IAE7B,UAAA,CAAA,GAAc,MAAA;EAUlB,WAAA,CACE,MAAA,EAAQ,oBAAA,CAAqB,UAAA,UAAoB,eAAA,CAAgB,UAAA;EAAA,OA0H5D,OAAA,CAAA;EAAA,IAIH,aAAA,CAAA,GAAiB,KAAA,CAAM,YAAA,CAAa,QAAA;EAAA,IAwC3B,gBAAA,CAAA,GAAoB,MAAA;EAnMR;;;;;EAAA,OAiNlB,UAAA,WAAqB,gBAAA,CAAA,CAC1B,GAAA,EAAK,WAAA,CAAY,CAAA,IAChB,GAAA,IAAO,WAAA,CAAY,CAAA,IAAK,SAAA,CAAU,CAAA;EAlNrC;;;;EAAA,OAuNO,UAAA,CAAW,GAAA,YAAe,GAAA,IAAO,SAAA;AAAA;;;;iBAW1B,WAAA,oBAA+B,gBAAA,CAAA,CAC7C,CAAA,EAAG,WAAA,GACF,CAAA,IAAK,SAAA,CAAU,UAAA;AA/NlB;;;AAAA,iBAsOgB,gBAAA,oBAAoC,gBAAA,CAAA,CAClD,CAAA,EAAG,gBAAA,GACF,CAAA,IAAK,cAAA,CAAe,UAAA;AAAA,KAIX,oBAAA,oBACS,gBAAA,GAAmB,gBAAA,IACpC,eAAA,CAAgB,UAAA;EAClB,gBAAA,GAAmB,aAAA;AAAA;;;;;cAOR,cAAA,oBACQ,gBAAA,GAAmB,gBAAA,UAE9B,gBAAA,CAAiB,UAAA,mBACd,SAAA,CAAU,UAAA,GAAa,oBAAA,CAAqB,UAAA;EAAA,SAE9C,IAAA;EAET,UAAA,GAAa,eAAA,CAAgB,UAAA;EAE7B,kBAAA,GAAqB,eAAA;EAErB,gBAAA,GAAmB,aAAA;EAEnB,cAAA,GAAiB,oBAAA,CAAqB,UAAA;EAEtC,WAAA,CACE,MAAA,EACI,oBAAA,CAAqB,UAAA,UACrB,oBAAA,CAAqB,UAAA;EAAA,IAgDvB,UAAA,CAAA,GAAc,MAAA;EAAA,OAWX,OAAA,CAAA;EAAA,IAIH,aAAA,CAAA,GAAiB,KAAA,CAAM,YAAA,CAAa,QAAA;EAAA,IA4C3B,gBAAA,CAAA,GAAoB,MAAA;EAUjC,MAAA,CAAO,KAAA,EAAO,cAAA,CAAe,UAAA;EAjLP;;;;;EAAA,OAwOf,UAAA,WAAqB,gBAAA,CAAA,CAC1B,GAAA,EAAK,WAAA,CAAY,CAAA,IAChB,GAAA,IAAO,WAAA,CAAY,CAAA,IAAK,cAAA,CAAe,CAAA;EArb/B;;;;EAAA,OA0bJ,UAAA,CAAW,GAAA,YAAe,GAAA,IAAO,cAAA;AAAA"}
1
+ {"version":3,"file":"ai.d.ts","names":[],"sources":["../../src/messages/ai.ts"],"mappings":";;;;;UAqCiB,gBACf,mBAAmB,mBAAmB,0BAC9B,kBAAkB;EAC1B,aAAa,gBAAgB;EAC7B,qBAAqB;EACrB,iBAAiB,sBAAsB;;cAG5B,UAAU,mBAAmB,mBAAmB,0BACnD,YAAY,6BACT,gBAAgB;WAElB;EAET,aAAa,gBAAgB;EAE7B,qBAAqB;EAErB,iBAAiB,gBAAgB;MAE7B,cAAc;EAUlB,YACE,QAAQ,qBAAqB,oBAAoB,gBAAgB;SA0H5D;MAIH,iBAAiB,MAAM,aAAa;MAwC3B,oBAAoB;;;;;;SAc1B,WAAW,UAAU,kBAC1B,KAAK,YAAY,KAChB,OAAO,YAAY,KAAK,UAAU;;;;;SAK9B,WAAW,eAAe,OAAO;UAOhC,OAAO,aAAa,eAAY,OAAA,UAAA,iBAPA;;;;;iBAe1B,YAAY,mBAAmB,kBAC7C,GAAG,cACF,KAAK,UAAU;;;;iBAOF,iBAAiB,mBAAmB,kBAClD,GAAG,mBACF,KAAK,eAAe;KAIX,qBACV,mBAAmB,mBAAmB,oBACpC,gBAAgB;EAClB,mBAAmB;;;;;;cAOR,eACX,mBAAmB,mBAAmB,0BAE9B,iBAAiB,6BACd,UAAU,aAAa,qBAAqB;WAE9C;EAET,aAAa,gBAAgB;EAE7B,qBAAqB;EAErB,mBAAmB;EAEnB,iBAAiB,qBAAqB;EAEtC,YACE,QACI,qBAAqB,oBACrB,qBAAqB;MAgDvB,cAAc;SAWX;MAIH,iBAAiB,MAAM,aAAa;MA4C3B,oBAAoB;EAUjC,OAAO,OAAO,eAAe;;;;;;SAuDtB,WAAW,UAAU,kBAC1B,KAAK,YAAY,KAChB,OAAO,YAAY,KAAK,eAAe;;;;;SAKnC,WAAW,eAAe,OAAO;UAOhC,OAAO,aAAa,eAAY,OAAA,eAAA,iBAPA"}
@@ -120,6 +120,9 @@ var AIMessage = class extends BaseMessage {
120
120
  static isInstance(obj) {
121
121
  return super.isInstance(obj) && obj.type === "ai";
122
122
  }
123
+ static [Symbol.hasInstance](obj) {
124
+ return this.isInstance(obj);
125
+ }
123
126
  };
124
127
  /**
125
128
  * @deprecated Use {@link AIMessage.isInstance} instead
@@ -240,6 +243,9 @@ var AIMessageChunk = class extends BaseMessageChunk {
240
243
  static isInstance(obj) {
241
244
  return super.isInstance(obj) && obj.type === "ai";
242
245
  }
246
+ static [Symbol.hasInstance](obj) {
247
+ return this.isInstance(obj);
248
+ }
243
249
  };
244
250
  //#endregion
245
251
  export { AIMessage, AIMessageChunk, isAIMessage, isAIMessageChunk };
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","names":[],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n mergeContent,\n _mergeDicts,\n _mergeLists,\n BaseMessageFields,\n} from \"./base.js\";\nimport { getTranslator } from \"./block_translators/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport {\n $InferMessageContent,\n $InferMessageProperty,\n $InferToolCalls,\n MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { collapseToolCallChunks, Constructor } from \"./utils.js\";\n\nfunction coerceToContentBlocks(value: unknown): ContentBlock.Standard[] {\n if (typeof value === \"string\") {\n return value.length > 0 ? [{ type: \"text\", text: value }] : [];\n }\n if (Array.isArray(value)) {\n return value as Array<ContentBlock.Standard>;\n }\n if (value == null) {\n return [];\n }\n return [value as ContentBlock.Standard];\n}\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: $InferToolCalls<TStructure>[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\n\nexport class AIMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"ai\">\n implements AIMessageFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n constructor(\n fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>\n ) {\n let initParams: AIMessageFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n additional_kwargs: {},\n };\n } else {\n initParams = fields;\n const rawToolCalls = initParams.additional_kwargs?.tool_calls;\n const toolCalls = initParams.tool_calls;\n if (\n !(rawToolCalls == null) &&\n rawToolCalls.length > 0 &&\n (toolCalls === undefined || toolCalls.length === 0)\n ) {\n console.warn(\n [\n \"New LangChain packages are available that more efficiently handle\",\n \"tool calling.\\n\\nPlease upgrade your packages to versions that set\",\n \"message tool calls. e.g., `pnpm install @langchain/anthropic`,\",\n \"pnpm install @langchain/openai`, etc.\",\n ].join(\" \")\n );\n }\n try {\n if (!(rawToolCalls == null) && toolCalls === undefined) {\n const [parsedToolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls =\n (parsedToolCalls as $InferToolCalls<TStructure>[]) ?? [];\n initParams.invalid_tool_calls = invalidToolCalls ?? [];\n } else {\n initParams.tool_calls = initParams.tool_calls ?? [];\n initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];\n }\n } catch {\n // Do nothing if parsing fails\n initParams.tool_calls = [] as $InferToolCalls<TStructure>[];\n initParams.invalid_tool_calls = [];\n }\n\n // Convert content to content blocks if output version is v1.\n // Serialized LangGraph payloads often still carry string `content` even\n // when `output_version` is \"v1\"; normalize to an array before mutating.\n if (\n initParams.response_metadata !== undefined &&\n \"output_version\" in initParams.response_metadata &&\n initParams.response_metadata.output_version === \"v1\" &&\n initParams.content !== undefined\n ) {\n initParams.contentBlocks = coerceToContentBlocks(initParams.content);\n initParams.content = undefined;\n }\n\n if (initParams.contentBlocks !== undefined) {\n if (!Array.isArray(initParams.contentBlocks)) {\n initParams.contentBlocks = coerceToContentBlocks(\n initParams.contentBlocks\n );\n }\n // Add constructor tool calls as content blocks only when they are not\n // already represented in the v1 content payload.\n if (initParams.tool_calls) {\n const missingContentBlockToolCalls = initParams.tool_calls.filter(\n (toolCall) =>\n !initParams.contentBlocks?.some(\n (block) =>\n block.type === \"tool_call\" &&\n block.id === toolCall.id &&\n block.name === toolCall.name\n )\n );\n initParams.contentBlocks.push(\n ...missingContentBlockToolCalls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n }))\n );\n }\n // Add content block tool calls that aren't in the constructor tool calls\n const missingToolCalls = initParams.contentBlocks\n .filter<ContentBlock.Tools.ToolCall>(\n (block): block is ContentBlock.Tools.ToolCall =>\n block.type === \"tool_call\"\n )\n .filter(\n (block) =>\n !initParams.tool_calls?.some(\n (toolCall) =>\n toolCall.id === block.id && toolCall.name === block.name\n )\n );\n if (missingToolCalls.length > 0) {\n initParams.tool_calls = [\n ...(initParams.tool_calls ?? []),\n ...missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id!,\n name: block.name,\n args: block.args as Record<string, unknown>,\n })),\n ] as $InferToolCalls<TStructure>[];\n }\n }\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n if (typeof initParams !== \"string\") {\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n }\n this.usage_metadata = initParams.usage_metadata;\n }\n\n static lc_name() {\n return \"AIMessage\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n const missingToolCalls = this.tool_calls.filter(\n (block) =>\n !blocks.some((b) => b.id === block.id && b.name === block.name)\n );\n blocks.push(\n ...(missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\n })) as ContentBlock.Tools.ToolCall[])\n );\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n /**\n * Type guard to check if an object is an AIMessage.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessage<T>;\n /**\n * Type guard to check if an object is an AIMessage.\n * @overload When called with unknown, returns base AIMessage type\n */\n static isInstance(obj: unknown): obj is AIMessage;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessage<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n}\n\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport function isAIMessage<TStructure extends MessageStructure>(\n x: BaseMessage\n): x is AIMessage<TStructure> {\n return x._getType() === \"ai\";\n}\n\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport function isAIMessageChunk<TStructure extends MessageStructure>(\n x: BaseMessageChunk\n): x is AIMessageChunk<TStructure> {\n return x._getType() === \"ai\";\n}\n\nexport type AIMessageChunkFields<\n TStructure extends MessageStructure = MessageStructure,\n> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport class AIMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n>\n extends BaseMessageChunk<TStructure, \"ai\">\n implements AIMessage<TStructure>, AIMessageChunkFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n tool_call_chunks?: ToolCallChunk[] = [];\n\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>\n ) {\n let initParams: AIMessageChunkFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n };\n } else if (\n fields.tool_call_chunks === undefined ||\n fields.tool_call_chunks.length === 0\n ) {\n initParams = {\n ...fields,\n tool_calls: fields.tool_calls ?? [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n } else {\n const collapsed = collapseToolCallChunks(fields.tool_call_chunks ?? []);\n initParams = {\n ...fields,\n tool_call_chunks: collapsed.tool_call_chunks,\n tool_calls: collapsed.tool_calls as $InferToolCalls<TStructure>[],\n invalid_tool_calls: collapsed.invalid_tool_calls,\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n this.tool_call_chunks =\n initParams.tool_call_chunks ?? this.tool_call_chunks;\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n this.usage_metadata = initParams.usage_metadata;\n }\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n tool_call_chunks: \"tool_call_chunks\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n if (typeof this.content !== \"string\") {\n const contentToolCalls = this.content\n .filter((block) => block.type === \"tool_call\")\n .map((block) => block.id);\n for (const toolCall of this.tool_calls) {\n if (toolCall.id && !contentToolCalls.includes(toolCall.id)) {\n blocks.push({\n ...toolCall,\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n });\n }\n }\n }\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n tool_call_chunks: this.tool_call_chunks,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n concat(chunk: AIMessageChunk<TStructure>) {\n const combinedFields: AIMessageChunkFields = {\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: mergeResponseMetadata(\n this.response_metadata,\n chunk.response_metadata\n ),\n tool_call_chunks: [],\n tool_calls: [],\n id: this.id ?? chunk.id,\n };\n if (\n this.tool_call_chunks !== undefined ||\n chunk.tool_call_chunks !== undefined\n ) {\n const rawToolCalls = _mergeLists(\n this.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[],\n chunk.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_call_chunks = rawToolCalls as ToolCallChunk[];\n }\n }\n if (this.tool_calls !== undefined || chunk.tool_calls !== undefined) {\n const rawToolCalls = _mergeLists(\n this.tool_calls as ContentBlock.Tools.ToolCall[],\n chunk.tool_calls as ContentBlock.Tools.ToolCall[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_calls =\n rawToolCalls as $InferToolCalls<TStructure>[];\n }\n }\n if (\n this.usage_metadata !== undefined ||\n chunk.usage_metadata !== undefined\n ) {\n combinedFields.usage_metadata = mergeUsageMetadata(\n this.usage_metadata,\n chunk.usage_metadata\n );\n }\n const Cls = this.constructor as Constructor<this>;\n return new Cls(combinedFields);\n }\n\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessageChunk<T>;\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * @overload When called with unknown, returns base AIMessageChunk type\n */\n static isInstance(obj: unknown): obj is AIMessageChunk;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessageChunk<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ai.js","names":[],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import {\n BaseMessage,\n BaseMessageChunk,\n mergeContent,\n _mergeDicts,\n _mergeLists,\n BaseMessageFields,\n} from \"./base.js\";\nimport { getTranslator } from \"./block_translators/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport {\n $InferMessageContent,\n $InferMessageProperty,\n $InferToolCalls,\n MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { collapseToolCallChunks, Constructor } from \"./utils.js\";\n\nfunction coerceToContentBlocks(value: unknown): ContentBlock.Standard[] {\n if (typeof value === \"string\") {\n return value.length > 0 ? [{ type: \"text\", text: value }] : [];\n }\n if (Array.isArray(value)) {\n return value as Array<ContentBlock.Standard>;\n }\n if (value == null) {\n return [];\n }\n return [value as ContentBlock.Standard];\n}\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: $InferToolCalls<TStructure>[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\n\nexport class AIMessage<TStructure extends MessageStructure = MessageStructure>\n extends BaseMessage<TStructure, \"ai\">\n implements AIMessageFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n constructor(\n fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>\n ) {\n let initParams: AIMessageFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n additional_kwargs: {},\n };\n } else {\n initParams = fields;\n const rawToolCalls = initParams.additional_kwargs?.tool_calls;\n const toolCalls = initParams.tool_calls;\n if (\n !(rawToolCalls == null) &&\n rawToolCalls.length > 0 &&\n (toolCalls === undefined || toolCalls.length === 0)\n ) {\n console.warn(\n [\n \"New LangChain packages are available that more efficiently handle\",\n \"tool calling.\\n\\nPlease upgrade your packages to versions that set\",\n \"message tool calls. e.g., `pnpm install @langchain/anthropic`,\",\n \"pnpm install @langchain/openai`, etc.\",\n ].join(\" \")\n );\n }\n try {\n if (!(rawToolCalls == null) && toolCalls === undefined) {\n const [parsedToolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls =\n (parsedToolCalls as $InferToolCalls<TStructure>[]) ?? [];\n initParams.invalid_tool_calls = invalidToolCalls ?? [];\n } else {\n initParams.tool_calls = initParams.tool_calls ?? [];\n initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];\n }\n } catch {\n // Do nothing if parsing fails\n initParams.tool_calls = [] as $InferToolCalls<TStructure>[];\n initParams.invalid_tool_calls = [];\n }\n\n // Convert content to content blocks if output version is v1.\n // Serialized LangGraph payloads often still carry string `content` even\n // when `output_version` is \"v1\"; normalize to an array before mutating.\n if (\n initParams.response_metadata !== undefined &&\n \"output_version\" in initParams.response_metadata &&\n initParams.response_metadata.output_version === \"v1\" &&\n initParams.content !== undefined\n ) {\n initParams.contentBlocks = coerceToContentBlocks(initParams.content);\n initParams.content = undefined;\n }\n\n if (initParams.contentBlocks !== undefined) {\n if (!Array.isArray(initParams.contentBlocks)) {\n initParams.contentBlocks = coerceToContentBlocks(\n initParams.contentBlocks\n );\n }\n // Add constructor tool calls as content blocks only when they are not\n // already represented in the v1 content payload.\n if (initParams.tool_calls) {\n const missingContentBlockToolCalls = initParams.tool_calls.filter(\n (toolCall) =>\n !initParams.contentBlocks?.some(\n (block) =>\n block.type === \"tool_call\" &&\n block.id === toolCall.id &&\n block.name === toolCall.name\n )\n );\n initParams.contentBlocks.push(\n ...missingContentBlockToolCalls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n }))\n );\n }\n // Add content block tool calls that aren't in the constructor tool calls\n const missingToolCalls = initParams.contentBlocks\n .filter<ContentBlock.Tools.ToolCall>(\n (block): block is ContentBlock.Tools.ToolCall =>\n block.type === \"tool_call\"\n )\n .filter(\n (block) =>\n !initParams.tool_calls?.some(\n (toolCall) =>\n toolCall.id === block.id && toolCall.name === block.name\n )\n );\n if (missingToolCalls.length > 0) {\n initParams.tool_calls = [\n ...(initParams.tool_calls ?? []),\n ...missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id!,\n name: block.name,\n args: block.args as Record<string, unknown>,\n })),\n ] as $InferToolCalls<TStructure>[];\n }\n }\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n if (typeof initParams !== \"string\") {\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n }\n this.usage_metadata = initParams.usage_metadata;\n }\n\n static lc_name() {\n return \"AIMessage\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n const missingToolCalls = this.tool_calls.filter(\n (block) =>\n !blocks.some((b) => b.id === block.id && b.name === block.name)\n );\n blocks.push(\n ...(missingToolCalls.map((block) => ({\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\n })) as ContentBlock.Tools.ToolCall[])\n );\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n /**\n * Type guard to check if an object is an AIMessage.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessage<T>;\n /**\n * Type guard to check if an object is an AIMessage.\n * @overload When called with unknown, returns base AIMessage type\n */\n static isInstance(obj: unknown): obj is AIMessage;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessage<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n}\n\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport function isAIMessage<TStructure extends MessageStructure>(\n x: BaseMessage\n): x is AIMessage<TStructure> {\n return x._getType() === \"ai\";\n}\n\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport function isAIMessageChunk<TStructure extends MessageStructure>(\n x: BaseMessageChunk\n): x is AIMessageChunk<TStructure> {\n return x._getType() === \"ai\";\n}\n\nexport type AIMessageChunkFields<\n TStructure extends MessageStructure = MessageStructure,\n> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport class AIMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n>\n extends BaseMessageChunk<TStructure, \"ai\">\n implements AIMessage<TStructure>, AIMessageChunkFields<TStructure>\n{\n readonly type = \"ai\" as const;\n\n tool_calls?: $InferToolCalls<TStructure>[] = [];\n\n invalid_tool_calls?: InvalidToolCall[] = [];\n\n tool_call_chunks?: ToolCallChunk[] = [];\n\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n\n constructor(\n fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>\n ) {\n let initParams: AIMessageChunkFields<TStructure>;\n if (typeof fields === \"string\" || Array.isArray(fields)) {\n initParams = {\n content: fields,\n tool_calls: [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n };\n } else if (\n fields.tool_call_chunks === undefined ||\n fields.tool_call_chunks.length === 0\n ) {\n initParams = {\n ...fields,\n tool_calls: fields.tool_calls ?? [],\n invalid_tool_calls: [],\n tool_call_chunks: [],\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n } else {\n const collapsed = collapseToolCallChunks(fields.tool_call_chunks ?? []);\n initParams = {\n ...fields,\n tool_call_chunks: collapsed.tool_call_chunks,\n tool_calls: collapsed.tool_calls as $InferToolCalls<TStructure>[],\n invalid_tool_calls: collapsed.invalid_tool_calls,\n usage_metadata:\n fields.usage_metadata !== undefined\n ? fields.usage_metadata\n : undefined,\n };\n }\n // Sadly, TypeScript only allows super() calls at root if the class has\n // properties with initializers, so we have to check types twice.\n super(initParams);\n this.tool_call_chunks =\n initParams.tool_call_chunks ?? this.tool_call_chunks;\n this.tool_calls = initParams.tool_calls ?? this.tool_calls;\n this.invalid_tool_calls =\n initParams.invalid_tool_calls ?? this.invalid_tool_calls;\n this.usage_metadata = initParams.usage_metadata;\n }\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n ...super.lc_aliases,\n tool_calls: \"tool_calls\",\n invalid_tool_calls: \"invalid_tool_calls\",\n tool_call_chunks: \"tool_call_chunks\",\n usage_metadata: \"usage_metadata\",\n };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\n this.response_metadata &&\n \"output_version\" in this.response_metadata &&\n this.response_metadata.output_version === \"v1\"\n ) {\n return this.content as Array<ContentBlock.Standard>;\n }\n\n if (\n this.response_metadata &&\n \"model_provider\" in this.response_metadata &&\n typeof this.response_metadata.model_provider === \"string\"\n ) {\n const translator = getTranslator(this.response_metadata.model_provider);\n if (translator) {\n return translator.translateContent(this as AIMessage);\n }\n }\n\n const blocks = super.contentBlocks;\n\n if (this.tool_calls) {\n if (typeof this.content !== \"string\") {\n const contentToolCalls = this.content\n .filter((block) => block.type === \"tool_call\")\n .map((block) => block.id);\n for (const toolCall of this.tool_calls) {\n if (toolCall.id && !contentToolCalls.includes(toolCall.id)) {\n blocks.push({\n ...toolCall,\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n });\n }\n }\n }\n }\n\n return blocks;\n }\n\n override get _printableFields(): Record<string, unknown> {\n return {\n ...super._printableFields,\n tool_calls: this.tool_calls,\n tool_call_chunks: this.tool_call_chunks,\n invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n concat(chunk: AIMessageChunk<TStructure>) {\n const combinedFields: AIMessageChunkFields = {\n content: mergeContent(this.content, chunk.content),\n additional_kwargs: _mergeDicts(\n this.additional_kwargs,\n chunk.additional_kwargs\n ),\n response_metadata: mergeResponseMetadata(\n this.response_metadata,\n chunk.response_metadata\n ),\n tool_call_chunks: [],\n tool_calls: [],\n id: this.id ?? chunk.id,\n };\n if (\n this.tool_call_chunks !== undefined ||\n chunk.tool_call_chunks !== undefined\n ) {\n const rawToolCalls = _mergeLists(\n this.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[],\n chunk.tool_call_chunks as ContentBlock.Tools.ToolCallChunk[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_call_chunks = rawToolCalls as ToolCallChunk[];\n }\n }\n if (this.tool_calls !== undefined || chunk.tool_calls !== undefined) {\n const rawToolCalls = _mergeLists(\n this.tool_calls as ContentBlock.Tools.ToolCall[],\n chunk.tool_calls as ContentBlock.Tools.ToolCall[]\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_calls =\n rawToolCalls as $InferToolCalls<TStructure>[];\n }\n }\n if (\n this.usage_metadata !== undefined ||\n chunk.usage_metadata !== undefined\n ) {\n combinedFields.usage_metadata = mergeUsageMetadata(\n this.usage_metadata,\n chunk.usage_metadata\n );\n }\n const Cls = this.constructor as Constructor<this>;\n return new Cls(combinedFields);\n }\n\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * Preserves the MessageStructure type parameter when called with a typed BaseMessage.\n * @overload When called with a typed BaseMessage, preserves the TStructure type\n */\n static isInstance<T extends MessageStructure>(\n obj: BaseMessage<T>\n ): obj is BaseMessage<T> & AIMessageChunk<T>;\n /**\n * Type guard to check if an object is an AIMessageChunk.\n * @overload When called with unknown, returns base AIMessageChunk type\n */\n static isInstance(obj: unknown): obj is AIMessageChunk;\n static isInstance<T extends MessageStructure = MessageStructure>(\n obj: BaseMessage<T> | unknown\n ): obj is AIMessageChunk<T> {\n return super.isInstance(obj) && (obj as { type: string }).type === \"ai\";\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n}\n"],"mappings":"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"}
@@ -182,6 +182,9 @@ var BaseMessage = class extends require_load_serializable.Serializable {
182
182
  static isInstance(obj) {
183
183
  return typeof obj === "object" && obj !== null && MESSAGE_SYMBOL in obj && obj[MESSAGE_SYMBOL] === true && require_message.isMessage(obj);
184
184
  }
185
+ static [Symbol.hasInstance](obj) {
186
+ return this.isInstance(obj);
187
+ }
185
188
  _updateId(value) {
186
189
  this.id = value;
187
190
  this.lc_kwargs.id = value;
@@ -330,6 +333,9 @@ var BaseMessageChunk = class BaseMessageChunk extends BaseMessage {
330
333
  }
331
334
  return false;
332
335
  }
336
+ static [Symbol.hasInstance](obj) {
337
+ return this.isInstance(obj);
338
+ }
333
339
  };
334
340
  function _isMessageFieldWithRole(x) {
335
341
  return typeof x.role === "string";
@@ -1 +1 @@
1
- {"version":3,"file":"base.cjs","names":["isDataContentBlock","Serializable","convertToV1FromDataContent","convertToV1FromChatCompletionsInput","convertToV1FromAnthropicInput","isMessage","convertToFormattedString"],"sources":["../../src/messages/base.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { isDataContentBlock } from \"./content/data.js\";\nimport { convertToV1FromAnthropicInput } from \"./block_translators/anthropic.js\";\nimport { convertToV1FromDataContent } from \"./block_translators/data.js\";\nimport { convertToV1FromChatCompletionsInput } from \"./block_translators/openai.js\";\nimport {\n $InferMessageContent,\n $InferResponseMetadata,\n MessageStructure,\n MessageType,\n isMessage,\n Message,\n} from \"./message.js\";\nimport {\n convertToFormattedString,\n type MessageStringFormat,\n} from \"./format.js\";\n\n/** @internal */\nconst MESSAGE_SYMBOL: symbol = Symbol.for(\"langchain.message\");\n\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\n\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\n\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\n\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\n\nexport type MessageContent = string | Array<ContentBlock>;\n\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n}\n\nexport type BaseMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n> = Pick<Message, \"id\" | \"name\"> & {\n content?: $InferMessageContent<TStructure, TRole>;\n contentBlocks?: Array<ContentBlock.Standard>;\n /** @deprecated */\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;\n};\n\n/**\n * Normalize non-string `firstContent` to a block array for merge/spread.\n * Some serializers (e.g. Anthropic-style) yield a single block object instead of a one-element array;\n * spreading that object as an array throws (\"is not iterable\").\n */\nfunction contentBlocksFromNonStringFirst(\n firstContent: MessageContent\n): ContentBlock[] {\n if (Array.isArray(firstContent)) {\n return firstContent;\n }\n if (typeof firstContent === \"string\") {\n return firstContent === \"\" ? [] : [{ type: \"text\", text: firstContent }];\n }\n if (firstContent == null) {\n return [];\n }\n return [firstContent as ContentBlock];\n}\n\nexport function mergeContent(\n firstContent: MessageContent,\n secondContent: MessageContent\n): MessageContent {\n // If first content is a string\n if (typeof firstContent === \"string\") {\n if (firstContent === \"\") {\n return secondContent;\n }\n if (typeof secondContent === \"string\") {\n return firstContent + secondContent;\n } else if (Array.isArray(secondContent) && secondContent.length === 0) {\n return firstContent;\n } else if (\n Array.isArray(secondContent) &&\n secondContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n {\n type: \"text\",\n source_type: \"text\",\n text: firstContent,\n },\n ...secondContent,\n ];\n } else {\n return [{ type: \"text\", text: firstContent }, ...secondContent];\n }\n // If both are arrays\n } else if (Array.isArray(secondContent)) {\n const left = contentBlocksFromNonStringFirst(firstContent);\n return _mergeLists(left, secondContent) ?? [...left, ...secondContent];\n } else {\n if (secondContent === \"\") {\n return firstContent;\n } else if (\n Array.isArray(firstContent) &&\n firstContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n ...firstContent,\n {\n type: \"file\",\n source_type: \"text\",\n text: secondContent,\n },\n ];\n } else {\n const left = contentBlocksFromNonStringFirst(firstContent);\n return [...left, { type: \"text\", text: secondContent }];\n }\n }\n}\n\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport function _mergeStatus(\n left?: \"success\" | \"error\",\n right?: \"success\" | \"error\"\n): \"success\" | \"error\" | undefined {\n if (left === \"error\" || right === \"error\") {\n return \"error\";\n }\n return \"success\";\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n function helper(obj: any, currentDepth: number): any {\n if (typeof obj !== \"object\" || obj === null || obj === undefined) {\n return obj;\n }\n if (currentDepth >= depthLimit) {\n if (Array.isArray(obj)) {\n return \"[Array]\";\n }\n return \"[Object]\";\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => helper(item, currentDepth + 1));\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = helper(obj[key], currentDepth + 1);\n }\n return result;\n }\n\n return JSON.stringify(helper(obj, 0), null, 2);\n}\n\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport abstract class BaseMessage<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n>\n extends Serializable\n implements Message<TStructure, TRole>\n{\n lc_namespace = [\"langchain_core\", \"messages\"];\n\n lc_serializable = true;\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n additional_kwargs: \"additional_kwargs\",\n response_metadata: \"response_metadata\",\n };\n }\n\n readonly [MESSAGE_SYMBOL] = true as const;\n\n abstract readonly type: TRole;\n\n id?: string;\n\n /** @inheritdoc */\n name?: string;\n\n content: $InferMessageContent<TStructure, TRole>;\n\n additional_kwargs: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]\n >;\n\n response_metadata: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"response_metadata\"]\n >;\n\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n _getType(): MessageType {\n return this.type;\n }\n\n /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType {\n return this._getType();\n }\n\n constructor(\n arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>\n ) {\n const fields: BaseMessageFields<TStructure, TRole> =\n typeof arg === \"string\" || Array.isArray(arg)\n ? ({ content: arg } as BaseMessageFields<TStructure, TRole>)\n : arg;\n if (!fields.additional_kwargs) {\n fields.additional_kwargs = {};\n }\n if (!fields.response_metadata) {\n fields.response_metadata = {};\n }\n super(fields);\n this.name = fields.name;\n if (fields.content === undefined && fields.contentBlocks !== undefined) {\n this.content = fields.contentBlocks as $InferMessageContent<\n TStructure,\n TRole\n >;\n this.response_metadata = {\n output_version: \"v1\",\n ...fields.response_metadata,\n };\n } else if (fields.content !== undefined) {\n this.content = fields.content ?? [];\n this.response_metadata = fields.response_metadata;\n } else {\n this.content = [] as $InferMessageContent<TStructure, TRole>;\n this.response_metadata = fields.response_metadata;\n }\n this.additional_kwargs = fields.additional_kwargs;\n this.id = fields.id;\n }\n\n /** Get text content of the message. */\n get text(): string {\n if (typeof this.content === \"string\") {\n return this.content;\n }\n if (!Array.isArray(this.content)) return \"\";\n return this.content\n .map((c) => {\n if (typeof c === \"string\") return c;\n if (c.type === \"text\") return c.text;\n return \"\";\n })\n .join(\"\");\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n const blocks: Array<ContentBlock> =\n typeof this.content === \"string\"\n ? [{ type: \"text\", text: this.content }]\n : this.content;\n const parsingSteps = [\n convertToV1FromDataContent,\n convertToV1FromChatCompletionsInput,\n convertToV1FromAnthropicInput,\n ];\n const parsedBlocks = parsingSteps.reduce(\n (blocks, step) => step(blocks),\n blocks\n );\n return parsedBlocks as Array<ContentBlock.Standard>;\n }\n\n toDict(): StoredMessage {\n return {\n type: this.getType(),\n data: (this.toJSON() as SerializedConstructor)\n .kwargs as StoredMessageData,\n };\n }\n\n static lc_name() {\n return \"BaseMessage\";\n }\n\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown> {\n return {\n id: this.id,\n content: this.content,\n name: this.name,\n additional_kwargs: this.additional_kwargs,\n response_metadata: this.response_metadata,\n };\n }\n\n static isInstance(obj: unknown): obj is BaseMessage {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n MESSAGE_SYMBOL in obj &&\n (obj as Record<symbol, unknown>)[MESSAGE_SYMBOL] === true &&\n isMessage(obj)\n );\n }\n\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined) {\n this.id = value;\n\n // lc_attributes wouldn't work here, because jest compares the\n // whole object\n this.lc_kwargs.id = value;\n }\n\n get [Symbol.toStringTag]() {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n return (this.constructor as any).lc_name();\n }\n\n // Override the default behavior of console.log\n [Symbol.for(\"nodejs.util.inspect.custom\")](depth: number | null) {\n if (depth === null) {\n return this;\n }\n const printable = stringifyWithDepthLimit(\n this._printableFields,\n Math.max(4, depth)\n );\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\n }\n\n toFormattedString(format: MessageStringFormat = \"pretty\"): string {\n return convertToFormattedString(this, format);\n }\n}\n\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n\n index?: number;\n};\n\nexport function isOpenAIToolCallArray(\n value?: unknown\n): value is OpenAIToolCall[] {\n return (\n Array.isArray(value) &&\n value.every((v) => typeof (v as OpenAIToolCall).index === \"number\")\n );\n}\n\n/**\n * Default keys that should be preserved (not merged) when concatenating message chunks.\n * These are identification and timestamp fields that shouldn't be summed or concatenated.\n */\nexport const DEFAULT_MERGE_IGNORE_KEYS: readonly string[] = [\n \"index\", // Used for identification in tool calls, not accumulation\n \"created\", // Timestamp field\n \"timestamp\", // Timestamp field\n] as const;\n\n/**\n * Options for controlling merge behavior in `_mergeDicts`.\n */\nexport interface MergeDictsOptions {\n /**\n * Keys to ignore during merging. When a key is in this list:\n * - For numeric values: the original value is preserved (not summed)\n * - For string values: the original value is preserved (not concatenated)\n *\n * Defaults to `DEFAULT_MERGE_IGNORE_KEYS` which includes 'index', 'created', 'timestamp'.\n *\n * @example\n * // Extend defaults with custom keys\n * { ignoreKeys: [...DEFAULT_MERGE_IGNORE_KEYS, 'role', 'customField'] }\n */\n ignoreKeys?: readonly string[];\n}\n\nexport function _mergeDicts(\n /**\n * The left dictionary to merge.\n */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any> | undefined,\n /**\n * The right dictionary to merge.\n * @type {Record<string, any>}\n */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any> | undefined,\n /**\n * The options for the merge.\n */\n options?: MergeDictsOptions\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> | undefined {\n /**\n * The keys to ignore during merging.\n */\n const ignoreKeys = options?.ignoreKeys ?? DEFAULT_MERGE_IGNORE_KEYS;\n if (left == null && right == null) {\n return undefined;\n }\n if (left == null || right == null) {\n return left ?? right;\n }\n const merged = { ...left };\n for (const [key, value] of Object.entries(right)) {\n if (merged[key] == null) {\n merged[key] = value;\n } else if (value == null) {\n continue;\n } else if (\n typeof merged[key] !== typeof value ||\n Array.isArray(merged[key]) !== Array.isArray(value)\n ) {\n throw new Error(\n `field[${key}] already exists in the message chunk, but with a different type.`\n );\n } else if (typeof merged[key] === \"string\") {\n if (key === \"type\") {\n // Do not merge 'type' fields\n continue;\n } else if (\n [\"id\", \"name\", \"output_version\", \"model_provider\"].includes(key)\n ) {\n // Keep the incoming value for these fields if its defined\n if (value) {\n merged[key] = value;\n }\n } else if (ignoreKeys.includes(key)) {\n // Preserve the original value for ignored keys\n continue;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"number\") {\n if (ignoreKeys.includes(key)) {\n // Preserve the original value for ignored keys\n continue;\n }\n merged[key] = merged[key] + value;\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value, options);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value, options);\n } else if (merged[key] === value) {\n continue;\n } else {\n console.warn(\n `field[${key}] already exists in this message chunk and value has unsupported type.`\n );\n }\n }\n return merged;\n}\n\nfunction isMergeableIndex(index: unknown): index is number | string {\n return typeof index === \"number\" || typeof index === \"string\";\n}\n\nfunction hasMergeableIndex(\n value: unknown\n): value is { index: number | string } {\n if (typeof value !== \"object\" || value === null) return false;\n if (!(\"index\" in value)) return false;\n return isMergeableIndex(value.index);\n}\n\nfunction hasMergeableId(value: unknown): value is { id: string | number } {\n if (typeof value !== \"object\" || value === null) return false;\n if (!(\"id\" in value)) return false;\n const id = (value as Record<string, unknown>).id;\n return id != null && id !== \"\";\n}\n\nfunction getMergeableTypeBase(type: string): string {\n return type.endsWith(\"_delta\") ? type.slice(0, -\"_delta\".length) : type;\n}\n\nfunction hasMismatchedMergeableType(left: unknown, right: unknown): boolean {\n if (typeof left !== \"object\" || left === null) return false;\n if (typeof right !== \"object\" || right === null) return false;\n if (!(\"type\" in left) || !(\"type\" in right)) return false;\n\n return (\n typeof left.type === \"string\" &&\n typeof right.type === \"string\" &&\n getMergeableTypeBase(left.type) !== getMergeableTypeBase(right.type)\n );\n}\n\n/**\n * Find the index of an existing item in `merged` that should be merged with\n * `item`, based on index and/or id matching.\n *\n * Matching priority:\n * 1. Both have index → match on index (+ id when both present)\n * 2. Neither has index, both have id → match on id alone\n * 3. Otherwise → no match (item should be appended)\n */\nfunction _findMergeTarget<Content extends ContentBlock>(\n merged: Content[],\n item: Content\n): number {\n const itemHasIndex = hasMergeableIndex(item);\n const itemHasId = hasMergeableId(item);\n\n if (!itemHasIndex && !itemHasId) return -1;\n\n return merged.findIndex((leftItem) => {\n const leftHasIndex = hasMergeableIndex(leftItem);\n const leftHasId = hasMergeableId(leftItem);\n\n if (itemHasIndex && leftHasIndex) {\n // Both have index: match on index, with id as tiebreaker\n const indicesMatch = leftItem.index === item.index;\n if (!indicesMatch) return false;\n if (hasMismatchedMergeableType(leftItem, item)) return false;\n if (leftHasId && itemHasId) return leftItem.id === item.id;\n return true; // indices match, one or both missing id\n }\n\n if (!itemHasIndex && !leftHasIndex && itemHasId && leftHasId) {\n // Neither has index: fall back to id-only matching. Handles providers\n // that don't include `index` on streaming tool call deltas.\n return leftItem.id === item.id;\n }\n\n return false;\n });\n}\n\nexport function _mergeLists<Content extends ContentBlock>(\n left?: Content[],\n right?: Content[],\n options?: MergeDictsOptions\n): Content[] | undefined {\n if (left == null && right == null) {\n return undefined;\n } else if (left == null || right == null) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n const toMerge = _findMergeTarget(merged, item);\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(\n merged[toMerge],\n item,\n options\n ) as Content;\n } else if (\n typeof item === \"object\" &&\n item !== null &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined,\n options?: MergeDictsOptions\n): T | undefined {\n if (left == null && right == null) {\n return undefined;\n }\n if (left == null || right == null) {\n return left ?? right;\n } else if (typeof left !== typeof right) {\n throw new Error(\n `Cannot merge objects of different types.\\nLeft ${typeof left}\\nRight ${typeof right}`\n );\n } else if (typeof left === \"string\" && typeof right === \"string\") {\n return (left + right) as T;\n } else if (Array.isArray(left) && Array.isArray(right)) {\n return _mergeLists(left, right, options) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(\n left as Record<string, unknown>,\n right as Record<string, unknown>,\n options\n ) as T;\n } else if (left === right) {\n return left;\n } else {\n throw new Error(\n `Can not merge objects of different types.\\nLeft ${left}\\nRight ${right}`\n );\n }\n}\n\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport abstract class BaseMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n\n static isInstance(obj: unknown): obj is BaseMessageChunk {\n if (!super.isInstance(obj)) {\n return false;\n }\n // Check if obj is an instance of BaseMessageChunk by traversing the prototype chain\n let proto = Object.getPrototypeOf(obj);\n while (proto !== null) {\n if (proto === BaseMessageChunk.prototype) {\n return true;\n }\n proto = Object.getPrototypeOf(proto);\n }\n return false;\n }\n}\n\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\n\nexport function _isMessageFieldWithRole(\n x: BaseMessageLike\n): x is MessageFieldWithRole {\n return typeof (x as MessageFieldWithRole).role === \"string\";\n}\n\nexport type BaseMessageLike =\n | BaseMessage\n | MessageFieldWithRole\n | [MessageType, MessageContent]\n | string\n /**\n * Serialized form of {@link RemoveMessage}. At runtime,\n * {@link coerceMessageLikeToMessage} converts this to a `RemoveMessage`\n * instance which the `add_messages` reducer uses to delete messages by ID.\n */\n | { type: \"remove\"; id: string }\n /**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n } & BaseMessageFields &\n Record<string, unknown>)\n | SerializedConstructor;\n\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport function isBaseMessage(\n messageLike?: unknown\n): messageLike is BaseMessage {\n return typeof (messageLike as BaseMessage)?._getType === \"function\";\n}\n\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport function isBaseMessageChunk(\n messageLike?: unknown\n): messageLike is BaseMessageChunk {\n return BaseMessageChunk.isInstance(messageLike);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.cjs","names":["isDataContentBlock","Serializable","convertToV1FromDataContent","convertToV1FromChatCompletionsInput","convertToV1FromAnthropicInput","isMessage","convertToFormattedString"],"sources":["../../src/messages/base.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { isDataContentBlock } from \"./content/data.js\";\nimport { convertToV1FromAnthropicInput } from \"./block_translators/anthropic.js\";\nimport { convertToV1FromDataContent } from \"./block_translators/data.js\";\nimport { convertToV1FromChatCompletionsInput } from \"./block_translators/openai.js\";\nimport {\n $InferMessageContent,\n $InferResponseMetadata,\n MessageStructure,\n MessageType,\n isMessage,\n Message,\n} from \"./message.js\";\nimport {\n convertToFormattedString,\n type MessageStringFormat,\n} from \"./format.js\";\n\n/** @internal */\nconst MESSAGE_SYMBOL: symbol = Symbol.for(\"langchain.message\");\n\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n additional_kwargs?: Record<string, any>;\n /** Response metadata. For example: response headers, logprobs, token counts, model name. */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\n\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\n\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\n\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\n\nexport type MessageContent = string | Array<ContentBlock>;\n\nexport interface FunctionCall {\n /**\n * The arguments to call the function with, as generated by the model in JSON\n * format. Note that the model does not always generate valid JSON, and may\n * hallucinate parameters not defined by your function schema. Validate the\n * arguments in your code before calling your function.\n */\n arguments: string;\n\n /**\n * The name of the function to call.\n */\n name: string;\n}\n\nexport type BaseMessageFields<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n> = Pick<Message, \"id\" | \"name\"> & {\n content?: $InferMessageContent<TStructure, TRole>;\n contentBlocks?: Array<ContentBlock.Standard>;\n /** @deprecated */\n additional_kwargs?: {\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n function_call?: FunctionCall;\n /**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\n tool_calls?: OpenAIToolCall[];\n [key: string]: unknown;\n };\n response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;\n};\n\n/**\n * Normalize non-string `firstContent` to a block array for merge/spread.\n * Some serializers (e.g. Anthropic-style) yield a single block object instead of a one-element array;\n * spreading that object as an array throws (\"is not iterable\").\n */\nfunction contentBlocksFromNonStringFirst(\n firstContent: MessageContent\n): ContentBlock[] {\n if (Array.isArray(firstContent)) {\n return firstContent;\n }\n if (typeof firstContent === \"string\") {\n return firstContent === \"\" ? [] : [{ type: \"text\", text: firstContent }];\n }\n if (firstContent == null) {\n return [];\n }\n return [firstContent as ContentBlock];\n}\n\nexport function mergeContent(\n firstContent: MessageContent,\n secondContent: MessageContent\n): MessageContent {\n // If first content is a string\n if (typeof firstContent === \"string\") {\n if (firstContent === \"\") {\n return secondContent;\n }\n if (typeof secondContent === \"string\") {\n return firstContent + secondContent;\n } else if (Array.isArray(secondContent) && secondContent.length === 0) {\n return firstContent;\n } else if (\n Array.isArray(secondContent) &&\n secondContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n {\n type: \"text\",\n source_type: \"text\",\n text: firstContent,\n },\n ...secondContent,\n ];\n } else {\n return [{ type: \"text\", text: firstContent }, ...secondContent];\n }\n // If both are arrays\n } else if (Array.isArray(secondContent)) {\n const left = contentBlocksFromNonStringFirst(firstContent);\n return _mergeLists(left, secondContent) ?? [...left, ...secondContent];\n } else {\n if (secondContent === \"\") {\n return firstContent;\n } else if (\n Array.isArray(firstContent) &&\n firstContent.some((c) => isDataContentBlock(c))\n ) {\n return [\n ...firstContent,\n {\n type: \"file\",\n source_type: \"text\",\n text: secondContent,\n },\n ];\n } else {\n const left = contentBlocksFromNonStringFirst(firstContent);\n return [...left, { type: \"text\", text: secondContent }];\n }\n }\n}\n\n/**\n * 'Merge' two statuses. If either value passed is 'error', it will return 'error'. Else\n * it will return 'success'.\n *\n * @param {\"success\" | \"error\" | undefined} left The existing value to 'merge' with the new value.\n * @param {\"success\" | \"error\" | undefined} right The new value to 'merge' with the existing value\n * @returns {\"success\" | \"error\"} The 'merged' value.\n */\nexport function _mergeStatus(\n left?: \"success\" | \"error\",\n right?: \"success\" | \"error\"\n): \"success\" | \"error\" | undefined {\n if (left === \"error\" || right === \"error\") {\n return \"error\";\n }\n return \"success\";\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n function helper(obj: any, currentDepth: number): any {\n if (typeof obj !== \"object\" || obj === null || obj === undefined) {\n return obj;\n }\n if (currentDepth >= depthLimit) {\n if (Array.isArray(obj)) {\n return \"[Array]\";\n }\n return \"[Object]\";\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => helper(item, currentDepth + 1));\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n result[key] = helper(obj[key], currentDepth + 1);\n }\n return result;\n }\n\n return JSON.stringify(helper(obj, 0), null, 2);\n}\n\n/**\n * Base class for all types of messages in a conversation. It includes\n * properties like `content`, `name`, and `additional_kwargs`. It also\n * includes methods like `toDict()` and `_getType()`.\n */\nexport abstract class BaseMessage<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n>\n extends Serializable\n implements Message<TStructure, TRole>\n{\n lc_namespace = [\"langchain_core\", \"messages\"];\n\n lc_serializable = true;\n\n get lc_aliases(): Record<string, string> {\n // exclude snake case conversion to pascal case\n return {\n additional_kwargs: \"additional_kwargs\",\n response_metadata: \"response_metadata\",\n };\n }\n\n readonly [MESSAGE_SYMBOL] = true as const;\n\n abstract readonly type: TRole;\n\n id?: string;\n\n /** @inheritdoc */\n name?: string;\n\n content: $InferMessageContent<TStructure, TRole>;\n\n additional_kwargs: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]\n >;\n\n response_metadata: NonNullable<\n BaseMessageFields<TStructure, TRole>[\"response_metadata\"]\n >;\n\n /**\n * @deprecated Use .getType() instead or import the proper typeguard.\n * For example:\n *\n * ```ts\n * import { isAIMessage } from \"@langchain/core/messages\";\n *\n * const message = new AIMessage(\"Hello!\");\n * isAIMessage(message); // true\n * ```\n */\n _getType(): MessageType {\n return this.type;\n }\n\n /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType {\n return this._getType();\n }\n\n constructor(\n arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>\n ) {\n const fields: BaseMessageFields<TStructure, TRole> =\n typeof arg === \"string\" || Array.isArray(arg)\n ? ({ content: arg } as BaseMessageFields<TStructure, TRole>)\n : arg;\n if (!fields.additional_kwargs) {\n fields.additional_kwargs = {};\n }\n if (!fields.response_metadata) {\n fields.response_metadata = {};\n }\n super(fields);\n this.name = fields.name;\n if (fields.content === undefined && fields.contentBlocks !== undefined) {\n this.content = fields.contentBlocks as $InferMessageContent<\n TStructure,\n TRole\n >;\n this.response_metadata = {\n output_version: \"v1\",\n ...fields.response_metadata,\n };\n } else if (fields.content !== undefined) {\n this.content = fields.content ?? [];\n this.response_metadata = fields.response_metadata;\n } else {\n this.content = [] as $InferMessageContent<TStructure, TRole>;\n this.response_metadata = fields.response_metadata;\n }\n this.additional_kwargs = fields.additional_kwargs;\n this.id = fields.id;\n }\n\n /** Get text content of the message. */\n get text(): string {\n if (typeof this.content === \"string\") {\n return this.content;\n }\n if (!Array.isArray(this.content)) return \"\";\n return this.content\n .map((c) => {\n if (typeof c === \"string\") return c;\n if (c.type === \"text\") return c.text;\n return \"\";\n })\n .join(\"\");\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n const blocks: Array<ContentBlock> =\n typeof this.content === \"string\"\n ? [{ type: \"text\", text: this.content }]\n : this.content;\n const parsingSteps = [\n convertToV1FromDataContent,\n convertToV1FromChatCompletionsInput,\n convertToV1FromAnthropicInput,\n ];\n const parsedBlocks = parsingSteps.reduce(\n (blocks, step) => step(blocks),\n blocks\n );\n return parsedBlocks as Array<ContentBlock.Standard>;\n }\n\n toDict(): StoredMessage {\n return {\n type: this.getType(),\n data: (this.toJSON() as SerializedConstructor)\n .kwargs as StoredMessageData,\n };\n }\n\n static lc_name() {\n return \"BaseMessage\";\n }\n\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown> {\n return {\n id: this.id,\n content: this.content,\n name: this.name,\n additional_kwargs: this.additional_kwargs,\n response_metadata: this.response_metadata,\n };\n }\n\n static isInstance(obj: unknown): obj is BaseMessage {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n MESSAGE_SYMBOL in obj &&\n (obj as Record<symbol, unknown>)[MESSAGE_SYMBOL] === true &&\n isMessage(obj)\n );\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n\n // this private method is used to update the ID for the runtime\n // value as well as in lc_kwargs for serialisation\n _updateId(value: string | undefined) {\n this.id = value;\n\n // lc_attributes wouldn't work here, because jest compares the\n // whole object\n this.lc_kwargs.id = value;\n }\n\n get [Symbol.toStringTag]() {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n return (this.constructor as any).lc_name();\n }\n\n // Override the default behavior of console.log\n [Symbol.for(\"nodejs.util.inspect.custom\")](depth: number | null) {\n if (depth === null) {\n return this;\n }\n const printable = stringifyWithDepthLimit(\n this._printableFields,\n Math.max(4, depth)\n );\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\n }\n\n toFormattedString(format: MessageStringFormat = \"pretty\"): string {\n return convertToFormattedString(this, format);\n }\n}\n\n/**\n * @deprecated Use \"tool_calls\" field on AIMessages instead\n */\nexport type OpenAIToolCall = {\n /**\n * The ID of the tool call.\n */\n id: string;\n\n /**\n * The function that the model called.\n */\n function: FunctionCall;\n\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n\n index?: number;\n};\n\nexport function isOpenAIToolCallArray(\n value?: unknown\n): value is OpenAIToolCall[] {\n return (\n Array.isArray(value) &&\n value.every((v) => typeof (v as OpenAIToolCall).index === \"number\")\n );\n}\n\n/**\n * Default keys that should be preserved (not merged) when concatenating message chunks.\n * These are identification and timestamp fields that shouldn't be summed or concatenated.\n */\nexport const DEFAULT_MERGE_IGNORE_KEYS: readonly string[] = [\n \"index\", // Used for identification in tool calls, not accumulation\n \"created\", // Timestamp field\n \"timestamp\", // Timestamp field\n] as const;\n\n/**\n * Options for controlling merge behavior in `_mergeDicts`.\n */\nexport interface MergeDictsOptions {\n /**\n * Keys to ignore during merging. When a key is in this list:\n * - For numeric values: the original value is preserved (not summed)\n * - For string values: the original value is preserved (not concatenated)\n *\n * Defaults to `DEFAULT_MERGE_IGNORE_KEYS` which includes 'index', 'created', 'timestamp'.\n *\n * @example\n * // Extend defaults with custom keys\n * { ignoreKeys: [...DEFAULT_MERGE_IGNORE_KEYS, 'role', 'customField'] }\n */\n ignoreKeys?: readonly string[];\n}\n\nexport function _mergeDicts(\n /**\n * The left dictionary to merge.\n */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any> | undefined,\n /**\n * The right dictionary to merge.\n * @type {Record<string, any>}\n */\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any> | undefined,\n /**\n * The options for the merge.\n */\n options?: MergeDictsOptions\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> | undefined {\n /**\n * The keys to ignore during merging.\n */\n const ignoreKeys = options?.ignoreKeys ?? DEFAULT_MERGE_IGNORE_KEYS;\n if (left == null && right == null) {\n return undefined;\n }\n if (left == null || right == null) {\n return left ?? right;\n }\n const merged = { ...left };\n for (const [key, value] of Object.entries(right)) {\n if (merged[key] == null) {\n merged[key] = value;\n } else if (value == null) {\n continue;\n } else if (\n typeof merged[key] !== typeof value ||\n Array.isArray(merged[key]) !== Array.isArray(value)\n ) {\n throw new Error(\n `field[${key}] already exists in the message chunk, but with a different type.`\n );\n } else if (typeof merged[key] === \"string\") {\n if (key === \"type\") {\n // Do not merge 'type' fields\n continue;\n } else if (\n [\"id\", \"name\", \"output_version\", \"model_provider\"].includes(key)\n ) {\n // Keep the incoming value for these fields if its defined\n if (value) {\n merged[key] = value;\n }\n } else if (ignoreKeys.includes(key)) {\n // Preserve the original value for ignored keys\n continue;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"number\") {\n if (ignoreKeys.includes(key)) {\n // Preserve the original value for ignored keys\n continue;\n }\n merged[key] = merged[key] + value;\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value, options);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value, options);\n } else if (merged[key] === value) {\n continue;\n } else {\n console.warn(\n `field[${key}] already exists in this message chunk and value has unsupported type.`\n );\n }\n }\n return merged;\n}\n\nfunction isMergeableIndex(index: unknown): index is number | string {\n return typeof index === \"number\" || typeof index === \"string\";\n}\n\nfunction hasMergeableIndex(\n value: unknown\n): value is { index: number | string } {\n if (typeof value !== \"object\" || value === null) return false;\n if (!(\"index\" in value)) return false;\n return isMergeableIndex(value.index);\n}\n\nfunction hasMergeableId(value: unknown): value is { id: string | number } {\n if (typeof value !== \"object\" || value === null) return false;\n if (!(\"id\" in value)) return false;\n const id = (value as Record<string, unknown>).id;\n return id != null && id !== \"\";\n}\n\nfunction getMergeableTypeBase(type: string): string {\n return type.endsWith(\"_delta\") ? type.slice(0, -\"_delta\".length) : type;\n}\n\nfunction hasMismatchedMergeableType(left: unknown, right: unknown): boolean {\n if (typeof left !== \"object\" || left === null) return false;\n if (typeof right !== \"object\" || right === null) return false;\n if (!(\"type\" in left) || !(\"type\" in right)) return false;\n\n return (\n typeof left.type === \"string\" &&\n typeof right.type === \"string\" &&\n getMergeableTypeBase(left.type) !== getMergeableTypeBase(right.type)\n );\n}\n\n/**\n * Find the index of an existing item in `merged` that should be merged with\n * `item`, based on index and/or id matching.\n *\n * Matching priority:\n * 1. Both have index → match on index (+ id when both present)\n * 2. Neither has index, both have id → match on id alone\n * 3. Otherwise → no match (item should be appended)\n */\nfunction _findMergeTarget<Content extends ContentBlock>(\n merged: Content[],\n item: Content\n): number {\n const itemHasIndex = hasMergeableIndex(item);\n const itemHasId = hasMergeableId(item);\n\n if (!itemHasIndex && !itemHasId) return -1;\n\n return merged.findIndex((leftItem) => {\n const leftHasIndex = hasMergeableIndex(leftItem);\n const leftHasId = hasMergeableId(leftItem);\n\n if (itemHasIndex && leftHasIndex) {\n // Both have index: match on index, with id as tiebreaker\n const indicesMatch = leftItem.index === item.index;\n if (!indicesMatch) return false;\n if (hasMismatchedMergeableType(leftItem, item)) return false;\n if (leftHasId && itemHasId) return leftItem.id === item.id;\n return true; // indices match, one or both missing id\n }\n\n if (!itemHasIndex && !leftHasIndex && itemHasId && leftHasId) {\n // Neither has index: fall back to id-only matching. Handles providers\n // that don't include `index` on streaming tool call deltas.\n return leftItem.id === item.id;\n }\n\n return false;\n });\n}\n\nexport function _mergeLists<Content extends ContentBlock>(\n left?: Content[],\n right?: Content[],\n options?: MergeDictsOptions\n): Content[] | undefined {\n if (left == null && right == null) {\n return undefined;\n } else if (left == null || right == null) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n const toMerge = _findMergeTarget(merged, item);\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(\n merged[toMerge],\n item,\n options\n ) as Content;\n } else if (\n typeof item === \"object\" &&\n item !== null &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined,\n options?: MergeDictsOptions\n): T | undefined {\n if (left == null && right == null) {\n return undefined;\n }\n if (left == null || right == null) {\n return left ?? right;\n } else if (typeof left !== typeof right) {\n throw new Error(\n `Cannot merge objects of different types.\\nLeft ${typeof left}\\nRight ${typeof right}`\n );\n } else if (typeof left === \"string\" && typeof right === \"string\") {\n return (left + right) as T;\n } else if (Array.isArray(left) && Array.isArray(right)) {\n return _mergeLists(left, right, options) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(\n left as Record<string, unknown>,\n right as Record<string, unknown>,\n options\n ) as T;\n } else if (left === right) {\n return left;\n } else {\n throw new Error(\n `Can not merge objects of different types.\\nLeft ${left}\\nRight ${right}`\n );\n }\n}\n\n/**\n * Represents a chunk of a message, which can be concatenated with other\n * message chunks. It includes a method `_merge_kwargs_dict()` for merging\n * additional keyword arguments from another `BaseMessageChunk` into this\n * one. It also overrides the `__add__()` method to support concatenation\n * of `BaseMessageChunk` instances.\n */\nexport abstract class BaseMessageChunk<\n TStructure extends MessageStructure = MessageStructure,\n TRole extends MessageType = MessageType,\n> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n\n static isInstance(obj: unknown): obj is BaseMessageChunk {\n if (!super.isInstance(obj)) {\n return false;\n }\n // Check if obj is an instance of BaseMessageChunk by traversing the prototype chain\n let proto = Object.getPrototypeOf(obj);\n while (proto !== null) {\n if (proto === BaseMessageChunk.prototype) {\n return true;\n }\n proto = Object.getPrototypeOf(proto);\n }\n return false;\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n}\n\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\n\nexport function _isMessageFieldWithRole(\n x: BaseMessageLike\n): x is MessageFieldWithRole {\n return typeof (x as MessageFieldWithRole).role === \"string\";\n}\n\nexport type BaseMessageLike =\n | BaseMessage\n | MessageFieldWithRole\n | [MessageType, MessageContent]\n | string\n /**\n * Serialized form of {@link RemoveMessage}. At runtime,\n * {@link coerceMessageLikeToMessage} converts this to a `RemoveMessage`\n * instance which the `add_messages` reducer uses to delete messages by ID.\n */\n | { type: \"remove\"; id: string }\n /**\n * @deprecated Specifying \"type\" is deprecated and will be removed in 0.4.0.\n */\n | ({\n type: MessageType | \"user\" | \"assistant\" | \"placeholder\";\n } & BaseMessageFields &\n Record<string, unknown>)\n | SerializedConstructor;\n\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport function isBaseMessage(\n messageLike?: unknown\n): messageLike is BaseMessage {\n return typeof (messageLike as BaseMessage)?._getType === \"function\";\n}\n\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport function isBaseMessageChunk(\n messageLike?: unknown\n): messageLike is BaseMessageChunk {\n return BaseMessageChunk.isInstance(messageLike);\n}\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { ContentBlock } from "./content/index.cjs";
2
2
  import { Serializable, SerializedConstructor } from "../load/serializable.cjs";
3
3
  import { MessageStringFormat } from "./format.cjs";
4
- import { $InferMessageContent, $InferResponseMetadata, Message, MessageStructure, MessageType } from "./message.cjs";
5
-
4
+ import { $InferMessageContent, $InferResponseMetadata, Message, MessageStructure, MessageToolSet, MessageType } from "./message.cjs";
6
5
  //#region src/messages/base.d.ts
7
6
  /** @internal */
8
7
  declare const MESSAGE_SYMBOL: symbol;
@@ -45,7 +44,8 @@ interface FunctionCall {
45
44
  }
46
45
  type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = Pick<Message, "id" | "name"> & {
47
46
  content?: $InferMessageContent<TStructure, TRole>;
48
- contentBlocks?: Array<ContentBlock.Standard>; /** @deprecated */
47
+ contentBlocks?: Array<ContentBlock.Standard>;
48
+ /** @deprecated */
49
49
  additional_kwargs?: {
50
50
  /**
51
51
  * @deprecated Use "tool_calls" field on AIMessages instead
@@ -111,6 +111,7 @@ declare abstract class BaseMessage<TStructure extends MessageStructure = Message
111
111
  static lc_name(): string;
112
112
  get _printableFields(): Record<string, unknown>;
113
113
  static isInstance(obj: unknown): obj is BaseMessage;
114
+ static [Symbol.hasInstance](obj: unknown): obj is BaseMessage<MessageStructure<MessageToolSet>, MessageType>;
114
115
  _updateId(value: string | undefined): void;
115
116
  get [Symbol.toStringTag](): any;
116
117
  toFormattedString(format?: MessageStringFormat): string;
@@ -160,18 +161,15 @@ declare function _mergeDicts(
160
161
  /**
161
162
  * The left dictionary to merge.
162
163
  */
163
-
164
164
  left: Record<string, any> | undefined,
165
165
  /**
166
166
  * The right dictionary to merge.
167
167
  * @type {Record<string, any>}
168
168
  */
169
-
170
169
  right: Record<string, any> | undefined,
171
170
  /**
172
171
  * The options for the merge.
173
172
  */
174
-
175
173
  options?: MergeDictsOptions): Record<string, any> | undefined;
176
174
  declare function _mergeLists<Content extends ContentBlock>(left?: Content[], right?: Content[], options?: MergeDictsOptions): Content[] | undefined;
177
175
  declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined, options?: MergeDictsOptions): T | undefined;
@@ -185,6 +183,7 @@ declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined, o
185
183
  declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {
186
184
  abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;
187
185
  static isInstance(obj: unknown): obj is BaseMessageChunk;
186
+ static [Symbol.hasInstance](obj: unknown): obj is BaseMessageChunk<MessageStructure<MessageToolSet>, MessageType>;
188
187
  }
189
188
  type MessageFieldWithRole = {
190
189
  role: MessageType;
@@ -192,20 +191,20 @@ type MessageFieldWithRole = {
192
191
  name?: string;
193
192
  } & Record<string, unknown>;
194
193
  declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;
195
- type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | string
194
+ type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | string |
196
195
  /**
197
196
  * Serialized form of {@link RemoveMessage}. At runtime,
198
197
  * {@link coerceMessageLikeToMessage} converts this to a `RemoveMessage`
199
198
  * instance which the `add_messages` reducer uses to delete messages by ID.
200
199
  */
201
- | {
200
+ {
202
201
  type: "remove";
203
202
  id: string;
204
- }
203
+ } |
205
204
  /**
206
205
  * @deprecated Specifying "type" is deprecated and will be removed in 0.4.0.
207
206
  */
208
- | ({
207
+ ({
209
208
  type: MessageType | "user" | "assistant" | "placeholder";
210
209
  } & BaseMessageFields & Record<string, unknown>) | SerializedConstructor;
211
210
  /**