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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/dist/agents/ReactAgent.cjs +5 -5
  2. package/dist/agents/ReactAgent.cjs.map +1 -1
  3. package/dist/agents/ReactAgent.d.cts +1 -3
  4. package/dist/agents/ReactAgent.d.cts.map +1 -1
  5. package/dist/agents/ReactAgent.d.ts +1 -3
  6. package/dist/agents/ReactAgent.d.ts.map +1 -1
  7. package/dist/agents/ReactAgent.js +6 -6
  8. package/dist/agents/ReactAgent.js.map +1 -1
  9. package/dist/agents/RunnableCallable.cjs +5 -0
  10. package/dist/agents/RunnableCallable.cjs.map +1 -1
  11. package/dist/agents/RunnableCallable.d.cts +2 -0
  12. package/dist/agents/RunnableCallable.d.cts.map +1 -1
  13. package/dist/agents/RunnableCallable.d.ts +2 -0
  14. package/dist/agents/RunnableCallable.d.ts.map +1 -1
  15. package/dist/agents/RunnableCallable.js +5 -0
  16. package/dist/agents/RunnableCallable.js.map +1 -1
  17. package/dist/agents/annotation.cjs.map +1 -1
  18. package/dist/agents/annotation.d.cts +5 -7
  19. package/dist/agents/annotation.d.cts.map +1 -1
  20. package/dist/agents/annotation.d.ts +4 -6
  21. package/dist/agents/annotation.d.ts.map +1 -1
  22. package/dist/agents/annotation.js.map +1 -1
  23. package/dist/agents/createAgent.cjs +10 -0
  24. package/dist/agents/createAgent.cjs.map +1 -0
  25. package/dist/agents/createAgent.js +10 -0
  26. package/dist/agents/createAgent.js.map +1 -0
  27. package/dist/agents/index.cjs +23 -4
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +84 -21
  30. package/dist/agents/index.d.cts.map +1 -1
  31. package/dist/agents/index.d.ts +84 -21
  32. package/dist/agents/index.d.ts.map +1 -1
  33. package/dist/agents/index.js +23 -4
  34. package/dist/agents/index.js.map +1 -1
  35. package/dist/agents/middlewareAgent/ReactAgent.cjs +255 -0
  36. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -0
  37. package/dist/agents/middlewareAgent/ReactAgent.d.cts +67 -0
  38. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -0
  39. package/dist/agents/middlewareAgent/ReactAgent.d.ts +67 -0
  40. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -0
  41. package/dist/agents/middlewareAgent/ReactAgent.js +254 -0
  42. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -0
  43. package/dist/agents/middlewareAgent/annotation.cjs +39 -0
  44. package/dist/agents/middlewareAgent/annotation.cjs.map +1 -0
  45. package/dist/agents/middlewareAgent/annotation.js +38 -0
  46. package/dist/agents/middlewareAgent/annotation.js.map +1 -0
  47. package/dist/agents/middlewareAgent/index.cjs +11 -0
  48. package/dist/agents/middlewareAgent/index.cjs.map +1 -0
  49. package/dist/agents/middlewareAgent/index.js +11 -0
  50. package/dist/agents/middlewareAgent/index.js.map +1 -0
  51. package/dist/agents/middlewareAgent/middleware/hitl.cjs +235 -0
  52. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -0
  53. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +199 -0
  54. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -0
  55. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +199 -0
  56. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -0
  57. package/dist/agents/middlewareAgent/middleware/hitl.js +234 -0
  58. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -0
  59. package/dist/agents/middlewareAgent/middleware/index.cjs +26 -0
  60. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -0
  61. package/dist/agents/middlewareAgent/middleware/index.d.cts +4 -0
  62. package/dist/agents/middlewareAgent/middleware/index.d.ts +4 -0
  63. package/dist/agents/middlewareAgent/middleware/index.js +17 -0
  64. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -0
  65. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs +182 -0
  66. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -0
  67. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts +152 -0
  68. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -0
  69. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts +152 -0
  70. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -0
  71. package/dist/agents/middlewareAgent/middleware/promptCaching.js +181 -0
  72. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -0
  73. package/dist/agents/middlewareAgent/middleware/summarization.cjs +262 -0
  74. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -0
  75. package/dist/agents/middlewareAgent/middleware/summarization.d.cts +89 -0
  76. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -0
  77. package/dist/agents/middlewareAgent/middleware/summarization.d.ts +89 -0
  78. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -0
  79. package/dist/agents/middlewareAgent/middleware/summarization.js +260 -0
  80. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -0
  81. package/dist/agents/middlewareAgent/middleware.cjs +47 -0
  82. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -0
  83. package/dist/agents/middlewareAgent/middleware.d.cts +46 -0
  84. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -0
  85. package/dist/agents/middlewareAgent/middleware.d.ts +46 -0
  86. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -0
  87. package/dist/agents/middlewareAgent/middleware.js +46 -0
  88. package/dist/agents/middlewareAgent/middleware.js.map +1 -0
  89. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +29 -0
  90. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -0
  91. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +29 -0
  92. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -0
  93. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +325 -0
  94. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -0
  95. package/dist/agents/middlewareAgent/nodes/AgentNode.js +324 -0
  96. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -0
  97. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +27 -0
  98. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -0
  99. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +27 -0
  100. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -0
  101. package/dist/agents/middlewareAgent/nodes/middleware.cjs +73 -0
  102. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -0
  103. package/dist/agents/middlewareAgent/nodes/middleware.js +73 -0
  104. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -0
  105. package/dist/agents/middlewareAgent/nodes/utils.cjs +74 -0
  106. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -0
  107. package/dist/agents/middlewareAgent/nodes/utils.js +70 -0
  108. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -0
  109. package/dist/agents/middlewareAgent/types.d.cts +380 -0
  110. package/dist/agents/middlewareAgent/types.d.cts.map +1 -0
  111. package/dist/agents/middlewareAgent/types.d.ts +380 -0
  112. package/dist/agents/middlewareAgent/types.d.ts.map +1 -0
  113. package/dist/agents/nodes/AgentNode.cjs +4 -4
  114. package/dist/agents/nodes/AgentNode.cjs.map +1 -1
  115. package/dist/agents/nodes/AgentNode.js +4 -4
  116. package/dist/agents/nodes/AgentNode.js.map +1 -1
  117. package/dist/agents/nodes/ToolNode.cjs +3 -3
  118. package/dist/agents/nodes/ToolNode.cjs.map +1 -1
  119. package/dist/agents/nodes/ToolNode.d.cts +4 -5
  120. package/dist/agents/nodes/ToolNode.d.cts.map +1 -1
  121. package/dist/agents/nodes/ToolNode.d.ts +1 -2
  122. package/dist/agents/nodes/ToolNode.d.ts.map +1 -1
  123. package/dist/agents/nodes/ToolNode.js +4 -4
  124. package/dist/agents/nodes/ToolNode.js.map +1 -1
  125. package/dist/agents/responses.cjs +1 -1
  126. package/dist/agents/responses.cjs.map +1 -1
  127. package/dist/agents/responses.d.cts.map +1 -1
  128. package/dist/agents/responses.d.ts.map +1 -1
  129. package/dist/agents/responses.js +1 -1
  130. package/dist/agents/responses.js.map +1 -1
  131. package/dist/agents/types.d.cts +5 -7
  132. package/dist/agents/types.d.cts.map +1 -1
  133. package/dist/agents/types.d.ts +1 -3
  134. package/dist/agents/types.d.ts.map +1 -1
  135. package/dist/agents/utils.cjs +6 -6
  136. package/dist/agents/utils.cjs.map +1 -1
  137. package/dist/agents/utils.js +7 -7
  138. package/dist/agents/utils.js.map +1 -1
  139. package/dist/agents/withAgentName.cjs.map +1 -1
  140. package/dist/agents/withAgentName.js.map +1 -1
  141. package/dist/chains/api/api_chain.d.cts +1 -1
  142. package/dist/chains/api/prompts.cjs.map +1 -1
  143. package/dist/chains/api/prompts.js.map +1 -1
  144. package/dist/chains/base.d.cts +1 -1
  145. package/dist/chains/combine_docs_chain.d.cts +1 -1
  146. package/dist/chains/combine_documents/stuff.d.cts +1 -1
  147. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +1 -1
  148. package/dist/chains/constitutional_ai/constitutional_chain.js.map +1 -1
  149. package/dist/chains/conversational_retrieval_chain.d.cts +1 -1
  150. package/dist/chains/graph_qa/cypher.d.cts +1 -1
  151. package/dist/chains/history_aware_retriever.d.cts +2 -2
  152. package/dist/chains/index.cjs +0 -3
  153. package/dist/chains/index.cjs.map +1 -1
  154. package/dist/chains/index.d.cts +1 -2
  155. package/dist/chains/index.d.ts +1 -2
  156. package/dist/chains/index.js +1 -3
  157. package/dist/chains/index.js.map +1 -1
  158. package/dist/chains/llm_chain.d.cts +3 -3
  159. package/dist/chains/openai_functions/base.d.cts +3 -3
  160. package/dist/chains/openai_functions/extraction.cjs.map +1 -1
  161. package/dist/chains/openai_functions/extraction.d.cts +1 -3
  162. package/dist/chains/openai_functions/extraction.d.cts.map +1 -1
  163. package/dist/chains/openai_functions/extraction.d.ts +1 -3
  164. package/dist/chains/openai_functions/extraction.d.ts.map +1 -1
  165. package/dist/chains/openai_functions/extraction.js.map +1 -1
  166. package/dist/chains/openai_functions/index.cjs +0 -5
  167. package/dist/chains/openai_functions/index.cjs.map +1 -1
  168. package/dist/chains/openai_functions/index.d.cts +1 -2
  169. package/dist/chains/openai_functions/index.d.ts +1 -2
  170. package/dist/chains/openai_functions/index.js +1 -4
  171. package/dist/chains/openai_functions/index.js.map +1 -1
  172. package/dist/chains/openai_functions/openapi.cjs +4 -4
  173. package/dist/chains/openai_functions/openapi.cjs.map +1 -1
  174. package/dist/chains/openai_functions/openapi.d.cts +2 -2
  175. package/dist/chains/openai_functions/openapi.js +4 -4
  176. package/dist/chains/openai_functions/openapi.js.map +1 -1
  177. package/dist/chains/openai_functions/tagging.cjs.map +1 -1
  178. package/dist/chains/openai_functions/tagging.d.cts +2 -4
  179. package/dist/chains/openai_functions/tagging.d.cts.map +1 -1
  180. package/dist/chains/openai_functions/tagging.d.ts +1 -3
  181. package/dist/chains/openai_functions/tagging.d.ts.map +1 -1
  182. package/dist/chains/openai_functions/tagging.js.map +1 -1
  183. package/dist/chains/query_constructor/index.cjs +4 -4
  184. package/dist/chains/query_constructor/index.cjs.map +1 -1
  185. package/dist/chains/query_constructor/index.d.cts +5 -3
  186. package/dist/chains/query_constructor/index.d.cts.map +1 -1
  187. package/dist/chains/query_constructor/index.d.ts +4 -2
  188. package/dist/chains/query_constructor/index.d.ts.map +1 -1
  189. package/dist/chains/query_constructor/index.js +1 -1
  190. package/dist/chains/query_constructor/index.js.map +1 -1
  191. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +1 -1
  192. package/dist/chains/question_answering/map_reduce_prompts.js.map +1 -1
  193. package/dist/chains/question_answering/refine_prompts.cjs.map +1 -1
  194. package/dist/chains/question_answering/refine_prompts.js.map +1 -1
  195. package/dist/chains/question_answering/stuff_prompts.cjs.map +1 -1
  196. package/dist/chains/question_answering/stuff_prompts.js.map +1 -1
  197. package/dist/chains/retrieval.d.cts +1 -1
  198. package/dist/chains/router/llm_router.d.cts +1 -1
  199. package/dist/chains/router/multi_prompt.cjs +4 -4
  200. package/dist/chains/router/multi_prompt.cjs.map +1 -1
  201. package/dist/chains/router/multi_prompt.js +1 -1
  202. package/dist/chains/router/multi_prompt.js.map +1 -1
  203. package/dist/chains/router/multi_retrieval_qa.cjs +4 -4
  204. package/dist/chains/router/multi_retrieval_qa.cjs.map +1 -1
  205. package/dist/chains/router/multi_retrieval_qa.js +1 -1
  206. package/dist/chains/router/multi_retrieval_qa.js.map +1 -1
  207. package/dist/chains/sql_db/sql_db_chain.d.cts +2 -2
  208. package/dist/chains/sql_db/sql_db_prompt.cjs.map +1 -1
  209. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +1 -1
  210. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +1 -1
  211. package/dist/chains/sql_db/sql_db_prompt.js.map +1 -1
  212. package/dist/chains/summarization/stuff_prompts.cjs.map +1 -1
  213. package/dist/chains/summarization/stuff_prompts.js.map +1 -1
  214. package/dist/chat_models/universal.cjs +8 -5
  215. package/dist/chat_models/universal.cjs.map +1 -1
  216. package/dist/chat_models/universal.d.cts +4 -4
  217. package/dist/chat_models/universal.d.cts.map +1 -1
  218. package/dist/chat_models/universal.d.ts +2 -2
  219. package/dist/chat_models/universal.d.ts.map +1 -1
  220. package/dist/chat_models/universal.js +8 -5
  221. package/dist/chat_models/universal.js.map +1 -1
  222. package/dist/document_loaders/fs/directory.cjs.map +1 -1
  223. package/dist/document_loaders/fs/directory.d.cts +0 -1
  224. package/dist/document_loaders/fs/directory.d.cts.map +1 -1
  225. package/dist/document_loaders/fs/directory.d.ts +0 -1
  226. package/dist/document_loaders/fs/directory.d.ts.map +1 -1
  227. package/dist/document_loaders/fs/directory.js.map +1 -1
  228. package/dist/document_loaders/fs/json.cjs +7 -1
  229. package/dist/document_loaders/fs/json.cjs.map +1 -1
  230. package/dist/document_loaders/fs/json.js +7 -1
  231. package/dist/document_loaders/fs/json.js.map +1 -1
  232. package/dist/embeddings/cache_backed.cjs +1 -1
  233. package/dist/embeddings/cache_backed.cjs.map +1 -1
  234. package/dist/embeddings/cache_backed.d.cts +1 -1
  235. package/dist/embeddings/cache_backed.d.ts +1 -1
  236. package/dist/embeddings/cache_backed.js +2 -2
  237. package/dist/embeddings/cache_backed.js.map +1 -1
  238. package/dist/evaluation/agents/trajectory.d.cts +3 -3
  239. package/dist/evaluation/agents/trajectory.d.cts.map +1 -1
  240. package/dist/evaluation/agents/trajectory.d.ts.map +1 -1
  241. package/dist/evaluation/comparison/pairwise.d.cts +1 -1
  242. package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
  243. package/dist/evaluation/criteria/criteria.d.cts +1 -1
  244. package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
  245. package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
  246. package/dist/evaluation/embedding_distance/base.cjs +2 -4
  247. package/dist/evaluation/embedding_distance/base.cjs.map +1 -1
  248. package/dist/evaluation/embedding_distance/base.js +2 -3
  249. package/dist/evaluation/embedding_distance/base.js.map +1 -1
  250. package/dist/evaluation/loader.cjs +7 -12
  251. package/dist/evaluation/loader.cjs.map +1 -1
  252. package/dist/evaluation/loader.d.cts +8 -2
  253. package/dist/evaluation/loader.d.cts.map +1 -1
  254. package/dist/evaluation/loader.d.ts +8 -2
  255. package/dist/evaluation/loader.d.ts.map +1 -1
  256. package/dist/evaluation/loader.js +7 -12
  257. package/dist/evaluation/loader.js.map +1 -1
  258. package/dist/evaluation/qa/eval_chain.d.cts +1 -1
  259. package/dist/hub/base.cjs.map +1 -1
  260. package/dist/hub/base.js.map +1 -1
  261. package/dist/index.cjs +3 -0
  262. package/dist/index.cjs.map +1 -1
  263. package/dist/index.d.cts +5 -4
  264. package/dist/index.d.ts +3 -2
  265. package/dist/index.js +3 -1
  266. package/dist/index.js.map +1 -1
  267. package/dist/langchain-core/dist/load/serializable.d.cts.map +1 -1
  268. package/dist/langchain-core/dist/messages/base.d.cts +24 -33
  269. package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
  270. package/dist/langchain-core/dist/messages/content/index.d.cts +1 -1
  271. package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
  272. package/dist/langchain-core/dist/messages/message.d.cts +598 -0
  273. package/dist/langchain-core/dist/messages/message.d.cts.map +1 -0
  274. package/dist/langchain-core/dist/messages/metadata.d.cts +97 -0
  275. package/dist/langchain-core/dist/messages/metadata.d.cts.map +1 -0
  276. package/dist/langchain-core/dist/messages/utils.d.cts +75 -0
  277. package/dist/langchain-core/dist/messages/utils.d.cts.map +1 -0
  278. package/dist/langchain-core/dist/prompt_values.d.cts.map +1 -1
  279. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +1 -1
  280. package/dist/libs/langchain-core/dist/messages/base.d.ts +24 -33
  281. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
  282. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +1 -1
  283. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
  284. package/dist/libs/langchain-core/dist/messages/message.d.ts +598 -0
  285. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -0
  286. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +97 -0
  287. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +1 -0
  288. package/dist/libs/langchain-core/dist/messages/utils.d.ts +75 -0
  289. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +1 -0
  290. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +1 -1
  291. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +2 -0
  292. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
  293. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +1 -0
  294. package/dist/load/import_map.cjs +2 -13
  295. package/dist/load/import_map.cjs.map +1 -1
  296. package/dist/load/import_map.js +2 -13
  297. package/dist/load/import_map.js.map +1 -1
  298. package/dist/memory/prompt.cjs.map +1 -1
  299. package/dist/memory/prompt.d.cts.map +1 -1
  300. package/dist/memory/prompt.d.ts.map +1 -1
  301. package/dist/memory/prompt.js.map +1 -1
  302. package/dist/memory/summary.d.cts +1 -1
  303. package/dist/output_parsers/combining.cjs +1 -1
  304. package/dist/output_parsers/combining.cjs.map +1 -1
  305. package/dist/output_parsers/combining.js +1 -1
  306. package/dist/output_parsers/combining.js.map +1 -1
  307. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +1 -1
  308. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +1 -1
  309. package/dist/output_parsers/expression_type_handlers/base.cjs +1 -1
  310. package/dist/output_parsers/expression_type_handlers/base.cjs.map +1 -1
  311. package/dist/output_parsers/expression_type_handlers/base.js +1 -1
  312. package/dist/output_parsers/expression_type_handlers/base.js.map +1 -1
  313. package/dist/output_parsers/fix.d.cts +1 -1
  314. package/dist/output_parsers/http_response.d.cts +1 -1
  315. package/dist/output_parsers/regex.cjs.map +1 -1
  316. package/dist/output_parsers/regex.js.map +1 -1
  317. package/dist/output_parsers/structured.cjs +4 -4
  318. package/dist/output_parsers/structured.cjs.map +1 -1
  319. package/dist/output_parsers/structured.d.cts +2 -2
  320. package/dist/output_parsers/structured.d.cts.map +1 -1
  321. package/dist/output_parsers/structured.d.ts +1 -1
  322. package/dist/output_parsers/structured.d.ts.map +1 -1
  323. package/dist/output_parsers/structured.js +2 -2
  324. package/dist/output_parsers/structured.js.map +1 -1
  325. package/dist/retrievers/ensemble.cjs.map +1 -1
  326. package/dist/retrievers/ensemble.js.map +1 -1
  327. package/dist/storage/file_system.cjs +1 -1
  328. package/dist/storage/file_system.cjs.map +1 -1
  329. package/dist/storage/file_system.js +1 -1
  330. package/dist/storage/file_system.js.map +1 -1
  331. package/dist/tools/fs.cjs +5 -5
  332. package/dist/tools/fs.cjs.map +1 -1
  333. package/dist/tools/fs.d.cts +1 -1
  334. package/dist/tools/fs.d.cts.map +1 -1
  335. package/dist/tools/fs.d.ts +1 -1
  336. package/dist/tools/fs.d.ts.map +1 -1
  337. package/dist/tools/fs.js +1 -1
  338. package/dist/tools/fs.js.map +1 -1
  339. package/dist/tools/json.d.cts +1 -1
  340. package/dist/tools/retriever.cjs +2 -2
  341. package/dist/tools/retriever.cjs.map +1 -1
  342. package/dist/tools/retriever.d.cts +2 -2
  343. package/dist/tools/retriever.d.cts.map +1 -1
  344. package/dist/tools/retriever.d.ts +1 -1
  345. package/dist/tools/retriever.d.ts.map +1 -1
  346. package/dist/tools/retriever.js +1 -1
  347. package/dist/tools/retriever.js.map +1 -1
  348. package/dist/tools/sql.cjs +1 -2
  349. package/dist/tools/sql.cjs.map +1 -1
  350. package/dist/tools/sql.d.cts +1 -1
  351. package/dist/tools/sql.d.cts.map +1 -1
  352. package/dist/tools/sql.d.ts +1 -1
  353. package/dist/tools/sql.d.ts.map +1 -1
  354. package/dist/tools/sql.js +1 -2
  355. package/dist/tools/sql.js.map +1 -1
  356. package/dist/tools/vectorstore.d.cts +1 -1
  357. package/dist/tools/webbrowser.d.cts +1 -1
  358. package/dist/types/expression-parser.d.cts +2 -0
  359. package/dist/types/expression-parser.d.cts.map +1 -1
  360. package/dist/types/expression-parser.d.ts +2 -0
  361. package/dist/types/expression-parser.d.ts.map +1 -1
  362. package/dist/util/hub.cjs +1 -1
  363. package/dist/util/hub.js +1 -1
  364. package/dist/util/openapi.cjs +1 -1
  365. package/dist/util/openapi.cjs.map +1 -1
  366. package/dist/util/openapi.js +1 -1
  367. package/dist/util/openapi.js.map +1 -1
  368. package/package.json +21 -16
  369. package/dist/chains/openai_functions/structured_output.cjs +0 -107
  370. package/dist/chains/openai_functions/structured_output.cjs.map +0 -1
  371. package/dist/chains/openai_functions/structured_output.d.cts +0 -38
  372. package/dist/chains/openai_functions/structured_output.d.cts.map +0 -1
  373. package/dist/chains/openai_functions/structured_output.d.ts +0 -38
  374. package/dist/chains/openai_functions/structured_output.d.ts.map +0 -1
  375. package/dist/chains/openai_functions/structured_output.js +0 -105
  376. package/dist/chains/openai_functions/structured_output.js.map +0 -1
  377. package/dist/chains/openai_moderation.cjs +0 -107
  378. package/dist/chains/openai_moderation.cjs.map +0 -1
  379. package/dist/chains/openai_moderation.d.cts +0 -74
  380. package/dist/chains/openai_moderation.d.cts.map +0 -1
  381. package/dist/chains/openai_moderation.d.ts +0 -74
  382. package/dist/chains/openai_moderation.d.ts.map +0 -1
  383. package/dist/chains/openai_moderation.js +0 -106
  384. package/dist/chains/openai_moderation.js.map +0 -1
