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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/agents/ReactAgent.cjs +5 -5
  2. package/dist/agents/ReactAgent.cjs.map +1 -1
  3. package/dist/agents/ReactAgent.d.cts +2 -5
  4. package/dist/agents/ReactAgent.d.cts.map +1 -1
  5. package/dist/agents/ReactAgent.d.ts +2 -5
  6. package/dist/agents/ReactAgent.d.ts.map +1 -1
  7. package/dist/agents/ReactAgent.js +6 -6
  8. package/dist/agents/ReactAgent.js.map +1 -1
  9. package/dist/agents/annotation.cjs.map +1 -1
  10. package/dist/agents/annotation.d.cts +13 -8
  11. package/dist/agents/annotation.d.cts.map +1 -1
  12. package/dist/agents/annotation.d.ts +13 -8
  13. package/dist/agents/annotation.d.ts.map +1 -1
  14. package/dist/agents/annotation.js.map +1 -1
  15. package/dist/agents/createAgent.cjs.map +1 -1
  16. package/dist/agents/createAgent.js.map +1 -1
  17. package/dist/agents/index.cjs +2 -2
  18. package/dist/agents/index.cjs.map +1 -1
  19. package/dist/agents/index.d.cts +50 -50
  20. package/dist/agents/index.d.cts.map +1 -1
  21. package/dist/agents/index.d.ts +50 -50
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +2 -2
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/interrupt.d.cts +14 -1
  26. package/dist/agents/interrupt.d.cts.map +1 -1
  27. package/dist/agents/interrupt.d.ts +14 -1
  28. package/dist/agents/interrupt.d.ts.map +1 -1
  29. package/dist/agents/middlewareAgent/ReactAgent.cjs +273 -66
  30. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
  31. package/dist/agents/middlewareAgent/ReactAgent.d.cts +102 -16
  32. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
  33. package/dist/agents/middlewareAgent/ReactAgent.d.ts +102 -16
  34. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
  35. package/dist/agents/middlewareAgent/ReactAgent.js +275 -68
  36. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
  37. package/dist/agents/middlewareAgent/annotation.cjs +12 -6
  38. package/dist/agents/middlewareAgent/annotation.cjs.map +1 -1
  39. package/dist/agents/middlewareAgent/annotation.js +12 -6
  40. package/dist/agents/middlewareAgent/annotation.js.map +1 -1
  41. package/dist/agents/middlewareAgent/constants.d.cts +5 -0
  42. package/dist/agents/middlewareAgent/constants.d.cts.map +1 -0
  43. package/dist/agents/middlewareAgent/constants.d.ts +5 -0
  44. package/dist/agents/middlewareAgent/constants.d.ts.map +1 -0
  45. package/dist/agents/middlewareAgent/index.cjs.map +1 -1
  46. package/dist/agents/middlewareAgent/index.js.map +1 -1
  47. package/dist/agents/middlewareAgent/middleware/bigTool.cjs +162 -0
  48. package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +1 -0
  49. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +113 -0
  50. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +1 -0
  51. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +113 -0
  52. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +1 -0
  53. package/dist/agents/middlewareAgent/middleware/bigTool.js +161 -0
  54. package/dist/agents/middlewareAgent/middleware/bigTool.js.map +1 -0
  55. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +58 -0
  56. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -0
  57. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +46 -0
  58. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -0
  59. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +46 -0
  60. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -0
  61. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +58 -0
  62. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -0
  63. package/dist/agents/middlewareAgent/middleware/hitl.cjs +311 -0
  64. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
  65. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +419 -0
  66. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
  67. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +419 -0
  68. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
  69. package/dist/agents/middlewareAgent/middleware/hitl.js +310 -0
  70. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
  71. package/dist/agents/middlewareAgent/middleware/index.cjs +32 -0
  72. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
  73. package/dist/agents/middlewareAgent/middleware/index.d.cts +6 -0
  74. package/dist/agents/middlewareAgent/middleware/index.d.ts +6 -0
  75. package/dist/agents/middlewareAgent/middleware/index.js +21 -0
  76. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
  77. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.cjs +72 -27
  78. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
  79. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.cts +60 -15
  80. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
  81. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.ts +60 -15
  82. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
  83. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.js +71 -26
  84. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
  85. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.cjs +35 -23
  86. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
  87. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.cts +7 -5
  88. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
  89. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.ts +7 -5
  90. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
  91. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.js +29 -17
  92. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
  93. package/dist/agents/middlewareAgent/middleware.cjs +8 -5
  94. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
  95. package/dist/agents/middlewareAgent/middleware.d.cts +67 -7
  96. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
  97. package/dist/agents/middlewareAgent/middleware.d.ts +67 -7
  98. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
  99. package/dist/agents/middlewareAgent/middleware.js +8 -5
  100. package/dist/agents/middlewareAgent/middleware.js.map +1 -1
  101. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
  102. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
  103. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
  104. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
  105. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +125 -83
  106. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
  107. package/dist/agents/middlewareAgent/nodes/AgentNode.js +128 -86
  108. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
  109. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
  110. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
  111. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
  112. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
  113. package/dist/agents/middlewareAgent/nodes/middleware.cjs +42 -17
  114. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
  115. package/dist/agents/middlewareAgent/nodes/middleware.js +42 -18
  116. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
  117. package/dist/agents/middlewareAgent/nodes/utils.cjs +30 -16
  118. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
  119. package/dist/agents/middlewareAgent/nodes/utils.js +28 -14
  120. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
  121. package/dist/agents/middlewareAgent/types.d.cts +162 -88
  122. package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
  123. package/dist/agents/middlewareAgent/types.d.ts +162 -88
  124. package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
  125. package/dist/agents/model.cjs +13 -0
  126. package/dist/agents/model.cjs.map +1 -0
  127. package/dist/agents/model.js +11 -0
  128. package/dist/agents/model.js.map +1 -0
  129. package/dist/agents/nodes/AgentNode.cjs +60 -32
  130. package/dist/agents/nodes/AgentNode.cjs.map +1 -1
  131. package/dist/agents/nodes/AgentNode.js +61 -33
  132. package/dist/agents/nodes/AgentNode.js.map +1 -1
  133. package/dist/agents/nodes/ToolNode.cjs +4 -4
  134. package/dist/agents/nodes/ToolNode.cjs.map +1 -1
  135. package/dist/agents/nodes/ToolNode.d.cts +2 -3
  136. package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
  137. package/dist/agents/nodes/ToolNode.d.ts +1 -2
  138. package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
  139. package/dist/agents/nodes/ToolNode.js +5 -5
  140. package/dist/agents/nodes/ToolNode.js.map +1 -1
  141. package/dist/agents/responses.cjs +53 -11
  142. package/dist/agents/responses.cjs.map +1 -1
  143. package/dist/agents/responses.d.cts +12 -20
  144. package/dist/agents/responses.d.cts.map +1 -1
  145. package/dist/agents/responses.d.ts +12 -20
  146. package/dist/agents/responses.d.ts.map +1 -1
  147. package/dist/agents/responses.js +53 -12
  148. package/dist/agents/responses.js.map +1 -1
  149. package/dist/agents/types.d.cts +3 -6
  150. package/dist/agents/types.d.cts.map +1 -1
  151. package/dist/agents/types.d.ts +3 -6
  152. package/dist/agents/types.d.ts.map +1 -1
  153. package/dist/agents/utils.cjs +11 -29
  154. package/dist/agents/utils.cjs.map +1 -1
  155. package/dist/agents/utils.js +9 -26
  156. package/dist/agents/utils.js.map +1 -1
  157. package/dist/agents/withAgentName.cjs.map +1 -1
  158. package/dist/agents/withAgentName.js.map +1 -1
  159. package/dist/chains/api/prompts.cjs.map +1 -1
  160. package/dist/chains/api/prompts.js.map +1 -1
  161. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
  162. package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
  163. package/dist/chains/index.cjs +0 -3
  164. package/dist/chains/index.cjs.map +1 -1
  165. package/dist/chains/index.d.cts +1 -2
  166. package/dist/chains/index.d.ts +1 -2
  167. package/dist/chains/index.js +1 -3
  168. package/dist/chains/index.js.map +1 -1
  169. package/dist/chains/openai_functions/extraction.cjs.map +1 -1
  170. package/dist/chains/openai_functions/extraction.d.cts +1 -3
  171. package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
  172. package/dist/chains/openai_functions/extraction.d.ts +1 -3
  173. package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
  174. package/dist/chains/openai_functions/extraction.js.map +1 -1
  175. package/dist/chains/openai_functions/index.cjs +0 -5
  176. package/dist/chains/openai_functions/index.cjs.map +1 -1
  177. package/dist/chains/openai_functions/index.d.cts +1 -2
  178. package/dist/chains/openai_functions/index.d.ts +1 -2
  179. package/dist/chains/openai_functions/index.js +1 -4
  180. package/dist/chains/openai_functions/index.js.map +1 -1
  181. package/dist/chains/openai_functions/openapi.cjs +4 -4
  182. package/dist/chains/openai_functions/openapi.cjs.map +1 -1
  183. package/dist/chains/openai_functions/openapi.d.cts +1 -1
  184. package/dist/chains/openai_functions/openapi.js +4 -4
  185. package/dist/chains/openai_functions/openapi.js.map +1 -1
  186. package/dist/chains/openai_functions/tagging.cjs.map +1 -1
  187. package/dist/chains/openai_functions/tagging.d.cts +1 -3
  188. package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
  189. package/dist/chains/openai_functions/tagging.d.ts +1 -3
  190. package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
  191. package/dist/chains/openai_functions/tagging.js.map +1 -1
  192. package/dist/chains/query_constructor/index.cjs +4 -4
  193. package/dist/chains/query_constructor/index.cjs.map +1 -1
  194. package/dist/chains/query_constructor/index.d.cts +4 -2
  195. package/dist/chains/query_constructor/index.d.cts.map +1 -1
  196. package/dist/chains/query_constructor/index.d.ts +4 -2
  197. package/dist/chains/query_constructor/index.d.ts.map +1 -1
  198. package/dist/chains/query_constructor/index.js +1 -1
  199. package/dist/chains/query_constructor/index.js.map +1 -1
  200. package/dist/chains/question_answering/load.d.ts +2 -2
  201. package/dist/chains/question_answering/load.d.ts.map +1 -1
  202. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
  203. package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
  204. package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
  205. package/dist/chains/question_answering/refine_prompts.js.map +1 -1
  206. package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
  207. package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
  208. package/dist/chains/router/multi_prompt.cjs +4 -4
  209. package/dist/chains/router/multi_prompt.cjs.map +1 -1
  210. package/dist/chains/router/multi_prompt.js +1 -1
  211. package/dist/chains/router/multi_prompt.js.map +1 -1
  212. package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
  213. package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
  214. package/dist/chains/router/multi_retrieval_qa.js +1 -1
  215. package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
  216. package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
  217. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
  218. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
  219. package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
  220. package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
  221. package/dist/chains/summarization/stuff_prompts.js.map +1 -1
  222. package/dist/chat_models/universal.cjs +8 -5
  223. package/dist/chat_models/universal.cjs.map +1 -1
  224. package/dist/chat_models/universal.d.cts +2 -2
  225. package/dist/chat_models/universal.d.cts.map +1 -1
  226. package/dist/chat_models/universal.d.ts +2 -2
  227. package/dist/chat_models/universal.d.ts.map +1 -1
  228. package/dist/chat_models/universal.js +8 -5
  229. package/dist/chat_models/universal.js.map +1 -1
  230. package/dist/document_loaders/fs/directory.cjs.map +1 -1
  231. package/dist/document_loaders/fs/directory.d.cts +0 -1
  232. package/dist/document_loaders/fs/directory.d.cts.map +1 -1
  233. package/dist/document_loaders/fs/directory.d.ts +0 -1
  234. package/dist/document_loaders/fs/directory.d.ts.map +1 -1
  235. package/dist/document_loaders/fs/directory.js.map +1 -1
  236. package/dist/document_loaders/fs/json.cjs +7 -1
  237. package/dist/document_loaders/fs/json.cjs.map +1 -1
  238. package/dist/document_loaders/fs/json.js +7 -1
  239. package/dist/document_loaders/fs/json.js.map +1 -1
  240. package/dist/embeddings/cache_backed.cjs +1 -1
  241. package/dist/embeddings/cache_backed.cjs.map +1 -1
  242. package/dist/embeddings/cache_backed.d.cts +1 -1
  243. package/dist/embeddings/cache_backed.d.ts +2 -2
  244. package/dist/embeddings/cache_backed.js +2 -2
  245. package/dist/embeddings/cache_backed.js.map +1 -1
  246. package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
  247. package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
  248. package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
  249. package/dist/evaluation/embedding_distance/base.cjs +2 -4
  250. package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
  251. package/dist/evaluation/embedding_distance/base.js +2 -3
  252. package/dist/evaluation/embedding_distance/base.js.map +1 -1
  253. package/dist/evaluation/loader.cjs +7 -12
  254. package/dist/evaluation/loader.cjs.map +1 -1
  255. package/dist/evaluation/loader.d.cts +8 -2
  256. package/dist/evaluation/loader.d.cts.map +1 -1
  257. package/dist/evaluation/loader.d.ts +8 -2
  258. package/dist/evaluation/loader.d.ts.map +1 -1
  259. package/dist/evaluation/loader.js +7 -12
  260. package/dist/evaluation/loader.js.map +1 -1
  261. package/dist/hub/base.cjs.map +1 -1
  262. package/dist/hub/base.js.map +1 -1
  263. package/dist/index.cjs +38 -6
  264. package/dist/index.cjs.map +1 -1
  265. package/dist/index.d.cts +11 -4
  266. package/dist/index.d.ts +11 -4
  267. package/dist/index.js +18 -4
  268. package/dist/index.js.map +1 -1
  269. package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
  270. package/dist/langchain-core/dist/messages/base.d.cts +24 -33
  271. package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
  272. package/dist/langchain-core/dist/messages/content/index.d.cts +21 -2
  273. package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
  274. package/dist/langchain-core/dist/messages/content/tools.d.cts +67 -6
  275. package/dist/langchain-core/dist/messages/content/tools.d.cts.map +1 -1
  276. package/dist/langchain-core/dist/messages/message.d.cts +598 -0
  277. package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
  278. package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
  279. package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
  280. package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
  281. package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
  282. package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
  283. package/dist/langchain-core/dist/utils/types/index.d.cts.map +1 -1
  284. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
  285. package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
  286. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
  287. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +21 -2
  288. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
  289. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +67 -6
  290. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +1 -1
  291. package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
  292. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
  293. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
  294. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
  295. package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
  296. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
  297. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
  298. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
  299. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
  300. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
  301. package/dist/load/import_map.cjs +3 -14
  302. package/dist/load/import_map.cjs.map +1 -1
  303. package/dist/load/import_map.js +3 -14
  304. package/dist/load/import_map.js.map +1 -1
  305. package/dist/memory/prompt.cjs.map +1 -1
  306. package/dist/memory/prompt.d.cts.map +1 -1
  307. package/dist/memory/prompt.d.ts.map +1 -1
  308. package/dist/memory/prompt.js.map +1 -1
  309. package/dist/output_parsers/combining.cjs +1 -1
  310. package/dist/output_parsers/combining.cjs.map +1 -1
  311. package/dist/output_parsers/combining.js +1 -1
  312. package/dist/output_parsers/combining.js.map +1 -1
  313. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
  314. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
  315. package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
  316. package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
  317. package/dist/output_parsers/expression_type_handlers/base.js +1 -1
  318. package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
  319. package/dist/output_parsers/regex.cjs.map +1 -1
  320. package/dist/output_parsers/regex.js.map +1 -1
  321. package/dist/output_parsers/structured.cjs +4 -4
  322. package/dist/output_parsers/structured.cjs.map +1 -1
  323. package/dist/output_parsers/structured.d.cts +1 -1
  324. package/dist/output_parsers/structured.d.cts.map +1 -1
  325. package/dist/output_parsers/structured.d.ts +1 -1
  326. package/dist/output_parsers/structured.d.ts.map +1 -1
  327. package/dist/output_parsers/structured.js +2 -2
  328. package/dist/output_parsers/structured.js.map +1 -1
  329. package/dist/retrievers/ensemble.cjs.map +1 -1
  330. package/dist/retrievers/ensemble.js.map +1 -1
  331. package/dist/storage/file_system.cjs +1 -1
  332. package/dist/storage/file_system.cjs.map +1 -1
  333. package/dist/storage/file_system.js +1 -1
  334. package/dist/storage/file_system.js.map +1 -1
  335. package/dist/tools/fs.cjs +5 -5
  336. package/dist/tools/fs.cjs.map +1 -1
  337. package/dist/tools/fs.d.cts +1 -1
  338. package/dist/tools/fs.d.cts.map +1 -1
  339. package/dist/tools/fs.d.ts +1 -1
  340. package/dist/tools/fs.d.ts.map +1 -1
  341. package/dist/tools/fs.js +1 -1
  342. package/dist/tools/fs.js.map +1 -1
  343. package/dist/tools/retriever.cjs +2 -2
  344. package/dist/tools/retriever.cjs.map +1 -1
  345. package/dist/tools/retriever.d.cts +1 -1
  346. package/dist/tools/retriever.d.cts.map +1 -1
  347. package/dist/tools/retriever.d.ts +1 -1
  348. package/dist/tools/retriever.d.ts.map +1 -1
  349. package/dist/tools/retriever.js +1 -1
  350. package/dist/tools/retriever.js.map +1 -1
  351. package/dist/tools/sql.cjs +1 -2
  352. package/dist/tools/sql.cjs.map +1 -1
  353. package/dist/tools/sql.d.cts +1 -1
  354. package/dist/tools/sql.d.cts.map +1 -1
  355. package/dist/tools/sql.d.ts +1 -1
  356. package/dist/tools/sql.d.ts.map +1 -1
  357. package/dist/tools/sql.js +1 -2
  358. package/dist/tools/sql.js.map +1 -1
  359. package/dist/types/expression-parser.d.cts +2 -0
  360. package/dist/types/expression-parser.d.cts.map +1 -1
  361. package/dist/types/expression-parser.d.ts +2 -0
  362. package/dist/types/expression-parser.d.ts.map +1 -1
  363. package/dist/util/hub.cjs +1 -1
  364. package/dist/util/hub.js +1 -1
  365. package/dist/util/openapi.cjs +1 -1
  366. package/dist/util/openapi.cjs.map +1 -1
  367. package/dist/util/openapi.js +1 -1
  368. package/dist/util/openapi.js.map +1 -1
  369. package/package.json +15 -21
  370. package/dist/agents/middlewareAgent/middlewares/hitl.cjs +0 -235
  371. package/dist/agents/middlewareAgent/middlewares/hitl.cjs.map +0 -1
  372. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts +0 -199
  373. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts.map +0 -1
  374. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts +0 -199
  375. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts.map +0 -1
  376. package/dist/agents/middlewareAgent/middlewares/hitl.js +0 -234
  377. package/dist/agents/middlewareAgent/middlewares/hitl.js.map +0 -1
  378. package/dist/agents/middlewareAgent/middlewares/index.cjs +0 -8
  379. package/dist/agents/middlewareAgent/middlewares/index.d.cts +0 -4
  380. package/dist/agents/middlewareAgent/middlewares/index.d.ts +0 -4
  381. package/dist/agents/middlewareAgent/middlewares/index.js +0 -5
  382. package/dist/agents/middlewareAgent/middlewares/promptCaching.cjs.map +0 -1
  383. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.cts.map +0 -1
  384. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.ts.map +0 -1
  385. package/dist/agents/middlewareAgent/middlewares/promptCaching.js.map +0 -1
  386. package/dist/agents/middlewareAgent/middlewares/summarization.cjs.map +0 -1
  387. package/dist/agents/middlewareAgent/middlewares/summarization.d.cts.map +0 -1
  388. package/dist/agents/middlewareAgent/middlewares/summarization.d.ts.map +0 -1
  389. package/dist/agents/middlewareAgent/middlewares/summarization.js.map +0 -1
  390. package/dist/chains/openai_functions/structured_output.cjs +0 -107
  391. package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
  392. package/dist/chains/openai_functions/structured_output.d.cts +0 -38
  393. package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
  394. package/dist/chains/openai_functions/structured_output.d.ts +0 -38
  395. package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
  396. package/dist/chains/openai_functions/structured_output.js +0 -105
  397. package/dist/chains/openai_functions/structured_output.js.map +0 -1
  398. package/dist/chains/openai_moderation.cjs +0 -107
  399. package/dist/chains/openai_moderation.cjs.map +0 -1
  400. package/dist/chains/openai_moderation.d.cts +0 -74
  401. package/dist/chains/openai_moderation.d.cts.map +0 -1
  402. package/dist/chains/openai_moderation.d.ts +0 -74
  403. package/dist/chains/openai_moderation.d.ts.map +0 -1
  404. package/dist/chains/openai_moderation.js +0 -106
  405. package/dist/chains/openai_moderation.js.map +0 -1
