@librechat/agents 3.2.32 → 3.2.34

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 (597) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  2. package/dist/cjs/agents/AgentContext.cjs +844 -1046
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/constants.cjs +13 -13
  5. package/dist/cjs/common/constants.cjs.map +1 -1
  6. package/dist/cjs/common/enum.cjs +233 -240
  7. package/dist/cjs/common/enum.cjs.map +1 -1
  8. package/dist/cjs/common/index.cjs +2 -0
  9. package/dist/cjs/events.cjs +121 -169
  10. package/dist/cjs/events.cjs.map +1 -1
  11. package/dist/cjs/graphs/Graph.cjs +1389 -1807
  12. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  13. package/dist/cjs/graphs/MultiAgentGraph.cjs +713 -945
  14. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  15. package/dist/cjs/graphs/index.cjs +2 -0
  16. package/dist/cjs/hitl/askUserQuestion.cjs +60 -62
  17. package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
  18. package/dist/cjs/hitl/index.cjs +1 -0
  19. package/dist/cjs/hooks/HookRegistry.cjs +176 -202
  20. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  21. package/dist/cjs/hooks/createToolPolicyHook.cjs +71 -101
  22. package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
  23. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +170 -273
  24. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
  25. package/dist/cjs/hooks/executeHooks.cjs +227 -282
  26. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  27. package/dist/cjs/hooks/index.cjs +6 -0
  28. package/dist/cjs/hooks/matchers.cjs +196 -230
  29. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  30. package/dist/cjs/hooks/types.cjs +24 -24
  31. package/dist/cjs/hooks/types.cjs.map +1 -1
  32. package/dist/cjs/instrumentation.cjs +110 -137
  33. package/dist/cjs/instrumentation.cjs.map +1 -1
  34. package/dist/cjs/langchain/google-common.cjs +0 -3
  35. package/dist/cjs/langchain/index.cjs +80 -43
  36. package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
  37. package/dist/cjs/langchain/messages/tool.cjs +0 -3
  38. package/dist/cjs/langchain/messages.cjs +35 -18
  39. package/dist/cjs/langchain/openai.cjs +0 -3
  40. package/dist/cjs/langchain/prompts.cjs +5 -8
  41. package/dist/cjs/langchain/runnables.cjs +11 -10
  42. package/dist/cjs/langchain/tools.cjs +14 -11
  43. package/dist/cjs/langchain/utils/env.cjs +5 -8
  44. package/dist/cjs/langfuse.cjs +60 -79
  45. package/dist/cjs/langfuse.cjs.map +1 -1
  46. package/dist/cjs/langfuseToolOutputTracing.cjs +267 -399
  47. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  48. package/dist/cjs/llm/anthropic/index.cjs +432 -562
  49. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  50. package/dist/cjs/llm/anthropic/types.cjs +23 -47
  51. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  52. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +441 -731
  53. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  54. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +171 -256
  55. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  56. package/dist/cjs/llm/anthropic/utils/output_parsers.cjs +2 -0
  57. package/dist/cjs/llm/anthropic/utils/tools.cjs +12 -26
  58. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  59. package/dist/cjs/llm/bedrock/index.cjs +214 -240
  60. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  61. package/dist/cjs/llm/bedrock/toolCache.cjs +84 -106
  62. package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
  63. package/dist/cjs/llm/bedrock/utils/index.cjs +2 -0
  64. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +357 -620
  65. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  66. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +141 -149
  67. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
  68. package/dist/cjs/llm/fake.cjs +86 -96
  69. package/dist/cjs/llm/fake.cjs.map +1 -1
  70. package/dist/cjs/llm/google/index.cjs +183 -237
  71. package/dist/cjs/llm/google/index.cjs.map +1 -1
  72. package/dist/cjs/llm/google/utils/common.cjs +404 -674
  73. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  74. package/dist/cjs/llm/google/utils/zod_to_genai_parameters.cjs +2 -0
  75. package/dist/cjs/llm/init.cjs +44 -53
  76. package/dist/cjs/llm/init.cjs.map +1 -1
  77. package/dist/cjs/llm/invoke.cjs +142 -182
  78. package/dist/cjs/llm/invoke.cjs.map +1 -1
  79. package/dist/cjs/llm/openai/index.cjs +1035 -1273
  80. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  81. package/dist/cjs/llm/openai/utils/index.cjs +189 -316
  82. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  83. package/dist/cjs/llm/openrouter/index.cjs +102 -153
  84. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  85. package/dist/cjs/llm/openrouter/toolCache.cjs +35 -44
  86. package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
  87. package/dist/cjs/llm/providers.cjs +29 -37
  88. package/dist/cjs/llm/providers.cjs.map +1 -1
  89. package/dist/cjs/llm/request.cjs +20 -33
  90. package/dist/cjs/llm/request.cjs.map +1 -1
  91. package/dist/cjs/llm/vertexai/index.cjs +446 -453
  92. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  93. package/dist/cjs/main.cjs +547 -528
  94. package/dist/cjs/messages/anthropicToolCache.cjs +68 -119
  95. package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
  96. package/dist/cjs/messages/cache.cjs +305 -418
  97. package/dist/cjs/messages/cache.cjs.map +1 -1
  98. package/dist/cjs/messages/content.cjs +36 -49
  99. package/dist/cjs/messages/content.cjs.map +1 -1
  100. package/dist/cjs/messages/contextPruning.cjs +112 -145
  101. package/dist/cjs/messages/contextPruning.cjs.map +1 -1
  102. package/dist/cjs/messages/contextPruningSettings.cjs +36 -46
  103. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
  104. package/dist/cjs/messages/core.cjs +256 -397
  105. package/dist/cjs/messages/core.cjs.map +1 -1
  106. package/dist/cjs/messages/format.cjs +904 -1387
  107. package/dist/cjs/messages/format.cjs.map +1 -1
  108. package/dist/cjs/messages/ids.cjs +16 -20
  109. package/dist/cjs/messages/ids.cjs.map +1 -1
  110. package/dist/cjs/messages/index.cjs +12 -0
  111. package/dist/cjs/messages/langchain.cjs +18 -18
  112. package/dist/cjs/messages/langchain.cjs.map +1 -1
  113. package/dist/cjs/messages/prune.cjs +1054 -1517
  114. package/dist/cjs/messages/prune.cjs.map +1 -1
  115. package/dist/cjs/messages/recency.cjs +77 -95
  116. package/dist/cjs/messages/recency.cjs.map +1 -1
  117. package/dist/cjs/messages/reducer.cjs +63 -78
  118. package/dist/cjs/messages/reducer.cjs.map +1 -1
  119. package/dist/cjs/messages/tools.cjs +51 -79
  120. package/dist/cjs/messages/tools.cjs.map +1 -1
  121. package/dist/cjs/openai/index.cjs +171 -217
  122. package/dist/cjs/openai/index.cjs.map +1 -1
  123. package/dist/cjs/responses/index.cjs +302 -391
  124. package/dist/cjs/responses/index.cjs.map +1 -1
  125. package/dist/cjs/run.cjs +903 -1113
  126. package/dist/cjs/run.cjs.map +1 -1
  127. package/dist/cjs/session/AgentSession.cjs +805 -986
  128. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  129. package/dist/cjs/session/JsonlSessionStore.cjs +327 -410
  130. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  131. package/dist/cjs/session/handlers.cjs +192 -208
  132. package/dist/cjs/session/handlers.cjs.map +1 -1
  133. package/dist/cjs/session/ids.cjs +9 -10
  134. package/dist/cjs/session/ids.cjs.map +1 -1
  135. package/dist/cjs/session/index.cjs +4 -0
  136. package/dist/cjs/session/messageSerialization.cjs +94 -156
  137. package/dist/cjs/session/messageSerialization.cjs.map +1 -1
  138. package/dist/cjs/splitStream.cjs +147 -206
  139. package/dist/cjs/splitStream.cjs.map +1 -1
  140. package/dist/cjs/stream.cjs +874 -1344
  141. package/dist/cjs/stream.cjs.map +1 -1
  142. package/dist/cjs/summarization/index.cjs +57 -101
  143. package/dist/cjs/summarization/index.cjs.map +1 -1
  144. package/dist/cjs/summarization/node.cjs +643 -796
  145. package/dist/cjs/summarization/node.cjs.map +1 -1
  146. package/dist/cjs/tools/BashExecutor.cjs +110 -136
  147. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  148. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +165 -245
  149. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  150. package/dist/cjs/tools/Calculator.cjs +36 -57
  151. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  152. package/dist/cjs/tools/CodeExecutor.cjs +126 -168
  153. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  154. package/dist/cjs/tools/CodeSessionFileSummary.cjs +36 -46
  155. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
  156. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +459 -649
  157. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  158. package/dist/cjs/tools/ReadFile.cjs +17 -20
  159. package/dist/cjs/tools/ReadFile.cjs.map +1 -1
  160. package/dist/cjs/tools/SkillTool.cjs +26 -27
  161. package/dist/cjs/tools/SkillTool.cjs.map +1 -1
  162. package/dist/cjs/tools/SubagentTool.cjs +59 -61
  163. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  164. package/dist/cjs/tools/ToolNode.cjs +2146 -2686
  165. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  166. package/dist/cjs/tools/ToolSearch.cjs +663 -825
  167. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  168. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs +248 -340
  169. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
  170. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +170 -197
  171. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  172. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +425 -520
  173. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
  174. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +91 -124
  175. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
  176. package/dist/cjs/tools/cloudflare/index.cjs +4 -0
  177. package/dist/cjs/tools/eagerEventExecution.cjs +75 -99
  178. package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
  179. package/dist/cjs/tools/handlers.cjs +200 -262
  180. package/dist/cjs/tools/handlers.cjs.map +1 -1
  181. package/dist/cjs/tools/local/CompileCheckTool.cjs +150 -212
  182. package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
  183. package/dist/cjs/tools/local/FileCheckpointer.cjs +77 -85
  184. package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
  185. package/dist/cjs/tools/local/LocalCodingTools.cjs +763 -1022
  186. package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
  187. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +666 -941
  188. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  189. package/dist/cjs/tools/local/LocalExecutionTools.cjs +49 -92
  190. package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
  191. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +286 -354
  192. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  193. package/dist/cjs/tools/local/attachments.cjs +108 -165
  194. package/dist/cjs/tools/local/attachments.cjs.map +1 -1
  195. package/dist/cjs/tools/local/bashAst.cjs +99 -113
  196. package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
  197. package/dist/cjs/tools/local/editStrategies.cjs +126 -169
  198. package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
  199. package/dist/cjs/tools/local/index.cjs +12 -0
  200. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +136 -218
  201. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  202. package/dist/cjs/tools/local/syntaxCheck.cjs +142 -161
  203. package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
  204. package/dist/cjs/tools/local/textEncoding.cjs +25 -23
  205. package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
  206. package/dist/cjs/tools/local/workspaceFS.cjs +38 -46
  207. package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
  208. package/dist/cjs/tools/ptcTimeout.cjs +27 -47
  209. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  210. package/dist/cjs/tools/schema.cjs +24 -23
  211. package/dist/cjs/tools/schema.cjs.map +1 -1
  212. package/dist/cjs/tools/search/anthropic.cjs +24 -33
  213. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  214. package/dist/cjs/tools/search/content.cjs +95 -137
  215. package/dist/cjs/tools/search/content.cjs.map +1 -1
  216. package/dist/cjs/tools/search/firecrawl.cjs +141 -172
  217. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  218. package/dist/cjs/tools/search/format.cjs +128 -196
  219. package/dist/cjs/tools/search/format.cjs.map +1 -1
  220. package/dist/cjs/tools/search/highlights.cjs +165 -232
  221. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  222. package/dist/cjs/tools/search/index.cjs +2 -0
  223. package/dist/cjs/tools/search/rerankers.cjs +151 -174
  224. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  225. package/dist/cjs/tools/search/schema.cjs +40 -39
  226. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  227. package/dist/cjs/tools/search/search.cjs +428 -530
  228. package/dist/cjs/tools/search/search.cjs.map +1 -1
  229. package/dist/cjs/tools/search/serper-scraper.cjs +106 -127
  230. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  231. package/dist/cjs/tools/search/tavily-scraper.cjs +129 -181
  232. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
  233. package/dist/cjs/tools/search/tavily-search.cjs +295 -359
  234. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
  235. package/dist/cjs/tools/search/tool.cjs +260 -299
  236. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  237. package/dist/cjs/tools/search/utils.cjs +74 -117
  238. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  239. package/dist/cjs/tools/skillCatalog.cjs +54 -72
  240. package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
  241. package/dist/cjs/tools/streamedToolCallSeals.cjs +46 -34
  242. package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
  243. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +612 -771
  244. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  245. package/dist/cjs/tools/subagent/index.cjs +1 -0
  246. package/dist/cjs/tools/toolOutputReferences.cjs +523 -630
  247. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  248. package/dist/cjs/utils/callbacks.cjs +11 -21
  249. package/dist/cjs/utils/callbacks.cjs.map +1 -1
  250. package/dist/cjs/utils/errors.cjs +70 -95
  251. package/dist/cjs/utils/errors.cjs.map +1 -1
  252. package/dist/cjs/utils/events.cjs +32 -42
  253. package/dist/cjs/utils/events.cjs.map +1 -1
  254. package/dist/cjs/utils/graph.cjs +8 -12
  255. package/dist/cjs/utils/graph.cjs.map +1 -1
  256. package/dist/cjs/utils/handlers.cjs +60 -82
  257. package/dist/cjs/utils/handlers.cjs.map +1 -1
  258. package/dist/cjs/utils/index.cjs +9 -0
  259. package/dist/cjs/utils/llm.cjs +19 -27
  260. package/dist/cjs/utils/llm.cjs.map +1 -1
  261. package/dist/cjs/utils/misc.cjs +30 -46
  262. package/dist/cjs/utils/misc.cjs.map +1 -1
  263. package/dist/cjs/utils/run.cjs +50 -66
  264. package/dist/cjs/utils/run.cjs.map +1 -1
  265. package/dist/cjs/utils/schema.cjs +11 -19
  266. package/dist/cjs/utils/schema.cjs.map +1 -1
  267. package/dist/cjs/utils/title.cjs +71 -106
  268. package/dist/cjs/utils/title.cjs.map +1 -1
  269. package/dist/cjs/utils/tokens.cjs +186 -283
  270. package/dist/cjs/utils/tokens.cjs.map +1 -1
  271. package/dist/cjs/utils/truncation.cjs +95 -114
  272. package/dist/cjs/utils/truncation.cjs.map +1 -1
  273. package/dist/esm/agents/AgentContext.mjs +844 -1044
  274. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  275. package/dist/esm/common/constants.mjs +13 -11
  276. package/dist/esm/common/constants.mjs.map +1 -1
  277. package/dist/esm/common/enum.mjs +221 -238
  278. package/dist/esm/common/enum.mjs.map +1 -1
  279. package/dist/esm/common/index.mjs +3 -0
  280. package/dist/esm/events.mjs +121 -167
  281. package/dist/esm/events.mjs.map +1 -1
  282. package/dist/esm/graphs/Graph.mjs +1388 -1804
  283. package/dist/esm/graphs/Graph.mjs.map +1 -1
  284. package/dist/esm/graphs/MultiAgentGraph.mjs +713 -943
  285. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  286. package/dist/esm/graphs/index.mjs +3 -0
  287. package/dist/esm/hitl/askUserQuestion.mjs +60 -60
  288. package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
  289. package/dist/esm/hitl/index.mjs +2 -0
  290. package/dist/esm/hooks/HookRegistry.mjs +176 -200
  291. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  292. package/dist/esm/hooks/createToolPolicyHook.mjs +71 -99
  293. package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
  294. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +170 -271
  295. package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
  296. package/dist/esm/hooks/executeHooks.mjs +227 -280
  297. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  298. package/dist/esm/hooks/index.mjs +7 -0
  299. package/dist/esm/hooks/matchers.mjs +196 -228
  300. package/dist/esm/hooks/matchers.mjs.map +1 -1
  301. package/dist/esm/hooks/types.mjs +24 -22
  302. package/dist/esm/hooks/types.mjs.map +1 -1
  303. package/dist/esm/instrumentation.mjs +109 -132
  304. package/dist/esm/instrumentation.mjs.map +1 -1
  305. package/dist/esm/langchain/google-common.mjs +1 -2
  306. package/dist/esm/langchain/index.mjs +5 -5
  307. package/dist/esm/langchain/language_models/chat_models.mjs +1 -2
  308. package/dist/esm/langchain/messages/tool.mjs +1 -2
  309. package/dist/esm/langchain/messages.mjs +2 -2
  310. package/dist/esm/langchain/openai.mjs +1 -2
  311. package/dist/esm/langchain/prompts.mjs +2 -2
  312. package/dist/esm/langchain/runnables.mjs +2 -2
  313. package/dist/esm/langchain/tools.mjs +2 -2
  314. package/dist/esm/langchain/utils/env.mjs +2 -2
  315. package/dist/esm/langfuse.mjs +60 -76
  316. package/dist/esm/langfuse.mjs.map +1 -1
  317. package/dist/esm/langfuseToolOutputTracing.mjs +267 -395
  318. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  319. package/dist/esm/llm/anthropic/index.mjs +432 -559
  320. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  321. package/dist/esm/llm/anthropic/types.mjs +23 -45
  322. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  323. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +439 -725
  324. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  325. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +171 -253
  326. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  327. package/dist/esm/llm/anthropic/utils/output_parsers.mjs +3 -0
  328. package/dist/esm/llm/anthropic/utils/tools.mjs +12 -24
  329. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  330. package/dist/esm/llm/bedrock/index.mjs +214 -238
  331. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  332. package/dist/esm/llm/bedrock/toolCache.mjs +84 -104
  333. package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
  334. package/dist/esm/llm/bedrock/utils/index.mjs +3 -0
  335. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +357 -618
  336. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  337. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +140 -147
  338. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
  339. package/dist/esm/llm/fake.mjs +86 -94
  340. package/dist/esm/llm/fake.mjs.map +1 -1
  341. package/dist/esm/llm/google/index.mjs +183 -235
  342. package/dist/esm/llm/google/index.mjs.map +1 -1
  343. package/dist/esm/llm/google/utils/common.mjs +403 -666
  344. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  345. package/dist/esm/llm/google/utils/zod_to_genai_parameters.mjs +3 -0
  346. package/dist/esm/llm/init.mjs +44 -51
  347. package/dist/esm/llm/init.mjs.map +1 -1
  348. package/dist/esm/llm/invoke.mjs +142 -180
  349. package/dist/esm/llm/invoke.mjs.map +1 -1
  350. package/dist/esm/llm/openai/index.mjs +1035 -1268
  351. package/dist/esm/llm/openai/index.mjs.map +1 -1
  352. package/dist/esm/llm/openai/utils/index.mjs +188 -312
  353. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  354. package/dist/esm/llm/openrouter/index.mjs +102 -151
  355. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  356. package/dist/esm/llm/openrouter/toolCache.mjs +35 -42
  357. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  358. package/dist/esm/llm/providers.mjs +29 -34
  359. package/dist/esm/llm/providers.mjs.map +1 -1
  360. package/dist/esm/llm/request.mjs +20 -31
  361. package/dist/esm/llm/request.mjs.map +1 -1
  362. package/dist/esm/llm/vertexai/index.mjs +446 -449
  363. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  364. package/dist/esm/main.mjs +99 -87
  365. package/dist/esm/messages/anthropicToolCache.mjs +68 -117
  366. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  367. package/dist/esm/messages/cache.mjs +305 -416
  368. package/dist/esm/messages/cache.mjs.map +1 -1
  369. package/dist/esm/messages/content.mjs +36 -47
  370. package/dist/esm/messages/content.mjs.map +1 -1
  371. package/dist/esm/messages/contextPruning.mjs +112 -143
  372. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  373. package/dist/esm/messages/contextPruningSettings.mjs +36 -44
  374. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  375. package/dist/esm/messages/core.mjs +254 -393
  376. package/dist/esm/messages/core.mjs.map +1 -1
  377. package/dist/esm/messages/format.mjs +902 -1383
  378. package/dist/esm/messages/format.mjs.map +1 -1
  379. package/dist/esm/messages/ids.mjs +16 -18
  380. package/dist/esm/messages/ids.mjs.map +1 -1
  381. package/dist/esm/messages/index.mjs +13 -0
  382. package/dist/esm/messages/langchain.mjs +18 -16
  383. package/dist/esm/messages/langchain.mjs.map +1 -1
  384. package/dist/esm/messages/prune.mjs +1053 -1514
  385. package/dist/esm/messages/prune.mjs.map +1 -1
  386. package/dist/esm/messages/recency.mjs +77 -93
  387. package/dist/esm/messages/recency.mjs.map +1 -1
  388. package/dist/esm/messages/reducer.mjs +63 -76
  389. package/dist/esm/messages/reducer.mjs.map +1 -1
  390. package/dist/esm/messages/tools.mjs +49 -75
  391. package/dist/esm/messages/tools.mjs.map +1 -1
  392. package/dist/esm/openai/index.mjs +170 -215
  393. package/dist/esm/openai/index.mjs.map +1 -1
  394. package/dist/esm/responses/index.mjs +301 -389
  395. package/dist/esm/responses/index.mjs.map +1 -1
  396. package/dist/esm/run.mjs +903 -1111
  397. package/dist/esm/run.mjs.map +1 -1
  398. package/dist/esm/session/AgentSession.mjs +806 -985
  399. package/dist/esm/session/AgentSession.mjs.map +1 -1
  400. package/dist/esm/session/JsonlSessionStore.mjs +326 -407
  401. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  402. package/dist/esm/session/handlers.mjs +192 -206
  403. package/dist/esm/session/handlers.mjs.map +1 -1
  404. package/dist/esm/session/ids.mjs +9 -8
  405. package/dist/esm/session/ids.mjs.map +1 -1
  406. package/dist/esm/session/index.mjs +5 -0
  407. package/dist/esm/session/messageSerialization.mjs +94 -154
  408. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  409. package/dist/esm/splitStream.mjs +147 -204
  410. package/dist/esm/splitStream.mjs.map +1 -1
  411. package/dist/esm/stream.mjs +872 -1341
  412. package/dist/esm/stream.mjs.map +1 -1
  413. package/dist/esm/summarization/index.mjs +57 -99
  414. package/dist/esm/summarization/index.mjs.map +1 -1
  415. package/dist/esm/summarization/node.mjs +640 -790
  416. package/dist/esm/summarization/node.mjs.map +1 -1
  417. package/dist/esm/tools/BashExecutor.mjs +103 -129
  418. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  419. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +162 -239
  420. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  421. package/dist/esm/tools/Calculator.mjs +34 -36
  422. package/dist/esm/tools/Calculator.mjs.map +1 -1
  423. package/dist/esm/tools/CodeExecutor.mjs +123 -164
  424. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  425. package/dist/esm/tools/CodeSessionFileSummary.mjs +36 -44
  426. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  427. package/dist/esm/tools/ProgrammaticToolCalling.mjs +454 -644
  428. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  429. package/dist/esm/tools/ReadFile.mjs +17 -18
  430. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  431. package/dist/esm/tools/SkillTool.mjs +26 -25
  432. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  433. package/dist/esm/tools/SubagentTool.mjs +59 -59
  434. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  435. package/dist/esm/tools/ToolNode.mjs +2144 -2684
  436. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  437. package/dist/esm/tools/ToolSearch.mjs +659 -804
  438. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  439. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs +248 -338
  440. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  441. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +170 -195
  442. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  443. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +424 -517
  444. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  445. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +91 -122
  446. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  447. package/dist/esm/tools/cloudflare/index.mjs +5 -0
  448. package/dist/esm/tools/eagerEventExecution.mjs +75 -96
  449. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  450. package/dist/esm/tools/handlers.mjs +200 -260
  451. package/dist/esm/tools/handlers.mjs.map +1 -1
  452. package/dist/esm/tools/local/CompileCheckTool.mjs +150 -210
  453. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  454. package/dist/esm/tools/local/FileCheckpointer.mjs +77 -83
  455. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  456. package/dist/esm/tools/local/LocalCodingTools.mjs +760 -1017
  457. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  458. package/dist/esm/tools/local/LocalExecutionEngine.mjs +663 -936
  459. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  460. package/dist/esm/tools/local/LocalExecutionTools.mjs +49 -90
  461. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  462. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +283 -349
  463. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  464. package/dist/esm/tools/local/attachments.mjs +108 -163
  465. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  466. package/dist/esm/tools/local/bashAst.mjs +99 -111
  467. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  468. package/dist/esm/tools/local/editStrategies.mjs +126 -167
  469. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  470. package/dist/esm/tools/local/index.mjs +13 -0
  471. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +136 -216
  472. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  473. package/dist/esm/tools/local/syntaxCheck.mjs +138 -155
  474. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  475. package/dist/esm/tools/local/textEncoding.mjs +25 -21
  476. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  477. package/dist/esm/tools/local/workspaceFS.mjs +38 -44
  478. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  479. package/dist/esm/tools/ptcTimeout.mjs +27 -42
  480. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  481. package/dist/esm/tools/schema.mjs +24 -21
  482. package/dist/esm/tools/schema.mjs.map +1 -1
  483. package/dist/esm/tools/search/anthropic.mjs +24 -31
  484. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  485. package/dist/esm/tools/search/content.mjs +93 -116
  486. package/dist/esm/tools/search/content.mjs.map +1 -1
  487. package/dist/esm/tools/search/firecrawl.mjs +139 -169
  488. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  489. package/dist/esm/tools/search/format.mjs +128 -194
  490. package/dist/esm/tools/search/format.mjs.map +1 -1
  491. package/dist/esm/tools/search/highlights.mjs +165 -230
  492. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  493. package/dist/esm/tools/search/index.mjs +3 -0
  494. package/dist/esm/tools/search/rerankers.mjs +149 -168
  495. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  496. package/dist/esm/tools/search/schema.mjs +39 -37
  497. package/dist/esm/tools/search/schema.mjs.map +1 -1
  498. package/dist/esm/tools/search/search.mjs +426 -528
  499. package/dist/esm/tools/search/search.mjs.map +1 -1
  500. package/dist/esm/tools/search/serper-scraper.mjs +104 -124
  501. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  502. package/dist/esm/tools/search/tavily-scraper.mjs +127 -178
  503. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  504. package/dist/esm/tools/search/tavily-search.mjs +293 -357
  505. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  506. package/dist/esm/tools/search/tool.mjs +259 -297
  507. package/dist/esm/tools/search/tool.mjs.map +1 -1
  508. package/dist/esm/tools/search/utils.mjs +74 -115
  509. package/dist/esm/tools/search/utils.mjs.map +1 -1
  510. package/dist/esm/tools/skillCatalog.mjs +54 -70
  511. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  512. package/dist/esm/tools/streamedToolCallSeals.mjs +42 -31
  513. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  514. package/dist/esm/tools/subagent/SubagentExecutor.mjs +612 -768
  515. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  516. package/dist/esm/tools/subagent/index.mjs +2 -0
  517. package/dist/esm/tools/toolOutputReferences.mjs +523 -624
  518. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  519. package/dist/esm/utils/callbacks.mjs +11 -19
  520. package/dist/esm/utils/callbacks.mjs.map +1 -1
  521. package/dist/esm/utils/errors.mjs +70 -93
  522. package/dist/esm/utils/errors.mjs.map +1 -1
  523. package/dist/esm/utils/events.mjs +32 -40
  524. package/dist/esm/utils/events.mjs.map +1 -1
  525. package/dist/esm/utils/graph.mjs +8 -10
  526. package/dist/esm/utils/graph.mjs.map +1 -1
  527. package/dist/esm/utils/handlers.mjs +60 -80
  528. package/dist/esm/utils/handlers.mjs.map +1 -1
  529. package/dist/esm/utils/index.mjs +10 -0
  530. package/dist/esm/utils/llm.mjs +19 -25
  531. package/dist/esm/utils/llm.mjs.map +1 -1
  532. package/dist/esm/utils/misc.mjs +30 -44
  533. package/dist/esm/utils/misc.mjs.map +1 -1
  534. package/dist/esm/utils/run.mjs +50 -64
  535. package/dist/esm/utils/run.mjs.map +1 -1
  536. package/dist/esm/utils/schema.mjs +11 -17
  537. package/dist/esm/utils/schema.mjs.map +1 -1
  538. package/dist/esm/utils/title.mjs +71 -104
  539. package/dist/esm/utils/title.mjs.map +1 -1
  540. package/dist/esm/utils/tokens.mjs +186 -281
  541. package/dist/esm/utils/tokens.mjs.map +1 -1
  542. package/dist/esm/utils/truncation.mjs +95 -112
  543. package/dist/esm/utils/truncation.mjs.map +1 -1
  544. package/dist/types/llm/bedrock/utils/index.d.ts +1 -1
  545. package/dist/types/llm/bedrock/utils/message_outputs.d.ts +9 -0
  546. package/dist/types/llm/vertexai/index.d.ts +10 -0
  547. package/dist/types/tools/ToolNode.d.ts +8 -0
  548. package/dist/types/tools/search/tool.d.ts +17 -0
  549. package/dist/types/tools/search/types.d.ts +4 -0
  550. package/dist/types/tools/streamedToolCallSeals.d.ts +5 -1
  551. package/dist/types/types/tools.d.ts +10 -0
  552. package/package.json +4 -10
  553. package/src/__tests__/stream.eagerEventExecution.test.ts +703 -0
  554. package/src/llm/bedrock/index.ts +40 -0
  555. package/src/llm/bedrock/streamSealDispatch.test.ts +158 -0
  556. package/src/llm/bedrock/utils/index.ts +1 -0
  557. package/src/llm/bedrock/utils/message_outputs.test.ts +85 -0
  558. package/src/llm/bedrock/utils/message_outputs.ts +43 -0
  559. package/src/llm/google/utils/common.test.ts +64 -0
  560. package/src/llm/google/utils/common.ts +18 -0
  561. package/src/llm/openai/index.ts +95 -1
  562. package/src/llm/openai/sequentialToolCallSeals.test.ts +199 -0
  563. package/src/llm/vertexai/index.ts +31 -0
  564. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +88 -0
  565. package/src/llm/vertexai/streamSealDispatch.test.ts +148 -0
  566. package/src/stream.ts +40 -6
  567. package/src/tools/ToolNode.ts +85 -3
  568. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +368 -0
  569. package/src/tools/search/highlights.ts +9 -1
  570. package/src/tools/search/search.ts +41 -3
  571. package/src/tools/search/source-processing.test.ts +373 -0
  572. package/src/tools/search/tool.ts +22 -2
  573. package/src/tools/search/types.ts +4 -0
  574. package/src/tools/streamedToolCallSeals.ts +37 -9
  575. package/src/types/tools.ts +10 -0
  576. package/dist/cjs/langchain/google-common.cjs.map +0 -1
  577. package/dist/cjs/langchain/index.cjs.map +0 -1
  578. package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
  579. package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
  580. package/dist/cjs/langchain/messages.cjs.map +0 -1
  581. package/dist/cjs/langchain/openai.cjs.map +0 -1
  582. package/dist/cjs/langchain/prompts.cjs.map +0 -1
  583. package/dist/cjs/langchain/runnables.cjs.map +0 -1
  584. package/dist/cjs/langchain/tools.cjs.map +0 -1
  585. package/dist/cjs/langchain/utils/env.cjs.map +0 -1
  586. package/dist/cjs/main.cjs.map +0 -1
  587. package/dist/esm/langchain/google-common.mjs.map +0 -1
  588. package/dist/esm/langchain/index.mjs.map +0 -1
  589. package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
  590. package/dist/esm/langchain/messages/tool.mjs.map +0 -1
  591. package/dist/esm/langchain/messages.mjs.map +0 -1
  592. package/dist/esm/langchain/openai.mjs.map +0 -1
  593. package/dist/esm/langchain/prompts.mjs.map +0 -1
  594. package/dist/esm/langchain/runnables.mjs.map +0 -1
  595. package/dist/esm/langchain/tools.mjs.map +0 -1
  596. package/dist/esm/langchain/utils/env.mjs.map +0 -1
  597. package/dist/esm/main.mjs.map +0 -1
