langchain 1.0.0-alpha.5 → 1.0.0-alpha.7

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 (405) hide show
  1. package/dist/agents/ReactAgent.cjs +5 -5
  2. package/dist/agents/ReactAgent.cjs.map +1 -1
  3. package/dist/agents/ReactAgent.d.cts +2 -5
  4. package/dist/agents/ReactAgent.d.cts.map +1 -1
  5. package/dist/agents/ReactAgent.d.ts +2 -5
  6. package/dist/agents/ReactAgent.d.ts.map +1 -1
  7. package/dist/agents/ReactAgent.js +6 -6
  8. package/dist/agents/ReactAgent.js.map +1 -1
  9. package/dist/agents/annotation.cjs.map +1 -1
  10. package/dist/agents/annotation.d.cts +13 -8
  11. package/dist/agents/annotation.d.cts.map +1 -1
  12. package/dist/agents/annotation.d.ts +13 -8
  13. package/dist/agents/annotation.d.ts.map +1 -1
  14. package/dist/agents/annotation.js.map +1 -1
  15. package/dist/agents/createAgent.cjs.map +1 -1
  16. package/dist/agents/createAgent.js.map +1 -1
  17. package/dist/agents/index.cjs +2 -2
  18. package/dist/agents/index.cjs.map +1 -1
  19. package/dist/agents/index.d.cts +50 -50
  20. package/dist/agents/index.d.cts.map +1 -1
  21. package/dist/agents/index.d.ts +50 -50
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +2 -2
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/interrupt.d.cts +14 -1
  26. package/dist/agents/interrupt.d.cts.map +1 -1
  27. package/dist/agents/interrupt.d.ts +14 -1
  28. package/dist/agents/interrupt.d.ts.map +1 -1
  29. package/dist/agents/middlewareAgent/ReactAgent.cjs +273 -66
  30. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
  31. package/dist/agents/middlewareAgent/ReactAgent.d.cts +102 -16
  32. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
  33. package/dist/agents/middlewareAgent/ReactAgent.d.ts +102 -16
  34. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
  35. package/dist/agents/middlewareAgent/ReactAgent.js +275 -68
  36. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
  37. package/dist/agents/middlewareAgent/annotation.cjs +12 -6
  38. package/dist/agents/middlewareAgent/annotation.cjs.map +1 -1
  39. package/dist/agents/middlewareAgent/annotation.js +12 -6
  40. package/dist/agents/middlewareAgent/annotation.js.map +1 -1
  41. package/dist/agents/middlewareAgent/constants.d.cts +5 -0
  42. package/dist/agents/middlewareAgent/constants.d.cts.map +1 -0
  43. package/dist/agents/middlewareAgent/constants.d.ts +5 -0
  44. package/dist/agents/middlewareAgent/constants.d.ts.map +1 -0
  45. package/dist/agents/middlewareAgent/index.cjs.map +1 -1
  46. package/dist/agents/middlewareAgent/index.js.map +1 -1
  47. package/dist/agents/middlewareAgent/middleware/bigTool.cjs +162 -0
  48. package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +1 -0
  49. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +113 -0
  50. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +1 -0
  51. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +113 -0
  52. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +1 -0
  53. package/dist/agents/middlewareAgent/middleware/bigTool.js +161 -0
  54. package/dist/agents/middlewareAgent/middleware/bigTool.js.map +1 -0
  55. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +58 -0
  56. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -0
  57. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +46 -0
  58. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -0
  59. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +46 -0
  60. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -0
  61. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +58 -0
  62. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -0
  63. package/dist/agents/middlewareAgent/middleware/hitl.cjs +311 -0
  64. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
  65. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +419 -0
  66. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
  67. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +419 -0
  68. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
  69. package/dist/agents/middlewareAgent/middleware/hitl.js +310 -0
  70. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
  71. package/dist/agents/middlewareAgent/middleware/index.cjs +32 -0
  72. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
  73. package/dist/agents/middlewareAgent/middleware/index.d.cts +6 -0
  74. package/dist/agents/middlewareAgent/middleware/index.d.ts +6 -0
  75. package/dist/agents/middlewareAgent/middleware/index.js +21 -0
  76. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
  77. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.cjs +72 -27
  78. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
  79. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.cts +60 -15
  80. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
  81. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.ts +60 -15
  82. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
  83. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.js +71 -26
  84. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
  85. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.cjs +35 -23
  86. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
  87. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.cts +7 -5
  88. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
  89. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.ts +7 -5
  90. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
  91. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.js +29 -17
  92. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
  93. package/dist/agents/middlewareAgent/middleware.cjs +8 -5
  94. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
  95. package/dist/agents/middlewareAgent/middleware.d.cts +67 -7
  96. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
  97. package/dist/agents/middlewareAgent/middleware.d.ts +67 -7
  98. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
  99. package/dist/agents/middlewareAgent/middleware.js +8 -5
  100. package/dist/agents/middlewareAgent/middleware.js.map +1 -1
  101. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
  102. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
  103. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
  104. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
  105. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +125 -83
  106. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
  107. package/dist/agents/middlewareAgent/nodes/AgentNode.js +128 -86
  108. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
  109. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
  110. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
  111. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
  112. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
  113. package/dist/agents/middlewareAgent/nodes/middleware.cjs +42 -17
  114. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
  115. package/dist/agents/middlewareAgent/nodes/middleware.js +42 -18
  116. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
  117. package/dist/agents/middlewareAgent/nodes/utils.cjs +30 -16
  118. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
  119. package/dist/agents/middlewareAgent/nodes/utils.js +28 -14
  120. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
  121. package/dist/agents/middlewareAgent/types.d.cts +162 -88
  122. package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
  123. package/dist/agents/middlewareAgent/types.d.ts +162 -88
  124. package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
  125. package/dist/agents/model.cjs +13 -0
  126. package/dist/agents/model.cjs.map +1 -0
  127. package/dist/agents/model.js +11 -0
  128. package/dist/agents/model.js.map +1 -0
  129. package/dist/agents/nodes/AgentNode.cjs +60 -32
  130. package/dist/agents/nodes/AgentNode.cjs.map +1 -1
  131. package/dist/agents/nodes/AgentNode.js +61 -33
  132. package/dist/agents/nodes/AgentNode.js.map +1 -1
  133. package/dist/agents/nodes/ToolNode.cjs +4 -4
  134. package/dist/agents/nodes/ToolNode.cjs.map +1 -1
  135. package/dist/agents/nodes/ToolNode.d.cts +2 -3
  136. package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
  137. package/dist/agents/nodes/ToolNode.d.ts +1 -2
  138. package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
  139. package/dist/agents/nodes/ToolNode.js +5 -5
  140. package/dist/agents/nodes/ToolNode.js.map +1 -1
  141. package/dist/agents/responses.cjs +53 -11
  142. package/dist/agents/responses.cjs.map +1 -1
  143. package/dist/agents/responses.d.cts +12 -20
  144. package/dist/agents/responses.d.cts.map +1 -1
  145. package/dist/agents/responses.d.ts +12 -20
  146. package/dist/agents/responses.d.ts.map +1 -1
  147. package/dist/agents/responses.js +53 -12
  148. package/dist/agents/responses.js.map +1 -1
  149. package/dist/agents/types.d.cts +3 -6
  150. package/dist/agents/types.d.cts.map +1 -1
  151. package/dist/agents/types.d.ts +3 -6
  152. package/dist/agents/types.d.ts.map +1 -1
  153. package/dist/agents/utils.cjs +11 -29
  154. package/dist/agents/utils.cjs.map +1 -1
  155. package/dist/agents/utils.js +9 -26
  156. package/dist/agents/utils.js.map +1 -1
  157. package/dist/agents/withAgentName.cjs.map +1 -1
  158. package/dist/agents/withAgentName.js.map +1 -1
  159. package/dist/chains/api/prompts.cjs.map +1 -1
  160. package/dist/chains/api/prompts.js.map +1 -1
  161. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
  162. package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
  163. package/dist/chains/index.cjs +0 -3
  164. package/dist/chains/index.cjs.map +1 -1
  165. package/dist/chains/index.d.cts +1 -2
  166. package/dist/chains/index.d.ts +1 -2
  167. package/dist/chains/index.js +1 -3
  168. package/dist/chains/index.js.map +1 -1
  169. package/dist/chains/openai_functions/extraction.cjs.map +1 -1
  170. package/dist/chains/openai_functions/extraction.d.cts +1 -3
  171. package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
  172. package/dist/chains/openai_functions/extraction.d.ts +1 -3
  173. package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
  174. package/dist/chains/openai_functions/extraction.js.map +1 -1
  175. package/dist/chains/openai_functions/index.cjs +0 -5
  176. package/dist/chains/openai_functions/index.cjs.map +1 -1
  177. package/dist/chains/openai_functions/index.d.cts +1 -2
  178. package/dist/chains/openai_functions/index.d.ts +1 -2
  179. package/dist/chains/openai_functions/index.js +1 -4
  180. package/dist/chains/openai_functions/index.js.map +1 -1
  181. package/dist/chains/openai_functions/openapi.cjs +4 -4
  182. package/dist/chains/openai_functions/openapi.cjs.map +1 -1
  183. package/dist/chains/openai_functions/openapi.d.cts +1 -1
  184. package/dist/chains/openai_functions/openapi.js +4 -4
  185. package/dist/chains/openai_functions/openapi.js.map +1 -1
  186. package/dist/chains/openai_functions/tagging.cjs.map +1 -1
  187. package/dist/chains/openai_functions/tagging.d.cts +1 -3
  188. package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
  189. package/dist/chains/openai_functions/tagging.d.ts +1 -3
  190. package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
  191. package/dist/chains/openai_functions/tagging.js.map +1 -1
  192. package/dist/chains/query_constructor/index.cjs +4 -4
  193. package/dist/chains/query_constructor/index.cjs.map +1 -1
  194. package/dist/chains/query_constructor/index.d.cts +4 -2
  195. package/dist/chains/query_constructor/index.d.cts.map +1 -1
  196. package/dist/chains/query_constructor/index.d.ts +4 -2
  197. package/dist/chains/query_constructor/index.d.ts.map +1 -1
  198. package/dist/chains/query_constructor/index.js +1 -1
  199. package/dist/chains/query_constructor/index.js.map +1 -1
  200. package/dist/chains/question_answering/load.d.ts +2 -2
  201. package/dist/chains/question_answering/load.d.ts.map +1 -1
  202. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
  203. package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
  204. package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
  205. package/dist/chains/question_answering/refine_prompts.js.map +1 -1
  206. package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
  207. package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
  208. package/dist/chains/router/multi_prompt.cjs +4 -4
  209. package/dist/chains/router/multi_prompt.cjs.map +1 -1
  210. package/dist/chains/router/multi_prompt.js +1 -1
  211. package/dist/chains/router/multi_prompt.js.map +1 -1
  212. package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
  213. package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
  214. package/dist/chains/router/multi_retrieval_qa.js +1 -1
  215. package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
  216. package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
  217. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
  218. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
  219. package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
  220. package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
  221. package/dist/chains/summarization/stuff_prompts.js.map +1 -1
  222. package/dist/chat_models/universal.cjs +8 -5
  223. package/dist/chat_models/universal.cjs.map +1 -1
  224. package/dist/chat_models/universal.d.cts +2 -2
  225. package/dist/chat_models/universal.d.cts.map +1 -1
  226. package/dist/chat_models/universal.d.ts +2 -2
  227. package/dist/chat_models/universal.d.ts.map +1 -1
  228. package/dist/chat_models/universal.js +8 -5
  229. package/dist/chat_models/universal.js.map +1 -1
  230. package/dist/document_loaders/fs/directory.cjs.map +1 -1
  231. package/dist/document_loaders/fs/directory.d.cts +0 -1
  232. package/dist/document_loaders/fs/directory.d.cts.map +1 -1
  233. package/dist/document_loaders/fs/directory.d.ts +0 -1
  234. package/dist/document_loaders/fs/directory.d.ts.map +1 -1
  235. package/dist/document_loaders/fs/directory.js.map +1 -1
  236. package/dist/document_loaders/fs/json.cjs +7 -1
  237. package/dist/document_loaders/fs/json.cjs.map +1 -1
  238. package/dist/document_loaders/fs/json.js +7 -1
  239. package/dist/document_loaders/fs/json.js.map +1 -1
  240. package/dist/embeddings/cache_backed.cjs +1 -1
  241. package/dist/embeddings/cache_backed.cjs.map +1 -1
  242. package/dist/embeddings/cache_backed.d.cts +1 -1
  243. package/dist/embeddings/cache_backed.d.ts +2 -2
  244. package/dist/embeddings/cache_backed.js +2 -2
  245. package/dist/embeddings/cache_backed.js.map +1 -1
  246. package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
  247. package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
  248. package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
  249. package/dist/evaluation/embedding_distance/base.cjs +2 -4
  250. package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
  251. package/dist/evaluation/embedding_distance/base.js +2 -3
  252. package/dist/evaluation/embedding_distance/base.js.map +1 -1
  253. package/dist/evaluation/loader.cjs +7 -12
  254. package/dist/evaluation/loader.cjs.map +1 -1
  255. package/dist/evaluation/loader.d.cts +8 -2
  256. package/dist/evaluation/loader.d.cts.map +1 -1
  257. package/dist/evaluation/loader.d.ts +8 -2
  258. package/dist/evaluation/loader.d.ts.map +1 -1
  259. package/dist/evaluation/loader.js +7 -12
  260. package/dist/evaluation/loader.js.map +1 -1
  261. package/dist/hub/base.cjs.map +1 -1
  262. package/dist/hub/base.js.map +1 -1
  263. package/dist/index.cjs +38 -6
  264. package/dist/index.cjs.map +1 -1
  265. package/dist/index.d.cts +11 -4
  266. package/dist/index.d.ts +11 -4
  267. package/dist/index.js +18 -4
  268. package/dist/index.js.map +1 -1
  269. package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
  270. package/dist/langchain-core/dist/messages/base.d.cts +24 -33
  271. package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
  272. package/dist/langchain-core/dist/messages/content/index.d.cts +21 -2
  273. package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
  274. package/dist/langchain-core/dist/messages/content/tools.d.cts +67 -6
  275. package/dist/langchain-core/dist/messages/content/tools.d.cts.map +1 -1
  276. package/dist/langchain-core/dist/messages/message.d.cts +598 -0
  277. package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
  278. package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
  279. package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
  280. package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
  281. package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
  282. package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
  283. package/dist/langchain-core/dist/utils/types/index.d.cts.map +1 -1
  284. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
  285. package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
  286. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
  287. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +21 -2
  288. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
  289. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +67 -6
  290. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +1 -1
  291. package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
  292. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
  293. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
  294. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
  295. package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
  296. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
  297. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
  298. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
  299. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
  300. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
  301. package/dist/load/import_map.cjs +3 -14
  302. package/dist/load/import_map.cjs.map +1 -1
  303. package/dist/load/import_map.js +3 -14
  304. package/dist/load/import_map.js.map +1 -1
  305. package/dist/memory/prompt.cjs.map +1 -1
  306. package/dist/memory/prompt.d.cts.map +1 -1
  307. package/dist/memory/prompt.d.ts.map +1 -1
  308. package/dist/memory/prompt.js.map +1 -1
  309. package/dist/output_parsers/combining.cjs +1 -1
  310. package/dist/output_parsers/combining.cjs.map +1 -1
  311. package/dist/output_parsers/combining.js +1 -1
  312. package/dist/output_parsers/combining.js.map +1 -1
  313. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
  314. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
  315. package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
  316. package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
  317. package/dist/output_parsers/expression_type_handlers/base.js +1 -1
  318. package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
  319. package/dist/output_parsers/regex.cjs.map +1 -1
  320. package/dist/output_parsers/regex.js.map +1 -1
  321. package/dist/output_parsers/structured.cjs +4 -4
  322. package/dist/output_parsers/structured.cjs.map +1 -1
  323. package/dist/output_parsers/structured.d.cts +1 -1
  324. package/dist/output_parsers/structured.d.cts.map +1 -1
  325. package/dist/output_parsers/structured.d.ts +1 -1
  326. package/dist/output_parsers/structured.d.ts.map +1 -1
  327. package/dist/output_parsers/structured.js +2 -2
  328. package/dist/output_parsers/structured.js.map +1 -1
  329. package/dist/retrievers/ensemble.cjs.map +1 -1
  330. package/dist/retrievers/ensemble.js.map +1 -1
  331. package/dist/storage/file_system.cjs +1 -1
  332. package/dist/storage/file_system.cjs.map +1 -1
  333. package/dist/storage/file_system.js +1 -1
  334. package/dist/storage/file_system.js.map +1 -1
  335. package/dist/tools/fs.cjs +5 -5
  336. package/dist/tools/fs.cjs.map +1 -1
  337. package/dist/tools/fs.d.cts +1 -1
  338. package/dist/tools/fs.d.cts.map +1 -1
  339. package/dist/tools/fs.d.ts +1 -1
  340. package/dist/tools/fs.d.ts.map +1 -1
  341. package/dist/tools/fs.js +1 -1
  342. package/dist/tools/fs.js.map +1 -1
  343. package/dist/tools/retriever.cjs +2 -2
  344. package/dist/tools/retriever.cjs.map +1 -1
  345. package/dist/tools/retriever.d.cts +1 -1
  346. package/dist/tools/retriever.d.cts.map +1 -1
  347. package/dist/tools/retriever.d.ts +1 -1
  348. package/dist/tools/retriever.d.ts.map +1 -1
  349. package/dist/tools/retriever.js +1 -1
  350. package/dist/tools/retriever.js.map +1 -1
  351. package/dist/tools/sql.cjs +1 -2
  352. package/dist/tools/sql.cjs.map +1 -1
  353. package/dist/tools/sql.d.cts +1 -1
  354. package/dist/tools/sql.d.cts.map +1 -1
  355. package/dist/tools/sql.d.ts +1 -1
  356. package/dist/tools/sql.d.ts.map +1 -1
  357. package/dist/tools/sql.js +1 -2
  358. package/dist/tools/sql.js.map +1 -1
  359. package/dist/types/expression-parser.d.cts +2 -0
  360. package/dist/types/expression-parser.d.cts.map +1 -1
  361. package/dist/types/expression-parser.d.ts +2 -0
  362. package/dist/types/expression-parser.d.ts.map +1 -1
  363. package/dist/util/hub.cjs +1 -1
  364. package/dist/util/hub.js +1 -1
  365. package/dist/util/openapi.cjs +1 -1
  366. package/dist/util/openapi.cjs.map +1 -1
  367. package/dist/util/openapi.js +1 -1
  368. package/dist/util/openapi.js.map +1 -1
  369. package/package.json +15 -21
  370. package/dist/agents/middlewareAgent/middlewares/hitl.cjs +0 -235
  371. package/dist/agents/middlewareAgent/middlewares/hitl.cjs.map +0 -1
  372. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts +0 -199
  373. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts.map +0 -1
  374. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts +0 -199
  375. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts.map +0 -1
  376. package/dist/agents/middlewareAgent/middlewares/hitl.js +0 -234
  377. package/dist/agents/middlewareAgent/middlewares/hitl.js.map +0 -1
  378. package/dist/agents/middlewareAgent/middlewares/index.cjs +0 -8
  379. package/dist/agents/middlewareAgent/middlewares/index.d.cts +0 -4
  380. package/dist/agents/middlewareAgent/middlewares/index.d.ts +0 -4
  381. package/dist/agents/middlewareAgent/middlewares/index.js +0 -5
  382. package/dist/agents/middlewareAgent/middlewares/promptCaching.cjs.map +0 -1
  383. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.cts.map +0 -1
  384. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.ts.map +0 -1
  385. package/dist/agents/middlewareAgent/middlewares/promptCaching.js.map +0 -1
  386. package/dist/agents/middlewareAgent/middlewares/summarization.cjs.map +0 -1
  387. package/dist/agents/middlewareAgent/middlewares/summarization.d.cts.map +0 -1
  388. package/dist/agents/middlewareAgent/middlewares/summarization.d.ts.map +0 -1
  389. package/dist/agents/middlewareAgent/middlewares/summarization.js.map +0 -1
  390. package/dist/chains/openai_functions/structured_output.cjs +0 -107
  391. package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
  392. package/dist/chains/openai_functions/structured_output.d.cts +0 -38
  393. package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
  394. package/dist/chains/openai_functions/structured_output.d.ts +0 -38
  395. package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
  396. package/dist/chains/openai_functions/structured_output.js +0 -105
  397. package/dist/chains/openai_functions/structured_output.js.map +0 -1
  398. package/dist/chains/openai_moderation.cjs +0 -107
  399. package/dist/chains/openai_moderation.cjs.map +0 -1
  400. package/dist/chains/openai_moderation.d.cts +0 -74
  401. package/dist/chains/openai_moderation.d.cts.map +0 -1
  402. package/dist/chains/openai_moderation.d.ts +0 -74
  403. package/dist/chains/openai_moderation.d.ts.map +0 -1
  404. package/dist/chains/openai_moderation.js +0 -106
  405. package/dist/chains/openai_moderation.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"structured.js","names":["schema: T","schemas: S","text: string","options?: JsonMarkdownFormatInstructionsOptions","schemaInput: JsonSchema7Type","type: string","type","description"],"sources":["../../src/output_parsers/structured.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n toJsonSchema,\n type JsonSchema7Type,\n type JsonSchema7ArrayType,\n type JsonSchema7ObjectType,\n type JsonSchema7StringType,\n type JsonSchema7NumberType,\n type JsonSchema7NullableType,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n BaseOutputParser,\n FormatInstructionsOptions,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport {\n interopParseAsync,\n type InferInteropZodOutput,\n type InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\n\nexport interface JsonMarkdownFormatInstructionsOptions\n extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\n\nexport class StructuredOutputParser<\n T extends InteropZodType\n> extends BaseOutputParser<InferInteropZodOutput<T>> {\n static lc_name() {\n return \"StructuredOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"structured\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n constructor(public schema: T) {\n super(schema);\n }\n\n /**\n * Creates a new StructuredOutputParser from a Zod schema.\n * @param schema The Zod schema which the output should match\n * @returns A new instance of StructuredOutputParser.\n */\n static fromZodSchema<T extends InteropZodType>(schema: T) {\n return new this(schema);\n }\n\n /**\n * Creates a new StructuredOutputParser from a set of names and\n * descriptions.\n * @param schemas An object where each key is a name and each value is a description\n * @returns A new instance of StructuredOutputParser.\n */\n static fromNamesAndDescriptions<S extends { [key: string]: string }>(\n schemas: S\n ) {\n const zodSchema = z.object(\n Object.fromEntries(\n Object.entries(schemas).map(\n ([name, description]) =>\n [name, z.string().describe(description)] as const\n )\n )\n );\n\n return new this(zodSchema);\n }\n\n /**\n * Returns a markdown code snippet with a JSON object formatted according\n * to the schema.\n * @param options Optional. The options for formatting the instructions\n * @returns A markdown code snippet with a JSON object formatted according to the schema.\n */\n getFormatInstructions(): string {\n return `You must format your output as a JSON value that adheres to a given \"JSON Schema\" instance.\n\n\"JSON Schema\" is a declarative language that allows you to annotate and validate JSON documents.\n\nFor example, the example \"JSON Schema\" instance {{\"properties\": {{\"foo\": {{\"description\": \"a list of test words\", \"type\": \"array\", \"items\": {{\"type\": \"string\"}}}}}}, \"required\": [\"foo\"]}}}}\nwould match an object with one required property, \"foo\". The \"type\" property specifies \"foo\" must be an \"array\", and the \"description\" property semantically describes it as \"a list of test words\". The items within \"foo\" must be strings.\nThus, the object {{\"foo\": [\"bar\", \"baz\"]}} is a well-formatted instance of this example \"JSON Schema\". The object {{\"properties\": {{\"foo\": [\"bar\", \"baz\"]}}}} is not well-formatted.\n\nYour output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!\n\nHere is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:\n\\`\\`\\`json\n${JSON.stringify(toJsonSchema(this.schema))}\n\\`\\`\\`\n`;\n }\n\n /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n async parse(text: string): Promise<InferInteropZodOutput<T>> {\n try {\n const json = text.includes(\"```\")\n ? text.trim().split(/```(?:json)?/)[1]\n : text.trim();\n return await interopParseAsync(this.schema, JSON.parse(json));\n } catch (e) {\n try {\n return await interopParseAsync(this.schema, JSON.parse(text.trim()));\n } catch (e2) {\n throw new OutputParserException(\n `Failed to parse. Text: \"${text}\". Error: ${e2}`,\n text\n );\n }\n }\n }\n}\n\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport class JsonMarkdownStructuredOutputParser<\n T extends InteropZodType\n> extends StructuredOutputParser<T> {\n static lc_name() {\n return \"JsonMarkdownStructuredOutputParser\";\n }\n\n getFormatInstructions(\n options?: JsonMarkdownFormatInstructionsOptions\n ): string {\n const interpolationDepth = options?.interpolationDepth ?? 1;\n if (interpolationDepth < 1) {\n throw new Error(\"f string interpolation depth must be at least 1\");\n }\n\n return `Return a markdown code snippet with a JSON object formatted to look like:\\n\\`\\`\\`json\\n${this._schemaToInstruction(\n toJsonSchema(this.schema)\n )\n .replaceAll(\"{\", \"{\".repeat(interpolationDepth))\n .replaceAll(\"}\", \"}\".repeat(interpolationDepth))}\\n\\`\\`\\``;\n }\n\n private _schemaToInstruction(\n schemaInput: JsonSchema7Type,\n indent = 2\n ): string {\n const schema = schemaInput as Extract<\n JsonSchema7Type,\n | JsonSchema7ObjectType\n | JsonSchema7ArrayType\n | JsonSchema7StringType\n | JsonSchema7NumberType\n | JsonSchema7NullableType\n >;\n\n if (\"type\" in schema) {\n let nullable = false;\n let type: string;\n if (Array.isArray(schema.type)) {\n const nullIdx = schema.type.findIndex((type) => type === \"null\");\n if (nullIdx !== -1) {\n nullable = true;\n schema.type.splice(nullIdx, 1);\n }\n type = schema.type.join(\" | \") as string;\n } else {\n type = schema.type;\n }\n\n if (schema.type === \"object\" && schema.properties) {\n const description = schema.description\n ? ` // ${schema.description}`\n : \"\";\n const properties = Object.entries(schema.properties)\n .map(([key, value]) => {\n const isOptional = schema.required?.includes(key)\n ? \"\"\n : \" (optional)\";\n return `${\" \".repeat(indent)}\"${key}\": ${this._schemaToInstruction(\n value,\n indent + 2\n )}${isOptional}`;\n })\n .join(\"\\n\");\n return `{\\n${properties}\\n${\" \".repeat(indent - 2)}}${description}`;\n }\n if (schema.type === \"array\" && schema.items) {\n const description = schema.description\n ? ` // ${schema.description}`\n : \"\";\n return `array[\\n${\" \".repeat(indent)}${this._schemaToInstruction(\n schema.items,\n indent + 2\n )}\\n${\" \".repeat(indent - 2)}] ${description}`;\n }\n const isNullable = nullable ? \" (nullable)\" : \"\";\n const description = schema.description ? ` // ${schema.description}` : \"\";\n return `${type}${description}${isNullable}`;\n }\n\n if (\"anyOf\" in schema) {\n return schema.anyOf\n .map((s) => this._schemaToInstruction(s, indent))\n .join(`\\n${\" \".repeat(indent - 2)}`);\n }\n\n throw new Error(\"unsupported schema type\");\n }\n\n static fromZodSchema<T extends InteropZodType>(schema: T) {\n return new this<T>(schema);\n }\n\n static fromNamesAndDescriptions<S extends { [key: string]: string }>(\n schemas: S\n ) {\n const zodSchema = z.object(\n Object.fromEntries(\n Object.entries(schemas).map(\n ([name, description]) =>\n [name, z.string().describe(description)] as const\n )\n )\n );\n\n return new this<typeof zodSchema>(zodSchema);\n }\n}\n\nexport interface AsymmetricStructuredOutputParserFields<\n T extends InteropZodType\n> {\n inputSchema: T;\n}\n\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport abstract class AsymmetricStructuredOutputParser<\n T extends InteropZodType,\n Y = unknown\n> extends BaseOutputParser<Y> {\n private structuredInputParser: JsonMarkdownStructuredOutputParser<T>;\n\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>) {\n super(...arguments);\n this.structuredInputParser = new JsonMarkdownStructuredOutputParser(\n inputSchema\n );\n }\n\n /**\n * Processes the parsed input into the desired output format. Must be\n * implemented by subclasses.\n * @param input The parsed input\n * @returns The processed output.\n */\n abstract outputProcessor(input: InferInteropZodOutput<T>): Promise<Y>;\n\n async parse(text: string): Promise<Y> {\n let parsedInput;\n try {\n parsedInput = await this.structuredInputParser.parse(text);\n } catch (e) {\n throw new OutputParserException(\n `Failed to parse. Text: \"${text}\". Error: ${e}`,\n text\n );\n }\n\n return this.outputProcessor(parsedInput);\n }\n\n getFormatInstructions(): string {\n return this.structuredInputParser.getFormatInstructions();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"structured.js","names":["schema: T","schemas: S","text: string","options?: JsonMarkdownFormatInstructionsOptions","schemaInput: JsonSchema7Type","type: string","type","description"],"sources":["../../src/output_parsers/structured.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport {\n toJsonSchema,\n type JsonSchema7Type,\n type JsonSchema7ArrayType,\n type JsonSchema7ObjectType,\n type JsonSchema7StringType,\n type JsonSchema7NumberType,\n type JsonSchema7NullableType,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n BaseOutputParser,\n FormatInstructionsOptions,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport {\n interopParseAsync,\n type InferInteropZodOutput,\n type InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\n\nexport interface JsonMarkdownFormatInstructionsOptions\n extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\n\nexport class StructuredOutputParser<\n T extends InteropZodType\n> extends BaseOutputParser<InferInteropZodOutput<T>> {\n static lc_name() {\n return \"StructuredOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"structured\"];\n\n toJSON() {\n return this.toJSONNotImplemented();\n }\n\n constructor(public schema: T) {\n super(schema);\n }\n\n /**\n * Creates a new StructuredOutputParser from a Zod schema.\n * @param schema The Zod schema which the output should match\n * @returns A new instance of StructuredOutputParser.\n */\n static fromZodSchema<T extends InteropZodType>(schema: T) {\n return new this(schema);\n }\n\n /**\n * Creates a new StructuredOutputParser from a set of names and\n * descriptions.\n * @param schemas An object where each key is a name and each value is a description\n * @returns A new instance of StructuredOutputParser.\n */\n static fromNamesAndDescriptions<S extends { [key: string]: string }>(\n schemas: S\n ) {\n const zodSchema = z.object(\n Object.fromEntries(\n Object.entries(schemas).map(\n ([name, description]) =>\n [name, z.string().describe(description)] as const\n )\n )\n );\n\n return new this(zodSchema);\n }\n\n /**\n * Returns a markdown code snippet with a JSON object formatted according\n * to the schema.\n * @param options Optional. The options for formatting the instructions\n * @returns A markdown code snippet with a JSON object formatted according to the schema.\n */\n getFormatInstructions(): string {\n return `You must format your output as a JSON value that adheres to a given \"JSON Schema\" instance.\n\n\"JSON Schema\" is a declarative language that allows you to annotate and validate JSON documents.\n\nFor example, the example \"JSON Schema\" instance {{\"properties\": {{\"foo\": {{\"description\": \"a list of test words\", \"type\": \"array\", \"items\": {{\"type\": \"string\"}}}}}}, \"required\": [\"foo\"]}}}}\nwould match an object with one required property, \"foo\". The \"type\" property specifies \"foo\" must be an \"array\", and the \"description\" property semantically describes it as \"a list of test words\". The items within \"foo\" must be strings.\nThus, the object {{\"foo\": [\"bar\", \"baz\"]}} is a well-formatted instance of this example \"JSON Schema\". The object {{\"properties\": {{\"foo\": [\"bar\", \"baz\"]}}}} is not well-formatted.\n\nYour output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!\n\nHere is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:\n\\`\\`\\`json\n${JSON.stringify(toJsonSchema(this.schema))}\n\\`\\`\\`\n`;\n }\n\n /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n async parse(text: string): Promise<InferInteropZodOutput<T>> {\n try {\n const json = text.includes(\"```\")\n ? text.trim().split(/```(?:json)?/)[1]\n : text.trim();\n return await interopParseAsync(this.schema, JSON.parse(json));\n } catch {\n try {\n return await interopParseAsync(this.schema, JSON.parse(text.trim()));\n } catch (e2) {\n throw new OutputParserException(\n `Failed to parse. Text: \"${text}\". Error: ${e2}`,\n text\n );\n }\n }\n }\n}\n\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport class JsonMarkdownStructuredOutputParser<\n T extends InteropZodType\n> extends StructuredOutputParser<T> {\n static lc_name() {\n return \"JsonMarkdownStructuredOutputParser\";\n }\n\n getFormatInstructions(\n options?: JsonMarkdownFormatInstructionsOptions\n ): string {\n const interpolationDepth = options?.interpolationDepth ?? 1;\n if (interpolationDepth < 1) {\n throw new Error(\"f string interpolation depth must be at least 1\");\n }\n\n return `Return a markdown code snippet with a JSON object formatted to look like:\\n\\`\\`\\`json\\n${this._schemaToInstruction(\n toJsonSchema(this.schema)\n )\n .replaceAll(\"{\", \"{\".repeat(interpolationDepth))\n .replaceAll(\"}\", \"}\".repeat(interpolationDepth))}\\n\\`\\`\\``;\n }\n\n private _schemaToInstruction(\n schemaInput: JsonSchema7Type,\n indent = 2\n ): string {\n const schema = schemaInput as Extract<\n JsonSchema7Type,\n | JsonSchema7ObjectType\n | JsonSchema7ArrayType\n | JsonSchema7StringType\n | JsonSchema7NumberType\n | JsonSchema7NullableType\n >;\n\n if (\"type\" in schema) {\n let nullable = false;\n let type: string;\n if (Array.isArray(schema.type)) {\n const nullIdx = schema.type.findIndex((type) => type === \"null\");\n if (nullIdx !== -1) {\n nullable = true;\n schema.type.splice(nullIdx, 1);\n }\n type = schema.type.join(\" | \") as string;\n } else {\n type = schema.type;\n }\n\n if (schema.type === \"object\" && schema.properties) {\n const description = schema.description\n ? ` // ${schema.description}`\n : \"\";\n const properties = Object.entries(schema.properties)\n .map(([key, value]) => {\n const isOptional = schema.required?.includes(key)\n ? \"\"\n : \" (optional)\";\n return `${\" \".repeat(indent)}\"${key}\": ${this._schemaToInstruction(\n value,\n indent + 2\n )}${isOptional}`;\n })\n .join(\"\\n\");\n return `{\\n${properties}\\n${\" \".repeat(indent - 2)}}${description}`;\n }\n if (schema.type === \"array\" && schema.items) {\n const description = schema.description\n ? ` // ${schema.description}`\n : \"\";\n return `array[\\n${\" \".repeat(indent)}${this._schemaToInstruction(\n schema.items,\n indent + 2\n )}\\n${\" \".repeat(indent - 2)}] ${description}`;\n }\n const isNullable = nullable ? \" (nullable)\" : \"\";\n const description = schema.description ? ` // ${schema.description}` : \"\";\n return `${type}${description}${isNullable}`;\n }\n\n if (\"anyOf\" in schema) {\n return schema.anyOf\n .map((s) => this._schemaToInstruction(s, indent))\n .join(`\\n${\" \".repeat(indent - 2)}`);\n }\n\n throw new Error(\"unsupported schema type\");\n }\n\n static fromZodSchema<T extends InteropZodType>(schema: T) {\n return new this<T>(schema);\n }\n\n static fromNamesAndDescriptions<S extends { [key: string]: string }>(\n schemas: S\n ) {\n const zodSchema = z.object(\n Object.fromEntries(\n Object.entries(schemas).map(\n ([name, description]) =>\n [name, z.string().describe(description)] as const\n )\n )\n );\n\n return new this<typeof zodSchema>(zodSchema);\n }\n}\n\nexport interface AsymmetricStructuredOutputParserFields<\n T extends InteropZodType\n> {\n inputSchema: T;\n}\n\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport abstract class AsymmetricStructuredOutputParser<\n T extends InteropZodType,\n Y = unknown\n> extends BaseOutputParser<Y> {\n private structuredInputParser: JsonMarkdownStructuredOutputParser<T>;\n\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>) {\n super(...arguments);\n this.structuredInputParser = new JsonMarkdownStructuredOutputParser(\n inputSchema\n );\n }\n\n /**\n * Processes the parsed input into the desired output format. Must be\n * implemented by subclasses.\n * @param input The parsed input\n * @returns The processed output.\n */\n abstract outputProcessor(input: InferInteropZodOutput<T>): Promise<Y>;\n\n async parse(text: string): Promise<Y> {\n let parsedInput;\n try {\n parsedInput = await this.structuredInputParser.parse(text);\n } catch (e) {\n throw new OutputParserException(\n `Failed to parse. Text: \"${text}\". Error: ${e}`,\n text\n );\n }\n\n return this.outputProcessor(parsedInput);\n }\n\n getFormatInstructions(): string {\n return this.structuredInputParser.getFormatInstructions();\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble.cjs","names":["BaseRetriever","args: EnsembleRetrieverInput","query: string","runManager?: CallbackManagerForRetrieverRun","docList: DocumentInterface[][]","rffScore: Record<string, number>","documents: Document[]"],"sources":["../../src/retrievers/ensemble.ts"],"sourcesContent":["import { BaseRetriever, BaseRetrieverInput } from \"@langchain/core/retrievers\";\nimport { Document, DocumentInterface } from \"@langchain/core/documents\";\nimport { CallbackManagerForRetrieverRun } from \"@langchain/core/callbacks/manager\";\n\nexport interface EnsembleRetrieverInput extends BaseRetrieverInput {\n /** A list of retrievers to ensemble. */\n retrievers: BaseRetriever[];\n /**\n * A list of weights corresponding to the retrievers. Defaults to equal\n * weighting for all retrievers.\n */\n weights?: number[];\n /**\n * A constant added to the rank, controlling the balance between the importance\n * of high-ranked items and the consideration given to lower-ranked items.\n * Default is 60.\n */\n c?: number;\n}\n\n/**\n * Ensemble retriever that aggregates and orders the results of\n * multiple retrievers by using weighted Reciprocal Rank Fusion.\n */\nexport class EnsembleRetriever extends BaseRetriever {\n static lc_name() {\n return \"EnsembleRetriever\";\n }\n\n lc_namespace = [\"langchain\", \"retrievers\", \"ensemble_retriever\"];\n\n retrievers: BaseRetriever[];\n\n weights: number[];\n\n c = 60;\n\n constructor(args: EnsembleRetrieverInput) {\n super(args);\n this.retrievers = args.retrievers;\n this.weights =\n args.weights ||\n new Array(args.retrievers.length).fill(1 / args.retrievers.length);\n this.c = args.c || 60;\n }\n\n async _getRelevantDocuments(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n return this._rankFusion(query, runManager);\n }\n\n async _rankFusion(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n const retrieverDocs = await Promise.all(\n this.retrievers.map((retriever, i) =>\n retriever.invoke(query, {\n callbacks: runManager?.getChild(`retriever_${i + 1}`),\n })\n )\n );\n\n const fusedDocs = await this._weightedReciprocalRank(retrieverDocs);\n return fusedDocs;\n }\n\n async _weightedReciprocalRank(docList: DocumentInterface[][]) {\n if (docList.length !== this.weights.length) {\n throw new Error(\n \"Number of retrieved document lists must be equal to the number of weights.\"\n );\n }\n\n const rrfScoreDict = docList.reduce(\n (rffScore: Record<string, number>, retrieverDoc, idx) => {\n let rank = 1;\n const weight = this.weights[idx];\n while (rank <= retrieverDoc.length) {\n const { pageContent } = retrieverDoc[rank - 1];\n if (!rffScore[pageContent]) {\n // eslint-disable-next-line no-param-reassign\n rffScore[pageContent] = 0;\n }\n // eslint-disable-next-line no-param-reassign\n rffScore[pageContent] += weight / (rank + this.c);\n rank += 1;\n }\n\n return rffScore;\n },\n {}\n );\n\n const uniqueDocs = this._uniqueUnion(docList.flat());\n const sortedDocs = Array.from(uniqueDocs).sort(\n (a, b) => rrfScoreDict[b.pageContent] - rrfScoreDict[a.pageContent]\n );\n\n return sortedDocs;\n }\n\n private _uniqueUnion(documents: Document[]): Document[] {\n const documentSet = new Set();\n const result = [];\n\n for (const doc of documents) {\n const key = doc.pageContent;\n if (!documentSet.has(key)) {\n documentSet.add(key);\n result.push(doc);\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,oBAAb,cAAuCA,0CAAc;CACnD,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAc;CAAqB;CAEhE;CAEA;CAEA,IAAI;CAEJ,YAAYC,MAA8B;EACxC,MAAM,KAAK;EACX,KAAK,aAAa,KAAK;EACvB,KAAK,UACH,KAAK,WACL,IAAI,MAAM,KAAK,WAAW,QAAQ,KAAK,IAAI,KAAK,WAAW,OAAO;EACpE,KAAK,IAAI,KAAK,KAAK;CACpB;CAED,MAAM,sBACJC,OACAC,YACA;AACA,SAAO,KAAK,YAAY,OAAO,WAAW;CAC3C;CAED,MAAM,YACJD,OACAC,YACA;EACA,MAAM,gBAAgB,MAAM,QAAQ,IAClC,KAAK,WAAW,IAAI,CAAC,WAAW,MAC9B,UAAU,OAAO,OAAO,EACtB,WAAW,YAAY,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CACtD,EAAC,CACH,CACF;EAED,MAAM,YAAY,MAAM,KAAK,wBAAwB,cAAc;AACnE,SAAO;CACR;CAED,MAAM,wBAAwBC,SAAgC;AAC5D,MAAI,QAAQ,WAAW,KAAK,QAAQ,OAClC,OAAM,IAAI,MACR;EAIJ,MAAM,eAAe,QAAQ,OAC3B,CAACC,UAAkC,cAAc,QAAQ;GACvD,IAAI,OAAO;GACX,MAAM,SAAS,KAAK,QAAQ;AAC5B,UAAO,QAAQ,aAAa,QAAQ;IAClC,MAAM,EAAE,aAAa,GAAG,aAAa,OAAO;AAC5C,QAAI,CAAC,SAAS,cAEZ,SAAS,eAAe;IAG1B,SAAS,gBAAgB,UAAU,OAAO,KAAK;IAC/C,QAAQ;GACT;AAED,UAAO;EACR,GACD,CAAE,EACH;EAED,MAAM,aAAa,KAAK,aAAa,QAAQ,MAAM,CAAC;EACpD,MAAM,aAAa,MAAM,KAAK,WAAW,CAAC,KACxC,CAAC,GAAG,MAAM,aAAa,EAAE,eAAe,aAAa,EAAE,aACxD;AAED,SAAO;CACR;CAED,AAAQ,aAAaC,WAAmC;EACtD,MAAM,8BAAc,IAAI;EACxB,MAAM,SAAS,CAAE;AAEjB,OAAK,MAAM,OAAO,WAAW;GAC3B,MAAM,MAAM,IAAI;AAChB,OAAI,CAAC,YAAY,IAAI,IAAI,EAAE;IACzB,YAAY,IAAI,IAAI;IACpB,OAAO,KAAK,IAAI;GACjB;EACF;AAED,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"ensemble.cjs","names":["BaseRetriever","args: EnsembleRetrieverInput","query: string","runManager?: CallbackManagerForRetrieverRun","docList: DocumentInterface[][]","rffScore: Record<string, number>","documents: Document[]"],"sources":["../../src/retrievers/ensemble.ts"],"sourcesContent":["import { BaseRetriever, BaseRetrieverInput } from \"@langchain/core/retrievers\";\nimport { Document, DocumentInterface } from \"@langchain/core/documents\";\nimport { CallbackManagerForRetrieverRun } from \"@langchain/core/callbacks/manager\";\n\nexport interface EnsembleRetrieverInput extends BaseRetrieverInput {\n /** A list of retrievers to ensemble. */\n retrievers: BaseRetriever[];\n /**\n * A list of weights corresponding to the retrievers. Defaults to equal\n * weighting for all retrievers.\n */\n weights?: number[];\n /**\n * A constant added to the rank, controlling the balance between the importance\n * of high-ranked items and the consideration given to lower-ranked items.\n * Default is 60.\n */\n c?: number;\n}\n\n/**\n * Ensemble retriever that aggregates and orders the results of\n * multiple retrievers by using weighted Reciprocal Rank Fusion.\n */\nexport class EnsembleRetriever extends BaseRetriever {\n static lc_name() {\n return \"EnsembleRetriever\";\n }\n\n lc_namespace = [\"langchain\", \"retrievers\", \"ensemble_retriever\"];\n\n retrievers: BaseRetriever[];\n\n weights: number[];\n\n c = 60;\n\n constructor(args: EnsembleRetrieverInput) {\n super(args);\n this.retrievers = args.retrievers;\n this.weights =\n args.weights ||\n new Array(args.retrievers.length).fill(1 / args.retrievers.length);\n this.c = args.c || 60;\n }\n\n async _getRelevantDocuments(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n return this._rankFusion(query, runManager);\n }\n\n async _rankFusion(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n const retrieverDocs = await Promise.all(\n this.retrievers.map((retriever, i) =>\n retriever.invoke(query, {\n callbacks: runManager?.getChild(`retriever_${i + 1}`),\n })\n )\n );\n\n const fusedDocs = await this._weightedReciprocalRank(retrieverDocs);\n return fusedDocs;\n }\n\n async _weightedReciprocalRank(docList: DocumentInterface[][]) {\n if (docList.length !== this.weights.length) {\n throw new Error(\n \"Number of retrieved document lists must be equal to the number of weights.\"\n );\n }\n\n const rrfScoreDict = docList.reduce(\n (rffScore: Record<string, number>, retrieverDoc, idx) => {\n let rank = 1;\n const weight = this.weights[idx];\n while (rank <= retrieverDoc.length) {\n const { pageContent } = retrieverDoc[rank - 1];\n if (!rffScore[pageContent]) {\n rffScore[pageContent] = 0;\n }\n rffScore[pageContent] += weight / (rank + this.c);\n rank += 1;\n }\n\n return rffScore;\n },\n {}\n );\n\n const uniqueDocs = this._uniqueUnion(docList.flat());\n const sortedDocs = Array.from(uniqueDocs).sort(\n (a, b) => rrfScoreDict[b.pageContent] - rrfScoreDict[a.pageContent]\n );\n\n return sortedDocs;\n }\n\n private _uniqueUnion(documents: Document[]): Document[] {\n const documentSet = new Set();\n const result = [];\n\n for (const doc of documents) {\n const key = doc.pageContent;\n if (!documentSet.has(key)) {\n documentSet.add(key);\n result.push(doc);\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,oBAAb,cAAuCA,0CAAc;CACnD,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAc;CAAqB;CAEhE;CAEA;CAEA,IAAI;CAEJ,YAAYC,MAA8B;EACxC,MAAM,KAAK;EACX,KAAK,aAAa,KAAK;EACvB,KAAK,UACH,KAAK,WACL,IAAI,MAAM,KAAK,WAAW,QAAQ,KAAK,IAAI,KAAK,WAAW,OAAO;EACpE,KAAK,IAAI,KAAK,KAAK;CACpB;CAED,MAAM,sBACJC,OACAC,YACA;AACA,SAAO,KAAK,YAAY,OAAO,WAAW;CAC3C;CAED,MAAM,YACJD,OACAC,YACA;EACA,MAAM,gBAAgB,MAAM,QAAQ,IAClC,KAAK,WAAW,IAAI,CAAC,WAAW,MAC9B,UAAU,OAAO,OAAO,EACtB,WAAW,YAAY,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CACtD,EAAC,CACH,CACF;EAED,MAAM,YAAY,MAAM,KAAK,wBAAwB,cAAc;AACnE,SAAO;CACR;CAED,MAAM,wBAAwBC,SAAgC;AAC5D,MAAI,QAAQ,WAAW,KAAK,QAAQ,OAClC,OAAM,IAAI,MACR;EAIJ,MAAM,eAAe,QAAQ,OAC3B,CAACC,UAAkC,cAAc,QAAQ;GACvD,IAAI,OAAO;GACX,MAAM,SAAS,KAAK,QAAQ;AAC5B,UAAO,QAAQ,aAAa,QAAQ;IAClC,MAAM,EAAE,aAAa,GAAG,aAAa,OAAO;AAC5C,QAAI,CAAC,SAAS,cACZ,SAAS,eAAe;IAE1B,SAAS,gBAAgB,UAAU,OAAO,KAAK;IAC/C,QAAQ;GACT;AAED,UAAO;EACR,GACD,CAAE,EACH;EAED,MAAM,aAAa,KAAK,aAAa,QAAQ,MAAM,CAAC;EACpD,MAAM,aAAa,MAAM,KAAK,WAAW,CAAC,KACxC,CAAC,GAAG,MAAM,aAAa,EAAE,eAAe,aAAa,EAAE,aACxD;AAED,SAAO;CACR;CAED,AAAQ,aAAaC,WAAmC;EACtD,MAAM,8BAAc,IAAI;EACxB,MAAM,SAAS,CAAE;AAEjB,OAAK,MAAM,OAAO,WAAW;GAC3B,MAAM,MAAM,IAAI;AAChB,OAAI,CAAC,YAAY,IAAI,IAAI,EAAE;IACzB,YAAY,IAAI,IAAI;IACpB,OAAO,KAAK,IAAI;GACjB;EACF;AAED,SAAO;CACR;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble.js","names":["args: EnsembleRetrieverInput","query: string","runManager?: CallbackManagerForRetrieverRun","docList: DocumentInterface[][]","rffScore: Record<string, number>","documents: Document[]"],"sources":["../../src/retrievers/ensemble.ts"],"sourcesContent":["import { BaseRetriever, BaseRetrieverInput } from \"@langchain/core/retrievers\";\nimport { Document, DocumentInterface } from \"@langchain/core/documents\";\nimport { CallbackManagerForRetrieverRun } from \"@langchain/core/callbacks/manager\";\n\nexport interface EnsembleRetrieverInput extends BaseRetrieverInput {\n /** A list of retrievers to ensemble. */\n retrievers: BaseRetriever[];\n /**\n * A list of weights corresponding to the retrievers. Defaults to equal\n * weighting for all retrievers.\n */\n weights?: number[];\n /**\n * A constant added to the rank, controlling the balance between the importance\n * of high-ranked items and the consideration given to lower-ranked items.\n * Default is 60.\n */\n c?: number;\n}\n\n/**\n * Ensemble retriever that aggregates and orders the results of\n * multiple retrievers by using weighted Reciprocal Rank Fusion.\n */\nexport class EnsembleRetriever extends BaseRetriever {\n static lc_name() {\n return \"EnsembleRetriever\";\n }\n\n lc_namespace = [\"langchain\", \"retrievers\", \"ensemble_retriever\"];\n\n retrievers: BaseRetriever[];\n\n weights: number[];\n\n c = 60;\n\n constructor(args: EnsembleRetrieverInput) {\n super(args);\n this.retrievers = args.retrievers;\n this.weights =\n args.weights ||\n new Array(args.retrievers.length).fill(1 / args.retrievers.length);\n this.c = args.c || 60;\n }\n\n async _getRelevantDocuments(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n return this._rankFusion(query, runManager);\n }\n\n async _rankFusion(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n const retrieverDocs = await Promise.all(\n this.retrievers.map((retriever, i) =>\n retriever.invoke(query, {\n callbacks: runManager?.getChild(`retriever_${i + 1}`),\n })\n )\n );\n\n const fusedDocs = await this._weightedReciprocalRank(retrieverDocs);\n return fusedDocs;\n }\n\n async _weightedReciprocalRank(docList: DocumentInterface[][]) {\n if (docList.length !== this.weights.length) {\n throw new Error(\n \"Number of retrieved document lists must be equal to the number of weights.\"\n );\n }\n\n const rrfScoreDict = docList.reduce(\n (rffScore: Record<string, number>, retrieverDoc, idx) => {\n let rank = 1;\n const weight = this.weights[idx];\n while (rank <= retrieverDoc.length) {\n const { pageContent } = retrieverDoc[rank - 1];\n if (!rffScore[pageContent]) {\n // eslint-disable-next-line no-param-reassign\n rffScore[pageContent] = 0;\n }\n // eslint-disable-next-line no-param-reassign\n rffScore[pageContent] += weight / (rank + this.c);\n rank += 1;\n }\n\n return rffScore;\n },\n {}\n );\n\n const uniqueDocs = this._uniqueUnion(docList.flat());\n const sortedDocs = Array.from(uniqueDocs).sort(\n (a, b) => rrfScoreDict[b.pageContent] - rrfScoreDict[a.pageContent]\n );\n\n return sortedDocs;\n }\n\n private _uniqueUnion(documents: Document[]): Document[] {\n const documentSet = new Set();\n const result = [];\n\n for (const doc of documents) {\n const key = doc.pageContent;\n if (!documentSet.has(key)) {\n documentSet.add(key);\n result.push(doc);\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,oBAAb,cAAuC,cAAc;CACnD,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAc;CAAqB;CAEhE;CAEA;CAEA,IAAI;CAEJ,YAAYA,MAA8B;EACxC,MAAM,KAAK;EACX,KAAK,aAAa,KAAK;EACvB,KAAK,UACH,KAAK,WACL,IAAI,MAAM,KAAK,WAAW,QAAQ,KAAK,IAAI,KAAK,WAAW,OAAO;EACpE,KAAK,IAAI,KAAK,KAAK;CACpB;CAED,MAAM,sBACJC,OACAC,YACA;AACA,SAAO,KAAK,YAAY,OAAO,WAAW;CAC3C;CAED,MAAM,YACJD,OACAC,YACA;EACA,MAAM,gBAAgB,MAAM,QAAQ,IAClC,KAAK,WAAW,IAAI,CAAC,WAAW,MAC9B,UAAU,OAAO,OAAO,EACtB,WAAW,YAAY,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CACtD,EAAC,CACH,CACF;EAED,MAAM,YAAY,MAAM,KAAK,wBAAwB,cAAc;AACnE,SAAO;CACR;CAED,MAAM,wBAAwBC,SAAgC;AAC5D,MAAI,QAAQ,WAAW,KAAK,QAAQ,OAClC,OAAM,IAAI,MACR;EAIJ,MAAM,eAAe,QAAQ,OAC3B,CAACC,UAAkC,cAAc,QAAQ;GACvD,IAAI,OAAO;GACX,MAAM,SAAS,KAAK,QAAQ;AAC5B,UAAO,QAAQ,aAAa,QAAQ;IAClC,MAAM,EAAE,aAAa,GAAG,aAAa,OAAO;AAC5C,QAAI,CAAC,SAAS,cAEZ,SAAS,eAAe;IAG1B,SAAS,gBAAgB,UAAU,OAAO,KAAK;IAC/C,QAAQ;GACT;AAED,UAAO;EACR,GACD,CAAE,EACH;EAED,MAAM,aAAa,KAAK,aAAa,QAAQ,MAAM,CAAC;EACpD,MAAM,aAAa,MAAM,KAAK,WAAW,CAAC,KACxC,CAAC,GAAG,MAAM,aAAa,EAAE,eAAe,aAAa,EAAE,aACxD;AAED,SAAO;CACR;CAED,AAAQ,aAAaC,WAAmC;EACtD,MAAM,8BAAc,IAAI;EACxB,MAAM,SAAS,CAAE;AAEjB,OAAK,MAAM,OAAO,WAAW;GAC3B,MAAM,MAAM,IAAI;AAChB,OAAI,CAAC,YAAY,IAAI,IAAI,EAAE;IACzB,YAAY,IAAI,IAAI;IACpB,OAAO,KAAK,IAAI;GACjB;EACF;AAED,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"ensemble.js","names":["args: EnsembleRetrieverInput","query: string","runManager?: CallbackManagerForRetrieverRun","docList: DocumentInterface[][]","rffScore: Record<string, number>","documents: Document[]"],"sources":["../../src/retrievers/ensemble.ts"],"sourcesContent":["import { BaseRetriever, BaseRetrieverInput } from \"@langchain/core/retrievers\";\nimport { Document, DocumentInterface } from \"@langchain/core/documents\";\nimport { CallbackManagerForRetrieverRun } from \"@langchain/core/callbacks/manager\";\n\nexport interface EnsembleRetrieverInput extends BaseRetrieverInput {\n /** A list of retrievers to ensemble. */\n retrievers: BaseRetriever[];\n /**\n * A list of weights corresponding to the retrievers. Defaults to equal\n * weighting for all retrievers.\n */\n weights?: number[];\n /**\n * A constant added to the rank, controlling the balance between the importance\n * of high-ranked items and the consideration given to lower-ranked items.\n * Default is 60.\n */\n c?: number;\n}\n\n/**\n * Ensemble retriever that aggregates and orders the results of\n * multiple retrievers by using weighted Reciprocal Rank Fusion.\n */\nexport class EnsembleRetriever extends BaseRetriever {\n static lc_name() {\n return \"EnsembleRetriever\";\n }\n\n lc_namespace = [\"langchain\", \"retrievers\", \"ensemble_retriever\"];\n\n retrievers: BaseRetriever[];\n\n weights: number[];\n\n c = 60;\n\n constructor(args: EnsembleRetrieverInput) {\n super(args);\n this.retrievers = args.retrievers;\n this.weights =\n args.weights ||\n new Array(args.retrievers.length).fill(1 / args.retrievers.length);\n this.c = args.c || 60;\n }\n\n async _getRelevantDocuments(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n return this._rankFusion(query, runManager);\n }\n\n async _rankFusion(\n query: string,\n runManager?: CallbackManagerForRetrieverRun\n ) {\n const retrieverDocs = await Promise.all(\n this.retrievers.map((retriever, i) =>\n retriever.invoke(query, {\n callbacks: runManager?.getChild(`retriever_${i + 1}`),\n })\n )\n );\n\n const fusedDocs = await this._weightedReciprocalRank(retrieverDocs);\n return fusedDocs;\n }\n\n async _weightedReciprocalRank(docList: DocumentInterface[][]) {\n if (docList.length !== this.weights.length) {\n throw new Error(\n \"Number of retrieved document lists must be equal to the number of weights.\"\n );\n }\n\n const rrfScoreDict = docList.reduce(\n (rffScore: Record<string, number>, retrieverDoc, idx) => {\n let rank = 1;\n const weight = this.weights[idx];\n while (rank <= retrieverDoc.length) {\n const { pageContent } = retrieverDoc[rank - 1];\n if (!rffScore[pageContent]) {\n rffScore[pageContent] = 0;\n }\n rffScore[pageContent] += weight / (rank + this.c);\n rank += 1;\n }\n\n return rffScore;\n },\n {}\n );\n\n const uniqueDocs = this._uniqueUnion(docList.flat());\n const sortedDocs = Array.from(uniqueDocs).sort(\n (a, b) => rrfScoreDict[b.pageContent] - rrfScoreDict[a.pageContent]\n );\n\n return sortedDocs;\n }\n\n private _uniqueUnion(documents: Document[]): Document[] {\n const documentSet = new Set();\n const result = [];\n\n for (const doc of documents) {\n const key = doc.pageContent;\n if (!documentSet.has(key)) {\n documentSet.add(key);\n result.push(doc);\n }\n }\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,oBAAb,cAAuC,cAAc;CACnD,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAc;CAAqB;CAEhE;CAEA;CAEA,IAAI;CAEJ,YAAYA,MAA8B;EACxC,MAAM,KAAK;EACX,KAAK,aAAa,KAAK;EACvB,KAAK,UACH,KAAK,WACL,IAAI,MAAM,KAAK,WAAW,QAAQ,KAAK,IAAI,KAAK,WAAW,OAAO;EACpE,KAAK,IAAI,KAAK,KAAK;CACpB;CAED,MAAM,sBACJC,OACAC,YACA;AACA,SAAO,KAAK,YAAY,OAAO,WAAW;CAC3C;CAED,MAAM,YACJD,OACAC,YACA;EACA,MAAM,gBAAgB,MAAM,QAAQ,IAClC,KAAK,WAAW,IAAI,CAAC,WAAW,MAC9B,UAAU,OAAO,OAAO,EACtB,WAAW,YAAY,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CACtD,EAAC,CACH,CACF;EAED,MAAM,YAAY,MAAM,KAAK,wBAAwB,cAAc;AACnE,SAAO;CACR;CAED,MAAM,wBAAwBC,SAAgC;AAC5D,MAAI,QAAQ,WAAW,KAAK,QAAQ,OAClC,OAAM,IAAI,MACR;EAIJ,MAAM,eAAe,QAAQ,OAC3B,CAACC,UAAkC,cAAc,QAAQ;GACvD,IAAI,OAAO;GACX,MAAM,SAAS,KAAK,QAAQ;AAC5B,UAAO,QAAQ,aAAa,QAAQ;IAClC,MAAM,EAAE,aAAa,GAAG,aAAa,OAAO;AAC5C,QAAI,CAAC,SAAS,cACZ,SAAS,eAAe;IAE1B,SAAS,gBAAgB,UAAU,OAAO,KAAK;IAC/C,QAAQ;GACT;AAED,UAAO;EACR,GACD,CAAE,EACH;EAED,MAAM,aAAa,KAAK,aAAa,QAAQ,MAAM,CAAC;EACpD,MAAM,aAAa,MAAM,KAAK,WAAW,CAAC,KACxC,CAAC,GAAG,MAAM,aAAa,EAAE,eAAe,aAAa,EAAE,aACxD;AAED,SAAO;CACR;CAED,AAAQ,aAAaC,WAAmC;EACtD,MAAM,8BAAc,IAAI;EACxB,MAAM,SAAS,CAAE;AAEjB,OAAK,MAAM,OAAO,WAAW;GAC3B,MAAM,MAAM,IAAI;AAChB,OAAI,CAAC,YAAY,IAAI,IAAI,EAAE;IACzB,YAAY,IAAI,IAAI;IACpB,OAAO,KAAK,IAAI;GACjB;EACF;AAED,SAAO;CACR;AACF"}
@@ -135,7 +135,7 @@ var LocalFileStore = class extends __langchain_core_stores.BaseStore {
135
135
  static async fromPath(rootPath) {
136
136
  try {
137
137
  await node_fs_promises.access(rootPath, node_fs_promises.constants.R_OK | node_fs_promises.constants.W_OK);
138
- } catch (_) {
138
+ } catch {
139
139
  try {
140
140
  await node_fs_promises.mkdir(rootPath, { recursive: true });
141
141
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"file_system.cjs","names":["BaseStore","fields: { rootPath: string }","key: string","fs","e: any","content: Uint8Array","path","keys: string[]","values: (Uint8Array | undefined)[]","keyValuePairs: [string, Uint8Array][]","prefix?: string","rootPath: string"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n try {\n await fs.writeFile(this.getFullPath(key), content);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${this.getFullPath(\n key\n )}.\\nError: ${JSON.stringify(error)}`\n );\n }\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n await Promise.all(\n keyValuePairs.map(([key, value]) => this.setFileContent(value, key))\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(keys.map((key) => fs.unlink(this.getFullPath(key))));\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles = await fs.readdir(this.rootPath);\n const allKeys = allFiles.map((file) => file.replace(\".txt\", \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch (_) {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n return new this({ rootPath });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"file_system.cjs","names":["BaseStore","fields: { rootPath: string }","key: string","fs","e: any","content: Uint8Array","path","keys: string[]","values: (Uint8Array | undefined)[]","keyValuePairs: [string, Uint8Array][]","prefix?: string","rootPath: string"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n try {\n await fs.writeFile(this.getFullPath(key), content);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${this.getFullPath(\n key\n )}.\\nError: ${JSON.stringify(error)}`\n );\n }\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n await Promise.all(\n keyValuePairs.map(([key, value]) => this.setFileContent(value, key))\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(keys.map((key) => fs.unlink(this.getFullPath(key))));\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles = await fs.readdir(this.rootPath);\n const allKeys = allFiles.map((file) => file.replace(\".txt\", \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n return new this({ rootPath });\n }\n}\n"],"mappings":"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"}
@@ -135,7 +135,7 @@ var LocalFileStore = class extends BaseStore {
135
135
  static async fromPath(rootPath) {
136
136
  try {
137
137
  await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);
138
- } catch (_) {
138
+ } catch {
139
139
  try {
140
140
  await fs.mkdir(rootPath, { recursive: true });
141
141
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"file_system.js","names":["fields: { rootPath: string }","key: string","e: any","content: Uint8Array","keys: string[]","values: (Uint8Array | undefined)[]","keyValuePairs: [string, Uint8Array][]","prefix?: string","rootPath: string"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n try {\n await fs.writeFile(this.getFullPath(key), content);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${this.getFullPath(\n key\n )}.\\nError: ${JSON.stringify(error)}`\n );\n }\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n await Promise.all(\n keyValuePairs.map(([key, value]) => this.setFileContent(value, key))\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(keys.map((key) => fs.unlink(this.getFullPath(key))));\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles = await fs.readdir(this.rootPath);\n const allKeys = allFiles.map((file) => file.replace(\".txt\", \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch (_) {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n return new this({ rootPath });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"file_system.js","names":["fields: { rootPath: string }","key: string","e: any","content: Uint8Array","keys: string[]","values: (Uint8Array | undefined)[]","keyValuePairs: [string, Uint8Array][]","prefix?: string","rootPath: string"],"sources":["../../src/storage/file_system.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { BaseStore } from \"@langchain/core/stores\";\n\n/**\n * File system implementation of the BaseStore using a dictionary. Used for\n * storing key-value pairs in the file system.\n * @example\n * ```typescript\n * const store = await LocalFileStore.fromPath(\"./messages\");\n * await store.mset(\n * Array.from({ length: 5 }).map((_, index) => [\n * `message:id:${index}`,\n * new TextEncoder().encode(\n * JSON.stringify(\n * index % 2 === 0\n * ? new AIMessage(\"ai stuff...\")\n * : new HumanMessage(\"human stuff...\"),\n * ),\n * ),\n * ]),\n * );\n * const retrievedMessages = await store.mget([\"message:id:0\", \"message:id:1\"]);\n * console.log(retrievedMessages.map((v) => new TextDecoder().decode(v)));\n * for await (const key of store.yieldKeys(\"message:id:\")) {\n * await store.mdelete([key]);\n * }\n * ```\n *\n * @security **Security Notice** This file store\n * can alter any text file in the provided directory and any subfolders.\n * Make sure that the path you specify when initializing the store is free\n * of other files.\n */\nexport class LocalFileStore extends BaseStore<string, Uint8Array> {\n lc_namespace = [\"langchain\", \"storage\"];\n\n rootPath: string;\n\n constructor(fields: { rootPath: string }) {\n super(fields);\n this.rootPath = fields.rootPath;\n }\n\n /**\n * Read and parse the file at the given path.\n * @param key The key to read the file for.\n * @returns Promise that resolves to the parsed file content.\n */\n private async getParsedFile(key: string): Promise<Uint8Array | undefined> {\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_\\-:.]+$/.test(key)) {\n throw new Error(\n \"Invalid key. Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed.\"\n );\n }\n try {\n const fileContent = await fs.readFile(this.getFullPath(key));\n if (!fileContent) {\n return undefined;\n }\n return fileContent;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n // File does not exist yet.\n if (\"code\" in e && e.code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Error reading and parsing file at path: ${\n this.rootPath\n }.\\nError: ${JSON.stringify(e)}`\n );\n }\n }\n\n /**\n * Writes the given key-value pairs to the file at the given path.\n * @param fileContent An object with the key-value pairs to be written to the file.\n */\n private async setFileContent(content: Uint8Array, key: string) {\n try {\n await fs.writeFile(this.getFullPath(key), content);\n } catch (error) {\n throw new Error(\n `Error writing file at path: ${this.getFullPath(\n key\n )}.\\nError: ${JSON.stringify(error)}`\n );\n }\n }\n\n /**\n * Returns the full path of the file where the value of the given key is stored.\n * @param key the key to get the full path for\n */\n private getFullPath(key: string): string {\n try {\n const keyAsTxtFile = `${key}.txt`;\n\n // Validate the key to prevent path traversal\n if (!/^[a-zA-Z0-9_.\\-/]+$/.test(key)) {\n throw new Error(`Invalid characters in key: ${key}`);\n }\n\n const fullPath = path.resolve(this.rootPath, keyAsTxtFile);\n const commonPath = path.resolve(this.rootPath);\n\n if (!fullPath.startsWith(commonPath)) {\n throw new Error(\n `Invalid key: ${key}. Key should be relative to the root path. ` +\n `Root path: ${this.rootPath}, Full path: ${fullPath}`\n );\n }\n\n return fullPath;\n } catch (e) {\n throw new Error(\n `Error getting full path for key: ${key}.\\nError: ${String(e)}`\n );\n }\n }\n\n /**\n * Retrieves the values associated with the given keys from the store.\n * @param keys Keys to retrieve values for.\n * @returns Array of values associated with the given keys.\n */\n async mget(keys: string[]) {\n const values: (Uint8Array | undefined)[] = [];\n for (const key of keys) {\n const fileContent = await this.getParsedFile(key);\n values.push(fileContent);\n }\n return values;\n }\n\n /**\n * Sets the values for the given keys in the store.\n * @param keyValuePairs Array of key-value pairs to set in the store.\n * @returns Promise that resolves when all key-value pairs have been set.\n */\n async mset(keyValuePairs: [string, Uint8Array][]): Promise<void> {\n await Promise.all(\n keyValuePairs.map(([key, value]) => this.setFileContent(value, key))\n );\n }\n\n /**\n * Deletes the given keys and their associated values from the store.\n * @param keys Keys to delete from the store.\n * @returns Promise that resolves when all keys have been deleted.\n */\n async mdelete(keys: string[]): Promise<void> {\n await Promise.all(keys.map((key) => fs.unlink(this.getFullPath(key))));\n }\n\n /**\n * Asynchronous generator that yields keys from the store. If a prefix is\n * provided, it only yields keys that start with the prefix.\n * @param prefix Optional prefix to filter keys.\n * @returns AsyncGenerator that yields keys from the store.\n */\n async *yieldKeys(prefix?: string): AsyncGenerator<string> {\n const allFiles = await fs.readdir(this.rootPath);\n const allKeys = allFiles.map((file) => file.replace(\".txt\", \"\"));\n for (const key of allKeys) {\n if (prefix === undefined || key.startsWith(prefix)) {\n yield key;\n }\n }\n }\n\n /**\n * Static method for initializing the class.\n * Preforms a check to see if the directory exists, and if not, creates it.\n * @param path Path to the directory.\n * @returns Promise that resolves to an instance of the class.\n */\n static async fromPath(rootPath: string): Promise<LocalFileStore> {\n try {\n // Verifies the directory exists at the provided path, and that it is readable and writable.\n await fs.access(rootPath, fs.constants.R_OK | fs.constants.W_OK);\n } catch {\n try {\n // Directory does not exist, create it.\n await fs.mkdir(rootPath, { recursive: true });\n } catch (error) {\n throw new Error(\n `An error occurred creating directory at: ${rootPath}.\\nError: ${JSON.stringify(\n error\n )}`\n );\n }\n }\n\n return new this({ rootPath });\n }\n}\n"],"mappings":"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"}
package/dist/tools/fs.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const __langchain_core_tools = require_rolldown_runtime.__toESM(require("@langchain/core/tools"));
3
- const zod = require_rolldown_runtime.__toESM(require("zod"));
3
+ const zod_v3 = require_rolldown_runtime.__toESM(require("zod/v3"));
4
4
 
5
5
  //#region src/tools/fs.ts
6
- const readSchema = zod.z.object({ file_path: zod.z.string().describe("name of file") });
6
+ const readSchema = zod_v3.z.object({ file_path: zod_v3.z.string().describe("name of file") });
7
7
  /**
8
8
  * Class for reading files from the disk. Extends the StructuredTool
9
9
  * class.
@@ -24,9 +24,9 @@ var ReadFileTool = class extends __langchain_core_tools.StructuredTool {
24
24
  return await this.store.readFile(file_path);
25
25
  }
26
26
  };
27
- const writeSchema = zod.z.object({
28
- file_path: zod.z.string().describe("name of file"),
29
- text: zod.z.string().describe("text to write to file")
27
+ const writeSchema = zod_v3.z.object({
28
+ file_path: zod_v3.z.string().describe("name of file"),
29
+ text: zod_v3.z.string().describe("text to write to file")
30
30
  });
31
31
  /**
32
32
  * Class for writing data to files on the disk. Extends the StructuredTool
@@ -1 +1 @@
1
- {"version":3,"file":"fs.cjs","names":["z","StructuredTool"],"sources":["../../src/tools/fs.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst readSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n});\ntype ReadToolSchema = typeof readSchema;\n\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport class ReadFileTool extends StructuredTool {\n static lc_name() {\n return \"ReadFileTool\";\n }\n\n schema = readSchema;\n\n name = \"read_file\";\n\n description = \"Read file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store }: ReadFileParams) {\n super(...arguments);\n\n this.store = store;\n }\n\n async _call({ file_path }: InferInteropZodOutput<ReadToolSchema>) {\n return await this.store.readFile(file_path);\n }\n}\n\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst writeSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n text: z.string().describe(\"text to write to file\"),\n});\ntype WriteToolSchema = typeof writeSchema;\n\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport class WriteFileTool extends StructuredTool {\n static lc_name() {\n return \"WriteFileTool\";\n }\n\n schema = writeSchema;\n\n name = \"write_file\";\n\n description = \"Write file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store, ...rest }: WriteFileParams) {\n super(rest);\n\n this.store = store;\n }\n\n async _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>) {\n await this.store.writeFile(file_path, text);\n return \"File written to successfully.\";\n }\n}\n"],"mappings":";;;;;AAYA,MAAM,aAAaA,MAAE,OAAO,EAC1B,WAAWA,MAAE,QAAQ,CAAC,SAAS,eAAe,CAC/C,EAAC;;;;;AAOF,IAAa,eAAb,cAAkCC,sCAAe;CAC/C,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,OAAuB,EAAE;EACrC,MAAM,GAAG,UAAU;EAEnB,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAkD,EAAE;AAChE,SAAO,MAAM,KAAK,MAAM,SAAS,UAAU;CAC5C;AACF;AASD,MAAM,cAAcD,MAAE,OAAO;CAC3B,WAAWA,MAAE,QAAQ,CAAC,SAAS,eAAe;CAC9C,MAAMA,MAAE,QAAQ,CAAC,SAAS,wBAAwB;AACnD,EAAC;;;;;AAOF,IAAa,gBAAb,cAAmCC,sCAAe;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,MAAO,GAAG,MAAuB,EAAE;EAC/C,MAAM,KAAK;EAEX,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAW,MAA8C,EAAE;EACvE,MAAM,KAAK,MAAM,UAAU,WAAW,KAAK;AAC3C,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"fs.cjs","names":["z","StructuredTool"],"sources":["../../src/tools/fs.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst readSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n});\ntype ReadToolSchema = typeof readSchema;\n\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport class ReadFileTool extends StructuredTool {\n static lc_name() {\n return \"ReadFileTool\";\n }\n\n schema = readSchema;\n\n name = \"read_file\";\n\n description = \"Read file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store }: ReadFileParams) {\n super(...arguments);\n\n this.store = store;\n }\n\n async _call({ file_path }: InferInteropZodOutput<ReadToolSchema>) {\n return await this.store.readFile(file_path);\n }\n}\n\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst writeSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n text: z.string().describe(\"text to write to file\"),\n});\ntype WriteToolSchema = typeof writeSchema;\n\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport class WriteFileTool extends StructuredTool {\n static lc_name() {\n return \"WriteFileTool\";\n }\n\n schema = writeSchema;\n\n name = \"write_file\";\n\n description = \"Write file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store, ...rest }: WriteFileParams) {\n super(rest);\n\n this.store = store;\n }\n\n async _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>) {\n await this.store.writeFile(file_path, text);\n return \"File written to successfully.\";\n }\n}\n"],"mappings":";;;;;AAYA,MAAM,aAAaA,SAAE,OAAO,EAC1B,WAAWA,SAAE,QAAQ,CAAC,SAAS,eAAe,CAC/C,EAAC;;;;;AAOF,IAAa,eAAb,cAAkCC,sCAAe;CAC/C,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,OAAuB,EAAE;EACrC,MAAM,GAAG,UAAU;EAEnB,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAkD,EAAE;AAChE,SAAO,MAAM,KAAK,MAAM,SAAS,UAAU;CAC5C;AACF;AASD,MAAM,cAAcD,SAAE,OAAO;CAC3B,WAAWA,SAAE,QAAQ,CAAC,SAAS,eAAe;CAC9C,MAAMA,SAAE,QAAQ,CAAC,SAAS,wBAAwB;AACnD,EAAC;;;;;AAOF,IAAa,gBAAb,cAAmCC,sCAAe;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,MAAO,GAAG,MAAuB,EAAE;EAC/C,MAAM,KAAK;EAEX,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAW,MAA8C,EAAE;EACvE,MAAM,KAAK,MAAM,UAAU,WAAW,KAAK;AAC3C,SAAO;CACR;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { BaseFileStore } from "../stores/file/base.cjs";
2
- import { z } from "zod";
3
2
  import { InferInteropZodOutput } from "@langchain/core/utils/types";
4
3
  import { StructuredTool, ToolParams } from "@langchain/core/tools";
4
+ import { z } from "zod/v3";
5
5
 
6
6
  //#region src/tools/fs.d.ts
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.cts","names":["z","StructuredTool","ToolParams","InferInteropZodOutput","BaseFileStore","ReadFileParams","readSchema","ZodString","ZodTypeAny","ZodObject","ReadToolSchema","ReadFileTool","store","file_path","Promise","WriteFileParams","writeSchema","WriteToolSchema","WriteFileTool","text"],"sources":["../../src/tools/fs.d.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const readSchema: z.ZodObject<{\n file_path: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n}, {\n file_path: string;\n}>;\ntype ReadToolSchema = typeof readSchema;\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport declare class ReadFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n }, {\n file_path: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store }: ReadFileParams);\n _call({ file_path }: InferInteropZodOutput<ReadToolSchema>): Promise<string>;\n}\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const writeSchema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n}, {\n file_path: string;\n text: string;\n}>;\ntype WriteToolSchema = typeof writeSchema;\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport declare class WriteFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n }, {\n file_path: string;\n text: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store, ...rest }: WriteFileParams);\n _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>): Promise<string>;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGuD;UAI7CK,cAAAA,SAAuBH,UAAT,CAAA;EAAA,KACbE,EAAAA,aAAAA;;AADgC,cAG7BE,UAH6B,EAGjBN,CAAAA,CAAES,SAHe,CAAA;EAG7BH,SAAAA,EACCN,CAAAA,CAAEO,SAKf;CAAA,EAAA,OAAA,EAJUP,CAAAA,CAAEQ,UAIZ,EAAA;EAAA,SALeD,EAAAA,MAAAA;CAAS,EAAA;EACF,SAFIE,EAAAA,MAAAA;AAAS,CAAA,CAAA;AAAA,KAOhCC,cAAAA,GAAc,OAAUJ,UAAAA;AAK7B;;;;AAEYN,cAFSW,YAAAA,SAAqBV,cAAAA,CAE5BQ;EAAS,OASZL,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAa,MACNQ,EAVNZ,CAAAA,CAAES,SAUIG,CAAAA;IAASP,SAAAA,EATRL,CAAAA,CAAEO,SASMF;EAAc,CAAA,EAC7BQ,OAAAA,EATIb,CAAAA,CAAEQ,UASNK,EAAAA;IAAmCH,SAAAA,EAAAA,MAAAA;EAAc,CAAA,EAApCP;IAAwCW,SAAAA,EAAAA,MAAAA;EAAO,CAAA,CAAA;EAbhB,IAAA,EAAA,MAAA;EAkB9CC,WAAAA,EAAAA,MAAe;EAAA,KAAA,EAPdX,aAOc;EAAA,WACdA,CAAAA;IAAAA;EAAAA,CAAAA,EAPgBC,cAOhBD;EAAa,KADUF,CAAAA;IAAAA;EAAAA,CAAAA,EALTC,qBAKSD,CALaQ,cAKbR,CAAAA,CAAAA,EAL+BY,OAK/BZ,CAAAA,MAAAA,CAAAA;AAAU;AAAA;;;UAAlCa,eAAAA,SAAwBb,UAKtBK,CAAAA;EAAS,KACPC,EALHJ,aAKGI;;AAHwB,cAAxBQ,WAAwB,EAAXhB,CAAAA,CAAES,SAAS,CAAA;EAUjCQ,SAAAA,EATUjB,CAAAA,CAAEO,SASG;EAKCW,IAAAA,EAbXlB,CAAAA,CAAEO,SAasB;CAAA,EAAA,OAAA,EAZtBP,CAAAA,CAAEQ,UAYoB,EAAA;EAAA,SAGbD,EAAAA,MAAAA;EAAS,IAChBP,EAAEO,MAAAA;CAAS,EAAA;EACG,SAHdE,EAAAA,MAAAA;EAAS,IAYZL,EAAAA,MAAAA;CAAa,CAAA;KAnBnBa,eAAAA,GAoB+BF,OApBNC,WAoBMD;;;;;AACoCD,cAhBnDI,aAAAA,SAAsBjB,cAAAA,CAgB6Ba;EAAO,OAhBpCb,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAc,MAAA,EAE7CD,CAAAA,CAAES,SAF2C,CAAA;eAGtCT,CAAAA,CAAEO;UACPP,CAAAA,CAAEO;cACAP,CAAAA,CAAEQ;;;;;;;;;SASPJ;;;;KACyBW;;;;KACLZ,sBAAsBc,mBAAmBH"}
1
+ {"version":3,"file":"fs.d.cts","names":["z","StructuredTool","ToolParams","InferInteropZodOutput","BaseFileStore","ReadFileParams","readSchema","ZodString","ZodTypeAny","ZodObject","ReadToolSchema","ReadFileTool","store","file_path","Promise","WriteFileParams","writeSchema","WriteToolSchema","WriteFileTool","text"],"sources":["../../src/tools/fs.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const readSchema: z.ZodObject<{\n file_path: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n}, {\n file_path: string;\n}>;\ntype ReadToolSchema = typeof readSchema;\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport declare class ReadFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n }, {\n file_path: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store }: ReadFileParams);\n _call({ file_path }: InferInteropZodOutput<ReadToolSchema>): Promise<string>;\n}\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const writeSchema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n}, {\n file_path: string;\n text: string;\n}>;\ntype WriteToolSchema = typeof writeSchema;\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport declare class WriteFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n }, {\n file_path: string;\n text: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store, ...rest }: WriteFileParams);\n _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>): Promise<string>;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGuD;UAI7CK,cAAAA,SAAuBH,UAAT,CAAA;EAAA,KACbE,EAAAA,aAAAA;;AADgC,cAG7BE,UAH6B,EAGjBN,CAAAA,CAAES,SAHe,CAAA;EAG7BH,SAAAA,EACCN,CAAAA,CAAEO,SAKf;CAAA,EAAA,OAAA,EAJUP,CAAAA,CAAEQ,UAIZ,EAAA;EAAA,SALeD,EAAAA,MAAAA;CAAS,EAAA;EACF,SAFIE,EAAAA,MAAAA;AAAS,CAAA,CAAA;AAAA,KAOhCC,cAAAA,GAAc,OAAUJ,UAAAA;AAK7B;;;;AAEYN,cAFSW,YAAAA,SAAqBV,cAAAA,CAE5BQ;EAAS,OASZL,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAa,MACNQ,EAVNZ,CAAAA,CAAES,SAUIG,CAAAA;IAASP,SAAAA,EATRL,CAAAA,CAAEO,SASMF;EAAc,CAAA,EAC7BQ,OAAAA,EATIb,CAAAA,CAAEQ,UASNK,EAAAA;IAAmCH,SAAAA,EAAAA,MAAAA;EAAc,CAAA,EAApCP;IAAwCW,SAAAA,EAAAA,MAAAA;EAAO,CAAA,CAAA;EAbhB,IAAA,EAAA,MAAA;EAkB9CC,WAAAA,EAAAA,MAAe;EAAA,KAAA,EAPdX,aAOc;EAAA,WACdA,CAAAA;IAAAA;EAAAA,CAAAA,EAPgBC,cAOhBD;EAAa,KADUF,CAAAA;IAAAA;EAAAA,CAAAA,EALTC,qBAKSD,CALaQ,cAKbR,CAAAA,CAAAA,EAL+BY,OAK/BZ,CAAAA,MAAAA,CAAAA;AAAU;AAAA;;;UAAlCa,eAAAA,SAAwBb,UAKtBK,CAAAA;EAAS,KACPC,EALHJ,aAKGI;;AAHwB,cAAxBQ,WAAwB,EAAXhB,CAAAA,CAAES,SAAS,CAAA;EAUjCQ,SAAAA,EATUjB,CAAAA,CAAEO,SASG;EAKCW,IAAAA,EAbXlB,CAAAA,CAAEO,SAasB;CAAA,EAAA,OAAA,EAZtBP,CAAAA,CAAEQ,UAYoB,EAAA;EAAA,SAGbD,EAAAA,MAAAA;EAAS,IAChBP,EAAEO,MAAAA;CAAS,EAAA;EACG,SAHdE,EAAAA,MAAAA;EAAS,IAYZL,EAAAA,MAAAA;CAAa,CAAA;KAnBnBa,eAAAA,GAoB+BF,OApBNC,WAoBMD;;;;;AACoCD,cAhBnDI,aAAAA,SAAsBjB,cAAAA,CAgB6Ba;EAAO,OAhBpCb,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAc,MAAA,EAE7CD,CAAAA,CAAES,SAF2C,CAAA;eAGtCT,CAAAA,CAAEO;UACPP,CAAAA,CAAEO;cACAP,CAAAA,CAAEQ;;;;;;;;;SASPJ;;;;KACyBW;;;;KACLZ,sBAAsBc,mBAAmBH"}
@@ -1,7 +1,7 @@
1
1
  import { BaseFileStore } from "../stores/file/base.js";
2
2
  import { StructuredTool, ToolParams } from "@langchain/core/tools";
3
3
  import { InferInteropZodOutput } from "@langchain/core/utils/types";
4
- import { z } from "zod";
4
+ import { z } from "zod/v3";
5
5
 
6
6
  //#region src/tools/fs.d.ts
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","names":["z","StructuredTool","ToolParams","InferInteropZodOutput","BaseFileStore","ReadFileParams","readSchema","ZodString","ZodTypeAny","ZodObject","ReadToolSchema","ReadFileTool","store","file_path","Promise","WriteFileParams","writeSchema","WriteToolSchema","WriteFileTool","text"],"sources":["../../src/tools/fs.d.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const readSchema: z.ZodObject<{\n file_path: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n}, {\n file_path: string;\n}>;\ntype ReadToolSchema = typeof readSchema;\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport declare class ReadFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n }, {\n file_path: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store }: ReadFileParams);\n _call({ file_path }: InferInteropZodOutput<ReadToolSchema>): Promise<string>;\n}\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const writeSchema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n}, {\n file_path: string;\n text: string;\n}>;\ntype WriteToolSchema = typeof writeSchema;\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport declare class WriteFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n }, {\n file_path: string;\n text: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store, ...rest }: WriteFileParams);\n _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>): Promise<string>;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGuD;UAI7CK,cAAAA,SAAuBH,UAAT,CAAA;EAAA,KACbE,EAAAA,aAAAA;;AADgC,cAG7BE,UAH6B,EAGjBN,CAAAA,CAAES,SAHe,CAAA;EAG7BH,SAAAA,EACCN,CAAAA,CAAEO,SAKf;CAAA,EAAA,OAAA,EAJUP,CAAAA,CAAEQ,UAIZ,EAAA;EAAA,SALeD,EAAAA,MAAAA;CAAS,EAAA;EACF,SAFIE,EAAAA,MAAAA;AAAS,CAAA,CAAA;AAAA,KAOhCC,cAAAA,GAAc,OAAUJ,UAAAA;AAK7B;;;;AAEYN,cAFSW,YAAAA,SAAqBV,cAAAA,CAE5BQ;EAAS,OASZL,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAa,MACNQ,EAVNZ,CAAAA,CAAES,SAUIG,CAAAA;IAASP,SAAAA,EATRL,CAAAA,CAAEO,SASMF;EAAc,CAAA,EAC7BQ,OAAAA,EATIb,CAAAA,CAAEQ,UASNK,EAAAA;IAAmCH,SAAAA,EAAAA,MAAAA;EAAc,CAAA,EAApCP;IAAwCW,SAAAA,EAAAA,MAAAA;EAAO,CAAA,CAAA;EAbhB,IAAA,EAAA,MAAA;EAkB9CC,WAAAA,EAAAA,MAAe;EAAA,KAAA,EAPdX,aAOc;EAAA,WACdA,CAAAA;IAAAA;EAAAA,CAAAA,EAPgBC,cAOhBD;EAAa,KADUF,CAAAA;IAAAA;EAAAA,CAAAA,EALTC,qBAKSD,CALaQ,cAKbR,CAAAA,CAAAA,EAL+BY,OAK/BZ,CAAAA,MAAAA,CAAAA;AAAU;AAAA;;;UAAlCa,eAAAA,SAAwBb,UAKtBK,CAAAA;EAAS,KACPC,EALHJ,aAKGI;;AAHwB,cAAxBQ,WAAwB,EAAXhB,CAAAA,CAAES,SAAS,CAAA;EAUjCQ,SAAAA,EATUjB,CAAAA,CAAEO,SASG;EAKCW,IAAAA,EAbXlB,CAAAA,CAAEO,SAasB;CAAA,EAAA,OAAA,EAZtBP,CAAAA,CAAEQ,UAYoB,EAAA;EAAA,SAGbD,EAAAA,MAAAA;EAAS,IAChBP,EAAEO,MAAAA;CAAS,EAAA;EACG,SAHdE,EAAAA,MAAAA;EAAS,IAYZL,EAAAA,MAAAA;CAAa,CAAA;KAnBnBa,eAAAA,GAoB+BF,OApBNC,WAoBMD;;;;;AACoCD,cAhBnDI,aAAAA,SAAsBjB,cAAAA,CAgB6Ba;EAAO,OAhBpCb,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAc,MAAA,EAE7CD,CAAAA,CAAES,SAF2C,CAAA;eAGtCT,CAAAA,CAAEO;UACPP,CAAAA,CAAEO;cACAP,CAAAA,CAAEQ;;;;;;;;;SASPJ;;;;KACyBW;;;;KACLZ,sBAAsBc,mBAAmBH"}
1
+ {"version":3,"file":"fs.d.ts","names":["z","StructuredTool","ToolParams","InferInteropZodOutput","BaseFileStore","ReadFileParams","readSchema","ZodString","ZodTypeAny","ZodObject","ReadToolSchema","ReadFileTool","store","file_path","Promise","WriteFileParams","writeSchema","WriteToolSchema","WriteFileTool","text"],"sources":["../../src/tools/fs.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const readSchema: z.ZodObject<{\n file_path: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n}, {\n file_path: string;\n}>;\ntype ReadToolSchema = typeof readSchema;\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport declare class ReadFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n }, {\n file_path: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store }: ReadFileParams);\n _call({ file_path }: InferInteropZodOutput<ReadToolSchema>): Promise<string>;\n}\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\ndeclare const writeSchema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n}, {\n file_path: string;\n text: string;\n}>;\ntype WriteToolSchema = typeof writeSchema;\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport declare class WriteFileTool extends StructuredTool {\n static lc_name(): string;\n schema: z.ZodObject<{\n file_path: z.ZodString;\n text: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n file_path: string;\n text: string;\n }, {\n file_path: string;\n text: string;\n }>;\n name: string;\n description: string;\n store: BaseFileStore;\n constructor({ store, ...rest }: WriteFileParams);\n _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>): Promise<string>;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGuD;UAI7CK,cAAAA,SAAuBH,UAAT,CAAA;EAAA,KACbE,EAAAA,aAAAA;;AADgC,cAG7BE,UAH6B,EAGjBN,CAAAA,CAAES,SAHe,CAAA;EAG7BH,SAAAA,EACCN,CAAAA,CAAEO,SAKf;CAAA,EAAA,OAAA,EAJUP,CAAAA,CAAEQ,UAIZ,EAAA;EAAA,SALeD,EAAAA,MAAAA;CAAS,EAAA;EACF,SAFIE,EAAAA,MAAAA;AAAS,CAAA,CAAA;AAAA,KAOhCC,cAAAA,GAAc,OAAUJ,UAAAA;AAK7B;;;;AAEYN,cAFSW,YAAAA,SAAqBV,cAAAA,CAE5BQ;EAAS,OASZL,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAa,MACNQ,EAVNZ,CAAAA,CAAES,SAUIG,CAAAA;IAASP,SAAAA,EATRL,CAAAA,CAAEO,SASMF;EAAc,CAAA,EAC7BQ,OAAAA,EATIb,CAAAA,CAAEQ,UASNK,EAAAA;IAAmCH,SAAAA,EAAAA,MAAAA;EAAc,CAAA,EAApCP;IAAwCW,SAAAA,EAAAA,MAAAA;EAAO,CAAA,CAAA;EAbhB,IAAA,EAAA,MAAA;EAkB9CC,WAAAA,EAAAA,MAAe;EAAA,KAAA,EAPdX,aAOc;EAAA,WACdA,CAAAA;IAAAA;EAAAA,CAAAA,EAPgBC,cAOhBD;EAAa,KADUF,CAAAA;IAAAA;EAAAA,CAAAA,EALTC,qBAKSD,CALaQ,cAKbR,CAAAA,CAAAA,EAL+BY,OAK/BZ,CAAAA,MAAAA,CAAAA;AAAU;AAAA;;;UAAlCa,eAAAA,SAAwBb,UAKtBK,CAAAA;EAAS,KACPC,EALHJ,aAKGI;;AAHwB,cAAxBQ,WAAwB,EAAXhB,CAAAA,CAAES,SAAS,CAAA;EAUjCQ,SAAAA,EATUjB,CAAAA,CAAEO,SASG;EAKCW,IAAAA,EAbXlB,CAAAA,CAAEO,SAasB;CAAA,EAAA,OAAA,EAZtBP,CAAAA,CAAEQ,UAYoB,EAAA;EAAA,SAGbD,EAAAA,MAAAA;EAAS,IAChBP,EAAEO,MAAAA;CAAS,EAAA;EACG,SAHdE,EAAAA,MAAAA;EAAS,IAYZL,EAAAA,MAAAA;CAAa,CAAA;KAnBnBa,eAAAA,GAoB+BF,OApBNC,WAoBMD;;;;;AACoCD,cAhBnDI,aAAAA,SAAsBjB,cAAAA,CAgB6Ba;EAAO,OAhBpCb,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAc,MAAA,EAE7CD,CAAAA,CAAES,SAF2C,CAAA;eAGtCT,CAAAA,CAAEO;UACPP,CAAAA,CAAEO;cACAP,CAAAA,CAAEQ;;;;;;;;;SASPJ;;;;KACyBW;;;;KACLZ,sBAAsBc,mBAAmBH"}
package/dist/tools/fs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { StructuredTool } from "@langchain/core/tools";
2
- import { z } from "zod";
2
+ import { z } from "zod/v3";
3
3
 
4
4
  //#region src/tools/fs.ts
5
5
  const readSchema = z.object({ file_path: z.string().describe("name of file") });
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","names":[],"sources":["../../src/tools/fs.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst readSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n});\ntype ReadToolSchema = typeof readSchema;\n\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport class ReadFileTool extends StructuredTool {\n static lc_name() {\n return \"ReadFileTool\";\n }\n\n schema = readSchema;\n\n name = \"read_file\";\n\n description = \"Read file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store }: ReadFileParams) {\n super(...arguments);\n\n this.store = store;\n }\n\n async _call({ file_path }: InferInteropZodOutput<ReadToolSchema>) {\n return await this.store.readFile(file_path);\n }\n}\n\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst writeSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n text: z.string().describe(\"text to write to file\"),\n});\ntype WriteToolSchema = typeof writeSchema;\n\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport class WriteFileTool extends StructuredTool {\n static lc_name() {\n return \"WriteFileTool\";\n }\n\n schema = writeSchema;\n\n name = \"write_file\";\n\n description = \"Write file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store, ...rest }: WriteFileParams) {\n super(rest);\n\n this.store = store;\n }\n\n async _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>) {\n await this.store.writeFile(file_path, text);\n return \"File written to successfully.\";\n }\n}\n"],"mappings":";;;;AAYA,MAAM,aAAa,EAAE,OAAO,EAC1B,WAAW,EAAE,QAAQ,CAAC,SAAS,eAAe,CAC/C,EAAC;;;;;AAOF,IAAa,eAAb,cAAkC,eAAe;CAC/C,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,OAAuB,EAAE;EACrC,MAAM,GAAG,UAAU;EAEnB,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAkD,EAAE;AAChE,SAAO,MAAM,KAAK,MAAM,SAAS,UAAU;CAC5C;AACF;AASD,MAAM,cAAc,EAAE,OAAO;CAC3B,WAAW,EAAE,QAAQ,CAAC,SAAS,eAAe;CAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,wBAAwB;AACnD,EAAC;;;;;AAOF,IAAa,gBAAb,cAAmC,eAAe;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,MAAO,GAAG,MAAuB,EAAE;EAC/C,MAAM,KAAK;EAEX,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAW,MAA8C,EAAE;EACvE,MAAM,KAAK,MAAM,UAAU,WAAW,KAAK;AAC3C,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"fs.js","names":[],"sources":["../../src/tools/fs.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { StructuredTool, ToolParams } from \"@langchain/core/tools\";\nimport { InferInteropZodOutput } from \"@langchain/core/utils/types\";\nimport { BaseFileStore } from \"../stores/file/base.js\";\n\n/**\n * Interface for parameters required by the ReadFileTool class.\n */\ninterface ReadFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst readSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n});\ntype ReadToolSchema = typeof readSchema;\n\n/**\n * Class for reading files from the disk. Extends the StructuredTool\n * class.\n */\nexport class ReadFileTool extends StructuredTool {\n static lc_name() {\n return \"ReadFileTool\";\n }\n\n schema = readSchema;\n\n name = \"read_file\";\n\n description = \"Read file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store }: ReadFileParams) {\n super(...arguments);\n\n this.store = store;\n }\n\n async _call({ file_path }: InferInteropZodOutput<ReadToolSchema>) {\n return await this.store.readFile(file_path);\n }\n}\n\n/**\n * Interface for parameters required by the WriteFileTool class.\n */\ninterface WriteFileParams extends ToolParams {\n store: BaseFileStore;\n}\n\nconst writeSchema = z.object({\n file_path: z.string().describe(\"name of file\"),\n text: z.string().describe(\"text to write to file\"),\n});\ntype WriteToolSchema = typeof writeSchema;\n\n/**\n * Class for writing data to files on the disk. Extends the StructuredTool\n * class.\n */\nexport class WriteFileTool extends StructuredTool {\n static lc_name() {\n return \"WriteFileTool\";\n }\n\n schema = writeSchema;\n\n name = \"write_file\";\n\n description = \"Write file from disk\";\n\n store: BaseFileStore;\n\n constructor({ store, ...rest }: WriteFileParams) {\n super(rest);\n\n this.store = store;\n }\n\n async _call({ file_path, text }: InferInteropZodOutput<WriteToolSchema>) {\n await this.store.writeFile(file_path, text);\n return \"File written to successfully.\";\n }\n}\n"],"mappings":";;;;AAYA,MAAM,aAAa,EAAE,OAAO,EAC1B,WAAW,EAAE,QAAQ,CAAC,SAAS,eAAe,CAC/C,EAAC;;;;;AAOF,IAAa,eAAb,cAAkC,eAAe;CAC/C,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,OAAuB,EAAE;EACrC,MAAM,GAAG,UAAU;EAEnB,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAkD,EAAE;AAChE,SAAO,MAAM,KAAK,MAAM,SAAS,UAAU;CAC5C;AACF;AASD,MAAM,cAAc,EAAE,OAAO;CAC3B,WAAW,EAAE,QAAQ,CAAC,SAAS,eAAe;CAC9C,MAAM,EAAE,QAAQ,CAAC,SAAS,wBAAwB;AACnD,EAAC;;;;;AAOF,IAAa,gBAAb,cAAmC,eAAe;CAChD,OAAO,UAAU;AACf,SAAO;CACR;CAED,SAAS;CAET,OAAO;CAEP,cAAc;CAEd;CAEA,YAAY,EAAE,MAAO,GAAG,MAAuB,EAAE;EAC/C,MAAM,KAAK;EAEX,KAAK,QAAQ;CACd;CAED,MAAM,MAAM,EAAE,WAAW,MAA8C,EAAE;EACvE,MAAM,KAAK,MAAM,UAAU,WAAW,KAAK;AAC3C,SAAO;CACR;AACF"}
@@ -1,7 +1,7 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_util_document = require('../util/document.cjs');
3
3
  const __langchain_core_tools = require_rolldown_runtime.__toESM(require("@langchain/core/tools"));
4
- const zod = require_rolldown_runtime.__toESM(require("zod"));
4
+ const zod_v3 = require_rolldown_runtime.__toESM(require("zod/v3"));
5
5
 
6
6
  //#region src/tools/retriever.ts
7
7
  var retriever_exports = {};
@@ -11,7 +11,7 @@ function createRetrieverTool(retriever, input) {
11
11
  const docs = await retriever.getRelevantDocuments(query, runManager?.getChild("retriever"));
12
12
  return require_util_document.formatDocumentsAsString(docs);
13
13
  };
14
- const schema = zod.z.object({ query: zod.z.string().describe("query to look up in retriever") });
14
+ const schema = zod_v3.z.object({ query: zod_v3.z.string().describe("query to look up in retriever") });
15
15
  return new __langchain_core_tools.DynamicStructuredTool({
16
16
  ...input,
17
17
  func,
@@ -1 +1 @@
1
- {"version":3,"file":"retriever.cjs","names":["retriever: BaseRetrieverInterface","input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">","runManager?: CallbackManagerForToolRun","formatDocumentsAsString","z","DynamicStructuredTool"],"sources":["../../src/tools/retriever.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod\";\nimport { CallbackManagerForToolRun } from \"@langchain/core/callbacks/manager\";\nimport {\n DynamicStructuredTool,\n type DynamicStructuredToolInput,\n} from \"@langchain/core/tools\";\nimport { formatDocumentsAsString } from \"../util/document.js\";\n\nexport function createRetrieverTool(\n retriever: BaseRetrieverInterface,\n input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">\n) {\n const func = async (\n { query }: { query: string },\n runManager?: CallbackManagerForToolRun\n ) => {\n const docs = await retriever.getRelevantDocuments(\n query,\n runManager?.getChild(\"retriever\")\n );\n return formatDocumentsAsString(docs);\n };\n const schema = z.object({\n query: z.string().describe(\"query to look up in retriever\"),\n });\n return new DynamicStructuredTool({ ...input, func, schema });\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,oBACdA,WACAC,OACA;CACA,MAAM,OAAO,OACX,EAAE,OAA0B,EAC5BC,eACG;EACH,MAAM,OAAO,MAAM,UAAU,qBAC3B,OACA,YAAY,SAAS,YAAY,CAClC;AACD,SAAOC,8CAAwB,KAAK;CACrC;CACD,MAAM,SAASC,MAAE,OAAO,EACtB,OAAOA,MAAE,QAAQ,CAAC,SAAS,gCAAgC,CAC5D,EAAC;AACF,QAAO,IAAIC,6CAAsB;EAAE,GAAG;EAAO;EAAM;CAAQ;AAC5D"}
1
+ {"version":3,"file":"retriever.cjs","names":["retriever: BaseRetrieverInterface","input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">","runManager?: CallbackManagerForToolRun","formatDocumentsAsString","z","DynamicStructuredTool"],"sources":["../../src/tools/retriever.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod/v3\";\nimport { CallbackManagerForToolRun } from \"@langchain/core/callbacks/manager\";\nimport {\n DynamicStructuredTool,\n type DynamicStructuredToolInput,\n} from \"@langchain/core/tools\";\nimport { formatDocumentsAsString } from \"../util/document.js\";\n\nexport function createRetrieverTool(\n retriever: BaseRetrieverInterface,\n input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">\n) {\n const func = async (\n { query }: { query: string },\n runManager?: CallbackManagerForToolRun\n ) => {\n const docs = await retriever.getRelevantDocuments(\n query,\n runManager?.getChild(\"retriever\")\n );\n return formatDocumentsAsString(docs);\n };\n const schema = z.object({\n query: z.string().describe(\"query to look up in retriever\"),\n });\n return new DynamicStructuredTool({ ...input, func, schema });\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,oBACdA,WACAC,OACA;CACA,MAAM,OAAO,OACX,EAAE,OAA0B,EAC5BC,eACG;EACH,MAAM,OAAO,MAAM,UAAU,qBAC3B,OACA,YAAY,SAAS,YAAY,CAClC;AACD,SAAOC,8CAAwB,KAAK;CACrC;CACD,MAAM,SAASC,SAAE,OAAO,EACtB,OAAOA,SAAE,QAAQ,CAAC,SAAS,gCAAgC,CAC5D,EAAC;AACF,QAAO,IAAIC,6CAAsB;EAAE,GAAG;EAAO;EAAM;CAAQ;AAC5D"}
@@ -1,5 +1,5 @@
1
- import { z } from "zod";
2
1
  import { DynamicStructuredTool, DynamicStructuredToolInput } from "@langchain/core/tools";
2
+ import { z } from "zod/v3";
3
3
  import { BaseRetrieverInterface } from "@langchain/core/retrievers";
4
4
 
5
5
  //#region src/tools/retriever.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"retriever.d.cts","names":["BaseRetrieverInterface","z","DynamicStructuredTool","DynamicStructuredToolInput","createRetrieverTool","Omit","ZodString","ZodTypeAny","ZodObject"],"sources":["../../src/tools/retriever.d.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod\";\nimport { DynamicStructuredTool, type DynamicStructuredToolInput } from \"@langchain/core/tools\";\nexport declare function createRetrieverTool(retriever: BaseRetrieverInterface, input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">): DynamicStructuredTool<z.ZodObject<{\n query: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n query: string;\n}, {\n query: string;\n}>, {\n query: string;\n}, {\n query: string;\n}, string>;\n"],"mappings":";;;;;iBAGwBI,mBAAAA,YAA+BJ,+BAA+BK,KAAKF,iDAAiDD,sBAAsBD,CAAAA,CAAEO;SACzJP,CAAAA,CAAEK;AADb,CAAA,EAAA,OAAwBF,EAEZH,CAAAA,CAAEM,UAFUH,EAAmB;EAAA,KAAA,EAAA,MAAA;CAAA,EAAA;EAAkC,KAAcD,EAAAA,MAAAA;CAA0B,CAAA,EAAA;EAA3B,KAC7EG,EAAAA,MAAAA;CAAS,EAAA;EACE,KAF4IE,EAAAA,MAAAA;CAAS,EAAA,MAAjCN,CAAAA"}
1
+ {"version":3,"file":"retriever.d.cts","names":["BaseRetrieverInterface","z","DynamicStructuredTool","DynamicStructuredToolInput","createRetrieverTool","Omit","ZodString","ZodTypeAny","ZodObject"],"sources":["../../src/tools/retriever.d.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod/v3\";\nimport { DynamicStructuredTool, type DynamicStructuredToolInput } from \"@langchain/core/tools\";\nexport declare function createRetrieverTool(retriever: BaseRetrieverInterface, input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">): DynamicStructuredTool<z.ZodObject<{\n query: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n query: string;\n}, {\n query: string;\n}>, {\n query: string;\n}, {\n query: string;\n}, string>;\n"],"mappings":";;;;;iBAGwBI,mBAAAA,YAA+BJ,+BAA+BK,KAAKF,iDAAiDD,sBAAsBD,CAAAA,CAAEO;SACzJP,CAAAA,CAAEK;AADb,CAAA,EAAA,OAAwBF,EAEZH,CAAAA,CAAEM,UAFUH,EAAmB;EAAA,KAAA,EAAA,MAAA;CAAA,EAAA;EAAkC,KAAcD,EAAAA,MAAAA;CAA0B,CAAA,EAAA;EAA3B,KAC7EG,EAAAA,MAAAA;CAAS,EAAA;EACE,KAF4IE,EAAAA,MAAAA;CAAS,EAAA,MAAjCN,CAAAA"}
@@ -1,5 +1,5 @@
1
1
  import { DynamicStructuredTool, DynamicStructuredToolInput } from "@langchain/core/tools";
2
- import { z } from "zod";
2
+ import { z } from "zod/v3";
3
3
  import { BaseRetrieverInterface } from "@langchain/core/retrievers";
4
4
 
5
5
  //#region src/tools/retriever.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"retriever.d.ts","names":["BaseRetrieverInterface","z","DynamicStructuredTool","DynamicStructuredToolInput","createRetrieverTool","Omit","ZodString","ZodTypeAny","ZodObject"],"sources":["../../src/tools/retriever.d.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod\";\nimport { DynamicStructuredTool, type DynamicStructuredToolInput } from \"@langchain/core/tools\";\nexport declare function createRetrieverTool(retriever: BaseRetrieverInterface, input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">): DynamicStructuredTool<z.ZodObject<{\n query: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n query: string;\n}, {\n query: string;\n}>, {\n query: string;\n}, {\n query: string;\n}, string>;\n"],"mappings":";;;;;iBAGwBI,mBAAAA,YAA+BJ,+BAA+BK,KAAKF,iDAAiDD,sBAAsBD,CAAAA,CAAEO;SACzJP,CAAAA,CAAEK;AADb,CAAA,EAAA,OAAwBF,EAEZH,CAAAA,CAAEM,UAFUH,EAAmB;EAAA,KAAA,EAAA,MAAA;CAAA,EAAA;EAAkC,KAAcD,EAAAA,MAAAA;CAA0B,CAAA,EAAA;EAA3B,KAC7EG,EAAAA,MAAAA;CAAS,EAAA;EACE,KAF4IE,EAAAA,MAAAA;CAAS,EAAA,MAAjCN,CAAAA"}
1
+ {"version":3,"file":"retriever.d.ts","names":["BaseRetrieverInterface","z","DynamicStructuredTool","DynamicStructuredToolInput","createRetrieverTool","Omit","ZodString","ZodTypeAny","ZodObject"],"sources":["../../src/tools/retriever.d.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod/v3\";\nimport { DynamicStructuredTool, type DynamicStructuredToolInput } from \"@langchain/core/tools\";\nexport declare function createRetrieverTool(retriever: BaseRetrieverInterface, input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">): DynamicStructuredTool<z.ZodObject<{\n query: z.ZodString;\n}, \"strip\", z.ZodTypeAny, {\n query: string;\n}, {\n query: string;\n}>, {\n query: string;\n}, {\n query: string;\n}, string>;\n"],"mappings":";;;;;iBAGwBI,mBAAAA,YAA+BJ,+BAA+BK,KAAKF,iDAAiDD,sBAAsBD,CAAAA,CAAEO;SACzJP,CAAAA,CAAEK;AADb,CAAA,EAAA,OAAwBF,EAEZH,CAAAA,CAAEM,UAFUH,EAAmB;EAAA,KAAA,EAAA,MAAA;CAAA,EAAA;EAAkC,KAAcD,EAAAA,MAAAA;CAA0B,CAAA,EAAA;EAA3B,KAC7EG,EAAAA,MAAAA;CAAS,EAAA;EACE,KAF4IE,EAAAA,MAAAA;CAAS,EAAA,MAAjCN,CAAAA"}
@@ -1,7 +1,7 @@
1
1
  import { __export } from "../_virtual/rolldown_runtime.js";
2
2
  import { formatDocumentsAsString } from "../util/document.js";
3
3
  import { DynamicStructuredTool } from "@langchain/core/tools";
4
- import { z } from "zod";
4
+ import { z } from "zod/v3";
5
5
 
6
6
  //#region src/tools/retriever.ts
7
7
  var retriever_exports = {};
@@ -1 +1 @@
1
- {"version":3,"file":"retriever.js","names":["retriever: BaseRetrieverInterface","input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">","runManager?: CallbackManagerForToolRun"],"sources":["../../src/tools/retriever.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod\";\nimport { CallbackManagerForToolRun } from \"@langchain/core/callbacks/manager\";\nimport {\n DynamicStructuredTool,\n type DynamicStructuredToolInput,\n} from \"@langchain/core/tools\";\nimport { formatDocumentsAsString } from \"../util/document.js\";\n\nexport function createRetrieverTool(\n retriever: BaseRetrieverInterface,\n input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">\n) {\n const func = async (\n { query }: { query: string },\n runManager?: CallbackManagerForToolRun\n ) => {\n const docs = await retriever.getRelevantDocuments(\n query,\n runManager?.getChild(\"retriever\")\n );\n return formatDocumentsAsString(docs);\n };\n const schema = z.object({\n query: z.string().describe(\"query to look up in retriever\"),\n });\n return new DynamicStructuredTool({ ...input, func, schema });\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,oBACdA,WACAC,OACA;CACA,MAAM,OAAO,OACX,EAAE,OAA0B,EAC5BC,eACG;EACH,MAAM,OAAO,MAAM,UAAU,qBAC3B,OACA,YAAY,SAAS,YAAY,CAClC;AACD,SAAO,wBAAwB,KAAK;CACrC;CACD,MAAM,SAAS,EAAE,OAAO,EACtB,OAAO,EAAE,QAAQ,CAAC,SAAS,gCAAgC,CAC5D,EAAC;AACF,QAAO,IAAI,sBAAsB;EAAE,GAAG;EAAO;EAAM;CAAQ;AAC5D"}
1
+ {"version":3,"file":"retriever.js","names":["retriever: BaseRetrieverInterface","input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">","runManager?: CallbackManagerForToolRun"],"sources":["../../src/tools/retriever.ts"],"sourcesContent":["import type { BaseRetrieverInterface } from \"@langchain/core/retrievers\";\nimport { z } from \"zod/v3\";\nimport { CallbackManagerForToolRun } from \"@langchain/core/callbacks/manager\";\nimport {\n DynamicStructuredTool,\n type DynamicStructuredToolInput,\n} from \"@langchain/core/tools\";\nimport { formatDocumentsAsString } from \"../util/document.js\";\n\nexport function createRetrieverTool(\n retriever: BaseRetrieverInterface,\n input: Omit<DynamicStructuredToolInput, \"func\" | \"schema\">\n) {\n const func = async (\n { query }: { query: string },\n runManager?: CallbackManagerForToolRun\n ) => {\n const docs = await retriever.getRelevantDocuments(\n query,\n runManager?.getChild(\"retriever\")\n );\n return formatDocumentsAsString(docs);\n };\n const schema = z.object({\n query: z.string().describe(\"query to look up in retriever\"),\n });\n return new DynamicStructuredTool({ ...input, func, schema });\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,oBACdA,WACAC,OACA;CACA,MAAM,OAAO,OACX,EAAE,OAA0B,EAC5BC,eACG;EACH,MAAM,OAAO,MAAM,UAAU,qBAC3B,OACA,YAAY,SAAS,YAAY,CAClC;AACD,SAAO,wBAAwB,KAAK;CACrC;CACD,MAAM,SAAS,EAAE,OAAO,EACtB,OAAO,EAAE,QAAQ,CAAC,SAAS,gCAAgC,CAC5D,EAAC;AACF,QAAO,IAAI,sBAAsB;EAAE,GAAG;EAAO;EAAM;CAAQ;AAC5D"}
@@ -2,7 +2,6 @@ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_llm_chain = require('../chains/llm_chain.cjs');
3
3
  const __langchain_core_tools = require_rolldown_runtime.__toESM(require("@langchain/core/tools"));
4
4
  const __langchain_core_prompts = require_rolldown_runtime.__toESM(require("@langchain/core/prompts"));
5
- const __langchain_openai = require_rolldown_runtime.__toESM(require("@langchain/openai"));
6
5
 
7
6
  //#region src/tools/sql.ts
8
7
  var sql_exports = {};
@@ -136,7 +135,7 @@ If there are any of the above mistakes, rewrite the query. If there are no mista
136
135
  template: this.template,
137
136
  inputVariables: ["query"]
138
137
  });
139
- const llm = options?.llm ?? new __langchain_openai.OpenAI({ temperature: 0 });
138
+ const llm = options.llm;
140
139
  this.llmChain = new require_llm_chain.LLMChain({
141
140
  llm,
142
141
  prompt
@@ -1 +1 @@
1
- {"version":3,"file":"sql.cjs","names":["Tool","db: SqlDatabase","input: string","_: string","selectedTables: SqlTable[]","table: SqlTable","llmChainOrOptions?: LLMChain | QueryCheckerToolArgs","PromptTemplate","OpenAI","LLMChain"],"sources":["../../src/tools/sql.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { OpenAI } from \"@langchain/openai\";\nimport { Tool } from \"@langchain/core/tools\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { LLMChain } from \"../chains/llm_chain.js\";\nimport type { SqlDatabase } from \"../sql_db.js\";\nimport { SqlTable } from \"../util/sql_utils.js\";\n\n/**\n * Interface for SQL tools. It has a `db` property which is a SQL\n * database.\n */\ninterface SqlTool {\n db: SqlDatabase;\n}\n\n/**\n * A tool for executing SQL queries. It takes a SQL database as a\n * parameter and assigns it to the `db` property. The `_call` method is\n * used to run the SQL query and return the result. If the query is\n * incorrect, an error message is returned.\n */\nexport class QuerySqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"QuerySqlTool\";\n }\n\n name = \"query-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super(...arguments);\n this.db = db;\n }\n\n /** @ignore */\n async _call(input: string) {\n try {\n return await this.db.run(input);\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input to this tool is a detailed and correct SQL query, output is a result from the database.\n If the query is not correct, an error message will be returned.\n If an error is returned, rewrite the query, check the query, and try again.`;\n}\n\n/**\n * A tool for retrieving information about SQL tables. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to retrieve the schema and sample rows for the\n * specified tables. If the tables do not exist, an error message is\n * returned.\n */\nexport class InfoSqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"InfoSqlTool\";\n }\n\n name = \"info-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super();\n this.db = db;\n }\n\n /** @ignore */\n async _call(input: string) {\n try {\n const tables = input.split(\",\").map((table) => table.trim());\n return await this.db.getTableInfo(tables);\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input to this tool is a comma-separated list of tables, output is the schema and sample rows for those tables.\n Be sure that the tables actually exist by calling list-tables-sql first!\n\n Example Input: \"table1, table2, table3.`;\n}\n\n/**\n * A tool for listing all tables in a SQL database. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to return a comma-separated list of all tables\n * in the database.\n */\nexport class ListTablesSqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"ListTablesSqlTool\";\n }\n\n name = \"list-tables-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super();\n this.db = db;\n }\n\n async _call(_: string) {\n try {\n let selectedTables: SqlTable[] = this.db.allTables;\n\n if (this.db.includesTables.length > 0) {\n selectedTables = selectedTables.filter((currentTable) =>\n this.db.includesTables.includes(currentTable.tableName)\n );\n }\n\n if (this.db.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) =>\n !this.db.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n const tables = selectedTables.map((table: SqlTable) => table.tableName);\n return tables.join(\", \");\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input is an empty string, output is a comma-separated list of tables in the database.`;\n}\n\n/**\n * Arguments for the QueryCheckerTool class.\n */\ntype QueryCheckerToolArgs = {\n llmChain?: LLMChain;\n llm?: BaseLanguageModelInterface;\n _chainType?: never;\n};\n\n/**\n * A tool for checking SQL queries for common mistakes. It takes a\n * LLMChain or QueryCheckerToolArgs as a parameter. The `_call` method is\n * used to check the input query for common mistakes and returns a\n * prediction.\n */\nexport class QueryCheckerTool extends Tool {\n static lc_name() {\n return \"QueryCheckerTool\";\n }\n\n name = \"query-checker\";\n\n template = `\n {query}\nDouble check the SQL query above for common mistakes, including:\n- Using NOT IN with NULL values\n- Using UNION when UNION ALL should have been used\n- Using BETWEEN for exclusive ranges\n- Data type mismatch in predicates\n- Properly quoting identifiers\n- Using the correct number of arguments for functions\n- Casting to the correct data type\n- Using the proper columns for joins\n\nIf there are any of the above mistakes, rewrite the query. If there are no mistakes, just reproduce the original query.`;\n\n llmChain: LLMChain;\n\n constructor(llmChainOrOptions?: LLMChain | QueryCheckerToolArgs) {\n super();\n if (typeof llmChainOrOptions?._chainType === \"function\") {\n this.llmChain = llmChainOrOptions as LLMChain;\n } else {\n const options = llmChainOrOptions as QueryCheckerToolArgs;\n if (options?.llmChain !== undefined) {\n this.llmChain = options.llmChain;\n } else {\n const prompt = new PromptTemplate({\n template: this.template,\n inputVariables: [\"query\"],\n });\n const llm = options?.llm ?? new OpenAI({ temperature: 0 });\n this.llmChain = new LLMChain({ llm, prompt });\n }\n }\n }\n\n /** @ignore */\n async _call(input: string) {\n return this.llmChain.predict({ query: input });\n }\n\n description = `Use this tool to double check if your query is correct before executing it.\n Always use this tool before executing a query with query-sql!`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,IAAa,eAAb,cAAkCA,4BAAwB;CACxD,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,MAAM,GAAG,UAAU;EACnB,KAAK,KAAK;CACX;;CAGD,MAAM,MAAMC,OAAe;AACzB,MAAI;AACF,UAAO,MAAM,KAAK,GAAG,IAAI,MAAM;EAChC,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC;;6EAE4D,CAAC;AAC7E;;;;;;;;AASD,IAAa,cAAb,cAAiCF,4BAAwB;CACvD,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,OAAO;EACP,KAAK,KAAK;CACX;;CAGD,MAAM,MAAMC,OAAe;AACzB,MAAI;GACF,MAAM,SAAS,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAC5D,UAAO,MAAM,KAAK,GAAG,aAAa,OAAO;EAC1C,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC;;;2CAG0B,CAAC;AAC3C;;;;;;;AAQD,IAAa,oBAAb,cAAuCF,4BAAwB;CAC7D,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,OAAO;EACP,KAAK,KAAK;CACX;CAED,MAAM,MAAME,GAAW;AACrB,MAAI;GACF,IAAIC,iBAA6B,KAAK,GAAG;AAEzC,OAAI,KAAK,GAAG,eAAe,SAAS,GAClC,iBAAiB,eAAe,OAAO,CAAC,iBACtC,KAAK,GAAG,eAAe,SAAS,aAAa,UAAU,CACxD;AAGH,OAAI,KAAK,GAAG,aAAa,SAAS,GAChC,iBAAiB,eAAe,OAC9B,CAAC,iBACC,CAAC,KAAK,GAAG,aAAa,SAAS,aAAa,UAAU,CACzD;GAGH,MAAM,SAAS,eAAe,IAAI,CAACC,UAAoB,MAAM,UAAU;AACvE,UAAO,OAAO,KAAK,KAAK;EACzB,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC,qFAAqF,CAAC;AACtG;;;;;;;AAiBD,IAAa,mBAAb,cAAsCL,4BAAK;CACzC,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP,WAAW,CAAC;;;;;;;;;;;;uHAYyG,CAAC;CAEtH;CAEA,YAAYM,mBAAqD;EAC/D,OAAO;AACP,MAAI,OAAO,mBAAmB,eAAe,YAC3C,KAAK,WAAW;OACX;GACL,MAAM,UAAU;AAChB,OAAI,SAAS,aAAa,QACxB,KAAK,WAAW,QAAQ;QACnB;IACL,MAAM,SAAS,IAAIC,wCAAe;KAChC,UAAU,KAAK;KACf,gBAAgB,CAAC,OAAQ;IAC1B;IACD,MAAM,MAAM,SAAS,OAAO,IAAIC,0BAAO,EAAE,aAAa,EAAG;IACzD,KAAK,WAAW,IAAIC,2BAAS;KAAE;KAAK;IAAQ;GAC7C;EACF;CACF;;CAGD,MAAM,MAAMP,OAAe;AACzB,SAAO,KAAK,SAAS,QAAQ,EAAE,OAAO,MAAO,EAAC;CAC/C;CAED,cAAc,CAAC;iEACgD,CAAC;AACjE"}
1
+ {"version":3,"file":"sql.cjs","names":["Tool","db: SqlDatabase","input: string","_: string","selectedTables: SqlTable[]","table: SqlTable","llmChainOrOptions?: LLMChain | QueryCheckerToolArgs","PromptTemplate","LLMChain"],"sources":["../../src/tools/sql.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { Tool } from \"@langchain/core/tools\";\nimport { PromptTemplate } from \"@langchain/core/prompts\";\nimport { LLMChain } from \"../chains/llm_chain.js\";\nimport type { SqlDatabase } from \"../sql_db.js\";\nimport { SqlTable } from \"../util/sql_utils.js\";\n\n/**\n * Interface for SQL tools. It has a `db` property which is a SQL\n * database.\n */\ninterface SqlTool {\n db: SqlDatabase;\n}\n\n/**\n * A tool for executing SQL queries. It takes a SQL database as a\n * parameter and assigns it to the `db` property. The `_call` method is\n * used to run the SQL query and return the result. If the query is\n * incorrect, an error message is returned.\n */\nexport class QuerySqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"QuerySqlTool\";\n }\n\n name = \"query-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super(...arguments);\n this.db = db;\n }\n\n /** @ignore */\n async _call(input: string) {\n try {\n return await this.db.run(input);\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input to this tool is a detailed and correct SQL query, output is a result from the database.\n If the query is not correct, an error message will be returned.\n If an error is returned, rewrite the query, check the query, and try again.`;\n}\n\n/**\n * A tool for retrieving information about SQL tables. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to retrieve the schema and sample rows for the\n * specified tables. If the tables do not exist, an error message is\n * returned.\n */\nexport class InfoSqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"InfoSqlTool\";\n }\n\n name = \"info-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super();\n this.db = db;\n }\n\n /** @ignore */\n async _call(input: string) {\n try {\n const tables = input.split(\",\").map((table) => table.trim());\n return await this.db.getTableInfo(tables);\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input to this tool is a comma-separated list of tables, output is the schema and sample rows for those tables.\n Be sure that the tables actually exist by calling list-tables-sql first!\n\n Example Input: \"table1, table2, table3.`;\n}\n\n/**\n * A tool for listing all tables in a SQL database. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to return a comma-separated list of all tables\n * in the database.\n */\nexport class ListTablesSqlTool extends Tool implements SqlTool {\n static lc_name() {\n return \"ListTablesSqlTool\";\n }\n\n name = \"list-tables-sql\";\n\n db: SqlDatabase;\n\n constructor(db: SqlDatabase) {\n super();\n this.db = db;\n }\n\n async _call(_: string) {\n try {\n let selectedTables: SqlTable[] = this.db.allTables;\n\n if (this.db.includesTables.length > 0) {\n selectedTables = selectedTables.filter((currentTable) =>\n this.db.includesTables.includes(currentTable.tableName)\n );\n }\n\n if (this.db.ignoreTables.length > 0) {\n selectedTables = selectedTables.filter(\n (currentTable) =>\n !this.db.ignoreTables.includes(currentTable.tableName)\n );\n }\n\n const tables = selectedTables.map((table: SqlTable) => table.tableName);\n return tables.join(\", \");\n } catch (error) {\n return `${error}`;\n }\n }\n\n description = `Input is an empty string, output is a comma-separated list of tables in the database.`;\n}\n\n/**\n * Arguments for the QueryCheckerTool class.\n */\ntype QueryCheckerToolArgs = {\n llmChain?: LLMChain;\n llm: BaseLanguageModelInterface;\n _chainType?: never;\n};\n\n/**\n * A tool for checking SQL queries for common mistakes. It takes a\n * LLMChain or QueryCheckerToolArgs as a parameter. The `_call` method is\n * used to check the input query for common mistakes and returns a\n * prediction.\n */\nexport class QueryCheckerTool extends Tool {\n static lc_name() {\n return \"QueryCheckerTool\";\n }\n\n name = \"query-checker\";\n\n template = `\n {query}\nDouble check the SQL query above for common mistakes, including:\n- Using NOT IN with NULL values\n- Using UNION when UNION ALL should have been used\n- Using BETWEEN for exclusive ranges\n- Data type mismatch in predicates\n- Properly quoting identifiers\n- Using the correct number of arguments for functions\n- Casting to the correct data type\n- Using the proper columns for joins\n\nIf there are any of the above mistakes, rewrite the query. If there are no mistakes, just reproduce the original query.`;\n\n llmChain: LLMChain;\n\n constructor(llmChainOrOptions?: LLMChain | QueryCheckerToolArgs) {\n super();\n if (typeof llmChainOrOptions?._chainType === \"function\") {\n this.llmChain = llmChainOrOptions as LLMChain;\n } else {\n const options = llmChainOrOptions as QueryCheckerToolArgs;\n if (options?.llmChain !== undefined) {\n this.llmChain = options.llmChain;\n } else {\n const prompt = new PromptTemplate({\n template: this.template,\n inputVariables: [\"query\"],\n });\n const llm = options.llm;\n this.llmChain = new LLMChain({ llm, prompt });\n }\n }\n }\n\n /** @ignore */\n async _call(input: string) {\n return this.llmChain.predict({ query: input });\n }\n\n description = `Use this tool to double check if your query is correct before executing it.\n Always use this tool before executing a query with query-sql!`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,IAAa,eAAb,cAAkCA,4BAAwB;CACxD,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,MAAM,GAAG,UAAU;EACnB,KAAK,KAAK;CACX;;CAGD,MAAM,MAAMC,OAAe;AACzB,MAAI;AACF,UAAO,MAAM,KAAK,GAAG,IAAI,MAAM;EAChC,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC;;6EAE4D,CAAC;AAC7E;;;;;;;;AASD,IAAa,cAAb,cAAiCF,4BAAwB;CACvD,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,OAAO;EACP,KAAK,KAAK;CACX;;CAGD,MAAM,MAAMC,OAAe;AACzB,MAAI;GACF,MAAM,SAAS,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAC5D,UAAO,MAAM,KAAK,GAAG,aAAa,OAAO;EAC1C,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC;;;2CAG0B,CAAC;AAC3C;;;;;;;AAQD,IAAa,oBAAb,cAAuCF,4BAAwB;CAC7D,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP;CAEA,YAAYC,IAAiB;EAC3B,OAAO;EACP,KAAK,KAAK;CACX;CAED,MAAM,MAAME,GAAW;AACrB,MAAI;GACF,IAAIC,iBAA6B,KAAK,GAAG;AAEzC,OAAI,KAAK,GAAG,eAAe,SAAS,GAClC,iBAAiB,eAAe,OAAO,CAAC,iBACtC,KAAK,GAAG,eAAe,SAAS,aAAa,UAAU,CACxD;AAGH,OAAI,KAAK,GAAG,aAAa,SAAS,GAChC,iBAAiB,eAAe,OAC9B,CAAC,iBACC,CAAC,KAAK,GAAG,aAAa,SAAS,aAAa,UAAU,CACzD;GAGH,MAAM,SAAS,eAAe,IAAI,CAACC,UAAoB,MAAM,UAAU;AACvE,UAAO,OAAO,KAAK,KAAK;EACzB,SAAQ,OAAO;AACd,UAAO,GAAG,OAAO;EAClB;CACF;CAED,cAAc,CAAC,qFAAqF,CAAC;AACtG;;;;;;;AAiBD,IAAa,mBAAb,cAAsCL,4BAAK;CACzC,OAAO,UAAU;AACf,SAAO;CACR;CAED,OAAO;CAEP,WAAW,CAAC;;;;;;;;;;;;uHAYyG,CAAC;CAEtH;CAEA,YAAYM,mBAAqD;EAC/D,OAAO;AACP,MAAI,OAAO,mBAAmB,eAAe,YAC3C,KAAK,WAAW;OACX;GACL,MAAM,UAAU;AAChB,OAAI,SAAS,aAAa,QACxB,KAAK,WAAW,QAAQ;QACnB;IACL,MAAM,SAAS,IAAIC,wCAAe;KAChC,UAAU,KAAK;KACf,gBAAgB,CAAC,OAAQ;IAC1B;IACD,MAAM,MAAM,QAAQ;IACpB,KAAK,WAAW,IAAIC,2BAAS;KAAE;KAAK;IAAQ;GAC7C;EACF;CACF;;CAGD,MAAM,MAAMN,OAAe;AACzB,SAAO,KAAK,SAAS,QAAQ,EAAE,OAAO,MAAO,EAAC;CAC/C;CAED,cAAc,CAAC;iEACgD,CAAC;AACjE"}
@@ -62,7 +62,7 @@ declare class ListTablesSqlTool extends Tool implements SqlTool {
62
62
  */
63
63
  type QueryCheckerToolArgs = {
64
64
  llmChain?: LLMChain;
65
- llm?: BaseLanguageModelInterface;
65
+ llm: BaseLanguageModelInterface;
66
66
  _chainType?: never;
67
67
  };
68
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.cts","names":["BaseLanguageModelInterface","Tool","LLMChain","SqlDatabase","SqlTool","QuerySqlTool","Promise","InfoSqlTool","ListTablesSqlTool","QueryCheckerToolArgs","QueryCheckerTool"],"sources":["../../src/tools/sql.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { Tool } from \"@langchain/core/tools\";\nimport { LLMChain } from \"../chains/llm_chain.js\";\nimport type { SqlDatabase } from \"../sql_db.js\";\n/**\n * Interface for SQL tools. It has a `db` property which is a SQL\n * database.\n */\ninterface SqlTool {\n db: SqlDatabase;\n}\n/**\n * A tool for executing SQL queries. It takes a SQL database as a\n * parameter and assigns it to the `db` property. The `_call` method is\n * used to run the SQL query and return the result. If the query is\n * incorrect, an error message is returned.\n */\nexport declare class QuerySqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\n/**\n * A tool for retrieving information about SQL tables. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to retrieve the schema and sample rows for the\n * specified tables. If the tables do not exist, an error message is\n * returned.\n */\nexport declare class InfoSqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\n/**\n * A tool for listing all tables in a SQL database. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to return a comma-separated list of all tables\n * in the database.\n */\nexport declare class ListTablesSqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n _call(_: string): Promise<string>;\n description: string;\n}\n/**\n * Arguments for the QueryCheckerTool class.\n */\ntype QueryCheckerToolArgs = {\n llmChain?: LLMChain;\n llm?: BaseLanguageModelInterface;\n _chainType?: never;\n};\n/**\n * A tool for checking SQL queries for common mistakes. It takes a\n * LLMChain or QueryCheckerToolArgs as a parameter. The `_call` method is\n * used to check the input query for common mistakes and returns a\n * prediction.\n */\nexport declare class QueryCheckerTool extends Tool {\n static lc_name(): string;\n name: string;\n template: string;\n llmChain: LLMChain;\n constructor(llmChainOrOptions?: LLMChain | QueryCheckerToolArgs);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGgD;AAchD;UATUI,OAAAA,CASuB;EAAA,EAAA,EARzBD,WAWAA;;;;;AAHyD;AAgBjE;;AAGQA,cAnBaE,YAAAA,SAAqBJ,IAAAA,YAAgBG,OAmBlDD,CAAAA;EAAW,OACCA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,IAELG,EAAAA,MAAAA;EAAO,EAAA,EAnBzBH,WAaiCF;EAAI,WAAYG,CAAAA,EAAAA,EAZrCD,WAYqCC;EAAO;EAe3CI,KAAAA,CAAAA,KAAAA,EAAAA,MAAAA,CAAiB,EAzBZF,OAyBY,CAAA,MAAA,CAAA;EAAA,WAAA,EAAA,MAAA;;;;;;AAAgC;AAOrE;;AAKcJ,cA3BMK,WAAAA,SAAoBN,IAAAA,YAAgBG,OA2B1CF,CAAAA;EAAQ,OACbF,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA0B,IAAA,EAAA,MAAA;EASfU,EAAAA,EAlCbP,WAkCaO;EAAgB,WAAA,CAAA,EAAA,EAjCjBP,WAiCiB;EAAA;EAIf,KACcD,CAAAA,KAAAA,EAAAA,MAAAA,CAAAA,EApCVI,OAoCUJ,CAAAA,MAAAA,CAAAA;EAAQ,WAAGO,EAAAA,MAAAA;;;AALG;;;;;cAtB7BD,iBAAAA,SAA0BP,IAAAA,YAAgBG;;;MAGvDD;kBACYA;oBACEG;;;;;;KAMjBG,oBAAAA;aACUP;QACLF;;;;;;;;;cASWU,gBAAAA,SAAyBT,IAAAA;;;;YAIhCC;kCACsBA,WAAWO;;wBAErBH"}
1
+ {"version":3,"file":"sql.d.cts","names":["BaseLanguageModelInterface","Tool","LLMChain","SqlDatabase","SqlTool","QuerySqlTool","Promise","InfoSqlTool","ListTablesSqlTool","QueryCheckerToolArgs","QueryCheckerTool"],"sources":["../../src/tools/sql.d.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport { Tool } from \"@langchain/core/tools\";\nimport { LLMChain } from \"../chains/llm_chain.js\";\nimport type { SqlDatabase } from \"../sql_db.js\";\n/**\n * Interface for SQL tools. It has a `db` property which is a SQL\n * database.\n */\ninterface SqlTool {\n db: SqlDatabase;\n}\n/**\n * A tool for executing SQL queries. It takes a SQL database as a\n * parameter and assigns it to the `db` property. The `_call` method is\n * used to run the SQL query and return the result. If the query is\n * incorrect, an error message is returned.\n */\nexport declare class QuerySqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\n/**\n * A tool for retrieving information about SQL tables. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to retrieve the schema and sample rows for the\n * specified tables. If the tables do not exist, an error message is\n * returned.\n */\nexport declare class InfoSqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\n/**\n * A tool for listing all tables in a SQL database. It takes a SQL\n * database as a parameter and assigns it to the `db` property. The\n * `_call` method is used to return a comma-separated list of all tables\n * in the database.\n */\nexport declare class ListTablesSqlTool extends Tool implements SqlTool {\n static lc_name(): string;\n name: string;\n db: SqlDatabase;\n constructor(db: SqlDatabase);\n _call(_: string): Promise<string>;\n description: string;\n}\n/**\n * Arguments for the QueryCheckerTool class.\n */\ntype QueryCheckerToolArgs = {\n llmChain?: LLMChain;\n llm: BaseLanguageModelInterface;\n _chainType?: never;\n};\n/**\n * A tool for checking SQL queries for common mistakes. It takes a\n * LLMChain or QueryCheckerToolArgs as a parameter. The `_call` method is\n * used to check the input query for common mistakes and returns a\n * prediction.\n */\nexport declare class QueryCheckerTool extends Tool {\n static lc_name(): string;\n name: string;\n template: string;\n llmChain: LLMChain;\n constructor(llmChainOrOptions?: LLMChain | QueryCheckerToolArgs);\n /** @ignore */\n _call(input: string): Promise<string>;\n description: string;\n}\nexport {};\n"],"mappings":";;;;;;;;;AAGgD;AAchD;UATUI,OAAAA,CASuB;EAAA,EAAA,EARzBD,WAWAA;;;;;AAHyD;AAgBjE;;AAGQA,cAnBaE,YAAAA,SAAqBJ,IAAAA,YAAgBG,OAmBlDD,CAAAA;EAAW,OACCA,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,IAELG,EAAAA,MAAAA;EAAO,EAAA,EAnBzBH,WAaiCF;EAAI,WAAYG,CAAAA,EAAAA,EAZrCD,WAYqCC;EAAO;EAe3CI,KAAAA,CAAAA,KAAAA,EAAAA,MAAAA,CAAiB,EAzBZF,OAyBY,CAAA,MAAA,CAAA;EAAA,WAAA,EAAA,MAAA;;;;;;AAAgC;AAOrE;;AAKcJ,cA3BMK,WAAAA,SAAoBN,IAAAA,YAAgBG,OA2B1CF,CAAAA;EAAQ,OACdF,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAA0B,IAAA,EAAA,MAAA;EASdU,EAAAA,EAlCbP,WAkCaO;EAAgB,WAAA,CAAA,EAAA,EAjCjBP,WAiCiB;EAAA;EAIf,KACcD,CAAAA,KAAAA,EAAAA,MAAAA,CAAAA,EApCVI,OAoCUJ,CAAAA,MAAAA,CAAAA;EAAQ,WAAGO,EAAAA,MAAAA;;;AALG;;;;;cAtB7BD,iBAAAA,SAA0BP,IAAAA,YAAgBG;;;MAGvDD;kBACYA;oBACEG;;;;;;KAMjBG,oBAAAA;aACUP;OACNF;;;;;;;;;cASYU,gBAAAA,SAAyBT,IAAAA;;;;YAIhCC;kCACsBA,WAAWO;;wBAErBH"}
@@ -62,7 +62,7 @@ declare class ListTablesSqlTool extends Tool implements SqlTool {
62
62
  */
63
63
  type QueryCheckerToolArgs = {
64
64
  llmChain?: LLMChain;
65
- llm?: BaseLanguageModelInterface;
65
+ llm: BaseLanguageModelInterface;
66
66
  _chainType?: never;
67
67
  };
68
68
  /**