@librechat/agents 3.2.21 → 3.2.31
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/agents/AgentContext.cjs +3 -2
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/events.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +200 -54
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +13 -7
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +2 -2
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langfuse.cjs +17 -1
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseToolOutputTracing.cjs +2 -2
- package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/index.cjs +1 -1
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +1 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +2 -2
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/toolCache.cjs +8 -5
- package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/fake.cjs +16 -14
- package/dist/cjs/llm/fake.cjs.map +1 -1
- package/dist/cjs/llm/google/index.cjs +22 -0
- package/dist/cjs/llm/google/index.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/common.cjs +88 -27
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
- package/dist/cjs/llm/init.cjs +2 -2
- package/dist/cjs/llm/invoke.cjs +108 -11
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +1 -1
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +1 -0
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +8 -7
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +124 -17
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/messages/reducer.cjs +1 -1
- package/dist/cjs/messages/reducer.cjs.map +1 -1
- package/dist/cjs/messages/tools.cjs +1 -1
- package/dist/cjs/messages/tools.cjs.map +1 -1
- package/dist/cjs/openai/index.cjs.map +1 -1
- package/dist/cjs/responses/index.cjs.map +1 -1
- package/dist/cjs/run.cjs +41 -20
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/AgentSession.cjs +4 -4
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/JsonlSessionStore.cjs +2 -2
- package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
- package/dist/cjs/session/handlers.cjs +2 -2
- package/dist/cjs/session/handlers.cjs.map +1 -1
- package/dist/cjs/stream.cjs +248 -25
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/Calculator.cjs +1 -1
- package/dist/cjs/tools/Calculator.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +37 -18
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/ToolSearch.cjs +1 -1
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +7 -4
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs +4 -4
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +2 -1
- package/dist/cjs/tools/handlers.cjs.map +1 -1
- package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
- package/dist/cjs/tools/local/FileCheckpointer.cjs +2 -1
- package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalCodingTools.cjs +45 -19
- package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs +3 -3
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionTools.cjs +2 -2
- package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +4 -3
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/local/attachments.cjs +0 -5
- package/dist/cjs/tools/local/attachments.cjs.map +1 -1
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +4 -4
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/search/firecrawl.cjs +1 -1
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
- package/dist/cjs/tools/search/rerankers.cjs +7 -3
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-search.cjs +1 -1
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +76 -8
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/utils/handlers.cjs +1 -1
- package/dist/cjs/utils/handlers.cjs.map +1 -1
- package/dist/cjs/utils/run.cjs +1 -1
- package/dist/cjs/utils/run.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +3 -2
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/events.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +200 -54
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs +13 -7
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/executeHooks.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +2 -2
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langfuse.mjs +17 -2
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseToolOutputTracing.mjs +2 -2
- package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
- package/dist/esm/llm/anthropic/index.mjs +1 -1
- package/dist/esm/llm/anthropic/index.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +1 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +2 -2
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/bedrock/toolCache.mjs +8 -5
- package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
- package/dist/esm/llm/fake.mjs +16 -14
- package/dist/esm/llm/fake.mjs.map +1 -1
- package/dist/esm/llm/google/index.mjs +23 -1
- package/dist/esm/llm/google/index.mjs.map +1 -1
- package/dist/esm/llm/google/utils/common.mjs +88 -27
- package/dist/esm/llm/google/utils/common.mjs.map +1 -1
- package/dist/esm/llm/init.mjs +2 -2
- package/dist/esm/llm/invoke.mjs +104 -7
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +1 -1
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +1 -1
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/index.mjs.map +1 -1
- package/dist/esm/llm/vertexai/index.mjs.map +1 -1
- package/dist/esm/main.mjs +1 -1
- package/dist/esm/messages/cache.mjs +8 -7
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +124 -18
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/messages/reducer.mjs +1 -1
- package/dist/esm/messages/reducer.mjs.map +1 -1
- package/dist/esm/messages/tools.mjs +1 -1
- package/dist/esm/messages/tools.mjs.map +1 -1
- package/dist/esm/openai/index.mjs.map +1 -1
- package/dist/esm/responses/index.mjs.map +1 -1
- package/dist/esm/run.mjs +41 -20
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/AgentSession.mjs +4 -4
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/JsonlSessionStore.mjs +2 -2
- package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
- package/dist/esm/session/handlers.mjs +2 -2
- package/dist/esm/session/handlers.mjs.map +1 -1
- package/dist/esm/stream.mjs +248 -25
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/Calculator.mjs +1 -1
- package/dist/esm/tools/Calculator.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +1 -1
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/SubagentTool.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +37 -18
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/ToolSearch.mjs +1 -1
- package/dist/esm/tools/ToolSearch.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +7 -4
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs +4 -4
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +2 -1
- package/dist/esm/tools/handlers.mjs.map +1 -1
- package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
- package/dist/esm/tools/local/FileCheckpointer.mjs +2 -1
- package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
- package/dist/esm/tools/local/LocalCodingTools.mjs +45 -19
- package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionEngine.mjs +3 -3
- package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionTools.mjs +2 -2
- package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +4 -3
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/local/attachments.mjs +0 -5
- package/dist/esm/tools/local/attachments.mjs.map +1 -1
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +4 -4
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/search/firecrawl.mjs +1 -1
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
- package/dist/esm/tools/search/rerankers.mjs +8 -4
- package/dist/esm/tools/search/rerankers.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-search.mjs +1 -1
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +76 -9
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/utils/handlers.mjs +1 -1
- package/dist/esm/utils/handlers.mjs.map +1 -1
- package/dist/esm/utils/run.mjs +1 -1
- package/dist/esm/utils/run.mjs.map +1 -1
- package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +1 -1
- package/dist/types/events.d.ts +1 -1
- package/dist/types/graphs/Graph.d.ts +7 -1
- package/dist/types/hooks/executeHooks.d.ts +1 -1
- package/dist/types/hooks/types.d.ts +5 -0
- package/dist/types/langfuse.d.ts +4 -0
- package/dist/types/llm/anthropic/utils/message_inputs.d.ts +1 -1
- package/dist/types/llm/anthropic/utils/message_outputs.d.ts +1 -1
- package/dist/types/llm/anthropic/utils/output_parsers.d.ts +2 -2
- package/dist/types/llm/bedrock/index.d.ts +2 -2
- package/dist/types/llm/fake.d.ts +3 -3
- package/dist/types/llm/google/index.d.ts +1 -0
- package/dist/types/llm/google/types.d.ts +1 -1
- package/dist/types/llm/google/utils/common.d.ts +2 -2
- package/dist/types/llm/google/utils/tools.d.ts +1 -1
- package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +1 -1
- package/dist/types/llm/openai/index.d.ts +2 -2
- package/dist/types/llm/openai/utils/index.d.ts +1 -1
- package/dist/types/llm/openrouter/index.d.ts +4 -4
- package/dist/types/messages/contextPruning.d.ts +1 -1
- package/dist/types/messages/format.d.ts +9 -4
- package/dist/types/messages/prune.d.ts +1 -1
- package/dist/types/session/JsonlSessionStore.d.ts +1 -1
- package/dist/types/session/handlers.d.ts +1 -1
- package/dist/types/session/types.d.ts +1 -1
- package/dist/types/summarization/node.d.ts +1 -1
- package/dist/types/tools/SubagentTool.d.ts +2 -2
- package/dist/types/tools/ToolNode.d.ts +9 -2
- package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +1 -1
- package/dist/types/tools/search/types.d.ts +1 -1
- package/dist/types/tools/search/utils.d.ts +11 -0
- package/dist/types/types/graph.d.ts +4 -4
- package/dist/types/types/llm.d.ts +4 -3
- package/dist/types/types/messages.d.ts +1 -1
- package/dist/types/types/run.d.ts +6 -6
- package/dist/types/types/stream.d.ts +2 -2
- package/dist/types/types/tools.d.ts +5 -1
- package/dist/types/utils/handlers.d.ts +2 -2
- package/dist/types/utils/run.d.ts +1 -1
- package/package.json +6 -3
- package/src/__tests__/stream.eagerEventExecution.test.ts +543 -6
- package/src/agents/AgentContext.ts +2 -2
- package/src/agents/__tests__/AgentContext.test.ts +3 -3
- package/src/agents/__tests__/promptCacheLiveHelpers.ts +1 -1
- package/src/events.ts +1 -1
- package/src/graphs/Graph.ts +329 -72
- package/src/graphs/MultiAgentGraph.ts +1 -1
- package/src/graphs/__tests__/Graph.reasoning.test.ts +919 -6
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +1 -1
- package/src/graphs/__tests__/composition.smoke.test.ts +1 -1
- package/src/hooks/__tests__/HookRegistry.test.ts +1 -1
- package/src/hooks/__tests__/compactHooks.test.ts +8 -8
- package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +34 -22
- package/src/hooks/__tests__/executeHooks.test.ts +3 -3
- package/src/hooks/__tests__/integration.test.ts +3 -3
- package/src/hooks/__tests__/toolHooks.test.ts +10 -10
- package/src/hooks/createWorkspacePolicyHook.ts +17 -14
- package/src/hooks/executeHooks.ts +1 -1
- package/src/hooks/types.ts +5 -0
- package/src/instrumentation.ts +11 -11
- package/src/langfuse.ts +35 -1
- package/src/langfuseToolOutputTracing.ts +2 -2
- package/src/llm/anthropic/index.ts +1 -1
- package/src/llm/anthropic/utils/message_inputs.ts +1 -1
- package/src/llm/anthropic/utils/message_outputs.ts +3 -5
- package/src/llm/anthropic/utils/output_parsers.ts +5 -5
- package/src/llm/bedrock/index.ts +4 -4
- package/src/llm/bedrock/toolCache.test.ts +48 -9
- package/src/llm/bedrock/toolCache.ts +11 -6
- package/src/llm/fake.ts +30 -25
- package/src/llm/google/index.ts +43 -1
- package/src/llm/google/llm.spec.ts +173 -1
- package/src/llm/google/types.ts +1 -1
- package/src/llm/google/utils/common.ts +154 -45
- package/src/llm/google/utils/tools.ts +8 -8
- package/src/llm/google/utils/zod_to_genai_parameters.ts +4 -4
- package/src/llm/invoke.test.ts +3 -3
- package/src/llm/invoke.ts +170 -10
- package/src/llm/openai/index.ts +4 -4
- package/src/llm/openai/utils/index.ts +14 -14
- package/src/llm/openrouter/index.ts +4 -4
- package/src/llm/openrouter/reasoning.test.ts +2 -2
- package/src/llm/vertexai/fixThoughtSignatures.test.ts +1 -1
- package/src/llm/vertexai/index.ts +1 -1
- package/src/messages/cache.test.ts +22 -0
- package/src/messages/cache.ts +25 -12
- package/src/messages/content.ts +1 -1
- package/src/messages/contextPruning.ts +1 -1
- package/src/messages/format.ts +227 -43
- package/src/messages/formatAgentMessages.skills.test.ts +105 -26
- package/src/messages/formatAgentMessages.test.ts +841 -10
- package/src/messages/labelContentByAgent.test.ts +2 -2
- package/src/messages/prune.ts +1 -1
- package/src/messages/reducer.ts +1 -1
- package/src/messages/tools.ts +1 -1
- package/src/openai/__tests__/openai.test.ts +2 -2
- package/src/openai/index.ts +1 -1
- package/src/responses/__tests__/responses.test.ts +2 -2
- package/src/responses/index.ts +1 -1
- package/src/run.ts +68 -41
- package/src/session/AgentSession.ts +6 -6
- package/src/session/JsonlSessionStore.ts +3 -3
- package/src/session/__tests__/JsonlSessionStore.test.ts +5 -5
- package/src/session/__tests__/handlers.test.ts +2 -2
- package/src/session/handlers.ts +5 -5
- package/src/session/types.ts +1 -1
- package/src/specs/agent-handoffs.test.ts +1 -1
- package/src/specs/langfuse-callbacks.test.ts +2 -2
- package/src/specs/langfuse-metadata.test.ts +39 -0
- package/src/specs/langfuse-tool-output-tracing.test.ts +1 -1
- package/src/specs/multi-agent-summarization.test.ts +4 -4
- package/src/specs/subagent.test.ts +3 -3
- package/src/specs/summarization-unit.test.ts +1 -1
- package/src/specs/thinking-handoff.test.ts +1 -1
- package/src/splitStream.test.ts +48 -0
- package/src/stream.test.ts +53 -3
- package/src/stream.ts +450 -39
- package/src/summarization/__tests__/aggregator.test.ts +2 -2
- package/src/summarization/__tests__/node.test.ts +2 -2
- package/src/summarization/node.ts +1 -1
- package/src/tools/BashProgrammaticToolCalling.ts +5 -5
- package/src/tools/Calculator.ts +1 -1
- package/src/tools/CodeExecutor.ts +2 -4
- package/src/tools/SubagentTool.ts +2 -2
- package/src/tools/ToolNode.ts +37 -16
- package/src/tools/ToolSearch.ts +1 -1
- package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +4 -4
- package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +12 -12
- package/src/tools/__tests__/LocalExecutionTools.test.ts +125 -93
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +29 -5
- package/src/tools/__tests__/ReadFile.test.ts +1 -1
- package/src/tools/__tests__/SkillTool.test.ts +4 -4
- package/src/tools/__tests__/SubagentExecutor.test.ts +17 -13
- package/src/tools/__tests__/SubagentTool.test.ts +2 -2
- package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +1 -1
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +2 -5
- package/src/tools/__tests__/ToolNode.session.test.ts +1 -1
- package/src/tools/__tests__/ToolSearch.test.ts +1 -1
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +1 -1
- package/src/tools/__tests__/directToolHITLResumeScope.test.ts +35 -32
- package/src/tools/__tests__/directToolHooks.test.ts +41 -0
- package/src/tools/__tests__/handlers.test.ts +2 -2
- package/src/tools/__tests__/hitl.test.ts +11 -11
- package/src/tools/__tests__/localToolNames.test.ts +8 -6
- package/src/tools/__tests__/skillCatalog.test.ts +1 -1
- package/src/tools/__tests__/subagentHooks.test.ts +20 -10
- package/src/tools/__tests__/workspaceSeam.test.ts +20 -7
- package/src/tools/cloudflare/CloudflareSandboxExecutionEngine.ts +9 -6
- package/src/tools/cloudflare/CloudflareSandboxTools.ts +19 -19
- package/src/tools/handlers.ts +5 -5
- package/src/tools/local/CompileCheckTool.ts +4 -7
- package/src/tools/local/FileCheckpointer.ts +6 -5
- package/src/tools/local/LocalCodingTools.ts +100 -45
- package/src/tools/local/LocalExecutionEngine.ts +5 -5
- package/src/tools/local/LocalExecutionTools.ts +9 -9
- package/src/tools/local/LocalProgrammaticToolCalling.ts +5 -4
- package/src/tools/local/attachments.ts +0 -6
- package/src/tools/local/resolveLocalExecutionTools.ts +15 -15
- package/src/tools/search/firecrawl.ts +1 -1
- package/src/tools/search/jina-reranker.test.ts +148 -37
- package/src/tools/search/rerankers.ts +14 -4
- package/src/tools/search/tavily-search.ts +2 -2
- package/src/tools/search/types.ts +1 -1
- package/src/tools/search/utils.ts +99 -9
- package/src/tools/subagent/SubagentExecutor.ts +12 -6
- package/src/types/graph.ts +12 -12
- package/src/types/llm.ts +7 -6
- package/src/types/messages.ts +1 -1
- package/src/types/run.ts +7 -7
- package/src/types/stream.ts +2 -2
- package/src/types/tools.ts +5 -1
- package/src/utils/handlers.ts +2 -2
- package/src/utils/llmConfig.ts +1 -1
- package/src/utils/logging.ts +20 -10
- package/src/utils/run.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSession.cjs","sources":["../../../src/session/AgentSession.ts"],"sourcesContent":["import { MemorySaver } from '@langchain/langgraph';\nimport { HumanMessage, BaseMessage } from '@langchain/core/messages';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type {\n BaseCheckpointSaver,\n CheckpointTuple,\n} from '@langchain/langgraph';\nimport type { HookRegistry } from '@/hooks';\nimport type {\n AgentSessionConfig,\n AgentSessionCheckpointing,\n AgentSessionCheckpointLookupOptions,\n AgentSessionCheckpointReference,\n AgentSessionInput,\n AgentSessionRunOptions,\n AgentSessionRunResult,\n AgentSessionStream,\n AgentSessionStreamEvent,\n SessionBranchOptions,\n SessionCheckpointEntry,\n SessionCompactOptions,\n SessionEntry,\n SessionForkOptions,\n} from './types';\nimport type * as t from '@/types';\nimport { AgentContext } from '@/agents/AgentContext';\nimport { ContentTypes, GraphEvents } from '@/common';\nimport { Run } from '@/run';\nimport { createRunId, createSessionId } from './ids';\nimport { deserializeMessage } from './messageSerialization';\nimport { JsonlSessionStore } from './JsonlSessionStore';\nimport { createRunHandlers } from './handlers';\nimport { createSummarizeNode } from '@/summarization/node';\n\nfunction isBaseMessage(value: unknown): value is BaseMessage {\n return (\n value instanceof BaseMessage ||\n (value != null &&\n typeof value === 'object' &&\n '_getType' in value &&\n typeof (value as { _getType?: unknown })._getType === 'function')\n );\n}\n\ninterface NormalizedSessionInput {\n messages: BaseMessage[];\n state: t.IState;\n}\n\nfunction normalizeInput(input: AgentSessionInput): NormalizedSessionInput {\n if (typeof input === 'string') {\n const messages = [new HumanMessage(input)];\n return { messages, state: { messages } };\n }\n if (Array.isArray(input)) {\n return { messages: input, state: { messages: input } };\n }\n if (isBaseMessage(input)) {\n const messages = [input];\n return { messages, state: { messages } };\n }\n return { messages: input.messages, state: input };\n}\n\nfunction contentToText(\n content: Array<t.MessageContentComplex | undefined>\n): string {\n const chunks: string[] = [];\n for (const part of content) {\n if (!part) {\n continue;\n }\n if (part.type === ContentTypes.TEXT && typeof part.text === 'string') {\n chunks.push(part.text);\n }\n }\n return chunks.join('');\n}\n\nfunction normalizeConfig(config: AgentSessionConfig): {\n runConfig: t.RunConfig;\n cwd: string;\n sessionPath?: string;\n name?: string;\n ephemeral?: boolean;\n checkpointing?: AgentSessionCheckpointing;\n} {\n if ('runConfig' in config) {\n return {\n runConfig: config.runConfig,\n cwd: config.cwd ?? process.cwd(),\n sessionPath: config.sessionPath,\n name: config.name,\n ephemeral: config.ephemeral,\n checkpointing: config.checkpointing,\n };\n }\n const {\n cwd,\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n sessionId: _sessionId,\n ...runConfig\n } = config;\n return {\n runConfig: {\n ...runConfig,\n runId: config.runId ?? createRunId(),\n },\n cwd: cwd ?? process.cwd(),\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n };\n}\n\nfunction isMissingSessionError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') {\n return false;\n }\n const candidate = error as { code?: string; message?: string };\n if (candidate.code === 'ENOENT') {\n return true;\n }\n return candidate.message?.startsWith('Session not found:') === true;\n}\n\nasync function createStore(params: {\n cwd: string;\n sessionPath?: string;\n name?: string;\n sessionId?: string;\n ephemeral?: boolean;\n}): Promise<JsonlSessionStore | undefined> {\n if (params.ephemeral === true) {\n return undefined;\n }\n if (params.sessionPath != null && params.sessionPath !== '') {\n try {\n return await JsonlSessionStore.openPath(params.sessionPath);\n } catch (error) {\n if (!isMissingSessionError(error)) {\n throw error;\n }\n return JsonlSessionStore.create({\n path: params.sessionPath,\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n }\n }\n return JsonlSessionStore.create({\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n}\n\ntype InitialSummary = NonNullable<t.AgentInputs['initialSummary']>;\n\nfunction mergeInitialSummary(\n existing: InitialSummary | undefined,\n sessionSummary: InitialSummary | undefined\n): InitialSummary | undefined {\n if (!existing) {\n return sessionSummary;\n }\n if (!sessionSummary) {\n return existing;\n }\n if (existing.text === sessionSummary.text) {\n return existing;\n }\n return {\n text: `${existing.text}\\n\\n${sessionSummary.text}`,\n tokenCount: existing.tokenCount + sessionSummary.tokenCount,\n };\n}\n\nfunction applyInitialSummaryToAgent(\n agent: t.AgentInputs,\n initialSummary: InitialSummary | undefined\n): t.AgentInputs {\n const merged = mergeInitialSummary(agent.initialSummary, initialSummary);\n return merged ? { ...agent, initialSummary: merged } : agent;\n}\n\nfunction applyInitialSummaryToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined\n): t.RunConfig['graphConfig'] {\n if (!initialSummary) {\n return graphConfig;\n }\n if ('agents' in graphConfig) {\n return {\n ...graphConfig,\n agents: graphConfig.agents.map((agent) =>\n applyInitialSummaryToAgent(agent, initialSummary)\n ),\n };\n }\n return {\n ...graphConfig,\n initialSummary: mergeInitialSummary(\n graphConfig.initialSummary,\n initialSummary\n ),\n };\n}\n\ninterface SessionCheckpointingState {\n enabled: boolean;\n checkpointer?: BaseCheckpointSaver;\n disableGraphCheckpointer?: boolean;\n}\n\nfunction isCheckpointSaver(value: unknown): value is BaseCheckpointSaver {\n if (value == null || typeof value !== 'object') {\n return false;\n }\n const candidate = value as Partial<BaseCheckpointSaver>;\n return (\n typeof candidate.getTuple === 'function' &&\n typeof candidate.list === 'function' &&\n typeof candidate.put === 'function' &&\n typeof candidate.putWrites === 'function' &&\n typeof candidate.deleteThread === 'function'\n );\n}\n\nfunction getGraphCheckpointer(\n graphConfig: t.RunConfig['graphConfig']\n): BaseCheckpointSaver | undefined {\n const checkpointer = graphConfig.compileOptions?.checkpointer;\n return isCheckpointSaver(checkpointer) ? checkpointer : undefined;\n}\n\nfunction createCheckpointingState(\n runConfig: t.RunConfig,\n checkpointing: AgentSessionCheckpointing | undefined\n): SessionCheckpointingState {\n const graphCheckpointer = getGraphCheckpointer(runConfig.graphConfig);\n if (checkpointing === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n if (typeof checkpointing === 'object') {\n if (checkpointing.enabled === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n return {\n enabled: true,\n checkpointer:\n checkpointing.checkpointer ?? graphCheckpointer ?? new MemorySaver(),\n };\n }\n if (checkpointing === true || runConfig.humanInTheLoop?.enabled === true) {\n return {\n enabled: true,\n checkpointer: graphCheckpointer ?? new MemorySaver(),\n };\n }\n return {\n enabled: graphCheckpointer != null,\n checkpointer: graphCheckpointer,\n };\n}\n\nfunction removeCheckpointerFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig']\n): t.RunConfig['graphConfig'] {\n if (graphConfig.compileOptions?.checkpointer == null) {\n return graphConfig;\n }\n const { checkpointer: _checkpointer, ...compileOptions } =\n graphConfig.compileOptions;\n return {\n ...graphConfig,\n compileOptions,\n };\n}\n\nfunction applyCheckpointerToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointer: BaseCheckpointSaver | undefined\n): t.RunConfig['graphConfig'] {\n if (!checkpointer) {\n return graphConfig;\n }\n if (graphConfig.compileOptions?.checkpointer === checkpointer) {\n return graphConfig;\n }\n return {\n ...graphConfig,\n compileOptions: {\n ...(graphConfig.compileOptions ?? {}),\n checkpointer,\n },\n };\n}\n\nfunction applyCheckpointingToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointing: SessionCheckpointingState\n): t.RunConfig['graphConfig'] {\n if (checkpointing.disableGraphCheckpointer === true) {\n return removeCheckpointerFromGraphConfig(graphConfig);\n }\n return applyCheckpointerToGraphConfig(\n graphConfig,\n checkpointing.checkpointer\n );\n}\n\nfunction getConfigString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n const value = configurable?.[key];\n return typeof value === 'string' && value !== '' ? value : undefined;\n}\n\nfunction getConfigOptionalString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n if (\n configurable == null ||\n !Object.prototype.hasOwnProperty.call(configurable, key)\n ) {\n return undefined;\n }\n const value = configurable[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction createCallerConfig(\n threadId: string,\n options: AgentSessionRunOptions\n): RunnableConfig & { version: 'v1' | 'v2' } {\n return {\n recursionLimit: 50,\n ...(options.config ?? {}),\n configurable: {\n ...(options.config?.configurable ?? {}),\n thread_id: threadId,\n },\n version: options.config?.version ?? 'v2',\n };\n}\n\nfunction createCheckpointLookupConfig(config: RunnableConfig): RunnableConfig {\n const threadId = getConfigString(config, 'thread_id');\n if (threadId == null) {\n return config;\n }\n const checkpointNs = getConfigString(config, 'checkpoint_ns') ?? '';\n const checkpointId = getConfigString(config, 'checkpoint_id');\n return {\n configurable: {\n ...config.configurable,\n thread_id: threadId,\n checkpoint_ns: checkpointNs,\n ...(checkpointId != null ? { checkpoint_id: checkpointId } : {}),\n },\n };\n}\n\nfunction applyCheckpointReferenceToConfig<\n TConfig extends RunnableConfig & { version?: 'v1' | 'v2' },\n>(\n config: TConfig,\n checkpoint:\n | {\n checkpointId?: string;\n checkpointNs?: string;\n }\n | undefined,\n options?: { overwrite?: boolean }\n): TConfig {\n if (\n checkpoint?.checkpointId == null ||\n checkpoint.checkpointId === '' ||\n (options?.overwrite !== true &&\n getConfigString(config, 'checkpoint_id') != null)\n ) {\n return config;\n }\n return {\n ...config,\n configurable: {\n ...config.configurable,\n checkpoint_id: checkpoint.checkpointId,\n checkpoint_ns: checkpoint.checkpointNs ?? '',\n },\n };\n}\n\nfunction getStoredCheckpointForConfig(\n store: JsonlSessionStore | undefined,\n threadId: string,\n config: RunnableConfig\n): SessionCheckpointEntry | undefined {\n const requestedCheckpointNs = getConfigOptionalString(\n config,\n 'checkpoint_ns'\n );\n if (requestedCheckpointNs == null) {\n return store?.getLatestCheckpoint(threadId);\n }\n const checkpoints = store?.getCheckpoints(threadId) ?? [];\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n if ((checkpoint.data.checkpointNs ?? '') === requestedCheckpointNs) {\n return checkpoint;\n }\n }\n return undefined;\n}\n\nfunction createLatestCheckpointLookupConfig(\n config: RunnableConfig\n): RunnableConfig {\n const lookup = createCheckpointLookupConfig(config);\n const { checkpoint_id: _checkpointId, ...configurable } =\n lookup.configurable ?? {};\n return { configurable };\n}\n\nasync function getLatestCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n if (!checkpointer) {\n return undefined;\n }\n const lookupConfig = createLatestCheckpointLookupConfig(config);\n const tuple = await checkpointer.getTuple(lookupConfig);\n if (tuple) {\n return tuple;\n }\n for await (const checkpoint of checkpointer.list(lookupConfig, {\n limit: 1,\n })) {\n return checkpoint;\n }\n return undefined;\n}\n\nasync function getSelectedCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n return checkpointer?.getTuple(createCheckpointLookupConfig(config));\n}\n\nfunction createCheckpointReference(params: {\n threadId: string;\n tuple: CheckpointTuple;\n}): AgentSessionCheckpointReference {\n const checkpointNs =\n getConfigString(params.tuple.config, 'checkpoint_ns') ?? '';\n const parentCheckpointId = getConfigString(\n params.tuple.parentConfig,\n 'checkpoint_id'\n );\n return {\n provider: 'langgraph',\n threadId: params.threadId,\n checkpointId: params.tuple.checkpoint.id,\n checkpointNs,\n ...(parentCheckpointId != null ? { parentCheckpointId } : {}),\n };\n}\n\nfunction createSessionRunState(entries: SessionEntry[]): {\n messages: BaseMessage[];\n initialSummary?: InitialSummary;\n} {\n const messages: BaseMessage[] = [];\n let initialSummary: InitialSummary | undefined;\n for (const entry of entries) {\n if (entry.type === 'summary') {\n initialSummary = {\n text: entry.data.text,\n tokenCount:\n typeof entry.data.tokenCount === 'number' &&\n Number.isFinite(entry.data.tokenCount)\n ? entry.data.tokenCount\n : 0,\n };\n messages.length = 0;\n continue;\n }\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n }\n }\n return { messages, initialSummary };\n}\n\nfunction isMessageEntry(\n entry: SessionEntry\n): entry is Extract<SessionEntry, { type: 'message' }> {\n return entry.type === 'message';\n}\n\nfunction getSessionBranchTarget(\n store: JsonlSessionStore,\n entryId: string,\n position: 'before' | 'at'\n): SessionEntry | undefined {\n const entry = store.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : store.getEntry(entry.parentId);\n}\n\nfunction getAbandonedPathForBranch(\n store: JsonlSessionStore,\n previousLeafId: string | null,\n targetLeafId: string | null\n): SessionEntry[] {\n const previousPath = store.getPath(previousLeafId ?? undefined);\n if (previousPath.length === 0) {\n return [];\n }\n const targetPath = targetLeafId == null ? [] : store.getPath(targetLeafId);\n const maxSharedLength = Math.min(previousPath.length, targetPath.length);\n let sharedLength = 0;\n while (\n sharedLength < maxSharedLength &&\n previousPath[sharedLength].id === targetPath[sharedLength].id\n ) {\n sharedLength++;\n }\n return previousPath.slice(sharedLength);\n}\n\nfunction createAgentInputFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined,\n retainRecentTurns: number | undefined,\n instructions: string | undefined\n): t.AgentInputs {\n let agent: t.AgentInputs;\n if ('agents' in graphConfig) {\n if (graphConfig.agents.length === 0) {\n throw new Error('Cannot compact a session with no agents');\n }\n agent = graphConfig.agents[0];\n } else {\n const {\n type: _type,\n llmConfig,\n signal: _signal,\n tools = [],\n ...agentInputs\n } = graphConfig;\n const { provider, ...clientOptions } = llmConfig;\n agent = {\n ...agentInputs,\n tools,\n provider,\n clientOptions,\n agentId: 'default',\n };\n }\n const summarizationConfig: t.SummarizationConfig = {\n ...(agent.summarizationConfig ?? {}),\n ...(instructions != null && instructions !== ''\n ? { prompt: instructions }\n : {}),\n retainRecent: {\n ...(agent.summarizationConfig?.retainRecent ?? {}),\n ...(retainRecentTurns != null ? { turns: retainRecentTurns } : {}),\n },\n };\n return {\n ...applyInitialSummaryToAgent(agent, initialSummary),\n summarizationEnabled: true,\n summarizationConfig,\n };\n}\n\nfunction createManualCompactGraph(params: {\n runId: string;\n customHandlers?: Record<string, t.EventHandler>;\n hooks?: HookRegistry;\n}): {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n} {\n const contentData: t.RunStep[] = [];\n const contentIndexMap = new Map<string, number>();\n const result: {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n } = {\n graph: {\n contentData,\n contentIndexMap,\n runId: params.runId,\n isMultiAgent: false,\n hookRegistry: params.hooks,\n dispatchRunStep: async (runStep): Promise<void> => {\n contentData.push(runStep);\n contentIndexMap.set(runStep.id, runStep.index);\n await params.customHandlers?.[GraphEvents.ON_RUN_STEP]?.handle(\n GraphEvents.ON_RUN_STEP,\n runStep\n );\n },\n dispatchRunStepCompleted: async (stepId, completed): Promise<void> => {\n const runStep = contentData.find((step) => step.id === stepId);\n const resultWithStep = {\n ...completed,\n id: stepId,\n index: runStep?.index ?? 0,\n };\n if (completed.type === 'summary') {\n result.completedSummary = completed.summary;\n }\n await params.customHandlers?.[\n GraphEvents.ON_RUN_STEP_COMPLETED\n ]?.handle(GraphEvents.ON_RUN_STEP_COMPLETED, {\n result: resultWithStep,\n } as unknown as Parameters<t.EventHandler['handle']>[1]);\n },\n },\n };\n return result;\n}\n\nfunction getSummaryText(summary: t.SummaryContentBlock | undefined): string {\n const firstBlock = summary?.content?.[0];\n return firstBlock != null &&\n typeof firstBlock === 'object' &&\n 'text' in firstBlock &&\n typeof firstBlock.text === 'string'\n ? firstBlock.text\n : '';\n}\n\nfunction getSummaryTokenCount(\n summary: t.SummaryContentBlock | undefined\n): number {\n return typeof summary?.tokenCount === 'number' &&\n Number.isFinite(summary.tokenCount)\n ? summary.tokenCount\n : 0;\n}\n\nfunction filterRemoveMessages(messages: BaseMessage[]): BaseMessage[] {\n return messages.filter((message) => message._getType() !== 'remove');\n}\n\nclass LiveAgentSessionStream implements AgentSessionStream {\n private resultPromise: Promise<AgentSessionRunResult> | undefined;\n private readonly events: AgentSessionStreamEvent[] = [];\n private readonly waiters: Array<{\n resolve: (result: IteratorResult<AgentSessionStreamEvent>) => void;\n reject: (error: unknown) => void;\n }> = [];\n private closed = false;\n private failed = false;\n private error: unknown;\n\n setResultPromise(resultPromise: Promise<AgentSessionRunResult>): void {\n this.resultPromise = resultPromise;\n }\n\n push(event: AgentSessionStreamEvent): void {\n if (this.closed) {\n return;\n }\n const waiter = this.waiters.shift();\n if (waiter) {\n waiter.resolve({ value: event, done: false });\n return;\n }\n this.events.push(event);\n }\n\n complete(): void {\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n }\n\n fail(error: unknown): void {\n this.error = error;\n this.failed = true;\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.reject(error);\n }\n }\n\n private nextEvent(): Promise<IteratorResult<AgentSessionStreamEvent>> {\n const event = this.events.shift();\n if (event !== undefined) {\n return Promise.resolve({ value: event, done: false });\n }\n if (this.failed) {\n return Promise.reject(this.error);\n }\n if (this.closed) {\n return Promise.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<AgentSessionStreamEvent> {\n for (;;) {\n const next = await this.nextEvent();\n if (next.done === true) {\n return;\n }\n yield next.value;\n }\n }\n\n async *toTextStream(): AsyncIterable<string> {\n for await (const event of this) {\n if (event.type !== 'message.delta' || event.data == null) {\n continue;\n }\n const data = event.data;\n if (typeof data === 'object' && !Array.isArray(data)) {\n const delta = data.delta;\n if (\n delta != null &&\n typeof delta === 'object' &&\n !Array.isArray(delta)\n ) {\n const content = delta.content;\n if (Array.isArray(content)) {\n for (const part of content) {\n if (\n part != null &&\n typeof part === 'object' &&\n !Array.isArray(part) &&\n typeof part.text === 'string'\n ) {\n yield part.text;\n }\n }\n }\n }\n }\n }\n }\n\n finalResult(): Promise<AgentSessionRunResult> {\n if (!this.resultPromise) {\n return Promise.reject(new Error('Session stream has not started'));\n }\n return this.resultPromise;\n }\n}\n\nexport class AgentSession {\n private runConfig: t.RunConfig;\n private store: JsonlSessionStore | undefined;\n private calibrationRatio: number | undefined;\n private checkpointing: SessionCheckpointingState;\n cwd: string;\n threadId: string;\n\n private constructor(params: {\n runConfig: t.RunConfig;\n cwd: string;\n threadId: string;\n checkpointing: SessionCheckpointingState;\n store?: JsonlSessionStore;\n }) {\n this.runConfig = params.runConfig;\n this.cwd = params.cwd;\n this.threadId = params.threadId;\n this.store = params.store;\n this.checkpointing = params.checkpointing;\n }\n\n static async create(config: AgentSessionConfig): Promise<AgentSession> {\n const normalized = normalizeConfig(config);\n const explicitSessionId =\n 'sessionId' in config && typeof config.sessionId === 'string'\n ? config.sessionId\n : undefined;\n const store = await createStore({\n cwd: normalized.cwd,\n sessionPath: normalized.sessionPath,\n name: normalized.name,\n sessionId: explicitSessionId,\n ephemeral: normalized.ephemeral,\n });\n return new AgentSession({\n runConfig: normalized.runConfig,\n cwd: normalized.cwd,\n threadId: store?.header.id ?? explicitSessionId ?? createSessionId(),\n checkpointing: createCheckpointingState(\n normalized.runConfig,\n normalized.checkpointing\n ),\n store,\n });\n }\n\n get sessionPath(): string | undefined {\n return this.store?.path;\n }\n\n getSessionStore(): JsonlSessionStore | undefined {\n return this.store;\n }\n\n getCheckpointer(): BaseCheckpointSaver | undefined {\n return this.checkpointing.checkpointer;\n }\n\n async getLatestCheckpoint(\n options: AgentSessionCheckpointLookupOptions = {}\n ): Promise<AgentSessionCheckpointReference | undefined> {\n const threadId = options.threadId ?? this.threadId;\n const baseConfig = options.config ?? {};\n const config = createCheckpointLookupConfig({\n ...baseConfig,\n configurable: {\n ...(baseConfig.configurable ?? {}),\n thread_id: threadId,\n ...(options.checkpointNs != null\n ? { checkpoint_ns: options.checkpointNs }\n : {}),\n },\n });\n const tuple = await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple ? createCheckpointReference({ threadId, tuple }) : undefined;\n }\n\n private async hasCheckpointState(config: RunnableConfig): Promise<boolean> {\n if (!this.checkpointing.enabled) {\n return false;\n }\n const tuple = await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple != null;\n }\n\n private async recordCheckpoint(params: {\n source: 'run' | 'resume';\n runId: string;\n threadId: string;\n config: RunnableConfig;\n checkpointId?: string;\n checkpointNs?: string;\n }): Promise<void> {\n if (!this.checkpointing.enabled) {\n return;\n }\n const checkpointConfig = applyCheckpointReferenceToConfig(\n params.config,\n {\n checkpointId: params.checkpointId,\n checkpointNs: params.checkpointNs,\n },\n { overwrite: true }\n );\n const tuple =\n params.checkpointId != null && params.checkpointId !== ''\n ? await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n checkpointConfig\n )\n : await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n params.config\n );\n if (!tuple) {\n return;\n }\n const reference = createCheckpointReference({\n threadId: params.threadId,\n tuple,\n });\n await this.store?.appendCheckpoint({\n source: params.source,\n runId: params.runId,\n threadId: params.threadId,\n checkpointId: reference.checkpointId,\n checkpointNs: reference.checkpointNs,\n parentCheckpointId: reference.parentCheckpointId,\n });\n }\n\n private getCheckpointThreadIds(): string[] {\n const threadIds = new Set<string>([this.threadId]);\n for (const checkpoint of this.store?.getCheckpoints() ?? []) {\n threadIds.add(checkpoint.data.threadId);\n }\n return [...threadIds];\n }\n\n private async resetCheckpointThreads(reason: string): Promise<void> {\n const checkpointer = this.checkpointing.checkpointer;\n if (!this.checkpointing.enabled || checkpointer == null) {\n return;\n }\n for (const threadId of this.getCheckpointThreadIds()) {\n await checkpointer.deleteThread(threadId);\n await this.store?.appendCheckpoint({\n source: 'reset',\n threadId,\n reason,\n });\n }\n }\n\n private async runInternal(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {},\n onEvent?: (event: AgentSessionStreamEvent) => void\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const normalizedInput = normalizeInput(input);\n const inputMessages = normalizedInput.messages;\n const callerConfig = createCallerConfig(threadId, options);\n const useCheckpointState = await this.hasCheckpointState(callerConfig);\n let parentId = this.store?.getLeafEntry()?.id ?? null;\n if (isSessionThread) {\n for (const message of inputMessages) {\n const entry = await this.store?.appendMessage(message, parentId);\n parentId = entry?.id ?? parentId;\n }\n }\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n onEvent,\n });\n const emitTerminalEvent = (\n event: Omit<\n AgentSessionStreamEvent,\n 'sequence' | 'runId' | 'threadId' | 'timestamp'\n >\n ): void => {\n const streamEvent: AgentSessionStreamEvent = {\n ...event,\n sequence: handlerResult.events.length,\n runId,\n threadId,\n timestamp: new Date().toISOString(),\n };\n handlerResult.events.push(streamEvent);\n onEvent?.(streamEvent);\n };\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n try {\n const runConfig: t.RunConfig = {\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n };\n const run = await Run.create<t.IState>(runConfig);\n let messages = inputMessages;\n if (!useCheckpointState && sessionState.messages.length > 0) {\n messages = sessionState.messages;\n }\n const content = await run.processStream(\n { ...normalizedInput.state, messages },\n callerConfig,\n options.streamOptions\n );\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n emitTerminalEvent({ type: 'run.interrupted' });\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n emitTerminalEvent({ type: 'run.halted', data: haltedReason });\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n emitTerminalEvent({ type: 'run.completed' });\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n emitTerminalEvent({\n type: 'run.failed',\n data: error instanceof Error ? error.message : String(error),\n });\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n });\n throw error;\n }\n }\n\n async run(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n return this.runInternal(input, options);\n }\n\n stream(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): AgentSessionStream {\n const stream = new LiveAgentSessionStream();\n const resultPromise = this.runInternal(input, options, (event) => {\n stream.push(event);\n }).then(\n (result) => {\n stream.complete();\n return result;\n },\n (error: unknown) => {\n stream.fail(error);\n throw error;\n }\n );\n stream.setResultPromise(resultPromise);\n return stream;\n }\n\n async resumeSession(pathOrId?: string): Promise<AgentSession> {\n if (pathOrId == null || pathOrId === '') {\n const sessions = await JsonlSessionStore.list(this.cwd);\n if (sessions.length === 0) {\n throw new Error(`No sessions found for ${this.cwd}`);\n }\n this.store = await JsonlSessionStore.open(sessions[0].path);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n this.store = await JsonlSessionStore.open(pathOrId);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot clone an ephemeral session');\n }\n const store = await this.store.clone(options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot fork an ephemeral session');\n }\n const store = await this.store.fork(entryId, options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<void> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot branch an ephemeral session');\n }\n const target = getSessionBranchTarget(\n store,\n entryId,\n options.position ?? 'at'\n );\n const previousLeafId = store.getLeafEntry()?.id ?? null;\n let leafId = target?.id ?? null;\n const summarizeAbandoned = options.summarizeAbandoned;\n if (summarizeAbandoned !== undefined && summarizeAbandoned !== false) {\n const instructions =\n typeof summarizeAbandoned === 'object'\n ? summarizeAbandoned.instructions\n : undefined;\n const abandonedPath = getAbandonedPathForBranch(\n store,\n previousLeafId,\n leafId\n );\n const summary = await this.compactActivePath(\n { instructions, retainRecentTurns: 0 },\n leafId,\n abandonedPath\n );\n leafId = summary?.id ?? leafId;\n }\n if (leafId === previousLeafId) {\n return;\n }\n await store.setLeaf(leafId);\n await this.resetCheckpointThreads('branch');\n }\n\n async compact(options: SessionCompactOptions = {}): Promise<void> {\n const summary = await this.compactActivePath(options, null);\n if (summary) {\n await this.resetCheckpointThreads('compact');\n }\n }\n\n private async compactActivePath(\n options: SessionCompactOptions = {},\n parentId: string | null,\n path?: SessionEntry[]\n ): Promise<Extract<SessionEntry, { type: 'summary' }> | undefined> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot compact an ephemeral session');\n }\n const activePath = path ?? store.getPath();\n const sessionState = createSessionRunState(activePath);\n const messageEntries = activePath.filter(isMessageEntry);\n if (sessionState.messages.length === 0) {\n return undefined;\n }\n const compactRunId = createRunId();\n const agentContext = AgentContext.fromConfig(\n createAgentInputFromGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary,\n options.retainRecentTurns,\n options.instructions\n ),\n this.runConfig.tokenCounter\n );\n const graph = createManualCompactGraph({\n runId: compactRunId,\n customHandlers: this.runConfig.customHandlers,\n hooks: this.runConfig.hooks,\n });\n const summarizeNode = createSummarizeNode({\n agentContext,\n graph: graph.graph,\n generateStepId: (stepKey): [string, number] => [\n `${stepKey}-${compactRunId}`,\n graph.graph.contentData.length,\n ],\n });\n const summarizedState = await summarizeNode(\n {\n messages: sessionState.messages,\n summarizationRequest: {\n remainingContextTokens: agentContext.maxContextTokens ?? 0,\n agentId: agentContext.agentId,\n },\n },\n {\n configurable: { thread_id: this.threadId },\n metadata: { run_id: compactRunId },\n }\n );\n const completedSummaryText = getSummaryText(graph.completedSummary);\n const contextSummaryText = agentContext.getSummaryText();\n let summaryText = completedSummaryText;\n if (summaryText === '' && contextSummaryText != null) {\n summaryText = contextSummaryText;\n }\n if (summaryText === '') {\n return undefined;\n }\n const retainedMessages = filterRemoveMessages(\n summarizedState.messages ?? []\n );\n let retainedEntryIds: string[] = [];\n if (retainedMessages.length > 0) {\n retainedEntryIds = messageEntries\n .slice(-retainedMessages.length)\n .map((entry) => entry.id);\n }\n const retainedEntryIdSet = new Set(retainedEntryIds);\n const summarized = messageEntries.filter(\n (entry) => !retainedEntryIdSet.has(entry.id)\n );\n const summary = await store.appendEntryForCompaction({\n text: summaryText,\n tokenCount: getSummaryTokenCount(graph.completedSummary),\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n instructions: options.instructions,\n parentId,\n });\n let retainedParentId: string | null = summary.id;\n for (const message of retainedMessages) {\n const retainedMessage = await store.appendMessage(\n message,\n retainedParentId\n );\n retainedParentId = retainedMessage.id;\n }\n await store.appendCompactionEntry({\n summaryEntryId: summary.id,\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n });\n return summary;\n }\n\n async resumeInterrupt<TResume>(\n resumeValue: TResume,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const baseCallerConfig = createCallerConfig(threadId, options);\n const callerConfig = applyCheckpointReferenceToConfig(\n baseCallerConfig,\n getStoredCheckpointForConfig(this.store, threadId, baseCallerConfig)?.data\n );\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n });\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n try {\n const run = await Run.create<t.IState>({\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n });\n const content = await run.resume(resumeValue, callerConfig);\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n });\n throw error;\n }\n }\n}\n\nexport function createAgentSession(\n config: AgentSessionConfig\n): Promise<AgentSession> {\n return AgentSession.create(config);\n}\n"],"names":["BaseMessage","messages","HumanMessage","ContentTypes","createRunId","JsonlSessionStore","MemorySaver","deserializeMessage","GraphEvents","createSessionId","createRunHandlers","run","Run","AgentContext","createSummarizeNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentSession.cjs","sources":["../../../src/session/AgentSession.ts"],"sourcesContent":["import { MemorySaver } from '@langchain/langgraph';\nimport { HumanMessage, BaseMessage } from '@langchain/core/messages';\nimport type {\n BaseCheckpointSaver,\n CheckpointTuple,\n} from '@langchain/langgraph';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type {\n AgentSessionConfig,\n AgentSessionCheckpointing,\n AgentSessionCheckpointLookupOptions,\n AgentSessionCheckpointReference,\n AgentSessionInput,\n AgentSessionRunOptions,\n AgentSessionRunResult,\n AgentSessionStream,\n AgentSessionStreamEvent,\n SessionBranchOptions,\n SessionCheckpointEntry,\n SessionCompactOptions,\n SessionEntry,\n SessionForkOptions,\n} from './types';\nimport type { HookRegistry } from '@/hooks';\nimport type * as t from '@/types';\nimport { deserializeMessage } from './messageSerialization';\nimport { createSummarizeNode } from '@/summarization/node';\nimport { JsonlSessionStore } from './JsonlSessionStore';\nimport { AgentContext } from '@/agents/AgentContext';\nimport { ContentTypes, GraphEvents } from '@/common';\nimport { createRunId, createSessionId } from './ids';\nimport { createRunHandlers } from './handlers';\nimport { Run } from '@/run';\n\nfunction isBaseMessage(value: unknown): value is BaseMessage {\n return (\n value instanceof BaseMessage ||\n (value != null &&\n typeof value === 'object' &&\n '_getType' in value &&\n typeof (value as { _getType?: unknown })._getType === 'function')\n );\n}\n\ninterface NormalizedSessionInput {\n messages: BaseMessage[];\n state: t.IState;\n}\n\nfunction normalizeInput(input: AgentSessionInput): NormalizedSessionInput {\n if (typeof input === 'string') {\n const messages = [new HumanMessage(input)];\n return { messages, state: { messages } };\n }\n if (Array.isArray(input)) {\n return { messages: input, state: { messages: input } };\n }\n if (isBaseMessage(input)) {\n const messages = [input];\n return { messages, state: { messages } };\n }\n return { messages: input.messages, state: input };\n}\n\nfunction contentToText(\n content: Array<t.MessageContentComplex | undefined>\n): string {\n const chunks: string[] = [];\n for (const part of content) {\n if (!part) {\n continue;\n }\n if (part.type === ContentTypes.TEXT && typeof part.text === 'string') {\n chunks.push(part.text);\n }\n }\n return chunks.join('');\n}\n\nfunction normalizeConfig(config: AgentSessionConfig): {\n runConfig: t.RunConfig;\n cwd: string;\n sessionPath?: string;\n name?: string;\n ephemeral?: boolean;\n checkpointing?: AgentSessionCheckpointing;\n} {\n if ('runConfig' in config) {\n return {\n runConfig: config.runConfig,\n cwd: config.cwd ?? process.cwd(),\n sessionPath: config.sessionPath,\n name: config.name,\n ephemeral: config.ephemeral,\n checkpointing: config.checkpointing,\n };\n }\n const {\n cwd,\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n sessionId: _sessionId,\n ...runConfig\n } = config;\n return {\n runConfig: {\n ...runConfig,\n runId: config.runId ?? createRunId(),\n },\n cwd: cwd ?? process.cwd(),\n sessionPath,\n name,\n ephemeral,\n checkpointing,\n };\n}\n\nfunction isMissingSessionError(error: unknown): boolean {\n if (error == null || typeof error !== 'object') {\n return false;\n }\n const candidate = error as { code?: string; message?: string };\n if (candidate.code === 'ENOENT') {\n return true;\n }\n return candidate.message?.startsWith('Session not found:') === true;\n}\n\nasync function createStore(params: {\n cwd: string;\n sessionPath?: string;\n name?: string;\n sessionId?: string;\n ephemeral?: boolean;\n}): Promise<JsonlSessionStore | undefined> {\n if (params.ephemeral === true) {\n return undefined;\n }\n if (params.sessionPath != null && params.sessionPath !== '') {\n try {\n return await JsonlSessionStore.openPath(params.sessionPath);\n } catch (error) {\n if (!isMissingSessionError(error)) {\n throw error;\n }\n return JsonlSessionStore.create({\n path: params.sessionPath,\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n }\n }\n return JsonlSessionStore.create({\n cwd: params.cwd,\n name: params.name,\n sessionId: params.sessionId,\n });\n}\n\ntype InitialSummary = NonNullable<t.AgentInputs['initialSummary']>;\n\nfunction mergeInitialSummary(\n existing: InitialSummary | undefined,\n sessionSummary: InitialSummary | undefined\n): InitialSummary | undefined {\n if (!existing) {\n return sessionSummary;\n }\n if (!sessionSummary) {\n return existing;\n }\n if (existing.text === sessionSummary.text) {\n return existing;\n }\n return {\n text: `${existing.text}\\n\\n${sessionSummary.text}`,\n tokenCount: existing.tokenCount + sessionSummary.tokenCount,\n };\n}\n\nfunction applyInitialSummaryToAgent(\n agent: t.AgentInputs,\n initialSummary: InitialSummary | undefined\n): t.AgentInputs {\n const merged = mergeInitialSummary(agent.initialSummary, initialSummary);\n return merged ? { ...agent, initialSummary: merged } : agent;\n}\n\nfunction applyInitialSummaryToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined\n): t.RunConfig['graphConfig'] {\n if (!initialSummary) {\n return graphConfig;\n }\n if ('agents' in graphConfig) {\n return {\n ...graphConfig,\n agents: graphConfig.agents.map((agent) =>\n applyInitialSummaryToAgent(agent, initialSummary)\n ),\n };\n }\n return {\n ...graphConfig,\n initialSummary: mergeInitialSummary(\n graphConfig.initialSummary,\n initialSummary\n ),\n };\n}\n\ninterface SessionCheckpointingState {\n enabled: boolean;\n checkpointer?: BaseCheckpointSaver;\n disableGraphCheckpointer?: boolean;\n}\n\nfunction isCheckpointSaver(value: unknown): value is BaseCheckpointSaver {\n if (value == null || typeof value !== 'object') {\n return false;\n }\n const candidate = value as Partial<BaseCheckpointSaver>;\n return (\n typeof candidate.getTuple === 'function' &&\n typeof candidate.list === 'function' &&\n typeof candidate.put === 'function' &&\n typeof candidate.putWrites === 'function' &&\n typeof candidate.deleteThread === 'function'\n );\n}\n\nfunction getGraphCheckpointer(\n graphConfig: t.RunConfig['graphConfig']\n): BaseCheckpointSaver | undefined {\n const checkpointer = graphConfig.compileOptions?.checkpointer;\n return isCheckpointSaver(checkpointer) ? checkpointer : undefined;\n}\n\nfunction createCheckpointingState(\n runConfig: t.RunConfig,\n checkpointing: AgentSessionCheckpointing | undefined\n): SessionCheckpointingState {\n const graphCheckpointer = getGraphCheckpointer(runConfig.graphConfig);\n if (checkpointing === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n if (typeof checkpointing === 'object') {\n if (checkpointing.enabled === false) {\n return {\n enabled: false,\n disableGraphCheckpointer: true,\n };\n }\n return {\n enabled: true,\n checkpointer:\n checkpointing.checkpointer ?? graphCheckpointer ?? new MemorySaver(),\n };\n }\n if (checkpointing === true || runConfig.humanInTheLoop?.enabled === true) {\n return {\n enabled: true,\n checkpointer: graphCheckpointer ?? new MemorySaver(),\n };\n }\n return {\n enabled: graphCheckpointer != null,\n checkpointer: graphCheckpointer,\n };\n}\n\nfunction removeCheckpointerFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig']\n): t.RunConfig['graphConfig'] {\n if (graphConfig.compileOptions?.checkpointer == null) {\n return graphConfig;\n }\n const { checkpointer: _checkpointer, ...compileOptions } =\n graphConfig.compileOptions;\n return {\n ...graphConfig,\n compileOptions,\n };\n}\n\nfunction applyCheckpointerToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointer: BaseCheckpointSaver | undefined\n): t.RunConfig['graphConfig'] {\n if (!checkpointer) {\n return graphConfig;\n }\n if (graphConfig.compileOptions?.checkpointer === checkpointer) {\n return graphConfig;\n }\n return {\n ...graphConfig,\n compileOptions: {\n ...(graphConfig.compileOptions ?? {}),\n checkpointer,\n },\n };\n}\n\nfunction applyCheckpointingToGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n checkpointing: SessionCheckpointingState\n): t.RunConfig['graphConfig'] {\n if (checkpointing.disableGraphCheckpointer === true) {\n return removeCheckpointerFromGraphConfig(graphConfig);\n }\n return applyCheckpointerToGraphConfig(\n graphConfig,\n checkpointing.checkpointer\n );\n}\n\nfunction getConfigString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n const value = configurable?.[key];\n return typeof value === 'string' && value !== '' ? value : undefined;\n}\n\nfunction getConfigOptionalString(\n config: RunnableConfig | undefined,\n key: string\n): string | undefined {\n const configurable = config?.configurable as\n | Partial<Record<string, unknown>>\n | undefined;\n if (\n configurable == null ||\n !Object.prototype.hasOwnProperty.call(configurable, key)\n ) {\n return undefined;\n }\n const value = configurable[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction createCallerConfig(\n threadId: string,\n options: AgentSessionRunOptions\n): RunnableConfig & { version: 'v1' | 'v2' } {\n return {\n recursionLimit: 50,\n ...(options.config ?? {}),\n configurable: {\n ...(options.config?.configurable ?? {}),\n thread_id: threadId,\n },\n version: options.config?.version ?? 'v2',\n };\n}\n\nfunction createCheckpointLookupConfig(config: RunnableConfig): RunnableConfig {\n const threadId = getConfigString(config, 'thread_id');\n if (threadId == null) {\n return config;\n }\n const checkpointNs = getConfigString(config, 'checkpoint_ns') ?? '';\n const checkpointId = getConfigString(config, 'checkpoint_id');\n return {\n configurable: {\n ...config.configurable,\n thread_id: threadId,\n checkpoint_ns: checkpointNs,\n ...(checkpointId != null ? { checkpoint_id: checkpointId } : {}),\n },\n };\n}\n\nfunction applyCheckpointReferenceToConfig<\n TConfig extends RunnableConfig & { version?: 'v1' | 'v2' },\n>(\n config: TConfig,\n checkpoint:\n | {\n checkpointId?: string;\n checkpointNs?: string;\n }\n | undefined,\n options?: { overwrite?: boolean }\n): TConfig {\n if (\n checkpoint?.checkpointId == null ||\n checkpoint.checkpointId === '' ||\n (options?.overwrite !== true &&\n getConfigString(config, 'checkpoint_id') != null)\n ) {\n return config;\n }\n return {\n ...config,\n configurable: {\n ...config.configurable,\n checkpoint_id: checkpoint.checkpointId,\n checkpoint_ns: checkpoint.checkpointNs ?? '',\n },\n };\n}\n\nfunction getStoredCheckpointForConfig(\n store: JsonlSessionStore | undefined,\n threadId: string,\n config: RunnableConfig\n): SessionCheckpointEntry | undefined {\n const requestedCheckpointNs = getConfigOptionalString(\n config,\n 'checkpoint_ns'\n );\n if (requestedCheckpointNs == null) {\n return store?.getLatestCheckpoint(threadId);\n }\n const checkpoints = store?.getCheckpoints(threadId) ?? [];\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n if ((checkpoint.data.checkpointNs ?? '') === requestedCheckpointNs) {\n return checkpoint;\n }\n }\n return undefined;\n}\n\nfunction createLatestCheckpointLookupConfig(\n config: RunnableConfig\n): RunnableConfig {\n const lookup = createCheckpointLookupConfig(config);\n const { checkpoint_id: _checkpointId, ...configurable } =\n lookup.configurable ?? {};\n return { configurable };\n}\n\nasync function getLatestCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n if (!checkpointer) {\n return undefined;\n }\n const lookupConfig = createLatestCheckpointLookupConfig(config);\n const tuple = await checkpointer.getTuple(lookupConfig);\n if (tuple) {\n return tuple;\n }\n for await (const checkpoint of checkpointer.list(lookupConfig, {\n limit: 1,\n })) {\n return checkpoint;\n }\n return undefined;\n}\n\nasync function getSelectedCheckpointTuple(\n checkpointer: BaseCheckpointSaver | undefined,\n config: RunnableConfig\n): Promise<CheckpointTuple | undefined> {\n return checkpointer?.getTuple(createCheckpointLookupConfig(config));\n}\n\nfunction createCheckpointReference(params: {\n threadId: string;\n tuple: CheckpointTuple;\n}): AgentSessionCheckpointReference {\n const checkpointNs =\n getConfigString(params.tuple.config, 'checkpoint_ns') ?? '';\n const parentCheckpointId = getConfigString(\n params.tuple.parentConfig,\n 'checkpoint_id'\n );\n return {\n provider: 'langgraph',\n threadId: params.threadId,\n checkpointId: params.tuple.checkpoint.id,\n checkpointNs,\n ...(parentCheckpointId != null ? { parentCheckpointId } : {}),\n };\n}\n\nfunction createSessionRunState(entries: SessionEntry[]): {\n messages: BaseMessage[];\n initialSummary?: InitialSummary;\n} {\n const messages: BaseMessage[] = [];\n let initialSummary: InitialSummary | undefined;\n for (const entry of entries) {\n if (entry.type === 'summary') {\n initialSummary = {\n text: entry.data.text,\n tokenCount:\n typeof entry.data.tokenCount === 'number' &&\n Number.isFinite(entry.data.tokenCount)\n ? entry.data.tokenCount\n : 0,\n };\n messages.length = 0;\n continue;\n }\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n }\n }\n return { messages, initialSummary };\n}\n\nfunction isMessageEntry(\n entry: SessionEntry\n): entry is Extract<SessionEntry, { type: 'message' }> {\n return entry.type === 'message';\n}\n\nfunction getSessionBranchTarget(\n store: JsonlSessionStore,\n entryId: string,\n position: 'before' | 'at'\n): SessionEntry | undefined {\n const entry = store.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : store.getEntry(entry.parentId);\n}\n\nfunction getAbandonedPathForBranch(\n store: JsonlSessionStore,\n previousLeafId: string | null,\n targetLeafId: string | null\n): SessionEntry[] {\n const previousPath = store.getPath(previousLeafId ?? undefined);\n if (previousPath.length === 0) {\n return [];\n }\n const targetPath = targetLeafId == null ? [] : store.getPath(targetLeafId);\n const maxSharedLength = Math.min(previousPath.length, targetPath.length);\n let sharedLength = 0;\n while (\n sharedLength < maxSharedLength &&\n previousPath[sharedLength].id === targetPath[sharedLength].id\n ) {\n sharedLength++;\n }\n return previousPath.slice(sharedLength);\n}\n\nfunction createAgentInputFromGraphConfig(\n graphConfig: t.RunConfig['graphConfig'],\n initialSummary: InitialSummary | undefined,\n retainRecentTurns: number | undefined,\n instructions: string | undefined\n): t.AgentInputs {\n let agent: t.AgentInputs;\n if ('agents' in graphConfig) {\n if (graphConfig.agents.length === 0) {\n throw new Error('Cannot compact a session with no agents');\n }\n agent = graphConfig.agents[0];\n } else {\n const {\n type: _type,\n llmConfig,\n signal: _signal,\n tools = [],\n ...agentInputs\n } = graphConfig;\n const { provider, ...clientOptions } = llmConfig;\n agent = {\n ...agentInputs,\n tools,\n provider,\n clientOptions,\n agentId: 'default',\n };\n }\n const summarizationConfig: t.SummarizationConfig = {\n ...(agent.summarizationConfig ?? {}),\n ...(instructions != null && instructions !== ''\n ? { prompt: instructions }\n : {}),\n retainRecent: {\n ...(agent.summarizationConfig?.retainRecent ?? {}),\n ...(retainRecentTurns != null ? { turns: retainRecentTurns } : {}),\n },\n };\n return {\n ...applyInitialSummaryToAgent(agent, initialSummary),\n summarizationEnabled: true,\n summarizationConfig,\n };\n}\n\nfunction createManualCompactGraph(params: {\n runId: string;\n customHandlers?: Record<string, t.EventHandler>;\n hooks?: HookRegistry;\n}): {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n} {\n const contentData: t.RunStep[] = [];\n const contentIndexMap = new Map<string, number>();\n const result: {\n graph: Parameters<typeof createSummarizeNode>[0]['graph'];\n completedSummary?: t.SummaryContentBlock;\n } = {\n graph: {\n contentData,\n contentIndexMap,\n runId: params.runId,\n isMultiAgent: false,\n hookRegistry: params.hooks,\n dispatchRunStep: async (runStep): Promise<void> => {\n contentData.push(runStep);\n contentIndexMap.set(runStep.id, runStep.index);\n await params.customHandlers?.[GraphEvents.ON_RUN_STEP]?.handle(\n GraphEvents.ON_RUN_STEP,\n runStep\n );\n },\n dispatchRunStepCompleted: async (stepId, completed): Promise<void> => {\n const runStep = contentData.find((step) => step.id === stepId);\n const resultWithStep = {\n ...completed,\n id: stepId,\n index: runStep?.index ?? 0,\n };\n if (completed.type === 'summary') {\n result.completedSummary = completed.summary;\n }\n await params.customHandlers?.[\n GraphEvents.ON_RUN_STEP_COMPLETED\n ]?.handle(GraphEvents.ON_RUN_STEP_COMPLETED, {\n result: resultWithStep,\n } as unknown as Parameters<t.EventHandler['handle']>[1]);\n },\n },\n };\n return result;\n}\n\nfunction getSummaryText(summary: t.SummaryContentBlock | undefined): string {\n const firstBlock = summary?.content?.[0];\n return firstBlock != null &&\n typeof firstBlock === 'object' &&\n 'text' in firstBlock &&\n typeof firstBlock.text === 'string'\n ? firstBlock.text\n : '';\n}\n\nfunction getSummaryTokenCount(\n summary: t.SummaryContentBlock | undefined\n): number {\n return typeof summary?.tokenCount === 'number' &&\n Number.isFinite(summary.tokenCount)\n ? summary.tokenCount\n : 0;\n}\n\nfunction filterRemoveMessages(messages: BaseMessage[]): BaseMessage[] {\n return messages.filter((message) => message._getType() !== 'remove');\n}\n\nclass LiveAgentSessionStream implements AgentSessionStream {\n private resultPromise: Promise<AgentSessionRunResult> | undefined;\n private readonly events: AgentSessionStreamEvent[] = [];\n private readonly waiters: Array<{\n resolve: (result: IteratorResult<AgentSessionStreamEvent>) => void;\n reject: (error: unknown) => void;\n }> = [];\n private closed = false;\n private failed = false;\n private error: unknown;\n\n setResultPromise(resultPromise: Promise<AgentSessionRunResult>): void {\n this.resultPromise = resultPromise;\n }\n\n push(event: AgentSessionStreamEvent): void {\n if (this.closed) {\n return;\n }\n const waiter = this.waiters.shift();\n if (waiter) {\n waiter.resolve({ value: event, done: false });\n return;\n }\n this.events.push(event);\n }\n\n complete(): void {\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n }\n\n fail(error: unknown): void {\n this.error = error;\n this.failed = true;\n this.closed = true;\n for (const waiter of this.waiters.splice(0)) {\n waiter.reject(error);\n }\n }\n\n private nextEvent(): Promise<IteratorResult<AgentSessionStreamEvent>> {\n const event = this.events.shift();\n if (event !== undefined) {\n return Promise.resolve({ value: event, done: false });\n }\n if (this.failed) {\n return Promise.reject(this.error);\n }\n if (this.closed) {\n return Promise.resolve({\n value: undefined as unknown as AgentSessionStreamEvent,\n done: true,\n });\n }\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<AgentSessionStreamEvent> {\n for (;;) {\n const next = await this.nextEvent();\n if (next.done === true) {\n return;\n }\n yield next.value;\n }\n }\n\n async *toTextStream(): AsyncIterable<string> {\n for await (const event of this) {\n if (event.type !== 'message.delta' || event.data == null) {\n continue;\n }\n const data = event.data;\n if (typeof data === 'object' && !Array.isArray(data)) {\n const delta = data.delta;\n if (\n delta != null &&\n typeof delta === 'object' &&\n !Array.isArray(delta)\n ) {\n const content = delta.content;\n if (Array.isArray(content)) {\n for (const part of content) {\n if (\n part != null &&\n typeof part === 'object' &&\n !Array.isArray(part) &&\n typeof part.text === 'string'\n ) {\n yield part.text;\n }\n }\n }\n }\n }\n }\n }\n\n finalResult(): Promise<AgentSessionRunResult> {\n if (!this.resultPromise) {\n return Promise.reject(new Error('Session stream has not started'));\n }\n return this.resultPromise;\n }\n}\n\nexport class AgentSession {\n private runConfig: t.RunConfig;\n private store: JsonlSessionStore | undefined;\n private calibrationRatio: number | undefined;\n private checkpointing: SessionCheckpointingState;\n cwd: string;\n threadId: string;\n\n private constructor(params: {\n runConfig: t.RunConfig;\n cwd: string;\n threadId: string;\n checkpointing: SessionCheckpointingState;\n store?: JsonlSessionStore;\n }) {\n this.runConfig = params.runConfig;\n this.cwd = params.cwd;\n this.threadId = params.threadId;\n this.store = params.store;\n this.checkpointing = params.checkpointing;\n }\n\n static async create(config: AgentSessionConfig): Promise<AgentSession> {\n const normalized = normalizeConfig(config);\n const explicitSessionId =\n 'sessionId' in config && typeof config.sessionId === 'string'\n ? config.sessionId\n : undefined;\n const store = await createStore({\n cwd: normalized.cwd,\n sessionPath: normalized.sessionPath,\n name: normalized.name,\n sessionId: explicitSessionId,\n ephemeral: normalized.ephemeral,\n });\n return new AgentSession({\n runConfig: normalized.runConfig,\n cwd: normalized.cwd,\n threadId: store?.header.id ?? explicitSessionId ?? createSessionId(),\n checkpointing: createCheckpointingState(\n normalized.runConfig,\n normalized.checkpointing\n ),\n store,\n });\n }\n\n get sessionPath(): string | undefined {\n return this.store?.path;\n }\n\n getSessionStore(): JsonlSessionStore | undefined {\n return this.store;\n }\n\n getCheckpointer(): BaseCheckpointSaver | undefined {\n return this.checkpointing.checkpointer;\n }\n\n async getLatestCheckpoint(\n options: AgentSessionCheckpointLookupOptions = {}\n ): Promise<AgentSessionCheckpointReference | undefined> {\n const threadId = options.threadId ?? this.threadId;\n const baseConfig = options.config ?? {};\n const config = createCheckpointLookupConfig({\n ...baseConfig,\n configurable: {\n ...(baseConfig.configurable ?? {}),\n thread_id: threadId,\n ...(options.checkpointNs != null\n ? { checkpoint_ns: options.checkpointNs }\n : {}),\n },\n });\n const tuple = await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple ? createCheckpointReference({ threadId, tuple }) : undefined;\n }\n\n private async hasCheckpointState(config: RunnableConfig): Promise<boolean> {\n if (!this.checkpointing.enabled) {\n return false;\n }\n const tuple = await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n config\n );\n return tuple != null;\n }\n\n private async recordCheckpoint(params: {\n source: 'run' | 'resume';\n runId: string;\n threadId: string;\n config: RunnableConfig;\n checkpointId?: string;\n checkpointNs?: string;\n }): Promise<void> {\n if (!this.checkpointing.enabled) {\n return;\n }\n const checkpointConfig = applyCheckpointReferenceToConfig(\n params.config,\n {\n checkpointId: params.checkpointId,\n checkpointNs: params.checkpointNs,\n },\n { overwrite: true }\n );\n const tuple =\n params.checkpointId != null && params.checkpointId !== ''\n ? await getSelectedCheckpointTuple(\n this.checkpointing.checkpointer,\n checkpointConfig\n )\n : await getLatestCheckpointTuple(\n this.checkpointing.checkpointer,\n params.config\n );\n if (!tuple) {\n return;\n }\n const reference = createCheckpointReference({\n threadId: params.threadId,\n tuple,\n });\n await this.store?.appendCheckpoint({\n source: params.source,\n runId: params.runId,\n threadId: params.threadId,\n checkpointId: reference.checkpointId,\n checkpointNs: reference.checkpointNs,\n parentCheckpointId: reference.parentCheckpointId,\n });\n }\n\n private getCheckpointThreadIds(): string[] {\n const threadIds = new Set<string>([this.threadId]);\n for (const checkpoint of this.store?.getCheckpoints() ?? []) {\n threadIds.add(checkpoint.data.threadId);\n }\n return [...threadIds];\n }\n\n private async resetCheckpointThreads(reason: string): Promise<void> {\n const checkpointer = this.checkpointing.checkpointer;\n if (!this.checkpointing.enabled || checkpointer == null) {\n return;\n }\n for (const threadId of this.getCheckpointThreadIds()) {\n await checkpointer.deleteThread(threadId);\n await this.store?.appendCheckpoint({\n source: 'reset',\n threadId,\n reason,\n });\n }\n }\n\n private async runInternal(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {},\n onEvent?: (event: AgentSessionStreamEvent) => void\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const normalizedInput = normalizeInput(input);\n const inputMessages = normalizedInput.messages;\n const callerConfig = createCallerConfig(threadId, options);\n const useCheckpointState = await this.hasCheckpointState(callerConfig);\n let parentId = this.store?.getLeafEntry()?.id ?? null;\n if (isSessionThread) {\n for (const message of inputMessages) {\n const entry = await this.store?.appendMessage(message, parentId);\n parentId = entry?.id ?? parentId;\n }\n }\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n onEvent,\n });\n const emitTerminalEvent = (\n event: Omit<\n AgentSessionStreamEvent,\n 'sequence' | 'runId' | 'threadId' | 'timestamp'\n >\n ): void => {\n const streamEvent: AgentSessionStreamEvent = {\n ...event,\n sequence: handlerResult.events.length,\n runId,\n threadId,\n timestamp: new Date().toISOString(),\n };\n handlerResult.events.push(streamEvent);\n onEvent?.(streamEvent);\n };\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n try {\n const runConfig: t.RunConfig = {\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n };\n const run = await Run.create<t.IState>(runConfig);\n let messages = inputMessages;\n if (!useCheckpointState && sessionState.messages.length > 0) {\n messages = sessionState.messages;\n }\n const content = await run.processStream(\n { ...normalizedInput.state, messages },\n callerConfig,\n options.streamOptions\n );\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n emitTerminalEvent({ type: 'run.interrupted' });\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n emitTerminalEvent({ type: 'run.halted', data: haltedReason });\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n emitTerminalEvent({ type: 'run.completed' });\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n emitTerminalEvent({\n type: 'run.failed',\n data: error instanceof Error ? error.message : String(error),\n });\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'run',\n runId,\n threadId,\n config: callerConfig,\n });\n throw error;\n }\n }\n\n async run(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n return this.runInternal(input, options);\n }\n\n stream(\n input: AgentSessionInput,\n options: AgentSessionRunOptions = {}\n ): AgentSessionStream {\n const stream = new LiveAgentSessionStream();\n const resultPromise = this.runInternal(input, options, (event) => {\n stream.push(event);\n }).then(\n (result) => {\n stream.complete();\n return result;\n },\n (error: unknown) => {\n stream.fail(error);\n throw error;\n }\n );\n stream.setResultPromise(resultPromise);\n return stream;\n }\n\n async resumeSession(pathOrId?: string): Promise<AgentSession> {\n if (pathOrId == null || pathOrId === '') {\n const sessions = await JsonlSessionStore.list(this.cwd);\n if (sessions.length === 0) {\n throw new Error(`No sessions found for ${this.cwd}`);\n }\n this.store = await JsonlSessionStore.open(sessions[0].path);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n this.store = await JsonlSessionStore.open(pathOrId);\n this.cwd = this.store.header.cwd;\n this.threadId = this.store.header.id;\n return this;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot clone an ephemeral session');\n }\n const store = await this.store.clone(options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<AgentSession> {\n if (!this.store) {\n throw new Error('Cannot fork an ephemeral session');\n }\n const store = await this.store.fork(entryId, options);\n return new AgentSession({\n runConfig: this.runConfig,\n cwd: store.header.cwd,\n threadId: store.header.id,\n checkpointing: this.checkpointing,\n store,\n });\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<void> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot branch an ephemeral session');\n }\n const target = getSessionBranchTarget(\n store,\n entryId,\n options.position ?? 'at'\n );\n const previousLeafId = store.getLeafEntry()?.id ?? null;\n let leafId = target?.id ?? null;\n const summarizeAbandoned = options.summarizeAbandoned;\n if (summarizeAbandoned !== undefined && summarizeAbandoned !== false) {\n const instructions =\n typeof summarizeAbandoned === 'object'\n ? summarizeAbandoned.instructions\n : undefined;\n const abandonedPath = getAbandonedPathForBranch(\n store,\n previousLeafId,\n leafId\n );\n const summary = await this.compactActivePath(\n { instructions, retainRecentTurns: 0 },\n leafId,\n abandonedPath\n );\n leafId = summary?.id ?? leafId;\n }\n if (leafId === previousLeafId) {\n return;\n }\n await store.setLeaf(leafId);\n await this.resetCheckpointThreads('branch');\n }\n\n async compact(options: SessionCompactOptions = {}): Promise<void> {\n const summary = await this.compactActivePath(options, null);\n if (summary) {\n await this.resetCheckpointThreads('compact');\n }\n }\n\n private async compactActivePath(\n options: SessionCompactOptions = {},\n parentId: string | null,\n path?: SessionEntry[]\n ): Promise<Extract<SessionEntry, { type: 'summary' }> | undefined> {\n const store = this.store;\n if (!store) {\n throw new Error('Cannot compact an ephemeral session');\n }\n const activePath = path ?? store.getPath();\n const sessionState = createSessionRunState(activePath);\n const messageEntries = activePath.filter(isMessageEntry);\n if (sessionState.messages.length === 0) {\n return undefined;\n }\n const compactRunId = createRunId();\n const agentContext = AgentContext.fromConfig(\n createAgentInputFromGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary,\n options.retainRecentTurns,\n options.instructions\n ),\n this.runConfig.tokenCounter\n );\n const graph = createManualCompactGraph({\n runId: compactRunId,\n customHandlers: this.runConfig.customHandlers,\n hooks: this.runConfig.hooks,\n });\n const summarizeNode = createSummarizeNode({\n agentContext,\n graph: graph.graph,\n generateStepId: (stepKey): [string, number] => [\n `${stepKey}-${compactRunId}`,\n graph.graph.contentData.length,\n ],\n });\n const summarizedState = await summarizeNode(\n {\n messages: sessionState.messages,\n summarizationRequest: {\n remainingContextTokens: agentContext.maxContextTokens ?? 0,\n agentId: agentContext.agentId,\n },\n },\n {\n configurable: { thread_id: this.threadId },\n metadata: { run_id: compactRunId },\n }\n );\n const completedSummaryText = getSummaryText(graph.completedSummary);\n const contextSummaryText = agentContext.getSummaryText();\n let summaryText = completedSummaryText;\n if (summaryText === '' && contextSummaryText != null) {\n summaryText = contextSummaryText;\n }\n if (summaryText === '') {\n return undefined;\n }\n const retainedMessages = filterRemoveMessages(\n summarizedState.messages ?? []\n );\n let retainedEntryIds: string[] = [];\n if (retainedMessages.length > 0) {\n retainedEntryIds = messageEntries\n .slice(-retainedMessages.length)\n .map((entry) => entry.id);\n }\n const retainedEntryIdSet = new Set(retainedEntryIds);\n const summarized = messageEntries.filter(\n (entry) => !retainedEntryIdSet.has(entry.id)\n );\n const summary = await store.appendEntryForCompaction({\n text: summaryText,\n tokenCount: getSummaryTokenCount(graph.completedSummary),\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n instructions: options.instructions,\n parentId,\n });\n let retainedParentId: string | null = summary.id;\n for (const message of retainedMessages) {\n const retainedMessage = await store.appendMessage(\n message,\n retainedParentId\n );\n retainedParentId = retainedMessage.id;\n }\n await store.appendCompactionEntry({\n summaryEntryId: summary.id,\n retainedEntryIds,\n summarizedEntryIds: summarized.map((entry) => entry.id),\n });\n return summary;\n }\n\n async resumeInterrupt<TResume>(\n resumeValue: TResume,\n options: AgentSessionRunOptions = {}\n ): Promise<AgentSessionRunResult> {\n const runId = options.runId ?? createRunId();\n const threadId = options.threadId ?? this.threadId;\n const isSessionThread = threadId === this.threadId;\n const baseCallerConfig = createCallerConfig(threadId, options);\n const callerConfig = applyCheckpointReferenceToConfig(\n baseCallerConfig,\n getStoredCheckpointForConfig(this.store, threadId, baseCallerConfig)?.data\n );\n await this.store?.appendRunEvent('run.started', undefined, {\n runId,\n threadId,\n });\n const handlerResult = createRunHandlers({\n runId,\n threadId,\n userHandlers: this.runConfig.customHandlers,\n });\n const sessionState = createSessionRunState(\n isSessionThread ? (this.store?.getPath() ?? []) : []\n );\n try {\n const run = await Run.create<t.IState>({\n ...this.runConfig,\n runId,\n graphConfig: applyCheckpointingToGraphConfig(\n applyInitialSummaryToGraphConfig(\n this.runConfig.graphConfig,\n sessionState.initialSummary\n ),\n this.checkpointing\n ),\n returnContent: true,\n calibrationRatio: this.calibrationRatio,\n customHandlers: {\n ...(this.runConfig.customHandlers ?? {}),\n ...handlerResult.handlers,\n },\n });\n const content = await run.resume(resumeValue, callerConfig);\n const runMessages = run.getRunMessages() ?? [];\n if (isSessionThread) {\n for (const message of runMessages) {\n await this.store?.appendMessage(message);\n }\n }\n this.calibrationRatio = run.getCalibrationRatio();\n const interrupt = run.getInterrupt();\n const haltedReason = run.getHaltReason();\n if (interrupt) {\n await this.store?.appendRunEvent('run.interrupted', interrupt, {\n runId,\n threadId,\n });\n } else if (haltedReason != null && haltedReason !== '') {\n await this.store?.appendRunEvent('run.halted', haltedReason, {\n runId,\n threadId,\n });\n } else {\n await this.store?.appendRunEvent('run.completed', undefined, {\n runId,\n threadId,\n });\n }\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n checkpointId: interrupt?.checkpointId,\n checkpointNs: interrupt?.checkpointNs,\n });\n const contentParts = (content ?? handlerResult.contentParts).filter(\n (part): part is t.MessageContentComplex => part != null\n );\n return {\n text: contentToText(contentParts),\n content: contentParts,\n messages: runMessages,\n usage: handlerResult.usage,\n steps: handlerResult.steps,\n interrupt,\n haltedReason,\n runId,\n threadId,\n };\n } catch (error) {\n await this.store?.appendRunEvent('run.failed', error, {\n runId,\n threadId,\n });\n await this.recordCheckpoint({\n source: 'resume',\n runId,\n threadId,\n config: callerConfig,\n });\n throw error;\n }\n }\n}\n\nexport function createAgentSession(\n config: AgentSessionConfig\n): Promise<AgentSession> {\n return AgentSession.create(config);\n}\n"],"names":["BaseMessage","messages","HumanMessage","ContentTypes","createRunId","JsonlSessionStore","MemorySaver","deserializeMessage","GraphEvents","createSessionId","createRunHandlers","run","Run","AgentContext","createSummarizeNode"],"mappings":";;;;;;;;;;;;;AAkCA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,QACE,KAAK,YAAYA,oBAAW;SAC3B,KAAK,IAAI,IAAI;YACZ,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,UAAU,IAAI,KAAK;AACnB,YAAA,OAAQ,KAAgC,CAAC,QAAQ,KAAK,UAAU,CAAC;AAEvE;AAOA,SAAS,cAAc,CAAC,KAAwB,EAAA;AAC9C,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAMC,UAAQ,GAAG,CAAC,IAAIC,qBAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,YAAED,UAAQ,EAAE,KAAK,EAAE,YAAEA,UAAQ,EAAE,EAAE;IAC1C;AACA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IACxD;AACA,IAAA,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE;IAC1C;IACA,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;AACnD;AAEA,SAAS,aAAa,CACpB,OAAmD,EAAA;IAEnD,MAAM,MAAM,GAAa,EAAE;AAC3B,IAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;QAC1B,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAKE,kBAAY,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB;IACF;AACA,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB;AAEA,SAAS,eAAe,CAAC,MAA0B,EAAA;AAQjD,IAAA,IAAI,WAAW,IAAI,MAAM,EAAE;QACzB,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC;IACH;IACA,MAAM,EACJ,GAAG,EACH,WAAW,EACX,IAAI,EACJ,SAAS,EACT,aAAa,EACb,SAAS,EAAE,UAAU,EACrB,GAAG,SAAS,EACb,GAAG,MAAM;IACV,OAAO;AACL,QAAA,SAAS,EAAE;AACT,YAAA,GAAG,SAAS;AACZ,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAIC,eAAW,EAAE;AACrC,SAAA;AACD,QAAA,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACzB,WAAW;QACX,IAAI;QACJ,SAAS;QACT,aAAa;KACd;AACH;AAEA,SAAS,qBAAqB,CAAC,KAAc,EAAA;IAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9C,QAAA,OAAO,KAAK;IACd;IACA,MAAM,SAAS,GAAG,KAA4C;AAC9D,IAAA,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/B,QAAA,OAAO,IAAI;IACb;IACA,OAAO,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAAC,KAAK,IAAI;AACrE;AAEA,eAAe,WAAW,CAAC,MAM1B,EAAA;AACC,IAAA,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE;AAC7B,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,EAAE,EAAE;AAC3D,QAAA,IAAI;YACF,OAAO,MAAMC,mCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,MAAM,KAAK;YACb;YACA,OAAOA,mCAAiB,CAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,WAAW;gBACxB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,aAAA,CAAC;QACJ;IACF;IACA,OAAOA,mCAAiB,CAAC,MAAM,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,KAAA,CAAC;AACJ;AAIA,SAAS,mBAAmB,CAC1B,QAAoC,EACpC,cAA0C,EAAA;IAE1C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,cAAc;IACvB;IACA,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,QAAQ;IACjB;IACA,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AACzC,QAAA,OAAO,QAAQ;IACjB;IACA,OAAO;QACL,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAA,IAAA,EAAO,cAAc,CAAC,IAAI,CAAA,CAAE;AAClD,QAAA,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU;KAC5D;AACH;AAEA,SAAS,0BAA0B,CACjC,KAAoB,EACpB,cAA0C,EAAA;IAE1C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC;AACxE,IAAA,OAAO,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK;AAC9D;AAEA,SAAS,gCAAgC,CACvC,WAAuC,EACvC,cAA0C,EAAA;IAE1C,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,WAAW;IACpB;AACA,IAAA,IAAI,QAAQ,IAAI,WAAW,EAAE;QAC3B,OAAO;AACL,YAAA,GAAG,WAAW;AACd,YAAA,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KACnC,0BAA0B,CAAC,KAAK,EAAE,cAAc,CAAC,CAClD;SACF;IACH;IACA,OAAO;AACL,QAAA,GAAG,WAAW;QACd,cAAc,EAAE,mBAAmB,CACjC,WAAW,CAAC,cAAc,EAC1B,cAAc,CACf;KACF;AACH;AAQA,SAAS,iBAAiB,CAAC,KAAc,EAAA;IACvC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9C,QAAA,OAAO,KAAK;IACd;IACA,MAAM,SAAS,GAAG,KAAqC;AACvD,IAAA,QACE,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;AACxC,QAAA,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;AACpC,QAAA,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU;AACnC,QAAA,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU;AACzC,QAAA,OAAO,SAAS,CAAC,YAAY,KAAK,UAAU;AAEhD;AAEA,SAAS,oBAAoB,CAC3B,WAAuC,EAAA;AAEvC,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,cAAc,EAAE,YAAY;AAC7D,IAAA,OAAO,iBAAiB,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,SAAS;AACnE;AAEA,SAAS,wBAAwB,CAC/B,SAAsB,EACtB,aAAoD,EAAA;IAEpD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC;AACrE,IAAA,IAAI,aAAa,KAAK,KAAK,EAAE;QAC3B,OAAO;AACL,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,wBAAwB,EAAE,IAAI;SAC/B;IACH;AACA,IAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACrC,QAAA,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,EAAE;YACnC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,wBAAwB,EAAE,IAAI;aAC/B;QACH;QACA,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;YACb,YAAY,EACV,aAAa,CAAC,YAAY,IAAI,iBAAiB,IAAI,IAAIC,qBAAW,EAAE;SACvE;IACH;AACA,IAAA,IAAI,aAAa,KAAK,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,EAAE;QACxE,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,YAAY,EAAE,iBAAiB,IAAI,IAAIA,qBAAW,EAAE;SACrD;IACH;IACA,OAAO;QACL,OAAO,EAAE,iBAAiB,IAAI,IAAI;AAClC,QAAA,YAAY,EAAE,iBAAiB;KAChC;AACH;AAEA,SAAS,iCAAiC,CACxC,WAAuC,EAAA;IAEvC,IAAI,WAAW,CAAC,cAAc,EAAE,YAAY,IAAI,IAAI,EAAE;AACpD,QAAA,OAAO,WAAW;IACpB;AACA,IAAA,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,GACtD,WAAW,CAAC,cAAc;IAC5B,OAAO;AACL,QAAA,GAAG,WAAW;QACd,cAAc;KACf;AACH;AAEA,SAAS,8BAA8B,CACrC,WAAuC,EACvC,YAA6C,EAAA;IAE7C,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,WAAW;IACpB;IACA,IAAI,WAAW,CAAC,cAAc,EAAE,YAAY,KAAK,YAAY,EAAE;AAC7D,QAAA,OAAO,WAAW;IACpB;IACA,OAAO;AACL,QAAA,GAAG,WAAW;AACd,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC;YACrC,YAAY;AACb,SAAA;KACF;AACH;AAEA,SAAS,+BAA+B,CACtC,WAAuC,EACvC,aAAwC,EAAA;AAExC,IAAA,IAAI,aAAa,CAAC,wBAAwB,KAAK,IAAI,EAAE;AACnD,QAAA,OAAO,iCAAiC,CAAC,WAAW,CAAC;IACvD;IACA,OAAO,8BAA8B,CACnC,WAAW,EACX,aAAa,CAAC,YAAY,CAC3B;AACH;AAEA,SAAS,eAAe,CACtB,MAAkC,EAClC,GAAW,EAAA;AAEX,IAAA,MAAM,YAAY,GAAG,MAAM,EAAE,YAEhB;AACb,IAAA,MAAM,KAAK,GAAG,YAAY,GAAG,GAAG,CAAC;AACjC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,SAAS;AACtE;AAEA,SAAS,uBAAuB,CAC9B,MAAkC,EAClC,GAAW,EAAA;AAEX,IAAA,MAAM,YAAY,GAAG,MAAM,EAAE,YAEhB;IACb,IACE,YAAY,IAAI,IAAI;AACpB,QAAA,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACxD;AACA,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC;AAC/B,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS;AACtD;AAEA,SAAS,kBAAkB,CACzB,QAAgB,EAChB,OAA+B,EAAA;IAE/B,OAAO;AACL,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;AACzB,QAAA,YAAY,EAAE;YACZ,IAAI,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;AACvC,YAAA,SAAS,EAAE,QAAQ;AACpB,SAAA;AACD,QAAA,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI;KACzC;AACH;AAEA,SAAS,4BAA4B,CAAC,MAAsB,EAAA;IAC1D,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;AACrD,IAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,QAAA,OAAO,MAAM;IACf;IACA,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE;IACnE,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC;IAC7D,OAAO;AACL,QAAA,YAAY,EAAE;YACZ,GAAG,MAAM,CAAC,YAAY;AACtB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,aAAa,EAAE,YAAY;AAC3B,YAAA,IAAI,YAAY,IAAI,IAAI,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AACjE,SAAA;KACF;AACH;AAEA,SAAS,gCAAgC,CAGvC,MAAe,EACf,UAKa,EACb,OAAiC,EAAA;AAEjC,IAAA,IACE,UAAU,EAAE,YAAY,IAAI,IAAI;QAChC,UAAU,CAAC,YAAY,KAAK,EAAE;AAC9B,SAAC,OAAO,EAAE,SAAS,KAAK,IAAI;YAC1B,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,IAAI,CAAC,EACnD;AACA,QAAA,OAAO,MAAM;IACf;IACA,OAAO;AACL,QAAA,GAAG,MAAM;AACT,QAAA,YAAY,EAAE;YACZ,GAAG,MAAM,CAAC,YAAY;YACtB,aAAa,EAAE,UAAU,CAAC,YAAY;AACtC,YAAA,aAAa,EAAE,UAAU,CAAC,YAAY,IAAI,EAAE;AAC7C,SAAA;KACF;AACH;AAEA,SAAS,4BAA4B,CACnC,KAAoC,EACpC,QAAgB,EAChB,MAAsB,EAAA;IAEtB,MAAM,qBAAqB,GAAG,uBAAuB,CACnD,MAAM,EACN,eAAe,CAChB;AACD,IAAA,IAAI,qBAAqB,IAAI,IAAI,EAAE;AACjC,QAAA,OAAO,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;IAC7C;IACA,MAAM,WAAW,GAAG,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzD,IAAA,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACtC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,MAAM,qBAAqB,EAAE;AAClE,YAAA,OAAO,UAAU;QACnB;IACF;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,kCAAkC,CACzC,MAAsB,EAAA;AAEtB,IAAA,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC;AACnD,IAAA,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,GACrD,MAAM,CAAC,YAAY,IAAI,EAAE;IAC3B,OAAO,EAAE,YAAY,EAAE;AACzB;AAEA,eAAe,wBAAwB,CACrC,YAA6C,EAC7C,MAAsB,EAAA;IAEtB,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,MAAM,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,KAAK;IACd;IACA,WAAW,MAAM,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;AAC7D,QAAA,KAAK,EAAE,CAAC;AACT,KAAA,CAAC,EAAE;AACF,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,eAAe,0BAA0B,CACvC,YAA6C,EAC7C,MAAsB,EAAA;IAEtB,OAAO,YAAY,EAAE,QAAQ,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACrE;AAEA,SAAS,yBAAyB,CAAC,MAGlC,EAAA;AACC,IAAA,MAAM,YAAY,GAChB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE;AAC7D,IAAA,MAAM,kBAAkB,GAAG,eAAe,CACxC,MAAM,CAAC,KAAK,CAAC,YAAY,EACzB,eAAe,CAChB;IACD,OAAO;AACL,QAAA,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,QAAA,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;QACxC,YAAY;AACZ,QAAA,IAAI,kBAAkB,IAAI,IAAI,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC;KAC9D;AACH;AAEA,SAAS,qBAAqB,CAAC,OAAuB,EAAA;IAIpD,MAAM,QAAQ,GAAkB,EAAE;AAClC,IAAA,IAAI,cAA0C;AAC9C,IAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,YAAA,cAAc,GAAG;AACf,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACrB,UAAU,EACR,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ;oBACzC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU;AACnC,sBAAE,KAAK,CAAC,IAAI,CAAC;AACb,sBAAE,CAAC;aACR;AACD,YAAA,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB;QACF;AACA,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5B,YAAA,QAAQ,CAAC,IAAI,CAACC,uCAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD;IACF;AACA,IAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE;AACrC;AAEA,SAAS,cAAc,CACrB,KAAmB,EAAA;AAEnB,IAAA,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;AACjC;AAEA,SAAS,sBAAsB,CAC7B,KAAwB,EACxB,OAAe,EACf,QAAyB,EAAA;IAEzB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAA,CAAE,CAAC;IAChD;AACA,IAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;IACA,OAAO,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC5E;AAEA,SAAS,yBAAyB,CAChC,KAAwB,EACxB,cAA6B,EAC7B,YAA2B,EAAA;IAE3B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;AAC/D,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAA,OAAO,EAAE;IACX;AACA,IAAA,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAC1E,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;IACxE,IAAI,YAAY,GAAG,CAAC;IACpB,OACE,YAAY,GAAG,eAAe;AAC9B,QAAA,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,EAC7D;AACA,QAAA,YAAY,EAAE;IAChB;AACA,IAAA,OAAO,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC;AACzC;AAEA,SAAS,+BAA+B,CACtC,WAAuC,EACvC,cAA0C,EAC1C,iBAAqC,EACrC,YAAgC,EAAA;AAEhC,IAAA,IAAI,KAAoB;AACxB,IAAA,IAAI,QAAQ,IAAI,WAAW,EAAE;QAC3B,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;QAC5D;AACA,QAAA,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/B;SAAO;QACL,MAAM,EACJ,IAAI,EAAE,KAAK,EACX,SAAS,EACT,MAAM,EAAE,OAAO,EACf,KAAK,GAAG,EAAE,EACV,GAAG,WAAW,EACf,GAAG,WAAW;QACf,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS;AAChD,QAAA,KAAK,GAAG;AACN,YAAA,GAAG,WAAW;YACd,KAAK;YACL,QAAQ;YACR,aAAa;AACb,YAAA,OAAO,EAAE,SAAS;SACnB;IACH;AACA,IAAA,MAAM,mBAAmB,GAA0B;AACjD,QAAA,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC;AACpC,QAAA,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK;AAC3C,cAAE,EAAE,MAAM,EAAE,YAAY;cACtB,EAAE,CAAC;AACP,QAAA,YAAY,EAAE;YACZ,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,IAAI,EAAE,CAAC;AAClD,YAAA,IAAI,iBAAiB,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC;AACnE,SAAA;KACF;IACD,OAAO;AACL,QAAA,GAAG,0BAA0B,CAAC,KAAK,EAAE,cAAc,CAAC;AACpD,QAAA,oBAAoB,EAAE,IAAI;QAC1B,mBAAmB;KACpB;AACH;AAEA,SAAS,wBAAwB,CAAC,MAIjC,EAAA;IAIC,MAAM,WAAW,GAAgB,EAAE;AACnC,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB;AACjD,IAAA,MAAM,MAAM,GAGR;AACF,QAAA,KAAK,EAAE;YACL,WAAW;YACX,eAAe;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,KAAK;AAC1B,YAAA,eAAe,EAAE,OAAO,OAAO,KAAmB;AAChD,gBAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;gBACzB,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;AAC9C,gBAAA,MAAM,MAAM,CAAC,cAAc,GAAGC,iBAAW,CAAC,WAAW,CAAC,EAAE,MAAM,CAC5DA,iBAAW,CAAC,WAAW,EACvB,OAAO,CACR;YACH,CAAC;AACD,YAAA,wBAAwB,EAAE,OAAO,MAAM,EAAE,SAAS,KAAmB;AACnE,gBAAA,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;AAC9D,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,GAAG,SAAS;AACZ,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;iBAC3B;AACD,gBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;AAChC,oBAAA,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC,OAAO;gBAC7C;AACA,gBAAA,MAAM,MAAM,CAAC,cAAc,GACzBA,iBAAW,CAAC,qBAAqB,CAClC,EAAE,MAAM,CAACA,iBAAW,CAAC,qBAAqB,EAAE;AAC3C,oBAAA,MAAM,EAAE,cAAc;AAC+B,iBAAA,CAAC;YAC1D,CAAC;AACF,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,cAAc,CAAC,OAA0C,EAAA;IAChE,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC;IACxC,OAAO,UAAU,IAAI,IAAI;QACvB,OAAO,UAAU,KAAK,QAAQ;AAC9B,QAAA,MAAM,IAAI,UAAU;AACpB,QAAA,OAAO,UAAU,CAAC,IAAI,KAAK;UACzB,UAAU,CAAC;UACX,EAAE;AACR;AAEA,SAAS,oBAAoB,CAC3B,OAA0C,EAAA;AAE1C,IAAA,OAAO,OAAO,OAAO,EAAE,UAAU,KAAK,QAAQ;AAC5C,QAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;UAChC,OAAO,CAAC;UACR,CAAC;AACP;AAEA,SAAS,oBAAoB,CAAC,QAAuB,EAAA;AACnD,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC;AACtE;AAEA,MAAM,sBAAsB,CAAA;AAClB,IAAA,aAAa;IACJ,MAAM,GAA8B,EAAE;IACtC,OAAO,GAGnB,EAAE;IACC,MAAM,GAAG,KAAK;IACd,MAAM,GAAG,KAAK;AACd,IAAA,KAAK;AAEb,IAAA,gBAAgB,CAAC,aAA6C,EAAA;AAC5D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;IACpC;AAEA,IAAA,IAAI,CAAC,KAA8B,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACnC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC7C;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC3C,MAAM,CAAC,OAAO,CAAC;AACb,gBAAA,KAAK,EAAE,SAA+C;AACtD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAI,CAAC,KAAc,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;IACF;IAEQ,SAAS,GAAA;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACvD;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,gBAAA,KAAK,EAAE,SAA+C;AACtD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ;QACA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,MAAM,CAAC,aAAa,CAAC,GAAA;AAC3B,QAAA,SAAS;AACP,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;gBACtB;YACF;YACA,MAAM,IAAI,CAAC,KAAK;QAClB;IACF;IAEA,OAAO,YAAY,GAAA;AACjB,QAAA,WAAW,MAAM,KAAK,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;gBACxD;YACF;AACA,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACpD,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;gBACxB,IACE,KAAK,IAAI,IAAI;oBACb,OAAO,KAAK,KAAK,QAAQ;AACzB,oBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB;AACA,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;AAC7B,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,wBAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;4BAC1B,IACE,IAAI,IAAI,IAAI;gCACZ,OAAO,IAAI,KAAK,QAAQ;AACxB,gCAAA,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,gCAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC7B;gCACA,MAAM,IAAI,CAAC,IAAI;4BACjB;wBACF;oBACF;gBACF;YACF;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpE;QACA,OAAO,IAAI,CAAC,aAAa;IAC3B;AACD;MAEY,YAAY,CAAA;AACf,IAAA,SAAS;AACT,IAAA,KAAK;AACL,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACrB,IAAA,GAAG;AACH,IAAA,QAAQ;AAER,IAAA,WAAA,CAAoB,MAMnB,EAAA;AACC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AACjC,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;IAC3C;AAEA,IAAA,aAAa,MAAM,CAAC,MAA0B,EAAA;AAC5C,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1C,MAAM,iBAAiB,GACrB,WAAW,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK;cACjD,MAAM,CAAC;cACP,SAAS;AACf,QAAA,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;YAC9B,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,YAAA,SAAS,EAAE,iBAAiB;YAC5B,SAAS,EAAE,UAAU,CAAC,SAAS;AAChC,SAAA,CAAC;QACF,OAAO,IAAI,YAAY,CAAC;YACtB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,iBAAiB,IAAIC,mBAAe,EAAE;YACpE,aAAa,EAAE,wBAAwB,CACrC,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,aAAa,CACzB;YACD,KAAK;AACN,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI;IACzB;IAEA,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY;IACxC;AAEA,IAAA,MAAM,mBAAmB,CACvB,OAAA,GAA+C,EAAE,EAAA;QAEjD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAClD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAC1C,YAAA,GAAG,UAAU;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;AAClC,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,IAAI,OAAO,CAAC,YAAY,IAAI;AAC1B,sBAAE,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY;sBACrC,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAC1C,IAAI,CAAC,aAAa,CAAC,YAAY,EAC/B,MAAM,CACP;AACD,QAAA,OAAO,KAAK,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS;IAC3E;IAEQ,MAAM,kBAAkB,CAAC,MAAsB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/B,YAAA,OAAO,KAAK;QACd;AACA,QAAA,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAC5C,IAAI,CAAC,aAAa,CAAC,YAAY,EAC/B,MAAM,CACP;QACD,OAAO,KAAK,IAAI,IAAI;IACtB;IAEQ,MAAM,gBAAgB,CAAC,MAO9B,EAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC/B;QACF;AACA,QAAA,MAAM,gBAAgB,GAAG,gCAAgC,CACvD,MAAM,CAAC,MAAM,EACb;YACE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY;AAClC,SAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB;AACD,QAAA,MAAM,KAAK,GACT,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK;cACnD,MAAM,0BAA0B,CAChC,IAAI,CAAC,aAAa,CAAC,YAAY,EAC/B,gBAAgB;AAElB,cAAE,MAAM,wBAAwB,CAC9B,IAAI,CAAC,aAAa,CAAC,YAAY,EAC/B,MAAM,CAAC,MAAM,CACd;QACL,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,MAAM,SAAS,GAAG,yBAAyB,CAAC;YAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK;AACN,SAAA,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;AACjD,SAAA,CAAC;IACJ;IAEQ,sBAAsB,GAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE;YAC3D,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC;AACA,QAAA,OAAO,CAAC,GAAG,SAAS,CAAC;IACvB;IAEQ,MAAM,sBAAsB,CAAC,MAAc,EAAA;AACjD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QACpD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,YAAY,IAAI,IAAI,EAAE;YACvD;QACF;QACA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACpD,YAAA,MAAM,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC;AACzC,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACjC,gBAAA,MAAM,EAAE,OAAO;gBACf,QAAQ;gBACR,MAAM;AACP,aAAA,CAAC;QACJ;IACF;IAEQ,MAAM,WAAW,CACvB,KAAwB,EACxB,OAAA,GAAkC,EAAE,EACpC,OAAkD,EAAA;QAElD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAIL,eAAW,EAAE;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAClD,QAAA,MAAM,eAAe,GAAG,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAClD,QAAA,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC;AAC7C,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ;QAC9C,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC1D,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACtE,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;QACrD,IAAI,eAAe,EAAE;AACnB,YAAA,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE;AACnC,gBAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChE,gBAAA,QAAQ,GAAG,KAAK,EAAE,EAAE,IAAI,QAAQ;YAClC;QACF;QACA,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE;YACzD,KAAK;YACL,QAAQ;AACT,SAAA,CAAC;QAEF,MAAM,aAAa,GAAGM,0BAAiB,CAAC;YACtC,KAAK;YACL,QAAQ;AACR,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;YAC3C,OAAO;AACR,SAAA,CAAC;AACF,QAAA,MAAM,iBAAiB,GAAG,CACxB,KAGC,KACO;AACR,YAAA,MAAM,WAAW,GAA4B;AAC3C,gBAAA,GAAG,KAAK;AACR,gBAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM;gBACrC,KAAK;gBACL,QAAQ;AACR,gBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;AACD,YAAA,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,OAAO,GAAG,WAAW,CAAC;AACxB,QAAA,CAAC;QACD,MAAM,YAAY,GAAG,qBAAqB,CACxC,eAAe,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CACrD;AACD,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAgB;gBAC7B,GAAG,IAAI,CAAC,SAAS;gBACjB,KAAK;AACL,gBAAA,WAAW,EAAE,+BAA+B,CAC1C,gCAAgC,CAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,EAC1B,YAAY,CAAC,cAAc,CAC5B,EACD,IAAI,CAAC,aAAa,CACnB;AACD,gBAAA,aAAa,EAAE,IAAI;gBACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,gBAAA,cAAc,EAAE;oBACd,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;oBACxC,GAAG,aAAa,CAAC,QAAQ;AAC1B,iBAAA;aACF;YACD,MAAMC,KAAG,GAAG,MAAMC,OAAG,CAAC,MAAM,CAAW,SAAS,CAAC;YACjD,IAAI,QAAQ,GAAG,aAAa;YAC5B,IAAI,CAAC,kBAAkB,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3D,gBAAA,QAAQ,GAAG,YAAY,CAAC,QAAQ;YAClC;YACA,MAAM,OAAO,GAAG,MAAMD,KAAG,CAAC,aAAa,CACrC,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EACtC,YAAY,EACZ,OAAO,CAAC,aAAa,CACtB;YACD,MAAM,WAAW,GAAGA,KAAG,CAAC,cAAc,EAAE,IAAI,EAAE;YAC9C,IAAI,eAAe,EAAE;AACnB,gBAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;oBACjC,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;gBAC1C;YACF;AACA,YAAA,IAAI,CAAC,gBAAgB,GAAGA,KAAG,CAAC,mBAAmB,EAAE;AACjD,YAAA,MAAM,SAAS,GAAGA,KAAG,CAAC,YAAY,EAAE;AACpC,YAAA,MAAM,YAAY,GAAGA,KAAG,CAAC,aAAa,EAAE;YACxC,IAAI,SAAS,EAAE;AACb,gBAAA,iBAAiB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE;oBAC7D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;iBAAO,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE;gBACtD,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAC7D,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE;oBAC3D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,iBAAiB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;oBAC3D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;YACA,MAAM,IAAI,CAAC,gBAAgB,CAAC;AAC1B,gBAAA,MAAM,EAAE,KAAK;gBACb,KAAK;gBACL,QAAQ;AACR,gBAAA,MAAM,EAAE,YAAY;gBACpB,YAAY,EAAE,SAAS,EAAE,YAAY;gBACrC,YAAY,EAAE,SAAS,EAAE,YAAY;AACtC,aAAA,CAAC;YACF,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,MAAM,CACjE,CAAC,IAAI,KAAsC,IAAI,IAAI,IAAI,CACxD;YACD,OAAO;AACL,gBAAA,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC;AACjC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,SAAS;gBACT,YAAY;gBACZ,KAAK;gBACL,QAAQ;aACT;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,iBAAiB,CAAC;AAChB,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,IAAI,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7D,aAAA,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE;gBACpD,KAAK;gBACL,QAAQ;AACT,aAAA,CAAC;YACF,MAAM,IAAI,CAAC,gBAAgB,CAAC;AAC1B,gBAAA,MAAM,EAAE,KAAK;gBACb,KAAK;gBACL,QAAQ;AACR,gBAAA,MAAM,EAAE,YAAY;AACrB,aAAA,CAAC;AACF,YAAA,MAAM,KAAK;QACb;IACF;AAEA,IAAA,MAAM,GAAG,CACP,KAAwB,EACxB,UAAkC,EAAE,EAAA;QAEpC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IACzC;AAEA,IAAA,MAAM,CACJ,KAAwB,EACxB,OAAA,GAAkC,EAAE,EAAA;AAEpC,QAAA,MAAM,MAAM,GAAG,IAAI,sBAAsB,EAAE;AAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAI;AAC/D,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACpB,QAAA,CAAC,CAAC,CAAC,IAAI,CACL,CAAC,MAAM,KAAI;YACT,MAAM,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,EACD,CAAC,KAAc,KAAI;AACjB,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,YAAA,MAAM,KAAK;AACb,QAAA,CAAC,CACF;AACD,QAAA,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACtC,QAAA,OAAO,MAAM;IACf;IAEA,MAAM,aAAa,CAAC,QAAiB,EAAA;QACnC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,MAAMN,mCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;YACtD;AACA,YAAA,IAAI,CAAC,KAAK,GAAG,MAAMA,mCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI;QACb;QACA,IAAI,CAAC,KAAK,GAAG,MAAMA,mCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACpC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,KAAK,CAAC,OAAA,GAA8B,EAAE,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;QACtD;QACA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7C,OAAO,IAAI,YAAY,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;AACrB,YAAA,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK;AACN,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,CACR,OAAe,EACf,UAA8B,EAAE,EAAA;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;QACrD;AACA,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACrD,OAAO,IAAI,YAAY,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;AACrB,YAAA,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK;AACN,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,MAAM,CACV,OAAe,EACf,UAAgC,EAAE,EAAA;AAElC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;QACvD;AACA,QAAA,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,OAAO,EACP,OAAO,CAAC,QAAQ,IAAI,IAAI,CACzB;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI;AACvD,QAAA,IAAI,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI;AAC/B,QAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB;QACrD,IAAI,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,KAAK,EAAE;AACpE,YAAA,MAAM,YAAY,GAChB,OAAO,kBAAkB,KAAK;kBAC1B,kBAAkB,CAAC;kBACnB,SAAS;YACf,MAAM,aAAa,GAAG,yBAAyB,CAC7C,KAAK,EACL,cAAc,EACd,MAAM,CACP;AACD,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC1C,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,EAAE,EACtC,MAAM,EACN,aAAa,CACd;AACD,YAAA,MAAM,GAAG,OAAO,EAAE,EAAE,IAAI,MAAM;QAChC;AACA,QAAA,IAAI,MAAM,KAAK,cAAc,EAAE;YAC7B;QACF;AACA,QAAA,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,QAAA,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;IAC7C;AAEA,IAAA,MAAM,OAAO,CAAC,OAAA,GAAiC,EAAE,EAAA;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3D,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;QAC9C;IACF;IAEQ,MAAM,iBAAiB,CAC7B,OAAA,GAAiC,EAAE,EACnC,QAAuB,EACvB,IAAqB,EAAA;AAErB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;QACxD;QACA,MAAM,UAAU,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1C,QAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,UAAU,CAAC;QACtD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;QACxD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,YAAY,GAAGD,eAAW,EAAE;AAClC,QAAA,MAAM,YAAY,GAAGS,yBAAY,CAAC,UAAU,CAC1C,+BAA+B,CAC7B,IAAI,CAAC,SAAS,CAAC,WAAW,EAC1B,YAAY,CAAC,cAAc,EAC3B,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,YAAY,CACrB,EACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAC5B;QACD,MAAM,KAAK,GAAG,wBAAwB,CAAC;AACrC,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;AAC7C,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;AAC5B,SAAA,CAAC;QACF,MAAM,aAAa,GAAGC,wBAAmB,CAAC;YACxC,YAAY;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,YAAA,cAAc,EAAE,CAAC,OAAO,KAAuB;gBAC7C,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE;AAC5B,gBAAA,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;AAC/B,aAAA;AACF,SAAA,CAAC;AACF,QAAA,MAAM,eAAe,GAAG,MAAM,aAAa,CACzC;YACE,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAC/B,YAAA,oBAAoB,EAAE;AACpB,gBAAA,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,IAAI,CAAC;gBAC1D,OAAO,EAAE,YAAY,CAAC,OAAO;AAC9B,aAAA;SACF,EACD;AACE,YAAA,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1C,YAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;AACnC,SAAA,CACF;QACD,MAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnE,QAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,EAAE;QACxD,IAAI,WAAW,GAAG,oBAAoB;QACtC,IAAI,WAAW,KAAK,EAAE,IAAI,kBAAkB,IAAI,IAAI,EAAE;YACpD,WAAW,GAAG,kBAAkB;QAClC;AACA,QAAA,IAAI,WAAW,KAAK,EAAE,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,gBAAgB,GAAG,oBAAoB,CAC3C,eAAe,CAAC,QAAQ,IAAI,EAAE,CAC/B;QACD,IAAI,gBAAgB,GAAa,EAAE;AACnC,QAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,gBAAgB,GAAG;AAChB,iBAAA,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM;iBAC9B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;QAC7B;AACA,QAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC7C;AACD,QAAA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC;AACnD,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,UAAU,EAAE,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACxD,gBAAgB;AAChB,YAAA,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YACvD,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,QAAQ;AACT,SAAA,CAAC;AACF,QAAA,IAAI,gBAAgB,GAAkB,OAAO,CAAC,EAAE;AAChD,QAAA,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE;YACtC,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,aAAa,CAC/C,OAAO,EACP,gBAAgB,CACjB;AACD,YAAA,gBAAgB,GAAG,eAAe,CAAC,EAAE;QACvC;QACA,MAAM,KAAK,CAAC,qBAAqB,CAAC;YAChC,cAAc,EAAE,OAAO,CAAC,EAAE;YAC1B,gBAAgB;AAChB,YAAA,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;AACxD,SAAA,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,MAAM,eAAe,CACnB,WAAoB,EACpB,UAAkC,EAAE,EAAA;QAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAIV,eAAW,EAAE;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAClD,QAAA,MAAM,eAAe,GAAG,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9D,QAAA,MAAM,YAAY,GAAG,gCAAgC,CACnD,gBAAgB,EAChB,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,IAAI,CAC3E;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE;YACzD,KAAK;YACL,QAAQ;AACT,SAAA,CAAC;QACF,MAAM,aAAa,GAAGM,0BAAiB,CAAC;YACtC,KAAK;YACL,QAAQ;AACR,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;AAC5C,SAAA,CAAC;QACF,MAAM,YAAY,GAAG,qBAAqB,CACxC,eAAe,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CACrD;AACD,QAAA,IAAI;AACF,YAAA,MAAMC,KAAG,GAAG,MAAMC,OAAG,CAAC,MAAM,CAAW;gBACrC,GAAG,IAAI,CAAC,SAAS;gBACjB,KAAK;AACL,gBAAA,WAAW,EAAE,+BAA+B,CAC1C,gCAAgC,CAC9B,IAAI,CAAC,SAAS,CAAC,WAAW,EAC1B,YAAY,CAAC,cAAc,CAC5B,EACD,IAAI,CAAC,aAAa,CACnB;AACD,gBAAA,aAAa,EAAE,IAAI;gBACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,gBAAA,cAAc,EAAE;oBACd,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;oBACxC,GAAG,aAAa,CAAC,QAAQ;AAC1B,iBAAA;AACF,aAAA,CAAC;YACF,MAAM,OAAO,GAAG,MAAMD,KAAG,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC3D,MAAM,WAAW,GAAGA,KAAG,CAAC,cAAc,EAAE,IAAI,EAAE;YAC9C,IAAI,eAAe,EAAE;AACnB,gBAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;oBACjC,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;gBAC1C;YACF;AACA,YAAA,IAAI,CAAC,gBAAgB,GAAGA,KAAG,CAAC,mBAAmB,EAAE;AACjD,YAAA,MAAM,SAAS,GAAGA,KAAG,CAAC,YAAY,EAAE;AACpC,YAAA,MAAM,YAAY,GAAGA,KAAG,CAAC,aAAa,EAAE;YACxC,IAAI,SAAS,EAAE;gBACb,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE;oBAC7D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;iBAAO,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE;gBACtD,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE;oBAC3D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;iBAAO;gBACL,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;oBAC3D,KAAK;oBACL,QAAQ;AACT,iBAAA,CAAC;YACJ;YACA,MAAM,IAAI,CAAC,gBAAgB,CAAC;AAC1B,gBAAA,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,QAAQ;AACR,gBAAA,MAAM,EAAE,YAAY;gBACpB,YAAY,EAAE,SAAS,EAAE,YAAY;gBACrC,YAAY,EAAE,SAAS,EAAE,YAAY;AACtC,aAAA,CAAC;YACF,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,MAAM,CACjE,CAAC,IAAI,KAAsC,IAAI,IAAI,IAAI,CACxD;YACD,OAAO;AACL,gBAAA,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC;AACjC,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAE,WAAW;gBACrB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,SAAS;gBACT,YAAY;gBACZ,KAAK;gBACL,QAAQ;aACT;QACH;QAAE,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE;gBACpD,KAAK;gBACL,QAAQ;AACT,aAAA,CAAC;YACF,MAAM,IAAI,CAAC,gBAAgB,CAAC;AAC1B,gBAAA,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,QAAQ;AACR,gBAAA,MAAM,EAAE,YAAY;AACrB,aAAA,CAAC;AACF,YAAA,MAAM,KAAK;QACb;IACF;AACD;AAEK,SAAU,kBAAkB,CAChC,MAA0B,EAAA;AAE1B,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC;;;;;"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var os = require('os');
|
|
4
4
|
var crypto = require('crypto');
|
|
5
|
+
var messages = require('@langchain/core/messages');
|
|
5
6
|
var path = require('path');
|
|
6
7
|
var promises = require('fs/promises');
|
|
7
|
-
var messages = require('@langchain/core/messages');
|
|
8
|
-
var ids = require('./ids.cjs');
|
|
9
8
|
var messageSerialization = require('./messageSerialization.cjs');
|
|
9
|
+
var ids = require('./ids.cjs');
|
|
10
10
|
|
|
11
11
|
const SESSION_VERSION = 1;
|
|
12
12
|
const DEFAULT_SESSION_ROOT = path.join(os.homedir(), '.librechat', 'agents', 'sessions');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlSessionStore.cjs","sources":["../../../src/session/JsonlSessionStore.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { createHash } from 'crypto';\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 {\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 type { BaseMessage } from '@langchain/core/messages';\nimport { SystemMessage } from '@langchain/core/messages';\nimport { createEntryId, createSessionId, createTimestamp } from './ids';\nimport {\n deserializeMessage,\n getMessageRole,\n serializeMessage,\n toJsonValue,\n} from './messageSerialization';\n\nconst SESSION_VERSION = 1;\nconst DEFAULT_SESSION_ROOT = join(\n homedir(),\n '.librechat',\n 'agents',\n 'sessions'\n);\n\nfunction sanitizeCwd(cwd: string): string {\n const normalized = resolve(cwd);\n return createHash('sha256').update(normalized).digest('hex');\n}\n\nfunction createSessionPath(options: CreateSessionFileOptions): string {\n const sessionId = options.sessionId ?? createSessionId();\n const fileName = `${new Date().toISOString().replace(/[:.]/g, '-')}_${sessionId}.jsonl`;\n return join(DEFAULT_SESSION_ROOT, sanitizeCwd(options.cwd), fileName);\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseLine(line: string): SessionHeader | SessionEntry | undefined {\n if (line.trim() === '') {\n return undefined;\n }\n try {\n const parsed = JSON.parse(line) as SessionHeader | SessionEntry;\n if (parsed.type === 'session') {\n return parsed;\n }\n if ('id' in parsed && 'parentId' in parsed && 'data' in parsed) {\n return parsed;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction createHeader(options: CreateSessionFileOptions): SessionHeader {\n return {\n type: 'session',\n version: SESSION_VERSION,\n id: options.sessionId ?? createSessionId(),\n timestamp: createTimestamp(),\n cwd: resolve(options.cwd),\n ...(options.name != null && options.name !== ''\n ? { name: options.name }\n : {}),\n ...(options.parentSession != null && options.parentSession !== ''\n ? { parentSession: options.parentSession }\n : {}),\n };\n}\n\nfunction sortEntries(entries: SessionEntry[]): SessionEntry[] {\n return [...entries].sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n}\n\nexport class JsonlSessionStore {\n readonly path: string;\n readonly header: SessionHeader;\n private entries: SessionEntry[];\n\n private constructor(params: {\n path: string;\n header: SessionHeader;\n entries: SessionEntry[];\n }) {\n this.path = params.path;\n this.header = params.header;\n this.entries = sortEntries(params.entries);\n }\n\n static getDefaultRoot(): string {\n return DEFAULT_SESSION_ROOT;\n }\n\n static async create(\n options: CreateSessionFileOptions & { path?: string }\n ): Promise<JsonlSessionStore> {\n const sessionId = options.sessionId ?? createSessionId();\n const path =\n options.path != null && options.path !== ''\n ? resolve(options.path)\n : createSessionPath({ ...options, sessionId });\n const header = createHeader({ ...options, sessionId });\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(header)}\\n`, {\n encoding: 'utf8',\n flag: 'wx',\n });\n return new JsonlSessionStore({ path, header, entries: [] });\n }\n\n static async open(pathOrId: string): Promise<JsonlSessionStore> {\n const path = await JsonlSessionStore.resolvePath(pathOrId);\n return JsonlSessionStore.openPath(path);\n }\n\n static async openPath(path: string): Promise<JsonlSessionStore> {\n const resolved = resolve(path);\n const raw = await readFile(resolved, 'utf8');\n const parsed = raw\n .split('\\n')\n .map((line) => parseLine(line))\n .filter((line): line is SessionHeader | SessionEntry => line != null);\n const header = parsed.find(\n (line): line is SessionHeader => line.type === 'session'\n );\n if (!header) {\n throw new Error(`Invalid session file: ${resolved}`);\n }\n const entries = parsed.filter(\n (line): line is SessionEntry => line.type !== 'session'\n );\n return new JsonlSessionStore({ path: resolved, header, entries });\n }\n\n static async resolvePath(pathOrId: string): Promise<string> {\n const candidate = isAbsolute(pathOrId) ? pathOrId : resolve(pathOrId);\n if (await pathExists(candidate)) {\n return candidate;\n }\n const sessions = await JsonlSessionStore.listAll();\n const matches = sessions.filter(\n (item) =>\n item.id.startsWith(pathOrId) || basename(item.path).includes(pathOrId)\n );\n if (matches.length === 1) {\n return matches[0].path;\n }\n if (matches.length > 1) {\n throw new Error(`Session id \"${pathOrId}\" is ambiguous`);\n }\n throw new Error(`Session not found: ${pathOrId}`);\n }\n\n static async list(cwd: string): Promise<SessionListItem[]> {\n const dir = join(DEFAULT_SESSION_ROOT, sanitizeCwd(cwd));\n return JsonlSessionStore.listDirectory(dir);\n }\n\n static async listAll(\n root: string = DEFAULT_SESSION_ROOT\n ): Promise<SessionListItem[]> {\n if (!(await pathExists(root))) {\n return [];\n }\n const dirs = await readdir(root, { withFileTypes: true });\n const lists = await Promise.all(\n dirs\n .filter((entry) => entry.isDirectory())\n .map((entry) => JsonlSessionStore.listDirectory(join(root, entry.name)))\n );\n return lists.flat().sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n private static async listDirectory(dir: string): Promise<SessionListItem[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const files = await readdir(dir, { withFileTypes: true });\n const candidates = files\n .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))\n .map((entry) => join(dir, entry.name));\n const items = await Promise.all(\n candidates.map(async (path): Promise<SessionListItem | undefined> => {\n try {\n const store = await JsonlSessionStore.open(path);\n return {\n id: store.header.id,\n path,\n cwd: store.header.cwd,\n timestamp: store.header.timestamp,\n name: store.header.name,\n leafId: store.getLeafEntry()?.id ?? null,\n };\n } catch {\n return undefined;\n }\n })\n );\n return items\n .filter((item): item is SessionListItem => item != null)\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n getEntries(): SessionEntry[] {\n return [...this.entries];\n }\n\n getEntry(id: string): SessionEntry | undefined {\n return this.entries.find((entry) => entry.id === id);\n }\n\n getChildren(id: string): SessionEntry[] {\n return this.entries.filter((entry) => entry.parentId === id);\n }\n\n getTree(): SessionTreeNode[] {\n const byParent = new Map<string | null, SessionEntry[]>();\n for (const entry of this.entries) {\n const siblings = byParent.get(entry.parentId) ?? [];\n siblings.push(entry);\n byParent.set(entry.parentId, siblings);\n }\n const build = (parentId: string | null): SessionTreeNode[] =>\n (byParent.get(parentId) ?? []).map((entry) => ({\n entry,\n children: build(entry.id),\n }));\n return build(null);\n }\n\n getLeafEntry(): SessionEntry | undefined {\n const state = [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionStateEntry => entry.type === 'session_state'\n );\n if (state) {\n return state.data.leafId == null\n ? undefined\n : this.getEntry(state.data.leafId);\n }\n return [...this.entries]\n .reverse()\n .find((entry) => entry.type === 'message' || entry.type === 'summary');\n }\n\n getPath(\n entryId: string | undefined = this.getLeafEntry()?.id\n ): SessionEntry[] {\n if (entryId == null || entryId === '') {\n return [];\n }\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const path: SessionEntry[] = [];\n let current: SessionEntry | undefined = byId.get(entryId);\n while (current) {\n path.push(current);\n current =\n current.parentId == null ? undefined : byId.get(current.parentId);\n }\n return path.reverse();\n }\n\n getMessages(entryId?: string): BaseMessage[] {\n const messages: BaseMessage[] = [];\n for (const entry of this.getPath(entryId)) {\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n } else if (entry.type === 'summary') {\n messages.push(new SystemMessage(entry.data.text));\n }\n }\n return messages;\n }\n\n getForkPoints(): SessionMessageEntry[] {\n return this.entries.filter(\n (entry): entry is SessionMessageEntry =>\n entry.type === 'message' && entry.data.role === 'user'\n );\n }\n\n getLabel(entryId: string): string | undefined {\n return [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionLabelEntry =>\n entry.type === 'label' && entry.data.targetEntryId === entryId\n )?.data.label;\n }\n\n async setLabel(entryId: string, label: string): Promise<SessionLabelEntry> {\n return this.appendEntry<SessionLabelEntry>({\n type: 'label',\n parentId: this.getLeafEntry()?.id ?? null,\n data: { targetEntryId: entryId, label },\n });\n }\n\n async appendMessage(\n message: BaseMessage,\n parentId: string | null = this.getLeafEntry()?.id ?? null\n ): Promise<SessionMessageEntry> {\n const entry = await this.appendEntry<SessionMessageEntry>({\n type: 'message',\n parentId,\n data: {\n role: getMessageRole(message),\n message: serializeMessage(message),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendRunEvent(\n event: string,\n payload?: unknown,\n params?: { runId?: string; threadId?: string }\n ): Promise<SessionRunEventEntry> {\n return this.appendEntry<SessionRunEventEntry>({\n type: 'run_event',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n event,\n ...(params?.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params?.threadId != null && params.threadId !== ''\n ? { threadId: params.threadId }\n : {}),\n ...(typeof payload !== 'undefined'\n ? { payload: toJsonValue(payload) }\n : {}),\n },\n });\n }\n\n async setLeaf(leafId: string | null): Promise<SessionStateEntry> {\n return this.appendEntry<SessionStateEntry>({\n type: 'session_state',\n parentId: leafId,\n data: { leafId },\n });\n }\n\n async appendEntryForCompaction(params: {\n text: string;\n tokenCount?: number;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n instructions?: string;\n parentId?: string | null;\n }): Promise<SessionSummaryEntry> {\n const tokenCount =\n typeof params.tokenCount === 'number' &&\n Number.isFinite(params.tokenCount) &&\n params.tokenCount >= 0\n ? params.tokenCount\n : undefined;\n const entry = await this.appendEntry<SessionSummaryEntry>({\n type: 'summary',\n parentId:\n 'parentId' in params\n ? (params.parentId ?? null)\n : (this.getLeafEntry()?.id ?? null),\n data: {\n text: params.text,\n ...(tokenCount != null ? { tokenCount } : {}),\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n ...(params.instructions != null && params.instructions !== ''\n ? { instructions: params.instructions }\n : {}),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendCompactionEntry(params: {\n summaryEntryId: string;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n }): Promise<SessionCompactionEntry> {\n return this.appendEntry<SessionCompactionEntry>({\n type: 'compaction',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n summaryEntryId: params.summaryEntryId,\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n },\n });\n }\n\n async appendCheckpoint(params: {\n source: SessionCheckpointEntry['data']['source'];\n threadId: string;\n runId?: string;\n checkpointId?: string;\n checkpointNs?: string;\n parentCheckpointId?: string;\n reason?: string;\n }): Promise<SessionCheckpointEntry> {\n return this.appendEntry<SessionCheckpointEntry>({\n type: 'checkpoint',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n provider: 'langgraph',\n source: params.source,\n threadId: params.threadId,\n ...(params.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params.checkpointId != null && params.checkpointId !== ''\n ? { checkpointId: params.checkpointId }\n : {}),\n ...(params.checkpointNs != null\n ? { checkpointNs: params.checkpointNs }\n : {}),\n ...(params.parentCheckpointId != null &&\n params.parentCheckpointId !== ''\n ? { parentCheckpointId: params.parentCheckpointId }\n : {}),\n ...(params.reason != null && params.reason !== ''\n ? { reason: params.reason }\n : {}),\n },\n });\n }\n\n getCheckpoints(threadId?: string): SessionCheckpointEntry[] {\n return this.entries.filter(\n (entry): entry is SessionCheckpointEntry =>\n entry.type === 'checkpoint' &&\n (threadId == null || entry.data.threadId === threadId)\n );\n }\n\n getLatestCheckpoint(threadId?: string): SessionCheckpointEntry | undefined {\n const checkpoints = this.getCheckpoints(threadId);\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n return checkpoint;\n }\n return undefined;\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<SessionEntry | undefined> {\n const target = this.getBranchTarget(entryId, options.position ?? 'at');\n await this.setLeaf(target?.id ?? null);\n return target;\n }\n\n async createBranchedSession(\n entryId: string | undefined = this.getLeafEntry()?.id,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n const target =\n entryId != null && entryId !== ''\n ? this.getBranchTarget(entryId, options.position ?? 'at')\n : this.getLeafEntry();\n const newStore = await JsonlSessionStore.create({\n cwd: options.cwd ?? this.header.cwd,\n name: options.name ?? this.header.name,\n parentSession: this.path,\n });\n const pathEntries = target ? this.getPath(target.id) : [];\n for (const entry of pathEntries) {\n await newStore.appendExistingEntry(entry);\n }\n await newStore.setLeaf(target?.id ?? null);\n return newStore;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<JsonlSessionStore> {\n return this.createBranchedSession(this.getLeafEntry()?.id, {\n ...options,\n position: 'at',\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n return this.createBranchedSession(entryId, {\n ...options,\n position: options.position ?? 'before',\n });\n }\n\n private getBranchTarget(\n entryId: string,\n position: 'before' | 'at'\n ): SessionEntry | undefined {\n const entry = this.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : this.getEntry(entry.parentId);\n }\n\n private async appendExistingEntry(entry: SessionEntry): Promise<void> {\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n }\n\n private async appendEntry<TEntry extends SessionEntry>(params: {\n type: TEntry['type'];\n parentId: string | null;\n data: TEntry['data'];\n }): Promise<TEntry> {\n const entry = {\n type: params.type,\n id: createEntryId(),\n parentId: params.parentId,\n timestamp: createTimestamp(),\n data: params.data,\n } as TEntry;\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n return entry;\n }\n\n async existsOnDisk(): Promise<boolean> {\n const fileStat = await stat(this.path).catch(() => undefined);\n return fileStat?.isFile() === true;\n }\n}\n\nexport const SessionManager = JsonlSessionStore;\n"],"names":["join","homedir","resolve","createHash","createSessionId","access","createTimestamp","path","mkdir","dirname","writeFile","readFile","isAbsolute","basename","readdir","messages","deserializeMessage","SystemMessage","getMessageRole","serializeMessage","toJsonValue","appendFile","createEntryId","stat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JsonlSessionStore.cjs","sources":["../../../src/session/JsonlSessionStore.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { createHash } from 'crypto';\nimport { SystemMessage } from '@langchain/core/messages';\nimport { basename, dirname, isAbsolute, join, resolve } from 'path';\nimport {\n access,\n appendFile,\n mkdir,\n readFile,\n readdir,\n stat,\n writeFile,\n} from 'fs/promises';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type {\n CreateSessionFileOptions,\n SessionBranchOptions,\n SessionEntry,\n SessionForkOptions,\n SessionHeader,\n SessionLabelEntry,\n SessionListItem,\n SessionMessageEntry,\n SessionCheckpointEntry,\n SessionCompactionEntry,\n SessionRunEventEntry,\n SessionSummaryEntry,\n SessionStateEntry,\n SessionTreeNode,\n} from './types';\nimport {\n deserializeMessage,\n getMessageRole,\n serializeMessage,\n toJsonValue,\n} from './messageSerialization';\nimport { createEntryId, createSessionId, createTimestamp } from './ids';\n\nconst SESSION_VERSION = 1;\nconst DEFAULT_SESSION_ROOT = join(\n homedir(),\n '.librechat',\n 'agents',\n 'sessions'\n);\n\nfunction sanitizeCwd(cwd: string): string {\n const normalized = resolve(cwd);\n return createHash('sha256').update(normalized).digest('hex');\n}\n\nfunction createSessionPath(options: CreateSessionFileOptions): string {\n const sessionId = options.sessionId ?? createSessionId();\n const fileName = `${new Date().toISOString().replace(/[:.]/g, '-')}_${sessionId}.jsonl`;\n return join(DEFAULT_SESSION_ROOT, sanitizeCwd(options.cwd), fileName);\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction parseLine(line: string): SessionHeader | SessionEntry | undefined {\n if (line.trim() === '') {\n return undefined;\n }\n try {\n const parsed = JSON.parse(line) as SessionHeader | SessionEntry;\n if (parsed.type === 'session') {\n return parsed;\n }\n if ('id' in parsed && 'parentId' in parsed && 'data' in parsed) {\n return parsed;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction createHeader(options: CreateSessionFileOptions): SessionHeader {\n return {\n type: 'session',\n version: SESSION_VERSION,\n id: options.sessionId ?? createSessionId(),\n timestamp: createTimestamp(),\n cwd: resolve(options.cwd),\n ...(options.name != null && options.name !== ''\n ? { name: options.name }\n : {}),\n ...(options.parentSession != null && options.parentSession !== ''\n ? { parentSession: options.parentSession }\n : {}),\n };\n}\n\nfunction sortEntries(entries: SessionEntry[]): SessionEntry[] {\n return [...entries].sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n}\n\nexport class JsonlSessionStore {\n readonly path: string;\n readonly header: SessionHeader;\n private entries: SessionEntry[];\n\n private constructor(params: {\n path: string;\n header: SessionHeader;\n entries: SessionEntry[];\n }) {\n this.path = params.path;\n this.header = params.header;\n this.entries = sortEntries(params.entries);\n }\n\n static getDefaultRoot(): string {\n return DEFAULT_SESSION_ROOT;\n }\n\n static async create(\n options: CreateSessionFileOptions & { path?: string }\n ): Promise<JsonlSessionStore> {\n const sessionId = options.sessionId ?? createSessionId();\n const path =\n options.path != null && options.path !== ''\n ? resolve(options.path)\n : createSessionPath({ ...options, sessionId });\n const header = createHeader({ ...options, sessionId });\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(header)}\\n`, {\n encoding: 'utf8',\n flag: 'wx',\n });\n return new JsonlSessionStore({ path, header, entries: [] });\n }\n\n static async open(pathOrId: string): Promise<JsonlSessionStore> {\n const path = await JsonlSessionStore.resolvePath(pathOrId);\n return JsonlSessionStore.openPath(path);\n }\n\n static async openPath(path: string): Promise<JsonlSessionStore> {\n const resolved = resolve(path);\n const raw = await readFile(resolved, 'utf8');\n const parsed = raw\n .split('\\n')\n .map((line) => parseLine(line))\n .filter((line): line is SessionHeader | SessionEntry => line != null);\n const header = parsed.find(\n (line): line is SessionHeader => line.type === 'session'\n );\n if (!header) {\n throw new Error(`Invalid session file: ${resolved}`);\n }\n const entries = parsed.filter(\n (line): line is SessionEntry => line.type !== 'session'\n );\n return new JsonlSessionStore({ path: resolved, header, entries });\n }\n\n static async resolvePath(pathOrId: string): Promise<string> {\n const candidate = isAbsolute(pathOrId) ? pathOrId : resolve(pathOrId);\n if (await pathExists(candidate)) {\n return candidate;\n }\n const sessions = await JsonlSessionStore.listAll();\n const matches = sessions.filter(\n (item) =>\n item.id.startsWith(pathOrId) || basename(item.path).includes(pathOrId)\n );\n if (matches.length === 1) {\n return matches[0].path;\n }\n if (matches.length > 1) {\n throw new Error(`Session id \"${pathOrId}\" is ambiguous`);\n }\n throw new Error(`Session not found: ${pathOrId}`);\n }\n\n static async list(cwd: string): Promise<SessionListItem[]> {\n const dir = join(DEFAULT_SESSION_ROOT, sanitizeCwd(cwd));\n return JsonlSessionStore.listDirectory(dir);\n }\n\n static async listAll(\n root: string = DEFAULT_SESSION_ROOT\n ): Promise<SessionListItem[]> {\n if (!(await pathExists(root))) {\n return [];\n }\n const dirs = await readdir(root, { withFileTypes: true });\n const lists = await Promise.all(\n dirs\n .filter((entry) => entry.isDirectory())\n .map((entry) => JsonlSessionStore.listDirectory(join(root, entry.name)))\n );\n return lists.flat().sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n private static async listDirectory(dir: string): Promise<SessionListItem[]> {\n if (!(await pathExists(dir))) {\n return [];\n }\n const files = await readdir(dir, { withFileTypes: true });\n const candidates = files\n .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))\n .map((entry) => join(dir, entry.name));\n const items = await Promise.all(\n candidates.map(async (path): Promise<SessionListItem | undefined> => {\n try {\n const store = await JsonlSessionStore.open(path);\n return {\n id: store.header.id,\n path,\n cwd: store.header.cwd,\n timestamp: store.header.timestamp,\n name: store.header.name,\n leafId: store.getLeafEntry()?.id ?? null,\n };\n } catch {\n return undefined;\n }\n })\n );\n return items\n .filter((item): item is SessionListItem => item != null)\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n getEntries(): SessionEntry[] {\n return [...this.entries];\n }\n\n getEntry(id: string): SessionEntry | undefined {\n return this.entries.find((entry) => entry.id === id);\n }\n\n getChildren(id: string): SessionEntry[] {\n return this.entries.filter((entry) => entry.parentId === id);\n }\n\n getTree(): SessionTreeNode[] {\n const byParent = new Map<string | null, SessionEntry[]>();\n for (const entry of this.entries) {\n const siblings = byParent.get(entry.parentId) ?? [];\n siblings.push(entry);\n byParent.set(entry.parentId, siblings);\n }\n const build = (parentId: string | null): SessionTreeNode[] =>\n (byParent.get(parentId) ?? []).map((entry) => ({\n entry,\n children: build(entry.id),\n }));\n return build(null);\n }\n\n getLeafEntry(): SessionEntry | undefined {\n const state = [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionStateEntry => entry.type === 'session_state'\n );\n if (state) {\n return state.data.leafId == null\n ? undefined\n : this.getEntry(state.data.leafId);\n }\n return [...this.entries]\n .reverse()\n .find((entry) => entry.type === 'message' || entry.type === 'summary');\n }\n\n getPath(\n entryId: string | undefined = this.getLeafEntry()?.id\n ): SessionEntry[] {\n if (entryId == null || entryId === '') {\n return [];\n }\n const byId = new Map(this.entries.map((entry) => [entry.id, entry]));\n const path: SessionEntry[] = [];\n let current: SessionEntry | undefined = byId.get(entryId);\n while (current) {\n path.push(current);\n current =\n current.parentId == null ? undefined : byId.get(current.parentId);\n }\n return path.reverse();\n }\n\n getMessages(entryId?: string): BaseMessage[] {\n const messages: BaseMessage[] = [];\n for (const entry of this.getPath(entryId)) {\n if (entry.type === 'message') {\n messages.push(deserializeMessage(entry.data.message));\n } else if (entry.type === 'summary') {\n messages.push(new SystemMessage(entry.data.text));\n }\n }\n return messages;\n }\n\n getForkPoints(): SessionMessageEntry[] {\n return this.entries.filter(\n (entry): entry is SessionMessageEntry =>\n entry.type === 'message' && entry.data.role === 'user'\n );\n }\n\n getLabel(entryId: string): string | undefined {\n return [...this.entries]\n .reverse()\n .find(\n (entry): entry is SessionLabelEntry =>\n entry.type === 'label' && entry.data.targetEntryId === entryId\n )?.data.label;\n }\n\n async setLabel(entryId: string, label: string): Promise<SessionLabelEntry> {\n return this.appendEntry<SessionLabelEntry>({\n type: 'label',\n parentId: this.getLeafEntry()?.id ?? null,\n data: { targetEntryId: entryId, label },\n });\n }\n\n async appendMessage(\n message: BaseMessage,\n parentId: string | null = this.getLeafEntry()?.id ?? null\n ): Promise<SessionMessageEntry> {\n const entry = await this.appendEntry<SessionMessageEntry>({\n type: 'message',\n parentId,\n data: {\n role: getMessageRole(message),\n message: serializeMessage(message),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendRunEvent(\n event: string,\n payload?: unknown,\n params?: { runId?: string; threadId?: string }\n ): Promise<SessionRunEventEntry> {\n return this.appendEntry<SessionRunEventEntry>({\n type: 'run_event',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n event,\n ...(params?.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params?.threadId != null && params.threadId !== ''\n ? { threadId: params.threadId }\n : {}),\n ...(typeof payload !== 'undefined'\n ? { payload: toJsonValue(payload) }\n : {}),\n },\n });\n }\n\n async setLeaf(leafId: string | null): Promise<SessionStateEntry> {\n return this.appendEntry<SessionStateEntry>({\n type: 'session_state',\n parentId: leafId,\n data: { leafId },\n });\n }\n\n async appendEntryForCompaction(params: {\n text: string;\n tokenCount?: number;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n instructions?: string;\n parentId?: string | null;\n }): Promise<SessionSummaryEntry> {\n const tokenCount =\n typeof params.tokenCount === 'number' &&\n Number.isFinite(params.tokenCount) &&\n params.tokenCount >= 0\n ? params.tokenCount\n : undefined;\n const entry = await this.appendEntry<SessionSummaryEntry>({\n type: 'summary',\n parentId:\n 'parentId' in params\n ? (params.parentId ?? null)\n : (this.getLeafEntry()?.id ?? null),\n data: {\n text: params.text,\n ...(tokenCount != null ? { tokenCount } : {}),\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n ...(params.instructions != null && params.instructions !== ''\n ? { instructions: params.instructions }\n : {}),\n },\n });\n await this.setLeaf(entry.id);\n return entry;\n }\n\n async appendCompactionEntry(params: {\n summaryEntryId: string;\n retainedEntryIds: string[];\n summarizedEntryIds: string[];\n }): Promise<SessionCompactionEntry> {\n return this.appendEntry<SessionCompactionEntry>({\n type: 'compaction',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n summaryEntryId: params.summaryEntryId,\n retainedEntryIds: params.retainedEntryIds,\n summarizedEntryIds: params.summarizedEntryIds,\n },\n });\n }\n\n async appendCheckpoint(params: {\n source: SessionCheckpointEntry['data']['source'];\n threadId: string;\n runId?: string;\n checkpointId?: string;\n checkpointNs?: string;\n parentCheckpointId?: string;\n reason?: string;\n }): Promise<SessionCheckpointEntry> {\n return this.appendEntry<SessionCheckpointEntry>({\n type: 'checkpoint',\n parentId: this.getLeafEntry()?.id ?? null,\n data: {\n provider: 'langgraph',\n source: params.source,\n threadId: params.threadId,\n ...(params.runId != null && params.runId !== ''\n ? { runId: params.runId }\n : {}),\n ...(params.checkpointId != null && params.checkpointId !== ''\n ? { checkpointId: params.checkpointId }\n : {}),\n ...(params.checkpointNs != null\n ? { checkpointNs: params.checkpointNs }\n : {}),\n ...(params.parentCheckpointId != null &&\n params.parentCheckpointId !== ''\n ? { parentCheckpointId: params.parentCheckpointId }\n : {}),\n ...(params.reason != null && params.reason !== ''\n ? { reason: params.reason }\n : {}),\n },\n });\n }\n\n getCheckpoints(threadId?: string): SessionCheckpointEntry[] {\n return this.entries.filter(\n (entry): entry is SessionCheckpointEntry =>\n entry.type === 'checkpoint' &&\n (threadId == null || entry.data.threadId === threadId)\n );\n }\n\n getLatestCheckpoint(threadId?: string): SessionCheckpointEntry | undefined {\n const checkpoints = this.getCheckpoints(threadId);\n for (let i = checkpoints.length - 1; i >= 0; i--) {\n const checkpoint = checkpoints[i];\n if (checkpoint.data.source === 'reset') {\n return undefined;\n }\n return checkpoint;\n }\n return undefined;\n }\n\n async branch(\n entryId: string,\n options: SessionBranchOptions = {}\n ): Promise<SessionEntry | undefined> {\n const target = this.getBranchTarget(entryId, options.position ?? 'at');\n await this.setLeaf(target?.id ?? null);\n return target;\n }\n\n async createBranchedSession(\n entryId: string | undefined = this.getLeafEntry()?.id,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n const target =\n entryId != null && entryId !== ''\n ? this.getBranchTarget(entryId, options.position ?? 'at')\n : this.getLeafEntry();\n const newStore = await JsonlSessionStore.create({\n cwd: options.cwd ?? this.header.cwd,\n name: options.name ?? this.header.name,\n parentSession: this.path,\n });\n const pathEntries = target ? this.getPath(target.id) : [];\n for (const entry of pathEntries) {\n await newStore.appendExistingEntry(entry);\n }\n await newStore.setLeaf(target?.id ?? null);\n return newStore;\n }\n\n async clone(options: SessionForkOptions = {}): Promise<JsonlSessionStore> {\n return this.createBranchedSession(this.getLeafEntry()?.id, {\n ...options,\n position: 'at',\n });\n }\n\n async fork(\n entryId: string,\n options: SessionForkOptions = {}\n ): Promise<JsonlSessionStore> {\n return this.createBranchedSession(entryId, {\n ...options,\n position: options.position ?? 'before',\n });\n }\n\n private getBranchTarget(\n entryId: string,\n position: 'before' | 'at'\n ): SessionEntry | undefined {\n const entry = this.getEntry(entryId);\n if (!entry) {\n throw new Error(`Entry not found: ${entryId}`);\n }\n if (position === 'at') {\n return entry;\n }\n return entry.parentId == null ? undefined : this.getEntry(entry.parentId);\n }\n\n private async appendExistingEntry(entry: SessionEntry): Promise<void> {\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n }\n\n private async appendEntry<TEntry extends SessionEntry>(params: {\n type: TEntry['type'];\n parentId: string | null;\n data: TEntry['data'];\n }): Promise<TEntry> {\n const entry = {\n type: params.type,\n id: createEntryId(),\n parentId: params.parentId,\n timestamp: createTimestamp(),\n data: params.data,\n } as TEntry;\n this.entries.push(entry);\n await appendFile(this.path, `${JSON.stringify(entry)}\\n`, 'utf8');\n return entry;\n }\n\n async existsOnDisk(): Promise<boolean> {\n const fileStat = await stat(this.path).catch(() => undefined);\n return fileStat?.isFile() === true;\n }\n}\n\nexport const SessionManager = JsonlSessionStore;\n"],"names":["join","homedir","resolve","createHash","createSessionId","access","createTimestamp","path","mkdir","dirname","writeFile","readFile","isAbsolute","basename","readdir","messages","deserializeMessage","SystemMessage","getMessageRole","serializeMessage","toJsonValue","appendFile","createEntryId","stat"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _enum = require('../common/enum.cjs');
|
|
4
3
|
var events = require('../events.cjs');
|
|
4
|
+
var messageSerialization = require('./messageSerialization.cjs');
|
|
5
5
|
var stream = require('../stream.cjs');
|
|
6
6
|
var ids = require('./ids.cjs');
|
|
7
|
-
var
|
|
7
|
+
var _enum = require('../common/enum.cjs');
|
|
8
8
|
|
|
9
9
|
function isToolCompletion(result) {
|
|
10
10
|
return 'tool_call' in result;
|