langchain 1.0.0-alpha.4 → 1.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) 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 +1 -3
  4. package/dist/agents/ReactAgent.d.cts.map +1 -1
  5. package/dist/agents/ReactAgent.d.ts +1 -3
  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/RunnableCallable.cjs +5 -0
  10. package/dist/agents/RunnableCallable.cjs.map +1 -1
  11. package/dist/agents/RunnableCallable.d.cts +2 -0
  12. package/dist/agents/RunnableCallable.d.cts.map +1 -1
  13. package/dist/agents/RunnableCallable.d.ts +2 -0
  14. package/dist/agents/RunnableCallable.d.ts.map +1 -1
  15. package/dist/agents/RunnableCallable.js +5 -0
  16. package/dist/agents/RunnableCallable.js.map +1 -1
  17. package/dist/agents/annotation.cjs.map +1 -1
  18. package/dist/agents/annotation.d.cts +5 -7
  19. package/dist/agents/annotation.d.cts.map +1 -1
  20. package/dist/agents/annotation.d.ts +4 -6
  21. package/dist/agents/annotation.d.ts.map +1 -1
  22. package/dist/agents/annotation.js.map +1 -1
  23. package/dist/agents/createAgent.cjs +10 -0
  24. package/dist/agents/createAgent.cjs.map +1 -0
  25. package/dist/agents/createAgent.js +10 -0
  26. package/dist/agents/createAgent.js.map +1 -0
  27. package/dist/agents/index.cjs +23 -4
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +84 -21
  30. package/dist/agents/index.d.cts.map +1 -1
  31. package/dist/agents/index.d.ts +84 -21
  32. package/dist/agents/index.d.ts.map +1 -1
  33. package/dist/agents/index.js +23 -4
  34. package/dist/agents/index.js.map +1 -1
  35. package/dist/agents/middlewareAgent/ReactAgent.cjs +255 -0
  36. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -0
  37. package/dist/agents/middlewareAgent/ReactAgent.d.cts +67 -0
  38. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -0
  39. package/dist/agents/middlewareAgent/ReactAgent.d.ts +67 -0
  40. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -0
  41. package/dist/agents/middlewareAgent/ReactAgent.js +254 -0
  42. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -0
  43. package/dist/agents/middlewareAgent/annotation.cjs +39 -0
  44. package/dist/agents/middlewareAgent/annotation.cjs.map +1 -0
  45. package/dist/agents/middlewareAgent/annotation.js +38 -0
  46. package/dist/agents/middlewareAgent/annotation.js.map +1 -0
  47. package/dist/agents/middlewareAgent/index.cjs +11 -0
  48. package/dist/agents/middlewareAgent/index.cjs.map +1 -0
  49. package/dist/agents/middlewareAgent/index.js +11 -0
  50. package/dist/agents/middlewareAgent/index.js.map +1 -0
  51. package/dist/agents/middlewareAgent/middleware/hitl.cjs +235 -0
  52. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
  53. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +199 -0
  54. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
  55. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +199 -0
  56. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
  57. package/dist/agents/middlewareAgent/middleware/hitl.js +234 -0
  58. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
  59. package/dist/agents/middlewareAgent/middleware/index.cjs +26 -0
  60. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
  61. package/dist/agents/middlewareAgent/middleware/index.d.cts +4 -0
  62. package/dist/agents/middlewareAgent/middleware/index.d.ts +4 -0
  63. package/dist/agents/middlewareAgent/middleware/index.js +17 -0
  64. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
  65. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs +182 -0
  66. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
  67. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts +152 -0
  68. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
  69. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts +152 -0
  70. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
  71. package/dist/agents/middlewareAgent/middleware/promptCaching.js +181 -0
  72. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
  73. package/dist/agents/middlewareAgent/middleware/summarization.cjs +262 -0
  74. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
  75. package/dist/agents/middlewareAgent/middleware/summarization.d.cts +89 -0
  76. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
  77. package/dist/agents/middlewareAgent/middleware/summarization.d.ts +89 -0
  78. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
  79. package/dist/agents/middlewareAgent/middleware/summarization.js +260 -0
  80. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
  81. package/dist/agents/middlewareAgent/middleware.cjs +47 -0
  82. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -0
  83. package/dist/agents/middlewareAgent/middleware.d.cts +46 -0
  84. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -0
  85. package/dist/agents/middlewareAgent/middleware.d.ts +46 -0
  86. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -0
  87. package/dist/agents/middlewareAgent/middleware.js +46 -0
  88. package/dist/agents/middlewareAgent/middleware.js.map +1 -0
  89. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +29 -0
  90. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -0
  91. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +29 -0
  92. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -0
  93. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +325 -0
  94. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -0
  95. package/dist/agents/middlewareAgent/nodes/AgentNode.js +324 -0
  96. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -0
  97. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +27 -0
  98. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -0
  99. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +27 -0
  100. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -0
  101. package/dist/agents/middlewareAgent/nodes/middleware.cjs +73 -0
  102. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -0
  103. package/dist/agents/middlewareAgent/nodes/middleware.js +73 -0
  104. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -0
  105. package/dist/agents/middlewareAgent/nodes/utils.cjs +74 -0
  106. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -0
  107. package/dist/agents/middlewareAgent/nodes/utils.js +70 -0
  108. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -0
  109. package/dist/agents/middlewareAgent/types.d.cts +380 -0
  110. package/dist/agents/middlewareAgent/types.d.cts.map +1 -0
  111. package/dist/agents/middlewareAgent/types.d.ts +380 -0
  112. package/dist/agents/middlewareAgent/types.d.ts.map +1 -0
  113. package/dist/agents/nodes/AgentNode.cjs +4 -4
  114. package/dist/agents/nodes/AgentNode.cjs.map +1 -1
  115. package/dist/agents/nodes/AgentNode.js +4 -4
  116. package/dist/agents/nodes/AgentNode.js.map +1 -1
  117. package/dist/agents/nodes/ToolNode.cjs +3 -3
  118. package/dist/agents/nodes/ToolNode.cjs.map +1 -1
  119. package/dist/agents/nodes/ToolNode.d.cts +4 -5
  120. package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
  121. package/dist/agents/nodes/ToolNode.d.ts +1 -2
  122. package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
  123. package/dist/agents/nodes/ToolNode.js +4 -4
  124. package/dist/agents/nodes/ToolNode.js.map +1 -1
  125. package/dist/agents/responses.cjs +1 -1
  126. package/dist/agents/responses.cjs.map +1 -1
  127. package/dist/agents/responses.d.cts.map +1 -1
  128. package/dist/agents/responses.d.ts.map +1 -1
  129. package/dist/agents/responses.js +1 -1
  130. package/dist/agents/responses.js.map +1 -1
  131. package/dist/agents/types.d.cts +5 -7
  132. package/dist/agents/types.d.cts.map +1 -1
  133. package/dist/agents/types.d.ts +1 -3
  134. package/dist/agents/types.d.ts.map +1 -1
  135. package/dist/agents/utils.cjs +6 -6
  136. package/dist/agents/utils.cjs.map +1 -1
  137. package/dist/agents/utils.js +7 -7
  138. package/dist/agents/utils.js.map +1 -1
  139. package/dist/agents/withAgentName.cjs.map +1 -1
  140. package/dist/agents/withAgentName.js.map +1 -1
  141. package/dist/chains/api/api_chain.d.cts +1 -1
  142. package/dist/chains/api/prompts.cjs.map +1 -1
  143. package/dist/chains/api/prompts.js.map +1 -1
  144. package/dist/chains/base.d.cts +1 -1
  145. package/dist/chains/combine_docs_chain.d.cts +1 -1
  146. package/dist/chains/combine_documents/stuff.d.cts +1 -1
  147. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
  148. package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
  149. package/dist/chains/conversational_retrieval_chain.d.cts +1 -1
  150. package/dist/chains/graph_qa/cypher.d.cts +1 -1
  151. package/dist/chains/history_aware_retriever.d.cts +2 -2
  152. package/dist/chains/index.cjs +0 -3
  153. package/dist/chains/index.cjs.map +1 -1
  154. package/dist/chains/index.d.cts +1 -2
  155. package/dist/chains/index.d.ts +1 -2
  156. package/dist/chains/index.js +1 -3
  157. package/dist/chains/index.js.map +1 -1
  158. package/dist/chains/llm_chain.d.cts +3 -3
  159. package/dist/chains/openai_functions/base.d.cts +3 -3
  160. package/dist/chains/openai_functions/extraction.cjs.map +1 -1
  161. package/dist/chains/openai_functions/extraction.d.cts +1 -3
  162. package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
  163. package/dist/chains/openai_functions/extraction.d.ts +1 -3
  164. package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
  165. package/dist/chains/openai_functions/extraction.js.map +1 -1
  166. package/dist/chains/openai_functions/index.cjs +0 -5
  167. package/dist/chains/openai_functions/index.cjs.map +1 -1
  168. package/dist/chains/openai_functions/index.d.cts +1 -2
  169. package/dist/chains/openai_functions/index.d.ts +1 -2
  170. package/dist/chains/openai_functions/index.js +1 -4
  171. package/dist/chains/openai_functions/index.js.map +1 -1
  172. package/dist/chains/openai_functions/openapi.cjs +4 -4
  173. package/dist/chains/openai_functions/openapi.cjs.map +1 -1
  174. package/dist/chains/openai_functions/openapi.d.cts +2 -2
  175. package/dist/chains/openai_functions/openapi.js +4 -4
  176. package/dist/chains/openai_functions/openapi.js.map +1 -1
  177. package/dist/chains/openai_functions/tagging.cjs.map +1 -1
  178. package/dist/chains/openai_functions/tagging.d.cts +2 -4
  179. package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
  180. package/dist/chains/openai_functions/tagging.d.ts +1 -3
  181. package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
  182. package/dist/chains/openai_functions/tagging.js.map +1 -1
  183. package/dist/chains/query_constructor/index.cjs +4 -4
  184. package/dist/chains/query_constructor/index.cjs.map +1 -1
  185. package/dist/chains/query_constructor/index.d.cts +5 -3
  186. package/dist/chains/query_constructor/index.d.cts.map +1 -1
  187. package/dist/chains/query_constructor/index.d.ts +4 -2
  188. package/dist/chains/query_constructor/index.d.ts.map +1 -1
  189. package/dist/chains/query_constructor/index.js +1 -1
  190. package/dist/chains/query_constructor/index.js.map +1 -1
  191. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
  192. package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
  193. package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
  194. package/dist/chains/question_answering/refine_prompts.js.map +1 -1
  195. package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
  196. package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
  197. package/dist/chains/retrieval.d.cts +1 -1
  198. package/dist/chains/router/llm_router.d.cts +1 -1
  199. package/dist/chains/router/multi_prompt.cjs +4 -4
  200. package/dist/chains/router/multi_prompt.cjs.map +1 -1
  201. package/dist/chains/router/multi_prompt.js +1 -1
  202. package/dist/chains/router/multi_prompt.js.map +1 -1
  203. package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
  204. package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
  205. package/dist/chains/router/multi_retrieval_qa.js +1 -1
  206. package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
  207. package/dist/chains/sql_db/sql_db_chain.d.cts +2 -2
  208. package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
  209. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
  210. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
  211. package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
  212. package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
  213. package/dist/chains/summarization/stuff_prompts.js.map +1 -1
  214. package/dist/chat_models/universal.cjs +8 -5
  215. package/dist/chat_models/universal.cjs.map +1 -1
  216. package/dist/chat_models/universal.d.cts +4 -4
  217. package/dist/chat_models/universal.d.cts.map +1 -1
  218. package/dist/chat_models/universal.d.ts +2 -2
  219. package/dist/chat_models/universal.d.ts.map +1 -1
  220. package/dist/chat_models/universal.js +8 -5
  221. package/dist/chat_models/universal.js.map +1 -1
  222. package/dist/document_loaders/fs/directory.cjs.map +1 -1
  223. package/dist/document_loaders/fs/directory.d.cts +0 -1
  224. package/dist/document_loaders/fs/directory.d.cts.map +1 -1
  225. package/dist/document_loaders/fs/directory.d.ts +0 -1
  226. package/dist/document_loaders/fs/directory.d.ts.map +1 -1
  227. package/dist/document_loaders/fs/directory.js.map +1 -1
  228. package/dist/document_loaders/fs/json.cjs +7 -1
  229. package/dist/document_loaders/fs/json.cjs.map +1 -1
  230. package/dist/document_loaders/fs/json.js +7 -1
  231. package/dist/document_loaders/fs/json.js.map +1 -1
  232. package/dist/embeddings/cache_backed.cjs +1 -1
  233. package/dist/embeddings/cache_backed.cjs.map +1 -1
  234. package/dist/embeddings/cache_backed.d.cts +1 -1
  235. package/dist/embeddings/cache_backed.d.ts +1 -1
  236. package/dist/embeddings/cache_backed.js +2 -2
  237. package/dist/embeddings/cache_backed.js.map +1 -1
  238. package/dist/evaluation/agents/trajectory.d.cts +3 -3
  239. package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
  240. package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
  241. package/dist/evaluation/comparison/pairwise.d.cts +1 -1
  242. package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
  243. package/dist/evaluation/criteria/criteria.d.cts +1 -1
  244. package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
  245. package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
  246. package/dist/evaluation/embedding_distance/base.cjs +2 -4
  247. package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
  248. package/dist/evaluation/embedding_distance/base.js +2 -3
  249. package/dist/evaluation/embedding_distance/base.js.map +1 -1
  250. package/dist/evaluation/loader.cjs +7 -12
  251. package/dist/evaluation/loader.cjs.map +1 -1
  252. package/dist/evaluation/loader.d.cts +8 -2
  253. package/dist/evaluation/loader.d.cts.map +1 -1
  254. package/dist/evaluation/loader.d.ts +8 -2
  255. package/dist/evaluation/loader.d.ts.map +1 -1
  256. package/dist/evaluation/loader.js +7 -12
  257. package/dist/evaluation/loader.js.map +1 -1
  258. package/dist/evaluation/qa/eval_chain.d.cts +1 -1
  259. package/dist/hub/base.cjs.map +1 -1
  260. package/dist/hub/base.js.map +1 -1
  261. package/dist/index.cjs +3 -0
  262. package/dist/index.cjs.map +1 -1
  263. package/dist/index.d.cts +5 -4
  264. package/dist/index.d.ts +3 -2
  265. package/dist/index.js +3 -1
  266. package/dist/index.js.map +1 -1
  267. package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
  268. package/dist/langchain-core/dist/messages/base.d.cts +24 -33
  269. package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
  270. package/dist/langchain-core/dist/messages/content/index.d.cts +1 -1
  271. package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
  272. package/dist/langchain-core/dist/messages/message.d.cts +598 -0
  273. package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
  274. package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
  275. package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
  276. package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
  277. package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
  278. package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
  279. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
  280. package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
  281. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
  282. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +1 -1
  283. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
  284. package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
  285. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
  286. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
  287. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
  288. package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
  289. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
  290. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
  291. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
  292. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
  293. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
  294. package/dist/load/import_map.cjs +2 -13
  295. package/dist/load/import_map.cjs.map +1 -1
  296. package/dist/load/import_map.js +2 -13
  297. package/dist/load/import_map.js.map +1 -1
  298. package/dist/memory/prompt.cjs.map +1 -1
  299. package/dist/memory/prompt.d.cts.map +1 -1
  300. package/dist/memory/prompt.d.ts.map +1 -1
  301. package/dist/memory/prompt.js.map +1 -1
  302. package/dist/memory/summary.d.cts +1 -1
  303. package/dist/output_parsers/combining.cjs +1 -1
  304. package/dist/output_parsers/combining.cjs.map +1 -1
  305. package/dist/output_parsers/combining.js +1 -1
  306. package/dist/output_parsers/combining.js.map +1 -1
  307. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
  308. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
  309. package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
  310. package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
  311. package/dist/output_parsers/expression_type_handlers/base.js +1 -1
  312. package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
  313. package/dist/output_parsers/fix.d.cts +1 -1
  314. package/dist/output_parsers/http_response.d.cts +1 -1
  315. package/dist/output_parsers/regex.cjs.map +1 -1
  316. package/dist/output_parsers/regex.js.map +1 -1
  317. package/dist/output_parsers/structured.cjs +4 -4
  318. package/dist/output_parsers/structured.cjs.map +1 -1
  319. package/dist/output_parsers/structured.d.cts +2 -2
  320. package/dist/output_parsers/structured.d.cts.map +1 -1
  321. package/dist/output_parsers/structured.d.ts +1 -1
  322. package/dist/output_parsers/structured.d.ts.map +1 -1
  323. package/dist/output_parsers/structured.js +2 -2
  324. package/dist/output_parsers/structured.js.map +1 -1
  325. package/dist/retrievers/ensemble.cjs.map +1 -1
  326. package/dist/retrievers/ensemble.js.map +1 -1
  327. package/dist/storage/file_system.cjs +1 -1
  328. package/dist/storage/file_system.cjs.map +1 -1
  329. package/dist/storage/file_system.js +1 -1
  330. package/dist/storage/file_system.js.map +1 -1
  331. package/dist/tools/fs.cjs +5 -5
  332. package/dist/tools/fs.cjs.map +1 -1
  333. package/dist/tools/fs.d.cts +1 -1
  334. package/dist/tools/fs.d.cts.map +1 -1
  335. package/dist/tools/fs.d.ts +1 -1
  336. package/dist/tools/fs.d.ts.map +1 -1
  337. package/dist/tools/fs.js +1 -1
  338. package/dist/tools/fs.js.map +1 -1
  339. package/dist/tools/json.d.cts +1 -1
  340. package/dist/tools/retriever.cjs +2 -2
  341. package/dist/tools/retriever.cjs.map +1 -1
  342. package/dist/tools/retriever.d.cts +2 -2
  343. package/dist/tools/retriever.d.cts.map +1 -1
  344. package/dist/tools/retriever.d.ts +1 -1
  345. package/dist/tools/retriever.d.ts.map +1 -1
  346. package/dist/tools/retriever.js +1 -1
  347. package/dist/tools/retriever.js.map +1 -1
  348. package/dist/tools/sql.cjs +1 -2
  349. package/dist/tools/sql.cjs.map +1 -1
  350. package/dist/tools/sql.d.cts +1 -1
  351. package/dist/tools/sql.d.cts.map +1 -1
  352. package/dist/tools/sql.d.ts +1 -1
  353. package/dist/tools/sql.d.ts.map +1 -1
  354. package/dist/tools/sql.js +1 -2
  355. package/dist/tools/sql.js.map +1 -1
  356. package/dist/tools/vectorstore.d.cts +1 -1
  357. package/dist/tools/webbrowser.d.cts +1 -1
  358. package/dist/types/expression-parser.d.cts +2 -0
  359. package/dist/types/expression-parser.d.cts.map +1 -1
  360. package/dist/types/expression-parser.d.ts +2 -0
  361. package/dist/types/expression-parser.d.ts.map +1 -1
  362. package/dist/util/hub.cjs +1 -1
  363. package/dist/util/hub.js +1 -1
  364. package/dist/util/openapi.cjs +1 -1
  365. package/dist/util/openapi.cjs.map +1 -1
  366. package/dist/util/openapi.js +1 -1
  367. package/dist/util/openapi.js.map +1 -1
  368. package/package.json +21 -16
  369. package/dist/chains/openai_functions/structured_output.cjs +0 -107
  370. package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
  371. package/dist/chains/openai_functions/structured_output.d.cts +0 -38
  372. package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
  373. package/dist/chains/openai_functions/structured_output.d.ts +0 -38
  374. package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
  375. package/dist/chains/openai_functions/structured_output.js +0 -105
  376. package/dist/chains/openai_functions/structured_output.js.map +0 -1
  377. package/dist/chains/openai_moderation.cjs +0 -107
  378. package/dist/chains/openai_moderation.cjs.map +0 -1
  379. package/dist/chains/openai_moderation.d.cts +0 -74
  380. package/dist/chains/openai_moderation.d.cts.map +0 -1
  381. package/dist/chains/openai_moderation.d.ts +0 -74
  382. package/dist/chains/openai_moderation.d.ts.map +0 -1
  383. package/dist/chains/openai_moderation.js +0 -106
  384. package/dist/chains/openai_moderation.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { BaseChatMemory, BaseChatMemoryInput } from "./chat_memory.cjs";
