@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
@@ -26,19 +26,17 @@ import { prompt_values_exports } from "../prompt_values.js";
26
26
  import { stores_exports } from "../stores.js";
27
27
  import { retrievers_exports } from "../retrievers/index.js";
28
28
  import { vectorstores_exports } from "../vectorstores.js";
29
- import { hash_exports } from "../utils/js-sha1/hash.js";
30
- import { hash_exports as hash_exports$1 } from "../utils/js-sha256/hash.js";
31
- import { hash_exports as hash_exports$2 } from "../utils/hash.js";
29
+ import { hash_exports } from "../utils/hash.js";
32
30
  import { base_exports as base_exports$2 } from "../caches/base.js";
33
31
  import { base_exports as base_exports$3 } from "../document_loaders/base.js";
34
32
  import { langsmith_exports } from "../document_loaders/langsmith.js";
35
33
  import { documents_exports } from "../documents/index.js";
36
34
  import { example_selectors_exports } from "../example_selectors/index.js";
37
- import { indexing_exports } from "../indexing/index.js";
38
35
  import { tiktoken_exports } from "../utils/tiktoken.js";
39
36
  import { base_exports as base_exports$4 } from "../language_models/base.js";
40
37
  import { chat_models_exports } from "../language_models/chat_models.js";
41
38
  import { llms_exports } from "../language_models/llms.js";
39
+ import { indexing_exports } from "../indexing/index.js";
42
40
  import { web_exports } from "../callbacks/dispatch/web.js";
43
41
  import { dispatch_exports } from "../callbacks/dispatch/index.js";
44
42
  import { runnables_exports } from "../runnables/index.js";
