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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/agents/ReactAgent.cjs +5 -5
  2. package/dist/agents/ReactAgent.cjs.map +1 -1
  3. package/dist/agents/ReactAgent.d.cts +2 -5
  4. package/dist/agents/ReactAgent.d.cts.map +1 -1
  5. package/dist/agents/ReactAgent.d.ts +2 -5
  6. package/dist/agents/ReactAgent.d.ts.map +1 -1
  7. package/dist/agents/ReactAgent.js +6 -6
  8. package/dist/agents/ReactAgent.js.map +1 -1
  9. package/dist/agents/annotation.cjs.map +1 -1
  10. package/dist/agents/annotation.d.cts +13 -8
  11. package/dist/agents/annotation.d.cts.map +1 -1
  12. package/dist/agents/annotation.d.ts +13 -8
  13. package/dist/agents/annotation.d.ts.map +1 -1
  14. package/dist/agents/annotation.js.map +1 -1
  15. package/dist/agents/createAgent.cjs.map +1 -1
  16. package/dist/agents/createAgent.js.map +1 -1
  17. package/dist/agents/index.cjs +2 -2
  18. package/dist/agents/index.cjs.map +1 -1
  19. package/dist/agents/index.d.cts +50 -50
  20. package/dist/agents/index.d.cts.map +1 -1
  21. package/dist/agents/index.d.ts +50 -50
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +2 -2
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/interrupt.d.cts +14 -1
  26. package/dist/agents/interrupt.d.cts.map +1 -1
  27. package/dist/agents/interrupt.d.ts +14 -1
  28. package/dist/agents/interrupt.d.ts.map +1 -1
  29. package/dist/agents/middlewareAgent/ReactAgent.cjs +273 -66
  30. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
  31. package/dist/agents/middlewareAgent/ReactAgent.d.cts +102 -16
  32. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
  33. package/dist/agents/middlewareAgent/ReactAgent.d.ts +102 -16
  34. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
  35. package/dist/agents/middlewareAgent/ReactAgent.js +275 -68
  36. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
  37. package/dist/agents/middlewareAgent/annotation.cjs +12 -6
  38. package/dist/agents/middlewareAgent/annotation.cjs.map +1 -1
  39. package/dist/agents/middlewareAgent/annotation.js +12 -6
  40. package/dist/agents/middlewareAgent/annotation.js.map +1 -1
  41. package/dist/agents/middlewareAgent/constants.d.cts +5 -0
  42. package/dist/agents/middlewareAgent/constants.d.cts.map +1 -0
  43. package/dist/agents/middlewareAgent/constants.d.ts +5 -0
  44. package/dist/agents/middlewareAgent/constants.d.ts.map +1 -0
  45. package/dist/agents/middlewareAgent/index.cjs.map +1 -1
  46. package/dist/agents/middlewareAgent/index.js.map +1 -1
  47. package/dist/agents/middlewareAgent/middleware/bigTool.cjs +162 -0
  48. package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +1 -0
  49. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +113 -0
  50. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +1 -0
  51. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +113 -0
  52. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +1 -0
  53. package/dist/agents/middlewareAgent/middleware/bigTool.js +161 -0
  54. package/dist/agents/middlewareAgent/middleware/bigTool.js.map +1 -0
  55. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +58 -0
  56. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -0
  57. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +46 -0
  58. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -0
  59. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +46 -0
  60. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -0
  61. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +58 -0
  62. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -0
  63. package/dist/agents/middlewareAgent/middleware/hitl.cjs +311 -0
  64. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
  65. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +419 -0
  66. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
  67. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +419 -0
  68. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
  69. package/dist/agents/middlewareAgent/middleware/hitl.js +310 -0
  70. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
  71. package/dist/agents/middlewareAgent/middleware/index.cjs +32 -0
  72. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
  73. package/dist/agents/middlewareAgent/middleware/index.d.cts +6 -0
  74. package/dist/agents/middlewareAgent/middleware/index.d.ts +6 -0
  75. package/dist/agents/middlewareAgent/middleware/index.js +21 -0
  76. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
  77. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.cjs +72 -27
  78. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
  79. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.cts +60 -15
  80. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
  81. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.d.ts +60 -15
  82. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
  83. package/dist/agents/middlewareAgent/{middlewares → middleware}/promptCaching.js +71 -26
  84. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
  85. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.cjs +35 -23
  86. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
  87. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.cts +7 -5
  88. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
  89. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.d.ts +7 -5
  90. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
  91. package/dist/agents/middlewareAgent/{middlewares → middleware}/summarization.js +29 -17
  92. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
  93. package/dist/agents/middlewareAgent/middleware.cjs +8 -5
  94. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
  95. package/dist/agents/middlewareAgent/middleware.d.cts +67 -7
  96. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
  97. package/dist/agents/middlewareAgent/middleware.d.ts +67 -7
  98. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
  99. package/dist/agents/middlewareAgent/middleware.js +8 -5
  100. package/dist/agents/middlewareAgent/middleware.js.map +1 -1
  101. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
  102. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
  103. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
  104. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
  105. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +125 -83
  106. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
  107. package/dist/agents/middlewareAgent/nodes/AgentNode.js +128 -86
  108. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
  109. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
  110. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
  111. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
  112. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
  113. package/dist/agents/middlewareAgent/nodes/middleware.cjs +42 -17
  114. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
  115. package/dist/agents/middlewareAgent/nodes/middleware.js +42 -18
  116. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
  117. package/dist/agents/middlewareAgent/nodes/utils.cjs +30 -16
  118. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
  119. package/dist/agents/middlewareAgent/nodes/utils.js +28 -14
  120. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
  121. package/dist/agents/middlewareAgent/types.d.cts +162 -88
  122. package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
  123. package/dist/agents/middlewareAgent/types.d.ts +162 -88
  124. package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
  125. package/dist/agents/model.cjs +13 -0
  126. package/dist/agents/model.cjs.map +1 -0
  127. package/dist/agents/model.js +11 -0
  128. package/dist/agents/model.js.map +1 -0
  129. package/dist/agents/nodes/AgentNode.cjs +60 -32
  130. package/dist/agents/nodes/AgentNode.cjs.map +1 -1
  131. package/dist/agents/nodes/AgentNode.js +61 -33
  132. package/dist/agents/nodes/AgentNode.js.map +1 -1
  133. package/dist/agents/nodes/ToolNode.cjs +4 -4
  134. package/dist/agents/nodes/ToolNode.cjs.map +1 -1
  135. package/dist/agents/nodes/ToolNode.d.cts +2 -3
  136. package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
  137. package/dist/agents/nodes/ToolNode.d.ts +1 -2
  138. package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
  139. package/dist/agents/nodes/ToolNode.js +5 -5
  140. package/dist/agents/nodes/ToolNode.js.map +1 -1
  141. package/dist/agents/responses.cjs +53 -11
  142. package/dist/agents/responses.cjs.map +1 -1
  143. package/dist/agents/responses.d.cts +12 -20
  144. package/dist/agents/responses.d.cts.map +1 -1
  145. package/dist/agents/responses.d.ts +12 -20
  146. package/dist/agents/responses.d.ts.map +1 -1
  147. package/dist/agents/responses.js +53 -12
  148. package/dist/agents/responses.js.map +1 -1
  149. package/dist/agents/types.d.cts +3 -6
  150. package/dist/agents/types.d.cts.map +1 -1
  151. package/dist/agents/types.d.ts +3 -6
  152. package/dist/agents/types.d.ts.map +1 -1
  153. package/dist/agents/utils.cjs +11 -29
  154. package/dist/agents/utils.cjs.map +1 -1
  155. package/dist/agents/utils.js +9 -26
  156. package/dist/agents/utils.js.map +1 -1
  157. package/dist/agents/withAgentName.cjs.map +1 -1
  158. package/dist/agents/withAgentName.js.map +1 -1
  159. package/dist/chains/api/prompts.cjs.map +1 -1
  160. package/dist/chains/api/prompts.js.map +1 -1
  161. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
  162. package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
  163. package/dist/chains/index.cjs +0 -3
  164. package/dist/chains/index.cjs.map +1 -1
  165. package/dist/chains/index.d.cts +1 -2
  166. package/dist/chains/index.d.ts +1 -2
  167. package/dist/chains/index.js +1 -3
  168. package/dist/chains/index.js.map +1 -1
  169. package/dist/chains/openai_functions/extraction.cjs.map +1 -1
  170. package/dist/chains/openai_functions/extraction.d.cts +1 -3
  171. package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
  172. package/dist/chains/openai_functions/extraction.d.ts +1 -3
  173. package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
  174. package/dist/chains/openai_functions/extraction.js.map +1 -1
  175. package/dist/chains/openai_functions/index.cjs +0 -5
  176. package/dist/chains/openai_functions/index.cjs.map +1 -1
  177. package/dist/chains/openai_functions/index.d.cts +1 -2
  178. package/dist/chains/openai_functions/index.d.ts +1 -2
  179. package/dist/chains/openai_functions/index.js +1 -4
  180. package/dist/chains/openai_functions/index.js.map +1 -1
  181. package/dist/chains/openai_functions/openapi.cjs +4 -4
  182. package/dist/chains/openai_functions/openapi.cjs.map +1 -1
  183. package/dist/chains/openai_functions/openapi.d.cts +1 -1
  184. package/dist/chains/openai_functions/openapi.js +4 -4
  185. package/dist/chains/openai_functions/openapi.js.map +1 -1
  186. package/dist/chains/openai_functions/tagging.cjs.map +1 -1
  187. package/dist/chains/openai_functions/tagging.d.cts +1 -3
  188. package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
  189. package/dist/chains/openai_functions/tagging.d.ts +1 -3
  190. package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
  191. package/dist/chains/openai_functions/tagging.js.map +1 -1
  192. package/dist/chains/query_constructor/index.cjs +4 -4
  193. package/dist/chains/query_constructor/index.cjs.map +1 -1
  194. package/dist/chains/query_constructor/index.d.cts +4 -2
  195. package/dist/chains/query_constructor/index.d.cts.map +1 -1
  196. package/dist/chains/query_constructor/index.d.ts +4 -2
  197. package/dist/chains/query_constructor/index.d.ts.map +1 -1
  198. package/dist/chains/query_constructor/index.js +1 -1
  199. package/dist/chains/query_constructor/index.js.map +1 -1
  200. package/dist/chains/question_answering/load.d.ts +2 -2
  201. package/dist/chains/question_answering/load.d.ts.map +1 -1
  202. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
  203. package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
  204. package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
  205. package/dist/chains/question_answering/refine_prompts.js.map +1 -1
  206. package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
  207. package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
  208. package/dist/chains/router/multi_prompt.cjs +4 -4
  209. package/dist/chains/router/multi_prompt.cjs.map +1 -1
  210. package/dist/chains/router/multi_prompt.js +1 -1
  211. package/dist/chains/router/multi_prompt.js.map +1 -1
  212. package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
  213. package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
  214. package/dist/chains/router/multi_retrieval_qa.js +1 -1
  215. package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
  216. package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
  217. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
  218. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
  219. package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
  220. package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
  221. package/dist/chains/summarization/stuff_prompts.js.map +1 -1
  222. package/dist/chat_models/universal.cjs +8 -5
  223. package/dist/chat_models/universal.cjs.map +1 -1
  224. package/dist/chat_models/universal.d.cts +2 -2
  225. package/dist/chat_models/universal.d.cts.map +1 -1
  226. package/dist/chat_models/universal.d.ts +2 -2
  227. package/dist/chat_models/universal.d.ts.map +1 -1
  228. package/dist/chat_models/universal.js +8 -5
  229. package/dist/chat_models/universal.js.map +1 -1
  230. package/dist/document_loaders/fs/directory.cjs.map +1 -1
  231. package/dist/document_loaders/fs/directory.d.cts +0 -1
  232. package/dist/document_loaders/fs/directory.d.cts.map +1 -1
  233. package/dist/document_loaders/fs/directory.d.ts +0 -1
  234. package/dist/document_loaders/fs/directory.d.ts.map +1 -1
  235. package/dist/document_loaders/fs/directory.js.map +1 -1
  236. package/dist/document_loaders/fs/json.cjs +7 -1
  237. package/dist/document_loaders/fs/json.cjs.map +1 -1
  238. package/dist/document_loaders/fs/json.js +7 -1
  239. package/dist/document_loaders/fs/json.js.map +1 -1
  240. package/dist/embeddings/cache_backed.cjs +1 -1
  241. package/dist/embeddings/cache_backed.cjs.map +1 -1
  242. package/dist/embeddings/cache_backed.d.cts +1 -1
  243. package/dist/embeddings/cache_backed.d.ts +2 -2
  244. package/dist/embeddings/cache_backed.js +2 -2
  245. package/dist/embeddings/cache_backed.js.map +1 -1
  246. package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
  247. package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
  248. package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
  249. package/dist/evaluation/embedding_distance/base.cjs +2 -4
  250. package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
  251. package/dist/evaluation/embedding_distance/base.js +2 -3
  252. package/dist/evaluation/embedding_distance/base.js.map +1 -1
  253. package/dist/evaluation/loader.cjs +7 -12
  254. package/dist/evaluation/loader.cjs.map +1 -1
  255. package/dist/evaluation/loader.d.cts +8 -2
  256. package/dist/evaluation/loader.d.cts.map +1 -1
  257. package/dist/evaluation/loader.d.ts +8 -2
  258. package/dist/evaluation/loader.d.ts.map +1 -1
  259. package/dist/evaluation/loader.js +7 -12
  260. package/dist/evaluation/loader.js.map +1 -1
  261. package/dist/hub/base.cjs.map +1 -1
  262. package/dist/hub/base.js.map +1 -1
  263. package/dist/index.cjs +38 -6
  264. package/dist/index.cjs.map +1 -1
  265. package/dist/index.d.cts +11 -4
  266. package/dist/index.d.ts +11 -4
  267. package/dist/index.js +18 -4
  268. package/dist/index.js.map +1 -1
  269. package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
  270. package/dist/langchain-core/dist/messages/base.d.cts +24 -33
  271. package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
  272. package/dist/langchain-core/dist/messages/content/index.d.cts +21 -2
  273. package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
  274. package/dist/langchain-core/dist/messages/content/tools.d.cts +67 -6
  275. package/dist/langchain-core/dist/messages/content/tools.d.cts.map +1 -1
  276. package/dist/langchain-core/dist/messages/message.d.cts +598 -0
  277. package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
  278. package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
  279. package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
  280. package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
  281. package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
  282. package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
  283. package/dist/langchain-core/dist/utils/types/index.d.cts.map +1 -1
  284. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
  285. package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
  286. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
  287. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +21 -2
  288. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
  289. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +67 -6
  290. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +1 -1
  291. package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
  292. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
  293. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
  294. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
  295. package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
  296. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
  297. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
  298. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
  299. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
  300. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
  301. package/dist/load/import_map.cjs +3 -14
  302. package/dist/load/import_map.cjs.map +1 -1
  303. package/dist/load/import_map.js +3 -14
  304. package/dist/load/import_map.js.map +1 -1
  305. package/dist/memory/prompt.cjs.map +1 -1
  306. package/dist/memory/prompt.d.cts.map +1 -1
  307. package/dist/memory/prompt.d.ts.map +1 -1
  308. package/dist/memory/prompt.js.map +1 -1
  309. package/dist/output_parsers/combining.cjs +1 -1
  310. package/dist/output_parsers/combining.cjs.map +1 -1
  311. package/dist/output_parsers/combining.js +1 -1
  312. package/dist/output_parsers/combining.js.map +1 -1
  313. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
  314. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
  315. package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
  316. package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
  317. package/dist/output_parsers/expression_type_handlers/base.js +1 -1
  318. package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
  319. package/dist/output_parsers/regex.cjs.map +1 -1
  320. package/dist/output_parsers/regex.js.map +1 -1
  321. package/dist/output_parsers/structured.cjs +4 -4
  322. package/dist/output_parsers/structured.cjs.map +1 -1
  323. package/dist/output_parsers/structured.d.cts +1 -1
  324. package/dist/output_parsers/structured.d.cts.map +1 -1
  325. package/dist/output_parsers/structured.d.ts +1 -1
  326. package/dist/output_parsers/structured.d.ts.map +1 -1
  327. package/dist/output_parsers/structured.js +2 -2
  328. package/dist/output_parsers/structured.js.map +1 -1
  329. package/dist/retrievers/ensemble.cjs.map +1 -1
  330. package/dist/retrievers/ensemble.js.map +1 -1
  331. package/dist/storage/file_system.cjs +1 -1
  332. package/dist/storage/file_system.cjs.map +1 -1
  333. package/dist/storage/file_system.js +1 -1
  334. package/dist/storage/file_system.js.map +1 -1
  335. package/dist/tools/fs.cjs +5 -5
  336. package/dist/tools/fs.cjs.map +1 -1
  337. package/dist/tools/fs.d.cts +1 -1
  338. package/dist/tools/fs.d.cts.map +1 -1
  339. package/dist/tools/fs.d.ts +1 -1
  340. package/dist/tools/fs.d.ts.map +1 -1
  341. package/dist/tools/fs.js +1 -1
  342. package/dist/tools/fs.js.map +1 -1
  343. package/dist/tools/retriever.cjs +2 -2
  344. package/dist/tools/retriever.cjs.map +1 -1
  345. package/dist/tools/retriever.d.cts +1 -1
  346. package/dist/tools/retriever.d.cts.map +1 -1
  347. package/dist/tools/retriever.d.ts +1 -1
  348. package/dist/tools/retriever.d.ts.map +1 -1
  349. package/dist/tools/retriever.js +1 -1
  350. package/dist/tools/retriever.js.map +1 -1
  351. package/dist/tools/sql.cjs +1 -2
  352. package/dist/tools/sql.cjs.map +1 -1
  353. package/dist/tools/sql.d.cts +1 -1
  354. package/dist/tools/sql.d.cts.map +1 -1
  355. package/dist/tools/sql.d.ts +1 -1
  356. package/dist/tools/sql.d.ts.map +1 -1
  357. package/dist/tools/sql.js +1 -2
  358. package/dist/tools/sql.js.map +1 -1
  359. package/dist/types/expression-parser.d.cts +2 -0
  360. package/dist/types/expression-parser.d.cts.map +1 -1
  361. package/dist/types/expression-parser.d.ts +2 -0
  362. package/dist/types/expression-parser.d.ts.map +1 -1
  363. package/dist/util/hub.cjs +1 -1
  364. package/dist/util/hub.js +1 -1
  365. package/dist/util/openapi.cjs +1 -1
  366. package/dist/util/openapi.cjs.map +1 -1
  367. package/dist/util/openapi.js +1 -1
  368. package/dist/util/openapi.js.map +1 -1
  369. package/package.json +15 -21
  370. package/dist/agents/middlewareAgent/middlewares/hitl.cjs +0 -235
  371. package/dist/agents/middlewareAgent/middlewares/hitl.cjs.map +0 -1
  372. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts +0 -199
  373. package/dist/agents/middlewareAgent/middlewares/hitl.d.cts.map +0 -1
  374. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts +0 -199
  375. package/dist/agents/middlewareAgent/middlewares/hitl.d.ts.map +0 -1
  376. package/dist/agents/middlewareAgent/middlewares/hitl.js +0 -234
  377. package/dist/agents/middlewareAgent/middlewares/hitl.js.map +0 -1
  378. package/dist/agents/middlewareAgent/middlewares/index.cjs +0 -8
  379. package/dist/agents/middlewareAgent/middlewares/index.d.cts +0 -4
  380. package/dist/agents/middlewareAgent/middlewares/index.d.ts +0 -4
  381. package/dist/agents/middlewareAgent/middlewares/index.js +0 -5
  382. package/dist/agents/middlewareAgent/middlewares/promptCaching.cjs.map +0 -1
  383. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.cts.map +0 -1
  384. package/dist/agents/middlewareAgent/middlewares/promptCaching.d.ts.map +0 -1
  385. package/dist/agents/middlewareAgent/middlewares/promptCaching.js.map +0 -1
  386. package/dist/agents/middlewareAgent/middlewares/summarization.cjs.map +0 -1
  387. package/dist/agents/middlewareAgent/middlewares/summarization.d.cts.map +0 -1
  388. package/dist/agents/middlewareAgent/middlewares/summarization.d.ts.map +0 -1
  389. package/dist/agents/middlewareAgent/middlewares/summarization.js.map +0 -1
  390. package/dist/chains/openai_functions/structured_output.cjs +0 -107
  391. package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
  392. package/dist/chains/openai_functions/structured_output.d.cts +0 -38
  393. package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
  394. package/dist/chains/openai_functions/structured_output.d.ts +0 -38
  395. package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
  396. package/dist/chains/openai_functions/structured_output.js +0 -105
  397. package/dist/chains/openai_functions/structured_output.js.map +0 -1
  398. package/dist/chains/openai_moderation.cjs +0 -107
  399. package/dist/chains/openai_moderation.cjs.map +0 -1
  400. package/dist/chains/openai_moderation.d.cts +0 -74
  401. package/dist/chains/openai_moderation.d.cts.map +0 -1
  402. package/dist/chains/openai_moderation.d.ts +0 -74
  403. package/dist/chains/openai_moderation.d.ts.map +0 -1
  404. package/dist/chains/openai_moderation.js +0 -106
  405. package/dist/chains/openai_moderation.js.map +0 -1
