langchain 1.0.0-alpha.7 → 1.0.0-alpha.8

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 (1418) hide show
  1. package/dist/agents/ReactAgent.cjs +2 -2
  2. package/dist/agents/ReactAgent.cjs.map +1 -1
  3. package/dist/agents/ReactAgent.js +2 -2
  4. package/dist/agents/ReactAgent.js.map +1 -1
  5. package/dist/agents/RunnableCallable.cjs +10 -0
  6. package/dist/agents/RunnableCallable.cjs.map +1 -1
  7. package/dist/agents/RunnableCallable.d.cts +5 -0
  8. package/dist/agents/RunnableCallable.d.cts.map +1 -1
  9. package/dist/agents/RunnableCallable.d.ts +5 -0
  10. package/dist/agents/RunnableCallable.d.ts.map +1 -1
  11. package/dist/agents/RunnableCallable.js +10 -0
  12. package/dist/agents/RunnableCallable.js.map +1 -1
  13. package/dist/agents/annotation.cjs +14 -0
  14. package/dist/agents/annotation.cjs.map +1 -1
  15. package/dist/agents/annotation.d.cts +12 -7
  16. package/dist/agents/annotation.d.cts.map +1 -1
  17. package/dist/agents/annotation.d.ts +11 -6
  18. package/dist/agents/annotation.d.ts.map +1 -1
  19. package/dist/agents/annotation.js +12 -1
  20. package/dist/agents/annotation.js.map +1 -1
  21. package/dist/agents/errors.d.cts +9 -2
  22. package/dist/agents/errors.d.cts.map +1 -1
  23. package/dist/agents/errors.d.ts +9 -2
  24. package/dist/agents/errors.d.ts.map +1 -1
  25. package/dist/agents/index.cjs +3 -0
  26. package/dist/agents/index.cjs.map +1 -1
  27. package/dist/agents/index.d.cts +6 -5
  28. package/dist/agents/index.d.cts.map +1 -1
  29. package/dist/agents/index.d.ts +6 -5
  30. package/dist/agents/index.d.ts.map +1 -1
  31. package/dist/agents/index.js +4 -1
  32. package/dist/agents/index.js.map +1 -1
  33. package/dist/agents/interrupt.d.cts +5 -16
  34. package/dist/agents/interrupt.d.cts.map +1 -1
  35. package/dist/agents/interrupt.d.ts +3 -17
  36. package/dist/agents/interrupt.d.ts.map +1 -1
  37. package/dist/agents/interrupt.js +3 -1
  38. package/dist/agents/middlewareAgent/ReactAgent.cjs +145 -28
  39. package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
  40. package/dist/agents/middlewareAgent/ReactAgent.d.cts +92 -12
  41. package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
  42. package/dist/agents/middlewareAgent/ReactAgent.d.ts +92 -12
  43. package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
  44. package/dist/agents/middlewareAgent/ReactAgent.js +145 -28
  45. package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
  46. package/dist/agents/middlewareAgent/middleware/callLimit.cjs +128 -0
  47. package/dist/agents/middlewareAgent/middleware/callLimit.cjs.map +1 -0
  48. package/dist/agents/middlewareAgent/middleware/callLimit.d.cts +119 -0
  49. package/dist/agents/middlewareAgent/middleware/callLimit.d.cts.map +1 -0
  50. package/dist/agents/middlewareAgent/middleware/callLimit.d.ts +119 -0
  51. package/dist/agents/middlewareAgent/middleware/callLimit.d.ts.map +1 -0
  52. package/dist/agents/middlewareAgent/middleware/callLimit.js +127 -0
  53. package/dist/agents/middlewareAgent/middleware/callLimit.js.map +1 -0
  54. package/dist/agents/middlewareAgent/middleware/contextEditing.cjs +278 -0
  55. package/dist/agents/middlewareAgent/middleware/contextEditing.cjs.map +1 -0
  56. package/dist/agents/middlewareAgent/middleware/contextEditing.d.cts +239 -0
  57. package/dist/agents/middlewareAgent/middleware/contextEditing.d.cts.map +1 -0
  58. package/dist/agents/middlewareAgent/middleware/contextEditing.d.ts +239 -0
  59. package/dist/agents/middlewareAgent/middleware/contextEditing.d.ts.map +1 -0
  60. package/dist/agents/middlewareAgent/middleware/contextEditing.js +276 -0
  61. package/dist/agents/middlewareAgent/middleware/contextEditing.js.map +1 -0
  62. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +1 -1
  63. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -1
  64. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +2 -2
  65. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -1
  66. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +2 -2
  67. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -1
  68. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +1 -1
  69. package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -1
  70. package/dist/agents/middlewareAgent/middleware/hitl.cjs +38 -8
  71. package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -1
  72. package/dist/agents/middlewareAgent/middleware/hitl.d.cts +130 -25
  73. package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -1
  74. package/dist/agents/middlewareAgent/middleware/hitl.d.ts +129 -24
  75. package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -1
  76. package/dist/agents/middlewareAgent/middleware/hitl.js +38 -8
  77. package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -1
  78. package/dist/agents/middlewareAgent/middleware/index.cjs +26 -6
  79. package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -1
  80. package/dist/agents/middlewareAgent/middleware/index.d.cts +10 -3
  81. package/dist/agents/middlewareAgent/middleware/index.d.ts +10 -3
  82. package/dist/agents/middlewareAgent/middleware/index.js +17 -4
  83. package/dist/agents/middlewareAgent/middleware/index.js.map +1 -1
  84. package/dist/agents/middlewareAgent/middleware/llmToolSelector.cjs +193 -0
  85. package/dist/agents/middlewareAgent/middleware/llmToolSelector.cjs.map +1 -0
  86. package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.cts +83 -0
  87. package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.cts.map +1 -0
  88. package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.ts +83 -0
  89. package/dist/agents/middlewareAgent/middleware/llmToolSelector.d.ts.map +1 -0
  90. package/dist/agents/middlewareAgent/middleware/llmToolSelector.js +192 -0
  91. package/dist/agents/middlewareAgent/middleware/llmToolSelector.js.map +1 -0
  92. package/dist/agents/middlewareAgent/middleware/modelFallback.cjs +67 -0
  93. package/dist/agents/middlewareAgent/middleware/modelFallback.cjs.map +1 -0
  94. package/dist/agents/middlewareAgent/middleware/modelFallback.d.cts +45 -0
  95. package/dist/agents/middlewareAgent/middleware/modelFallback.d.cts.map +1 -0
  96. package/dist/agents/middlewareAgent/middleware/modelFallback.d.ts +45 -0
  97. package/dist/agents/middlewareAgent/middleware/modelFallback.d.ts.map +1 -0
  98. package/dist/agents/middlewareAgent/middleware/modelFallback.js +67 -0
  99. package/dist/agents/middlewareAgent/middleware/modelFallback.js.map +1 -0
  100. package/dist/agents/middlewareAgent/middleware/piiRedaction.cjs +333 -0
  101. package/dist/agents/middlewareAgent/middleware/piiRedaction.cjs.map +1 -0
  102. package/dist/agents/middlewareAgent/middleware/piiRedaction.d.cts +155 -0
  103. package/dist/agents/middlewareAgent/middleware/piiRedaction.d.cts.map +1 -0
  104. package/dist/agents/middlewareAgent/middleware/piiRedaction.d.ts +155 -0
  105. package/dist/agents/middlewareAgent/middleware/piiRedaction.d.ts.map +1 -0
  106. package/dist/agents/middlewareAgent/middleware/piiRedaction.js +332 -0
  107. package/dist/agents/middlewareAgent/middleware/piiRedaction.js.map +1 -0
  108. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs +50 -38
  109. package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -1
  110. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts +18 -18
  111. package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -1
  112. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts +17 -17
  113. package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -1
  114. package/dist/agents/middlewareAgent/middleware/promptCaching.js +50 -38
  115. package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -1
  116. package/dist/agents/middlewareAgent/middleware/summarization.cjs +3 -23
  117. package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -1
  118. package/dist/agents/middlewareAgent/middleware/summarization.d.cts +10 -17
  119. package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -1
  120. package/dist/agents/middlewareAgent/middleware/summarization.d.ts +2 -9
  121. package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -1
  122. package/dist/agents/middlewareAgent/middleware/summarization.js +3 -22
  123. package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -1
  124. package/dist/agents/middlewareAgent/middleware/toolCallLimit.cjs +242 -0
  125. package/dist/agents/middlewareAgent/middleware/toolCallLimit.cjs.map +1 -0
  126. package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.cts +158 -0
  127. package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.cts.map +1 -0
  128. package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.ts +158 -0
  129. package/dist/agents/middlewareAgent/middleware/toolCallLimit.d.ts.map +1 -0
  130. package/dist/agents/middlewareAgent/middleware/toolCallLimit.js +240 -0
  131. package/dist/agents/middlewareAgent/middleware/toolCallLimit.js.map +1 -0
  132. package/dist/agents/middlewareAgent/middleware/utils.cjs +26 -0
  133. package/dist/agents/middlewareAgent/middleware/utils.cjs.map +1 -0
  134. package/dist/agents/middlewareAgent/middleware/utils.d.cts +13 -0
  135. package/dist/agents/middlewareAgent/middleware/utils.d.cts.map +1 -0
  136. package/dist/agents/middlewareAgent/middleware/utils.d.ts +13 -0
  137. package/dist/agents/middlewareAgent/middleware/utils.d.ts.map +1 -0
  138. package/dist/agents/middlewareAgent/middleware/utils.js +25 -0
  139. package/dist/agents/middlewareAgent/middleware/utils.js.map +1 -0
  140. package/dist/agents/middlewareAgent/middleware.cjs +1 -0
  141. package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
  142. package/dist/agents/middlewareAgent/middleware.d.cts +14 -3
  143. package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
  144. package/dist/agents/middlewareAgent/middleware.d.ts +14 -3
  145. package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
  146. package/dist/agents/middlewareAgent/middleware.js +1 -0
  147. package/dist/agents/middlewareAgent/middleware.js.map +1 -1
  148. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
  149. package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
  150. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
  151. package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
  152. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +172 -78
  153. package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
  154. package/dist/agents/middlewareAgent/nodes/AgentNode.js +173 -79
  155. package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
  156. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
  157. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
  158. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
  159. package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
  160. package/dist/agents/middlewareAgent/nodes/middleware.cjs +11 -10
  161. package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
  162. package/dist/agents/middlewareAgent/nodes/middleware.js +12 -11
  163. package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
  164. package/dist/agents/middlewareAgent/nodes/utils.cjs +8 -30
  165. package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
  166. package/dist/agents/middlewareAgent/nodes/utils.js +9 -30
  167. package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
  168. package/dist/agents/middlewareAgent/types.d.cts +56 -51
  169. package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
  170. package/dist/agents/middlewareAgent/types.d.ts +56 -51
  171. package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
  172. package/dist/agents/nodes/ToolNode.d.cts +1 -1
  173. package/dist/agents/tests/utils.cjs +77 -0
  174. package/dist/agents/tests/utils.cjs.map +1 -0
  175. package/dist/agents/tests/utils.d.cts +53 -0
  176. package/dist/agents/tests/utils.d.cts.map +1 -0
  177. package/dist/agents/tests/utils.d.ts +53 -0
  178. package/dist/agents/tests/utils.d.ts.map +1 -0
  179. package/dist/agents/tests/utils.js +76 -0
  180. package/dist/agents/tests/utils.js.map +1 -0
  181. package/dist/agents/types.cjs +7 -0
  182. package/dist/agents/types.cjs.map +1 -0
  183. package/dist/agents/types.d.cts +38 -4
  184. package/dist/agents/types.d.cts.map +1 -1
  185. package/dist/agents/types.d.ts +38 -4
  186. package/dist/agents/types.d.ts.map +1 -1
  187. package/dist/agents/types.js +6 -0
  188. package/dist/agents/types.js.map +1 -0
  189. package/dist/chat_models/universal.cjs +7 -0
  190. package/dist/chat_models/universal.cjs.map +1 -1
  191. package/dist/chat_models/universal.d.cts +7 -2
  192. package/dist/chat_models/universal.d.cts.map +1 -1
  193. package/dist/chat_models/universal.d.ts +7 -2
  194. package/dist/chat_models/universal.d.ts.map +1 -1
  195. package/dist/chat_models/universal.js +7 -0
  196. package/dist/chat_models/universal.js.map +1 -1
  197. package/dist/hub/base.cjs +4 -1
  198. package/dist/hub/base.cjs.map +1 -1
  199. package/dist/hub/base.js +4 -1
  200. package/dist/hub/base.js.map +1 -1
  201. package/dist/index.cjs +64 -6
  202. package/dist/index.cjs.map +1 -1
  203. package/dist/index.d.cts +18 -9
  204. package/dist/index.d.ts +18 -9
  205. package/dist/index.js +37 -5
  206. package/dist/index.js.map +1 -1
  207. package/dist/load/import_constants.cjs +0 -19
  208. package/dist/load/import_constants.cjs.map +1 -1
  209. package/dist/load/import_constants.js +0 -19
  210. package/dist/load/import_constants.js.map +1 -1
  211. package/dist/load/import_map.cjs +2 -113
  212. package/dist/load/import_map.cjs.map +1 -1
  213. package/dist/load/import_map.js +3 -114
  214. package/dist/load/import_map.js.map +1 -1
  215. package/dist/load/serializable.d.cts +1 -10
  216. package/dist/load/serializable.d.ts +1 -10
  217. package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/async_caller.cjs +5 -4
  218. package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/async_caller.cjs.map +1 -1
  219. package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/async_caller.js +3 -2
  220. package/dist/node_modules/.pnpm/langsmith@0.3.64_@opentelemetry_api@1.9.0_openai@5.11.0_ws@8.18.3_bufferutil@4.0.9_utf-8-validate@6.0.5__zod@3.25.76_/node_modules/langsmith/dist/utils/async_caller.js.map +1 -1
  221. package/dist/node_modules/.pnpm/p-retry@4.6.2/node_modules/p-retry/index.cjs +83 -0
  222. package/dist/node_modules/.pnpm/p-retry@4.6.2/node_modules/p-retry/index.cjs.map +1 -0
  223. package/dist/node_modules/.pnpm/p-retry@4.6.2/node_modules/p-retry/index.js +79 -0
  224. package/dist/node_modules/.pnpm/p-retry@4.6.2/node_modules/p-retry/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.cjs +16 -0
  226. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.cjs.map +1 -0
  227. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js +13 -0
  228. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js.map +1 -0
  229. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.cjs +77 -0
  230. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.cjs.map +1 -0
  231. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js +74 -0
  232. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js.map +1 -0
  233. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.cjs +115 -0
  234. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.cjs.map +1 -0
  235. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js +112 -0
  236. package/dist/node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js.map +1 -0
  237. package/dist/storage/encoder_backed.cjs +1 -1
  238. package/dist/storage/encoder_backed.d.cts +1 -1
  239. package/dist/storage/encoder_backed.d.ts +1 -1
  240. package/dist/storage/encoder_backed.js +1 -1
  241. package/dist/storage/file_system.cjs +1 -1
  242. package/dist/storage/file_system.js +1 -1
  243. package/package.json +36 -649
  244. package/dist/agents/middlewareAgent/middleware/bigTool.cjs +0 -162
  245. package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +0 -1
  246. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +0 -113
  247. package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +0 -1
  248. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +0 -113
  249. package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +0 -1
  250. package/dist/agents/middlewareAgent/middleware/bigTool.js +0 -161
  251. package/dist/agents/middlewareAgent/middleware/bigTool.js.map +0 -1
  252. package/dist/chains/analyze_documents_chain.cjs +0 -83
  253. package/dist/chains/analyze_documents_chain.cjs.map +0 -1
  254. package/dist/chains/analyze_documents_chain.d.cts +0 -58
  255. package/dist/chains/analyze_documents_chain.d.cts.map +0 -1
  256. package/dist/chains/analyze_documents_chain.d.ts +0 -58
  257. package/dist/chains/analyze_documents_chain.d.ts.map +0 -1
  258. package/dist/chains/analyze_documents_chain.js +0 -82
  259. package/dist/chains/analyze_documents_chain.js.map +0 -1
  260. package/dist/chains/api/api_chain.cjs +0 -100
  261. package/dist/chains/api/api_chain.cjs.map +0 -1
  262. package/dist/chains/api/api_chain.d.cts +0 -63
  263. package/dist/chains/api/api_chain.d.cts.map +0 -1
  264. package/dist/chains/api/api_chain.d.ts +0 -63
  265. package/dist/chains/api/api_chain.d.ts.map +0 -1
  266. package/dist/chains/api/api_chain.js +0 -100
  267. package/dist/chains/api/api_chain.js.map +0 -1
  268. package/dist/chains/api/prompts.cjs +0 -38
  269. package/dist/chains/api/prompts.cjs.map +0 -1
  270. package/dist/chains/api/prompts.js +0 -36
  271. package/dist/chains/api/prompts.js.map +0 -1
  272. package/dist/chains/base.cjs +0 -180
  273. package/dist/chains/base.cjs.map +0 -1
  274. package/dist/chains/base.d.cts +0 -88
  275. package/dist/chains/base.d.cts.map +0 -1
  276. package/dist/chains/base.d.ts +0 -88
  277. package/dist/chains/base.d.ts.map +0 -1
  278. package/dist/chains/base.js +0 -179
  279. package/dist/chains/base.js.map +0 -1
  280. package/dist/chains/chat_vector_db_chain.cjs +0 -130
  281. package/dist/chains/chat_vector_db_chain.cjs.map +0 -1
  282. package/dist/chains/chat_vector_db_chain.d.cts +0 -62
  283. package/dist/chains/chat_vector_db_chain.d.cts.map +0 -1
  284. package/dist/chains/chat_vector_db_chain.d.ts +0 -62
  285. package/dist/chains/chat_vector_db_chain.d.ts.map +0 -1
  286. package/dist/chains/chat_vector_db_chain.js +0 -129
  287. package/dist/chains/chat_vector_db_chain.js.map +0 -1
  288. package/dist/chains/combine_docs_chain.cjs +0 -275
  289. package/dist/chains/combine_docs_chain.cjs.map +0 -1
  290. package/dist/chains/combine_docs_chain.d.cts +0 -126
  291. package/dist/chains/combine_docs_chain.d.cts.map +0 -1
  292. package/dist/chains/combine_docs_chain.d.ts +0 -126
  293. package/dist/chains/combine_docs_chain.d.ts.map +0 -1
  294. package/dist/chains/combine_docs_chain.js +0 -272
  295. package/dist/chains/combine_docs_chain.js.map +0 -1
  296. package/dist/chains/combine_documents/base.cjs +0 -22
  297. package/dist/chains/combine_documents/base.cjs.map +0 -1
  298. package/dist/chains/combine_documents/base.js +0 -18
  299. package/dist/chains/combine_documents/base.js.map +0 -1
  300. package/dist/chains/combine_documents/index.cjs +0 -16
  301. package/dist/chains/combine_documents/index.cjs.map +0 -1
  302. package/dist/chains/combine_documents/index.d.cts +0 -2
  303. package/dist/chains/combine_documents/index.d.ts +0 -2
  304. package/dist/chains/combine_documents/index.js +0 -10
  305. package/dist/chains/combine_documents/index.js.map +0 -1
  306. package/dist/chains/combine_documents/reduce.cjs +0 -73
  307. package/dist/chains/combine_documents/reduce.cjs.map +0 -1
  308. package/dist/chains/combine_documents/reduce.d.cts +0 -36
  309. package/dist/chains/combine_documents/reduce.d.cts.map +0 -1
  310. package/dist/chains/combine_documents/reduce.d.ts +0 -36
  311. package/dist/chains/combine_documents/reduce.d.ts.map +0 -1
  312. package/dist/chains/combine_documents/reduce.js +0 -66
  313. package/dist/chains/combine_documents/reduce.js.map +0 -1
  314. package/dist/chains/combine_documents/stuff.cjs +0 -41
  315. package/dist/chains/combine_documents/stuff.cjs.map +0 -1
  316. package/dist/chains/combine_documents/stuff.d.cts +0 -40
  317. package/dist/chains/combine_documents/stuff.d.cts.map +0 -1
  318. package/dist/chains/combine_documents/stuff.d.ts +0 -40
  319. package/dist/chains/combine_documents/stuff.d.ts.map +0 -1
  320. package/dist/chains/combine_documents/stuff.js +0 -40
  321. package/dist/chains/combine_documents/stuff.js.map +0 -1
  322. package/dist/chains/constitutional_ai/constitutional_chain.cjs +0 -131
  323. package/dist/chains/constitutional_ai/constitutional_chain.cjs.map +0 -1
  324. package/dist/chains/constitutional_ai/constitutional_chain.d.cts +0 -79
  325. package/dist/chains/constitutional_ai/constitutional_chain.d.cts.map +0 -1
  326. package/dist/chains/constitutional_ai/constitutional_chain.d.ts +0 -79
  327. package/dist/chains/constitutional_ai/constitutional_chain.d.ts.map +0 -1
  328. package/dist/chains/constitutional_ai/constitutional_chain.js +0 -131
  329. package/dist/chains/constitutional_ai/constitutional_chain.js.map +0 -1
  330. package/dist/chains/constitutional_ai/constitutional_principle.cjs +0 -322
  331. package/dist/chains/constitutional_ai/constitutional_principle.cjs.map +0 -1
  332. package/dist/chains/constitutional_ai/constitutional_principle.d.cts +0 -50
  333. package/dist/chains/constitutional_ai/constitutional_principle.d.cts.map +0 -1
  334. package/dist/chains/constitutional_ai/constitutional_principle.d.ts +0 -50
  335. package/dist/chains/constitutional_ai/constitutional_principle.d.ts.map +0 -1
  336. package/dist/chains/constitutional_ai/constitutional_principle.js +0 -320
  337. package/dist/chains/constitutional_ai/constitutional_principle.js.map +0 -1
  338. package/dist/chains/constitutional_ai/constitutional_prompts.cjs +0 -96
  339. package/dist/chains/constitutional_ai/constitutional_prompts.cjs.map +0 -1
  340. package/dist/chains/constitutional_ai/constitutional_prompts.js +0 -94
  341. package/dist/chains/constitutional_ai/constitutional_prompts.js.map +0 -1
  342. package/dist/chains/conversation.cjs +0 -50
  343. package/dist/chains/conversation.cjs.map +0 -1
  344. package/dist/chains/conversation.d.cts +0 -34
  345. package/dist/chains/conversation.d.cts.map +0 -1
  346. package/dist/chains/conversation.d.ts +0 -34
  347. package/dist/chains/conversation.d.ts.map +0 -1
  348. package/dist/chains/conversation.js +0 -48
  349. package/dist/chains/conversation.js.map +0 -1
  350. package/dist/chains/conversational_retrieval_chain.cjs +0 -218
  351. package/dist/chains/conversational_retrieval_chain.cjs.map +0 -1
  352. package/dist/chains/conversational_retrieval_chain.d.cts +0 -152
  353. package/dist/chains/conversational_retrieval_chain.d.cts.map +0 -1
  354. package/dist/chains/conversational_retrieval_chain.d.ts +0 -152
  355. package/dist/chains/conversational_retrieval_chain.d.ts.map +0 -1
  356. package/dist/chains/conversational_retrieval_chain.js +0 -217
  357. package/dist/chains/conversational_retrieval_chain.js.map +0 -1
  358. package/dist/chains/graph_qa/cypher.cjs +0 -133
  359. package/dist/chains/graph_qa/cypher.cjs.map +0 -1
  360. package/dist/chains/graph_qa/cypher.d.cts +0 -76
  361. package/dist/chains/graph_qa/cypher.d.cts.map +0 -1
  362. package/dist/chains/graph_qa/cypher.d.ts +0 -76
  363. package/dist/chains/graph_qa/cypher.d.ts.map +0 -1
  364. package/dist/chains/graph_qa/cypher.js +0 -126
  365. package/dist/chains/graph_qa/cypher.js.map +0 -1
  366. package/dist/chains/graph_qa/prompts.cjs +0 -46
  367. package/dist/chains/graph_qa/prompts.cjs.map +0 -1
  368. package/dist/chains/graph_qa/prompts.js +0 -44
  369. package/dist/chains/graph_qa/prompts.js.map +0 -1
  370. package/dist/chains/history_aware_retriever.cjs +0 -55
  371. package/dist/chains/history_aware_retriever.cjs.map +0 -1
  372. package/dist/chains/history_aware_retriever.d.cts +0 -64
  373. package/dist/chains/history_aware_retriever.d.cts.map +0 -1
  374. package/dist/chains/history_aware_retriever.d.ts +0 -64
  375. package/dist/chains/history_aware_retriever.d.ts.map +0 -1
  376. package/dist/chains/history_aware_retriever.js +0 -49
  377. package/dist/chains/history_aware_retriever.js.map +0 -1
  378. package/dist/chains/index.cjs +0 -106
  379. package/dist/chains/index.cjs.map +0 -1
  380. package/dist/chains/index.d.cts +0 -25
  381. package/dist/chains/index.d.ts +0 -25
  382. package/dist/chains/index.js +0 -67
  383. package/dist/chains/index.js.map +0 -1
  384. package/dist/chains/llm_chain.cjs +0 -155
  385. package/dist/chains/llm_chain.cjs.map +0 -1
  386. package/dist/chains/llm_chain.d.cts +0 -97
  387. package/dist/chains/llm_chain.d.cts.map +0 -1
  388. package/dist/chains/llm_chain.d.ts +0 -97
  389. package/dist/chains/llm_chain.d.ts.map +0 -1
  390. package/dist/chains/llm_chain.js +0 -154
  391. package/dist/chains/llm_chain.js.map +0 -1
  392. package/dist/chains/load.cjs +0 -48
  393. package/dist/chains/load.cjs.map +0 -1
  394. package/dist/chains/load.d.cts +0 -30
  395. package/dist/chains/load.d.cts.map +0 -1
  396. package/dist/chains/load.d.ts +0 -30
  397. package/dist/chains/load.d.ts.map +0 -1
  398. package/dist/chains/load.js +0 -42
  399. package/dist/chains/load.js.map +0 -1
  400. package/dist/chains/openai_functions/base.cjs +0 -139
  401. package/dist/chains/openai_functions/base.cjs.map +0 -1
  402. package/dist/chains/openai_functions/base.d.cts +0 -172
  403. package/dist/chains/openai_functions/base.d.cts.map +0 -1
  404. package/dist/chains/openai_functions/base.d.ts +0 -172
  405. package/dist/chains/openai_functions/base.d.ts.map +0 -1
  406. package/dist/chains/openai_functions/base.js +0 -137
  407. package/dist/chains/openai_functions/base.js.map +0 -1
  408. package/dist/chains/openai_functions/extraction.cjs +0 -71
  409. package/dist/chains/openai_functions/extraction.cjs.map +0 -1
  410. package/dist/chains/openai_functions/extraction.d.cts +0 -29
  411. package/dist/chains/openai_functions/extraction.d.cts.map +0 -1
  412. package/dist/chains/openai_functions/extraction.d.ts +0 -29
  413. package/dist/chains/openai_functions/extraction.d.ts.map +0 -1
  414. package/dist/chains/openai_functions/extraction.js +0 -69
  415. package/dist/chains/openai_functions/extraction.js.map +0 -1
  416. package/dist/chains/openai_functions/index.cjs +0 -33
  417. package/dist/chains/openai_functions/index.cjs.map +0 -1
  418. package/dist/chains/openai_functions/index.d.cts +0 -5
  419. package/dist/chains/openai_functions/index.d.ts +0 -5
  420. package/dist/chains/openai_functions/index.js +0 -21
  421. package/dist/chains/openai_functions/index.js.map +0 -1
  422. package/dist/chains/openai_functions/openapi.cjs +0 -287
  423. package/dist/chains/openai_functions/openapi.cjs.map +0 -1
  424. package/dist/chains/openai_functions/openapi.d.cts +0 -61
  425. package/dist/chains/openai_functions/openapi.d.cts.map +0 -1
  426. package/dist/chains/openai_functions/openapi.d.ts +0 -61
  427. package/dist/chains/openai_functions/openapi.d.ts.map +0 -1
  428. package/dist/chains/openai_functions/openapi.js +0 -285
  429. package/dist/chains/openai_functions/openapi.js.map +0 -1
  430. package/dist/chains/openai_functions/tagging.cjs +0 -72
  431. package/dist/chains/openai_functions/tagging.cjs.map +0 -1
  432. package/dist/chains/openai_functions/tagging.d.cts +0 -47
  433. package/dist/chains/openai_functions/tagging.d.cts.map +0 -1
  434. package/dist/chains/openai_functions/tagging.d.ts +0 -47
  435. package/dist/chains/openai_functions/tagging.d.ts.map +0 -1
  436. package/dist/chains/openai_functions/tagging.js +0 -70
  437. package/dist/chains/openai_functions/tagging.js.map +0 -1
  438. package/dist/chains/query_constructor/index.cjs +0 -145
  439. package/dist/chains/query_constructor/index.cjs.map +0 -1
  440. package/dist/chains/query_constructor/index.d.cts +0 -82
  441. package/dist/chains/query_constructor/index.d.cts.map +0 -1
  442. package/dist/chains/query_constructor/index.d.ts +0 -82
  443. package/dist/chains/query_constructor/index.d.ts.map +0 -1
  444. package/dist/chains/query_constructor/index.js +0 -130
  445. package/dist/chains/query_constructor/index.js.map +0 -1
  446. package/dist/chains/query_constructor/ir.cjs +0 -22
  447. package/dist/chains/query_constructor/ir.cjs.map +0 -1
  448. package/dist/chains/query_constructor/ir.d.cts +0 -1
  449. package/dist/chains/query_constructor/ir.d.ts +0 -1
  450. package/dist/chains/query_constructor/ir.js +0 -12
  451. package/dist/chains/query_constructor/ir.js.map +0 -1
  452. package/dist/chains/query_constructor/parser.cjs +0 -80
  453. package/dist/chains/query_constructor/parser.cjs.map +0 -1
  454. package/dist/chains/query_constructor/parser.d.cts +0 -43
  455. package/dist/chains/query_constructor/parser.d.cts.map +0 -1
  456. package/dist/chains/query_constructor/parser.d.ts +0 -43
  457. package/dist/chains/query_constructor/parser.d.ts.map +0 -1
  458. package/dist/chains/query_constructor/parser.js +0 -79
  459. package/dist/chains/query_constructor/parser.js.map +0 -1
  460. package/dist/chains/query_constructor/prompt.cjs +0 -137
  461. package/dist/chains/query_constructor/prompt.cjs.map +0 -1
  462. package/dist/chains/query_constructor/prompt.d.cts +0 -22
  463. package/dist/chains/query_constructor/prompt.d.cts.map +0 -1
  464. package/dist/chains/query_constructor/prompt.d.ts +0 -22
  465. package/dist/chains/query_constructor/prompt.d.ts.map +0 -1
  466. package/dist/chains/query_constructor/prompt.js +0 -132
  467. package/dist/chains/query_constructor/prompt.js.map +0 -1
  468. package/dist/chains/question_answering/load.cjs +0 -99
  469. package/dist/chains/question_answering/load.cjs.map +0 -1
  470. package/dist/chains/question_answering/load.d.cts +0 -72
  471. package/dist/chains/question_answering/load.d.cts.map +0 -1
  472. package/dist/chains/question_answering/load.d.ts +0 -72
  473. package/dist/chains/question_answering/load.d.ts.map +0 -1
  474. package/dist/chains/question_answering/load.js +0 -96
  475. package/dist/chains/question_answering/load.js.map +0 -1
  476. package/dist/chains/question_answering/map_reduce_prompts.cjs +0 -61
  477. package/dist/chains/question_answering/map_reduce_prompts.cjs.map +0 -1
  478. package/dist/chains/question_answering/map_reduce_prompts.js +0 -59
  479. package/dist/chains/question_answering/map_reduce_prompts.js.map +0 -1
  480. package/dist/chains/question_answering/refine_prompts.cjs +0 -60
  481. package/dist/chains/question_answering/refine_prompts.cjs.map +0 -1
  482. package/dist/chains/question_answering/refine_prompts.js +0 -58
  483. package/dist/chains/question_answering/refine_prompts.js.map +0 -1
  484. package/dist/chains/question_answering/stuff_prompts.cjs +0 -20
  485. package/dist/chains/question_answering/stuff_prompts.cjs.map +0 -1
  486. package/dist/chains/question_answering/stuff_prompts.js +0 -19
  487. package/dist/chains/question_answering/stuff_prompts.js.map +0 -1
  488. package/dist/chains/retrieval.cjs +0 -55
  489. package/dist/chains/retrieval.cjs.map +0 -1
  490. package/dist/chains/retrieval.d.cts +0 -77
  491. package/dist/chains/retrieval.d.cts.map +0 -1
  492. package/dist/chains/retrieval.d.ts +0 -77
  493. package/dist/chains/retrieval.d.ts.map +0 -1
  494. package/dist/chains/retrieval.js +0 -49
  495. package/dist/chains/retrieval.js.map +0 -1
  496. package/dist/chains/retrieval_qa.cjs +0 -106
  497. package/dist/chains/retrieval_qa.cjs.map +0 -1
  498. package/dist/chains/retrieval_qa.d.cts +0 -81
  499. package/dist/chains/retrieval_qa.d.cts.map +0 -1
  500. package/dist/chains/retrieval_qa.d.ts +0 -81
  501. package/dist/chains/retrieval_qa.d.ts.map +0 -1
  502. package/dist/chains/retrieval_qa.js +0 -106
  503. package/dist/chains/retrieval_qa.js.map +0 -1
  504. package/dist/chains/router/llm_router.cjs +0 -50
  505. package/dist/chains/router/llm_router.cjs.map +0 -1
  506. package/dist/chains/router/llm_router.d.cts +0 -54
  507. package/dist/chains/router/llm_router.d.cts.map +0 -1
  508. package/dist/chains/router/llm_router.d.ts +0 -54
  509. package/dist/chains/router/llm_router.d.ts.map +0 -1
  510. package/dist/chains/router/llm_router.js +0 -50
  511. package/dist/chains/router/llm_router.js.map +0 -1
  512. package/dist/chains/router/multi_prompt.cjs +0 -116
  513. package/dist/chains/router/multi_prompt.cjs.map +0 -1
  514. package/dist/chains/router/multi_prompt.d.cts +0 -76
  515. package/dist/chains/router/multi_prompt.d.cts.map +0 -1
  516. package/dist/chains/router/multi_prompt.d.ts +0 -76
  517. package/dist/chains/router/multi_prompt.d.ts.map +0 -1
  518. package/dist/chains/router/multi_prompt.js +0 -115
  519. package/dist/chains/router/multi_prompt.js.map +0 -1
  520. package/dist/chains/router/multi_prompt_prompt.cjs +0 -22
  521. package/dist/chains/router/multi_prompt_prompt.cjs.map +0 -1
  522. package/dist/chains/router/multi_prompt_prompt.js +0 -21
  523. package/dist/chains/router/multi_prompt_prompt.js.map +0 -1
  524. package/dist/chains/router/multi_retrieval_prompt.cjs +0 -22
  525. package/dist/chains/router/multi_retrieval_prompt.cjs.map +0 -1
  526. package/dist/chains/router/multi_retrieval_prompt.js +0 -21
  527. package/dist/chains/router/multi_retrieval_prompt.js.map +0 -1
  528. package/dist/chains/router/multi_retrieval_qa.cjs +0 -137
  529. package/dist/chains/router/multi_retrieval_qa.cjs.map +0 -1
  530. package/dist/chains/router/multi_retrieval_qa.d.cts +0 -100
  531. package/dist/chains/router/multi_retrieval_qa.d.cts.map +0 -1
  532. package/dist/chains/router/multi_retrieval_qa.d.ts +0 -100
  533. package/dist/chains/router/multi_retrieval_qa.d.ts.map +0 -1
  534. package/dist/chains/router/multi_retrieval_qa.js +0 -136
  535. package/dist/chains/router/multi_retrieval_qa.js.map +0 -1
  536. package/dist/chains/router/multi_route.cjs +0 -69
  537. package/dist/chains/router/multi_route.cjs.map +0 -1
  538. package/dist/chains/router/multi_route.d.cts +0 -69
  539. package/dist/chains/router/multi_route.d.cts.map +0 -1
  540. package/dist/chains/router/multi_route.d.ts +0 -69
  541. package/dist/chains/router/multi_route.d.ts.map +0 -1
  542. package/dist/chains/router/multi_route.js +0 -68
  543. package/dist/chains/router/multi_route.js.map +0 -1
  544. package/dist/chains/router/utils.cjs +0 -18
  545. package/dist/chains/router/utils.cjs.map +0 -1
  546. package/dist/chains/router/utils.js +0 -17
  547. package/dist/chains/router/utils.js.map +0 -1
  548. package/dist/chains/sequential_chain.cjs +0 -255
  549. package/dist/chains/sequential_chain.cjs.map +0 -1
  550. package/dist/chains/sequential_chain.d.cts +0 -158
  551. package/dist/chains/sequential_chain.d.cts.map +0 -1
  552. package/dist/chains/sequential_chain.d.ts +0 -158
  553. package/dist/chains/sequential_chain.d.ts.map +0 -1
  554. package/dist/chains/sequential_chain.js +0 -254
  555. package/dist/chains/sequential_chain.js.map +0 -1
  556. package/dist/chains/serde.d.cts +0 -156
  557. package/dist/chains/serde.d.cts.map +0 -1
  558. package/dist/chains/serde.d.ts +0 -156
  559. package/dist/chains/serde.d.ts.map +0 -1
  560. package/dist/chains/sql_db/index.cjs +0 -35
  561. package/dist/chains/sql_db/index.cjs.map +0 -1
  562. package/dist/chains/sql_db/index.d.cts +0 -3
  563. package/dist/chains/sql_db/index.d.ts +0 -3
  564. package/dist/chains/sql_db/index.js +0 -21
  565. package/dist/chains/sql_db/index.js.map +0 -1
  566. package/dist/chains/sql_db/sql_db_chain.cjs +0 -196
  567. package/dist/chains/sql_db/sql_db_chain.cjs.map +0 -1
  568. package/dist/chains/sql_db/sql_db_chain.d.cts +0 -124
  569. package/dist/chains/sql_db/sql_db_chain.d.cts.map +0 -1
  570. package/dist/chains/sql_db/sql_db_chain.d.ts +0 -124
  571. package/dist/chains/sql_db/sql_db_chain.d.ts.map +0 -1
  572. package/dist/chains/sql_db/sql_db_chain.js +0 -194
  573. package/dist/chains/sql_db/sql_db_chain.js.map +0 -1
  574. package/dist/chains/sql_db/sql_db_prompt.cjs +0 -194
  575. package/dist/chains/sql_db/sql_db_prompt.cjs.map +0 -1
  576. package/dist/chains/sql_db/sql_db_prompt.d.cts +0 -44
  577. package/dist/chains/sql_db/sql_db_prompt.d.cts.map +0 -1
  578. package/dist/chains/sql_db/sql_db_prompt.d.ts +0 -44
  579. package/dist/chains/sql_db/sql_db_prompt.d.ts.map +0 -1
  580. package/dist/chains/sql_db/sql_db_prompt.js +0 -186
  581. package/dist/chains/sql_db/sql_db_prompt.js.map +0 -1
  582. package/dist/chains/summarization/load.cjs +0 -74
  583. package/dist/chains/summarization/load.cjs.map +0 -1
  584. package/dist/chains/summarization/load.d.cts +0 -33
  585. package/dist/chains/summarization/load.d.cts.map +0 -1
  586. package/dist/chains/summarization/load.d.ts +0 -33
  587. package/dist/chains/summarization/load.d.ts.map +0 -1
  588. package/dist/chains/summarization/load.js +0 -74
  589. package/dist/chains/summarization/load.js.map +0 -1
  590. package/dist/chains/summarization/refine_prompts.cjs +0 -24
  591. package/dist/chains/summarization/refine_prompts.cjs.map +0 -1
  592. package/dist/chains/summarization/refine_prompts.js +0 -23
  593. package/dist/chains/summarization/refine_prompts.js.map +0 -1
  594. package/dist/chains/summarization/stuff_prompts.cjs +0 -19
  595. package/dist/chains/summarization/stuff_prompts.cjs.map +0 -1
  596. package/dist/chains/summarization/stuff_prompts.js +0 -18
  597. package/dist/chains/summarization/stuff_prompts.js.map +0 -1
  598. package/dist/chains/transform.cjs +0 -43
  599. package/dist/chains/transform.cjs.map +0 -1
  600. package/dist/chains/transform.d.cts +0 -44
  601. package/dist/chains/transform.d.cts.map +0 -1
  602. package/dist/chains/transform.d.ts +0 -44
  603. package/dist/chains/transform.d.ts.map +0 -1
  604. package/dist/chains/transform.js +0 -43
  605. package/dist/chains/transform.js.map +0 -1
  606. package/dist/chains/vector_db_qa.cjs +0 -95
  607. package/dist/chains/vector_db_qa.cjs.map +0 -1
  608. package/dist/chains/vector_db_qa.d.cts +0 -66
  609. package/dist/chains/vector_db_qa.d.cts.map +0 -1
  610. package/dist/chains/vector_db_qa.d.ts +0 -66
  611. package/dist/chains/vector_db_qa.d.ts.map +0 -1
  612. package/dist/chains/vector_db_qa.js +0 -95
  613. package/dist/chains/vector_db_qa.js.map +0 -1
  614. package/dist/document.cjs +0 -21
  615. package/dist/document.cjs.map +0 -1
  616. package/dist/document.d.cts +0 -2
  617. package/dist/document.d.ts +0 -2
  618. package/dist/document.js +0 -10
  619. package/dist/document.js.map +0 -1
  620. package/dist/document_loaders/base.cjs +0 -22
  621. package/dist/document_loaders/base.cjs.map +0 -1
  622. package/dist/document_loaders/base.d.cts +0 -1
  623. package/dist/document_loaders/base.d.ts +0 -1
  624. package/dist/document_loaders/base.js +0 -12
  625. package/dist/document_loaders/base.js.map +0 -1
  626. package/dist/document_loaders/fs/buffer.cjs +0 -69
  627. package/dist/document_loaders/fs/buffer.cjs.map +0 -1
  628. package/dist/document_loaders/fs/buffer.d.cts +0 -46
  629. package/dist/document_loaders/fs/buffer.d.cts.map +0 -1
  630. package/dist/document_loaders/fs/buffer.d.ts +0 -46
  631. package/dist/document_loaders/fs/buffer.d.ts.map +0 -1
  632. package/dist/document_loaders/fs/buffer.js +0 -63
  633. package/dist/document_loaders/fs/buffer.js.map +0 -1
  634. package/dist/document_loaders/fs/directory.cjs +0 -116
  635. package/dist/document_loaders/fs/directory.cjs.map +0 -1
  636. package/dist/document_loaders/fs/directory.d.cts +0 -76
  637. package/dist/document_loaders/fs/directory.d.cts.map +0 -1
  638. package/dist/document_loaders/fs/directory.d.ts +0 -76
  639. package/dist/document_loaders/fs/directory.d.ts.map +0 -1
  640. package/dist/document_loaders/fs/directory.js +0 -109
  641. package/dist/document_loaders/fs/directory.js.map +0 -1
  642. package/dist/document_loaders/fs/json.cjs +0 -128
  643. package/dist/document_loaders/fs/json.cjs.map +0 -1
  644. package/dist/document_loaders/fs/json.d.cts +0 -65
  645. package/dist/document_loaders/fs/json.d.cts.map +0 -1
  646. package/dist/document_loaders/fs/json.d.ts +0 -65
  647. package/dist/document_loaders/fs/json.d.ts.map +0 -1
  648. package/dist/document_loaders/fs/json.js +0 -121
  649. package/dist/document_loaders/fs/json.js.map +0 -1
  650. package/dist/document_loaders/fs/multi_file.cjs +0 -82
  651. package/dist/document_loaders/fs/multi_file.cjs.map +0 -1
  652. package/dist/document_loaders/fs/multi_file.d.cts +0 -43
  653. package/dist/document_loaders/fs/multi_file.d.cts.map +0 -1
  654. package/dist/document_loaders/fs/multi_file.d.ts +0 -43
  655. package/dist/document_loaders/fs/multi_file.d.ts.map +0 -1
  656. package/dist/document_loaders/fs/multi_file.js +0 -76
  657. package/dist/document_loaders/fs/multi_file.js.map +0 -1
  658. package/dist/document_loaders/fs/text.cjs +0 -101
  659. package/dist/document_loaders/fs/text.cjs.map +0 -1
  660. package/dist/document_loaders/fs/text.d.cts +0 -57
  661. package/dist/document_loaders/fs/text.d.cts.map +0 -1
  662. package/dist/document_loaders/fs/text.d.ts +0 -57
  663. package/dist/document_loaders/fs/text.d.ts.map +0 -1
  664. package/dist/document_loaders/fs/text.js +0 -95
  665. package/dist/document_loaders/fs/text.js.map +0 -1
  666. package/dist/evaluation/agents/index.cjs +0 -1
  667. package/dist/evaluation/agents/index.js +0 -1
  668. package/dist/evaluation/agents/prompt.cjs +0 -132
  669. package/dist/evaluation/agents/prompt.cjs.map +0 -1
  670. package/dist/evaluation/agents/prompt.js +0 -130
  671. package/dist/evaluation/agents/prompt.js.map +0 -1
  672. package/dist/evaluation/agents/trajectory.cjs +0 -132
  673. package/dist/evaluation/agents/trajectory.cjs.map +0 -1
  674. package/dist/evaluation/agents/trajectory.d.cts +0 -61
  675. package/dist/evaluation/agents/trajectory.d.cts.map +0 -1
  676. package/dist/evaluation/agents/trajectory.d.ts +0 -61
  677. package/dist/evaluation/agents/trajectory.d.ts.map +0 -1
  678. package/dist/evaluation/agents/trajectory.js +0 -130
  679. package/dist/evaluation/agents/trajectory.js.map +0 -1
  680. package/dist/evaluation/base.cjs +0 -169
  681. package/dist/evaluation/base.cjs.map +0 -1
  682. package/dist/evaluation/base.d.cts +0 -240
  683. package/dist/evaluation/base.d.cts.map +0 -1
  684. package/dist/evaluation/base.d.ts +0 -240
  685. package/dist/evaluation/base.d.ts.map +0 -1
  686. package/dist/evaluation/base.js +0 -164
  687. package/dist/evaluation/base.js.map +0 -1
  688. package/dist/evaluation/comparison/index.cjs +0 -1
  689. package/dist/evaluation/comparison/index.js +0 -1
  690. package/dist/evaluation/comparison/pairwise.cjs +0 -178
  691. package/dist/evaluation/comparison/pairwise.cjs.map +0 -1
  692. package/dist/evaluation/comparison/pairwise.d.cts +0 -56
  693. package/dist/evaluation/comparison/pairwise.d.cts.map +0 -1
  694. package/dist/evaluation/comparison/pairwise.d.ts +0 -56
  695. package/dist/evaluation/comparison/pairwise.d.ts.map +0 -1
  696. package/dist/evaluation/comparison/pairwise.js +0 -175
  697. package/dist/evaluation/comparison/pairwise.js.map +0 -1
  698. package/dist/evaluation/comparison/prompt.cjs +0 -77
  699. package/dist/evaluation/comparison/prompt.cjs.map +0 -1
  700. package/dist/evaluation/comparison/prompt.js +0 -75
  701. package/dist/evaluation/comparison/prompt.js.map +0 -1
  702. package/dist/evaluation/criteria/criteria.cjs +0 -164
  703. package/dist/evaluation/criteria/criteria.cjs.map +0 -1
  704. package/dist/evaluation/criteria/criteria.d.cts +0 -85
  705. package/dist/evaluation/criteria/criteria.d.cts.map +0 -1
  706. package/dist/evaluation/criteria/criteria.d.ts +0 -85
  707. package/dist/evaluation/criteria/criteria.d.ts.map +0 -1
  708. package/dist/evaluation/criteria/criteria.js +0 -161
  709. package/dist/evaluation/criteria/criteria.js.map +0 -1
  710. package/dist/evaluation/criteria/index.cjs +0 -1
  711. package/dist/evaluation/criteria/index.js +0 -1
  712. package/dist/evaluation/criteria/prompt.cjs +0 -50
  713. package/dist/evaluation/criteria/prompt.cjs.map +0 -1
  714. package/dist/evaluation/criteria/prompt.js +0 -48
  715. package/dist/evaluation/criteria/prompt.js.map +0 -1
  716. package/dist/evaluation/embedding_distance/base.cjs +0 -108
  717. package/dist/evaluation/embedding_distance/base.cjs.map +0 -1
  718. package/dist/evaluation/embedding_distance/base.d.cts +0 -82
  719. package/dist/evaluation/embedding_distance/base.d.cts.map +0 -1
  720. package/dist/evaluation/embedding_distance/base.d.ts +0 -82
  721. package/dist/evaluation/embedding_distance/base.d.ts.map +0 -1
  722. package/dist/evaluation/embedding_distance/base.js +0 -105
  723. package/dist/evaluation/embedding_distance/base.js.map +0 -1
  724. package/dist/evaluation/embedding_distance/index.cjs +0 -1
  725. package/dist/evaluation/embedding_distance/index.js +0 -1
  726. package/dist/evaluation/index.cjs +0 -54
  727. package/dist/evaluation/index.cjs.map +0 -1
  728. package/dist/evaluation/index.d.cts +0 -8
  729. package/dist/evaluation/index.d.ts +0 -8
  730. package/dist/evaluation/index.js +0 -35
  731. package/dist/evaluation/index.js.map +0 -1
  732. package/dist/evaluation/loader.cjs +0 -57
  733. package/dist/evaluation/loader.cjs.map +0 -1
  734. package/dist/evaluation/loader.d.cts +0 -38
  735. package/dist/evaluation/loader.d.cts.map +0 -1
  736. package/dist/evaluation/loader.d.ts +0 -38
  737. package/dist/evaluation/loader.d.ts.map +0 -1
  738. package/dist/evaluation/loader.js +0 -56
  739. package/dist/evaluation/loader.js.map +0 -1
  740. package/dist/evaluation/qa/eval_chain.cjs +0 -41
  741. package/dist/evaluation/qa/eval_chain.cjs.map +0 -1
  742. package/dist/evaluation/qa/eval_chain.d.cts +0 -22
  743. package/dist/evaluation/qa/eval_chain.d.cts.map +0 -1
  744. package/dist/evaluation/qa/eval_chain.d.ts +0 -22
  745. package/dist/evaluation/qa/eval_chain.d.ts.map +0 -1
  746. package/dist/evaluation/qa/eval_chain.js +0 -41
  747. package/dist/evaluation/qa/eval_chain.js.map +0 -1
  748. package/dist/evaluation/qa/index.cjs +0 -1
  749. package/dist/evaluation/qa/index.js +0 -1
  750. package/dist/evaluation/qa/prompt.cjs +0 -31
  751. package/dist/evaluation/qa/prompt.cjs.map +0 -1
  752. package/dist/evaluation/qa/prompt.js +0 -30
  753. package/dist/evaluation/qa/prompt.js.map +0 -1
  754. package/dist/evaluation/types.d.cts +0 -40
  755. package/dist/evaluation/types.d.cts.map +0 -1
  756. package/dist/evaluation/types.d.ts +0 -40
  757. package/dist/evaluation/types.d.ts.map +0 -1
  758. package/dist/langchain-core/dist/load/map_keys.d.cts +0 -10
  759. package/dist/langchain-core/dist/load/map_keys.d.cts.map +0 -1
  760. package/dist/langchain-core/dist/load/serializable.d.cts +0 -82
  761. package/dist/langchain-core/dist/load/serializable.d.cts.map +0 -1
  762. package/dist/langchain-core/dist/messages/base.d.cts +0 -125
  763. package/dist/langchain-core/dist/messages/base.d.cts.map +0 -1
  764. package/dist/langchain-core/dist/messages/content/base.d.cts +0 -22
  765. package/dist/langchain-core/dist/messages/content/base.d.cts.map +0 -1
  766. package/dist/langchain-core/dist/messages/content/data.d.cts +0 -96
  767. package/dist/langchain-core/dist/messages/content/data.d.cts.map +0 -1
  768. package/dist/langchain-core/dist/messages/content/index.d.cts +0 -121
  769. package/dist/langchain-core/dist/messages/content/index.d.cts.map +0 -1
  770. package/dist/langchain-core/dist/messages/content/multimodal.d.cts +0 -110
  771. package/dist/langchain-core/dist/messages/content/multimodal.d.cts.map +0 -1
  772. package/dist/langchain-core/dist/messages/content/tools.d.cts +0 -214
  773. package/dist/langchain-core/dist/messages/content/tools.d.cts.map +0 -1
  774. package/dist/langchain-core/dist/messages/message.d.cts +0 -598
  775. package/dist/langchain-core/dist/messages/message.d.cts.map +0 -1
  776. package/dist/langchain-core/dist/messages/metadata.d.cts +0 -97
  777. package/dist/langchain-core/dist/messages/metadata.d.cts.map +0 -1
  778. package/dist/langchain-core/dist/messages/utils.d.cts +0 -75
  779. package/dist/langchain-core/dist/messages/utils.d.cts.map +0 -1
  780. package/dist/langchain-core/dist/prompt_values.d.cts +0 -13
  781. package/dist/langchain-core/dist/prompt_values.d.cts.map +0 -1
  782. package/dist/langchain-core/dist/utils/types/index.d.cts +0 -8
  783. package/dist/langchain-core/dist/utils/types/index.d.cts.map +0 -1
  784. package/dist/libs/langchain-core/dist/load/map_keys.d.ts +0 -10
  785. package/dist/libs/langchain-core/dist/load/map_keys.d.ts.map +0 -1
  786. package/dist/libs/langchain-core/dist/load/serializable.d.ts +0 -82
  787. package/dist/libs/langchain-core/dist/load/serializable.d.ts.map +0 -1
  788. package/dist/libs/langchain-core/dist/messages/base.d.ts +0 -125
  789. package/dist/libs/langchain-core/dist/messages/base.d.ts.map +0 -1
  790. package/dist/libs/langchain-core/dist/messages/content/base.d.ts +0 -22
  791. package/dist/libs/langchain-core/dist/messages/content/base.d.ts.map +0 -1
  792. package/dist/libs/langchain-core/dist/messages/content/data.d.ts +0 -96
  793. package/dist/libs/langchain-core/dist/messages/content/data.d.ts.map +0 -1
  794. package/dist/libs/langchain-core/dist/messages/content/index.d.ts +0 -121
  795. package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +0 -1
  796. package/dist/libs/langchain-core/dist/messages/content/multimodal.d.ts +0 -110
  797. package/dist/libs/langchain-core/dist/messages/content/multimodal.d.ts.map +0 -1
  798. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +0 -214
  799. package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +0 -1
  800. package/dist/libs/langchain-core/dist/messages/message.d.ts +0 -598
  801. package/dist/libs/langchain-core/dist/messages/message.d.ts.map +0 -1
  802. package/dist/libs/langchain-core/dist/messages/metadata.d.ts +0 -97
  803. package/dist/libs/langchain-core/dist/messages/metadata.d.ts.map +0 -1
  804. package/dist/libs/langchain-core/dist/messages/utils.d.ts +0 -75
  805. package/dist/libs/langchain-core/dist/messages/utils.d.ts.map +0 -1
  806. package/dist/libs/langchain-core/dist/prompt_values.d.ts +0 -13
  807. package/dist/libs/langchain-core/dist/prompt_values.d.ts.map +0 -1
  808. package/dist/libs/langchain-core/dist/utils/types/index.d.ts +0 -10
  809. package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +0 -1
  810. package/dist/libs/langchain-core/dist/utils/types/zod.d.ts +0 -1
  811. package/dist/load/map_keys.d.cts +0 -8
  812. package/dist/load/map_keys.d.cts.map +0 -1
  813. package/dist/load/map_keys.d.ts +0 -8
  814. package/dist/load/map_keys.d.ts.map +0 -1
  815. package/dist/load/serializable.d.cts.map +0 -1
  816. package/dist/load/serializable.d.ts.map +0 -1
  817. package/dist/memory/buffer_memory.cjs +0 -80
  818. package/dist/memory/buffer_memory.cjs.map +0 -1
  819. package/dist/memory/buffer_memory.d.cts +0 -67
  820. package/dist/memory/buffer_memory.d.cts.map +0 -1
  821. package/dist/memory/buffer_memory.d.ts +0 -67
  822. package/dist/memory/buffer_memory.d.ts.map +0 -1
  823. package/dist/memory/buffer_memory.js +0 -79
  824. package/dist/memory/buffer_memory.js.map +0 -1
  825. package/dist/memory/buffer_token_memory.cjs +0 -80
  826. package/dist/memory/buffer_token_memory.cjs.map +0 -1
  827. package/dist/memory/buffer_token_memory.d.cts +0 -67
  828. package/dist/memory/buffer_token_memory.d.cts.map +0 -1
  829. package/dist/memory/buffer_token_memory.d.ts +0 -67
  830. package/dist/memory/buffer_token_memory.d.ts.map +0 -1
  831. package/dist/memory/buffer_token_memory.js +0 -79
  832. package/dist/memory/buffer_token_memory.js.map +0 -1
  833. package/dist/memory/buffer_window_memory.cjs +0 -77
  834. package/dist/memory/buffer_window_memory.cjs.map +0 -1
  835. package/dist/memory/buffer_window_memory.d.cts +0 -64
  836. package/dist/memory/buffer_window_memory.d.cts.map +0 -1
  837. package/dist/memory/buffer_window_memory.d.ts +0 -64
  838. package/dist/memory/buffer_window_memory.d.ts.map +0 -1
  839. package/dist/memory/buffer_window_memory.js +0 -76
  840. package/dist/memory/buffer_window_memory.js.map +0 -1
  841. package/dist/memory/chat_memory.cjs +0 -53
  842. package/dist/memory/chat_memory.cjs.map +0 -1
  843. package/dist/memory/chat_memory.d.cts +0 -42
  844. package/dist/memory/chat_memory.d.cts.map +0 -1
  845. package/dist/memory/chat_memory.d.ts +0 -42
  846. package/dist/memory/chat_memory.d.ts.map +0 -1
  847. package/dist/memory/chat_memory.js +0 -47
  848. package/dist/memory/chat_memory.js.map +0 -1
  849. package/dist/memory/combined_memory.cjs +0 -88
  850. package/dist/memory/combined_memory.cjs.map +0 -1
  851. package/dist/memory/combined_memory.d.cts +0 -60
  852. package/dist/memory/combined_memory.d.cts.map +0 -1
  853. package/dist/memory/combined_memory.d.ts +0 -60
  854. package/dist/memory/combined_memory.d.ts.map +0 -1
  855. package/dist/memory/combined_memory.js +0 -88
  856. package/dist/memory/combined_memory.js.map +0 -1
  857. package/dist/memory/entity_memory.cjs +0 -144
  858. package/dist/memory/entity_memory.cjs.map +0 -1
  859. package/dist/memory/entity_memory.d.cts +0 -99
  860. package/dist/memory/entity_memory.d.cts.map +0 -1
  861. package/dist/memory/entity_memory.d.ts +0 -99
  862. package/dist/memory/entity_memory.d.ts.map +0 -1
  863. package/dist/memory/entity_memory.js +0 -143
  864. package/dist/memory/entity_memory.js.map +0 -1
  865. package/dist/memory/index.cjs +0 -85
  866. package/dist/memory/index.cjs.map +0 -1
  867. package/dist/memory/index.d.cts +0 -14
  868. package/dist/memory/index.d.ts +0 -14
  869. package/dist/memory/index.js +0 -39
  870. package/dist/memory/index.js.map +0 -1
  871. package/dist/memory/prompt.cjs +0 -124
  872. package/dist/memory/prompt.cjs.map +0 -1
  873. package/dist/memory/prompt.d.cts +0 -12
  874. package/dist/memory/prompt.d.cts.map +0 -1
  875. package/dist/memory/prompt.d.ts +0 -12
  876. package/dist/memory/prompt.d.ts.map +0 -1
  877. package/dist/memory/prompt.js +0 -120
  878. package/dist/memory/prompt.js.map +0 -1
  879. package/dist/memory/stores/entity/base.cjs +0 -13
  880. package/dist/memory/stores/entity/base.cjs.map +0 -1
  881. package/dist/memory/stores/entity/base.d.cts +0 -18
  882. package/dist/memory/stores/entity/base.d.cts.map +0 -1
  883. package/dist/memory/stores/entity/base.d.ts +0 -18
  884. package/dist/memory/stores/entity/base.d.ts.map +0 -1
  885. package/dist/memory/stores/entity/base.js +0 -12
  886. package/dist/memory/stores/entity/base.js.map +0 -1
  887. package/dist/memory/stores/entity/in_memory.cjs +0 -64
  888. package/dist/memory/stores/entity/in_memory.cjs.map +0 -1
  889. package/dist/memory/stores/entity/in_memory.js +0 -64
  890. package/dist/memory/stores/entity/in_memory.js.map +0 -1
  891. package/dist/memory/summary.cjs +0 -127
  892. package/dist/memory/summary.cjs.map +0 -1
  893. package/dist/memory/summary.d.cts +0 -101
  894. package/dist/memory/summary.d.cts.map +0 -1
  895. package/dist/memory/summary.d.ts +0 -101
  896. package/dist/memory/summary.d.ts.map +0 -1
  897. package/dist/memory/summary.js +0 -125
  898. package/dist/memory/summary.js.map +0 -1
  899. package/dist/memory/summary_buffer.cjs +0 -117
  900. package/dist/memory/summary_buffer.cjs.map +0 -1
  901. package/dist/memory/summary_buffer.d.cts +0 -90
  902. package/dist/memory/summary_buffer.d.cts.map +0 -1
  903. package/dist/memory/summary_buffer.d.ts +0 -90
  904. package/dist/memory/summary_buffer.d.ts.map +0 -1
  905. package/dist/memory/summary_buffer.js +0 -116
  906. package/dist/memory/summary_buffer.js.map +0 -1
  907. package/dist/memory/vector_store.cjs +0 -87
  908. package/dist/memory/vector_store.cjs.map +0 -1
  909. package/dist/memory/vector_store.d.cts +0 -81
  910. package/dist/memory/vector_store.d.cts.map +0 -1
  911. package/dist/memory/vector_store.d.ts +0 -81
  912. package/dist/memory/vector_store.d.ts.map +0 -1
  913. package/dist/memory/vector_store.js +0 -86
  914. package/dist/memory/vector_store.js.map +0 -1
  915. package/dist/output_parsers/combining.cjs +0 -61
  916. package/dist/output_parsers/combining.cjs.map +0 -1
  917. package/dist/output_parsers/combining.d.cts +0 -46
  918. package/dist/output_parsers/combining.d.cts.map +0 -1
  919. package/dist/output_parsers/combining.d.ts +0 -46
  920. package/dist/output_parsers/combining.d.ts.map +0 -1
  921. package/dist/output_parsers/combining.js +0 -60
  922. package/dist/output_parsers/combining.js.map +0 -1
  923. package/dist/output_parsers/datetime.cjs +0 -46
  924. package/dist/output_parsers/datetime.cjs.map +0 -1
  925. package/dist/output_parsers/datetime.d.cts +0 -33
  926. package/dist/output_parsers/datetime.d.cts.map +0 -1
  927. package/dist/output_parsers/datetime.d.ts +0 -33
  928. package/dist/output_parsers/datetime.d.ts.map +0 -1
  929. package/dist/output_parsers/datetime.js +0 -45
  930. package/dist/output_parsers/datetime.js.map +0 -1
  931. package/dist/output_parsers/expression.cjs +0 -86
  932. package/dist/output_parsers/expression.cjs.map +0 -1
  933. package/dist/output_parsers/expression.d.cts +0 -53
  934. package/dist/output_parsers/expression.d.cts.map +0 -1
  935. package/dist/output_parsers/expression.d.ts +0 -53
  936. package/dist/output_parsers/expression.d.ts.map +0 -1
  937. package/dist/output_parsers/expression.js +0 -79
  938. package/dist/output_parsers/expression.js.map +0 -1
  939. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs +0 -38
  940. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs.map +0 -1
  941. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js +0 -38
  942. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js.map +0 -1
  943. package/dist/output_parsers/expression_type_handlers/base.cjs +0 -130
  944. package/dist/output_parsers/expression_type_handlers/base.cjs.map +0 -1
  945. package/dist/output_parsers/expression_type_handlers/base.d.cts +0 -108
  946. package/dist/output_parsers/expression_type_handlers/base.d.cts.map +0 -1
  947. package/dist/output_parsers/expression_type_handlers/base.d.ts +0 -108
  948. package/dist/output_parsers/expression_type_handlers/base.d.ts.map +0 -1
  949. package/dist/output_parsers/expression_type_handlers/base.js +0 -129
  950. package/dist/output_parsers/expression_type_handlers/base.js.map +0 -1
  951. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs +0 -38
  952. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs.map +0 -1
  953. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js +0 -38
  954. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js.map +0 -1
  955. package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs +0 -64
  956. package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs.map +0 -1
  957. package/dist/output_parsers/expression_type_handlers/call_expression_handler.js +0 -64
  958. package/dist/output_parsers/expression_type_handlers/call_expression_handler.js.map +0 -1
  959. package/dist/output_parsers/expression_type_handlers/factory.cjs +0 -68
  960. package/dist/output_parsers/expression_type_handlers/factory.cjs.map +0 -1
  961. package/dist/output_parsers/expression_type_handlers/factory.d.cts +0 -35
  962. package/dist/output_parsers/expression_type_handlers/factory.d.cts.map +0 -1
  963. package/dist/output_parsers/expression_type_handlers/factory.d.ts +0 -35
  964. package/dist/output_parsers/expression_type_handlers/factory.d.ts.map +0 -1
  965. package/dist/output_parsers/expression_type_handlers/factory.js +0 -68
  966. package/dist/output_parsers/expression_type_handlers/factory.js.map +0 -1
  967. package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.cjs +0 -299
  968. package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.cjs.map +0 -1
  969. package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.js +0 -298
  970. package/dist/output_parsers/expression_type_handlers/grammar/parser_grammar.js.map +0 -1
  971. package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs +0 -40
  972. package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs.map +0 -1
  973. package/dist/output_parsers/expression_type_handlers/identifier_handler.js +0 -40
  974. package/dist/output_parsers/expression_type_handlers/identifier_handler.js.map +0 -1
  975. package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs +0 -48
  976. package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs.map +0 -1
  977. package/dist/output_parsers/expression_type_handlers/member_expression_handler.js +0 -48
  978. package/dist/output_parsers/expression_type_handlers/member_expression_handler.js.map +0 -1
  979. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs +0 -36
  980. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs.map +0 -1
  981. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js +0 -36
  982. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js.map +0 -1
  983. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs +0 -40
  984. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs.map +0 -1
  985. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js +0 -40
  986. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js.map +0 -1
  987. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs +0 -45
  988. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs.map +0 -1
  989. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js +0 -45
  990. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js.map +0 -1
  991. package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs +0 -37
  992. package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs.map +0 -1
  993. package/dist/output_parsers/expression_type_handlers/string_literal_handler.js +0 -37
  994. package/dist/output_parsers/expression_type_handlers/string_literal_handler.js.map +0 -1
  995. package/dist/output_parsers/expression_type_handlers/types.d.cts +0 -95
  996. package/dist/output_parsers/expression_type_handlers/types.d.cts.map +0 -1
  997. package/dist/output_parsers/expression_type_handlers/types.d.ts +0 -95
  998. package/dist/output_parsers/expression_type_handlers/types.d.ts.map +0 -1
  999. package/dist/output_parsers/fix.cjs +0 -92
  1000. package/dist/output_parsers/fix.cjs.map +0 -1
  1001. package/dist/output_parsers/fix.d.cts +0 -60
  1002. package/dist/output_parsers/fix.d.cts.map +0 -1
  1003. package/dist/output_parsers/fix.d.ts +0 -60
  1004. package/dist/output_parsers/fix.d.ts.map +0 -1
  1005. package/dist/output_parsers/fix.js +0 -91
  1006. package/dist/output_parsers/fix.js.map +0 -1
  1007. package/dist/output_parsers/http_response.cjs +0 -53
  1008. package/dist/output_parsers/http_response.cjs.map +0 -1
  1009. package/dist/output_parsers/http_response.d.cts +0 -33
  1010. package/dist/output_parsers/http_response.d.cts.map +0 -1
  1011. package/dist/output_parsers/http_response.d.ts +0 -33
  1012. package/dist/output_parsers/http_response.d.ts.map +0 -1
  1013. package/dist/output_parsers/http_response.js +0 -52
  1014. package/dist/output_parsers/http_response.js.map +0 -1
  1015. package/dist/output_parsers/index.cjs +0 -74
  1016. package/dist/output_parsers/index.cjs.map +0 -1
  1017. package/dist/output_parsers/index.d.cts +0 -11
  1018. package/dist/output_parsers/index.d.ts +0 -11
  1019. package/dist/output_parsers/index.js +0 -37
  1020. package/dist/output_parsers/index.js.map +0 -1
  1021. package/dist/output_parsers/noop.cjs +0 -43
  1022. package/dist/output_parsers/noop.cjs.map +0 -1
  1023. package/dist/output_parsers/noop.js +0 -42
  1024. package/dist/output_parsers/noop.js.map +0 -1
  1025. package/dist/output_parsers/openai_functions.cjs +0 -145
  1026. package/dist/output_parsers/openai_functions.cjs.map +0 -1
  1027. package/dist/output_parsers/openai_functions.d.cts +0 -85
  1028. package/dist/output_parsers/openai_functions.d.cts.map +0 -1
  1029. package/dist/output_parsers/openai_functions.d.ts +0 -85
  1030. package/dist/output_parsers/openai_functions.d.ts.map +0 -1
  1031. package/dist/output_parsers/openai_functions.js +0 -142
  1032. package/dist/output_parsers/openai_functions.js.map +0 -1
  1033. package/dist/output_parsers/openai_tools.cjs +0 -89
  1034. package/dist/output_parsers/openai_tools.cjs.map +0 -1
  1035. package/dist/output_parsers/openai_tools.d.cts +0 -69
  1036. package/dist/output_parsers/openai_tools.d.cts.map +0 -1
  1037. package/dist/output_parsers/openai_tools.d.ts +0 -69
  1038. package/dist/output_parsers/openai_tools.d.ts.map +0 -1
  1039. package/dist/output_parsers/openai_tools.js +0 -87
  1040. package/dist/output_parsers/openai_tools.js.map +0 -1
  1041. package/dist/output_parsers/prompts.cjs +0 -25
  1042. package/dist/output_parsers/prompts.cjs.map +0 -1
  1043. package/dist/output_parsers/prompts.js +0 -24
  1044. package/dist/output_parsers/prompts.js.map +0 -1
  1045. package/dist/output_parsers/regex.cjs +0 -74
  1046. package/dist/output_parsers/regex.cjs.map +0 -1
  1047. package/dist/output_parsers/regex.d.cts +0 -49
  1048. package/dist/output_parsers/regex.d.cts.map +0 -1
  1049. package/dist/output_parsers/regex.d.ts +0 -49
  1050. package/dist/output_parsers/regex.d.ts.map +0 -1
  1051. package/dist/output_parsers/regex.js +0 -73
  1052. package/dist/output_parsers/regex.js.map +0 -1
  1053. package/dist/output_parsers/router.cjs +0 -40
  1054. package/dist/output_parsers/router.cjs.map +0 -1
  1055. package/dist/output_parsers/router.d.cts +0 -36
  1056. package/dist/output_parsers/router.d.cts.map +0 -1
  1057. package/dist/output_parsers/router.d.ts +0 -36
  1058. package/dist/output_parsers/router.d.ts.map +0 -1
  1059. package/dist/output_parsers/router.js +0 -39
  1060. package/dist/output_parsers/router.js.map +0 -1
  1061. package/dist/output_parsers/structured.cjs +0 -164
  1062. package/dist/output_parsers/structured.cjs.map +0 -1
  1063. package/dist/output_parsers/structured.d.cts +0 -97
  1064. package/dist/output_parsers/structured.d.cts.map +0 -1
  1065. package/dist/output_parsers/structured.d.ts +0 -97
  1066. package/dist/output_parsers/structured.d.ts.map +0 -1
  1067. package/dist/output_parsers/structured.js +0 -161
  1068. package/dist/output_parsers/structured.js.map +0 -1
  1069. package/dist/retrievers/contextual_compression.cjs +0 -53
  1070. package/dist/retrievers/contextual_compression.cjs.map +0 -1
  1071. package/dist/retrievers/contextual_compression.d.cts +0 -42
  1072. package/dist/retrievers/contextual_compression.d.cts.map +0 -1
  1073. package/dist/retrievers/contextual_compression.d.ts +0 -42
  1074. package/dist/retrievers/contextual_compression.d.ts.map +0 -1
  1075. package/dist/retrievers/contextual_compression.js +0 -47
  1076. package/dist/retrievers/contextual_compression.js.map +0 -1
  1077. package/dist/retrievers/document_compressors/chain_extract.cjs +0 -103
  1078. package/dist/retrievers/document_compressors/chain_extract.cjs.map +0 -1
  1079. package/dist/retrievers/document_compressors/chain_extract.d.cts +0 -47
  1080. package/dist/retrievers/document_compressors/chain_extract.d.cts.map +0 -1
  1081. package/dist/retrievers/document_compressors/chain_extract.d.ts +0 -47
  1082. package/dist/retrievers/document_compressors/chain_extract.d.ts.map +0 -1
  1083. package/dist/retrievers/document_compressors/chain_extract.js +0 -97
  1084. package/dist/retrievers/document_compressors/chain_extract.js.map +0 -1
  1085. package/dist/retrievers/document_compressors/chain_extract_prompt.cjs +0 -16
  1086. package/dist/retrievers/document_compressors/chain_extract_prompt.cjs.map +0 -1
  1087. package/dist/retrievers/document_compressors/chain_extract_prompt.js +0 -15
  1088. package/dist/retrievers/document_compressors/chain_extract_prompt.js.map +0 -1
  1089. package/dist/retrievers/document_compressors/embeddings_filter.cjs +0 -74
  1090. package/dist/retrievers/document_compressors/embeddings_filter.cjs.map +0 -1
  1091. package/dist/retrievers/document_compressors/embeddings_filter.d.cts +0 -58
  1092. package/dist/retrievers/document_compressors/embeddings_filter.d.cts.map +0 -1
  1093. package/dist/retrievers/document_compressors/embeddings_filter.d.ts +0 -58
  1094. package/dist/retrievers/document_compressors/embeddings_filter.d.ts.map +0 -1
  1095. package/dist/retrievers/document_compressors/embeddings_filter.js +0 -68
  1096. package/dist/retrievers/document_compressors/embeddings_filter.js.map +0 -1
  1097. package/dist/retrievers/document_compressors/index.cjs +0 -69
  1098. package/dist/retrievers/document_compressors/index.cjs.map +0 -1
  1099. package/dist/retrievers/document_compressors/index.d.cts +0 -61
  1100. package/dist/retrievers/document_compressors/index.d.cts.map +0 -1
  1101. package/dist/retrievers/document_compressors/index.d.ts +0 -61
  1102. package/dist/retrievers/document_compressors/index.d.ts.map +0 -1
  1103. package/dist/retrievers/document_compressors/index.js +0 -62
  1104. package/dist/retrievers/document_compressors/index.js.map +0 -1
  1105. package/dist/retrievers/ensemble.cjs +0 -76
  1106. package/dist/retrievers/ensemble.cjs.map +0 -1
  1107. package/dist/retrievers/ensemble.d.cts +0 -39
  1108. package/dist/retrievers/ensemble.d.cts.map +0 -1
  1109. package/dist/retrievers/ensemble.d.ts +0 -39
  1110. package/dist/retrievers/ensemble.d.ts.map +0 -1
  1111. package/dist/retrievers/ensemble.js +0 -70
  1112. package/dist/retrievers/ensemble.js.map +0 -1
  1113. package/dist/retrievers/hyde.cjs +0 -128
  1114. package/dist/retrievers/hyde.cjs.map +0 -1
  1115. package/dist/retrievers/hyde.d.cts +0 -61
  1116. package/dist/retrievers/hyde.d.cts.map +0 -1
  1117. package/dist/retrievers/hyde.d.ts +0 -61
  1118. package/dist/retrievers/hyde.d.ts.map +0 -1
  1119. package/dist/retrievers/hyde.js +0 -121
  1120. package/dist/retrievers/hyde.js.map +0 -1
  1121. package/dist/retrievers/matryoshka_retriever.cjs +0 -116
  1122. package/dist/retrievers/matryoshka_retriever.cjs.map +0 -1
  1123. package/dist/retrievers/matryoshka_retriever.d.cts +0 -99
  1124. package/dist/retrievers/matryoshka_retriever.d.cts.map +0 -1
  1125. package/dist/retrievers/matryoshka_retriever.d.ts +0 -99
  1126. package/dist/retrievers/matryoshka_retriever.d.ts.map +0 -1
  1127. package/dist/retrievers/matryoshka_retriever.js +0 -110
  1128. package/dist/retrievers/matryoshka_retriever.js.map +0 -1
  1129. package/dist/retrievers/multi_query.cjs +0 -150
  1130. package/dist/retrievers/multi_query.cjs.map +0 -1
  1131. package/dist/retrievers/multi_query.d.cts +0 -59
  1132. package/dist/retrievers/multi_query.d.cts.map +0 -1
  1133. package/dist/retrievers/multi_query.d.ts +0 -59
  1134. package/dist/retrievers/multi_query.d.ts.map +0 -1
  1135. package/dist/retrievers/multi_query.js +0 -144
  1136. package/dist/retrievers/multi_query.js.map +0 -1
  1137. package/dist/retrievers/multi_vector.cjs +0 -67
  1138. package/dist/retrievers/multi_vector.cjs.map +0 -1
  1139. package/dist/retrievers/multi_vector.d.cts +0 -51
  1140. package/dist/retrievers/multi_vector.d.cts.map +0 -1
  1141. package/dist/retrievers/multi_vector.d.ts +0 -51
  1142. package/dist/retrievers/multi_vector.d.ts.map +0 -1
  1143. package/dist/retrievers/multi_vector.js +0 -61
  1144. package/dist/retrievers/multi_vector.js.map +0 -1
  1145. package/dist/retrievers/parent_document.cjs +0 -137
  1146. package/dist/retrievers/parent_document.cjs.map +0 -1
  1147. package/dist/retrievers/parent_document.d.cts +0 -92
  1148. package/dist/retrievers/parent_document.d.cts.map +0 -1
  1149. package/dist/retrievers/parent_document.d.ts +0 -92
  1150. package/dist/retrievers/parent_document.d.ts.map +0 -1
  1151. package/dist/retrievers/parent_document.js +0 -131
  1152. package/dist/retrievers/parent_document.js.map +0 -1
  1153. package/dist/retrievers/score_threshold.cjs +0 -43
  1154. package/dist/retrievers/score_threshold.cjs.map +0 -1
  1155. package/dist/retrievers/score_threshold.d.cts +0 -20
  1156. package/dist/retrievers/score_threshold.d.cts.map +0 -1
  1157. package/dist/retrievers/score_threshold.d.ts +0 -20
  1158. package/dist/retrievers/score_threshold.d.ts.map +0 -1
  1159. package/dist/retrievers/score_threshold.js +0 -37
  1160. package/dist/retrievers/score_threshold.js.map +0 -1
  1161. package/dist/retrievers/self_query/functional.cjs +0 -21
  1162. package/dist/retrievers/self_query/functional.cjs.map +0 -1
  1163. package/dist/retrievers/self_query/functional.d.cts +0 -2
  1164. package/dist/retrievers/self_query/functional.d.ts +0 -2
  1165. package/dist/retrievers/self_query/functional.js +0 -10
  1166. package/dist/retrievers/self_query/functional.js.map +0 -1
  1167. package/dist/retrievers/self_query/index.cjs +0 -130
  1168. package/dist/retrievers/self_query/index.cjs.map +0 -1
  1169. package/dist/retrievers/self_query/index.d.cts +0 -79
  1170. package/dist/retrievers/self_query/index.d.cts.map +0 -1
  1171. package/dist/retrievers/self_query/index.d.ts +0 -79
  1172. package/dist/retrievers/self_query/index.d.ts.map +0 -1
  1173. package/dist/retrievers/self_query/index.js +0 -106
  1174. package/dist/retrievers/self_query/index.js.map +0 -1
  1175. package/dist/retrievers/time_weighted.cjs +0 -236
  1176. package/dist/retrievers/time_weighted.cjs.map +0 -1
  1177. package/dist/retrievers/time_weighted.d.cts +0 -142
  1178. package/dist/retrievers/time_weighted.d.cts.map +0 -1
  1179. package/dist/retrievers/time_weighted.d.ts +0 -142
  1180. package/dist/retrievers/time_weighted.d.ts.map +0 -1
  1181. package/dist/retrievers/time_weighted.js +0 -228
  1182. package/dist/retrievers/time_weighted.js.map +0 -1
  1183. package/dist/sql_db.cjs +0 -119
  1184. package/dist/sql_db.cjs.map +0 -1
  1185. package/dist/sql_db.d.cts +0 -60
  1186. package/dist/sql_db.d.cts.map +0 -1
  1187. package/dist/sql_db.d.ts +0 -60
  1188. package/dist/sql_db.d.ts.map +0 -1
  1189. package/dist/sql_db.js +0 -113
  1190. package/dist/sql_db.js.map +0 -1
  1191. package/dist/stores/doc/base.cjs +0 -20
  1192. package/dist/stores/doc/base.cjs.map +0 -1
  1193. package/dist/stores/doc/base.d.cts +0 -15
  1194. package/dist/stores/doc/base.d.cts.map +0 -1
  1195. package/dist/stores/doc/base.d.ts +0 -15
  1196. package/dist/stores/doc/base.d.ts.map +0 -1
  1197. package/dist/stores/doc/base.js +0 -14
  1198. package/dist/stores/doc/base.js.map +0 -1
  1199. package/dist/stores/doc/in_memory.cjs +0 -94
  1200. package/dist/stores/doc/in_memory.cjs.map +0 -1
  1201. package/dist/stores/doc/in_memory.d.cts +0 -53
  1202. package/dist/stores/doc/in_memory.d.cts.map +0 -1
  1203. package/dist/stores/doc/in_memory.d.ts +0 -53
  1204. package/dist/stores/doc/in_memory.d.ts.map +0 -1
  1205. package/dist/stores/doc/in_memory.js +0 -87
  1206. package/dist/stores/doc/in_memory.js.map +0 -1
  1207. package/dist/stores/file/base.cjs +0 -13
  1208. package/dist/stores/file/base.cjs.map +0 -1
  1209. package/dist/stores/file/base.d.cts +0 -15
  1210. package/dist/stores/file/base.d.cts.map +0 -1
  1211. package/dist/stores/file/base.d.ts +0 -15
  1212. package/dist/stores/file/base.d.ts.map +0 -1
  1213. package/dist/stores/file/base.js +0 -12
  1214. package/dist/stores/file/base.js.map +0 -1
  1215. package/dist/stores/file/in_memory.cjs +0 -53
  1216. package/dist/stores/file/in_memory.cjs.map +0 -1
  1217. package/dist/stores/file/in_memory.d.cts +0 -33
  1218. package/dist/stores/file/in_memory.d.cts.map +0 -1
  1219. package/dist/stores/file/in_memory.d.ts +0 -33
  1220. package/dist/stores/file/in_memory.d.ts.map +0 -1
  1221. package/dist/stores/file/in_memory.js +0 -47
  1222. package/dist/stores/file/in_memory.js.map +0 -1
  1223. package/dist/stores/file/node.cjs +0 -52
  1224. package/dist/stores/file/node.cjs.map +0 -1
  1225. package/dist/stores/file/node.d.cts +0 -29
  1226. package/dist/stores/file/node.d.cts.map +0 -1
  1227. package/dist/stores/file/node.d.ts +0 -29
  1228. package/dist/stores/file/node.d.ts.map +0 -1
  1229. package/dist/stores/file/node.js +0 -46
  1230. package/dist/stores/file/node.js.map +0 -1
  1231. package/dist/stores/message/in_memory.cjs +0 -21
  1232. package/dist/stores/message/in_memory.cjs.map +0 -1
  1233. package/dist/stores/message/in_memory.d.cts +0 -2
  1234. package/dist/stores/message/in_memory.d.ts +0 -2
  1235. package/dist/stores/message/in_memory.js +0 -10
  1236. package/dist/stores/message/in_memory.js.map +0 -1
  1237. package/dist/text_splitter.cjs +0 -22
  1238. package/dist/text_splitter.cjs.map +0 -1
  1239. package/dist/text_splitter.d.cts +0 -1
  1240. package/dist/text_splitter.d.ts +0 -1
  1241. package/dist/text_splitter.js +0 -12
  1242. package/dist/text_splitter.js.map +0 -1
  1243. package/dist/tools/chain.cjs +0 -36
  1244. package/dist/tools/chain.cjs.map +0 -1
  1245. package/dist/tools/chain.d.cts +0 -32
  1246. package/dist/tools/chain.d.cts.map +0 -1
  1247. package/dist/tools/chain.d.ts +0 -32
  1248. package/dist/tools/chain.d.ts.map +0 -1
  1249. package/dist/tools/chain.js +0 -30
  1250. package/dist/tools/chain.js.map +0 -1
  1251. package/dist/tools/fs.cjs +0 -56
  1252. package/dist/tools/fs.cjs.map +0 -1
  1253. package/dist/tools/fs.d.cts +0 -92
  1254. package/dist/tools/fs.d.cts.map +0 -1
  1255. package/dist/tools/fs.d.ts +0 -92
  1256. package/dist/tools/fs.d.ts.map +0 -1
  1257. package/dist/tools/fs.js +0 -54
  1258. package/dist/tools/fs.js.map +0 -1
  1259. package/dist/tools/index.cjs +0 -68
  1260. package/dist/tools/index.cjs.map +0 -1
  1261. package/dist/tools/index.d.cts +0 -8
  1262. package/dist/tools/index.d.ts +0 -8
  1263. package/dist/tools/index.js +0 -30
  1264. package/dist/tools/index.js.map +0 -1
  1265. package/dist/tools/json.cjs +0 -107
  1266. package/dist/tools/json.cjs.map +0 -1
  1267. package/dist/tools/json.d.cts +0 -65
  1268. package/dist/tools/json.d.cts.map +0 -1
  1269. package/dist/tools/json.d.ts +0 -65
  1270. package/dist/tools/json.d.ts.map +0 -1
  1271. package/dist/tools/json.js +0 -104
  1272. package/dist/tools/json.js.map +0 -1
  1273. package/dist/tools/render.cjs +0 -55
  1274. package/dist/tools/render.cjs.map +0 -1
  1275. package/dist/tools/render.d.cts +0 -32
  1276. package/dist/tools/render.d.cts.map +0 -1
  1277. package/dist/tools/render.d.ts +0 -32
  1278. package/dist/tools/render.d.ts.map +0 -1
  1279. package/dist/tools/render.js +0 -48
  1280. package/dist/tools/render.js.map +0 -1
  1281. package/dist/tools/requests.cjs +0 -73
  1282. package/dist/tools/requests.cjs.map +0 -1
  1283. package/dist/tools/requests.d.cts +0 -56
  1284. package/dist/tools/requests.d.cts.map +0 -1
  1285. package/dist/tools/requests.d.ts +0 -56
  1286. package/dist/tools/requests.d.ts.map +0 -1
  1287. package/dist/tools/requests.js +0 -71
  1288. package/dist/tools/requests.js.map +0 -1
  1289. package/dist/tools/retriever.cjs +0 -30
  1290. package/dist/tools/retriever.cjs.map +0 -1
  1291. package/dist/tools/retriever.d.cts +0 -19
  1292. package/dist/tools/retriever.d.cts.map +0 -1
  1293. package/dist/tools/retriever.d.ts +0 -19
  1294. package/dist/tools/retriever.d.ts.map +0 -1
  1295. package/dist/tools/retriever.js +0 -24
  1296. package/dist/tools/retriever.js.map +0 -1
  1297. package/dist/tools/sql.cjs +0 -165
  1298. package/dist/tools/sql.cjs.map +0 -1
  1299. package/dist/tools/sql.d.cts +0 -86
  1300. package/dist/tools/sql.d.cts.map +0 -1
  1301. package/dist/tools/sql.d.ts +0 -86
  1302. package/dist/tools/sql.d.ts.map +0 -1
  1303. package/dist/tools/sql.js +0 -156
  1304. package/dist/tools/sql.js.map +0 -1
  1305. package/dist/tools/vectorstore.cjs +0 -45
  1306. package/dist/tools/vectorstore.cjs.map +0 -1
  1307. package/dist/tools/vectorstore.d.cts +0 -40
  1308. package/dist/tools/vectorstore.d.cts.map +0 -1
  1309. package/dist/tools/vectorstore.d.ts +0 -40
  1310. package/dist/tools/vectorstore.d.ts.map +0 -1
  1311. package/dist/tools/vectorstore.js +0 -44
  1312. package/dist/tools/vectorstore.js.map +0 -1
  1313. package/dist/tools/webbrowser.cjs +0 -176
  1314. package/dist/tools/webbrowser.cjs.map +0 -1
  1315. package/dist/tools/webbrowser.d.cts +0 -69
  1316. package/dist/tools/webbrowser.d.cts.map +0 -1
  1317. package/dist/tools/webbrowser.d.ts +0 -69
  1318. package/dist/tools/webbrowser.d.ts.map +0 -1
  1319. package/dist/tools/webbrowser.js +0 -168
  1320. package/dist/tools/webbrowser.js.map +0 -1
  1321. package/dist/types/expression-parser.d.cts +0 -91
  1322. package/dist/types/expression-parser.d.cts.map +0 -1
  1323. package/dist/types/expression-parser.d.ts +0 -91
  1324. package/dist/types/expression-parser.d.ts.map +0 -1
  1325. package/dist/types/type-utils.d.cts +0 -7
  1326. package/dist/types/type-utils.d.cts.map +0 -1
  1327. package/dist/types/type-utils.d.ts +0 -7
  1328. package/dist/types/type-utils.d.ts.map +0 -1
  1329. package/dist/util/document.cjs +0 -23
  1330. package/dist/util/document.cjs.map +0 -1
  1331. package/dist/util/document.d.cts +0 -15
  1332. package/dist/util/document.d.cts.map +0 -1
  1333. package/dist/util/document.d.ts +0 -15
  1334. package/dist/util/document.d.ts.map +0 -1
  1335. package/dist/util/document.js +0 -17
  1336. package/dist/util/document.js.map +0 -1
  1337. package/dist/util/entrypoint_deprecation.cjs +0 -1
  1338. package/dist/util/entrypoint_deprecation.js +0 -1
  1339. package/dist/util/env.cjs +0 -2
  1340. package/dist/util/env.js +0 -1
  1341. package/dist/util/extname.cjs +0 -7
  1342. package/dist/util/extname.cjs.map +0 -1
  1343. package/dist/util/extname.js +0 -6
  1344. package/dist/util/extname.js.map +0 -1
  1345. package/dist/util/hub.cjs +0 -39
  1346. package/dist/util/hub.cjs.map +0 -1
  1347. package/dist/util/hub.js +0 -38
  1348. package/dist/util/hub.js.map +0 -1
  1349. package/dist/util/load.cjs +0 -15
  1350. package/dist/util/load.cjs.map +0 -1
  1351. package/dist/util/load.d.cts +0 -6
  1352. package/dist/util/load.d.cts.map +0 -1
  1353. package/dist/util/load.d.ts +0 -6
  1354. package/dist/util/load.d.ts.map +0 -1
  1355. package/dist/util/load.js +0 -14
  1356. package/dist/util/load.js.map +0 -1
  1357. package/dist/util/math.cjs +0 -22
  1358. package/dist/util/math.cjs.map +0 -1
  1359. package/dist/util/math.d.cts +0 -1
  1360. package/dist/util/math.d.ts +0 -1
  1361. package/dist/util/math.js +0 -12
  1362. package/dist/util/math.js.map +0 -1
  1363. package/dist/util/ml-distance/distances.cjs +0 -35
  1364. package/dist/util/ml-distance/distances.cjs.map +0 -1
  1365. package/dist/util/ml-distance/distances.js +0 -33
  1366. package/dist/util/ml-distance/distances.js.map +0 -1
  1367. package/dist/util/ml-distance/similarities.cjs +0 -23
  1368. package/dist/util/ml-distance/similarities.cjs.map +0 -1
  1369. package/dist/util/ml-distance/similarities.d.cts +0 -11
  1370. package/dist/util/ml-distance/similarities.d.cts.map +0 -1
  1371. package/dist/util/ml-distance/similarities.d.ts +0 -11
  1372. package/dist/util/ml-distance/similarities.d.ts.map +0 -1
  1373. package/dist/util/ml-distance/similarities.js +0 -22
  1374. package/dist/util/ml-distance/similarities.js.map +0 -1
  1375. package/dist/util/ml-distance-euclidean/euclidean.cjs +0 -14
  1376. package/dist/util/ml-distance-euclidean/euclidean.cjs.map +0 -1
  1377. package/dist/util/ml-distance-euclidean/euclidean.js +0 -13
  1378. package/dist/util/ml-distance-euclidean/euclidean.js.map +0 -1
  1379. package/dist/util/openapi.cjs +0 -149
  1380. package/dist/util/openapi.cjs.map +0 -1
  1381. package/dist/util/openapi.d.cts +0 -83
  1382. package/dist/util/openapi.d.cts.map +0 -1
  1383. package/dist/util/openapi.d.ts +0 -83
  1384. package/dist/util/openapi.d.ts.map +0 -1
  1385. package/dist/util/openapi.js +0 -148
  1386. package/dist/util/openapi.js.map +0 -1
  1387. package/dist/util/parse.cjs +0 -22
  1388. package/dist/util/parse.cjs.map +0 -1
  1389. package/dist/util/parse.js +0 -21
  1390. package/dist/util/parse.js.map +0 -1
  1391. package/dist/util/set.cjs +0 -35
  1392. package/dist/util/set.cjs.map +0 -1
  1393. package/dist/util/set.js +0 -32
  1394. package/dist/util/set.js.map +0 -1
  1395. package/dist/util/sql_utils.cjs +0 -178
  1396. package/dist/util/sql_utils.cjs.map +0 -1
  1397. package/dist/util/sql_utils.d.cts +0 -31
  1398. package/dist/util/sql_utils.d.cts.map +0 -1
  1399. package/dist/util/sql_utils.d.ts +0 -31
  1400. package/dist/util/sql_utils.d.ts.map +0 -1
  1401. package/dist/util/sql_utils.js +0 -173
  1402. package/dist/util/sql_utils.js.map +0 -1
  1403. package/dist/util/time.cjs +0 -25
  1404. package/dist/util/time.cjs.map +0 -1
  1405. package/dist/util/time.d.cts +0 -10
  1406. package/dist/util/time.d.cts.map +0 -1
  1407. package/dist/util/time.d.ts +0 -10
  1408. package/dist/util/time.d.ts.map +0 -1
  1409. package/dist/util/time.js +0 -19
  1410. package/dist/util/time.js.map +0 -1
  1411. package/dist/vectorstores/memory.cjs +0 -265
  1412. package/dist/vectorstores/memory.cjs.map +0 -1
  1413. package/dist/vectorstores/memory.d.cts +0 -216
  1414. package/dist/vectorstores/memory.d.cts.map +0 -1
  1415. package/dist/vectorstores/memory.d.ts +0 -216
  1416. package/dist/vectorstores/memory.d.ts.map +0 -1
  1417. package/dist/vectorstores/memory.js +0 -259
  1418. package/dist/vectorstores/memory.js.map +0 -1