@@ -116,9 +114,7 @@ __export(import_map_exports, {
116
114
  utils__env: () => env_exports,
117
115
  utils__event_source_parse: () => event_source_parse_exports,
118
116
  utils__function_calling: () => function_calling_exports,
119
- utils__hash: () => hash_exports$2,
120
- utils__hash__insecure: () => hash_exports,
121
- utils__hash__sha256: () => hash_exports$1,
117
+ utils__hash: () => hash_exports,
122
118
  utils__json_patch: () => json_patch_exports,
123
119
  utils__json_schema: () => json_schema_exports,
124
120
  utils__math: () => math_exports,
@@ -1 +1 @@
1
- {"version":3,"file":"import_map.js","names":[],"sources":["../../src/load/import_map.ts"],"sourcesContent":["// Auto-generated by import-map plugin. Do not edit manually.\n\nexport * as index from \"../index.js\";\nexport * as agents from \"../agents.js\";\nexport * as caches from \"../caches/base.js\";\nexport * as callbacks__base from \"../callbacks/base.js\";\nexport * as callbacks__dispatch from \"../callbacks/dispatch/index.js\";\nexport * as callbacks__dispatch__web from \"../callbacks/dispatch/web.js\";\nexport * as callbacks__manager from \"../callbacks/manager.js\";\nexport * as callbacks__promises from \"../callbacks/promises.js\";\nexport * as chat_history from \"../chat_history.js\";\nexport * as context from \"../context.js\";\nexport * as documents from \"../documents/index.js\";\nexport * as document_loaders__base from \"../document_loaders/base.js\";\nexport * as document_loaders__langsmith from \"../document_loaders/langsmith.js\";\nexport * as embeddings from \"../embeddings.js\";\nexport * as example_selectors from \"../example_selectors/index.js\";\nexport * as indexing from \"../indexing/index.js\";\nexport * as language_models__base from \"../language_models/base.js\";\nexport * as language_models__chat_models from \"../language_models/chat_models.js\";\nexport * as language_models__llms from \"../language_models/llms.js\";\nexport * as load__serializable from \"../load/serializable.js\";\nexport * as memory from \"../memory.js\";\nexport * as messages from \"../messages/index.js\";\nexport * as messages__tool from \"../messages/tool.js\";\nexport * as output_parsers from \"../output_parsers/index.js\";\nexport * as output_parsers__openai_tools from \"../output_parsers/openai_tools/index.js\";\nexport * as output_parsers__openai_functions from \"../output_parsers/openai_functions/index.js\";\nexport * as outputs from \"../outputs.js\";\nexport * as prompts from \"../prompts/index.js\";\nexport * as prompt_values from \"../prompt_values.js\";\nexport * as runnables from \"../runnables/index.js\";\nexport * as runnables__graph from \"../runnables/graph.js\";\nexport * as runnables__remote from \"../runnables/remote.js\";\nexport * as retrievers from \"../retrievers/index.js\";\nexport * as retrievers__document_compressors from \"../retrievers/document_compressors/base.js\";\nexport * as singletons from \"../singletons/index.js\";\nexport * as stores from \"../stores.js\";\nexport * as structured_query from \"../structured_query/index.js\";\nexport * as tools from \"../tools/index.js\";\nexport * as tracers__base from \"../tracers/base.js\";\nexport * as tracers__console from \"../tracers/console.js\";\nexport * as tracers__initialize from \"../tracers/initialize.js\";\nexport * as tracers__log_stream from \"../tracers/log_stream.js\";\nexport * as tracers__run_collector from \"../tracers/run_collector.js\";\nexport * as tracers__tracer_langchain from \"../tracers/tracer_langchain.js\";\nexport * as tracers__tracer_langchain_v1 from \"../tracers/tracer_langchain_v1.js\";\nexport * as types__stream from \"../types/stream.js\";\nexport * as utils__async_caller from \"../utils/async_caller.js\";\nexport * as utils__chunk_array from \"../utils/chunk_array.js\";\nexport * as utils__env from \"../utils/env.js\";\nexport * as utils__event_source_parse from \"../utils/event_source_parse.js\";\nexport * as utils__function_calling from \"../utils/function_calling.js\";\nexport * as utils__hash from \"../utils/hash.js\";\nexport * as utils__hash__insecure from \"../utils/js-sha1/hash.js\";\nexport * as utils__hash__sha256 from \"../utils/js-sha256/hash.js\";\nexport * as utils__json_patch from \"../utils/json_patch.js\";\nexport * as utils__json_schema from \"../utils/json_schema.js\";\nexport * as utils__math from \"../utils/math.js\";\nexport * as utils__stream from \"../utils/stream.js\";\nexport * as utils__testing from \"../utils/testing/index.js\";\nexport * as utils__tiktoken from \"../utils/tiktoken.js\";\nexport * as utils__types from \"../utils/types/index.js\";\nexport * as vectorstores from \"../vectorstores.js\";\n"],"mappings":""}
1
+ {"version":3,"file":"import_map.js","names":[],"sources":["../../src/load/import_map.ts"],"sourcesContent":["// Auto-generated by import-map plugin. Do not edit manually.\n\nexport * as index from \"../index.js\";\nexport * as agents from \"../agents.js\";\nexport * as caches from \"../caches/base.js\";\nexport * as callbacks__base from \"../callbacks/base.js\";\nexport * as callbacks__dispatch from \"../callbacks/dispatch/index.js\";\nexport * as callbacks__dispatch__web from \"../callbacks/dispatch/web.js\";\nexport * as callbacks__manager from \"../callbacks/manager.js\";\nexport * as callbacks__promises from \"../callbacks/promises.js\";\nexport * as chat_history from \"../chat_history.js\";\nexport * as context from \"../context.js\";\nexport * as documents from \"../documents/index.js\";\nexport * as document_loaders__base from \"../document_loaders/base.js\";\nexport * as document_loaders__langsmith from \"../document_loaders/langsmith.js\";\nexport * as embeddings from \"../embeddings.js\";\nexport * as example_selectors from \"../example_selectors/index.js\";\nexport * as indexing from \"../indexing/index.js\";\nexport * as language_models__base from \"../language_models/base.js\";\nexport * as language_models__chat_models from \"../language_models/chat_models.js\";\nexport * as language_models__llms from \"../language_models/llms.js\";\nexport * as load__serializable from \"../load/serializable.js\";\nexport * as memory from \"../memory.js\";\nexport * as messages from \"../messages/index.js\";\nexport * as messages__tool from \"../messages/tool.js\";\nexport * as output_parsers from \"../output_parsers/index.js\";\nexport * as output_parsers__openai_tools from \"../output_parsers/openai_tools/index.js\";\nexport * as output_parsers__openai_functions from \"../output_parsers/openai_functions/index.js\";\nexport * as outputs from \"../outputs.js\";\nexport * as prompts from \"../prompts/index.js\";\nexport * as prompt_values from \"../prompt_values.js\";\nexport * as runnables from \"../runnables/index.js\";\nexport * as runnables__graph from \"../runnables/graph.js\";\nexport * as runnables__remote from \"../runnables/remote.js\";\nexport * as retrievers from \"../retrievers/index.js\";\nexport * as retrievers__document_compressors from \"../retrievers/document_compressors/base.js\";\nexport * as singletons from \"../singletons/index.js\";\nexport * as stores from \"../stores.js\";\nexport * as structured_query from \"../structured_query/index.js\";\nexport * as tools from \"../tools/index.js\";\nexport * as tracers__base from \"../tracers/base.js\";\nexport * as tracers__console from \"../tracers/console.js\";\nexport * as tracers__initialize from \"../tracers/initialize.js\";\nexport * as tracers__log_stream from \"../tracers/log_stream.js\";\nexport * as tracers__run_collector from \"../tracers/run_collector.js\";\nexport * as tracers__tracer_langchain from \"../tracers/tracer_langchain.js\";\nexport * as tracers__tracer_langchain_v1 from \"../tracers/tracer_langchain_v1.js\";\nexport * as types__stream from \"../types/stream.js\";\nexport * as utils__async_caller from \"../utils/async_caller.js\";\nexport * as utils__chunk_array from \"../utils/chunk_array.js\";\nexport * as utils__env from \"../utils/env.js\";\nexport * as utils__event_source_parse from \"../utils/event_source_parse.js\";\nexport * as utils__function_calling from \"../utils/function_calling.js\";\nexport * as utils__hash from \"../utils/hash.js\";\nexport * as utils__json_patch from \"../utils/json_patch.js\";\nexport * as utils__json_schema from \"../utils/json_schema.js\";\nexport * as utils__math from \"../utils/math.js\";\nexport * as utils__stream from \"../utils/stream.js\";\nexport * as utils__testing from \"../utils/testing/index.js\";\nexport * as utils__tiktoken from \"../utils/tiktoken.js\";\nexport * as utils__types from \"../utils/types/index.js\";\nexport * as vectorstores from \"../vectorstores.js\";\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["constructor: typeof Serializable","aliases: { [key: string]: string }","value: unknown","getEnvironmentVariable","coreImportMap","module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null","defaultOptionalImportEntrypoints","optionalImportEntrypoints","module","finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"]","importMapKey: string","get_lc_unique_name","mapKeys","keyFromJson","value","text: string","mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }"],"sources":["../../src/load/index.ts"],"sourcesContent":["import {\n Serializable,\n SerializedConstructor,\n SerializedNotImplemented,\n SerializedSecret,\n get_lc_unique_name,\n} from \"./serializable.js\";\nimport { optionalImportEntrypoints as defaultOptionalImportEntrypoints } from \"./import_constants.js\";\nimport * as coreImportMap from \"./import_map.js\";\nimport type { OptionalImportMap, SecretMap } from \"./import_type.js\";\nimport { type SerializedFields, keyFromJson, mapKeys } from \"./map_keys.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\n\nfunction combineAliasesAndInvert(constructor: typeof Serializable) {\n const aliases: { [key: string]: string } = {};\n for (\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = constructor;\n current && current.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current.prototype, \"lc_aliases\"));\n }\n return Object.entries(aliases).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function reviver(\n this: {\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n secretsMap?: SecretMap;\n importMap?: Record<string, unknown>;\n path?: string[];\n },\n value: unknown\n): Promise<unknown> {\n const {\n optionalImportsMap = {},\n optionalImportEntrypoints = [],\n importMap = {},\n secretsMap = {},\n path = [\"$\"],\n } = this;\n const pathStr = path.join(\".\");\n if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"secret\"\n ) {\n const serialized = value as SerializedSecret;\n const [key] = serialized.id;\n if (key in secretsMap) {\n return secretsMap[key as keyof SecretMap];\n } else {\n const secretValueInEnv = getEnvironmentVariable(key);\n if (secretValueInEnv) {\n return secretValueInEnv;\n } else {\n throw new Error(\n `Missing key \"${key}\" for ${pathStr} in load(secretsMap={})`\n );\n }\n }\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"not_implemented\"\n ) {\n const serialized = value as SerializedNotImplemented;\n const str = JSON.stringify(serialized);\n throw new Error(\n `Trying to load an object that doesn't implement serialization: ${pathStr} -> ${str}`\n );\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n \"kwargs\" in value &&\n value.lc === 1\n ) {\n const serialized = value as SerializedConstructor;\n const str = JSON.stringify(serialized);\n const [name, ...namespaceReverse] = serialized.id.slice().reverse();\n const namespace = namespaceReverse.reverse();\n const importMaps = { langchain_core: coreImportMap, langchain: importMap };\n\n let module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null = null;\n\n const optionalImportNamespaceAliases = [namespace.join(\"/\")];\n if (namespace[0] === \"langchain_community\") {\n optionalImportNamespaceAliases.push(\n [\"langchain\", ...namespace.slice(1)].join(\"/\")\n );\n }\n const matchingNamespaceAlias = optionalImportNamespaceAliases.find(\n (alias) => alias in optionalImportsMap\n );\n if (\n defaultOptionalImportEntrypoints\n .concat(optionalImportEntrypoints)\n .includes(namespace.join(\"/\")) ||\n matchingNamespaceAlias\n ) {\n if (matchingNamespaceAlias !== undefined) {\n module = await optionalImportsMap[\n matchingNamespaceAlias as keyof typeof optionalImportsMap\n ];\n } else {\n throw new Error(\n `Missing key \"${namespace.join(\n \"/\"\n )}\" for ${pathStr} in load(optionalImportsMap={})`\n );\n }\n } else {\n let finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"];\n // Currently, we only support langchain and langchain_core imports.\n if (namespace[0] === \"langchain\" || namespace[0] === \"langchain_core\") {\n finalImportMap = importMaps[namespace[0]];\n namespace.shift();\n } else {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // The root namespace \"langchain\" is not a valid import.\n if (namespace.length === 0) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Find the longest matching namespace.\n let importMapKey: string;\n do {\n importMapKey = namespace.join(\"__\");\n if (importMapKey in finalImportMap) {\n break;\n } else {\n namespace.pop();\n }\n } while (namespace.length > 0);\n\n // If no matching namespace is found, throw an error.\n if (importMapKey in finalImportMap) {\n module = finalImportMap[importMapKey as keyof typeof finalImportMap];\n }\n }\n\n if (typeof module !== \"object\" || module === null) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Extract the builder from the import map.\n const builder =\n // look for a named export with the same name as the class\n module[name as keyof typeof module] ??\n // look for an export with a lc_name property matching the class name\n // this is necessary for classes that are minified\n Object.values(module).find(\n (v) =>\n typeof v === \"function\" &&\n get_lc_unique_name(v as typeof Serializable) === name\n );\n if (typeof builder !== \"function\") {\n throw new Error(`Invalid identifer: ${pathStr} -> ${str}`);\n }\n\n // Recurse on the arguments, which may be serialized objects themselves\n const kwargs = await reviver.call(\n { ...this, path: [...path, \"kwargs\"] },\n serialized.kwargs\n );\n\n // Construct the object\n if (serialized.type === \"constructor\") {\n // eslint-disable-next-line new-cap, @typescript-eslint/no-explicit-any\n const instance = new (builder as any)(\n mapKeys(\n kwargs as SerializedFields,\n keyFromJson,\n combineAliasesAndInvert(builder)\n )\n );\n\n // Minification in severless/edge runtimes will mange the\n // name of classes presented in traces. As the names in import map\n // are present as-is even with minification, use these names instead\n Object.defineProperty(instance.constructor, \"name\", { value: name });\n\n return instance;\n } else {\n throw new Error(`Invalid type: ${pathStr} -> ${str}`);\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Array.isArray(value)) {\n return Promise.all(\n value.map((v, i) =>\n reviver.call({ ...this, path: [...path, `${i}`] }, v)\n )\n );\n } else {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(value).map(async ([key, value]) => [\n key,\n await reviver.call({ ...this, path: [...path, key] }, value),\n ])\n )\n );\n }\n }\n return value;\n}\n\nexport async function load<T>(\n text: string,\n mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }\n): Promise<T> {\n const json = JSON.parse(text);\n return reviver.call({ ...mappings }, json) as Promise<T>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["constructor: typeof Serializable","aliases: { [key: string]: string }","value: unknown","getEnvironmentVariable","coreImportMap","module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null","defaultOptionalImportEntrypoints","optionalImportEntrypoints","module","finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"]","importMapKey: string","get_lc_unique_name","mapKeys","keyFromJson","value","text: string","mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }"],"sources":["../../src/load/index.ts"],"sourcesContent":["import {\n Serializable,\n SerializedConstructor,\n SerializedNotImplemented,\n SerializedSecret,\n get_lc_unique_name,\n} from \"./serializable.js\";\nimport { optionalImportEntrypoints as defaultOptionalImportEntrypoints } from \"./import_constants.js\";\nimport * as coreImportMap from \"./import_map.js\";\nimport type { OptionalImportMap, SecretMap } from \"./import_type.js\";\nimport { type SerializedFields, keyFromJson, mapKeys } from \"./map_keys.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\n\nfunction combineAliasesAndInvert(constructor: typeof Serializable) {\n const aliases: { [key: string]: string } = {};\n for (\n let current = constructor;\n current && current.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current.prototype, \"lc_aliases\"));\n }\n return Object.entries(aliases).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function reviver(\n this: {\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n secretsMap?: SecretMap;\n importMap?: Record<string, unknown>;\n path?: string[];\n },\n value: unknown\n): Promise<unknown> {\n const {\n optionalImportsMap = {},\n optionalImportEntrypoints = [],\n importMap = {},\n secretsMap = {},\n path = [\"$\"],\n } = this;\n const pathStr = path.join(\".\");\n if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"secret\"\n ) {\n const serialized = value as SerializedSecret;\n const [key] = serialized.id;\n if (key in secretsMap) {\n return secretsMap[key as keyof SecretMap];\n } else {\n const secretValueInEnv = getEnvironmentVariable(key);\n if (secretValueInEnv) {\n return secretValueInEnv;\n } else {\n throw new Error(\n `Missing key \"${key}\" for ${pathStr} in load(secretsMap={})`\n );\n }\n }\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"not_implemented\"\n ) {\n const serialized = value as SerializedNotImplemented;\n const str = JSON.stringify(serialized);\n throw new Error(\n `Trying to load an object that doesn't implement serialization: ${pathStr} -> ${str}`\n );\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n \"kwargs\" in value &&\n value.lc === 1\n ) {\n const serialized = value as SerializedConstructor;\n const str = JSON.stringify(serialized);\n const [name, ...namespaceReverse] = serialized.id.slice().reverse();\n const namespace = namespaceReverse.reverse();\n const importMaps = { langchain_core: coreImportMap, langchain: importMap };\n\n let module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null = null;\n\n const optionalImportNamespaceAliases = [namespace.join(\"/\")];\n if (namespace[0] === \"langchain_community\") {\n optionalImportNamespaceAliases.push(\n [\"langchain\", ...namespace.slice(1)].join(\"/\")\n );\n }\n const matchingNamespaceAlias = optionalImportNamespaceAliases.find(\n (alias) => alias in optionalImportsMap\n );\n if (\n defaultOptionalImportEntrypoints\n .concat(optionalImportEntrypoints)\n .includes(namespace.join(\"/\")) ||\n matchingNamespaceAlias\n ) {\n if (matchingNamespaceAlias !== undefined) {\n module = await optionalImportsMap[\n matchingNamespaceAlias as keyof typeof optionalImportsMap\n ];\n } else {\n throw new Error(\n `Missing key \"${namespace.join(\n \"/\"\n )}\" for ${pathStr} in load(optionalImportsMap={})`\n );\n }\n } else {\n let finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"];\n // Currently, we only support langchain and langchain_core imports.\n if (namespace[0] === \"langchain\" || namespace[0] === \"langchain_core\") {\n finalImportMap = importMaps[namespace[0]];\n namespace.shift();\n } else {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // The root namespace \"langchain\" is not a valid import.\n if (namespace.length === 0) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Find the longest matching namespace.\n let importMapKey: string;\n do {\n importMapKey = namespace.join(\"__\");\n if (importMapKey in finalImportMap) {\n break;\n } else {\n namespace.pop();\n }\n } while (namespace.length > 0);\n\n // If no matching namespace is found, throw an error.\n if (importMapKey in finalImportMap) {\n module = finalImportMap[importMapKey as keyof typeof finalImportMap];\n }\n }\n\n if (typeof module !== \"object\" || module === null) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Extract the builder from the import map.\n const builder =\n // look for a named export with the same name as the class\n module[name as keyof typeof module] ??\n // look for an export with a lc_name property matching the class name\n // this is necessary for classes that are minified\n Object.values(module).find(\n (v) =>\n typeof v === \"function\" &&\n get_lc_unique_name(v as typeof Serializable) === name\n );\n if (typeof builder !== \"function\") {\n throw new Error(`Invalid identifer: ${pathStr} -> ${str}`);\n }\n\n // Recurse on the arguments, which may be serialized objects themselves\n const kwargs = await reviver.call(\n { ...this, path: [...path, \"kwargs\"] },\n serialized.kwargs\n );\n\n // Construct the object\n if (serialized.type === \"constructor\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const instance = new (builder as any)(\n mapKeys(\n kwargs as SerializedFields,\n keyFromJson,\n combineAliasesAndInvert(builder)\n )\n );\n\n // Minification in severless/edge runtimes will mange the\n // name of classes presented in traces. As the names in import map\n // are present as-is even with minification, use these names instead\n Object.defineProperty(instance.constructor, \"name\", { value: name });\n\n return instance;\n } else {\n throw new Error(`Invalid type: ${pathStr} -> ${str}`);\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Array.isArray(value)) {\n return Promise.all(\n value.map((v, i) =>\n reviver.call({ ...this, path: [...path, `${i}`] }, v)\n )\n );\n } else {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(value).map(async ([key, value]) => [\n key,\n await reviver.call({ ...this, path: [...path, key] }, value),\n ])\n )\n );\n }\n }\n return value;\n}\n\nexport async function load<T>(\n text: string,\n mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }\n): Promise<T> {\n const json = JSON.parse(text);\n return reviver.call({ ...mappings }, json) as Promise<T>;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["constructor: typeof Serializable","aliases: { [key: string]: string }","value: unknown","coreImportMap","module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null","defaultOptionalImportEntrypoints","optionalImportEntrypoints","finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"]","importMapKey: string","value","text: string","mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }"],"sources":["../../src/load/index.ts"],"sourcesContent":["import {\n Serializable,\n SerializedConstructor,\n SerializedNotImplemented,\n SerializedSecret,\n get_lc_unique_name,\n} from \"./serializable.js\";\nimport { optionalImportEntrypoints as defaultOptionalImportEntrypoints } from \"./import_constants.js\";\nimport * as coreImportMap from \"./import_map.js\";\nimport type { OptionalImportMap, SecretMap } from \"./import_type.js\";\nimport { type SerializedFields, keyFromJson, mapKeys } from \"./map_keys.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\n\nfunction combineAliasesAndInvert(constructor: typeof Serializable) {\n const aliases: { [key: string]: string } = {};\n for (\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = constructor;\n current && current.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current.prototype, \"lc_aliases\"));\n }\n return Object.entries(aliases).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function reviver(\n this: {\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n secretsMap?: SecretMap;\n importMap?: Record<string, unknown>;\n path?: string[];\n },\n value: unknown\n): Promise<unknown> {\n const {\n optionalImportsMap = {},\n optionalImportEntrypoints = [],\n importMap = {},\n secretsMap = {},\n path = [\"$\"],\n } = this;\n const pathStr = path.join(\".\");\n if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"secret\"\n ) {\n const serialized = value as SerializedSecret;\n const [key] = serialized.id;\n if (key in secretsMap) {\n return secretsMap[key as keyof SecretMap];\n } else {\n const secretValueInEnv = getEnvironmentVariable(key);\n if (secretValueInEnv) {\n return secretValueInEnv;\n } else {\n throw new Error(\n `Missing key \"${key}\" for ${pathStr} in load(secretsMap={})`\n );\n }\n }\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"not_implemented\"\n ) {\n const serialized = value as SerializedNotImplemented;\n const str = JSON.stringify(serialized);\n throw new Error(\n `Trying to load an object that doesn't implement serialization: ${pathStr} -> ${str}`\n );\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n \"kwargs\" in value &&\n value.lc === 1\n ) {\n const serialized = value as SerializedConstructor;\n const str = JSON.stringify(serialized);\n const [name, ...namespaceReverse] = serialized.id.slice().reverse();\n const namespace = namespaceReverse.reverse();\n const importMaps = { langchain_core: coreImportMap, langchain: importMap };\n\n let module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null = null;\n\n const optionalImportNamespaceAliases = [namespace.join(\"/\")];\n if (namespace[0] === \"langchain_community\") {\n optionalImportNamespaceAliases.push(\n [\"langchain\", ...namespace.slice(1)].join(\"/\")\n );\n }\n const matchingNamespaceAlias = optionalImportNamespaceAliases.find(\n (alias) => alias in optionalImportsMap\n );\n if (\n defaultOptionalImportEntrypoints\n .concat(optionalImportEntrypoints)\n .includes(namespace.join(\"/\")) ||\n matchingNamespaceAlias\n ) {\n if (matchingNamespaceAlias !== undefined) {\n module = await optionalImportsMap[\n matchingNamespaceAlias as keyof typeof optionalImportsMap\n ];\n } else {\n throw new Error(\n `Missing key \"${namespace.join(\n \"/\"\n )}\" for ${pathStr} in load(optionalImportsMap={})`\n );\n }\n } else {\n let finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"];\n // Currently, we only support langchain and langchain_core imports.\n if (namespace[0] === \"langchain\" || namespace[0] === \"langchain_core\") {\n finalImportMap = importMaps[namespace[0]];\n namespace.shift();\n } else {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // The root namespace \"langchain\" is not a valid import.\n if (namespace.length === 0) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Find the longest matching namespace.\n let importMapKey: string;\n do {\n importMapKey = namespace.join(\"__\");\n if (importMapKey in finalImportMap) {\n break;\n } else {\n namespace.pop();\n }\n } while (namespace.length > 0);\n\n // If no matching namespace is found, throw an error.\n if (importMapKey in finalImportMap) {\n module = finalImportMap[importMapKey as keyof typeof finalImportMap];\n }\n }\n\n if (typeof module !== \"object\" || module === null) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Extract the builder from the import map.\n const builder =\n // look for a named export with the same name as the class\n module[name as keyof typeof module] ??\n // look for an export with a lc_name property matching the class name\n // this is necessary for classes that are minified\n Object.values(module).find(\n (v) =>\n typeof v === \"function\" &&\n get_lc_unique_name(v as typeof Serializable) === name\n );\n if (typeof builder !== \"function\") {\n throw new Error(`Invalid identifer: ${pathStr} -> ${str}`);\n }\n\n // Recurse on the arguments, which may be serialized objects themselves\n const kwargs = await reviver.call(\n { ...this, path: [...path, \"kwargs\"] },\n serialized.kwargs\n );\n\n // Construct the object\n if (serialized.type === \"constructor\") {\n // eslint-disable-next-line new-cap, @typescript-eslint/no-explicit-any\n const instance = new (builder as any)(\n mapKeys(\n kwargs as SerializedFields,\n keyFromJson,\n combineAliasesAndInvert(builder)\n )\n );\n\n // Minification in severless/edge runtimes will mange the\n // name of classes presented in traces. As the names in import map\n // are present as-is even with minification, use these names instead\n Object.defineProperty(instance.constructor, \"name\", { value: name });\n\n return instance;\n } else {\n throw new Error(`Invalid type: ${pathStr} -> ${str}`);\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Array.isArray(value)) {\n return Promise.all(\n value.map((v, i) =>\n reviver.call({ ...this, path: [...path, `${i}`] }, v)\n )\n );\n } else {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(value).map(async ([key, value]) => [\n key,\n await reviver.call({ ...this, path: [...path, key] }, value),\n ])\n )\n );\n }\n }\n return value;\n}\n\nexport async function load<T>(\n text: string,\n mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }\n): Promise<T> {\n const json = JSON.parse(text);\n return reviver.call({ ...mappings }, json) as Promise<T>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["constructor: typeof Serializable","aliases: { [key: string]: string }","value: unknown","coreImportMap","module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null","defaultOptionalImportEntrypoints","optionalImportEntrypoints","finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"]","importMapKey: string","value","text: string","mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }"],"sources":["../../src/load/index.ts"],"sourcesContent":["import {\n Serializable,\n SerializedConstructor,\n SerializedNotImplemented,\n SerializedSecret,\n get_lc_unique_name,\n} from \"./serializable.js\";\nimport { optionalImportEntrypoints as defaultOptionalImportEntrypoints } from \"./import_constants.js\";\nimport * as coreImportMap from \"./import_map.js\";\nimport type { OptionalImportMap, SecretMap } from \"./import_type.js\";\nimport { type SerializedFields, keyFromJson, mapKeys } from \"./map_keys.js\";\nimport { getEnvironmentVariable } from \"../utils/env.js\";\n\nfunction combineAliasesAndInvert(constructor: typeof Serializable) {\n const aliases: { [key: string]: string } = {};\n for (\n let current = constructor;\n current && current.prototype;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current.prototype, \"lc_aliases\"));\n }\n return Object.entries(aliases).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function reviver(\n this: {\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n secretsMap?: SecretMap;\n importMap?: Record<string, unknown>;\n path?: string[];\n },\n value: unknown\n): Promise<unknown> {\n const {\n optionalImportsMap = {},\n optionalImportEntrypoints = [],\n importMap = {},\n secretsMap = {},\n path = [\"$\"],\n } = this;\n const pathStr = path.join(\".\");\n if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"secret\"\n ) {\n const serialized = value as SerializedSecret;\n const [key] = serialized.id;\n if (key in secretsMap) {\n return secretsMap[key as keyof SecretMap];\n } else {\n const secretValueInEnv = getEnvironmentVariable(key);\n if (secretValueInEnv) {\n return secretValueInEnv;\n } else {\n throw new Error(\n `Missing key \"${key}\" for ${pathStr} in load(secretsMap={})`\n );\n }\n }\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n value.lc === 1 &&\n value.type === \"not_implemented\"\n ) {\n const serialized = value as SerializedNotImplemented;\n const str = JSON.stringify(serialized);\n throw new Error(\n `Trying to load an object that doesn't implement serialization: ${pathStr} -> ${str}`\n );\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n \"lc\" in value &&\n \"type\" in value &&\n \"id\" in value &&\n \"kwargs\" in value &&\n value.lc === 1\n ) {\n const serialized = value as SerializedConstructor;\n const str = JSON.stringify(serialized);\n const [name, ...namespaceReverse] = serialized.id.slice().reverse();\n const namespace = namespaceReverse.reverse();\n const importMaps = { langchain_core: coreImportMap, langchain: importMap };\n\n let module:\n | (typeof importMaps)[\"langchain_core\"][keyof (typeof importMaps)[\"langchain_core\"]]\n | (typeof importMaps)[\"langchain\"][keyof (typeof importMaps)[\"langchain\"]]\n | OptionalImportMap[keyof OptionalImportMap]\n | null = null;\n\n const optionalImportNamespaceAliases = [namespace.join(\"/\")];\n if (namespace[0] === \"langchain_community\") {\n optionalImportNamespaceAliases.push(\n [\"langchain\", ...namespace.slice(1)].join(\"/\")\n );\n }\n const matchingNamespaceAlias = optionalImportNamespaceAliases.find(\n (alias) => alias in optionalImportsMap\n );\n if (\n defaultOptionalImportEntrypoints\n .concat(optionalImportEntrypoints)\n .includes(namespace.join(\"/\")) ||\n matchingNamespaceAlias\n ) {\n if (matchingNamespaceAlias !== undefined) {\n module = await optionalImportsMap[\n matchingNamespaceAlias as keyof typeof optionalImportsMap\n ];\n } else {\n throw new Error(\n `Missing key \"${namespace.join(\n \"/\"\n )}\" for ${pathStr} in load(optionalImportsMap={})`\n );\n }\n } else {\n let finalImportMap:\n | (typeof importMaps)[\"langchain\"]\n | (typeof importMaps)[\"langchain_core\"];\n // Currently, we only support langchain and langchain_core imports.\n if (namespace[0] === \"langchain\" || namespace[0] === \"langchain_core\") {\n finalImportMap = importMaps[namespace[0]];\n namespace.shift();\n } else {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // The root namespace \"langchain\" is not a valid import.\n if (namespace.length === 0) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Find the longest matching namespace.\n let importMapKey: string;\n do {\n importMapKey = namespace.join(\"__\");\n if (importMapKey in finalImportMap) {\n break;\n } else {\n namespace.pop();\n }\n } while (namespace.length > 0);\n\n // If no matching namespace is found, throw an error.\n if (importMapKey in finalImportMap) {\n module = finalImportMap[importMapKey as keyof typeof finalImportMap];\n }\n }\n\n if (typeof module !== \"object\" || module === null) {\n throw new Error(`Invalid namespace: ${pathStr} -> ${str}`);\n }\n\n // Extract the builder from the import map.\n const builder =\n // look for a named export with the same name as the class\n module[name as keyof typeof module] ??\n // look for an export with a lc_name property matching the class name\n // this is necessary for classes that are minified\n Object.values(module).find(\n (v) =>\n typeof v === \"function\" &&\n get_lc_unique_name(v as typeof Serializable) === name\n );\n if (typeof builder !== \"function\") {\n throw new Error(`Invalid identifer: ${pathStr} -> ${str}`);\n }\n\n // Recurse on the arguments, which may be serialized objects themselves\n const kwargs = await reviver.call(\n { ...this, path: [...path, \"kwargs\"] },\n serialized.kwargs\n );\n\n // Construct the object\n if (serialized.type === \"constructor\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const instance = new (builder as any)(\n mapKeys(\n kwargs as SerializedFields,\n keyFromJson,\n combineAliasesAndInvert(builder)\n )\n );\n\n // Minification in severless/edge runtimes will mange the\n // name of classes presented in traces. As the names in import map\n // are present as-is even with minification, use these names instead\n Object.defineProperty(instance.constructor, \"name\", { value: name });\n\n return instance;\n } else {\n throw new Error(`Invalid type: ${pathStr} -> ${str}`);\n }\n } else if (typeof value === \"object\" && value !== null) {\n if (Array.isArray(value)) {\n return Promise.all(\n value.map((v, i) =>\n reviver.call({ ...this, path: [...path, `${i}`] }, v)\n )\n );\n } else {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(value).map(async ([key, value]) => [\n key,\n await reviver.call({ ...this, path: [...path, key] }, value),\n ])\n )\n );\n }\n }\n return value;\n}\n\nexport async function load<T>(\n text: string,\n mappings?: {\n secretsMap?: SecretMap;\n optionalImportsMap?: OptionalImportMap;\n optionalImportEntrypoints?: string[];\n importMap?: Record<string, unknown>;\n }\n): Promise<T> {\n const json = JSON.parse(text);\n return reviver.call({ ...mappings }, json) as Promise<T>;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serializable.cjs","names":["obj: T","root: SerializedFields","secretsMap: { [key: string]: string }","current: any","serializableClass: typeof Serializable","kwargs?: SerializedFields","aliases: { [key: string]: string }","secrets: { [key: string]: string }","read: any","write: any","mapKeys","keyToJson"],"sources":["../../src/load/serializable.ts"],"sourcesContent":["import { type SerializedFields, keyToJson, mapKeys } from \"./map_keys.js\";\n\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\n\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\n\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {}\n\nexport interface SerializedNotImplemented\n extends BaseSerialized<\"not_implemented\"> {}\n\nexport type Serialized =\n | SerializedConstructor\n | SerializedSecret\n | SerializedNotImplemented;\n\nfunction shallowCopy<T extends object>(obj: T): T {\n return Array.isArray(obj) ? ([...obj] as T) : ({ ...obj } as T);\n}\n\nfunction replaceSecrets(\n root: SerializedFields,\n secretsMap: { [key: string]: string }\n): SerializedFields {\n const result = shallowCopy(root);\n for (const [path, secretId] of Object.entries(secretsMap)) {\n const [last, ...partsReverse] = path.split(\".\").reverse();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = result;\n for (const part of partsReverse.reverse()) {\n if (current[part] === undefined) {\n break;\n }\n current[part] = shallowCopy(current[part]);\n current = current[part];\n }\n if (current[last] !== undefined) {\n current[last] = {\n lc: 1,\n type: \"secret\",\n id: [secretId],\n };\n }\n }\n return result;\n}\n\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport function get_lc_unique_name(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n serializableClass: typeof Serializable\n): string {\n // \"super\" here would refer to the parent class of Serializable,\n // when we want the parent class of the module actually calling this method.\n const parentClass = Object.getPrototypeOf(serializableClass);\n const lcNameIsSubclassed =\n typeof serializableClass.lc_name === \"function\" &&\n (typeof parentClass.lc_name !== \"function\" ||\n serializableClass.lc_name() !== parentClass.lc_name());\n if (lcNameIsSubclassed) {\n return serializableClass.lc_name();\n } else {\n return serializableClass.name;\n }\n}\n\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\n\nexport abstract class Serializable implements SerializableInterface {\n lc_serializable = false;\n\n lc_kwargs: SerializedFields;\n\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string {\n return this.name;\n }\n\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[] {\n return [\n ...this.lc_namespace,\n get_lc_unique_name(this.constructor as typeof Serializable),\n ];\n }\n\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined {\n return undefined;\n }\n\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined {\n return undefined;\n }\n\n constructor(kwargs?: SerializedFields, ..._args: never[]) {\n if (this.lc_serializable_keys !== undefined) {\n this.lc_kwargs = Object.fromEntries(\n Object.entries(kwargs || {}).filter(([key]) =>\n this.lc_serializable_keys?.includes(key)\n )\n );\n } else {\n this.lc_kwargs = kwargs ?? {};\n }\n }\n\n toJSON(): Serialized {\n if (!this.lc_serializable) {\n return this.toJSONNotImplemented();\n }\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n this.lc_kwargs instanceof Serializable ||\n typeof this.lc_kwargs !== \"object\" ||\n Array.isArray(this.lc_kwargs)\n ) {\n // We do not support serialization of classes with arg not a POJO\n // I'm aware the check above isn't as strict as it could be\n return this.toJSONNotImplemented();\n }\n\n const aliases: { [key: string]: string } = {};\n const secrets: { [key: string]: string } = {};\n const kwargs = Object.keys(this.lc_kwargs).reduce((acc, key) => {\n acc[key] = key in this ? this[key as keyof this] : this.lc_kwargs[key];\n return acc;\n }, {} as SerializedFields);\n // get secrets, attributes and aliases from all superclasses\n for (\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = Object.getPrototypeOf(this);\n current;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current, \"lc_aliases\", this));\n Object.assign(secrets, Reflect.get(current, \"lc_secrets\", this));\n Object.assign(kwargs, Reflect.get(current, \"lc_attributes\", this));\n }\n\n // include all secrets used, even if not in kwargs,\n // will be replaced with sentinel value in replaceSecrets\n Object.keys(secrets).forEach((keyPath) => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, @typescript-eslint/no-explicit-any\n let read: any = this;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let write: any = kwargs;\n\n const [last, ...partsReverse] = keyPath.split(\".\").reverse();\n for (const key of partsReverse.reverse()) {\n if (!(key in read) || read[key] === undefined) return;\n if (!(key in write) || write[key] === undefined) {\n if (typeof read[key] === \"object\" && read[key] != null) {\n write[key] = {};\n } else if (Array.isArray(read[key])) {\n write[key] = [];\n }\n }\n\n read = read[key];\n write = write[key];\n }\n\n if (last in read && read[last] !== undefined) {\n write[last] = write[last] || read[last];\n }\n });\n\n return {\n lc: 1,\n type: \"constructor\",\n id: this.lc_id,\n kwargs: mapKeys(\n Object.keys(secrets).length ? replaceSecrets(kwargs, secrets) : kwargs,\n keyToJson,\n aliases\n ),\n };\n }\n\n toJSONNotImplemented(): SerializedNotImplemented {\n return {\n lc: 1,\n type: \"not_implemented\",\n id: this.lc_id,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"serializable.cjs","names":["obj: T","root: SerializedFields","secretsMap: { [key: string]: string }","current: any","serializableClass: typeof Serializable","kwargs?: SerializedFields","aliases: { [key: string]: string }","secrets: { [key: string]: string }","read: any","write: any","mapKeys","keyToJson"],"sources":["../../src/load/serializable.ts"],"sourcesContent":["import { type SerializedFields, keyToJson, mapKeys } from \"./map_keys.js\";\n\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\n\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\n\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {}\n\nexport interface SerializedNotImplemented\n extends BaseSerialized<\"not_implemented\"> {}\n\nexport type Serialized =\n | SerializedConstructor\n | SerializedSecret\n | SerializedNotImplemented;\n\nfunction shallowCopy<T extends object>(obj: T): T {\n return Array.isArray(obj) ? ([...obj] as T) : ({ ...obj } as T);\n}\n\nfunction replaceSecrets(\n root: SerializedFields,\n secretsMap: { [key: string]: string }\n): SerializedFields {\n const result = shallowCopy(root);\n for (const [path, secretId] of Object.entries(secretsMap)) {\n const [last, ...partsReverse] = path.split(\".\").reverse();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = result;\n for (const part of partsReverse.reverse()) {\n if (current[part] === undefined) {\n break;\n }\n current[part] = shallowCopy(current[part]);\n current = current[part];\n }\n if (current[last] !== undefined) {\n current[last] = {\n lc: 1,\n type: \"secret\",\n id: [secretId],\n };\n }\n }\n return result;\n}\n\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport function get_lc_unique_name(\n serializableClass: typeof Serializable\n): string {\n // \"super\" here would refer to the parent class of Serializable,\n // when we want the parent class of the module actually calling this method.\n const parentClass = Object.getPrototypeOf(serializableClass);\n const lcNameIsSubclassed =\n typeof serializableClass.lc_name === \"function\" &&\n (typeof parentClass.lc_name !== \"function\" ||\n serializableClass.lc_name() !== parentClass.lc_name());\n if (lcNameIsSubclassed) {\n return serializableClass.lc_name();\n } else {\n return serializableClass.name;\n }\n}\n\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\n\nexport abstract class Serializable implements SerializableInterface {\n lc_serializable = false;\n\n lc_kwargs: SerializedFields;\n\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string {\n return this.name;\n }\n\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[] {\n return [\n ...this.lc_namespace,\n get_lc_unique_name(this.constructor as typeof Serializable),\n ];\n }\n\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined {\n return undefined;\n }\n\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined {\n return undefined;\n }\n\n constructor(kwargs?: SerializedFields, ..._args: never[]) {\n if (this.lc_serializable_keys !== undefined) {\n this.lc_kwargs = Object.fromEntries(\n Object.entries(kwargs || {}).filter(([key]) =>\n this.lc_serializable_keys?.includes(key)\n )\n );\n } else {\n this.lc_kwargs = kwargs ?? {};\n }\n }\n\n toJSON(): Serialized {\n if (!this.lc_serializable) {\n return this.toJSONNotImplemented();\n }\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n this.lc_kwargs instanceof Serializable ||\n typeof this.lc_kwargs !== \"object\" ||\n Array.isArray(this.lc_kwargs)\n ) {\n // We do not support serialization of classes with arg not a POJO\n // I'm aware the check above isn't as strict as it could be\n return this.toJSONNotImplemented();\n }\n\n const aliases: { [key: string]: string } = {};\n const secrets: { [key: string]: string } = {};\n const kwargs = Object.keys(this.lc_kwargs).reduce((acc, key) => {\n acc[key] = key in this ? this[key as keyof this] : this.lc_kwargs[key];\n return acc;\n }, {} as SerializedFields);\n // get secrets, attributes and aliases from all superclasses\n for (\n let current = Object.getPrototypeOf(this);\n current;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current, \"lc_aliases\", this));\n Object.assign(secrets, Reflect.get(current, \"lc_secrets\", this));\n Object.assign(kwargs, Reflect.get(current, \"lc_attributes\", this));\n }\n\n // include all secrets used, even if not in kwargs,\n // will be replaced with sentinel value in replaceSecrets\n Object.keys(secrets).forEach((keyPath) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let read: any = this;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let write: any = kwargs;\n\n const [last, ...partsReverse] = keyPath.split(\".\").reverse();\n for (const key of partsReverse.reverse()) {\n if (!(key in read) || read[key] === undefined) return;\n if (!(key in write) || write[key] === undefined) {\n if (typeof read[key] === \"object\" && read[key] != null) {\n write[key] = {};\n } else if (Array.isArray(read[key])) {\n write[key] = [];\n }\n }\n\n read = read[key];\n write = write[key];\n }\n\n if (last in read && read[last] !== undefined) {\n write[last] = write[last] || read[last];\n }\n });\n\n return {\n lc: 1,\n type: \"constructor\",\n id: this.lc_id,\n kwargs: mapKeys(\n Object.keys(secrets).length ? replaceSecrets(kwargs, secrets) : kwargs,\n keyToJson,\n aliases\n ),\n };\n }\n\n toJSONNotImplemented(): SerializedNotImplemented {\n return {\n lc: 1,\n type: \"not_implemented\",\n id: this.lc_id,\n };\n }\n}\n"],"mappings":"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"}
@@ -19,9 +19,7 @@ type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplem
19
19
  * Get a unique name for the module, rather than parent class implementations.
20
20
  * Should not be subclassed, subclass lc_name above instead.
21
21
  */
22
- declare function get_lc_unique_name(
23
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
24
- serializableClass: typeof Serializable): string;
22
+ declare function get_lc_unique_name(serializableClass: typeof Serializable): string;
25
23
  interface SerializableInterface {
26
24
  get lc_id(): string[];
27
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serializable.d.cts","names":["SerializedFields","BaseSerialized","T","Record","SerializedConstructor","SerializedSecret","SerializedNotImplemented","Serialized","get_lc_unique_name","Serializable","SerializableInterface"],"sources":["../../src/load/serializable.d.ts"],"sourcesContent":["import { type SerializedFields } from \"./map_keys.js\";\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {\n}\nexport interface SerializedNotImplemented extends BaseSerialized<\"not_implemented\"> {\n}\nexport type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplemented;\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport declare function get_lc_unique_name(\n// eslint-disable-next-line @typescript-eslint/no-use-before-define\nserializableClass: typeof Serializable): string;\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\nexport declare abstract class Serializable implements SerializableInterface {\n lc_serializable: boolean;\n lc_kwargs: SerializedFields;\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string;\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[];\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined;\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): {\n [key: string]: string;\n } | undefined;\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined;\n constructor(kwargs?: SerializedFields, ..._args: never[]);\n toJSON(): Serialized;\n toJSONNotImplemented(): SerializedNotImplemented;\n}\n"],"mappings":";;;UACiBC;;EAAAA,IAAAA,EAEPC,CAFOD;EAAc,EAAA,EAAA,MAAA,EAAA;EAAA,IAErBC,CAAAA,EAAAA,MAAAA;EAAC;EAIO,KAAA,CAAA,EAANC,MAAM,CAAA,MAAA,EAAA,GAAA,CAAA;AAElB;AAAsC,UAArBC,qBAAAA,SAA8BH,cAAT,CAAA,aAAA,CAAA,CAAA;EAAA,MAC1BD,EAAAA,gBAAAA;;AADiD,UAG5CK,gBAAAA,SAAyBJ,cAHmB,CAAA,QAAA,CAAA,CAAA,CAG7D;AAEiBK,UAAAA,wBAAAA,SAAiCL,cAAc,CAAA,iBAAA,CAAA,CAAA,CAEhE;AAAsB,KAAVM,UAAAA,GAAaH,qBAAH,GAA2BC,gBAA3B,GAA8CC,wBAA9C;;;;AAAsE;AAKpEE,iBAAAA,kBAAAA;AAGxB;AAGA,iBAA8BC,EAAY,OAJhBA,YAIgB,CAAA,EAAA,MAAA;AAAA,UAHzBC,qBAAAA,CAGyB;EAAA,IAE3BV,KAAAA,EAAAA,EAAAA,MAAAA,EAAAA;;AA8CUA,uBAhDKS,YAAAA,YAAwBC,qBAgD7BV,CAAAA;EAAgB,eAC3BO,EAAAA,OAAAA;EAAU,SACID,EAhDbN,gBAgDaM;EAAwB;AAlDuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiClDN;;;;;;;;;;;;;;;uBAeAA;YACXO;0BACcD"}
1
+ {"version":3,"file":"serializable.d.cts","names":["SerializedFields","BaseSerialized","T","Record","SerializedConstructor","SerializedSecret","SerializedNotImplemented","Serialized","get_lc_unique_name","Serializable","SerializableInterface"],"sources":["../../src/load/serializable.d.ts"],"sourcesContent":["import { type SerializedFields } from \"./map_keys.js\";\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {\n}\nexport interface SerializedNotImplemented extends BaseSerialized<\"not_implemented\"> {\n}\nexport type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplemented;\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport declare function get_lc_unique_name(serializableClass: typeof Serializable): string;\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\nexport declare abstract class Serializable implements SerializableInterface {\n lc_serializable: boolean;\n lc_kwargs: SerializedFields;\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string;\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[];\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined;\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): {\n [key: string]: string;\n } | undefined;\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined;\n constructor(kwargs?: SerializedFields, ..._args: never[]);\n toJSON(): Serialized;\n toJSONNotImplemented(): SerializedNotImplemented;\n}\n"],"mappings":";;;UACiBC;;EAAAA,IAAAA,EAEPC,CAFOD;EAAc,EAAA,EAAA,MAAA,EAAA;EAAA,IAErBC,CAAAA,EAAAA,MAAAA;EAAC;EAIO,KAAA,CAAA,EAANC,MAAM,CAAA,MAAA,EAAA,GAAA,CAAA;AAElB;AAAsC,UAArBC,qBAAAA,SAA8BH,cAAT,CAAA,aAAA,CAAA,CAAA;EAAA,MAC1BD,EAAAA,gBAAAA;;AADiD,UAG5CK,gBAAAA,SAAyBJ,cAHmB,CAAA,QAAA,CAAA,CAAA,CAG7D;AAEiBK,UAAAA,wBAAAA,SAAiCL,cAAc,CAAA,iBAAA,CAAA,CAAA,CAEhE;AAAsB,KAAVM,UAAAA,GAAaH,qBAAH,GAA2BC,gBAA3B,GAA8CC,wBAA9C;;;;AAAsE;AAKpEE,iBAAAA,kBAAAA,CAA6CC,iBAAY,EAAA,OAAZA,YAAY,CAAA,EAAA,MAAA;AAChEC,UAAAA,qBAAAA,CAAqB;EAGRD,IAAAA,KAAAA,EAAAA,EAAAA,MAAY,EAAA;;AAE3BT,uBAFeS,YAAAA,YAAwBC,qBAEvCV,CAAAA;EAAgB,eA+BNA,EAAAA,OAAAA;EAAgB,SAehBA,EA9CVA,gBA8CUA;EAAgB;;;AAhDkC;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiClDA;;;;;;;;;;;;;;;uBAeAA;YACXO;0BACcD"}
@@ -19,9 +19,7 @@ type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplem
19
19
  * Get a unique name for the module, rather than parent class implementations.
20
20
  * Should not be subclassed, subclass lc_name above instead.
21
21
  */
22
- declare function get_lc_unique_name(
23
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
24
- serializableClass: typeof Serializable): string;
22
+ declare function get_lc_unique_name(serializableClass: typeof Serializable): string;
25
23
  interface SerializableInterface {
26
24
  get lc_id(): string[];
27
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serializable.d.ts","names":["SerializedFields","BaseSerialized","T","Record","SerializedConstructor","SerializedSecret","SerializedNotImplemented","Serialized","get_lc_unique_name","Serializable","SerializableInterface"],"sources":["../../src/load/serializable.d.ts"],"sourcesContent":["import { type SerializedFields } from \"./map_keys.js\";\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {\n}\nexport interface SerializedNotImplemented extends BaseSerialized<\"not_implemented\"> {\n}\nexport type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplemented;\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport declare function get_lc_unique_name(\n// eslint-disable-next-line @typescript-eslint/no-use-before-define\nserializableClass: typeof Serializable): string;\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\nexport declare abstract class Serializable implements SerializableInterface {\n lc_serializable: boolean;\n lc_kwargs: SerializedFields;\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string;\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[];\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined;\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): {\n [key: string]: string;\n } | undefined;\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined;\n constructor(kwargs?: SerializedFields, ..._args: never[]);\n toJSON(): Serialized;\n toJSONNotImplemented(): SerializedNotImplemented;\n}\n"],"mappings":";;;UACiBC;;EAAAA,IAAAA,EAEPC,CAFOD;EAAc,EAAA,EAAA,MAAA,EAAA;EAAA,IAErBC,CAAAA,EAAAA,MAAAA;EAAC;EAIO,KAAA,CAAA,EAANC,MAAM,CAAA,MAAA,EAAA,GAAA,CAAA;AAElB;AAAsC,UAArBC,qBAAAA,SAA8BH,cAAT,CAAA,aAAA,CAAA,CAAA;EAAA,MAC1BD,EAAAA,gBAAAA;;AADiD,UAG5CK,gBAAAA,SAAyBJ,cAHmB,CAAA,QAAA,CAAA,CAAA,CAG7D;AAEiBK,UAAAA,wBAAAA,SAAiCL,cAAc,CAAA,iBAAA,CAAA,CAAA,CAEhE;AAAsB,KAAVM,UAAAA,GAAaH,qBAAH,GAA2BC,gBAA3B,GAA8CC,wBAA9C;;;;AAAsE;AAKpEE,iBAAAA,kBAAAA;AAGxB;AAGA,iBAA8BC,EAAY,OAJhBA,YAIgB,CAAA,EAAA,MAAA;AAAA,UAHzBC,qBAAAA,CAGyB;EAAA,IAE3BV,KAAAA,EAAAA,EAAAA,MAAAA,EAAAA;;AA8CUA,uBAhDKS,YAAAA,YAAwBC,qBAgD7BV,CAAAA;EAAgB,eAC3BO,EAAAA,OAAAA;EAAU,SACID,EAhDbN,gBAgDaM;EAAwB;AAlDuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiClDN;;;;;;;;;;;;;;;uBAeAA;YACXO;0BACcD"}
1
+ {"version":3,"file":"serializable.d.ts","names":["SerializedFields","BaseSerialized","T","Record","SerializedConstructor","SerializedSecret","SerializedNotImplemented","Serialized","get_lc_unique_name","Serializable","SerializableInterface"],"sources":["../../src/load/serializable.d.ts"],"sourcesContent":["import { type SerializedFields } from \"./map_keys.js\";\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {\n}\nexport interface SerializedNotImplemented extends BaseSerialized<\"not_implemented\"> {\n}\nexport type Serialized = SerializedConstructor | SerializedSecret | SerializedNotImplemented;\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport declare function get_lc_unique_name(serializableClass: typeof Serializable): string;\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\nexport declare abstract class Serializable implements SerializableInterface {\n lc_serializable: boolean;\n lc_kwargs: SerializedFields;\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string;\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[];\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): {\n [key: string]: string;\n } | undefined;\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined;\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): {\n [key: string]: string;\n } | undefined;\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined;\n constructor(kwargs?: SerializedFields, ..._args: never[]);\n toJSON(): Serialized;\n toJSONNotImplemented(): SerializedNotImplemented;\n}\n"],"mappings":";;;UACiBC;;EAAAA,IAAAA,EAEPC,CAFOD;EAAc,EAAA,EAAA,MAAA,EAAA;EAAA,IAErBC,CAAAA,EAAAA,MAAAA;EAAC;EAIO,KAAA,CAAA,EAANC,MAAM,CAAA,MAAA,EAAA,GAAA,CAAA;AAElB;AAAsC,UAArBC,qBAAAA,SAA8BH,cAAT,CAAA,aAAA,CAAA,CAAA;EAAA,MAC1BD,EAAAA,gBAAAA;;AADiD,UAG5CK,gBAAAA,SAAyBJ,cAHmB,CAAA,QAAA,CAAA,CAAA,CAG7D;AAEiBK,UAAAA,wBAAAA,SAAiCL,cAAc,CAAA,iBAAA,CAAA,CAAA,CAEhE;AAAsB,KAAVM,UAAAA,GAAaH,qBAAH,GAA2BC,gBAA3B,GAA8CC,wBAA9C;;;;AAAsE;AAKpEE,iBAAAA,kBAAAA,CAA6CC,iBAAY,EAAA,OAAZA,YAAY,CAAA,EAAA,MAAA;AAChEC,UAAAA,qBAAAA,CAAqB;EAGRD,IAAAA,KAAAA,EAAAA,EAAAA,MAAY,EAAA;;AAE3BT,uBAFeS,YAAAA,YAAwBC,qBAEvCV,CAAAA;EAAgB,eA+BNA,EAAAA,OAAAA;EAAgB,SAehBA,EA9CVA,gBA8CUA;EAAgB;;;AAhDkC;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiClDA;;;;;;;;;;;;;;;uBAeAA;YACXO;0BACcD"}
@@ -1 +1 @@
1
- {"version":3,"file":"serializable.js","names":["obj: T","root: SerializedFields","secretsMap: { [key: string]: string }","current: any","serializableClass: typeof Serializable","kwargs?: SerializedFields","aliases: { [key: string]: string }","secrets: { [key: string]: string }","read: any","write: any"],"sources":["../../src/load/serializable.ts"],"sourcesContent":["import { type SerializedFields, keyToJson, mapKeys } from \"./map_keys.js\";\n\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\n\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\n\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {}\n\nexport interface SerializedNotImplemented\n extends BaseSerialized<\"not_implemented\"> {}\n\nexport type Serialized =\n | SerializedConstructor\n | SerializedSecret\n | SerializedNotImplemented;\n\nfunction shallowCopy<T extends object>(obj: T): T {\n return Array.isArray(obj) ? ([...obj] as T) : ({ ...obj } as T);\n}\n\nfunction replaceSecrets(\n root: SerializedFields,\n secretsMap: { [key: string]: string }\n): SerializedFields {\n const result = shallowCopy(root);\n for (const [path, secretId] of Object.entries(secretsMap)) {\n const [last, ...partsReverse] = path.split(\".\").reverse();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = result;\n for (const part of partsReverse.reverse()) {\n if (current[part] === undefined) {\n break;\n }\n current[part] = shallowCopy(current[part]);\n current = current[part];\n }\n if (current[last] !== undefined) {\n current[last] = {\n lc: 1,\n type: \"secret\",\n id: [secretId],\n };\n }\n }\n return result;\n}\n\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport function get_lc_unique_name(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n serializableClass: typeof Serializable\n): string {\n // \"super\" here would refer to the parent class of Serializable,\n // when we want the parent class of the module actually calling this method.\n const parentClass = Object.getPrototypeOf(serializableClass);\n const lcNameIsSubclassed =\n typeof serializableClass.lc_name === \"function\" &&\n (typeof parentClass.lc_name !== \"function\" ||\n serializableClass.lc_name() !== parentClass.lc_name());\n if (lcNameIsSubclassed) {\n return serializableClass.lc_name();\n } else {\n return serializableClass.name;\n }\n}\n\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\n\nexport abstract class Serializable implements SerializableInterface {\n lc_serializable = false;\n\n lc_kwargs: SerializedFields;\n\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string {\n return this.name;\n }\n\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[] {\n return [\n ...this.lc_namespace,\n get_lc_unique_name(this.constructor as typeof Serializable),\n ];\n }\n\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined {\n return undefined;\n }\n\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined {\n return undefined;\n }\n\n constructor(kwargs?: SerializedFields, ..._args: never[]) {\n if (this.lc_serializable_keys !== undefined) {\n this.lc_kwargs = Object.fromEntries(\n Object.entries(kwargs || {}).filter(([key]) =>\n this.lc_serializable_keys?.includes(key)\n )\n );\n } else {\n this.lc_kwargs = kwargs ?? {};\n }\n }\n\n toJSON(): Serialized {\n if (!this.lc_serializable) {\n return this.toJSONNotImplemented();\n }\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n this.lc_kwargs instanceof Serializable ||\n typeof this.lc_kwargs !== \"object\" ||\n Array.isArray(this.lc_kwargs)\n ) {\n // We do not support serialization of classes with arg not a POJO\n // I'm aware the check above isn't as strict as it could be\n return this.toJSONNotImplemented();\n }\n\n const aliases: { [key: string]: string } = {};\n const secrets: { [key: string]: string } = {};\n const kwargs = Object.keys(this.lc_kwargs).reduce((acc, key) => {\n acc[key] = key in this ? this[key as keyof this] : this.lc_kwargs[key];\n return acc;\n }, {} as SerializedFields);\n // get secrets, attributes and aliases from all superclasses\n for (\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = Object.getPrototypeOf(this);\n current;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current, \"lc_aliases\", this));\n Object.assign(secrets, Reflect.get(current, \"lc_secrets\", this));\n Object.assign(kwargs, Reflect.get(current, \"lc_attributes\", this));\n }\n\n // include all secrets used, even if not in kwargs,\n // will be replaced with sentinel value in replaceSecrets\n Object.keys(secrets).forEach((keyPath) => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, @typescript-eslint/no-explicit-any\n let read: any = this;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let write: any = kwargs;\n\n const [last, ...partsReverse] = keyPath.split(\".\").reverse();\n for (const key of partsReverse.reverse()) {\n if (!(key in read) || read[key] === undefined) return;\n if (!(key in write) || write[key] === undefined) {\n if (typeof read[key] === \"object\" && read[key] != null) {\n write[key] = {};\n } else if (Array.isArray(read[key])) {\n write[key] = [];\n }\n }\n\n read = read[key];\n write = write[key];\n }\n\n if (last in read && read[last] !== undefined) {\n write[last] = write[last] || read[last];\n }\n });\n\n return {\n lc: 1,\n type: \"constructor\",\n id: this.lc_id,\n kwargs: mapKeys(\n Object.keys(secrets).length ? replaceSecrets(kwargs, secrets) : kwargs,\n keyToJson,\n aliases\n ),\n };\n }\n\n toJSONNotImplemented(): SerializedNotImplemented {\n return {\n lc: 1,\n type: \"not_implemented\",\n id: this.lc_id,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"serializable.js","names":["obj: T","root: SerializedFields","secretsMap: { [key: string]: string }","current: any","serializableClass: typeof Serializable","kwargs?: SerializedFields","aliases: { [key: string]: string }","secrets: { [key: string]: string }","read: any","write: any"],"sources":["../../src/load/serializable.ts"],"sourcesContent":["import { type SerializedFields, keyToJson, mapKeys } from \"./map_keys.js\";\n\nexport interface BaseSerialized<T extends string> {\n lc: number;\n type: T;\n id: string[];\n name?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n graph?: Record<string, any>;\n}\n\nexport interface SerializedConstructor extends BaseSerialized<\"constructor\"> {\n kwargs: SerializedFields;\n}\n\nexport interface SerializedSecret extends BaseSerialized<\"secret\"> {}\n\nexport interface SerializedNotImplemented\n extends BaseSerialized<\"not_implemented\"> {}\n\nexport type Serialized =\n | SerializedConstructor\n | SerializedSecret\n | SerializedNotImplemented;\n\nfunction shallowCopy<T extends object>(obj: T): T {\n return Array.isArray(obj) ? ([...obj] as T) : ({ ...obj } as T);\n}\n\nfunction replaceSecrets(\n root: SerializedFields,\n secretsMap: { [key: string]: string }\n): SerializedFields {\n const result = shallowCopy(root);\n for (const [path, secretId] of Object.entries(secretsMap)) {\n const [last, ...partsReverse] = path.split(\".\").reverse();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = result;\n for (const part of partsReverse.reverse()) {\n if (current[part] === undefined) {\n break;\n }\n current[part] = shallowCopy(current[part]);\n current = current[part];\n }\n if (current[last] !== undefined) {\n current[last] = {\n lc: 1,\n type: \"secret\",\n id: [secretId],\n };\n }\n }\n return result;\n}\n\n/**\n * Get a unique name for the module, rather than parent class implementations.\n * Should not be subclassed, subclass lc_name above instead.\n */\nexport function get_lc_unique_name(\n serializableClass: typeof Serializable\n): string {\n // \"super\" here would refer to the parent class of Serializable,\n // when we want the parent class of the module actually calling this method.\n const parentClass = Object.getPrototypeOf(serializableClass);\n const lcNameIsSubclassed =\n typeof serializableClass.lc_name === \"function\" &&\n (typeof parentClass.lc_name !== \"function\" ||\n serializableClass.lc_name() !== parentClass.lc_name());\n if (lcNameIsSubclassed) {\n return serializableClass.lc_name();\n } else {\n return serializableClass.name;\n }\n}\n\nexport interface SerializableInterface {\n get lc_id(): string[];\n}\n\nexport abstract class Serializable implements SerializableInterface {\n lc_serializable = false;\n\n lc_kwargs: SerializedFields;\n\n /**\n * A path to the module that contains the class, eg. [\"langchain\", \"llms\"]\n * Usually should be the same as the entrypoint the class is exported from.\n */\n abstract lc_namespace: string[];\n\n /**\n * The name of the serializable. Override to provide an alias or\n * to preserve the serialized module name in minified environments.\n *\n * Implemented as a static method to support loading logic.\n */\n static lc_name(): string {\n return this.name;\n }\n\n /**\n * The final serialized identifier for the module.\n */\n get lc_id(): string[] {\n return [\n ...this.lc_namespace,\n get_lc_unique_name(this.constructor as typeof Serializable),\n ];\n }\n\n /**\n * A map of secrets, which will be omitted from serialization.\n * Keys are paths to the secret in constructor args, e.g. \"foo.bar.baz\".\n * Values are the secret ids, which will be used when deserializing.\n */\n get lc_secrets(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A map of additional attributes to merge with constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the attribute values, which will be serialized.\n * These attributes need to be accepted by the constructor as arguments.\n */\n get lc_attributes(): SerializedFields | undefined {\n return undefined;\n }\n\n /**\n * A map of aliases for constructor args.\n * Keys are the attribute names, e.g. \"foo\".\n * Values are the alias that will replace the key in serialization.\n * This is used to eg. make argument names match Python.\n */\n get lc_aliases(): { [key: string]: string } | undefined {\n return undefined;\n }\n\n /**\n * A manual list of keys that should be serialized.\n * If not overridden, all fields passed into the constructor will be serialized.\n */\n get lc_serializable_keys(): string[] | undefined {\n return undefined;\n }\n\n constructor(kwargs?: SerializedFields, ..._args: never[]) {\n if (this.lc_serializable_keys !== undefined) {\n this.lc_kwargs = Object.fromEntries(\n Object.entries(kwargs || {}).filter(([key]) =>\n this.lc_serializable_keys?.includes(key)\n )\n );\n } else {\n this.lc_kwargs = kwargs ?? {};\n }\n }\n\n toJSON(): Serialized {\n if (!this.lc_serializable) {\n return this.toJSONNotImplemented();\n }\n if (\n // eslint-disable-next-line no-instanceof/no-instanceof\n this.lc_kwargs instanceof Serializable ||\n typeof this.lc_kwargs !== \"object\" ||\n Array.isArray(this.lc_kwargs)\n ) {\n // We do not support serialization of classes with arg not a POJO\n // I'm aware the check above isn't as strict as it could be\n return this.toJSONNotImplemented();\n }\n\n const aliases: { [key: string]: string } = {};\n const secrets: { [key: string]: string } = {};\n const kwargs = Object.keys(this.lc_kwargs).reduce((acc, key) => {\n acc[key] = key in this ? this[key as keyof this] : this.lc_kwargs[key];\n return acc;\n }, {} as SerializedFields);\n // get secrets, attributes and aliases from all superclasses\n for (\n let current = Object.getPrototypeOf(this);\n current;\n current = Object.getPrototypeOf(current)\n ) {\n Object.assign(aliases, Reflect.get(current, \"lc_aliases\", this));\n Object.assign(secrets, Reflect.get(current, \"lc_secrets\", this));\n Object.assign(kwargs, Reflect.get(current, \"lc_attributes\", this));\n }\n\n // include all secrets used, even if not in kwargs,\n // will be replaced with sentinel value in replaceSecrets\n Object.keys(secrets).forEach((keyPath) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let read: any = this;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let write: any = kwargs;\n\n const [last, ...partsReverse] = keyPath.split(\".\").reverse();\n for (const key of partsReverse.reverse()) {\n if (!(key in read) || read[key] === undefined) return;\n if (!(key in write) || write[key] === undefined) {\n if (typeof read[key] === \"object\" && read[key] != null) {\n write[key] = {};\n } else if (Array.isArray(read[key])) {\n write[key] = [];\n }\n }\n\n read = read[key];\n write = write[key];\n }\n\n if (last in read && read[last] !== undefined) {\n write[last] = write[last] || read[last];\n }\n });\n\n return {\n lc: 1,\n type: \"constructor\",\n id: this.lc_id,\n kwargs: mapKeys(\n Object.keys(secrets).length ? replaceSecrets(kwargs, secrets) : kwargs,\n keyToJson,\n aliases\n ),\n };\n }\n\n toJSONNotImplemented(): SerializedNotImplemented {\n return {\n lc: 1,\n type: \"not_implemented\",\n id: this.lc_id,\n };\n }\n}\n"],"mappings":"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"}
@@ -44,7 +44,7 @@ var AIMessage = class extends require_base.BaseMessage {
44
44
  initParams.tool_calls = initParams.tool_calls ?? [];
45
45
  initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];
46
46
  }
