@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
|
@@ -13,51 +13,50 @@ var anthropicToolCache = require('../messages/anthropicToolCache.cjs');
|
|
|
13
13
|
var content = require('../messages/content.cjs');
|
|
14
14
|
var tools = require('../messages/tools.cjs');
|
|
15
15
|
var reducer = require('../messages/reducer.cjs');
|
|
16
|
-
var
|
|
16
|
+
var langfuseToolOutputTracing = require('../langfuseToolOutputTracing.cjs');
|
|
17
|
+
var langfuse = require('../langfuse.cjs');
|
|
17
18
|
var graph = require('../utils/graph.cjs');
|
|
18
19
|
var llm = require('../utils/llm.cjs');
|
|
19
20
|
require('../stream.cjs');
|
|
21
|
+
var _enum = require('../common/enum.cjs');
|
|
20
22
|
var run = require('../utils/run.cjs');
|
|
21
23
|
require('ai-tokenizer');
|
|
22
24
|
require('zod-to-json-schema');
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
+
var callbacks = require('../utils/callbacks.cjs');
|
|
26
|
+
var toolCache = require('../llm/openrouter/toolCache.cjs');
|
|
25
27
|
var ToolNode = require('../tools/ToolNode.cjs');
|
|
28
|
+
var LocalCodingTools = require('../tools/local/LocalCodingTools.cjs');
|
|
29
|
+
var SubagentExecutor = require('../tools/subagent/SubagentExecutor.cjs');
|
|
26
30
|
var toolOutputReferences = require('../tools/toolOutputReferences.cjs');
|
|
31
|
+
var toolCache$1 = require('../llm/bedrock/toolCache.cjs');
|
|
27
32
|
var events = require('../utils/events.cjs');
|
|
33
|
+
require('path');
|
|
34
|
+
require('../tools/cloudflare/CloudflareProgrammaticToolCalling.cjs');
|
|
35
|
+
require('stream');
|
|
36
|
+
require('events');
|
|
37
|
+
require('../tools/local/LocalExecutionEngine.cjs');
|
|
38
|
+
var CloudflareSandboxTools = require('../tools/cloudflare/CloudflareSandboxTools.cjs');
|
|
28
39
|
var invoke = require('../llm/invoke.cjs');
|
|
40
|
+
var SubagentTool = require('../tools/SubagentTool.cjs');
|
|
41
|
+
var instrumentation = require('../instrumentation.cjs');
|
|
29
42
|
var index = require('../summarization/index.cjs');
|
|
30
|
-
var node = require('../summarization/node.cjs');
|
|
31
|
-
var callbacks = require('../utils/callbacks.cjs');
|
|
32
|
-
var schema = require('../tools/schema.cjs');
|
|
33
|
-
var AgentContext = require('../agents/AgentContext.cjs');
|
|
34
|
-
var fake = require('../llm/fake.cjs');
|
|
35
|
-
var handlers = require('../tools/handlers.cjs');
|
|
36
43
|
require('../tools/local/CompileCheckTool.cjs');
|
|
37
|
-
require('path');
|
|
38
44
|
require('fs/promises');
|
|
39
|
-
var LocalCodingTools = require('../tools/local/LocalCodingTools.cjs');
|
|
40
|
-
require('../tools/local/LocalExecutionEngine.cjs');
|
|
41
|
-
require('../tools/CodeExecutor.cjs');
|
|
42
45
|
require('../tools/BashExecutor.cjs');
|
|
43
|
-
require('
|
|
46
|
+
require('../tools/CodeExecutor.cjs');
|
|
44
47
|
require('http');
|
|
45
|
-
require('
|
|
48
|
+
require('crypto');
|
|
46
49
|
require('../tools/ProgrammaticToolCalling.cjs');
|
|
47
50
|
require('../tools/BashProgrammaticToolCalling.cjs');
|
|
51
|
+
require('../hooks/createWorkspacePolicyHook.cjs');
|
|
48
52
|
var resolveLocalExecutionTools = require('../tools/local/resolveLocalExecutionTools.cjs');
|
|
49
|
-
require('../
|
|
50
|
-
require('../tools/
|
|
51
|
-
require('
|
|
52
|
-
require('
|
|
53
|
-
var
|
|
53
|
+
var node = require('../summarization/node.cjs');
|
|
54
|
+
var schema = require('../tools/schema.cjs');
|
|
55
|
+
var AgentContext = require('../agents/AgentContext.cjs');
|
|
56
|
+
var fake = require('../llm/fake.cjs');
|
|
57
|
+
var handlers = require('../tools/handlers.cjs');
|
|
54
58
|
var request = require('../llm/request.cjs');
|
|
55
59
|
var init = require('../llm/init.cjs');
|
|
56
|
-
var langfuse = require('../langfuse.cjs');
|
|
57
|
-
var instrumentation = require('../instrumentation.cjs');
|
|
58
|
-
var langfuseToolOutputTracing = require('../langfuseToolOutputTracing.cjs');
|
|
59
|
-
var toolCache = require('../llm/openrouter/toolCache.cjs');
|
|
60
|
-
var toolCache$1 = require('../llm/bedrock/toolCache.cjs');
|
|
61
60
|
|
|
62
61
|
/* eslint-disable no-console */
|
|
63
62
|
const { AGENT, TOOLS, SUMMARIZE } = _enum.GraphNodeKeys;
|
|
@@ -106,7 +105,23 @@ function getResponseReasoningContent({ responseMessage, reasoningKey, }) {
|
|
|
106
105
|
}
|
|
107
106
|
return getReasoningDetailsText(additionalKwargs.reasoning_details);
|
|
108
107
|
}
|
|
109
|
-
function
|
|
108
|
+
function isTextMessageContentPart(contentPart) {
|
|
109
|
+
return (typeof contentPart === 'object' &&
|
|
110
|
+
'type' in contentPart &&
|
|
111
|
+
typeof contentPart.type === 'string' &&
|
|
112
|
+
contentPart.type.startsWith('text'));
|
|
113
|
+
}
|
|
114
|
+
function isGoogleServerSideToolMessageContentPart(contentPart) {
|
|
115
|
+
return (typeof contentPart === 'object' &&
|
|
116
|
+
'type' in contentPart &&
|
|
117
|
+
(contentPart.type === 'toolCall' || contentPart.type === 'toolResponse'));
|
|
118
|
+
}
|
|
119
|
+
function hasGoogleServerSideToolDeltaContent(provider, content) {
|
|
120
|
+
return (llm.isGoogleLike(provider) &&
|
|
121
|
+
Array.isArray(content) &&
|
|
122
|
+
content.some((contentPart) => isGoogleServerSideToolMessageContentPart(contentPart)));
|
|
123
|
+
}
|
|
124
|
+
function getMessageDeltaContent(provider, content) {
|
|
110
125
|
if (content == null) {
|
|
111
126
|
return undefined;
|
|
112
127
|
}
|
|
@@ -118,24 +133,91 @@ function getTextMessageDeltaContent(content) {
|
|
|
118
133
|
if (content.length === 0) {
|
|
119
134
|
return undefined;
|
|
120
135
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
136
|
+
const hasGoogleServerSideToolPart = llm.isGoogleLike(provider) &&
|
|
137
|
+
content.some((contentPart) => isGoogleServerSideToolMessageContentPart(contentPart));
|
|
138
|
+
if (content.every((contentPart) => isTextMessageContentPart(contentPart))) {
|
|
139
|
+
return content;
|
|
140
|
+
}
|
|
141
|
+
if (!hasGoogleServerSideToolPart) {
|
|
125
142
|
return undefined;
|
|
126
143
|
}
|
|
127
|
-
|
|
144
|
+
const messageContent = content.filter((contentPart) => isTextMessageContentPart(contentPart) ||
|
|
145
|
+
isGoogleServerSideToolMessageContentPart(contentPart));
|
|
146
|
+
return messageContent.length > 0
|
|
147
|
+
? messageContent
|
|
148
|
+
: undefined;
|
|
128
149
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (!messageId) {
|
|
150
|
+
function hasTextDeltaContent(content) {
|
|
151
|
+
if (content == null) {
|
|
132
152
|
return false;
|
|
133
153
|
}
|
|
154
|
+
return content.some((contentPart) => {
|
|
155
|
+
if (contentPart.type?.startsWith(_enum.ContentTypes.TEXT) !== true) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
const text = contentPart.text;
|
|
159
|
+
return typeof text === 'string' && text !== '';
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function hasReasoningDeltaContent(content) {
|
|
163
|
+
if (content == null) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return content.some((contentPart) => contentPart.type === _enum.ContentTypes.THINK && contentPart.think !== '');
|
|
167
|
+
}
|
|
168
|
+
function getCurrentStepIds({ graph, metadata, }) {
|
|
169
|
+
const baseStepKey = graph.getStepBaseKey(metadata);
|
|
170
|
+
const currentStepIds = [];
|
|
171
|
+
for (const [stepKey, stepIds] of graph.stepKeyIds) {
|
|
172
|
+
if (stepKey !== baseStepKey && !stepKey.startsWith(`${baseStepKey}_`)) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
currentStepIds.push(...stepIds);
|
|
176
|
+
}
|
|
177
|
+
return currentStepIds;
|
|
178
|
+
}
|
|
179
|
+
function hasCurrentTextDeltaStep({ graph, metadata, }) {
|
|
180
|
+
return getCurrentStepIds({ graph, metadata }).some((stepId) => graph.messageStepHasTextDeltas.has(stepId));
|
|
181
|
+
}
|
|
182
|
+
function hasCurrentReasoningDeltaStep({ graph, metadata, }) {
|
|
183
|
+
return getCurrentStepIds({ graph, metadata }).some((stepId) => graph.reasoningStepHasDeltas.has(stepId));
|
|
184
|
+
}
|
|
185
|
+
function clearCurrentDeltaStepMarkers({ graph, metadata, }) {
|
|
186
|
+
for (const stepId of getCurrentStepIds({ graph, metadata })) {
|
|
187
|
+
graph.messageStepHasTextDeltas.delete(stepId);
|
|
188
|
+
graph.reasoningStepHasDeltas.delete(stepId);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async function dispatchMessageCreationStep({ graph, stepKey, messageId, metadata, }) {
|
|
134
192
|
await graph.dispatchRunStep(stepKey, {
|
|
135
193
|
type: _enum.StepTypes.MESSAGE_CREATION,
|
|
136
194
|
message_creation: { message_id: messageId },
|
|
137
195
|
}, metadata);
|
|
138
|
-
|
|
196
|
+
return graph.getStepIdByKey(stepKey);
|
|
197
|
+
}
|
|
198
|
+
async function dispatchTextMessageContent({ graph, stepKey, provider, content, metadata, }) {
|
|
199
|
+
const messageId = ids.getMessageId(stepKey, graph) ?? '';
|
|
200
|
+
if (!messageId) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
if (hasGoogleServerSideToolDeltaContent(provider, content)) {
|
|
204
|
+
for (const contentPart of content) {
|
|
205
|
+
const stepId = await dispatchMessageCreationStep({
|
|
206
|
+
graph,
|
|
207
|
+
stepKey,
|
|
208
|
+
messageId,
|
|
209
|
+
metadata,
|
|
210
|
+
});
|
|
211
|
+
await graph.dispatchMessageDelta(stepId, { content: [contentPart] }, metadata);
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
const stepId = await dispatchMessageCreationStep({
|
|
216
|
+
graph,
|
|
217
|
+
stepKey,
|
|
218
|
+
messageId,
|
|
219
|
+
metadata,
|
|
220
|
+
});
|
|
139
221
|
await graph.dispatchMessageDelta(stepId, { content }, metadata);
|
|
140
222
|
return true;
|
|
141
223
|
}
|
|
@@ -172,7 +254,18 @@ function markPostReasoningContent(agentContext) {
|
|
|
172
254
|
agentContext.tokenTypeSwitch = 'content';
|
|
173
255
|
agentContext.reasoningTransitionCount++;
|
|
174
256
|
}
|
|
257
|
+
function getDispatchableFinalReasoningContent({ agentContext, responseReasoningContent, hasStreamedTextDeltaStep, hasStreamedReasoningDeltaStep, }) {
|
|
258
|
+
if (responseReasoningContent == null || hasStreamedReasoningDeltaStep) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
if (agentContext.provider === _enum.Providers.OPENROUTER &&
|
|
262
|
+
hasStreamedTextDeltaStep) {
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
return responseReasoningContent;
|
|
266
|
+
}
|
|
175
267
|
class Graph {
|
|
268
|
+
messageStepHasTextDeltas = new Set();
|
|
176
269
|
messageStepHasToolCalls = new Map();
|
|
177
270
|
messageIdsByStepKey = new Map();
|
|
178
271
|
prelimMessageIdsByStepKey = new Map();
|
|
@@ -187,6 +280,7 @@ class Graph {
|
|
|
187
280
|
* the same step are scoped to the active custom event dispatch.
|
|
188
281
|
*/
|
|
189
282
|
handlerDispatchedStepIds = new Set();
|
|
283
|
+
reasoningStepHasDeltas = new Set();
|
|
190
284
|
handlerDispatchedEventCounts = new Map();
|
|
191
285
|
signal;
|
|
192
286
|
/** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */
|
|
@@ -259,6 +353,8 @@ class Graph {
|
|
|
259
353
|
this.stepKeyIds = new Map();
|
|
260
354
|
this.toolCallStepIds.clear();
|
|
261
355
|
this.messageIdsByStepKey = new Map();
|
|
356
|
+
this.messageStepHasTextDeltas = new Set();
|
|
357
|
+
this.reasoningStepHasDeltas = new Set();
|
|
262
358
|
this.messageStepHasToolCalls = new Map();
|
|
263
359
|
this.prelimMessageIdsByStepKey = new Map();
|
|
264
360
|
this.invokedToolIds = undefined;
|
|
@@ -479,6 +575,8 @@ class StandardGraph extends Graph {
|
|
|
479
575
|
this.handlerDispatchedEventCounts = graph.resetIfNotEmpty(this.handlerDispatchedEventCounts, new Map());
|
|
480
576
|
this.messageIdsByStepKey = graph.resetIfNotEmpty(this.messageIdsByStepKey, new Map());
|
|
481
577
|
this.messageStepHasToolCalls = graph.resetIfNotEmpty(this.messageStepHasToolCalls, new Map());
|
|
578
|
+
this.messageStepHasTextDeltas = graph.resetIfNotEmpty(this.messageStepHasTextDeltas, new Set());
|
|
579
|
+
this.reasoningStepHasDeltas = graph.resetIfNotEmpty(this.reasoningStepHasDeltas, new Set());
|
|
482
580
|
this.prelimMessageIdsByStepKey = graph.resetIfNotEmpty(this.prelimMessageIdsByStepKey, new Map());
|
|
483
581
|
this.invokedToolIds = graph.resetIfNotEmpty(this.invokedToolIds, undefined);
|
|
484
582
|
for (const context of this.agentContexts.values()) {
|
|
@@ -526,6 +624,15 @@ class StandardGraph extends Graph {
|
|
|
526
624
|
}
|
|
527
625
|
return agentContext;
|
|
528
626
|
}
|
|
627
|
+
getStepBaseKey(metadata) {
|
|
628
|
+
if (!metadata)
|
|
629
|
+
return '';
|
|
630
|
+
const keyList = this.getInvocationKeyList(metadata);
|
|
631
|
+
if (this.checkKeyList(keyList)) {
|
|
632
|
+
throw new Error('Missing metadata');
|
|
633
|
+
}
|
|
634
|
+
return graph.joinKeys(keyList);
|
|
635
|
+
}
|
|
529
636
|
getStepKey(metadata) {
|
|
530
637
|
if (!metadata)
|
|
531
638
|
return '';
|
|
@@ -564,6 +671,25 @@ class StandardGraph extends Graph {
|
|
|
564
671
|
getKeyList(metadata) {
|
|
565
672
|
if (!metadata)
|
|
566
673
|
return [];
|
|
674
|
+
const keyList = this.getInvocationKeyList(metadata);
|
|
675
|
+
const agentContext = this.getAgentContext(metadata);
|
|
676
|
+
if (agentContext.currentTokenType === _enum.ContentTypes.THINK ||
|
|
677
|
+
agentContext.currentTokenType === 'think_and_text') {
|
|
678
|
+
keyList.push('reasoning');
|
|
679
|
+
}
|
|
680
|
+
else if (agentContext.tokenTypeSwitch === 'content') {
|
|
681
|
+
keyList.push(`post-reasoning-${agentContext.reasoningTransitionCount}`);
|
|
682
|
+
}
|
|
683
|
+
return keyList;
|
|
684
|
+
}
|
|
685
|
+
getInvocationKeyList(metadata) {
|
|
686
|
+
const keyList = this.getBaseKeyList(metadata);
|
|
687
|
+
if (this.invokedToolIds != null && this.invokedToolIds.size > 0) {
|
|
688
|
+
keyList.push(this.invokedToolIds.size + '');
|
|
689
|
+
}
|
|
690
|
+
return keyList;
|
|
691
|
+
}
|
|
692
|
+
getBaseKeyList(metadata) {
|
|
567
693
|
const configurable = this.config?.configurable;
|
|
568
694
|
const runId = metadata.run_id ??
|
|
569
695
|
configurable?.run_id ??
|
|
@@ -581,17 +707,6 @@ class StandardGraph extends Graph {
|
|
|
581
707
|
metadata.langgraph_step,
|
|
582
708
|
checkpointNs,
|
|
583
709
|
];
|
|
584
|
-
const agentContext = this.getAgentContext(metadata);
|
|
585
|
-
if (agentContext.currentTokenType === _enum.ContentTypes.THINK ||
|
|
586
|
-
agentContext.currentTokenType === 'think_and_text') {
|
|
587
|
-
keyList.push('reasoning');
|
|
588
|
-
}
|
|
589
|
-
else if (agentContext.tokenTypeSwitch === 'content') {
|
|
590
|
-
keyList.push(`post-reasoning-${agentContext.reasoningTransitionCount}`);
|
|
591
|
-
}
|
|
592
|
-
if (this.invokedToolIds != null && this.invokedToolIds.size > 0) {
|
|
593
|
-
keyList.push(this.invokedToolIds.size + '');
|
|
594
|
-
}
|
|
595
710
|
return keyList;
|
|
596
711
|
}
|
|
597
712
|
checkKeyList(keyList) {
|
|
@@ -703,6 +818,7 @@ class StandardGraph extends Graph {
|
|
|
703
818
|
sessions: this.sessions,
|
|
704
819
|
toolDefinitions: toolDefMap,
|
|
705
820
|
agentId: agentContext?.agentId,
|
|
821
|
+
executingAgentId: agentContext?.agentId,
|
|
706
822
|
toolCallStepIds: this.toolCallStepIds,
|
|
707
823
|
toolRegistry: agentContext?.toolRegistry,
|
|
708
824
|
hookRegistry: this.hookRegistry,
|
|
@@ -740,6 +856,10 @@ class StandardGraph extends Graph {
|
|
|
740
856
|
trace: traceToolNode,
|
|
741
857
|
runLangfuse: this.langfuse,
|
|
742
858
|
agentLangfuse: agentContext?.langfuse,
|
|
859
|
+
// `agentId` is intentionally left unset on this path (it is the
|
|
860
|
+
// subagent-scope marker); `executingAgentId` always identifies the owning
|
|
861
|
+
// agent so hooks can attribute the batch even at the top level.
|
|
862
|
+
executingAgentId: agentContext?.agentId,
|
|
743
863
|
toolCallStepIds: this.toolCallStepIds,
|
|
744
864
|
errorHandler: (data, metadata) => StandardGraph.handleToolCallErrorStatic(this, data, metadata),
|
|
745
865
|
toolRegistry: agentContext?.toolRegistry,
|
|
@@ -1137,6 +1257,7 @@ class StandardGraph extends Graph {
|
|
|
1137
1257
|
};
|
|
1138
1258
|
}
|
|
1139
1259
|
}
|
|
1260
|
+
const metadata = config.metadata;
|
|
1140
1261
|
try {
|
|
1141
1262
|
result = await langfuseToolOutputTracing.withLangfuseToolOutputTracingConfig(this.langfuse, () => invoke.attemptInvoke({
|
|
1142
1263
|
model: (this.overrideModel ?? model),
|
|
@@ -1146,6 +1267,10 @@ class StandardGraph extends Graph {
|
|
|
1146
1267
|
}, invokeConfig), agentContext.langfuse);
|
|
1147
1268
|
}
|
|
1148
1269
|
catch (primaryError) {
|
|
1270
|
+
clearCurrentDeltaStepMarkers({
|
|
1271
|
+
graph: this,
|
|
1272
|
+
metadata,
|
|
1273
|
+
});
|
|
1149
1274
|
result = await langfuseToolOutputTracing.withLangfuseToolOutputTracingConfig(this.langfuse, () => invoke.tryFallbackProviders({
|
|
1150
1275
|
fallbacks,
|
|
1151
1276
|
tools: agentContext.tools,
|
|
@@ -1180,28 +1305,42 @@ class StandardGraph extends Graph {
|
|
|
1180
1305
|
const toolCalls = responseMessage
|
|
1181
1306
|
?.tool_calls;
|
|
1182
1307
|
const hasToolCalls = Array.isArray(toolCalls) && toolCalls.length > 0;
|
|
1183
|
-
const metadata = config.metadata;
|
|
1184
1308
|
const responseReasoningContent = getResponseReasoningContent({
|
|
1185
1309
|
responseMessage: responseMessage,
|
|
1186
1310
|
reasoningKey: agentContext.reasoningKey,
|
|
1187
1311
|
});
|
|
1188
|
-
const textMessageContent =
|
|
1312
|
+
const textMessageContent = getMessageDeltaContent(agentContext.provider, responseMessage?.content);
|
|
1313
|
+
const hasStreamedTextDeltaStep = hasCurrentTextDeltaStep({
|
|
1314
|
+
graph: this,
|
|
1315
|
+
metadata,
|
|
1316
|
+
});
|
|
1317
|
+
const hasStreamedReasoningDeltaStep = hasCurrentReasoningDeltaStep({
|
|
1318
|
+
graph: this,
|
|
1319
|
+
metadata,
|
|
1320
|
+
});
|
|
1321
|
+
const dispatchableFinalReasoningContent = getDispatchableFinalReasoningContent({
|
|
1322
|
+
agentContext,
|
|
1323
|
+
responseReasoningContent,
|
|
1324
|
+
hasStreamedTextDeltaStep,
|
|
1325
|
+
hasStreamedReasoningDeltaStep,
|
|
1326
|
+
});
|
|
1189
1327
|
if (hasToolCalls) {
|
|
1190
|
-
const dispatchedReasoning =
|
|
1328
|
+
const dispatchedReasoning = dispatchableFinalReasoningContent != null &&
|
|
1191
1329
|
(await dispatchReasoningContent({
|
|
1192
1330
|
graph: this,
|
|
1193
1331
|
agentContext,
|
|
1194
|
-
reasoningContent:
|
|
1332
|
+
reasoningContent: dispatchableFinalReasoningContent,
|
|
1195
1333
|
metadata,
|
|
1196
1334
|
}));
|
|
1197
1335
|
if (dispatchedReasoning) {
|
|
1198
1336
|
markPostReasoningContent(agentContext);
|
|
1199
1337
|
}
|
|
1200
|
-
if (textMessageContent != null) {
|
|
1338
|
+
if (textMessageContent != null && !hasStreamedTextDeltaStep) {
|
|
1201
1339
|
const stepKey = this.getStepKey(metadata);
|
|
1202
1340
|
const dispatchedText = await dispatchTextMessageContent({
|
|
1203
1341
|
graph: this,
|
|
1204
1342
|
stepKey,
|
|
1343
|
+
provider: agentContext.provider,
|
|
1205
1344
|
content: textMessageContent,
|
|
1206
1345
|
metadata,
|
|
1207
1346
|
});
|
|
@@ -1217,21 +1356,22 @@ class StandardGraph extends Graph {
|
|
|
1217
1356
|
* this a no-op when the streaming path already handled the same step.
|
|
1218
1357
|
*/
|
|
1219
1358
|
if (!hasToolCalls && responseMessage != null) {
|
|
1220
|
-
const dispatchedReasoning =
|
|
1359
|
+
const dispatchedReasoning = dispatchableFinalReasoningContent != null &&
|
|
1221
1360
|
(await dispatchReasoningContent({
|
|
1222
1361
|
graph: this,
|
|
1223
1362
|
agentContext,
|
|
1224
|
-
reasoningContent:
|
|
1363
|
+
reasoningContent: dispatchableFinalReasoningContent,
|
|
1225
1364
|
metadata,
|
|
1226
1365
|
}));
|
|
1227
1366
|
if (dispatchedReasoning && textMessageContent != null) {
|
|
1228
1367
|
markPostReasoningContent(agentContext);
|
|
1229
1368
|
}
|
|
1230
|
-
if (textMessageContent != null) {
|
|
1369
|
+
if (textMessageContent != null && !hasStreamedTextDeltaStep) {
|
|
1231
1370
|
const stepKey = this.getStepKey(metadata);
|
|
1232
1371
|
await dispatchTextMessageContent({
|
|
1233
1372
|
graph: this,
|
|
1234
1373
|
stepKey,
|
|
1374
|
+
provider: agentContext.provider,
|
|
1235
1375
|
content: textMessageContent,
|
|
1236
1376
|
metadata,
|
|
1237
1377
|
});
|
|
@@ -1648,6 +1788,9 @@ class StandardGraph extends Graph {
|
|
|
1648
1788
|
id,
|
|
1649
1789
|
delta,
|
|
1650
1790
|
};
|
|
1791
|
+
if (hasTextDeltaContent(delta.content)) {
|
|
1792
|
+
this.messageStepHasTextDeltas.add(id);
|
|
1793
|
+
}
|
|
1651
1794
|
const handler = this.handlerRegistry?.getHandler(_enum.GraphEvents.ON_MESSAGE_DELTA);
|
|
1652
1795
|
if (handler) {
|
|
1653
1796
|
await handler.handle(_enum.GraphEvents.ON_MESSAGE_DELTA, messageDelta, metadata, this);
|
|
@@ -1671,6 +1814,9 @@ class StandardGraph extends Graph {
|
|
|
1671
1814
|
id: stepId,
|
|
1672
1815
|
delta,
|
|
1673
1816
|
};
|
|
1817
|
+
if (hasReasoningDeltaContent(delta.content)) {
|
|
1818
|
+
this.reasoningStepHasDeltas.add(stepId);
|
|
1819
|
+
}
|
|
1674
1820
|
const handler = this.handlerRegistry?.getHandler(_enum.GraphEvents.ON_REASONING_DELTA);
|
|
1675
1821
|
if (handler) {
|
|
1676
1822
|
await handler.handle(_enum.GraphEvents.ON_REASONING_DELTA, reasoningDelta, metadata, this);
|