@@ -1,27 +1,50 @@
1
1
  import { AgentMiddleware } from "../types.cjs";
2
- import { z } from "zod";
2
+ import { InferInteropZodInput } from "@langchain/core/utils/types";
3
+ import { z } from "zod/v3";
3
4
 
4
- //#region src/agents/middlewareAgent/middlewares/promptCaching.d.ts
5
+ //#region src/agents/middlewareAgent/middleware/promptCaching.d.ts
5
6
  declare const contextSchema: z.ZodObject<{
6
- // Configuration options
7
+ /**
8
+ * Whether to enable prompt caching.
9
+ * @default true
10
+ */
7
11
  enableCaching: z.ZodDefault<z.ZodBoolean>;
12
+ /**
13
+ * The time-to-live for the cached prompt.
14
+ * @default "5m"
15
+ */
8
16
  ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
17
+ /**
18
+ * The minimum number of messages required before caching is applied.
19
+ * @default 3
20
+ */
9
21
  minMessagesToCache: z.ZodDefault<z.ZodNumber>;
22
+ /**
23
+ * The behavior to take when an unsupported model is used.
24
+ * - "ignore" will ignore the unsupported model and continue without caching.
25
+ * - "warn" will warn the user and continue without caching.
26
+ * - "raise" will raise an error and stop the agent.
27
+ * @default "warn"
28
+ */
29
+ unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<["ignore", "warn", "raise"]>>;
10
30
  }, "strip", z.ZodTypeAny, {
11
31
  enableCaching: boolean;
12
32
  ttl: "1h" | "5m";
13
33
  minMessagesToCache: number;
34
+ unsupportedModelBehavior: "ignore" | "raise" | "warn";
14
35
  }, {
15
36
  enableCaching?: boolean | undefined;
16
37
  ttl?: "1h" | "5m" | undefined;
17
38
  minMessagesToCache?: number | undefined;
39
+ unsupportedModelBehavior?: "ignore" | "raise" | "warn" | undefined;
18
40
  }>;
