@langchain/core 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (486) hide show
  1. package/README.md +3 -19
  2. package/dist/caches/base.cjs +2 -2
  3. package/dist/caches/base.cjs.map +1 -1
  4. package/dist/callbacks/base.d.ts.map +1 -1
  5. package/dist/document_loaders/langsmith.cjs +1 -1
  6. package/dist/document_loaders/langsmith.cjs.map +1 -1
  7. package/dist/document_loaders/langsmith.js +1 -1
  8. package/dist/document_loaders/langsmith.js.map +1 -1
  9. package/dist/embeddings.cjs.map +1 -1
  10. package/dist/embeddings.d.cts +6 -6
  11. package/dist/embeddings.d.cts.map +1 -1
  12. package/dist/embeddings.d.ts +6 -6
  13. package/dist/embeddings.d.ts.map +1 -1
  14. package/dist/embeddings.js.map +1 -1
  15. package/dist/errors/index.cjs.map +1 -1
  16. package/dist/errors/index.js.map +1 -1
  17. package/dist/indexing/base.cjs +2 -2
  18. package/dist/indexing/base.cjs.map +1 -1
  19. package/dist/indexing/base.d.cts +0 -3
  20. package/dist/indexing/base.d.cts.map +1 -1
  21. package/dist/indexing/base.d.ts +0 -3
  22. package/dist/indexing/base.d.ts.map +1 -1
  23. package/dist/indexing/base.js +2 -2
  24. package/dist/indexing/base.js.map +1 -1
  25. package/dist/language_models/base.cjs +1 -1
  26. package/dist/language_models/base.cjs.map +1 -1
  27. package/dist/language_models/base.d.cts +3 -3
  28. package/dist/language_models/base.d.cts.map +1 -1
  29. package/dist/language_models/base.d.ts +3 -3
  30. package/dist/language_models/base.d.ts.map +1 -1
  31. package/dist/language_models/base.js +1 -1
  32. package/dist/language_models/base.js.map +1 -1
  33. package/dist/language_models/chat_models.cjs.map +1 -1
  34. package/dist/language_models/chat_models.d.ts.map +1 -1
  35. package/dist/language_models/chat_models.js.map +1 -1
  36. package/dist/language_models/llms.cjs.map +1 -1
  37. package/dist/language_models/llms.js.map +1 -1
  38. package/dist/load/import_map.cjs +1 -5
  39. package/dist/load/import_map.cjs.map +1 -1
  40. package/dist/load/import_map.js +3 -7
  41. package/dist/load/import_map.js.map +1 -1
  42. package/dist/load/index.cjs.map +1 -1
  43. package/dist/load/index.js.map +1 -1
  44. package/dist/load/serializable.cjs.map +1 -1
  45. package/dist/load/serializable.d.cts +1 -3
  46. package/dist/load/serializable.d.cts.map +1 -1
  47. package/dist/load/serializable.d.ts +1 -3
  48. package/dist/load/serializable.d.ts.map +1 -1
  49. package/dist/load/serializable.js.map +1 -1
  50. package/dist/messages/ai.cjs +2 -2
  51. package/dist/messages/ai.cjs.map +1 -1
  52. package/dist/messages/ai.js +2 -2
  53. package/dist/messages/ai.js.map +1 -1
  54. package/dist/messages/base.cjs +5 -5
  55. package/dist/messages/base.cjs.map +1 -1
  56. package/dist/messages/base.d.cts +1 -2
  57. package/dist/messages/base.d.cts.map +1 -1
  58. package/dist/messages/base.d.ts +1 -2
  59. package/dist/messages/base.d.ts.map +1 -1
  60. package/dist/messages/base.js +5 -5
  61. package/dist/messages/base.js.map +1 -1
  62. package/dist/messages/block_translators/utils.cjs +1 -1
  63. package/dist/messages/block_translators/utils.cjs.map +1 -1
  64. package/dist/messages/block_translators/utils.js +1 -1
  65. package/dist/messages/block_translators/utils.js.map +1 -1
  66. package/dist/messages/index.cjs +1 -1
  67. package/dist/messages/index.js +1 -1
  68. package/dist/messages/modifier.cjs +4 -1
  69. package/dist/messages/modifier.cjs.map +1 -1
  70. package/dist/messages/modifier.js +4 -1
  71. package/dist/messages/modifier.js.map +1 -1
  72. package/dist/messages/tool.cjs +7 -7
  73. package/dist/messages/tool.cjs.map +1 -1
  74. package/dist/messages/tool.js +7 -7
  75. package/dist/messages/tool.js.map +1 -1
  76. package/dist/messages/transformers.cjs +2 -2
  77. package/dist/messages/transformers.cjs.map +1 -1
  78. package/dist/messages/transformers.js +2 -2
  79. package/dist/messages/transformers.js.map +1 -1
  80. package/dist/messages/utils.cjs +5 -0
  81. package/dist/messages/utils.cjs.map +1 -1
  82. package/dist/messages/utils.js +5 -0
  83. package/dist/messages/utils.js.map +1 -1
  84. package/dist/output_parsers/list.cjs +1 -1
  85. package/dist/output_parsers/list.cjs.map +1 -1
  86. package/dist/output_parsers/list.js +1 -1
  87. package/dist/output_parsers/list.js.map +1 -1
  88. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts +1 -1
  89. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  90. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs +1 -1
  91. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  92. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js +1 -1
  93. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  94. package/dist/output_parsers/structured.cjs +2 -1
  95. package/dist/output_parsers/structured.cjs.map +1 -1
  96. package/dist/output_parsers/structured.js +2 -1
  97. package/dist/output_parsers/structured.js.map +1 -1
  98. package/dist/prompts/chat.cjs +3 -1
  99. package/dist/prompts/chat.cjs.map +1 -1
  100. package/dist/prompts/chat.d.cts +4 -12
  101. package/dist/prompts/chat.d.cts.map +1 -1
  102. package/dist/prompts/chat.d.ts +4 -12
  103. package/dist/prompts/chat.d.ts.map +1 -1
  104. package/dist/prompts/chat.js +3 -1
  105. package/dist/prompts/chat.js.map +1 -1
  106. package/dist/prompts/image.cjs.map +1 -1
  107. package/dist/prompts/image.d.cts +0 -2
  108. package/dist/prompts/image.d.cts.map +1 -1
  109. package/dist/prompts/image.d.ts +0 -2
  110. package/dist/prompts/image.d.ts.map +1 -1
  111. package/dist/prompts/image.js.map +1 -1
  112. package/dist/prompts/pipeline.cjs.map +1 -1
  113. package/dist/prompts/pipeline.js.map +1 -1
  114. package/dist/prompts/prompt.cjs.map +1 -1
  115. package/dist/prompts/prompt.d.cts +4 -16
  116. package/dist/prompts/prompt.d.cts.map +1 -1
  117. package/dist/prompts/prompt.d.ts +4 -16
  118. package/dist/prompts/prompt.d.ts.map +1 -1
  119. package/dist/prompts/prompt.js.map +1 -1
  120. package/dist/prompts/structured.cjs.map +1 -1
  121. package/dist/prompts/structured.js.map +1 -1
  122. package/dist/prompts/template.cjs +4 -2
  123. package/dist/prompts/template.cjs.map +1 -1
  124. package/dist/prompts/template.js +4 -2
  125. package/dist/prompts/template.js.map +1 -1
  126. package/dist/runnables/base.cjs +6 -6
  127. package/dist/runnables/base.cjs.map +1 -1
  128. package/dist/runnables/base.d.cts +0 -3
  129. package/dist/runnables/base.d.cts.map +1 -1
  130. package/dist/runnables/base.d.ts +0 -3
  131. package/dist/runnables/base.d.ts.map +1 -1
  132. package/dist/runnables/base.js +6 -6
  133. package/dist/runnables/base.js.map +1 -1
  134. package/dist/runnables/branch.cjs +2 -2
  135. package/dist/runnables/branch.cjs.map +1 -1
  136. package/dist/runnables/branch.js +2 -2
  137. package/dist/runnables/branch.js.map +1 -1
  138. package/dist/runnables/config.cjs.map +1 -1
  139. package/dist/runnables/config.js.map +1 -1
  140. package/dist/runnables/graph.cjs +1 -1
  141. package/dist/runnables/graph.cjs.map +1 -1
  142. package/dist/runnables/graph.js +1 -1
  143. package/dist/runnables/graph.js.map +1 -1
  144. package/dist/runnables/graph_mermaid.cjs +26 -3
  145. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  146. package/dist/runnables/graph_mermaid.js +26 -3
  147. package/dist/runnables/graph_mermaid.js.map +1 -1
  148. package/dist/runnables/remote.cjs.map +1 -1
  149. package/dist/runnables/remote.js.map +1 -1
  150. package/dist/runnables/types.d.cts +0 -1
  151. package/dist/runnables/types.d.cts.map +1 -1
  152. package/dist/runnables/types.d.ts +0 -1
  153. package/dist/runnables/types.d.ts.map +1 -1
  154. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  155. package/dist/singletons/async_local_storage/context.d.cts +0 -1
  156. package/dist/singletons/async_local_storage/context.d.cts.map +1 -1
  157. package/dist/singletons/async_local_storage/context.d.ts +0 -1
  158. package/dist/singletons/async_local_storage/context.d.ts.map +1 -1
  159. package/dist/singletons/async_local_storage/context.js.map +1 -1
  160. package/dist/singletons/callbacks.cjs.map +1 -1
  161. package/dist/singletons/callbacks.js.map +1 -1
  162. package/dist/tools/index.cjs.map +1 -1
  163. package/dist/tools/index.d.cts +2 -2
  164. package/dist/tools/index.d.cts.map +1 -1
  165. package/dist/tools/index.d.ts +2 -2
  166. package/dist/tools/index.d.ts.map +1 -1
  167. package/dist/tools/index.js.map +1 -1
  168. package/dist/tools/types.d.cts +5 -5
  169. package/dist/tools/types.d.cts.map +1 -1
  170. package/dist/tools/types.d.ts +5 -5
  171. package/dist/tools/types.d.ts.map +1 -1
  172. package/dist/tracers/base.cjs.map +1 -1
  173. package/dist/tracers/base.js.map +1 -1
  174. package/dist/tracers/console.cjs +1 -1
  175. package/dist/tracers/console.cjs.map +1 -1
  176. package/dist/tracers/console.js +1 -1
  177. package/dist/tracers/console.js.map +1 -1
  178. package/dist/tracers/event_stream.cjs +1 -1
  179. package/dist/tracers/event_stream.cjs.map +1 -1
  180. package/dist/tracers/event_stream.d.cts +0 -1
  181. package/dist/tracers/event_stream.d.cts.map +1 -1
  182. package/dist/tracers/event_stream.d.ts +0 -1
  183. package/dist/tracers/event_stream.d.ts.map +1 -1
  184. package/dist/tracers/event_stream.js +1 -1
  185. package/dist/tracers/event_stream.js.map +1 -1
  186. package/dist/tracers/log_stream.cjs.map +1 -1
  187. package/dist/tracers/log_stream.js.map +1 -1
  188. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  189. package/dist/tracers/tracer_langchain.js.map +1 -1
  190. package/dist/utils/chunk_array.cjs.map +1 -1
  191. package/dist/utils/chunk_array.js.map +1 -1
  192. package/dist/utils/env.cjs +1 -1
  193. package/dist/utils/env.cjs.map +1 -1
  194. package/dist/utils/env.js +1 -1
  195. package/dist/utils/env.js.map +1 -1
  196. package/dist/utils/event_source_parse.cjs.map +1 -1
  197. package/dist/utils/event_source_parse.d.cts.map +1 -1
  198. package/dist/utils/event_source_parse.d.ts.map +1 -1
  199. package/dist/utils/event_source_parse.js.map +1 -1
  200. package/dist/utils/hash.cjs +3 -8
  201. package/dist/utils/hash.cjs.map +1 -1
  202. package/dist/utils/hash.d.cts +1 -2
  203. package/dist/utils/hash.d.cts.map +1 -1
  204. package/dist/utils/hash.d.ts +1 -2
  205. package/dist/utils/hash.d.ts.map +1 -1
  206. package/dist/utils/hash.js +2 -6
  207. package/dist/utils/hash.js.map +1 -1
  208. package/dist/utils/js-sha256/hash.cjs +0 -9
  209. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  210. package/dist/utils/js-sha256/hash.js +1 -5
  211. package/dist/utils/js-sha256/hash.js.map +1 -1
  212. package/dist/utils/json.cjs +2 -2
  213. package/dist/utils/json.cjs.map +1 -1
  214. package/dist/utils/json.js +2 -2
  215. package/dist/utils/json.js.map +1 -1
  216. package/dist/utils/json_schema.cjs +3 -2
  217. package/dist/utils/json_schema.cjs.map +1 -1
  218. package/dist/utils/json_schema.d.cts +8 -4
  219. package/dist/utils/json_schema.d.cts.map +1 -1
  220. package/dist/utils/json_schema.d.ts +8 -4
  221. package/dist/utils/json_schema.d.ts.map +1 -1
  222. package/dist/utils/json_schema.js +2 -1
  223. package/dist/utils/json_schema.js.map +1 -1
  224. package/dist/utils/stream.cjs.map +1 -1
  225. package/dist/utils/stream.js.map +1 -1
  226. package/dist/utils/testing/index.cjs.map +1 -1
  227. package/dist/utils/testing/index.d.cts +4 -9
  228. package/dist/utils/testing/index.d.cts.map +1 -1
  229. package/dist/utils/testing/index.d.ts +4 -9
  230. package/dist/utils/testing/index.d.ts.map +1 -1
  231. package/dist/utils/testing/index.js.map +1 -1
  232. package/dist/utils/zod-to-json-schema/Options.cjs +40 -0
  233. package/dist/utils/zod-to-json-schema/Options.cjs.map +1 -0
  234. package/dist/utils/zod-to-json-schema/Options.js +37 -0
  235. package/dist/utils/zod-to-json-schema/Options.js.map +1 -0
  236. package/dist/utils/zod-to-json-schema/Refs.cjs +30 -0
  237. package/dist/utils/zod-to-json-schema/Refs.cjs.map +1 -0
  238. package/dist/utils/zod-to-json-schema/Refs.js +30 -0
  239. package/dist/utils/zod-to-json-schema/Refs.js.map +1 -0
  240. package/dist/utils/zod-to-json-schema/errorMessages.cjs +18 -0
  241. package/dist/utils/zod-to-json-schema/errorMessages.cjs.map +1 -0
  242. package/dist/utils/zod-to-json-schema/errorMessages.d.cts +11 -0
  243. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +1 -0
  244. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +11 -0
  245. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +1 -0
  246. package/dist/utils/zod-to-json-schema/errorMessages.js +16 -0
  247. package/dist/utils/zod-to-json-schema/errorMessages.js.map +1 -0
  248. package/dist/utils/zod-to-json-schema/getRelativePath.cjs +11 -0
  249. package/dist/utils/zod-to-json-schema/getRelativePath.cjs.map +1 -0
  250. package/dist/utils/zod-to-json-schema/getRelativePath.js +10 -0
  251. package/dist/utils/zod-to-json-schema/getRelativePath.js.map +1 -0
  252. package/dist/utils/zod-to-json-schema/index.cjs +37 -0
  253. package/dist/utils/zod-to-json-schema/index.js +37 -0
  254. package/dist/utils/zod-to-json-schema/parseDef.cjs +57 -0
  255. package/dist/utils/zod-to-json-schema/parseDef.cjs.map +1 -0
  256. package/dist/utils/zod-to-json-schema/parseDef.js +57 -0
  257. package/dist/utils/zod-to-json-schema/parseDef.js.map +1 -0
  258. package/dist/utils/zod-to-json-schema/parseTypes.d.cts +38 -0
  259. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +1 -0
  260. package/dist/utils/zod-to-json-schema/parseTypes.d.ts +38 -0
  261. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +1 -0
  262. package/dist/utils/zod-to-json-schema/parsers/any.cjs +17 -0
  263. package/dist/utils/zod-to-json-schema/parsers/any.cjs.map +1 -0
  264. package/dist/utils/zod-to-json-schema/parsers/any.d.cts +7 -0
  265. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +1 -0
  266. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +7 -0
  267. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +1 -0
  268. package/dist/utils/zod-to-json-schema/parsers/any.js +17 -0
  269. package/dist/utils/zod-to-json-schema/parsers/any.js.map +1 -0
  270. package/dist/utils/zod-to-json-schema/parsers/array.cjs +24 -0
  271. package/dist/utils/zod-to-json-schema/parsers/array.cjs.map +1 -0
  272. package/dist/utils/zod-to-json-schema/parsers/array.d.cts +14 -0
  273. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +1 -0
  274. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +15 -0
  275. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +1 -0
  276. package/dist/utils/zod-to-json-schema/parsers/array.js +23 -0
  277. package/dist/utils/zod-to-json-schema/parsers/array.js.map +1 -0
  278. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs +36 -0
  279. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -0
  280. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts +16 -0
  281. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +1 -0
  282. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +17 -0
  283. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +1 -0
  284. package/dist/utils/zod-to-json-schema/parsers/bigint.js +36 -0
  285. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -0
  286. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs +9 -0
  287. package/dist/utils/zod-to-json-schema/parsers/boolean.cjs.map +1 -0
  288. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts +7 -0
  289. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +1 -0
  290. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts +7 -0
  291. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +1 -0
  292. package/dist/utils/zod-to-json-schema/parsers/boolean.js +8 -0
  293. package/dist/utils/zod-to-json-schema/parsers/boolean.js.map +1 -0
  294. package/dist/utils/zod-to-json-schema/parsers/branded.cjs +10 -0
  295. package/dist/utils/zod-to-json-schema/parsers/branded.cjs.map +1 -0
  296. package/dist/utils/zod-to-json-schema/parsers/branded.js +10 -0
  297. package/dist/utils/zod-to-json-schema/parsers/branded.js.map +1 -0
  298. package/dist/utils/zod-to-json-schema/parsers/catch.cjs +10 -0
  299. package/dist/utils/zod-to-json-schema/parsers/catch.cjs.map +1 -0
  300. package/dist/utils/zod-to-json-schema/parsers/catch.js +10 -0
  301. package/dist/utils/zod-to-json-schema/parsers/catch.js.map +1 -0
  302. package/dist/utils/zod-to-json-schema/parsers/date.cjs +39 -0
  303. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -0
  304. package/dist/utils/zod-to-json-schema/parsers/date.d.cts +17 -0
  305. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +1 -0
  306. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +17 -0
  307. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +1 -0
  308. package/dist/utils/zod-to-json-schema/parsers/date.js +39 -0
  309. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -0
  310. package/dist/utils/zod-to-json-schema/parsers/default.cjs +13 -0
  311. package/dist/utils/zod-to-json-schema/parsers/default.cjs.map +1 -0
  312. package/dist/utils/zod-to-json-schema/parsers/default.js +13 -0
  313. package/dist/utils/zod-to-json-schema/parsers/default.js.map +1 -0
  314. package/dist/utils/zod-to-json-schema/parsers/effects.cjs +11 -0
  315. package/dist/utils/zod-to-json-schema/parsers/effects.cjs.map +1 -0
  316. package/dist/utils/zod-to-json-schema/parsers/effects.js +11 -0
  317. package/dist/utils/zod-to-json-schema/parsers/effects.js.map +1 -0
  318. package/dist/utils/zod-to-json-schema/parsers/enum.cjs +12 -0
  319. package/dist/utils/zod-to-json-schema/parsers/enum.cjs.map +1 -0
  320. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts +8 -0
  321. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +1 -0
  322. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts +10 -0
  323. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +1 -0
  324. package/dist/utils/zod-to-json-schema/parsers/enum.js +11 -0
  325. package/dist/utils/zod-to-json-schema/parsers/enum.js.map +1 -0
  326. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs +47 -0
  327. package/dist/utils/zod-to-json-schema/parsers/intersection.cjs.map +1 -0
  328. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts +10 -0
  329. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +1 -0
  330. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +11 -0
  331. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +1 -0
  332. package/dist/utils/zod-to-json-schema/parsers/intersection.js +47 -0
  333. package/dist/utils/zod-to-json-schema/parsers/intersection.js.map +1 -0
  334. package/dist/utils/zod-to-json-schema/parsers/literal.cjs +18 -0
  335. package/dist/utils/zod-to-json-schema/parsers/literal.cjs.map +1 -0
  336. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts +11 -0
  337. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +1 -0
  338. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +12 -0
  339. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +1 -0
  340. package/dist/utils/zod-to-json-schema/parsers/literal.js +17 -0
  341. package/dist/utils/zod-to-json-schema/parsers/literal.js.map +1 -0
  342. package/dist/utils/zod-to-json-schema/parsers/map.cjs +40 -0
  343. package/dist/utils/zod-to-json-schema/parsers/map.cjs.map +1 -0
  344. package/dist/utils/zod-to-json-schema/parsers/map.d.cts +17 -0
  345. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +1 -0
  346. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +17 -0
  347. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +1 -0
  348. package/dist/utils/zod-to-json-schema/parsers/map.js +40 -0
  349. package/dist/utils/zod-to-json-schema/parsers/map.js.map +1 -0
  350. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs +18 -0
  351. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -0
  352. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts +8 -0
  353. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +1 -0
  354. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts +10 -0
  355. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -0
  356. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js +17 -0
  357. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -0
  358. package/dist/utils/zod-to-json-schema/parsers/never.cjs +13 -0
  359. package/dist/utils/zod-to-json-schema/parsers/never.cjs.map +1 -0
  360. package/dist/utils/zod-to-json-schema/parsers/never.d.cts +9 -0
  361. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +1 -0
  362. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +9 -0
  363. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +1 -0
  364. package/dist/utils/zod-to-json-schema/parsers/never.js +13 -0
  365. package/dist/utils/zod-to-json-schema/parsers/never.js.map +1 -0
  366. package/dist/utils/zod-to-json-schema/parsers/null.cjs +12 -0
  367. package/dist/utils/zod-to-json-schema/parsers/null.cjs.map +1 -0
  368. package/dist/utils/zod-to-json-schema/parsers/null.d.cts +7 -0
  369. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +1 -0
  370. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +7 -0
  371. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +1 -0
  372. package/dist/utils/zod-to-json-schema/parsers/null.js +11 -0
  373. package/dist/utils/zod-to-json-schema/parsers/null.js.map +1 -0
  374. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs +46 -0
  375. package/dist/utils/zod-to-json-schema/parsers/nullable.cjs.map +1 -0
  376. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts +12 -0
  377. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +1 -0
  378. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +13 -0
  379. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +1 -0
  380. package/dist/utils/zod-to-json-schema/parsers/nullable.js +46 -0
  381. package/dist/utils/zod-to-json-schema/parsers/nullable.js.map +1 -0
  382. package/dist/utils/zod-to-json-schema/parsers/number.cjs +37 -0
  383. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -0
  384. package/dist/utils/zod-to-json-schema/parsers/number.d.cts +15 -0
  385. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +1 -0
  386. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +16 -0
  387. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +1 -0
  388. package/dist/utils/zod-to-json-schema/parsers/number.js +37 -0
  389. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -0
  390. package/dist/utils/zod-to-json-schema/parsers/object.cjs +64 -0
  391. package/dist/utils/zod-to-json-schema/parsers/object.cjs.map +1 -0
  392. package/dist/utils/zod-to-json-schema/parsers/object.d.cts +12 -0
  393. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +1 -0
  394. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +13 -0
  395. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +1 -0
  396. package/dist/utils/zod-to-json-schema/parsers/object.js +64 -0
  397. package/dist/utils/zod-to-json-schema/parsers/object.js.map +1 -0
  398. package/dist/utils/zod-to-json-schema/parsers/optional.cjs +20 -0
  399. package/dist/utils/zod-to-json-schema/parsers/optional.cjs.map +1 -0
  400. package/dist/utils/zod-to-json-schema/parsers/optional.js +20 -0
  401. package/dist/utils/zod-to-json-schema/parsers/optional.js.map +1 -0
  402. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs +28 -0
  403. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -0
  404. package/dist/utils/zod-to-json-schema/parsers/pipeline.js +28 -0
  405. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -0
  406. package/dist/utils/zod-to-json-schema/parsers/promise.cjs +10 -0
  407. package/dist/utils/zod-to-json-schema/parsers/promise.cjs.map +1 -0
  408. package/dist/utils/zod-to-json-schema/parsers/promise.js +10 -0
  409. package/dist/utils/zod-to-json-schema/parsers/promise.js.map +1 -0
  410. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs +10 -0
  411. package/dist/utils/zod-to-json-schema/parsers/readonly.cjs.map +1 -0
  412. package/dist/utils/zod-to-json-schema/parsers/readonly.js +10 -0
  413. package/dist/utils/zod-to-json-schema/parsers/readonly.js.map +1 -0
  414. package/dist/utils/zod-to-json-schema/parsers/record.cjs +57 -0
  415. package/dist/utils/zod-to-json-schema/parsers/record.cjs.map +1 -0
  416. package/dist/utils/zod-to-json-schema/parsers/record.d.cts +14 -0
  417. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +1 -0
  418. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +15 -0
  419. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +1 -0
  420. package/dist/utils/zod-to-json-schema/parsers/record.js +56 -0
  421. package/dist/utils/zod-to-json-schema/parsers/record.js.map +1 -0
  422. package/dist/utils/zod-to-json-schema/parsers/set.cjs +22 -0
  423. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -0
  424. package/dist/utils/zod-to-json-schema/parsers/set.d.cts +15 -0
  425. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +1 -0
  426. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +16 -0
  427. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +1 -0
  428. package/dist/utils/zod-to-json-schema/parsers/set.js +22 -0
  429. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -0
  430. package/dist/utils/zod-to-json-schema/parsers/string.cjs +255 -0
  431. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -0
  432. package/dist/utils/zod-to-json-schema/parsers/string.d.cts +28 -0
  433. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +1 -0
  434. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +29 -0
  435. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +1 -0
  436. package/dist/utils/zod-to-json-schema/parsers/string.js +254 -0
  437. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -0
  438. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs +38 -0
  439. package/dist/utils/zod-to-json-schema/parsers/tuple.cjs.map +1 -0
  440. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts +15 -0
  441. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +1 -0
  442. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +16 -0
  443. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +1 -0
  444. package/dist/utils/zod-to-json-schema/parsers/tuple.js +38 -0
  445. package/dist/utils/zod-to-json-schema/parsers/tuple.js.map +1 -0
  446. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs +10 -0
  447. package/dist/utils/zod-to-json-schema/parsers/undefined.cjs.map +1 -0
  448. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts +9 -0
  449. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +1 -0
  450. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +9 -0
  451. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +1 -0
  452. package/dist/utils/zod-to-json-schema/parsers/undefined.js +10 -0
  453. package/dist/utils/zod-to-json-schema/parsers/undefined.js.map +1 -0
  454. package/dist/utils/zod-to-json-schema/parsers/union.cjs +67 -0
  455. package/dist/utils/zod-to-json-schema/parsers/union.cjs.map +1 -0
  456. package/dist/utils/zod-to-json-schema/parsers/union.d.cts +24 -0
  457. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +1 -0
  458. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +25 -0
  459. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +1 -0
  460. package/dist/utils/zod-to-json-schema/parsers/union.js +66 -0
  461. package/dist/utils/zod-to-json-schema/parsers/union.js.map +1 -0
  462. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs +10 -0
  463. package/dist/utils/zod-to-json-schema/parsers/unknown.cjs.map +1 -0
  464. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts +7 -0
  465. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +1 -0
  466. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +7 -0
  467. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +1 -0
  468. package/dist/utils/zod-to-json-schema/parsers/unknown.js +10 -0
  469. package/dist/utils/zod-to-json-schema/parsers/unknown.js.map +1 -0
  470. package/dist/utils/zod-to-json-schema/selectParser.cjs +81 -0
  471. package/dist/utils/zod-to-json-schema/selectParser.cjs.map +1 -0
  472. package/dist/utils/zod-to-json-schema/selectParser.js +80 -0
  473. package/dist/utils/zod-to-json-schema/selectParser.js.map +1 -0
  474. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs +70 -0
  475. package/dist/utils/zod-to-json-schema/zodToJsonSchema.cjs.map +1 -0
  476. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js +70 -0
  477. package/dist/utils/zod-to-json-schema/zodToJsonSchema.js.map +1 -0
  478. package/package.json +7 -36
  479. package/dist/utils/js-sha1/hash.cjs +0 -291
  480. package/dist/utils/js-sha1/hash.cjs.map +0 -1
  481. package/dist/utils/js-sha1/hash.d.cts +0 -9
  482. package/dist/utils/js-sha1/hash.d.cts.map +0 -1
  483. package/dist/utils/js-sha1/hash.d.ts +0 -9
  484. package/dist/utils/js-sha1/hash.d.ts.map +0 -1
  485. package/dist/utils/js-sha1/hash.js +0 -284
  486. package/dist/utils/js-sha1/hash.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","names":["fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>","initParams: AIMessageFields<TStructure>","toolCalls","obj: unknown","x: BaseMessage","x: BaseMessageChunk","fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>","initParams: AIMessageChunkFields<TStructure>","toolCalls: ToolCall[]","invalidToolCalls: InvalidToolCall[]","parsedArgs: Record<string, unknown> | null","chunk: AIMessageChunk<TStructure>","combinedFields: AIMessageChunkFields"],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import { parsePartialJson } from \"../utils/json.js\";\nimport {\n BaseMessage,\n BaseMessageChunk,\n mergeContent,\n _mergeDicts,\n BaseMessageFields,\n _mergeLists,\n} from \"./base.js\";\nimport { getTranslator } from \"./block_translators/index.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport {\n $InferMessageContent,\n $InferMessageProperty,\n MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { Constructor } from \"./utils.js\";\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: ToolCall[];\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?: ToolCall[] = [];\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 };\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 [toolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls = toolCalls ?? [];\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 (e) {\n // Do nothing if parsing fails\n initParams.tool_calls = [];\n initParams.invalid_tool_calls = [];\n }\n if (initParams.contentBlocks !== undefined) {\n // Add constructor tool calls as content blocks\n initParams.contentBlocks.push(\n ...initParams.tool_calls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\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.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 = 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 }\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 \"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 \"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);\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 ...block,\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\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 invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n static isInstance(obj: unknown): obj is AIMessage {\n return super.isInstance(obj) && obj.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?: ToolCall[] = [];\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 (fields.tool_call_chunks === undefined) {\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 groupedToolCallChunk = fields.tool_call_chunks.reduce(\n (acc, chunk) => {\n // Assign a fallback ID if the chunk doesn't have one\n // This can happen with tools that have empty schemas\n const chunkId = chunk.id || `fallback-${chunk.index || 0}`;\n acc[chunkId] = acc[chunkId] ?? [];\n acc[chunkId].push(chunk);\n return acc;\n },\n {} as Record<string, ToolCallChunk[]>\n );\n\n const toolCalls: ToolCall[] = [];\n const invalidToolCalls: InvalidToolCall[] = [];\n for (const [id, chunks] of Object.entries(groupedToolCallChunk)) {\n let parsedArgs: Record<string, unknown> | null = null;\n const name = chunks[0]?.name ?? \"\";\n const joinedArgs = chunks.map((c) => c.args || \"\").join(\"\");\n const argsStr = joinedArgs.length ? joinedArgs : \"{}\";\n // Use the original ID from the first chunk if it exists, otherwise use the grouped ID\n const originalId = chunks[0]?.id || id;\n try {\n parsedArgs = parsePartialJson(argsStr);\n if (\n parsedArgs === null ||\n typeof parsedArgs !== \"object\" ||\n Array.isArray(parsedArgs)\n ) {\n throw new Error(\"Malformed tool call chunk args.\");\n }\n toolCalls.push({\n name,\n args: parsedArgs,\n id: originalId,\n type: \"tool_call\",\n });\n } catch (e) {\n invalidToolCalls.push({\n name,\n args: argsStr,\n id: originalId,\n error: \"Malformed args.\",\n type: \"invalid_tool_call\",\n });\n }\n }\n initParams = {\n ...fields,\n tool_calls: toolCalls,\n invalid_tool_calls: invalidToolCalls,\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 };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\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 \"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);\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 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,\n chunk.tool_call_chunks\n );\n if (rawToolCalls !== undefined && rawToolCalls.length > 0) {\n combinedFields.tool_call_chunks = rawToolCalls;\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 static isInstance(obj: unknown): obj is AIMessageChunk {\n return super.isInstance(obj) && obj.type === \"ai\";\n }\n}\n"],"mappings":";;;;;;;AAiCA,IAAa,YAAb,cACU,YAEV;CACE,AAAS,OAAO;CAEhB,aAA0B,CAAE;CAE5B,qBAAyC,CAAE;CAE3C;CAEA,IAAI,aAAqC;AAEvC,SAAO;GACL,GAAG,MAAM;GACT,YAAY;GACZ,oBAAoB;EACrB;CACF;CAED,YACEA,QACA;EACA,IAAIC;AACJ,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EACrD,aAAa;GACX,SAAS;GACT,YAAY,CAAE;GACd,oBAAoB,CAAE;GACtB,mBAAmB,CAAE;EACtB;OACI;GACL,aAAa;GACb,MAAM,eAAe,WAAW,mBAAmB;GACnD,MAAM,YAAY,WAAW;AAC7B,OACE,EAAE,gBAAgB,SAClB,aAAa,SAAS,MACrB,cAAc,UAAa,UAAU,WAAW,IAEjD,QAAQ,KACN;IACE;IACA;IACA;IACA;GACD,EAAC,KAAK,IAAI,CACZ;AAEH,OAAI;AACF,QAAI,EAAE,gBAAgB,SAAS,cAAc,QAAW;KACtD,MAAM,CAACC,aAAW,iBAAiB,GACjC,sBAAsB,aAAa;KACrC,WAAW,aAAaA,eAAa,CAAE;KACvC,WAAW,qBAAqB,oBAAoB,CAAE;IACvD,OAAM;KACL,WAAW,aAAa,WAAW,cAAc,CAAE;KACnD,WAAW,qBAAqB,WAAW,sBAAsB,CAAE;IACpE;GACF,SAAQ,GAAG;IAEV,WAAW,aAAa,CAAE;IAC1B,WAAW,qBAAqB,CAAE;GACnC;AACD,OAAI,WAAW,kBAAkB,QAAW;IAE1C,WAAW,cAAc,KACvB,GAAG,WAAW,WAAW,IAAI,CAAC,cAAc;KAC1C,MAAM;KACN,IAAI,SAAS;KACb,MAAM,SAAS;KACf,MAAM,SAAS;IAChB,GAAE,CACJ;IAED,MAAM,mBAAmB,WAAW,cACjC,OACC,CAAC,UAAU,MAAM,SAAS,YAC3B,CACA,OACC,CAAC,UACC,CAAC,WAAW,YAAY,KACtB,CAAC,aACC,SAAS,OAAO,MAAM,MAAM,SAAS,SAAS,MAAM,KACvD,CACJ;AACH,QAAI,iBAAiB,SAAS,GAC5B,WAAW,aAAa,iBAAiB,IAAI,CAAC,WAAW;KACvD,MAAM;KACN,IAAI,MAAM;KACV,MAAM,MAAM;KACZ,MAAM,MAAM;IACb,GAAE;GAEN;EACF;EAGD,MAAM,WAAW;AACjB,MAAI,OAAO,eAAe,UAAU;GAClC,KAAK,aAAa,WAAW,cAAc,KAAK;GAChD,KAAK,qBACH,WAAW,sBAAsB,KAAK;EACzC;EACD,KAAK,iBAAiB,WAAW;CAClC;CAED,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,gBAA8C;AAChD,MACE,oBAAoB,KAAK,qBACzB,KAAK,kBAAkB,mBAAmB,KAE1C,QAAO,KAAK;AAGd,MACE,oBAAoB,KAAK,qBACzB,OAAO,KAAK,kBAAkB,mBAAmB,UACjD;GACA,MAAM,aAAa,cAAc,KAAK,kBAAkB,eAAe;AACvE,OAAI,WACF,QAAO,WAAW,iBAAiB,KAAK;EAE3C;EAED,MAAM,SAAS,MAAM;AAErB,MAAI,KAAK,YAAY;GACnB,MAAM,mBAAmB,KAAK,WAAW,OACvC,CAAC,UACC,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,MAAM,EAAE,SAAS,MAAM,KAAK,CAClE;GACD,OAAO,KACL,GAAG,iBAAiB,IAAI,CAAC,WAAW;IAClC,GAAG;IACH,MAAM;IACN,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,MAAM,MAAM;GACb,GAAE,CACJ;EACF;AAED,SAAO;CACR;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,YAAY,KAAK;GACjB,oBAAoB,KAAK;GACzB,gBAAgB,KAAK;EACtB;CACF;CAED,OAAO,WAAWC,KAAgC;AAChD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;AACF;;;;AAKD,SAAgB,YACdC,GAC4B;AAC5B,QAAO,EAAE,UAAU,KAAK;AACzB;;;;AAKD,SAAgB,iBACdC,GACiC;AACjC,QAAO,EAAE,UAAU,KAAK;AACzB;;;;;AAYD,IAAa,iBAAb,cAGU,iBAEV;CACE,AAAS,OAAO;CAEhB,aAA0B,CAAE;CAE5B,qBAAyC,CAAE;CAE3C,mBAAqC,CAAE;CAEvC;CAEA,YACEC,QAGA;EACA,IAAIC;AACJ,MAAI,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,EACrD,aAAa;GACX,SAAS;GACT,YAAY,CAAE;GACd,oBAAoB,CAAE;GACtB,kBAAkB,CAAE;EACrB;WACQ,OAAO,qBAAqB,QACrC,aAAa;GACX,GAAG;GACH,YAAY,OAAO,cAAc,CAAE;GACnC,oBAAoB,CAAE;GACtB,kBAAkB,CAAE;GACpB,gBACE,OAAO,mBAAmB,SACtB,OAAO,iBACP;EACP;OACI;GACL,MAAM,uBAAuB,OAAO,iBAAiB,OACnD,CAAC,KAAK,UAAU;IAGd,MAAM,UAAU,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,SAAS,GAAG;IAC1D,IAAI,WAAW,IAAI,YAAY,CAAE;IACjC,IAAI,SAAS,KAAK,MAAM;AACxB,WAAO;GACR,GACD,CAAE,EACH;GAED,MAAMC,YAAwB,CAAE;GAChC,MAAMC,mBAAsC,CAAE;AAC9C,QAAK,MAAM,CAAC,IAAI,OAAO,IAAI,OAAO,QAAQ,qBAAqB,EAAE;IAC/D,IAAIC,aAA6C;IACjD,MAAM,OAAO,OAAO,IAAI,QAAQ;IAChC,MAAM,aAAa,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,KAAK,GAAG;IAC3D,MAAM,UAAU,WAAW,SAAS,aAAa;IAEjD,MAAM,aAAa,OAAO,IAAI,MAAM;AACpC,QAAI;KACF,aAAa,iBAAiB,QAAQ;AACtC,SACE,eAAe,QACf,OAAO,eAAe,YACtB,MAAM,QAAQ,WAAW,CAEzB,OAAM,IAAI,MAAM;KAElB,UAAU,KAAK;MACb;MACA,MAAM;MACN,IAAI;MACJ,MAAM;KACP,EAAC;IACH,SAAQ,GAAG;KACV,iBAAiB,KAAK;MACpB;MACA,MAAM;MACN,IAAI;MACJ,OAAO;MACP,MAAM;KACP,EAAC;IACH;GACF;GACD,aAAa;IACX,GAAG;IACH,YAAY;IACZ,oBAAoB;IACpB,gBACE,OAAO,mBAAmB,SACtB,OAAO,iBACP;GACP;EACF;EAGD,MAAM,WAAW;EACjB,KAAK,mBACH,WAAW,oBAAoB,KAAK;EACtC,KAAK,aAAa,WAAW,cAAc,KAAK;EAChD,KAAK,qBACH,WAAW,sBAAsB,KAAK;EACxC,KAAK,iBAAiB,WAAW;CAClC;CAED,IAAI,aAAqC;AAEvC,SAAO;GACL,GAAG,MAAM;GACT,YAAY;GACZ,oBAAoB;GACpB,kBAAkB;EACnB;CACF;CAED,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,gBAA8C;AAChD,MACE,oBAAoB,KAAK,qBACzB,KAAK,kBAAkB,mBAAmB,KAE1C,QAAO,KAAK;AAGd,MACE,oBAAoB,KAAK,qBACzB,OAAO,KAAK,kBAAkB,mBAAmB,UACjD;GACA,MAAM,aAAa,cAAc,KAAK,kBAAkB,eAAe;AACvE,OAAI,WACF,QAAO,WAAW,iBAAiB,KAAK;EAE3C;EAED,MAAM,SAAS,MAAM;AAErB,MAAI,KAAK,YACP;OAAI,OAAO,KAAK,YAAY,UAAU;IACpC,MAAM,mBAAmB,KAAK,QAC3B,OAAO,CAAC,UAAU,MAAM,SAAS,YAAY,CAC7C,IAAI,CAAC,UAAU,MAAM,GAAG;AAC3B,SAAK,MAAM,YAAY,KAAK,WAC1B,KAAI,SAAS,MAAM,CAAC,iBAAiB,SAAS,SAAS,GAAG,EACxD,OAAO,KAAK;KACV,GAAG;KACH,MAAM;KACN,IAAI,SAAS;KACb,MAAM,SAAS;KACf,MAAM,SAAS;IAChB,EAAC;GAGP;;AAGH,SAAO;CACR;CAED,IAAa,mBAA4C;AACvD,SAAO;GACL,GAAG,MAAM;GACT,YAAY,KAAK;GACjB,kBAAkB,KAAK;GACvB,oBAAoB,KAAK;GACzB,gBAAgB,KAAK;EACtB;CACF;CAED,OAAOC,OAAmC;EACxC,MAAMC,iBAAuC;GAC3C,SAAS,aAAa,KAAK,SAAS,MAAM,QAAQ;GAClD,mBAAmB,YACjB,KAAK,mBACL,MAAM,kBACP;GACD,mBAAmB,sBACjB,KAAK,mBACL,MAAM,kBACP;GACD,kBAAkB,CAAE;GACpB,IAAI,KAAK,MAAM,MAAM;EACtB;AACD,MACE,KAAK,qBAAqB,UAC1B,MAAM,qBAAqB,QAC3B;GACA,MAAM,eAAe,YACnB,KAAK,kBACL,MAAM,iBACP;AACD,OAAI,iBAAiB,UAAa,aAAa,SAAS,GACtD,eAAe,mBAAmB;EAErC;AACD,MACE,KAAK,mBAAmB,UACxB,MAAM,mBAAmB,QAEzB,eAAe,iBAAiB,mBAC9B,KAAK,gBACL,MAAM,eACP;EAEH,MAAM,MAAM,KAAK;AACjB,SAAO,IAAI,IAAI;CAChB;CAED,OAAO,WAAWT,KAAqC;AACrD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;AACF"}