2
2
  import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
3
- import { BasePromptTemplate } from "@langchain/core/prompts";
4
3
  import { BaseMessage } from "@langchain/core/messages";
4
+ import { BasePromptTemplate } from "@langchain/core/prompts";
5
5
  import { InputValues, MemoryVariables, OutputValues } from "@langchain/core/memory";
6
6
 
7
7
  //#region src/memory/summary.d.ts
@@ -39,7 +39,7 @@ var CombiningOutputParser = class extends __langchain_core_output_parsers.BaseOu
39
39
  let extracted = inputs[i].includes("```") ? inputs[i].trim().split(/```/)[1] : inputs[i].trim();
40
40
  if (extracted.endsWith(this.outputDelimiter)) extracted = extracted.slice(0, -this.outputDelimiter.length);
41
41
  parsed = await p.parse(extracted, callbacks);
42
- } catch (e) {
42
+ } catch {
43
43
  parsed = await p.parse(input.trim(), callbacks);
44
44
  }
45
45
  Object.assign(ret, parsed);
@@ -1 +1 @@
1
- {"version":3,"file":"combining.cjs","names":["BaseOutputParser","fields: BaseOutputParser | CombiningOutputParserFields","input: string","callbacks?: Callbacks","ret: CombinedOutput"],"sources":["../../src/output_parsers/combining.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { BaseOutputParser } from \"@langchain/core/output_parsers\";\n\n/**\n * Type for the combined output of the CombiningOutputParser class.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CombinedOutput = Record<string, any>;\n\n/**\n * Interface for the fields required by the CombiningOutputParser class.\n */\nexport interface CombiningOutputParserFields {\n parsers: BaseOutputParser[];\n}\n\n/**\n * Class to combine multiple output parsers\n * @augments BaseOutputParser\n */\nexport class CombiningOutputParser extends BaseOutputParser<object> {\n static lc_name() {\n return \"CombiningOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"combining\"];\n\n lc_serializable = true;\n\n parsers: BaseOutputParser[];\n\n outputDelimiter = \"-----\";\n\n constructor(fields: CombiningOutputParserFields);\n\n constructor(...parsers: BaseOutputParser[]);\n\n constructor(\n fields: BaseOutputParser | CombiningOutputParserFields,\n ...parsers: BaseOutputParser[]\n ) {\n if (parsers.length > 0 || !(\"parsers\" in fields)) {\n // eslint-disable-next-line no-param-reassign\n fields = {\n parsers: [fields as BaseOutputParser, ...parsers],\n };\n }\n super(fields);\n this.parsers = fields.parsers;\n }\n\n /**\n * Method to parse an input string using the parsers in the parsers array.\n * The parsed outputs are combined into a single object and returned.\n * @param input The input string to parse.\n * @param callbacks Optional Callbacks object.\n * @returns A Promise that resolves to a CombinedOutput object.\n */\n async parse(input: string, callbacks?: Callbacks): Promise<CombinedOutput> {\n const inputs = input\n .trim()\n .split(\n new RegExp(`${this.outputDelimiter}Output \\\\d+${this.outputDelimiter}`)\n )\n .slice(1);\n const ret: CombinedOutput = {};\n for (const [i, p] of this.parsers.entries()) {\n let parsed;\n try {\n let extracted = inputs[i].includes(\"```\")\n ? inputs[i].trim().split(/```/)[1]\n : inputs[i].trim();\n if (extracted.endsWith(this.outputDelimiter)) {\n extracted = extracted.slice(0, -this.outputDelimiter.length);\n }\n parsed = await p.parse(extracted, callbacks);\n } catch (e) {\n parsed = await p.parse(input.trim(), callbacks);\n }\n Object.assign(ret, parsed);\n }\n return ret;\n }\n\n /**\n * Method to get instructions on how to format the LLM output. The\n * instructions are based on the parsers array and the outputDelimiter.\n * @returns A string with format instructions.\n */\n getFormatInstructions(): string {\n return `${[\n `Return the following ${this.parsers.length} outputs, each formatted as described below. Include the delimiter characters \"${this.outputDelimiter}\" in your response:`,\n ...this.parsers.map(\n (p, i) =>\n `${this.outputDelimiter}Output ${i + 1}${this.outputDelimiter}\\n${p\n .getFormatInstructions()\n .trim()}\\n${this.outputDelimiter}`\n ),\n ].join(\"\\n\\n\")}\\n`;\n }\n}\n"],"mappings":";;;;;;;;AAoBA,IAAa,wBAAb,cAA2CA,iDAAyB;CAClE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAY;CAE3D,kBAAkB;CAElB;CAEA,kBAAkB;CAMlB,YACEC,QACA,GAAG,SACH;AACA,MAAI,QAAQ,SAAS,KAAK,EAAE,aAAa,SAEvC,SAAS,EACP,SAAS,CAAC,QAA4B,GAAG,OAAQ,EAClD;EAEH,MAAM,OAAO;EACb,KAAK,UAAU,OAAO;CACvB;;;;;;;;CASD,MAAM,MAAMC,OAAeC,WAAgD;EACzE,MAAM,SAAS,MACZ,MAAM,CACN,sBACC,IAAI,OAAO,GAAG,KAAK,gBAAgB,WAAW,EAAE,KAAK,iBAAiB,EACvE,CACA,MAAM,EAAE;EACX,MAAMC,MAAsB,CAAE;AAC9B,OAAK,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,SAAS,EAAE;GAC3C,IAAI;AACJ,OAAI;IACF,IAAI,YAAY,OAAO,GAAG,SAAS,MAAM,GACrC,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,KAC9B,OAAO,GAAG,MAAM;AACpB,QAAI,UAAU,SAAS,KAAK,gBAAgB,EAC1C,YAAY,UAAU,MAAM,GAAG,CAAC,KAAK,gBAAgB,OAAO;IAE9D,SAAS,MAAM,EAAE,MAAM,WAAW,UAAU;GAC7C,SAAQ,GAAG;IACV,SAAS,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE,UAAU;GAChD;GACD,OAAO,OAAO,KAAK,OAAO;EAC3B;AACD,SAAO;CACR;;;;;;CAOD,wBAAgC;AAC9B,SAAO,GAAG,CACR,CAAC,qBAAqB,EAAE,KAAK,QAAQ,OAAO,+EAA+E,EAAE,KAAK,gBAAgB,mBAAmB,CAAC,EACtK,GAAG,KAAK,QAAQ,IACd,CAAC,GAAG,MACF,GAAG,KAAK,gBAAgB,OAAO,EAAE,IAAI,IAAI,KAAK,gBAAgB,EAAE,EAAE,EAC/D,uBAAuB,CACvB,MAAM,CAAC,EAAE,EAAE,KAAK,iBAAiB,CACvC,AACF,EAAC,KAAK,OAAO,CAAC,EAAE,CAAC;CACnB;AACF"}
1
+ {"version":3,"file":"combining.cjs","names":["BaseOutputParser","fields: BaseOutputParser | CombiningOutputParserFields","input: string","callbacks?: Callbacks","ret: CombinedOutput"],"sources":["../../src/output_parsers/combining.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { BaseOutputParser } from \"@langchain/core/output_parsers\";\n\n/**\n * Type for the combined output of the CombiningOutputParser class.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CombinedOutput = Record<string, any>;\n\n/**\n * Interface for the fields required by the CombiningOutputParser class.\n */\nexport interface CombiningOutputParserFields {\n parsers: BaseOutputParser[];\n}\n\n/**\n * Class to combine multiple output parsers\n * @augments BaseOutputParser\n */\nexport class CombiningOutputParser extends BaseOutputParser<object> {\n static lc_name() {\n return \"CombiningOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"combining\"];\n\n lc_serializable = true;\n\n parsers: BaseOutputParser[];\n\n outputDelimiter = \"-----\";\n\n constructor(fields: CombiningOutputParserFields);\n\n constructor(...parsers: BaseOutputParser[]);\n\n constructor(\n fields: BaseOutputParser | CombiningOutputParserFields,\n ...parsers: BaseOutputParser[]\n ) {\n if (parsers.length > 0 || !(\"parsers\" in fields)) {\n // eslint-disable-next-line no-param-reassign\n fields = {\n parsers: [fields as BaseOutputParser, ...parsers],\n };\n }\n super(fields);\n this.parsers = fields.parsers;\n }\n\n /**\n * Method to parse an input string using the parsers in the parsers array.\n * The parsed outputs are combined into a single object and returned.\n * @param input The input string to parse.\n * @param callbacks Optional Callbacks object.\n * @returns A Promise that resolves to a CombinedOutput object.\n */\n async parse(input: string, callbacks?: Callbacks): Promise<CombinedOutput> {\n const inputs = input\n .trim()\n .split(\n new RegExp(`${this.outputDelimiter}Output \\\\d+${this.outputDelimiter}`)\n )\n .slice(1);\n const ret: CombinedOutput = {};\n for (const [i, p] of this.parsers.entries()) {\n let parsed;\n try {\n let extracted = inputs[i].includes(\"```\")\n ? inputs[i].trim().split(/```/)[1]\n : inputs[i].trim();\n if (extracted.endsWith(this.outputDelimiter)) {\n extracted = extracted.slice(0, -this.outputDelimiter.length);\n }\n parsed = await p.parse(extracted, callbacks);\n } catch {\n parsed = await p.parse(input.trim(), callbacks);\n }\n Object.assign(ret, parsed);\n }\n return ret;\n }\n\n /**\n * Method to get instructions on how to format the LLM output. The\n * instructions are based on the parsers array and the outputDelimiter.\n * @returns A string with format instructions.\n */\n getFormatInstructions(): string {\n return `${[\n `Return the following ${this.parsers.length} outputs, each formatted as described below. Include the delimiter characters \"${this.outputDelimiter}\" in your response:`,\n ...this.parsers.map(\n (p, i) =>\n `${this.outputDelimiter}Output ${i + 1}${this.outputDelimiter}\\n${p\n .getFormatInstructions()\n .trim()}\\n${this.outputDelimiter}`\n ),\n ].join(\"\\n\\n\")}\\n`;\n }\n}\n"],"mappings":";;;;;;;;AAoBA,IAAa,wBAAb,cAA2CA,iDAAyB;CAClE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAY;CAE3D,kBAAkB;CAElB;CAEA,kBAAkB;CAMlB,YACEC,QACA,GAAG,SACH;AACA,MAAI,QAAQ,SAAS,KAAK,EAAE,aAAa,SAEvC,SAAS,EACP,SAAS,CAAC,QAA4B,GAAG,OAAQ,EAClD;EAEH,MAAM,OAAO;EACb,KAAK,UAAU,OAAO;CACvB;;;;;;;;CASD,MAAM,MAAMC,OAAeC,WAAgD;EACzE,MAAM,SAAS,MACZ,MAAM,CACN,sBACC,IAAI,OAAO,GAAG,KAAK,gBAAgB,WAAW,EAAE,KAAK,iBAAiB,EACvE,CACA,MAAM,EAAE;EACX,MAAMC,MAAsB,CAAE;AAC9B,OAAK,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,SAAS,EAAE;GAC3C,IAAI;AACJ,OAAI;IACF,IAAI,YAAY,OAAO,GAAG,SAAS,MAAM,GACrC,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,KAC9B,OAAO,GAAG,MAAM;AACpB,QAAI,UAAU,SAAS,KAAK,gBAAgB,EAC1C,YAAY,UAAU,MAAM,GAAG,CAAC,KAAK,gBAAgB,OAAO;IAE9D,SAAS,MAAM,EAAE,MAAM,WAAW,UAAU;GAC7C,QAAO;IACN,SAAS,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE,UAAU;GAChD;GACD,OAAO,OAAO,KAAK,OAAO;EAC3B;AACD,SAAO;CACR;;;;;;CAOD,wBAAgC;AAC9B,SAAO,GAAG,CACR,CAAC,qBAAqB,EAAE,KAAK,QAAQ,OAAO,+EAA+E,EAAE,KAAK,gBAAgB,mBAAmB,CAAC,EACtK,GAAG,KAAK,QAAQ,IACd,CAAC,GAAG,MACF,GAAG,KAAK,gBAAgB,OAAO,EAAE,IAAI,IAAI,KAAK,gBAAgB,EAAE,EAAE,EAC/D,uBAAuB,CACvB,MAAM,CAAC,EAAE,EAAE,KAAK,iBAAiB,CACvC,AACF,EAAC,KAAK,OAAO,CAAC,EAAE,CAAC;CACnB;AACF"}
@@ -38,7 +38,7 @@ var CombiningOutputParser = class extends BaseOutputParser {
38
38
  let extracted = inputs[i].includes("```") ? inputs[i].trim().split(/```/)[1] : inputs[i].trim();
39
39
  if (extracted.endsWith(this.outputDelimiter)) extracted = extracted.slice(0, -this.outputDelimiter.length);
40
40
  parsed = await p.parse(extracted, callbacks);
41
- } catch (e) {
41
+ } catch {
42
42
  parsed = await p.parse(input.trim(), callbacks);
43
43
  }
44
44
  Object.assign(ret, parsed);
@@ -1 +1 @@
1
- {"version":3,"file":"combining.js","names":["fields: BaseOutputParser | CombiningOutputParserFields","input: string","callbacks?: Callbacks","ret: CombinedOutput"],"sources":["../../src/output_parsers/combining.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { BaseOutputParser } from \"@langchain/core/output_parsers\";\n\n/**\n * Type for the combined output of the CombiningOutputParser class.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CombinedOutput = Record<string, any>;\n\n/**\n * Interface for the fields required by the CombiningOutputParser class.\n */\nexport interface CombiningOutputParserFields {\n parsers: BaseOutputParser[];\n}\n\n/**\n * Class to combine multiple output parsers\n * @augments BaseOutputParser\n */\nexport class CombiningOutputParser extends BaseOutputParser<object> {\n static lc_name() {\n return \"CombiningOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"combining\"];\n\n lc_serializable = true;\n\n parsers: BaseOutputParser[];\n\n outputDelimiter = \"-----\";\n\n constructor(fields: CombiningOutputParserFields);\n\n constructor(...parsers: BaseOutputParser[]);\n\n constructor(\n fields: BaseOutputParser | CombiningOutputParserFields,\n ...parsers: BaseOutputParser[]\n ) {\n if (parsers.length > 0 || !(\"parsers\" in fields)) {\n // eslint-disable-next-line no-param-reassign\n fields = {\n parsers: [fields as BaseOutputParser, ...parsers],\n };\n }\n super(fields);\n this.parsers = fields.parsers;\n }\n\n /**\n * Method to parse an input string using the parsers in the parsers array.\n * The parsed outputs are combined into a single object and returned.\n * @param input The input string to parse.\n * @param callbacks Optional Callbacks object.\n * @returns A Promise that resolves to a CombinedOutput object.\n */\n async parse(input: string, callbacks?: Callbacks): Promise<CombinedOutput> {\n const inputs = input\n .trim()\n .split(\n new RegExp(`${this.outputDelimiter}Output \\\\d+${this.outputDelimiter}`)\n )\n .slice(1);\n const ret: CombinedOutput = {};\n for (const [i, p] of this.parsers.entries()) {\n let parsed;\n try {\n let extracted = inputs[i].includes(\"```\")\n ? inputs[i].trim().split(/```/)[1]\n : inputs[i].trim();\n if (extracted.endsWith(this.outputDelimiter)) {\n extracted = extracted.slice(0, -this.outputDelimiter.length);\n }\n parsed = await p.parse(extracted, callbacks);\n } catch (e) {\n parsed = await p.parse(input.trim(), callbacks);\n }\n Object.assign(ret, parsed);\n }\n return ret;\n }\n\n /**\n * Method to get instructions on how to format the LLM output. The\n * instructions are based on the parsers array and the outputDelimiter.\n * @returns A string with format instructions.\n */\n getFormatInstructions(): string {\n return `${[\n `Return the following ${this.parsers.length} outputs, each formatted as described below. Include the delimiter characters \"${this.outputDelimiter}\" in your response:`,\n ...this.parsers.map(\n (p, i) =>\n `${this.outputDelimiter}Output ${i + 1}${this.outputDelimiter}\\n${p\n .getFormatInstructions()\n .trim()}\\n${this.outputDelimiter}`\n ),\n ].join(\"\\n\\n\")}\\n`;\n }\n}\n"],"mappings":";;;;;;;AAoBA,IAAa,wBAAb,cAA2C,iBAAyB;CAClE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAY;CAE3D,kBAAkB;CAElB;CAEA,kBAAkB;CAMlB,YACEA,QACA,GAAG,SACH;AACA,MAAI,QAAQ,SAAS,KAAK,EAAE,aAAa,SAEvC,SAAS,EACP,SAAS,CAAC,QAA4B,GAAG,OAAQ,EAClD;EAEH,MAAM,OAAO;EACb,KAAK,UAAU,OAAO;CACvB;;;;;;;;CASD,MAAM,MAAMC,OAAeC,WAAgD;EACzE,MAAM,SAAS,MACZ,MAAM,CACN,sBACC,IAAI,OAAO,GAAG,KAAK,gBAAgB,WAAW,EAAE,KAAK,iBAAiB,EACvE,CACA,MAAM,EAAE;EACX,MAAMC,MAAsB,CAAE;AAC9B,OAAK,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,SAAS,EAAE;GAC3C,IAAI;AACJ,OAAI;IACF,IAAI,YAAY,OAAO,GAAG,SAAS,MAAM,GACrC,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,KAC9B,OAAO,GAAG,MAAM;AACpB,QAAI,UAAU,SAAS,KAAK,gBAAgB,EAC1C,YAAY,UAAU,MAAM,GAAG,CAAC,KAAK,gBAAgB,OAAO;IAE9D,SAAS,MAAM,EAAE,MAAM,WAAW,UAAU;GAC7C,SAAQ,GAAG;IACV,SAAS,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE,UAAU;GAChD;GACD,OAAO,OAAO,KAAK,OAAO;EAC3B;AACD,SAAO;CACR;;;;;;CAOD,wBAAgC;AAC9B,SAAO,GAAG,CACR,CAAC,qBAAqB,EAAE,KAAK,QAAQ,OAAO,+EAA+E,EAAE,KAAK,gBAAgB,mBAAmB,CAAC,EACtK,GAAG,KAAK,QAAQ,IACd,CAAC,GAAG,MACF,GAAG,KAAK,gBAAgB,OAAO,EAAE,IAAI,IAAI,KAAK,gBAAgB,EAAE,EAAE,EAC/D,uBAAuB,CACvB,MAAM,CAAC,EAAE,EAAE,KAAK,iBAAiB,CACvC,AACF,EAAC,KAAK,OAAO,CAAC,EAAE,CAAC;CACnB;AACF"}
1
+ {"version":3,"file":"combining.js","names":["fields: BaseOutputParser | CombiningOutputParserFields","input: string","callbacks?: Callbacks","ret: CombinedOutput"],"sources":["../../src/output_parsers/combining.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { BaseOutputParser } from \"@langchain/core/output_parsers\";\n\n/**\n * Type for the combined output of the CombiningOutputParser class.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CombinedOutput = Record<string, any>;\n\n/**\n * Interface for the fields required by the CombiningOutputParser class.\n */\nexport interface CombiningOutputParserFields {\n parsers: BaseOutputParser[];\n}\n\n/**\n * Class to combine multiple output parsers\n * @augments BaseOutputParser\n */\nexport class CombiningOutputParser extends BaseOutputParser<object> {\n static lc_name() {\n return \"CombiningOutputParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"combining\"];\n\n lc_serializable = true;\n\n parsers: BaseOutputParser[];\n\n outputDelimiter = \"-----\";\n\n constructor(fields: CombiningOutputParserFields);\n\n constructor(...parsers: BaseOutputParser[]);\n\n constructor(\n fields: BaseOutputParser | CombiningOutputParserFields,\n ...parsers: BaseOutputParser[]\n ) {\n if (parsers.length > 0 || !(\"parsers\" in fields)) {\n // eslint-disable-next-line no-param-reassign\n fields = {\n parsers: [fields as BaseOutputParser, ...parsers],\n };\n }\n super(fields);\n this.parsers = fields.parsers;\n }\n\n /**\n * Method to parse an input string using the parsers in the parsers array.\n * The parsed outputs are combined into a single object and returned.\n * @param input The input string to parse.\n * @param callbacks Optional Callbacks object.\n * @returns A Promise that resolves to a CombinedOutput object.\n */\n async parse(input: string, callbacks?: Callbacks): Promise<CombinedOutput> {\n const inputs = input\n .trim()\n .split(\n new RegExp(`${this.outputDelimiter}Output \\\\d+${this.outputDelimiter}`)\n )\n .slice(1);\n const ret: CombinedOutput = {};\n for (const [i, p] of this.parsers.entries()) {\n let parsed;\n try {\n let extracted = inputs[i].includes(\"```\")\n ? inputs[i].trim().split(/```/)[1]\n : inputs[i].trim();\n if (extracted.endsWith(this.outputDelimiter)) {\n extracted = extracted.slice(0, -this.outputDelimiter.length);\n }\n parsed = await p.parse(extracted, callbacks);\n } catch {\n parsed = await p.parse(input.trim(), callbacks);\n }\n Object.assign(ret, parsed);\n }\n return ret;\n }\n\n /**\n * Method to get instructions on how to format the LLM output. The\n * instructions are based on the parsers array and the outputDelimiter.\n * @returns A string with format instructions.\n */\n getFormatInstructions(): string {\n return `${[\n `Return the following ${this.parsers.length} outputs, each formatted as described below. Include the delimiter characters \"${this.outputDelimiter}\" in your response:`,\n ...this.parsers.map(\n (p, i) =>\n `${this.outputDelimiter}Output ${i + 1}${this.outputDelimiter}\\n${p\n .getFormatInstructions()\n .trim()}\\n${this.outputDelimiter}`\n ),\n ].join(\"\\n\\n\")}\\n`;\n }\n}\n"],"mappings":";;;;;;;AAoBA,IAAa,wBAAb,cAA2C,iBAAyB;CAClE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAY;CAE3D,kBAAkB;CAElB;CAEA,kBAAkB;CAMlB,YACEA,QACA,GAAG,SACH;AACA,MAAI,QAAQ,SAAS,KAAK,EAAE,aAAa,SAEvC,SAAS,EACP,SAAS,CAAC,QAA4B,GAAG,OAAQ,EAClD;EAEH,MAAM,OAAO;EACb,KAAK,UAAU,OAAO;CACvB;;;;;;;;CASD,MAAM,MAAMC,OAAeC,WAAgD;EACzE,MAAM,SAAS,MACZ,MAAM,CACN,sBACC,IAAI,OAAO,GAAG,KAAK,gBAAgB,WAAW,EAAE,KAAK,iBAAiB,EACvE,CACA,MAAM,EAAE;EACX,MAAMC,MAAsB,CAAE;AAC9B,OAAK,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,SAAS,EAAE;GAC3C,IAAI;AACJ,OAAI;IACF,IAAI,YAAY,OAAO,GAAG,SAAS,MAAM,GACrC,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,KAC9B,OAAO,GAAG,MAAM;AACpB,QAAI,UAAU,SAAS,KAAK,gBAAgB,EAC1C,YAAY,UAAU,MAAM,GAAG,CAAC,KAAK,gBAAgB,OAAO;IAE9D,SAAS,MAAM,EAAE,MAAM,WAAW,UAAU;GAC7C,QAAO;IACN,SAAS,MAAM,EAAE,MAAM,MAAM,MAAM,EAAE,UAAU;GAChD;GACD,OAAO,OAAO,KAAK,OAAO;EAC3B;AACD,SAAO;CACR;;;;;;CAOD,wBAAgC;AAC9B,SAAO,GAAG,CACR,CAAC,qBAAqB,EAAE,KAAK,QAAQ,OAAO,+EAA+E,EAAE,KAAK,gBAAgB,mBAAmB,CAAC,EACtK,GAAG,KAAK,QAAQ,IACd,CAAC,GAAG,MACF,GAAG,KAAK,gBAAgB,OAAO,EAAE,IAAI,IAAI,KAAK,gBAAgB,EAAE,EAAE,EAC/D,uBAAuB,CACvB,MAAM,CAAC,EAAE,EAAE,KAAK,iBAAiB,CACvC,AACF,EAAC,KAAK,OAAO,CAAC,EAAE,CAAC;CACnB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"array_literal_expression_handler.cjs","names":["NodeHandler","node: ExpressionNode","ASTParser","node: ArrayExpression"],"sources":["../../../src/output_parsers/expression_type_handlers/array_literal_expression_handler.ts"],"sourcesContent":["import { NodeHandler, ASTParser } from \"./base.js\";\nimport { ArrayLiteralType } from \"./types.js\";\nimport type {\n ExpressionNode,\n ArrayExpression,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Handles array expressions in the LangChain Expression Language (LCEL).\n * It extends the NodeHandler base class, providing functionality to\n * accept and handle array expressions.\n */\nexport class ArrayLiteralExpressionHandler extends NodeHandler {\n /**\n * Checks if the given node is an array expression. If it is, the method\n * returns the node; otherwise, it returns false.\n * @param node The ExpressionNode to check.\n * @returns A Promise that resolves to either the ArrayExpression node if the node is an array expression, or false otherwise.\n */\n async accepts(node: ExpressionNode): Promise<ArrayExpression | boolean> {\n if (ASTParser.isArrayExpression(node)) {\n return node;\n } else {\n return false;\n }\n }\n\n /**\n * Handles the given array expression node. If the handler doesn't have a\n * parent handler, it throws an error. Otherwise, it returns an object\n * representing the array literal.\n * @param node The ArrayExpression node to handle.\n * @returns A Promise that resolves to an object representing the array literal.\n */\n async handle(node: ArrayExpression): Promise<ArrayLiteralType> {\n if (!this.parentHandler) {\n throw new Error(\n \"ArrayLiteralExpressionHandler must have a parent handler\"\n );\n }\n return {\n type: \"array_literal\",\n values: await Promise.all(\n node.elements.map((innerNode) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.parentHandler!.handle(innerNode as ExpressionNode)\n )\n ),\n };\n }\n}\n"],"mappings":";;;;;;;;AAYA,IAAa,gCAAb,cAAmDA,yBAAY;;;;;;;CAO7D,MAAM,QAAQC,MAA0D;AACtE,MAAIC,uBAAU,kBAAkB,KAAK,CACnC,QAAO;MAEP,QAAO;CAEV;;;;;;;;CASD,MAAM,OAAOC,MAAkD;AAC7D,MAAI,CAAC,KAAK,cACR,OAAM,IAAI,MACR;AAGJ,SAAO;GACL,MAAM;GACN,QAAQ,MAAM,QAAQ,IACpB,KAAK,SAAS,IAAI,CAAC,cAEjB,KAAK,cAAe,OAAO,UAA4B,CACxD,CACF;EACF;CACF;AACF"}
1
+ {"version":3,"file":"array_literal_expression_handler.cjs","names":["NodeHandler","node: ExpressionNode","ASTParser","node: ArrayExpression"],"sources":["../../../src/output_parsers/expression_type_handlers/array_literal_expression_handler.ts"],"sourcesContent":["import { NodeHandler, ASTParser } from \"./base.js\";\nimport { ArrayLiteralType } from \"./types.js\";\nimport type {\n ExpressionNode,\n ArrayExpression,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Handles array expressions in the LangChain Expression Language (LCEL).\n * It extends the NodeHandler base class, providing functionality to\n * accept and handle array expressions.\n */\nexport class ArrayLiteralExpressionHandler extends NodeHandler {\n /**\n * Checks if the given node is an array expression. If it is, the method\n * returns the node; otherwise, it returns false.\n * @param node The ExpressionNode to check.\n * @returns A Promise that resolves to either the ArrayExpression node if the node is an array expression, or false otherwise.\n */\n async accepts(node: ExpressionNode): Promise<ArrayExpression | boolean> {\n if (ASTParser.isArrayExpression(node)) {\n return node;\n } else {\n return false;\n }\n }\n\n /**\n * Handles the given array expression node. If the handler doesn't have a\n * parent handler, it throws an error. Otherwise, it returns an object\n * representing the array literal.\n * @param node The ArrayExpression node to handle.\n * @returns A Promise that resolves to an object representing the array literal.\n */\n async handle(node: ArrayExpression): Promise<ArrayLiteralType> {\n if (!this.parentHandler) {\n throw new Error(\n \"ArrayLiteralExpressionHandler must have a parent handler\"\n );\n }\n return {\n type: \"array_literal\",\n values: await Promise.all(\n node.elements.map((innerNode) =>\n this.parentHandler!.handle(innerNode as ExpressionNode)\n )\n ),\n };\n }\n}\n"],"mappings":";;;;;;;;AAYA,IAAa,gCAAb,cAAmDA,yBAAY;;;;;;;CAO7D,MAAM,QAAQC,MAA0D;AACtE,MAAIC,uBAAU,kBAAkB,KAAK,CACnC,QAAO;MAEP,QAAO;CAEV;;;;;;;;CASD,MAAM,OAAOC,MAAkD;AAC7D,MAAI,CAAC,KAAK,cACR,OAAM,IAAI,MACR;AAGJ,SAAO;GACL,MAAM;GACN,QAAQ,MAAM,QAAQ,IACpB,KAAK,SAAS,IAAI,CAAC,cACjB,KAAK,cAAe,OAAO,UAA4B,CACxD,CACF;EACF;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"array_literal_expression_handler.js","names":["node: ExpressionNode","node: ArrayExpression"],"sources":["../../../src/output_parsers/expression_type_handlers/array_literal_expression_handler.ts"],"sourcesContent":["import { NodeHandler, ASTParser } from \"./base.js\";\nimport { ArrayLiteralType } from \"./types.js\";\nimport type {\n ExpressionNode,\n ArrayExpression,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Handles array expressions in the LangChain Expression Language (LCEL).\n * It extends the NodeHandler base class, providing functionality to\n * accept and handle array expressions.\n */\nexport class ArrayLiteralExpressionHandler extends NodeHandler {\n /**\n * Checks if the given node is an array expression. If it is, the method\n * returns the node; otherwise, it returns false.\n * @param node The ExpressionNode to check.\n * @returns A Promise that resolves to either the ArrayExpression node if the node is an array expression, or false otherwise.\n */\n async accepts(node: ExpressionNode): Promise<ArrayExpression | boolean> {\n if (ASTParser.isArrayExpression(node)) {\n return node;\n } else {\n return false;\n }\n }\n\n /**\n * Handles the given array expression node. If the handler doesn't have a\n * parent handler, it throws an error. Otherwise, it returns an object\n * representing the array literal.\n * @param node The ArrayExpression node to handle.\n * @returns A Promise that resolves to an object representing the array literal.\n */\n async handle(node: ArrayExpression): Promise<ArrayLiteralType> {\n if (!this.parentHandler) {\n throw new Error(\n \"ArrayLiteralExpressionHandler must have a parent handler\"\n );\n }\n return {\n type: \"array_literal\",\n values: await Promise.all(\n node.elements.map((innerNode) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.parentHandler!.handle(innerNode as ExpressionNode)\n )\n ),\n };\n }\n}\n"],"mappings":";;;;;;;;AAYA,IAAa,gCAAb,cAAmD,YAAY;;;;;;;CAO7D,MAAM,QAAQA,MAA0D;AACtE,MAAI,UAAU,kBAAkB,KAAK,CACnC,QAAO;MAEP,QAAO;CAEV;;;;;;;;CASD,MAAM,OAAOC,MAAkD;AAC7D,MAAI,CAAC,KAAK,cACR,OAAM,IAAI,MACR;AAGJ,SAAO;GACL,MAAM;GACN,QAAQ,MAAM,QAAQ,IACpB,KAAK,SAAS,IAAI,CAAC,cAEjB,KAAK,cAAe,OAAO,UAA4B,CACxD,CACF;EACF;CACF;AACF"}
1
+ {"version":3,"file":"array_literal_expression_handler.js","names":["node: ExpressionNode","node: ArrayExpression"],"sources":["../../../src/output_parsers/expression_type_handlers/array_literal_expression_handler.ts"],"sourcesContent":["import { NodeHandler, ASTParser } from \"./base.js\";\nimport { ArrayLiteralType } from \"./types.js\";\nimport type {\n ExpressionNode,\n ArrayExpression,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Handles array expressions in the LangChain Expression Language (LCEL).\n * It extends the NodeHandler base class, providing functionality to\n * accept and handle array expressions.\n */\nexport class ArrayLiteralExpressionHandler extends NodeHandler {\n /**\n * Checks if the given node is an array expression. If it is, the method\n * returns the node; otherwise, it returns false.\n * @param node The ExpressionNode to check.\n * @returns A Promise that resolves to either the ArrayExpression node if the node is an array expression, or false otherwise.\n */\n async accepts(node: ExpressionNode): Promise<ArrayExpression | boolean> {\n if (ASTParser.isArrayExpression(node)) {\n return node;\n } else {\n return false;\n }\n }\n\n /**\n * Handles the given array expression node. If the handler doesn't have a\n * parent handler, it throws an error. Otherwise, it returns an object\n * representing the array literal.\n * @param node The ArrayExpression node to handle.\n * @returns A Promise that resolves to an object representing the array literal.\n */\n async handle(node: ArrayExpression): Promise<ArrayLiteralType> {\n if (!this.parentHandler) {\n throw new Error(\n \"ArrayLiteralExpressionHandler must have a parent handler\"\n );\n }\n return {\n type: \"array_literal\",\n values: await Promise.all(\n node.elements.map((innerNode) =>\n this.parentHandler!.handle(innerNode as ExpressionNode)\n )\n ),\n };\n }\n}\n"],"mappings":";;;;;;;;AAYA,IAAa,gCAAb,cAAmD,YAAY;;;;;;;CAO7D,MAAM,QAAQA,MAA0D;AACtE,MAAI,UAAU,kBAAkB,KAAK,CACnC,QAAO;MAEP,QAAO;CAEV;;;;;;;;CASD,MAAM,OAAOC,MAAkD;AAC7D,MAAI,CAAC,KAAK,cACR,OAAM,IAAI,MACR;AAGJ,SAAO;GACL,MAAM;GACN,QAAQ,MAAM,QAAQ,IACpB,KAAK,SAAS,IAAI,CAAC,cACjB,KAAK,cAAe,OAAO,UAA4B,CACxD,CACF;EACF;CACF;AACF"}
@@ -30,7 +30,7 @@ var ASTParser = class ASTParser {
30
30
  ASTParser.astParseInstance = parse;
31
31
  }