41
+ type PromptCachingMiddlewareConfig = Partial<InferInteropZodInput<typeof contextSchema>>;
19
42
  /**
20
43
  * Creates a prompt caching middleware for Anthropic models to optimize API usage.
21
44
  *
22
- * This middleware automatically adds cache control headers to messages when using Anthropic models,
23
- * enabling their prompt caching feature. This can significantly reduce costs and latency for
24
- * applications with repetitive prompts, long system messages, or extensive conversation histories.
45
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
46
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
47
+ * prompts, long system messages, or extensive conversation histories.
25
48
  *
26
49
  * ## How It Works
27
50
  *
@@ -40,6 +63,7 @@ declare const contextSchema: z.ZodObject<{
40
63
  * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
41
64
  * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
42
65
  * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
66
+ * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `"warn"`)
43
67
  *
44
68
  * @returns A middleware instance that can be passed to `createAgent`
45
69
  *
@@ -53,7 +77,7 @@ declare const contextSchema: z.ZodObject<{
53
77
  *
54
78
  * const agent = createAgent({
55
79
  * model: "anthropic:claude-3-5-sonnet",
56
- * middlewares: [
80
+ * middleware: [
57
81
  * anthropicPromptCachingMiddleware()
58
82
  * ]
59
83
  * });
@@ -69,8 +93,8 @@ declare const contextSchema: z.ZodObject<{
69
93
  *
70
94
  * const agent = createAgent({
71
95
  * model: "anthropic:claude-3-5-sonnet",
72
- * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
73
- * middlewares: [cachingMiddleware]
96
+ * systemPrompt: "You are a helpful assistant with deep knowledge of...", // Long system prompt
97
+ * middleware: [cachingMiddleware]
74
98
  * });
75
99
  * ```
76
100
  *
@@ -79,7 +103,7 @@ declare const contextSchema: z.ZodObject<{
79
103
  * ```typescript
80
104
  * const agent = createAgent({
81
105
  * model: "anthropic:claude-3-5-sonnet",
82
- * middlewares: [
106
+ * middleware: [
83
107
  * anthropicPromptCachingMiddleware({
84
108
  * enableCaching: true,
85
109
  * ttl: "5m"
@@ -103,7 +127,7 @@ declare const contextSchema: z.ZodObject<{
103
127
  * ```typescript
104
128
  * const supportAgent = createAgent({
105
129
  * model: "anthropic:claude-3-5-sonnet",
106
- * systemMessage: `You are a customer support agent for ACME Corp.
130
+ * systemPrompt: `You are a customer support agent for ACME Corp.
107
131
  *
108
132
  * Company policies:
109
133
  * - Always be polite and professional
@@ -112,7 +136,7 @@ declare const contextSchema: z.ZodObject<{
112
136
  * ... (extensive policies and guidelines)
113
137
  * `,
114
138
  * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
115
- * middlewares: [
139
+ * middleware: [
116
140
  * anthropicPromptCachingMiddleware({
117
141
  * ttl: "1h", // Long TTL for stable system prompt
118
142
  * minMessagesToCache: 1 // Cache immediately due to large system prompt
@@ -133,20 +157,41 @@ declare const contextSchema: z.ZodObject<{
133
157
  * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation
134
158
  * @public
135
159
  */