1
+ {"version":3,"file":"ai.js","names":["fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>","initParams: AIMessageFields<TStructure>","toolCalls","obj: unknown","x: BaseMessage","x: BaseMessageChunk","fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>","initParams: AIMessageChunkFields<TStructure>","toolCalls: ToolCall[]","invalidToolCalls: InvalidToolCall[]","parsedArgs: Record<string, unknown> | null","chunk: AIMessageChunk<TStructure>","combinedFields: AIMessageChunkFields"],"sources":["../../src/messages/ai.ts"],"sourcesContent":["import { parsePartialJson } from \"../utils/json.js\";\nimport {\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 MessageStructure,\n} from \"./message.js\";\nimport { mergeResponseMetadata, mergeUsageMetadata } from \"./metadata.js\";\nimport {\n InvalidToolCall,\n ToolCall,\n ToolCallChunk,\n defaultToolCallParser,\n} from \"./tool.js\";\nimport { Constructor } from \"./utils.js\";\n\nexport interface AIMessageFields<\n TStructure extends MessageStructure = MessageStructure\n> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: ToolCall[];\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?: ToolCall[] = [];\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 };\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 [toolCalls, invalidToolCalls] =\n defaultToolCallParser(rawToolCalls);\n initParams.tool_calls = toolCalls ?? [];\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 = [];\n initParams.invalid_tool_calls = [];\n }\n if (initParams.contentBlocks !== undefined) {\n // Add constructor tool calls as content blocks\n initParams.contentBlocks.push(\n ...initParams.tool_calls.map((toolCall) => ({\n type: \"tool_call\" as const,\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\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 = 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 }\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 \"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 \"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);\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 ...block,\n type: \"tool_call\" as const,\n id: block.id,\n name: block.name,\n args: block.args,\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 invalid_tool_calls: this.invalid_tool_calls,\n usage_metadata: this.usage_metadata,\n };\n }\n\n static isInstance(obj: unknown): obj is AIMessage {\n return super.isInstance(obj) && obj.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?: ToolCall[] = [];\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 (fields.tool_call_chunks === undefined) {\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 groupedToolCallChunk = fields.tool_call_chunks.reduce(\n (acc, chunk) => {\n // Assign a fallback ID if the chunk doesn't have one\n // This can happen with tools that have empty schemas\n const chunkId = chunk.id || `fallback-${chunk.index || 0}`;\n acc[chunkId] = acc[chunkId] ?? [];\n acc[chunkId].push(chunk);\n return acc;\n },\n {} as Record<string, ToolCallChunk[]>\n );\n\n const toolCalls: ToolCall[] = [];\n const invalidToolCalls: InvalidToolCall[] = [];\n for (const [id, chunks] of Object.entries(groupedToolCallChunk)) {\n let parsedArgs: Record<string, unknown> | null = null;\n const name = chunks[0]?.name ?? \"\";\n const joinedArgs = chunks.map((c) => c.args || \"\").join(\"\");\n const argsStr = joinedArgs.length ? joinedArgs : \"{}\";\n // Use the original ID from the first chunk if it exists, otherwise use the grouped ID\n const originalId = chunks[0]?.id || id;\n try {\n parsedArgs = parsePartialJson(argsStr);\n if (\n parsedArgs === null ||\n typeof parsedArgs !== \"object\" ||\n Array.isArray(parsedArgs)\n ) {\n throw new Error(\"Malformed tool call chunk args.\");\n }\n toolCalls.push({\n name,\n args: parsedArgs,\n id: originalId,\n type: \"tool_call\",\n });\n } catch {\n invalidToolCalls.push({\n name,\n args: argsStr,\n id: originalId,\n error: \"Malformed args.\",\n type: \"invalid_tool_call\",\n });\n }\n }\n initParams = {\n ...fields,\n tool_calls: toolCalls,\n invalid_tool_calls: invalidToolCalls,\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 };\n }\n\n static lc_name() {\n return \"AIMessageChunk\";\n }\n\n get contentBlocks(): Array<ContentBlock.Standard> {\n if (\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 \"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);\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 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;\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 static isInstance(obj: unknown): obj is AIMessageChunk {\n return super.isInstance(obj) && obj.type === \"ai\";\n }\n}\n"],"mappings":"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"}
@@ -147,7 +147,7 @@ var BaseMessage = class extends require_load_serializable.Serializable {
147
147
  }