47
- } catch (e) {
47
+ } catch {
48
48
  initParams.tool_calls = [];
49
49
  initParams.invalid_tool_calls = [];
50
50
  }
@@ -166,7 +166,7 @@ var AIMessageChunk = class extends require_base.BaseMessageChunk {
166
166
  id: originalId,
167
167
  type: "tool_call"
168
168
  });
169
- } catch (e) {
169
+ } catch {
170
170
  invalidToolCalls.push({
171
171
  name,
172
172
  args: argsStr,
@@ -1 +1 @@
1
- {"version":3,"file":"ai.cjs","names":["BaseMessage","fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>","initParams: AIMessageFields<TStructure>","toolCalls","defaultToolCallParser","getTranslator","obj: unknown","x: BaseMessage","x: BaseMessageChunk","BaseMessageChunk","fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>","initParams: AIMessageChunkFields<TStructure>","toolCalls: ToolCall[]","invalidToolCalls: InvalidToolCall[]","parsedArgs: Record<string, unknown> | null","parsePartialJson","chunk: AIMessageChunk<TStructure>","combinedFields: AIMessageChunkFields","mergeContent","_mergeDicts","mergeResponseMetadata","_mergeLists","mergeUsageMetadata"],"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,cACUA,yBAEV;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,YACEC,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,GACjCC,4CAAsB,aAAa;KACrC,WAAW,aAAaD,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,aAAaE,4BAAc,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,cAGUC,8BAEV;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,aAAaC,8BAAiB,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,aAAaV,4BAAc,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,OAAOW,OAAmC;EACxC,MAAMC,iBAAuC;GAC3C,SAASC,0BAAa,KAAK,SAAS,MAAM,QAAQ;GAClD,mBAAmBC,yBACjB,KAAK,mBACL,MAAM,kBACP;GACD,mBAAmBC,uCACjB,KAAK,mBACL,MAAM,kBACP;GACD,kBAAkB,CAAE;GACpB,IAAI,KAAK,MAAM,MAAM;EACtB;AACD,MACE,KAAK,qBAAqB,UAC1B,MAAM,qBAAqB,QAC3B;GACA,MAAM,eAAeC,yBACnB,KAAK,kBACL,MAAM,iBACP;AACD,OAAI,iBAAiB,UAAa,aAAa,SAAS,GACtD,eAAe,mBAAmB;EAErC;AACD,MACE,KAAK,mBAAmB,UACxB,MAAM,mBAAmB,QAEzB,eAAe,iBAAiBC,oCAC9B,KAAK,gBACL,MAAM,eACP;EAEH,MAAM,MAAM,KAAK;AACjB,SAAO,IAAI,IAAI;CAChB;CAED,OAAO,WAAWhB,KAAqC;AACrD,SAAO,MAAM,WAAW,IAAI,IAAI,IAAI,SAAS;CAC9C;AACF"}
1
+ {"version":3,"file":"ai.cjs","names":["BaseMessage","fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>","initParams: AIMessageFields<TStructure>","toolCalls","defaultToolCallParser","getTranslator","obj: unknown","x: BaseMessage","x: BaseMessageChunk","BaseMessageChunk","fields:\n | $InferMessageContent<TStructure, \"ai\">\n | AIMessageChunkFields<TStructure>","initParams: AIMessageChunkFields<TStructure>","toolCalls: ToolCall[]","invalidToolCalls: InvalidToolCall[]","parsedArgs: Record<string, unknown> | null","parsePartialJson","chunk: AIMessageChunk<TStructure>","combinedFields: AIMessageChunkFields","mergeContent","_mergeDicts","mergeResponseMetadata","_mergeLists","mergeUsageMetadata"],"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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"}
@@ -44,7 +44,7 @@ var AIMessage = class extends BaseMessage {
44
44
  initParams.tool_calls = initParams.tool_calls ?? [];
45
45
  initParams.invalid_tool_calls = initParams.invalid_tool_calls ?? [];
46
46
  }
47
- } catch (e) {
47
+ } catch {
48
48
  initParams.tool_calls = [];
49
49
  initParams.invalid_tool_calls = [];
50
50
  }
@@ -166,7 +166,7 @@ var AIMessageChunk = class extends BaseMessageChunk {
166
166
  id: originalId,
167
167
  type: "tool_call"
168
168
  });
169
- } catch (e) {
169
+ } catch {
170
170
  invalidToolCalls.push({
171
171
  name,
172
172
  args: argsStr,