136
- declare function anthropicPromptCachingMiddleware(middlewareOptions?: Partial<z.infer<typeof contextSchema>>): AgentMiddleware<undefined, z.ZodObject<{
137
- // Configuration options
160
+ declare function anthropicPromptCachingMiddleware(middlewareOptions?: PromptCachingMiddlewareConfig): AgentMiddleware<undefined, z.ZodObject<{
161
+ /**
162
+ * Whether to enable prompt caching.
163
+ * @default true
164
+ */
138
165
  enableCaching: z.ZodDefault<z.ZodBoolean>;
166
+ /**
167
+ * The time-to-live for the cached prompt.
168
+ * @default "5m"
169
+ */
139
170
  ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
171
+ /**
172
+ * The minimum number of messages required before caching is applied.
173
+ * @default 3
174
+ */
140
175
  minMessagesToCache: z.ZodDefault<z.ZodNumber>;
176
+ /**
177
+ * The behavior to take when an unsupported model is used.
178
+ * - "ignore" will ignore the unsupported model and continue without caching.
179
+ * - "warn" will warn the user and continue without caching.
180
+ * - "raise" will raise an error and stop the agent.
181
+ * @default "warn"
182
+ */
183
+ unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<["ignore", "warn", "raise"]>>;
141
184
  }, "strip", z.ZodTypeAny, {
142
185
  enableCaching: boolean;
143
186
  ttl: "1h" | "5m";
144
187
  minMessagesToCache: number;
188
+ unsupportedModelBehavior: "ignore" | "raise" | "warn";
145
189
  }, {
146
190
  enableCaching?: boolean | undefined;
147
191
  ttl?: "1h" | "5m" | undefined;
148
192
  minMessagesToCache?: number | undefined;
193
+ unsupportedModelBehavior?: "ignore" | "raise" | "warn" | undefined;
149
194
  }>, any>;
150
195
  //#endregion
151
- export { anthropicPromptCachingMiddleware };
196
+ export { PromptCachingMiddlewareConfig, anthropicPromptCachingMiddleware };
152
197
  //# sourceMappingURL=promptCaching.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.d.cts","names":["z","InferInteropZodInput","contextSchema","ZodBoolean","ZodDefault","ZodEnum","ZodNumber","ZodTypeAny","ZodObject","PromptCachingMiddlewareConfig","Partial","anthropicPromptCachingMiddleware","___types_js0","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n /**\n * Whether to enable prompt caching.\n * @default true\n */\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n /**\n * The behavior to take when an unsupported model is used.\n * - \"ignore\" will ignore the unsupported model and continue without caching.\n * - \"warn\" will warn the user and continue without caching.\n * - \"raise\" will raise an error and stop the agent.\n * @default \"warn\"\n */\n unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<[\"ignore\", \"warn\", \"raise\"]>>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n unsupportedModelBehavior: \"ignore\" | \"raise\" | \"warn\";\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n unsupportedModelBehavior?: \"ignore\" | \"raise\" | \"warn\" | undefined;\n}>;\nexport type PromptCachingMiddlewareConfig = Partial<InferInteropZodInput<typeof contextSchema>>;\n/**\n * Creates a prompt caching middleware for Anthropic models to optimize API usage.\n *\n * This middleware automatically adds cache control headers to the last messages when using Anthropic models,\n * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive\n * prompts, long system messages, or extensive conversation histories.\n *\n * ## How It Works\n *\n * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's\n * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the\n * cached representations are reused, skipping redundant token processing.\n *\n * ## Benefits\n *\n * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)\n * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed\n * - **Better Scalability**: Reduced computational load enables handling more requests\n * - **Consistent Performance**: Stable response times for repetitive queries\n *\n * @param middlewareOptions - Configuration options for the caching behavior\n * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)\n * @param middlewareOptions.ttl - Cache time-to-live: `\"5m\"` for 5 minutes or `\"1h\"` for 1 hour (default: `\"5m\"`)\n * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)\n * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `\"warn\"`)\n *\n * @returns A middleware instance that can be passed to `createAgent`\n *\n * @throws {Error} If used with non-Anthropic models\n *\n * @example\n * Basic usage with default settings\n * ```typescript\n * import { createAgent } from \"langchain\";\n * import { anthropicPromptCachingMiddleware } from \"langchain/middleware\";\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware()\n * ]\n * });\n * ```\n *\n * @example\n * Custom configuration for longer conversations\n * ```typescript\n * const cachingMiddleware = anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Cache for 1 hour instead of default 5 minutes\n * minMessagesToCache: 5 // Only cache after 5 messages\n * });\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: \"You are a helpful assistant with deep knowledge of...\", // Long system prompt\n * middleware: [cachingMiddleware]\n * });\n * ```\n *\n * @example\n * Conditional caching based on runtime context\n * ```typescript\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * enableCaching: true,\n * ttl: \"5m\"\n * })\n * ]\n * });\n *\n * // Disable caching for specific requests\n * await agent.invoke(\n * { messages: [new HumanMessage(\"Process this without caching\")] },\n * {\n * configurable: {\n * middleware_context: { enableCaching: false }\n * }\n * }\n * );\n * ```\n *\n * @example\n * Optimal setup for customer support chatbot\n * ```typescript\n * const supportAgent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: `You are a customer support agent for ACME Corp.\n *\n * Company policies:\n * - Always be polite and professional\n * - Refer to knowledge base for product information\n * - Escalate billing issues to human agents\n * ... (extensive policies and guidelines)\n * `,\n * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Long TTL for stable system prompt\n * minMessagesToCache: 1 // Cache immediately due to large system prompt\n * })\n * ]\n * });\n * ```\n *\n * @remarks\n * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers\n * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`\n * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys\n * - **TTL Options**: Only supports \"5m\" (5 minutes) and \"1h\" (1 hour) as TTL values per Anthropic's API\n * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications\n * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base\n *\n * @see {@link createAgent} for agent creation\n * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation\n * @public\n */\nexport declare function anthropicPromptCachingMiddleware(middlewareOptions?: PromptCachingMiddlewareConfig): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n /**\n * Whether to enable prompt caching.\n * @default true\n */\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n /**\n * The behavior to take when an unsupported model is used.\n * - \"ignore\" will ignore the unsupported model and continue without caching.\n * - \"warn\" will warn the user and continue without caching.\n * - \"raise\" will raise an error and stop the agent.\n * @default \"warn\"\n */\n unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<[\"ignore\", \"warn\", \"raise\"]>>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n unsupportedModelBehavior: \"ignore\" | \"raise\" | \"warn\";\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n unsupportedModelBehavior?: \"ignore\" | \"raise\" | \"warn\" | undefined;\n}>, any>;\nexport {};\n"],"mappings":";;;;;cAEcE,eAAeF,CAAAA,CAAEQ;;;AADoC;;EAmCjE,aA7BgCL,EAAfH,CAAAA,CAAEI,UAAaD,CAAFH,CAAAA,CAAEG,UAAAA,CAAAA;EAAU;;;;EAUI,GAAxBH,EALfA,CAAAA,CAAEI,UAKeA,CALJJ,CAAAA,CAAEK,OAKED,CAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;EAAU;;;;EAfI,kBAAA,EAehBJ,CAAAA,CAAEI,UAfc,CAeHJ,CAAAA,CAAEM,SAfC,CAAA;EAmC5BG;;;;;AAAuC;AAuHnD;EAAwD,wBAAA,EAnI1BT,CAAAA,CAAEI,UAmIwB,CAnIbJ,CAAAA,CAAEK,OAmIW,CAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;CAAA,EAAA,OAAqBI,EAlIjET,CAAAA,CAAEO,UAkI+DE,EAAAA;EAA6B,aAKxEN,EAAAA,OAAAA;EAAU,GAAzBH,EAAEI,IAAAA,GAAAA,IAAAA;EAAU,kBAKPC,EAAAA,MAAAA;EAAO,wBAApBD,EAAAA,QAAAA,GAAAA,OAAAA,GAAAA,MAAAA;CAAU,EAAA;EAK2B,aAAtBA,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;EAAU,GAQOJ,CAAAA,EAAEK,IAAAA,GAAAA,IAAAA,GAAAA,SAAAA;EAAO,kBAApBD,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAAU,wBAC5BG,CAAAA,EAAAA,QAAAA,GAAAA,OAAAA,GAAAA,MAAAA,GAAAA,SAAAA;CAAU,CAAA;AAxBiJ,KAvH7JE,6BAAAA,GAAgCC,OAuH6H,CAvHrHT,oBAuHqH,CAAA,OAvHzFC,aAuHyF,CAAA,CAAA;AAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA1HS,gCAAAA,qBAAqDF,gCAA4F,2BAAXT,CAAAA,CAAEQ;;;;;iBAK7IR,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEG;;;;;OAKzBH,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEK;;;;;sBAKAL,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEM;;;;;;;;4BAQTN,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEK;YACjCL,CAAAA,CAAEO"}
@@ -1,27 +1,50 @@
1
1
  import { AgentMiddleware } from "../types.js";
2
- import { z } from "zod";
2
+ import { InferInteropZodInput } from "@langchain/core/utils/types";
3
+ import { z } from "zod/v3";
3
4
 
4
- //#region src/agents/middlewareAgent/middlewares/promptCaching.d.ts
5
+ //#region src/agents/middlewareAgent/middleware/promptCaching.d.ts
5
6
  declare const contextSchema: z.ZodObject<{
6
- // Configuration options
7
+ /**
8
+ * Whether to enable prompt caching.
9
+ * @default true
10
+ */
7
11
  enableCaching: z.ZodDefault<z.ZodBoolean>;
12
+ /**
13
+ * The time-to-live for the cached prompt.
14
+ * @default "5m"
15
+ */
8
16
  ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
17
+ /**
18
+ * The minimum number of messages required before caching is applied.
19
+ * @default 3
20
+ */
9
21
  minMessagesToCache: z.ZodDefault<z.ZodNumber>;
22
+ /**
23
+ * The behavior to take when an unsupported model is used.
24
+ * - "ignore" will ignore the unsupported model and continue without caching.
25
+ * - "warn" will warn the user and continue without caching.
26
+ * - "raise" will raise an error and stop the agent.
27
+ * @default "warn"
28
+ */
29
+ unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<["ignore", "warn", "raise"]>>;
10
30
  }, "strip", z.ZodTypeAny, {
11
31
  enableCaching: boolean;
12
32
  ttl: "1h" | "5m";
13
33
  minMessagesToCache: number;
34
+ unsupportedModelBehavior: "ignore" | "raise" | "warn";
14
35
  }, {
15
36
  enableCaching?: boolean | undefined;
16
37
  ttl?: "1h" | "5m" | undefined;
17
38
  minMessagesToCache?: number | undefined;
39
+ unsupportedModelBehavior?: "ignore" | "raise" | "warn" | undefined;
18
40
  }>;
41
+ type PromptCachingMiddlewareConfig = Partial<InferInteropZodInput<typeof contextSchema>>;
19
42
  /**
20
43
  * Creates a prompt caching middleware for Anthropic models to optimize API usage.
21
44
  *
22
- * This middleware automatically adds cache control headers to messages when using Anthropic models,
23
- * enabling their prompt caching feature. This can significantly reduce costs and latency for
24
- * applications with repetitive prompts, long system messages, or extensive conversation histories.
45
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
46
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
47
+ * prompts, long system messages, or extensive conversation histories.
25
48
  *
26
49
  * ## How It Works
27
50
  *
@@ -40,6 +63,7 @@ declare const contextSchema: z.ZodObject<{
40
63
  * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
41
64
  * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
42
65
  * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
66
+ * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `"warn"`)
43
67
  *
44
68
  * @returns A middleware instance that can be passed to `createAgent`
45
69
  *
@@ -53,7 +77,7 @@ declare const contextSchema: z.ZodObject<{
53
77
  *
54
78
  * const agent = createAgent({
55
79
  * model: "anthropic:claude-3-5-sonnet",
56
- * middlewares: [
80
+ * middleware: [
57
81
  * anthropicPromptCachingMiddleware()
58
82
  * ]
59
83
  * });
@@ -69,8 +93,8 @@ declare const contextSchema: z.ZodObject<{
69
93
  *
70
94
  * const agent = createAgent({
71
95
  * model: "anthropic:claude-3-5-sonnet",
72
- * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
73
- * middlewares: [cachingMiddleware]
96
+ * systemPrompt: "You are a helpful assistant with deep knowledge of...", // Long system prompt
97
+ * middleware: [cachingMiddleware]
74
98
  * });
75
99
  * ```
76
100
  *
@@ -79,7 +103,7 @@ declare const contextSchema: z.ZodObject<{
79
103
  * ```typescript
80
104
  * const agent = createAgent({
81
105
  * model: "anthropic:claude-3-5-sonnet",
82
- * middlewares: [
106
+ * middleware: [
83
107
  * anthropicPromptCachingMiddleware({
84
108
  * enableCaching: true,
85
109
  * ttl: "5m"
@@ -103,7 +127,7 @@ declare const contextSchema: z.ZodObject<{
103
127
  * ```typescript
104
128
  * const supportAgent = createAgent({
105
129
  * model: "anthropic:claude-3-5-sonnet",
106
- * systemMessage: `You are a customer support agent for ACME Corp.
130
+ * systemPrompt: `You are a customer support agent for ACME Corp.
107
131
  *
108
132
  * Company policies:
109
133
  * - Always be polite and professional
@@ -112,7 +136,7 @@ declare const contextSchema: z.ZodObject<{
112
136
  * ... (extensive policies and guidelines)
113
137
  * `,
114
138
  * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
115
- * middlewares: [
139
+ * middleware: [
116
140
  * anthropicPromptCachingMiddleware({
117
141
  * ttl: "1h", // Long TTL for stable system prompt
118
142
  * minMessagesToCache: 1 // Cache immediately due to large system prompt
@@ -133,20 +157,41 @@ declare const contextSchema: z.ZodObject<{
133
157
  * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation
134
158
  * @public
135
159
  */
136
- declare function anthropicPromptCachingMiddleware(middlewareOptions?: Partial<z.infer<typeof contextSchema>>): AgentMiddleware<undefined, z.ZodObject<{
137
- // Configuration options
160
+ declare function anthropicPromptCachingMiddleware(middlewareOptions?: PromptCachingMiddlewareConfig): AgentMiddleware<undefined, z.ZodObject<{
161
+ /**
162
+ * Whether to enable prompt caching.
163
+ * @default true
164
+ */
138
165
  enableCaching: z.ZodDefault<z.ZodBoolean>;
166
+ /**
167
+ * The time-to-live for the cached prompt.
168
+ * @default "5m"
169
+ */
139
170
  ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
171
+ /**
172
+ * The minimum number of messages required before caching is applied.
173
+ * @default 3
174
+ */
140
175
  minMessagesToCache: z.ZodDefault<z.ZodNumber>;
176
+ /**
177
+ * The behavior to take when an unsupported model is used.
178
+ * - "ignore" will ignore the unsupported model and continue without caching.
179
+ * - "warn" will warn the user and continue without caching.
180
+ * - "raise" will raise an error and stop the agent.
181
+ * @default "warn"
182
+ */
183
+ unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<["ignore", "warn", "raise"]>>;
141
184
  }, "strip", z.ZodTypeAny, {
142
185
  enableCaching: boolean;
143
186
  ttl: "1h" | "5m";
144
187
  minMessagesToCache: number;
188
+ unsupportedModelBehavior: "ignore" | "raise" | "warn";
145
189
  }, {
146
190
  enableCaching?: boolean | undefined;
147
191
  ttl?: "1h" | "5m" | undefined;
148
192
  minMessagesToCache?: number | undefined;
193
+ unsupportedModelBehavior?: "ignore" | "raise" | "warn" | undefined;
149
194
  }>, any>;
150
195
  //#endregion
151
- export { anthropicPromptCachingMiddleware };
196
+ export { PromptCachingMiddlewareConfig, anthropicPromptCachingMiddleware };
152
197
  //# sourceMappingURL=promptCaching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.d.ts","names":["z","InferInteropZodInput","contextSchema","ZodBoolean","ZodDefault","ZodEnum","ZodNumber","ZodTypeAny","ZodObject","PromptCachingMiddlewareConfig","Partial","anthropicPromptCachingMiddleware","___types_js1","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n /**\n * Whether to enable prompt caching.\n * @default true\n */\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n /**\n * The behavior to take when an unsupported model is used.\n * - \"ignore\" will ignore the unsupported model and continue without caching.\n * - \"warn\" will warn the user and continue without caching.\n * - \"raise\" will raise an error and stop the agent.\n * @default \"warn\"\n */\n unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<[\"ignore\", \"warn\", \"raise\"]>>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n unsupportedModelBehavior: \"ignore\" | \"raise\" | \"warn\";\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n unsupportedModelBehavior?: \"ignore\" | \"raise\" | \"warn\" | undefined;\n}>;\nexport type PromptCachingMiddlewareConfig = Partial<InferInteropZodInput<typeof contextSchema>>;\n/**\n * Creates a prompt caching middleware for Anthropic models to optimize API usage.\n *\n * This middleware automatically adds cache control headers to the last messages when using Anthropic models,\n * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive\n * prompts, long system messages, or extensive conversation histories.\n *\n * ## How It Works\n *\n * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's\n * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the\n * cached representations are reused, skipping redundant token processing.\n *\n * ## Benefits\n *\n * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)\n * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed\n * - **Better Scalability**: Reduced computational load enables handling more requests\n * - **Consistent Performance**: Stable response times for repetitive queries\n *\n * @param middlewareOptions - Configuration options for the caching behavior\n * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)\n * @param middlewareOptions.ttl - Cache time-to-live: `\"5m\"` for 5 minutes or `\"1h\"` for 1 hour (default: `\"5m\"`)\n * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)\n * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `\"warn\"`)\n *\n * @returns A middleware instance that can be passed to `createAgent`\n *\n * @throws {Error} If used with non-Anthropic models\n *\n * @example\n * Basic usage with default settings\n * ```typescript\n * import { createAgent } from \"langchain\";\n * import { anthropicPromptCachingMiddleware } from \"langchain/middleware\";\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware()\n * ]\n * });\n * ```\n *\n * @example\n * Custom configuration for longer conversations\n * ```typescript\n * const cachingMiddleware = anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Cache for 1 hour instead of default 5 minutes\n * minMessagesToCache: 5 // Only cache after 5 messages\n * });\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: \"You are a helpful assistant with deep knowledge of...\", // Long system prompt\n * middleware: [cachingMiddleware]\n * });\n * ```\n *\n * @example\n * Conditional caching based on runtime context\n * ```typescript\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * enableCaching: true,\n * ttl: \"5m\"\n * })\n * ]\n * });\n *\n * // Disable caching for specific requests\n * await agent.invoke(\n * { messages: [new HumanMessage(\"Process this without caching\")] },\n * {\n * configurable: {\n * middleware_context: { enableCaching: false }\n * }\n * }\n * );\n * ```\n *\n * @example\n * Optimal setup for customer support chatbot\n * ```typescript\n * const supportAgent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: `You are a customer support agent for ACME Corp.\n *\n * Company policies:\n * - Always be polite and professional\n * - Refer to knowledge base for product information\n * - Escalate billing issues to human agents\n * ... (extensive policies and guidelines)\n * `,\n * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Long TTL for stable system prompt\n * minMessagesToCache: 1 // Cache immediately due to large system prompt\n * })\n * ]\n * });\n * ```\n *\n * @remarks\n * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers\n * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`\n * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys\n * - **TTL Options**: Only supports \"5m\" (5 minutes) and \"1h\" (1 hour) as TTL values per Anthropic's API\n * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications\n * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base\n *\n * @see {@link createAgent} for agent creation\n * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation\n * @public\n */\nexport declare function anthropicPromptCachingMiddleware(middlewareOptions?: PromptCachingMiddlewareConfig): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n /**\n * Whether to enable prompt caching.\n * @default true\n */\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n /**\n * The behavior to take when an unsupported model is used.\n * - \"ignore\" will ignore the unsupported model and continue without caching.\n * - \"warn\" will warn the user and continue without caching.\n * - \"raise\" will raise an error and stop the agent.\n * @default \"warn\"\n */\n unsupportedModelBehavior: z.ZodDefault<z.ZodEnum<[\"ignore\", \"warn\", \"raise\"]>>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n unsupportedModelBehavior: \"ignore\" | \"raise\" | \"warn\";\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n unsupportedModelBehavior?: \"ignore\" | \"raise\" | \"warn\" | undefined;\n}>, any>;\nexport {};\n"],"mappings":";;;;;cAEcE,eAAeF,CAAAA,CAAEQ;;;AADoC;;EAmCjE,aA7BgCL,EAAfH,CAAAA,CAAEI,UAAaD,CAAFH,CAAAA,CAAEG,UAAAA,CAAAA;EAAU;;;;EAUI,GAAxBH,EALfA,CAAAA,CAAEI,UAKeA,CALJJ,CAAAA,CAAEK,OAKED,CAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;EAAU;;;;EAfI,kBAAA,EAehBJ,CAAAA,CAAEI,UAfc,CAeHJ,CAAAA,CAAEM,SAfC,CAAA;EAmC5BG;;;;;AAAuC;AAuHnD;EAAwD,wBAAA,EAnI1BT,CAAAA,CAAEI,UAmIwB,CAnIbJ,CAAAA,CAAEK,OAmIW,CAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;CAAA,EAAA,OAAqBI,EAlIjET,CAAAA,CAAEO,UAkI+DE,EAAAA;EAA6B,aAKxEN,EAAAA,OAAAA;EAAU,GAAzBH,EAAEI,IAAAA,GAAAA,IAAAA;EAAU,kBAKPC,EAAAA,MAAAA;EAAO,wBAApBD,EAAAA,QAAAA,GAAAA,OAAAA,GAAAA,MAAAA;CAAU,EAAA;EAK2B,aAAtBA,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;EAAU,GAQOJ,CAAAA,EAAEK,IAAAA,GAAAA,IAAAA,GAAAA,SAAAA;EAAO,kBAApBD,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAAU,wBAC5BG,CAAAA,EAAAA,QAAAA,GAAAA,OAAAA,GAAAA,MAAAA,GAAAA,SAAAA;CAAU,CAAA;AAxBiJ,KAvH7JE,6BAAAA,GAAgCC,OAuH6H,CAvHrHT,oBAuHqH,CAAA,OAvHzFC,aAuHyF,CAAA,CAAA;AAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA1HS,gCAAAA,qBAAqDF,gCAA4F,2BAAXT,CAAAA,CAAEQ;;;;;iBAK7IR,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEG;;;;;OAKzBH,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEK;;;;;sBAKAL,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEM;;;;;;;;4BAQTN,CAAAA,CAAEI,WAAWJ,CAAAA,CAAEK;YACjCL,CAAAA,CAAEO"}
@@ -1,18 +1,33 @@
1
1
  import { createMiddleware } from "../middleware.js";
2
- import { z } from "zod";
2
+ import { z } from "zod/v3";
3
3
 
4
- //#region src/agents/middlewareAgent/middlewares/promptCaching.ts
4
+ //#region src/agents/middlewareAgent/middleware/promptCaching.ts
5
+ const DEFAULT_ENABLE_CACHING = true;
6
+ const DEFAULT_TTL = "5m";
7
+ const DEFAULT_MIN_MESSAGES_TO_CACHE = 3;
8
+ const DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR = "warn";
5
9
  const contextSchema = z.object({
6
- enableCaching: z.boolean().default(true),
7
- ttl: z.enum(["5m", "1h"]).default("5m"),
8
- minMessagesToCache: z.number().default(3)
10
+ enableCaching: z.boolean().default(DEFAULT_ENABLE_CACHING),
11
+ ttl: z.enum(["5m", "1h"]).default(DEFAULT_TTL),
12
+ minMessagesToCache: z.number().default(DEFAULT_MIN_MESSAGES_TO_CACHE),
13
+ unsupportedModelBehavior: z.enum([
14
+ "ignore",
15
+ "warn",
16
+ "raise"
17
+ ]).default(DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR)
9
18
  });
19
+ var PromptCachingMiddlewareError = class extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = "PromptCachingMiddlewareError";
23
+ }
24
+ };
10
25
  /**
11
26
  * Creates a prompt caching middleware for Anthropic models to optimize API usage.
12
27
  *
13
- * This middleware automatically adds cache control headers to messages when using Anthropic models,
14
- * enabling their prompt caching feature. This can significantly reduce costs and latency for
15
- * applications with repetitive prompts, long system messages, or extensive conversation histories.
28
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
29
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
30
+ * prompts, long system messages, or extensive conversation histories.
16
31
  *
17
32
  * ## How It Works
18
33
  *
@@ -31,6 +46,7 @@ const contextSchema = z.object({
31
46
  * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
32
47
  * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
33
48
  * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
49
+ * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `"warn"`)
34
50
  *
35
51
  * @returns A middleware instance that can be passed to `createAgent`
36
52
  *
@@ -44,7 +60,7 @@ const contextSchema = z.object({
44
60
  *
45
61
  * const agent = createAgent({
46
62
  * model: "anthropic:claude-3-5-sonnet",
47
- * middlewares: [
63
+ * middleware: [
48
64
  * anthropicPromptCachingMiddleware()
49
65
  * ]
50
66
  * });
@@ -60,8 +76,8 @@ const contextSchema = z.object({
60
76
  *
61
77
  * const agent = createAgent({
62
78
  * model: "anthropic:claude-3-5-sonnet",
63
- * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
64
- * middlewares: [cachingMiddleware]
79
+ * systemPrompt: "You are a helpful assistant with deep knowledge of...", // Long system prompt
80
+ * middleware: [cachingMiddleware]
65
81
  * });
66
82
  * ```
67
83
  *
@@ -70,7 +86,7 @@ const contextSchema = z.object({
70
86
  * ```typescript
71
87
  * const agent = createAgent({
72
88
  * model: "anthropic:claude-3-5-sonnet",
73
- * middlewares: [
89
+ * middleware: [
74
90
  * anthropicPromptCachingMiddleware({
75
91
  * enableCaching: true,
76
92
  * ttl: "5m"
@@ -94,7 +110,7 @@ const contextSchema = z.object({
94
110
  * ```typescript
95
111
  * const supportAgent = createAgent({
96
112
  * model: "anthropic:claude-3-5-sonnet",
97
- * systemMessage: `You are a customer support agent for ACME Corp.
113
+ * systemPrompt: `You are a customer support agent for ACME Corp.
98
114
  *
99
115
  * Company policies:
100
116
  * - Always be polite and professional
@@ -103,7 +119,7 @@ const contextSchema = z.object({
103
119
  * ... (extensive policies and guidelines)
104
120
  * `,
105
121
  * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
106
- * middlewares: [
122
+ * middleware: [
107
123
  * anthropicPromptCachingMiddleware({
108
124
  * ttl: "1h", // Long TTL for stable system prompt
109
125
  * minMessagesToCache: 1 // Cache immediately due to large system prompt
@@ -128,21 +144,50 @@ function anthropicPromptCachingMiddleware(middlewareOptions) {
128
144
  return createMiddleware({
129
145
  name: "PromptCachingMiddleware",
130
146
  contextSchema,
131
- prepareModelRequest: (options, state, runtime) => {
132
- const enableCaching = runtime.context.enableCaching ?? middlewareOptions?.enableCaching;
133
- const ttl = runtime.context.ttl ?? middlewareOptions?.ttl;
134
- const minMessagesToCache = runtime.context.minMessagesToCache ?? middlewareOptions?.minMessagesToCache;
135
- if (!enableCaching) return void 0;
136
- if (options.model?.getName() !== "anthropic") throw new Error("Prompt caching is only supported for Anthropic models");
137
- const messagesCount = state.messages.length + (options.systemMessage ? 1 : 0);
147
+ modifyModelRequest: (options, state, runtime) => {
148
+ /**
149
+ * If the runtime values match the schema default values, use the middleware option
150
+ * values otherwise use the runtime values. This allows to apply general configurations
151
+ * for all invocations, and override them for specific invocations.
152
+ */
153
+ const enableCaching = runtime.context.enableCaching === DEFAULT_ENABLE_CACHING ? middlewareOptions?.enableCaching ?? runtime.context.enableCaching : runtime.context.enableCaching ?? middlewareOptions?.enableCaching;
154
+ const ttl = runtime.context.ttl === DEFAULT_TTL ? middlewareOptions?.ttl ?? runtime.context.ttl : runtime.context.ttl ?? middlewareOptions?.ttl;
155
+ const minMessagesToCache = runtime.context.minMessagesToCache === DEFAULT_MIN_MESSAGES_TO_CACHE ? middlewareOptions?.minMessagesToCache ?? runtime.context.minMessagesToCache : runtime.context.minMessagesToCache ?? middlewareOptions?.minMessagesToCache ?? DEFAULT_MIN_MESSAGES_TO_CACHE;
156
+ const unsupportedModelBehavior = runtime.context.unsupportedModelBehavior === DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR ? middlewareOptions?.unsupportedModelBehavior ?? runtime.context.unsupportedModelBehavior : runtime.context.unsupportedModelBehavior ?? middlewareOptions?.unsupportedModelBehavior;
157
+ if (!enableCaching || !options.model) return void 0;
158
+ const isAnthropicModel = options.model.getName() === "ChatAnthropic" || options.model.getName() === "ConfigurableModel" && options.model._defaultConfig?.modelProvider === "anthropic";
159
+ if (!isAnthropicModel) {
160
+ const modelName = options.model.getName();
161
+ const modelInfo = options.model.getName() === "ConfigurableModel" ? `${modelName} (${options.model._defaultConfig?.modelProvider})` : modelName;
162
+ const baseMessage = `Unsupported model '${modelInfo}'. Prompt caching requires an Anthropic model`;
163
+ if (unsupportedModelBehavior === "raise") throw new PromptCachingMiddlewareError(`${baseMessage} (e.g., 'anthropic:claude-4-0-sonnet').`);
164
+ else if (unsupportedModelBehavior === "warn") console.warn(`PromptCachingMiddleware: Skipping caching for ${modelName}. Consider switching to an Anthropic model for caching benefits.`);
165
+ return void 0;
166
+ }
167
+ const messagesCount = state.messages.length + (options.systemPrompt ? 1 : 0);
138
168
  if (messagesCount < minMessagesToCache) return options;