148
148
  toDict() {
149
149
  return {
150
- type: this._getType(),
150
+ type: this.getType(),
151
151
  data: this.toJSON().kwargs
152
152
  };
153
153
  }
@@ -205,11 +205,11 @@ function _mergeLists(left, right) {
205
205
  else if (left === void 0 || right === void 0) return left || right;
206
206
  else {
207
207
  const merged = [...left];
208
- for (const item of right) if (typeof item === "object" && "index" in item && typeof item.index === "number") {
209
- const toMerge = merged.findIndex((leftItem) => leftItem.index === item.index);
210
- if (toMerge !== -1) merged[toMerge] = _mergeDicts(merged[toMerge], item);
208
+ for (const item of right) if (typeof item === "object" && item !== null && "index" in item && typeof item.index === "number") {
209
+ const toMerge = merged.findIndex((leftItem) => leftItem !== null && typeof leftItem === "object" && "index" in leftItem && leftItem.index === item.index && ("id" in leftItem && "id" in item ? leftItem.id === item.id : !("id" in leftItem) && !("id" in item)));
210
+ if (toMerge !== -1 && typeof merged[toMerge] === "object" && merged[toMerge] !== null) merged[toMerge] = _mergeDicts(merged[toMerge], item);
211
211
  else merged.push(item);
212
- } else if (typeof item === "object" && "text" in item && item.text === "") continue;
212
+ } else if (typeof item === "object" && item !== null && "text" in item && item.text === "") continue;
213
213
  else merged.push(item);
214
214
  return merged;
215
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.cjs","names":["firstContent: MessageContent","secondContent: MessageContent","isDataContentBlock","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","Serializable","arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>","fields: BaseMessageFields<TStructure, TRole>","blocks: Array<ContentBlock>","convertToV1FromDataContent","convertToV1FromChatCompletionsInput","convertToV1FromAnthropicInput","blocks","obj: unknown","isMessage","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: any[]","right?: any[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"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\";\n\n/** @internal */\nconst MESSAGE_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 // eslint-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 // eslint-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> = {\n id?: string;\n name?: string;\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\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 (\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 return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\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 return [...firstContent, { 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-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 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) ? { content: arg } : 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[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 // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\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\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\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 ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeLists(left?: any[], right?: any[]) {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) => leftItem.index === item.index\n );\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(merged[toMerge], item);\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\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) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) 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 return (\n super.isInstance(obj) &&\n \"concat\" in obj &&\n typeof obj.concat === \"function\"\n );\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 * @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 (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.cjs","names":["firstContent: MessageContent","secondContent: MessageContent","isDataContentBlock","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","Serializable","arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>","fields: BaseMessageFields<TStructure, TRole>","blocks: Array<ContentBlock>","convertToV1FromDataContent","convertToV1FromChatCompletionsInput","convertToV1FromAnthropicInput","blocks","obj: unknown","isMessage","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: Content[]","right?: Content[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"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\";\n\n/** @internal */\nconst MESSAGE_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 // eslint-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 // eslint-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> = {\n id?: string;\n name?: string;\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\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 (\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 return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\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 return [...firstContent, { 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-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 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) ? { content: arg } : 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[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 // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\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\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\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 ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\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\nexport function _mergeLists<Content extends ContentBlock>(\n left?: Content[],\n right?: Content[]\n): Content[] | undefined {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) =>\n leftItem !== null &&\n typeof leftItem === \"object\" &&\n \"index\" in leftItem &&\n leftItem.index === item.index &&\n // Only merge if IDs match (or both are undefined)\n (\"id\" in leftItem && \"id\" in item\n ? leftItem.id === item.id\n : !(\"id\" in leftItem) && !(\"id\" in item))\n );\n if (\n toMerge !== -1 &&\n typeof merged[toMerge] === \"object\" &&\n merged[toMerge] !== null\n ) {\n merged[toMerge] = _mergeDicts(\n merged[toMerge] as Record<string, unknown>,\n item as Record<string, unknown>\n ) as Content;\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n item !== null &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\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) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) 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 return (\n super.isInstance(obj) &&\n \"concat\" in obj &&\n typeof obj.concat === \"function\"\n );\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 * @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 (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
@@ -146,8 +146,7 @@ left: Record<string, any>,
146
146
  right: Record<string, any>
147
147
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
148
  ): Record<string, any>;
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;
149
+ declare function _mergeLists<Content extends ContentBlock>(left?: Content[], right?: Content[]): Content[] | undefined;
151
150
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
151
  declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;
153
152
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.cts","names":["Serializable","SerializedConstructor","ContentBlock","$InferMessageContent","$InferResponseMetadata","MessageStructure","MessageType","Message","MESSAGE_SYMBOL","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageContent","Array","FunctionCall","BaseMessageFields","TStructure","TRole","Standard","OpenAIToolCall","Partial","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferResponseMetadata, MessageStructure, MessageType, Message } from \"./message.js\";\n/** @internal */\ndeclare const MESSAGE_SYMBOL: unique symbol;\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageContent = string | Array<ContentBlock>;\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 * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {\n id?: string;\n name?: string;\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};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\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 declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\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 declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n readonly [MESSAGE_SYMBOL]: true;\n abstract readonly type: TRole;\n id?: string;\n name?: string;\n content: $InferMessageContent<TStructure, TRole>;\n additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]>;\n response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>[\"response_metadata\"]>;\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 /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType;\n constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);\n /** Get text content of the message. */\n get text(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is BaseMessage;\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): void;\n get [Symbol.toStringTag](): any;\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 * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\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 declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n static isInstance(obj: unknown): obj is BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | 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 & Record<string, unknown>) | SerializedConstructor;\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.d.cts","names":["Serializable","SerializedConstructor","ContentBlock","$InferMessageContent","$InferResponseMetadata","MessageStructure","MessageType","Message","MESSAGE_SYMBOL","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageContent","Array","FunctionCall","BaseMessageFields","TStructure","TRole","Standard","OpenAIToolCall","Partial","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","Content","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferResponseMetadata, MessageStructure, MessageType, Message } from \"./message.js\";\n/** @internal */\ndeclare const MESSAGE_SYMBOL: unique symbol;\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageContent = string | Array<ContentBlock>;\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 * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {\n id?: string;\n name?: string;\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};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\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 declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\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 declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n readonly [MESSAGE_SYMBOL]: true;\n abstract readonly type: TRole;\n id?: string;\n name?: string;\n content: $InferMessageContent<TStructure, TRole>;\n additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]>;\n response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>[\"response_metadata\"]>;\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 /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType;\n constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);\n /** Get text content of the message. */\n get text(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is BaseMessage;\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): void;\n get [Symbol.toStringTag](): any;\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 * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\nexport declare function _mergeLists<Content extends ContentBlock>(left?: Content[], right?: Content[]): Content[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\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 declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n static isInstance(obj: unknown): obj is BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | 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 & Record<string, unknown>) | SerializedConstructor;\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\nexport {};\n"],"mappings":";;;;;;cAIcQ;AAAAA,UACGC,iBAAAA,CAD0B;EAC1BA,OAAAA,EAAAA,MAAAA;EAAiB,IAAA,EAAA,MAAA,GAAA,SAAA;EAAA,IAMVC,EAAAA,MAAAA,GAAAA,SAAAA;EAAM,YAGNA,EAAAA,MAAAA,GAAAA,SAAAA;EAAM;EAGbC,iBAAa,CAAA,EANND,MAMM,CAAA,MAEpBD,EAAAA,GAAAA,CAAAA;EAEOG;EAIAC;EAKLC,iBAAc,CAAA,EAhBFJ,MAgBE,CAAA,MAAA,EAAA,GAAA,CAAA;EAAA,EAAA,CAAA,EAAA,MAAA;;AAAYK,UAbrBJ,aAAAA,CAaqBI;EAAK,IAAA,EAAA,MAAA;EAC1BC,IAAAA,EAZPP,iBAYmB;AAa7B;AAA6B,UAvBZG,gBAAAA,CAuBY;EAAA,IAAoBP,EAAAA,MAAAA;EAAgB,OAAGA,CAAAA,EArBtDM,aAqBsDN;;AAA8CC,UAnBjGO,eAAAA,CAmBiGP;EAAW,IAG1FY,EAAAA,MAAAA;EAAU,IAAEC,EAAAA,MAAAA,GAAAA,SAAAA;EAAK,IAAtChB,EAAAA,MAAAA;;AACMY,KAlBRD,cAAAA,GAkBQC,MAAAA,GAlBkBA,KAkBlBA,CAlBwBb,YAkBxBa,CAAAA;AAMIC,UAvBPA,YAAAA,CAuBOA;EAAY;;;;;AAOL;EAEPO,SAAAA,EAAAA,MAAY;EAAA;;;EAA4D,IAAGT,EAAAA,MAAAA;AAAc;AASzFU,KA5BZP,iBA4BwB,CAAA,mBA5BaZ,gBA4Bb,GA5BgCA,gBA4BhC,EAAA,cA5BgEC,WA4BhE,GA5B8EA,WA4B9E,CAAA,GAAA;EAMNmB,EAAAA,CAAAA,EAAAA,MAAAA;EAAW,IAAA,CAAA,EAAA,MAAA;EAAA,OAAoBpB,CAAAA,EA/B/CF,oBA+B+CE,CA/B1Ba,UA+B0Bb,EA/Bdc,KA+Bcd,CAAAA;EAAgB,aAAGA,CAAAA,EA9B5DU,KA8B4DV,CA9BtDH,YAAAA,CAAakB,QA8ByCf,CAAAA;EAAgB;EAA2B,iBAAGC,CAAAA,EAAAA;IAAqDY;;;IAIrKV,aAAAA,CAAAA,EA5BUQ,YA4BVR;IACcW;;;IAGfhB,UAAAA,CAAAA,EA5BQkB,cA4BRlB,EAAAA;IACwCe,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;EAAU,CAAA;EAAO,iBAAnCD,CAAAA,EA1BXK,OA0BWL,CA1BHb,sBA0BGa,CA1BoBC,UA0BpBD,EA1BgCE,KA0BhCF,CAAAA,CAAAA;CAAiB;AACCC,iBAzB7BK,YAAAA,CAyB6BL,YAAAA,EAzBFJ,cAyBEI,EAAAA,aAAAA,EAzB6BJ,cAyB7BI,CAAAA,EAzB8CJ,cAyB9CI;;;;;;;;;AAkB4BA,iBAlCzDM,YAAAA,CAkCyDN,IAAAA,CAAAA,EAAAA,SAAAA,GAAAA,OAAAA,EAAAA,KAAAA,CAAAA,EAAAA,SAAAA,GAAAA,OAAAA,CAAAA,EAAAA,SAAAA,GAAAA,OAAAA,GAAAA,SAAAA;;;;;;AAOrDR,uBAnCEe,WAmCFf,CAAAA,mBAnCiCL,gBAmCjCK,GAnCoDL,gBAmCpDK,EAAAA,cAnCoFJ,WAmCpFI,GAnCkGJ,WAmClGI,CAAAA,SAnCuHV,YAAAA,YAAwBO,OAmC/IG,CAnCuJQ,UAmCvJR,EAnCmKS,KAmCnKT,CAAAA,CAAAA;EAAM,YACUe,EAAAA,MAAAA,EAAAA;EAAW,eAIvCG,EAAAA,OAAAA;EAAW,IAxCwH5B,UAAAA,CAAAA,CAAAA,EAG7HU,MAH6HV,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;EAAY,UAIjJQ,cAAAA,CAJ6JD,EAAAA,IAAAA;EAAO,kBAAA,IAAA,EAKtJY,KALsJ;EA6CtKE,EAAAA,CAAAA,EAAAA,MAAAA;EAeYQ,IAAAA,CAAAA,EAAAA,MAAAA;EACAC,OAAAA,EArDX3B,oBAqDsB,CArDDe,UAqDC,EArDWC,KAqDX,CAAA;EAAA,iBAAA,EApDZO,WAoDY,CApDAT,iBAoDA,CApDkBC,UAoDlB,EApD8BC,KAoD9B,CAAA,CAAA,mBAAA,CAAA,CAAA;EAAA,iBAE7BT,EArDiBgB,WAqDjBhB,CArD6BO,iBAqD7BP,CArD+CQ,UAqD/CR,EArD2DS,KAqD3DT,CAAAA,CAAAA,mBAAAA,CAAAA,CAAAA;EAAM;;AAIH;AACT;;;;;;AAA+G;AAE/G;EAAiC,QAAA,CAAA,CAAA,EAhDjBJ,WAgDiB;EAAA;;;AAAuD;EAQ1D6B,OAAAA,CAAAA,CAAAA,EAnDf7B,WAmD+B;EAAA,WAAA,CAAA,GAAA,EAlDzBH,oBAkDyB,CAlDJe,UAkDI,EAlDQC,KAkDR,CAAA,GAlDiBF,iBAkDjB,CAlDmCC,UAkDnC,EAlD+CC,KAkD/C,CAAA;EAAA;EAAoC,IAAGd,IAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAgB,IAAgBC,aAAAA,CAAAA,CAAAA,EA/C5FS,KA+C4FT,CA/CtFJ,YAAAA,CAAakB,QA+CyEd,CAAAA;EAAW,MAAGA,CAAAA,CAAAA,EA9CrHK,aA8CqHL;EAAW,OAAsBY,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAU;EAAO,IAC1JiB,gBAAAA,CAAAA,CAAAA,EA5CCzB,MA4CDyB,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA;EAAgB,OAAoBjB,UAAAA,CAAAA,GAAAA,EAAAA,OAAAA,CAAAA,EAAAA,GAAAA,IA3CnBO,WA2CmBP;EAAU;EAAO;EAAlB,SAClBiB,CAAAA,KAAAA,EAAAA,MAAAA,GAAAA,SAAAA,CAAAA,EAAAA,IAAAA;EAAgB,KAxCnDR,MAAAA,CAAOC,WAAAA,GAsCwIH,EAAAA,GAAAA;AAAW;AAInK;;;AAEaX,KAvCDO,cAAAA,GAuCCP;EAAc;AAEjB;AACV;EAA+C,EAAA,EAAA,MAAA;EAAA;;AAA+C;EAClFwB,QAAAA,EAnCEtB,YAmCa;EAAA;;;EAAqC,IAAIV,EAAAA,UAAAA;EAAW,KAAEQ,CAAAA,EAAAA,MAAAA;CAAc;AAM3FG,iBAlCoBY,qBAAAA,CAkCpBZ,KAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,KAAAA,IAlCqEI,cAkCrEJ,EAAAA;AAAoBP,iBAjCAoB,WAAAA;;AAiCgD,IAAA,EA/BlEpB,MA+BkE,CAAA,MAAA,EAAA,GAAA,CAAA;AAIxE;AAIA,KAAwB8B,EArCjB9B,MAqCiB8B,CAAAA,MAAAA,EAAAA,GAAkB;;GAnCvC9B;iBACqBqB,4BAA4B7B,qBAAqB8B,mBAAmBA,YAAYA;;iBAEhFC,yBAAyBC,sBAAsBA,gBAAgBA;;;;;;;;uBAQzDC,oCAAoC9B,mBAAmBA,gCAAgCC,cAAcA,qBAAqBmB,YAAYP,YAAYC;yBACrJgB,mBAAmBA,iBAAiBjB,YAAYC;0CAC/BgB;;KAEhCC,oBAAAA;QACF9B;WACGQ;;IAETJ;iBACoB2B,uBAAAA,IAA2BC,uBAAuBF;KAC9DE,eAAAA,GAAkBb,cAAcW,wBAAwB9B,aAAaQ;;;;QAKvER;IACNW,oBAAoBP,2BAA2BT;;;;iBAI3BsC,aAAAA,wCAAqDd;;;;iBAIrDe,kBAAAA,wCAA0DL"}
@@ -146,8 +146,7 @@ left: Record<string, any>,
146
146
  right: Record<string, any>
147
147
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
148
  ): Record<string, any>;
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;
149
+ declare function _mergeLists<Content extends ContentBlock>(left?: Content[], right?: Content[]): Content[] | undefined;
151
150
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
151
  declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;
