@librechat/agents 3.2.32 → 3.2.33

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 (573) 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 +195 -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 +105 -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 +398 -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 +991 -1276
  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 +427 -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 +856 -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 +2109 -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 +19 -36
  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 +195 -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 +105 -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 +397 -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 +991 -1271
  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 +427 -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 +854 -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 +2107 -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 +19 -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/tools/search/tool.d.ts +17 -0
  545. package/dist/types/tools/search/types.d.ts +4 -0
  546. package/package.json +4 -10
  547. package/src/tools/search/highlights.ts +9 -1
  548. package/src/tools/search/search.ts +41 -3
  549. package/src/tools/search/source-processing.test.ts +373 -0
  550. package/src/tools/search/tool.ts +22 -2
  551. package/src/tools/search/types.ts +4 -0
  552. package/dist/cjs/langchain/google-common.cjs.map +0 -1
  553. package/dist/cjs/langchain/index.cjs.map +0 -1
  554. package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
  555. package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
  556. package/dist/cjs/langchain/messages.cjs.map +0 -1
  557. package/dist/cjs/langchain/openai.cjs.map +0 -1
  558. package/dist/cjs/langchain/prompts.cjs.map +0 -1
  559. package/dist/cjs/langchain/runnables.cjs.map +0 -1
  560. package/dist/cjs/langchain/tools.cjs.map +0 -1
  561. package/dist/cjs/langchain/utils/env.cjs.map +0 -1
  562. package/dist/cjs/main.cjs.map +0 -1
  563. package/dist/esm/langchain/google-common.mjs.map +0 -1
  564. package/dist/esm/langchain/index.mjs.map +0 -1
  565. package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
  566. package/dist/esm/langchain/messages/tool.mjs.map +0 -1
  567. package/dist/esm/langchain/messages.mjs.map +0 -1
  568. package/dist/esm/langchain/openai.mjs.map +0 -1
  569. package/dist/esm/langchain/prompts.mjs.map +0 -1
  570. package/dist/esm/langchain/runnables.mjs.map +0 -1
  571. package/dist/esm/langchain/tools.mjs.map +0 -1
  572. package/dist/esm/langchain/utils/env.mjs.map +0 -1
  573. package/dist/esm/main.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"JsonlSessionStore.cjs","sources":["../../../src/session/JsonlSessionStore.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { createHash } from 'crypto';\nimport { SystemMessage } from '@langchain/core/messages';\nimport { basename, dirname, isAbsolute, join, resolve } from 'path';\nimport {\n access,\n appendFile,\n mkdir,\n readFile,\n readdir,\n stat,\n writeFile,\n} from 'fs/promises';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type {\n CreateSessionFileOptions,\n SessionBranchOptions,\n SessionEntry,\n SessionForkOptions,\n SessionHeader,\n SessionLabelEntry,\n SessionListItem,\n SessionMessageEntry,\n SessionCheckpointEntry,\n SessionCompactionEntry,\n SessionRunEventEntry,\n SessionSummaryEntry,\n SessionStateEntry,\n SessionTreeNode,\n} from './types';\nimport {\n deserializeMessage,\n getMessageRole,\n serializeMessage,\n toJsonValue,\n} from './messageSerialization';\nimport { createEntryId, createSessionId, createTimestamp } from './ids';\n\nconst SESSION_VERSION = 1;\nconst DEFAULT_SESSION_ROOT = join(\n homedir(),\n '.librechat',\n 'agents',\n 'sessions'\n);\n\nfunction sanitizeCwd(cwd: string): string {\n const normalized = resolve(cwd);\n return createHash('sha256').update(normalized).digest('hex');\n}\n\nfunction createSessionPath(options: CreateSessionFileOptions): string {\n const sessionId = options.sessionId ?? createSessionId();\n const fileName = `${new Date().toISOString().replace(/[:.]/g, '-')}_${sessionId}.jsonl`;\n return join(DEFAULT_SESSION_ROOT, sanitizeCwd(options.cwd), fileName);\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseLine(line: string): SessionHeader | SessionEntry | undefined {\n if (line.trim() === '') {\n return undefined;\n }\n try {\n const parsed = JSON.parse(line) as SessionHeader | SessionEntry;\n if (parsed.type === 'session') {\n return parsed;\n }\n if ('id' in parsed && 'parentId' in parsed && 'data' in parsed) {\n return parsed;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction createHeader(options: CreateSessionFileOptions): SessionHeader {\n return {\n type: 'session',\n version: SESSION_VERSION,\n id: options.sessionId ?? createSessionId(),\n timestamp: createTimestamp(),\n cwd: resolve(options.cwd),\n ...(options.name != null && options.name !== ''\n ? { name: options.name }\n : {}),\n ...(options.parentSession != null && options.parentSession !== ''\n ? { parentSession: options.parentSession }\n : {}),\n };\n}\n\nfunction sortEntries(entries: SessionEntry[]): SessionEntry[] {\n return [...entries].sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n}\n\nexport class JsonlSessionStore {\n readonly path: string;\n readonly header: SessionHeader;\n private entries: SessionEntry[];\n\n private constructor(params: {\n path: string;\n header: SessionHeader;\n entries: SessionEntry[];\n }) {\n this.path = params.path;\n this.header = params.header;\n this.entries = sortEntries(params.entries);\n }\n\n static getDefaultRoot(): string {\n return DEFAULT_SESSION_ROOT;\n }\n\n static async create(\n options: CreateSessionFileOptions & { path?: string }\n ): Promise<JsonlSessionStore> {\n const sessionId = options.sessionId ?? createSessionId();\n const path =\n options.path != null && options.path !== ''\n ? resolve(options.path)\n : createSessionPath({ ...options, sessionId });\n const header = createHeader({ ...options, sessionId });\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(header)}\\n`, {\n encoding: 'utf8',\n flag: 'wx',\n });\n return new JsonlSessionStore({ path, header, entries: [] });\n }\n\n static async open(pathOrId: string): Promise<JsonlSessionStore> {\n const path = await JsonlSessionStore.resolvePath(pathOrId);\n return JsonlSessionStore.openPath(path);\n }\n\n static async openPath(path: string): Promise<JsonlSessionStore> {\n const resolved = resolve(path);\n const raw = await readFile(resolved, 'utf8');\n const parsed = raw\n .split('\\n')\n .map((line) => parseLine(line))\n .filter((line): line is SessionHeader | SessionEntry => line != null);\n const header = parsed.find(\n (line): line is SessionHeader => line.type === 'session'\n );\n if (!header) {\n throw new Error(`Invalid session file: ${resolved}`);\n }\n const entries = parsed.filter(\n (line): line is SessionEntry => line.type !== 'session'\n );\n return new JsonlSessionStore({ path: resolved, header, entries });\n }\n\n static async resolvePath(pathOrId: string): Promise<string> {\n const candidate = isAbsolute(pathOrId) ? pathOrId : resolve(pathOrId);\n if (await pathExists(candidate)) {\n return candidate;\n }\n const sessions = await JsonlSessionStore.listAll();\n const matches = sessions.filter(\n (item) =>\n item.id.startsWith(pathOrId) || basename(item.path).includes(pathOrId)\n );\n if (matches.length === 1) {\n return matches[0].path;\n }\n if (matches.length > 1) {\n throw new Error(`Session id \"${pathOrId}\" is ambiguous`);\n }\n throw new Error(`Session not found: ${pathOrId}`);\n }\n\n static async list(cwd: string): Promise<SessionListItem[]> {\n const dir = join(DEFAULT_SESSION_ROOT, sanitizeCwd(cwd));\n return JsonlSessionStore.listDirectory(dir);\n }\n\n static async listAll(\n root: string = DEFAULT_SESSION_ROOT\n ): Promise<SessionListItem[]> {\n if (!(await pathExists(root))) {\n return [];\n }\n const dirs = await readdir(root, { withFileTypes: true });\n const lists = await Promise.all(\n dirs\n .filter((entry) => entry.isDirectory())\n .map((entry) => JsonlSessionStore.listDirectory(join(root, entry.name)))\n );\n return lists.flat().sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n private static async listDirectory(dir: string): Promise<SessionListItem[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const files = await readdir(dir, { withFileTypes: true });\n const candidates = files\n .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))\n .map((entry) => join(dir, entry.name));\n const items = await Promise.all(\n candidates.map(async (path): Promise<SessionListItem | undefined> => {\n try {\n const store = await JsonlSessionStore.open(path);\n return {\n id: store.header.id,\n path,\n cwd: store.header.cwd,\n timestamp: store.header.timestamp,\n name: store.header.name,\n leafId: store.getLeafEntry()?.id ?? null,\n };\n } catch {\n return undefined;\n }\n })\n );\n return items\n .filter((item): item is SessionListItem => item != null)\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n getEntries(): SessionEntry[] {\n return [...this.entries];\n }\n\n getEntry(id: string): SessionEntry | undefined {\n return this.entries.find((entry) => entry.id === id);\n }\n\n getChildren(id: string): SessionEntry[] {\n return this.entries.filter((entry) => entry.parentId === id);\n }\n\n getTree(): SessionTreeNode[] {\n const byParent = new Map<string | null, SessionEntry[]>();\n for (const entry of this.entries) {\n const siblings = byParent.get(entry.parentId) ?? [];\n siblings.push(entry);\n byParent.set(entry.parentId, siblings);\n }\n const build = (parentId: string | null): SessionTreeNode[] =>\n (byParent.get(parentId) ?? []).map((entry) => ({\n entry,\n children: build(entry.id),\n }));\n return build(null);\n }\n\n getLeafEntry(): SessionEntry | undefined {\n const state = [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionStateEntry => entry.type === 'session_state'\n );\n if (state) {\n return state.data.leafId == null\n ? undefined\n : this.getEntry(state.data.leafId);\n }\n return [...this.entries]\n .reverse()\n .find((entry) => entry.type === 'message' || entry.type === 'summary');\n }\n\n getPath(\n entryId: string | undefined = this.getLeafEntry()?.id\n ): SessionEntry[] {\n if (entryId == null || entryId === '') {\n return [];\n }\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const path: SessionEntry[] = [];\n let current: SessionEntry | undefined = byId.get(entryId);\n while (current) {\n path.push(current);\n current =\n current.parentId == null ? undefined : byId.get(current.parentId);\n }\n return path.reverse();\n }\n\n getMessages(entryId?: string): BaseMessage[] {\n const messages: BaseMessage[] = [];\n for (const entry of this.getPath(entryId)) {\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n } else if (entry.type === 'summary') {\n messages.push(new SystemMessage(entry.data.text));\n }\n }\n return messages;\n }\n\n getForkPoints(): SessionMessageEntry[] {\n return this.entries.filter(\n (entry): entry is SessionMessageEntry =>\n entry.type === 'message' && entry.data.role === 'user'\n );\n }\n\n getLabel(entryId: string): string | undefined {\n return [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionLabelEntry =>\n entry.type === 'label' && entry.data.targetEntryId === entryId\n )?.data.label;\n }\n\n async setLabel(entryId: string, label: string): Promise<SessionLabelEntry> {\n return this.appendEntry<SessionLabelEntry>({\n type: 'label',\n parentId: this.getLeafEntry()?.id ?? null,\n data: { targetEntryId: entryId, label },\n });\n }\n\n async appendMessage(\n message: BaseMessage,\n parentId: string | null = this.getLeafEntry()?.id ?? null\n ): Promise<SessionMessageEntry> {\n const entry = await this.appendEntry<SessionMessageEntry>({\n type: 'message',\n parentId,\n data: {\n role: getMessageRole(message),\n message: serializeMessage(message),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendRunEvent(\n event: string,\n payload?: unknown,\n params?: { runId?: string; threadId?: string }\n ): Promise<SessionRunEventEntry> {\n return this.appendEntry<SessionRunEventEntry>({\n type: 'run_event',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n event,\n ...(params?.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params?.threadId != null && params.threadId !== ''\n ? { threadId: params.threadId }\n : {}),\n ...(typeof payload !== 'undefined'\n ? { payload: toJsonValue(payload) }\n : {}),\n },\n });\n }\n\n async setLeaf(leafId: string | null): Promise<SessionStateEntry> {\n return this.appendEntry<SessionStateEntry>({\n type: 'session_state',\n parentId: leafId,\n data: { leafId },\n });\n }\n\n async appendEntryForCompaction(params: {\n text: string;\n tokenCount?: number;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n instructions?: string;\n parentId?: string | null;\n }): Promise<SessionSummaryEntry> {\n const tokenCount =\n typeof params.tokenCount === 'number' &&\n Number.isFinite(params.tokenCount) &&\n params.tokenCount >= 0\n ? params.tokenCount\n : undefined;\n const entry = await this.appendEntry<SessionSummaryEntry>({\n type: 'summary',\n parentId:\n 'parentId' in params\n ? (params.parentId ?? null)\n : (this.getLeafEntry()?.id ?? null),\n data: {\n text: params.text,\n ...(tokenCount != null ? { tokenCount } : {}),\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n ...(params.instructions != null && params.instructions !== ''\n ? { instructions: params.instructions }\n : {}),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendCompactionEntry(params: {\n summaryEntryId: string;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n }): Promise<SessionCompactionEntry> {\n return this.appendEntry<SessionCompactionEntry>({\n type: 'compaction',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n summaryEntryId: params.summaryEntryId,\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n },\n });\n }\n\n async appendCheckpoint(params: {\n source: SessionCheckpointEntry['data']['source'];\n threadId: string;\n runId?: string;\n checkpointId?: string;\n checkpointNs?: string;\n parentCheckpointId?: string;\n reason?: string;\n }): Promise<SessionCheckpointEntry> {\n return this.appendEntry<SessionCheckpointEntry>({\n type: 'checkpoint',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n provider: 'langgraph',\n source: params.source,\n threadId: params.threadId,\n ...(params.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params.checkpointId != null && params.checkpointId !== ''\n ? { checkpointId: params.checkpointId }\n : {}),\n ...(params.checkpointNs != null\n ? { checkpointNs: params.checkpointNs }\n : {}),\n ...(params.parentCheckpointId != null &&\n params.parentCheckpointId !== ''\n ? { parentCheckpointId: params.parentCheckpointId }\n : {}),\n ...(params.reason != null && params.reason !== ''\n ? { reason: params.reason }\n : {}),\n },\n });\n }\n\n getCheckpoints(threadId?: string): SessionCheckpointEntry[] {\n return this.entries.filter(\n (entry): entry is SessionCheckpointEntry =>\n entry.type === 'checkpoint' &&\n (threadId == null || entry.data.threadId === threadId)\n );\n }\n\n getLatestCheckpoint(threadId?: string): SessionCheckpointEntry | undefined {\n const checkpoints = this.getCheckpoints(threadId);\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n return checkpoint;\n }\n return undefined;\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<SessionEntry | undefined> {\n const target = this.getBranchTarget(entryId, options.position ?? 'at');\n await this.setLeaf(target?.id ?? null);\n return target;\n }\n\n async createBranchedSession(\n entryId: string | undefined = this.getLeafEntry()?.id,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n const target =\n entryId != null && entryId !== ''\n ? this.getBranchTarget(entryId, options.position ?? 'at')\n : this.getLeafEntry();\n const newStore = await JsonlSessionStore.create({\n cwd: options.cwd ?? this.header.cwd,\n name: options.name ?? this.header.name,\n parentSession: this.path,\n });\n const pathEntries = target ? this.getPath(target.id) : [];\n for (const entry of pathEntries) {\n await newStore.appendExistingEntry(entry);\n }\n await newStore.setLeaf(target?.id ?? null);\n return newStore;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<JsonlSessionStore> {\n return this.createBranchedSession(this.getLeafEntry()?.id, {\n ...options,\n position: 'at',\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n return this.createBranchedSession(entryId, {\n ...options,\n position: options.position ?? 'before',\n });\n }\n\n private getBranchTarget(\n entryId: string,\n position: 'before' | 'at'\n ): SessionEntry | undefined {\n const entry = this.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : this.getEntry(entry.parentId);\n }\n\n private async appendExistingEntry(entry: SessionEntry): Promise<void> {\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n }\n\n private async appendEntry<TEntry extends SessionEntry>(params: {\n type: TEntry['type'];\n parentId: string | null;\n data: TEntry['data'];\n }): Promise<TEntry> {\n const entry = {\n type: params.type,\n id: createEntryId(),\n parentId: params.parentId,\n timestamp: createTimestamp(),\n data: params.data,\n } as TEntry;\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n return entry;\n }\n\n async existsOnDisk(): Promise<boolean> {\n const fileStat = await stat(this.path).catch(() => undefined);\n return fileStat?.isFile() === true;\n }\n}\n\nexport const SessionManager = JsonlSessionStore;\n"],"names":["join","homedir","resolve","createHash","createSessionId","access","createTimestamp","path","mkdir","dirname","writeFile","readFile","isAbsolute","basename","readdir","messages","deserializeMessage","SystemMessage","getMessageRole","serializeMessage","toJsonValue","appendFile","createEntryId","stat"],"mappings":"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"}