@@ -1,1057 +1,876 @@
1
- 'use strict';
2
-
3
- var langgraph = require('@langchain/langgraph');
4
- var messages = require('@langchain/core/messages');
5
- var messageSerialization = require('./messageSerialization.cjs');
6
- var node = require('../summarization/node.cjs');
7
- var JsonlSessionStore = require('./JsonlSessionStore.cjs');
8
- var AgentContext = require('../agents/AgentContext.cjs');
9
- var _enum = require('../common/enum.cjs');
10
- var ids = require('./ids.cjs');
11
- var handlers = require('./handlers.cjs');
12
- var run = require('../run.cjs');
13
-
1
+ require("../common/enum.cjs");
2
+ require("../common/index.cjs");
3
+ const require_node = require("../summarization/node.cjs");
4
+ const require_AgentContext = require("../agents/AgentContext.cjs");
5
+ const require_run = require("../run.cjs");
6
+ const require_messageSerialization = require("./messageSerialization.cjs");
7
+ const require_ids = require("./ids.cjs");
8
+ const require_JsonlSessionStore = require("./JsonlSessionStore.cjs");
9
+ const require_handlers = require("./handlers.cjs");
10
+ let _langchain_core_messages = require("@langchain/core/messages");
11
+ let _langchain_langgraph = require("@langchain/langgraph");
12
+ //#region src/session/AgentSession.ts
14
13
  function isBaseMessage(value) {
15
- return (value instanceof messages.BaseMessage ||
16
- (value != null &&
17
- typeof value === 'object' &&
18
- '_getType' in value &&
19
- typeof value._getType === 'function'));
14
+ return value instanceof _langchain_core_messages.BaseMessage || value != null && typeof value === "object" && "_getType" in value && typeof value._getType === "function";
20
15
  }