32
32
  return ASTParser.astParseInstance;
33
- } catch (e) {
33
+ } catch {
34
34
  throw new Error(`Failed to import peggy. Please install peggy (i.e. "npm install peggy" or "pnpm install peggy").`);
35
35
  }
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.cjs","names":["parentHandler?: NodeHandler","GRAMMAR","node: ExpressionNode"],"sources":["../../../src/output_parsers/expression_type_handlers/base.ts"],"sourcesContent":["import { GRAMMAR } from \"./grammar/parser_grammar.js\";\nimport type {\n ExpressionNode,\n Program,\n ExpressionStatement,\n CallExpression,\n StringLiteral,\n NumericLiteral,\n BooleanLiteral,\n Identifier,\n ObjectExpression,\n ArrayExpression,\n PropertyAssignment,\n MemberExpression,\n ParseFunction,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Abstract class for handling nodes in an expression language. Subclasses\n * must implement the `accepts` and `handle` methods.\n */\nexport abstract class NodeHandler {\n constructor(protected parentHandler?: NodeHandler) {}\n\n /**\n * Determines whether the given node is acceptable.\n * @param node The node to be checked.\n * @returns A Promise that resolves to either the node itself or a boolean indicating whether the node is acceptable.\n */\n abstract accepts(node: ExpressionNode): Promise<ExpressionNode | boolean>;\n\n /**\n * Handles the given node. The specifics of how the node is handled are\n * determined by the subclass implementation.\n * @param node The node to be handled.\n * @returns A Promise that resolves to the result of handling the node.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract handle(node: ExpressionNode): Promise<any>;\n}\n\n/**\n * Utility class for parsing Abstract Syntax Trees (ASTs). Contains\n * methods for identifying the type of a given node and a method for\n * importing and generating a parser using the Peggy library.\n */\nexport class ASTParser {\n static astParseInstance: ParseFunction;\n\n /**\n * Imports and generates a parser using the Peggy library.\n * @returns A Promise that resolves to the parser instance.\n */\n static async importASTParser() {\n try {\n if (!ASTParser.astParseInstance) {\n const { default: peggy } = await import(\"peggy\");\n const parser = peggy.generate(GRAMMAR);\n const { parse } = parser;\n ASTParser.astParseInstance = parse as ParseFunction;\n }\n return ASTParser.astParseInstance;\n } catch (e) {\n throw new Error(\n `Failed to import peggy. Please install peggy (i.e. \"npm install peggy\" or \"pnpm install peggy\").`\n );\n }\n }\n\n /**\n * Checks if the given node is a Program node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a Program node.\n */\n static isProgram(node: ExpressionNode): node is Program {\n return node.type === \"Program\";\n }\n\n /**\n * Checks if the given node is an ExpressionStatement node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ExpressionStatement node.\n */\n static isExpressionStatement(\n node: ExpressionNode\n ): node is ExpressionStatement {\n return node.type === \"ExpressionStatement\";\n }\n\n /**\n * Checks if the given node is a CallExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a CallExpression node.\n */\n static isCallExpression(node: ExpressionNode): node is CallExpression {\n return node.type === \"CallExpression\";\n }\n\n /**\n * Checks if the given node is a StringLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a StringLiteral node.\n */\n static isStringLiteral(node: ExpressionNode): node is StringLiteral {\n return node.type === \"StringLiteral\" && typeof node.value === \"string\";\n }\n\n /**\n * Checks if the given node is a NumericLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a NumericLiteral node.\n */\n static isNumericLiteral(node: ExpressionNode): node is NumericLiteral {\n return node.type === \"NumericLiteral\" && typeof node.value === \"number\";\n }\n\n /**\n * Checks if the given node is a BooleanLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a BooleanLiteral node.\n */\n static isBooleanLiteral(node: ExpressionNode): node is BooleanLiteral {\n return node.type === \"BooleanLiteral\" && typeof node.value === \"boolean\";\n }\n\n /**\n * Checks if the given node is an Identifier node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an Identifier node.\n */\n static isIdentifier(node: ExpressionNode): node is Identifier {\n return node.type === \"Identifier\";\n }\n\n /**\n * Checks if the given node is an ObjectExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ObjectExpression node.\n */\n static isObjectExpression(node: ExpressionNode): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n }\n\n /**\n * Checks if the given node is an ArrayExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ArrayExpression node.\n */\n static isArrayExpression(node: ExpressionNode): node is ArrayExpression {\n return node.type === \"ArrayExpression\";\n }\n\n /**\n * Checks if the given node is a PropertyAssignment node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a PropertyAssignment node.\n */\n static isPropertyAssignment(\n node: ExpressionNode\n ): node is PropertyAssignment {\n return node.type === \"PropertyAssignment\";\n }\n\n /**\n * Checks if the given node is a MemberExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a MemberExpression node.\n */\n static isMemberExpression(node: ExpressionNode): node is MemberExpression {\n return node.type === \"MemberExpression\";\n }\n}\n"],"mappings":";;;;;;;AAqBA,IAAsB,cAAtB,MAAkC;CAChC,YAAsBA,eAA6B;EAA7B;CAA+B;AAiBtD;;;;;;AAOD,IAAa,YAAb,MAAa,UAAU;CACrB,OAAO;;;;;CAMP,aAAa,kBAAkB;AAC7B,MAAI;AACF,OAAI,CAAC,UAAU,kBAAkB;IAC/B,MAAM,EAAE,SAAS,OAAO,GAAG,MAAM,OAAO;IACxC,MAAM,SAAS,MAAM,SAASC,+BAAQ;IACtC,MAAM,EAAE,OAAO,GAAG;IAClB,UAAU,mBAAmB;GAC9B;AACD,UAAO,UAAU;EAClB,SAAQ,GAAG;AACV,SAAM,IAAI,MACR,CAAC,gGAAgG,CAAC;EAErG;CACF;;;;;;CAOD,OAAO,UAAUC,MAAuC;AACtD,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,sBACLA,MAC6B;AAC7B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,gBAAgBA,MAA6C;AAClE,SAAO,KAAK,SAAS,mBAAmB,OAAO,KAAK,UAAU;CAC/D;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,aAAaA,MAA0C;AAC5D,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,kBAAkBA,MAA+C;AACtE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,qBACLA,MAC4B;AAC5B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;AACF"}
1
+ {"version":3,"file":"base.cjs","names":["parentHandler?: NodeHandler","GRAMMAR","node: ExpressionNode"],"sources":["../../../src/output_parsers/expression_type_handlers/base.ts"],"sourcesContent":["import { GRAMMAR } from \"./grammar/parser_grammar.js\";\nimport type {\n ExpressionNode,\n Program,\n ExpressionStatement,\n CallExpression,\n StringLiteral,\n NumericLiteral,\n BooleanLiteral,\n Identifier,\n ObjectExpression,\n ArrayExpression,\n PropertyAssignment,\n MemberExpression,\n ParseFunction,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Abstract class for handling nodes in an expression language. Subclasses\n * must implement the `accepts` and `handle` methods.\n */\nexport abstract class NodeHandler {\n constructor(protected parentHandler?: NodeHandler) {}\n\n /**\n * Determines whether the given node is acceptable.\n * @param node The node to be checked.\n * @returns A Promise that resolves to either the node itself or a boolean indicating whether the node is acceptable.\n */\n abstract accepts(node: ExpressionNode): Promise<ExpressionNode | boolean>;\n\n /**\n * Handles the given node. The specifics of how the node is handled are\n * determined by the subclass implementation.\n * @param node The node to be handled.\n * @returns A Promise that resolves to the result of handling the node.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract handle(node: ExpressionNode): Promise<any>;\n}\n\n/**\n * Utility class for parsing Abstract Syntax Trees (ASTs). Contains\n * methods for identifying the type of a given node and a method for\n * importing and generating a parser using the Peggy library.\n */\nexport class ASTParser {\n static astParseInstance: ParseFunction;\n\n /**\n * Imports and generates a parser using the Peggy library.\n * @returns A Promise that resolves to the parser instance.\n */\n static async importASTParser() {\n try {\n if (!ASTParser.astParseInstance) {\n const { default: peggy } = await import(\"peggy\");\n const parser = peggy.generate(GRAMMAR);\n const { parse } = parser;\n ASTParser.astParseInstance = parse as ParseFunction;\n }\n return ASTParser.astParseInstance;\n } catch {\n throw new Error(\n `Failed to import peggy. Please install peggy (i.e. \"npm install peggy\" or \"pnpm install peggy\").`\n );\n }\n }\n\n /**\n * Checks if the given node is a Program node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a Program node.\n */\n static isProgram(node: ExpressionNode): node is Program {\n return node.type === \"Program\";\n }\n\n /**\n * Checks if the given node is an ExpressionStatement node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ExpressionStatement node.\n */\n static isExpressionStatement(\n node: ExpressionNode\n ): node is ExpressionStatement {\n return node.type === \"ExpressionStatement\";\n }\n\n /**\n * Checks if the given node is a CallExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a CallExpression node.\n */\n static isCallExpression(node: ExpressionNode): node is CallExpression {\n return node.type === \"CallExpression\";\n }\n\n /**\n * Checks if the given node is a StringLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a StringLiteral node.\n */\n static isStringLiteral(node: ExpressionNode): node is StringLiteral {\n return node.type === \"StringLiteral\" && typeof node.value === \"string\";\n }\n\n /**\n * Checks if the given node is a NumericLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a NumericLiteral node.\n */\n static isNumericLiteral(node: ExpressionNode): node is NumericLiteral {\n return node.type === \"NumericLiteral\" && typeof node.value === \"number\";\n }\n\n /**\n * Checks if the given node is a BooleanLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a BooleanLiteral node.\n */\n static isBooleanLiteral(node: ExpressionNode): node is BooleanLiteral {\n return node.type === \"BooleanLiteral\" && typeof node.value === \"boolean\";\n }\n\n /**\n * Checks if the given node is an Identifier node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an Identifier node.\n */\n static isIdentifier(node: ExpressionNode): node is Identifier {\n return node.type === \"Identifier\";\n }\n\n /**\n * Checks if the given node is an ObjectExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ObjectExpression node.\n */\n static isObjectExpression(node: ExpressionNode): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n }\n\n /**\n * Checks if the given node is an ArrayExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ArrayExpression node.\n */\n static isArrayExpression(node: ExpressionNode): node is ArrayExpression {\n return node.type === \"ArrayExpression\";\n }\n\n /**\n * Checks if the given node is a PropertyAssignment node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a PropertyAssignment node.\n */\n static isPropertyAssignment(\n node: ExpressionNode\n ): node is PropertyAssignment {\n return node.type === \"PropertyAssignment\";\n }\n\n /**\n * Checks if the given node is a MemberExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a MemberExpression node.\n */\n static isMemberExpression(node: ExpressionNode): node is MemberExpression {\n return node.type === \"MemberExpression\";\n }\n}\n"],"mappings":";;;;;;;AAqBA,IAAsB,cAAtB,MAAkC;CAChC,YAAsBA,eAA6B;EAA7B;CAA+B;AAiBtD;;;;;;AAOD,IAAa,YAAb,MAAa,UAAU;CACrB,OAAO;;;;;CAMP,aAAa,kBAAkB;AAC7B,MAAI;AACF,OAAI,CAAC,UAAU,kBAAkB;IAC/B,MAAM,EAAE,SAAS,OAAO,GAAG,MAAM,OAAO;IACxC,MAAM,SAAS,MAAM,SAASC,+BAAQ;IACtC,MAAM,EAAE,OAAO,GAAG;IAClB,UAAU,mBAAmB;GAC9B;AACD,UAAO,UAAU;EAClB,QAAO;AACN,SAAM,IAAI,MACR,CAAC,gGAAgG,CAAC;EAErG;CACF;;;;;;CAOD,OAAO,UAAUC,MAAuC;AACtD,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,sBACLA,MAC6B;AAC7B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,gBAAgBA,MAA6C;AAClE,SAAO,KAAK,SAAS,mBAAmB,OAAO,KAAK,UAAU;CAC/D;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,aAAaA,MAA0C;AAC5D,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,kBAAkBA,MAA+C;AACtE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,qBACLA,MAC4B;AAC5B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;AACF"}
@@ -30,7 +30,7 @@ var ASTParser = class ASTParser {
30
30
  ASTParser.astParseInstance = parse;
31
31
  }