1
+ {"version":3,"file":"JsonlSessionStore.cjs","names":["createSessionId","path","createTimestamp","deserializeMessage","SystemMessage","getMessageRole","serializeMessage","toJsonValue","createEntryId"],"sources":["../../../src/session/JsonlSessionStore.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { createHash } from 'crypto';\nimport { SystemMessage } from '@langchain/core/messages';\nimport { basename, dirname, isAbsolute, join, resolve } from 'path';\nimport {\n access,\n appendFile,\n mkdir,\n readFile,\n readdir,\n stat,\n writeFile,\n} from 'fs/promises';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type {\n CreateSessionFileOptions,\n SessionBranchOptions,\n SessionEntry,\n SessionForkOptions,\n SessionHeader,\n SessionLabelEntry,\n SessionListItem,\n SessionMessageEntry,\n SessionCheckpointEntry,\n SessionCompactionEntry,\n SessionRunEventEntry,\n SessionSummaryEntry,\n SessionStateEntry,\n SessionTreeNode,\n} from './types';\nimport {\n deserializeMessage,\n getMessageRole,\n serializeMessage,\n toJsonValue,\n} from './messageSerialization';\nimport { createEntryId, createSessionId, createTimestamp } from './ids';\n\nconst SESSION_VERSION = 1;\nconst DEFAULT_SESSION_ROOT = join(\n homedir(),\n '.librechat',\n 'agents',\n 'sessions'\n);\n\nfunction sanitizeCwd(cwd: string): string {\n const normalized = resolve(cwd);\n return createHash('sha256').update(normalized).digest('hex');\n}\n\nfunction createSessionPath(options: CreateSessionFileOptions): string {\n const sessionId = options.sessionId ?? createSessionId();\n const fileName = `${new Date().toISOString().replace(/[:.]/g, '-')}_${sessionId}.jsonl`;\n return join(DEFAULT_SESSION_ROOT, sanitizeCwd(options.cwd), fileName);\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseLine(line: string): SessionHeader | SessionEntry | undefined {\n if (line.trim() === '') {\n return undefined;\n }\n try {\n const parsed = JSON.parse(line) as SessionHeader | SessionEntry;\n if (parsed.type === 'session') {\n return parsed;\n }\n if ('id' in parsed && 'parentId' in parsed && 'data' in parsed) {\n return parsed;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction createHeader(options: CreateSessionFileOptions): SessionHeader {\n return {\n type: 'session',\n version: SESSION_VERSION,\n id: options.sessionId ?? createSessionId(),\n timestamp: createTimestamp(),\n cwd: resolve(options.cwd),\n ...(options.name != null && options.name !== ''\n ? { name: options.name }\n : {}),\n ...(options.parentSession != null && options.parentSession !== ''\n ? { parentSession: options.parentSession }\n : {}),\n };\n}\n\nfunction sortEntries(entries: SessionEntry[]): SessionEntry[] {\n return [...entries].sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n}\n\nexport class JsonlSessionStore {\n readonly path: string;\n readonly header: SessionHeader;\n private entries: SessionEntry[];\n\n private constructor(params: {\n path: string;\n header: SessionHeader;\n entries: SessionEntry[];\n }) {\n this.path = params.path;\n this.header = params.header;\n this.entries = sortEntries(params.entries);\n }\n\n static getDefaultRoot(): string {\n return DEFAULT_SESSION_ROOT;\n }\n\n static async create(\n options: CreateSessionFileOptions & { path?: string }\n ): Promise<JsonlSessionStore> {\n const sessionId = options.sessionId ?? createSessionId();\n const path =\n options.path != null && options.path !== ''\n ? resolve(options.path)\n : createSessionPath({ ...options, sessionId });\n const header = createHeader({ ...options, sessionId });\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(header)}\\n`, {\n encoding: 'utf8',\n flag: 'wx',\n });\n return new JsonlSessionStore({ path, header, entries: [] });\n }\n\n static async open(pathOrId: string): Promise<JsonlSessionStore> {\n const path = await JsonlSessionStore.resolvePath(pathOrId);\n return JsonlSessionStore.openPath(path);\n }\n\n static async openPath(path: string): Promise<JsonlSessionStore> {\n const resolved = resolve(path);\n const raw = await readFile(resolved, 'utf8');\n const parsed = raw\n .split('\\n')\n .map((line) => parseLine(line))\n .filter((line): line is SessionHeader | SessionEntry => line != null);\n const header = parsed.find(\n (line): line is SessionHeader => line.type === 'session'\n );\n if (!header) {\n throw new Error(`Invalid session file: ${resolved}`);\n }\n const entries = parsed.filter(\n (line): line is SessionEntry => line.type !== 'session'\n );\n return new JsonlSessionStore({ path: resolved, header, entries });\n }\n\n static async resolvePath(pathOrId: string): Promise<string> {\n const candidate = isAbsolute(pathOrId) ? pathOrId : resolve(pathOrId);\n if (await pathExists(candidate)) {\n return candidate;\n }\n const sessions = await JsonlSessionStore.listAll();\n const matches = sessions.filter(\n (item) =>\n item.id.startsWith(pathOrId) || basename(item.path).includes(pathOrId)\n );\n if (matches.length === 1) {\n return matches[0].path;\n }\n if (matches.length > 1) {\n throw new Error(`Session id \"${pathOrId}\" is ambiguous`);\n }\n throw new Error(`Session not found: ${pathOrId}`);\n }\n\n static async list(cwd: string): Promise<SessionListItem[]> {\n const dir = join(DEFAULT_SESSION_ROOT, sanitizeCwd(cwd));\n return JsonlSessionStore.listDirectory(dir);\n }\n\n static async listAll(\n root: string = DEFAULT_SESSION_ROOT\n ): Promise<SessionListItem[]> {\n if (!(await pathExists(root))) {\n return [];\n }\n const dirs = await readdir(root, { withFileTypes: true });\n const lists = await Promise.all(\n dirs\n .filter((entry) => entry.isDirectory())\n .map((entry) => JsonlSessionStore.listDirectory(join(root, entry.name)))\n );\n return lists.flat().sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n private static async listDirectory(dir: string): Promise<SessionListItem[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const files = await readdir(dir, { withFileTypes: true });\n const candidates = files\n .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))\n .map((entry) => join(dir, entry.name));\n const items = await Promise.all(\n candidates.map(async (path): Promise<SessionListItem | undefined> => {\n try {\n const store = await JsonlSessionStore.open(path);\n return {\n id: store.header.id,\n path,\n cwd: store.header.cwd,\n timestamp: store.header.timestamp,\n name: store.header.name,\n leafId: store.getLeafEntry()?.id ?? null,\n };\n } catch {\n return undefined;\n }\n })\n );\n return items\n .filter((item): item is SessionListItem => item != null)\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n getEntries(): SessionEntry[] {\n return [...this.entries];\n }\n\n getEntry(id: string): SessionEntry | undefined {\n return this.entries.find((entry) => entry.id === id);\n }\n\n getChildren(id: string): SessionEntry[] {\n return this.entries.filter((entry) => entry.parentId === id);\n }\n\n getTree(): SessionTreeNode[] {\n const byParent = new Map<string | null, SessionEntry[]>();\n for (const entry of this.entries) {\n const siblings = byParent.get(entry.parentId) ?? [];\n siblings.push(entry);\n byParent.set(entry.parentId, siblings);\n }\n const build = (parentId: string | null): SessionTreeNode[] =>\n (byParent.get(parentId) ?? []).map((entry) => ({\n entry,\n children: build(entry.id),\n }));\n return build(null);\n }\n\n getLeafEntry(): SessionEntry | undefined {\n const state = [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionStateEntry => entry.type === 'session_state'\n );\n if (state) {\n return state.data.leafId == null\n ? undefined\n : this.getEntry(state.data.leafId);\n }\n return [...this.entries]\n .reverse()\n .find((entry) => entry.type === 'message' || entry.type === 'summary');\n }\n\n getPath(\n entryId: string | undefined = this.getLeafEntry()?.id\n ): SessionEntry[] {\n if (entryId == null || entryId === '') {\n return [];\n }\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const path: SessionEntry[] = [];\n let current: SessionEntry | undefined = byId.get(entryId);\n while (current) {\n path.push(current);\n current =\n current.parentId == null ? undefined : byId.get(current.parentId);\n }\n return path.reverse();\n }\n\n getMessages(entryId?: string): BaseMessage[] {\n const messages: BaseMessage[] = [];\n for (const entry of this.getPath(entryId)) {\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n } else if (entry.type === 'summary') {\n messages.push(new SystemMessage(entry.data.text));\n }\n }\n return messages;\n }\n\n getForkPoints(): SessionMessageEntry[] {\n return this.entries.filter(\n (entry): entry is SessionMessageEntry =>\n entry.type === 'message' && entry.data.role === 'user'\n );\n }\n\n getLabel(entryId: string): string | undefined {\n return [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionLabelEntry =>\n entry.type === 'label' && entry.data.targetEntryId === entryId\n )?.data.label;\n }\n\n async setLabel(entryId: string, label: string): Promise<SessionLabelEntry> {\n return this.appendEntry<SessionLabelEntry>({\n type: 'label',\n parentId: this.getLeafEntry()?.id ?? null,\n data: { targetEntryId: entryId, label },\n });\n }\n\n async appendMessage(\n message: BaseMessage,\n parentId: string | null = this.getLeafEntry()?.id ?? null\n ): Promise<SessionMessageEntry> {\n const entry = await this.appendEntry<SessionMessageEntry>({\n type: 'message',\n parentId,\n data: {\n role: getMessageRole(message),\n message: serializeMessage(message),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendRunEvent(\n event: string,\n payload?: unknown,\n params?: { runId?: string; threadId?: string }\n ): Promise<SessionRunEventEntry> {\n return this.appendEntry<SessionRunEventEntry>({\n type: 'run_event',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n event,\n ...(params?.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params?.threadId != null && params.threadId !== ''\n ? { threadId: params.threadId }\n : {}),\n ...(typeof payload !== 'undefined'\n ? { payload: toJsonValue(payload) }\n : {}),\n },\n });\n }\n\n async setLeaf(leafId: string | null): Promise<SessionStateEntry> {\n return this.appendEntry<SessionStateEntry>({\n type: 'session_state',\n parentId: leafId,\n data: { leafId },\n });\n }\n\n async appendEntryForCompaction(params: {\n text: string;\n tokenCount?: number;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n instructions?: string;\n parentId?: string | null;\n }): Promise<SessionSummaryEntry> {\n const tokenCount =\n typeof params.tokenCount === 'number' &&\n Number.isFinite(params.tokenCount) &&\n params.tokenCount >= 0\n ? params.tokenCount\n : undefined;\n const entry = await this.appendEntry<SessionSummaryEntry>({\n type: 'summary',\n parentId:\n 'parentId' in params\n ? (params.parentId ?? null)\n : (this.getLeafEntry()?.id ?? null),\n data: {\n text: params.text,\n ...(tokenCount != null ? { tokenCount } : {}),\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n ...(params.instructions != null && params.instructions !== ''\n ? { instructions: params.instructions }\n : {}),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendCompactionEntry(params: {\n summaryEntryId: string;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n }): Promise<SessionCompactionEntry> {\n return this.appendEntry<SessionCompactionEntry>({\n type: 'compaction',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n summaryEntryId: params.summaryEntryId,\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n },\n });\n }\n\n async appendCheckpoint(params: {\n source: SessionCheckpointEntry['data']['source'];\n threadId: string;\n runId?: string;\n checkpointId?: string;\n checkpointNs?: string;\n parentCheckpointId?: string;\n reason?: string;\n }): Promise<SessionCheckpointEntry> {\n return this.appendEntry<SessionCheckpointEntry>({\n type: 'checkpoint',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n provider: 'langgraph',\n source: params.source,\n threadId: params.threadId,\n ...(params.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params.checkpointId != null && params.checkpointId !== ''\n ? { checkpointId: params.checkpointId }\n : {}),\n ...(params.checkpointNs != null\n ? { checkpointNs: params.checkpointNs }\n : {}),\n ...(params.parentCheckpointId != null &&\n params.parentCheckpointId !== ''\n ? { parentCheckpointId: params.parentCheckpointId }\n : {}),\n ...(params.reason != null && params.reason !== ''\n ? { reason: params.reason }\n : {}),\n },\n });\n }\n\n getCheckpoints(threadId?: string): SessionCheckpointEntry[] {\n return this.entries.filter(\n (entry): entry is SessionCheckpointEntry =>\n entry.type === 'checkpoint' &&\n (threadId == null || entry.data.threadId === threadId)\n );\n }\n\n getLatestCheckpoint(threadId?: string): SessionCheckpointEntry | undefined {\n const checkpoints = this.getCheckpoints(threadId);\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n return checkpoint;\n }\n return undefined;\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<SessionEntry | undefined> {\n const target = this.getBranchTarget(entryId, options.position ?? 'at');\n await this.setLeaf(target?.id ?? null);\n return target;\n }\n\n async createBranchedSession(\n entryId: string | undefined = this.getLeafEntry()?.id,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n const target =\n entryId != null && entryId !== ''\n ? this.getBranchTarget(entryId, options.position ?? 'at')\n : this.getLeafEntry();\n const newStore = await JsonlSessionStore.create({\n cwd: options.cwd ?? this.header.cwd,\n name: options.name ?? this.header.name,\n parentSession: this.path,\n });\n const pathEntries = target ? this.getPath(target.id) : [];\n for (const entry of pathEntries) {\n await newStore.appendExistingEntry(entry);\n }\n await newStore.setLeaf(target?.id ?? null);\n return newStore;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<JsonlSessionStore> {\n return this.createBranchedSession(this.getLeafEntry()?.id, {\n ...options,\n position: 'at',\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n return this.createBranchedSession(entryId, {\n ...options,\n position: options.position ?? 'before',\n });\n }\n\n private getBranchTarget(\n entryId: string,\n position: 'before' | 'at'\n ): SessionEntry | undefined {\n const entry = this.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : this.getEntry(entry.parentId);\n }\n\n private async appendExistingEntry(entry: SessionEntry): Promise<void> {\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n }\n\n private async appendEntry<TEntry extends SessionEntry>(params: {\n type: TEntry['type'];\n parentId: string | null;\n data: TEntry['data'];\n }): Promise<TEntry> {\n const entry = {\n type: params.type,\n id: createEntryId(),\n parentId: params.parentId,\n timestamp: createTimestamp(),\n data: params.data,\n } as TEntry;\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n return entry;\n }\n\n async existsOnDisk(): Promise<boolean> {\n const fileStat = await stat(this.path).catch(() => undefined);\n return fileStat?.isFile() === true;\n }\n}\n\nexport const SessionManager = JsonlSessionStore;\n"],"mappings":"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"}
@@ -1,221 +1,205 @@
1
- 'use strict';
2
-
3
- var events = require('../events.cjs');
4
- var messageSerialization = require('./messageSerialization.cjs');
5
- var stream = require('../stream.cjs');
6
- var ids = require('./ids.cjs');
7
- var _enum = require('../common/enum.cjs');
8
-
1
+ require("../common/enum.cjs");
2
+ require("../common/index.cjs");
3
+ const require_stream = require("../stream.cjs");
4
+ const require_events = require("../events.cjs");
5
+ const require_messageSerialization = require("./messageSerialization.cjs");
6
+ const require_ids = require("./ids.cjs");
7
+ //#region src/session/handlers.ts
9
8
  function isToolCompletion(result) {
10
- return 'tool_call' in result;
9
+ return "tool_call" in result;
11
10
  }