@@ -2,12 +2,18 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const __langchain_langgraph = require_rolldown_runtime.__toESM(require("@langchain/langgraph"));
3
3
 
4
4
  //#region src/agents/middlewareAgent/annotation.ts
5
- function createAgentAnnotationConditional(hasStructuredResponse = true, middlewares = []) {
6
- const baseAnnotation = { messages: (0, __langchain_langgraph.Annotation)({
7
- reducer: __langchain_langgraph.messagesStateReducer,
8
- default: () => []
9
- }) };
10
- for (const middleware of middlewares) if (middleware.stateSchema) {
5
+ function createAgentAnnotationConditional(hasStructuredResponse = true, middlewareList = []) {
6
+ const baseAnnotation = {
7
+ messages: (0, __langchain_langgraph.Annotation)({
8
+ reducer: __langchain_langgraph.messagesStateReducer,
9
+ default: () => []
10
+ }),
11
+ jumpTo: (0, __langchain_langgraph.Annotation)({
12
+ reducer: (_x, y) => y,
13
+ default: () => void 0
14
+ })
15
+ };
16
+ for (const middleware of middlewareList) if (middleware.stateSchema) {
11
17
  let parsedDefaults = {};
12
18
  try {
13
19
  parsedDefaults = middleware.stateSchema.parse({});
@@ -1 +1 @@
1
- {"version":3,"file":"annotation.cjs","names":["middlewares: TMiddlewares","baseAnnotation: Record<string, any>","messagesStateReducer","parsedDefaults: Record<string, any>","x: any","y: any","Annotation"],"sources":["../../../src/agents/middlewareAgent/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport {\n Annotation,\n Messages,\n AnnotationRoot,\n messagesStateReducer,\n type BinaryOperatorAggregate,\n type LastValue,\n} from \"@langchain/langgraph\";\nimport type { ResponseFormatUndefined } from \"../responses.js\";\nimport type { AgentMiddleware, InferMiddlewareStates } from \"./types.js\";\n\n// Create annotation conditionally - for ResponseFormatUndefined, don't include structuredResponse\n// Helper type for the merged annotation\ntype MergedAnnotationSpec<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[]\n> = {\n messages: BinaryOperatorAggregate<BaseMessage[], Messages>;\n} & (T extends ResponseFormatUndefined\n ? {}\n : { structuredResponse: LastValue<T> }) &\n InferMiddlewareStates<TMiddlewares>;\n\nexport function createAgentAnnotationConditional<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n hasStructuredResponse = true,\n middlewares: TMiddlewares = [] as unknown as TMiddlewares\n): AnnotationRoot<MergedAnnotationSpec<T, TMiddlewares>> {\n const baseAnnotation: Record<string, any> = {\n messages: Annotation<BaseMessage[], Messages>({\n reducer: messagesStateReducer,\n default: () => [],\n }),\n };\n\n // Add middleware state properties to the annotation\n for (const middleware of middlewares) {\n if (middleware.stateSchema) {\n // Parse empty object to get default values\n let parsedDefaults: Record<string, any> = {};\n try {\n parsedDefaults = middleware.stateSchema.parse({});\n } catch {\n // If parsing fails, we'll use undefined as defaults\n }\n\n const { shape } = middleware.stateSchema;\n for (const [key] of Object.entries(shape)) {\n /**\n * Skip private state properties\n */\n if (key.startsWith(\"_\")) {\n continue;\n }\n\n if (!(key in baseAnnotation)) {\n const defaultValue = parsedDefaults[key] ?? undefined;\n baseAnnotation[key] = Annotation({\n reducer: (x: any, y: any) => y ?? x,\n default: () => defaultValue,\n });\n }\n }\n }\n }\n\n if (!hasStructuredResponse) {\n return Annotation.Root(baseAnnotation) as AnnotationRoot<\n MergedAnnotationSpec<T, TMiddlewares>\n >;\n }\n\n return Annotation.Root({\n ...baseAnnotation,\n structuredResponse:\n Annotation<T extends ResponseFormatUndefined ? never : T>(),\n }) as unknown as AnnotationRoot<MergedAnnotationSpec<T, TMiddlewares>>;\n}\n"],"mappings":";;;;AAyBA,SAAgB,iCAId,wBAAwB,MACxBA,cAA4B,CAAE,GACyB;CACvD,MAAMC,iBAAsC,EAC1C,gDAA8C;EAC5C,SAASC;EACT,SAAS,MAAM,CAAE;CAClB,EAAC,CACH;AAGD,MAAK,MAAM,cAAc,YACvB,KAAI,WAAW,aAAa;EAE1B,IAAIC,iBAAsC,CAAE;AAC5C,MAAI;GACF,iBAAiB,WAAW,YAAY,MAAM,CAAE,EAAC;EAClD,QAAO,CAEP;EAED,MAAM,EAAE,OAAO,GAAG,WAAW;AAC7B,OAAK,MAAM,CAAC,IAAI,IAAI,OAAO,QAAQ,MAAM,EAAE;;;;AAIzC,OAAI,IAAI,WAAW,IAAI,CACrB;AAGF,OAAI,EAAE,OAAO,iBAAiB;IAC5B,MAAM,eAAe,eAAe,QAAQ;IAC5C,eAAe,6CAAkB;KAC/B,SAAS,CAACC,GAAQC,MAAW,KAAK;KAClC,SAAS,MAAM;IAChB,EAAC;GACH;EACF;CACF;AAGH,KAAI,CAAC,sBACH,QAAOC,iCAAW,KAAK,eAAe;AAKxC,QAAOA,iCAAW,KAAK;EACrB,GAAG;EACH,2DAC6D;CAC9D,EAAC;AACH"}
1
+ {"version":3,"file":"annotation.cjs","names":["middlewareList: TMiddleware","baseAnnotation: Record<string, any>","messagesStateReducer","_x: any","y: any","parsedDefaults: Record<string, any>","x: any","Annotation"],"sources":["../../../src/agents/middlewareAgent/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport {\n Annotation,\n Messages,\n AnnotationRoot,\n messagesStateReducer,\n type BinaryOperatorAggregate,\n type LastValue,\n} from \"@langchain/langgraph\";\nimport type { ResponseFormatUndefined } from \"../annotation.js\";\nimport type { AgentMiddleware, InferMiddlewareStates } from \"./types.js\";\n\n// Create annotation conditionally - for ResponseFormatUndefined, don't include structuredResponse\n// Helper type for the merged annotation\ntype MergedAnnotationSpec<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[]\n> = {\n messages: BinaryOperatorAggregate<BaseMessage[], Messages>;\n jumpTo: LastValue<\"model_request\" | \"tools\" | undefined>;\n} & (T extends ResponseFormatUndefined\n ? {}\n : { structuredResponse: LastValue<T> }) &\n InferMiddlewareStates<TMiddleware>;\n\nexport function createAgentAnnotationConditional<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n hasStructuredResponse = true,\n middlewareList: TMiddleware = [] as unknown as TMiddleware\n): AnnotationRoot<MergedAnnotationSpec<T, TMiddleware>> {\n const baseAnnotation: Record<string, any> = {\n messages: Annotation<BaseMessage[], Messages>({\n reducer: messagesStateReducer,\n default: () => [],\n }),\n jumpTo: Annotation<\"model_request\" | \"tools\" | undefined>({\n /**\n * Since `jumpTo` acts as a control command, we only want\n * to apply it if explicitly set.\n */\n reducer: (_x: any, y: any) => y,\n default: () => undefined,\n }),\n };\n\n // Add middleware state properties to the annotation\n for (const middleware of middlewareList) {\n if (middleware.stateSchema) {\n // Parse empty object to get default values\n let parsedDefaults: Record<string, any> = {};\n try {\n parsedDefaults = middleware.stateSchema.parse({});\n } catch {\n // If parsing fails, we'll use undefined as defaults\n }\n\n const { shape } = middleware.stateSchema;\n for (const [key] of Object.entries(shape)) {\n /**\n * Skip private state properties\n */\n if (key.startsWith(\"_\")) {\n continue;\n }\n\n if (!(key in baseAnnotation)) {\n const defaultValue = parsedDefaults[key] ?? undefined;\n baseAnnotation[key] = Annotation({\n reducer: (x: any, y: any) => y ?? x,\n default: () => defaultValue,\n });\n }\n }\n }\n }\n\n if (!hasStructuredResponse) {\n return Annotation.Root(baseAnnotation) as AnnotationRoot<\n MergedAnnotationSpec<T, TMiddleware>\n >;\n }\n\n return Annotation.Root({\n ...baseAnnotation,\n structuredResponse:\n Annotation<T extends ResponseFormatUndefined ? never : T>(),\n }) as unknown as AnnotationRoot<MergedAnnotationSpec<T, TMiddleware>>;\n}\n"],"mappings":";;;;AA0BA,SAAgB,iCAId,wBAAwB,MACxBA,iBAA8B,CAAE,GACsB;CACtD,MAAMC,iBAAsC;EAC1C,gDAA8C;GAC5C,SAASC;GACT,SAAS,MAAM,CAAE;EAClB,EAAC;EACF,8CAA0D;GAKxD,SAAS,CAACC,IAASC,MAAW;GAC9B,SAAS,MAAM;EAChB,EAAC;CACH;AAGD,MAAK,MAAM,cAAc,eACvB,KAAI,WAAW,aAAa;EAE1B,IAAIC,iBAAsC,CAAE;AAC5C,MAAI;GACF,iBAAiB,WAAW,YAAY,MAAM,CAAE,EAAC;EAClD,QAAO,CAEP;EAED,MAAM,EAAE,OAAO,GAAG,WAAW;AAC7B,OAAK,MAAM,CAAC,IAAI,IAAI,OAAO,QAAQ,MAAM,EAAE;;;;AAIzC,OAAI,IAAI,WAAW,IAAI,CACrB;AAGF,OAAI,EAAE,OAAO,iBAAiB;IAC5B,MAAM,eAAe,eAAe,QAAQ;IAC5C,eAAe,6CAAkB;KAC/B,SAAS,CAACC,GAAQF,MAAW,KAAK;KAClC,SAAS,MAAM;IAChB,EAAC;GACH;EACF;CACF;AAGH,KAAI,CAAC,sBACH,QAAOG,iCAAW,KAAK,eAAe;AAKxC,QAAOA,iCAAW,KAAK;EACrB,GAAG;EACH,2DAC6D;CAC9D,EAAC;AACH"}
@@ -1,12 +1,18 @@
1
1
  import { Annotation, messagesStateReducer } from "@langchain/langgraph";
2
2
 
3
3
  //#region src/agents/middlewareAgent/annotation.ts
4
- function createAgentAnnotationConditional(hasStructuredResponse = true, middlewares = []) {
5
- const baseAnnotation = { messages: Annotation({
6
- reducer: messagesStateReducer,
7
- default: () => []
8
- }) };
9
- for (const middleware of middlewares) if (middleware.stateSchema) {
4
+ function createAgentAnnotationConditional(hasStructuredResponse = true, middlewareList = []) {
5
+ const baseAnnotation = {
6
+ messages: Annotation({
7
+ reducer: messagesStateReducer,
8
+ default: () => []
9
+ }),
10
+ jumpTo: Annotation({
11
+ reducer: (_x, y) => y,
12
+ default: () => void 0
13
+ })
14
+ };
15
+ for (const middleware of middlewareList) if (middleware.stateSchema) {
10
16
  let parsedDefaults = {};
11
17
  try {
12
18
  parsedDefaults = middleware.stateSchema.parse({});
@@ -1 +1 @@
1
- {"version":3,"file":"annotation.js","names":["middlewares: TMiddlewares","baseAnnotation: Record<string, any>","parsedDefaults: Record<string, any>","x: any","y: any"],"sources":["../../../src/agents/middlewareAgent/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport {\n Annotation,\n Messages,\n AnnotationRoot,\n messagesStateReducer,\n type BinaryOperatorAggregate,\n type LastValue,\n} from \"@langchain/langgraph\";\nimport type { ResponseFormatUndefined } from \"../responses.js\";\nimport type { AgentMiddleware, InferMiddlewareStates } from \"./types.js\";\n\n// Create annotation conditionally - for ResponseFormatUndefined, don't include structuredResponse\n// Helper type for the merged annotation\ntype MergedAnnotationSpec<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[]\n> = {\n messages: BinaryOperatorAggregate<BaseMessage[], Messages>;\n} & (T extends ResponseFormatUndefined\n ? {}\n : { structuredResponse: LastValue<T> }) &\n InferMiddlewareStates<TMiddlewares>;\n\nexport function createAgentAnnotationConditional<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n hasStructuredResponse = true,\n middlewares: TMiddlewares = [] as unknown as TMiddlewares\n): AnnotationRoot<MergedAnnotationSpec<T, TMiddlewares>> {\n const baseAnnotation: Record<string, any> = {\n messages: Annotation<BaseMessage[], Messages>({\n reducer: messagesStateReducer,\n default: () => [],\n }),\n };\n\n // Add middleware state properties to the annotation\n for (const middleware of middlewares) {\n if (middleware.stateSchema) {\n // Parse empty object to get default values\n let parsedDefaults: Record<string, any> = {};\n try {\n parsedDefaults = middleware.stateSchema.parse({});\n } catch {\n // If parsing fails, we'll use undefined as defaults\n }\n\n const { shape } = middleware.stateSchema;\n for (const [key] of Object.entries(shape)) {\n /**\n * Skip private state properties\n */\n if (key.startsWith(\"_\")) {\n continue;\n }\n\n if (!(key in baseAnnotation)) {\n const defaultValue = parsedDefaults[key] ?? undefined;\n baseAnnotation[key] = Annotation({\n reducer: (x: any, y: any) => y ?? x,\n default: () => defaultValue,\n });\n }\n }\n }\n }\n\n if (!hasStructuredResponse) {\n return Annotation.Root(baseAnnotation) as AnnotationRoot<\n MergedAnnotationSpec<T, TMiddlewares>\n >;\n }\n\n return Annotation.Root({\n ...baseAnnotation,\n structuredResponse:\n Annotation<T extends ResponseFormatUndefined ? never : T>(),\n }) as unknown as AnnotationRoot<MergedAnnotationSpec<T, TMiddlewares>>;\n}\n"],"mappings":";;;AAyBA,SAAgB,iCAId,wBAAwB,MACxBA,cAA4B,CAAE,GACyB;CACvD,MAAMC,iBAAsC,EAC1C,UAAU,WAAoC;EAC5C,SAAS;EACT,SAAS,MAAM,CAAE;CAClB,EAAC,CACH;AAGD,MAAK,MAAM,cAAc,YACvB,KAAI,WAAW,aAAa;EAE1B,IAAIC,iBAAsC,CAAE;AAC5C,MAAI;GACF,iBAAiB,WAAW,YAAY,MAAM,CAAE,EAAC;EAClD,QAAO,CAEP;EAED,MAAM,EAAE,OAAO,GAAG,WAAW;AAC7B,OAAK,MAAM,CAAC,IAAI,IAAI,OAAO,QAAQ,MAAM,EAAE;;;;AAIzC,OAAI,IAAI,WAAW,IAAI,CACrB;AAGF,OAAI,EAAE,OAAO,iBAAiB;IAC5B,MAAM,eAAe,eAAe,QAAQ;IAC5C,eAAe,OAAO,WAAW;KAC/B,SAAS,CAACC,GAAQC,MAAW,KAAK;KAClC,SAAS,MAAM;IAChB,EAAC;GACH;EACF;CACF;AAGH,KAAI,CAAC,sBACH,QAAO,WAAW,KAAK,eAAe;AAKxC,QAAO,WAAW,KAAK;EACrB,GAAG;EACH,oBACE,YAA2D;CAC9D,EAAC;AACH"}
1
+ {"version":3,"file":"annotation.js","names":["middlewareList: TMiddleware","baseAnnotation: Record<string, any>","_x: any","y: any","parsedDefaults: Record<string, any>","x: any"],"sources":["../../../src/agents/middlewareAgent/annotation.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport {\n Annotation,\n Messages,\n AnnotationRoot,\n messagesStateReducer,\n type BinaryOperatorAggregate,\n type LastValue,\n} from \"@langchain/langgraph\";\nimport type { ResponseFormatUndefined } from \"../annotation.js\";\nimport type { AgentMiddleware, InferMiddlewareStates } from \"./types.js\";\n\n// Create annotation conditionally - for ResponseFormatUndefined, don't include structuredResponse\n// Helper type for the merged annotation\ntype MergedAnnotationSpec<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[]\n> = {\n messages: BinaryOperatorAggregate<BaseMessage[], Messages>;\n jumpTo: LastValue<\"model_request\" | \"tools\" | undefined>;\n} & (T extends ResponseFormatUndefined\n ? {}\n : { structuredResponse: LastValue<T> }) &\n InferMiddlewareStates<TMiddleware>;\n\nexport function createAgentAnnotationConditional<\n T extends Record<string, any> | ResponseFormatUndefined,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n hasStructuredResponse = true,\n middlewareList: TMiddleware = [] as unknown as TMiddleware\n): AnnotationRoot<MergedAnnotationSpec<T, TMiddleware>> {\n const baseAnnotation: Record<string, any> = {\n messages: Annotation<BaseMessage[], Messages>({\n reducer: messagesStateReducer,\n default: () => [],\n }),\n jumpTo: Annotation<\"model_request\" | \"tools\" | undefined>({\n /**\n * Since `jumpTo` acts as a control command, we only want\n * to apply it if explicitly set.\n */\n reducer: (_x: any, y: any) => y,\n default: () => undefined,\n }),\n };\n\n // Add middleware state properties to the annotation\n for (const middleware of middlewareList) {\n if (middleware.stateSchema) {\n // Parse empty object to get default values\n let parsedDefaults: Record<string, any> = {};\n try {\n parsedDefaults = middleware.stateSchema.parse({});\n } catch {\n // If parsing fails, we'll use undefined as defaults\n }\n\n const { shape } = middleware.stateSchema;\n for (const [key] of Object.entries(shape)) {\n /**\n * Skip private state properties\n */\n if (key.startsWith(\"_\")) {\n continue;\n }\n\n if (!(key in baseAnnotation)) {\n const defaultValue = parsedDefaults[key] ?? undefined;\n baseAnnotation[key] = Annotation({\n reducer: (x: any, y: any) => y ?? x,\n default: () => defaultValue,\n });\n }\n }\n }\n }\n\n if (!hasStructuredResponse) {\n return Annotation.Root(baseAnnotation) as AnnotationRoot<\n MergedAnnotationSpec<T, TMiddleware>\n >;\n }\n\n return Annotation.Root({\n ...baseAnnotation,\n structuredResponse:\n Annotation<T extends ResponseFormatUndefined ? never : T>(),\n }) as unknown as AnnotationRoot<MergedAnnotationSpec<T, TMiddleware>>;\n}\n"],"mappings":";;;AA0BA,SAAgB,iCAId,wBAAwB,MACxBA,iBAA8B,CAAE,GACsB;CACtD,MAAMC,iBAAsC;EAC1C,UAAU,WAAoC;GAC5C,SAAS;GACT,SAAS,MAAM,CAAE;EAClB,EAAC;EACF,QAAQ,WAAkD;GAKxD,SAAS,CAACC,IAASC,MAAW;GAC9B,SAAS,MAAM;EAChB,EAAC;CACH;AAGD,MAAK,MAAM,cAAc,eACvB,KAAI,WAAW,aAAa;EAE1B,IAAIC,iBAAsC,CAAE;AAC5C,MAAI;GACF,iBAAiB,WAAW,YAAY,MAAM,CAAE,EAAC;EAClD,QAAO,CAEP;EAED,MAAM,EAAE,OAAO,GAAG,WAAW;AAC7B,OAAK,MAAM,CAAC,IAAI,IAAI,OAAO,QAAQ,MAAM,EAAE;;;;AAIzC,OAAI,IAAI,WAAW,IAAI,CACrB;AAGF,OAAI,EAAE,OAAO,iBAAiB;IAC5B,MAAM,eAAe,eAAe,QAAQ;IAC5C,eAAe,OAAO,WAAW;KAC/B,SAAS,CAACC,GAAQF,MAAW,KAAK;KAClC,SAAS,MAAM;IAChB,EAAC;GACH;EACF;CACF;AAGH,KAAI,CAAC,sBACH,QAAO,WAAW,KAAK,eAAe;AAKxC,QAAO,WAAW,KAAK;EACrB,GAAG;EACH,oBACE,YAA2D;CAC9D,EAAC;AACH"}
@@ -0,0 +1,5 @@
1
+ //#region src/agents/middlewareAgent/constants.d.ts
2
+ declare const JUMP_TO_TARGETS: readonly ["model", "tools", "end"];
3
+ //#endregion
4
+ export { JUMP_TO_TARGETS };
5
+ //# sourceMappingURL=constants.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.cts","names":["JUMP_TO_TARGETS"],"sources":["../../../src/agents/middlewareAgent/constants.d.ts"],"sourcesContent":["export declare const JUMP_TO_TARGETS: readonly [\"model\", \"tools\", \"end\"];\n"],"mappings":";cAAqBA"}
@@ -0,0 +1,5 @@
1
+ //#region src/agents/middlewareAgent/constants.d.ts
2
+ declare const JUMP_TO_TARGETS: readonly ["model", "tools", "end"];
3
+ //#endregion
4
+ export { JUMP_TO_TARGETS };
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","names":["JUMP_TO_TARGETS"],"sources":["../../../src/agents/middlewareAgent/constants.d.ts"],"sourcesContent":["export declare const JUMP_TO_TARGETS: readonly [\"model\", \"tools\", \"end\"];\n"],"mappings":";cAAqBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>","ReactAgent"],"sources":["../../../src/agents/middlewareAgent/index.ts"],"sourcesContent":["import type {\n InteropZodObject,\n InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nimport { type AnyAnnotationRoot } from \"../annotation.js\";\nimport type { CreateAgentParams, AgentMiddleware } from \"./types.js\";\nimport type { ExtractZodArrayTypes } from \"../types.js\";\nimport type {\n ToolStrategy,\n TypedToolStrategy,\n ProviderStrategy,\n ResponseFormat,\n ResponseFormatUndefined,\n JsonSchemaFormat,\n} from \"../responses.js\";\nimport { ReactAgent } from \"./ReactAgent.js\";\n\n/**\n * Creates a StateGraph agent that relies on a chat model utilizing tool calling.\n *\n * @example\n * ```ts\n * import { ChatOpenAI } from \"@langchain/openai\";\n * import { createAgent, tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * });\n *\n * const getWeather = tool((input) => {\n * if ([\"sf\", \"san francisco\"].includes(input.location.toLowerCase())) {\n * return \"It's 60 degrees and foggy.\";\n * } else {\n * return \"It's 90 degrees and sunny.\";\n * }\n * }, {\n * name: \"get_weather\",\n * description: \"Call to get the current weather.\",\n * schema: z.object({\n * location: z.string().describe(\"Location to get the weather for.\"),\n * })\n * })\n *\n * const agent = createAgent({ llm: model, tools: [getWeather] });\n *\n * const inputs = {\n * messages: [{ role: \"user\", content: \"what is the weather in SF?\" }],\n * };\n *\n * const stream = await agent.stream(inputs, { streamMode: \"values\" });\n *\n * for await (const { messages } of stream) {\n * console.log(messages);\n * }\n * // Returns the messages in the state at each step of execution\n * ```\n */\n// Overload 1: With responseFormat as single InteropZodType\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, InteropZodType<T>> & {\n responseFormat: InteropZodType<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 2: With responseFormat as array of InteropZodTypes (infers union type)\nexport function createAgent<\n T extends readonly InteropZodType<any>[],\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n T\n > & {\n responseFormat: T;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n TMiddlewares\n>;\n\n// Overload 3: With responseFormat as JsonSchemaFormat (JSON schema object)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat\n > & {\n responseFormat: JsonSchemaFormat;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 4: With responseFormat as array of JsonSchemaFormat (JSON schema objects)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat[];\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 4.5: With responseFormat as union of JsonSchemaFormat | JsonSchemaFormat[]\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat | JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat | JsonSchemaFormat[];\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 5: With responseFormat as TypedToolStrategy (for union types from toolStrategy)\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, TypedToolStrategy<T>> & {\n responseFormat: TypedToolStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 6: With responseFormat as single ToolStrategy instance\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ToolStrategy<T>> & {\n responseFormat: ToolStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 7: With responseFormat as ProviderStrategy\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ProviderStrategy<T>> & {\n responseFormat: ProviderStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 8: Without responseFormat property at all - with proper middleware state typing\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & { middlewares?: TMiddlewares }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddlewares>;\n\n// Overload 9: With responseFormat explicitly undefined\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & {\n responseFormat?: undefined;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddlewares>;\n\n// Overload 10: For other ResponseFormat values (failsafe)\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n StructuredResponseFormat,\n ContextSchema,\n ResponseFormat\n > & {\n responseFormat: ResponseFormat;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddlewares>;\n\n// Implementation\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any>,\n ContextSchema extends AnyAnnotationRoot | InteropZodObject,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddlewares> {\n return new ReactAgent(params);\n}\n\nexport { createMiddleware } from \"./middleware.js\";\n"],"mappings":";;;;AA4RA,SAAgB,YAKdA,QACmE;AACnE,QAAO,IAAIC,8BAAW;AACvB"}
1
+ {"version":3,"file":"index.cjs","names":["params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>","ReactAgent"],"sources":["../../../src/agents/middlewareAgent/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n InteropZodObject,\n InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nimport type {\n AnyAnnotationRoot,\n ResponseFormatUndefined,\n} from \"../annotation.js\";\nimport type { CreateAgentParams, AgentMiddleware } from \"./types.js\";\nimport type { ExtractZodArrayTypes } from \"../types.js\";\nimport type {\n ToolStrategy,\n TypedToolStrategy,\n ProviderStrategy,\n ResponseFormat,\n JsonSchemaFormat,\n} from \"../responses.js\";\nimport { ReactAgent } from \"./ReactAgent.js\";\n\n/**\n * Creates a production-ready ReAct (Reasoning + Acting) agent that combines language models with tools\n * and middleware to create systems that can reason about tasks, decide which tools to use, and iteratively\n * work towards solutions.\n *\n * The agent follows the ReAct pattern, interleaving reasoning steps with tool calls to iteratively\n * work towards solutions. It can handle multiple tool calls in sequence or parallel, maintain state\n * across interactions, and provide auditable decision processes.\n *\n * ## Core Components\n *\n * ### Model\n * The reasoning engine can be specified as:\n * - **String identifier**: `\"openai:gpt-4o\"` for simple setup\n * - **Model instance**: Configured model object for full control\n * - **Dynamic function**: Select models at runtime based on state\n *\n * ### Tools\n * Tools give agents the ability to take actions:\n * - Pass an array of tools created with the `tool` function\n * - Or provide a configured `ToolNode` for custom error handling\n *\n * ### Prompt\n * Shape how your agent approaches tasks:\n * - String for simple instructions\n * - SystemMessage for structured prompts\n * - Function for dynamic prompts based on state\n *\n * ### Middleware\n * Middleware allows you to extend the agent's behavior:\n * - Add pre/post-model processing for context injection or validation\n * - Add dynamic control flows, e.g. terminate invocation or retries\n * - Add human-in-the-loop capabilities\n * - Add tool calls to the agent\n * - Add tool results to the agent\n *\n * ## Advanced Features\n *\n * - **Structured Output**: Use `responseFormat` with a Zod schema to get typed responses\n * - **Memory**: Extend the state schema to remember information across interactions\n * - **Streaming**: Get real-time updates as the agent processes\n *\n * @param options - Configuration options for the agent\n * @param options.llm - The language model as an instance of a chat model\n * @param options.model - The language model as a string identifier, see more in {@link https://docs.langchain.com/oss/javascript/langchain/models#basic-usage | Models}.\n * @param options.tools - Array of tools or configured ToolNode\n * @param options.prompt - System instructions (string, SystemMessage, or function)\n * @param options.responseFormat - Zod schema for structured output\n * @param options.stateSchema - Custom state schema for memory\n * @param options.middleware - Array of middleware for extending agent behavior, see more in {@link https://docs.langchain.com/oss/javascript/langchain/middleware | Middleware}.\n *\n * @returns A ReactAgent instance with `invoke` and `stream` methods\n *\n * @example Basic agent with tools\n * ```ts\n * import { createAgent, tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const search = tool(\n * ({ query }) => `Results for: ${query}`,\n * {\n * name: \"search\",\n * description: \"Search for information\",\n * schema: z.object({\n * query: z.string().describe(\"The search query\"),\n * })\n * }\n * );\n *\n * const agent = createAgent({\n * llm: \"openai:gpt-4o\",\n * tools: [search],\n * });\n *\n * const result = await agent.invoke({\n * messages: [{ role: \"user\", content: \"Search for ReAct agents\" }],\n * });\n * ```\n *\n * @example Structured output\n * ```ts\n * import { createAgent } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const ContactInfo = z.object({\n * name: z.string(),\n * email: z.string(),\n * phone: z.string(),\n * });\n *\n * const agent = createAgent({\n * llm: \"openai:gpt-4o\",\n * tools: [],\n * responseFormat: ContactInfo,\n * });\n *\n * const result = await agent.invoke({\n * messages: [{\n * role: \"user\",\n * content: \"Extract: John Doe, john@example.com, (555) 123-4567\"\n * }],\n * });\n *\n * console.log(result.structuredResponse);\n * // { name: 'John Doe', email: 'john@example.com', phone: '(555) 123-4567' }\n * ```\n *\n * @example Streaming responses\n * ```ts\n * const stream = await agent.stream(\n * { messages: [{ role: \"user\", content: \"What's the weather?\" }] },\n * { streamMode: \"values\" }\n * );\n *\n * for await (const chunk of stream) {\n * // ...\n * }\n * ```\n */\n// Overload 1: With responseFormat as single InteropZodType\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, InteropZodType<T>> & {\n responseFormat: InteropZodType<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 2: With responseFormat as array of InteropZodTypes (infers union type)\nexport function createAgent<\n T extends readonly InteropZodType<any>[],\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n T\n > & {\n responseFormat: T;\n middleware?: TMiddleware;\n }\n): ReactAgent<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n TMiddleware\n>;\n\n// Overload 3: With responseFormat as JsonSchemaFormat (JSON schema object)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat\n > & {\n responseFormat: JsonSchemaFormat;\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 4: With responseFormat as array of JsonSchemaFormat (JSON schema objects)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat[];\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 4.5: With responseFormat as union of JsonSchemaFormat | JsonSchemaFormat[]\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat | JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat | JsonSchemaFormat[];\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 5: With responseFormat as TypedToolStrategy (for union types from toolStrategy)\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, TypedToolStrategy<T>> & {\n responseFormat: TypedToolStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 6: With responseFormat as single ToolStrategy instance\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ToolStrategy<T>> & {\n responseFormat: ToolStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 7: With responseFormat as ProviderStrategy\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ProviderStrategy<T>> & {\n responseFormat: ProviderStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 8: Without responseFormat property at all - with proper middleware state typing\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & { middleware?: TMiddleware }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddleware>;\n\n// Overload 9: With responseFormat explicitly undefined\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & {\n responseFormat?: undefined;\n middleware?: TMiddleware;\n }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddleware>;\n\n// Overload 10: For other ResponseFormat values (failsafe)\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n StructuredResponseFormat,\n ContextSchema,\n ResponseFormat\n > & {\n responseFormat: ResponseFormat;\n middleware?: TMiddleware;\n }\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddleware>;\n\n// Implementation\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any>,\n ContextSchema extends AnyAnnotationRoot | InteropZodObject,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddleware> {\n return new ReactAgent(params);\n}\n\nexport { createMiddleware } from \"./middleware.js\";\n"],"mappings":";;;;AA6WA,SAAgB,YAKdA,QACkE;AAClE,QAAO,IAAIC,8BAAW;AACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>"],"sources":["../../../src/agents/middlewareAgent/index.ts"],"sourcesContent":["import type {\n InteropZodObject,\n InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nimport { type AnyAnnotationRoot } from \"../annotation.js\";\nimport type { CreateAgentParams, AgentMiddleware } from \"./types.js\";\nimport type { ExtractZodArrayTypes } from \"../types.js\";\nimport type {\n ToolStrategy,\n TypedToolStrategy,\n ProviderStrategy,\n ResponseFormat,\n ResponseFormatUndefined,\n JsonSchemaFormat,\n} from \"../responses.js\";\nimport { ReactAgent } from \"./ReactAgent.js\";\n\n/**\n * Creates a StateGraph agent that relies on a chat model utilizing tool calling.\n *\n * @example\n * ```ts\n * import { ChatOpenAI } from \"@langchain/openai\";\n * import { createAgent, tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * });\n *\n * const getWeather = tool((input) => {\n * if ([\"sf\", \"san francisco\"].includes(input.location.toLowerCase())) {\n * return \"It's 60 degrees and foggy.\";\n * } else {\n * return \"It's 90 degrees and sunny.\";\n * }\n * }, {\n * name: \"get_weather\",\n * description: \"Call to get the current weather.\",\n * schema: z.object({\n * location: z.string().describe(\"Location to get the weather for.\"),\n * })\n * })\n *\n * const agent = createAgent({ llm: model, tools: [getWeather] });\n *\n * const inputs = {\n * messages: [{ role: \"user\", content: \"what is the weather in SF?\" }],\n * };\n *\n * const stream = await agent.stream(inputs, { streamMode: \"values\" });\n *\n * for await (const { messages } of stream) {\n * console.log(messages);\n * }\n * // Returns the messages in the state at each step of execution\n * ```\n */\n// Overload 1: With responseFormat as single InteropZodType\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, InteropZodType<T>> & {\n responseFormat: InteropZodType<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 2: With responseFormat as array of InteropZodTypes (infers union type)\nexport function createAgent<\n T extends readonly InteropZodType<any>[],\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n T\n > & {\n responseFormat: T;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n TMiddlewares\n>;\n\n// Overload 3: With responseFormat as JsonSchemaFormat (JSON schema object)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat\n > & {\n responseFormat: JsonSchemaFormat;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 4: With responseFormat as array of JsonSchemaFormat (JSON schema objects)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat[];\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 4.5: With responseFormat as union of JsonSchemaFormat | JsonSchemaFormat[]\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat | JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat | JsonSchemaFormat[];\n middlewares?: TMiddlewares;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddlewares>;\n\n// Overload 5: With responseFormat as TypedToolStrategy (for union types from toolStrategy)\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, TypedToolStrategy<T>> & {\n responseFormat: TypedToolStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 6: With responseFormat as single ToolStrategy instance\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ToolStrategy<T>> & {\n responseFormat: ToolStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 7: With responseFormat as ProviderStrategy\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ProviderStrategy<T>> & {\n responseFormat: ProviderStrategy<T>;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<T, ContextSchema, TMiddlewares>;\n\n// Overload 8: Without responseFormat property at all - with proper middleware state typing\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & { middlewares?: TMiddlewares }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddlewares>;\n\n// Overload 9: With responseFormat explicitly undefined\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & {\n responseFormat?: undefined;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddlewares>;\n\n// Overload 10: For other ResponseFormat values (failsafe)\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddlewares extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n StructuredResponseFormat,\n ContextSchema,\n ResponseFormat\n > & {\n responseFormat: ResponseFormat;\n middlewares?: TMiddlewares;\n }\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddlewares>;\n\n// Implementation\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any>,\n ContextSchema extends AnyAnnotationRoot | InteropZodObject,\n TMiddlewares extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddlewares> {\n return new ReactAgent(params);\n}\n\nexport { createMiddleware } from \"./middleware.js\";\n"],"mappings":";;;;AA4RA,SAAgB,YAKdA,QACmE;AACnE,QAAO,IAAI,WAAW;AACvB"}
1
+ {"version":3,"file":"index.js","names":["params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>"],"sources":["../../../src/agents/middlewareAgent/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n InteropZodObject,\n InteropZodType,\n} from \"@langchain/core/utils/types\";\n\nimport type {\n AnyAnnotationRoot,\n ResponseFormatUndefined,\n} from \"../annotation.js\";\nimport type { CreateAgentParams, AgentMiddleware } from \"./types.js\";\nimport type { ExtractZodArrayTypes } from \"../types.js\";\nimport type {\n ToolStrategy,\n TypedToolStrategy,\n ProviderStrategy,\n ResponseFormat,\n JsonSchemaFormat,\n} from \"../responses.js\";\nimport { ReactAgent } from \"./ReactAgent.js\";\n\n/**\n * Creates a production-ready ReAct (Reasoning + Acting) agent that combines language models with tools\n * and middleware to create systems that can reason about tasks, decide which tools to use, and iteratively\n * work towards solutions.\n *\n * The agent follows the ReAct pattern, interleaving reasoning steps with tool calls to iteratively\n * work towards solutions. It can handle multiple tool calls in sequence or parallel, maintain state\n * across interactions, and provide auditable decision processes.\n *\n * ## Core Components\n *\n * ### Model\n * The reasoning engine can be specified as:\n * - **String identifier**: `\"openai:gpt-4o\"` for simple setup\n * - **Model instance**: Configured model object for full control\n * - **Dynamic function**: Select models at runtime based on state\n *\n * ### Tools\n * Tools give agents the ability to take actions:\n * - Pass an array of tools created with the `tool` function\n * - Or provide a configured `ToolNode` for custom error handling\n *\n * ### Prompt\n * Shape how your agent approaches tasks:\n * - String for simple instructions\n * - SystemMessage for structured prompts\n * - Function for dynamic prompts based on state\n *\n * ### Middleware\n * Middleware allows you to extend the agent's behavior:\n * - Add pre/post-model processing for context injection or validation\n * - Add dynamic control flows, e.g. terminate invocation or retries\n * - Add human-in-the-loop capabilities\n * - Add tool calls to the agent\n * - Add tool results to the agent\n *\n * ## Advanced Features\n *\n * - **Structured Output**: Use `responseFormat` with a Zod schema to get typed responses\n * - **Memory**: Extend the state schema to remember information across interactions\n * - **Streaming**: Get real-time updates as the agent processes\n *\n * @param options - Configuration options for the agent\n * @param options.llm - The language model as an instance of a chat model\n * @param options.model - The language model as a string identifier, see more in {@link https://docs.langchain.com/oss/javascript/langchain/models#basic-usage | Models}.\n * @param options.tools - Array of tools or configured ToolNode\n * @param options.prompt - System instructions (string, SystemMessage, or function)\n * @param options.responseFormat - Zod schema for structured output\n * @param options.stateSchema - Custom state schema for memory\n * @param options.middleware - Array of middleware for extending agent behavior, see more in {@link https://docs.langchain.com/oss/javascript/langchain/middleware | Middleware}.\n *\n * @returns A ReactAgent instance with `invoke` and `stream` methods\n *\n * @example Basic agent with tools\n * ```ts\n * import { createAgent, tool } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const search = tool(\n * ({ query }) => `Results for: ${query}`,\n * {\n * name: \"search\",\n * description: \"Search for information\",\n * schema: z.object({\n * query: z.string().describe(\"The search query\"),\n * })\n * }\n * );\n *\n * const agent = createAgent({\n * llm: \"openai:gpt-4o\",\n * tools: [search],\n * });\n *\n * const result = await agent.invoke({\n * messages: [{ role: \"user\", content: \"Search for ReAct agents\" }],\n * });\n * ```\n *\n * @example Structured output\n * ```ts\n * import { createAgent } from \"langchain\";\n * import { z } from \"zod\";\n *\n * const ContactInfo = z.object({\n * name: z.string(),\n * email: z.string(),\n * phone: z.string(),\n * });\n *\n * const agent = createAgent({\n * llm: \"openai:gpt-4o\",\n * tools: [],\n * responseFormat: ContactInfo,\n * });\n *\n * const result = await agent.invoke({\n * messages: [{\n * role: \"user\",\n * content: \"Extract: John Doe, john@example.com, (555) 123-4567\"\n * }],\n * });\n *\n * console.log(result.structuredResponse);\n * // { name: 'John Doe', email: 'john@example.com', phone: '(555) 123-4567' }\n * ```\n *\n * @example Streaming responses\n * ```ts\n * const stream = await agent.stream(\n * { messages: [{ role: \"user\", content: \"What's the weather?\" }] },\n * { streamMode: \"values\" }\n * );\n *\n * for await (const chunk of stream) {\n * // ...\n * }\n * ```\n */\n// Overload 1: With responseFormat as single InteropZodType\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, InteropZodType<T>> & {\n responseFormat: InteropZodType<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 2: With responseFormat as array of InteropZodTypes (infers union type)\nexport function createAgent<\n T extends readonly InteropZodType<any>[],\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n T\n > & {\n responseFormat: T;\n middleware?: TMiddleware;\n }\n): ReactAgent<\n ExtractZodArrayTypes<T> extends Record<string, any>\n ? ExtractZodArrayTypes<T>\n : Record<string, any>,\n ContextSchema,\n TMiddleware\n>;\n\n// Overload 3: With responseFormat as JsonSchemaFormat (JSON schema object)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat\n > & {\n responseFormat: JsonSchemaFormat;\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 4: With responseFormat as array of JsonSchemaFormat (JSON schema objects)\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat[];\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 4.5: With responseFormat as union of JsonSchemaFormat | JsonSchemaFormat[]\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n Record<string, unknown>,\n ContextSchema,\n JsonSchemaFormat | JsonSchemaFormat[]\n > & {\n responseFormat: JsonSchemaFormat | JsonSchemaFormat[];\n middleware?: TMiddleware;\n }\n): ReactAgent<Record<string, unknown>, ContextSchema, TMiddleware>;\n\n// Overload 5: With responseFormat as TypedToolStrategy (for union types from toolStrategy)\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, TypedToolStrategy<T>> & {\n responseFormat: TypedToolStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 6: With responseFormat as single ToolStrategy instance\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ToolStrategy<T>> & {\n responseFormat: ToolStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 7: With responseFormat as ProviderStrategy\nexport function createAgent<\n T extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<T, ContextSchema, ProviderStrategy<T>> & {\n responseFormat: ProviderStrategy<T>;\n middleware?: TMiddleware;\n }\n): ReactAgent<T, ContextSchema, TMiddleware>;\n\n// Overload 8: Without responseFormat property at all - with proper middleware state typing\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & { middleware?: TMiddleware }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddleware>;\n\n// Overload 9: With responseFormat explicitly undefined\nexport function createAgent<\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: Omit<\n CreateAgentParams<ResponseFormatUndefined, ContextSchema, never>,\n \"responseFormat\"\n > & {\n responseFormat?: undefined;\n middleware?: TMiddleware;\n }\n): ReactAgent<ResponseFormatUndefined, ContextSchema, TMiddleware>;\n\n// Overload 10: For other ResponseFormat values (failsafe)\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any> = Record<string, any>,\n ContextSchema extends\n | AnyAnnotationRoot\n | InteropZodObject = AnyAnnotationRoot,\n TMiddleware extends readonly AgentMiddleware<\n any,\n any,\n any\n >[] = readonly AgentMiddleware<any, any, any>[]\n>(\n params: CreateAgentParams<\n StructuredResponseFormat,\n ContextSchema,\n ResponseFormat\n > & {\n responseFormat: ResponseFormat;\n middleware?: TMiddleware;\n }\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddleware>;\n\n// Implementation\nexport function createAgent<\n StructuredResponseFormat extends Record<string, any>,\n ContextSchema extends AnyAnnotationRoot | InteropZodObject,\n TMiddleware extends readonly AgentMiddleware<any, any, any>[] = []\n>(\n params: CreateAgentParams<StructuredResponseFormat, ContextSchema, any>\n): ReactAgent<StructuredResponseFormat, ContextSchema, TMiddleware> {\n return new ReactAgent(params);\n}\n\nexport { createMiddleware } from \"./middleware.js\";\n"],"mappings":";;;;AA6WA,SAAgB,YAKdA,QACkE;AAClE,QAAO,IAAI,WAAW;AACvB"}
@@ -0,0 +1,162 @@
1
+ const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
+ const require_chat_models_universal = require('../../../chat_models/universal.cjs');
3
+ const require_middleware = require('../middleware.cjs');
4
+ const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
5
+ const __langchain_core_language_models_chat_models = require_rolldown_runtime.__toESM(require("@langchain/core/language_models/chat_models"));
6
+ const zod_v3 = require_rolldown_runtime.__toESM(require("zod/v3"));
7
+
8
+ //#region src/agents/middlewareAgent/middleware/bigTool.ts
9
+ /**
10
+ * Zod schema for tool selection structured output.
11
+ */
12
+ const ToolSelectionSchema = zod_v3.z.object({ selectedTools: zod_v3.z.array(zod_v3.z.string()).describe("List of selected tool names") });
13
+ const DEFAULT_SYSTEM_PROMPT = "Your goal is to select the most relevant tool for answering the user's query.";
14
+ const DEFAULT_INCLUDE_FULL_HISTORY = false;
15
+ const DEFAULT_MAX_RETRIES = 3;
16
+ /**
17
+ * Options for configuring the LLM Tool Selector middleware.
18
+ */
19
+ const LLMToolSelectorOptionsSchema = zod_v3.z.object({
20
+ model: zod_v3.z.string().or(zod_v3.z.instanceof(__langchain_core_language_models_chat_models.BaseChatModel)).optional(),
21
+ systemPrompt: zod_v3.z.string().default(DEFAULT_SYSTEM_PROMPT),
22
+ maxTools: zod_v3.z.number().optional(),
23
+ includeFullHistory: zod_v3.z.boolean().default(DEFAULT_INCLUDE_FULL_HISTORY),
24
+ maxRetries: zod_v3.z.number().default(DEFAULT_MAX_RETRIES)
25
+ });
26
+ /**
27
+ * Middleware for selecting tools using an LLM-based strategy.
28
+ *
29
+ * This middleware analyzes the user's query and available tools to select
30
+ * the most relevant tools for the task, reducing the cognitive load on the
31
+ * main model and improving response quality.
32
+ *
33
+ * @param options - Configuration options for the middleware
34
+ * @param options.model - The language model to use for tool selection (default: the provided model from the agent options).
35
+ * @param options.systemPrompt - System prompt for the tool selection model.
36
+ * @param options.maxTools - Maximum number of tools to select.
37
+ * @param options.includeFullHistory - Whether to include the full conversation history in the tool selection prompt.
38
+ * @param options.maxRetries - Maximum number of retries if the model selects incorrect tools.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { llmToolSelectorMiddleware } from "langchain/agents/middleware";
43
+ *
44
+ * const middleware = llmToolSelectorMiddleware({
45
+ * maxTools: 3,
46
+ * systemPrompt: "Select the most relevant tools for the user's query."
47
+ * });
48
+ *
49
+ * const agent = createAgent({
50
+ * model: "openai:gpt-4o",
51
+ * tools: [tool1, tool2, tool3, tool4, tool5],
52
+ * middleware: [middleware],
53
+ * });
54
+ * ```
55
+ */
56
+ function llmToolSelectorMiddleware(options) {
57
+ return require_middleware.createMiddleware({
58
+ name: "LLMToolSelector",
59
+ contextSchema: LLMToolSelectorOptionsSchema,
60
+ async modifyModelRequest(request, _, runtime) {
61
+ const model = runtime.context.model ?? options.model;
62
+ const maxTools = runtime.context.maxTools ?? options.maxTools;
63
+ const includeFullHistory = runtime.context.includeFullHistory === DEFAULT_INCLUDE_FULL_HISTORY ? options.includeFullHistory ?? runtime.context.includeFullHistory : runtime.context.includeFullHistory ?? options.includeFullHistory;
64
+ const maxRetries = runtime.context.maxRetries === DEFAULT_MAX_RETRIES ? options.maxRetries ?? runtime.context.maxRetries : runtime.context.maxRetries ?? options.maxRetries;
65
+ const defaultSystemPrompt = runtime.context.systemPrompt === DEFAULT_SYSTEM_PROMPT ? options.systemPrompt ?? runtime.context.systemPrompt : runtime.context.systemPrompt ?? options.systemPrompt;
66
+ /**
67
+ * If no tools available, return request unchanged
68
+ */
69
+ if (!request.tools || request.tools.length === 0) return request;
70
+ /**
71
+ * Extract tool information
72
+ */
73
+ const toolInfo = runtime.tools.map((tool) => ({
74
+ name: tool.name,
75
+ description: tool.description,
76
+ tool
77
+ }));
78
+ /**
79
+ * Build tool representation for the prompt
80
+ */
81
+ const toolRepresentation = toolInfo.map(({ name, description }) => `- ${name}: ${description}`).join("\n");
82
+ /**
83
+ * Build system message
84
+ */
85
+ let systemMessage = `You are an agent that can use the following tools:\n${toolRepresentation}\n${defaultSystemPrompt}`;
86
+ if (includeFullHistory) {
87
+ const userMessages = request.messages.filter(__langchain_core_messages.HumanMessage.isInstance).map((msg) => msg.content).join("\n");
88
+ systemMessage += `\nThe full conversation history is:\n${userMessages}`;
89
+ }
90
+ if (maxTools !== void 0) systemMessage += ` You can select up to ${maxTools} tools.`;
91
+ /**
92
+ * Get the latest user message
93
+ */
94
+ const latestMessage = request.messages.at(-1);
95
+ const userContent = typeof latestMessage?.content === "string" ? latestMessage?.content : JSON.stringify(latestMessage?.content);
96
+ /**
97
+ * Create tool selection model
98
+ */
99
+ const toolSelectionModel = !model ? request.model : typeof model === "string" ? await require_chat_models_universal.initChatModel(model) : model;
100
+ const validToolNames = toolInfo.map(({ name }) => name);
101
+ const structuredModel = await toolSelectionModel.withStructuredOutput(ToolSelectionSchema);
102
+ let attempts = 0;
103
+ let selectedToolNames = [...validToolNames];
104
+ while (attempts <= maxRetries) try {
105
+ const response = await structuredModel.invoke([{
106
+ role: "system",
107
+ content: systemMessage
108
+ }, {
109
+ role: "user",
110
+ content: userContent
111
+ }]);
112
+ selectedToolNames = response.selectedTools;
113
+ /**
114
+ * Validate that selected tools exist
115
+ */
116
+ const invalidTools = selectedToolNames.filter((name) => !validToolNames.includes(name));
117
+ if (selectedToolNames.length === 0) {
118
+ systemMessage += `\n\nNote: You have not selected any tools. Please select at least one tool.`;
119
+ attempts++;
120
+ } else if (invalidTools.length === 0 && maxTools && selectedToolNames.length > maxTools) {
121
+ systemMessage += `\n\nNote: You have selected more tools than the maximum allowed. You can select up to ${maxTools} tools.`;
122
+ attempts++;
123
+ } else if (invalidTools.length === 0)
124
+ /**
125
+ * Success
126
+ */
127
+ break;
128
+ else if (attempts < maxRetries) {
129
+ /**
130
+ * Retry with feedback about invalid tools
131
+ */
132
+ systemMessage += `\n\nNote: The following tools are not available: ${invalidTools.join(", ")}. Please select only from the available tools.`;
133
+ attempts++;
134
+ } else {
135
+ /**
136
+ * Filter out invalid tools on final attempt
137
+ */
138
+ selectedToolNames = selectedToolNames.filter((name) => validToolNames.includes(name));
139
+ break;
140
+ }
141
+ } catch {
142
+ /**
143
+ * Fall back to using all tools
144
+ */
145
+ if (attempts >= maxRetries) return request;
146
+ attempts++;
147
+ }
148
+ /**
149
+ * Filter tools based on selection
150
+ */
151
+ const selectedTools = toolInfo.filter(({ name }) => selectedToolNames.includes(name)).map(({ name }) => name);
152
+ return {
153
+ ...request,
154
+ tools: selectedTools
155
+ };
156
+ }
157
+ });
158
+ }
159
+
160
+ //#endregion
161
+ exports.llmToolSelectorMiddleware = llmToolSelectorMiddleware;
162
+ //# sourceMappingURL=bigTool.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigTool.cjs","names":["z","BaseChatModel","options: LLMToolSelectorConfig","createMiddleware","HumanMessage","msg: BaseMessage","initChatModel","selectedToolNames: string[]"],"sources":["../../../../src/agents/middlewareAgent/middleware/bigTool.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport type { InferInteropZodInput } from \"@langchain/core/utils/types\";\nimport { BaseMessage, HumanMessage } from \"@langchain/core/messages\";\n\nimport { createMiddleware } from \"../middleware.js\";\nimport { initChatModel } from \"../../../chat_models/universal.js\";\nimport type { ModelRequest } from \"../types.js\";\n\n/**\n * Zod schema for tool selection structured output.\n */\nconst ToolSelectionSchema = z.object({\n selectedTools: z.array(z.string()).describe(\"List of selected tool names\"),\n});\n\nconst DEFAULT_SYSTEM_PROMPT =\n \"Your goal is to select the most relevant tool for answering the user's query.\";\nconst DEFAULT_INCLUDE_FULL_HISTORY = false;\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * Options for configuring the LLM Tool Selector middleware.\n */\nexport const LLMToolSelectorOptionsSchema = z.object({\n /**\n * The language model to use for tool selection (default: the provided model from the agent options).\n */\n model: z.string().or(z.instanceof(BaseChatModel)).optional(),\n /**\n * System prompt for the tool selection model.\n */\n systemPrompt: z.string().default(DEFAULT_SYSTEM_PROMPT),\n /**\n * Maximum number of tools to select.\n */\n maxTools: z.number().optional(),\n /**\n * Whether to include the full conversation history in the tool selection prompt.\n */\n includeFullHistory: z.boolean().default(DEFAULT_INCLUDE_FULL_HISTORY),\n /**\n * Maximum number of retries if the model selects incorrect tools.\n */\n maxRetries: z.number().default(DEFAULT_MAX_RETRIES),\n});\nexport type LLMToolSelectorConfig = InferInteropZodInput<\n typeof LLMToolSelectorOptionsSchema\n>;\n\n/**\n * Middleware for selecting tools using an LLM-based strategy.\n *\n * This middleware analyzes the user's query and available tools to select\n * the most relevant tools for the task, reducing the cognitive load on the\n * main model and improving response quality.\n *\n * @param options - Configuration options for the middleware\n * @param options.model - The language model to use for tool selection (default: the provided model from the agent options).\n * @param options.systemPrompt - System prompt for the tool selection model.\n * @param options.maxTools - Maximum number of tools to select.\n * @param options.includeFullHistory - Whether to include the full conversation history in the tool selection prompt.\n * @param options.maxRetries - Maximum number of retries if the model selects incorrect tools.\n *\n * @example\n * ```ts\n * import { llmToolSelectorMiddleware } from \"langchain/agents/middleware\";\n *\n * const middleware = llmToolSelectorMiddleware({\n * maxTools: 3,\n * systemPrompt: \"Select the most relevant tools for the user's query.\"\n * });\n *\n * const agent = createAgent({\n * model: \"openai:gpt-4o\",\n * tools: [tool1, tool2, tool3, tool4, tool5],\n * middleware: [middleware],\n * });\n * ```\n */\nexport function llmToolSelectorMiddleware(options: LLMToolSelectorConfig) {\n return createMiddleware({\n name: \"LLMToolSelector\",\n contextSchema: LLMToolSelectorOptionsSchema,\n async modifyModelRequest(request, _, runtime): Promise<ModelRequest> {\n const model = runtime.context.model ?? options.model;\n const maxTools = runtime.context.maxTools ?? options.maxTools;\n const includeFullHistory =\n runtime.context.includeFullHistory === DEFAULT_INCLUDE_FULL_HISTORY\n ? options.includeFullHistory ?? runtime.context.includeFullHistory\n : runtime.context.includeFullHistory ?? options.includeFullHistory;\n const maxRetries =\n runtime.context.maxRetries === DEFAULT_MAX_RETRIES\n ? options.maxRetries ?? runtime.context.maxRetries\n : runtime.context.maxRetries ?? options.maxRetries;\n const defaultSystemPrompt =\n runtime.context.systemPrompt === DEFAULT_SYSTEM_PROMPT\n ? options.systemPrompt ?? runtime.context.systemPrompt\n : runtime.context.systemPrompt ?? options.systemPrompt;\n\n /**\n * If no tools available, return request unchanged\n */\n if (!request.tools || request.tools.length === 0) {\n return request;\n }\n\n /**\n * Extract tool information\n */\n const toolInfo = runtime.tools.map((tool) => ({\n name: tool.name as string,\n description: tool.description,\n tool,\n }));\n\n /**\n * Build tool representation for the prompt\n */\n const toolRepresentation = toolInfo\n .map(({ name, description }) => `- ${name}: ${description}`)\n .join(\"\\n\");\n\n /**\n * Build system message\n */\n let systemMessage = `You are an agent that can use the following tools:\\n${toolRepresentation}\\n${defaultSystemPrompt}`;\n\n if (includeFullHistory) {\n const userMessages = request.messages\n .filter(HumanMessage.isInstance)\n .map((msg: BaseMessage) => msg.content)\n .join(\"\\n\");\n systemMessage += `\\nThe full conversation history is:\\n${userMessages}`;\n }\n\n if (maxTools !== undefined) {\n systemMessage += ` You can select up to ${maxTools} tools.`;\n }\n\n /**\n * Get the latest user message\n */\n const latestMessage = request.messages.at(-1);\n const userContent =\n typeof latestMessage?.content === \"string\"\n ? latestMessage?.content\n : JSON.stringify(latestMessage?.content);\n\n /**\n * Create tool selection model\n */\n const toolSelectionModel = !model\n ? (request.model as BaseChatModel)\n : typeof model === \"string\"\n ? await initChatModel(model)\n : model;\n\n const validToolNames = toolInfo.map(({ name }) => name);\n const structuredModel = await toolSelectionModel.withStructuredOutput(\n ToolSelectionSchema\n );\n\n let attempts = 0;\n let selectedToolNames: string[] = [...validToolNames];\n\n while (attempts <= maxRetries) {\n try {\n const response = await structuredModel.invoke([\n { role: \"system\", content: systemMessage },\n { role: \"user\", content: userContent },\n ]);\n\n selectedToolNames = response.selectedTools;\n\n /**\n * Validate that selected tools exist\n */\n const invalidTools = selectedToolNames.filter(\n (name) => !validToolNames.includes(name)\n );\n\n if (selectedToolNames.length === 0) {\n systemMessage += `\\n\\nNote: You have not selected any tools. Please select at least one tool.`;\n attempts++;\n } else if (\n invalidTools.length === 0 &&\n maxTools &&\n selectedToolNames.length > maxTools\n ) {\n systemMessage += `\\n\\nNote: You have selected more tools than the maximum allowed. You can select up to ${maxTools} tools.`;\n attempts++;\n } else if (invalidTools.length === 0) {\n /**\n * Success\n */\n break;\n } else if (attempts < maxRetries) {\n /**\n * Retry with feedback about invalid tools\n */\n systemMessage += `\\n\\nNote: The following tools are not available: ${invalidTools.join(\n \", \"\n )}. Please select only from the available tools.`;\n attempts++;\n } else {\n /**\n * Filter out invalid tools on final attempt\n */\n selectedToolNames = selectedToolNames.filter((name) =>\n validToolNames.includes(name)\n );\n break;\n }\n } catch {\n /**\n * Fall back to using all tools\n */\n if (attempts >= maxRetries) {\n return request;\n }\n attempts++;\n }\n }\n\n /**\n * Filter tools based on selection\n */\n const selectedTools = toolInfo\n .filter(({ name }) => selectedToolNames.includes(name))\n .map(({ name }) => name);\n\n return {\n ...request,\n tools: selectedTools,\n };\n },\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { AgentMiddleware } from "../types.cjs";
2
+ import { InferInteropZodInput } from "@langchain/core/utils/types";
3
+ import * as _langchain_core_messages0 from "@langchain/core/messages";
4
+ import { z } from "zod/v3";
5
+ import * as _langchain_core_language_models_chat_models0 from "@langchain/core/language_models/chat_models";
6
+ import { BaseChatModel } from "@langchain/core/language_models/chat_models";
7
+
8
+ //#region src/agents/middlewareAgent/middleware/bigTool.d.ts
9
+ /**
10
+ * Options for configuring the LLM Tool Selector middleware.
11
+ */
12
+ declare const LLMToolSelectorOptionsSchema: z.ZodObject<{
13
+ /**
14
+ * The language model to use for tool selection (default: the provided model from the agent options).
15
+ */
16
+ model: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>>, z.ZodTypeDef, BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>>>]>>;
17
+ /**
18
+ * System prompt for the tool selection model.
19
+ */
20
+ systemPrompt: z.ZodDefault<z.ZodString>;
21
+ /**
22
+ * Maximum number of tools to select.
23
+ */
24
+ maxTools: z.ZodOptional<z.ZodNumber>;
25
+ /**
26
+ * Whether to include the full conversation history in the tool selection prompt.
27
+ */
28
+ includeFullHistory: z.ZodDefault<z.ZodBoolean>;
29
+ /**
30
+ * Maximum number of retries if the model selects incorrect tools.
31
+ */
32
+ maxRetries: z.ZodDefault<z.ZodNumber>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ model?: string | BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>> | undefined;
35
+ systemPrompt: string;
36
+ maxTools?: number | undefined;
37
+ includeFullHistory: boolean;
38
+ maxRetries: number;
39
+ }, {
40
+ model?: string | BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>> | undefined;
41
+ systemPrompt?: string | undefined;
42
+ maxTools?: number | undefined;
43
+ includeFullHistory?: boolean | undefined;
44
+ maxRetries?: number | undefined;
45
+ }>;
46
+ type LLMToolSelectorConfig = InferInteropZodInput<typeof LLMToolSelectorOptionsSchema>;
47
+ /**
48
+ * Middleware for selecting tools using an LLM-based strategy.
49
+ *
50
+ * This middleware analyzes the user's query and available tools to select
51
+ * the most relevant tools for the task, reducing the cognitive load on the
52
+ * main model and improving response quality.
53
+ *
54
+ * @param options - Configuration options for the middleware
55
+ * @param options.model - The language model to use for tool selection (default: the provided model from the agent options).
56
+ * @param options.systemPrompt - System prompt for the tool selection model.
57
+ * @param options.maxTools - Maximum number of tools to select.
58
+ * @param options.includeFullHistory - Whether to include the full conversation history in the tool selection prompt.
59
+ * @param options.maxRetries - Maximum number of retries if the model selects incorrect tools.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * import { llmToolSelectorMiddleware } from "langchain/agents/middleware";
64
+ *
65
+ * const middleware = llmToolSelectorMiddleware({
66
+ * maxTools: 3,
67
+ * systemPrompt: "Select the most relevant tools for the user's query."
68
+ * });
69
+ *
70
+ * const agent = createAgent({
71
+ * model: "openai:gpt-4o",
72
+ * tools: [tool1, tool2, tool3, tool4, tool5],
73
+ * middleware: [middleware],
74
+ * });
75
+ * ```
76
+ */
77
+ declare function llmToolSelectorMiddleware(options: LLMToolSelectorConfig): AgentMiddleware<undefined, z.ZodObject<{
78
+ /**
79
+ * The language model to use for tool selection (default: the provided model from the agent options).
80
+ */
81
+ model: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>>, z.ZodTypeDef, BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>>>]>>;
82
+ /**
83
+ * System prompt for the tool selection model.
84
+ */
85
+ systemPrompt: z.ZodDefault<z.ZodString>;
86
+ /**
87
+ * Maximum number of tools to select.
88
+ */
89
+ maxTools: z.ZodOptional<z.ZodNumber>;
90
+ /**
91
+ * Whether to include the full conversation history in the tool selection prompt.
92
+ */
93
+ includeFullHistory: z.ZodDefault<z.ZodBoolean>;
94
+ /**
95
+ * Maximum number of retries if the model selects incorrect tools.
96
+ */
97
+ maxRetries: z.ZodDefault<z.ZodNumber>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ model?: string | BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>> | undefined;
100
+ systemPrompt: string;
101
+ maxTools?: number | undefined;
102
+ includeFullHistory: boolean;
103
+ maxRetries: number;
104
+ }, {
105
+ model?: string | BaseChatModel<_langchain_core_language_models_chat_models0.BaseChatModelCallOptions, _langchain_core_messages0.BaseMessageChunk<_langchain_core_messages0.MessageStructure, _langchain_core_messages0.MessageType>> | undefined;
106
+ systemPrompt?: string | undefined;
107
+ maxTools?: number | undefined;
108
+ includeFullHistory?: boolean | undefined;
109
+ maxRetries?: number | undefined;
110
+ }>, any>;
111
+ //#endregion
112
+ export { LLMToolSelectorConfig, llmToolSelectorMiddleware };
113
+ //# sourceMappingURL=bigTool.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigTool.d.cts","names":["_langchain_core_messages0","___types_js2","z","BaseChatModel","InferInteropZodInput","LLMToolSelectorOptionsSchema","ZodString","_langchain_core_language_models_chat_models0","BaseChatModelCallOptions","MessageStructure","MessageType","BaseMessageChunk","ZodTypeDef","ZodType","ZodUnion","ZodOptional","ZodDefault","ZodNumber","ZodBoolean","ZodTypeAny","ZodObject","LLMToolSelectorConfig","llmToolSelectorMiddleware","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/bigTool.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport type { InferInteropZodInput } from \"@langchain/core/utils/types\";\n/**\n * Options for configuring the LLM Tool Selector middleware.\n */\nexport declare const LLMToolSelectorOptionsSchema: z.ZodObject<{\n /**\n * The language model to use for tool selection (default: the provided model from the agent options).\n */\n model: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>>, z.ZodTypeDef, BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>>>]>>;\n /**\n * System prompt for the tool selection model.\n */\n systemPrompt: z.ZodDefault<z.ZodString>;\n /**\n * Maximum number of tools to select.\n */\n maxTools: z.ZodOptional<z.ZodNumber>;\n /**\n * Whether to include the full conversation history in the tool selection prompt.\n */\n includeFullHistory: z.ZodDefault<z.ZodBoolean>;\n /**\n * Maximum number of retries if the model selects incorrect tools.\n */\n maxRetries: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n model?: string | BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>> | undefined;\n systemPrompt: string;\n maxTools?: number | undefined;\n includeFullHistory: boolean;\n maxRetries: number;\n}, {\n model?: string | BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>> | undefined;\n systemPrompt?: string | undefined;\n maxTools?: number | undefined;\n includeFullHistory?: boolean | undefined;\n maxRetries?: number | undefined;\n}>;\nexport type LLMToolSelectorConfig = InferInteropZodInput<typeof LLMToolSelectorOptionsSchema>;\n/**\n * Middleware for selecting tools using an LLM-based strategy.\n *\n * This middleware analyzes the user's query and available tools to select\n * the most relevant tools for the task, reducing the cognitive load on the\n * main model and improving response quality.\n *\n * @param options - Configuration options for the middleware\n * @param options.model - The language model to use for tool selection (default: the provided model from the agent options).\n * @param options.systemPrompt - System prompt for the tool selection model.\n * @param options.maxTools - Maximum number of tools to select.\n * @param options.includeFullHistory - Whether to include the full conversation history in the tool selection prompt.\n * @param options.maxRetries - Maximum number of retries if the model selects incorrect tools.\n *\n * @example\n * ```ts\n * import { llmToolSelectorMiddleware } from \"langchain/agents/middleware\";\n *\n * const middleware = llmToolSelectorMiddleware({\n * maxTools: 3,\n * systemPrompt: \"Select the most relevant tools for the user's query.\"\n * });\n *\n * const agent = createAgent({\n * model: \"openai:gpt-4o\",\n * tools: [tool1, tool2, tool3, tool4, tool5],\n * middleware: [middleware],\n * });\n * ```\n */\nexport declare function llmToolSelectorMiddleware(options: LLMToolSelectorConfig): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n /**\n * The language model to use for tool selection (default: the provided model from the agent options).\n */\n model: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>>, z.ZodTypeDef, BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>>>]>>;\n /**\n * System prompt for the tool selection model.\n */\n systemPrompt: z.ZodDefault<z.ZodString>;\n /**\n * Maximum number of tools to select.\n */\n maxTools: z.ZodOptional<z.ZodNumber>;\n /**\n * Whether to include the full conversation history in the tool selection prompt.\n */\n includeFullHistory: z.ZodDefault<z.ZodBoolean>;\n /**\n * Maximum number of retries if the model selects incorrect tools.\n */\n maxRetries: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n model?: string | BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>> | undefined;\n systemPrompt: string;\n maxTools?: number | undefined;\n includeFullHistory: boolean;\n maxRetries: number;\n}, {\n model?: string | BaseChatModel<import(\"@langchain/core/language_models/chat_models\").BaseChatModelCallOptions, import(\"@langchain/core/messages\").BaseMessageChunk<import(\"@langchain/core/messages\").MessageStructure, import(\"@langchain/core/messages\").MessageType>> | undefined;\n systemPrompt?: string | undefined;\n maxTools?: number | undefined;\n includeFullHistory?: boolean | undefined;\n maxRetries?: number | undefined;\n}>, any>;\n"],"mappings":"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"}