32
32
  return ASTParser.astParseInstance;
33
- } catch (e) {
33
+ } catch {
34
34
  throw new Error(`Failed to import peggy. Please install peggy (i.e. "npm install peggy" or "pnpm install peggy").`);
35
35
  }
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":["parentHandler?: NodeHandler","node: ExpressionNode"],"sources":["../../../src/output_parsers/expression_type_handlers/base.ts"],"sourcesContent":["import { GRAMMAR } from \"./grammar/parser_grammar.js\";\nimport type {\n ExpressionNode,\n Program,\n ExpressionStatement,\n CallExpression,\n StringLiteral,\n NumericLiteral,\n BooleanLiteral,\n Identifier,\n ObjectExpression,\n ArrayExpression,\n PropertyAssignment,\n MemberExpression,\n ParseFunction,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Abstract class for handling nodes in an expression language. Subclasses\n * must implement the `accepts` and `handle` methods.\n */\nexport abstract class NodeHandler {\n constructor(protected parentHandler?: NodeHandler) {}\n\n /**\n * Determines whether the given node is acceptable.\n * @param node The node to be checked.\n * @returns A Promise that resolves to either the node itself or a boolean indicating whether the node is acceptable.\n */\n abstract accepts(node: ExpressionNode): Promise<ExpressionNode | boolean>;\n\n /**\n * Handles the given node. The specifics of how the node is handled are\n * determined by the subclass implementation.\n * @param node The node to be handled.\n * @returns A Promise that resolves to the result of handling the node.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract handle(node: ExpressionNode): Promise<any>;\n}\n\n/**\n * Utility class for parsing Abstract Syntax Trees (ASTs). Contains\n * methods for identifying the type of a given node and a method for\n * importing and generating a parser using the Peggy library.\n */\nexport class ASTParser {\n static astParseInstance: ParseFunction;\n\n /**\n * Imports and generates a parser using the Peggy library.\n * @returns A Promise that resolves to the parser instance.\n */\n static async importASTParser() {\n try {\n if (!ASTParser.astParseInstance) {\n const { default: peggy } = await import(\"peggy\");\n const parser = peggy.generate(GRAMMAR);\n const { parse } = parser;\n ASTParser.astParseInstance = parse as ParseFunction;\n }\n return ASTParser.astParseInstance;\n } catch (e) {\n throw new Error(\n `Failed to import peggy. Please install peggy (i.e. \"npm install peggy\" or \"pnpm install peggy\").`\n );\n }\n }\n\n /**\n * Checks if the given node is a Program node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a Program node.\n */\n static isProgram(node: ExpressionNode): node is Program {\n return node.type === \"Program\";\n }\n\n /**\n * Checks if the given node is an ExpressionStatement node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ExpressionStatement node.\n */\n static isExpressionStatement(\n node: ExpressionNode\n ): node is ExpressionStatement {\n return node.type === \"ExpressionStatement\";\n }\n\n /**\n * Checks if the given node is a CallExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a CallExpression node.\n */\n static isCallExpression(node: ExpressionNode): node is CallExpression {\n return node.type === \"CallExpression\";\n }\n\n /**\n * Checks if the given node is a StringLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a StringLiteral node.\n */\n static isStringLiteral(node: ExpressionNode): node is StringLiteral {\n return node.type === \"StringLiteral\" && typeof node.value === \"string\";\n }\n\n /**\n * Checks if the given node is a NumericLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a NumericLiteral node.\n */\n static isNumericLiteral(node: ExpressionNode): node is NumericLiteral {\n return node.type === \"NumericLiteral\" && typeof node.value === \"number\";\n }\n\n /**\n * Checks if the given node is a BooleanLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a BooleanLiteral node.\n */\n static isBooleanLiteral(node: ExpressionNode): node is BooleanLiteral {\n return node.type === \"BooleanLiteral\" && typeof node.value === \"boolean\";\n }\n\n /**\n * Checks if the given node is an Identifier node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an Identifier node.\n */\n static isIdentifier(node: ExpressionNode): node is Identifier {\n return node.type === \"Identifier\";\n }\n\n /**\n * Checks if the given node is an ObjectExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ObjectExpression node.\n */\n static isObjectExpression(node: ExpressionNode): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n }\n\n /**\n * Checks if the given node is an ArrayExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ArrayExpression node.\n */\n static isArrayExpression(node: ExpressionNode): node is ArrayExpression {\n return node.type === \"ArrayExpression\";\n }\n\n /**\n * Checks if the given node is a PropertyAssignment node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a PropertyAssignment node.\n */\n static isPropertyAssignment(\n node: ExpressionNode\n ): node is PropertyAssignment {\n return node.type === \"PropertyAssignment\";\n }\n\n /**\n * Checks if the given node is a MemberExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a MemberExpression node.\n */\n static isMemberExpression(node: ExpressionNode): node is MemberExpression {\n return node.type === \"MemberExpression\";\n }\n}\n"],"mappings":";;;;;;;AAqBA,IAAsB,cAAtB,MAAkC;CAChC,YAAsBA,eAA6B;EAA7B;CAA+B;AAiBtD;;;;;;AAOD,IAAa,YAAb,MAAa,UAAU;CACrB,OAAO;;;;;CAMP,aAAa,kBAAkB;AAC7B,MAAI;AACF,OAAI,CAAC,UAAU,kBAAkB;IAC/B,MAAM,EAAE,SAAS,OAAO,GAAG,MAAM,OAAO;IACxC,MAAM,SAAS,MAAM,SAAS,QAAQ;IACtC,MAAM,EAAE,OAAO,GAAG;IAClB,UAAU,mBAAmB;GAC9B;AACD,UAAO,UAAU;EAClB,SAAQ,GAAG;AACV,SAAM,IAAI,MACR,CAAC,gGAAgG,CAAC;EAErG;CACF;;;;;;CAOD,OAAO,UAAUC,MAAuC;AACtD,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,sBACLA,MAC6B;AAC7B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,gBAAgBA,MAA6C;AAClE,SAAO,KAAK,SAAS,mBAAmB,OAAO,KAAK,UAAU;CAC/D;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,aAAaA,MAA0C;AAC5D,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,kBAAkBA,MAA+C;AACtE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,qBACLA,MAC4B;AAC5B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;AACF"}
1
+ {"version":3,"file":"base.js","names":["parentHandler?: NodeHandler","node: ExpressionNode"],"sources":["../../../src/output_parsers/expression_type_handlers/base.ts"],"sourcesContent":["import { GRAMMAR } from \"./grammar/parser_grammar.js\";\nimport type {\n ExpressionNode,\n Program,\n ExpressionStatement,\n CallExpression,\n StringLiteral,\n NumericLiteral,\n BooleanLiteral,\n Identifier,\n ObjectExpression,\n ArrayExpression,\n PropertyAssignment,\n MemberExpression,\n ParseFunction,\n} from \"../../types/expression-parser.js\";\n\n/**\n * Abstract class for handling nodes in an expression language. Subclasses\n * must implement the `accepts` and `handle` methods.\n */\nexport abstract class NodeHandler {\n constructor(protected parentHandler?: NodeHandler) {}\n\n /**\n * Determines whether the given node is acceptable.\n * @param node The node to be checked.\n * @returns A Promise that resolves to either the node itself or a boolean indicating whether the node is acceptable.\n */\n abstract accepts(node: ExpressionNode): Promise<ExpressionNode | boolean>;\n\n /**\n * Handles the given node. The specifics of how the node is handled are\n * determined by the subclass implementation.\n * @param node The node to be handled.\n * @returns A Promise that resolves to the result of handling the node.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abstract handle(node: ExpressionNode): Promise<any>;\n}\n\n/**\n * Utility class for parsing Abstract Syntax Trees (ASTs). Contains\n * methods for identifying the type of a given node and a method for\n * importing and generating a parser using the Peggy library.\n */\nexport class ASTParser {\n static astParseInstance: ParseFunction;\n\n /**\n * Imports and generates a parser using the Peggy library.\n * @returns A Promise that resolves to the parser instance.\n */\n static async importASTParser() {\n try {\n if (!ASTParser.astParseInstance) {\n const { default: peggy } = await import(\"peggy\");\n const parser = peggy.generate(GRAMMAR);\n const { parse } = parser;\n ASTParser.astParseInstance = parse as ParseFunction;\n }\n return ASTParser.astParseInstance;\n } catch {\n throw new Error(\n `Failed to import peggy. Please install peggy (i.e. \"npm install peggy\" or \"pnpm install peggy\").`\n );\n }\n }\n\n /**\n * Checks if the given node is a Program node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a Program node.\n */\n static isProgram(node: ExpressionNode): node is Program {\n return node.type === \"Program\";\n }\n\n /**\n * Checks if the given node is an ExpressionStatement node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ExpressionStatement node.\n */\n static isExpressionStatement(\n node: ExpressionNode\n ): node is ExpressionStatement {\n return node.type === \"ExpressionStatement\";\n }\n\n /**\n * Checks if the given node is a CallExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a CallExpression node.\n */\n static isCallExpression(node: ExpressionNode): node is CallExpression {\n return node.type === \"CallExpression\";\n }\n\n /**\n * Checks if the given node is a StringLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a StringLiteral node.\n */\n static isStringLiteral(node: ExpressionNode): node is StringLiteral {\n return node.type === \"StringLiteral\" && typeof node.value === \"string\";\n }\n\n /**\n * Checks if the given node is a NumericLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a NumericLiteral node.\n */\n static isNumericLiteral(node: ExpressionNode): node is NumericLiteral {\n return node.type === \"NumericLiteral\" && typeof node.value === \"number\";\n }\n\n /**\n * Checks if the given node is a BooleanLiteral node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a BooleanLiteral node.\n */\n static isBooleanLiteral(node: ExpressionNode): node is BooleanLiteral {\n return node.type === \"BooleanLiteral\" && typeof node.value === \"boolean\";\n }\n\n /**\n * Checks if the given node is an Identifier node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an Identifier node.\n */\n static isIdentifier(node: ExpressionNode): node is Identifier {\n return node.type === \"Identifier\";\n }\n\n /**\n * Checks if the given node is an ObjectExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ObjectExpression node.\n */\n static isObjectExpression(node: ExpressionNode): node is ObjectExpression {\n return node.type === \"ObjectExpression\";\n }\n\n /**\n * Checks if the given node is an ArrayExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is an ArrayExpression node.\n */\n static isArrayExpression(node: ExpressionNode): node is ArrayExpression {\n return node.type === \"ArrayExpression\";\n }\n\n /**\n * Checks if the given node is a PropertyAssignment node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a PropertyAssignment node.\n */\n static isPropertyAssignment(\n node: ExpressionNode\n ): node is PropertyAssignment {\n return node.type === \"PropertyAssignment\";\n }\n\n /**\n * Checks if the given node is a MemberExpression node.\n * @param node The node to be checked.\n * @returns A boolean indicating whether the node is a MemberExpression node.\n */\n static isMemberExpression(node: ExpressionNode): node is MemberExpression {\n return node.type === \"MemberExpression\";\n }\n}\n"],"mappings":";;;;;;;AAqBA,IAAsB,cAAtB,MAAkC;CAChC,YAAsBA,eAA6B;EAA7B;CAA+B;AAiBtD;;;;;;AAOD,IAAa,YAAb,MAAa,UAAU;CACrB,OAAO;;;;;CAMP,aAAa,kBAAkB;AAC7B,MAAI;AACF,OAAI,CAAC,UAAU,kBAAkB;IAC/B,MAAM,EAAE,SAAS,OAAO,GAAG,MAAM,OAAO;IACxC,MAAM,SAAS,MAAM,SAAS,QAAQ;IACtC,MAAM,EAAE,OAAO,GAAG;IAClB,UAAU,mBAAmB;GAC9B;AACD,UAAO,UAAU;EAClB,QAAO;AACN,SAAM,IAAI,MACR,CAAC,gGAAgG,CAAC;EAErG;CACF;;;;;;CAOD,OAAO,UAAUC,MAAuC;AACtD,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,sBACLA,MAC6B;AAC7B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,gBAAgBA,MAA6C;AAClE,SAAO,KAAK,SAAS,mBAAmB,OAAO,KAAK,UAAU;CAC/D;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,iBAAiBA,MAA8C;AACpE,SAAO,KAAK,SAAS,oBAAoB,OAAO,KAAK,UAAU;CAChE;;;;;;CAOD,OAAO,aAAaA,MAA0C;AAC5D,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,kBAAkBA,MAA+C;AACtE,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,qBACLA,MAC4B;AAC5B,SAAO,KAAK,SAAS;CACtB;;;;;;CAOD,OAAO,mBAAmBA,MAAgD;AACxE,SAAO,KAAK,SAAS;CACtB;AACF"}
@@ -1,8 +1,8 @@
1
1
  import { LLMChain } from "../chains/llm_chain.cjs";