12
11
  function createEventFactory(params) {
13
- let sequence = 0;
14
- return (type, data) => ({
15
- type,
16
- sequence: sequence++,
17
- runId: params.runId,
18
- threadId: params.threadId,
19
- timestamp: ids.createTimestamp(),
20
- ...(typeof data !== 'undefined' ? { data: messageSerialization.toJsonValue(data) } : {}),
21
- });
12
+ let sequence = 0;
13
+ return (type, data) => ({
14
+ type,
15
+ sequence: sequence++,
16
+ runId: params.runId,
17
+ threadId: params.threadId,
18
+ timestamp: require_ids.createTimestamp(),
19
+ ...typeof data !== "undefined" ? { data: require_messageSerialization.toJsonValue(data) } : {}
20
+ });
22
21
  }
23
22
  function getTokenCount(value) {
24
- return typeof value === 'number' && Number.isFinite(value) ? value : 0;
23
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
25
24
  }
26
25
  function updateUsage(usage, data) {
27
- const metadata = data?.output?.usage_metadata;
28
- if (!metadata) {
29
- return;
30
- }
31
- const inputTokens = getTokenCount(metadata.input_tokens);
32
- const outputTokens = getTokenCount(metadata.output_tokens);
33
- const totalTokens = metadata.total_tokens == null
34
- ? inputTokens + outputTokens
35
- : getTokenCount(metadata.total_tokens);
36
- usage.inputTokens += inputTokens;
37
- usage.outputTokens += outputTokens;
38
- usage.totalTokens += totalTokens;
26
+ const metadata = data?.output?.usage_metadata;
27
+ if (!metadata) return;
28
+ const inputTokens = getTokenCount(metadata.input_tokens);
29
+ const outputTokens = getTokenCount(metadata.output_tokens);
30
+ const totalTokens = metadata.total_tokens == null ? inputTokens + outputTokens : getTokenCount(metadata.total_tokens);
31
+ usage.inputTokens += inputTokens;
32
+ usage.outputTokens += outputTokens;
33
+ usage.totalTokens += totalTokens;
39
34
  }