21
16
  function normalizeInput(input) {
22
- if (typeof input === 'string') {
23
- const messages$1 = [new messages.HumanMessage(input)];
24
- return { messages: messages$1, state: { messages: messages$1 } };
25
- }
26
- if (Array.isArray(input)) {
27
- return { messages: input, state: { messages: input } };
28
- }
29
- if (isBaseMessage(input)) {
30
- const messages = [input];
31
- return { messages, state: { messages } };
32
- }
33
- return { messages: input.messages, state: input };
17
+ if (typeof input === "string") {
18
+ const messages = [new _langchain_core_messages.HumanMessage(input)];
19
+ return {
20
+ messages,
21
+ state: { messages }
22
+ };
23
+ }
24
+ if (Array.isArray(input)) return {
25
+ messages: input,
26
+ state: { messages: input }
27
+ };
28
+ if (isBaseMessage(input)) {
29
+ const messages = [input];
30
+ return {
31
+ messages,
32
+ state: { messages }
33
+ };
34
+ }
35
+ return {
36
+ messages: input.messages,
37
+ state: input
38
+ };
34
39
  }
35
40
  function contentToText(content) {
36
- const chunks = [];
37
- for (const part of content) {
38
- if (!part) {
39
- continue;
40
- }
41
- if (part.type === _enum.ContentTypes.TEXT && typeof part.text === 'string') {
42
- chunks.push(part.text);
43
- }
44
- }
45
- return chunks.join('');
41
+ const chunks = [];
42
+ for (const part of content) {
43
+ if (!part) continue;
44
+ if (part.type === "text" && typeof part.text === "string") chunks.push(part.text);
45
+ }
46
+ return chunks.join("");
46
47
  }
47
48
  function normalizeConfig(config) {
48
- if ('runConfig' in config) {
49
- return {
50
- runConfig: config.runConfig,
51
- cwd: config.cwd ?? process.cwd(),
52
- sessionPath: config.sessionPath,
53
- name: config.name,
54
- ephemeral: config.ephemeral,
55
- checkpointing: config.checkpointing,
56
- };
57
- }
58
- const { cwd, sessionPath, name, ephemeral, checkpointing, sessionId: _sessionId, ...runConfig } = config;
59
- return {
60
- runConfig: {
61
- ...runConfig,
62
- runId: config.runId ?? ids.createRunId(),
63
- },
64
- cwd: cwd ?? process.cwd(),
65
- sessionPath,
66
- name,
67
- ephemeral,
68
- checkpointing,
69
- };
49
+ if ("runConfig" in config) return {
50
+ runConfig: config.runConfig,
51
+ cwd: config.cwd ?? process.cwd(),
52
+ sessionPath: config.sessionPath,
53
+ name: config.name,
54
+ ephemeral: config.ephemeral,
55
+ checkpointing: config.checkpointing
56
+ };
57
+ const { cwd, sessionPath, name, ephemeral, checkpointing, sessionId: _sessionId, ...runConfig } = config;
58
+ return {
59
+ runConfig: {
60
+ ...runConfig,
61
+ runId: config.runId ?? require_ids.createRunId()
62
+ },
63
+ cwd: cwd ?? process.cwd(),
64
+ sessionPath,
65
+ name,
66
+ ephemeral,
67
+ checkpointing
68
+ };
70
69
  }
71
70
  function isMissingSessionError(error) {
72
- if (error == null || typeof error !== 'object') {
73
- return false;
74
- }
75
- const candidate = error;
76
- if (candidate.code === 'ENOENT') {
77
- return true;
78
- }
79
- return candidate.message?.startsWith('Session not found:') === true;
71
+ if (error == null || typeof error !== "object") return false;
72
+ const candidate = error;
73
+ if (candidate.code === "ENOENT") return true;
74
+ return candidate.message?.startsWith("Session not found:") === true;
80
75
  }
81
76
  async function createStore(params) {
82
- if (params.ephemeral === true) {
83
- return undefined;
84
- }
85
- if (params.sessionPath != null && params.sessionPath !== '') {
86
- try {
87
- return await JsonlSessionStore.JsonlSessionStore.openPath(params.sessionPath);
88
- }
89
- catch (error) {
90
- if (!isMissingSessionError(error)) {
91
- throw error;
92
- }
93
- return JsonlSessionStore.JsonlSessionStore.create({
94
- path: params.sessionPath,
95
- cwd: params.cwd,
96
- name: params.name,
97
- sessionId: params.sessionId,
98
- });
99
- }
100
- }
101
- return JsonlSessionStore.JsonlSessionStore.create({
102
- cwd: params.cwd,
103
- name: params.name,
104
- sessionId: params.sessionId,
105
- });
77
+ if (params.ephemeral === true) return;
78
+ if (params.sessionPath != null && params.sessionPath !== "") try {
79
+ return await require_JsonlSessionStore.JsonlSessionStore.openPath(params.sessionPath);
80
+ } catch (error) {
81
+ if (!isMissingSessionError(error)) throw error;
82
+ return require_JsonlSessionStore.JsonlSessionStore.create({
83
+ path: params.sessionPath,
84
+ cwd: params.cwd,
85
+ name: params.name,
86
+ sessionId: params.sessionId
87
+ });
88
+ }
89
+ return require_JsonlSessionStore.JsonlSessionStore.create({
90
+ cwd: params.cwd,
91
+ name: params.name,
92
+ sessionId: params.sessionId
93
+ });
106
94
  }