2
2
  import { BaseLanguageModelInterface } from "@langchain/core/language_models/base";
3
+ import { Runnable } from "@langchain/core/runnables";
3
4
  import { BaseOutputParser, OutputParserException } from "@langchain/core/output_parsers";
4
5
  import { BasePromptTemplate } from "@langchain/core/prompts";
5
- import { Runnable } from "@langchain/core/runnables";
6
6
  import { Callbacks } from "@langchain/core/callbacks/manager";
7
7
 
8
8
  //#region src/output_parsers/fix.d.ts
@@ -1,5 +1,5 @@
1
- import { BaseTransformOutputParser } from "@langchain/core/output_parsers";
2
1
  import { BaseMessage } from "@langchain/core/messages";
2
+ import { BaseTransformOutputParser } from "@langchain/core/output_parsers";
3
3
 
4
4
  //#region src/output_parsers/http_response.d.ts
5
5
  type HttpResponseOutputParserInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"regex.cjs","names":["BaseOutputParser","fields: string | RegExp | RegexParserFields","outputKeys?: string[]","defaultOutputKey?: string","text: string","OutputParserException"],"sources":["../../src/output_parsers/regex.ts"],"sourcesContent":["import {\n BaseOutputParser,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport type { SerializedFields } from \"../load/map_keys.js\";\n\nexport interface RegExpFields {\n pattern: string;\n flags?: string;\n}\n\n/**\n * Interface for the fields required to create a RegexParser instance.\n */\nexport interface RegexParserFields {\n regex: string | RegExp | RegExpFields;\n outputKeys: string[];\n defaultOutputKey?: string;\n}\n\n/**\n * Class to parse the output of an LLM call into a dictionary.\n * @augments BaseOutputParser\n */\nexport class RegexParser extends BaseOutputParser<Record<string, string>> {\n static lc_name() {\n return \"RegexParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"regex\"];\n\n lc_serializable = true;\n\n get lc_attributes(): SerializedFields | undefined {\n return {\n regex: this.lc_kwargs.regex,\n };\n }\n\n regex: string | RegExp;\n\n outputKeys: string[];\n\n defaultOutputKey?: string;\n\n constructor(fields: RegexParserFields);\n\n constructor(\n regex: string | RegExp,\n outputKeys: string[],\n defaultOutputKey?: string\n );\n\n constructor(\n fields: string | RegExp | RegexParserFields,\n outputKeys?: string[],\n defaultOutputKey?: string\n ) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (typeof fields === \"string\" || fields instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { regex: fields, outputKeys: outputKeys!, defaultOutputKey };\n }\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (fields.regex instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign\n fields.regex = {\n pattern: fields.regex.source,\n flags: fields.regex.flags,\n };\n }\n super(fields);\n this.regex =\n // eslint-disable-next-line no-nested-ternary\n typeof fields.regex === \"string\"\n ? new RegExp(fields.regex)\n : \"pattern\" in fields.regex\n ? new RegExp(fields.regex.pattern, fields.regex.flags)\n : fields.regex;\n this.outputKeys = fields.outputKeys;\n this.defaultOutputKey = fields.defaultOutputKey;\n }\n\n _type() {\n return \"regex_parser\";\n }\n\n /**\n * Parses the given text using the regex pattern and returns a dictionary\n * with the parsed output. If the regex pattern does not match the text\n * and no defaultOutputKey is provided, throws an OutputParserException.\n * @param text The text to be parsed.\n * @returns A dictionary with the parsed output.\n */\n async parse(text: string): Promise<Record<string, string>> {\n const match = text.match(this.regex);\n if (match) {\n return this.outputKeys.reduce((acc, key, index) => {\n acc[key] = match[index + 1];\n return acc;\n }, {} as Record<string, string>);\n }\n\n if (this.defaultOutputKey === undefined) {\n throw new OutputParserException(`Could not parse output: ${text}`, text);\n }\n\n return this.outputKeys.reduce((acc, key) => {\n acc[key] = key === this.defaultOutputKey ? text : \"\";\n return acc;\n }, {} as Record<string, string>);\n }\n\n /**\n * Returns a string with instructions on how the LLM output should be\n * formatted to match the regex pattern.\n * @returns A string with formatting instructions.\n */\n getFormatInstructions(): string {\n return `Your response should match the following regex: ${this.regex}`;\n }\n}\n"],"mappings":";;;;;;;;AAwBA,IAAa,cAAb,cAAiCA,iDAAyC;CACxE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAQ;CAEvD,kBAAkB;CAElB,IAAI,gBAA8C;AAChD,SAAO,EACL,OAAO,KAAK,UAAU,MACvB;CACF;CAED;CAEA;CAEA;CAUA,YACEC,QACAC,YACAC,kBACA;AAEA,MAAI,OAAO,WAAW,YAAY,kBAAkB,QAElD,SAAS;GAAE,OAAO;GAAoB;GAAa;EAAkB;AAGvE,MAAI,OAAO,iBAAiB,QAE1B,OAAO,QAAQ;GACb,SAAS,OAAO,MAAM;GACtB,OAAO,OAAO,MAAM;EACrB;EAEH,MAAM,OAAO;EACb,KAAK,QAEH,OAAO,OAAO,UAAU,WACpB,IAAI,OAAO,OAAO,SAClB,aAAa,OAAO,QACpB,IAAI,OAAO,OAAO,MAAM,SAAS,OAAO,MAAM,SAC9C,OAAO;EACb,KAAK,aAAa,OAAO;EACzB,KAAK,mBAAmB,OAAO;CAChC;CAED,QAAQ;AACN,SAAO;CACR;;;;;;;;CASD,MAAM,MAAMC,MAA+C;EACzD,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM;AACpC,MAAI,MACF,QAAO,KAAK,WAAW,OAAO,CAAC,KAAK,KAAK,UAAU;GACjD,IAAI,OAAO,MAAM,QAAQ;AACzB,UAAO;EACR,GAAE,CAAE,EAA2B;AAGlC,MAAI,KAAK,qBAAqB,OAC5B,OAAM,IAAIC,sDAAsB,CAAC,wBAAwB,EAAE,MAAM,EAAE;AAGrE,SAAO,KAAK,WAAW,OAAO,CAAC,KAAK,QAAQ;GAC1C,IAAI,OAAO,QAAQ,KAAK,mBAAmB,OAAO;AAClD,UAAO;EACR,GAAE,CAAE,EAA2B;CACjC;;;;;;CAOD,wBAAgC;AAC9B,SAAO,CAAC,gDAAgD,EAAE,KAAK,OAAO;CACvE;AACF"}