40
35
  async function callUserHandler(params) {
41
- const handler = params.userHandlers?.[params.event];
42
- if (!handler) {
43
- return;
44
- }
45
- await handler.handle(params.event, params.data, params.metadata, params.graph);
36
+ const handler = params.userHandlers?.[params.event];
37
+ if (!handler) return;
38
+ await handler.handle(params.event, params.data, params.metadata, params.graph);
46
39
  }
47
40
  function createRunHandlers(params) {
48
- const { contentParts, aggregateContent } = stream.createContentAggregator();
49
- const steps = [];
50
- const usage = {
51
- inputTokens: 0,
52
- outputTokens: 0,
53
- totalTokens: 0,
54
- };
55
- const events$1 = [];
56
- const createEvent = createEventFactory({
57
- runId: params.runId,
58
- threadId: params.threadId,
59
- });
60
- const emitEvent = (event) => {
61
- events$1.push(event);
62
- params.onEvent?.(event);
63
- };
64
- const toolEndHandler = new events.ToolEndHandler();
65
- const modelEndHandler = new events.ModelEndHandler();
66
- emitEvent(createEvent('run.started'));
67
- const handlers = {
68
- [_enum.GraphEvents.CHAT_MODEL_STREAM]: {
69
- handle: async (event, data, metadata, graph) => {
70
- await callUserHandler({
71
- userHandlers: params.userHandlers,
72
- event,
73
- data,
74
- metadata,
75
- graph,
76
- });
77
- },
78
- },
79
- [_enum.GraphEvents.CHAT_MODEL_END]: {
80
- handle: async (event, data, metadata, graph) => {
81
- await modelEndHandler.handle(event, data, metadata, graph);
82
- updateUsage(usage, data);
83
- emitEvent(createEvent('usage.updated', usage));
84
- await callUserHandler({
85
- userHandlers: params.userHandlers,
86
- event,
87
- data,
88
- metadata,
89
- graph,
90
- });
91
- },
92
- },
93
- [_enum.GraphEvents.TOOL_END]: {
94
- handle: async (event, data, metadata, graph) => {
95
- await toolEndHandler.handle(event, data, metadata, graph);
96
- await callUserHandler({
97
- userHandlers: params.userHandlers,
98
- event,
99
- data,
100
- metadata,
101
- graph,
102
- });
103
- },
104
- },
105
- [_enum.GraphEvents.ON_RUN_STEP]: {
106
- handle: async (event, data, metadata, graph) => {
107
- const runStep = data;
108
- steps.push(runStep);
109
- aggregateContent({ event: _enum.GraphEvents.ON_RUN_STEP, data: runStep });
110
- if (runStep.stepDetails.type === 'tool_calls') {
111
- emitEvent(createEvent('tool.started', runStep));
112
- }
113
- await callUserHandler({
114
- userHandlers: params.userHandlers,
115
- event,
116
- data,
117
- metadata,
118
- graph,
119
- });
120
- },
121
- },
122
- [_enum.GraphEvents.ON_RUN_STEP_DELTA]: {
123
- handle: async (event, data, metadata, graph) => {
124
- const delta = data;
125
- aggregateContent({ event: _enum.GraphEvents.ON_RUN_STEP_DELTA, data: delta });
126
- emitEvent(createEvent('tool.delta', delta));
127
- await callUserHandler({
128
- userHandlers: params.userHandlers,
129
- event,
130
- data,
131
- metadata,
132
- graph,
133
- });
134
- },
135
- },
136
- [_enum.GraphEvents.ON_RUN_STEP_COMPLETED]: {
137
- handle: async (event, data, metadata, graph) => {
138
- const completed = data;
139
- aggregateContent({
140
- event: _enum.GraphEvents.ON_RUN_STEP_COMPLETED,
141
- data: completed,
142
- });
143
- if (isToolCompletion(completed.result)) {
144
- emitEvent(createEvent('tool.completed', completed));
145
- }
146
- await callUserHandler({
147
- userHandlers: params.userHandlers,
148
- event,
149
- data,
150
- metadata,
151
- graph,
152
- });
153
- },
154
- },
155
- [_enum.GraphEvents.ON_MESSAGE_DELTA]: {
156
- handle: async (event, data, metadata, graph) => {
157
- const delta = data;
158
- aggregateContent({ event: _enum.GraphEvents.ON_MESSAGE_DELTA, data: delta });
159
- emitEvent(createEvent('message.delta', delta));
160
- await callUserHandler({
161
- userHandlers: params.userHandlers,
162
- event,
163
- data,
164
- metadata,
165
- graph,
166
- });
167
- },
168
- },
169
- [_enum.GraphEvents.ON_REASONING_DELTA]: {
170
- handle: async (event, data, metadata, graph) => {
171
- const delta = data;
172
- aggregateContent({
173
- event: _enum.GraphEvents.ON_REASONING_DELTA,
174
- data: delta,
175
- });
176
- emitEvent(createEvent('reasoning.delta', delta));
177
- await callUserHandler({
178
- userHandlers: params.userHandlers,
179
- event,
180
- data,
181
- metadata,
182
- graph,
183
- });
184
- },
185
- },
186
- [_enum.GraphEvents.ON_SUMMARIZE_DELTA]: {
187
- handle: async (event, data, metadata, graph) => {
188
- aggregateContent({
189
- event: _enum.GraphEvents.ON_SUMMARIZE_DELTA,
190
- data: data,
191
- });
192
- await callUserHandler({
193
- userHandlers: params.userHandlers,
194
- event,
195
- data,
196
- metadata,
197
- graph,
198
- });
199
- },
200
- },
201
- [_enum.GraphEvents.ON_SUMMARIZE_COMPLETE]: {
202
- handle: async (event, data, metadata, graph) => {
203
- aggregateContent({
204
- event: _enum.GraphEvents.ON_SUMMARIZE_COMPLETE,
205
- data: data,
206
- });
207
- await callUserHandler({
208
- userHandlers: params.userHandlers,
209
- event,
210
- data,
211
- metadata,
212
- graph,
213
- });
214
- },
215
- },
216
- };
217
- return { contentParts, steps, usage, events: events$1, handlers };
41
+ const { contentParts, aggregateContent } = require_stream.createContentAggregator();
42
+ const steps = [];
43
+ const usage = {
44
+ inputTokens: 0,
45
+ outputTokens: 0,
46
+ totalTokens: 0
47
+ };
48
+ const events = [];
49
+ const createEvent = createEventFactory({
50
+ runId: params.runId,
51
+ threadId: params.threadId
52
+ });
53
+ const emitEvent = (event) => {
54
+ events.push(event);
55
+ params.onEvent?.(event);
56
+ };
57
+ const toolEndHandler = new require_events.ToolEndHandler();
58
+ const modelEndHandler = new require_events.ModelEndHandler();
59
+ emitEvent(createEvent("run.started"));
60
+ return {
61
+ contentParts,
62
+ steps,
63
+ usage,
64
+ events,
65
+ handlers: {
66
+ ["on_chat_model_stream"]: { handle: async (event, data, metadata, graph) => {
67
+ await callUserHandler({
68
+ userHandlers: params.userHandlers,
69
+ event,
70
+ data,
71
+ metadata,
72
+ graph
73
+ });
74
+ } },
75
+ ["on_chat_model_end"]: { handle: async (event, data, metadata, graph) => {
76
+ await modelEndHandler.handle(event, data, metadata, graph);
77
+ updateUsage(usage, data);
78
+ emitEvent(createEvent("usage.updated", usage));
79
+ await callUserHandler({
80
+ userHandlers: params.userHandlers,
81
+ event,
82
+ data,
83
+ metadata,
84
+ graph
85
+ });
86
+ } },
87
+ ["on_tool_end"]: { handle: async (event, data, metadata, graph) => {
88
+ await toolEndHandler.handle(event, data, metadata, graph);
89
+ await callUserHandler({
90
+ userHandlers: params.userHandlers,
91
+ event,
92
+ data,
93
+ metadata,
94
+ graph
95
+ });
96
+ } },
97
+ ["on_run_step"]: { handle: async (event, data, metadata, graph) => {
98
+ const runStep = data;
99
+ steps.push(runStep);
100
+ aggregateContent({
101
+ event: "on_run_step",
102
+ data: runStep
103
+ });
104
+ if (runStep.stepDetails.type === "tool_calls") emitEvent(createEvent("tool.started", runStep));
105
+ await callUserHandler({
106
+ userHandlers: params.userHandlers,
107
+ event,
108
+ data,
109
+ metadata,
110
+ graph
111
+ });
112
+ } },
113
+ ["on_run_step_delta"]: { handle: async (event, data, metadata, graph) => {
114
+ const delta = data;
115
+ aggregateContent({
116
+ event: "on_run_step_delta",
117
+ data: delta
118
+ });
119
+ emitEvent(createEvent("tool.delta", delta));
120
+ await callUserHandler({
121
+ userHandlers: params.userHandlers,
122
+ event,
123
+ data,
124
+ metadata,
125
+ graph
126
+ });
127
+ } },
128
+ ["on_run_step_completed"]: { handle: async (event, data, metadata, graph) => {
129
+ const completed = data;
130
+ aggregateContent({
131
+ event: "on_run_step_completed",
132
+ data: completed
133
+ });
134
+ if (isToolCompletion(completed.result)) emitEvent(createEvent("tool.completed", completed));
135
+ await callUserHandler({
136
+ userHandlers: params.userHandlers,
137
+ event,
138
+ data,
139
+ metadata,
140
+ graph
141
+ });
142
+ } },
143
+ ["on_message_delta"]: { handle: async (event, data, metadata, graph) => {
144
+ const delta = data;
145
+ aggregateContent({
146
+ event: "on_message_delta",
147
+ data: delta
148
+ });
149
+ emitEvent(createEvent("message.delta", delta));
150
+ await callUserHandler({
151
+ userHandlers: params.userHandlers,
152
+ event,
153
+ data,
154
+ metadata,
155
+ graph
156
+ });
157
+ } },
158
+ ["on_reasoning_delta"]: { handle: async (event, data, metadata, graph) => {
159
+ const delta = data;
160
+ aggregateContent({
161
+ event: "on_reasoning_delta",
162
+ data: delta
163
+ });
164
+ emitEvent(createEvent("reasoning.delta", delta));
165
+ await callUserHandler({
166
+ userHandlers: params.userHandlers,
167
+ event,
168
+ data,
169
+ metadata,
170
+ graph
171
+ });
172
+ } },
173
+ ["on_summarize_delta"]: { handle: async (event, data, metadata, graph) => {
174
+ aggregateContent({
175
+ event: "on_summarize_delta",
176
+ data
177
+ });
178
+ await callUserHandler({
179
+ userHandlers: params.userHandlers,
180
+ event,
181
+ data,
182
+ metadata,
183
+ graph
184
+ });
185
+ } },
186
+ ["on_summarize_complete"]: { handle: async (event, data, metadata, graph) => {
187
+ aggregateContent({
188
+ event: "on_summarize_complete",
189
+ data
190
+ });
191
+ await callUserHandler({
192
+ userHandlers: params.userHandlers,
193
+ event,
194
+ data,
195
+ metadata,
196
+ graph
197
+ });
198
+ } }
199
+ }
200
+ };
218
201
  }