107
95
  function mergeInitialSummary(existing, sessionSummary) {
108
- if (!existing) {
109
- return sessionSummary;
110
- }
111
- if (!sessionSummary) {
112
- return existing;
113
- }
114
- if (existing.text === sessionSummary.text) {
115
- return existing;
116
- }
117
- return {
118
- text: `${existing.text}\n\n${sessionSummary.text}`,
119
- tokenCount: existing.tokenCount + sessionSummary.tokenCount,
120
- };
96
+ if (!existing) return sessionSummary;
97
+ if (!sessionSummary) return existing;
98
+ if (existing.text === sessionSummary.text) return existing;
99
+ return {
100
+ text: `${existing.text}\n\n${sessionSummary.text}`,
101
+ tokenCount: existing.tokenCount + sessionSummary.tokenCount
102
+ };
121
103
  }
122
104
  function applyInitialSummaryToAgent(agent, initialSummary) {
123
- const merged = mergeInitialSummary(agent.initialSummary, initialSummary);
124
- return merged ? { ...agent, initialSummary: merged } : agent;
105
+ const merged = mergeInitialSummary(agent.initialSummary, initialSummary);
106
+ return merged ? {
107
+ ...agent,
108
+ initialSummary: merged
109
+ } : agent;
125
110
  }
126
111
  function applyInitialSummaryToGraphConfig(graphConfig, initialSummary) {
127
- if (!initialSummary) {
128
- return graphConfig;
129
- }
130
- if ('agents' in graphConfig) {
131
- return {
132
- ...graphConfig,
133
- agents: graphConfig.agents.map((agent) => applyInitialSummaryToAgent(agent, initialSummary)),
134
- };
135
- }
136
- return {
137
- ...graphConfig,
138
- initialSummary: mergeInitialSummary(graphConfig.initialSummary, initialSummary),
139
- };
112
+ if (!initialSummary) return graphConfig;
113
+ if ("agents" in graphConfig) return {
114
+ ...graphConfig,
115
+ agents: graphConfig.agents.map((agent) => applyInitialSummaryToAgent(agent, initialSummary))
116
+ };
117
+ return {
118
+ ...graphConfig,
119
+ initialSummary: mergeInitialSummary(graphConfig.initialSummary, initialSummary)
120
+ };
140
121
  }
141
122
  function isCheckpointSaver(value) {
142
- if (value == null || typeof value !== 'object') {
143
- return false;
144
- }
145
- const candidate = value;
146
- return (typeof candidate.getTuple === 'function' &&
147
- typeof candidate.list === 'function' &&
148
- typeof candidate.put === 'function' &&
149
- typeof candidate.putWrites === 'function' &&
150
- typeof candidate.deleteThread === 'function');
123
+ if (value == null || typeof value !== "object") return false;
124
+ const candidate = value;
125
+ return typeof candidate.getTuple === "function" && typeof candidate.list === "function" && typeof candidate.put === "function" && typeof candidate.putWrites === "function" && typeof candidate.deleteThread === "function";
151
126
  }
152
127
  function getGraphCheckpointer(graphConfig) {
153
- const checkpointer = graphConfig.compileOptions?.checkpointer;
154
- return isCheckpointSaver(checkpointer) ? checkpointer : undefined;
128
+ const checkpointer = graphConfig.compileOptions?.checkpointer;
129
+ return isCheckpointSaver(checkpointer) ? checkpointer : void 0;
155
130
  }
156
131
  function createCheckpointingState(runConfig, checkpointing) {
157
- const graphCheckpointer = getGraphCheckpointer(runConfig.graphConfig);
158
- if (checkpointing === false) {
159
- return {
160
- enabled: false,
161
- disableGraphCheckpointer: true,
162
- };
163
- }
164
- if (typeof checkpointing === 'object') {
165
- if (checkpointing.enabled === false) {
166
- return {
167
- enabled: false,
168
- disableGraphCheckpointer: true,
169
- };
170
- }
171
- return {
172
- enabled: true,
173
- checkpointer: checkpointing.checkpointer ?? graphCheckpointer ?? new langgraph.MemorySaver(),
174
- };
175
- }
176
- if (checkpointing === true || runConfig.humanInTheLoop?.enabled === true) {
177
- return {
178
- enabled: true,
179
- checkpointer: graphCheckpointer ?? new langgraph.MemorySaver(),
180
- };
181
- }
182
- return {
183
- enabled: graphCheckpointer != null,
184
- checkpointer: graphCheckpointer,
185
- };
132
+ const graphCheckpointer = getGraphCheckpointer(runConfig.graphConfig);
133
+ if (checkpointing === false) return {
134
+ enabled: false,
135
+ disableGraphCheckpointer: true
136
+ };
137
+ if (typeof checkpointing === "object") {
138
+ if (checkpointing.enabled === false) return {
139
+ enabled: false,
140
+ disableGraphCheckpointer: true
141
+ };
142
+ return {
143
+ enabled: true,
144
+ checkpointer: checkpointing.checkpointer ?? graphCheckpointer ?? new _langchain_langgraph.MemorySaver()
145
+ };
146
+ }
147
+ if (checkpointing === true || runConfig.humanInTheLoop?.enabled === true) return {
148
+ enabled: true,
149
+ checkpointer: graphCheckpointer ?? new _langchain_langgraph.MemorySaver()
150
+ };
151
+ return {
152
+ enabled: graphCheckpointer != null,
153
+ checkpointer: graphCheckpointer
154
+ };
186
155
  }
187
156
  function removeCheckpointerFromGraphConfig(graphConfig) {
188
- if (graphConfig.compileOptions?.checkpointer == null) {
189
- return graphConfig;
190
- }
191
- const { checkpointer: _checkpointer, ...compileOptions } = graphConfig.compileOptions;
192
- return {
193
- ...graphConfig,
194
- compileOptions,
195
- };
157
+ if (graphConfig.compileOptions?.checkpointer == null) return graphConfig;
158
+ const { checkpointer: _checkpointer, ...compileOptions } = graphConfig.compileOptions;
159
+ return {
160
+ ...graphConfig,
161
+ compileOptions
162
+ };
196
163
  }
197
164
  function applyCheckpointerToGraphConfig(graphConfig, checkpointer) {
198
- if (!checkpointer) {
199
- return graphConfig;
200
- }
201
- if (graphConfig.compileOptions?.checkpointer === checkpointer) {
202
- return graphConfig;
203
- }
204
- return {
205
- ...graphConfig,
206
- compileOptions: {
207
- ...(graphConfig.compileOptions ?? {}),
208
- checkpointer,
209
- },
210
- };
165
+ if (!checkpointer) return graphConfig;
166
+ if (graphConfig.compileOptions?.checkpointer === checkpointer) return graphConfig;
167
+ return {
168
+ ...graphConfig,
169
+ compileOptions: {
170
+ ...graphConfig.compileOptions ?? {},
171
+ checkpointer
172
+ }
173
+ };
211
174
  }
212
175
  function applyCheckpointingToGraphConfig(graphConfig, checkpointing) {
213
- if (checkpointing.disableGraphCheckpointer === true) {
214
- return removeCheckpointerFromGraphConfig(graphConfig);
215
- }
216
- return applyCheckpointerToGraphConfig(graphConfig, checkpointing.checkpointer);
176
+ if (checkpointing.disableGraphCheckpointer === true) return removeCheckpointerFromGraphConfig(graphConfig);
177
+ return applyCheckpointerToGraphConfig(graphConfig, checkpointing.checkpointer);
217
178
  }
218
179
  function getConfigString(config, key) {
219
- const configurable = config?.configurable;
220
- const value = configurable?.[key];
221
- return typeof value === 'string' && value !== '' ? value : undefined;
180
+ const value = (config?.configurable)?.[key];
181
+ return typeof value === "string" && value !== "" ? value : void 0;
222
182
  }
223
183
  function getConfigOptionalString(config, key) {
224
- const configurable = config?.configurable;
225
- if (configurable == null ||
226
- !Object.prototype.hasOwnProperty.call(configurable, key)) {
227
- return undefined;
228
- }
229
- const value = configurable[key];
230
- return typeof value === 'string' ? value : undefined;
184
+ const configurable = config?.configurable;
185
+ if (configurable == null || !Object.prototype.hasOwnProperty.call(configurable, key)) return;
186
+ const value = configurable[key];
187
+ return typeof value === "string" ? value : void 0;
231
188
  }
232
189
  function createCallerConfig(threadId, options) {
233
- return {
234
- recursionLimit: 50,
235
- ...(options.config ?? {}),
236
- configurable: {
237
- ...(options.config?.configurable ?? {}),
238
- thread_id: threadId,
239
- },
240
- version: options.config?.version ?? 'v2',
241
- };
190
+ return {
191
+ recursionLimit: 50,
192
+ ...options.config ?? {},
193
+ configurable: {
194
+ ...options.config?.configurable ?? {},
195
+ thread_id: threadId
196
+ },
197
+ version: options.config?.version ?? "v2"
198
+ };
242
199
  }
243
200
  function createCheckpointLookupConfig(config) {
244
- const threadId = getConfigString(config, 'thread_id');
245
- if (threadId == null) {
246
- return config;
247
- }
248
- const checkpointNs = getConfigString(config, 'checkpoint_ns') ?? '';
249
- const checkpointId = getConfigString(config, 'checkpoint_id');
250
- return {
251
- configurable: {
252
- ...config.configurable,
253
- thread_id: threadId,
254
- checkpoint_ns: checkpointNs,
255
- ...(checkpointId != null ? { checkpoint_id: checkpointId } : {}),
256
- },
257
- };
201
+ const threadId = getConfigString(config, "thread_id");
202
+ if (threadId == null) return config;
203
+ const checkpointNs = getConfigString(config, "checkpoint_ns") ?? "";
204
+ const checkpointId = getConfigString(config, "checkpoint_id");
205
+ return { configurable: {
206
+ ...config.configurable,
207
+ thread_id: threadId,
208
+ checkpoint_ns: checkpointNs,
209
+ ...checkpointId != null ? { checkpoint_id: checkpointId } : {}
210
+ } };
258
211
  }
259
212
  function applyCheckpointReferenceToConfig(config, checkpoint, options) {
260
- if (checkpoint?.checkpointId == null ||
261
- checkpoint.checkpointId === '' ||
262
- (options?.overwrite !== true &&
263
- getConfigString(config, 'checkpoint_id') != null)) {
264
- return config;
265
- }
266
- return {
267
- ...config,
268
- configurable: {
269
- ...config.configurable,
270
- checkpoint_id: checkpoint.checkpointId,
271
- checkpoint_ns: checkpoint.checkpointNs ?? '',
272
- },
273
- };
213
+ if (checkpoint?.checkpointId == null || checkpoint.checkpointId === "" || options?.overwrite !== true && getConfigString(config, "checkpoint_id") != null) return config;
214
+ return {
215
+ ...config,
216
+ configurable: {
217
+ ...config.configurable,
218
+ checkpoint_id: checkpoint.checkpointId,
219
+ checkpoint_ns: checkpoint.checkpointNs ?? ""
220
+ }
221
+ };
274
222
  }
275
223
  function getStoredCheckpointForConfig(store, threadId, config) {
276
- const requestedCheckpointNs = getConfigOptionalString(config, 'checkpoint_ns');
277
- if (requestedCheckpointNs == null) {
278
- return store?.getLatestCheckpoint(threadId);
279
- }
280
- const checkpoints = store?.getCheckpoints(threadId) ?? [];
281
- for (let i = checkpoints.length - 1; i >= 0; i--) {
282
- const checkpoint = checkpoints[i];
283
- if (checkpoint.data.source === 'reset') {
284
- return undefined;
285
- }
286
- if ((checkpoint.data.checkpointNs ?? '') === requestedCheckpointNs) {
287
- return checkpoint;
288
- }
289
- }
290
- return undefined;
224
+ const requestedCheckpointNs = getConfigOptionalString(config, "checkpoint_ns");
225
+ if (requestedCheckpointNs == null) return store?.getLatestCheckpoint(threadId);
226
+ const checkpoints = store?.getCheckpoints(threadId) ?? [];
227
+ for (let i = checkpoints.length - 1; i >= 0; i--) {
228
+ const checkpoint = checkpoints[i];
229
+ if (checkpoint.data.source === "reset") return;
230
+ if ((checkpoint.data.checkpointNs ?? "") === requestedCheckpointNs) return checkpoint;
231
+ }
291
232
  }
292
233
  function createLatestCheckpointLookupConfig(config) {
293
- const lookup = createCheckpointLookupConfig(config);
294
- const { checkpoint_id: _checkpointId, ...configurable } = lookup.configurable ?? {};
295
- return { configurable };
234
+ const { checkpoint_id: _checkpointId, ...configurable } = createCheckpointLookupConfig(config).configurable ?? {};
235
+ return { configurable };
296
236
  }
297
237
  async function getLatestCheckpointTuple(checkpointer, config) {
298
- if (!checkpointer) {
299
- return undefined;
300
- }
301
- const lookupConfig = createLatestCheckpointLookupConfig(config);
302
- const tuple = await checkpointer.getTuple(lookupConfig);
303
- if (tuple) {
304
- return tuple;
305
- }
306
- for await (const checkpoint of checkpointer.list(lookupConfig, {
307
- limit: 1,
308
- })) {
309
- return checkpoint;
310
- }
311
- return undefined;
238
+ if (!checkpointer) return;
239
+ const lookupConfig = createLatestCheckpointLookupConfig(config);
240
+ const tuple = await checkpointer.getTuple(lookupConfig);
241
+ if (tuple) return tuple;
242
+ for await (const checkpoint of checkpointer.list(lookupConfig, { limit: 1 })) return checkpoint;
312
243
  }