1
+ {"version":3,"file":"regex.cjs","names":["BaseOutputParser","fields: string | RegExp | RegexParserFields","outputKeys?: string[]","defaultOutputKey?: string","text: string","OutputParserException"],"sources":["../../src/output_parsers/regex.ts"],"sourcesContent":["import {\n BaseOutputParser,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport type { SerializedFields } from \"../load/map_keys.js\";\n\nexport interface RegExpFields {\n pattern: string;\n flags?: string;\n}\n\n/**\n * Interface for the fields required to create a RegexParser instance.\n */\nexport interface RegexParserFields {\n regex: string | RegExp | RegExpFields;\n outputKeys: string[];\n defaultOutputKey?: string;\n}\n\n/**\n * Class to parse the output of an LLM call into a dictionary.\n * @augments BaseOutputParser\n */\nexport class RegexParser extends BaseOutputParser<Record<string, string>> {\n static lc_name() {\n return \"RegexParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"regex\"];\n\n lc_serializable = true;\n\n get lc_attributes(): SerializedFields | undefined {\n return {\n regex: this.lc_kwargs.regex,\n };\n }\n\n regex: string | RegExp;\n\n outputKeys: string[];\n\n defaultOutputKey?: string;\n\n constructor(fields: RegexParserFields);\n\n constructor(\n regex: string | RegExp,\n outputKeys: string[],\n defaultOutputKey?: string\n );\n\n constructor(\n fields: string | RegExp | RegexParserFields,\n outputKeys?: string[],\n defaultOutputKey?: string\n ) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (typeof fields === \"string\" || fields instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign\n fields = { regex: fields, outputKeys: outputKeys!, defaultOutputKey };\n }\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (fields.regex instanceof RegExp) {\n fields.regex = {\n pattern: fields.regex.source,\n flags: fields.regex.flags,\n };\n }\n super(fields);\n this.regex =\n typeof fields.regex === \"string\"\n ? new RegExp(fields.regex)\n : \"pattern\" in fields.regex\n ? new RegExp(fields.regex.pattern, fields.regex.flags)\n : fields.regex;\n this.outputKeys = fields.outputKeys;\n this.defaultOutputKey = fields.defaultOutputKey;\n }\n\n _type() {\n return \"regex_parser\";\n }\n\n /**\n * Parses the given text using the regex pattern and returns a dictionary\n * with the parsed output. If the regex pattern does not match the text\n * and no defaultOutputKey is provided, throws an OutputParserException.\n * @param text The text to be parsed.\n * @returns A dictionary with the parsed output.\n */\n async parse(text: string): Promise<Record<string, string>> {\n const match = text.match(this.regex);\n if (match) {\n return this.outputKeys.reduce((acc, key, index) => {\n acc[key] = match[index + 1];\n return acc;\n }, {} as Record<string, string>);\n }\n\n if (this.defaultOutputKey === undefined) {\n throw new OutputParserException(`Could not parse output: ${text}`, text);\n }\n\n return this.outputKeys.reduce((acc, key) => {\n acc[key] = key === this.defaultOutputKey ? text : \"\";\n return acc;\n }, {} as Record<string, string>);\n }\n\n /**\n * Returns a string with instructions on how the LLM output should be\n * formatted to match the regex pattern.\n * @returns A string with formatting instructions.\n */\n getFormatInstructions(): string {\n return `Your response should match the following regex: ${this.regex}`;\n }\n}\n"],"mappings":";;;;;;;;AAwBA,IAAa,cAAb,cAAiCA,iDAAyC;CACxE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAQ;CAEvD,kBAAkB;CAElB,IAAI,gBAA8C;AAChD,SAAO,EACL,OAAO,KAAK,UAAU,MACvB;CACF;CAED;CAEA;CAEA;CAUA,YACEC,QACAC,YACAC,kBACA;AAEA,MAAI,OAAO,WAAW,YAAY,kBAAkB,QAElD,SAAS;GAAE,OAAO;GAAoB;GAAa;EAAkB;AAGvE,MAAI,OAAO,iBAAiB,QAC1B,OAAO,QAAQ;GACb,SAAS,OAAO,MAAM;GACtB,OAAO,OAAO,MAAM;EACrB;EAEH,MAAM,OAAO;EACb,KAAK,QACH,OAAO,OAAO,UAAU,WACpB,IAAI,OAAO,OAAO,SAClB,aAAa,OAAO,QACpB,IAAI,OAAO,OAAO,MAAM,SAAS,OAAO,MAAM,SAC9C,OAAO;EACb,KAAK,aAAa,OAAO;EACzB,KAAK,mBAAmB,OAAO;CAChC;CAED,QAAQ;AACN,SAAO;CACR;;;;;;;;CASD,MAAM,MAAMC,MAA+C;EACzD,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM;AACpC,MAAI,MACF,QAAO,KAAK,WAAW,OAAO,CAAC,KAAK,KAAK,UAAU;GACjD,IAAI,OAAO,MAAM,QAAQ;AACzB,UAAO;EACR,GAAE,CAAE,EAA2B;AAGlC,MAAI,KAAK,qBAAqB,OAC5B,OAAM,IAAIC,sDAAsB,CAAC,wBAAwB,EAAE,MAAM,EAAE;AAGrE,SAAO,KAAK,WAAW,OAAO,CAAC,KAAK,QAAQ;GAC1C,IAAI,OAAO,QAAQ,KAAK,mBAAmB,OAAO;AAClD,UAAO;EACR,GAAE,CAAE,EAA2B;CACjC;;;;;;CAOD,wBAAgC;AAC9B,SAAO,CAAC,gDAAgD,EAAE,KAAK,OAAO;CACvE;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"regex.js","names":["fields: string | RegExp | RegexParserFields","outputKeys?: string[]","defaultOutputKey?: string","text: string"],"sources":["../../src/output_parsers/regex.ts"],"sourcesContent":["import {\n BaseOutputParser,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport type { SerializedFields } from \"../load/map_keys.js\";\n\nexport interface RegExpFields {\n pattern: string;\n flags?: string;\n}\n\n/**\n * Interface for the fields required to create a RegexParser instance.\n */\nexport interface RegexParserFields {\n regex: string | RegExp | RegExpFields;\n outputKeys: string[];\n defaultOutputKey?: string;\n}\n\n/**\n * Class to parse the output of an LLM call into a dictionary.\n * @augments BaseOutputParser\n */\nexport class RegexParser extends BaseOutputParser<Record<string, string>> {\n static lc_name() {\n return \"RegexParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"regex\"];\n\n lc_serializable = true;\n\n get lc_attributes(): SerializedFields | undefined {\n return {\n regex: this.lc_kwargs.regex,\n };\n }\n\n regex: string | RegExp;\n\n outputKeys: string[];\n\n defaultOutputKey?: string;\n\n constructor(fields: RegexParserFields);\n\n constructor(\n regex: string | RegExp,\n outputKeys: string[],\n defaultOutputKey?: string\n );\n\n constructor(\n fields: string | RegExp | RegexParserFields,\n outputKeys?: string[],\n defaultOutputKey?: string\n ) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (typeof fields === \"string\" || fields instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign, @typescript-eslint/no-non-null-assertion\n fields = { regex: fields, outputKeys: outputKeys!, defaultOutputKey };\n }\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (fields.regex instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign\n fields.regex = {\n pattern: fields.regex.source,\n flags: fields.regex.flags,\n };\n }\n super(fields);\n this.regex =\n // eslint-disable-next-line no-nested-ternary\n typeof fields.regex === \"string\"\n ? new RegExp(fields.regex)\n : \"pattern\" in fields.regex\n ? new RegExp(fields.regex.pattern, fields.regex.flags)\n : fields.regex;\n this.outputKeys = fields.outputKeys;\n this.defaultOutputKey = fields.defaultOutputKey;\n }\n\n _type() {\n return \"regex_parser\";\n }\n\n /**\n * Parses the given text using the regex pattern and returns a dictionary\n * with the parsed output. If the regex pattern does not match the text\n * and no defaultOutputKey is provided, throws an OutputParserException.\n * @param text The text to be parsed.\n * @returns A dictionary with the parsed output.\n */\n async parse(text: string): Promise<Record<string, string>> {\n const match = text.match(this.regex);\n if (match) {\n return this.outputKeys.reduce((acc, key, index) => {\n acc[key] = match[index + 1];\n return acc;\n }, {} as Record<string, string>);\n }\n\n if (this.defaultOutputKey === undefined) {\n throw new OutputParserException(`Could not parse output: ${text}`, text);\n }\n\n return this.outputKeys.reduce((acc, key) => {\n acc[key] = key === this.defaultOutputKey ? text : \"\";\n return acc;\n }, {} as Record<string, string>);\n }\n\n /**\n * Returns a string with instructions on how the LLM output should be\n * formatted to match the regex pattern.\n * @returns A string with formatting instructions.\n */\n getFormatInstructions(): string {\n return `Your response should match the following regex: ${this.regex}`;\n }\n}\n"],"mappings":";;;;;;;AAwBA,IAAa,cAAb,cAAiC,iBAAyC;CACxE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAQ;CAEvD,kBAAkB;CAElB,IAAI,gBAA8C;AAChD,SAAO,EACL,OAAO,KAAK,UAAU,MACvB;CACF;CAED;CAEA;CAEA;CAUA,YACEA,QACAC,YACAC,kBACA;AAEA,MAAI,OAAO,WAAW,YAAY,kBAAkB,QAElD,SAAS;GAAE,OAAO;GAAoB;GAAa;EAAkB;AAGvE,MAAI,OAAO,iBAAiB,QAE1B,OAAO,QAAQ;GACb,SAAS,OAAO,MAAM;GACtB,OAAO,OAAO,MAAM;EACrB;EAEH,MAAM,OAAO;EACb,KAAK,QAEH,OAAO,OAAO,UAAU,WACpB,IAAI,OAAO,OAAO,SAClB,aAAa,OAAO,QACpB,IAAI,OAAO,OAAO,MAAM,SAAS,OAAO,MAAM,SAC9C,OAAO;EACb,KAAK,aAAa,OAAO;EACzB,KAAK,mBAAmB,OAAO;CAChC;CAED,QAAQ;AACN,SAAO;CACR;;;;;;;;CASD,MAAM,MAAMC,MAA+C;EACzD,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM;AACpC,MAAI,MACF,QAAO,KAAK,WAAW,OAAO,CAAC,KAAK,KAAK,UAAU;GACjD,IAAI,OAAO,MAAM,QAAQ;AACzB,UAAO;EACR,GAAE,CAAE,EAA2B;AAGlC,MAAI,KAAK,qBAAqB,OAC5B,OAAM,IAAI,sBAAsB,CAAC,wBAAwB,EAAE,MAAM,EAAE;AAGrE,SAAO,KAAK,WAAW,OAAO,CAAC,KAAK,QAAQ;GAC1C,IAAI,OAAO,QAAQ,KAAK,mBAAmB,OAAO;AAClD,UAAO;EACR,GAAE,CAAE,EAA2B;CACjC;;;;;;CAOD,wBAAgC;AAC9B,SAAO,CAAC,gDAAgD,EAAE,KAAK,OAAO;CACvE;AACF"}
1
+ {"version":3,"file":"regex.js","names":["fields: string | RegExp | RegexParserFields","outputKeys?: string[]","defaultOutputKey?: string","text: string"],"sources":["../../src/output_parsers/regex.ts"],"sourcesContent":["import {\n BaseOutputParser,\n OutputParserException,\n} from \"@langchain/core/output_parsers\";\nimport type { SerializedFields } from \"../load/map_keys.js\";\n\nexport interface RegExpFields {\n pattern: string;\n flags?: string;\n}\n\n/**\n * Interface for the fields required to create a RegexParser instance.\n */\nexport interface RegexParserFields {\n regex: string | RegExp | RegExpFields;\n outputKeys: string[];\n defaultOutputKey?: string;\n}\n\n/**\n * Class to parse the output of an LLM call into a dictionary.\n * @augments BaseOutputParser\n */\nexport class RegexParser extends BaseOutputParser<Record<string, string>> {\n static lc_name() {\n return \"RegexParser\";\n }\n\n lc_namespace = [\"langchain\", \"output_parsers\", \"regex\"];\n\n lc_serializable = true;\n\n get lc_attributes(): SerializedFields | undefined {\n return {\n regex: this.lc_kwargs.regex,\n };\n }\n\n regex: string | RegExp;\n\n outputKeys: string[];\n\n defaultOutputKey?: string;\n\n constructor(fields: RegexParserFields);\n\n constructor(\n regex: string | RegExp,\n outputKeys: string[],\n defaultOutputKey?: string\n );\n\n constructor(\n fields: string | RegExp | RegexParserFields,\n outputKeys?: string[],\n defaultOutputKey?: string\n ) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (typeof fields === \"string\" || fields instanceof RegExp) {\n // eslint-disable-next-line no-param-reassign\n fields = { regex: fields, outputKeys: outputKeys!, defaultOutputKey };\n }\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (fields.regex instanceof RegExp) {\n fields.regex = {\n pattern: fields.regex.source,\n flags: fields.regex.flags,\n };\n }\n super(fields);\n this.regex =\n typeof fields.regex === \"string\"\n ? new RegExp(fields.regex)\n : \"pattern\" in fields.regex\n ? new RegExp(fields.regex.pattern, fields.regex.flags)\n : fields.regex;\n this.outputKeys = fields.outputKeys;\n this.defaultOutputKey = fields.defaultOutputKey;\n }\n\n _type() {\n return \"regex_parser\";\n }\n\n /**\n * Parses the given text using the regex pattern and returns a dictionary\n * with the parsed output. If the regex pattern does not match the text\n * and no defaultOutputKey is provided, throws an OutputParserException.\n * @param text The text to be parsed.\n * @returns A dictionary with the parsed output.\n */\n async parse(text: string): Promise<Record<string, string>> {\n const match = text.match(this.regex);\n if (match) {\n return this.outputKeys.reduce((acc, key, index) => {\n acc[key] = match[index + 1];\n return acc;\n }, {} as Record<string, string>);\n }\n\n if (this.defaultOutputKey === undefined) {\n throw new OutputParserException(`Could not parse output: ${text}`, text);\n }\n\n return this.outputKeys.reduce((acc, key) => {\n acc[key] = key === this.defaultOutputKey ? text : \"\";\n return acc;\n }, {} as Record<string, string>);\n }\n\n /**\n * Returns a string with instructions on how the LLM output should be\n * formatted to match the regex pattern.\n * @returns A string with formatting instructions.\n */\n getFormatInstructions(): string {\n return `Your response should match the following regex: ${this.regex}`;\n }\n}\n"],"mappings":";;;;;;;AAwBA,IAAa,cAAb,cAAiC,iBAAyC;CACxE,OAAO,UAAU;AACf,SAAO;CACR;CAED,eAAe;EAAC;EAAa;EAAkB;CAAQ;CAEvD,kBAAkB;CAElB,IAAI,gBAA8C;AAChD,SAAO,EACL,OAAO,KAAK,UAAU,MACvB;CACF;CAED;CAEA;CAEA;CAUA,YACEA,QACAC,YACAC,kBACA;AAEA,MAAI,OAAO,WAAW,YAAY,kBAAkB,QAElD,SAAS;GAAE,OAAO;GAAoB;GAAa;EAAkB;AAGvE,MAAI,OAAO,iBAAiB,QAC1B,OAAO,QAAQ;GACb,SAAS,OAAO,MAAM;GACtB,OAAO,OAAO,MAAM;EACrB;EAEH,MAAM,OAAO;EACb,KAAK,QACH,OAAO,OAAO,UAAU,WACpB,IAAI,OAAO,OAAO,SAClB,aAAa,OAAO,QACpB,IAAI,OAAO,OAAO,MAAM,SAAS,OAAO,MAAM,SAC9C,OAAO;EACb,KAAK,aAAa,OAAO;EACzB,KAAK,mBAAmB,OAAO;CAChC;CAED,QAAQ;AACN,SAAO;CACR;;;;;;;;CASD,MAAM,MAAMC,MAA+C;EACzD,MAAM,QAAQ,KAAK,MAAM,KAAK,MAAM;AACpC,MAAI,MACF,QAAO,KAAK,WAAW,OAAO,CAAC,KAAK,KAAK,UAAU;GACjD,IAAI,OAAO,MAAM,QAAQ;AACzB,UAAO;EACR,GAAE,CAAE,EAA2B;AAGlC,MAAI,KAAK,qBAAqB,OAC5B,OAAM,IAAI,sBAAsB,CAAC,wBAAwB,EAAE,MAAM,EAAE;AAGrE,SAAO,KAAK,WAAW,OAAO,CAAC,KAAK,QAAQ;GAC1C,IAAI,OAAO,QAAQ,KAAK,mBAAmB,OAAO;AAClD,UAAO;EACR,GAAE,CAAE,EAA2B;CACjC;;;;;;CAOD,wBAAgC;AAC9B,SAAO,CAAC,gDAAgD,EAAE,KAAK,OAAO;CACvE;AACF"}
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const __langchain_core_utils_types = require_rolldown_runtime.__toESM(require("@langchain/core/utils/types"));
3
3
  const __langchain_core_utils_json_schema = require_rolldown_runtime.__toESM(require("@langchain/core/utils/json_schema"));
