@librechat/agents 3.4.7 → 3.5.1

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 (924) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +0 -356
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/agents/projection.cjs +0 -9
  4. package/dist/cjs/agents/projection.cjs.map +1 -1
  5. package/dist/cjs/common/constants.cjs +0 -26
  6. package/dist/cjs/common/constants.cjs.map +1 -1
  7. package/dist/cjs/common/enum.cjs +0 -85
  8. package/dist/cjs/common/enum.cjs.map +1 -1
  9. package/dist/cjs/events.cjs +0 -14
  10. package/dist/cjs/events.cjs.map +1 -1
  11. package/dist/cjs/graphs/Graph.cjs +1 -909
  12. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  13. package/dist/cjs/graphs/MultiAgentGraph.cjs +7 -272
  14. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  15. package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs.map +1 -1
  16. package/dist/cjs/graphs/createGraph.cjs.map +1 -1
  17. package/dist/cjs/hitl/askUserQuestion.cjs +0 -53
  18. package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
  19. package/dist/cjs/hitl/askUserQuestions.cjs +0 -20
  20. package/dist/cjs/hitl/askUserQuestions.cjs.map +1 -1
  21. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs +0 -6
  22. package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs.map +1 -1
  23. package/dist/cjs/hooks/HookRegistry.cjs +0 -127
  24. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  25. package/dist/cjs/hooks/createToolPolicyHook.cjs +0 -38
  26. package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
  27. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +0 -77
  28. package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
  29. package/dist/cjs/hooks/executeHooks.cjs +0 -79
  30. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  31. package/dist/cjs/hooks/index.cjs +0 -16
  32. package/dist/cjs/hooks/index.cjs.map +1 -1
  33. package/dist/cjs/hooks/matchers.cjs +0 -104
  34. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  35. package/dist/cjs/hooks/types.cjs +0 -8
  36. package/dist/cjs/hooks/types.cjs.map +1 -1
  37. package/dist/cjs/instrumentation.cjs +0 -14
  38. package/dist/cjs/instrumentation.cjs.map +1 -1
  39. package/dist/cjs/langfuse.cjs +0 -75
  40. package/dist/cjs/langfuse.cjs.map +1 -1
  41. package/dist/cjs/langfuseConfig.cjs.map +1 -1
  42. package/dist/cjs/langfuseRuntimeContext.cjs +0 -13
  43. package/dist/cjs/langfuseRuntimeContext.cjs.map +1 -1
  44. package/dist/cjs/langfuseRuntimeScope.cjs +0 -4
  45. package/dist/cjs/langfuseRuntimeScope.cjs.map +1 -1
  46. package/dist/cjs/langfuseSpanRegistry.cjs +0 -28
  47. package/dist/cjs/langfuseSpanRegistry.cjs.map +1 -1
  48. package/dist/cjs/langfuseToolOutputTracing.cjs +0 -3
  49. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  50. package/dist/cjs/langfuseTraceShaping.cjs +0 -74
  51. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  52. package/dist/cjs/llm/anthropic/index.cjs +0 -3
  53. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  54. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  55. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -111
  56. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  57. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +0 -1
  58. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  59. package/dist/cjs/llm/anthropic/utils/stream_events.cjs +0 -8
  60. package/dist/cjs/llm/anthropic/utils/stream_events.cjs.map +1 -1
  61. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  62. package/dist/cjs/llm/bedrock/cachePoints.cjs.map +1 -1
  63. package/dist/cjs/llm/bedrock/index.cjs +1 -95
  64. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  65. package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
  66. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +0 -78
  67. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  68. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +0 -24
  69. package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
  70. package/dist/cjs/llm/contextOverflowRecovery.cjs +0 -62
  71. package/dist/cjs/llm/contextOverflowRecovery.cjs.map +1 -1
  72. package/dist/cjs/llm/fake.cjs.map +1 -1
  73. package/dist/cjs/llm/google/index.cjs +2 -21
  74. package/dist/cjs/llm/google/index.cjs.map +1 -1
  75. package/dist/cjs/llm/google/utils/common.cjs +0 -35
  76. package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
  77. package/dist/cjs/llm/init.cjs +0 -9
  78. package/dist/cjs/llm/init.cjs.map +1 -1
  79. package/dist/cjs/llm/invoke.cjs +1 -270
  80. package/dist/cjs/llm/invoke.cjs.map +1 -1
  81. package/dist/cjs/llm/mistral/index.cjs.map +1 -1
  82. package/dist/cjs/llm/openai/index.cjs +0 -99
  83. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  84. package/dist/cjs/llm/openai/streamMetadata.cjs +0 -21
  85. package/dist/cjs/llm/openai/streamMetadata.cjs.map +1 -1
  86. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  87. package/dist/cjs/llm/openrouter/index.cjs +0 -1
  88. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  89. package/dist/cjs/llm/openrouter/toolCache.cjs +0 -6
  90. package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
  91. package/dist/cjs/llm/preempt.cjs +0 -75
  92. package/dist/cjs/llm/preempt.cjs.map +1 -1
  93. package/dist/cjs/llm/providers.cjs.map +1 -1
  94. package/dist/cjs/llm/request.cjs +0 -10
  95. package/dist/cjs/llm/request.cjs.map +1 -1
  96. package/dist/cjs/llm/stream/chunkAdapters.cjs +0 -62
  97. package/dist/cjs/llm/stream/chunkAdapters.cjs.map +1 -1
  98. package/dist/cjs/llm/stream/smoother.cjs +0 -58
  99. package/dist/cjs/llm/stream/smoother.cjs.map +1 -1
  100. package/dist/cjs/llm/streamLimits.cjs +4 -293
  101. package/dist/cjs/llm/streamLimits.cjs.map +1 -1
  102. package/dist/cjs/llm/truncation.cjs +0 -36
  103. package/dist/cjs/llm/truncation.cjs.map +1 -1
  104. package/dist/cjs/llm/vertexai/index.cjs +0 -330
  105. package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
  106. package/dist/cjs/messages/alternation.cjs +0 -43
  107. package/dist/cjs/messages/alternation.cjs.map +1 -1
  108. package/dist/cjs/messages/anthropicToolCache.cjs +0 -45
  109. package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
  110. package/dist/cjs/messages/assistantPhase.cjs +0 -12
  111. package/dist/cjs/messages/assistantPhase.cjs.map +1 -1
  112. package/dist/cjs/messages/budget.cjs +0 -9
  113. package/dist/cjs/messages/budget.cjs.map +1 -1
  114. package/dist/cjs/messages/cache.cjs +0 -172
  115. package/dist/cjs/messages/cache.cjs.map +1 -1
  116. package/dist/cjs/messages/content.cjs +0 -9
  117. package/dist/cjs/messages/content.cjs.map +1 -1
  118. package/dist/cjs/messages/contextPruning.cjs +0 -15
  119. package/dist/cjs/messages/contextPruning.cjs.map +1 -1
  120. package/dist/cjs/messages/contextPruningSettings.cjs +0 -3
  121. package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
  122. package/dist/cjs/messages/core.cjs +0 -48
  123. package/dist/cjs/messages/core.cjs.map +1 -1
  124. package/dist/cjs/messages/format.cjs +1 -345
  125. package/dist/cjs/messages/format.cjs.map +1 -1
  126. package/dist/cjs/messages/handoffCue.cjs +0 -36
  127. package/dist/cjs/messages/handoffCue.cjs.map +1 -1
  128. package/dist/cjs/messages/ids.cjs.map +1 -1
  129. package/dist/cjs/messages/injected.cjs +0 -33
  130. package/dist/cjs/messages/injected.cjs.map +1 -1
  131. package/dist/cjs/messages/langchain.cjs +0 -14
  132. package/dist/cjs/messages/langchain.cjs.map +1 -1
  133. package/dist/cjs/messages/prune.cjs +1 -184
  134. package/dist/cjs/messages/prune.cjs.map +1 -1
  135. package/dist/cjs/messages/recency.cjs +0 -32
  136. package/dist/cjs/messages/recency.cjs.map +1 -1
  137. package/dist/cjs/messages/reducer.cjs +0 -30
  138. package/dist/cjs/messages/reducer.cjs.map +1 -1
  139. package/dist/cjs/messages/tools.cjs +0 -14
  140. package/dist/cjs/messages/tools.cjs.map +1 -1
  141. package/dist/cjs/openai/index.cjs.map +1 -1
  142. package/dist/cjs/prompts/activityLabel.cjs +9 -79
  143. package/dist/cjs/prompts/activityLabel.cjs.map +1 -1
  144. package/dist/cjs/responses/index.cjs.map +1 -1
  145. package/dist/cjs/run.cjs +2 -538
  146. package/dist/cjs/run.cjs.map +1 -1
  147. package/dist/cjs/session/AgentSession.cjs +1 -17
  148. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  149. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  150. package/dist/cjs/session/handlers.cjs +0 -7
  151. package/dist/cjs/session/handlers.cjs.map +1 -1
  152. package/dist/cjs/session/ids.cjs.map +1 -1
  153. package/dist/cjs/session/messageSerialization.cjs +0 -4
  154. package/dist/cjs/session/messageSerialization.cjs.map +1 -1
  155. package/dist/cjs/stream.cjs +1 -93
  156. package/dist/cjs/stream.cjs.map +1 -1
  157. package/dist/cjs/summarization/index.cjs +0 -27
  158. package/dist/cjs/summarization/index.cjs.map +1 -1
  159. package/dist/cjs/summarization/node.cjs +0 -273
  160. package/dist/cjs/summarization/node.cjs.map +1 -1
  161. package/dist/cjs/tools/BashExecutor.cjs +0 -35
  162. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  163. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +0 -24
  164. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  165. package/dist/cjs/tools/Calculator.cjs.map +1 -1
  166. package/dist/cjs/tools/CodeExecutor.cjs +0 -13
  167. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  168. package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
  169. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +0 -101
  170. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  171. package/dist/cjs/tools/ReadFile.cjs.map +1 -1
  172. package/dist/cjs/tools/SkillTool.cjs +0 -5
  173. package/dist/cjs/tools/SkillTool.cjs.map +1 -1
  174. package/dist/cjs/tools/SubagentTool.cjs +0 -10
  175. package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
  176. package/dist/cjs/tools/ToolNode.cjs +6 -1038
  177. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  178. package/dist/cjs/tools/ToolSearch.cjs +0 -179
  179. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  180. package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
  181. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  182. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +0 -39
  183. package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
  184. package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
  185. package/dist/cjs/tools/eagerEventExecution.cjs +0 -6
  186. package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
  187. package/dist/cjs/tools/handlers.cjs +1 -41
  188. package/dist/cjs/tools/handlers.cjs.map +1 -1
  189. package/dist/cjs/tools/intentArg.cjs +1 -132
  190. package/dist/cjs/tools/intentArg.cjs.map +1 -1
  191. package/dist/cjs/tools/local/CompileCheckTool.cjs +0 -25
  192. package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
  193. package/dist/cjs/tools/local/FileCheckpointer.cjs +0 -23
  194. package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
  195. package/dist/cjs/tools/local/LocalCodingTools.cjs +0 -80
  196. package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
  197. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +0 -126
  198. package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
  199. package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
  200. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +0 -12
  201. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  202. package/dist/cjs/tools/local/attachments.cjs +0 -44
  203. package/dist/cjs/tools/local/attachments.cjs.map +1 -1
  204. package/dist/cjs/tools/local/bashAst.cjs +0 -16
  205. package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
  206. package/dist/cjs/tools/local/editStrategies.cjs +0 -14
  207. package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
  208. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  209. package/dist/cjs/tools/local/syntaxCheck.cjs +0 -31
  210. package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
  211. package/dist/cjs/tools/local/textEncoding.cjs +0 -11
  212. package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
  213. package/dist/cjs/tools/local/workspaceFS.cjs +0 -33
  214. package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
  215. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  216. package/dist/cjs/tools/schema.cjs +0 -8
  217. package/dist/cjs/tools/schema.cjs.map +1 -1
  218. package/dist/cjs/tools/search/anthropic.cjs +0 -9
  219. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  220. package/dist/cjs/tools/search/content.cjs.map +1 -1
  221. package/dist/cjs/tools/search/crw-scraper.cjs +0 -33
  222. package/dist/cjs/tools/search/crw-scraper.cjs.map +1 -1
  223. package/dist/cjs/tools/search/crw-search.cjs +0 -2
  224. package/dist/cjs/tools/search/crw-search.cjs.map +1 -1
  225. package/dist/cjs/tools/search/firecrawl.cjs +0 -25
  226. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  227. package/dist/cjs/tools/search/format.cjs +0 -30
  228. package/dist/cjs/tools/search/format.cjs.map +1 -1
  229. package/dist/cjs/tools/search/highlights.cjs +0 -16
  230. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  231. package/dist/cjs/tools/search/keenable-scraper.cjs +0 -8
  232. package/dist/cjs/tools/search/keenable-scraper.cjs.map +1 -1
  233. package/dist/cjs/tools/search/keenable-search.cjs +0 -7
  234. package/dist/cjs/tools/search/keenable-search.cjs.map +1 -1
  235. package/dist/cjs/tools/search/rerankers.cjs +0 -35
  236. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  237. package/dist/cjs/tools/search/schema.cjs +0 -1
  238. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  239. package/dist/cjs/tools/search/search.cjs +1 -14
  240. package/dist/cjs/tools/search/search.cjs.map +1 -1
  241. package/dist/cjs/tools/search/serper-scraper.cjs +0 -46
  242. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  243. package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
  244. package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
  245. package/dist/cjs/tools/search/tool.cjs +0 -25
  246. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  247. package/dist/cjs/tools/search/utils.cjs +0 -8
  248. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  249. package/dist/cjs/tools/skillCatalog.cjs +0 -6
  250. package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
  251. package/dist/cjs/tools/streamedToolCallSeals.cjs +0 -6
  252. package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
  253. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs +0 -2
  254. package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs.map +1 -1
  255. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +3 -213
  256. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  257. package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -1
  258. package/dist/cjs/tools/subagent/childGraphConfig.cjs +0 -4
  259. package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -1
  260. package/dist/cjs/tools/subagent/runtimeLimits.cjs.map +1 -1
  261. package/dist/cjs/tools/toolOutputReferences.cjs +1 -322
  262. package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
  263. package/dist/cjs/types/hitl.cjs +0 -5
  264. package/dist/cjs/types/hitl.cjs.map +1 -1
  265. package/dist/cjs/utils/callbacks.cjs.map +1 -1
  266. package/dist/cjs/utils/errors.cjs +14 -165
  267. package/dist/cjs/utils/errors.cjs.map +1 -1
  268. package/dist/cjs/utils/events.cjs +0 -10
  269. package/dist/cjs/utils/events.cjs.map +1 -1
  270. package/dist/cjs/utils/graph.cjs.map +1 -1
  271. package/dist/cjs/utils/handlers.cjs +0 -3
  272. package/dist/cjs/utils/handlers.cjs.map +1 -1
  273. package/dist/cjs/utils/llm.cjs +0 -1
  274. package/dist/cjs/utils/llm.cjs.map +1 -1
  275. package/dist/cjs/utils/misc.cjs +0 -16
  276. package/dist/cjs/utils/misc.cjs.map +1 -1
  277. package/dist/cjs/utils/proxy.cjs +0 -26
  278. package/dist/cjs/utils/proxy.cjs.map +1 -1
  279. package/dist/cjs/utils/run.cjs +0 -6
  280. package/dist/cjs/utils/run.cjs.map +1 -1
  281. package/dist/cjs/utils/schema.cjs +0 -5
  282. package/dist/cjs/utils/schema.cjs.map +1 -1
  283. package/dist/cjs/utils/title.cjs +0 -6
  284. package/dist/cjs/utils/title.cjs.map +1 -1
  285. package/dist/cjs/utils/tokens.cjs +0 -113
  286. package/dist/cjs/utils/tokens.cjs.map +1 -1
  287. package/dist/cjs/utils/toolContent.cjs +0 -41
  288. package/dist/cjs/utils/toolContent.cjs.map +1 -1
  289. package/dist/cjs/utils/truncation.cjs +0 -61
  290. package/dist/cjs/utils/truncation.cjs.map +1 -1
  291. package/dist/esm/agents/AgentContext.mjs +0 -356
  292. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  293. package/dist/esm/agents/projection.mjs +0 -9
  294. package/dist/esm/agents/projection.mjs.map +1 -1
  295. package/dist/esm/common/constants.mjs +0 -26
  296. package/dist/esm/common/constants.mjs.map +1 -1
  297. package/dist/esm/common/enum.mjs +0 -85
  298. package/dist/esm/common/enum.mjs.map +1 -1
  299. package/dist/esm/events.mjs +0 -14
  300. package/dist/esm/events.mjs.map +1 -1
  301. package/dist/esm/graphs/Graph.mjs +1 -909
  302. package/dist/esm/graphs/Graph.mjs.map +1 -1
  303. package/dist/esm/graphs/MultiAgentGraph.mjs +7 -272
  304. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  305. package/dist/esm/graphs/applyGraphRuntimeConfig.mjs.map +1 -1
  306. package/dist/esm/graphs/createGraph.mjs.map +1 -1
  307. package/dist/esm/hitl/askUserQuestion.mjs +0 -53
  308. package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
  309. package/dist/esm/hitl/askUserQuestions.mjs +0 -20
  310. package/dist/esm/hitl/askUserQuestions.mjs.map +1 -1
  311. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs +0 -6
  312. package/dist/esm/hitl/askUserQuestionsInterrupt.mjs.map +1 -1
  313. package/dist/esm/hooks/HookRegistry.mjs +0 -127
  314. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  315. package/dist/esm/hooks/createToolPolicyHook.mjs +0 -38
  316. package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
  317. package/dist/esm/hooks/createWorkspacePolicyHook.mjs +0 -77
  318. package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
  319. package/dist/esm/hooks/executeHooks.mjs +0 -79
  320. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  321. package/dist/esm/hooks/index.mjs +0 -16
  322. package/dist/esm/hooks/index.mjs.map +1 -1
  323. package/dist/esm/hooks/matchers.mjs +0 -104
  324. package/dist/esm/hooks/matchers.mjs.map +1 -1
  325. package/dist/esm/hooks/types.mjs +0 -8
  326. package/dist/esm/hooks/types.mjs.map +1 -1
  327. package/dist/esm/instrumentation.mjs +0 -14
  328. package/dist/esm/instrumentation.mjs.map +1 -1
  329. package/dist/esm/langfuse.mjs +0 -75
  330. package/dist/esm/langfuse.mjs.map +1 -1
  331. package/dist/esm/langfuseConfig.mjs.map +1 -1
  332. package/dist/esm/langfuseRuntimeContext.mjs +0 -13
  333. package/dist/esm/langfuseRuntimeContext.mjs.map +1 -1
  334. package/dist/esm/langfuseRuntimeScope.mjs +0 -4
  335. package/dist/esm/langfuseRuntimeScope.mjs.map +1 -1
  336. package/dist/esm/langfuseSpanRegistry.mjs +0 -28
  337. package/dist/esm/langfuseSpanRegistry.mjs.map +1 -1
  338. package/dist/esm/langfuseToolOutputTracing.mjs +0 -3
  339. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  340. package/dist/esm/langfuseTraceShaping.mjs +0 -74
  341. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  342. package/dist/esm/llm/anthropic/index.mjs +0 -3
  343. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  344. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  345. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -111
  346. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  347. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +0 -1
  348. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  349. package/dist/esm/llm/anthropic/utils/stream_events.mjs +0 -8
  350. package/dist/esm/llm/anthropic/utils/stream_events.mjs.map +1 -1
  351. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  352. package/dist/esm/llm/bedrock/cachePoints.mjs.map +1 -1
  353. package/dist/esm/llm/bedrock/index.mjs +1 -95
  354. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  355. package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
  356. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +0 -78
  357. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  358. package/dist/esm/llm/bedrock/utils/message_outputs.mjs +0 -24
  359. package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
  360. package/dist/esm/llm/contextOverflowRecovery.mjs +0 -62
  361. package/dist/esm/llm/contextOverflowRecovery.mjs.map +1 -1
  362. package/dist/esm/llm/fake.mjs.map +1 -1
  363. package/dist/esm/llm/google/index.mjs +2 -21
  364. package/dist/esm/llm/google/index.mjs.map +1 -1
  365. package/dist/esm/llm/google/utils/common.mjs +0 -35
  366. package/dist/esm/llm/google/utils/common.mjs.map +1 -1
  367. package/dist/esm/llm/init.mjs +0 -9
  368. package/dist/esm/llm/init.mjs.map +1 -1
  369. package/dist/esm/llm/invoke.mjs +1 -270
  370. package/dist/esm/llm/invoke.mjs.map +1 -1
  371. package/dist/esm/llm/mistral/index.mjs.map +1 -1
  372. package/dist/esm/llm/openai/index.mjs +0 -99
  373. package/dist/esm/llm/openai/index.mjs.map +1 -1
  374. package/dist/esm/llm/openai/streamMetadata.mjs +0 -21
  375. package/dist/esm/llm/openai/streamMetadata.mjs.map +1 -1
  376. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  377. package/dist/esm/llm/openrouter/index.mjs +0 -1
  378. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  379. package/dist/esm/llm/openrouter/toolCache.mjs +0 -6
  380. package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
  381. package/dist/esm/llm/preempt.mjs +0 -75
  382. package/dist/esm/llm/preempt.mjs.map +1 -1
  383. package/dist/esm/llm/providers.mjs.map +1 -1
  384. package/dist/esm/llm/request.mjs +0 -10
  385. package/dist/esm/llm/request.mjs.map +1 -1
  386. package/dist/esm/llm/stream/chunkAdapters.mjs +0 -62
  387. package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -1
  388. package/dist/esm/llm/stream/smoother.mjs +0 -58
  389. package/dist/esm/llm/stream/smoother.mjs.map +1 -1
  390. package/dist/esm/llm/streamLimits.mjs +4 -293
  391. package/dist/esm/llm/streamLimits.mjs.map +1 -1
  392. package/dist/esm/llm/truncation.mjs +0 -36
  393. package/dist/esm/llm/truncation.mjs.map +1 -1
  394. package/dist/esm/llm/vertexai/index.mjs +0 -330
  395. package/dist/esm/llm/vertexai/index.mjs.map +1 -1
  396. package/dist/esm/messages/alternation.mjs +0 -43
  397. package/dist/esm/messages/alternation.mjs.map +1 -1
  398. package/dist/esm/messages/anthropicToolCache.mjs +0 -45
  399. package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
  400. package/dist/esm/messages/assistantPhase.mjs +0 -12
  401. package/dist/esm/messages/assistantPhase.mjs.map +1 -1
  402. package/dist/esm/messages/budget.mjs +0 -9
  403. package/dist/esm/messages/budget.mjs.map +1 -1
  404. package/dist/esm/messages/cache.mjs +0 -172
  405. package/dist/esm/messages/cache.mjs.map +1 -1
  406. package/dist/esm/messages/content.mjs +0 -9
  407. package/dist/esm/messages/content.mjs.map +1 -1
  408. package/dist/esm/messages/contextPruning.mjs +0 -15
  409. package/dist/esm/messages/contextPruning.mjs.map +1 -1
  410. package/dist/esm/messages/contextPruningSettings.mjs +0 -3
  411. package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
  412. package/dist/esm/messages/core.mjs +0 -48
  413. package/dist/esm/messages/core.mjs.map +1 -1
  414. package/dist/esm/messages/format.mjs +1 -345
  415. package/dist/esm/messages/format.mjs.map +1 -1
  416. package/dist/esm/messages/handoffCue.mjs +0 -36
  417. package/dist/esm/messages/handoffCue.mjs.map +1 -1
  418. package/dist/esm/messages/ids.mjs.map +1 -1
  419. package/dist/esm/messages/injected.mjs +0 -33
  420. package/dist/esm/messages/injected.mjs.map +1 -1
  421. package/dist/esm/messages/langchain.mjs +0 -14
  422. package/dist/esm/messages/langchain.mjs.map +1 -1
  423. package/dist/esm/messages/prune.mjs +1 -184
  424. package/dist/esm/messages/prune.mjs.map +1 -1
  425. package/dist/esm/messages/recency.mjs +0 -32
  426. package/dist/esm/messages/recency.mjs.map +1 -1
  427. package/dist/esm/messages/reducer.mjs +0 -30
  428. package/dist/esm/messages/reducer.mjs.map +1 -1
  429. package/dist/esm/messages/tools.mjs +0 -14
  430. package/dist/esm/messages/tools.mjs.map +1 -1
  431. package/dist/esm/openai/index.mjs.map +1 -1
  432. package/dist/esm/prompts/activityLabel.mjs +9 -79
  433. package/dist/esm/prompts/activityLabel.mjs.map +1 -1
  434. package/dist/esm/responses/index.mjs.map +1 -1
  435. package/dist/esm/run.mjs +2 -538
  436. package/dist/esm/run.mjs.map +1 -1
  437. package/dist/esm/session/AgentSession.mjs +1 -17
  438. package/dist/esm/session/AgentSession.mjs.map +1 -1
  439. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  440. package/dist/esm/session/handlers.mjs +0 -7
  441. package/dist/esm/session/handlers.mjs.map +1 -1
  442. package/dist/esm/session/ids.mjs.map +1 -1
  443. package/dist/esm/session/messageSerialization.mjs +0 -4
  444. package/dist/esm/session/messageSerialization.mjs.map +1 -1
  445. package/dist/esm/stream.mjs +1 -93
  446. package/dist/esm/stream.mjs.map +1 -1
  447. package/dist/esm/summarization/index.mjs +0 -27
  448. package/dist/esm/summarization/index.mjs.map +1 -1
  449. package/dist/esm/summarization/node.mjs +0 -273
  450. package/dist/esm/summarization/node.mjs.map +1 -1
  451. package/dist/esm/tools/BashExecutor.mjs +0 -35
  452. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  453. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +0 -24
  454. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  455. package/dist/esm/tools/Calculator.mjs.map +1 -1
  456. package/dist/esm/tools/CodeExecutor.mjs +0 -13
  457. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  458. package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
  459. package/dist/esm/tools/ProgrammaticToolCalling.mjs +0 -101
  460. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  461. package/dist/esm/tools/ReadFile.mjs.map +1 -1
  462. package/dist/esm/tools/SkillTool.mjs +0 -5
  463. package/dist/esm/tools/SkillTool.mjs.map +1 -1
  464. package/dist/esm/tools/SubagentTool.mjs +0 -10
  465. package/dist/esm/tools/SubagentTool.mjs.map +1 -1
  466. package/dist/esm/tools/ToolNode.mjs +6 -1038
  467. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  468. package/dist/esm/tools/ToolSearch.mjs +0 -179
  469. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  470. package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
  471. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  472. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +0 -39
  473. package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
  474. package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
  475. package/dist/esm/tools/eagerEventExecution.mjs +0 -6
  476. package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
  477. package/dist/esm/tools/handlers.mjs +1 -41
  478. package/dist/esm/tools/handlers.mjs.map +1 -1
  479. package/dist/esm/tools/intentArg.mjs +1 -132
  480. package/dist/esm/tools/intentArg.mjs.map +1 -1
  481. package/dist/esm/tools/local/CompileCheckTool.mjs +0 -25
  482. package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
  483. package/dist/esm/tools/local/FileCheckpointer.mjs +0 -23
  484. package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
  485. package/dist/esm/tools/local/LocalCodingTools.mjs +0 -80
  486. package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
  487. package/dist/esm/tools/local/LocalExecutionEngine.mjs +0 -126
  488. package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
  489. package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
  490. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +0 -12
  491. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  492. package/dist/esm/tools/local/attachments.mjs +0 -44
  493. package/dist/esm/tools/local/attachments.mjs.map +1 -1
  494. package/dist/esm/tools/local/bashAst.mjs +0 -16
  495. package/dist/esm/tools/local/bashAst.mjs.map +1 -1
  496. package/dist/esm/tools/local/editStrategies.mjs +0 -14
  497. package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
  498. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  499. package/dist/esm/tools/local/syntaxCheck.mjs +0 -31
  500. package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
  501. package/dist/esm/tools/local/textEncoding.mjs +0 -11
  502. package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
  503. package/dist/esm/tools/local/workspaceFS.mjs +0 -33
  504. package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
  505. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  506. package/dist/esm/tools/schema.mjs +0 -8
  507. package/dist/esm/tools/schema.mjs.map +1 -1
  508. package/dist/esm/tools/search/anthropic.mjs +0 -9
  509. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  510. package/dist/esm/tools/search/content.mjs.map +1 -1
  511. package/dist/esm/tools/search/crw-scraper.mjs +0 -33
  512. package/dist/esm/tools/search/crw-scraper.mjs.map +1 -1
  513. package/dist/esm/tools/search/crw-search.mjs +0 -2
  514. package/dist/esm/tools/search/crw-search.mjs.map +1 -1
  515. package/dist/esm/tools/search/firecrawl.mjs +0 -25
  516. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  517. package/dist/esm/tools/search/format.mjs +0 -30
  518. package/dist/esm/tools/search/format.mjs.map +1 -1
  519. package/dist/esm/tools/search/highlights.mjs +0 -16
  520. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  521. package/dist/esm/tools/search/keenable-scraper.mjs +0 -8
  522. package/dist/esm/tools/search/keenable-scraper.mjs.map +1 -1
  523. package/dist/esm/tools/search/keenable-search.mjs +0 -7
  524. package/dist/esm/tools/search/keenable-search.mjs.map +1 -1
  525. package/dist/esm/tools/search/rerankers.mjs +0 -35
  526. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  527. package/dist/esm/tools/search/schema.mjs +0 -1
  528. package/dist/esm/tools/search/schema.mjs.map +1 -1
  529. package/dist/esm/tools/search/search.mjs +1 -14
  530. package/dist/esm/tools/search/search.mjs.map +1 -1
  531. package/dist/esm/tools/search/serper-scraper.mjs +0 -46
  532. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  533. package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
  534. package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
  535. package/dist/esm/tools/search/tool.mjs +0 -25
  536. package/dist/esm/tools/search/tool.mjs.map +1 -1
  537. package/dist/esm/tools/search/utils.mjs +0 -8
  538. package/dist/esm/tools/search/utils.mjs.map +1 -1
  539. package/dist/esm/tools/skillCatalog.mjs +0 -6
  540. package/dist/esm/tools/skillCatalog.mjs.map +1 -1
  541. package/dist/esm/tools/streamedToolCallSeals.mjs +0 -6
  542. package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
  543. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +0 -2
  544. package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -1
  545. package/dist/esm/tools/subagent/SubagentExecutor.mjs +3 -213
  546. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  547. package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
  548. package/dist/esm/tools/subagent/childGraphConfig.mjs +0 -4
  549. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
  550. package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -1
  551. package/dist/esm/tools/toolOutputReferences.mjs +1 -322
  552. package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
  553. package/dist/esm/types/hitl.mjs +0 -5
  554. package/dist/esm/types/hitl.mjs.map +1 -1
  555. package/dist/esm/utils/callbacks.mjs.map +1 -1
  556. package/dist/esm/utils/errors.mjs +14 -165
  557. package/dist/esm/utils/errors.mjs.map +1 -1
  558. package/dist/esm/utils/events.mjs +0 -10
  559. package/dist/esm/utils/events.mjs.map +1 -1
  560. package/dist/esm/utils/graph.mjs.map +1 -1
  561. package/dist/esm/utils/handlers.mjs +0 -3
  562. package/dist/esm/utils/handlers.mjs.map +1 -1
  563. package/dist/esm/utils/llm.mjs +0 -1
  564. package/dist/esm/utils/llm.mjs.map +1 -1
  565. package/dist/esm/utils/misc.mjs +0 -16
  566. package/dist/esm/utils/misc.mjs.map +1 -1
  567. package/dist/esm/utils/proxy.mjs +0 -26
  568. package/dist/esm/utils/proxy.mjs.map +1 -1
  569. package/dist/esm/utils/run.mjs +0 -6
  570. package/dist/esm/utils/run.mjs.map +1 -1
  571. package/dist/esm/utils/schema.mjs +0 -5
  572. package/dist/esm/utils/schema.mjs.map +1 -1
  573. package/dist/esm/utils/title.mjs +0 -6
  574. package/dist/esm/utils/title.mjs.map +1 -1
  575. package/dist/esm/utils/tokens.mjs +0 -113
  576. package/dist/esm/utils/tokens.mjs.map +1 -1
  577. package/dist/esm/utils/toolContent.mjs +0 -41
  578. package/dist/esm/utils/toolContent.mjs.map +1 -1
  579. package/dist/esm/utils/truncation.mjs +0 -61
  580. package/dist/esm/utils/truncation.mjs.map +1 -1
  581. package/package.json +35 -32
  582. package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +0 -52
  583. package/dist/types/test/mockTools.d.ts +0 -28
  584. package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +0 -40
  585. package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
  586. package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
  587. package/src/__tests__/stream.streamLimits.test.ts +0 -1982
  588. package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
  589. package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
  590. package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
  591. package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
  592. package/src/agents/__tests__/AgentContext.test.ts +0 -2425
  593. package/src/agents/__tests__/projection.test.ts +0 -73
  594. package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
  595. package/src/aggregator.test.ts +0 -1214
  596. package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
  597. package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
  598. package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
  599. package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
  600. package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
  601. package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
  602. package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
  603. package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
  604. package/src/graphs/__tests__/createGraph.test.ts +0 -206
  605. package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
  606. package/src/hooks/__tests__/compactHooks.test.ts +0 -250
  607. package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
  608. package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
  609. package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
  610. package/src/hooks/__tests__/integration.test.ts +0 -337
  611. package/src/hooks/__tests__/matchers.test.ts +0 -238
  612. package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
  613. package/src/hooks/__tests__/toolHooks.test.ts +0 -669
  614. package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
  615. package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
  616. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  617. package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
  618. package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
  619. package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
  620. package/src/llm/anthropic/llm.spec.ts +0 -3394
  621. package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
  622. package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
  623. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
  624. package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
  625. package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
  626. package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
  627. package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
  628. package/src/llm/bedrock/inherited.spec.ts +0 -724
  629. package/src/llm/bedrock/llm.spec.ts +0 -1533
  630. package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
  631. package/src/llm/bedrock/toolCache.test.ts +0 -194
  632. package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
  633. package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
  634. package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
  635. package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
  636. package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
  637. package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
  638. package/src/llm/google/data/gettysburg10.wav +0 -0
  639. package/src/llm/google/data/hotdog.jpg +0 -0
  640. package/src/llm/google/inherited-stream-events.spec.ts +0 -350
  641. package/src/llm/google/llm.spec.ts +0 -1388
  642. package/src/llm/google/streamSmoothing.test.ts +0 -121
  643. package/src/llm/google/utils/common.test.ts +0 -196
  644. package/src/llm/invoke.alternation.test.ts +0 -87
  645. package/src/llm/invoke.handoffCue.test.ts +0 -112
  646. package/src/llm/invoke.streamLimits.test.ts +0 -142
  647. package/src/llm/invoke.test.ts +0 -1198
  648. package/src/llm/mistral/streamSmoothing.test.ts +0 -97
  649. package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
  650. package/src/llm/openai/contentBlocks.test.ts +0 -381
  651. package/src/llm/openai/deepseek.test.ts +0 -747
  652. package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
  653. package/src/llm/openai/inherited-xai.spec.ts +0 -416
  654. package/src/llm/openai/llm.spec.ts +0 -1774
  655. package/src/llm/openai/managedRequests.test.ts +0 -182
  656. package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
  657. package/src/llm/openai/streamMetadata.spec.ts +0 -86
  658. package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
  659. package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
  660. package/src/llm/openai/utils/messages.test.ts +0 -488
  661. package/src/llm/openrouter/reasoning.test.ts +0 -561
  662. package/src/llm/openrouter/toolCache.test.ts +0 -134
  663. package/src/llm/preempt.test.ts +0 -323
  664. package/src/llm/stream/chunkAdapters.test.ts +0 -202
  665. package/src/llm/stream/reassembly.test.ts +0 -241
  666. package/src/llm/stream/smoother.bench.test.ts +0 -155
  667. package/src/llm/stream/smoother.test.ts +0 -519
  668. package/src/llm/streamLimits.test.ts +0 -450
  669. package/src/llm/truncation.test.ts +0 -242
  670. package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
  671. package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
  672. package/src/llm/vertexai/llm.spec.ts +0 -159
  673. package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
  674. package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
  675. package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
  676. package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
  677. package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
  678. package/src/messages/__tests__/observationMasking.test.ts +0 -312
  679. package/src/messages/__tests__/recency.test.ts +0 -267
  680. package/src/messages/__tests__/tools.test.ts +0 -473
  681. package/src/messages/alternation.test.ts +0 -212
  682. package/src/messages/assistantPhase.test.ts +0 -75
  683. package/src/messages/cache.tail.test.ts +0 -533
  684. package/src/messages/cache.test.ts +0 -2166
  685. package/src/messages/content.test.ts +0 -362
  686. package/src/messages/contextPruning.test.ts +0 -184
  687. package/src/messages/ensureThinkingBlock.test.ts +0 -1427
  688. package/src/messages/foldToollessToolBlocks.test.ts +0 -596
  689. package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
  690. package/src/messages/formatAgentMessages.skills.test.ts +0 -513
  691. package/src/messages/formatAgentMessages.steer.test.ts +0 -598
  692. package/src/messages/formatAgentMessages.test.ts +0 -8111
  693. package/src/messages/formatAgentMessages.tools.test.ts +0 -522
  694. package/src/messages/formatMessage.test.ts +0 -693
  695. package/src/messages/handoffCue.test.ts +0 -96
  696. package/src/messages/injected.test.ts +0 -107
  697. package/src/messages/labelContentByAgent.test.ts +0 -962
  698. package/src/messages/reducer.spec.ts +0 -32
  699. package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
  700. package/src/messages/tailCacheConversion.test.ts +0 -161
  701. package/src/openai/__tests__/openai.test.ts +0 -337
  702. package/src/responses/__tests__/responses.test.ts +0 -652
  703. package/src/scripts/abort.ts +0 -157
  704. package/src/scripts/activity-labels/captured.json +0 -56
  705. package/src/scripts/activity-labels/checks.cjs +0 -205
  706. package/src/scripts/activity-labels/corpus.cjs +0 -473
  707. package/src/scripts/activity-labels/report.cjs +0 -203
  708. package/src/scripts/activity-labels/rescore.cjs +0 -102
  709. package/src/scripts/activity-labels/run.ts +0 -705
  710. package/src/scripts/activity-labels/variants.ts +0 -71
  711. package/src/scripts/ant_web_search.ts +0 -159
  712. package/src/scripts/ant_web_search_edge_case.ts +0 -163
  713. package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
  714. package/src/scripts/args.ts +0 -48
  715. package/src/scripts/bedrock-cache-debug.ts +0 -250
  716. package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
  717. package/src/scripts/bedrock-merge-test.ts +0 -107
  718. package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
  719. package/src/scripts/bench-prompt-cache.ts +0 -479
  720. package/src/scripts/caching.ts +0 -132
  721. package/src/scripts/cli.ts +0 -172
  722. package/src/scripts/cli2.ts +0 -133
  723. package/src/scripts/cli3.ts +0 -184
  724. package/src/scripts/cli4.ts +0 -191
  725. package/src/scripts/cli5.ts +0 -191
  726. package/src/scripts/code_exec.ts +0 -214
  727. package/src/scripts/code_exec_files.ts +0 -237
  728. package/src/scripts/code_exec_multi_session.ts +0 -237
  729. package/src/scripts/code_exec_ptc.ts +0 -335
  730. package/src/scripts/code_exec_session.ts +0 -283
  731. package/src/scripts/code_exec_simple.ts +0 -148
  732. package/src/scripts/compare_pi_vs_ours.ts +0 -1259
  733. package/src/scripts/content.ts +0 -139
  734. package/src/scripts/context-overflow-probe.ts +0 -997
  735. package/src/scripts/empty_input.ts +0 -137
  736. package/src/scripts/handoff-test.ts +0 -134
  737. package/src/scripts/local_engine.ts +0 -166
  738. package/src/scripts/local_engine_checkpointer.ts +0 -205
  739. package/src/scripts/local_engine_compile.ts +0 -263
  740. package/src/scripts/local_engine_hooks.ts +0 -226
  741. package/src/scripts/local_engine_image.ts +0 -201
  742. package/src/scripts/local_engine_ptc.ts +0 -151
  743. package/src/scripts/local_engine_workspace.ts +0 -258
  744. package/src/scripts/memory.ts +0 -107
  745. package/src/scripts/multi-agent-chain.ts +0 -332
  746. package/src/scripts/multi-agent-conditional.ts +0 -222
  747. package/src/scripts/multi-agent-document-review-chain.ts +0 -198
  748. package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
  749. package/src/scripts/multi-agent-parallel-start.ts +0 -265
  750. package/src/scripts/multi-agent-parallel.ts +0 -395
  751. package/src/scripts/multi-agent-sequence.ts +0 -217
  752. package/src/scripts/multi-agent-subagent.ts +0 -246
  753. package/src/scripts/multi-agent-supervisor.ts +0 -366
  754. package/src/scripts/multi-agent-test.ts +0 -187
  755. package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
  756. package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
  757. package/src/scripts/parallel-full-metadata-test.ts +0 -241
  758. package/src/scripts/parallel-tools-test.ts +0 -341
  759. package/src/scripts/preempt-probe.ts +0 -330
  760. package/src/scripts/preempt-scenarios.ts +0 -388
  761. package/src/scripts/programmatic_exec.ts +0 -387
  762. package/src/scripts/programmatic_exec_agent.ts +0 -232
  763. package/src/scripts/search.ts +0 -147
  764. package/src/scripts/sequential-full-metadata-test.ts +0 -198
  765. package/src/scripts/session_live.ts +0 -548
  766. package/src/scripts/simple.ts +0 -226
  767. package/src/scripts/single-agent-metadata-test.ts +0 -196
  768. package/src/scripts/stream.ts +0 -141
  769. package/src/scripts/subagent-configurable-inheritance.ts +0 -252
  770. package/src/scripts/subagent-event-driven-debug.ts +0 -190
  771. package/src/scripts/subagent-tools-debug.ts +0 -160
  772. package/src/scripts/subagent-usage-sink.ts +0 -176
  773. package/src/scripts/summarization-recency.ts +0 -462
  774. package/src/scripts/test-custom-prompt-key.ts +0 -145
  775. package/src/scripts/test-handoff-input.ts +0 -170
  776. package/src/scripts/test-handoff-preamble.ts +0 -278
  777. package/src/scripts/test-handoff-steering.ts +0 -430
  778. package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
  779. package/src/scripts/test-parallel-agent-labeling.ts +0 -327
  780. package/src/scripts/test-parallel-handoffs.ts +0 -292
  781. package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
  782. package/src/scripts/test-thinking-handoff.ts +0 -156
  783. package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
  784. package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
  785. package/src/scripts/test-tools-before-handoff.ts +0 -222
  786. package/src/scripts/test_code_api.ts +0 -354
  787. package/src/scripts/thinking-bedrock.ts +0 -160
  788. package/src/scripts/thinking-vertexai.ts +0 -168
  789. package/src/scripts/thinking.ts +0 -172
  790. package/src/scripts/tool_search.ts +0 -153
  791. package/src/scripts/tools.ts +0 -163
  792. package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
  793. package/src/session/__tests__/handlers.test.ts +0 -161
  794. package/src/specs/activity-label-observability.live.test.ts +0 -262
  795. package/src/specs/activity-label-observability.test.ts +0 -167
  796. package/src/specs/activity-label-prompt.test.ts +0 -359
  797. package/src/specs/activity-label-trace-seed.test.ts +0 -47
  798. package/src/specs/activity-phase-label.test.ts +0 -306
  799. package/src/specs/agent-handoffs.live.test.ts +0 -140
  800. package/src/specs/agent-handoffs.test.ts +0 -2465
  801. package/src/specs/anthropic.simple.test.ts +0 -453
  802. package/src/specs/ask-user-question-batch.test.ts +0 -289
  803. package/src/specs/ask-user-questions.live.test.ts +0 -185
  804. package/src/specs/ask-user-questions.test.ts +0 -293
  805. package/src/specs/azure.simple.test.ts +0 -502
  806. package/src/specs/bedrock-toolless.live.test.ts +0 -123
  807. package/src/specs/bedrock-truncation.live.test.ts +0 -191
  808. package/src/specs/cache.simple.test.ts +0 -416
  809. package/src/specs/context-accuracy.live.test.ts +0 -409
  810. package/src/specs/context-overflow-recovery.live.test.ts +0 -213
  811. package/src/specs/context-usage-event.test.ts +0 -117
  812. package/src/specs/context-usage.live.test.ts +0 -297
  813. package/src/specs/custom-event-await.test.ts +0 -304
  814. package/src/specs/deepseek.simple.test.ts +0 -290
  815. package/src/specs/deterministic-trace-id.test.ts +0 -43
  816. package/src/specs/discovered-tools.test.ts +0 -217
  817. package/src/specs/durability-checkpoint.integration.test.ts +0 -243
  818. package/src/specs/graph-subagent.live.test.ts +0 -242
  819. package/src/specs/graph-subagent.test.ts +0 -322
  820. package/src/specs/handoffCue.test.ts +0 -165
  821. package/src/specs/langfuse-callbacks.test.ts +0 -1578
  822. package/src/specs/langfuse-config.test.ts +0 -247
  823. package/src/specs/langfuse-instrumentation.test.ts +0 -393
  824. package/src/specs/langfuse-metadata.test.ts +0 -245
  825. package/src/specs/langfuse-routing.integration.test.ts +0 -844
  826. package/src/specs/langfuse-runtime-context.test.ts +0 -92
  827. package/src/specs/langfuse-span-registry.test.ts +0 -87
  828. package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
  829. package/src/specs/langfuse-trace-shaping.test.ts +0 -591
  830. package/src/specs/moonshot.simple.test.ts +0 -367
  831. package/src/specs/multi-agent-summarization.test.ts +0 -396
  832. package/src/specs/openai.simple.test.ts +0 -315
  833. package/src/specs/openrouter.simple.test.ts +0 -275
  834. package/src/specs/preemptSeal.test.ts +0 -678
  835. package/src/specs/prune.test.ts +0 -3741
  836. package/src/specs/reasoning.test.ts +0 -201
  837. package/src/specs/run-step-timestamps.test.ts +0 -414
  838. package/src/specs/spec.utils.ts +0 -15
  839. package/src/specs/subagent.test.ts +0 -864
  840. package/src/specs/summarization-unit.test.ts +0 -973
  841. package/src/specs/summarization.test.ts +0 -3823
  842. package/src/specs/summarize-prune.test.ts +0 -376
  843. package/src/specs/thinking-handoff.test.ts +0 -621
  844. package/src/specs/thinking-prune.test.ts +0 -827
  845. package/src/specs/token-accounting-e2e.test.ts +0 -1034
  846. package/src/specs/token-accounting-pipeline.test.ts +0 -1008
  847. package/src/specs/token-distribution-edge-case.test.ts +0 -315
  848. package/src/specs/token-memoization.test.ts +0 -40
  849. package/src/specs/tokens.test.ts +0 -1000
  850. package/src/specs/tool-error-resume.test.ts +0 -194
  851. package/src/specs/tool-error.test.ts +0 -198
  852. package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
  853. package/src/stream.dispatch.test.ts +0 -63
  854. package/src/stream.test.ts +0 -144
  855. package/src/summarization/__tests__/aggregator.test.ts +0 -236
  856. package/src/summarization/__tests__/node.test.ts +0 -1996
  857. package/src/summarization/__tests__/trigger.test.ts +0 -149
  858. package/src/summarization/chunkHandler.test.ts +0 -196
  859. package/src/test/mockTools.ts +0 -386
  860. package/src/tools/Calculator.test.ts +0 -278
  861. package/src/tools/__tests__/BashExecutor.test.ts +0 -108
  862. package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
  863. package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
  864. package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
  865. package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
  866. package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
  867. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
  868. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
  869. package/src/tools/__tests__/ReadFile.test.ts +0 -44
  870. package/src/tools/__tests__/SkillTool.test.ts +0 -442
  871. package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
  872. package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
  873. package/src/tools/__tests__/SubagentTool.test.ts +0 -149
  874. package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
  875. package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
  876. package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
  877. package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
  878. package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
  879. package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
  880. package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
  881. package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
  882. package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
  883. package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
  884. package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
  885. package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
  886. package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
  887. package/src/tools/__tests__/directToolHooks.test.ts +0 -700
  888. package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
  889. package/src/tools/__tests__/handlers.test.ts +0 -997
  890. package/src/tools/__tests__/hitl.test.ts +0 -4663
  891. package/src/tools/__tests__/intentArg.test.ts +0 -357
  892. package/src/tools/__tests__/intentCoverage.test.ts +0 -139
  893. package/src/tools/__tests__/localToolNames.test.ts +0 -75
  894. package/src/tools/__tests__/skillCatalog.test.ts +0 -161
  895. package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
  896. package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
  897. package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
  898. package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
  899. package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
  900. package/src/tools/search/content.test.ts +0 -173
  901. package/src/tools/search/crw.test.ts +0 -836
  902. package/src/tools/search/format.test.ts +0 -242
  903. package/src/tools/search/http-agent.test.ts +0 -133
  904. package/src/tools/search/jina-reranker.test.ts +0 -306
  905. package/src/tools/search/keenable-scraper.test.ts +0 -153
  906. package/src/tools/search/keenable.test.ts +0 -183
  907. package/src/tools/search/outcome.test.ts +0 -90
  908. package/src/tools/search/output.md +0 -2775
  909. package/src/tools/search/rag-api-reranker.test.ts +0 -891
  910. package/src/tools/search/source-processing.test.ts +0 -516
  911. package/src/tools/search/tavily.test.ts +0 -965
  912. package/src/tools/search/test.html +0 -884
  913. package/src/tools/search/test.md +0 -643
  914. package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
  915. package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
  916. package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
  917. package/src/utils/__tests__/apportion.test.ts +0 -32
  918. package/src/utils/__tests__/errors.test.ts +0 -270
  919. package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
  920. package/src/utils/__tests__/redactSecrets.test.ts +0 -56
  921. package/src/utils/__tests__/truncation.test.ts +0 -66
  922. package/src/utils/llm.test.ts +0 -18
  923. package/src/utils/proxy.test.ts +0 -176
  924. package/src/utils/toolContent.test.ts +0 -1432