313
244
  async function getSelectedCheckpointTuple(checkpointer, config) {
314
- return checkpointer?.getTuple(createCheckpointLookupConfig(config));
245
+ return checkpointer?.getTuple(createCheckpointLookupConfig(config));
315
246
  }
316
247
  function createCheckpointReference(params) {
317
- const checkpointNs = getConfigString(params.tuple.config, 'checkpoint_ns') ?? '';
318
- const parentCheckpointId = getConfigString(params.tuple.parentConfig, 'checkpoint_id');
319
- return {
320
- provider: 'langgraph',
321
- threadId: params.threadId,
322
- checkpointId: params.tuple.checkpoint.id,
323
- checkpointNs,
324
- ...(parentCheckpointId != null ? { parentCheckpointId } : {}),
325
- };
248
+ const checkpointNs = getConfigString(params.tuple.config, "checkpoint_ns") ?? "";
249
+ const parentCheckpointId = getConfigString(params.tuple.parentConfig, "checkpoint_id");
250
+ return {
251
+ provider: "langgraph",
252
+ threadId: params.threadId,
253
+ checkpointId: params.tuple.checkpoint.id,
254
+ checkpointNs,
255
+ ...parentCheckpointId != null ? { parentCheckpointId } : {}
256
+ };
326
257
  }
327
258
  function createSessionRunState(entries) {
328
- const messages = [];
329
- let initialSummary;
330
- for (const entry of entries) {
331
- if (entry.type === 'summary') {
332
- initialSummary = {
333
- text: entry.data.text,
334
- tokenCount: typeof entry.data.tokenCount === 'number' &&
335
- Number.isFinite(entry.data.tokenCount)
336
- ? entry.data.tokenCount
337
- : 0,
338
- };
339
- messages.length = 0;
340
- continue;
341
- }
342
- if (entry.type === 'message') {
343
- messages.push(messageSerialization.deserializeMessage(entry.data.message));
344
- }
345
- }
346
- return { messages, initialSummary };
259
+ const messages = [];
260
+ let initialSummary;
261
+ for (const entry of entries) {
262
+ if (entry.type === "summary") {
263
+ initialSummary = {
264
+ text: entry.data.text,
265
+ tokenCount: typeof entry.data.tokenCount === "number" && Number.isFinite(entry.data.tokenCount) ? entry.data.tokenCount : 0
266
+ };
267
+ messages.length = 0;
268
+ continue;
269
+ }
270
+ if (entry.type === "message") messages.push(require_messageSerialization.deserializeMessage(entry.data.message));
271
+ }
272
+ return {
273
+ messages,
274
+ initialSummary
275
+ };
347
276
  }
348
277
  function isMessageEntry(entry) {
349
- return entry.type === 'message';
278
+ return entry.type === "message";
350
279
  }
351
280
  function getSessionBranchTarget(store, entryId, position) {
352
- const entry = store.getEntry(entryId);
353
- if (!entry) {
354
- throw new Error(`Entry not found: ${entryId}`);
355
- }
356
- if (position === 'at') {
357
- return entry;
358
- }
359
- return entry.parentId == null ? undefined : store.getEntry(entry.parentId);
281
+ const entry = store.getEntry(entryId);
282
+ if (!entry) throw new Error(`Entry not found: ${entryId}`);
283
+ if (position === "at") return entry;
284
+ return entry.parentId == null ? void 0 : store.getEntry(entry.parentId);
360
285
  }
361
286
  function getAbandonedPathForBranch(store, previousLeafId, targetLeafId) {
362
- const previousPath = store.getPath(previousLeafId ?? undefined);
363
- if (previousPath.length === 0) {
364
- return [];
365
- }
366
- const targetPath = targetLeafId == null ? [] : store.getPath(targetLeafId);
367
- const maxSharedLength = Math.min(previousPath.length, targetPath.length);
368
- let sharedLength = 0;
369
- while (sharedLength < maxSharedLength &&
370
- previousPath[sharedLength].id === targetPath[sharedLength].id) {
371
- sharedLength++;
372
- }
373
- return previousPath.slice(sharedLength);
287
+ const previousPath = store.getPath(previousLeafId ?? void 0);
288
+ if (previousPath.length === 0) return [];
289
+ const targetPath = targetLeafId == null ? [] : store.getPath(targetLeafId);
290
+ const maxSharedLength = Math.min(previousPath.length, targetPath.length);
291
+ let sharedLength = 0;
292
+ while (sharedLength < maxSharedLength && previousPath[sharedLength].id === targetPath[sharedLength].id) sharedLength++;
293
+ return previousPath.slice(sharedLength);
374
294
  }
375
295
  function createAgentInputFromGraphConfig(graphConfig, initialSummary, retainRecentTurns, instructions) {
376
- let agent;
377
- if ('agents' in graphConfig) {
378
- if (graphConfig.agents.length === 0) {
379
- throw new Error('Cannot compact a session with no agents');
380
- }
381
- agent = graphConfig.agents[0];
382
- }
383
- else {
384
- const { type: _type, llmConfig, signal: _signal, tools = [], ...agentInputs } = graphConfig;
385
- const { provider, ...clientOptions } = llmConfig;
386
- agent = {
387
- ...agentInputs,
388
- tools,
389
- provider,
390
- clientOptions,
391
- agentId: 'default',
392
- };
393
- }
394
- const summarizationConfig = {
395
- ...(agent.summarizationConfig ?? {}),
396
- ...(instructions != null && instructions !== ''
397
- ? { prompt: instructions }
398
- : {}),
399
- retainRecent: {
400
- ...(agent.summarizationConfig?.retainRecent ?? {}),
401
- ...(retainRecentTurns != null ? { turns: retainRecentTurns } : {}),
402
- },
403
- };
404
- return {
405
- ...applyInitialSummaryToAgent(agent, initialSummary),
406
- summarizationEnabled: true,
407
- summarizationConfig,
408
- };
296
+ let agent;
297
+ if ("agents" in graphConfig) {
298
+ if (graphConfig.agents.length === 0) throw new Error("Cannot compact a session with no agents");
299
+ agent = graphConfig.agents[0];
300
+ } else {
301
+ const { type: _type, llmConfig, signal: _signal, tools = [], ...agentInputs } = graphConfig;
302
+ const { provider, ...clientOptions } = llmConfig;
303
+ agent = {
304
+ ...agentInputs,
305
+ tools,
306
+ provider,
307
+ clientOptions,
308
+ agentId: "default"
309
+ };
310
+ }
311
+ const summarizationConfig = {
312
+ ...agent.summarizationConfig ?? {},
313
+ ...instructions != null && instructions !== "" ? { prompt: instructions } : {},
314
+ retainRecent: {
315
+ ...agent.summarizationConfig?.retainRecent ?? {},
316
+ ...retainRecentTurns != null ? { turns: retainRecentTurns } : {}
317
+ }
318
+ };
319
+ return {
320
+ ...applyInitialSummaryToAgent(agent, initialSummary),
321
+ summarizationEnabled: true,
322
+ summarizationConfig
323
+ };
409
324
  }
410
325
  function createManualCompactGraph(params) {
411
- const contentData = [];
412
- const contentIndexMap = new Map();
413
- const result = {
414
- graph: {
415
- contentData,
416
- contentIndexMap,
417
- runId: params.runId,
418
- isMultiAgent: false,
419
- hookRegistry: params.hooks,
420
- dispatchRunStep: async (runStep) => {
421
- contentData.push(runStep);
422
- contentIndexMap.set(runStep.id, runStep.index);
423
- await params.customHandlers?.[_enum.GraphEvents.ON_RUN_STEP]?.handle(_enum.GraphEvents.ON_RUN_STEP, runStep);
424
- },
425
- dispatchRunStepCompleted: async (stepId, completed) => {
426
- const runStep = contentData.find((step) => step.id === stepId);
427
- const resultWithStep = {
428
- ...completed,
429
- id: stepId,
430
- index: runStep?.index ?? 0,
431
- };
432
- if (completed.type === 'summary') {
433
- result.completedSummary = completed.summary;
434
- }
435
- await params.customHandlers?.[_enum.GraphEvents.ON_RUN_STEP_COMPLETED]?.handle(_enum.GraphEvents.ON_RUN_STEP_COMPLETED, {
436
- result: resultWithStep,
437
- });
438
- },
439
- },
440
- };
441
- return result;
326
+ const contentData = [];
327
+ const contentIndexMap = /* @__PURE__ */ new Map();
328
+ const result = { graph: {
329
+ contentData,
330
+ contentIndexMap,
331
+ runId: params.runId,
332
+ isMultiAgent: false,
333
+ hookRegistry: params.hooks,
334
+ dispatchRunStep: async (runStep) => {
335
+ contentData.push(runStep);
336
+ contentIndexMap.set(runStep.id, runStep.index);
337
+ await params.customHandlers?.["on_run_step"]?.handle("on_run_step", runStep);
338
+ },
339
+ dispatchRunStepCompleted: async (stepId, completed) => {
340
+ const runStep = contentData.find((step) => step.id === stepId);
341
+ const resultWithStep = {
342
+ ...completed,
343
+ id: stepId,
344
+ index: runStep?.index ?? 0
345
+ };
346
+ if (completed.type === "summary") result.completedSummary = completed.summary;
347
+ await params.customHandlers?.["on_run_step_completed"]?.handle("on_run_step_completed", { result: resultWithStep });
348
+ }
349
+ } };
350
+ return result;
442
351
  }
443
352
  function getSummaryText(summary) {
444
- const firstBlock = summary?.content?.[0];
445
- return firstBlock != null &&
446
- typeof firstBlock === 'object' &&
447
- 'text' in firstBlock &&
448
- typeof firstBlock.text === 'string'
449
- ? firstBlock.text
450
- : '';
353
+ const firstBlock = summary?.content?.[0];
354
+ return firstBlock != null && typeof firstBlock === "object" && "text" in firstBlock && typeof firstBlock.text === "string" ? firstBlock.text : "";
451
355
  }
452
356
  function getSummaryTokenCount(summary) {
453
- return typeof summary?.tokenCount === 'number' &&
454
- Number.isFinite(summary.tokenCount)
455
- ? summary.tokenCount
456
- : 0;
357
+ return typeof summary?.tokenCount === "number" && Number.isFinite(summary.tokenCount) ? summary.tokenCount : 0;
457
358
  }