@@ -1 +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"}
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().optional(),\n /**\n * The time-to-live for the cached prompt.\n * @default \"5m\"\n */\n ttl: z.enum([\"5m\", \"1h\"]).optional(),\n /**\n * The minimum number of messages required before caching is applied.\n * @default 3\n */\n minMessagesToCache: z.number().optional(),\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.enum([\"ignore\", \"warn\", \"raise\"]).optional(),\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\";\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: (request, state, runtime) => {\n /**\n * Prefer runtime context values over middleware options values over defaults\n */\n const enableCaching =\n runtime.context.enableCaching ??\n middlewareOptions?.enableCaching ??\n DEFAULT_ENABLE_CACHING;\n const ttl = runtime.context.ttl ?? middlewareOptions?.ttl ?? DEFAULT_TTL;\n const minMessagesToCache =\n runtime.context.minMessagesToCache ??\n middlewareOptions?.minMessagesToCache ??\n DEFAULT_MIN_MESSAGES_TO_CACHE;\n const unsupportedModelBehavior =\n runtime.context.unsupportedModelBehavior ??\n middlewareOptions?.unsupportedModelBehavior ??\n DEFAULT_UNSUPPORTED_MODEL_BEHAVIOR;\n\n // Skip if caching is disabled\n if (!enableCaching || !request.model) {\n return undefined;\n }\n\n const isAnthropicModel =\n request.model.getName() === \"ChatAnthropic\" ||\n (request.model.getName() === \"ConfigurableModel\" &&\n (request.model as ConfigurableModel)._defaultConfig?.modelProvider ===\n \"anthropic\");\n if (!isAnthropicModel) {\n // Get model name for better error context\n const modelName = request.model.getName();\n const modelInfo =\n request.model.getName() === \"ConfigurableModel\"\n ? `${modelName} (${\n (request.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 + (request.systemPrompt ? 1 : 0);\n\n if (messagesCount < minMessagesToCache) {\n return request;\n }\n\n /**\n * Add cache_control to the last message\n */\n const lastMessage = request.messages.at(-1);\n if (!lastMessage) {\n return request;\n }\n\n const NewMessageConstructor =\n Object.getPrototypeOf(lastMessage).constructor;\n if (Array.isArray(lastMessage.content)) {\n const newMessage = new NewMessageConstructor({\n ...lastMessage,\n 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 });\n return {\n ...request,\n messages: [...request.messages.slice(0, -1), newMessage],\n };\n } else if (typeof lastMessage.content === \"string\") {\n const newMessage = new NewMessageConstructor({\n content: [\n {\n type: \"text\",\n text: lastMessage.content,\n cache_control: {\n type: \"ephemeral\",\n ttl,\n },\n },\n ],\n });\n return {\n ...request,\n messages: [...request.messages.slice(0, -1), newMessage],\n };\n }\n\n throw new PromptCachingMiddlewareError(\n \"Last message content is not a string or array\"\n );\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,UAAU;CAKrC,KAAK,EAAE,KAAK,CAAC,MAAM,IAAK,EAAC,CAAC,UAAU;CAKpC,oBAAoB,EAAE,QAAQ,CAAC,UAAU;CAQzC,0BAA0B,EAAE,KAAK;EAAC;EAAU;EAAQ;CAAQ,EAAC,CAAC,UAAU;AACzE,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;;;;GAI/C,MAAM,gBACJ,QAAQ,QAAQ,iBAChB,mBAAmB,iBACnB;GACF,MAAM,MAAM,QAAQ,QAAQ,OAAO,mBAAmB,OAAO;GAC7D,MAAM,qBACJ,QAAQ,QAAQ,sBAChB,mBAAmB,sBACnB;GACF,MAAM,2BACJ,QAAQ,QAAQ,4BAChB,mBAAmB,4BACnB;AAGF,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;GAGT,MAAM,wBACJ,OAAO,eAAe,YAAY,CAAC;AACrC,OAAI,MAAM,QAAQ,YAAY,QAAQ,EAAE;IACtC,MAAM,aAAa,IAAI,sBAAsB;KAC3C,GAAG;KACH,SAAS,CACP,GAAG,YAAY,QAAQ,MAAM,GAAG,GAAG,EACnC;MACE,GAAG,YAAY,QAAQ,GAAG,GAAG;MAC7B,eAAe;OACb,MAAM;OACN;MACD;KACF,CACF;IACF;AACD,WAAO;KACL,GAAG;KACH,UAAU,CAAC,GAAG,QAAQ,SAAS,MAAM,GAAG,GAAG,EAAE,UAAW;IACzD;GACF,WAAU,OAAO,YAAY,YAAY,UAAU;IAClD,MAAM,aAAa,IAAI,sBAAsB,EAC3C,SAAS,CACP;KACE,MAAM;KACN,MAAM,YAAY;KAClB,eAAe;MACb,MAAM;MACN;KACD;IACF,CACF,EACF;AACD,WAAO;KACL,GAAG;KACH,UAAU,CAAC,GAAG,QAAQ,SAAS,MAAM,GAAG,GAAG,EAAE,UAAW;IACzD;GACF;AAED,SAAM,IAAI,6BACR;EAEH;CACF,EAAC;AACH"}
@@ -1,5 +1,6 @@
1
1
  const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
2
2
  const require_middleware = require('../middleware.cjs');
3
+ const require_utils = require('./utils.cjs');
3
4
  const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
4
5
  const __langchain_langgraph = require_rolldown_runtime.__toESM(require("@langchain/langgraph"));
5
6
  const __langchain_core_utils_types = require_rolldown_runtime.__toESM(require("@langchain/core/utils/types"));
@@ -48,26 +49,6 @@ const contextSchema = zod_v3.z.object({
48
49
  summaryPrefix: zod_v3.z.string().default(SUMMARY_PREFIX)
49
50
  });
50
51
  /**
51
- * Default token counter that approximates based on character count
52
- * @param messages Messages to count tokens for
53
- * @returns Approximate token count
54
- */
55
- function countTokensApproximately(messages) {
56
- let totalChars = 0;
57
- for (const msg of messages) {
58
- let textContent;
59
- if (typeof msg.content === "string") textContent = msg.content;
60
- else if (Array.isArray(msg.content)) textContent = msg.content.map((item) => {
61
- if (typeof item === "string") return item;
62
- if (item.type === "text" && "text" in item) return item.text;
63
- return "";
64
- }).join("");
65
- else textContent = "";
66
- totalChars += textContent.length;
67
- }
68
- return Math.ceil(totalChars / 4);
69
- }
70
- /**
71
52
  * Summarization middleware that automatically summarizes conversation history when token limits are approached.
72
53
  *
73
54
  * This middleware monitors message token counts and automatically summarizes older
@@ -79,7 +60,7 @@ function countTokensApproximately(messages) {
79
60
  *
80
61
  * @example
81
62
  * ```ts
82
- * import { summarizationMiddleware } from "langchain/middleware";
63
+ * import { summarizationMiddleware } from "langchain";
83
64
  * import { createAgent } from "langchain";
84
65
  *
85
66
  * const agent = createAgent({
@@ -118,7 +99,7 @@ function summarizationMiddleware(options) {
118
99
  };
119
100
  const { messages } = state;
120
101
  ensureMessageIds(messages);
121
- const tokenCounter = config.tokenCounter || countTokensApproximately;
102
+ const tokenCounter = config.tokenCounter || require_utils.countTokensApproximately;
122
103
  const totalTokens = await tokenCounter(messages);
123
104
  if (config.maxTokensBeforeSummary == null || totalTokens < config.maxTokensBeforeSummary) return;
124
105
  const { systemPrompt, conversationMessages } = splitSystemMessage(messages);
@@ -269,6 +250,5 @@ async function trimMessagesForSummary(messages, tokenCounter) {
269
250
  }
270
251
 
271
252
  //#endregion
272
- exports.countTokensApproximately = countTokensApproximately;
273
253
  exports.summarizationMiddleware = summarizationMiddleware;
274
254
  //# sourceMappingURL=summarization.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarization.cjs","names":["z","messages: BaseMessage[]","textContent: string","options: SummarizationMiddlewareConfig","createMiddleware","RemoveMessage","REMOVE_ALL_MESSAGES","SystemMessage","systemPrompt: SystemMessage | null","conversationMessages: BaseMessage[]","cutoffIndex: number","originalSystemMessage: SystemMessage | null","summary: string","summaryPrefix: string","content","messagesToKeep: number","message: BaseMessage","AIMessage","aiMessage: AIMessage","aiMessageIndex: number","toolCallIds: Set<string>","ToolMessage","messagesToSummarize: BaseMessage[]","model: BaseLanguageModel","summaryPrompt: string","tokenCounter: TokenCounter"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n BaseMessage,\n AIMessage,\n SystemMessage,\n ToolMessage,\n RemoveMessage,\n trimMessages,\n} from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport {\n interopParse,\n InferInteropZodOutput,\n InferInteropZodInput,\n} from \"@langchain/core/utils/types\";\nimport { REMOVE_ALL_MESSAGES } from \"@langchain/langgraph\";\nimport { createMiddleware } from \"../middleware.js\";\n\nconst DEFAULT_SUMMARY_PROMPT = `<role>\nContext Extraction Assistant\n</role>\n\n<primary_objective>\nYour sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.\n</primary_objective>\n\n<objective_information>\nYou're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.\nThis context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.\n</objective_information>\n\n<instructions>\nThe conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.\nYou want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.\n</instructions>\n\nThe user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:\n\nWith all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.\nRespond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.\n\n<messages>\nMessages to summarize:\n{messages}\n</messages>`;\n\nconst SUMMARY_PREFIX = \"## Previous conversation summary:\";\n\nconst DEFAULT_MESSAGES_TO_KEEP = 20;\nconst DEFAULT_TRIM_TOKEN_LIMIT = 4000;\nconst DEFAULT_FALLBACK_MESSAGE_COUNT = 15;\nconst SEARCH_RANGE_FOR_TOOL_PAIRS = 5;\n\ntype TokenCounter = (messages: BaseMessage[]) => number | Promise<number>;\n\nconst contextSchema = z.object({\n model: z.custom<BaseLanguageModel>(),\n maxTokensBeforeSummary: z.number().optional(),\n messagesToKeep: z.number().default(DEFAULT_MESSAGES_TO_KEEP),\n tokenCounter: z\n .function()\n .args(z.array(z.any()))\n .returns(z.union([z.number(), z.promise(z.number())]))\n .optional(),\n summaryPrompt: z.string().default(DEFAULT_SUMMARY_PROMPT),\n summaryPrefix: z.string().default(SUMMARY_PREFIX),\n});\n\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<\n typeof contextSchema\n>;\n\n/**\n * Default token counter that approximates based on character count\n * @param messages Messages to count tokens for\n * @returns Approximate token count\n */\nexport function countTokensApproximately(messages: BaseMessage[]): number {\n let totalChars = 0;\n for (const msg of messages) {\n let textContent: string;\n if (typeof msg.content === \"string\") {\n textContent = msg.content;\n } else if (Array.isArray(msg.content)) {\n textContent = msg.content\n .map((item) => {\n if (typeof item === \"string\") return item;\n if (item.type === \"text\" && \"text\" in item) return item.text;\n return \"\";\n })\n .join(\"\");\n } else {\n textContent = \"\";\n }\n totalChars += textContent.length;\n }\n // Approximate 1 token = 4 characters\n return Math.ceil(totalChars / 4);\n}\n\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain/middleware\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport function summarizationMiddleware(\n options: SummarizationMiddlewareConfig\n) {\n return createMiddleware({\n name: \"SummarizationMiddleware\",\n contextSchema,\n beforeModel: async (state, runtime) => {\n /**\n * Parse user options to get their explicit values\n */\n const userOptions = interopParse(contextSchema, options);\n\n /**\n * Merge context with user options, preferring user options when context has default values\n */\n const config = {\n model: userOptions.model,\n maxTokensBeforeSummary:\n runtime.context.maxTokensBeforeSummary !== undefined\n ? runtime.context.maxTokensBeforeSummary\n : userOptions.maxTokensBeforeSummary,\n messagesToKeep:\n runtime.context.messagesToKeep === DEFAULT_MESSAGES_TO_KEEP\n ? userOptions.messagesToKeep\n : runtime.context.messagesToKeep ?? userOptions.messagesToKeep,\n tokenCounter:\n runtime.context.tokenCounter !== undefined\n ? runtime.context.tokenCounter\n : userOptions.tokenCounter,\n summaryPrompt:\n runtime.context.summaryPrompt === DEFAULT_SUMMARY_PROMPT\n ? userOptions.summaryPrompt\n : runtime.context.summaryPrompt ?? userOptions.summaryPrompt,\n summaryPrefix:\n runtime.context.summaryPrefix === SUMMARY_PREFIX\n ? userOptions.summaryPrefix\n : runtime.context.summaryPrefix ?? userOptions.summaryPrefix,\n } as InferInteropZodOutput<typeof contextSchema>;\n const { messages } = state;\n\n // Ensure all messages have IDs\n ensureMessageIds(messages);\n\n const tokenCounter = config.tokenCounter || countTokensApproximately;\n const totalTokens = await tokenCounter(messages);\n\n if (\n config.maxTokensBeforeSummary == null ||\n totalTokens < config.maxTokensBeforeSummary\n ) {\n return;\n }\n\n const { systemPrompt, conversationMessages } =\n splitSystemMessage(messages);\n const cutoffIndex = findSafeCutoff(\n conversationMessages,\n config.messagesToKeep\n );\n\n if (cutoffIndex <= 0) {\n return;\n }\n\n const { messagesToSummarize, preservedMessages } = partitionMessages(\n systemPrompt,\n conversationMessages,\n cutoffIndex\n );\n\n const summary = await createSummary(\n messagesToSummarize,\n config.model,\n config.summaryPrompt,\n tokenCounter\n );\n\n const updatedSystemMessage = buildUpdatedSystemMessage(\n systemPrompt,\n summary,\n config.summaryPrefix\n );\n\n return {\n messages: [\n new RemoveMessage({ id: REMOVE_ALL_MESSAGES }),\n updatedSystemMessage,\n ...preservedMessages,\n ],\n };\n },\n });\n}\n\n/**\n * Ensure all messages have unique IDs\n */\nfunction ensureMessageIds(messages: BaseMessage[]): void {\n for (const msg of messages) {\n if (!msg.id) {\n msg.id = uuid();\n }\n }\n}\n\n/**\n * Separate system message from conversation messages\n */\nfunction splitSystemMessage(messages: BaseMessage[]): {\n systemPrompt: SystemMessage | null;\n conversationMessages: BaseMessage[];\n} {\n if (messages.length > 0 && SystemMessage.isInstance(messages[0])) {\n return {\n systemPrompt: messages[0] as SystemMessage,\n conversationMessages: messages.slice(1),\n };\n }\n return {\n systemPrompt: null,\n conversationMessages: messages,\n };\n}\n\n/**\n * Partition messages into those to summarize and those to preserve\n */\nfunction partitionMessages(\n systemPrompt: SystemMessage | null,\n conversationMessages: BaseMessage[],\n cutoffIndex: number\n): { messagesToSummarize: BaseMessage[]; preservedMessages: BaseMessage[] } {\n const messagesToSummarize = conversationMessages.slice(0, cutoffIndex);\n const preservedMessages = conversationMessages.slice(cutoffIndex);\n\n // Include system message in messages to summarize to capture previous summaries\n if (systemPrompt) {\n messagesToSummarize.unshift(systemPrompt);\n }\n\n return { messagesToSummarize, preservedMessages };\n}\n\n/**\n * Build updated system message incorporating the summary\n */\nfunction buildUpdatedSystemMessage(\n originalSystemMessage: SystemMessage | null,\n summary: string,\n summaryPrefix: string\n): SystemMessage {\n let originalContent = \"\";\n if (originalSystemMessage) {\n const { content } = originalSystemMessage;\n if (typeof content === \"string\") {\n originalContent = content.split(summaryPrefix)[0].trim();\n }\n }\n\n const content = originalContent\n ? `${originalContent}\\n${summaryPrefix}\\n${summary}`\n : `${summaryPrefix}\\n${summary}`;\n\n return new SystemMessage({\n content,\n id: originalSystemMessage?.id || uuid(),\n });\n}\n\n/**\n * Find safe cutoff point that preserves AI/Tool message pairs\n */\nfunction findSafeCutoff(\n messages: BaseMessage[],\n messagesToKeep: number\n): number {\n if (messages.length <= messagesToKeep) {\n return 0;\n }\n\n const targetCutoff = messages.length - messagesToKeep;\n\n for (let i = targetCutoff; i >= 0; i--) {\n if (isSafeCutoffPoint(messages, i)) {\n return i;\n }\n }\n\n return 0;\n}\n\n/**\n * Check if cutting at index would separate AI/Tool message pairs\n */\nfunction isSafeCutoffPoint(\n messages: BaseMessage[],\n cutoffIndex: number\n): boolean {\n if (cutoffIndex >= messages.length) {\n return true;\n }\n\n const searchStart = Math.max(0, cutoffIndex - SEARCH_RANGE_FOR_TOOL_PAIRS);\n const searchEnd = Math.min(\n messages.length,\n cutoffIndex + SEARCH_RANGE_FOR_TOOL_PAIRS\n );\n\n for (let i = searchStart; i < searchEnd; i++) {\n if (!hasToolCalls(messages[i])) {\n continue;\n }\n\n const toolCallIds = extractToolCallIds(messages[i] as AIMessage);\n if (cutoffSeparatesToolPair(messages, i, cutoffIndex, toolCallIds)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if message is an AI message with tool calls\n */\nfunction hasToolCalls(message: BaseMessage): boolean {\n return (\n AIMessage.isInstance(message) &&\n \"tool_calls\" in message &&\n Array.isArray(message.tool_calls) &&\n message.tool_calls.length > 0\n );\n}\n\n/**\n * Extract tool call IDs from an AI message\n */\nfunction extractToolCallIds(aiMessage: AIMessage): Set<string> {\n const toolCallIds = new Set<string>();\n if (aiMessage.tool_calls) {\n for (const toolCall of aiMessage.tool_calls) {\n const id =\n typeof toolCall === \"object\" && \"id\" in toolCall ? toolCall.id : null;\n if (id) {\n toolCallIds.add(id);\n }\n }\n }\n return toolCallIds;\n}\n\n/**\n * Check if cutoff separates an AI message from its corresponding tool messages\n */\nfunction cutoffSeparatesToolPair(\n messages: BaseMessage[],\n aiMessageIndex: number,\n cutoffIndex: number,\n toolCallIds: Set<string>\n): boolean {\n for (let j = aiMessageIndex + 1; j < messages.length; j++) {\n const message = messages[j];\n if (\n ToolMessage.isInstance(message) &&\n toolCallIds.has(message.tool_call_id)\n ) {\n const aiBeforeCutoff = aiMessageIndex < cutoffIndex;\n const toolBeforeCutoff = j < cutoffIndex;\n if (aiBeforeCutoff !== toolBeforeCutoff) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Generate summary for the given messages\n */\nasync function createSummary(\n messagesToSummarize: BaseMessage[],\n model: BaseLanguageModel,\n summaryPrompt: string,\n tokenCounter: TokenCounter\n): Promise<string> {\n if (!messagesToSummarize.length) {\n return \"No previous conversation history.\";\n }\n\n const trimmedMessages = await trimMessagesForSummary(\n messagesToSummarize,\n tokenCounter\n );\n\n if (!trimmedMessages.length) {\n return \"Previous conversation was too long to summarize.\";\n }\n\n try {\n const formattedPrompt = summaryPrompt.replace(\n \"{messages}\",\n JSON.stringify(trimmedMessages, null, 2)\n );\n const response = await model.invoke(formattedPrompt);\n const { content } = response;\n return typeof content === \"string\"\n ? content.trim()\n : \"Error generating summary: Invalid response format\";\n } catch (e) {\n return `Error generating summary: ${e}`;\n }\n}\n\n/**\n * Trim messages to fit within summary generation limits\n */\nasync function trimMessagesForSummary(\n messages: BaseMessage[],\n tokenCounter: TokenCounter\n): Promise<BaseMessage[]> {\n try {\n return await trimMessages(messages, {\n maxTokens: DEFAULT_TRIM_TOKEN_LIMIT,\n tokenCounter: async (msgs) => Promise.resolve(tokenCounter(msgs)),\n strategy: \"last\",\n allowPartial: true,\n includeSystem: true,\n });\n } catch {\n // Fallback to last N messages if trimming fails\n return messages.slice(-DEFAULT_FALLBACK_MESSAGE_COUNT);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"summarization.cjs","names":["z","options: SummarizationMiddlewareConfig","createMiddleware","countTokensApproximately","RemoveMessage","REMOVE_ALL_MESSAGES","messages: BaseMessage[]","SystemMessage","systemPrompt: SystemMessage | null","conversationMessages: BaseMessage[]","cutoffIndex: number","originalSystemMessage: SystemMessage | null","summary: string","summaryPrefix: string","content","messagesToKeep: number","message: BaseMessage","AIMessage","aiMessage: AIMessage","aiMessageIndex: number","toolCallIds: Set<string>","ToolMessage","messagesToSummarize: BaseMessage[]","model: BaseLanguageModel","summaryPrompt: string","tokenCounter: TokenCounter"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n BaseMessage,\n AIMessage,\n SystemMessage,\n ToolMessage,\n RemoveMessage,\n trimMessages,\n} from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport {\n interopParse,\n InferInteropZodOutput,\n InferInteropZodInput,\n} from \"@langchain/core/utils/types\";\nimport { REMOVE_ALL_MESSAGES } from \"@langchain/langgraph\";\nimport { createMiddleware } from \"../middleware.js\";\nimport { countTokensApproximately } from \"./utils.js\";\n\nconst DEFAULT_SUMMARY_PROMPT = `<role>\nContext Extraction Assistant\n</role>\n\n<primary_objective>\nYour sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.\n</primary_objective>\n\n<objective_information>\nYou're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.\nThis context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.\n</objective_information>\n\n<instructions>\nThe conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.\nYou want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.\n</instructions>\n\nThe user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:\n\nWith all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.\nRespond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.\n\n<messages>\nMessages to summarize:\n{messages}\n</messages>`;\n\nconst SUMMARY_PREFIX = \"## Previous conversation summary:\";\n\nconst DEFAULT_MESSAGES_TO_KEEP = 20;\nconst DEFAULT_TRIM_TOKEN_LIMIT = 4000;\nconst DEFAULT_FALLBACK_MESSAGE_COUNT = 15;\nconst SEARCH_RANGE_FOR_TOOL_PAIRS = 5;\n\ntype TokenCounter = (messages: BaseMessage[]) => number | Promise<number>;\n\nconst contextSchema = z.object({\n model: z.custom<BaseLanguageModel>(),\n maxTokensBeforeSummary: z.number().optional(),\n messagesToKeep: z.number().default(DEFAULT_MESSAGES_TO_KEEP),\n tokenCounter: z\n .function()\n .args(z.array(z.any()))\n .returns(z.union([z.number(), z.promise(z.number())]))\n .optional(),\n summaryPrompt: z.string().default(DEFAULT_SUMMARY_PROMPT),\n summaryPrefix: z.string().default(SUMMARY_PREFIX),\n});\n\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<\n typeof contextSchema\n>;\n\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport function summarizationMiddleware(\n options: SummarizationMiddlewareConfig\n) {\n return createMiddleware({\n name: \"SummarizationMiddleware\",\n contextSchema,\n beforeModel: async (state, runtime) => {\n /**\n * Parse user options to get their explicit values\n */\n const userOptions = interopParse(contextSchema, options);\n\n /**\n * Merge context with user options, preferring user options when context has default values\n */\n const config = {\n model: userOptions.model,\n maxTokensBeforeSummary:\n runtime.context.maxTokensBeforeSummary !== undefined\n ? runtime.context.maxTokensBeforeSummary\n : userOptions.maxTokensBeforeSummary,\n messagesToKeep:\n runtime.context.messagesToKeep === DEFAULT_MESSAGES_TO_KEEP\n ? userOptions.messagesToKeep\n : runtime.context.messagesToKeep ?? userOptions.messagesToKeep,\n tokenCounter:\n runtime.context.tokenCounter !== undefined\n ? runtime.context.tokenCounter\n : userOptions.tokenCounter,\n summaryPrompt:\n runtime.context.summaryPrompt === DEFAULT_SUMMARY_PROMPT\n ? userOptions.summaryPrompt\n : runtime.context.summaryPrompt ?? userOptions.summaryPrompt,\n summaryPrefix:\n runtime.context.summaryPrefix === SUMMARY_PREFIX\n ? userOptions.summaryPrefix\n : runtime.context.summaryPrefix ?? userOptions.summaryPrefix,\n } as InferInteropZodOutput<typeof contextSchema>;\n const { messages } = state;\n\n // Ensure all messages have IDs\n ensureMessageIds(messages);\n\n const tokenCounter = config.tokenCounter || countTokensApproximately;\n const totalTokens = await tokenCounter(messages);\n\n if (\n config.maxTokensBeforeSummary == null ||\n totalTokens < config.maxTokensBeforeSummary\n ) {\n return;\n }\n\n const { systemPrompt, conversationMessages } =\n splitSystemMessage(messages);\n const cutoffIndex = findSafeCutoff(\n conversationMessages,\n config.messagesToKeep\n );\n\n if (cutoffIndex <= 0) {\n return;\n }\n\n const { messagesToSummarize, preservedMessages } = partitionMessages(\n systemPrompt,\n conversationMessages,\n cutoffIndex\n );\n\n const summary = await createSummary(\n messagesToSummarize,\n config.model,\n config.summaryPrompt,\n tokenCounter\n );\n\n const updatedSystemMessage = buildUpdatedSystemMessage(\n systemPrompt,\n summary,\n config.summaryPrefix\n );\n\n return {\n messages: [\n new RemoveMessage({ id: REMOVE_ALL_MESSAGES }),\n updatedSystemMessage,\n ...preservedMessages,\n ],\n };\n },\n });\n}\n\n/**\n * Ensure all messages have unique IDs\n */\nfunction ensureMessageIds(messages: BaseMessage[]): void {\n for (const msg of messages) {\n if (!msg.id) {\n msg.id = uuid();\n }\n }\n}\n\n/**\n * Separate system message from conversation messages\n */\nfunction splitSystemMessage(messages: BaseMessage[]): {\n systemPrompt: SystemMessage | null;\n conversationMessages: BaseMessage[];\n} {\n if (messages.length > 0 && SystemMessage.isInstance(messages[0])) {\n return {\n systemPrompt: messages[0] as SystemMessage,\n conversationMessages: messages.slice(1),\n };\n }\n return {\n systemPrompt: null,\n conversationMessages: messages,\n };\n}\n\n/**\n * Partition messages into those to summarize and those to preserve\n */\nfunction partitionMessages(\n systemPrompt: SystemMessage | null,\n conversationMessages: BaseMessage[],\n cutoffIndex: number\n): { messagesToSummarize: BaseMessage[]; preservedMessages: BaseMessage[] } {\n const messagesToSummarize = conversationMessages.slice(0, cutoffIndex);\n const preservedMessages = conversationMessages.slice(cutoffIndex);\n\n // Include system message in messages to summarize to capture previous summaries\n if (systemPrompt) {\n messagesToSummarize.unshift(systemPrompt);\n }\n\n return { messagesToSummarize, preservedMessages };\n}\n\n/**\n * Build updated system message incorporating the summary\n */\nfunction buildUpdatedSystemMessage(\n originalSystemMessage: SystemMessage | null,\n summary: string,\n summaryPrefix: string\n): SystemMessage {\n let originalContent = \"\";\n if (originalSystemMessage) {\n const { content } = originalSystemMessage;\n if (typeof content === \"string\") {\n originalContent = content.split(summaryPrefix)[0].trim();\n }\n }\n\n const content = originalContent\n ? `${originalContent}\\n${summaryPrefix}\\n${summary}`\n : `${summaryPrefix}\\n${summary}`;\n\n return new SystemMessage({\n content,\n id: originalSystemMessage?.id || uuid(),\n });\n}\n\n/**\n * Find safe cutoff point that preserves AI/Tool message pairs\n */\nfunction findSafeCutoff(\n messages: BaseMessage[],\n messagesToKeep: number\n): number {\n if (messages.length <= messagesToKeep) {\n return 0;\n }\n\n const targetCutoff = messages.length - messagesToKeep;\n\n for (let i = targetCutoff; i >= 0; i--) {\n if (isSafeCutoffPoint(messages, i)) {\n return i;\n }\n }\n\n return 0;\n}\n\n/**\n * Check if cutting at index would separate AI/Tool message pairs\n */\nfunction isSafeCutoffPoint(\n messages: BaseMessage[],\n cutoffIndex: number\n): boolean {\n if (cutoffIndex >= messages.length) {\n return true;\n }\n\n const searchStart = Math.max(0, cutoffIndex - SEARCH_RANGE_FOR_TOOL_PAIRS);\n const searchEnd = Math.min(\n messages.length,\n cutoffIndex + SEARCH_RANGE_FOR_TOOL_PAIRS\n );\n\n for (let i = searchStart; i < searchEnd; i++) {\n if (!hasToolCalls(messages[i])) {\n continue;\n }\n\n const toolCallIds = extractToolCallIds(messages[i] as AIMessage);\n if (cutoffSeparatesToolPair(messages, i, cutoffIndex, toolCallIds)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if message is an AI message with tool calls\n */\nfunction hasToolCalls(message: BaseMessage): boolean {\n return (\n AIMessage.isInstance(message) &&\n \"tool_calls\" in message &&\n Array.isArray(message.tool_calls) &&\n message.tool_calls.length > 0\n );\n}\n\n/**\n * Extract tool call IDs from an AI message\n */\nfunction extractToolCallIds(aiMessage: AIMessage): Set<string> {\n const toolCallIds = new Set<string>();\n if (aiMessage.tool_calls) {\n for (const toolCall of aiMessage.tool_calls) {\n const id =\n typeof toolCall === \"object\" && \"id\" in toolCall ? toolCall.id : null;\n if (id) {\n toolCallIds.add(id);\n }\n }\n }\n return toolCallIds;\n}\n\n/**\n * Check if cutoff separates an AI message from its corresponding tool messages\n */\nfunction cutoffSeparatesToolPair(\n messages: BaseMessage[],\n aiMessageIndex: number,\n cutoffIndex: number,\n toolCallIds: Set<string>\n): boolean {\n for (let j = aiMessageIndex + 1; j < messages.length; j++) {\n const message = messages[j];\n if (\n ToolMessage.isInstance(message) &&\n toolCallIds.has(message.tool_call_id)\n ) {\n const aiBeforeCutoff = aiMessageIndex < cutoffIndex;\n const toolBeforeCutoff = j < cutoffIndex;\n if (aiBeforeCutoff !== toolBeforeCutoff) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Generate summary for the given messages\n */\nasync function createSummary(\n messagesToSummarize: BaseMessage[],\n model: BaseLanguageModel,\n summaryPrompt: string,\n tokenCounter: TokenCounter\n): Promise<string> {\n if (!messagesToSummarize.length) {\n return \"No previous conversation history.\";\n }\n\n const trimmedMessages = await trimMessagesForSummary(\n messagesToSummarize,\n tokenCounter\n );\n\n if (!trimmedMessages.length) {\n return \"Previous conversation was too long to summarize.\";\n }\n\n try {\n const formattedPrompt = summaryPrompt.replace(\n \"{messages}\",\n JSON.stringify(trimmedMessages, null, 2)\n );\n const response = await model.invoke(formattedPrompt);\n const { content } = response;\n return typeof content === \"string\"\n ? content.trim()\n : \"Error generating summary: Invalid response format\";\n } catch (e) {\n return `Error generating summary: ${e}`;\n }\n}\n\n/**\n * Trim messages to fit within summary generation limits\n */\nasync function trimMessagesForSummary(\n messages: BaseMessage[],\n tokenCounter: TokenCounter\n): Promise<BaseMessage[]> {\n try {\n return await trimMessages(messages, {\n maxTokens: DEFAULT_TRIM_TOKEN_LIMIT,\n tokenCounter: async (msgs) => Promise.resolve(tokenCounter(msgs)),\n strategy: \"last\",\n allowPartial: true,\n includeSystem: true,\n });\n } catch {\n // Fallback to last N messages if trimming fails\n return messages.slice(-DEFAULT_FALLBACK_MESSAGE_COUNT);\n }\n}\n"],"mappings":"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"}
@@ -1,27 +1,26 @@
1
1
  import { AgentMiddleware } from "../types.cjs";
2
- import * as _langchain_core_language_models_base1 from "@langchain/core/language_models/base";
2
+ import * as _langchain_core_language_models_base0 from "@langchain/core/language_models/base";
3
3
  import { BaseLanguageModel } from "@langchain/core/language_models/base";
4
- import { InferInteropZodInput } from "@langchain/core/utils/types";
5
- import { BaseMessage } from "@langchain/core/messages";
6
4
  import { z } from "zod/v3";
5
+ import { InferInteropZodInput } from "@langchain/core/utils/types";
7
6
 
8
7
  //#region src/agents/middlewareAgent/middleware/summarization.d.ts
9
8
  declare const contextSchema: z.ZodObject<{
10
- model: z.ZodType<BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>>;
9
+ model: z.ZodType<BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>>;
11
10
  maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;
12
11
  messagesToKeep: z.ZodDefault<z.ZodNumber>;
13
12
  tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, "many">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;
14
13
  summaryPrompt: z.ZodDefault<z.ZodString>;
15
14
  summaryPrefix: z.ZodDefault<z.ZodString>;
16
15
  }, "strip", z.ZodTypeAny, {
17
- model: BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>;
16
+ model: BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>;
18
17
  maxTokensBeforeSummary?: number | undefined;
19
18
  messagesToKeep: number;
20
19
  tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;
21
20
  summaryPrompt: string;
22
21
  summaryPrefix: string;
23
22
  }, {
24
- model: BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>;
23
+ model: BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>;
25
24
  maxTokensBeforeSummary?: number | undefined;
26
25
  messagesToKeep?: number | undefined;
27
26
  tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;
@@ -29,12 +28,6 @@ declare const contextSchema: z.ZodObject<{
29
28
  summaryPrefix?: string | undefined;
30
29
  }>;
31
30
  type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;
32
- /**
33
- * Default token counter that approximates based on character count
34
- * @param messages Messages to count tokens for
35
- * @returns Approximate token count
36
- */
37
- declare function countTokensApproximately(messages: BaseMessage[]): number;
38
31
  /**
39
32
  * Summarization middleware that automatically summarizes conversation history when token limits are approached.
40
33
  *
@@ -47,7 +40,7 @@ declare function countTokensApproximately(messages: BaseMessage[]): number;
47
40
  *
48
41
  * @example
49
42
  * ```ts
50
- * import { summarizationMiddleware } from "langchain/middleware";
43
+ * import { summarizationMiddleware } from "langchain";
51
44
  * import { createAgent } from "langchain";
52
45
  *
53
46
  * const agent = createAgent({
@@ -65,21 +58,21 @@ declare function countTokensApproximately(messages: BaseMessage[]): number;
65
58
  * ```
66
59
  */
67
60
  declare function summarizationMiddleware(options: SummarizationMiddlewareConfig): AgentMiddleware<undefined, z.ZodObject<{
68
- model: z.ZodType<BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>>;
61
+ model: z.ZodType<BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>>;
69
62
  maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;
70
63
  messagesToKeep: z.ZodDefault<z.ZodNumber>;
71
64
  tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, "many">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;
72
65
  summaryPrompt: z.ZodDefault<z.ZodString>;
73
66
  summaryPrefix: z.ZodDefault<z.ZodString>;
74
67
  }, "strip", z.ZodTypeAny, {
75
- model: BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>;
68
+ model: BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>;
76
69
  maxTokensBeforeSummary?: number | undefined;
77
70
  messagesToKeep: number;
78
71
  tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;
79
72
  summaryPrompt: string;
80
73
  summaryPrefix: string;
81
74
  }, {
82
- model: BaseLanguageModel<any, _langchain_core_language_models_base1.BaseLanguageModelCallOptions>;
75
+ model: BaseLanguageModel<any, _langchain_core_language_models_base0.BaseLanguageModelCallOptions>;
83
76
  maxTokensBeforeSummary?: number | undefined;
84
77
  messagesToKeep?: number | undefined;
85
78
  tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;
@@ -87,5 +80,5 @@ declare function summarizationMiddleware(options: SummarizationMiddlewareConfig)
87
80
  summaryPrefix?: string | undefined;
88
81
  }>, any>;
89
82
  //#endregion
90
- export { SummarizationMiddlewareConfig, countTokensApproximately, summarizationMiddleware };
83
+ export { SummarizationMiddlewareConfig, summarizationMiddleware };
91
84
  //# sourceMappingURL=summarization.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarization.d.cts","names":["___types_js3","z","BaseMessage","BaseLanguageModel","InferInteropZodInput","contextSchema","_langchain_core_language_models_base1","BaseLanguageModelCallOptions","ZodTypeDef","ZodType","ZodNumber","ZodOptional","ZodDefault","ZodAny","ZodArray","ZodUnknown","ZodTuple","ZodPromise","ZodUnion","ZodFunction","ZodString","ZodTypeAny","Promise","ZodObject","SummarizationMiddlewareConfig","countTokensApproximately","summarizationMiddleware","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>;\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;\n/**\n * Default token counter that approximates based on character count\n * @param messages Messages to count tokens for\n * @returns Approximate token count\n */\nexport declare function countTokensApproximately(messages: BaseMessage[]): number;\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain/middleware\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport declare function summarizationMiddleware(options: SummarizationMiddlewareConfig): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>, any>;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"summarization.d.cts","names":["__index_js0","z","BaseLanguageModel","InferInteropZodInput","contextSchema","_langchain_core_language_models_base0","BaseLanguageModelCallOptions","ZodTypeDef","ZodType","ZodNumber","ZodOptional","ZodDefault","ZodAny","ZodArray","ZodUnknown","ZodTuple","ZodPromise","ZodUnion","ZodFunction","ZodString","ZodTypeAny","Promise","ZodObject","SummarizationMiddlewareConfig","summarizationMiddleware","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>;\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport declare function summarizationMiddleware(options: SummarizationMiddlewareConfig): import(\"./index.js\").AgentMiddleware<undefined, z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>, any>;\nexport {};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { AgentMiddleware } from "../types.js";
2
- import { BaseMessage } from "@langchain/core/messages";
3
2
  import { InferInteropZodInput } from "@langchain/core/utils/types";
4
3
  import { z } from "zod/v3";
5
4
  import * as _langchain_core_language_models_base0 from "@langchain/core/language_models/base";
@@ -29,12 +28,6 @@ declare const contextSchema: z.ZodObject<{
29
28
  summaryPrefix?: string | undefined;
30
29
  }>;
31
30
  type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;
32
- /**
33
- * Default token counter that approximates based on character count
34
- * @param messages Messages to count tokens for
35
- * @returns Approximate token count
36
- */
37
- declare function countTokensApproximately(messages: BaseMessage[]): number;
38
31
  /**
39
32
  * Summarization middleware that automatically summarizes conversation history when token limits are approached.
40
33
  *
@@ -47,7 +40,7 @@ declare function countTokensApproximately(messages: BaseMessage[]): number;
47
40
  *
48
41
  * @example
49
42
  * ```ts
50
- * import { summarizationMiddleware } from "langchain/middleware";
43
+ * import { summarizationMiddleware } from "langchain";
51
44
  * import { createAgent } from "langchain";
52
45
  *
53
46
  * const agent = createAgent({
@@ -87,5 +80,5 @@ declare function summarizationMiddleware(options: SummarizationMiddlewareConfig)
87
80
  summaryPrefix?: string | undefined;
88
81
  }>, any>;
89
82
  //#endregion
90
- export { SummarizationMiddlewareConfig, countTokensApproximately, summarizationMiddleware };
83
+ export { SummarizationMiddlewareConfig, summarizationMiddleware };
91
84
  //# sourceMappingURL=summarization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarization.d.ts","names":["___types_js0","z","BaseMessage","BaseLanguageModel","InferInteropZodInput","contextSchema","_langchain_core_language_models_base0","BaseLanguageModelCallOptions","ZodTypeDef","ZodType","ZodNumber","ZodOptional","ZodDefault","ZodAny","ZodArray","ZodUnknown","ZodTuple","ZodPromise","ZodUnion","ZodFunction","ZodString","ZodTypeAny","Promise","ZodObject","SummarizationMiddlewareConfig","countTokensApproximately","summarizationMiddleware","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>;\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;\n/**\n * Default token counter that approximates based on character count\n * @param messages Messages to count tokens for\n * @returns Approximate token count\n */\nexport declare function countTokensApproximately(messages: BaseMessage[]): number;\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain/middleware\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport declare function summarizationMiddleware(options: SummarizationMiddlewareConfig): import(\"../types.js\").AgentMiddleware<undefined, z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>, any>;\nexport {};\n"],"mappings":"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"}
1
+ {"version":3,"file":"summarization.d.ts","names":["__index_js0","z","BaseLanguageModel","InferInteropZodInput","contextSchema","_langchain_core_language_models_base0","BaseLanguageModelCallOptions","ZodTypeDef","ZodType","ZodNumber","ZodOptional","ZodDefault","ZodAny","ZodArray","ZodUnknown","ZodTuple","ZodPromise","ZodUnion","ZodFunction","ZodString","ZodTypeAny","Promise","ZodObject","SummarizationMiddlewareConfig","summarizationMiddleware","AgentMiddleware"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.d.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport { InferInteropZodInput } from \"@langchain/core/utils/types\";\ndeclare const contextSchema: z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>;\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<typeof contextSchema>;\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport declare function summarizationMiddleware(options: SummarizationMiddlewareConfig): import(\"./index.js\").AgentMiddleware<undefined, z.ZodObject<{\n model: z.ZodType<BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>, z.ZodTypeDef, BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>>;\n maxTokensBeforeSummary: z.ZodOptional<z.ZodNumber>;\n messagesToKeep: z.ZodDefault<z.ZodNumber>;\n tokenCounter: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodArray<z.ZodAny, \"many\">], z.ZodUnknown>, z.ZodUnion<[z.ZodNumber, z.ZodPromise<z.ZodNumber>]>>>;\n summaryPrompt: z.ZodDefault<z.ZodString>;\n summaryPrefix: z.ZodDefault<z.ZodString>;\n}, \"strip\", z.ZodTypeAny, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep: number;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt: string;\n summaryPrefix: string;\n}, {\n model: BaseLanguageModel<any, import(\"@langchain/core/language_models/base\").BaseLanguageModelCallOptions>;\n maxTokensBeforeSummary?: number | undefined;\n messagesToKeep?: number | undefined;\n tokenCounter?: ((args_0: any[], ...args: unknown[]) => number | Promise<number>) | undefined;\n summaryPrompt?: string | undefined;\n summaryPrefix?: string | undefined;\n}>, any>;\nexport {};\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createMiddleware } from "../middleware.js";
2
+ import { countTokensApproximately } from "./utils.js";
2
3
  import { AIMessage, RemoveMessage, SystemMessage, ToolMessage, trimMessages } from "@langchain/core/messages";
3
4
  import { REMOVE_ALL_MESSAGES } from "@langchain/langgraph";
4
5
  import { interopParse } from "@langchain/core/utils/types";
@@ -47,26 +48,6 @@ const contextSchema = z.object({
47
48
  summaryPrefix: z.string().default(SUMMARY_PREFIX)
48
49
  });
49
50
  /**
50
- * Default token counter that approximates based on character count
51
- * @param messages Messages to count tokens for
52
- * @returns Approximate token count
53
- */
54
- function countTokensApproximately(messages) {
55
- let totalChars = 0;
56
- for (const msg of messages) {
57
- let textContent;
58
- if (typeof msg.content === "string") textContent = msg.content;
59
- else if (Array.isArray(msg.content)) textContent = msg.content.map((item) => {
60
- if (typeof item === "string") return item;
61
- if (item.type === "text" && "text" in item) return item.text;
62
- return "";
63
- }).join("");
64
- else textContent = "";
65
- totalChars += textContent.length;
66
- }
67
- return Math.ceil(totalChars / 4);
68
- }
69
- /**
70
51
  * Summarization middleware that automatically summarizes conversation history when token limits are approached.
71
52
  *
72
53
  * This middleware monitors message token counts and automatically summarizes older
@@ -78,7 +59,7 @@ function countTokensApproximately(messages) {
78
59
  *
79
60
  * @example
80
61
  * ```ts
81
- * import { summarizationMiddleware } from "langchain/middleware";
62
+ * import { summarizationMiddleware } from "langchain";
82
63
  * import { createAgent } from "langchain";
83
64
  *
84
65
  * const agent = createAgent({
@@ -268,5 +249,5 @@ async function trimMessagesForSummary(messages, tokenCounter) {
268
249
  }
269
250
 
270
251
  //#endregion
271
- export { countTokensApproximately, summarizationMiddleware };
252
+ export { summarizationMiddleware };
272
253
  //# sourceMappingURL=summarization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarization.js","names":["messages: BaseMessage[]","textContent: string","options: SummarizationMiddlewareConfig","uuid","systemPrompt: SystemMessage | null","conversationMessages: BaseMessage[]","cutoffIndex: number","originalSystemMessage: SystemMessage | null","summary: string","summaryPrefix: string","content","messagesToKeep: number","message: BaseMessage","aiMessage: AIMessage","aiMessageIndex: number","toolCallIds: Set<string>","messagesToSummarize: BaseMessage[]","model: BaseLanguageModel","summaryPrompt: string","tokenCounter: TokenCounter"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n BaseMessage,\n AIMessage,\n SystemMessage,\n ToolMessage,\n RemoveMessage,\n trimMessages,\n} from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport {\n interopParse,\n InferInteropZodOutput,\n InferInteropZodInput,\n} from \"@langchain/core/utils/types\";\nimport { REMOVE_ALL_MESSAGES } from \"@langchain/langgraph\";\nimport { createMiddleware } from \"../middleware.js\";\n\nconst DEFAULT_SUMMARY_PROMPT = `<role>\nContext Extraction Assistant\n</role>\n\n<primary_objective>\nYour sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.\n</primary_objective>\n\n<objective_information>\nYou're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.\nThis context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.\n</objective_information>\n\n<instructions>\nThe conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.\nYou want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.\n</instructions>\n\nThe user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:\n\nWith all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.\nRespond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.\n\n<messages>\nMessages to summarize:\n{messages}\n</messages>`;\n\nconst SUMMARY_PREFIX = \"## Previous conversation summary:\";\n\nconst DEFAULT_MESSAGES_TO_KEEP = 20;\nconst DEFAULT_TRIM_TOKEN_LIMIT = 4000;\nconst DEFAULT_FALLBACK_MESSAGE_COUNT = 15;\nconst SEARCH_RANGE_FOR_TOOL_PAIRS = 5;\n\ntype TokenCounter = (messages: BaseMessage[]) => number | Promise<number>;\n\nconst contextSchema = z.object({\n model: z.custom<BaseLanguageModel>(),\n maxTokensBeforeSummary: z.number().optional(),\n messagesToKeep: z.number().default(DEFAULT_MESSAGES_TO_KEEP),\n tokenCounter: z\n .function()\n .args(z.array(z.any()))\n .returns(z.union([z.number(), z.promise(z.number())]))\n .optional(),\n summaryPrompt: z.string().default(DEFAULT_SUMMARY_PROMPT),\n summaryPrefix: z.string().default(SUMMARY_PREFIX),\n});\n\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<\n typeof contextSchema\n>;\n\n/**\n * Default token counter that approximates based on character count\n * @param messages Messages to count tokens for\n * @returns Approximate token count\n */\nexport function countTokensApproximately(messages: BaseMessage[]): number {\n let totalChars = 0;\n for (const msg of messages) {\n let textContent: string;\n if (typeof msg.content === \"string\") {\n textContent = msg.content;\n } else if (Array.isArray(msg.content)) {\n textContent = msg.content\n .map((item) => {\n if (typeof item === \"string\") return item;\n if (item.type === \"text\" && \"text\" in item) return item.text;\n return \"\";\n })\n .join(\"\");\n } else {\n textContent = \"\";\n }\n totalChars += textContent.length;\n }\n // Approximate 1 token = 4 characters\n return Math.ceil(totalChars / 4);\n}\n\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain/middleware\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport function summarizationMiddleware(\n options: SummarizationMiddlewareConfig\n) {\n return createMiddleware({\n name: \"SummarizationMiddleware\",\n contextSchema,\n beforeModel: async (state, runtime) => {\n /**\n * Parse user options to get their explicit values\n */\n const userOptions = interopParse(contextSchema, options);\n\n /**\n * Merge context with user options, preferring user options when context has default values\n */\n const config = {\n model: userOptions.model,\n maxTokensBeforeSummary:\n runtime.context.maxTokensBeforeSummary !== undefined\n ? runtime.context.maxTokensBeforeSummary\n : userOptions.maxTokensBeforeSummary,\n messagesToKeep:\n runtime.context.messagesToKeep === DEFAULT_MESSAGES_TO_KEEP\n ? userOptions.messagesToKeep\n : runtime.context.messagesToKeep ?? userOptions.messagesToKeep,\n tokenCounter:\n runtime.context.tokenCounter !== undefined\n ? runtime.context.tokenCounter\n : userOptions.tokenCounter,\n summaryPrompt:\n runtime.context.summaryPrompt === DEFAULT_SUMMARY_PROMPT\n ? userOptions.summaryPrompt\n : runtime.context.summaryPrompt ?? userOptions.summaryPrompt,\n summaryPrefix:\n runtime.context.summaryPrefix === SUMMARY_PREFIX\n ? userOptions.summaryPrefix\n : runtime.context.summaryPrefix ?? userOptions.summaryPrefix,\n } as InferInteropZodOutput<typeof contextSchema>;\n const { messages } = state;\n\n // Ensure all messages have IDs\n ensureMessageIds(messages);\n\n const tokenCounter = config.tokenCounter || countTokensApproximately;\n const totalTokens = await tokenCounter(messages);\n\n if (\n config.maxTokensBeforeSummary == null ||\n totalTokens < config.maxTokensBeforeSummary\n ) {\n return;\n }\n\n const { systemPrompt, conversationMessages } =\n splitSystemMessage(messages);\n const cutoffIndex = findSafeCutoff(\n conversationMessages,\n config.messagesToKeep\n );\n\n if (cutoffIndex <= 0) {\n return;\n }\n\n const { messagesToSummarize, preservedMessages } = partitionMessages(\n systemPrompt,\n conversationMessages,\n cutoffIndex\n );\n\n const summary = await createSummary(\n messagesToSummarize,\n config.model,\n config.summaryPrompt,\n tokenCounter\n );\n\n const updatedSystemMessage = buildUpdatedSystemMessage(\n systemPrompt,\n summary,\n config.summaryPrefix\n );\n\n return {\n messages: [\n new RemoveMessage({ id: REMOVE_ALL_MESSAGES }),\n updatedSystemMessage,\n ...preservedMessages,\n ],\n };\n },\n });\n}\n\n/**\n * Ensure all messages have unique IDs\n */\nfunction ensureMessageIds(messages: BaseMessage[]): void {\n for (const msg of messages) {\n if (!msg.id) {\n msg.id = uuid();\n }\n }\n}\n\n/**\n * Separate system message from conversation messages\n */\nfunction splitSystemMessage(messages: BaseMessage[]): {\n systemPrompt: SystemMessage | null;\n conversationMessages: BaseMessage[];\n} {\n if (messages.length > 0 && SystemMessage.isInstance(messages[0])) {\n return {\n systemPrompt: messages[0] as SystemMessage,\n conversationMessages: messages.slice(1),\n };\n }\n return {\n systemPrompt: null,\n conversationMessages: messages,\n };\n}\n\n/**\n * Partition messages into those to summarize and those to preserve\n */\nfunction partitionMessages(\n systemPrompt: SystemMessage | null,\n conversationMessages: BaseMessage[],\n cutoffIndex: number\n): { messagesToSummarize: BaseMessage[]; preservedMessages: BaseMessage[] } {\n const messagesToSummarize = conversationMessages.slice(0, cutoffIndex);\n const preservedMessages = conversationMessages.slice(cutoffIndex);\n\n // Include system message in messages to summarize to capture previous summaries\n if (systemPrompt) {\n messagesToSummarize.unshift(systemPrompt);\n }\n\n return { messagesToSummarize, preservedMessages };\n}\n\n/**\n * Build updated system message incorporating the summary\n */\nfunction buildUpdatedSystemMessage(\n originalSystemMessage: SystemMessage | null,\n summary: string,\n summaryPrefix: string\n): SystemMessage {\n let originalContent = \"\";\n if (originalSystemMessage) {\n const { content } = originalSystemMessage;\n if (typeof content === \"string\") {\n originalContent = content.split(summaryPrefix)[0].trim();\n }\n }\n\n const content = originalContent\n ? `${originalContent}\\n${summaryPrefix}\\n${summary}`\n : `${summaryPrefix}\\n${summary}`;\n\n return new SystemMessage({\n content,\n id: originalSystemMessage?.id || uuid(),\n });\n}\n\n/**\n * Find safe cutoff point that preserves AI/Tool message pairs\n */\nfunction findSafeCutoff(\n messages: BaseMessage[],\n messagesToKeep: number\n): number {\n if (messages.length <= messagesToKeep) {\n return 0;\n }\n\n const targetCutoff = messages.length - messagesToKeep;\n\n for (let i = targetCutoff; i >= 0; i--) {\n if (isSafeCutoffPoint(messages, i)) {\n return i;\n }\n }\n\n return 0;\n}\n\n/**\n * Check if cutting at index would separate AI/Tool message pairs\n */\nfunction isSafeCutoffPoint(\n messages: BaseMessage[],\n cutoffIndex: number\n): boolean {\n if (cutoffIndex >= messages.length) {\n return true;\n }\n\n const searchStart = Math.max(0, cutoffIndex - SEARCH_RANGE_FOR_TOOL_PAIRS);\n const searchEnd = Math.min(\n messages.length,\n cutoffIndex + SEARCH_RANGE_FOR_TOOL_PAIRS\n );\n\n for (let i = searchStart; i < searchEnd; i++) {\n if (!hasToolCalls(messages[i])) {\n continue;\n }\n\n const toolCallIds = extractToolCallIds(messages[i] as AIMessage);\n if (cutoffSeparatesToolPair(messages, i, cutoffIndex, toolCallIds)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if message is an AI message with tool calls\n */\nfunction hasToolCalls(message: BaseMessage): boolean {\n return (\n AIMessage.isInstance(message) &&\n \"tool_calls\" in message &&\n Array.isArray(message.tool_calls) &&\n message.tool_calls.length > 0\n );\n}\n\n/**\n * Extract tool call IDs from an AI message\n */\nfunction extractToolCallIds(aiMessage: AIMessage): Set<string> {\n const toolCallIds = new Set<string>();\n if (aiMessage.tool_calls) {\n for (const toolCall of aiMessage.tool_calls) {\n const id =\n typeof toolCall === \"object\" && \"id\" in toolCall ? toolCall.id : null;\n if (id) {\n toolCallIds.add(id);\n }\n }\n }\n return toolCallIds;\n}\n\n/**\n * Check if cutoff separates an AI message from its corresponding tool messages\n */\nfunction cutoffSeparatesToolPair(\n messages: BaseMessage[],\n aiMessageIndex: number,\n cutoffIndex: number,\n toolCallIds: Set<string>\n): boolean {\n for (let j = aiMessageIndex + 1; j < messages.length; j++) {\n const message = messages[j];\n if (\n ToolMessage.isInstance(message) &&\n toolCallIds.has(message.tool_call_id)\n ) {\n const aiBeforeCutoff = aiMessageIndex < cutoffIndex;\n const toolBeforeCutoff = j < cutoffIndex;\n if (aiBeforeCutoff !== toolBeforeCutoff) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Generate summary for the given messages\n */\nasync function createSummary(\n messagesToSummarize: BaseMessage[],\n model: BaseLanguageModel,\n summaryPrompt: string,\n tokenCounter: TokenCounter\n): Promise<string> {\n if (!messagesToSummarize.length) {\n return \"No previous conversation history.\";\n }\n\n const trimmedMessages = await trimMessagesForSummary(\n messagesToSummarize,\n tokenCounter\n );\n\n if (!trimmedMessages.length) {\n return \"Previous conversation was too long to summarize.\";\n }\n\n try {\n const formattedPrompt = summaryPrompt.replace(\n \"{messages}\",\n JSON.stringify(trimmedMessages, null, 2)\n );\n const response = await model.invoke(formattedPrompt);\n const { content } = response;\n return typeof content === \"string\"\n ? content.trim()\n : \"Error generating summary: Invalid response format\";\n } catch (e) {\n return `Error generating summary: ${e}`;\n }\n}\n\n/**\n * Trim messages to fit within summary generation limits\n */\nasync function trimMessagesForSummary(\n messages: BaseMessage[],\n tokenCounter: TokenCounter\n): Promise<BaseMessage[]> {\n try {\n return await trimMessages(messages, {\n maxTokens: DEFAULT_TRIM_TOKEN_LIMIT,\n tokenCounter: async (msgs) => Promise.resolve(tokenCounter(msgs)),\n strategy: \"last\",\n allowPartial: true,\n includeSystem: true,\n });\n } catch {\n // Fallback to last N messages if trimming fails\n return messages.slice(-DEFAULT_FALLBACK_MESSAGE_COUNT);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"summarization.js","names":["options: SummarizationMiddlewareConfig","messages: BaseMessage[]","uuid","systemPrompt: SystemMessage | null","conversationMessages: BaseMessage[]","cutoffIndex: number","originalSystemMessage: SystemMessage | null","summary: string","summaryPrefix: string","content","messagesToKeep: number","message: BaseMessage","aiMessage: AIMessage","aiMessageIndex: number","toolCallIds: Set<string>","messagesToSummarize: BaseMessage[]","model: BaseLanguageModel","summaryPrompt: string","tokenCounter: TokenCounter"],"sources":["../../../../src/agents/middlewareAgent/middleware/summarization.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n BaseMessage,\n AIMessage,\n SystemMessage,\n ToolMessage,\n RemoveMessage,\n trimMessages,\n} from \"@langchain/core/messages\";\nimport { BaseLanguageModel } from \"@langchain/core/language_models/base\";\nimport {\n interopParse,\n InferInteropZodOutput,\n InferInteropZodInput,\n} from \"@langchain/core/utils/types\";\nimport { REMOVE_ALL_MESSAGES } from \"@langchain/langgraph\";\nimport { createMiddleware } from \"../middleware.js\";\nimport { countTokensApproximately } from \"./utils.js\";\n\nconst DEFAULT_SUMMARY_PROMPT = `<role>\nContext Extraction Assistant\n</role>\n\n<primary_objective>\nYour sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.\n</primary_objective>\n\n<objective_information>\nYou're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.\nThis context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.\n</objective_information>\n\n<instructions>\nThe conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.\nYou want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.\n</instructions>\n\nThe user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:\n\nWith all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.\nRespond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.\n\n<messages>\nMessages to summarize:\n{messages}\n</messages>`;\n\nconst SUMMARY_PREFIX = \"## Previous conversation summary:\";\n\nconst DEFAULT_MESSAGES_TO_KEEP = 20;\nconst DEFAULT_TRIM_TOKEN_LIMIT = 4000;\nconst DEFAULT_FALLBACK_MESSAGE_COUNT = 15;\nconst SEARCH_RANGE_FOR_TOOL_PAIRS = 5;\n\ntype TokenCounter = (messages: BaseMessage[]) => number | Promise<number>;\n\nconst contextSchema = z.object({\n model: z.custom<BaseLanguageModel>(),\n maxTokensBeforeSummary: z.number().optional(),\n messagesToKeep: z.number().default(DEFAULT_MESSAGES_TO_KEEP),\n tokenCounter: z\n .function()\n .args(z.array(z.any()))\n .returns(z.union([z.number(), z.promise(z.number())]))\n .optional(),\n summaryPrompt: z.string().default(DEFAULT_SUMMARY_PROMPT),\n summaryPrefix: z.string().default(SUMMARY_PREFIX),\n});\n\nexport type SummarizationMiddlewareConfig = InferInteropZodInput<\n typeof contextSchema\n>;\n\n/**\n * Summarization middleware that automatically summarizes conversation history when token limits are approached.\n *\n * This middleware monitors message token counts and automatically summarizes older\n * messages when a threshold is reached, preserving recent messages and maintaining\n * context continuity by ensuring AI/Tool message pairs remain together.\n *\n * @param options Configuration options for the summarization middleware\n * @returns A middleware instance\n *\n * @example\n * ```ts\n * import { summarizationMiddleware } from \"langchain\";\n * import { createAgent } from \"langchain\";\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * middleware: [\n * summarizationMiddleware({\n * model: new ChatOpenAI({ model: \"gpt-4o\" }),\n * maxTokensBeforeSummary: 4000,\n * messagesToKeep: 20,\n * })\n * ],\n * });\n *\n * ```\n */\nexport function summarizationMiddleware(\n options: SummarizationMiddlewareConfig\n) {\n return createMiddleware({\n name: \"SummarizationMiddleware\",\n contextSchema,\n beforeModel: async (state, runtime) => {\n /**\n * Parse user options to get their explicit values\n */\n const userOptions = interopParse(contextSchema, options);\n\n /**\n * Merge context with user options, preferring user options when context has default values\n */\n const config = {\n model: userOptions.model,\n maxTokensBeforeSummary:\n runtime.context.maxTokensBeforeSummary !== undefined\n ? runtime.context.maxTokensBeforeSummary\n : userOptions.maxTokensBeforeSummary,\n messagesToKeep:\n runtime.context.messagesToKeep === DEFAULT_MESSAGES_TO_KEEP\n ? userOptions.messagesToKeep\n : runtime.context.messagesToKeep ?? userOptions.messagesToKeep,\n tokenCounter:\n runtime.context.tokenCounter !== undefined\n ? runtime.context.tokenCounter\n : userOptions.tokenCounter,\n summaryPrompt:\n runtime.context.summaryPrompt === DEFAULT_SUMMARY_PROMPT\n ? userOptions.summaryPrompt\n : runtime.context.summaryPrompt ?? userOptions.summaryPrompt,\n summaryPrefix:\n runtime.context.summaryPrefix === SUMMARY_PREFIX\n ? userOptions.summaryPrefix\n : runtime.context.summaryPrefix ?? userOptions.summaryPrefix,\n } as InferInteropZodOutput<typeof contextSchema>;\n const { messages } = state;\n\n // Ensure all messages have IDs\n ensureMessageIds(messages);\n\n const tokenCounter = config.tokenCounter || countTokensApproximately;\n const totalTokens = await tokenCounter(messages);\n\n if (\n config.maxTokensBeforeSummary == null ||\n totalTokens < config.maxTokensBeforeSummary\n ) {\n return;\n }\n\n const { systemPrompt, conversationMessages } =\n splitSystemMessage(messages);\n const cutoffIndex = findSafeCutoff(\n conversationMessages,\n config.messagesToKeep\n );\n\n if (cutoffIndex <= 0) {\n return;\n }\n\n const { messagesToSummarize, preservedMessages } = partitionMessages(\n systemPrompt,\n conversationMessages,\n cutoffIndex\n );\n\n const summary = await createSummary(\n messagesToSummarize,\n config.model,\n config.summaryPrompt,\n tokenCounter\n );\n\n const updatedSystemMessage = buildUpdatedSystemMessage(\n systemPrompt,\n summary,\n config.summaryPrefix\n );\n\n return {\n messages: [\n new RemoveMessage({ id: REMOVE_ALL_MESSAGES }),\n updatedSystemMessage,\n ...preservedMessages,\n ],\n };\n },\n });\n}\n\n/**\n * Ensure all messages have unique IDs\n */\nfunction ensureMessageIds(messages: BaseMessage[]): void {\n for (const msg of messages) {\n if (!msg.id) {\n msg.id = uuid();\n }\n }\n}\n\n/**\n * Separate system message from conversation messages\n */\nfunction splitSystemMessage(messages: BaseMessage[]): {\n systemPrompt: SystemMessage | null;\n conversationMessages: BaseMessage[];\n} {\n if (messages.length > 0 && SystemMessage.isInstance(messages[0])) {\n return {\n systemPrompt: messages[0] as SystemMessage,\n conversationMessages: messages.slice(1),\n };\n }\n return {\n systemPrompt: null,\n conversationMessages: messages,\n };\n}\n\n/**\n * Partition messages into those to summarize and those to preserve\n */\nfunction partitionMessages(\n systemPrompt: SystemMessage | null,\n conversationMessages: BaseMessage[],\n cutoffIndex: number\n): { messagesToSummarize: BaseMessage[]; preservedMessages: BaseMessage[] } {\n const messagesToSummarize = conversationMessages.slice(0, cutoffIndex);\n const preservedMessages = conversationMessages.slice(cutoffIndex);\n\n // Include system message in messages to summarize to capture previous summaries\n if (systemPrompt) {\n messagesToSummarize.unshift(systemPrompt);\n }\n\n return { messagesToSummarize, preservedMessages };\n}\n\n/**\n * Build updated system message incorporating the summary\n */\nfunction buildUpdatedSystemMessage(\n originalSystemMessage: SystemMessage | null,\n summary: string,\n summaryPrefix: string\n): SystemMessage {\n let originalContent = \"\";\n if (originalSystemMessage) {\n const { content } = originalSystemMessage;\n if (typeof content === \"string\") {\n originalContent = content.split(summaryPrefix)[0].trim();\n }\n }\n\n const content = originalContent\n ? `${originalContent}\\n${summaryPrefix}\\n${summary}`\n : `${summaryPrefix}\\n${summary}`;\n\n return new SystemMessage({\n content,\n id: originalSystemMessage?.id || uuid(),\n });\n}\n\n/**\n * Find safe cutoff point that preserves AI/Tool message pairs\n */\nfunction findSafeCutoff(\n messages: BaseMessage[],\n messagesToKeep: number\n): number {\n if (messages.length <= messagesToKeep) {\n return 0;\n }\n\n const targetCutoff = messages.length - messagesToKeep;\n\n for (let i = targetCutoff; i >= 0; i--) {\n if (isSafeCutoffPoint(messages, i)) {\n return i;\n }\n }\n\n return 0;\n}\n\n/**\n * Check if cutting at index would separate AI/Tool message pairs\n */\nfunction isSafeCutoffPoint(\n messages: BaseMessage[],\n cutoffIndex: number\n): boolean {\n if (cutoffIndex >= messages.length) {\n return true;\n }\n\n const searchStart = Math.max(0, cutoffIndex - SEARCH_RANGE_FOR_TOOL_PAIRS);\n const searchEnd = Math.min(\n messages.length,\n cutoffIndex + SEARCH_RANGE_FOR_TOOL_PAIRS\n );\n\n for (let i = searchStart; i < searchEnd; i++) {\n if (!hasToolCalls(messages[i])) {\n continue;\n }\n\n const toolCallIds = extractToolCallIds(messages[i] as AIMessage);\n if (cutoffSeparatesToolPair(messages, i, cutoffIndex, toolCallIds)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if message is an AI message with tool calls\n */\nfunction hasToolCalls(message: BaseMessage): boolean {\n return (\n AIMessage.isInstance(message) &&\n \"tool_calls\" in message &&\n Array.isArray(message.tool_calls) &&\n message.tool_calls.length > 0\n );\n}\n\n/**\n * Extract tool call IDs from an AI message\n */\nfunction extractToolCallIds(aiMessage: AIMessage): Set<string> {\n const toolCallIds = new Set<string>();\n if (aiMessage.tool_calls) {\n for (const toolCall of aiMessage.tool_calls) {\n const id =\n typeof toolCall === \"object\" && \"id\" in toolCall ? toolCall.id : null;\n if (id) {\n toolCallIds.add(id);\n }\n }\n }\n return toolCallIds;\n}\n\n/**\n * Check if cutoff separates an AI message from its corresponding tool messages\n */\nfunction cutoffSeparatesToolPair(\n messages: BaseMessage[],\n aiMessageIndex: number,\n cutoffIndex: number,\n toolCallIds: Set<string>\n): boolean {\n for (let j = aiMessageIndex + 1; j < messages.length; j++) {\n const message = messages[j];\n if (\n ToolMessage.isInstance(message) &&\n toolCallIds.has(message.tool_call_id)\n ) {\n const aiBeforeCutoff = aiMessageIndex < cutoffIndex;\n const toolBeforeCutoff = j < cutoffIndex;\n if (aiBeforeCutoff !== toolBeforeCutoff) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Generate summary for the given messages\n */\nasync function createSummary(\n messagesToSummarize: BaseMessage[],\n model: BaseLanguageModel,\n summaryPrompt: string,\n tokenCounter: TokenCounter\n): Promise<string> {\n if (!messagesToSummarize.length) {\n return \"No previous conversation history.\";\n }\n\n const trimmedMessages = await trimMessagesForSummary(\n messagesToSummarize,\n tokenCounter\n );\n\n if (!trimmedMessages.length) {\n return \"Previous conversation was too long to summarize.\";\n }\n\n try {\n const formattedPrompt = summaryPrompt.replace(\n \"{messages}\",\n JSON.stringify(trimmedMessages, null, 2)\n );\n const response = await model.invoke(formattedPrompt);\n const { content } = response;\n return typeof content === \"string\"\n ? content.trim()\n : \"Error generating summary: Invalid response format\";\n } catch (e) {\n return `Error generating summary: ${e}`;\n }\n}\n\n/**\n * Trim messages to fit within summary generation limits\n */\nasync function trimMessagesForSummary(\n messages: BaseMessage[],\n tokenCounter: TokenCounter\n): Promise<BaseMessage[]> {\n try {\n return await trimMessages(messages, {\n maxTokens: DEFAULT_TRIM_TOKEN_LIMIT,\n tokenCounter: async (msgs) => Promise.resolve(tokenCounter(msgs)),\n strategy: \"last\",\n allowPartial: true,\n includeSystem: true,\n });\n } catch {\n // Fallback to last N messages if trimming fails\n return messages.slice(-DEFAULT_FALLBACK_MESSAGE_COUNT);\n }\n}\n"],"mappings":"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"}