219
-
202
+ //#endregion
220
203
  exports.createRunHandlers = createRunHandlers;
221
- //# sourceMappingURL=handlers.cjs.map
204
+
205
+ //# sourceMappingURL=handlers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.cjs","sources":["../../../src/session/handlers.ts"],"sourcesContent":["import type { UsageMetadata } from '@langchain/core/messages';\nimport type {\n AgentSessionHandlersResult,\n AgentSessionStreamEvent,\n AgentSessionUsage,\n} from './types';\nimport type * as t from '@/types';\nimport { ModelEndHandler, ToolEndHandler } from '@/events';\nimport { toJsonValue } from './messageSerialization';\nimport { createContentAggregator } from '@/stream';\nimport { createTimestamp } from './ids';\nimport { GraphEvents } from '@/common';\n\ntype CompletedRunStepResult =\n | t.ToolEndEvent\n | (t.SummaryCompleted & { id: string; index: number });\n\nfunction isToolCompletion(\n result: CompletedRunStepResult\n): result is t.ToolEndEvent {\n return 'tool_call' in result;\n}\n\nfunction createEventFactory(params: {\n runId: string;\n threadId: string;\n}): (\n type: AgentSessionStreamEvent['type'],\n data?: unknown\n) => AgentSessionStreamEvent {\n let sequence = 0;\n return (type, data) => ({\n type,\n sequence: sequence++,\n runId: params.runId,\n threadId: params.threadId,\n timestamp: createTimestamp(),\n ...(typeof data !== 'undefined' ? { data: toJsonValue(data) } : {}),\n });\n}\n\nfunction getTokenCount(value: number | null | undefined): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nfunction updateUsage(usage: AgentSessionUsage, data: t.ModelEndData): void {\n const metadata = data?.output?.usage_metadata as\n | Partial<UsageMetadata>\n | undefined;\n if (!metadata) {\n return;\n }\n const inputTokens = getTokenCount(metadata.input_tokens);\n const outputTokens = getTokenCount(metadata.output_tokens);\n const totalTokens =\n metadata.total_tokens == null\n ? inputTokens + outputTokens\n : getTokenCount(metadata.total_tokens);\n usage.inputTokens += inputTokens;\n usage.outputTokens += outputTokens;\n usage.totalTokens += totalTokens;\n}\n\nasync function callUserHandler(params: {\n userHandlers?: Record<string, t.EventHandler>;\n event: string;\n data: Parameters<t.EventHandler['handle']>[1];\n metadata?: Record<string, unknown>;\n graph?: Parameters<t.EventHandler['handle']>[3];\n}): Promise<void> {\n const handler = params.userHandlers?.[params.event];\n if (!handler) {\n return;\n }\n await handler.handle(\n params.event,\n params.data,\n params.metadata,\n params.graph\n );\n}\n\nexport function createRunHandlers(params: {\n runId: string;\n threadId: string;\n userHandlers?: Record<string, t.EventHandler>;\n onEvent?: (event: AgentSessionStreamEvent) => void;\n}): AgentSessionHandlersResult {\n const { contentParts, aggregateContent } = createContentAggregator();\n const steps: t.RunStep[] = [];\n const usage: AgentSessionUsage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n const events: AgentSessionStreamEvent[] = [];\n const createEvent = createEventFactory({\n runId: params.runId,\n threadId: params.threadId,\n });\n const emitEvent = (event: AgentSessionStreamEvent): void => {\n events.push(event);\n params.onEvent?.(event);\n };\n const toolEndHandler = new ToolEndHandler();\n const modelEndHandler = new ModelEndHandler();\n\n emitEvent(createEvent('run.started'));\n\n const handlers: Record<string, t.EventHandler> = {\n [GraphEvents.CHAT_MODEL_STREAM]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.CHAT_MODEL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await modelEndHandler.handle(\n event,\n data as t.ModelEndData,\n metadata,\n graph\n );\n updateUsage(usage, data as t.ModelEndData);\n emitEvent(createEvent('usage.updated', usage));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.TOOL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await toolEndHandler.handle(\n event,\n data as t.StreamEventData,\n metadata,\n graph\n );\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const runStep = data as t.RunStep;\n steps.push(runStep);\n aggregateContent({ event: GraphEvents.ON_RUN_STEP, data: runStep });\n if (runStep.stepDetails.type === 'tool_calls') {\n emitEvent(createEvent('tool.started', runStep));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.RunStepDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_RUN_STEP_DELTA, data: delta });\n emitEvent(createEvent('tool.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_COMPLETED]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const completed = data as unknown as { result: CompletedRunStepResult };\n aggregateContent({\n event: GraphEvents.ON_RUN_STEP_COMPLETED,\n data: completed as { result: t.ToolEndEvent },\n });\n if (isToolCompletion(completed.result)) {\n emitEvent(createEvent('tool.completed', completed));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_MESSAGE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.MessageDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_MESSAGE_DELTA, data: delta });\n emitEvent(createEvent('message.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_REASONING_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.ReasoningDeltaEvent;\n aggregateContent({\n event: GraphEvents.ON_REASONING_DELTA,\n data: delta,\n });\n emitEvent(createEvent('reasoning.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_DELTA,\n data: data as t.SummarizeDeltaData,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_COMPLETE]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_COMPLETE,\n data: data as t.SummarizeCompleteEvent,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n };\n\n return { contentParts, steps, usage, events, handlers };\n}\n"],"names":["createTimestamp","toJsonValue","createContentAggregator","events","ToolEndHandler","ModelEndHandler","GraphEvents"],"mappings":"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"}
1
+ {"version":3,"file":"handlers.cjs","names":["createTimestamp","toJsonValue","createContentAggregator","ToolEndHandler","ModelEndHandler"],"sources":["../../../src/session/handlers.ts"],"sourcesContent":["import type { UsageMetadata } from '@langchain/core/messages';\nimport type {\n AgentSessionHandlersResult,\n AgentSessionStreamEvent,\n AgentSessionUsage,\n} from './types';\nimport type * as t from '@/types';\nimport { ModelEndHandler, ToolEndHandler } from '@/events';\nimport { toJsonValue } from './messageSerialization';\nimport { createContentAggregator } from '@/stream';\nimport { createTimestamp } from './ids';\nimport { GraphEvents } from '@/common';\n\ntype CompletedRunStepResult =\n | t.ToolEndEvent\n | (t.SummaryCompleted & { id: string; index: number });\n\nfunction isToolCompletion(\n result: CompletedRunStepResult\n): result is t.ToolEndEvent {\n return 'tool_call' in result;\n}\n\nfunction createEventFactory(params: {\n runId: string;\n threadId: string;\n}): (\n type: AgentSessionStreamEvent['type'],\n data?: unknown\n) => AgentSessionStreamEvent {\n let sequence = 0;\n return (type, data) => ({\n type,\n sequence: sequence++,\n runId: params.runId,\n threadId: params.threadId,\n timestamp: createTimestamp(),\n ...(typeof data !== 'undefined' ? { data: toJsonValue(data) } : {}),\n });\n}\n\nfunction getTokenCount(value: number | null | undefined): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nfunction updateUsage(usage: AgentSessionUsage, data: t.ModelEndData): void {\n const metadata = data?.output?.usage_metadata as\n | Partial<UsageMetadata>\n | undefined;\n if (!metadata) {\n return;\n }\n const inputTokens = getTokenCount(metadata.input_tokens);\n const outputTokens = getTokenCount(metadata.output_tokens);\n const totalTokens =\n metadata.total_tokens == null\n ? inputTokens + outputTokens\n : getTokenCount(metadata.total_tokens);\n usage.inputTokens += inputTokens;\n usage.outputTokens += outputTokens;\n usage.totalTokens += totalTokens;\n}\n\nasync function callUserHandler(params: {\n userHandlers?: Record<string, t.EventHandler>;\n event: string;\n data: Parameters<t.EventHandler['handle']>[1];\n metadata?: Record<string, unknown>;\n graph?: Parameters<t.EventHandler['handle']>[3];\n}): Promise<void> {\n const handler = params.userHandlers?.[params.event];\n if (!handler) {\n return;\n }\n await handler.handle(\n params.event,\n params.data,\n params.metadata,\n params.graph\n );\n}\n\nexport function createRunHandlers(params: {\n runId: string;\n threadId: string;\n userHandlers?: Record<string, t.EventHandler>;\n onEvent?: (event: AgentSessionStreamEvent) => void;\n}): AgentSessionHandlersResult {\n const { contentParts, aggregateContent } = createContentAggregator();\n const steps: t.RunStep[] = [];\n const usage: AgentSessionUsage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n const events: AgentSessionStreamEvent[] = [];\n const createEvent = createEventFactory({\n runId: params.runId,\n threadId: params.threadId,\n });\n const emitEvent = (event: AgentSessionStreamEvent): void => {\n events.push(event);\n params.onEvent?.(event);\n };\n const toolEndHandler = new ToolEndHandler();\n const modelEndHandler = new ModelEndHandler();\n\n emitEvent(createEvent('run.started'));\n\n const handlers: Record<string, t.EventHandler> = {\n [GraphEvents.CHAT_MODEL_STREAM]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.CHAT_MODEL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await modelEndHandler.handle(\n event,\n data as t.ModelEndData,\n metadata,\n graph\n );\n updateUsage(usage, data as t.ModelEndData);\n emitEvent(createEvent('usage.updated', usage));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.TOOL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await toolEndHandler.handle(\n event,\n data as t.StreamEventData,\n metadata,\n graph\n );\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const runStep = data as t.RunStep;\n steps.push(runStep);\n aggregateContent({ event: GraphEvents.ON_RUN_STEP, data: runStep });\n if (runStep.stepDetails.type === 'tool_calls') {\n emitEvent(createEvent('tool.started', runStep));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.RunStepDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_RUN_STEP_DELTA, data: delta });\n emitEvent(createEvent('tool.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_COMPLETED]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const completed = data as unknown as { result: CompletedRunStepResult };\n aggregateContent({\n event: GraphEvents.ON_RUN_STEP_COMPLETED,\n data: completed as { result: t.ToolEndEvent },\n });\n if (isToolCompletion(completed.result)) {\n emitEvent(createEvent('tool.completed', completed));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_MESSAGE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.MessageDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_MESSAGE_DELTA, data: delta });\n emitEvent(createEvent('message.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_REASONING_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.ReasoningDeltaEvent;\n aggregateContent({\n event: GraphEvents.ON_REASONING_DELTA,\n data: delta,\n });\n emitEvent(createEvent('reasoning.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_DELTA,\n data: data as t.SummarizeDeltaData,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_COMPLETE]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_COMPLETE,\n data: data as t.SummarizeCompleteEvent,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n };\n\n return { contentParts, steps, usage, events, handlers };\n}\n"],"mappings":"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"}