458
359
  function filterRemoveMessages(messages) {
459
- return messages.filter((message) => message._getType() !== 'remove');
460
- }
461
- class LiveAgentSessionStream {
462
- resultPromise;
463
- events = [];
464
- waiters = [];
465
- closed = false;
466
- failed = false;
467
- error;
468
- setResultPromise(resultPromise) {
469
- this.resultPromise = resultPromise;
470
- }
471
- push(event) {
472
- if (this.closed) {
473
- return;
474
- }
475
- const waiter = this.waiters.shift();
476
- if (waiter) {
477
- waiter.resolve({ value: event, done: false });
478
- return;
479
- }
480
- this.events.push(event);
481
- }
482
- complete() {
483
- this.closed = true;
484
- for (const waiter of this.waiters.splice(0)) {
485
- waiter.resolve({
486
- value: undefined,
487
- done: true,
488
- });
489
- }
490
- }
491
- fail(error) {
492
- this.error = error;
493
- this.failed = true;
494
- this.closed = true;
495
- for (const waiter of this.waiters.splice(0)) {
496
- waiter.reject(error);
497
- }
498
- }
499
- nextEvent() {
500
- const event = this.events.shift();
501
- if (event !== undefined) {
502
- return Promise.resolve({ value: event, done: false });
503
- }
504
- if (this.failed) {
505
- return Promise.reject(this.error);
506
- }
507
- if (this.closed) {
508
- return Promise.resolve({
509
- value: undefined,
510
- done: true,
511
- });
512
- }
513
- return new Promise((resolve, reject) => {
514
- this.waiters.push({ resolve, reject });
515
- });
516
- }
517
- async *[Symbol.asyncIterator]() {
518
- for (;;) {
519
- const next = await this.nextEvent();
520
- if (next.done === true) {
521
- return;
522
- }
523
- yield next.value;
524
- }
525
- }
526
- async *toTextStream() {
527
- for await (const event of this) {
528
- if (event.type !== 'message.delta' || event.data == null) {
529
- continue;
530
- }
531
- const data = event.data;
532
- if (typeof data === 'object' && !Array.isArray(data)) {
533
- const delta = data.delta;
534
- if (delta != null &&
535
- typeof delta === 'object' &&
536
- !Array.isArray(delta)) {
537
- const content = delta.content;
538
- if (Array.isArray(content)) {
539
- for (const part of content) {
540
- if (part != null &&
541
- typeof part === 'object' &&
542
- !Array.isArray(part) &&
543
- typeof part.text === 'string') {
544
- yield part.text;
545
- }
546
- }
547
- }
548
- }
549
- }
550
- }
551
- }
552
- finalResult() {
553
- if (!this.resultPromise) {
554
- return Promise.reject(new Error('Session stream has not started'));
555
- }
556
- return this.resultPromise;
557
- }
558
- }
559
- class AgentSession {
560
- runConfig;
561
- store;
562
- calibrationRatio;
563
- checkpointing;
564
- cwd;
565
- threadId;
566
- constructor(params) {
567
- this.runConfig = params.runConfig;
568
- this.cwd = params.cwd;
569
- this.threadId = params.threadId;
570
- this.store = params.store;
571
- this.checkpointing = params.checkpointing;
572
- }
573
- static async create(config) {
574
- const normalized = normalizeConfig(config);
575
- const explicitSessionId = 'sessionId' in config && typeof config.sessionId === 'string'
576
- ? config.sessionId
577
- : undefined;
578
- const store = await createStore({
579
- cwd: normalized.cwd,
580
- sessionPath: normalized.sessionPath,
581
- name: normalized.name,
582
- sessionId: explicitSessionId,
583
- ephemeral: normalized.ephemeral,
584
- });
585
- return new AgentSession({
586
- runConfig: normalized.runConfig,
587
- cwd: normalized.cwd,
588
- threadId: store?.header.id ?? explicitSessionId ?? ids.createSessionId(),
589
- checkpointing: createCheckpointingState(normalized.runConfig, normalized.checkpointing),
590
- store,
591
- });
592
- }
593
- get sessionPath() {
594
- return this.store?.path;
595
- }
596
- getSessionStore() {
597
- return this.store;
598
- }
599
- getCheckpointer() {
600
- return this.checkpointing.checkpointer;
601
- }
602
- async getLatestCheckpoint(options = {}) {
603
- const threadId = options.threadId ?? this.threadId;
604
- const baseConfig = options.config ?? {};
605
- const config = createCheckpointLookupConfig({
606
- ...baseConfig,
607
- configurable: {
608
- ...(baseConfig.configurable ?? {}),
609
- thread_id: threadId,
610
- ...(options.checkpointNs != null
611
- ? { checkpoint_ns: options.checkpointNs }
612
- : {}),
613
- },
614
- });
615
- const tuple = await getLatestCheckpointTuple(this.checkpointing.checkpointer, config);
616
- return tuple ? createCheckpointReference({ threadId, tuple }) : undefined;
617
- }
618
- async hasCheckpointState(config) {
619
- if (!this.checkpointing.enabled) {
620
- return false;
621
- }
622
- const tuple = await getSelectedCheckpointTuple(this.checkpointing.checkpointer, config);
623
- return tuple != null;
624
- }
625
- async recordCheckpoint(params) {
626
- if (!this.checkpointing.enabled) {
627
- return;
628
- }
629
- const checkpointConfig = applyCheckpointReferenceToConfig(params.config, {
630
- checkpointId: params.checkpointId,
631
- checkpointNs: params.checkpointNs,
632
- }, { overwrite: true });
633
- const tuple = params.checkpointId != null && params.checkpointId !== ''
634
- ? await getSelectedCheckpointTuple(this.checkpointing.checkpointer, checkpointConfig)
635
- : await getLatestCheckpointTuple(this.checkpointing.checkpointer, params.config);
636
- if (!tuple) {
637
- return;
638
- }
639
- const reference = createCheckpointReference({
640
- threadId: params.threadId,
641
- tuple,
642
- });
643
- await this.store?.appendCheckpoint({
644
- source: params.source,
645
- runId: params.runId,
646
- threadId: params.threadId,
647
- checkpointId: reference.checkpointId,
648
- checkpointNs: reference.checkpointNs,
649
- parentCheckpointId: reference.parentCheckpointId,
650
- });
651
- }
652
- getCheckpointThreadIds() {
653
- const threadIds = new Set([this.threadId]);
654
- for (const checkpoint of this.store?.getCheckpoints() ?? []) {
655
- threadIds.add(checkpoint.data.threadId);
656
- }
657
- return [...threadIds];
658
- }
659
- async resetCheckpointThreads(reason) {
660
- const checkpointer = this.checkpointing.checkpointer;
661
- if (!this.checkpointing.enabled || checkpointer == null) {
662
- return;
663
- }
664
- for (const threadId of this.getCheckpointThreadIds()) {
665
- await checkpointer.deleteThread(threadId);
666
- await this.store?.appendCheckpoint({
667
- source: 'reset',
668
- threadId,
669
- reason,
670
- });
671
- }
672
- }
673
- async runInternal(input, options = {}, onEvent) {
674
- const runId = options.runId ?? ids.createRunId();
675
- const threadId = options.threadId ?? this.threadId;
676
- const isSessionThread = threadId === this.threadId;
677
- const normalizedInput = normalizeInput(input);
678
- const inputMessages = normalizedInput.messages;
679
- const callerConfig = createCallerConfig(threadId, options);
680
- const useCheckpointState = await this.hasCheckpointState(callerConfig);
681
- let parentId = this.store?.getLeafEntry()?.id ?? null;
682
- if (isSessionThread) {
683
- for (const message of inputMessages) {
684
- const entry = await this.store?.appendMessage(message, parentId);
685
- parentId = entry?.id ?? parentId;
686
- }
687
- }
688
- await this.store?.appendRunEvent('run.started', undefined, {
689
- runId,
690
- threadId,
691
- });
692
- const handlerResult = handlers.createRunHandlers({
693
- runId,
694
- threadId,
695
- userHandlers: this.runConfig.customHandlers,
696
- onEvent,
697
- });
698
- const emitTerminalEvent = (event) => {
699
- const streamEvent = {
700
- ...event,
701
- sequence: handlerResult.events.length,
702
- runId,
703
- threadId,
704
- timestamp: new Date().toISOString(),
705
- };
706
- handlerResult.events.push(streamEvent);
707
- onEvent?.(streamEvent);
708
- };
709
- const sessionState = createSessionRunState(isSessionThread ? (this.store?.getPath() ?? []) : []);
710
- try {
711
- const runConfig = {
712
- ...this.runConfig,
713
- runId,
714
- graphConfig: applyCheckpointingToGraphConfig(applyInitialSummaryToGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary), this.checkpointing),
715
- returnContent: true,
716
- calibrationRatio: this.calibrationRatio,
717
- customHandlers: {
718
- ...(this.runConfig.customHandlers ?? {}),
719
- ...handlerResult.handlers,
720
- },
721
- };
722
- const run$1 = await run.Run.create(runConfig);
723
- let messages = inputMessages;
724
- if (!useCheckpointState && sessionState.messages.length > 0) {
725
- messages = sessionState.messages;
726
- }
727
- const content = await run$1.processStream({ ...normalizedInput.state, messages }, callerConfig, options.streamOptions);
728
- const runMessages = run$1.getRunMessages() ?? [];
729
- if (isSessionThread) {
730
- for (const message of runMessages) {
731
- await this.store?.appendMessage(message);
732
- }
733
- }
734
- this.calibrationRatio = run$1.getCalibrationRatio();
735
- const interrupt = run$1.getInterrupt();
736
- const haltedReason = run$1.getHaltReason();
737
- if (interrupt) {
738
- emitTerminalEvent({ type: 'run.interrupted' });
739
- await this.store?.appendRunEvent('run.interrupted', interrupt, {
740
- runId,
741
- threadId,
742
- });
743
- }
744
- else if (haltedReason != null && haltedReason !== '') {
745
- emitTerminalEvent({ type: 'run.halted', data: haltedReason });
746
- await this.store?.appendRunEvent('run.halted', haltedReason, {
747
- runId,
748
- threadId,
749
- });
750
- }
751
- else {
752
- emitTerminalEvent({ type: 'run.completed' });
753
- await this.store?.appendRunEvent('run.completed', undefined, {
754
- runId,
755
- threadId,
756
- });
757
- }
758
- await this.recordCheckpoint({
759
- source: 'run',
760
- runId,
761
- threadId,
762
- config: callerConfig,
763
- checkpointId: interrupt?.checkpointId,
764
- checkpointNs: interrupt?.checkpointNs,
765
- });
766
- const contentParts = (content ?? handlerResult.contentParts).filter((part) => part != null);
767
- return {
768
- text: contentToText(contentParts),
769
- content: contentParts,
770
- messages: runMessages,
771
- usage: handlerResult.usage,
772
- steps: handlerResult.steps,
773
- interrupt,
774
- haltedReason,
775
- runId,
776
- threadId,
777
- };
778
- }
779
- catch (error) {
780
- emitTerminalEvent({
781
- type: 'run.failed',
782
- data: error instanceof Error ? error.message : String(error),
783
- });
784
- await this.store?.appendRunEvent('run.failed', error, {
785
- runId,
786
- threadId,
787
- });
788
- await this.recordCheckpoint({
789
- source: 'run',
790
- runId,
791
- threadId,
792
- config: callerConfig,
793
- });
794
- throw error;
795
- }
796
- }
797
- async run(input, options = {}) {
798
- return this.runInternal(input, options);
799
- }
800
- stream(input, options = {}) {
801
- const stream = new LiveAgentSessionStream();
802
- const resultPromise = this.runInternal(input, options, (event) => {
803
- stream.push(event);
804
- }).then((result) => {
805
- stream.complete();
806
- return result;
807
- }, (error) => {
808
- stream.fail(error);
809
- throw error;
810
- });
811
- stream.setResultPromise(resultPromise);
812
- return stream;
813
- }
814
- async resumeSession(pathOrId) {
815
- if (pathOrId == null || pathOrId === '') {
816
- const sessions = await JsonlSessionStore.JsonlSessionStore.list(this.cwd);
817
- if (sessions.length === 0) {
818
- throw new Error(`No sessions found for ${this.cwd}`);
819
- }
820
- this.store = await JsonlSessionStore.JsonlSessionStore.open(sessions[0].path);
821
- this.cwd = this.store.header.cwd;
822
- this.threadId = this.store.header.id;
823
- return this;
824
- }
825
- this.store = await JsonlSessionStore.JsonlSessionStore.open(pathOrId);
826
- this.cwd = this.store.header.cwd;
827
- this.threadId = this.store.header.id;
828
- return this;
829
- }
830
- async clone(options = {}) {
831
- if (!this.store) {
832
- throw new Error('Cannot clone an ephemeral session');
833
- }
834
- const store = await this.store.clone(options);
835
- return new AgentSession({
836
- runConfig: this.runConfig,
837
- cwd: store.header.cwd,
838
- threadId: store.header.id,
839
- checkpointing: this.checkpointing,
840
- store,
841
- });
842
- }
843
- async fork(entryId, options = {}) {
844
- if (!this.store) {
845
- throw new Error('Cannot fork an ephemeral session');
846
- }
847
- const store = await this.store.fork(entryId, options);
848
- return new AgentSession({
849
- runConfig: this.runConfig,
850
- cwd: store.header.cwd,
851
- threadId: store.header.id,
852
- checkpointing: this.checkpointing,
853
- store,
854
- });
855
- }
856
- async branch(entryId, options = {}) {
857
- const store = this.store;
858
- if (!store) {
859
- throw new Error('Cannot branch an ephemeral session');
860
- }
861
- const target = getSessionBranchTarget(store, entryId, options.position ?? 'at');
862
- const previousLeafId = store.getLeafEntry()?.id ?? null;
863
- let leafId = target?.id ?? null;
864
- const summarizeAbandoned = options.summarizeAbandoned;
865
- if (summarizeAbandoned !== undefined && summarizeAbandoned !== false) {
866
- const instructions = typeof summarizeAbandoned === 'object'
867
- ? summarizeAbandoned.instructions
868
- : undefined;
869
- const abandonedPath = getAbandonedPathForBranch(store, previousLeafId, leafId);
870
- const summary = await this.compactActivePath({ instructions, retainRecentTurns: 0 }, leafId, abandonedPath);
871
- leafId = summary?.id ?? leafId;
872
- }
873
- if (leafId === previousLeafId) {
874
- return;
875
- }
876
- await store.setLeaf(leafId);
877
- await this.resetCheckpointThreads('branch');
878
- }
879
- async compact(options = {}) {
880
- const summary = await this.compactActivePath(options, null);
881
- if (summary) {
882
- await this.resetCheckpointThreads('compact');
883
- }
884
- }
885
- async compactActivePath(options = {}, parentId, path) {
886
- const store = this.store;
887
- if (!store) {
888
- throw new Error('Cannot compact an ephemeral session');
889
- }
890
- const activePath = path ?? store.getPath();
891
- const sessionState = createSessionRunState(activePath);
892
- const messageEntries = activePath.filter(isMessageEntry);
893
- if (sessionState.messages.length === 0) {
894
- return undefined;
895
- }
896
- const compactRunId = ids.createRunId();
897
- const agentContext = AgentContext.AgentContext.fromConfig(createAgentInputFromGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary, options.retainRecentTurns, options.instructions), this.runConfig.tokenCounter);
898
- const graph = createManualCompactGraph({
899
- runId: compactRunId,
900
- customHandlers: this.runConfig.customHandlers,
901
- hooks: this.runConfig.hooks,
902
- });
903
- const summarizeNode = node.createSummarizeNode({
904
- agentContext,
905
- graph: graph.graph,
906
- generateStepId: (stepKey) => [
907
- `${stepKey}-${compactRunId}`,
908
- graph.graph.contentData.length,
909
- ],
910
- });
911
- const summarizedState = await summarizeNode({
912
- messages: sessionState.messages,
913
- summarizationRequest: {
914
- remainingContextTokens: agentContext.maxContextTokens ?? 0,
915
- agentId: agentContext.agentId,
916
- },
917
- }, {
918
- configurable: { thread_id: this.threadId },
919
- metadata: { run_id: compactRunId },
920
- });
921
- const completedSummaryText = getSummaryText(graph.completedSummary);
922
- const contextSummaryText = agentContext.getSummaryText();
923
- let summaryText = completedSummaryText;
924
- if (summaryText === '' && contextSummaryText != null) {
925
- summaryText = contextSummaryText;
926
- }
927
- if (summaryText === '') {
928
- return undefined;
929
- }
930
- const retainedMessages = filterRemoveMessages(summarizedState.messages ?? []);
931
- let retainedEntryIds = [];
932
- if (retainedMessages.length > 0) {
933
- retainedEntryIds = messageEntries
934
- .slice(-retainedMessages.length)
935
- .map((entry) => entry.id);
936
- }
937
- const retainedEntryIdSet = new Set(retainedEntryIds);
938
- const summarized = messageEntries.filter((entry) => !retainedEntryIdSet.has(entry.id));
939
- const summary = await store.appendEntryForCompaction({
940
- text: summaryText,
941
- tokenCount: getSummaryTokenCount(graph.completedSummary),
942
- retainedEntryIds,
943
- summarizedEntryIds: summarized.map((entry) => entry.id),
944
- instructions: options.instructions,
945
- parentId,
946
- });
947
- let retainedParentId = summary.id;
948
- for (const message of retainedMessages) {
949
- const retainedMessage = await store.appendMessage(message, retainedParentId);
950
- retainedParentId = retainedMessage.id;
951
- }
952
- await store.appendCompactionEntry({
953
- summaryEntryId: summary.id,
954
- retainedEntryIds,
955
- summarizedEntryIds: summarized.map((entry) => entry.id),
956
- });
957
- return summary;
958
- }
959
- async resumeInterrupt(resumeValue, options = {}) {
960
- const runId = options.runId ?? ids.createRunId();
961
- const threadId = options.threadId ?? this.threadId;
962
- const isSessionThread = threadId === this.threadId;
963
- const baseCallerConfig = createCallerConfig(threadId, options);
964
- const callerConfig = applyCheckpointReferenceToConfig(baseCallerConfig, getStoredCheckpointForConfig(this.store, threadId, baseCallerConfig)?.data);
965
- await this.store?.appendRunEvent('run.started', undefined, {
966
- runId,
967
- threadId,
968
- });
969
- const handlerResult = handlers.createRunHandlers({
970
- runId,
971
- threadId,
972
- userHandlers: this.runConfig.customHandlers,
973
- });
974
- const sessionState = createSessionRunState(isSessionThread ? (this.store?.getPath() ?? []) : []);
975
- try {
976
- const run$1 = await run.Run.create({
977
- ...this.runConfig,
978
- runId,
979
- graphConfig: applyCheckpointingToGraphConfig(applyInitialSummaryToGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary), this.checkpointing),
980
- returnContent: true,
981
- calibrationRatio: this.calibrationRatio,
982
- customHandlers: {
983
- ...(this.runConfig.customHandlers ?? {}),
984
- ...handlerResult.handlers,
985
- },
986
- });
987
- const content = await run$1.resume(resumeValue, callerConfig);
988
- const runMessages = run$1.getRunMessages() ?? [];
989
- if (isSessionThread) {
990
- for (const message of runMessages) {
991
- await this.store?.appendMessage(message);
992
- }
993
- }
994
- this.calibrationRatio = run$1.getCalibrationRatio();
995
- const interrupt = run$1.getInterrupt();
996
- const haltedReason = run$1.getHaltReason();
997
- if (interrupt) {
998
- await this.store?.appendRunEvent('run.interrupted', interrupt, {
999
- runId,
1000
- threadId,
1001
- });
1002
- }
1003
- else if (haltedReason != null && haltedReason !== '') {
1004
- await this.store?.appendRunEvent('run.halted', haltedReason, {
1005
- runId,
1006
- threadId,
1007
- });
1008
- }
1009
- else {
1010
- await this.store?.appendRunEvent('run.completed', undefined, {
1011
- runId,
1012
- threadId,
1013
- });
1014
- }
1015
- await this.recordCheckpoint({
1016
- source: 'resume',
1017
- runId,
1018
- threadId,
1019
- config: callerConfig,
1020
- checkpointId: interrupt?.checkpointId,
1021
- checkpointNs: interrupt?.checkpointNs,
1022
- });
1023
- const contentParts = (content ?? handlerResult.contentParts).filter((part) => part != null);
1024
- return {
1025
- text: contentToText(contentParts),
1026
- content: contentParts,
1027
- messages: runMessages,
1028
- usage: handlerResult.usage,
1029
- steps: handlerResult.steps,
1030
- interrupt,
1031
- haltedReason,
1032
- runId,
1033
- threadId,
1034
- };
1035
- }
1036
- catch (error) {
1037
- await this.store?.appendRunEvent('run.failed', error, {
1038
- runId,
1039
- threadId,
1040
- });
1041
- await this.recordCheckpoint({
1042
- source: 'resume',
1043
- runId,
1044
- threadId,
1045
- config: callerConfig,
1046
- });
1047
- throw error;
1048
- }
1049
- }
1050
- }
360
+ return messages.filter((message) => message._getType() !== "remove");
361
+ }
362
+ var LiveAgentSessionStream = class {
363
+ resultPromise;
364
+ events = [];
365
+ waiters = [];
366
+ closed = false;
367
+ failed = false;
368
+ error;
369
+ setResultPromise(resultPromise) {
370
+ this.resultPromise = resultPromise;
371
+ }
372
+ push(event) {
373
+ if (this.closed) return;
374
+ const waiter = this.waiters.shift();
375
+ if (waiter) {
376
+ waiter.resolve({
377
+ value: event,
378
+ done: false
379
+ });
380
+ return;
381
+ }
382
+ this.events.push(event);
383
+ }
384
+ complete() {
385
+ this.closed = true;
386
+ for (const waiter of this.waiters.splice(0)) waiter.resolve({
387
+ value: void 0,
388
+ done: true
389
+ });
390
+ }
391
+ fail(error) {
392
+ this.error = error;
393
+ this.failed = true;
394
+ this.closed = true;
395
+ for (const waiter of this.waiters.splice(0)) waiter.reject(error);
396
+ }
397
+ nextEvent() {
398
+ const event = this.events.shift();
399
+ if (event !== void 0) return Promise.resolve({
400
+ value: event,
401
+ done: false
402
+ });
403
+ if (this.failed) return Promise.reject(this.error);
404
+ if (this.closed) return Promise.resolve({
405
+ value: void 0,
406
+ done: true
407
+ });
408
+ return new Promise((resolve, reject) => {
409
+ this.waiters.push({
410
+ resolve,
411
+ reject
412
+ });
413
+ });
414
+ }
415
+ async *[Symbol.asyncIterator]() {
416
+ for (;;) {
417
+ const next = await this.nextEvent();
418
+ if (next.done === true) return;
419
+ yield next.value;
420
+ }
421
+ }
422
+ async *toTextStream() {
423
+ for await (const event of this) {
424
+ if (event.type !== "message.delta" || event.data == null) continue;
425
+ const data = event.data;
426
+ if (typeof data === "object" && !Array.isArray(data)) {
427
+ const delta = data.delta;
428
+ if (delta != null && typeof delta === "object" && !Array.isArray(delta)) {
429
+ const content = delta.content;
430
+ if (Array.isArray(content)) {
431
+ for (const part of content) if (part != null && typeof part === "object" && !Array.isArray(part) && typeof part.text === "string") yield part.text;
432
+ }
433
+ }
434
+ }
435
+ }
436
+ }
437
+ finalResult() {
438
+ if (!this.resultPromise) return Promise.reject(/* @__PURE__ */ new Error("Session stream has not started"));
439
+ return this.resultPromise;
440
+ }
441
+ };
442
+ var AgentSession = class AgentSession {
443
+ runConfig;
444
+ store;
445
+ calibrationRatio;
446
+ checkpointing;
447
+ cwd;
448
+ threadId;
449
+ constructor(params) {
450
+ this.runConfig = params.runConfig;
451
+ this.cwd = params.cwd;
452
+ this.threadId = params.threadId;
453
+ this.store = params.store;
454
+ this.checkpointing = params.checkpointing;
455
+ }
456
+ static async create(config) {
457
+ const normalized = normalizeConfig(config);
458
+ const explicitSessionId = "sessionId" in config && typeof config.sessionId === "string" ? config.sessionId : void 0;
459
+ const store = await createStore({
460
+ cwd: normalized.cwd,
461
+ sessionPath: normalized.sessionPath,
462
+ name: normalized.name,
463
+ sessionId: explicitSessionId,
464
+ ephemeral: normalized.ephemeral
465
+ });
466
+ return new AgentSession({
467
+ runConfig: normalized.runConfig,
468
+ cwd: normalized.cwd,
469
+ threadId: store?.header.id ?? explicitSessionId ?? require_ids.createSessionId(),
470
+ checkpointing: createCheckpointingState(normalized.runConfig, normalized.checkpointing),
471
+ store
472
+ });
473
+ }
474
+ get sessionPath() {
475
+ return this.store?.path;
476
+ }
477
+ getSessionStore() {
478
+ return this.store;
479
+ }
480
+ getCheckpointer() {
481
+ return this.checkpointing.checkpointer;
482
+ }
483
+ async getLatestCheckpoint(options = {}) {
484
+ const threadId = options.threadId ?? this.threadId;
485
+ const baseConfig = options.config ?? {};
486
+ const config = createCheckpointLookupConfig({
487
+ ...baseConfig,
488
+ configurable: {
489
+ ...baseConfig.configurable ?? {},
490
+ thread_id: threadId,
491
+ ...options.checkpointNs != null ? { checkpoint_ns: options.checkpointNs } : {}
492
+ }
493
+ });
494
+ const tuple = await getLatestCheckpointTuple(this.checkpointing.checkpointer, config);
495
+ return tuple ? createCheckpointReference({
496
+ threadId,
497
+ tuple
498
+ }) : void 0;
499
+ }
500
+ async hasCheckpointState(config) {
501
+ if (!this.checkpointing.enabled) return false;
502
+ return await getSelectedCheckpointTuple(this.checkpointing.checkpointer, config) != null;
503
+ }
504
+ async recordCheckpoint(params) {
505
+ if (!this.checkpointing.enabled) return;
506
+ const checkpointConfig = applyCheckpointReferenceToConfig(params.config, {
507
+ checkpointId: params.checkpointId,
508
+ checkpointNs: params.checkpointNs
509
+ }, { overwrite: true });
510
+ const tuple = params.checkpointId != null && params.checkpointId !== "" ? await getSelectedCheckpointTuple(this.checkpointing.checkpointer, checkpointConfig) : await getLatestCheckpointTuple(this.checkpointing.checkpointer, params.config);
511
+ if (!tuple) return;
512
+ const reference = createCheckpointReference({
513
+ threadId: params.threadId,
514
+ tuple
515
+ });
516
+ await this.store?.appendCheckpoint({
517
+ source: params.source,
518
+ runId: params.runId,
519
+ threadId: params.threadId,
520
+ checkpointId: reference.checkpointId,
521
+ checkpointNs: reference.checkpointNs,
522
+ parentCheckpointId: reference.parentCheckpointId
523
+ });
524
+ }
525
+ getCheckpointThreadIds() {
526
+ const threadIds = new Set([this.threadId]);
527
+ for (const checkpoint of this.store?.getCheckpoints() ?? []) threadIds.add(checkpoint.data.threadId);
528
+ return [...threadIds];
529
+ }
530
+ async resetCheckpointThreads(reason) {
531
+ const checkpointer = this.checkpointing.checkpointer;
532
+ if (!this.checkpointing.enabled || checkpointer == null) return;
533
+ for (const threadId of this.getCheckpointThreadIds()) {
534
+ await checkpointer.deleteThread(threadId);
535
+ await this.store?.appendCheckpoint({
536
+ source: "reset",
537
+ threadId,
538
+ reason
539
+ });
540
+ }
541
+ }
542
+ async runInternal(input, options = {}, onEvent) {
543
+ const runId = options.runId ?? require_ids.createRunId();
544
+ const threadId = options.threadId ?? this.threadId;
545
+ const isSessionThread = threadId === this.threadId;
546
+ const normalizedInput = normalizeInput(input);
547
+ const inputMessages = normalizedInput.messages;
548
+ const callerConfig = createCallerConfig(threadId, options);
549
+ const useCheckpointState = await this.hasCheckpointState(callerConfig);
550
+ let parentId = this.store?.getLeafEntry()?.id ?? null;
551
+ if (isSessionThread) for (const message of inputMessages) parentId = (await this.store?.appendMessage(message, parentId))?.id ?? parentId;
552
+ await this.store?.appendRunEvent("run.started", void 0, {
553
+ runId,
554
+ threadId
555
+ });
556
+ const handlerResult = require_handlers.createRunHandlers({
557
+ runId,
558
+ threadId,
559
+ userHandlers: this.runConfig.customHandlers,
560
+ onEvent
561
+ });
562
+ const emitTerminalEvent = (event) => {
563
+ const streamEvent = {
564
+ ...event,
565
+ sequence: handlerResult.events.length,
566
+ runId,
567
+ threadId,
568
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
569
+ };
570
+ handlerResult.events.push(streamEvent);
571
+ onEvent?.(streamEvent);
572
+ };
573
+ const sessionState = createSessionRunState(isSessionThread ? this.store?.getPath() ?? [] : []);
574
+ try {
575
+ const runConfig = {
576
+ ...this.runConfig,
577
+ runId,
578
+ graphConfig: applyCheckpointingToGraphConfig(applyInitialSummaryToGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary), this.checkpointing),
579
+ returnContent: true,
580
+ calibrationRatio: this.calibrationRatio,
581
+ customHandlers: {
582
+ ...this.runConfig.customHandlers ?? {},
583
+ ...handlerResult.handlers
584
+ }
585
+ };
586
+ const run = await require_run.Run.create(runConfig);
587
+ let messages = inputMessages;
588
+ if (!useCheckpointState && sessionState.messages.length > 0) messages = sessionState.messages;
589
+ const content = await run.processStream({
590
+ ...normalizedInput.state,
591
+ messages
592
+ }, callerConfig, options.streamOptions);
593
+ const runMessages = run.getRunMessages() ?? [];
594
+ if (isSessionThread) for (const message of runMessages) await this.store?.appendMessage(message);
595
+ this.calibrationRatio = run.getCalibrationRatio();
596
+ const interrupt = run.getInterrupt();
597
+ const haltedReason = run.getHaltReason();
598
+ if (interrupt) {
599
+ emitTerminalEvent({ type: "run.interrupted" });
600
+ await this.store?.appendRunEvent("run.interrupted", interrupt, {
601
+ runId,
602
+ threadId
603
+ });
604
+ } else if (haltedReason != null && haltedReason !== "") {
605
+ emitTerminalEvent({
606
+ type: "run.halted",
607
+ data: haltedReason
608
+ });
609
+ await this.store?.appendRunEvent("run.halted", haltedReason, {
610
+ runId,
611
+ threadId
612
+ });
613
+ } else {
614
+ emitTerminalEvent({ type: "run.completed" });
615
+ await this.store?.appendRunEvent("run.completed", void 0, {
616
+ runId,
617
+ threadId
618
+ });
619
+ }
620
+ await this.recordCheckpoint({
621
+ source: "run",
622
+ runId,
623
+ threadId,
624
+ config: callerConfig,
625
+ checkpointId: interrupt?.checkpointId,
626
+ checkpointNs: interrupt?.checkpointNs
627
+ });
628
+ const contentParts = (content ?? handlerResult.contentParts).filter((part) => part != null);
629
+ return {
630
+ text: contentToText(contentParts),
631
+ content: contentParts,
632
+ messages: runMessages,
633
+ usage: handlerResult.usage,
634
+ steps: handlerResult.steps,
635
+ interrupt,
636
+ haltedReason,
637
+ runId,
638
+ threadId
639
+ };
640
+ } catch (error) {
641
+ emitTerminalEvent({
642
+ type: "run.failed",
643
+ data: error instanceof Error ? error.message : String(error)
644
+ });
645
+ await this.store?.appendRunEvent("run.failed", error, {
646
+ runId,
647
+ threadId
648
+ });
649
+ await this.recordCheckpoint({
650
+ source: "run",
651
+ runId,
652
+ threadId,
653
+ config: callerConfig
654
+ });
655
+ throw error;
656
+ }
657
+ }
658
+ async run(input, options = {}) {
659
+ return this.runInternal(input, options);
660
+ }
661
+ stream(input, options = {}) {
662
+ const stream = new LiveAgentSessionStream();
663
+ const resultPromise = this.runInternal(input, options, (event) => {
664
+ stream.push(event);
665
+ }).then((result) => {
666
+ stream.complete();
667
+ return result;
668
+ }, (error) => {
669
+ stream.fail(error);
670
+ throw error;
671
+ });
672
+ stream.setResultPromise(resultPromise);
673
+ return stream;
674
+ }
675
+ async resumeSession(pathOrId) {
676
+ if (pathOrId == null || pathOrId === "") {
677
+ const sessions = await require_JsonlSessionStore.JsonlSessionStore.list(this.cwd);
678
+ if (sessions.length === 0) throw new Error(`No sessions found for ${this.cwd}`);
679
+ this.store = await require_JsonlSessionStore.JsonlSessionStore.open(sessions[0].path);
680
+ this.cwd = this.store.header.cwd;
681
+ this.threadId = this.store.header.id;
682
+ return this;
683
+ }
684
+ this.store = await require_JsonlSessionStore.JsonlSessionStore.open(pathOrId);
685
+ this.cwd = this.store.header.cwd;
686
+ this.threadId = this.store.header.id;
687
+ return this;
688
+ }
689
+ async clone(options = {}) {
690
+ if (!this.store) throw new Error("Cannot clone an ephemeral session");
691
+ const store = await this.store.clone(options);
692
+ return new AgentSession({
693
+ runConfig: this.runConfig,
694
+ cwd: store.header.cwd,
695
+ threadId: store.header.id,
696
+ checkpointing: this.checkpointing,
697
+ store
698
+ });
699
+ }
700
+ async fork(entryId, options = {}) {
701
+ if (!this.store) throw new Error("Cannot fork an ephemeral session");
702
+ const store = await this.store.fork(entryId, options);
703
+ return new AgentSession({
704
+ runConfig: this.runConfig,
705
+ cwd: store.header.cwd,
706
+ threadId: store.header.id,
707
+ checkpointing: this.checkpointing,
708
+ store
709
+ });
710
+ }
711
+ async branch(entryId, options = {}) {
712
+ const store = this.store;
713
+ if (!store) throw new Error("Cannot branch an ephemeral session");
714
+ const target = getSessionBranchTarget(store, entryId, options.position ?? "at");
715
+ const previousLeafId = store.getLeafEntry()?.id ?? null;
716
+ let leafId = target?.id ?? null;
717
+ const summarizeAbandoned = options.summarizeAbandoned;
718
+ if (summarizeAbandoned !== void 0 && summarizeAbandoned !== false) {
719
+ const instructions = typeof summarizeAbandoned === "object" ? summarizeAbandoned.instructions : void 0;
720
+ const abandonedPath = getAbandonedPathForBranch(store, previousLeafId, leafId);
721
+ leafId = (await this.compactActivePath({
722
+ instructions,
723
+ retainRecentTurns: 0
724
+ }, leafId, abandonedPath))?.id ?? leafId;
725
+ }
726
+ if (leafId === previousLeafId) return;
727
+ await store.setLeaf(leafId);
728
+ await this.resetCheckpointThreads("branch");
729
+ }
730
+ async compact(options = {}) {
731
+ if (await this.compactActivePath(options, null)) await this.resetCheckpointThreads("compact");
732
+ }
733
+ async compactActivePath(options = {}, parentId, path) {
734
+ const store = this.store;
735
+ if (!store) throw new Error("Cannot compact an ephemeral session");
736
+ const activePath = path ?? store.getPath();
737
+ const sessionState = createSessionRunState(activePath);
738
+ const messageEntries = activePath.filter(isMessageEntry);
739
+ if (sessionState.messages.length === 0) return;
740
+ const compactRunId = require_ids.createRunId();
741
+ const agentContext = require_AgentContext.AgentContext.fromConfig(createAgentInputFromGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary, options.retainRecentTurns, options.instructions), this.runConfig.tokenCounter);
742
+ const graph = createManualCompactGraph({
743
+ runId: compactRunId,
744
+ customHandlers: this.runConfig.customHandlers,
745
+ hooks: this.runConfig.hooks
746
+ });
747
+ const summarizedState = await require_node.createSummarizeNode({
748
+ agentContext,
749
+ graph: graph.graph,
750
+ generateStepId: (stepKey) => [`${stepKey}-${compactRunId}`, graph.graph.contentData.length]
751
+ })({
752
+ messages: sessionState.messages,
753
+ summarizationRequest: {
754
+ remainingContextTokens: agentContext.maxContextTokens ?? 0,
755
+ agentId: agentContext.agentId
756
+ }
757
+ }, {
758
+ configurable: { thread_id: this.threadId },
759
+ metadata: { run_id: compactRunId }
760
+ });
761
+ const completedSummaryText = getSummaryText(graph.completedSummary);
762
+ const contextSummaryText = agentContext.getSummaryText();
763
+ let summaryText = completedSummaryText;
764
+ if (summaryText === "" && contextSummaryText != null) summaryText = contextSummaryText;
765
+ if (summaryText === "") return;
766
+ const retainedMessages = filterRemoveMessages(summarizedState.messages ?? []);
767
+ let retainedEntryIds = [];
768
+ if (retainedMessages.length > 0) retainedEntryIds = messageEntries.slice(-retainedMessages.length).map((entry) => entry.id);
769
+ const retainedEntryIdSet = new Set(retainedEntryIds);
770
+ const summarized = messageEntries.filter((entry) => !retainedEntryIdSet.has(entry.id));
771
+ const summary = await store.appendEntryForCompaction({
772
+ text: summaryText,
773
+ tokenCount: getSummaryTokenCount(graph.completedSummary),
774
+ retainedEntryIds,
775
+ summarizedEntryIds: summarized.map((entry) => entry.id),
776
+ instructions: options.instructions,
777
+ parentId
778
+ });
779
+ let retainedParentId = summary.id;
780
+ for (const message of retainedMessages) retainedParentId = (await store.appendMessage(message, retainedParentId)).id;
781
+ await store.appendCompactionEntry({
782
+ summaryEntryId: summary.id,
783
+ retainedEntryIds,
784
+ summarizedEntryIds: summarized.map((entry) => entry.id)
785
+ });
786
+ return summary;
787
+ }
788
+ async resumeInterrupt(resumeValue, options = {}) {
789
+ const runId = options.runId ?? require_ids.createRunId();
790
+ const threadId = options.threadId ?? this.threadId;
791
+ const isSessionThread = threadId === this.threadId;
792
+ const baseCallerConfig = createCallerConfig(threadId, options);
793
+ const callerConfig = applyCheckpointReferenceToConfig(baseCallerConfig, getStoredCheckpointForConfig(this.store, threadId, baseCallerConfig)?.data);
794
+ await this.store?.appendRunEvent("run.started", void 0, {
795
+ runId,
796
+ threadId
797
+ });
798
+ const handlerResult = require_handlers.createRunHandlers({
799
+ runId,
800
+ threadId,
801
+ userHandlers: this.runConfig.customHandlers
802
+ });
803
+ const sessionState = createSessionRunState(isSessionThread ? this.store?.getPath() ?? [] : []);
804
+ try {
805
+ const run = await require_run.Run.create({
806
+ ...this.runConfig,
807
+ runId,
808
+ graphConfig: applyCheckpointingToGraphConfig(applyInitialSummaryToGraphConfig(this.runConfig.graphConfig, sessionState.initialSummary), this.checkpointing),
809
+ returnContent: true,
810
+ calibrationRatio: this.calibrationRatio,
811
+ customHandlers: {
812
+ ...this.runConfig.customHandlers ?? {},
813
+ ...handlerResult.handlers
814
+ }
815
+ });
816
+ const content = await run.resume(resumeValue, callerConfig);
817
+ const runMessages = run.getRunMessages() ?? [];
818
+ if (isSessionThread) for (const message of runMessages) await this.store?.appendMessage(message);
819
+ this.calibrationRatio = run.getCalibrationRatio();
820
+ const interrupt = run.getInterrupt();
821
+ const haltedReason = run.getHaltReason();
822
+ if (interrupt) await this.store?.appendRunEvent("run.interrupted", interrupt, {
823
+ runId,
824
+ threadId
825
+ });
826
+ else if (haltedReason != null && haltedReason !== "") await this.store?.appendRunEvent("run.halted", haltedReason, {
827
+ runId,
828
+ threadId
829
+ });
830
+ else await this.store?.appendRunEvent("run.completed", void 0, {
831
+ runId,
832
+ threadId
833
+ });
834
+ await this.recordCheckpoint({
835
+ source: "resume",
836
+ runId,
837
+ threadId,
838
+ config: callerConfig,
839
+ checkpointId: interrupt?.checkpointId,
840
+ checkpointNs: interrupt?.checkpointNs
841
+ });
842
+ const contentParts = (content ?? handlerResult.contentParts).filter((part) => part != null);
843
+ return {
844
+ text: contentToText(contentParts),
845
+ content: contentParts,
846
+ messages: runMessages,
847
+ usage: handlerResult.usage,
848
+ steps: handlerResult.steps,
849
+ interrupt,
850
+ haltedReason,
851
+ runId,
852
+ threadId
853
+ };
854
+ } catch (error) {
855
+ await this.store?.appendRunEvent("run.failed", error, {
856
+ runId,
857
+ threadId
858
+ });
859
+ await this.recordCheckpoint({
860
+ source: "resume",
861
+ runId,
862
+ threadId,
863
+ config: callerConfig
864
+ });
865
+ throw error;
866
+ }
867
+ }
868
+ };
1051
869
  function createAgentSession(config) {
1052
- return AgentSession.create(config);
870
+ return AgentSession.create(config);
1053
871
  }
1054
-
872
+ //#endregion
1055
873
  exports.AgentSession = AgentSession;
1056
874
  exports.createAgentSession = createAgentSession;
1057
- //# sourceMappingURL=AgentSession.cjs.map
875
+
876
+ //# sourceMappingURL=AgentSession.cjs.map