@librechat/agents 3.2.32 → 3.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/agents/AgentContext.cjs +844 -1046
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/constants.cjs +13 -13
- package/dist/cjs/common/constants.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +233 -240
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/common/index.cjs +2 -0
- package/dist/cjs/events.cjs +121 -169
- package/dist/cjs/events.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +1389 -1807
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +713 -945
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/index.cjs +2 -0
- package/dist/cjs/hitl/askUserQuestion.cjs +60 -62
- package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
- package/dist/cjs/hitl/index.cjs +1 -0
- package/dist/cjs/hooks/HookRegistry.cjs +176 -202
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
- package/dist/cjs/hooks/createToolPolicyHook.cjs +71 -101
- package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +170 -273
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/executeHooks.cjs +227 -282
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
- package/dist/cjs/hooks/index.cjs +6 -0
- package/dist/cjs/hooks/matchers.cjs +196 -230
- package/dist/cjs/hooks/matchers.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs +24 -24
- package/dist/cjs/hooks/types.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +110 -137
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langchain/google-common.cjs +0 -3
- package/dist/cjs/langchain/index.cjs +80 -43
- package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
- package/dist/cjs/langchain/messages/tool.cjs +0 -3
- package/dist/cjs/langchain/messages.cjs +35 -18
- package/dist/cjs/langchain/openai.cjs +0 -3
- package/dist/cjs/langchain/prompts.cjs +5 -8
- package/dist/cjs/langchain/runnables.cjs +11 -10
- package/dist/cjs/langchain/tools.cjs +14 -11
- package/dist/cjs/langchain/utils/env.cjs +5 -8
- package/dist/cjs/langfuse.cjs +60 -79
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseToolOutputTracing.cjs +267 -399
- package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/index.cjs +432 -562
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/types.cjs +23 -47
- package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +441 -731
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +171 -256
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/output_parsers.cjs +2 -0
- package/dist/cjs/llm/anthropic/utils/tools.cjs +12 -26
- package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +195 -240
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/toolCache.cjs +84 -106
- package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/index.cjs +2 -0
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +357 -620
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +105 -149
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/fake.cjs +86 -96
- package/dist/cjs/llm/fake.cjs.map +1 -1
- package/dist/cjs/llm/google/index.cjs +183 -237
- package/dist/cjs/llm/google/index.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/common.cjs +398 -674
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/zod_to_genai_parameters.cjs +2 -0
- package/dist/cjs/llm/init.cjs +44 -53
- package/dist/cjs/llm/init.cjs.map +1 -1
- package/dist/cjs/llm/invoke.cjs +142 -182
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +991 -1276
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +189 -316
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/index.cjs +102 -153
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/toolCache.cjs +35 -44
- package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/providers.cjs +29 -37
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/llm/request.cjs +20 -33
- package/dist/cjs/llm/request.cjs.map +1 -1
- package/dist/cjs/llm/vertexai/index.cjs +427 -453
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +547 -528
- package/dist/cjs/messages/anthropicToolCache.cjs +68 -119
- package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +305 -418
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/content.cjs +36 -49
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +112 -145
- package/dist/cjs/messages/contextPruning.cjs.map +1 -1
- package/dist/cjs/messages/contextPruningSettings.cjs +36 -46
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
- package/dist/cjs/messages/core.cjs +256 -397
- package/dist/cjs/messages/core.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +904 -1387
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/ids.cjs +16 -20
- package/dist/cjs/messages/ids.cjs.map +1 -1
- package/dist/cjs/messages/index.cjs +12 -0
- package/dist/cjs/messages/langchain.cjs +18 -18
- package/dist/cjs/messages/langchain.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +1054 -1517
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/messages/recency.cjs +77 -95
- package/dist/cjs/messages/recency.cjs.map +1 -1
- package/dist/cjs/messages/reducer.cjs +63 -78
- package/dist/cjs/messages/reducer.cjs.map +1 -1
- package/dist/cjs/messages/tools.cjs +51 -79
- package/dist/cjs/messages/tools.cjs.map +1 -1
- package/dist/cjs/openai/index.cjs +171 -217
- package/dist/cjs/openai/index.cjs.map +1 -1
- package/dist/cjs/responses/index.cjs +302 -391
- package/dist/cjs/responses/index.cjs.map +1 -1
- package/dist/cjs/run.cjs +903 -1113
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/AgentSession.cjs +805 -986
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/JsonlSessionStore.cjs +327 -410
- package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
- package/dist/cjs/session/handlers.cjs +192 -208
- package/dist/cjs/session/handlers.cjs.map +1 -1
- package/dist/cjs/session/ids.cjs +9 -10
- package/dist/cjs/session/ids.cjs.map +1 -1
- package/dist/cjs/session/index.cjs +4 -0
- package/dist/cjs/session/messageSerialization.cjs +94 -156
- package/dist/cjs/session/messageSerialization.cjs.map +1 -1
- package/dist/cjs/splitStream.cjs +147 -206
- package/dist/cjs/splitStream.cjs.map +1 -1
- package/dist/cjs/stream.cjs +856 -1344
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/index.cjs +57 -101
- package/dist/cjs/summarization/index.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs +643 -796
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +110 -136
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +165 -245
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/Calculator.cjs +36 -57
- package/dist/cjs/tools/Calculator.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +126 -168
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/CodeSessionFileSummary.cjs +36 -46
- package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +459 -649
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +17 -20
- package/dist/cjs/tools/ReadFile.cjs.map +1 -1
- package/dist/cjs/tools/SkillTool.cjs +26 -27
- package/dist/cjs/tools/SkillTool.cjs.map +1 -1
- package/dist/cjs/tools/SubagentTool.cjs +59 -61
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +2109 -2686
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/ToolSearch.cjs +663 -825
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs +248 -340
- package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +170 -197
- package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +425 -520
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +91 -124
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/index.cjs +4 -0
- package/dist/cjs/tools/eagerEventExecution.cjs +75 -99
- package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +200 -262
- package/dist/cjs/tools/handlers.cjs.map +1 -1
- package/dist/cjs/tools/local/CompileCheckTool.cjs +150 -212
- package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
- package/dist/cjs/tools/local/FileCheckpointer.cjs +77 -85
- package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalCodingTools.cjs +763 -1022
- package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs +666 -941
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionTools.cjs +49 -92
- package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +286 -354
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/local/attachments.cjs +108 -165
- package/dist/cjs/tools/local/attachments.cjs.map +1 -1
- package/dist/cjs/tools/local/bashAst.cjs +99 -113
- package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
- package/dist/cjs/tools/local/editStrategies.cjs +126 -169
- package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
- package/dist/cjs/tools/local/index.cjs +12 -0
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +136 -218
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/syntaxCheck.cjs +142 -161
- package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
- package/dist/cjs/tools/local/textEncoding.cjs +25 -23
- package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
- package/dist/cjs/tools/local/workspaceFS.cjs +38 -46
- package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
- package/dist/cjs/tools/ptcTimeout.cjs +27 -47
- package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
- package/dist/cjs/tools/schema.cjs +24 -23
- package/dist/cjs/tools/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/anthropic.cjs +24 -33
- package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
- package/dist/cjs/tools/search/content.cjs +95 -137
- package/dist/cjs/tools/search/content.cjs.map +1 -1
- package/dist/cjs/tools/search/firecrawl.cjs +141 -172
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
- package/dist/cjs/tools/search/format.cjs +128 -196
- package/dist/cjs/tools/search/format.cjs.map +1 -1
- package/dist/cjs/tools/search/highlights.cjs +165 -232
- package/dist/cjs/tools/search/highlights.cjs.map +1 -1
- package/dist/cjs/tools/search/index.cjs +2 -0
- package/dist/cjs/tools/search/rerankers.cjs +151 -174
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
- package/dist/cjs/tools/search/schema.cjs +40 -39
- package/dist/cjs/tools/search/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +428 -530
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/serper-scraper.cjs +106 -127
- package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +129 -181
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-search.cjs +295 -359
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +260 -299
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +74 -117
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +54 -72
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
- package/dist/cjs/tools/streamedToolCallSeals.cjs +19 -36
- package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +612 -771
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/tools/subagent/index.cjs +1 -0
- package/dist/cjs/tools/toolOutputReferences.cjs +523 -630
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
- package/dist/cjs/utils/callbacks.cjs +11 -21
- package/dist/cjs/utils/callbacks.cjs.map +1 -1
- package/dist/cjs/utils/errors.cjs +70 -95
- package/dist/cjs/utils/errors.cjs.map +1 -1
- package/dist/cjs/utils/events.cjs +32 -42
- package/dist/cjs/utils/events.cjs.map +1 -1
- package/dist/cjs/utils/graph.cjs +8 -12
- package/dist/cjs/utils/graph.cjs.map +1 -1
- package/dist/cjs/utils/handlers.cjs +60 -82
- package/dist/cjs/utils/handlers.cjs.map +1 -1
- package/dist/cjs/utils/index.cjs +9 -0
- package/dist/cjs/utils/llm.cjs +19 -27
- package/dist/cjs/utils/llm.cjs.map +1 -1
- package/dist/cjs/utils/misc.cjs +30 -46
- package/dist/cjs/utils/misc.cjs.map +1 -1
- package/dist/cjs/utils/run.cjs +50 -66
- package/dist/cjs/utils/run.cjs.map +1 -1
- package/dist/cjs/utils/schema.cjs +11 -19
- package/dist/cjs/utils/schema.cjs.map +1 -1
- package/dist/cjs/utils/title.cjs +71 -106
- package/dist/cjs/utils/title.cjs.map +1 -1
- package/dist/cjs/utils/tokens.cjs +186 -283
- package/dist/cjs/utils/tokens.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +95 -114
- package/dist/cjs/utils/truncation.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +844 -1044
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/constants.mjs +13 -11
- package/dist/esm/common/constants.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +221 -238
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/common/index.mjs +3 -0
- package/dist/esm/events.mjs +121 -167
- package/dist/esm/events.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +1388 -1804
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +713 -943
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/index.mjs +3 -0
- package/dist/esm/hitl/askUserQuestion.mjs +60 -60
- package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
- package/dist/esm/hitl/index.mjs +2 -0
- package/dist/esm/hooks/HookRegistry.mjs +176 -200
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
- package/dist/esm/hooks/createToolPolicyHook.mjs +71 -99
- package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs +170 -271
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/executeHooks.mjs +227 -280
- package/dist/esm/hooks/executeHooks.mjs.map +1 -1
- package/dist/esm/hooks/index.mjs +7 -0
- package/dist/esm/hooks/matchers.mjs +196 -228
- package/dist/esm/hooks/matchers.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs +24 -22
- package/dist/esm/hooks/types.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +109 -132
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langchain/google-common.mjs +1 -2
- package/dist/esm/langchain/index.mjs +5 -5
- package/dist/esm/langchain/language_models/chat_models.mjs +1 -2
- package/dist/esm/langchain/messages/tool.mjs +1 -2
- package/dist/esm/langchain/messages.mjs +2 -2
- package/dist/esm/langchain/openai.mjs +1 -2
- package/dist/esm/langchain/prompts.mjs +2 -2
- package/dist/esm/langchain/runnables.mjs +2 -2
- package/dist/esm/langchain/tools.mjs +2 -2
- package/dist/esm/langchain/utils/env.mjs +2 -2
- package/dist/esm/langfuse.mjs +60 -76
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseToolOutputTracing.mjs +267 -395
- package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
- package/dist/esm/llm/anthropic/index.mjs +432 -559
- package/dist/esm/llm/anthropic/index.mjs.map +1 -1
- package/dist/esm/llm/anthropic/types.mjs +23 -45
- package/dist/esm/llm/anthropic/types.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +439 -725
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +171 -253
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/output_parsers.mjs +3 -0
- package/dist/esm/llm/anthropic/utils/tools.mjs +12 -24
- package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +195 -238
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/bedrock/toolCache.mjs +84 -104
- package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/index.mjs +3 -0
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs +357 -618
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs +105 -147
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/fake.mjs +86 -94
- package/dist/esm/llm/fake.mjs.map +1 -1
- package/dist/esm/llm/google/index.mjs +183 -235
- package/dist/esm/llm/google/index.mjs.map +1 -1
- package/dist/esm/llm/google/utils/common.mjs +397 -666
- package/dist/esm/llm/google/utils/common.mjs.map +1 -1
- package/dist/esm/llm/google/utils/zod_to_genai_parameters.mjs +3 -0
- package/dist/esm/llm/init.mjs +44 -51
- package/dist/esm/llm/init.mjs.map +1 -1
- package/dist/esm/llm/invoke.mjs +142 -180
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +991 -1271
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +188 -312
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/index.mjs +102 -151
- package/dist/esm/llm/openrouter/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/toolCache.mjs +35 -42
- package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
- package/dist/esm/llm/providers.mjs +29 -34
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/llm/request.mjs +20 -31
- package/dist/esm/llm/request.mjs.map +1 -1
- package/dist/esm/llm/vertexai/index.mjs +427 -449
- package/dist/esm/llm/vertexai/index.mjs.map +1 -1
- package/dist/esm/main.mjs +99 -87
- package/dist/esm/messages/anthropicToolCache.mjs +68 -117
- package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +305 -416
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/content.mjs +36 -47
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +112 -143
- package/dist/esm/messages/contextPruning.mjs.map +1 -1
- package/dist/esm/messages/contextPruningSettings.mjs +36 -44
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
- package/dist/esm/messages/core.mjs +254 -393
- package/dist/esm/messages/core.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +902 -1383
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/ids.mjs +16 -18
- package/dist/esm/messages/ids.mjs.map +1 -1
- package/dist/esm/messages/index.mjs +13 -0
- package/dist/esm/messages/langchain.mjs +18 -16
- package/dist/esm/messages/langchain.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +1053 -1514
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/messages/recency.mjs +77 -93
- package/dist/esm/messages/recency.mjs.map +1 -1
- package/dist/esm/messages/reducer.mjs +63 -76
- package/dist/esm/messages/reducer.mjs.map +1 -1
- package/dist/esm/messages/tools.mjs +49 -75
- package/dist/esm/messages/tools.mjs.map +1 -1
- package/dist/esm/openai/index.mjs +170 -215
- package/dist/esm/openai/index.mjs.map +1 -1
- package/dist/esm/responses/index.mjs +301 -389
- package/dist/esm/responses/index.mjs.map +1 -1
- package/dist/esm/run.mjs +903 -1111
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/AgentSession.mjs +806 -985
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/JsonlSessionStore.mjs +326 -407
- package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
- package/dist/esm/session/handlers.mjs +192 -206
- package/dist/esm/session/handlers.mjs.map +1 -1
- package/dist/esm/session/ids.mjs +9 -8
- package/dist/esm/session/ids.mjs.map +1 -1
- package/dist/esm/session/index.mjs +5 -0
- package/dist/esm/session/messageSerialization.mjs +94 -154
- package/dist/esm/session/messageSerialization.mjs.map +1 -1
- package/dist/esm/splitStream.mjs +147 -204
- package/dist/esm/splitStream.mjs.map +1 -1
- package/dist/esm/stream.mjs +854 -1341
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/index.mjs +57 -99
- package/dist/esm/summarization/index.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs +640 -790
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +103 -129
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +162 -239
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/Calculator.mjs +34 -36
- package/dist/esm/tools/Calculator.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +123 -164
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/CodeSessionFileSummary.mjs +36 -44
- package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +454 -644
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +17 -18
- package/dist/esm/tools/ReadFile.mjs.map +1 -1
- package/dist/esm/tools/SkillTool.mjs +26 -25
- package/dist/esm/tools/SkillTool.mjs.map +1 -1
- package/dist/esm/tools/SubagentTool.mjs +59 -59
- package/dist/esm/tools/SubagentTool.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +2107 -2684
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/ToolSearch.mjs +659 -804
- package/dist/esm/tools/ToolSearch.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs +248 -338
- package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +170 -195
- package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +424 -517
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +91 -122
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/index.mjs +5 -0
- package/dist/esm/tools/eagerEventExecution.mjs +75 -96
- package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +200 -260
- package/dist/esm/tools/handlers.mjs.map +1 -1
- package/dist/esm/tools/local/CompileCheckTool.mjs +150 -210
- package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
- package/dist/esm/tools/local/FileCheckpointer.mjs +77 -83
- package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
- package/dist/esm/tools/local/LocalCodingTools.mjs +760 -1017
- package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionEngine.mjs +663 -936
- package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionTools.mjs +49 -90
- package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +283 -349
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/local/attachments.mjs +108 -163
- package/dist/esm/tools/local/attachments.mjs.map +1 -1
- package/dist/esm/tools/local/bashAst.mjs +99 -111
- package/dist/esm/tools/local/bashAst.mjs.map +1 -1
- package/dist/esm/tools/local/editStrategies.mjs +126 -167
- package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
- package/dist/esm/tools/local/index.mjs +13 -0
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +136 -216
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/syntaxCheck.mjs +138 -155
- package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
- package/dist/esm/tools/local/textEncoding.mjs +25 -21
- package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
- package/dist/esm/tools/local/workspaceFS.mjs +38 -44
- package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
- package/dist/esm/tools/ptcTimeout.mjs +27 -42
- package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
- package/dist/esm/tools/schema.mjs +24 -21
- package/dist/esm/tools/schema.mjs.map +1 -1
- package/dist/esm/tools/search/anthropic.mjs +24 -31
- package/dist/esm/tools/search/anthropic.mjs.map +1 -1
- package/dist/esm/tools/search/content.mjs +93 -116
- package/dist/esm/tools/search/content.mjs.map +1 -1
- package/dist/esm/tools/search/firecrawl.mjs +139 -169
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
- package/dist/esm/tools/search/format.mjs +128 -194
- package/dist/esm/tools/search/format.mjs.map +1 -1
- package/dist/esm/tools/search/highlights.mjs +165 -230
- package/dist/esm/tools/search/highlights.mjs.map +1 -1
- package/dist/esm/tools/search/index.mjs +3 -0
- package/dist/esm/tools/search/rerankers.mjs +149 -168
- package/dist/esm/tools/search/rerankers.mjs.map +1 -1
- package/dist/esm/tools/search/schema.mjs +39 -37
- package/dist/esm/tools/search/schema.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +426 -528
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/serper-scraper.mjs +104 -124
- package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +127 -178
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-search.mjs +293 -357
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +259 -297
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +74 -115
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +54 -70
- package/dist/esm/tools/skillCatalog.mjs.map +1 -1
- package/dist/esm/tools/streamedToolCallSeals.mjs +19 -31
- package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +612 -768
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/tools/subagent/index.mjs +2 -0
- package/dist/esm/tools/toolOutputReferences.mjs +523 -624
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
- package/dist/esm/utils/callbacks.mjs +11 -19
- package/dist/esm/utils/callbacks.mjs.map +1 -1
- package/dist/esm/utils/errors.mjs +70 -93
- package/dist/esm/utils/errors.mjs.map +1 -1
- package/dist/esm/utils/events.mjs +32 -40
- package/dist/esm/utils/events.mjs.map +1 -1
- package/dist/esm/utils/graph.mjs +8 -10
- package/dist/esm/utils/graph.mjs.map +1 -1
- package/dist/esm/utils/handlers.mjs +60 -80
- package/dist/esm/utils/handlers.mjs.map +1 -1
- package/dist/esm/utils/index.mjs +10 -0
- package/dist/esm/utils/llm.mjs +19 -25
- package/dist/esm/utils/llm.mjs.map +1 -1
- package/dist/esm/utils/misc.mjs +30 -44
- package/dist/esm/utils/misc.mjs.map +1 -1
- package/dist/esm/utils/run.mjs +50 -64
- package/dist/esm/utils/run.mjs.map +1 -1
- package/dist/esm/utils/schema.mjs +11 -17
- package/dist/esm/utils/schema.mjs.map +1 -1
- package/dist/esm/utils/title.mjs +71 -104
- package/dist/esm/utils/title.mjs.map +1 -1
- package/dist/esm/utils/tokens.mjs +186 -281
- package/dist/esm/utils/tokens.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +95 -112
- package/dist/esm/utils/truncation.mjs.map +1 -1
- package/dist/types/tools/search/tool.d.ts +17 -0
- package/dist/types/tools/search/types.d.ts +4 -0
- package/package.json +4 -10
- package/src/tools/search/highlights.ts +9 -1
- package/src/tools/search/search.ts +41 -3
- package/src/tools/search/source-processing.test.ts +373 -0
- package/src/tools/search/tool.ts +22 -2
- package/src/tools/search/types.ts +4 -0
- package/dist/cjs/langchain/google-common.cjs.map +0 -1
- package/dist/cjs/langchain/index.cjs.map +0 -1
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
- package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
- package/dist/cjs/langchain/messages.cjs.map +0 -1
- package/dist/cjs/langchain/openai.cjs.map +0 -1
- package/dist/cjs/langchain/prompts.cjs.map +0 -1
- package/dist/cjs/langchain/runnables.cjs.map +0 -1
- package/dist/cjs/langchain/tools.cjs.map +0 -1
- package/dist/cjs/langchain/utils/env.cjs.map +0 -1
- package/dist/cjs/main.cjs.map +0 -1
- package/dist/esm/langchain/google-common.mjs.map +0 -1
- package/dist/esm/langchain/index.mjs.map +0 -1
- package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
- package/dist/esm/langchain/messages/tool.mjs.map +0 -1
- package/dist/esm/langchain/messages.mjs.map +0 -1
- package/dist/esm/langchain/openai.mjs.map +0 -1
- package/dist/esm/langchain/prompts.mjs.map +0 -1
- package/dist/esm/langchain/runnables.mjs.map +0 -1
- package/dist/esm/langchain/tools.mjs.map +0 -1
- package/dist/esm/langchain/utils/env.mjs.map +0 -1
- package/dist/esm/main.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlSessionStore.mjs","sources":["../../../src/session/JsonlSessionStore.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { createHash } from 'crypto';\nimport { SystemMessage } from '@langchain/core/messages';\nimport { basename, dirname, isAbsolute, join, resolve } from 'path';\nimport {\n access,\n appendFile,\n mkdir,\n readFile,\n readdir,\n stat,\n writeFile,\n} from 'fs/promises';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type {\n CreateSessionFileOptions,\n SessionBranchOptions,\n SessionEntry,\n SessionForkOptions,\n SessionHeader,\n SessionLabelEntry,\n SessionListItem,\n SessionMessageEntry,\n SessionCheckpointEntry,\n SessionCompactionEntry,\n SessionRunEventEntry,\n SessionSummaryEntry,\n SessionStateEntry,\n SessionTreeNode,\n} from './types';\nimport {\n deserializeMessage,\n getMessageRole,\n serializeMessage,\n toJsonValue,\n} from './messageSerialization';\nimport { createEntryId, createSessionId, createTimestamp } from './ids';\n\nconst SESSION_VERSION = 1;\nconst DEFAULT_SESSION_ROOT = join(\n homedir(),\n '.librechat',\n 'agents',\n 'sessions'\n);\n\nfunction sanitizeCwd(cwd: string): string {\n const normalized = resolve(cwd);\n return createHash('sha256').update(normalized).digest('hex');\n}\n\nfunction createSessionPath(options: CreateSessionFileOptions): string {\n const sessionId = options.sessionId ?? createSessionId();\n const fileName = `${new Date().toISOString().replace(/[:.]/g, '-')}_${sessionId}.jsonl`;\n return join(DEFAULT_SESSION_ROOT, sanitizeCwd(options.cwd), fileName);\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseLine(line: string): SessionHeader | SessionEntry | undefined {\n if (line.trim() === '') {\n return undefined;\n }\n try {\n const parsed = JSON.parse(line) as SessionHeader | SessionEntry;\n if (parsed.type === 'session') {\n return parsed;\n }\n if ('id' in parsed && 'parentId' in parsed && 'data' in parsed) {\n return parsed;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction createHeader(options: CreateSessionFileOptions): SessionHeader {\n return {\n type: 'session',\n version: SESSION_VERSION,\n id: options.sessionId ?? createSessionId(),\n timestamp: createTimestamp(),\n cwd: resolve(options.cwd),\n ...(options.name != null && options.name !== ''\n ? { name: options.name }\n : {}),\n ...(options.parentSession != null && options.parentSession !== ''\n ? { parentSession: options.parentSession }\n : {}),\n };\n}\n\nfunction sortEntries(entries: SessionEntry[]): SessionEntry[] {\n return [...entries].sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n}\n\nexport class JsonlSessionStore {\n readonly path: string;\n readonly header: SessionHeader;\n private entries: SessionEntry[];\n\n private constructor(params: {\n path: string;\n header: SessionHeader;\n entries: SessionEntry[];\n }) {\n this.path = params.path;\n this.header = params.header;\n this.entries = sortEntries(params.entries);\n }\n\n static getDefaultRoot(): string {\n return DEFAULT_SESSION_ROOT;\n }\n\n static async create(\n options: CreateSessionFileOptions & { path?: string }\n ): Promise<JsonlSessionStore> {\n const sessionId = options.sessionId ?? createSessionId();\n const path =\n options.path != null && options.path !== ''\n ? resolve(options.path)\n : createSessionPath({ ...options, sessionId });\n const header = createHeader({ ...options, sessionId });\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(header)}\\n`, {\n encoding: 'utf8',\n flag: 'wx',\n });\n return new JsonlSessionStore({ path, header, entries: [] });\n }\n\n static async open(pathOrId: string): Promise<JsonlSessionStore> {\n const path = await JsonlSessionStore.resolvePath(pathOrId);\n return JsonlSessionStore.openPath(path);\n }\n\n static async openPath(path: string): Promise<JsonlSessionStore> {\n const resolved = resolve(path);\n const raw = await readFile(resolved, 'utf8');\n const parsed = raw\n .split('\\n')\n .map((line) => parseLine(line))\n .filter((line): line is SessionHeader | SessionEntry => line != null);\n const header = parsed.find(\n (line): line is SessionHeader => line.type === 'session'\n );\n if (!header) {\n throw new Error(`Invalid session file: ${resolved}`);\n }\n const entries = parsed.filter(\n (line): line is SessionEntry => line.type !== 'session'\n );\n return new JsonlSessionStore({ path: resolved, header, entries });\n }\n\n static async resolvePath(pathOrId: string): Promise<string> {\n const candidate = isAbsolute(pathOrId) ? pathOrId : resolve(pathOrId);\n if (await pathExists(candidate)) {\n return candidate;\n }\n const sessions = await JsonlSessionStore.listAll();\n const matches = sessions.filter(\n (item) =>\n item.id.startsWith(pathOrId) || basename(item.path).includes(pathOrId)\n );\n if (matches.length === 1) {\n return matches[0].path;\n }\n if (matches.length > 1) {\n throw new Error(`Session id \"${pathOrId}\" is ambiguous`);\n }\n throw new Error(`Session not found: ${pathOrId}`);\n }\n\n static async list(cwd: string): Promise<SessionListItem[]> {\n const dir = join(DEFAULT_SESSION_ROOT, sanitizeCwd(cwd));\n return JsonlSessionStore.listDirectory(dir);\n }\n\n static async listAll(\n root: string = DEFAULT_SESSION_ROOT\n ): Promise<SessionListItem[]> {\n if (!(await pathExists(root))) {\n return [];\n }\n const dirs = await readdir(root, { withFileTypes: true });\n const lists = await Promise.all(\n dirs\n .filter((entry) => entry.isDirectory())\n .map((entry) => JsonlSessionStore.listDirectory(join(root, entry.name)))\n );\n return lists.flat().sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n private static async listDirectory(dir: string): Promise<SessionListItem[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const files = await readdir(dir, { withFileTypes: true });\n const candidates = files\n .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))\n .map((entry) => join(dir, entry.name));\n const items = await Promise.all(\n candidates.map(async (path): Promise<SessionListItem | undefined> => {\n try {\n const store = await JsonlSessionStore.open(path);\n return {\n id: store.header.id,\n path,\n cwd: store.header.cwd,\n timestamp: store.header.timestamp,\n name: store.header.name,\n leafId: store.getLeafEntry()?.id ?? null,\n };\n } catch {\n return undefined;\n }\n })\n );\n return items\n .filter((item): item is SessionListItem => item != null)\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n getEntries(): SessionEntry[] {\n return [...this.entries];\n }\n\n getEntry(id: string): SessionEntry | undefined {\n return this.entries.find((entry) => entry.id === id);\n }\n\n getChildren(id: string): SessionEntry[] {\n return this.entries.filter((entry) => entry.parentId === id);\n }\n\n getTree(): SessionTreeNode[] {\n const byParent = new Map<string | null, SessionEntry[]>();\n for (const entry of this.entries) {\n const siblings = byParent.get(entry.parentId) ?? [];\n siblings.push(entry);\n byParent.set(entry.parentId, siblings);\n }\n const build = (parentId: string | null): SessionTreeNode[] =>\n (byParent.get(parentId) ?? []).map((entry) => ({\n entry,\n children: build(entry.id),\n }));\n return build(null);\n }\n\n getLeafEntry(): SessionEntry | undefined {\n const state = [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionStateEntry => entry.type === 'session_state'\n );\n if (state) {\n return state.data.leafId == null\n ? undefined\n : this.getEntry(state.data.leafId);\n }\n return [...this.entries]\n .reverse()\n .find((entry) => entry.type === 'message' || entry.type === 'summary');\n }\n\n getPath(\n entryId: string | undefined = this.getLeafEntry()?.id\n ): SessionEntry[] {\n if (entryId == null || entryId === '') {\n return [];\n }\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const path: SessionEntry[] = [];\n let current: SessionEntry | undefined = byId.get(entryId);\n while (current) {\n path.push(current);\n current =\n current.parentId == null ? undefined : byId.get(current.parentId);\n }\n return path.reverse();\n }\n\n getMessages(entryId?: string): BaseMessage[] {\n const messages: BaseMessage[] = [];\n for (const entry of this.getPath(entryId)) {\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n } else if (entry.type === 'summary') {\n messages.push(new SystemMessage(entry.data.text));\n }\n }\n return messages;\n }\n\n getForkPoints(): SessionMessageEntry[] {\n return this.entries.filter(\n (entry): entry is SessionMessageEntry =>\n entry.type === 'message' && entry.data.role === 'user'\n );\n }\n\n getLabel(entryId: string): string | undefined {\n return [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionLabelEntry =>\n entry.type === 'label' && entry.data.targetEntryId === entryId\n )?.data.label;\n }\n\n async setLabel(entryId: string, label: string): Promise<SessionLabelEntry> {\n return this.appendEntry<SessionLabelEntry>({\n type: 'label',\n parentId: this.getLeafEntry()?.id ?? null,\n data: { targetEntryId: entryId, label },\n });\n }\n\n async appendMessage(\n message: BaseMessage,\n parentId: string | null = this.getLeafEntry()?.id ?? null\n ): Promise<SessionMessageEntry> {\n const entry = await this.appendEntry<SessionMessageEntry>({\n type: 'message',\n parentId,\n data: {\n role: getMessageRole(message),\n message: serializeMessage(message),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendRunEvent(\n event: string,\n payload?: unknown,\n params?: { runId?: string; threadId?: string }\n ): Promise<SessionRunEventEntry> {\n return this.appendEntry<SessionRunEventEntry>({\n type: 'run_event',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n event,\n ...(params?.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params?.threadId != null && params.threadId !== ''\n ? { threadId: params.threadId }\n : {}),\n ...(typeof payload !== 'undefined'\n ? { payload: toJsonValue(payload) }\n : {}),\n },\n });\n }\n\n async setLeaf(leafId: string | null): Promise<SessionStateEntry> {\n return this.appendEntry<SessionStateEntry>({\n type: 'session_state',\n parentId: leafId,\n data: { leafId },\n });\n }\n\n async appendEntryForCompaction(params: {\n text: string;\n tokenCount?: number;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n instructions?: string;\n parentId?: string | null;\n }): Promise<SessionSummaryEntry> {\n const tokenCount =\n typeof params.tokenCount === 'number' &&\n Number.isFinite(params.tokenCount) &&\n params.tokenCount >= 0\n ? params.tokenCount\n : undefined;\n const entry = await this.appendEntry<SessionSummaryEntry>({\n type: 'summary',\n parentId:\n 'parentId' in params\n ? (params.parentId ?? null)\n : (this.getLeafEntry()?.id ?? null),\n data: {\n text: params.text,\n ...(tokenCount != null ? { tokenCount } : {}),\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n ...(params.instructions != null && params.instructions !== ''\n ? { instructions: params.instructions }\n : {}),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendCompactionEntry(params: {\n summaryEntryId: string;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n }): Promise<SessionCompactionEntry> {\n return this.appendEntry<SessionCompactionEntry>({\n type: 'compaction',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n summaryEntryId: params.summaryEntryId,\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n },\n });\n }\n\n async appendCheckpoint(params: {\n source: SessionCheckpointEntry['data']['source'];\n threadId: string;\n runId?: string;\n checkpointId?: string;\n checkpointNs?: string;\n parentCheckpointId?: string;\n reason?: string;\n }): Promise<SessionCheckpointEntry> {\n return this.appendEntry<SessionCheckpointEntry>({\n type: 'checkpoint',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n provider: 'langgraph',\n source: params.source,\n threadId: params.threadId,\n ...(params.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params.checkpointId != null && params.checkpointId !== ''\n ? { checkpointId: params.checkpointId }\n : {}),\n ...(params.checkpointNs != null\n ? { checkpointNs: params.checkpointNs }\n : {}),\n ...(params.parentCheckpointId != null &&\n params.parentCheckpointId !== ''\n ? { parentCheckpointId: params.parentCheckpointId }\n : {}),\n ...(params.reason != null && params.reason !== ''\n ? { reason: params.reason }\n : {}),\n },\n });\n }\n\n getCheckpoints(threadId?: string): SessionCheckpointEntry[] {\n return this.entries.filter(\n (entry): entry is SessionCheckpointEntry =>\n entry.type === 'checkpoint' &&\n (threadId == null || entry.data.threadId === threadId)\n );\n }\n\n getLatestCheckpoint(threadId?: string): SessionCheckpointEntry | undefined {\n const checkpoints = this.getCheckpoints(threadId);\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n return checkpoint;\n }\n return undefined;\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<SessionEntry | undefined> {\n const target = this.getBranchTarget(entryId, options.position ?? 'at');\n await this.setLeaf(target?.id ?? null);\n return target;\n }\n\n async createBranchedSession(\n entryId: string | undefined = this.getLeafEntry()?.id,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n const target =\n entryId != null && entryId !== ''\n ? this.getBranchTarget(entryId, options.position ?? 'at')\n : this.getLeafEntry();\n const newStore = await JsonlSessionStore.create({\n cwd: options.cwd ?? this.header.cwd,\n name: options.name ?? this.header.name,\n parentSession: this.path,\n });\n const pathEntries = target ? this.getPath(target.id) : [];\n for (const entry of pathEntries) {\n await newStore.appendExistingEntry(entry);\n }\n await newStore.setLeaf(target?.id ?? null);\n return newStore;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<JsonlSessionStore> {\n return this.createBranchedSession(this.getLeafEntry()?.id, {\n ...options,\n position: 'at',\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n return this.createBranchedSession(entryId, {\n ...options,\n position: options.position ?? 'before',\n });\n }\n\n private getBranchTarget(\n entryId: string,\n position: 'before' | 'at'\n ): SessionEntry | undefined {\n const entry = this.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : this.getEntry(entry.parentId);\n }\n\n private async appendExistingEntry(entry: SessionEntry): Promise<void> {\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n }\n\n private async appendEntry<TEntry extends SessionEntry>(params: {\n type: TEntry['type'];\n parentId: string | null;\n data: TEntry['data'];\n }): Promise<TEntry> {\n const entry = {\n type: params.type,\n id: createEntryId(),\n parentId: params.parentId,\n timestamp: createTimestamp(),\n data: params.data,\n } as TEntry;\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n return entry;\n }\n\n async existsOnDisk(): Promise<boolean> {\n const fileStat = await stat(this.path).catch(() => undefined);\n return fileStat?.isFile() === true;\n }\n}\n\nexport const SessionManager = JsonlSessionStore;\n"],"names":[],"mappings":";;;;;;;;AAsCA,MAAM,eAAe,GAAG,CAAC;AACzB,MAAM,oBAAoB,GAAG,IAAI,CAC/B,OAAO,EAAE,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,CACX;AAED,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;AAC/B,IAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9D;AAEA,SAAS,iBAAiB,CAAC,OAAiC,EAAA;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE;AACxD,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,SAAS,QAAQ;AACvF,IAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;AACvE;AAEA,eAAe,UAAU,CAAC,IAAY,EAAA;AACpC,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI;IACb;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF;AAEA,SAAS,SAAS,CAAC,IAAY,EAAA;AAC7B,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACtB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiC;AAC/D,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7B,YAAA,OAAO,MAAM;QACf;AACA,QAAA,IAAI,IAAI,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;AAC9D,YAAA,OAAO,MAAM;QACf;AACA,QAAA,OAAO,SAAS;IAClB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,SAAS;IAClB;AACF;AAEA,SAAS,YAAY,CAAC,OAAiC,EAAA;IACrD,OAAO;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,EAAE,EAAE,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE;QAC1C,SAAS,EAAE,eAAe,EAAE;AAC5B,QAAA,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK;AAC3C,cAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;cACpB,EAAE,CAAC;QACP,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,KAAK;AAC7D,cAAE,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa;cACtC,EAAE,CAAC;KACR;AACH;AAEA,SAAS,WAAW,CAAC,OAAuB,EAAA;IAC1C,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5E;MAEa,iBAAiB,CAAA;AACnB,IAAA,IAAI;AACJ,IAAA,MAAM;AACP,IAAA,OAAO;AAEf,IAAA,WAAA,CAAoB,MAInB,EAAA;AACC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAC3B,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5C;AAEA,IAAA,OAAO,cAAc,GAAA;AACnB,QAAA,OAAO,oBAAoB;IAC7B;AAEA,IAAA,aAAa,MAAM,CACjB,OAAqD,EAAA;QAErD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE;AACxD,QAAA,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK;AACvC,cAAE,OAAO,CAAC,OAAO,CAAC,IAAI;cACpB,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;AACtD,QAAA,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,EAAA,CAAI,EAAE;AACnD,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7D;AAEA,IAAA,aAAa,IAAI,CAAC,QAAgB,EAAA;QAChC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1D,QAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzC;AAEA,IAAA,aAAa,QAAQ,CAAC,IAAY,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC5C,MAAM,MAAM,GAAG;aACZ,KAAK,CAAC,IAAI;aACV,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,CAAC,IAAI,KAA2C,IAAI,IAAI,IAAI,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,CAAC,IAAI,KAA4B,IAAI,CAAC,IAAI,KAAK,SAAS,CACzD;QACD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAA,CAAE,CAAC;QACtD;AACA,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,CAAC,IAAI,KAA2B,IAAI,CAAC,IAAI,KAAK,SAAS,CACxD;AACD,QAAA,OAAO,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACnE;AAEA,IAAA,aAAa,WAAW,CAAC,QAAgB,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACrE,QAAA,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE;AAClD,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,IAAI,KACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzE;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACxB;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAA,cAAA,CAAgB,CAAC;QAC1D;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAA,CAAE,CAAC;IACnD;AAEA,IAAA,aAAa,IAAI,CAAC,GAAW,EAAA;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACxD,QAAA,OAAO,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC;IAC7C;AAEA,IAAA,aAAa,OAAO,CAClB,OAAe,oBAAoB,EAAA;QAEnC,IAAI,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B;aACG,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;aACrC,GAAG,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3E;QACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E;AAEQ,IAAA,aAAa,aAAa,CAAC,GAAW,EAAA;QAC5C,IAAI,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5B,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG;AAChB,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjE,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,KAA0C;AAClE,YAAA,IAAI;gBACF,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChD,OAAO;AACL,oBAAA,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;oBACnB,IAAI;AACJ,oBAAA,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;AACrB,oBAAA,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;AACjC,oBAAA,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;oBACvB,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;iBACzC;YACH;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,SAAS;YAClB;QACF,CAAC,CAAC,CACH;AACD,QAAA,OAAO;aACJ,MAAM,CAAC,CAAC,IAAI,KAA8B,IAAI,IAAI,IAAI;AACtD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAC1B;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;IACtD;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC;IAC9D;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC;AACzD,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnD,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACxC;QACA,MAAM,KAAK,GAAG,CAAC,QAAuB,KACpC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM;YAC7C,KAAK;AACL,YAAA,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1B,SAAA,CAAC,CAAC;AACL,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;AAC3B,aAAA,OAAO;AACP,aAAA,IAAI,CACH,CAAC,KAAK,KAAiC,KAAK,CAAC,IAAI,KAAK,eAAe,CACtE;QACH,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI;AAC1B,kBAAE;kBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC;AACA,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO;AACpB,aAAA,OAAO;AACP,aAAA,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;IAC1E;AAEA,IAAA,OAAO,CACL,OAAA,GAA8B,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAA;QAErD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE;AACrC,YAAA,OAAO,EAAE;QACX;QACA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAmB,EAAE;QAC/B,IAAI,OAAO,GAA6B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QACzD,OAAO,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAClB,OAAO;AACL,gBAAA,OAAO,CAAC,QAAQ,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QACrE;AACA,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACvB;AAEA,IAAA,WAAW,CAAC,OAAgB,EAAA;QAC1B,MAAM,QAAQ,GAAkB,EAAE;QAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,gBAAA,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD;AAAO,iBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AACnC,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD;QACF;AACA,QAAA,OAAO,QAAQ;IACjB;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,KAAK,KACJ,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CACzD;IACH;AAEA,IAAA,QAAQ,CAAC,OAAe,EAAA;AACtB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO;AACpB,aAAA,OAAO;aACP,IAAI,CACH,CAAC,KAAK,KACJ,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,OAAO,CACjE,EAAE,IAAI,CAAC,KAAK;IACjB;AAEA,IAAA,MAAM,QAAQ,CAAC,OAAe,EAAE,KAAa,EAAA;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAoB;AACzC,YAAA,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AACzC,YAAA,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE;AACxC,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,aAAa,CACjB,OAAoB,EACpB,QAAA,GAA0B,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI,EAAA;AAEzD,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAsB;AACxD,YAAA,IAAI,EAAE,SAAS;YACf,QAAQ;AACR,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;AAC7B,gBAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;AACnC,aAAA;AACF,SAAA,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5B,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,cAAc,CAClB,KAAa,EACb,OAAiB,EACjB,MAA8C,EAAA;QAE9C,OAAO,IAAI,CAAC,WAAW,CAAuB;AAC5C,YAAA,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AACzC,YAAA,IAAI,EAAE;gBACJ,KAAK;gBACL,IAAI,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK;AAC5C,sBAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK;sBACrB,EAAE,CAAC;gBACP,IAAI,MAAM,EAAE,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK;AAClD,sBAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ;sBAC3B,EAAE,CAAC;AACP,gBAAA,IAAI,OAAO,OAAO,KAAK;sBACnB,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;sBAC/B,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC;IACJ;IAEA,MAAM,OAAO,CAAC,MAAqB,EAAA;QACjC,OAAO,IAAI,CAAC,WAAW,CAAoB;AACzC,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,EAAE,MAAM,EAAE;AACjB,SAAA,CAAC;IACJ;IAEA,MAAM,wBAAwB,CAAC,MAO9B,EAAA;AACC,QAAA,MAAM,UAAU,GACd,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;AACrC,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAClC,MAAM,CAAC,UAAU,IAAI;cACjB,MAAM,CAAC;cACP,SAAS;AACf,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAsB;AACxD,YAAA,IAAI,EAAE,SAAS;YACf,QAAQ,EACN,UAAU,IAAI;AACZ,mBAAG,MAAM,CAAC,QAAQ,IAAI,IAAI;mBACvB,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC;AACvC,YAAA,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,gBAAA,IAAI,UAAU,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;gBAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK;AACzD,sBAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;sBACnC,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5B,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,qBAAqB,CAAC,MAI3B,EAAA;QACC,OAAO,IAAI,CAAC,WAAW,CAAyB;AAC9C,YAAA,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AACzC,YAAA,IAAI,EAAE;gBACJ,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;AAC9C,aAAA;AACF,SAAA,CAAC;IACJ;IAEA,MAAM,gBAAgB,CAAC,MAQtB,EAAA;QACC,OAAO,IAAI,CAAC,WAAW,CAAyB;AAC9C,YAAA,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AACzC,YAAA,IAAI,EAAE;AACJ,gBAAA,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK;AAC3C,sBAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK;sBACrB,EAAE,CAAC;gBACP,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK;AACzD,sBAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;sBACnC,EAAE,CAAC;AACP,gBAAA,IAAI,MAAM,CAAC,YAAY,IAAI;AACzB,sBAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;sBACnC,EAAE,CAAC;AACP,gBAAA,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI;oBACrC,MAAM,CAAC,kBAAkB,KAAK;AAC5B,sBAAE,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;sBAC/C,EAAE,CAAC;gBACP,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK;AAC7C,sBAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;sBACvB,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,QAAiB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,KAAK,KACJ,KAAK,CAAC,IAAI,KAAK,YAAY;AAC3B,aAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CACzD;IACH;AAEA,IAAA,mBAAmB,CAAC,QAAiB,EAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AACjD,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;YACjC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACtC,gBAAA,OAAO,SAAS;YAClB;AACA,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,MAAM,CACV,OAAe,EACf,UAAgC,EAAE,EAAA;AAElC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACtE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;AACtC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,qBAAqB,CACzB,OAAA,GAA8B,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EACrD,OAAA,GAA8B,EAAE,EAAA;QAEhC,MAAM,MAAM,GACV,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK;AAC7B,cAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;AACxD,cAAE,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;YACtC,aAAa,EAAE,IAAI,CAAC,IAAI;AACzB,SAAA,CAAC;AACF,QAAA,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AACzD,QAAA,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;AAC/B,YAAA,MAAM,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC3C;QACA,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;AAC1C,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,MAAM,KAAK,CAAC,OAAA,GAA8B,EAAE,EAAA;QAC1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE;AACzD,YAAA,GAAG,OAAO;AACV,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,CACR,OAAe,EACf,UAA8B,EAAE,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACzC,YAAA,GAAG,OAAO;AACV,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ;AACvC,SAAA,CAAC;IACJ;IAEQ,eAAe,CACrB,OAAe,EACf,QAAyB,EAAA;QAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAA,CAAE,CAAC;QAChD;AACA,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,KAAK;QACd;QACA,OAAO,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC3E;IAEQ,MAAM,mBAAmB,CAAC,KAAmB,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;IACnE;IAEQ,MAAM,WAAW,CAA8B,MAItD,EAAA;AACC,QAAA,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,aAAa,EAAE;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,eAAe,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SACR;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACjE,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7D,QAAA,OAAO,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI;IACpC;AACD;AAEM,MAAM,cAAc,GAAG;;;;"}
|
|
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,219 +1,205 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { createContentAggregator } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import "../common/enum.mjs";
|
|
2
|
+
import "../common/index.mjs";
|
|
3
|
+
import { createContentAggregator } from "../stream.mjs";
|
|
4
|
+
import { ModelEndHandler, ToolEndHandler } from "../events.mjs";
|
|
5
|
+
import { toJsonValue } from "./messageSerialization.mjs";
|
|
6
|
+
import { createTimestamp } from "./ids.mjs";
|
|
7
|
+
//#region src/session/handlers.ts
|
|
7
8
|
function isToolCompletion(result) {
|
|
8
|
-
|
|
9
|
+
return "tool_call" in result;
|
|
9
10
|
}
|
|
10
11
|
function createEventFactory(params) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
let sequence = 0;
|
|
13
|
+
return (type, data) => ({
|
|
14
|
+
type,
|
|
15
|
+
sequence: sequence++,
|
|
16
|
+
runId: params.runId,
|
|
17
|
+
threadId: params.threadId,
|
|
18
|
+
timestamp: createTimestamp(),
|
|
19
|
+
...typeof data !== "undefined" ? { data: toJsonValue(data) } : {}
|
|
20
|
+
});
|
|
20
21
|
}
|
|
21
22
|
function getTokenCount(value) {
|
|
22
|
-
|
|
23
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
23
24
|
}
|
|
24
25
|
function updateUsage(usage, data) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
: getTokenCount(metadata.total_tokens);
|
|
34
|
-
usage.inputTokens += inputTokens;
|
|
35
|
-
usage.outputTokens += outputTokens;
|
|
36
|
-
usage.totalTokens += totalTokens;
|
|
26
|
+
const metadata = data?.output?.usage_metadata;
|
|
27
|
+
if (!metadata) return;
|
|
28
|
+
const inputTokens = getTokenCount(metadata.input_tokens);
|
|
29
|
+
const outputTokens = getTokenCount(metadata.output_tokens);
|
|
30
|
+
const totalTokens = metadata.total_tokens == null ? inputTokens + outputTokens : getTokenCount(metadata.total_tokens);
|
|
31
|
+
usage.inputTokens += inputTokens;
|
|
32
|
+
usage.outputTokens += outputTokens;
|
|
33
|
+
usage.totalTokens += totalTokens;
|
|
37
34
|
}
|
|
38
35
|
async function callUserHandler(params) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
await handler.handle(params.event, params.data, params.metadata, params.graph);
|
|
36
|
+
const handler = params.userHandlers?.[params.event];
|
|
37
|
+
if (!handler) return;
|
|
38
|
+
await handler.handle(params.event, params.data, params.metadata, params.graph);
|
|
44
39
|
}
|
|
45
40
|
function createRunHandlers(params) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
userHandlers: params.userHandlers,
|
|
207
|
-
event,
|
|
208
|
-
data,
|
|
209
|
-
metadata,
|
|
210
|
-
graph,
|
|
211
|
-
});
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
return { contentParts, steps, usage, events, handlers };
|
|
41
|
+
const { contentParts, aggregateContent } = createContentAggregator();
|
|
42
|
+
const steps = [];
|
|
43
|
+
const usage = {
|
|
44
|
+
inputTokens: 0,
|
|
45
|
+
outputTokens: 0,
|
|
46
|
+
totalTokens: 0
|
|
47
|
+
};
|
|
48
|
+
const events = [];
|
|
49
|
+
const createEvent = createEventFactory({
|
|
50
|
+
runId: params.runId,
|
|
51
|
+
threadId: params.threadId
|
|
52
|
+
});
|
|
53
|
+
const emitEvent = (event) => {
|
|
54
|
+
events.push(event);
|
|
55
|
+
params.onEvent?.(event);
|
|
56
|
+
};
|
|
57
|
+
const toolEndHandler = new ToolEndHandler();
|
|
58
|
+
const modelEndHandler = new ModelEndHandler();
|
|
59
|
+
emitEvent(createEvent("run.started"));
|
|
60
|
+
return {
|
|
61
|
+
contentParts,
|
|
62
|
+
steps,
|
|
63
|
+
usage,
|
|
64
|
+
events,
|
|
65
|
+
handlers: {
|
|
66
|
+
["on_chat_model_stream"]: { handle: async (event, data, metadata, graph) => {
|
|
67
|
+
await callUserHandler({
|
|
68
|
+
userHandlers: params.userHandlers,
|
|
69
|
+
event,
|
|
70
|
+
data,
|
|
71
|
+
metadata,
|
|
72
|
+
graph
|
|
73
|
+
});
|
|
74
|
+
} },
|
|
75
|
+
["on_chat_model_end"]: { handle: async (event, data, metadata, graph) => {
|
|
76
|
+
await modelEndHandler.handle(event, data, metadata, graph);
|
|
77
|
+
updateUsage(usage, data);
|
|
78
|
+
emitEvent(createEvent("usage.updated", usage));
|
|
79
|
+
await callUserHandler({
|
|
80
|
+
userHandlers: params.userHandlers,
|
|
81
|
+
event,
|
|
82
|
+
data,
|
|
83
|
+
metadata,
|
|
84
|
+
graph
|
|
85
|
+
});
|
|
86
|
+
} },
|
|
87
|
+
["on_tool_end"]: { handle: async (event, data, metadata, graph) => {
|
|
88
|
+
await toolEndHandler.handle(event, data, metadata, graph);
|
|
89
|
+
await callUserHandler({
|
|
90
|
+
userHandlers: params.userHandlers,
|
|
91
|
+
event,
|
|
92
|
+
data,
|
|
93
|
+
metadata,
|
|
94
|
+
graph
|
|
95
|
+
});
|
|
96
|
+
} },
|
|
97
|
+
["on_run_step"]: { handle: async (event, data, metadata, graph) => {
|
|
98
|
+
const runStep = data;
|
|
99
|
+
steps.push(runStep);
|
|
100
|
+
aggregateContent({
|
|
101
|
+
event: "on_run_step",
|
|
102
|
+
data: runStep
|
|
103
|
+
});
|
|
104
|
+
if (runStep.stepDetails.type === "tool_calls") emitEvent(createEvent("tool.started", runStep));
|
|
105
|
+
await callUserHandler({
|
|
106
|
+
userHandlers: params.userHandlers,
|
|
107
|
+
event,
|
|
108
|
+
data,
|
|
109
|
+
metadata,
|
|
110
|
+
graph
|
|
111
|
+
});
|
|
112
|
+
} },
|
|
113
|
+
["on_run_step_delta"]: { handle: async (event, data, metadata, graph) => {
|
|
114
|
+
const delta = data;
|
|
115
|
+
aggregateContent({
|
|
116
|
+
event: "on_run_step_delta",
|
|
117
|
+
data: delta
|
|
118
|
+
});
|
|
119
|
+
emitEvent(createEvent("tool.delta", delta));
|
|
120
|
+
await callUserHandler({
|
|
121
|
+
userHandlers: params.userHandlers,
|
|
122
|
+
event,
|
|
123
|
+
data,
|
|
124
|
+
metadata,
|
|
125
|
+
graph
|
|
126
|
+
});
|
|
127
|
+
} },
|
|
128
|
+
["on_run_step_completed"]: { handle: async (event, data, metadata, graph) => {
|
|
129
|
+
const completed = data;
|
|
130
|
+
aggregateContent({
|
|
131
|
+
event: "on_run_step_completed",
|
|
132
|
+
data: completed
|
|
133
|
+
});
|
|
134
|
+
if (isToolCompletion(completed.result)) emitEvent(createEvent("tool.completed", completed));
|
|
135
|
+
await callUserHandler({
|
|
136
|
+
userHandlers: params.userHandlers,
|
|
137
|
+
event,
|
|
138
|
+
data,
|
|
139
|
+
metadata,
|
|
140
|
+
graph
|
|
141
|
+
});
|
|
142
|
+
} },
|
|
143
|
+
["on_message_delta"]: { handle: async (event, data, metadata, graph) => {
|
|
144
|
+
const delta = data;
|
|
145
|
+
aggregateContent({
|
|
146
|
+
event: "on_message_delta",
|
|
147
|
+
data: delta
|
|
148
|
+
});
|
|
149
|
+
emitEvent(createEvent("message.delta", delta));
|
|
150
|
+
await callUserHandler({
|
|
151
|
+
userHandlers: params.userHandlers,
|
|
152
|
+
event,
|
|
153
|
+
data,
|
|
154
|
+
metadata,
|
|
155
|
+
graph
|
|
156
|
+
});
|
|
157
|
+
} },
|
|
158
|
+
["on_reasoning_delta"]: { handle: async (event, data, metadata, graph) => {
|
|
159
|
+
const delta = data;
|
|
160
|
+
aggregateContent({
|
|
161
|
+
event: "on_reasoning_delta",
|
|
162
|
+
data: delta
|
|
163
|
+
});
|
|
164
|
+
emitEvent(createEvent("reasoning.delta", delta));
|
|
165
|
+
await callUserHandler({
|
|
166
|
+
userHandlers: params.userHandlers,
|
|
167
|
+
event,
|
|
168
|
+
data,
|
|
169
|
+
metadata,
|
|
170
|
+
graph
|
|
171
|
+
});
|
|
172
|
+
} },
|
|
173
|
+
["on_summarize_delta"]: { handle: async (event, data, metadata, graph) => {
|
|
174
|
+
aggregateContent({
|
|
175
|
+
event: "on_summarize_delta",
|
|
176
|
+
data
|
|
177
|
+
});
|
|
178
|
+
await callUserHandler({
|
|
179
|
+
userHandlers: params.userHandlers,
|
|
180
|
+
event,
|
|
181
|
+
data,
|
|
182
|
+
metadata,
|
|
183
|
+
graph
|
|
184
|
+
});
|
|
185
|
+
} },
|
|
186
|
+
["on_summarize_complete"]: { handle: async (event, data, metadata, graph) => {
|
|
187
|
+
aggregateContent({
|
|
188
|
+
event: "on_summarize_complete",
|
|
189
|
+
data
|
|
190
|
+
});
|
|
191
|
+
await callUserHandler({
|
|
192
|
+
userHandlers: params.userHandlers,
|
|
193
|
+
event,
|
|
194
|
+
data,
|
|
195
|
+
metadata,
|
|
196
|
+
graph
|
|
197
|
+
});
|
|
198
|
+
} }
|
|
199
|
+
}
|
|
200
|
+
};
|
|
216
201
|
}
|
|
217
|
-
|
|
202
|
+
//#endregion
|
|
218
203
|
export { createRunHandlers };
|
|
219
|
-
|
|
204
|
+
|
|
205
|
+
//# sourceMappingURL=handlers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.mjs","sources":["../../../src/session/handlers.ts"],"sourcesContent":["import type { UsageMetadata } from '@langchain/core/messages';\nimport type {\n AgentSessionHandlersResult,\n AgentSessionStreamEvent,\n AgentSessionUsage,\n} from './types';\nimport type * as t from '@/types';\nimport { ModelEndHandler, ToolEndHandler } from '@/events';\nimport { toJsonValue } from './messageSerialization';\nimport { createContentAggregator } from '@/stream';\nimport { createTimestamp } from './ids';\nimport { GraphEvents } from '@/common';\n\ntype CompletedRunStepResult =\n | t.ToolEndEvent\n | (t.SummaryCompleted & { id: string; index: number });\n\nfunction isToolCompletion(\n result: CompletedRunStepResult\n): result is t.ToolEndEvent {\n return 'tool_call' in result;\n}\n\nfunction createEventFactory(params: {\n runId: string;\n threadId: string;\n}): (\n type: AgentSessionStreamEvent['type'],\n data?: unknown\n) => AgentSessionStreamEvent {\n let sequence = 0;\n return (type, data) => ({\n type,\n sequence: sequence++,\n runId: params.runId,\n threadId: params.threadId,\n timestamp: createTimestamp(),\n ...(typeof data !== 'undefined' ? { data: toJsonValue(data) } : {}),\n });\n}\n\nfunction getTokenCount(value: number | null | undefined): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nfunction updateUsage(usage: AgentSessionUsage, data: t.ModelEndData): void {\n const metadata = data?.output?.usage_metadata as\n | Partial<UsageMetadata>\n | undefined;\n if (!metadata) {\n return;\n }\n const inputTokens = getTokenCount(metadata.input_tokens);\n const outputTokens = getTokenCount(metadata.output_tokens);\n const totalTokens =\n metadata.total_tokens == null\n ? inputTokens + outputTokens\n : getTokenCount(metadata.total_tokens);\n usage.inputTokens += inputTokens;\n usage.outputTokens += outputTokens;\n usage.totalTokens += totalTokens;\n}\n\nasync function callUserHandler(params: {\n userHandlers?: Record<string, t.EventHandler>;\n event: string;\n data: Parameters<t.EventHandler['handle']>[1];\n metadata?: Record<string, unknown>;\n graph?: Parameters<t.EventHandler['handle']>[3];\n}): Promise<void> {\n const handler = params.userHandlers?.[params.event];\n if (!handler) {\n return;\n }\n await handler.handle(\n params.event,\n params.data,\n params.metadata,\n params.graph\n );\n}\n\nexport function createRunHandlers(params: {\n runId: string;\n threadId: string;\n userHandlers?: Record<string, t.EventHandler>;\n onEvent?: (event: AgentSessionStreamEvent) => void;\n}): AgentSessionHandlersResult {\n const { contentParts, aggregateContent } = createContentAggregator();\n const steps: t.RunStep[] = [];\n const usage: AgentSessionUsage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n const events: AgentSessionStreamEvent[] = [];\n const createEvent = createEventFactory({\n runId: params.runId,\n threadId: params.threadId,\n });\n const emitEvent = (event: AgentSessionStreamEvent): void => {\n events.push(event);\n params.onEvent?.(event);\n };\n const toolEndHandler = new ToolEndHandler();\n const modelEndHandler = new ModelEndHandler();\n\n emitEvent(createEvent('run.started'));\n\n const handlers: Record<string, t.EventHandler> = {\n [GraphEvents.CHAT_MODEL_STREAM]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.CHAT_MODEL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await modelEndHandler.handle(\n event,\n data as t.ModelEndData,\n metadata,\n graph\n );\n updateUsage(usage, data as t.ModelEndData);\n emitEvent(createEvent('usage.updated', usage));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.TOOL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await toolEndHandler.handle(\n event,\n data as t.StreamEventData,\n metadata,\n graph\n );\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const runStep = data as t.RunStep;\n steps.push(runStep);\n aggregateContent({ event: GraphEvents.ON_RUN_STEP, data: runStep });\n if (runStep.stepDetails.type === 'tool_calls') {\n emitEvent(createEvent('tool.started', runStep));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.RunStepDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_RUN_STEP_DELTA, data: delta });\n emitEvent(createEvent('tool.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_COMPLETED]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const completed = data as unknown as { result: CompletedRunStepResult };\n aggregateContent({\n event: GraphEvents.ON_RUN_STEP_COMPLETED,\n data: completed as { result: t.ToolEndEvent },\n });\n if (isToolCompletion(completed.result)) {\n emitEvent(createEvent('tool.completed', completed));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_MESSAGE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.MessageDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_MESSAGE_DELTA, data: delta });\n emitEvent(createEvent('message.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_REASONING_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.ReasoningDeltaEvent;\n aggregateContent({\n event: GraphEvents.ON_REASONING_DELTA,\n data: delta,\n });\n emitEvent(createEvent('reasoning.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_DELTA,\n data: data as t.SummarizeDeltaData,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_COMPLETE]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_COMPLETE,\n data: data as t.SummarizeCompleteEvent,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n };\n\n return { contentParts, steps, usage, events, handlers };\n}\n"],"names":[],"mappings":"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"}
|
|
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 { ModelEndHandler, ToolEndHandler } from '@/events';\nimport { toJsonValue } from './messageSerialization';\nimport { createContentAggregator } from '@/stream';\nimport { createTimestamp } from './ids';\nimport { GraphEvents } from '@/common';\n\ntype CompletedRunStepResult =\n | t.ToolEndEvent\n | (t.SummaryCompleted & { id: string; index: number });\n\nfunction isToolCompletion(\n result: CompletedRunStepResult\n): result is t.ToolEndEvent {\n return 'tool_call' in result;\n}\n\nfunction createEventFactory(params: {\n runId: string;\n threadId: string;\n}): (\n type: AgentSessionStreamEvent['type'],\n data?: unknown\n) => AgentSessionStreamEvent {\n let sequence = 0;\n return (type, data) => ({\n type,\n sequence: sequence++,\n runId: params.runId,\n threadId: params.threadId,\n timestamp: createTimestamp(),\n ...(typeof data !== 'undefined' ? { data: toJsonValue(data) } : {}),\n });\n}\n\nfunction getTokenCount(value: number | null | undefined): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nfunction updateUsage(usage: AgentSessionUsage, data: t.ModelEndData): void {\n const metadata = data?.output?.usage_metadata as\n | Partial<UsageMetadata>\n | undefined;\n if (!metadata) {\n return;\n }\n const inputTokens = getTokenCount(metadata.input_tokens);\n const outputTokens = getTokenCount(metadata.output_tokens);\n const totalTokens =\n metadata.total_tokens == null\n ? inputTokens + outputTokens\n : getTokenCount(metadata.total_tokens);\n usage.inputTokens += inputTokens;\n usage.outputTokens += outputTokens;\n usage.totalTokens += totalTokens;\n}\n\nasync function callUserHandler(params: {\n userHandlers?: Record<string, t.EventHandler>;\n event: string;\n data: Parameters<t.EventHandler['handle']>[1];\n metadata?: Record<string, unknown>;\n graph?: Parameters<t.EventHandler['handle']>[3];\n}): Promise<void> {\n const handler = params.userHandlers?.[params.event];\n if (!handler) {\n return;\n }\n await handler.handle(\n params.event,\n params.data,\n params.metadata,\n params.graph\n );\n}\n\nexport function createRunHandlers(params: {\n runId: string;\n threadId: string;\n userHandlers?: Record<string, t.EventHandler>;\n onEvent?: (event: AgentSessionStreamEvent) => void;\n}): AgentSessionHandlersResult {\n const { contentParts, aggregateContent } = createContentAggregator();\n const steps: t.RunStep[] = [];\n const usage: AgentSessionUsage = {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n };\n const events: AgentSessionStreamEvent[] = [];\n const createEvent = createEventFactory({\n runId: params.runId,\n threadId: params.threadId,\n });\n const emitEvent = (event: AgentSessionStreamEvent): void => {\n events.push(event);\n params.onEvent?.(event);\n };\n const toolEndHandler = new ToolEndHandler();\n const modelEndHandler = new ModelEndHandler();\n\n emitEvent(createEvent('run.started'));\n\n const handlers: Record<string, t.EventHandler> = {\n [GraphEvents.CHAT_MODEL_STREAM]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.CHAT_MODEL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await modelEndHandler.handle(\n event,\n data as t.ModelEndData,\n metadata,\n graph\n );\n updateUsage(usage, data as t.ModelEndData);\n emitEvent(createEvent('usage.updated', usage));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.TOOL_END]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n await toolEndHandler.handle(\n event,\n data as t.StreamEventData,\n metadata,\n graph\n );\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const runStep = data as t.RunStep;\n steps.push(runStep);\n aggregateContent({ event: GraphEvents.ON_RUN_STEP, data: runStep });\n if (runStep.stepDetails.type === 'tool_calls') {\n emitEvent(createEvent('tool.started', runStep));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.RunStepDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_RUN_STEP_DELTA, data: delta });\n emitEvent(createEvent('tool.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_RUN_STEP_COMPLETED]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const completed = data as unknown as { result: CompletedRunStepResult };\n aggregateContent({\n event: GraphEvents.ON_RUN_STEP_COMPLETED,\n data: completed as { result: t.ToolEndEvent },\n });\n if (isToolCompletion(completed.result)) {\n emitEvent(createEvent('tool.completed', completed));\n }\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_MESSAGE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.MessageDeltaEvent;\n aggregateContent({ event: GraphEvents.ON_MESSAGE_DELTA, data: delta });\n emitEvent(createEvent('message.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_REASONING_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n const delta = data as t.ReasoningDeltaEvent;\n aggregateContent({\n event: GraphEvents.ON_REASONING_DELTA,\n data: delta,\n });\n emitEvent(createEvent('reasoning.delta', delta));\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_DELTA]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_DELTA,\n data: data as t.SummarizeDeltaData,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n [GraphEvents.ON_SUMMARIZE_COMPLETE]: {\n handle: async (event, data, metadata, graph): Promise<void> => {\n aggregateContent({\n event: GraphEvents.ON_SUMMARIZE_COMPLETE,\n data: data as t.SummarizeCompleteEvent,\n });\n await callUserHandler({\n userHandlers: params.userHandlers,\n event,\n data,\n metadata,\n graph,\n });\n },\n },\n };\n\n return { contentParts, steps, usage, events, handlers };\n}\n"],"mappings":"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"}
|