139
- return {
140
- ...options,
141
- modelSettings: { cache_control: {
169
+ /**
170
+ * Add cache_control to the last message
171
+ */
172
+ const lastMessage = options.messages.at(-1);
173
+ if (!lastMessage) return options;
174
+ if (Array.isArray(lastMessage.content)) lastMessage.content = [...lastMessage.content.slice(0, -1), {
175
+ ...lastMessage.content.at(-1),
176
+ cache_control: {
142
177
  type: "ephemeral",
143
178
  ttl
144
- } }
145
- };
179
+ }
180
+ }];
181
+ else if (typeof lastMessage.content === "string") lastMessage.content = [{
182
+ type: "text",
183
+ text: lastMessage.content,
184
+ cache_control: {
185
+ type: "ephemeral",
186
+ ttl
187
+ }
188
+ }];
189
+ else throw new PromptCachingMiddlewareError("Last message content is not a string or array");
190
+ return options;
146
191
  }
147
192
  });
148
193
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.js","names":["message: string","middlewareOptions?: PromptCachingMiddlewareConfig"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { ContentBlock } from \"@langchain/core/messages\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\n\nimport { ConfigurableModel } from \"../../../chat_models/universal.js\";\nimport { createMiddleware } from \"../middleware.js\";\n\nconst DEFAULT_ENABLE_CACHING = true;\nconst DEFAULT_TTL = \"5m\";\nconst DEFAULT_MIN_MESSAGES_TO_CACHE = 3;\nconst DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR = \"warn\";\n\nconst contextSchema = z.object({\n /**\n * Whether to enable prompt caching.\n * @default true\n */\n enableCaching: z.boolean().default(DEFAULT_ENABLE_CACHING),\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.enum([\"5m\", \"1h\"]).default(DEFAULT_TTL),\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.number().default(DEFAULT_MIN_MESSAGES_TO_CACHE),\n /**\n * The behavior to take when an unsupported model is used.\n * - \"ignore\" will ignore the unsupported model and continue without caching.\n * - \"warn\" will warn the user and continue without caching.\n * - \"raise\" will raise an error and stop the agent.\n * @default \"warn\"\n */\n unsupportedModelBehavior: z\n .enum([\"ignore\", \"warn\", \"raise\"])\n .default(DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR),\n});\nexport type PromptCachingMiddlewareConfig = Partial<\n InferInteropZodInput<typeof contextSchema>\n>;\n\nclass PromptCachingMiddlewareError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PromptCachingMiddlewareError\";\n }\n}\n\n/**\n * Creates a prompt caching middleware for Anthropic models to optimize API usage.\n *\n * This middleware automatically adds cache control headers to the last messages when using Anthropic models,\n * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive\n * prompts, long system messages, or extensive conversation histories.\n *\n * ## How It Works\n *\n * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's\n * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the\n * cached representations are reused, skipping redundant token processing.\n *\n * ## Benefits\n *\n * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)\n * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed\n * - **Better Scalability**: Reduced computational load enables handling more requests\n * - **Consistent Performance**: Stable response times for repetitive queries\n *\n * @param middlewareOptions - Configuration options for the caching behavior\n * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)\n * @param middlewareOptions.ttl - Cache time-to-live: `\"5m\"` for 5 minutes or `\"1h\"` for 1 hour (default: `\"5m\"`)\n * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)\n * @param middlewareOptions.unsupportedModelBehavior - The behavior to take when an unsupported model is used (default: `\"warn\"`)\n *\n * @returns A middleware instance that can be passed to `createAgent`\n *\n * @throws {Error} If used with non-Anthropic models\n *\n * @example\n * Basic usage with default settings\n * ```typescript\n * import { createAgent } from \"langchain\";\n * import { anthropicPromptCachingMiddleware } from \"langchain/middleware\";\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware()\n * ]\n * });\n * ```\n *\n * @example\n * Custom configuration for longer conversations\n * ```typescript\n * const cachingMiddleware = anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Cache for 1 hour instead of default 5 minutes\n * minMessagesToCache: 5 // Only cache after 5 messages\n * });\n *\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: \"You are a helpful assistant with deep knowledge of...\", // Long system prompt\n * middleware: [cachingMiddleware]\n * });\n * ```\n *\n * @example\n * Conditional caching based on runtime context\n * ```typescript\n * const agent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * enableCaching: true,\n * ttl: \"5m\"\n * })\n * ]\n * });\n *\n * // Disable caching for specific requests\n * await agent.invoke(\n * { messages: [new HumanMessage(\"Process this without caching\")] },\n * {\n * configurable: {\n * middleware_context: { enableCaching: false }\n * }\n * }\n * );\n * ```\n *\n * @example\n * Optimal setup for customer support chatbot\n * ```typescript\n * const supportAgent = createAgent({\n * model: \"anthropic:claude-3-5-sonnet\",\n * systemPrompt: `You are a customer support agent for ACME Corp.\n *\n * Company policies:\n * - Always be polite and professional\n * - Refer to knowledge base for product information\n * - Escalate billing issues to human agents\n * ... (extensive policies and guidelines)\n * `,\n * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],\n * middleware: [\n * anthropicPromptCachingMiddleware({\n * ttl: \"1h\", // Long TTL for stable system prompt\n * minMessagesToCache: 1 // Cache immediately due to large system prompt\n * })\n * ]\n * });\n * ```\n *\n * @remarks\n * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers\n * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`\n * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys\n * - **TTL Options**: Only supports \"5m\" (5 minutes) and \"1h\" (1 hour) as TTL values per Anthropic's API\n * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications\n * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base\n *\n * @see {@link createAgent} for agent creation\n * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation\n * @public\n */\nexport function anthropicPromptCachingMiddleware(\n middlewareOptions?: PromptCachingMiddlewareConfig\n) {\n return createMiddleware({\n name: \"PromptCachingMiddleware\",\n contextSchema,\n modifyModelRequest: (options, state, runtime) => {\n /**\n * If the runtime values match the schema default values, use the middleware option\n * values otherwise use the runtime values. This allows to apply general configurations\n * for all invocations, and override them for specific invocations.\n */\n const enableCaching =\n runtime.context.enableCaching === DEFAULT_ENABLE_CACHING\n ? middlewareOptions?.enableCaching ?? runtime.context.enableCaching\n : runtime.context.enableCaching ?? middlewareOptions?.enableCaching;\n const ttl =\n runtime.context.ttl === DEFAULT_TTL\n ? middlewareOptions?.ttl ?? runtime.context.ttl\n : runtime.context.ttl ?? middlewareOptions?.ttl;\n const minMessagesToCache =\n runtime.context.minMessagesToCache === DEFAULT_MIN_MESSAGES_TO_CACHE\n ? middlewareOptions?.minMessagesToCache ??\n runtime.context.minMessagesToCache\n : runtime.context.minMessagesToCache ??\n middlewareOptions?.minMessagesToCache ??\n DEFAULT_MIN_MESSAGES_TO_CACHE;\n const unsupportedModelBehavior =\n runtime.context.unsupportedModelBehavior ===\n DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR\n ? middlewareOptions?.unsupportedModelBehavior ??\n runtime.context.unsupportedModelBehavior\n : runtime.context.unsupportedModelBehavior ??\n middlewareOptions?.unsupportedModelBehavior;\n\n // Skip if caching is disabled\n if (!enableCaching || !options.model) {\n return undefined;\n }\n\n const isAnthropicModel =\n options.model.getName() === \"ChatAnthropic\" ||\n (options.model.getName() === \"ConfigurableModel\" &&\n (options.model as ConfigurableModel)._defaultConfig?.modelProvider ===\n \"anthropic\");\n if (!isAnthropicModel) {\n // Get model name for better error context\n const modelName = options.model.getName();\n const modelInfo =\n options.model.getName() === \"ConfigurableModel\"\n ? `${modelName} (${\n (options.model as ConfigurableModel)._defaultConfig\n ?.modelProvider\n })`\n : modelName;\n\n const baseMessage = `Unsupported model '${modelInfo}'. Prompt caching requires an Anthropic model`;\n\n if (unsupportedModelBehavior === \"raise\") {\n throw new PromptCachingMiddlewareError(\n `${baseMessage} (e.g., 'anthropic:claude-4-0-sonnet').`\n );\n } else if (unsupportedModelBehavior === \"warn\") {\n console.warn(\n `PromptCachingMiddleware: Skipping caching for ${modelName}. Consider switching to an Anthropic model for caching benefits.`\n );\n }\n return undefined;\n }\n\n const messagesCount =\n state.messages.length + (options.systemPrompt ? 1 : 0);\n\n if (messagesCount < minMessagesToCache) {\n return options;\n }\n\n /**\n * Add cache_control to the last message\n */\n const lastMessage = options.messages.at(-1);\n if (!lastMessage) {\n return options;\n }\n\n if (Array.isArray(lastMessage.content)) {\n lastMessage.content = [\n ...lastMessage.content.slice(0, -1),\n {\n ...lastMessage.content.at(-1),\n cache_control: {\n type: \"ephemeral\",\n ttl,\n },\n } as ContentBlock,\n ];\n } else if (typeof lastMessage.content === \"string\") {\n lastMessage.content = [\n {\n type: \"text\",\n text: lastMessage.content,\n cache_control: {\n type: \"ephemeral\",\n ttl,\n },\n },\n ];\n } else {\n throw new PromptCachingMiddlewareError(\n \"Last message content is not a string or array\"\n );\n }\n\n return options;\n },\n });\n}\n"],"mappings":";;;;AAOA,MAAM,yBAAyB;AAC/B,MAAM,cAAc;AACpB,MAAM,gCAAgC;AACtC,MAAM,qCAAqC;AAE3C,MAAM,gBAAgB,EAAE,OAAO;CAK7B,eAAe,EAAE,SAAS,CAAC,QAAQ,uBAAuB;CAK1D,KAAK,EAAE,KAAK,CAAC,MAAM,IAAK,EAAC,CAAC,QAAQ,YAAY;CAK9C,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,8BAA8B;CAQrE,0BAA0B,EACvB,KAAK;EAAC;EAAU;EAAQ;CAAQ,EAAC,CACjC,QAAQ,mCAAmC;AAC/C,EAAC;AAKF,IAAM,+BAAN,cAA2C,MAAM;CAC/C,YAAYA,SAAiB;EAC3B,MAAM,QAAQ;EACd,KAAK,OAAO;CACb;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHD,SAAgB,iCACdC,mBACA;AACA,QAAO,iBAAiB;EACtB,MAAM;EACN;EACA,oBAAoB,CAAC,SAAS,OAAO,YAAY;;;;;;GAM/C,MAAM,gBACJ,QAAQ,QAAQ,kBAAkB,yBAC9B,mBAAmB,iBAAiB,QAAQ,QAAQ,gBACpD,QAAQ,QAAQ,iBAAiB,mBAAmB;GAC1D,MAAM,MACJ,QAAQ,QAAQ,QAAQ,cACpB,mBAAmB,OAAO,QAAQ,QAAQ,MAC1C,QAAQ,QAAQ,OAAO,mBAAmB;GAChD,MAAM,qBACJ,QAAQ,QAAQ,uBAAuB,gCACnC,mBAAmB,sBACnB,QAAQ,QAAQ,qBAChB,QAAQ,QAAQ,sBAChB,mBAAmB,sBACnB;GACN,MAAM,2BACJ,QAAQ,QAAQ,6BAChB,qCACI,mBAAmB,4BACnB,QAAQ,QAAQ,2BAChB,QAAQ,QAAQ,4BAChB,mBAAmB;AAGzB,OAAI,CAAC,iBAAiB,CAAC,QAAQ,MAC7B,QAAO;GAGT,MAAM,mBACJ,QAAQ,MAAM,SAAS,KAAK,mBAC3B,QAAQ,MAAM,SAAS,KAAK,uBAC1B,QAAQ,MAA4B,gBAAgB,kBACnD;AACN,OAAI,CAAC,kBAAkB;IAErB,MAAM,YAAY,QAAQ,MAAM,SAAS;IACzC,MAAM,YACJ,QAAQ,MAAM,SAAS,KAAK,sBACxB,GAAG,UAAU,EAAE,EACZ,QAAQ,MAA4B,gBACjC,cACL,CAAC,CAAC,GACH;IAEN,MAAM,cAAc,CAAC,mBAAmB,EAAE,UAAU,6CAA6C,CAAC;AAElG,QAAI,6BAA6B,QAC/B,OAAM,IAAI,6BACR,GAAG,YAAY,uCAAuC,CAAC;aAEhD,6BAA6B,QACtC,QAAQ,KACN,CAAC,8CAA8C,EAAE,UAAU,gEAAgE,CAAC,CAC7H;AAEH,WAAO;GACR;GAED,MAAM,gBACJ,MAAM,SAAS,UAAU,QAAQ,eAAe,IAAI;AAEtD,OAAI,gBAAgB,mBAClB,QAAO;;;;GAMT,MAAM,cAAc,QAAQ,SAAS,GAAG,GAAG;AAC3C,OAAI,CAAC,YACH,QAAO;AAGT,OAAI,MAAM,QAAQ,YAAY,QAAQ,EACpC,YAAY,UAAU,CACpB,GAAG,YAAY,QAAQ,MAAM,GAAG,GAAG,EACnC;IACE,GAAG,YAAY,QAAQ,GAAG,GAAG;IAC7B,eAAe;KACb,MAAM;KACN;IACD;GACF,CACF;YACQ,OAAO,YAAY,YAAY,UACxC,YAAY,UAAU,CACpB;IACE,MAAM;IACN,MAAM,YAAY;IAClB,eAAe;KACb,MAAM;KACN;IACD;GACF,CACF;OAED,OAAM,IAAI,6BACR;AAIJ,UAAO;EACR;CACF,EAAC;AACH"}