153
152
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":["Serializable","SerializedConstructor","ContentBlock","$InferMessageContent","$InferResponseMetadata","MessageStructure","MessageType","Message","MESSAGE_SYMBOL","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageContent","Array","FunctionCall","BaseMessageFields","TStructure","TRole","Standard","OpenAIToolCall","Partial","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferResponseMetadata, MessageStructure, MessageType, Message } from \"./message.js\";\n/** @internal */\ndeclare const MESSAGE_SYMBOL: unique symbol;\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageContent = string | Array<ContentBlock>;\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 * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {\n id?: string;\n name?: string;\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};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\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 declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\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 declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n readonly [MESSAGE_SYMBOL]: true;\n abstract readonly type: TRole;\n id?: string;\n name?: string;\n content: $InferMessageContent<TStructure, TRole>;\n additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]>;\n response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>[\"response_metadata\"]>;\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 /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType;\n constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);\n /** Get text content of the message. */\n get text(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is BaseMessage;\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): void;\n get [Symbol.toStringTag](): any;\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 * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeLists(left?: any[], right?: any[]): any[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\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 declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n static isInstance(obj: unknown): obj is BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | 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 & Record<string, unknown>) | SerializedConstructor;\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","names":["Serializable","SerializedConstructor","ContentBlock","$InferMessageContent","$InferResponseMetadata","MessageStructure","MessageType","Message","MESSAGE_SYMBOL","StoredMessageData","Record","StoredMessage","StoredGeneration","StoredMessageV1","MessageContent","Array","FunctionCall","BaseMessageFields","TStructure","TRole","Standard","OpenAIToolCall","Partial","mergeContent","_mergeStatus","BaseMessage","NonNullable","Symbol","toStringTag","isOpenAIToolCallArray","_mergeDicts","_mergeLists","Content","_mergeObj","T","BaseMessageChunk","MessageFieldWithRole","_isMessageFieldWithRole","BaseMessageLike","isBaseMessage","isBaseMessageChunk"],"sources":["../../src/messages/base.d.ts"],"sourcesContent":["import { Serializable, SerializedConstructor } from \"../load/serializable.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferResponseMetadata, MessageStructure, MessageType, Message } from \"./message.js\";\n/** @internal */\ndeclare const MESSAGE_SYMBOL: unique symbol;\nexport interface StoredMessageData {\n content: string;\n role: string | undefined;\n name: string | undefined;\n tool_call_id: string | undefined;\n // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response_metadata?: Record<string, any>;\n id?: string;\n}\nexport interface StoredMessage {\n type: string;\n data: StoredMessageData;\n}\nexport interface StoredGeneration {\n text: string;\n message?: StoredMessage;\n}\nexport interface StoredMessageV1 {\n type: string;\n role: string | undefined;\n text: string;\n}\nexport type MessageContent = string | Array<ContentBlock>;\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 * The name of the function to call.\n */\n name: string;\n}\nexport type BaseMessageFields<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> = {\n id?: string;\n name?: string;\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};\nexport declare function mergeContent(firstContent: MessageContent, secondContent: MessageContent): MessageContent;\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 declare function _mergeStatus(left?: \"success\" | \"error\", right?: \"success\" | \"error\"): \"success\" | \"error\" | undefined;\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 declare abstract class BaseMessage<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends Serializable implements Message<TStructure, TRole> {\n lc_namespace: string[];\n lc_serializable: boolean;\n get lc_aliases(): Record<string, string>;\n readonly [MESSAGE_SYMBOL]: true;\n abstract readonly type: TRole;\n id?: string;\n name?: string;\n content: $InferMessageContent<TStructure, TRole>;\n additional_kwargs: NonNullable<BaseMessageFields<TStructure, TRole>[\"additional_kwargs\"]>;\n response_metadata: NonNullable<BaseMessageFields<TStructure, TRole>[\"response_metadata\"]>;\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 /**\n * @deprecated Use .type instead\n * The type of the message.\n */\n getType(): MessageType;\n constructor(arg: $InferMessageContent<TStructure, TRole> | BaseMessageFields<TStructure, TRole>);\n /** Get text content of the message. */\n get text(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n toDict(): StoredMessage;\n static lc_name(): string;\n // Can't be protected for silly reasons\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is BaseMessage;\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): void;\n get [Symbol.toStringTag](): any;\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 * The function that the model called.\n */\n function: FunctionCall;\n /**\n * The type of the tool. Currently, only `function` is supported.\n */\n type: \"function\";\n index?: number;\n};\nexport declare function isOpenAIToolCallArray(value?: unknown): value is OpenAIToolCall[];\nexport declare function _mergeDicts(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nleft: Record<string, any>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nright: Record<string, any>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any>;\nexport declare function _mergeLists<Content extends ContentBlock>(left?: Content[], right?: Content[]): Content[] | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare function _mergeObj<T = any>(left: T | undefined, right: T | undefined): T;\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 declare abstract class BaseMessageChunk<TStructure extends MessageStructure = MessageStructure, TRole extends MessageType = MessageType> extends BaseMessage<TStructure, TRole> {\n abstract concat(chunk: BaseMessageChunk): BaseMessageChunk<TStructure, TRole>;\n static isInstance(obj: unknown): obj is BaseMessageChunk;\n}\nexport type MessageFieldWithRole = {\n role: MessageType;\n content: MessageContent;\n name?: string;\n} & Record<string, unknown>;\nexport declare function _isMessageFieldWithRole(x: BaseMessageLike): x is MessageFieldWithRole;\nexport type BaseMessageLike = BaseMessage | MessageFieldWithRole | [MessageType, MessageContent] | 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 & Record<string, unknown>) | SerializedConstructor;\n/**\n * @deprecated Use {@link BaseMessage.isInstance} instead\n */\nexport declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;\n/**\n * @deprecated Use {@link BaseMessageChunk.isInstance} instead\n */\nexport declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;\nexport {};\n"],"mappings":"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"}
@@ -147,7 +147,7 @@ var BaseMessage = class extends Serializable {
147
147
  }