@@ -1 +1 @@
1
- {"version":3,"file":"AgentSession.mjs","names":["isBaseMessage"],"sources":["../../../src/session/AgentSession.ts"],"sourcesContent":["import { MemorySaver } from '@langchain/langgraph';\nimport { HumanMessage, BaseMessage } from '@langchain/core/messages';\nimport type {\n BaseCheckpointSaver,\n CheckpointTuple,\n} from '@langchain/langgraph';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type {\n AgentSessionConfig,\n AgentSessionCheckpointing,\n AgentSessionCheckpointLookupOptions,\n AgentSessionCheckpointReference,\n AgentSessionInput,\n AgentSessionRunOptions,\n AgentSessionRunResult,\n AgentSessionStream,\n AgentSessionStreamEvent,\n SessionBranchOptions,\n SessionCheckpointEntry,\n SessionCompactOptions,\n SessionEntry,\n SessionForkOptions,\n} from './types';\nimport type { HookRegistry } from '@/hooks';\nimport type * as t from '@/types';\nimport { deserializeMessage } from './messageSerialization';\nimport { createSummarizeNode } from '@/summarization/node';\nimport { resolveStreamLimits } from '@/llm/streamLimits';\nimport { JsonlSessionStore } from './JsonlSessionStore';\nimport { AgentContext } from '@/agents/AgentContext';\nimport { ContentTypes, GraphEvents } from '@/common';\nimport { createRunId, createSessionId } from './ids';\nimport { createRunHandlers } from './handlers';\nimport { Run } from '@/run';\n\nfunction isBaseMessage(value: unknown): value is BaseMessage {\n return (\n value instanceof BaseMessage ||\n (value != null &&\n typeof value === 'object' &&\n '_getType' in value &&\n typeof (value as { _getType?: unknown })._getType === 'function')\n );\n}\n\ninterface NormalizedSessionInput {\n messages: BaseMessage[];\n state: t.IState;\n}\n\nfunction normalizeInput(input: AgentSessionInput): NormalizedSessionInput {\n if (typeof input === 'string') {\n const messages = [new HumanMessage(input)];\n return { messages, state: { messages } };\n }\n if (Array.isArray(input)) {\n return { messages: input, state: { messages: input } };\n }\n if (isBaseMessage(input)) {\n const messages = [input];\n return { messages, state: { messages } };\n }\n return { messages: input.messages, state: input };\n}\n\nfunction contentToText(\n content: Array<t.MessageContentComplex | undefined>\n): string {\n const chunks: string[] = [];\n for (const part of content) {\n if (!part) {\n continue;\n }\n if (part.type === ContentTypes.TEXT && typeof part.text === 'string') {\n chunks.push(part.text);\n }\n }\n return chunks.join('');\n}\n\nfunction normalizeConfig(config: AgentSessionConfig): {\n runConfig: t.RunConfig;\n cwd: string;\n sessionPath?: string;\n name?: string;\n ephemeral?: boolean;\n checkpointing?: AgentSessionCheckpointing;\n} {\n if ('runConfig' in config) {\n return {\n runConfig: config.runConfig,\n cwd: config.cwd ?? process.cwd(),\n sessionPath: config.sessionPath,\n name: config.name,\n ephemeral: config.ephemeral,\n checkpointing: config.checkpointing,\n };\n }\n const {\n cwd,\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n sessionId: _sessionId,\n ...runConfig\n } = config;\n return {\n runConfig: {\n ...runConfig,\n runId: config.runId ?? createRunId(),\n },\n cwd: cwd ?? process.cwd(),\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n };\n}\n\nfunction isMissingSessionError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') {\n return false;\n }\n const candidate = error as { code?: string; message?: string };\n if (candidate.code === 'ENOENT') {\n return true;\n }\n return candidate.message?.startsWith('Session not found:') === true;\n}\n\nasync function createStore(params: {\n cwd: string;\n sessionPath?: string;\n name?: string;\n sessionId?: string;\n ephemeral?: boolean;\n}): Promise<JsonlSessionStore | undefined> {\n if (params.ephemeral === true) {\n return undefined;\n }\n if (params.sessionPath != null && params.sessionPath !== '') {\n try {\n return await JsonlSessionStore.openPath(params.sessionPath);\n } catch (error) {\n if (!isMissingSessionError(error)) {\n throw error;\n }\n return JsonlSessionStore.create({\n path: params.sessionPath,\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n }\n }\n return JsonlSessionStore.create({\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n}\n\ntype InitialSummary = NonNullable<t.AgentInputs['initialSummary']>;\n\nfunction mergeInitialSummary(\n existing: InitialSummary | undefined,\n sessionSummary: InitialSummary | undefined\n): InitialSummary | undefined {\n if (!existing) {\n return sessionSummary;\n }\n if (!sessionSummary) {\n return existing;\n }\n if (existing.text === sessionSummary.text) {\n return existing;\n }\n return {\n text: `${existing.text}\\n\\n${sessionSummary.text}`,\n tokenCount: existing.tokenCount + sessionSummary.tokenCount,\n };\n}\n\nfunction applyInitialSummaryToAgent(\n agent: t.AgentInputs,\n initialSummary: InitialSummary | undefined\n): t.AgentInputs {\n const merged = mergeInitialSummary(agent.initialSummary, initialSummary);\n return merged ? { ...agent, initialSummary: merged } : agent;\n}\n\nfunction applyInitialSummaryToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined\n): t.RunConfig['graphConfig'] {\n if (!initialSummary) {\n return graphConfig;\n }\n if ('agents' in graphConfig) {\n return {\n ...graphConfig,\n agents: graphConfig.agents.map((agent) =>\n applyInitialSummaryToAgent(agent, initialSummary)\n ),\n };\n }\n return {\n ...graphConfig,\n initialSummary: mergeInitialSummary(\n graphConfig.initialSummary,\n initialSummary\n ),\n };\n}\n\ninterface SessionCheckpointingState {\n enabled: boolean;\n checkpointer?: BaseCheckpointSaver;\n disableGraphCheckpointer?: boolean;\n}\n\nfunction isCheckpointSaver(value: unknown): value is BaseCheckpointSaver {\n if (value == null || typeof value !== 'object') {\n return false;\n }\n const candidate = value as Partial<BaseCheckpointSaver>;\n return (\n typeof candidate.getTuple === 'function' &&\n typeof candidate.list === 'function' &&\n typeof candidate.put === 'function' &&\n typeof candidate.putWrites === 'function' &&\n typeof candidate.deleteThread === 'function'\n );\n}\n\nfunction getGraphCheckpointer(\n graphConfig: t.RunConfig['graphConfig']\n): BaseCheckpointSaver | undefined {\n const checkpointer = graphConfig.compileOptions?.checkpointer;\n return isCheckpointSaver(checkpointer) ? checkpointer : undefined;\n}\n\nfunction createCheckpointingState(\n runConfig: t.RunConfig,\n checkpointing: AgentSessionCheckpointing | undefined\n): SessionCheckpointingState {\n const graphCheckpointer = getGraphCheckpointer(runConfig.graphConfig);\n if (checkpointing === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n if (typeof checkpointing === 'object') {\n if (checkpointing.enabled === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n return {\n enabled: true,\n checkpointer:\n checkpointing.checkpointer ?? graphCheckpointer ?? new MemorySaver(),\n };\n }\n if (checkpointing === true || runConfig.humanInTheLoop?.enabled === true) {\n return {\n enabled: true,\n checkpointer: graphCheckpointer ?? new MemorySaver(),\n };\n }\n return {\n enabled: graphCheckpointer != null,\n checkpointer: graphCheckpointer,\n };\n}\n\nfunction removeCheckpointerFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig']\n): t.RunConfig['graphConfig'] {\n if (graphConfig.compileOptions?.checkpointer == null) {\n return graphConfig;\n }\n const { checkpointer: _checkpointer, ...compileOptions } =\n graphConfig.compileOptions;\n return {\n ...graphConfig,\n compileOptions,\n };\n}\n\nfunction applyCheckpointerToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointer: BaseCheckpointSaver | undefined\n): t.RunConfig['graphConfig'] {\n if (!checkpointer) {\n return graphConfig;\n }\n if (graphConfig.compileOptions?.checkpointer === checkpointer) {\n return graphConfig;\n }\n return {\n ...graphConfig,\n compileOptions: {\n ...(graphConfig.compileOptions ?? {}),\n checkpointer,\n },\n };\n}\n\nfunction applyCheckpointingToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointing: SessionCheckpointingState\n): t.RunConfig['graphConfig'] {\n if (checkpointing.disableGraphCheckpointer === true) {\n return removeCheckpointerFromGraphConfig(graphConfig);\n }\n return applyCheckpointerToGraphConfig(\n graphConfig,\n checkpointing.checkpointer\n );\n}\n\nfunction getConfigString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n const value = configurable?.[key];\n return typeof value === 'string' && value !== '' ? value : undefined;\n}\n\nfunction getConfigOptionalString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n if (\n configurable == null ||\n !Object.prototype.hasOwnProperty.call(configurable, key)\n ) {\n return undefined;\n }\n const value = configurable[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction createCallerConfig(\n threadId: string,\n options: AgentSessionRunOptions\n): RunnableConfig & { version: 'v1' | 'v2' } {\n return {\n recursionLimit: 50,\n ...(options.config ?? {}),\n configurable: {\n ...(options.config?.configurable ?? {}),\n thread_id: threadId,\n },\n version: options.config?.version ?? 'v2',\n };\n}\n\nfunction createCheckpointLookupConfig(config: RunnableConfig): RunnableConfig {\n const threadId = getConfigString(config, 'thread_id');\n if (threadId == null) {\n return config;\n }\n const checkpointNs = getConfigString(config, 'checkpoint_ns') ?? '';\n const checkpointId = getConfigString(config, 'checkpoint_id');\n return {\n configurable: {\n ...config.configurable,\n thread_id: threadId,\n checkpoint_ns: checkpointNs,\n ...(checkpointId != null ? { checkpoint_id: checkpointId } : {}),\n },\n };\n}\n\nfunction applyCheckpointReferenceToConfig<\n TConfig extends RunnableConfig & { version?: 'v1' | 'v2' },\n>(\n config: TConfig,\n checkpoint:\n | {\n checkpointId?: string;\n checkpointNs?: string;\n }\n | undefined,\n options?: { overwrite?: boolean }\n): TConfig {\n if (\n checkpoint?.checkpointId == null ||\n checkpoint.checkpointId === '' ||\n (options?.overwrite !== true &&\n getConfigString(config, 'checkpoint_id') != null)\n ) {\n return config;\n }\n return {\n ...config,\n configurable: {\n ...config.configurable,\n checkpoint_id: checkpoint.checkpointId,\n checkpoint_ns: checkpoint.checkpointNs ?? '',\n },\n };\n}\n\nfunction getStoredCheckpointForConfig(\n store: JsonlSessionStore | undefined,\n threadId: string,\n config: RunnableConfig\n): SessionCheckpointEntry | undefined {\n const requestedCheckpointNs = getConfigOptionalString(\n config,\n 'checkpoint_ns'\n );\n if (requestedCheckpointNs == null) {\n return store?.getLatestCheckpoint(threadId);\n }\n const checkpoints = store?.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 if ((checkpoint.data.checkpointNs ?? '') === requestedCheckpointNs) {\n return checkpoint;\n }\n }\n return undefined;\n}\n\nfunction createLatestCheckpointLookupConfig(\n config: RunnableConfig\n): RunnableConfig {\n const lookup = createCheckpointLookupConfig(config);\n const { checkpoint_id: _checkpointId, ...configurable } =\n lookup.configurable ?? {};\n return { configurable };\n}\n\nasync function getLatestCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n if (!checkpointer) {\n return undefined;\n }\n const lookupConfig = createLatestCheckpointLookupConfig(config);\n const tuple = await checkpointer.getTuple(lookupConfig);\n if (tuple) {\n return tuple;\n }\n for await (const checkpoint of checkpointer.list(lookupConfig, {\n limit: 1,\n })) {\n return checkpoint;\n }\n return undefined;\n}\n\nasync function getSelectedCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n return checkpointer?.getTuple(createCheckpointLookupConfig(config));\n}\n\nfunction createCheckpointReference(params: {\n threadId: string;\n tuple: CheckpointTuple;\n}): AgentSessionCheckpointReference {\n const checkpointNs =\n getConfigString(params.tuple.config, 'checkpoint_ns') ?? '';\n const parentCheckpointId = getConfigString(\n params.tuple.parentConfig,\n 'checkpoint_id'\n );\n return {\n provider: 'langgraph',\n threadId: params.threadId,\n checkpointId: params.tuple.checkpoint.id,\n checkpointNs,\n ...(parentCheckpointId != null ? { parentCheckpointId } : {}),\n };\n}\n\nfunction createSessionRunState(entries: SessionEntry[]): {\n messages: BaseMessage[];\n initialSummary?: InitialSummary;\n} {\n const messages: BaseMessage[] = [];\n let initialSummary: InitialSummary | undefined;\n for (const entry of entries) {\n if (entry.type === 'summary') {\n initialSummary = {\n text: entry.data.text,\n tokenCount:\n typeof entry.data.tokenCount === 'number' &&\n Number.isFinite(entry.data.tokenCount)\n ? entry.data.tokenCount\n : 0,\n };\n messages.length = 0;\n continue;\n }\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n }\n }\n return { messages, initialSummary };\n}\n\nfunction isMessageEntry(\n entry: SessionEntry\n): entry is Extract<SessionEntry, { type: 'message' }> {\n return entry.type === 'message';\n}\n\nfunction getSessionBranchTarget(\n store: JsonlSessionStore,\n entryId: string,\n position: 'before' | 'at'\n): SessionEntry | undefined {\n const entry = store.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 : store.getEntry(entry.parentId);\n}\n\nfunction getAbandonedPathForBranch(\n store: JsonlSessionStore,\n previousLeafId: string | null,\n targetLeafId: string | null\n): SessionEntry[] {\n const previousPath = store.getPath(previousLeafId ?? undefined);\n if (previousPath.length === 0) {\n return [];\n }\n const targetPath = targetLeafId == null ? [] : store.getPath(targetLeafId);\n const maxSharedLength = Math.min(previousPath.length, targetPath.length);\n let sharedLength = 0;\n while (\n sharedLength < maxSharedLength &&\n previousPath[sharedLength].id === targetPath[sharedLength].id\n ) {\n sharedLength++;\n }\n return previousPath.slice(sharedLength);\n}\n\nfunction createAgentInputFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined,\n retainRecentTurns: number | undefined,\n instructions: string | undefined\n): t.AgentInputs {\n let agent: t.AgentInputs;\n if ('agents' in graphConfig) {\n if (graphConfig.agents.length === 0) {\n throw new Error('Cannot compact a session with no agents');\n }\n agent = graphConfig.agents[0];\n } else {\n const {\n type: _type,\n llmConfig,\n signal: _signal,\n tools = [],\n ...agentInputs\n } = graphConfig;\n const { provider, ...clientOptions } = llmConfig;\n agent = {\n ...agentInputs,\n tools,\n provider,\n clientOptions,\n agentId: 'default',\n };\n }\n const summarizationConfig: t.SummarizationConfig = {\n ...(agent.summarizationConfig ?? {}),\n ...(instructions != null && instructions !== ''\n ? { prompt: instructions }\n : {}),\n retainRecent: {\n ...(agent.summarizationConfig?.retainRecent ?? {}),\n ...(retainRecentTurns != null ? { turns: retainRecentTurns } : {}),\n },\n };\n return {\n ...applyInitialSummaryToAgent(agent, initialSummary),\n summarizationEnabled: true,\n summarizationConfig,\n };\n}\n\nfunction createManualCompactGraph(params: {\n runId: string;\n customHandlers?: Record<string, t.EventHandler>;\n hooks?: HookRegistry;\n /** Session run-level stream limits, so manual compaction honors them. */\n streamLimits?: t.StreamLimits;\n}): {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n closeOpenSteps: (\n status: Exclude<t.RunStepStatus, 'in_progress'>\n ) => Promise<void>;\n} {\n const contentData: t.RunStep[] = [];\n const contentIndexMap = new Map<string, number>();\n /** Stamps the terminal state and publishes the single terminal event. */\n const closeStep = async (\n runStep: t.RunStep,\n status: Exclude<t.RunStepStatus, 'in_progress'>,\n at: number\n ): Promise<void> => {\n if (runStep.status !== 'in_progress') {\n return;\n }\n runStep.status = status;\n if (status === 'completed') {\n runStep.completed_at = at;\n } else if (status === 'cancelled') {\n runStep.cancelled_at = at;\n } else {\n runStep.failed_at = at;\n }\n const closedEvent: t.RunStepClosedEvent = {\n id: runStep.id,\n index: runStep.index,\n type: runStep.type,\n status,\n closed_at: at,\n };\n if (runStep.created_at != null) {\n closedEvent.created_at = runStep.created_at;\n }\n if (runStep.runId != null) {\n closedEvent.runId = runStep.runId;\n }\n await params.customHandlers?.[GraphEvents.ON_RUN_STEP_CLOSED]?.handle(\n GraphEvents.ON_RUN_STEP_CLOSED,\n closedEvent\n );\n };\n const result: {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n closeOpenSteps: (\n status: Exclude<t.RunStepStatus, 'in_progress'>\n ) => Promise<void>;\n } = {\n /**\n * Terminal sweep for compaction, which runs outside `Run.processStream`\n * and so has no stream-level equivalent: a summarization model that\n * rejects, aborts, or trips a stream limit after the step was published\n * would otherwise strand observers with a permanently open step.\n */\n closeOpenSteps: async (status): Promise<void> => {\n const closedAt = Date.now();\n for (const runStep of contentData) {\n try {\n await closeStep(runStep, status, closedAt);\n } catch (_e) {\n /** Delivery failure for one step must not halt the sweep */\n }\n }\n },\n graph: {\n contentData,\n contentIndexMap,\n runId: params.runId,\n isMultiAgent: false,\n hookRegistry: params.hooks,\n streamLimits: resolveStreamLimits(params.streamLimits),\n dispatchRunStep: async (runStep): Promise<void> => {\n runStep.created_at ??= Date.now();\n runStep.status ??= 'in_progress';\n contentData.push(runStep);\n contentIndexMap.set(runStep.id, runStep.index);\n await params.customHandlers?.[GraphEvents.ON_RUN_STEP]?.handle(\n GraphEvents.ON_RUN_STEP,\n runStep\n );\n },\n closeRunStep: async (stepId, status): Promise<void> => {\n const stepIndex = contentIndexMap.get(stepId);\n const runStep =\n stepIndex === undefined ? undefined : contentData[stepIndex];\n if (runStep == null) {\n return;\n }\n await closeStep(runStep, status, Date.now());\n },\n dispatchRunStepCompleted: async (stepId, completed): Promise<void> => {\n const completedAt = Date.now();\n const stepIndex = contentIndexMap.get(stepId);\n const runStep =\n stepIndex === undefined ? undefined : contentData[stepIndex];\n const resultWithStep = {\n ...completed,\n id: stepId,\n index: runStep?.index ?? 0,\n completed_at: completedAt,\n };\n if (completed.type === 'summary') {\n result.completedSummary = completed.summary;\n }\n await params.customHandlers?.[\n GraphEvents.ON_RUN_STEP_COMPLETED\n ]?.handle(GraphEvents.ON_RUN_STEP_COMPLETED, {\n result: resultWithStep,\n } as unknown as Parameters<t.EventHandler['handle']>[1]);\n if (runStep == null) {\n return;\n }\n await closeStep(runStep, 'completed', completedAt);\n },\n },\n };\n return result;\n}\n\nfunction getSummaryText(summary: t.SummaryContentBlock | undefined): string {\n const firstBlock = summary?.content?.[0];\n return firstBlock != null &&\n typeof firstBlock === 'object' &&\n 'text' in firstBlock &&\n typeof firstBlock.text === 'string'\n ? firstBlock.text\n : '';\n}\n\nfunction getSummaryTokenCount(\n summary: t.SummaryContentBlock | undefined\n): number {\n return typeof summary?.tokenCount === 'number' &&\n Number.isFinite(summary.tokenCount)\n ? summary.tokenCount\n : 0;\n}\n\nfunction filterRemoveMessages(messages: BaseMessage[]): BaseMessage[] {\n return messages.filter((message) => message._getType() !== 'remove');\n}\n\nclass LiveAgentSessionStream implements AgentSessionStream {\n private resultPromise: Promise<AgentSessionRunResult> | undefined;\n private readonly events: AgentSessionStreamEvent[] = [];\n private readonly waiters: Array<{\n resolve: (result: IteratorResult<AgentSessionStreamEvent>) => void;\n reject: (error: unknown) => void;\n }> = [];\n private closed = false;\n private failed = false;\n private error: unknown;\n\n setResultPromise(resultPromise: Promise<AgentSessionRunResult>): void {\n this.resultPromise = resultPromise;\n }\n\n push(event: AgentSessionStreamEvent): void {\n if (this.closed) {\n return;\n }\n const waiter = this.waiters.shift();\n if (waiter) {\n waiter.resolve({ value: event, done: false });\n return;\n }\n this.events.push(event);\n }\n\n complete(): void {\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n }\n\n fail(error: unknown): void {\n this.error = error;\n this.failed = true;\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.reject(error);\n }\n }\n\n private nextEvent(): Promise<IteratorResult<AgentSessionStreamEvent>> {\n const event = this.events.shift();\n if (event !== undefined) {\n return Promise.resolve({ value: event, done: false });\n }\n if (this.failed) {\n return Promise.reject(this.error);\n }\n if (this.closed) {\n return Promise.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<AgentSessionStreamEvent> {\n for (;;) {\n const next = await this.nextEvent();\n if (next.done === true) {\n return;\n }\n yield next.value;\n }\n }\n\n async *toTextStream(): AsyncIterable<string> {\n for await (const event of this) {\n if (event.type !== 'message.delta' || event.data == null) {\n continue;\n }\n const data = event.data;\n if (typeof data === 'object' && !Array.isArray(data)) {\n const delta = data.delta;\n if (\n delta != null &&\n typeof delta === 'object' &&\n !Array.isArray(delta)\n ) {\n const content = delta.content;\n if (Array.isArray(content)) {\n for (const part of content) {\n if (\n part != null &&\n typeof part === 'object' &&\n !Array.isArray(part) &&\n typeof part.text === 'string'\n ) {\n yield part.text;\n }\n }\n }\n }\n }\n }\n }\n\n finalResult(): Promise<AgentSessionRunResult> {\n if (!this.resultPromise) {\n return Promise.reject(new Error('Session stream has not started'));\n }\n return this.resultPromise;\n }\n}\n\nexport class AgentSession {\n private runConfig: t.RunConfig;\n private store: JsonlSessionStore | undefined;\n private calibrationRatio: number | undefined;\n private checkpointing: SessionCheckpointingState;\n cwd: string;\n threadId: string;\n\n private constructor(params: {\n runConfig: t.RunConfig;\n cwd: string;\n threadId: string;\n checkpointing: SessionCheckpointingState;\n store?: JsonlSessionStore;\n }) {\n this.runConfig = params.runConfig;\n this.cwd = params.cwd;\n this.threadId = params.threadId;\n this.store = params.store;\n this.checkpointing = params.checkpointing;\n }\n\n static async create(config: AgentSessionConfig): Promise<AgentSession> {\n const normalized = normalizeConfig(config);\n const explicitSessionId =\n 'sessionId' in config && typeof config.sessionId === 'string'\n ? config.sessionId\n : undefined;\n const store = await createStore({\n cwd: normalized.cwd,\n sessionPath: normalized.sessionPath,\n name: normalized.name,\n sessionId: explicitSessionId,\n ephemeral: normalized.ephemeral,\n });\n return new AgentSession({\n runConfig: normalized.runConfig,\n cwd: normalized.cwd,\n threadId: store?.header.id ?? explicitSessionId ?? createSessionId(),\n checkpointing: createCheckpointingState(\n normalized.runConfig,\n normalized.checkpointing\n ),\n store,\n });\n }\n\n get sessionPath(): string | undefined {\n return this.store?.path;\n }\n\n getSessionStore(): JsonlSessionStore | undefined {\n return this.store;\n }\n\n getCheckpointer(): BaseCheckpointSaver | undefined {\n return this.checkpointing.checkpointer;\n }\n\n async getLatestCheckpoint(\n options: AgentSessionCheckpointLookupOptions = {}\n ): Promise<AgentSessionCheckpointReference | undefined> {\n const threadId = options.threadId ?? this.threadId;\n const baseConfig = options.config ?? {};\n const config = createCheckpointLookupConfig({\n ...baseConfig,\n configurable: {\n ...(baseConfig.configurable ?? {}),\n thread_id: threadId,\n ...(options.checkpointNs != null\n ? { checkpoint_ns: options.checkpointNs }\n : {}),\n },\n });\n const tuple = await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple ? createCheckpointReference({ threadId, tuple }) : undefined;\n }\n\n private async hasCheckpointState(config: RunnableConfig): Promise<boolean> {\n if (!this.checkpointing.enabled) {\n return false;\n }\n const tuple = await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple != null;\n }\n\n private async recordCheckpoint(params: {\n source: 'run' | 'resume';\n runId: string;\n threadId: string;\n config: RunnableConfig;\n checkpointId?: string;\n checkpointNs?: string;\n }): Promise<void> {\n if (!this.checkpointing.enabled) {\n return;\n }\n const checkpointConfig = applyCheckpointReferenceToConfig(\n params.config,\n {\n checkpointId: params.checkpointId,\n checkpointNs: params.checkpointNs,\n },\n { overwrite: true }\n );\n const tuple =\n params.checkpointId != null && params.checkpointId !== ''\n ? await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n checkpointConfig\n )\n : await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n params.config\n );\n if (!tuple) {\n return;\n }\n const reference = createCheckpointReference({\n threadId: params.threadId,\n tuple,\n });\n await this.store?.appendCheckpoint({\n source: params.source,\n runId: params.runId,\n threadId: params.threadId,\n checkpointId: reference.checkpointId,\n checkpointNs: reference.checkpointNs,\n parentCheckpointId: reference.parentCheckpointId,\n });\n }\n\n private async recordChildCheckpointThreads(params: {\n source: 'run' | 'resume';\n runId: string;\n run: Run<t.IState>;\n }): Promise<void> {\n if (!this.checkpointing.enabled || this.store == null) {\n return;\n }\n const recordedThreadIds = new Set(\n this.store.getCheckpoints().map((checkpoint) => checkpoint.data.threadId)\n );\n for (const threadId of params.run.getChildCheckpointThreadIds()) {\n if (recordedThreadIds.has(threadId)) {\n continue;\n }\n recordedThreadIds.add(threadId);\n await this.store.appendCheckpoint({\n source: params.source,\n runId: params.runId,\n threadId,\n });\n }\n }\n\n private getCheckpointThreadIds(): string[] {\n const threadIds = new Set<string>([this.threadId]);\n for (const checkpoint of this.store?.getCheckpoints() ?? []) {\n threadIds.add(checkpoint.data.threadId);\n }\n return [...threadIds];\n }\n\n private async resetCheckpointThreads(reason: string): Promise<void> {\n const checkpointer = this.checkpointing.checkpointer;\n if (!this.checkpointing.enabled || checkpointer == null) {\n return;\n }\n for (const threadId of this.getCheckpointThreadIds()) {\n await checkpointer.deleteThread(threadId);\n await this.store?.appendCheckpoint({\n source: 'reset',\n threadId,\n reason,\n });\n }\n }\n\n private async runInternal(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {},\n onEvent?: (event: AgentSessionStreamEvent) => void\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const normalizedInput = normalizeInput(input);\n const inputMessages = normalizedInput.messages;\n const callerConfig = createCallerConfig(threadId, options);\n const useCheckpointState = await this.hasCheckpointState(callerConfig);\n let parentId = this.store?.getLeafEntry()?.id ?? null;\n if (isSessionThread) {\n for (const message of inputMessages) {\n const entry = await this.store?.appendMessage(message, parentId);\n parentId = entry?.id ?? parentId;\n }\n }\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n onEvent,\n });\n const emitTerminalEvent = (\n event: Omit<\n AgentSessionStreamEvent,\n 'sequence' | 'runId' | 'threadId' | 'timestamp'\n >\n ): void => {\n const streamEvent: AgentSessionStreamEvent = {\n ...event,\n sequence: handlerResult.events.length,\n runId,\n threadId,\n timestamp: new Date().toISOString(),\n };\n handlerResult.events.push(streamEvent);\n onEvent?.(streamEvent);\n };\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n let run: Run<t.IState> | undefined;\n try {\n const runConfig: t.RunConfig = {\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n };\n run = await Run.create<t.IState>(runConfig);\n let messages = inputMessages;\n if (!useCheckpointState && sessionState.messages.length > 0) {\n messages = sessionState.messages;\n }\n const content = await run.processStream(\n { ...normalizedInput.state, messages },\n callerConfig,\n options.streamOptions\n );\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n emitTerminalEvent({ type: 'run.interrupted' });\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n emitTerminalEvent({ type: 'run.halted', data: haltedReason });\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n emitTerminalEvent({ type: 'run.completed' });\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n await this.recordChildCheckpointThreads({\n source: 'run',\n runId,\n run,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n emitTerminalEvent({\n type: 'run.failed',\n data: error instanceof Error ? error.message : String(error),\n });\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n });\n if (run != null) {\n await this.recordChildCheckpointThreads({\n source: 'run',\n runId,\n run,\n });\n }\n throw error;\n }\n }\n\n async run(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n return this.runInternal(input, options);\n }\n\n stream(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): AgentSessionStream {\n const stream = new LiveAgentSessionStream();\n const resultPromise = this.runInternal(input, options, (event) => {\n stream.push(event);\n }).then(\n (result) => {\n stream.complete();\n return result;\n },\n (error: unknown) => {\n stream.fail(error);\n throw error;\n }\n );\n stream.setResultPromise(resultPromise);\n return stream;\n }\n\n async resumeSession(pathOrId?: string): Promise<AgentSession> {\n if (pathOrId == null || pathOrId === '') {\n const sessions = await JsonlSessionStore.list(this.cwd);\n if (sessions.length === 0) {\n throw new Error(`No sessions found for ${this.cwd}`);\n }\n this.store = await JsonlSessionStore.open(sessions[0].path);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n this.store = await JsonlSessionStore.open(pathOrId);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot clone an ephemeral session');\n }\n const store = await this.store.clone(options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot fork an ephemeral session');\n }\n const store = await this.store.fork(entryId, options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<void> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot branch an ephemeral session');\n }\n const target = getSessionBranchTarget(\n store,\n entryId,\n options.position ?? 'at'\n );\n const previousLeafId = store.getLeafEntry()?.id ?? null;\n let leafId = target?.id ?? null;\n const summarizeAbandoned = options.summarizeAbandoned;\n if (summarizeAbandoned !== undefined && summarizeAbandoned !== false) {\n const instructions =\n typeof summarizeAbandoned === 'object'\n ? summarizeAbandoned.instructions\n : undefined;\n const abandonedPath = getAbandonedPathForBranch(\n store,\n previousLeafId,\n leafId\n );\n const summary = await this.compactActivePath(\n { instructions, retainRecentTurns: 0 },\n leafId,\n abandonedPath\n );\n leafId = summary?.id ?? leafId;\n }\n if (leafId === previousLeafId) {\n return;\n }\n await store.setLeaf(leafId);\n await this.resetCheckpointThreads('branch');\n }\n\n async compact(options: SessionCompactOptions = {}): Promise<void> {\n const summary = await this.compactActivePath(options, null);\n if (summary) {\n await this.resetCheckpointThreads('compact');\n }\n }\n\n private async compactActivePath(\n options: SessionCompactOptions = {},\n parentId: string | null,\n path?: SessionEntry[]\n ): Promise<Extract<SessionEntry, { type: 'summary' }> | undefined> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot compact an ephemeral session');\n }\n const activePath = path ?? store.getPath();\n const sessionState = createSessionRunState(activePath);\n const messageEntries = activePath.filter(isMessageEntry);\n if (sessionState.messages.length === 0) {\n return undefined;\n }\n const compactRunId = createRunId();\n const agentContext = AgentContext.fromConfig(\n createAgentInputFromGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary,\n options.retainRecentTurns,\n options.instructions\n ),\n this.runConfig.tokenCounter\n );\n const graph = createManualCompactGraph({\n runId: compactRunId,\n customHandlers: this.runConfig.customHandlers,\n hooks: this.runConfig.hooks,\n streamLimits: this.runConfig.streamLimits,\n });\n const summarizeNode = createSummarizeNode({\n agentContext,\n graph: graph.graph,\n generateStepId: (stepKey): [string, number] => [\n `${stepKey}-${compactRunId}`,\n graph.graph.contentData.length,\n ],\n });\n let summarizedState;\n try {\n summarizedState = await summarizeNode(\n {\n messages: sessionState.messages,\n summarizationRequest: {\n remainingContextTokens: agentContext.maxContextTokens ?? 0,\n agentId: agentContext.agentId,\n },\n },\n {\n configurable: { thread_id: this.threadId },\n metadata: { run_id: compactRunId },\n }\n );\n } catch (error) {\n /**\n * `failed`, not `cancelled`: manual compaction is invoked without a\n * caller abort signal, so there is no cancellation source to\n * corroborate against. An error that merely carries the `AbortError`\n * name is an unexpected failure here, and it propagates to the caller\n * either way.\n */\n await graph.closeOpenSteps('failed').catch(() => {\n /** the sweep must never mask the summarization failure */\n });\n throw error;\n }\n await graph.closeOpenSteps('completed');\n const completedSummaryText = getSummaryText(graph.completedSummary);\n const contextSummaryText = agentContext.getSummaryText();\n let summaryText = completedSummaryText;\n if (summaryText === '' && contextSummaryText != null) {\n summaryText = contextSummaryText;\n }\n if (summaryText === '') {\n return undefined;\n }\n const retainedMessages = filterRemoveMessages(\n summarizedState.messages ?? []\n );\n let retainedEntryIds: string[] = [];\n if (retainedMessages.length > 0) {\n retainedEntryIds = messageEntries\n .slice(-retainedMessages.length)\n .map((entry) => entry.id);\n }\n const retainedEntryIdSet = new Set(retainedEntryIds);\n const summarized = messageEntries.filter(\n (entry) => !retainedEntryIdSet.has(entry.id)\n );\n const summary = await store.appendEntryForCompaction({\n text: summaryText,\n tokenCount: getSummaryTokenCount(graph.completedSummary),\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n instructions: options.instructions,\n parentId,\n });\n let retainedParentId: string | null = summary.id;\n for (const message of retainedMessages) {\n const retainedMessage = await store.appendMessage(\n message,\n retainedParentId\n );\n retainedParentId = retainedMessage.id;\n }\n await store.appendCompactionEntry({\n summaryEntryId: summary.id,\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n });\n return summary;\n }\n\n async resumeInterrupt<TResume>(\n resumeValue: TResume,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const baseCallerConfig = createCallerConfig(threadId, options);\n const callerConfig = applyCheckpointReferenceToConfig(\n baseCallerConfig,\n getStoredCheckpointForConfig(this.store, threadId, baseCallerConfig)?.data\n );\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n });\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n let run: Run<t.IState> | undefined;\n try {\n run = await Run.create<t.IState>({\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n });\n const content = await run.resume(resumeValue, callerConfig);\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n await this.recordChildCheckpointThreads({\n source: 'resume',\n runId,\n run,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n });\n if (run != null) {\n await this.recordChildCheckpointThreads({\n source: 'resume',\n runId,\n run,\n });\n }\n throw error;\n }\n }\n}\n\nexport function createAgentSession(\n config: AgentSessionConfig\n): Promise<AgentSession> {\n return AgentSession.create(config);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AgentSession.mjs","names":["isBaseMessage"],"sources":["../../../src/session/AgentSession.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonlSessionStore.mjs","names":[],"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
+ {"version":3,"file":"JsonlSessionStore.mjs","names":[],"sources":["../../../src/session/JsonlSessionStore.ts"],"mappings":"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"}
@@ -57,13 +57,6 @@ function createRunHandlers(params) {
57
57
  const toolEndHandler = new ToolEndHandler();
58
58
  const modelEndHandler = new ModelEndHandler();
59
59
  emitEvent(createEvent("run.started"));
60
- /**
61
- * Forwards to the host's own handler, so it inherits that handler's
62
- * capability. Branding matters because this wrapper is installed on EVERY
63
- * session run and merged last: without it, a host that registered
64
- * `new ChatModelStreamHandler()` would silently lose the sealing opt-out
65
- * that registration is supposed to buy.
66
- */
67
60
  const streamWrapper = { handle: async (event, data, metadata, graph) => {
68
61
  await callUserHandler({
69
62
  userHandlers: params.userHandlers,
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.mjs","names":[],"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 {\n createContentAggregator,\n dispatchesChatModelStream,\n SDK_STREAM_DISPATCH,\n} from '@/stream';\nimport { ModelEndHandler, ToolEndHandler } from '@/events';\nimport { toJsonValue } from './messageSerialization';\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 /**\n * Forwards to the host's own handler, so it inherits that handler's\n * capability. Branding matters because this wrapper is installed on EVERY\n * session run and merged last: without it, a host that registered\n * `new ChatModelStreamHandler()` would silently lose the sealing opt-out\n * that registration is supposed to buy.\n */\n const streamWrapper: t.EventHandler = {\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 if (\n dispatchesChatModelStream(\n params.userHandlers?.[GraphEvents.CHAT_MODEL_STREAM]\n )\n ) {\n Object.defineProperty(streamWrapper, SDK_STREAM_DISPATCH, { value: true });\n }\n\n const handlers: Record<string, t.EventHandler> = {\n [GraphEvents.CHAT_MODEL_STREAM]: streamWrapper,\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_RUN_STEP_CLOSED]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n emitEvent(createEvent('step.finished', data as t.RunStepClosedEvent));\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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"}
1
+ {"version":3,"file":"handlers.mjs","names":[],"sources":["../../../src/session/handlers.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ids.mjs","names":[],"sources":["../../../src/session/ids.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\n\nexport function createSessionId(): string {\n return randomUUID();\n}\n\nexport function createEntryId(): string {\n return randomUUID().replace(/-/g, '').slice(0, 12);\n}\n\nexport function createRunId(): string {\n return randomUUID();\n}\n\nexport function createTimestamp(): string {\n return new Date().toISOString();\n}\n"],"mappings":";;AAEA,SAAgB,kBAA0B;CACxC,OAAO,WAAW;AACpB;AAEA,SAAgB,gBAAwB;CACtC,OAAO,WAAW,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE;AACnD;AAEA,SAAgB,cAAsB;CACpC,OAAO,WAAW;AACpB;AAEA,SAAgB,kBAA0B;CACxC,wBAAO,IAAI,KAAK,EAAA,CAAE,YAAY;AAChC"}
1
+ {"version":3,"file":"ids.mjs","names":[],"sources":["../../../src/session/ids.ts"],"mappings":";;AAEA,SAAgB,kBAA0B;CACxC,OAAO,WAAW;AACpB;AAEA,SAAgB,gBAAwB;CACtC,OAAO,WAAW,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE;AACnD;AAEA,SAAgB,cAAsB;CACpC,OAAO,WAAW;AACpB;AAEA,SAAgB,kBAA0B;CACxC,wBAAO,IAAI,KAAK,EAAA,CAAE,YAAY;AAChC"}
@@ -62,10 +62,6 @@ function serializeMessage(message) {
62
62
  if (extras.name != null && extras.name !== "") serialized.name = extras.name;
63
63
  if (extras.tool_call_id != null && extras.tool_call_id !== "") serialized.toolCallId = extras.tool_call_id;
64
64
  if (extras.tool_calls) serialized.toolCalls = toJsonValue(extras.tool_calls);
65
- /** Malformed-call metadata must round-trip with the calls: the content
66
- * (with any raw `tool_use` blocks) survives serialization, so dropping
67
- * `invalid_tool_calls` would strand those blocks without the entries
68
- * ToolNode repairs the pairing from on restore. */
69
65
  if (extras.invalid_tool_calls && extras.invalid_tool_calls.length > 0) serialized.invalidToolCalls = toJsonValue(extras.invalid_tool_calls);
70
66
  return serialized;
71
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messageSerialization.mjs","names":[],"sources":["../../../src/session/messageSerialization.ts"],"sourcesContent":["import {\n AIMessage,\n HumanMessage,\n RemoveMessage,\n SystemMessage,\n ToolMessage,\n BaseMessage,\n} from '@langchain/core/messages';\nimport type { ToolCall, InvalidToolCall } from '@langchain/core/messages/tool';\nimport type { UsageMetadata } from '@langchain/core/messages';\nimport type { JsonObject, JsonValue, SerializedSessionMessage } from './types';\n\ntype MessageExtras = {\n id?: string;\n name?: string;\n tool_call_id?: string;\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: UsageMetadata;\n additional_kwargs?: unknown;\n response_metadata?: unknown;\n};\n\nconst CIRCULAR_REFERENCE = '[Circular]';\n\nfunction isJsonPrimitive(\n value: unknown\n): value is string | number | boolean | null {\n return (\n value == null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n );\n}\n\nfunction toJsonValueInternal(value: unknown, seen: WeakSet<object>): JsonValue {\n if (isJsonPrimitive(value)) {\n return Number.isNaN(value) ? null : value;\n }\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return CIRCULAR_REFERENCE;\n }\n seen.add(value);\n const result = value.map((item) => toJsonValueInternal(item, seen));\n seen.delete(value);\n return result;\n }\n if (value instanceof Error) {\n if (seen.has(value)) {\n return CIRCULAR_REFERENCE;\n }\n seen.add(value);\n const result: JsonObject = {\n name: value.name,\n message: value.message,\n };\n if (value.stack != null && value.stack !== '') {\n result.stack = value.stack;\n }\n if ('cause' in value && typeof value.cause !== 'undefined') {\n result.cause = toJsonValueInternal(value.cause, seen);\n }\n for (const [key, nested] of Object.entries(value)) {\n if (typeof nested !== 'undefined') {\n result[key] = toJsonValueInternal(nested, seen);\n }\n }\n seen.delete(value);\n return result;\n }\n if (value !== null && typeof value === 'object') {\n if (seen.has(value)) {\n return CIRCULAR_REFERENCE;\n }\n seen.add(value);\n const result: JsonObject = {};\n for (const [key, nested] of Object.entries(value)) {\n if (typeof nested !== 'undefined') {\n result[key] = toJsonValueInternal(nested, seen);\n }\n }\n seen.delete(value);\n return result;\n }\n return String(value);\n}\n\nexport function toJsonValue(value: unknown): JsonValue {\n return toJsonValueInternal(value, new WeakSet<object>());\n}\n\nfunction toJsonObject(value: unknown): JsonObject | undefined {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return undefined;\n }\n return toJsonValue(value) as JsonObject;\n}\n\nfunction fromJsonValue(value: JsonValue): unknown {\n return value;\n}\n\nexport function serializeMessage(\n message: BaseMessage\n): SerializedSessionMessage {\n const extras = message as BaseMessage & MessageExtras;\n const serialized: SerializedSessionMessage = {\n messageType: message._getType(),\n content: toJsonValue(message.content),\n };\n const additionalKwargs = toJsonObject(extras.additional_kwargs);\n const responseMetadata = toJsonObject(extras.response_metadata);\n const usageMetadata = toJsonObject(extras.usage_metadata);\n if (additionalKwargs) {\n serialized.additionalKwargs = additionalKwargs;\n }\n if (responseMetadata) {\n serialized.responseMetadata = responseMetadata;\n }\n if (usageMetadata) {\n serialized.usageMetadata = usageMetadata;\n }\n if (extras.id != null && extras.id !== '') {\n serialized.id = extras.id;\n }\n if (extras.name != null && extras.name !== '') {\n serialized.name = extras.name;\n }\n if (extras.tool_call_id != null && extras.tool_call_id !== '') {\n serialized.toolCallId = extras.tool_call_id;\n }\n if (extras.tool_calls) {\n serialized.toolCalls = toJsonValue(extras.tool_calls);\n }\n /** Malformed-call metadata must round-trip with the calls: the content\n * (with any raw `tool_use` blocks) survives serialization, so dropping\n * `invalid_tool_calls` would strand those blocks without the entries\n * ToolNode repairs the pairing from on restore. */\n if (extras.invalid_tool_calls && extras.invalid_tool_calls.length > 0) {\n serialized.invalidToolCalls = toJsonValue(extras.invalid_tool_calls);\n }\n return serialized;\n}\n\nexport function deserializeMessage(\n serialized: SerializedSessionMessage\n): BaseMessage {\n const common = {\n content: fromJsonValue(serialized.content) as BaseMessage['content'],\n additional_kwargs: serialized.additionalKwargs,\n response_metadata: serialized.responseMetadata,\n id: serialized.id,\n name: serialized.name,\n };\n if (serialized.messageType === 'human') {\n return new HumanMessage(common);\n }\n if (serialized.messageType === 'ai') {\n return new AIMessage({\n ...common,\n tool_calls: serialized.toolCalls as ToolCall[] | undefined,\n invalid_tool_calls: serialized.invalidToolCalls as\n | InvalidToolCall[]\n | undefined,\n usage_metadata: serialized.usageMetadata as UsageMetadata | undefined,\n });\n }\n if (serialized.messageType === 'system') {\n return new SystemMessage(common);\n }\n if (serialized.messageType === 'tool') {\n return new ToolMessage({\n ...common,\n tool_call_id: serialized.toolCallId ?? '',\n });\n }\n if (serialized.messageType === 'remove') {\n return new RemoveMessage({\n additional_kwargs: serialized.additionalKwargs,\n response_metadata: serialized.responseMetadata,\n id: serialized.id ?? '',\n name: serialized.name,\n });\n }\n return new HumanMessage(common);\n}\n\nexport function getMessageRole(message: BaseMessage): string {\n const type = message._getType();\n if (type === 'human') {\n return 'user';\n }\n if (type === 'ai') {\n return 'assistant';\n }\n return type;\n}\n\nexport function extractTextFromContent(content: JsonValue): string {\n if (typeof content === 'string') {\n return content;\n }\n if (!Array.isArray(content)) {\n return '';\n }\n const chunks: string[] = [];\n for (const part of content) {\n if (part != null && typeof part === 'object' && !Array.isArray(part)) {\n const text = part.text;\n if (typeof text === 'string') {\n chunks.push(text);\n }\n }\n }\n return chunks.join('');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"messageSerialization.mjs","names":[],"sources":["../../../src/session/messageSerialization.ts"],"mappings":"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"}
@@ -16,11 +16,6 @@ import { outcomeFieldsFromResult, resolveToolOutcome } from "./tools/intentArg.m
16
16
  import { TOOL_OUTPUT_REF_PATTERN } from "./tools/toolOutputReferences.mjs";
17
17
  //#region src/stream.ts
18
18
  const LOCAL_CODING_BUNDLE_NAME_SET = new Set(LOCAL_CODING_BUNDLE_NAMES);
19
- /**
20
- * Parses content to extract thinking sections enclosed in <think> tags using string operations
21
- * @param content The content to parse
22
- * @returns An object with separated text and thinking content
23
- */
24
19
  function parseThinkingContent(content) {
25
20
  if (!content.includes("<think>")) return {
26
21
  text: content,
@@ -54,15 +49,6 @@ function getNonEmptyValue(possibleValues) {
54
49
  for (const value of possibleValues) if (value && value.trim() !== "") return value;
55
50
  }
56
51
  function isBatchSensitiveToolExecution(graph, metadata) {
57
- /**
58
- * Resolve the hook-session id exactly the way ToolNode will: its hook
59
- * lookups read `config.configurable.run_id` ONLY, so that source wins here
60
- * too (a subagent child graph carries its own `graph.runId`, but its
61
- * ToolNode executes hooks under the PARENT's inherited configurable run
62
- * id). The metadata / graph.runId fallbacks only apply when no
63
- * configurable id exists and can only be conservative — a false positive
64
- * merely skips eager prestart.
65
- */
66
52
  const runId = graph.config?.configurable?.run_id ?? metadata?.run_id ?? graph.runId;
67
53
  return graph.hookRegistry?.hasResultAlteringHooks(runId) === true || graph.humanInTheLoop?.enabled === true;
68
54
  }
@@ -142,11 +128,6 @@ function canPrestartSequentialStreamedToolChunks(agentContext) {
142
128
  function hasExplicitStreamedToolCallSeals(chunk) {
143
129
  return getStreamedToolCallAdapter(chunk.response_metadata) != null;
144
130
  }
145
- /**
146
- * True when a provider adapter marked every tool call on this chunk as
147
- * complete on arrival (seal kind `all`), e.g. Google GenAI / Vertex AI, whose
148
- * protocol delivers function calls as whole objects rather than arg deltas.
149
- */
150
131
  function hasOnArrivalToolCallSeal(chunk) {
151
132
  const metadata = chunk.response_metadata;
152
133
  return getStreamedToolCallAdapter(metadata) != null && getStreamedToolCallSeal(metadata)?.kind === "all";
@@ -593,18 +574,7 @@ function shouldSkipLateOpenRouterReasoningChunk({ chunk, agentContext, graph, me
593
574
  metadata
594
575
  });
595
576
  }
596
- /**
597
- * Brands a handler as one that dispatches content parts for the SDK — either
598
- * `ChatModelStreamHandler` itself or a wrapper forwarding to one.
599
- *
600
- * Identity alone is not a usable contract here. Hosts compose and wrap
601
- * handlers (`composeEventHandlers`, `createRunHandlers`), and every wrapper
602
- * fails `instanceof` while still driving the same dispatch. A brand survives
603
- * wrapping, so "does this handler own content-part dispatch" can be answered
604
- * about a value the SDK did not construct.
605
- */
606
577
  const SDK_STREAM_DISPATCH = Symbol.for("@librechat/agents:chatModelStreamDispatch");
607
- /** True when `handler` is, or forwards to, the SDK's stream dispatcher. */
608
578
  function dispatchesChatModelStream(handler) {
609
579
  if (handler == null) return false;
610
580
  if (handler instanceof ChatModelStreamHandler) return true;
@@ -620,50 +590,20 @@ var ChatModelStreamHandler = class {
620
590
  return;
621
591
  }
622
592
  const chunk = data.chunk;
623
- /** Attempts stamp their breaker epoch into event metadata; a mismatch
624
- * marks a straggling chunk from a failed run that outlived
625
- * `resetValues()`. Dropped OUTRIGHT: content handling and the eager
626
- * paths below compose the LIVE controller, so acting on a dead run's
627
- * chunk could dispatch host tools into the run now using it. Events
628
- * without a stamp (direct handler callers, partial stubs) keep the
629
- * live-controller behavior. */
630
593
  const eventEpoch = metadata?.[STREAM_LIMIT_EPOCH_KEY];
631
- /** Runtime-honest widening: partial handler stubs carry neither an
632
- * epoch nor a run scope despite the field types. */
633
594
  const liveEpoch = graph.breakerEpoch;
634
595
  if (eventEpoch != null && liveEpoch != null && eventEpoch !== liveEpoch) return;
635
596
  const eventBreaker = graph.breakerAbort instanceof AbortController ? graph.breakerAbort : void 0;
636
- /** Immutable scope captured at handler entry. A reset while this
637
- * handler is suspended in an await replaces the object, so ONE
638
- * reference comparison proves the event still belongs to the live run
639
- * before anything composes `graph.breakerAbort` or `graph.config`. */
640
597
  const entryRunScope = graph.runScope;
641
598
  const runScopeInvalidated = () => entryRunScope != null && graph.runScope !== entryRunScope;
642
599
  const throwIfRunBreakerTripped = () => {
643
600
  if (eventBreaker != null && eventBreaker.signal.aborted && eventBreaker.signal.reason instanceof StreamLimitExceededError) throw eventBreaker.signal.reason;
644
601
  };
645
- /**
646
- * Enforced before every content-specific early return below
647
- * (server-tool results, deferred mixed reasoning, late OpenRouter
648
- * reasoning): a looping provider can flood through any of those paths,
649
- * a coalesced event can carry client `tool_call_chunks` alongside a
650
- * server-tool result, and the complete-call dispatch branch further
651
- * down can prestart a side-effecting tool from an arrival-sealed
652
- * oversized call. Charging is claim-based: the producer loop and this
653
- * decoupled echo can observe the same chunk object in either order, and
654
- * only the first claimer charges it. The argument guard is
655
- * deliberately NOT gated on numeric chunk indices, so id-only or
656
- * index-less runaway streams stay bounded, and complete parsed
657
- * `tool_calls` without a raw chunk representation are judged standalone.
658
- */
659
602
  if (requiresStreamLimitAccounting(graph, chunk) && claimStreamLimitCharge(graph, data.chunk, "consumer", metadata)) try {
660
603
  enforceStreamDeltaEventLimit({
661
604
  graph,
662
605
  metadata
663
606
  });
664
- /** Combined first so raw-chunk name correlation sees invalid calls
665
- * too; an unnamed raw chunk twinned with a named invalid call must
666
- * select that tool's override, not the global cap. */
667
607
  const completeCalls = combineCompleteToolCalls(chunk);
668
608
  if (chunk.tool_call_chunks && chunk.tool_call_chunks.length > 0) enforceStreamedToolCallArgLimit({
669
609
  graph,
@@ -672,34 +612,15 @@ var ChatModelStreamHandler = class {
672
612
  responseMetadata: chunk.response_metadata,
673
613
  parsedToolCalls: completeCalls
674
614
  });
675
- /** Judged whenever parsed calls are present, not only when raw
676
- * chunks are absent — an adapter can pair an empty or partial raw
677
- * chunk with a complete parsed call; the standalone check is
678
- * stateless, so the common both-present case is not double-tallied.
679
- * Invalid calls are included because ToolNode processes and
680
- * promotes them. */
681
615
  if (completeCalls != null) enforceCompleteToolCallArgLimit({
682
616
  graph,
683
617
  metadata,
684
618
  toolCalls: completeCalls
685
619
  });
686
620
  } catch (error) {
687
- /** A breach detected on this consumer path must still stop parallel
688
- * fan-out work: the producer skips its own enforcement once this
689
- * side has claimed the emission, so createCallModel's breaker-abort
690
- * never fires for it. Trip the EVENT's run-bound breaker before the
691
- * throw rejects the run — never the live controller of a newer run. */
692
621
  if (error instanceof StreamLimitExceededError && eventBreaker != null) eventBreaker.abort(error);
693
622
  throw error;
694
623
  }
695
- /** A parallel producer can trip the shared breaker while this event was
696
- * already queued in `streamEvents`. Stop before content handling or the
697
- * eager-tool paths below — those can dispatch a side-effecting host
698
- * tool with an already-aborted signal the handler never inspects.
699
- * Rechecked again immediately before each eager dispatch: the awaits in
700
- * between (server-tool results, tool-call handling, content dispatch)
701
- * are windows for a sibling's trip — or for a full reset, after which
702
- * this event belongs to a dead run and is dropped. */
703
624
  if (runScopeInvalidated()) return;
704
625
  throwIfRunBreakerTripped();
705
626
  const agentContext = graph.getAgentContext(metadata);
@@ -767,7 +688,6 @@ var ChatModelStreamHandler = class {
767
688
  });
768
689
  }
769
690
  const isEmptyContent = typeof content === "undefined" || !content.length || typeof content === "string" && !content;
770
- /** Set a preliminary message ID if found in empty chunk */
771
691
  const isEmptyChunk = isEmptyContent && !hasToolCallChunks;
772
692
  if (isEmptyChunk && (chunk.id ?? "") !== "" && !graph.prelimMessageIdsByStepKey.has(chunk.id ?? "")) graph.prelimMessageIdsByStepKey.set(stepKey, chunk.id ?? "");
773
693
  else if (isEmptyChunk) return;
@@ -950,12 +870,8 @@ function createContentAggregator() {
950
870
  const sourceContentIndexMap = /* @__PURE__ */ new Map();
951
871
  const toolStepContentMap = /* @__PURE__ */ new Map();
952
872
  let indexedContentLength = 0;
953
- /** Physical append cursor; event/chunk indices are correlation keys, not array offsets. */
954
873
  let nextContentIndex = 0;
955
874
  const contentMetaMap = /* @__PURE__ */ new Map();
956
- /** A delta's content may carry several parts (e.g. Google server-side tool
957
- * chunks emit multiple reasoning entries at once); every entry must reach
958
- * the step's slot, in order, or streamed text is silently lost. */
959
875
  const getDeltaContentParts = (content) => {
960
876
  if (content == null) return [];
961
877
  return Array.isArray(content) ? content : [content];
@@ -976,7 +892,6 @@ function createContentAggregator() {
976
892
  }
977
893
  };
978
894
  const syncSeededContent = () => {
979
- /** Hosts can seed pre-pause content after creating the aggregator. */
980
895
  for (let index = indexedContentLength; index < contentParts.length; index++) indexContentPart(index, contentParts[index]);
981
896
  indexedContentLength = contentParts.length;
982
897
  nextContentIndex = Math.max(nextContentIndex, contentParts.length);
@@ -1057,10 +972,6 @@ function createContentAggregator() {
1057
972
  return;
1058
973
  }
1059
974
  const incomingText = "text" in contentPart && typeof contentPart.text === "string" ? contentPart.text : void 0;
1060
- /**
1061
- * Anthropic emits a search turn's citations as their own `citations_delta`,
1062
- * which arrives here as a text part carrying `citations` and no `text`.
1063
- */
1064
975
  const { citations } = contentPart;
1065
976
  const incomingCitations = Array.isArray(citations) ? citations : void 0;
1066
977
  if (partType.startsWith("text") && (incomingText !== void 0 || incomingCitations !== void 0)) {
@@ -1070,9 +981,7 @@ function createContentAggregator() {
1070
981
  text: (currentContent.text || "") + (incomingText ?? "")
1071
982
  };
1072
983
  if (contentPart.tool_call_ids) update.tool_call_ids = contentPart.tool_call_ids;
1073
- else if (incomingText === void 0 && currentContent.tool_call_ids)
1074
- /** A citations-only delta must not drop ids already accumulated */
1075
- update.tool_call_ids = currentContent.tool_call_ids;
984
+ else if (incomingText === void 0 && currentContent.tool_call_ids) update.tool_call_ids = currentContent.tool_call_ids;
1076
985
  if (incomingCitations !== void 0) update.citations = currentContent.citations !== void 0 ? [...currentContent.citations, ...incomingCitations] : [...incomingCitations];
1077
986
  else if (currentContent.citations !== void 0) update.citations = currentContent.citations;
1078
987
  contentParts[index] = update;
@@ -1100,7 +1009,6 @@ function createContentAggregator() {
1100
1009
  if (!(incomingName != null && incomingName !== "") && !finalUpdate) return;
1101
1010
  const existingContent = contentParts[index];
1102
1011
  if (!finalUpdate && existingContent?.tool_call?.progress === 1) return;
1103
- /** When args are a valid object, they are likely already invoked */
1104
1012
  let args = finalUpdate || typeof existingContent?.tool_call?.args === "object" || typeof toolCallArgs === "object" ? contentPart.tool_call.args : (existingContent?.tool_call?.args ?? "") + (toolCallArgs ?? "");
1105
1013
  if (finalUpdate && args == null && existingContent?.tool_call?.args != null) args = existingContent.tool_call.args;
1106
1014
  const id = getNonEmptyValue([incomingId, existingContent?.tool_call?.id]) ?? "";