@@ -0,0 +1,152 @@
1
+ import { AgentMiddleware } from "../types.cjs";
2
+ import { z } from "zod/v3";
3
+
4
+ //#region src/agents/middlewareAgent/middleware/promptCaching.d.ts
5
+ declare const contextSchema: z.ZodObject<{
6
+ // Configuration options
7
+ enableCaching: z.ZodDefault<z.ZodBoolean>;
8
+ ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
9
+ minMessagesToCache: z.ZodDefault<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ enableCaching: boolean;
12
+ ttl: "1h" | "5m";
13
+ minMessagesToCache: number;
14
+ }, {
15
+ enableCaching?: boolean | undefined;
16
+ ttl?: "1h" | "5m" | undefined;
17
+ minMessagesToCache?: number | undefined;
18
+ }>;
19
+ /**
20
+ * Creates a prompt caching middleware for Anthropic models to optimize API usage.
21
+ *
22
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
23
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
24
+ * prompts, long system messages, or extensive conversation histories.
25
+ *
26
+ * ## How It Works
27
+ *
28
+ * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's
29
+ * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the
30
+ * cached representations are reused, skipping redundant token processing.
31
+ *
32
+ * ## Benefits
33
+ *
34
+ * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)
35
+ * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed
36
+ * - **Better Scalability**: Reduced computational load enables handling more requests
37
+ * - **Consistent Performance**: Stable response times for repetitive queries
38
+ *
39
+ * @param middlewareOptions - Configuration options for the caching behavior
40
+ * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
41
+ * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
42
+ * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
43
+ *
44
+ * @returns A middleware instance that can be passed to `createAgent`
45
+ *
46
+ * @throws {Error} If used with non-Anthropic models
47
+ *
48
+ * @example
49
+ * Basic usage with default settings
50
+ * ```typescript
51
+ * import { createAgent } from "langchain";
52
+ * import { anthropicPromptCachingMiddleware } from "langchain/middleware";
53
+ *
54
+ * const agent = createAgent({
55
+ * model: "anthropic:claude-3-5-sonnet",
56
+ * middleware: [
57
+ * anthropicPromptCachingMiddleware()
58
+ * ]
59
+ * });
60
+ * ```
61
+ *
62
+ * @example
63
+ * Custom configuration for longer conversations
64
+ * ```typescript
65
+ * const cachingMiddleware = anthropicPromptCachingMiddleware({
66
+ * ttl: "1h", // Cache for 1 hour instead of default 5 minutes
67
+ * minMessagesToCache: 5 // Only cache after 5 messages
68
+ * });
69
+ *
70
+ * const agent = createAgent({
71
+ * model: "anthropic:claude-3-5-sonnet",
72
+ * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
73
+ * middleware: [cachingMiddleware]
74
+ * });
75
+ * ```
76
+ *
77
+ * @example
78
+ * Conditional caching based on runtime context
79
+ * ```typescript
80
+ * const agent = createAgent({
81
+ * model: "anthropic:claude-3-5-sonnet",
82
+ * middleware: [
83
+ * anthropicPromptCachingMiddleware({
84
+ * enableCaching: true,
85
+ * ttl: "5m"
86
+ * })
87
+ * ]
88
+ * });
89
+ *
90
+ * // Disable caching for specific requests
91
+ * await agent.invoke(
92
+ * { messages: [new HumanMessage("Process this without caching")] },
93
+ * {
94
+ * configurable: {
95
+ * middleware_context: { enableCaching: false }
96
+ * }
97
+ * }
98
+ * );
99
+ * ```
100
+ *
101
+ * @example
102
+ * Optimal setup for customer support chatbot
103
+ * ```typescript
104
+ * const supportAgent = createAgent({
105
+ * model: "anthropic:claude-3-5-sonnet",
106
+ * systemMessage: `You are a customer support agent for ACME Corp.
107
+ *
108
+ * Company policies:
109
+ * - Always be polite and professional
110
+ * - Refer to knowledge base for product information
111
+ * - Escalate billing issues to human agents
112
+ * ... (extensive policies and guidelines)
113
+ * `,
114
+ * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
115
+ * middleware: [
116
+ * anthropicPromptCachingMiddleware({
117
+ * ttl: "1h", // Long TTL for stable system prompt
118
+ * minMessagesToCache: 1 // Cache immediately due to large system prompt
119
+ * })
120
+ * ]
121
+ * });
122
+ * ```
123
+ *
124
+ * @remarks
125
+ * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers
126
+ * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`
127
+ * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys
128
+ * - **TTL Options**: Only supports "5m" (5 minutes) and "1h" (1 hour) as TTL values per Anthropic's API
129
+ * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications
130
+ * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base
131
+ *
132
+ * @see {@link createAgent} for agent creation
133
+ * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation
134
+ * @public
135
+ */
136
+ declare function anthropicPromptCachingMiddleware(middlewareOptions?: Partial<z.infer<typeof contextSchema>>): AgentMiddleware<undefined, z.ZodObject<{
137
+ // Configuration options
138
+ enableCaching: z.ZodDefault<z.ZodBoolean>;
139
+ ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
140
+ minMessagesToCache: z.ZodDefault<z.ZodNumber>;
141
+ }, "strip", z.ZodTypeAny, {
142
+ enableCaching: boolean;
143
+ ttl: "1h" | "5m";
144
+ minMessagesToCache: number;
145
+ }, {
146
+ enableCaching?: boolean | undefined;
147
+ ttl?: "1h" | "5m" | undefined;
148
+ minMessagesToCache?: number | undefined;
149
+ }>, any>;
150
+ //#endregion
151
+ export { anthropicPromptCachingMiddleware };
152
+ //# sourceMappingURL=promptCaching.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.d.cts","names":["z","contextSchema","ZodBoolean","ZodDefault","ZodEnum","ZodNumber","ZodTypeAny","ZodObject","anthropicPromptCachingMiddleware","infer","Partial","___types_js0","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\ndeclare const contextSchema: z.ZodObject<{\n // Configuration options\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\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 *\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 * systemMessage: \"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 * systemMessage: `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?: Partial<z.infer<typeof contextSchema>>): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n // Configuration options\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n}>, any>;\nexport {};\n"],"mappings":";;;;cACcC,eAAeD,CAAAA,CAAEO;;iBAEZP,CAAAA,CAAEG,WAAWH,CAAAA,CAAEE;EAFpBD,GAAAA,EAGLD,CAAAA,CAAEG,UAUT,CAVoBH,CAAAA,CAAEI,OAUtB,CAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA;EAAA,kBAAA,EATsBJ,CAAAA,CAAEG,UASxB,CATmCH,CAAAA,CAAEK,SASrC,CAAA;CAAA,EAAA,OAXgCH,EAGtBF,CAAAA,CAAEM,UAHoBJ,EAAAA;EAAU,aAAvBC,EAAAA,OAAAA;EAAU,GACTH,EAAEI,IAAAA,GAAAA,IAAAA;EAAO,kBAApBD,EAAAA,MAAAA;CAAU,EAAA;EAC2B,aAAtBA,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;EAAU,GACxBH,CAAAA,EAAEM,IAAAA,GAAAA,IAAAA,GAAAA,SAAAA;EAAU,kBALOC,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;AAAS,CAAA,CAAA;AAmIxC;;;;;;;;;;;;;;AAA2J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnIC,gCAAAA,qBAAqDE,QAAQV,CAAAA,CAAES,aAAaR,kBAA8E,2BAAXD,CAAAA,CAAEO;;iBAEtJP,CAAAA,CAAEG,WAAWH,CAAAA,CAAEE;OACzBF,CAAAA,CAAEG,WAAWH,CAAAA,CAAEI;sBACAJ,CAAAA,CAAEG,WAAWH,CAAAA,CAAEK;YAC3BL,CAAAA,CAAEM"}
@@ -0,0 +1,152 @@
1
+ import { AgentMiddleware } from "../types.js";
2
+ import { z } from "zod/v3";
3
+
4
+ //#region src/agents/middlewareAgent/middleware/promptCaching.d.ts
5
+ declare const contextSchema: z.ZodObject<{
6
+ // Configuration options
7
+ enableCaching: z.ZodDefault<z.ZodBoolean>;
8
+ ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
9
+ minMessagesToCache: z.ZodDefault<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ enableCaching: boolean;
12
+ ttl: "1h" | "5m";
13
+ minMessagesToCache: number;
14
+ }, {
15
+ enableCaching?: boolean | undefined;
16
+ ttl?: "1h" | "5m" | undefined;
17
+ minMessagesToCache?: number | undefined;
18
+ }>;
19
+ /**
20
+ * Creates a prompt caching middleware for Anthropic models to optimize API usage.
21
+ *
22
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
23
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
24
+ * prompts, long system messages, or extensive conversation histories.
25
+ *
26
+ * ## How It Works
27
+ *
28
+ * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's
29
+ * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the
30
+ * cached representations are reused, skipping redundant token processing.
31
+ *
32
+ * ## Benefits
33
+ *
34
+ * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)
35
+ * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed
36
+ * - **Better Scalability**: Reduced computational load enables handling more requests
37
+ * - **Consistent Performance**: Stable response times for repetitive queries
38
+ *
39
+ * @param middlewareOptions - Configuration options for the caching behavior
40
+ * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
41
+ * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
42
+ * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
43
+ *
44
+ * @returns A middleware instance that can be passed to `createAgent`
45
+ *
46
+ * @throws {Error} If used with non-Anthropic models
47
+ *
48
+ * @example
49
+ * Basic usage with default settings
50
+ * ```typescript
51
+ * import { createAgent } from "langchain";
52
+ * import { anthropicPromptCachingMiddleware } from "langchain/middleware";
53
+ *
54
+ * const agent = createAgent({
55
+ * model: "anthropic:claude-3-5-sonnet",
56
+ * middleware: [
57
+ * anthropicPromptCachingMiddleware()
58
+ * ]
59
+ * });
60
+ * ```
61
+ *
62
+ * @example
63
+ * Custom configuration for longer conversations
64
+ * ```typescript
65
+ * const cachingMiddleware = anthropicPromptCachingMiddleware({
66
+ * ttl: "1h", // Cache for 1 hour instead of default 5 minutes
67
+ * minMessagesToCache: 5 // Only cache after 5 messages
68
+ * });
69
+ *
70
+ * const agent = createAgent({
71
+ * model: "anthropic:claude-3-5-sonnet",
72
+ * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
73
+ * middleware: [cachingMiddleware]
74
+ * });
75
+ * ```
76
+ *
77
+ * @example
78
+ * Conditional caching based on runtime context
79
+ * ```typescript
80
+ * const agent = createAgent({
81
+ * model: "anthropic:claude-3-5-sonnet",
82
+ * middleware: [
83
+ * anthropicPromptCachingMiddleware({
84
+ * enableCaching: true,
85
+ * ttl: "5m"
86
+ * })
87
+ * ]
88
+ * });
89
+ *
90
+ * // Disable caching for specific requests
91
+ * await agent.invoke(
92
+ * { messages: [new HumanMessage("Process this without caching")] },
93
+ * {
94
+ * configurable: {
95
+ * middleware_context: { enableCaching: false }
96
+ * }
97
+ * }
98
+ * );
99
+ * ```
100
+ *
101
+ * @example
102
+ * Optimal setup for customer support chatbot
103
+ * ```typescript
104
+ * const supportAgent = createAgent({
105
+ * model: "anthropic:claude-3-5-sonnet",
106
+ * systemMessage: `You are a customer support agent for ACME Corp.
107
+ *
108
+ * Company policies:
109
+ * - Always be polite and professional
110
+ * - Refer to knowledge base for product information
111
+ * - Escalate billing issues to human agents
112
+ * ... (extensive policies and guidelines)
113
+ * `,
114
+ * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
115
+ * middleware: [
116
+ * anthropicPromptCachingMiddleware({
117
+ * ttl: "1h", // Long TTL for stable system prompt
118
+ * minMessagesToCache: 1 // Cache immediately due to large system prompt
119
+ * })
120
+ * ]
121
+ * });
122
+ * ```
123
+ *
124
+ * @remarks
125
+ * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers
126
+ * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`
127
+ * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys
128
+ * - **TTL Options**: Only supports "5m" (5 minutes) and "1h" (1 hour) as TTL values per Anthropic's API
129
+ * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications
130
+ * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base
131
+ *
132
+ * @see {@link createAgent} for agent creation
133
+ * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation
134
+ * @public
135
+ */
136
+ declare function anthropicPromptCachingMiddleware(middlewareOptions?: Partial<z.infer<typeof contextSchema>>): AgentMiddleware<undefined, z.ZodObject<{
137
+ // Configuration options
138
+ enableCaching: z.ZodDefault<z.ZodBoolean>;
139
+ ttl: z.ZodDefault<z.ZodEnum<["5m", "1h"]>>;
140
+ minMessagesToCache: z.ZodDefault<z.ZodNumber>;
141
+ }, "strip", z.ZodTypeAny, {
142
+ enableCaching: boolean;
143
+ ttl: "1h" | "5m";
144
+ minMessagesToCache: number;
145
+ }, {
146
+ enableCaching?: boolean | undefined;
147
+ ttl?: "1h" | "5m" | undefined;
148
+ minMessagesToCache?: number | undefined;
149
+ }>, any>;
150
+ //#endregion
151
+ export { anthropicPromptCachingMiddleware };
152
+ //# sourceMappingURL=promptCaching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.d.ts","names":["z","contextSchema","ZodBoolean","ZodDefault","ZodEnum","ZodNumber","ZodTypeAny","ZodObject","anthropicPromptCachingMiddleware","infer","Partial","___types_js0","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\ndeclare const contextSchema: z.ZodObject<{\n // Configuration options\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\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 *\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 * systemMessage: \"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 * systemMessage: `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?: Partial<z.infer<typeof contextSchema>>): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n // Configuration options\n enableCaching: z.ZodDefault<z.ZodBoolean>;\n ttl: z.ZodDefault<z.ZodEnum<[\"5m\", \"1h\"]>>;\n minMessagesToCache: z.ZodDefault<z.ZodNumber>;\n}, \"strip\", z.ZodTypeAny, {\n enableCaching: boolean;\n ttl: \"1h\" | \"5m\";\n minMessagesToCache: number;\n}, {\n enableCaching?: boolean | undefined;\n ttl?: \"1h\" | \"5m\" | undefined;\n minMessagesToCache?: number | undefined;\n}>, any>;\nexport {};\n"],"mappings":";;;;cACcC,eAAeD,CAAAA,CAAEO;;iBAEZP,CAAAA,CAAEG,WAAWH,CAAAA,CAAEE;EAFpBD,GAAAA,EAGLD,CAAAA,CAAEG,UAUT,CAVoBH,CAAAA,CAAEI,OAUtB,CAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA;EAAA,kBAAA,EATsBJ,CAAAA,CAAEG,UASxB,CATmCH,CAAAA,CAAEK,SASrC,CAAA;CAAA,EAAA,OAXgCH,EAGtBF,CAAAA,CAAEM,UAHoBJ,EAAAA;EAAU,aAAvBC,EAAAA,OAAAA;EAAU,GACTH,EAAEI,IAAAA,GAAAA,IAAAA;EAAO,kBAApBD,EAAAA,MAAAA;CAAU,EAAA;EAC2B,aAAtBA,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;EAAU,GACxBH,CAAAA,EAAEM,IAAAA,GAAAA,IAAAA,GAAAA,SAAAA;EAAU,kBALOC,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;AAAS,CAAA,CAAA;AAmIxC;;;;;;;;;;;;;;AAA2J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAnIC,gCAAAA,qBAAqDE,QAAQV,CAAAA,CAAES,aAAaR,kBAA8E,2BAAXD,CAAAA,CAAEO;;iBAEtJP,CAAAA,CAAEG,WAAWH,CAAAA,CAAEE;OACzBF,CAAAA,CAAEG,WAAWH,CAAAA,CAAEI;sBACAJ,CAAAA,CAAEG,WAAWH,CAAAA,CAAEK;YAC3BL,CAAAA,CAAEM"}
@@ -0,0 +1,181 @@
1
+ import { createMiddleware } from "../middleware.js";
2
+ import { z } from "zod/v3";
3
+
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 contextSchema = z.object({
9
+ enableCaching: z.boolean().default(DEFAULT_ENABLE_CACHING),
10
+ ttl: z.enum(["5m", "1h"]).default(DEFAULT_TTL),
11
+ minMessagesToCache: z.number().default(DEFAULT_MIN_MESSAGES_TO_CACHE)
12
+ });
13
+ var PromptCachingMiddlewareError = class extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = "PromptCachingMiddlewareError";
17
+ }
18
+ };
19
+ /**
20
+ * Creates a prompt caching middleware for Anthropic models to optimize API usage.
21
+ *
22
+ * This middleware automatically adds cache control headers to the last messages when using Anthropic models,
23
+ * enabling their prompt caching feature. This can significantly reduce costs for applications with repetitive
24
+ * prompts, long system messages, or extensive conversation histories.
25
+ *
26
+ * ## How It Works
27
+ *
28
+ * The middleware intercepts model requests and adds cache control metadata that tells Anthropic's
29
+ * API to cache processed prompt prefixes. On subsequent requests with matching prefixes, the
30
+ * cached representations are reused, skipping redundant token processing.
31
+ *
32
+ * ## Benefits
33
+ *
34
+ * - **Cost Reduction**: Avoid reprocessing the same tokens repeatedly (up to 90% savings on cached portions)
35
+ * - **Lower Latency**: Cached prompts are processed faster as embeddings are pre-computed
36
+ * - **Better Scalability**: Reduced computational load enables handling more requests
37
+ * - **Consistent Performance**: Stable response times for repetitive queries
38
+ *
39
+ * @param middlewareOptions - Configuration options for the caching behavior
40
+ * @param middlewareOptions.enableCaching - Whether to enable prompt caching (default: `true`)
41
+ * @param middlewareOptions.ttl - Cache time-to-live: `"5m"` for 5 minutes or `"1h"` for 1 hour (default: `"5m"`)
42
+ * @param middlewareOptions.minMessagesToCache - Minimum number of messages required before caching is applied (default: `3`)
43
+ *
44
+ * @returns A middleware instance that can be passed to `createAgent`
45
+ *
46
+ * @throws {Error} If used with non-Anthropic models
47
+ *
48
+ * @example
49
+ * Basic usage with default settings
50
+ * ```typescript
51
+ * import { createAgent } from "langchain";
52
+ * import { anthropicPromptCachingMiddleware } from "langchain/middleware";
53
+ *
54
+ * const agent = createAgent({
55
+ * model: "anthropic:claude-3-5-sonnet",
56
+ * middleware: [
57
+ * anthropicPromptCachingMiddleware()
58
+ * ]
59
+ * });
60
+ * ```
61
+ *
62
+ * @example
63
+ * Custom configuration for longer conversations
64
+ * ```typescript
65
+ * const cachingMiddleware = anthropicPromptCachingMiddleware({
66
+ * ttl: "1h", // Cache for 1 hour instead of default 5 minutes
67
+ * minMessagesToCache: 5 // Only cache after 5 messages
68
+ * });
69
+ *
70
+ * const agent = createAgent({
71
+ * model: "anthropic:claude-3-5-sonnet",
72
+ * systemMessage: "You are a helpful assistant with deep knowledge of...", // Long system prompt
73
+ * middleware: [cachingMiddleware]
74
+ * });
75
+ * ```
76
+ *
77
+ * @example
78
+ * Conditional caching based on runtime context
79
+ * ```typescript
80
+ * const agent = createAgent({
81
+ * model: "anthropic:claude-3-5-sonnet",
82
+ * middleware: [
83
+ * anthropicPromptCachingMiddleware({
84
+ * enableCaching: true,
85
+ * ttl: "5m"
86
+ * })
87
+ * ]
88
+ * });
89
+ *
90
+ * // Disable caching for specific requests
91
+ * await agent.invoke(
92
+ * { messages: [new HumanMessage("Process this without caching")] },
93
+ * {
94
+ * configurable: {
95
+ * middleware_context: { enableCaching: false }
96
+ * }
97
+ * }
98
+ * );
99
+ * ```
100
+ *
101
+ * @example
102
+ * Optimal setup for customer support chatbot
103
+ * ```typescript
104
+ * const supportAgent = createAgent({
105
+ * model: "anthropic:claude-3-5-sonnet",
106
+ * systemMessage: `You are a customer support agent for ACME Corp.
107
+ *
108
+ * Company policies:
109
+ * - Always be polite and professional
110
+ * - Refer to knowledge base for product information
111
+ * - Escalate billing issues to human agents
112
+ * ... (extensive policies and guidelines)
113
+ * `,
114
+ * tools: [searchKnowledgeBase, createTicket, checkOrderStatus],
115
+ * middleware: [
116
+ * anthropicPromptCachingMiddleware({
117
+ * ttl: "1h", // Long TTL for stable system prompt
118
+ * minMessagesToCache: 1 // Cache immediately due to large system prompt
119
+ * })
120
+ * ]
121
+ * });
122
+ * ```
123
+ *
124
+ * @remarks
125
+ * - **Anthropic Only**: This middleware only works with Anthropic models and will throw an error if used with other providers
126
+ * - **Automatic Application**: Caching is applied automatically when message count exceeds `minMessagesToCache`
127
+ * - **Cache Scope**: Caches are isolated per API key and cannot be shared across different keys
128
+ * - **TTL Options**: Only supports "5m" (5 minutes) and "1h" (1 hour) as TTL values per Anthropic's API
129
+ * - **Best Use Cases**: Long system prompts, multi-turn conversations, repetitive queries, RAG applications
130
+ * - **Cost Impact**: Cached tokens are billed at 10% of the base input token price, cache writes are billed at 25% of the base
131
+ *
132
+ * @see {@link createAgent} for agent creation
133
+ * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching} Anthropic's prompt caching documentation
134
+ * @public
135
+ */
136
+ function anthropicPromptCachingMiddleware(middlewareOptions) {
137
+ return createMiddleware({
138
+ name: "PromptCachingMiddleware",
139
+ contextSchema,
140
+ prepareModelRequest: (options, state, runtime) => {
141
+ /**
142
+ * If the runtime values match the schema default values, use the middleware option
143
+ * values otherwise use the runtime values. This allows to apply general configurations
144
+ * for all invocations, and override them for specific invocations.
145
+ */
146
+ const enableCaching = runtime.context.enableCaching === DEFAULT_ENABLE_CACHING ? middlewareOptions?.enableCaching ?? runtime.context.enableCaching : runtime.context.enableCaching ?? middlewareOptions?.enableCaching;
147
+ const ttl = runtime.context.ttl === DEFAULT_TTL ? middlewareOptions?.ttl ?? runtime.context.ttl : runtime.context.ttl ?? middlewareOptions?.ttl;
148
+ const minMessagesToCache = runtime.context.minMessagesToCache === DEFAULT_MIN_MESSAGES_TO_CACHE ? middlewareOptions?.minMessagesToCache ?? runtime.context.minMessagesToCache : runtime.context.minMessagesToCache ?? middlewareOptions?.minMessagesToCache;
149
+ if (!enableCaching) return void 0;
150
+ if (options.model?.getName() !== "ChatAnthropic") throw new Error("Prompt caching is only supported for Anthropic models");
151
+ const messagesCount = state.messages.length + (options.systemMessage ? 1 : 0);
152
+ if (messagesCount < minMessagesToCache) return options;
153
+ /**
154
+ * Add cache_control to the last message
155
+ */
156
+ const lastMessage = options.messages.at(-1);
157
+ if (!lastMessage) return options;
158
+ if (Array.isArray(lastMessage.content)) lastMessage.content = [...lastMessage.content.slice(0, -1), {
159
+ ...lastMessage.content.at(-1),
160
+ cache_control: {
161
+ type: "ephemeral",
162
+ ttl
163
+ }
164
+ }];
165
+ else if (typeof lastMessage.content === "string") lastMessage.content = [{
166
+ type: "text",
167
+ text: lastMessage.content,
168
+ cache_control: {
169
+ type: "ephemeral",
170
+ ttl
171
+ }
172
+ }];
173
+ else throw new PromptCachingMiddlewareError("Last message content is not a string or array");
174
+ return options;
175
+ }
176
+ });
177
+ }
178
+
179
+ //#endregion
180
+ export { anthropicPromptCachingMiddleware };
181
+ //# sourceMappingURL=promptCaching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptCaching.js","names":["message: string","middlewareOptions?: Partial<z.infer<typeof contextSchema>>"],"sources":["../../../../src/agents/middlewareAgent/middleware/promptCaching.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { ContentBlock } from \"@langchain/core/messages\";\nimport { createMiddleware } from \"../middleware.js\";\n\nconst DEFAULT_ENABLE_CACHING = true;\nconst DEFAULT_TTL = \"5m\";\nconst DEFAULT_MIN_MESSAGES_TO_CACHE = 3;\n\nconst contextSchema = z.object({\n // Configuration options\n enableCaching: z.boolean().default(DEFAULT_ENABLE_CACHING),\n ttl: z.enum([\"5m\", \"1h\"]).default(DEFAULT_TTL),\n minMessagesToCache: z.number().default(DEFAULT_MIN_MESSAGES_TO_CACHE),\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 *\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 * systemMessage: \"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 * systemMessage: `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?: Partial<z.infer<typeof contextSchema>>\n) {\n return createMiddleware({\n name: \"PromptCachingMiddleware\",\n contextSchema,\n prepareModelRequest: (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\n // Skip if caching is disabled\n if (!enableCaching) {\n return undefined;\n }\n\n if (options.model?.getName() !== \"ChatAnthropic\") {\n throw new Error(\n \"Prompt caching is only supported for Anthropic models\"\n );\n }\n\n const messagesCount =\n state.messages.length + (options.systemMessage ? 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":";;;;AAIA,MAAM,yBAAyB;AAC/B,MAAM,cAAc;AACpB,MAAM,gCAAgC;AAEtC,MAAM,gBAAgB,EAAE,OAAO;CAE7B,eAAe,EAAE,SAAS,CAAC,QAAQ,uBAAuB;CAC1D,KAAK,EAAE,KAAK,CAAC,MAAM,IAAK,EAAC,CAAC,QAAQ,YAAY;CAC9C,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,8BAA8B;AACtE,EAAC;AAEF,IAAM,+BAAN,cAA2C,MAAM;CAC/C,YAAYA,SAAiB;EAC3B,MAAM,QAAQ;EACd,KAAK,OAAO;CACb;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuHD,SAAgB,iCACdC,mBACA;AACA,QAAO,iBAAiB;EACtB,MAAM;EACN;EACA,qBAAqB,CAAC,SAAS,OAAO,YAAY;;;;;;GAMhD,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;AAGzB,OAAI,CAAC,cACH,QAAO;AAGT,OAAI,QAAQ,OAAO,SAAS,KAAK,gBAC/B,OAAM,IAAI,MACR;GAIJ,MAAM,gBACJ,MAAM,SAAS,UAAU,QAAQ,gBAAgB,IAAI;AAEvD,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"}