148
148
  toDict() {
149
149
  return {
150
- type: this._getType(),
150
+ type: this.getType(),
151
151
  data: this.toJSON().kwargs
152
152
  };
153
153
  }
@@ -205,11 +205,11 @@ function _mergeLists(left, right) {
205
205
  else if (left === void 0 || right === void 0) return left || right;
206
206
  else {
207
207
  const merged = [...left];
208
- for (const item of right) if (typeof item === "object" && "index" in item && typeof item.index === "number") {
209
- const toMerge = merged.findIndex((leftItem) => leftItem.index === item.index);
210
- if (toMerge !== -1) merged[toMerge] = _mergeDicts(merged[toMerge], item);
208
+ for (const item of right) if (typeof item === "object" && item !== null && "index" in item && typeof item.index === "number") {
209
+ const toMerge = merged.findIndex((leftItem) => leftItem !== null && typeof leftItem === "object" && "index" in leftItem && leftItem.index === item.index && ("id" in leftItem && "id" in item ? leftItem.id === item.id : !("id" in leftItem) && !("id" in item)));
210
+ if (toMerge !== -1 && typeof merged[toMerge] === "object" && merged[toMerge] !== null) merged[toMerge] = _mergeDicts(merged[toMerge], item);
211
211
  else merged.push(item);
212
- } else if (typeof item === "object" && "text" in item && item.text === "") continue;
212
+ } else if (typeof item === "object" && item !== null && "text" in item && item.text === "") continue;
213
213
  else merged.push(item);
214
214
  return merged;
215
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":["firstContent: MessageContent","secondContent: MessageContent","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>","fields: BaseMessageFields<TStructure, TRole>","blocks: Array<ContentBlock>","blocks","obj: unknown","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: any[]","right?: any[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"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\";\n\n/** @internal */\nconst MESSAGE_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 // eslint-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 // eslint-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> = {\n id?: string;\n name?: string;\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\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 (\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 return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\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 return [...firstContent, { 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-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 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) ? { content: arg } : 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[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 // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\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\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\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 ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeLists(left?: any[], right?: any[]) {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) => leftItem.index === item.index\n );\n if (toMerge !== -1) {\n merged[toMerge] = _mergeDicts(merged[toMerge], item);\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\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) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) 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 return (\n super.isInstance(obj) &&\n \"concat\" in obj &&\n typeof obj.concat === \"function\"\n );\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 * @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 (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.js","names":["firstContent: MessageContent","secondContent: MessageContent","left?: \"success\" | \"error\"","right?: \"success\" | \"error\"","obj: any","depthLimit: number","currentDepth: number","obj","result: Record<string, unknown>","arg:\n | $InferMessageContent<TStructure, TRole>\n | BaseMessageFields<TStructure, TRole>","fields: BaseMessageFields<TStructure, TRole>","blocks: Array<ContentBlock>","blocks","obj: unknown","value: string | undefined","depth: number | null","value?: unknown","left: Record<string, any>","right: Record<string, any>","left?: Content[]","right?: Content[]","left: T | undefined","right: T | undefined","x: BaseMessageLike","messageLike?: unknown"],"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\";\n\n/** @internal */\nconst MESSAGE_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 // eslint-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 // eslint-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> = {\n id?: string;\n name?: string;\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\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 (\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 return (\n _mergeLists(firstContent, secondContent) ?? [\n ...firstContent,\n ...secondContent,\n ]\n );\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 return [...firstContent, { 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// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction stringifyWithDepthLimit(obj: any, depthLimit: number): string {\n // eslint-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 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) ? { content: arg } : 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[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 // eslint-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `${(this.constructor as any).lc_name()} ${printable}`;\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\nexport function _mergeDicts(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n left: Record<string, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n right: Record<string, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> {\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 ([\"id\", \"output_version\", \"model_provider\"].includes(key)) {\n // Keep the incoming value for these fields\n merged[key] = value;\n } else {\n merged[key] += value;\n }\n } else if (typeof merged[key] === \"object\" && !Array.isArray(merged[key])) {\n merged[key] = _mergeDicts(merged[key], value);\n } else if (Array.isArray(merged[key])) {\n merged[key] = _mergeLists(merged[key], value);\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\nexport function _mergeLists<Content extends ContentBlock>(\n left?: Content[],\n right?: Content[]\n): Content[] | undefined {\n if (left === undefined && right === undefined) {\n return undefined;\n } else if (left === undefined || right === undefined) {\n return left || right;\n } else {\n const merged = [...left];\n for (const item of right) {\n if (\n typeof item === \"object\" &&\n item !== null &&\n \"index\" in item &&\n typeof item.index === \"number\"\n ) {\n const toMerge = merged.findIndex(\n (leftItem) =>\n leftItem !== null &&\n typeof leftItem === \"object\" &&\n \"index\" in leftItem &&\n leftItem.index === item.index &&\n // Only merge if IDs match (or both are undefined)\n (\"id\" in leftItem && \"id\" in item\n ? leftItem.id === item.id\n : !(\"id\" in leftItem) && !(\"id\" in item))\n );\n if (\n toMerge !== -1 &&\n typeof merged[toMerge] === \"object\" &&\n merged[toMerge] !== null\n ) {\n merged[toMerge] = _mergeDicts(\n merged[toMerge] as Record<string, unknown>,\n item as Record<string, unknown>\n ) as Content;\n } else {\n merged.push(item);\n }\n } else if (\n typeof item === \"object\" &&\n item !== null &&\n \"text\" in item &&\n item.text === \"\"\n ) {\n // No-op - skip empty text blocks\n continue;\n } else {\n merged.push(item);\n }\n }\n return merged;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _mergeObj<T = any>(\n left: T | undefined,\n right: T | undefined\n): T {\n if (!left && !right) {\n throw new Error(\"Cannot merge two undefined objects.\");\n }\n if (!left || !right) {\n return left || (right as T);\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) as T;\n } else if (typeof left === \"object\" && typeof right === \"object\") {\n return _mergeDicts(left, right) 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 return (\n super.isInstance(obj) &&\n \"concat\" in obj &&\n typeof obj.concat === \"function\"\n );\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 * @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 (\n isBaseMessage(messageLike) &&\n typeof (messageLike as BaseMessageChunk).concat === \"function\"\n );\n}\n"],"mappings":"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"}
@@ -18,7 +18,7 @@ function _isNumber(value) {
18
18
  function safeParseJson(value) {
19
19
  try {
20
20
  return JSON.parse(value);
21
- } catch (error) {
21
+ } catch {
22
22
  return void 0;
23
23
  }
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":["block: unknown","type: T","value: unknown","value: string","fn: () => T"],"sources":["../../../src/messages/block_translators/utils.ts"],"sourcesContent":["import type { ContentBlock } from \"../content/index.js\";\n\nexport function _isContentBlock<T extends string>(\n block: unknown,\n type: T\n): block is ContentBlock & { type: T } {\n return _isObject(block) && block.type === type;\n}\n\nexport function _isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function _isArray<T>(value: unknown): value is T[] {\n return Array.isArray(value);\n}\n\nexport function _isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nexport function _isNumber(value: unknown): value is number {\n return typeof value === \"number\";\n}\n\nexport function safeParseJson<T = unknown>(value: string): T | undefined {\n try {\n return JSON.parse(value);\n } catch (error) {\n return undefined;\n }\n}\n\nexport const iife = <T>(fn: () => T): T => fn();\n"],"mappings":";;AAEA,SAAgB,gBACdA,OACAC,MACqC;AACrC,QAAO,UAAU,MAAM,IAAI,MAAM,SAAS;AAC3C;AAED,SAAgB,UAAUC,OAAkD;AAC1E,QAAO,OAAO,UAAU,YAAY,UAAU;AAC/C;AAED,SAAgB,SAAYA,OAA8B;AACxD,QAAO,MAAM,QAAQ,MAAM;AAC5B;AAED,SAAgB,UAAUA,OAAiC;AACzD,QAAO,OAAO,UAAU;AACzB;AAED,SAAgB,UAAUA,OAAiC;AACzD,QAAO,OAAO,UAAU;AACzB;AAED,SAAgB,cAA2BC,OAA8B;AACvE,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;CACzB,SAAQ,OAAO;AACd,SAAO;CACR;AACF;AAED,MAAa,OAAO,CAAIC,OAAmB,IAAI"}
1
+ {"version":3,"file":"utils.cjs","names":["block: unknown","type: T","value: unknown","value: string","fn: () => T"],"sources":["../../../src/messages/block_translators/utils.ts"],"sourcesContent":["import type { ContentBlock } from \"../content/index.js\";\n\nexport function _isContentBlock<T extends string>(\n block: unknown,\n type: T\n): block is ContentBlock & { type: T } {\n return _isObject(block) && block.type === type;\n}\n\nexport function _isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function _isArray<T>(value: unknown): value is T[] {\n return Array.isArray(value);\n}\n\nexport function _isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nexport function _isNumber(value: unknown): value is number {\n return typeof value === \"number\";\n}\n\nexport function safeParseJson<T = unknown>(value: string): T | undefined {\n try {\n return JSON.parse(value);\n } catch {\n return undefined;\n }\n}\n\nexport const iife = <T>(fn: () => T): T => fn();\n"],"mappings":";;AAEA,SAAgB,gBACdA,OACAC,MACqC;AACrC,QAAO,UAAU,MAAM,IAAI,MAAM,SAAS;AAC3C;AAED,SAAgB,UAAUC,OAAkD;AAC1E,QAAO,OAAO,UAAU,YAAY,UAAU;AAC/C;AAED,SAAgB,SAAYA,OAA8B;AACxD,QAAO,MAAM,QAAQ,MAAM;AAC5B;AAED,SAAgB,UAAUA,OAAiC;AACzD,QAAO,OAAO,UAAU;AACzB;AAED,SAAgB,UAAUA,OAAiC;AACzD,QAAO,OAAO,UAAU;AACzB;AAED,SAAgB,cAA2BC,OAA8B;AACvE,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;CACzB,QAAO;AACN,SAAO;CACR;AACF;AAED,MAAa,OAAO,CAAIC,OAAmB,IAAI"}
@@ -17,7 +17,7 @@ function _isNumber(value) {
17
17
  function safeParseJson(value) {
18
18
  try {
19
19
  return JSON.parse(value);
20
- } catch (error) {
20
+ } catch {
21
21
  return void 0;
22
22
  }
23
23
  }