4
+ const zod_v3 = require_rolldown_runtime.__toESM(require("zod/v3"));
4
5
  const __langchain_core_output_parsers = require_rolldown_runtime.__toESM(require("@langchain/core/output_parsers"));
5
- const zod = require_rolldown_runtime.__toESM(require("zod"));
6
6
 
7
7
  //#region src/output_parsers/structured.ts
8
8
  var StructuredOutputParser = class extends __langchain_core_output_parsers.BaseOutputParser {
@@ -36,7 +36,7 @@ var StructuredOutputParser = class extends __langchain_core_output_parsers.BaseO
36
36
  * @returns A new instance of StructuredOutputParser.
37
37
  */
38
38
  static fromNamesAndDescriptions(schemas) {
39
- const zodSchema = zod.z.object(Object.fromEntries(Object.entries(schemas).map(([name, description]) => [name, zod.z.string().describe(description)])));
39
+ const zodSchema = zod_v3.z.object(Object.fromEntries(Object.entries(schemas).map(([name, description]) => [name, zod_v3.z.string().describe(description)])));
40
40
  return new this(zodSchema);
41
41
  }
42
42
  /**
@@ -71,7 +71,7 @@ ${JSON.stringify((0, __langchain_core_utils_json_schema.toJsonSchema)(this.schem
71
71
  try {
72
72
  const json = text.includes("```") ? text.trim().split(/```(?:json)?/)[1] : text.trim();
73
73
  return await (0, __langchain_core_utils_types.interopParseAsync)(this.schema, JSON.parse(json));
74
- } catch (e) {
74
+ } catch {
75
75
  try {
76
76
  return await (0, __langchain_core_utils_types.interopParseAsync)(this.schema, JSON.parse(text.trim()));
77
77
  } catch (e2) {
@@ -129,7 +129,7 @@ var JsonMarkdownStructuredOutputParser = class extends StructuredOutputParser {
129
129
  return new this(schema);
130
130
  }
131
131
  static fromNamesAndDescriptions(schemas) {
132
- const zodSchema = zod.z.object(Object.fromEntries(Object.entries(schemas).map(([name, description]) => [name, zod.z.string().describe(description)])));
132
+ const zodSchema = zod_v3.z.object(Object.fromEntries(Object.entries(schemas).map(([name, description]) => [name, zod_v3.z.string().describe(description)])));
133
133
  return new this(zodSchema);
134
134
  }
135
135
  };
@@ -1 +1 @@
1
- {"version":3,"file":"structured.cjs","names":["BaseOutputParser","schema: T","schemas: S","z","text: string","OutputParserException","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.cjs","names":["BaseOutputParser","schema: T","schemas: S","z","text: string","OutputParserException","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,7 +1,7 @@
1
1
  import { serializable_d_exports } from "../load/serializable.cjs";
2
- import { BaseOutputParser, FormatInstructionsOptions } from "@langchain/core/output_parsers";
2
+ import { z } from "zod/v3";
3
3
  import { InferInteropZodOutput, InteropZodType } from "@langchain/core/utils/types";
4
- import { z } from "zod";
4
+ import { BaseOutputParser, FormatInstructionsOptions } from "@langchain/core/output_parsers";
5
5
 
6
6
  //#region src/output_parsers/structured.d.ts
7
7
  type JsonMarkdownStructuredOutputParserInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"structured.d.cts","names":["z","BaseOutputParser","FormatInstructionsOptions","InferInteropZodOutput","InteropZodType","JsonMarkdownStructuredOutputParserInput","JsonMarkdownFormatInstructionsOptions","StructuredOutputParser","T","___load_serializable0","SerializedNotImplemented","S","ZodString","ZodTypeAny","ZodObject","Promise","JsonMarkdownStructuredOutputParser","AsymmetricStructuredOutputParserFields","AsymmetricStructuredOutputParser","Y","inputSchema"],"sources":["../../src/output_parsers/structured.d.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { BaseOutputParser, FormatInstructionsOptions } from \"@langchain/core/output_parsers\";\nimport { type InferInteropZodOutput, type InteropZodType } from \"@langchain/core/utils/types\";\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\nexport interface JsonMarkdownFormatInstructionsOptions extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\nexport declare class StructuredOutputParser<T extends InteropZodType> extends BaseOutputParser<InferInteropZodOutput<T>> {\n schema: T;\n static lc_name(): string;\n lc_namespace: string[];\n toJSON(): import(\"../load/serializable\").SerializedNotImplemented;\n constructor(schema: T);\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): StructuredOutputParser<T>;\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 {\n [key: string]: string;\n }>(schemas: S): StructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\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 /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n parse(text: string): Promise<InferInteropZodOutput<T>>;\n}\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport declare class JsonMarkdownStructuredOutputParser<T extends InteropZodType> extends StructuredOutputParser<T> {\n static lc_name(): string;\n getFormatInstructions(options?: JsonMarkdownFormatInstructionsOptions): string;\n private _schemaToInstruction;\n static fromZodSchema<T extends InteropZodType>(schema: T): JsonMarkdownStructuredOutputParser<T>;\n static fromNamesAndDescriptions<S extends {\n [key: string]: string;\n }>(schemas: S): JsonMarkdownStructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\n }>>;\n}\nexport interface AsymmetricStructuredOutputParserFields<T extends InteropZodType> {\n inputSchema: T;\n}\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport declare abstract class AsymmetricStructuredOutputParser<T extends InteropZodType, Y = unknown> extends BaseOutputParser<Y> {\n private structuredInputParser;\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>);\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 parse(text: string): Promise<Y>;\n getFormatInstructions(): string;\n}\n"],"mappings":";;;;;;KAGYK,uCAAAA;;;AAAAA,UAGKC,qCAAAA,SAA8CJ,yBAHZ,CAAA;EAGlCI,kBAAAA,CAAAA,EAAAA,MAAAA;AAGjB;AAA2C,cAAtBC,sBAAsB,CAAA,UAAWH,cAAX,CAAA,SAAmCH,gBAAnC,CAAoDE,qBAApD,CAA0EK,CAA1E,CAAA,CAAA,CAAA;EAAA,MAAWJ,EAC1CI,CAD0CJ;EAAc,OAAiDI,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAC,YAAvBL,EAAAA,MAAAA,EAAAA;EAAqB,MACxGK,CAAAA,CAAAA,EAACC,sBAAAA,CAGgCC,wBAHjCF;EAAC,WAAAC,CAAAA,MAAAA,EAIWD,CAJXC;EAGwD;;;;;EAOgB,OASrEE,aAAAA,CAAAA,UATmBP,cASnBO,CAAAA,CAAAA,MAAAA,EAT2CH,CAS3CG,CAAAA,EAT+CJ,sBAS/CI,CATsEH,CAStEG,CAAAA;EAAC;;;;;;EAmBqC,OAA7BI,wBAAAA,CAAAA,UAAAA;IAvCqDd,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,CAAA,CAAA,OAAA,EAoB9EU,CApB8E,CAAA,EAoB1EJ,sBApB0E,CAoBnDP,CAAAA,CAAEc,SApBiD,CAAA;IA6CzEE,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBAhB,CAAAA,CAAEY,SAwBFI;EAAkC,CAAA,EAAA,OAAA,EAvBvChB,CAAAA,CAAEa,UAuBqC,EAAA;IAAWT,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAc,CAAA,EAAiCI;IAE7EF,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAqC,CAAA,CAAA,CAEtCF;EAAc;;;;;;EAKrB,qBAF6BU,CAAAA,CAAAA,EAAAA,MAAAA;EAAS;;AAP8C;AAehH;;EAAuD,KAAWV,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,EArBzCW,OAqByCX,CArBjCD,qBAqBiCC,CArBXI,CAqBWJ,CAAAA,CAAAA;;AAChD;AAMlB;;;AAA+He,cAtB1GH,kCAsB0GG,CAAAA,UAtB7Df,cAsB6De,CAAAA,SAtBrCZ,sBAsBqCY,CAtBdX,CAsBcW,CAAAA,CAAAA;EAAC,OAE9GC,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,qBAA2CZ,CAAAA,OAAAA,CAAAA,EAtBpCF,qCAsBoCE,CAAAA,EAAAA,MAAAA;EAAC,QAAxCS,oBAAAA;EAAsC,OAObT,aAAAA,CAAAA,UA3BvBJ,cA2BuBI,CAAAA,CAAAA,MAAAA,EA3BCA,CA2BDA,CAAAA,EA3BKQ,kCA2BLR,CA3BwCA,CA2BxCA,CAAAA;EAAC,OAAvBL,wBAAAA,CAAAA,UAAAA;IAAmCgB,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAC,CAAA,CAAA,CAATJ,OAAAA,EAxB/CJ,CAwB+CI,CAAAA,EAxB3CC,kCAwB2CD,CAxBRf,CAAAA,CAAEc,SAwBMC,CAAAA;IAC9BI,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBZnB,CAAAA,CAAEY,SAwBUO;EAAC,CAAA,EAATJ,OAAAA,EAvBTf,CAAAA,CAAEa,UAuBOE,EAAAA;IAVqFd,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,EAAA;;;;UAP7GgB,iDAAiDb;eACjDI;;;;;;uBAMaU,2CAA2Cd,qCAAqCH,iBAAiBkB;;;;KAE9FF,uCAAuCT;;;;;;;kCAOpCL,sBAAsBK,KAAKO,QAAQI;uBAC9CJ,QAAQI"}
1
+ {"version":3,"file":"structured.d.cts","names":["z","BaseOutputParser","FormatInstructionsOptions","InferInteropZodOutput","InteropZodType","JsonMarkdownStructuredOutputParserInput","JsonMarkdownFormatInstructionsOptions","StructuredOutputParser","T","___load_serializable0","SerializedNotImplemented","S","ZodString","ZodTypeAny","ZodObject","Promise","JsonMarkdownStructuredOutputParser","AsymmetricStructuredOutputParserFields","AsymmetricStructuredOutputParser","Y","inputSchema"],"sources":["../../src/output_parsers/structured.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseOutputParser, FormatInstructionsOptions } from \"@langchain/core/output_parsers\";\nimport { type InferInteropZodOutput, type InteropZodType } from \"@langchain/core/utils/types\";\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\nexport interface JsonMarkdownFormatInstructionsOptions extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\nexport declare class StructuredOutputParser<T extends InteropZodType> extends BaseOutputParser<InferInteropZodOutput<T>> {\n schema: T;\n static lc_name(): string;\n lc_namespace: string[];\n toJSON(): import(\"../load/serializable\").SerializedNotImplemented;\n constructor(schema: T);\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): StructuredOutputParser<T>;\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 {\n [key: string]: string;\n }>(schemas: S): StructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\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 /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n parse(text: string): Promise<InferInteropZodOutput<T>>;\n}\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport declare class JsonMarkdownStructuredOutputParser<T extends InteropZodType> extends StructuredOutputParser<T> {\n static lc_name(): string;\n getFormatInstructions(options?: JsonMarkdownFormatInstructionsOptions): string;\n private _schemaToInstruction;\n static fromZodSchema<T extends InteropZodType>(schema: T): JsonMarkdownStructuredOutputParser<T>;\n static fromNamesAndDescriptions<S extends {\n [key: string]: string;\n }>(schemas: S): JsonMarkdownStructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\n }>>;\n}\nexport interface AsymmetricStructuredOutputParserFields<T extends InteropZodType> {\n inputSchema: T;\n}\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport declare abstract class AsymmetricStructuredOutputParser<T extends InteropZodType, Y = unknown> extends BaseOutputParser<Y> {\n private structuredInputParser;\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>);\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 parse(text: string): Promise<Y>;\n getFormatInstructions(): string;\n}\n"],"mappings":";;;;;;KAGYK,uCAAAA;;;AAAAA,UAGKC,qCAAAA,SAA8CJ,yBAHZ,CAAA;EAGlCI,kBAAAA,CAAAA,EAAAA,MAAAA;AAGjB;AAA2C,cAAtBC,sBAAsB,CAAA,UAAWH,cAAX,CAAA,SAAmCH,gBAAnC,CAAoDE,qBAApD,CAA0EK,CAA1E,CAAA,CAAA,CAAA;EAAA,MAAWJ,EAC1CI,CAD0CJ;EAAc,OAAiDI,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAC,YAAvBL,EAAAA,MAAAA,EAAAA;EAAqB,MACxGK,CAAAA,CAAAA,EAACC,sBAAAA,CAGgCC,wBAHjCF;EAAC,WAAAC,CAAAA,MAAAA,EAIWD,CAJXC;EAGwD;;;;;EAOgB,OASrEE,aAAAA,CAAAA,UATmBP,cASnBO,CAAAA,CAAAA,MAAAA,EAT2CH,CAS3CG,CAAAA,EAT+CJ,sBAS/CI,CATsEH,CAStEG,CAAAA;EAAC;;;;;;EAmBqC,OAA7BI,wBAAAA,CAAAA,UAAAA;IAvCqDd,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,CAAA,CAAA,OAAA,EAoB9EU,CApB8E,CAAA,EAoB1EJ,sBApB0E,CAoBnDP,CAAAA,CAAEc,SApBiD,CAAA;IA6CzEE,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBAhB,CAAAA,CAAEY,SAwBFI;EAAkC,CAAA,EAAA,OAAA,EAvBvChB,CAAAA,CAAEa,UAuBqC,EAAA;IAAWT,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAc,CAAA,EAAiCI;IAE7EF,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAqC,CAAA,CAAA,CAEtCF;EAAc;;;;;;EAKrB,qBAF6BU,CAAAA,CAAAA,EAAAA,MAAAA;EAAS;;AAP8C;AAehH;;EAAuD,KAAWV,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,EArBzCW,OAqByCX,CArBjCD,qBAqBiCC,CArBXI,CAqBWJ,CAAAA,CAAAA;;AAChD;AAMlB;;;AAA+He,cAtB1GH,kCAsB0GG,CAAAA,UAtB7Df,cAsB6De,CAAAA,SAtBrCZ,sBAsBqCY,CAtBdX,CAsBcW,CAAAA,CAAAA;EAAC,OAE9GC,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,qBAA2CZ,CAAAA,OAAAA,CAAAA,EAtBpCF,qCAsBoCE,CAAAA,EAAAA,MAAAA;EAAC,QAAxCS,oBAAAA;EAAsC,OAObT,aAAAA,CAAAA,UA3BvBJ,cA2BuBI,CAAAA,CAAAA,MAAAA,EA3BCA,CA2BDA,CAAAA,EA3BKQ,kCA2BLR,CA3BwCA,CA2BxCA,CAAAA;EAAC,OAAvBL,wBAAAA,CAAAA,UAAAA;IAAmCgB,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAC,CAAA,CAAA,CAATJ,OAAAA,EAxB/CJ,CAwB+CI,CAAAA,EAxB3CC,kCAwB2CD,CAxBRf,CAAAA,CAAEc,SAwBMC,CAAAA;IAC9BI,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBZnB,CAAAA,CAAEY,SAwBUO;EAAC,CAAA,EAATJ,OAAAA,EAvBTf,CAAAA,CAAEa,UAuBOE,EAAAA;IAVqFd,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,EAAA;;;;UAP7GgB,iDAAiDb;eACjDI;;;;;;uBAMaU,2CAA2Cd,qCAAqCH,iBAAiBkB;;;;KAE9FF,uCAAuCT;;;;;;;kCAOpCL,sBAAsBK,KAAKO,QAAQI;uBAC9CJ,QAAQI"}
@@ -1,7 +1,7 @@
1
1
  import { serializable_d_exports } from "../load/serializable.js";
2
2
  import { InferInteropZodOutput, InteropZodType } from "@langchain/core/utils/types";
3
+ import { z } from "zod/v3";
3
4
  import { BaseOutputParser, FormatInstructionsOptions } from "@langchain/core/output_parsers";
4
- import { z } from "zod";
5
5
 
6
6
  //#region src/output_parsers/structured.d.ts
7
7
  type JsonMarkdownStructuredOutputParserInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"structured.d.ts","names":["z","BaseOutputParser","FormatInstructionsOptions","InferInteropZodOutput","InteropZodType","JsonMarkdownStructuredOutputParserInput","JsonMarkdownFormatInstructionsOptions","StructuredOutputParser","T","___load_serializable0","SerializedNotImplemented","S","ZodString","ZodTypeAny","ZodObject","Promise","JsonMarkdownStructuredOutputParser","AsymmetricStructuredOutputParserFields","AsymmetricStructuredOutputParser","Y","inputSchema"],"sources":["../../src/output_parsers/structured.d.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { BaseOutputParser, FormatInstructionsOptions } from \"@langchain/core/output_parsers\";\nimport { type InferInteropZodOutput, type InteropZodType } from \"@langchain/core/utils/types\";\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\nexport interface JsonMarkdownFormatInstructionsOptions extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\nexport declare class StructuredOutputParser<T extends InteropZodType> extends BaseOutputParser<InferInteropZodOutput<T>> {\n schema: T;\n static lc_name(): string;\n lc_namespace: string[];\n toJSON(): import(\"../load/serializable\").SerializedNotImplemented;\n constructor(schema: T);\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): StructuredOutputParser<T>;\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 {\n [key: string]: string;\n }>(schemas: S): StructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\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 /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n parse(text: string): Promise<InferInteropZodOutput<T>>;\n}\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport declare class JsonMarkdownStructuredOutputParser<T extends InteropZodType> extends StructuredOutputParser<T> {\n static lc_name(): string;\n getFormatInstructions(options?: JsonMarkdownFormatInstructionsOptions): string;\n private _schemaToInstruction;\n static fromZodSchema<T extends InteropZodType>(schema: T): JsonMarkdownStructuredOutputParser<T>;\n static fromNamesAndDescriptions<S extends {\n [key: string]: string;\n }>(schemas: S): JsonMarkdownStructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\n }>>;\n}\nexport interface AsymmetricStructuredOutputParserFields<T extends InteropZodType> {\n inputSchema: T;\n}\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport declare abstract class AsymmetricStructuredOutputParser<T extends InteropZodType, Y = unknown> extends BaseOutputParser<Y> {\n private structuredInputParser;\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>);\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 parse(text: string): Promise<Y>;\n getFormatInstructions(): string;\n}\n"],"mappings":";;;;;;KAGYK,uCAAAA;;;AAAAA,UAGKC,qCAAAA,SAA8CJ,yBAHZ,CAAA;EAGlCI,kBAAAA,CAAAA,EAAAA,MAAAA;AAGjB;AAA2C,cAAtBC,sBAAsB,CAAA,UAAWH,cAAX,CAAA,SAAmCH,gBAAnC,CAAoDE,qBAApD,CAA0EK,CAA1E,CAAA,CAAA,CAAA;EAAA,MAAWJ,EAC1CI,CAD0CJ;EAAc,OAAiDI,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAC,YAAvBL,EAAAA,MAAAA,EAAAA;EAAqB,MACxGK,CAAAA,CAAAA,EAACC,sBAAAA,CAGgCC,wBAHjCF;EAAC,WAAAC,CAAAA,MAAAA,EAIWD,CAJXC;EAGwD;;;;;EAOgB,OASrEE,aAAAA,CAAAA,UATmBP,cASnBO,CAAAA,CAAAA,MAAAA,EAT2CH,CAS3CG,CAAAA,EAT+CJ,sBAS/CI,CATsEH,CAStEG,CAAAA;EAAC;;;;;;EAmBqC,OAA7BI,wBAAAA,CAAAA,UAAAA;IAvCqDd,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,CAAA,CAAA,OAAA,EAoB9EU,CApB8E,CAAA,EAoB1EJ,sBApB0E,CAoBnDP,CAAAA,CAAEc,SApBiD,CAAA;IA6CzEE,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBAhB,CAAAA,CAAEY,SAwBFI;EAAkC,CAAA,EAAA,OAAA,EAvBvChB,CAAAA,CAAEa,UAuBqC,EAAA;IAAWT,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAc,CAAA,EAAiCI;IAE7EF,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAqC,CAAA,CAAA,CAEtCF;EAAc;;;;;;EAKrB,qBAF6BU,CAAAA,CAAAA,EAAAA,MAAAA;EAAS;;AAP8C;AAehH;;EAAuD,KAAWV,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,EArBzCW,OAqByCX,CArBjCD,qBAqBiCC,CArBXI,CAqBWJ,CAAAA,CAAAA;;AAChD;AAMlB;;;AAA+He,cAtB1GH,kCAsB0GG,CAAAA,UAtB7Df,cAsB6De,CAAAA,SAtBrCZ,sBAsBqCY,CAtBdX,CAsBcW,CAAAA,CAAAA;EAAC,OAE9GC,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,qBAA2CZ,CAAAA,OAAAA,CAAAA,EAtBpCF,qCAsBoCE,CAAAA,EAAAA,MAAAA;EAAC,QAAxCS,oBAAAA;EAAsC,OAObT,aAAAA,CAAAA,UA3BvBJ,cA2BuBI,CAAAA,CAAAA,MAAAA,EA3BCA,CA2BDA,CAAAA,EA3BKQ,kCA2BLR,CA3BwCA,CA2BxCA,CAAAA;EAAC,OAAvBL,wBAAAA,CAAAA,UAAAA;IAAmCgB,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAC,CAAA,CAAA,CAATJ,OAAAA,EAxB/CJ,CAwB+CI,CAAAA,EAxB3CC,kCAwB2CD,CAxBRf,CAAAA,CAAEc,SAwBMC,CAAAA;IAC9BI,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBZnB,CAAAA,CAAEY,SAwBUO;EAAC,CAAA,EAATJ,OAAAA,EAvBTf,CAAAA,CAAEa,UAuBOE,EAAAA;IAVqFd,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,EAAA;;;;UAP7GgB,iDAAiDb;eACjDI;;;;;;uBAMaU,2CAA2Cd,qCAAqCH,iBAAiBkB;;;;KAE9FF,uCAAuCT;;;;;;;kCAOpCL,sBAAsBK,KAAKO,QAAQI;uBAC9CJ,QAAQI"}
1
+ {"version":3,"file":"structured.d.ts","names":["z","BaseOutputParser","FormatInstructionsOptions","InferInteropZodOutput","InteropZodType","JsonMarkdownStructuredOutputParserInput","JsonMarkdownFormatInstructionsOptions","StructuredOutputParser","T","___load_serializable0","SerializedNotImplemented","S","ZodString","ZodTypeAny","ZodObject","Promise","JsonMarkdownStructuredOutputParser","AsymmetricStructuredOutputParserFields","AsymmetricStructuredOutputParser","Y","inputSchema"],"sources":["../../src/output_parsers/structured.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseOutputParser, FormatInstructionsOptions } from \"@langchain/core/output_parsers\";\nimport { type InferInteropZodOutput, type InteropZodType } from \"@langchain/core/utils/types\";\nexport type JsonMarkdownStructuredOutputParserInput = {\n interpolationDepth?: number;\n};\nexport interface JsonMarkdownFormatInstructionsOptions extends FormatInstructionsOptions {\n interpolationDepth?: number;\n}\nexport declare class StructuredOutputParser<T extends InteropZodType> extends BaseOutputParser<InferInteropZodOutput<T>> {\n schema: T;\n static lc_name(): string;\n lc_namespace: string[];\n toJSON(): import(\"../load/serializable\").SerializedNotImplemented;\n constructor(schema: T);\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): StructuredOutputParser<T>;\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 {\n [key: string]: string;\n }>(schemas: S): StructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\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 /**\n * Parses the given text according to the schema.\n * @param text The text to parse\n * @returns The parsed output.\n */\n parse(text: string): Promise<InferInteropZodOutput<T>>;\n}\n/**\n * A specific type of `StructuredOutputParser` that parses JSON data\n * formatted as a markdown code snippet.\n */\nexport declare class JsonMarkdownStructuredOutputParser<T extends InteropZodType> extends StructuredOutputParser<T> {\n static lc_name(): string;\n getFormatInstructions(options?: JsonMarkdownFormatInstructionsOptions): string;\n private _schemaToInstruction;\n static fromZodSchema<T extends InteropZodType>(schema: T): JsonMarkdownStructuredOutputParser<T>;\n static fromNamesAndDescriptions<S extends {\n [key: string]: string;\n }>(schemas: S): JsonMarkdownStructuredOutputParser<z.ZodObject<{\n [k: string]: z.ZodString;\n }, \"strip\", z.ZodTypeAny, {\n [x: string]: string;\n }, {\n [x: string]: string;\n }>>;\n}\nexport interface AsymmetricStructuredOutputParserFields<T extends InteropZodType> {\n inputSchema: T;\n}\n/**\n * A type of `StructuredOutputParser` that handles asymmetric input and\n * output schemas.\n */\nexport declare abstract class AsymmetricStructuredOutputParser<T extends InteropZodType, Y = unknown> extends BaseOutputParser<Y> {\n private structuredInputParser;\n constructor({ inputSchema }: AsymmetricStructuredOutputParserFields<T>);\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 parse(text: string): Promise<Y>;\n getFormatInstructions(): string;\n}\n"],"mappings":";;;;;;KAGYK,uCAAAA;;;AAAAA,UAGKC,qCAAAA,SAA8CJ,yBAHZ,CAAA;EAGlCI,kBAAAA,CAAAA,EAAAA,MAAAA;AAGjB;AAA2C,cAAtBC,sBAAsB,CAAA,UAAWH,cAAX,CAAA,SAAmCH,gBAAnC,CAAoDE,qBAApD,CAA0EK,CAA1E,CAAA,CAAA,CAAA;EAAA,MAAWJ,EAC1CI,CAD0CJ;EAAc,OAAiDI,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAC,YAAvBL,EAAAA,MAAAA,EAAAA;EAAqB,MACxGK,CAAAA,CAAAA,EAACC,sBAAAA,CAGgCC,wBAHjCF;EAAC,WAAAC,CAAAA,MAAAA,EAIWD,CAJXC;EAGwD;;;;;EAOgB,OASrEE,aAAAA,CAAAA,UATmBP,cASnBO,CAAAA,CAAAA,MAAAA,EAT2CH,CAS3CG,CAAAA,EAT+CJ,sBAS/CI,CATsEH,CAStEG,CAAAA;EAAC;;;;;;EAmBqC,OAA7BI,wBAAAA,CAAAA,UAAAA;IAvCqDd,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,CAAA,CAAA,OAAA,EAoB9EU,CApB8E,CAAA,EAoB1EJ,sBApB0E,CAoBnDP,CAAAA,CAAEc,SApBiD,CAAA;IA6CzEE,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBAhB,CAAAA,CAAEY,SAwBFI;EAAkC,CAAA,EAAA,OAAA,EAvBvChB,CAAAA,CAAEa,UAuBqC,EAAA;IAAWT,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAc,CAAA,EAAiCI;IAE7EF,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAqC,CAAA,CAAA,CAEtCF;EAAc;;;;;;EAKrB,qBAF6BU,CAAAA,CAAAA,EAAAA,MAAAA;EAAS;;AAP8C;AAehH;;EAAuD,KAAWV,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,EArBzCW,OAqByCX,CArBjCD,qBAqBiCC,CArBXI,CAqBWJ,CAAAA,CAAAA;;AAChD;AAMlB;;;AAA+He,cAtB1GH,kCAsB0GG,CAAAA,UAtB7Df,cAsB6De,CAAAA,SAtBrCZ,sBAsBqCY,CAtBdX,CAsBcW,CAAAA,CAAAA;EAAC,OAE9GC,OAAAA,CAAAA,CAAAA,EAAAA,MAAAA;EAAW,qBAA2CZ,CAAAA,OAAAA,CAAAA,EAtBpCF,qCAsBoCE,CAAAA,EAAAA,MAAAA;EAAC,QAAxCS,oBAAAA;EAAsC,OAObT,aAAAA,CAAAA,UA3BvBJ,cA2BuBI,CAAAA,CAAAA,MAAAA,EA3BCA,CA2BDA,CAAAA,EA3BKQ,kCA2BLR,CA3BwCA,CA2BxCA,CAAAA;EAAC,OAAvBL,wBAAAA,CAAAA,UAAAA;IAAmCgB,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAC,CAAA,CAAA,CAATJ,OAAAA,EAxB/CJ,CAwB+CI,CAAAA,EAxB3CC,kCAwB2CD,CAxBRf,CAAAA,CAAEc,SAwBMC,CAAAA;IAC9BI,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAxBZnB,CAAAA,CAAEY,SAwBUO;EAAC,CAAA,EAATJ,OAAAA,EAvBTf,CAAAA,CAAEa,UAuBOE,EAAAA;IAVqFd,CAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,MAAAA;EAAgB,CAAA,EAAA;;;;UAP7GgB,iDAAiDb;eACjDI;;;;;;uBAMaU,2CAA2Cd,qCAAqCH,iBAAiBkB;;;;KAE9FF,uCAAuCT;;;;;;;kCAOpCL,sBAAsBK,KAAKO,QAAQI;uBAC9CJ,QAAQI"}
@@ -1,7 +1,7 @@
1
1
  import { interopParseAsync } from "@langchain/core/utils/types";
2
2
  import { toJsonSchema } from "@langchain/core/utils/json_schema";
3
+ import { z } from "zod/v3";
3
4
  import { BaseOutputParser, OutputParserException } from "@langchain/core/output_parsers";
4
- import { z } from "zod";
5
5
 
6
6
  //#region src/output_parsers/structured.ts
7
7
  var StructuredOutputParser = class extends BaseOutputParser {
@@ -70,7 +70,7 @@ ${JSON.stringify(toJsonSchema(this.schema))}
70
70
  try {
71
71
  const json = text.includes("```") ? text.trim().split(/```(?:json)?/)[1] : text.trim();
72
72
  return await interopParseAsync(this.schema, JSON.parse(json));
73
- } catch (e) {
73
+ } catch {
74
74
  try {
75
75
  return await interopParseAsync(this.schema, JSON.parse(text.trim()));
76
76
  } catch (e2) {
@@ -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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"}