@librechat/agents 3.4.7 → 3.5.0
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 +0 -356
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/agents/projection.cjs +0 -9
- package/dist/cjs/agents/projection.cjs.map +1 -1
- package/dist/cjs/common/constants.cjs +0 -26
- package/dist/cjs/common/constants.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +0 -85
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/events.cjs +0 -14
- package/dist/cjs/events.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +1 -909
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +7 -272
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/applyGraphRuntimeConfig.cjs.map +1 -1
- package/dist/cjs/graphs/createGraph.cjs.map +1 -1
- package/dist/cjs/hitl/askUserQuestion.cjs +0 -53
- package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
- package/dist/cjs/hitl/askUserQuestions.cjs +0 -20
- package/dist/cjs/hitl/askUserQuestions.cjs.map +1 -1
- package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs +0 -6
- package/dist/cjs/hitl/askUserQuestionsInterrupt.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +0 -127
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
- package/dist/cjs/hooks/createToolPolicyHook.cjs +0 -38
- package/dist/cjs/hooks/createToolPolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs +0 -77
- package/dist/cjs/hooks/createWorkspacePolicyHook.cjs.map +1 -1
- package/dist/cjs/hooks/executeHooks.cjs +0 -79
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
- package/dist/cjs/hooks/index.cjs +0 -16
- package/dist/cjs/hooks/index.cjs.map +1 -1
- package/dist/cjs/hooks/matchers.cjs +0 -104
- package/dist/cjs/hooks/matchers.cjs.map +1 -1
- package/dist/cjs/hooks/types.cjs +0 -8
- package/dist/cjs/hooks/types.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +0 -14
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langfuse.cjs +0 -75
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseConfig.cjs.map +1 -1
- package/dist/cjs/langfuseRuntimeContext.cjs +0 -13
- package/dist/cjs/langfuseRuntimeContext.cjs.map +1 -1
- package/dist/cjs/langfuseRuntimeScope.cjs +0 -4
- package/dist/cjs/langfuseRuntimeScope.cjs.map +1 -1
- package/dist/cjs/langfuseSpanRegistry.cjs +0 -28
- package/dist/cjs/langfuseSpanRegistry.cjs.map +1 -1
- package/dist/cjs/langfuseToolOutputTracing.cjs +0 -3
- package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
- package/dist/cjs/langfuseTraceShaping.cjs +0 -74
- package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/index.cjs +0 -3
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -111
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +0 -1
- package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/stream_events.cjs +0 -8
- package/dist/cjs/llm/anthropic/utils/stream_events.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/cachePoints.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/index.cjs +1 -95
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +0 -78
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs +0 -24
- package/dist/cjs/llm/bedrock/utils/message_outputs.cjs.map +1 -1
- package/dist/cjs/llm/contextOverflowRecovery.cjs +0 -62
- package/dist/cjs/llm/contextOverflowRecovery.cjs.map +1 -1
- package/dist/cjs/llm/fake.cjs.map +1 -1
- package/dist/cjs/llm/google/index.cjs +2 -21
- package/dist/cjs/llm/google/index.cjs.map +1 -1
- package/dist/cjs/llm/google/utils/common.cjs +0 -35
- package/dist/cjs/llm/google/utils/common.cjs.map +1 -1
- package/dist/cjs/llm/init.cjs +0 -9
- package/dist/cjs/llm/init.cjs.map +1 -1
- package/dist/cjs/llm/invoke.cjs +1 -270
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/mistral/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +0 -99
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/streamMetadata.cjs +0 -21
- package/dist/cjs/llm/openai/streamMetadata.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/index.cjs +0 -1
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
- package/dist/cjs/llm/openrouter/toolCache.cjs +0 -6
- package/dist/cjs/llm/openrouter/toolCache.cjs.map +1 -1
- package/dist/cjs/llm/preempt.cjs +0 -75
- package/dist/cjs/llm/preempt.cjs.map +1 -1
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/llm/request.cjs +0 -10
- package/dist/cjs/llm/request.cjs.map +1 -1
- package/dist/cjs/llm/stream/chunkAdapters.cjs +0 -62
- package/dist/cjs/llm/stream/chunkAdapters.cjs.map +1 -1
- package/dist/cjs/llm/stream/smoother.cjs +0 -58
- package/dist/cjs/llm/stream/smoother.cjs.map +1 -1
- package/dist/cjs/llm/streamLimits.cjs +4 -293
- package/dist/cjs/llm/streamLimits.cjs.map +1 -1
- package/dist/cjs/llm/truncation.cjs +0 -36
- package/dist/cjs/llm/truncation.cjs.map +1 -1
- package/dist/cjs/llm/vertexai/index.cjs +0 -330
- package/dist/cjs/llm/vertexai/index.cjs.map +1 -1
- package/dist/cjs/messages/alternation.cjs +0 -43
- package/dist/cjs/messages/alternation.cjs.map +1 -1
- package/dist/cjs/messages/anthropicToolCache.cjs +0 -45
- package/dist/cjs/messages/anthropicToolCache.cjs.map +1 -1
- package/dist/cjs/messages/assistantPhase.cjs +0 -12
- package/dist/cjs/messages/assistantPhase.cjs.map +1 -1
- package/dist/cjs/messages/budget.cjs +0 -9
- package/dist/cjs/messages/budget.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +0 -172
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/content.cjs +0 -9
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +0 -15
- package/dist/cjs/messages/contextPruning.cjs.map +1 -1
- package/dist/cjs/messages/contextPruningSettings.cjs +0 -3
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -1
- package/dist/cjs/messages/core.cjs +0 -48
- package/dist/cjs/messages/core.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +1 -345
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/handoffCue.cjs +0 -36
- package/dist/cjs/messages/handoffCue.cjs.map +1 -1
- package/dist/cjs/messages/ids.cjs.map +1 -1
- package/dist/cjs/messages/injected.cjs +0 -33
- package/dist/cjs/messages/injected.cjs.map +1 -1
- package/dist/cjs/messages/langchain.cjs +0 -14
- package/dist/cjs/messages/langchain.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +1 -184
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/messages/recency.cjs +0 -32
- package/dist/cjs/messages/recency.cjs.map +1 -1
- package/dist/cjs/messages/reducer.cjs +0 -30
- package/dist/cjs/messages/reducer.cjs.map +1 -1
- package/dist/cjs/messages/tools.cjs +0 -14
- package/dist/cjs/messages/tools.cjs.map +1 -1
- package/dist/cjs/openai/index.cjs.map +1 -1
- package/dist/cjs/prompts/activityLabel.cjs +9 -79
- package/dist/cjs/prompts/activityLabel.cjs.map +1 -1
- package/dist/cjs/responses/index.cjs.map +1 -1
- package/dist/cjs/run.cjs +2 -538
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/AgentSession.cjs +1 -17
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
- package/dist/cjs/session/handlers.cjs +0 -7
- package/dist/cjs/session/handlers.cjs.map +1 -1
- package/dist/cjs/session/ids.cjs.map +1 -1
- package/dist/cjs/session/messageSerialization.cjs +0 -4
- package/dist/cjs/session/messageSerialization.cjs.map +1 -1
- package/dist/cjs/stream.cjs +1 -93
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/index.cjs +0 -27
- package/dist/cjs/summarization/index.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs +0 -273
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +0 -35
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +0 -24
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/Calculator.cjs.map +1 -1
- package/dist/cjs/tools/CodeExecutor.cjs +0 -13
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/CodeSessionFileSummary.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +0 -101
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs.map +1 -1
- package/dist/cjs/tools/SkillTool.cjs +0 -5
- package/dist/cjs/tools/SkillTool.cjs.map +1 -1
- package/dist/cjs/tools/SubagentTool.cjs +0 -10
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +6 -1038
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/ToolSearch.cjs +0 -179
- package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareBridgeRuntime.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs +0 -39
- package/dist/cjs/tools/cloudflare/CloudflareSandboxExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/cloudflare/CloudflareSandboxTools.cjs.map +1 -1
- package/dist/cjs/tools/eagerEventExecution.cjs +0 -6
- package/dist/cjs/tools/eagerEventExecution.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +1 -41
- package/dist/cjs/tools/handlers.cjs.map +1 -1
- package/dist/cjs/tools/intentArg.cjs +1 -132
- package/dist/cjs/tools/intentArg.cjs.map +1 -1
- package/dist/cjs/tools/local/CompileCheckTool.cjs +0 -25
- package/dist/cjs/tools/local/CompileCheckTool.cjs.map +1 -1
- package/dist/cjs/tools/local/FileCheckpointer.cjs +0 -23
- package/dist/cjs/tools/local/FileCheckpointer.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalCodingTools.cjs +0 -80
- package/dist/cjs/tools/local/LocalCodingTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs +0 -126
- package/dist/cjs/tools/local/LocalExecutionEngine.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +0 -12
- package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/local/attachments.cjs +0 -44
- package/dist/cjs/tools/local/attachments.cjs.map +1 -1
- package/dist/cjs/tools/local/bashAst.cjs +0 -16
- package/dist/cjs/tools/local/bashAst.cjs.map +1 -1
- package/dist/cjs/tools/local/editStrategies.cjs +0 -14
- package/dist/cjs/tools/local/editStrategies.cjs.map +1 -1
- package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
- package/dist/cjs/tools/local/syntaxCheck.cjs +0 -31
- package/dist/cjs/tools/local/syntaxCheck.cjs.map +1 -1
- package/dist/cjs/tools/local/textEncoding.cjs +0 -11
- package/dist/cjs/tools/local/textEncoding.cjs.map +1 -1
- package/dist/cjs/tools/local/workspaceFS.cjs +0 -33
- package/dist/cjs/tools/local/workspaceFS.cjs.map +1 -1
- package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
- package/dist/cjs/tools/schema.cjs +0 -8
- package/dist/cjs/tools/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/anthropic.cjs +0 -9
- package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
- package/dist/cjs/tools/search/content.cjs.map +1 -1
- package/dist/cjs/tools/search/crw-scraper.cjs +0 -33
- package/dist/cjs/tools/search/crw-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/crw-search.cjs +0 -2
- package/dist/cjs/tools/search/crw-search.cjs.map +1 -1
- package/dist/cjs/tools/search/firecrawl.cjs +0 -25
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
- package/dist/cjs/tools/search/format.cjs +0 -30
- package/dist/cjs/tools/search/format.cjs.map +1 -1
- package/dist/cjs/tools/search/highlights.cjs +0 -16
- package/dist/cjs/tools/search/highlights.cjs.map +1 -1
- package/dist/cjs/tools/search/keenable-scraper.cjs +0 -8
- package/dist/cjs/tools/search/keenable-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/keenable-search.cjs +0 -7
- package/dist/cjs/tools/search/keenable-search.cjs.map +1 -1
- package/dist/cjs/tools/search/rerankers.cjs +0 -35
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
- package/dist/cjs/tools/search/schema.cjs +0 -1
- package/dist/cjs/tools/search/schema.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +1 -14
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/serper-scraper.cjs +0 -46
- package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +0 -25
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +0 -8
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +0 -6
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -1
- package/dist/cjs/tools/streamedToolCallSeals.cjs +0 -6
- package/dist/cjs/tools/streamedToolCallSeals.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs +0 -2
- package/dist/cjs/tools/subagent/SubagentExecutionRegistry.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +3 -213
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -1
- package/dist/cjs/tools/subagent/childGraphConfig.cjs +0 -4
- package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -1
- package/dist/cjs/tools/subagent/runtimeLimits.cjs.map +1 -1
- package/dist/cjs/tools/toolOutputReferences.cjs +1 -322
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -1
- package/dist/cjs/types/hitl.cjs +0 -5
- package/dist/cjs/types/hitl.cjs.map +1 -1
- package/dist/cjs/utils/callbacks.cjs.map +1 -1
- package/dist/cjs/utils/errors.cjs +14 -165
- package/dist/cjs/utils/errors.cjs.map +1 -1
- package/dist/cjs/utils/events.cjs +0 -10
- package/dist/cjs/utils/events.cjs.map +1 -1
- package/dist/cjs/utils/graph.cjs.map +1 -1
- package/dist/cjs/utils/handlers.cjs +0 -3
- package/dist/cjs/utils/handlers.cjs.map +1 -1
- package/dist/cjs/utils/llm.cjs +0 -1
- package/dist/cjs/utils/llm.cjs.map +1 -1
- package/dist/cjs/utils/misc.cjs +0 -16
- package/dist/cjs/utils/misc.cjs.map +1 -1
- package/dist/cjs/utils/proxy.cjs +0 -26
- package/dist/cjs/utils/proxy.cjs.map +1 -1
- package/dist/cjs/utils/run.cjs +0 -6
- package/dist/cjs/utils/run.cjs.map +1 -1
- package/dist/cjs/utils/schema.cjs +0 -5
- package/dist/cjs/utils/schema.cjs.map +1 -1
- package/dist/cjs/utils/title.cjs +0 -6
- package/dist/cjs/utils/title.cjs.map +1 -1
- package/dist/cjs/utils/tokens.cjs +0 -113
- package/dist/cjs/utils/tokens.cjs.map +1 -1
- package/dist/cjs/utils/toolContent.cjs +0 -41
- package/dist/cjs/utils/toolContent.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +0 -61
- package/dist/cjs/utils/truncation.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +0 -356
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/agents/projection.mjs +0 -9
- package/dist/esm/agents/projection.mjs.map +1 -1
- package/dist/esm/common/constants.mjs +0 -26
- package/dist/esm/common/constants.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +0 -85
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/events.mjs +0 -14
- package/dist/esm/events.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +1 -909
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +7 -272
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/applyGraphRuntimeConfig.mjs.map +1 -1
- package/dist/esm/graphs/createGraph.mjs.map +1 -1
- package/dist/esm/hitl/askUserQuestion.mjs +0 -53
- package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
- package/dist/esm/hitl/askUserQuestions.mjs +0 -20
- package/dist/esm/hitl/askUserQuestions.mjs.map +1 -1
- package/dist/esm/hitl/askUserQuestionsInterrupt.mjs +0 -6
- package/dist/esm/hitl/askUserQuestionsInterrupt.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +0 -127
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
- package/dist/esm/hooks/createToolPolicyHook.mjs +0 -38
- package/dist/esm/hooks/createToolPolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs +0 -77
- package/dist/esm/hooks/createWorkspacePolicyHook.mjs.map +1 -1
- package/dist/esm/hooks/executeHooks.mjs +0 -79
- package/dist/esm/hooks/executeHooks.mjs.map +1 -1
- package/dist/esm/hooks/index.mjs +0 -16
- package/dist/esm/hooks/index.mjs.map +1 -1
- package/dist/esm/hooks/matchers.mjs +0 -104
- package/dist/esm/hooks/matchers.mjs.map +1 -1
- package/dist/esm/hooks/types.mjs +0 -8
- package/dist/esm/hooks/types.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +0 -14
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langfuse.mjs +0 -75
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseConfig.mjs.map +1 -1
- package/dist/esm/langfuseRuntimeContext.mjs +0 -13
- package/dist/esm/langfuseRuntimeContext.mjs.map +1 -1
- package/dist/esm/langfuseRuntimeScope.mjs +0 -4
- package/dist/esm/langfuseRuntimeScope.mjs.map +1 -1
- package/dist/esm/langfuseSpanRegistry.mjs +0 -28
- package/dist/esm/langfuseSpanRegistry.mjs.map +1 -1
- package/dist/esm/langfuseToolOutputTracing.mjs +0 -3
- package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
- package/dist/esm/langfuseTraceShaping.mjs +0 -74
- package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
- package/dist/esm/llm/anthropic/index.mjs +0 -3
- package/dist/esm/llm/anthropic/index.mjs.map +1 -1
- package/dist/esm/llm/anthropic/types.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -111
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs +0 -1
- package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/stream_events.mjs +0 -8
- package/dist/esm/llm/anthropic/utils/stream_events.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
- package/dist/esm/llm/bedrock/cachePoints.mjs.map +1 -1
- package/dist/esm/llm/bedrock/index.mjs +1 -95
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs +0 -78
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs +0 -24
- package/dist/esm/llm/bedrock/utils/message_outputs.mjs.map +1 -1
- package/dist/esm/llm/contextOverflowRecovery.mjs +0 -62
- package/dist/esm/llm/contextOverflowRecovery.mjs.map +1 -1
- package/dist/esm/llm/fake.mjs.map +1 -1
- package/dist/esm/llm/google/index.mjs +2 -21
- package/dist/esm/llm/google/index.mjs.map +1 -1
- package/dist/esm/llm/google/utils/common.mjs +0 -35
- package/dist/esm/llm/google/utils/common.mjs.map +1 -1
- package/dist/esm/llm/init.mjs +0 -9
- package/dist/esm/llm/init.mjs.map +1 -1
- package/dist/esm/llm/invoke.mjs +1 -270
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/mistral/index.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +0 -99
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/streamMetadata.mjs +0 -21
- package/dist/esm/llm/openai/streamMetadata.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/index.mjs +0 -1
- package/dist/esm/llm/openrouter/index.mjs.map +1 -1
- package/dist/esm/llm/openrouter/toolCache.mjs +0 -6
- package/dist/esm/llm/openrouter/toolCache.mjs.map +1 -1
- package/dist/esm/llm/preempt.mjs +0 -75
- package/dist/esm/llm/preempt.mjs.map +1 -1
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/llm/request.mjs +0 -10
- package/dist/esm/llm/request.mjs.map +1 -1
- package/dist/esm/llm/stream/chunkAdapters.mjs +0 -62
- package/dist/esm/llm/stream/chunkAdapters.mjs.map +1 -1
- package/dist/esm/llm/stream/smoother.mjs +0 -58
- package/dist/esm/llm/stream/smoother.mjs.map +1 -1
- package/dist/esm/llm/streamLimits.mjs +4 -293
- package/dist/esm/llm/streamLimits.mjs.map +1 -1
- package/dist/esm/llm/truncation.mjs +0 -36
- package/dist/esm/llm/truncation.mjs.map +1 -1
- package/dist/esm/llm/vertexai/index.mjs +0 -330
- package/dist/esm/llm/vertexai/index.mjs.map +1 -1
- package/dist/esm/messages/alternation.mjs +0 -43
- package/dist/esm/messages/alternation.mjs.map +1 -1
- package/dist/esm/messages/anthropicToolCache.mjs +0 -45
- package/dist/esm/messages/anthropicToolCache.mjs.map +1 -1
- package/dist/esm/messages/assistantPhase.mjs +0 -12
- package/dist/esm/messages/assistantPhase.mjs.map +1 -1
- package/dist/esm/messages/budget.mjs +0 -9
- package/dist/esm/messages/budget.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +0 -172
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/content.mjs +0 -9
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +0 -15
- package/dist/esm/messages/contextPruning.mjs.map +1 -1
- package/dist/esm/messages/contextPruningSettings.mjs +0 -3
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -1
- package/dist/esm/messages/core.mjs +0 -48
- package/dist/esm/messages/core.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +1 -345
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/handoffCue.mjs +0 -36
- package/dist/esm/messages/handoffCue.mjs.map +1 -1
- package/dist/esm/messages/ids.mjs.map +1 -1
- package/dist/esm/messages/injected.mjs +0 -33
- package/dist/esm/messages/injected.mjs.map +1 -1
- package/dist/esm/messages/langchain.mjs +0 -14
- package/dist/esm/messages/langchain.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +1 -184
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/messages/recency.mjs +0 -32
- package/dist/esm/messages/recency.mjs.map +1 -1
- package/dist/esm/messages/reducer.mjs +0 -30
- package/dist/esm/messages/reducer.mjs.map +1 -1
- package/dist/esm/messages/tools.mjs +0 -14
- package/dist/esm/messages/tools.mjs.map +1 -1
- package/dist/esm/openai/index.mjs.map +1 -1
- package/dist/esm/prompts/activityLabel.mjs +9 -79
- package/dist/esm/prompts/activityLabel.mjs.map +1 -1
- package/dist/esm/responses/index.mjs.map +1 -1
- package/dist/esm/run.mjs +2 -538
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/AgentSession.mjs +1 -17
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
- package/dist/esm/session/handlers.mjs +0 -7
- package/dist/esm/session/handlers.mjs.map +1 -1
- package/dist/esm/session/ids.mjs.map +1 -1
- package/dist/esm/session/messageSerialization.mjs +0 -4
- package/dist/esm/session/messageSerialization.mjs.map +1 -1
- package/dist/esm/stream.mjs +1 -93
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/index.mjs +0 -27
- package/dist/esm/summarization/index.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs +0 -273
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +0 -35
- package/dist/esm/tools/BashExecutor.mjs.map +1 -1
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +0 -24
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/Calculator.mjs.map +1 -1
- package/dist/esm/tools/CodeExecutor.mjs +0 -13
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/CodeSessionFileSummary.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +0 -101
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs.map +1 -1
- package/dist/esm/tools/SkillTool.mjs +0 -5
- package/dist/esm/tools/SkillTool.mjs.map +1 -1
- package/dist/esm/tools/SubagentTool.mjs +0 -10
- package/dist/esm/tools/SubagentTool.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +6 -1038
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/ToolSearch.mjs +0 -179
- package/dist/esm/tools/ToolSearch.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareBridgeRuntime.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs +0 -39
- package/dist/esm/tools/cloudflare/CloudflareSandboxExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/cloudflare/CloudflareSandboxTools.mjs.map +1 -1
- package/dist/esm/tools/eagerEventExecution.mjs +0 -6
- package/dist/esm/tools/eagerEventExecution.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +1 -41
- package/dist/esm/tools/handlers.mjs.map +1 -1
- package/dist/esm/tools/intentArg.mjs +1 -132
- package/dist/esm/tools/intentArg.mjs.map +1 -1
- package/dist/esm/tools/local/CompileCheckTool.mjs +0 -25
- package/dist/esm/tools/local/CompileCheckTool.mjs.map +1 -1
- package/dist/esm/tools/local/FileCheckpointer.mjs +0 -23
- package/dist/esm/tools/local/FileCheckpointer.mjs.map +1 -1
- package/dist/esm/tools/local/LocalCodingTools.mjs +0 -80
- package/dist/esm/tools/local/LocalCodingTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionEngine.mjs +0 -126
- package/dist/esm/tools/local/LocalExecutionEngine.mjs.map +1 -1
- package/dist/esm/tools/local/LocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +0 -12
- package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/local/attachments.mjs +0 -44
- package/dist/esm/tools/local/attachments.mjs.map +1 -1
- package/dist/esm/tools/local/bashAst.mjs +0 -16
- package/dist/esm/tools/local/bashAst.mjs.map +1 -1
- package/dist/esm/tools/local/editStrategies.mjs +0 -14
- package/dist/esm/tools/local/editStrategies.mjs.map +1 -1
- package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
- package/dist/esm/tools/local/syntaxCheck.mjs +0 -31
- package/dist/esm/tools/local/syntaxCheck.mjs.map +1 -1
- package/dist/esm/tools/local/textEncoding.mjs +0 -11
- package/dist/esm/tools/local/textEncoding.mjs.map +1 -1
- package/dist/esm/tools/local/workspaceFS.mjs +0 -33
- package/dist/esm/tools/local/workspaceFS.mjs.map +1 -1
- package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
- package/dist/esm/tools/schema.mjs +0 -8
- package/dist/esm/tools/schema.mjs.map +1 -1
- package/dist/esm/tools/search/anthropic.mjs +0 -9
- package/dist/esm/tools/search/anthropic.mjs.map +1 -1
- package/dist/esm/tools/search/content.mjs.map +1 -1
- package/dist/esm/tools/search/crw-scraper.mjs +0 -33
- package/dist/esm/tools/search/crw-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/crw-search.mjs +0 -2
- package/dist/esm/tools/search/crw-search.mjs.map +1 -1
- package/dist/esm/tools/search/firecrawl.mjs +0 -25
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
- package/dist/esm/tools/search/format.mjs +0 -30
- package/dist/esm/tools/search/format.mjs.map +1 -1
- package/dist/esm/tools/search/highlights.mjs +0 -16
- package/dist/esm/tools/search/highlights.mjs.map +1 -1
- package/dist/esm/tools/search/keenable-scraper.mjs +0 -8
- package/dist/esm/tools/search/keenable-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/keenable-search.mjs +0 -7
- package/dist/esm/tools/search/keenable-search.mjs.map +1 -1
- package/dist/esm/tools/search/rerankers.mjs +0 -35
- package/dist/esm/tools/search/rerankers.mjs.map +1 -1
- package/dist/esm/tools/search/schema.mjs +0 -1
- package/dist/esm/tools/search/schema.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +1 -14
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/serper-scraper.mjs +0 -46
- package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +0 -25
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +0 -8
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +0 -6
- package/dist/esm/tools/skillCatalog.mjs.map +1 -1
- package/dist/esm/tools/streamedToolCallSeals.mjs +0 -6
- package/dist/esm/tools/streamedToolCallSeals.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs +0 -2
- package/dist/esm/tools/subagent/SubagentExecutionRegistry.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +3 -213
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
- package/dist/esm/tools/subagent/childGraphConfig.mjs +0 -4
- package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
- package/dist/esm/tools/subagent/runtimeLimits.mjs.map +1 -1
- package/dist/esm/tools/toolOutputReferences.mjs +1 -322
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -1
- package/dist/esm/types/hitl.mjs +0 -5
- package/dist/esm/types/hitl.mjs.map +1 -1
- package/dist/esm/utils/callbacks.mjs.map +1 -1
- package/dist/esm/utils/errors.mjs +14 -165
- package/dist/esm/utils/errors.mjs.map +1 -1
- package/dist/esm/utils/events.mjs +0 -10
- package/dist/esm/utils/events.mjs.map +1 -1
- package/dist/esm/utils/graph.mjs.map +1 -1
- package/dist/esm/utils/handlers.mjs +0 -3
- package/dist/esm/utils/handlers.mjs.map +1 -1
- package/dist/esm/utils/llm.mjs +0 -1
- package/dist/esm/utils/llm.mjs.map +1 -1
- package/dist/esm/utils/misc.mjs +0 -16
- package/dist/esm/utils/misc.mjs.map +1 -1
- package/dist/esm/utils/proxy.mjs +0 -26
- package/dist/esm/utils/proxy.mjs.map +1 -1
- package/dist/esm/utils/run.mjs +0 -6
- package/dist/esm/utils/run.mjs.map +1 -1
- package/dist/esm/utils/schema.mjs +0 -5
- package/dist/esm/utils/schema.mjs.map +1 -1
- package/dist/esm/utils/title.mjs +0 -6
- package/dist/esm/utils/title.mjs.map +1 -1
- package/dist/esm/utils/tokens.mjs +0 -113
- package/dist/esm/utils/tokens.mjs.map +1 -1
- package/dist/esm/utils/toolContent.mjs +0 -41
- package/dist/esm/utils/toolContent.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +0 -61
- package/dist/esm/utils/truncation.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +3 -3
- package/dist/types/agents/__tests__/promptCacheLiveHelpers.d.ts +3 -3
- package/dist/types/agents/projection.d.ts +1 -1
- package/dist/types/events.d.ts +2 -2
- package/dist/types/graphs/Graph.d.ts +11 -11
- package/dist/types/graphs/MultiAgentGraph.d.ts +2 -2
- package/dist/types/graphs/createGraph.d.ts +4 -4
- package/dist/types/graphs/graphFactory.d.ts +1 -1
- package/dist/types/hitl/askUserQuestion.d.ts +1 -1
- package/dist/types/hitl/askUserQuestions.d.ts +1 -1
- package/dist/types/hitl/askUserQuestionsInterrupt.d.ts +1 -1
- package/dist/types/hooks/types.d.ts +1 -1
- package/dist/types/instrumentation.d.ts +1 -1
- package/dist/types/langfuse.d.ts +3 -3
- package/dist/types/langfuseConfig.d.ts +2 -2
- package/dist/types/langfuseRuntimeContext.d.ts +1 -1
- package/dist/types/langfuseRuntimeScope.d.ts +2 -2
- package/dist/types/langfuseSpanRegistry.d.ts +1 -1
- package/dist/types/langfuseToolOutputTracing.d.ts +3 -3
- package/dist/types/llm/anthropic/index.d.ts +1 -1
- package/dist/types/llm/bedrock/index.d.ts +1 -1
- package/dist/types/llm/bedrock/toolCache.d.ts +2 -2
- package/dist/types/llm/contextOverflowRecovery.d.ts +2 -2
- package/dist/types/llm/google/index.d.ts +1 -1
- package/dist/types/llm/init.d.ts +2 -2
- package/dist/types/llm/invoke.d.ts +6 -6
- package/dist/types/llm/mistral/index.d.ts +1 -1
- package/dist/types/llm/openai/index.d.ts +2 -2
- package/dist/types/llm/openrouter/index.d.ts +2 -2
- package/dist/types/llm/openrouter/toolCache.d.ts +2 -2
- package/dist/types/llm/providers.d.ts +2 -2
- package/dist/types/llm/request.d.ts +2 -2
- package/dist/types/llm/stream/chunkAdapters.d.ts +1 -1
- package/dist/types/llm/streamLimits.d.ts +1 -1
- package/dist/types/llm/truncation.d.ts +1 -1
- package/dist/types/llm/vertexai/index.d.ts +1 -1
- package/dist/types/messages/alternation.d.ts +1 -1
- package/dist/types/messages/anthropicToolCache.d.ts +2 -2
- package/dist/types/messages/assistantPhase.d.ts +3 -3
- package/dist/types/messages/budget.d.ts +1 -1
- package/dist/types/messages/cache.d.ts +1 -1
- package/dist/types/messages/contextPruning.d.ts +2 -2
- package/dist/types/messages/core.d.ts +2 -2
- package/dist/types/messages/format.d.ts +2 -2
- package/dist/types/messages/ids.d.ts +2 -2
- package/dist/types/messages/injected.d.ts +1 -1
- package/dist/types/messages/langchain.d.ts +1 -1
- package/dist/types/messages/prune.d.ts +3 -3
- package/dist/types/openai/index.d.ts +1 -1
- package/dist/types/prompts/activityLabel.d.ts +2 -2
- package/dist/types/responses/index.d.ts +1 -1
- package/dist/types/run.d.ts +3 -3
- package/dist/types/session/handlers.d.ts +1 -1
- package/dist/types/session/types.d.ts +1 -1
- package/dist/types/stream.d.ts +4 -4
- package/dist/types/summarization/index.d.ts +1 -1
- package/dist/types/summarization/node.d.ts +6 -6
- package/dist/types/test/mockTools.d.ts +1 -1
- package/dist/types/tools/BashExecutor.d.ts +2 -2
- package/dist/types/tools/BashProgrammaticToolCalling.d.ts +2 -2
- package/dist/types/tools/CodeExecutor.d.ts +3 -3
- package/dist/types/tools/CodeSessionFileSummary.d.ts +1 -1
- package/dist/types/tools/ProgrammaticToolCalling.d.ts +2 -2
- package/dist/types/tools/ReadFile.d.ts +1 -1
- package/dist/types/tools/SkillTool.d.ts +1 -1
- package/dist/types/tools/SubagentTool.d.ts +3 -3
- package/dist/types/tools/ToolNode.d.ts +5 -5
- package/dist/types/tools/ToolSearch.d.ts +2 -2
- package/dist/types/tools/cloudflare/CloudflareBridgeRuntime.d.ts +1 -1
- package/dist/types/tools/cloudflare/CloudflareProgrammaticToolCalling.d.ts +1 -1
- package/dist/types/tools/cloudflare/CloudflareSandboxExecutionEngine.d.ts +2 -2
- package/dist/types/tools/cloudflare/CloudflareSandboxTools.d.ts +1 -1
- package/dist/types/tools/eagerEventExecution.d.ts +1 -1
- package/dist/types/tools/handlers.d.ts +3 -3
- package/dist/types/tools/intentArg.d.ts +1 -1
- package/dist/types/tools/local/CompileCheckTool.d.ts +2 -2
- package/dist/types/tools/local/FileCheckpointer.d.ts +1 -1
- package/dist/types/tools/local/LocalCodingTools.d.ts +2 -2
- package/dist/types/tools/local/LocalExecutionEngine.d.ts +1 -1
- package/dist/types/tools/local/LocalExecutionTools.d.ts +1 -1
- package/dist/types/tools/local/LocalProgrammaticToolCalling.d.ts +1 -1
- package/dist/types/tools/local/bashAst.d.ts +1 -1
- package/dist/types/tools/local/resolveLocalExecutionTools.d.ts +1 -1
- package/dist/types/tools/local/syntaxCheck.d.ts +1 -1
- package/dist/types/tools/ptcTimeout.d.ts +1 -1
- package/dist/types/tools/schema.d.ts +1 -1
- package/dist/types/tools/search/anthropic.d.ts +1 -1
- package/dist/types/tools/skillCatalog.d.ts +1 -1
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +5 -5
- package/dist/types/tools/subagent/SubagentReplay.d.ts +3 -3
- package/dist/types/tools/subagent/childGraphConfig.d.ts +2 -2
- package/dist/types/types/activityLabel.d.ts +3 -3
- package/dist/types/types/graph.d.ts +7 -7
- package/dist/types/types/llm.d.ts +9 -9
- package/dist/types/types/run.d.ts +7 -7
- package/dist/types/types/stream.d.ts +5 -5
- package/dist/types/types/summarize.d.ts +2 -2
- package/dist/types/types/tools.d.ts +5 -5
- package/dist/types/utils/__tests__/fixtures/contextOverflowSignatures.d.ts +1 -1
- package/dist/types/utils/errors.d.ts +1 -1
- package/dist/types/utils/events.d.ts +1 -1
- package/dist/types/utils/handlers.d.ts +3 -3
- package/dist/types/utils/llm.d.ts +1 -1
- package/dist/types/utils/llmConfig.d.ts +1 -1
- package/dist/types/utils/title.d.ts +1 -1
- package/package.json +10 -3
- package/src/__tests__/stream.eagerArgsDivergence.test.ts +0 -911
- package/src/__tests__/stream.eagerEventExecution.test.ts +0 -5046
- package/src/__tests__/stream.streamLimits.test.ts +0 -1982
- package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +0 -448
- package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +0 -655
- package/src/agents/__tests__/AgentContext.openrouter.live.test.ts +0 -128
- package/src/agents/__tests__/AgentContext.overflow.test.ts +0 -205
- package/src/agents/__tests__/AgentContext.test.ts +0 -2425
- package/src/agents/__tests__/projection.test.ts +0 -73
- package/src/agents/__tests__/promptCacheLiveHelpers.ts +0 -175
- package/src/aggregator.test.ts +0 -1214
- package/src/graphs/__tests__/Graph.breakerLifecycle.test.ts +0 -273
- package/src/graphs/__tests__/Graph.closeRunStep.test.ts +0 -385
- package/src/graphs/__tests__/Graph.contextOverflow.test.ts +0 -1766
- package/src/graphs/__tests__/Graph.preemptSignal.test.ts +0 -126
- package/src/graphs/__tests__/Graph.reasoning.test.ts +0 -1717
- package/src/graphs/__tests__/Graph.subagentResumeState.test.ts +0 -80
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +0 -177
- package/src/graphs/__tests__/composition.smoke.test.ts +0 -509
- package/src/graphs/__tests__/createGraph.test.ts +0 -206
- package/src/hooks/__tests__/HookRegistry.test.ts +0 -334
- package/src/hooks/__tests__/compactHooks.test.ts +0 -250
- package/src/hooks/__tests__/createToolPolicyHook.test.ts +0 -268
- package/src/hooks/__tests__/createWorkspacePolicyHook.test.ts +0 -405
- package/src/hooks/__tests__/executeHooks.test.ts +0 -1294
- package/src/hooks/__tests__/integration.test.ts +0 -337
- package/src/hooks/__tests__/matchers.test.ts +0 -238
- package/src/hooks/__tests__/preemptBoundary.test.ts +0 -152
- package/src/hooks/__tests__/toolHooks.test.ts +0 -669
- package/src/llm/__tests__/contextOverflowRecovery.test.ts +0 -401
- package/src/llm/__tests__/fallbackOverflow.test.ts +0 -287
- package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
- package/src/llm/anthropic/inherited-content-utils.spec.ts +0 -249
- package/src/llm/anthropic/inherited-stream-events.spec.ts +0 -1259
- package/src/llm/anthropic/inherited-strict.spec.ts +0 -302
- package/src/llm/anthropic/llm.spec.ts +0 -3394
- package/src/llm/anthropic/utils/cross-provider-reasoning.test.ts +0 -383
- package/src/llm/anthropic/utils/cross-provider-server-tools.test.ts +0 -110
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -508
- package/src/llm/anthropic/utils/streaming-tool-input.test.ts +0 -361
- package/src/llm/anthropic/utils/stripPrefillCache.test.ts +0 -111
- package/src/llm/anthropic/utils/tool-id-normalization.test.ts +0 -287
- package/src/llm/bedrock/inherited-cache.spec.ts +0 -144
- package/src/llm/bedrock/inherited.spec.ts +0 -724
- package/src/llm/bedrock/llm.spec.ts +0 -1533
- package/src/llm/bedrock/streamSealDispatch.test.ts +0 -331
- package/src/llm/bedrock/toolCache.test.ts +0 -194
- package/src/llm/bedrock/utils/cross-provider-reasoning.test.ts +0 -131
- package/src/llm/bedrock/utils/cross-provider-server-tools.test.ts +0 -122
- package/src/llm/bedrock/utils/message_inputs.test.ts +0 -650
- package/src/llm/bedrock/utils/message_outputs.test.ts +0 -85
- package/src/llm/bedrock/utils/toolResultCachePoint.test.ts +0 -118
- package/src/llm/custom-chat-models.smoke.test.ts +0 -1966
- package/src/llm/google/data/gettysburg10.wav +0 -0
- package/src/llm/google/data/hotdog.jpg +0 -0
- package/src/llm/google/inherited-stream-events.spec.ts +0 -350
- package/src/llm/google/llm.spec.ts +0 -1388
- package/src/llm/google/streamSmoothing.test.ts +0 -121
- package/src/llm/google/utils/common.test.ts +0 -196
- package/src/llm/invoke.alternation.test.ts +0 -87
- package/src/llm/invoke.handoffCue.test.ts +0 -112
- package/src/llm/invoke.streamLimits.test.ts +0 -142
- package/src/llm/invoke.test.ts +0 -1198
- package/src/llm/mistral/streamSmoothing.test.ts +0 -97
- package/src/llm/openai/cacheWriteTokens.test.ts +0 -112
- package/src/llm/openai/contentBlocks.test.ts +0 -381
- package/src/llm/openai/deepseek.test.ts +0 -747
- package/src/llm/openai/inherited-deepseek.spec.ts +0 -347
- package/src/llm/openai/inherited-xai.spec.ts +0 -416
- package/src/llm/openai/llm.spec.ts +0 -1774
- package/src/llm/openai/managedRequests.test.ts +0 -182
- package/src/llm/openai/sequentialToolCallSeals.test.ts +0 -199
- package/src/llm/openai/streamMetadata.spec.ts +0 -86
- package/src/llm/openai/streamMetadataDedup.spec.ts +0 -166
- package/src/llm/openai/utils/isReasoningModel.test.ts +0 -90
- package/src/llm/openai/utils/messages.test.ts +0 -488
- package/src/llm/openrouter/reasoning.test.ts +0 -561
- package/src/llm/openrouter/toolCache.test.ts +0 -134
- package/src/llm/preempt.test.ts +0 -323
- package/src/llm/stream/chunkAdapters.test.ts +0 -202
- package/src/llm/stream/reassembly.test.ts +0 -241
- package/src/llm/stream/smoother.bench.test.ts +0 -155
- package/src/llm/stream/smoother.test.ts +0 -519
- package/src/llm/streamLimits.test.ts +0 -450
- package/src/llm/truncation.test.ts +0 -242
- package/src/llm/vertexai/fixThoughtSignatures.test.ts +0 -154
- package/src/llm/vertexai/inherited-stream-events.spec.ts +0 -271
- package/src/llm/vertexai/llm.spec.ts +0 -159
- package/src/llm/vertexai/repairUsageMetadata.test.ts +0 -54
- package/src/llm/vertexai/sealStreamedToolCalls.test.ts +0 -88
- package/src/llm/vertexai/streamSealDispatch.test.ts +0 -148
- package/src/llm/vertexai/streamSmoothing.test.ts +0 -109
- package/src/messages/__tests__/anthropicToolCache.test.ts +0 -339
- package/src/messages/__tests__/observationMasking.test.ts +0 -312
- package/src/messages/__tests__/recency.test.ts +0 -267
- package/src/messages/__tests__/tools.test.ts +0 -473
- package/src/messages/alternation.test.ts +0 -212
- package/src/messages/assistantPhase.test.ts +0 -75
- package/src/messages/cache.tail.test.ts +0 -533
- package/src/messages/cache.test.ts +0 -2166
- package/src/messages/content.test.ts +0 -362
- package/src/messages/contextPruning.test.ts +0 -184
- package/src/messages/ensureThinkingBlock.test.ts +0 -1427
- package/src/messages/foldToollessToolBlocks.test.ts +0 -596
- package/src/messages/formatAgentMessages.reducer.test.ts +0 -162
- package/src/messages/formatAgentMessages.skills.test.ts +0 -513
- package/src/messages/formatAgentMessages.steer.test.ts +0 -598
- package/src/messages/formatAgentMessages.test.ts +0 -8111
- package/src/messages/formatAgentMessages.tools.test.ts +0 -522
- package/src/messages/formatMessage.test.ts +0 -693
- package/src/messages/handoffCue.test.ts +0 -96
- package/src/messages/injected.test.ts +0 -107
- package/src/messages/labelContentByAgent.test.ts +0 -962
- package/src/messages/reducer.spec.ts +0 -32
- package/src/messages/shiftIndexTokenCountMap.test.ts +0 -81
- package/src/messages/tailCacheConversion.test.ts +0 -161
- package/src/openai/__tests__/openai.test.ts +0 -337
- package/src/responses/__tests__/responses.test.ts +0 -652
- package/src/scripts/abort.ts +0 -157
- package/src/scripts/activity-labels/captured.json +0 -56
- package/src/scripts/activity-labels/checks.cjs +0 -205
- package/src/scripts/activity-labels/corpus.cjs +0 -473
- package/src/scripts/activity-labels/report.cjs +0 -203
- package/src/scripts/activity-labels/rescore.cjs +0 -102
- package/src/scripts/activity-labels/run.ts +0 -705
- package/src/scripts/activity-labels/variants.ts +0 -71
- package/src/scripts/ant_web_search.ts +0 -159
- package/src/scripts/ant_web_search_edge_case.ts +0 -163
- package/src/scripts/ant_web_search_error_edge_case.ts +0 -149
- package/src/scripts/args.ts +0 -48
- package/src/scripts/bedrock-cache-debug.ts +0 -250
- package/src/scripts/bedrock-content-aggregation-test.ts +0 -266
- package/src/scripts/bedrock-merge-test.ts +0 -107
- package/src/scripts/bedrock-parallel-tools-test.ts +0 -204
- package/src/scripts/bench-prompt-cache.ts +0 -479
- package/src/scripts/caching.ts +0 -132
- package/src/scripts/cli.ts +0 -172
- package/src/scripts/cli2.ts +0 -133
- package/src/scripts/cli3.ts +0 -184
- package/src/scripts/cli4.ts +0 -191
- package/src/scripts/cli5.ts +0 -191
- package/src/scripts/code_exec.ts +0 -214
- package/src/scripts/code_exec_files.ts +0 -237
- package/src/scripts/code_exec_multi_session.ts +0 -237
- package/src/scripts/code_exec_ptc.ts +0 -335
- package/src/scripts/code_exec_session.ts +0 -283
- package/src/scripts/code_exec_simple.ts +0 -148
- package/src/scripts/compare_pi_vs_ours.ts +0 -1259
- package/src/scripts/content.ts +0 -139
- package/src/scripts/context-overflow-probe.ts +0 -997
- package/src/scripts/empty_input.ts +0 -137
- package/src/scripts/handoff-test.ts +0 -134
- package/src/scripts/local_engine.ts +0 -166
- package/src/scripts/local_engine_checkpointer.ts +0 -205
- package/src/scripts/local_engine_compile.ts +0 -263
- package/src/scripts/local_engine_hooks.ts +0 -226
- package/src/scripts/local_engine_image.ts +0 -201
- package/src/scripts/local_engine_ptc.ts +0 -151
- package/src/scripts/local_engine_workspace.ts +0 -258
- package/src/scripts/memory.ts +0 -107
- package/src/scripts/multi-agent-chain.ts +0 -332
- package/src/scripts/multi-agent-conditional.ts +0 -222
- package/src/scripts/multi-agent-document-review-chain.ts +0 -198
- package/src/scripts/multi-agent-hybrid-flow.ts +0 -311
- package/src/scripts/multi-agent-parallel-start.ts +0 -265
- package/src/scripts/multi-agent-parallel.ts +0 -395
- package/src/scripts/multi-agent-sequence.ts +0 -217
- package/src/scripts/multi-agent-subagent.ts +0 -246
- package/src/scripts/multi-agent-supervisor.ts +0 -366
- package/src/scripts/multi-agent-test.ts +0 -187
- package/src/scripts/openrouter_prompt_cache_live.ts +0 -310
- package/src/scripts/parallel-asymmetric-tools-test.ts +0 -275
- package/src/scripts/parallel-full-metadata-test.ts +0 -241
- package/src/scripts/parallel-tools-test.ts +0 -341
- package/src/scripts/preempt-probe.ts +0 -330
- package/src/scripts/preempt-scenarios.ts +0 -388
- package/src/scripts/programmatic_exec.ts +0 -387
- package/src/scripts/programmatic_exec_agent.ts +0 -232
- package/src/scripts/search.ts +0 -147
- package/src/scripts/sequential-full-metadata-test.ts +0 -198
- package/src/scripts/session_live.ts +0 -548
- package/src/scripts/simple.ts +0 -226
- package/src/scripts/single-agent-metadata-test.ts +0 -196
- package/src/scripts/stream.ts +0 -141
- package/src/scripts/subagent-configurable-inheritance.ts +0 -252
- package/src/scripts/subagent-event-driven-debug.ts +0 -190
- package/src/scripts/subagent-tools-debug.ts +0 -160
- package/src/scripts/subagent-usage-sink.ts +0 -176
- package/src/scripts/summarization-recency.ts +0 -462
- package/src/scripts/test-custom-prompt-key.ts +0 -145
- package/src/scripts/test-handoff-input.ts +0 -170
- package/src/scripts/test-handoff-preamble.ts +0 -278
- package/src/scripts/test-handoff-steering.ts +0 -430
- package/src/scripts/test-multi-agent-list-handoff.ts +0 -418
- package/src/scripts/test-parallel-agent-labeling.ts +0 -327
- package/src/scripts/test-parallel-handoffs.ts +0 -292
- package/src/scripts/test-thinking-handoff-bedrock.ts +0 -154
- package/src/scripts/test-thinking-handoff.ts +0 -156
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +0 -166
- package/src/scripts/test-tool-before-handoff-role-order.ts +0 -276
- package/src/scripts/test-tools-before-handoff.ts +0 -222
- package/src/scripts/test_code_api.ts +0 -354
- package/src/scripts/thinking-bedrock.ts +0 -160
- package/src/scripts/thinking-vertexai.ts +0 -168
- package/src/scripts/thinking.ts +0 -172
- package/src/scripts/tool_search.ts +0 -153
- package/src/scripts/tools.ts +0 -163
- package/src/session/__tests__/JsonlSessionStore.test.ts +0 -1463
- package/src/session/__tests__/handlers.test.ts +0 -161
- package/src/specs/activity-label-observability.live.test.ts +0 -262
- package/src/specs/activity-label-observability.test.ts +0 -167
- package/src/specs/activity-label-prompt.test.ts +0 -359
- package/src/specs/activity-label-trace-seed.test.ts +0 -47
- package/src/specs/activity-phase-label.test.ts +0 -306
- package/src/specs/agent-handoffs.live.test.ts +0 -140
- package/src/specs/agent-handoffs.test.ts +0 -2465
- package/src/specs/anthropic.simple.test.ts +0 -453
- package/src/specs/ask-user-question-batch.test.ts +0 -289
- package/src/specs/ask-user-questions.live.test.ts +0 -185
- package/src/specs/ask-user-questions.test.ts +0 -293
- package/src/specs/azure.simple.test.ts +0 -502
- package/src/specs/bedrock-toolless.live.test.ts +0 -123
- package/src/specs/bedrock-truncation.live.test.ts +0 -191
- package/src/specs/cache.simple.test.ts +0 -416
- package/src/specs/context-accuracy.live.test.ts +0 -409
- package/src/specs/context-overflow-recovery.live.test.ts +0 -213
- package/src/specs/context-usage-event.test.ts +0 -117
- package/src/specs/context-usage.live.test.ts +0 -297
- package/src/specs/custom-event-await.test.ts +0 -304
- package/src/specs/deepseek.simple.test.ts +0 -290
- package/src/specs/deterministic-trace-id.test.ts +0 -43
- package/src/specs/discovered-tools.test.ts +0 -217
- package/src/specs/durability-checkpoint.integration.test.ts +0 -243
- package/src/specs/graph-subagent.live.test.ts +0 -242
- package/src/specs/graph-subagent.test.ts +0 -322
- package/src/specs/handoffCue.test.ts +0 -165
- package/src/specs/langfuse-callbacks.test.ts +0 -1578
- package/src/specs/langfuse-config.test.ts +0 -247
- package/src/specs/langfuse-instrumentation.test.ts +0 -393
- package/src/specs/langfuse-metadata.test.ts +0 -245
- package/src/specs/langfuse-routing.integration.test.ts +0 -844
- package/src/specs/langfuse-runtime-context.test.ts +0 -92
- package/src/specs/langfuse-span-registry.test.ts +0 -87
- package/src/specs/langfuse-tool-output-tracing.test.ts +0 -1858
- package/src/specs/langfuse-trace-shaping.test.ts +0 -591
- package/src/specs/moonshot.simple.test.ts +0 -367
- package/src/specs/multi-agent-summarization.test.ts +0 -396
- package/src/specs/openai.simple.test.ts +0 -315
- package/src/specs/openrouter.simple.test.ts +0 -275
- package/src/specs/preemptSeal.test.ts +0 -678
- package/src/specs/prune.test.ts +0 -3741
- package/src/specs/reasoning.test.ts +0 -201
- package/src/specs/run-step-timestamps.test.ts +0 -414
- package/src/specs/spec.utils.ts +0 -15
- package/src/specs/subagent.test.ts +0 -864
- package/src/specs/summarization-unit.test.ts +0 -973
- package/src/specs/summarization.test.ts +0 -3823
- package/src/specs/summarize-prune.test.ts +0 -376
- package/src/specs/thinking-handoff.test.ts +0 -621
- package/src/specs/thinking-prune.test.ts +0 -827
- package/src/specs/token-accounting-e2e.test.ts +0 -1034
- package/src/specs/token-accounting-pipeline.test.ts +0 -1008
- package/src/specs/token-distribution-edge-case.test.ts +0 -315
- package/src/specs/token-memoization.test.ts +0 -40
- package/src/specs/tokens.test.ts +0 -1000
- package/src/specs/tool-error-resume.test.ts +0 -194
- package/src/specs/tool-error.test.ts +0 -198
- package/src/specs/vllm-reasoning-toolcalls.test.ts +0 -340
- package/src/stream.dispatch.test.ts +0 -63
- package/src/stream.test.ts +0 -144
- package/src/summarization/__tests__/aggregator.test.ts +0 -236
- package/src/summarization/__tests__/node.test.ts +0 -1996
- package/src/summarization/__tests__/trigger.test.ts +0 -149
- package/src/summarization/chunkHandler.test.ts +0 -196
- package/src/test/mockTools.ts +0 -386
- package/src/tools/Calculator.test.ts +0 -278
- package/src/tools/__tests__/BashExecutor.test.ts +0 -108
- package/src/tools/__tests__/CloudflareSandboxExecution.test.ts +0 -939
- package/src/tools/__tests__/CodeApiAuthHeaders.test.ts +0 -858
- package/src/tools/__tests__/CodeExecutor.stateful.test.ts +0 -124
- package/src/tools/__tests__/LocalExecutionRoots.test.ts +0 -8
- package/src/tools/__tests__/LocalExecutionTools.test.ts +0 -2733
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +0 -318
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1557
- package/src/tools/__tests__/ReadFile.test.ts +0 -44
- package/src/tools/__tests__/SkillTool.test.ts +0 -442
- package/src/tools/__tests__/SubagentExecutor.test.ts +0 -3728
- package/src/tools/__tests__/SubagentReplay.test.ts +0 -329
- package/src/tools/__tests__/SubagentTool.test.ts +0 -149
- package/src/tools/__tests__/ToolNode.breakerSignal.test.ts +0 -595
- package/src/tools/__tests__/ToolNode.eagerEventExecution.test.ts +0 -1191
- package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +0 -757
- package/src/tools/__tests__/ToolNode.langfuse.test.ts +0 -57
- package/src/tools/__tests__/ToolNode.onResultCompletion.test.ts +0 -736
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +0 -1710
- package/src/tools/__tests__/ToolNode.runtimeState.test.ts +0 -120
- package/src/tools/__tests__/ToolNode.session.test.ts +0 -1352
- package/src/tools/__tests__/ToolNode.streamLimits.test.ts +0 -69
- package/src/tools/__tests__/ToolSearch.integration.test.ts +0 -161
- package/src/tools/__tests__/ToolSearch.test.ts +0 -1227
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +0 -561
- package/src/tools/__tests__/directToolHITLResumeScope.test.ts +0 -980
- package/src/tools/__tests__/directToolHooks.test.ts +0 -700
- package/src/tools/__tests__/eagerEventExecution.session.test.ts +0 -92
- package/src/tools/__tests__/handlers.test.ts +0 -997
- package/src/tools/__tests__/hitl.test.ts +0 -4663
- package/src/tools/__tests__/intentArg.test.ts +0 -357
- package/src/tools/__tests__/intentCoverage.test.ts +0 -139
- package/src/tools/__tests__/localToolNames.test.ts +0 -75
- package/src/tools/__tests__/skillCatalog.test.ts +0 -161
- package/src/tools/__tests__/subagentHooks.test.ts +0 -1651
- package/src/tools/__tests__/toolOutputReferences.test.ts +0 -515
- package/src/tools/__tests__/workspaceSeam.test.ts +0 -147
- package/src/tools/local/__tests__/FileCheckpointer.test.ts +0 -162
- package/src/tools/local/__tests__/editStrategies.test.ts +0 -134
- package/src/tools/search/content.test.ts +0 -173
- package/src/tools/search/crw.test.ts +0 -836
- package/src/tools/search/format.test.ts +0 -242
- package/src/tools/search/http-agent.test.ts +0 -133
- package/src/tools/search/jina-reranker.test.ts +0 -306
- package/src/tools/search/keenable-scraper.test.ts +0 -153
- package/src/tools/search/keenable.test.ts +0 -183
- package/src/tools/search/outcome.test.ts +0 -90
- package/src/tools/search/output.md +0 -2775
- package/src/tools/search/rag-api-reranker.test.ts +0 -891
- package/src/tools/search/source-processing.test.ts +0 -516
- package/src/tools/search/tavily.test.ts +0 -965
- package/src/tools/search/test.html +0 -884
- package/src/tools/search/test.md +0 -643
- package/src/tools/subagent/__tests__/SubagentExecutionRegistry.test.ts +0 -637
- package/src/tools/subagent/__tests__/SubagentExecutor.lazy.test.ts +0 -3054
- package/src/tools/subagent/__tests__/childGraphConfig.test.ts +0 -521
- package/src/utils/__tests__/apportion.test.ts +0 -32
- package/src/utils/__tests__/errors.test.ts +0 -270
- package/src/utils/__tests__/fixtures/contextOverflowSignatures.ts +0 -336
- package/src/utils/__tests__/redactSecrets.test.ts +0 -56
- package/src/utils/__tests__/truncation.test.ts +0 -66
- package/src/utils/llm.test.ts +0 -18
- package/src/utils/proxy.test.ts +0 -176
- package/src/utils/toolContent.test.ts +0 -1432
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.mjs","names":[],"sources":["../../../src/llm/init.ts"],"
|
|
1
|
+
{"version":3,"file":"init.mjs","names":[],"sources":["../../../src/llm/init.ts"],"mappings":";;;;;;;;AAiBA,SAAgB,gBAAgB,EAC9B,UACA,eACA,OACA,YAMW;CACX,MAAM,QACJ,YACA,KAAK,kBAAkB,QAAQ,GAAG,iBAAkB,CAAC,CAAW;CAElE,IACE,aAAa,QAAQ,MACpB,iBAAiB,cAAc,iBAAiB,kBACjD;EACA,MAAM,OAAO;EACb,IAAI,MAAM;GACR,MAAM,cAAc,KAAK;GACzB,MAAM,OAAO,KAAK;GAClB,MAAM,mBAAmB,KAAK;GAC9B,MAAM,kBAAkB,KAAK;GAC7B,MAAM,IAAI,KAAK;EACjB;CACF,OAAO,IAAI,aAAA,cAAmC,iBAAiB,cAAc;EAC3E,MAAM,OAAO;EACb,IAAI,MAAM;GACR,MAAM,cAAc,KAAK;GACzB,MAAM,OAAO,KAAK;GAClB,MAAM,OAAO,KAAK;GAClB,MAAM,cAAc,KAAK;GACzB,MAAM,mBAAmB,KAAK;GAC9B,MAAM,kBAAkB,KAAK;GAC7B,MAAM,kBAAkB,KAAK;EAC/B;CACF;CAEA,IAAI,CAAC,SAAS,MAAM,WAAW,GAC7B,OAAO;CAGT,OAAQ,MAA2B,UAAU,KAAK;AACpD"}
|
package/dist/esm/llm/invoke.mjs
CHANGED
|
@@ -21,7 +21,6 @@ import { AIMessageChunk } from "@langchain/core/messages";
|
|
|
21
21
|
import { CallbackManager, CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
|
|
22
22
|
import { concat } from "@langchain/core/utils/stream";
|
|
23
23
|
//#region src/llm/invoke.ts
|
|
24
|
-
/** Unique per-model-attempt sequence; see the stamp in `attemptInvoke`. */
|
|
25
24
|
let streamLimitAttemptSeq = 0;
|
|
26
25
|
function usesNativeOpenAIResponses(model, provider, callOptions) {
|
|
27
26
|
if (!isOpenAILike(provider)) return false;
|
|
@@ -54,11 +53,6 @@ function usesNativeOpenAIResponses(model, provider, callOptions) {
|
|
|
54
53
|
}
|
|
55
54
|
return false;
|
|
56
55
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Produces the exact provider-facing message representation before a model
|
|
59
|
-
* adapter serializes it. This is shared by invocation and Graph's final budget
|
|
60
|
-
* guard so structured tool output cannot grow after the payload was measured.
|
|
61
|
-
*/
|
|
62
56
|
function projectMessagesForProvider({ model, messages, provider, maxToolResultChars, callOptions }) {
|
|
63
57
|
const nativeOpenAIResponses = usesNativeOpenAIResponses(model, provider, callOptions);
|
|
64
58
|
const providerInputMessages = projectToolStreamContentForProvider(messages, nativeOpenAIResponses ? "native" : "fallback", maxToolResultChars);
|
|
@@ -69,16 +63,6 @@ function projectMessagesForProvider({ model, messages, provider, maxToolResultCh
|
|
|
69
63
|
if (provider === "bedrock") return stripAnthropicCacheControl(projectComputerCallOutputsToText(projectCacheControlledToolOutputsToText(providerInputMessages, maxToolResultChars)));
|
|
70
64
|
return projectComputerCallOutputsToText(projectStructuredToolOutputsToText(projectSingleTextToolOutputsToText(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars), maxToolResultChars));
|
|
71
65
|
}
|
|
72
|
-
/**
|
|
73
|
-
* The registered handler that owns content-part dispatch, if any.
|
|
74
|
-
*
|
|
75
|
-
* Detected by brand rather than by `instanceof`: a host that registers
|
|
76
|
-
* `new ChatModelStreamHandler()` to opt out of sealing gets wrapped by
|
|
77
|
-
* `createRunHandlers` on every `AgentSession` run, and by
|
|
78
|
-
* `composeEventHandlers` on a key collision. Both wrappers forward to the same
|
|
79
|
-
* dispatcher while failing an identity check, so an identity test would
|
|
80
|
-
* silently revoke the opt-out documented on `StreamPreemption`.
|
|
81
|
-
*/
|
|
82
66
|
function getRegisteredDefaultChatStreamHandler(context) {
|
|
83
67
|
const handler = context?.handlerRegistry?.getHandler("on_chat_model_stream");
|
|
84
68
|
return dispatchesChatModelStream(handler) ? handler : void 0;
|
|
@@ -117,10 +101,6 @@ function getStreamHandlingChunk({ current, next, provider }) {
|
|
|
117
101
|
additional_kwargs: removeReasoningDetails(next.additional_kwargs)
|
|
118
102
|
}));
|
|
119
103
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Best-effort output-token count for a sealed turn, used only when the
|
|
122
|
-
* provider never got to send its usage chunk.
|
|
123
|
-
*/
|
|
124
104
|
function countSealedTokens(context, metadata, messages) {
|
|
125
105
|
try {
|
|
126
106
|
const counter = context?.getAgentContext(metadata).tokenCounter;
|
|
@@ -132,17 +112,6 @@ function countSealedTokens(context, metadata, messages) {
|
|
|
132
112
|
return;
|
|
133
113
|
}
|
|
134
114
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Instruction overhead the provider processed but that never appears in the
|
|
137
|
-
* message array: `createCallModel` pipes the model through
|
|
138
|
-
* `agentContext.systemRunnable` and binds tool schemas AFTER `messages` is
|
|
139
|
-
* formed, so the system prompt, dynamic instructions, summary and tool
|
|
140
|
-
* schemas are all billed yet invisible here.
|
|
141
|
-
*
|
|
142
|
-
* Read per-node via `getAgentContext(metadata)` rather than the graph-level
|
|
143
|
-
* accessor, which is hardcoded to `defaultAgentId` and would report the wrong
|
|
144
|
-
* agent's overhead in a `MultiAgentGraph`.
|
|
145
|
-
*/
|
|
146
115
|
function sealedInstructionOverhead(context, metadata) {
|
|
147
116
|
try {
|
|
148
117
|
const agentContext = context?.getAgentContext(metadata);
|
|
@@ -151,27 +120,6 @@ function sealedInstructionOverhead(context, metadata) {
|
|
|
151
120
|
return 0;
|
|
152
121
|
}
|
|
153
122
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Best-effort usage for a turn the provider never got to bill us for.
|
|
156
|
-
*
|
|
157
|
-
* The prompt matters as much as the completion: the provider processed the
|
|
158
|
-
* ENTIRE prompt — messages plus instruction overhead — before we sealed, and
|
|
159
|
-
* every resume re-sends it, so under-counting input hides the expensive half
|
|
160
|
-
* of a preempted run.
|
|
161
|
-
*
|
|
162
|
-
* ESTIMATE, NOT MEASUREMENT. Messages are counted with the host's tokenizer
|
|
163
|
-
* rather than the provider's, and `toolSchemaTokens` applies a heuristic
|
|
164
|
-
* multiplier. It is also an over-count on the fallback path, where
|
|
165
|
-
* `tryFallbackProviders` builds a bare model with no `systemRunnable` pipe so
|
|
166
|
-
* the system prompt genuinely is not sent. Accepted rather than threaded
|
|
167
|
-
* through a flag: only the fallback-plus-seal combination is affected, and an
|
|
168
|
-
* over-count is safer than the previous fabricated `input_tokens: 0`.
|
|
169
|
-
*
|
|
170
|
-
* Marked `estimated_usage` so calibration can refuse to learn from it — a
|
|
171
|
-
* ratio derived from the same counter that produced the estimate is
|
|
172
|
-
* self-consistent by construction and would drag a provider's real
|
|
173
|
-
* calibration toward 1.0.
|
|
174
|
-
*/
|
|
175
123
|
function synthesizeSealedUsage(context, chunk, prompt, metadata) {
|
|
176
124
|
if (chunk.usage_metadata != null) return;
|
|
177
125
|
const outputTokens = countSealedTokens(context, metadata, [chunk]);
|
|
@@ -200,37 +148,6 @@ function getMessageText(chunk) {
|
|
|
200
148
|
}
|
|
201
149
|
return text;
|
|
202
150
|
}
|
|
203
|
-
/**
|
|
204
|
-
* Ends the real model run for a turn that was sealed mid-stream.
|
|
205
|
-
*
|
|
206
|
-
* Mandatory, not cosmetic. `@langchain/core`'s `_streamIterator` calls
|
|
207
|
-
* `handleLLMEnd` after its try/catch with no `finally`, so breaking out of the
|
|
208
|
-
* consumer's `for await` produces a *return* completion that fires neither
|
|
209
|
-
* `handleLLMError` nor `handleLLMEnd`. The run would stay open in every
|
|
210
|
-
* callback handler: the host records no usage — and since each seal re-sends
|
|
211
|
-
* the whole prompt, N preemptions cost N unrecorded prompts — while LangSmith
|
|
212
|
-
* and Langfuse hold a span that never closes.
|
|
213
|
-
*
|
|
214
|
-
* `runId` cannot be dictated from here (the bound runnable consumes
|
|
215
|
-
* `config.runId` for its own run and hands the chat model a fresh one), but it
|
|
216
|
-
* can be OBSERVED: the capture handler installed at the `model.stream` call
|
|
217
|
-
* records it from `handleChatModelStart`, which fires before the first chunk.
|
|
218
|
-
* Rebuilding the manager against that id closes the real run, and the host's
|
|
219
|
-
* `on_chat_model_end` then arrives through the ordinary `streamEvents` path.
|
|
220
|
-
*
|
|
221
|
-
* Falls back to a custom-event dispatch if the id was never observed, so the
|
|
222
|
-
* host still records usage even when the native close is unavailable.
|
|
223
|
-
*/
|
|
224
|
-
/**
|
|
225
|
-
* Every callbacks source the real model run would compose beyond the per-call
|
|
226
|
-
* config. `model` here is whatever `createCallModel` produced — with tools
|
|
227
|
-
* that is `bindTools(...)`'s `RunnableBinding`, and a system runnable pipes a
|
|
228
|
-
* `RunnableSequence` on top — while `clientOptions.callbacks` lives on the
|
|
229
|
-
* chat model at the BOTTOM of that stack. Walks `bound` (bindings) and
|
|
230
|
-
* `last`/`steps` (sequences), collecting each wrapper's own `callbacks` and
|
|
231
|
-
* any binding-config callbacks along the way, since the binding merges its
|
|
232
|
-
* config into the call before the chat model composes.
|
|
233
|
-
*/
|
|
234
151
|
function collectModelCallbackSources(model) {
|
|
235
152
|
const sources = [];
|
|
236
153
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -244,12 +161,6 @@ function collectModelCallbackSources(model) {
|
|
|
244
161
|
}
|
|
245
162
|
return sources;
|
|
246
163
|
}
|
|
247
|
-
/**
|
|
248
|
-
* The serving model's id, read through the same wrapper stack
|
|
249
|
-
* `collectModelCallbackSources` walks — `bindTools` returns a
|
|
250
|
-
* `RunnableBinding` and a system runnable pipes a `RunnableSequence`, and
|
|
251
|
-
* neither exposes the chat model's `model` at the top level.
|
|
252
|
-
*/
|
|
253
164
|
function resolveServingModelId(model) {
|
|
254
165
|
const seen = /* @__PURE__ */ new Set();
|
|
255
166
|
let current = model;
|
|
@@ -265,17 +176,6 @@ async function endSealedModelRun(context, chunk, prompt, llmRunId, config, model
|
|
|
265
176
|
synthesizeSealedUsage(context, chunk, prompt, metadata);
|
|
266
177
|
if (llmRunId != null) try {
|
|
267
178
|
let callbackManager = await getCallbackManagerForConfig(config);
|
|
268
|
-
/**
|
|
269
|
-
* The real model run composes the per-call config's callbacks WITH the
|
|
270
|
-
* model's own (`CallbackManager.configure(config.callbacks,
|
|
271
|
-
* this.callbacks, …)` in `@langchain/core`'s base chat model), so a
|
|
272
|
-
* handler supplied via `clientOptions.callbacks` received
|
|
273
|
-
* `handleChatModelStart` for this run. Rebuilding from the config alone
|
|
274
|
-
* would close the run for every handler EXCEPT those — leaving their
|
|
275
|
-
* span open forever. Composed the same way the real run composes:
|
|
276
|
-
* model callbacks appended non-inheritable, parent run id preserved by
|
|
277
|
-
* `copy`, tracers deduped by `configure`.
|
|
278
|
-
*/
|
|
279
179
|
for (const source of collectModelCallbackSources(model)) callbackManager = CallbackManager.configure(callbackManager ?? void 0, source) ?? callbackManager;
|
|
280
180
|
if (callbackManager != null) {
|
|
281
181
|
const runManager = new CallbackManagerForLLMRun(llmRunId, callbackManager.handlers, callbackManager.inheritableHandlers, callbackManager.tags, callbackManager.inheritableTags, callbackManager.metadata, callbackManager.inheritableMetadata, callbackManager.getParentRunId());
|
|
@@ -290,10 +190,6 @@ async function endSealedModelRun(context, chunk, prompt, llmRunId, config, model
|
|
|
290
190
|
return;
|
|
291
191
|
}
|
|
292
192
|
} catch (e) {
|
|
293
|
-
/**
|
|
294
|
-
* A sealed answer that reaches the user is worth more than a tidy
|
|
295
|
-
* trace. Fall through to the custom event rather than failing the run.
|
|
296
|
-
*/
|
|
297
193
|
console.warn("[attemptInvoke] Native close of the sealed model run failed; falling back to a custom event:", e instanceof Error ? e.message : e);
|
|
298
194
|
}
|
|
299
195
|
await safeDispatchCustomEvent("on_chat_model_end", { output: chunk }, config);
|
|
@@ -306,35 +202,16 @@ function appendStreamChunk({ current, next, provider }) {
|
|
|
306
202
|
provider
|
|
307
203
|
}));
|
|
308
204
|
}
|
|
309
|
-
/**
|
|
310
|
-
* One model attempt. Stamps the attempt identity into callback metadata
|
|
311
|
-
* (see the generation-key notes in `streamLimits.ts`), leases the attempt's
|
|
312
|
-
* accounting for its LIFETIME, and releases both from `finally`: retention
|
|
313
|
-
* must follow the attempt — a cancellation-ignoring straggler keeps its
|
|
314
|
-
* original budget no matter how many runs start and reset while it drains.
|
|
315
|
-
*/
|
|
316
205
|
async function attemptInvoke(params, config) {
|
|
317
206
|
const stampedConfig = {
|
|
318
207
|
...config,
|
|
319
208
|
metadata: {
|
|
320
209
|
...config?.metadata ?? {},
|
|
321
210
|
["__invoked_provider"]: params.provider,
|
|
322
|
-
/**
|
|
323
|
-
* One `attemptInvoke` call is one model attempt; primary, fallback,
|
|
324
|
-
* and retry attempts within a node otherwise share the same langgraph
|
|
325
|
-
* metadata, so without a unique attempt stamp a fallback re-streaming
|
|
326
|
-
* a tool call from scratch would be charged the failed primary's
|
|
327
|
-
* partial bytes (or a same-named sibling fallback's) and could
|
|
328
|
-
* falsely trip the stream limits. The stamp rides the same metadata
|
|
329
|
-
* rebuild that already attributes the serving provider.
|
|
330
|
-
*/
|
|
331
211
|
[STREAM_LIMIT_ATTEMPT_KEY]: ++streamLimitAttemptSeq
|
|
332
212
|
}
|
|
333
213
|
};
|
|
334
214
|
const rawLeaseTarget = params.context ?? params.streamLimitState;
|
|
335
|
-
/** No lease when no guard can fire: the lease only protects accounting
|
|
336
|
-
* entries, and fully disabled guards must allocate no bookkeeping at
|
|
337
|
-
* all — per-attempt included. */
|
|
338
215
|
const leaseTarget = rawLeaseTarget != null && streamLimitAccountingEnabled(rawLeaseTarget) ? rawLeaseTarget : void 0;
|
|
339
216
|
const generationKey = leaseTarget != null ? resolveGenerationKey(stampedConfig.metadata) : void 0;
|
|
340
217
|
if (leaseTarget != null && generationKey != null) registerActiveStreamLimitGeneration(leaseTarget, generationKey);
|
|
@@ -345,13 +222,6 @@ async function attemptInvoke(params, config) {
|
|
|
345
222
|
}
|
|
346
223
|
}
|
|
347
224
|
async function attemptInvokeBody({ model, messages, provider, context, onChunk }, config) {
|
|
348
|
-
/**
|
|
349
|
-
* Pull the run-scoped tool output registry off the graph (when one
|
|
350
|
-
* exists) and project ToolMessages carrying ref metadata into a
|
|
351
|
-
* transient annotated copy. The original `messages` array stays
|
|
352
|
-
* untouched so the graph state never sees `[ref: …]` / `_ref`
|
|
353
|
-
* payload.
|
|
354
|
-
*/
|
|
355
225
|
const invocationMessages = projectMessagesForProvider({
|
|
356
226
|
model,
|
|
357
227
|
messages,
|
|
@@ -361,55 +231,10 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
361
231
|
const registry = context?.getOrCreateToolOutputRegistry();
|
|
362
232
|
const runId = config.configurable?.run_id;
|
|
363
233
|
const annotated = annotateMessagesForLLM(invocationMessages, registry, runId);
|
|
364
|
-
/**
|
|
365
|
-
* Keyed on the provider ACTUALLY serving this call, not the agent's primary.
|
|
366
|
-
* `createCallModel` normalizes for the primary, but `tryFallbackProviders`
|
|
367
|
-
* re-sends the same array — so an OpenAI primary that fails after a boundary
|
|
368
|
-
* injected two human turns would hand a Bedrock or Mistral fallback the
|
|
369
|
-
* consecutive user turns those APIs reject, and the recovery request would
|
|
370
|
-
* fail for a reason unrelated to the original failure.
|
|
371
|
-
*
|
|
372
|
-
* `attemptInvoke` is the single funnel for primary, fallback and
|
|
373
|
-
* summarization calls, so applying it here covers all three. Idempotent, so
|
|
374
|
-
* the primary simply re-runs a no-op over already-coalesced messages.
|
|
375
|
-
*/
|
|
376
|
-
/**
|
|
377
|
-
* Serving-provider re-keying for the predecessor handoff cue (#345). The
|
|
378
|
-
* PRIMARY's cue is baked in createCallModel's measured transform stage —
|
|
379
|
-
* appending after measurement could push a just-fits prompt over budget —
|
|
380
|
-
* so this funnel only corrects for fallbacks crossing provider families:
|
|
381
|
-
* a tolerant primary falling back to a Claude surface gains the cue here,
|
|
382
|
-
* and an Anthropic primary falling back to OpenAI/Mistral/Nova has the
|
|
383
|
-
* Claude-only synthetic turn stripped. Both helpers are identity on their
|
|
384
|
-
* no-op paths, so the primary's own pass re-runs for free.
|
|
385
|
-
*
|
|
386
|
-
* The serving model id is read through the wrapper stack (`bindTools`'
|
|
387
|
-
* binding, a system runnable's sequence) — a wrapper's top-level `.model`
|
|
388
|
-
* is undefined, and `isAnthropicLike` would otherwise default a wrapped
|
|
389
|
-
* Bedrock-Nova model to Claude. The context cast is widened deliberately:
|
|
390
|
-
* the type says every context is a full Graph, but summarization passes
|
|
391
|
-
* none and long-standing tests pass partial stubs.
|
|
392
|
-
*/
|
|
393
234
|
const isRunProduced = context?.isRunProducedMessage;
|
|
394
235
|
const cued = isAnthropicLike(provider, { model: resolveServingModelId(model) }) ? appendPredecessorHandoffCue(annotated, isRunProduced == null ? void 0 : (message) => isRunProduced.call(context, message)) : removePredecessorHandoffCue(annotated);
|
|
395
236
|
const messagesForProvider = strictAlternationProviders.has(provider) ? coalesceAdjacentUserTurns(cued) : cued;
|
|
396
|
-
/**
|
|
397
|
-
* Stamp the provider that is ACTUALLY serving this invocation onto the
|
|
398
|
-
* callback metadata. `attemptInvoke` is the single funnel for primary,
|
|
399
|
-
* fallback, and summarization model calls, so consumers that need
|
|
400
|
-
* provider attribution per call (the subagent usage-capture handler)
|
|
401
|
-
* read this key instead of trusting static agent config — which is
|
|
402
|
-
* wrong for fallback-served calls — or `ls_provider` — which derived
|
|
403
|
-
* providers inherit from their base class.
|
|
404
|
-
*/
|
|
405
237
|
if (model.stream) {
|
|
406
|
-
/**
|
|
407
|
-
* Observed, not dictated. `handleChatModelStart` fires with the chat
|
|
408
|
-
* model's real run id before the first chunk, which is the only way to
|
|
409
|
-
* name the run a seal has to close — pinning `config.runId` does not
|
|
410
|
-
* survive the bound runnable. Installed only when preemption is
|
|
411
|
-
* configured, so a run that cannot seal carries no extra handler.
|
|
412
|
-
*/
|
|
413
238
|
let sealedRunId;
|
|
414
239
|
const streamConfig = context?.preemption == null ? config : {
|
|
415
240
|
...config,
|
|
@@ -421,11 +246,6 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
421
246
|
let finalChunk;
|
|
422
247
|
let preempted = false;
|
|
423
248
|
const registeredStreamHandler = getRegisteredDefaultChatStreamHandler(context);
|
|
424
|
-
/** A sibling's trip aborts the composed signal, but an adapter that
|
|
425
|
-
* ignores cancellation keeps yielding — and text-only chunks with the
|
|
426
|
-
* event cap off never throw in enforcement, so nothing else would stop
|
|
427
|
-
* the drain. Checked on every yielded chunk in all three loops;
|
|
428
|
-
* throwing closes the iterator and tears down the provider stream. */
|
|
429
249
|
const throwIfBreakerTripped = () => {
|
|
430
250
|
const signal = config.signal;
|
|
431
251
|
if (signal?.aborted === true && signal.reason instanceof StreamLimitExceededError) throw signal.reason;
|
|
@@ -434,11 +254,6 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
434
254
|
const attemptMetadata = config.metadata;
|
|
435
255
|
for await (const chunk of stream) {
|
|
436
256
|
throwIfBreakerTripped();
|
|
437
|
-
/** An onChunk consumer replaces the stream handler entirely, so
|
|
438
|
-
* stream limits are enforced here for every such caller — public
|
|
439
|
-
* package consumers get no other accounting. The internal
|
|
440
|
-
* summarization onChunk charges producer-side itself and passes no
|
|
441
|
-
* context, precisely so this claim and its own never stack. */
|
|
442
257
|
if (context != null) enforceStreamLimitsForWireChunk({
|
|
443
258
|
graph: context,
|
|
444
259
|
metadata: attemptMetadata,
|
|
@@ -462,18 +277,7 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
462
277
|
provider
|
|
463
278
|
});
|
|
464
279
|
if (handlingChunk != null) await streamHandler.handle("on_chat_model_stream", { chunk: handlingChunk }, metadata, context);
|
|
465
|
-
else if (context != null)
|
|
466
|
-
/**
|
|
467
|
-
* A replay-skipped chunk yields no handling chunk, and in this
|
|
468
|
-
* local branch no `streamEvents` consumer judges the wire event
|
|
469
|
-
* either — yet a cumulative OpenRouter replay can still carry
|
|
470
|
-
* `tool_call_chunks` or complete `tool_calls` that are appended
|
|
471
|
-
* below. Charge the full limits (event budget and argument bytes)
|
|
472
|
-
* directly so neither cap can be bypassed. Consumer side: the
|
|
473
|
-
* local handler.handle call above claims as consumer, and one
|
|
474
|
-
* reused chunk object can alternate between these two arms.
|
|
475
|
-
*/
|
|
476
|
-
enforceStreamLimitsForWireChunk({
|
|
280
|
+
else if (context != null) enforceStreamLimitsForWireChunk({
|
|
477
281
|
graph: context,
|
|
478
282
|
metadata,
|
|
479
283
|
chunk,
|
|
@@ -484,18 +288,6 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
484
288
|
next: chunk,
|
|
485
289
|
provider
|
|
486
290
|
});
|
|
487
|
-
/**
|
|
488
|
-
* Only this loop may seal. The registered-handler branch below
|
|
489
|
-
* dispatches through `run.ts`'s decoupled `streamEvents` consumer,
|
|
490
|
-
* which can lag the accumulated chunk — sealing there would let the
|
|
491
|
-
* host index a content part the user has not been shown yet.
|
|
492
|
-
*/
|
|
493
|
-
/**
|
|
494
|
-
* Cheap poll first, shape check second, budget claim last. The claim
|
|
495
|
-
* is what makes this safe under a parallel `MultiAgentGraph`: several
|
|
496
|
-
* agents share one graph and can each see the poll as true, but only
|
|
497
|
-
* one can take the slot, and a chunk that cannot seal never spends it.
|
|
498
|
-
*/
|
|
499
291
|
if (context?.shouldPreemptStream() === true && canSealPreempt(finalChunk) && context.claimPreemptSeal()) {
|
|
500
292
|
preempted = true;
|
|
501
293
|
break;
|
|
@@ -503,23 +295,9 @@ async function attemptInvokeBody({ model, messages, provider, context, onChunk }
|
|
|
503
295
|
}
|
|
504
296
|
} else {
|
|
505
297
|
const metadata = config.metadata;
|
|
506
|
-
/**
|
|
507
|
-
* The original wire chunk still reaches the registered handler through
|
|
508
|
-
* `streamEvents` (where the late-reasoning skip discards it AFTER the
|
|
509
|
-
* event guard counts it), so this inline re-dispatch of the transformed
|
|
510
|
-
* chunk is marked to not consume a second event-budget slot. Allocated
|
|
511
|
-
* once per attempt, only when a transformation occurs.
|
|
512
|
-
*/
|
|
513
298
|
let redispatchMetadata;
|
|
514
299
|
for await (const chunk of stream) {
|
|
515
300
|
throwIfBreakerTripped();
|
|
516
|
-
/**
|
|
517
|
-
* Charged synchronously, ahead of the decoupled `streamEvents`
|
|
518
|
-
* reader that will echo this same chunk to the registered handler:
|
|
519
|
-
* a lagging reader would otherwise let an oversized complete call
|
|
520
|
-
* return to LangGraph and reach ToolNode before the queued handler
|
|
521
|
-
* throws. The chunk is marked so the echo skips accounting.
|
|
522
|
-
*/
|
|
523
301
|
if (context != null) enforceStreamLimitsForWireChunk({
|
|
524
302
|
graph: context,
|
|
525
303
|
metadata,
|
|
@@ -569,43 +347,22 @@ function attachFallbackErrorContext(error, fallbackContext) {
|
|
|
569
347
|
if (typeof error !== "object" || error === null) return;
|
|
570
348
|
fallbackErrorContexts.set(error, fallbackContext);
|
|
571
349
|
}
|
|
572
|
-
/** Reads back the fallback attribution attached by `tryFallbackProviders`. */
|
|
573
350
|
function getFallbackErrorContext(error) {
|
|
574
351
|
if (typeof error !== "object" || error === null) return;
|
|
575
352
|
return fallbackErrorContexts.get(error);
|
|
576
353
|
}
|
|
577
|
-
/** Returns every fallback overflow retained from an exhausted provider chain. */
|
|
578
354
|
function getFallbackOverflowCandidates(error) {
|
|
579
355
|
if (typeof error !== "object" || error === null) return [];
|
|
580
356
|
return [...fallbackOverflowCandidates.get(error) ?? []];
|
|
581
357
|
}
|
|
582
|
-
/**
|
|
583
|
-
* Best-effort read of the configured model name from client options.
|
|
584
|
-
* Providers disagree on the key (`model` vs `modelName`).
|
|
585
|
-
*/
|
|
586
358
|
function extractClientOptionsModel(clientOptions) {
|
|
587
359
|
const options = clientOptions;
|
|
588
360
|
if (typeof options?.model === "string" && options.model !== "") return options.model;
|
|
589
361
|
if (typeof options?.modelName === "string" && options.modelName !== "") return options.modelName;
|
|
590
362
|
}
|
|
591
|
-
/**
|
|
592
|
-
* Attempts each fallback provider in order until one succeeds.
|
|
593
|
-
*
|
|
594
|
-
* When every fallback fails, a context overflow among them is thrown in
|
|
595
|
-
* preference to whichever failure happened to come last. An overflow is the
|
|
596
|
-
* one failure the caller can act on — it compacts and retries — and losing it
|
|
597
|
-
* behind a later unrelated error would surface a dead end instead. Ordinary
|
|
598
|
-
* failures still throw last-error-wins.
|
|
599
|
-
*/
|
|
600
363
|
async function tryFallbackProviders({ fallbacks, tools, messages, config, primaryError, context, onChunk, streamLimitState, overflowContext, prepareProviderMessages }) {
|
|
601
364
|
const isOverflow = (error, contextOverride = overflowContext) => getContextOverflowInfo(error, contextOverride) != null;
|
|
602
365
|
let lastError = primaryError;
|
|
603
|
-
/**
|
|
604
|
-
* Tracked apart from the primary's overflow. A caller reaching this
|
|
605
|
-
* function with an overflowing primary has already failed to recover from
|
|
606
|
-
* it, so a fallback overflow — which may sit against a different window and
|
|
607
|
-
* output allowance — is the more useful of the two to surface.
|
|
608
|
-
*/
|
|
609
366
|
const overflowCandidates = [];
|
|
610
367
|
const primaryOverflowError = isOverflow(primaryError) ? primaryError : void 0;
|
|
611
368
|
for (const fb of fallbacks) try {
|
|
@@ -614,13 +371,6 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
614
371
|
clientOptions: fb.clientOptions,
|
|
615
372
|
tools
|
|
616
373
|
});
|
|
617
|
-
/**
|
|
618
|
-
* Stamp the fallback's configured model onto callback metadata so
|
|
619
|
-
* per-call attribution (subagent usage capture) doesn't fall back to
|
|
620
|
-
* the PRIMARY config's model when the provider reports no
|
|
621
|
-
* `ls_model_name`. The serving provider is stamped uniformly by
|
|
622
|
-
* `attemptInvoke` (`INVOKED_PROVIDER`).
|
|
623
|
-
*/
|
|
624
374
|
const fbModelName = extractClientOptionsModel(fb.clientOptions);
|
|
625
375
|
const fbConfig = fbModelName == null ? config : {
|
|
626
376
|
...config,
|
|
@@ -637,10 +387,6 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
637
387
|
maxContextTokens: fb.maxContextTokens,
|
|
638
388
|
config: fbConfig
|
|
639
389
|
}) ?? messages;
|
|
640
|
-
/** A sibling can trip the breaker while the preparation above is
|
|
641
|
-
* awaited — and the catch below only sees attempts that THROW, so a
|
|
642
|
-
* provider that ignores an aborted signal and succeeds would resolve
|
|
643
|
-
* a run that must reject. Check before every fallback invocation. */
|
|
644
390
|
if (config?.signal?.aborted === true && config.signal.reason instanceof StreamLimitExceededError) throw config.signal.reason;
|
|
645
391
|
return await attemptInvoke({
|
|
646
392
|
model: fbModel,
|
|
@@ -651,16 +397,7 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
651
397
|
streamLimitState
|
|
652
398
|
}, fbConfig);
|
|
653
399
|
} catch (e) {
|
|
654
|
-
/**
|
|
655
|
-
* A tripped stream circuit breaker is a deliberate abort, not a
|
|
656
|
-
* provider failure. Continuing would try the remaining fallbacks and a
|
|
657
|
-
* succeeding one would resolve a run that must reject.
|
|
658
|
-
*/
|
|
659
400
|
if (e instanceof StreamLimitExceededError) throw e;
|
|
660
|
-
/** A parallel sibling's trip aborts this branch's composed signal, and
|
|
661
|
-
* a provider can surface that as a generic abort error; advancing to
|
|
662
|
-
* the next fallback would start new provider work after the safety
|
|
663
|
-
* abort. Rethrow the breaker's own reason instead. */
|
|
664
401
|
if (config?.signal?.aborted === true && config.signal.reason instanceof StreamLimitExceededError) throw config.signal.reason;
|
|
665
402
|
lastError = e;
|
|
666
403
|
if (isOverflow(e, {
|
|
@@ -681,12 +418,6 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
681
418
|
}
|
|
682
419
|
continue;
|
|
683
420
|
}
|
|
684
|
-
/**
|
|
685
|
-
* Preference order: a fallback overflow, then the primary's overflow, then
|
|
686
|
-
* whichever failure came last. An overflow is the only one of the three a
|
|
687
|
-
* caller can act on, and the fallback's carries the client attribution that
|
|
688
|
-
* makes a correct retry budget possible.
|
|
689
|
-
*/
|
|
690
421
|
const preferred = overflowCandidates[0]?.error ?? primaryOverflowError ?? lastError;
|
|
691
422
|
if (overflowCandidates.length > 0 && typeof preferred === "object" && preferred !== null) fallbackOverflowCandidates.set(preferred, overflowCandidates);
|
|
692
423
|
if (preferred !== void 0) throw preferred;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.mjs","names":[],"sources":["../../../src/llm/invoke.ts"],"sourcesContent":["import { concat } from '@langchain/core/utils/stream';\nimport { AIMessageChunk } from '@langchain/core/messages';\nimport { getCallbackManagerForConfig } from '@langchain/core/runnables';\nimport {\n CallbackManager,\n CallbackManagerForLLMRun,\n type Callbacks,\n} from '@langchain/core/callbacks/manager';\nimport type { Serialized } from '@langchain/core/load/serializable';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type { ChatGeneration } from '@langchain/core/outputs';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type { ToolOutputReferenceRegistry } from '@/tools/toolOutputReferences';\nimport type { StreamLimitState } from '@/llm/streamLimits';\nimport type { ContextOverflowContext } from '@/utils/errors';\nimport type * as t from '@/types';\nimport {\n projectCacheControlledToolOutputsToText,\n projectComputerCallOutputsToText,\n projectOpenAIChatToolMessageContent,\n projectOpenAIResponsesToolMessageContent,\n projectOpenRouterToolMessageContent,\n projectSingleTextToolOutputsToText,\n projectStructuredToolOutputsToText,\n projectToolStreamContentForProvider,\n} from '@/messages/core';\nimport {\n modifyDeltaProperties,\n coalesceAdjacentUserTurns,\n strictAlternationProviders,\n appendPredecessorHandoffCue,\n removePredecessorHandoffCue,\n} from '@/messages';\nimport {\n stripAnthropicCacheControl,\n stripBedrockCacheControl,\n} from '@/messages/cache';\nimport { ChatModelStreamHandler, dispatchesChatModelStream } from '@/stream';\nimport { Constants, ContentTypes, GraphEvents, Providers } from '@/common';\nimport {\n enforceStreamLimitsForWireChunk,\n registerActiveStreamLimitGeneration,\n releaseStreamLimitGeneration,\n resolveGenerationKey,\n streamLimitAccountingEnabled,\n StreamLimitExceededError,\n STREAM_LIMIT_REDISPATCH_KEY,\n STREAM_LIMIT_ATTEMPT_KEY,\n} from '@/llm/streamLimits';\nimport { annotateMessagesForLLM } from '@/tools/toolOutputReferences';\nimport { assertNotTruncatedToolCall } from '@/llm/truncation';\nimport { manualToolStreamProviders } from '@/llm/providers';\nimport { isAnthropicLike, isOpenAILike } from '@/utils/llm';\nimport { safeDispatchCustomEvent } from '@/utils/events';\nimport { getContextOverflowInfo } from '@/utils/errors';\nimport { appendCallbacks } from '@/utils/callbacks';\nimport { canSealPreempt } from '@/llm/preempt';\nimport { initializeModel } from '@/llm/init';\n\n/**\n * Context passed to `attemptInvoke`. Matches the subset of Graph that\n * `ChatModelStreamHandler.handle` needs *plus* the explicit\n * `getOrCreateToolOutputRegistry()` accessor that `attemptInvoke`\n * itself calls to pull the run-scoped tool-output registry off the\n * graph and project each relevant ToolMessage into a transient\n * annotated copy before the provider call.\n *\n * The intersection is intentional: `Parameters<...>[3]` resolves\n * indirectly through the stream handler's signature (which returns\n * `StandardGraph` and already exposes the accessor since #117), but\n * stating it explicitly here surfaces the contract at the call site —\n * a developer reading `attemptInvoke` doesn't have to chase the\n * upstream handler's parameter list to discover that\n * `context?.getOrCreateToolOutputRegistry()` is a real thing. Single\n * optional chain only — the method itself is required on the\n * `StandardGraph` branch of the intersection, so the second `?.` is\n * unnecessary at the call site.\n *\n * `NonNullable<...>` strips `undefined` from the upstream parameter\n * type so the intersection doesn't collapse to `never` on the\n * undefined branch; callers express optionality via `context?:\n * InvokeContext` on the function signature instead.\n *\n * Callers without a registry (e.g. summarization) simply pass no\n * `context` and the transform safely no-ops.\n */\nexport type InvokeContext = NonNullable<\n Parameters<ChatModelStreamHandler['handle']>[3]\n> & {\n getOrCreateToolOutputRegistry?(): ToolOutputReferenceRegistry | undefined;\n};\n\n/**\n * Per-chunk callback for custom stream processing.\n * When provided, replaces the default `ChatModelStreamHandler`.\n *\n * `metadata` is the attempt's callback metadata (carrying the provider and\n * stream-limit attempt stamps), so consumers that count against the stream\n * limits key each model attempt separately.\n */\nexport type OnChunk = (\n chunk: AIMessageChunk,\n metadata?: Record<string, unknown>\n) => void | Promise<void>;\n\n/** Unique per-model-attempt sequence; see the stamp in `attemptInvoke`. */\nlet streamLimitAttemptSeq = 0;\n\nexport function usesNativeOpenAIResponses(\n model: t.ChatModel,\n provider: Providers,\n callOptions?: unknown\n): boolean {\n if (!isOpenAILike(provider)) {\n return false;\n }\n let candidate: unknown = model;\n let effectiveCallOptions = callOptions;\n const seen = new Set<object>();\n for (let depth = 0; depth < 20; depth++) {\n if (candidate == null || typeof candidate !== 'object') {\n return false;\n }\n if (seen.has(candidate)) {\n return false;\n }\n seen.add(candidate);\n const runnable = candidate as {\n _useResponsesApi?: (options?: unknown) => boolean;\n bound?: unknown;\n defaultOptions?: unknown;\n last?: unknown;\n constructor?: { name?: unknown };\n };\n try {\n if (\n runnable.defaultOptions != null &&\n typeof runnable.defaultOptions === 'object' &&\n !Array.isArray(runnable.defaultOptions) &&\n effectiveCallOptions != null &&\n typeof effectiveCallOptions === 'object' &&\n !Array.isArray(effectiveCallOptions)\n ) {\n effectiveCallOptions = {\n ...(runnable.defaultOptions as Record<string, unknown>),\n ...(effectiveCallOptions as Record<string, unknown>),\n };\n } else if (effectiveCallOptions == null) {\n effectiveCallOptions = runnable.defaultOptions;\n }\n if (\n runnable._useResponsesApi?.(effectiveCallOptions) === true ||\n runnable._useResponsesApi?.(undefined) === true\n ) {\n return true;\n }\n } catch {\n // Continue through RunnableSequence/RunnableBinding wrappers.\n }\n if (\n typeof runnable.constructor?.name === 'string' &&\n runnable.constructor.name.includes('Responses')\n ) {\n return true;\n }\n if (runnable.last != null && typeof runnable.last === 'object') {\n candidate = runnable.last;\n continue;\n }\n if (runnable.bound != null && typeof runnable.bound === 'object') {\n candidate = runnable.bound;\n continue;\n }\n return false;\n }\n return false;\n}\n\n/**\n * Produces the exact provider-facing message representation before a model\n * adapter serializes it. This is shared by invocation and Graph's final budget\n * guard so structured tool output cannot grow after the payload was measured.\n */\nexport function projectMessagesForProvider({\n model,\n messages,\n provider,\n maxToolResultChars,\n callOptions,\n}: {\n model: t.ChatModel;\n messages: BaseMessage[];\n provider: Providers;\n maxToolResultChars?: number;\n callOptions?: unknown;\n}): BaseMessage[] {\n const nativeOpenAIResponses = usesNativeOpenAIResponses(\n model,\n provider,\n callOptions\n );\n const providerInputMessages = projectToolStreamContentForProvider(\n messages,\n nativeOpenAIResponses ? 'native' : 'fallback',\n maxToolResultChars\n );\n if (nativeOpenAIResponses) {\n return projectOpenAIResponsesToolMessageContent(\n stripAnthropicCacheControl(\n stripBedrockCacheControl(providerInputMessages)\n ),\n maxToolResultChars\n );\n }\n if (provider === Providers.OPENROUTER) {\n return projectComputerCallOutputsToText(\n projectOpenRouterToolMessageContent(\n stripBedrockCacheControl(providerInputMessages),\n maxToolResultChars\n )\n );\n }\n if (isOpenAILike(provider)) {\n return projectComputerCallOutputsToText(\n projectOpenAIChatToolMessageContent(\n stripAnthropicCacheControl(\n stripBedrockCacheControl(providerInputMessages)\n ),\n maxToolResultChars\n )\n );\n }\n if (provider === Providers.ANTHROPIC) {\n return projectComputerCallOutputsToText(\n projectSingleTextToolOutputsToText(\n stripBedrockCacheControl(providerInputMessages),\n maxToolResultChars\n )\n );\n }\n if (provider === Providers.BEDROCK) {\n return stripAnthropicCacheControl(\n projectComputerCallOutputsToText(\n projectCacheControlledToolOutputsToText(\n providerInputMessages,\n maxToolResultChars\n )\n )\n );\n }\n return projectComputerCallOutputsToText(\n projectStructuredToolOutputsToText(\n projectSingleTextToolOutputsToText(\n stripAnthropicCacheControl(\n stripBedrockCacheControl(providerInputMessages)\n ),\n maxToolResultChars\n ),\n maxToolResultChars\n )\n );\n}\n\n/**\n * The registered handler that owns content-part dispatch, if any.\n *\n * Detected by brand rather than by `instanceof`: a host that registers\n * `new ChatModelStreamHandler()` to opt out of sealing gets wrapped by\n * `createRunHandlers` on every `AgentSession` run, and by\n * `composeEventHandlers` on a key collision. Both wrappers forward to the same\n * dispatcher while failing an identity check, so an identity test would\n * silently revoke the opt-out documented on `StreamPreemption`.\n */\nfunction getRegisteredDefaultChatStreamHandler(\n context?: InvokeContext\n): t.EventHandler | undefined {\n const handler = context?.handlerRegistry?.getHandler(\n GraphEvents.CHAT_MODEL_STREAM\n );\n return dispatchesChatModelStream(handler) ? handler : undefined;\n}\n\nfunction hasReasoningDetails(chunk: AIMessageChunk): boolean {\n const reasoningDetails = chunk.additional_kwargs.reasoning_details;\n return Array.isArray(reasoningDetails) && reasoningDetails.length > 0;\n}\n\nfunction removeOpenRouterFinalReasoningReplayContent({\n current,\n next,\n provider,\n}: {\n current?: AIMessageChunk;\n next: AIMessageChunk;\n provider: Providers;\n}): AIMessageChunk {\n const content = getOpenRouterFinalReasoningContent({\n current,\n next,\n provider,\n });\n if (content == null || content === next.content) {\n return next;\n }\n\n return new AIMessageChunk(\n Object.assign({}, next, {\n content,\n })\n );\n}\n\nfunction getOpenRouterFinalReasoningContent({\n current,\n next,\n provider,\n}: {\n current?: AIMessageChunk;\n next: AIMessageChunk;\n provider: Providers;\n}): string | undefined {\n if (\n provider !== Providers.OPENROUTER ||\n current == null ||\n !hasReasoningDetails(next) ||\n typeof current.content !== 'string' ||\n current.content === '' ||\n typeof next.content !== 'string' ||\n next.content === ''\n ) {\n return undefined;\n }\n if (!next.content.startsWith(current.content)) {\n return next.content;\n }\n return next.content.slice(current.content.length);\n}\n\nfunction removeReasoningDetails(\n additionalKwargs: AIMessageChunk['additional_kwargs']\n): AIMessageChunk['additional_kwargs'] {\n return Object.fromEntries(\n Object.entries(additionalKwargs).filter(\n ([key]) => key !== 'reasoning_details'\n )\n );\n}\n\nfunction getStreamHandlingChunk({\n current,\n next,\n provider,\n}: {\n current?: AIMessageChunk;\n next: AIMessageChunk;\n provider: Providers;\n}): AIMessageChunk | undefined {\n const content = getOpenRouterFinalReasoningContent({\n current,\n next,\n provider,\n });\n if (content == null) {\n return next;\n }\n if (content === '') {\n return undefined;\n }\n return new AIMessageChunk(\n Object.assign({}, next, {\n content,\n additional_kwargs: removeReasoningDetails(next.additional_kwargs),\n })\n );\n}\n\n/**\n * Best-effort output-token count for a sealed turn, used only when the\n * provider never got to send its usage chunk.\n */\nfunction countSealedTokens(\n context: InvokeContext | undefined,\n metadata: Record<string, unknown> | undefined,\n messages: BaseMessage[]\n): number | undefined {\n try {\n const counter = context?.getAgentContext(metadata).tokenCounter;\n if (counter == null) {\n return undefined;\n }\n let total = 0;\n for (const message of messages) {\n total += counter(message);\n }\n return total;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Instruction overhead the provider processed but that never appears in the\n * message array: `createCallModel` pipes the model through\n * `agentContext.systemRunnable` and binds tool schemas AFTER `messages` is\n * formed, so the system prompt, dynamic instructions, summary and tool\n * schemas are all billed yet invisible here.\n *\n * Read per-node via `getAgentContext(metadata)` rather than the graph-level\n * accessor, which is hardcoded to `defaultAgentId` and would report the wrong\n * agent's overhead in a `MultiAgentGraph`.\n */\nfunction sealedInstructionOverhead(\n context: InvokeContext | undefined,\n metadata: Record<string, unknown> | undefined\n): number {\n try {\n const agentContext = context?.getAgentContext(metadata);\n return (\n agentContext?.resolvedInstructionOverhead ??\n agentContext?.instructionTokens ??\n 0\n );\n } catch {\n return 0;\n }\n}\n\n/**\n * Best-effort usage for a turn the provider never got to bill us for.\n *\n * The prompt matters as much as the completion: the provider processed the\n * ENTIRE prompt — messages plus instruction overhead — before we sealed, and\n * every resume re-sends it, so under-counting input hides the expensive half\n * of a preempted run.\n *\n * ESTIMATE, NOT MEASUREMENT. Messages are counted with the host's tokenizer\n * rather than the provider's, and `toolSchemaTokens` applies a heuristic\n * multiplier. It is also an over-count on the fallback path, where\n * `tryFallbackProviders` builds a bare model with no `systemRunnable` pipe so\n * the system prompt genuinely is not sent. Accepted rather than threaded\n * through a flag: only the fallback-plus-seal combination is affected, and an\n * over-count is safer than the previous fabricated `input_tokens: 0`.\n *\n * Marked `estimated_usage` so calibration can refuse to learn from it — a\n * ratio derived from the same counter that produced the estimate is\n * self-consistent by construction and would drag a provider's real\n * calibration toward 1.0.\n */\nfunction synthesizeSealedUsage(\n context: InvokeContext | undefined,\n chunk: AIMessageChunk,\n prompt: BaseMessage[],\n metadata: Record<string, unknown> | undefined\n): void {\n if (chunk.usage_metadata != null) {\n return;\n }\n const outputTokens = countSealedTokens(context, metadata, [chunk]);\n if (outputTokens == null) {\n return;\n }\n const inputTokens =\n (countSealedTokens(context, metadata, prompt) ?? 0) +\n sealedInstructionOverhead(context, metadata);\n const usageMetadata = {\n input_tokens: inputTokens,\n output_tokens: outputTokens,\n total_tokens: inputTokens + outputTokens,\n };\n chunk.usage_metadata = usageMetadata;\n chunk.lc_kwargs.usage_metadata = usageMetadata;\n const responseMetadata = {\n ...chunk.response_metadata,\n estimated_usage: true,\n };\n chunk.response_metadata = responseMetadata;\n chunk.lc_kwargs.response_metadata = responseMetadata;\n}\n\nfunction getMessageText(chunk: AIMessageChunk): string {\n if (typeof chunk.content === 'string') {\n return chunk.content;\n }\n let text = '';\n for (const block of chunk.content) {\n if (block.type === ContentTypes.TEXT) {\n const value = block[ContentTypes.TEXT];\n if (typeof value === 'string') {\n text += value;\n }\n }\n }\n return text;\n}\n\n/**\n * Ends the real model run for a turn that was sealed mid-stream.\n *\n * Mandatory, not cosmetic. `@langchain/core`'s `_streamIterator` calls\n * `handleLLMEnd` after its try/catch with no `finally`, so breaking out of the\n * consumer's `for await` produces a *return* completion that fires neither\n * `handleLLMError` nor `handleLLMEnd`. The run would stay open in every\n * callback handler: the host records no usage — and since each seal re-sends\n * the whole prompt, N preemptions cost N unrecorded prompts — while LangSmith\n * and Langfuse hold a span that never closes.\n *\n * `runId` cannot be dictated from here (the bound runnable consumes\n * `config.runId` for its own run and hands the chat model a fresh one), but it\n * can be OBSERVED: the capture handler installed at the `model.stream` call\n * records it from `handleChatModelStart`, which fires before the first chunk.\n * Rebuilding the manager against that id closes the real run, and the host's\n * `on_chat_model_end` then arrives through the ordinary `streamEvents` path.\n *\n * Falls back to a custom-event dispatch if the id was never observed, so the\n * host still records usage even when the native close is unavailable.\n */\n/**\n * Every callbacks source the real model run would compose beyond the per-call\n * config. `model` here is whatever `createCallModel` produced — with tools\n * that is `bindTools(...)`'s `RunnableBinding`, and a system runnable pipes a\n * `RunnableSequence` on top — while `clientOptions.callbacks` lives on the\n * chat model at the BOTTOM of that stack. Walks `bound` (bindings) and\n * `last`/`steps` (sequences), collecting each wrapper's own `callbacks` and\n * any binding-config callbacks along the way, since the binding merges its\n * config into the call before the chat model composes.\n */\nfunction collectModelCallbackSources(model: unknown): Callbacks[] {\n const sources: Callbacks[] = [];\n const seen = new Set<unknown>();\n let current: unknown = model;\n while (current != null && typeof current === 'object' && !seen.has(current)) {\n seen.add(current);\n const wrapper = current as {\n callbacks?: Callbacks;\n config?: { callbacks?: Callbacks };\n bound?: unknown;\n last?: unknown;\n steps?: unknown[];\n };\n if (wrapper.callbacks != null) {\n sources.push(wrapper.callbacks);\n }\n if (wrapper.config?.callbacks != null) {\n sources.push(wrapper.config.callbacks);\n }\n current =\n wrapper.bound ??\n wrapper.last ??\n (Array.isArray(wrapper.steps)\n ? wrapper.steps[wrapper.steps.length - 1]\n : undefined);\n }\n return sources;\n}\n\n/**\n * The serving model's id, read through the same wrapper stack\n * `collectModelCallbackSources` walks — `bindTools` returns a\n * `RunnableBinding` and a system runnable pipes a `RunnableSequence`, and\n * neither exposes the chat model's `model` at the top level.\n */\nexport function resolveServingModelId(model: unknown): string | undefined {\n const seen = new Set<unknown>();\n let current: unknown = model;\n while (current != null && typeof current === 'object' && !seen.has(current)) {\n seen.add(current);\n const wrapper = current as {\n model?: unknown;\n bound?: unknown;\n last?: unknown;\n steps?: unknown[];\n };\n if (typeof wrapper.model === 'string' && wrapper.model !== '') {\n return wrapper.model;\n }\n current =\n wrapper.bound ??\n wrapper.last ??\n (Array.isArray(wrapper.steps)\n ? wrapper.steps[wrapper.steps.length - 1]\n : undefined);\n }\n return undefined;\n}\n\nasync function endSealedModelRun(\n context: InvokeContext | undefined,\n chunk: AIMessageChunk,\n prompt: BaseMessage[],\n llmRunId: string | undefined,\n config?: RunnableConfig,\n model?: t.ChatModel\n): Promise<void> {\n const metadata = config?.metadata as Record<string, unknown> | undefined;\n synthesizeSealedUsage(context, chunk, prompt, metadata);\n if (llmRunId != null) {\n try {\n let callbackManager = await getCallbackManagerForConfig(config);\n /**\n * The real model run composes the per-call config's callbacks WITH the\n * model's own (`CallbackManager.configure(config.callbacks,\n * this.callbacks, …)` in `@langchain/core`'s base chat model), so a\n * handler supplied via `clientOptions.callbacks` received\n * `handleChatModelStart` for this run. Rebuilding from the config alone\n * would close the run for every handler EXCEPT those — leaving their\n * span open forever. Composed the same way the real run composes:\n * model callbacks appended non-inheritable, parent run id preserved by\n * `copy`, tracers deduped by `configure`.\n */\n for (const source of collectModelCallbackSources(model)) {\n callbackManager =\n CallbackManager.configure(callbackManager ?? undefined, source) ??\n callbackManager;\n }\n if (callbackManager != null) {\n const runManager = new CallbackManagerForLLMRun(\n llmRunId,\n callbackManager.handlers,\n callbackManager.inheritableHandlers,\n callbackManager.tags,\n callbackManager.inheritableTags,\n callbackManager.metadata,\n callbackManager.inheritableMetadata,\n callbackManager.getParentRunId()\n );\n const generation: ChatGeneration = {\n text: getMessageText(chunk),\n message: chunk,\n };\n await runManager.handleLLMEnd({\n generations: [[generation]],\n llmOutput: {},\n });\n return;\n }\n } catch (e) {\n /**\n * A sealed answer that reaches the user is worth more than a tidy\n * trace. Fall through to the custom event rather than failing the run.\n */\n // eslint-disable-next-line no-console\n console.warn(\n '[attemptInvoke] Native close of the sealed model run failed; falling back to a custom event:',\n e instanceof Error ? e.message : e\n );\n }\n }\n await safeDispatchCustomEvent(\n GraphEvents.CHAT_MODEL_END,\n { output: chunk },\n config\n );\n}\n\nfunction appendStreamChunk({\n current,\n next,\n provider,\n}: {\n current?: AIMessageChunk;\n next: AIMessageChunk;\n provider: Providers;\n}): AIMessageChunk {\n if (current == null) {\n return next;\n }\n return concat(\n current,\n removeOpenRouterFinalReasoningReplayContent({ current, next, provider })\n );\n}\n\n/**\n * Invokes a chat model with the given messages, handling both streaming and\n * non-streaming paths.\n *\n * By default, stream chunks are processed through a `ChatModelStreamHandler`\n * that dispatches run steps (MESSAGE_CREATION, TOOL_CALLS) for the graph.\n * Pass an `onChunk` callback to override this with custom chunk processing\n * (e.g. summarization delta events).\n */\ninterface AttemptInvokeParams {\n model: t.ChatModel;\n messages: BaseMessage[];\n provider: Providers;\n context?: InvokeContext;\n onChunk?: OnChunk;\n /** Accounting owner for callers that deliberately pass no `context`\n * (summarization) — used ONLY for the attempt's accounting lease, never\n * for charge claims. */\n streamLimitState?: StreamLimitState;\n}\n\n/**\n * One model attempt. Stamps the attempt identity into callback metadata\n * (see the generation-key notes in `streamLimits.ts`), leases the attempt's\n * accounting for its LIFETIME, and releases both from `finally`: retention\n * must follow the attempt — a cancellation-ignoring straggler keeps its\n * original budget no matter how many runs start and reset while it drains.\n */\nexport async function attemptInvoke(\n params: AttemptInvokeParams,\n config?: RunnableConfig\n): Promise<Partial<t.BaseGraphState>> {\n const stampedConfig: RunnableConfig = {\n ...config,\n metadata: {\n ...(config?.metadata ?? {}),\n [Constants.INVOKED_PROVIDER]: params.provider,\n /**\n * One `attemptInvoke` call is one model attempt; primary, fallback,\n * and retry attempts within a node otherwise share the same langgraph\n * metadata, so without a unique attempt stamp a fallback re-streaming\n * a tool call from scratch would be charged the failed primary's\n * partial bytes (or a same-named sibling fallback's) and could\n * falsely trip the stream limits. The stamp rides the same metadata\n * rebuild that already attributes the serving provider.\n */\n [STREAM_LIMIT_ATTEMPT_KEY]: ++streamLimitAttemptSeq,\n },\n };\n const rawLeaseTarget = params.context ?? params.streamLimitState;\n /** No lease when no guard can fire: the lease only protects accounting\n * entries, and fully disabled guards must allocate no bookkeeping at\n * all — per-attempt included. */\n const leaseTarget =\n rawLeaseTarget != null && streamLimitAccountingEnabled(rawLeaseTarget)\n ? rawLeaseTarget\n : undefined;\n const generationKey =\n leaseTarget != null\n ? resolveGenerationKey(\n stampedConfig.metadata as Record<string, unknown>\n )\n : undefined;\n if (leaseTarget != null && generationKey != null) {\n registerActiveStreamLimitGeneration(leaseTarget, generationKey);\n }\n try {\n return await attemptInvokeBody(params, stampedConfig);\n } finally {\n if (leaseTarget != null && generationKey != null) {\n releaseStreamLimitGeneration(leaseTarget, generationKey);\n }\n }\n}\n\nasync function attemptInvokeBody(\n {\n model,\n messages,\n provider,\n context,\n onChunk,\n }: AttemptInvokeParams,\n config: RunnableConfig\n): Promise<Partial<t.BaseGraphState>> {\n /**\n * Pull the run-scoped tool output registry off the graph (when one\n * exists) and project ToolMessages carrying ref metadata into a\n * transient annotated copy. The original `messages` array stays\n * untouched so the graph state never sees `[ref: …]` / `_ref`\n * payload.\n */\n const invocationMessages = projectMessagesForProvider({\n model,\n messages,\n provider,\n callOptions: config,\n });\n const registry = context?.getOrCreateToolOutputRegistry();\n const runId = config.configurable?.run_id as string | undefined;\n const annotated = annotateMessagesForLLM(invocationMessages, registry, runId);\n /**\n * Keyed on the provider ACTUALLY serving this call, not the agent's primary.\n * `createCallModel` normalizes for the primary, but `tryFallbackProviders`\n * re-sends the same array — so an OpenAI primary that fails after a boundary\n * injected two human turns would hand a Bedrock or Mistral fallback the\n * consecutive user turns those APIs reject, and the recovery request would\n * fail for a reason unrelated to the original failure.\n *\n * `attemptInvoke` is the single funnel for primary, fallback and\n * summarization calls, so applying it here covers all three. Idempotent, so\n * the primary simply re-runs a no-op over already-coalesced messages.\n */\n /**\n * Serving-provider re-keying for the predecessor handoff cue (#345). The\n * PRIMARY's cue is baked in createCallModel's measured transform stage —\n * appending after measurement could push a just-fits prompt over budget —\n * so this funnel only corrects for fallbacks crossing provider families:\n * a tolerant primary falling back to a Claude surface gains the cue here,\n * and an Anthropic primary falling back to OpenAI/Mistral/Nova has the\n * Claude-only synthetic turn stripped. Both helpers are identity on their\n * no-op paths, so the primary's own pass re-runs for free.\n *\n * The serving model id is read through the wrapper stack (`bindTools`'\n * binding, a system runnable's sequence) — a wrapper's top-level `.model`\n * is undefined, and `isAnthropicLike` would otherwise default a wrapped\n * Bedrock-Nova model to Claude. The context cast is widened deliberately:\n * the type says every context is a full Graph, but summarization passes\n * none and long-standing tests pass partial stubs.\n */\n const isRunProduced = (\n context as\n | { isRunProducedMessage?: (message: BaseMessage) => boolean }\n | undefined\n )?.isRunProducedMessage;\n const cued = isAnthropicLike(provider, {\n model: resolveServingModelId(model),\n })\n ? appendPredecessorHandoffCue(\n annotated,\n isRunProduced == null\n ? undefined\n : (message): boolean => isRunProduced.call(context, message)\n )\n : removePredecessorHandoffCue(annotated);\n const messagesForProvider = strictAlternationProviders.has(provider)\n ? coalesceAdjacentUserTurns(cued)\n : cued;\n\n /**\n * Stamp the provider that is ACTUALLY serving this invocation onto the\n * callback metadata. `attemptInvoke` is the single funnel for primary,\n * fallback, and summarization model calls, so consumers that need\n * provider attribution per call (the subagent usage-capture handler)\n * read this key instead of trusting static agent config — which is\n * wrong for fallback-served calls — or `ls_provider` — which derived\n * providers inherit from their base class.\n */\n if (model.stream) {\n /**\n * Observed, not dictated. `handleChatModelStart` fires with the chat\n * model's real run id before the first chunk, which is the only way to\n * name the run a seal has to close — pinning `config.runId` does not\n * survive the bound runnable. Installed only when preemption is\n * configured, so a run that cannot seal carries no extra handler.\n */\n let sealedRunId: string | undefined;\n const streamConfig =\n context?.preemption == null\n ? config\n : {\n ...config,\n callbacks: appendCallbacks(config.callbacks, [\n {\n handleChatModelStart: (\n _llm: Serialized,\n _messages: BaseMessage[][],\n runId: string\n ): void => {\n sealedRunId ??= runId;\n },\n },\n ]),\n };\n const stream = await model.stream(messagesForProvider, streamConfig);\n let finalChunk: AIMessageChunk | undefined;\n let preempted = false;\n const registeredStreamHandler =\n getRegisteredDefaultChatStreamHandler(context);\n /** A sibling's trip aborts the composed signal, but an adapter that\n * ignores cancellation keeps yielding — and text-only chunks with the\n * event cap off never throw in enforcement, so nothing else would stop\n * the drain. Checked on every yielded chunk in all three loops;\n * throwing closes the iterator and tears down the provider stream. */\n const throwIfBreakerTripped = (): void => {\n const signal = config.signal;\n if (\n signal?.aborted === true &&\n signal.reason instanceof StreamLimitExceededError\n ) {\n throw signal.reason;\n }\n };\n\n if (onChunk) {\n const attemptMetadata = config.metadata as\n | Record<string, unknown>\n | undefined;\n for await (const chunk of stream) {\n throwIfBreakerTripped();\n /** An onChunk consumer replaces the stream handler entirely, so\n * stream limits are enforced here for every such caller — public\n * package consumers get no other accounting. The internal\n * summarization onChunk charges producer-side itself and passes no\n * context, precisely so this claim and its own never stack. */\n if (context != null) {\n enforceStreamLimitsForWireChunk({\n graph: context,\n metadata: attemptMetadata,\n chunk,\n });\n }\n await onChunk(chunk, attemptMetadata);\n finalChunk = appendStreamChunk({\n current: finalChunk,\n next: chunk,\n provider,\n });\n }\n } else if (registeredStreamHandler == null) {\n const metadata = config.metadata as Record<string, unknown> | undefined;\n const streamHandler = new ChatModelStreamHandler();\n for await (const chunk of stream) {\n throwIfBreakerTripped();\n const handlingChunk = getStreamHandlingChunk({\n current: finalChunk,\n next: chunk,\n provider,\n });\n if (handlingChunk != null) {\n await streamHandler.handle(\n GraphEvents.CHAT_MODEL_STREAM,\n { chunk: handlingChunk },\n metadata,\n context\n );\n } else if (context != null) {\n /**\n * A replay-skipped chunk yields no handling chunk, and in this\n * local branch no `streamEvents` consumer judges the wire event\n * either — yet a cumulative OpenRouter replay can still carry\n * `tool_call_chunks` or complete `tool_calls` that are appended\n * below. Charge the full limits (event budget and argument bytes)\n * directly so neither cap can be bypassed. Consumer side: the\n * local handler.handle call above claims as consumer, and one\n * reused chunk object can alternate between these two arms.\n */\n enforceStreamLimitsForWireChunk({\n graph: context,\n metadata,\n chunk,\n side: 'consumer',\n });\n }\n finalChunk = appendStreamChunk({\n current: finalChunk,\n next: chunk,\n provider,\n });\n /**\n * Only this loop may seal. The registered-handler branch below\n * dispatches through `run.ts`'s decoupled `streamEvents` consumer,\n * which can lag the accumulated chunk — sealing there would let the\n * host index a content part the user has not been shown yet.\n */\n /**\n * Cheap poll first, shape check second, budget claim last. The claim\n * is what makes this safe under a parallel `MultiAgentGraph`: several\n * agents share one graph and can each see the poll as true, but only\n * one can take the slot, and a chunk that cannot seal never spends it.\n */\n if (\n context?.shouldPreemptStream() === true &&\n canSealPreempt(finalChunk) &&\n context.claimPreemptSeal()\n ) {\n preempted = true;\n break;\n }\n }\n } else {\n const metadata = config.metadata as Record<string, unknown> | undefined;\n /**\n * The original wire chunk still reaches the registered handler through\n * `streamEvents` (where the late-reasoning skip discards it AFTER the\n * event guard counts it), so this inline re-dispatch of the transformed\n * chunk is marked to not consume a second event-budget slot. Allocated\n * once per attempt, only when a transformation occurs.\n */\n let redispatchMetadata: Record<string, unknown> | undefined;\n for await (const chunk of stream) {\n throwIfBreakerTripped();\n /**\n * Charged synchronously, ahead of the decoupled `streamEvents`\n * reader that will echo this same chunk to the registered handler:\n * a lagging reader would otherwise let an oversized complete call\n * return to LangGraph and reach ToolNode before the queued handler\n * throws. The chunk is marked so the echo skips accounting.\n */\n if (context != null) {\n enforceStreamLimitsForWireChunk({ graph: context, metadata, chunk });\n }\n const handlingChunk = getStreamHandlingChunk({\n current: finalChunk,\n next: chunk,\n provider,\n });\n if (handlingChunk != null && handlingChunk !== chunk) {\n redispatchMetadata ??= {\n ...(metadata ?? {}),\n [STREAM_LIMIT_REDISPATCH_KEY]: true,\n };\n await registeredStreamHandler.handle(\n GraphEvents.CHAT_MODEL_STREAM,\n { chunk: handlingChunk },\n redispatchMetadata,\n context\n );\n }\n finalChunk = appendStreamChunk({\n current: finalChunk,\n next: chunk,\n provider,\n });\n }\n }\n\n if (manualToolStreamProviders.has(provider)) {\n finalChunk = modifyDeltaProperties(provider, finalChunk);\n }\n\n if (preempted && finalChunk != null) {\n const responseMetadata = {\n ...finalChunk.response_metadata,\n preempted: true,\n };\n finalChunk.response_metadata = responseMetadata;\n finalChunk.lc_kwargs.response_metadata = responseMetadata;\n await endSealedModelRun(\n context,\n finalChunk,\n messagesForProvider,\n sealedRunId,\n config,\n model\n );\n }\n\n if ((finalChunk?.tool_calls?.length ?? 0) > 0) {\n finalChunk!.tool_calls = finalChunk!.tool_calls?.filter(\n (tool_call: ToolCall) => !!tool_call.name\n );\n }\n\n assertNotTruncatedToolCall(finalChunk, provider);\n return { messages: [finalChunk as AIMessageChunk] };\n }\n\n const finalMessage = await model.invoke(messagesForProvider, config);\n if ((finalMessage.tool_calls?.length ?? 0) > 0) {\n finalMessage.tool_calls = finalMessage.tool_calls?.filter(\n (tool_call: ToolCall) => !!tool_call.name\n );\n }\n assertNotTruncatedToolCall(finalMessage, provider);\n return { messages: [finalMessage] };\n}\n\n/**\n * Identifies which fallback produced an error, so a caller planning a\n * recovery can reason about the client that actually failed rather than the\n * primary's configuration — their context windows and output allowances\n * differ, which is the whole reason a fallback exists.\n */\nexport interface FallbackErrorContext {\n provider: Providers;\n clientOptions?: t.ClientOptions;\n maxContextTokens?: number;\n}\n\nexport interface FallbackOverflowCandidate {\n error: unknown;\n context: FallbackErrorContext;\n}\n\nconst fallbackErrorContexts = new WeakMap<object, FallbackErrorContext>();\nconst fallbackOverflowCandidates = new WeakMap<\n object,\n FallbackOverflowCandidate[]\n>();\n\nfunction attachFallbackErrorContext(\n error: unknown,\n fallbackContext: FallbackErrorContext\n): void {\n if (typeof error !== 'object' || error === null) {\n return;\n }\n fallbackErrorContexts.set(error, fallbackContext);\n}\n\n/** Reads back the fallback attribution attached by `tryFallbackProviders`. */\nexport function getFallbackErrorContext(\n error: unknown\n): FallbackErrorContext | undefined {\n if (typeof error !== 'object' || error === null) {\n return undefined;\n }\n return fallbackErrorContexts.get(error);\n}\n\n/** Returns every fallback overflow retained from an exhausted provider chain. */\nexport function getFallbackOverflowCandidates(\n error: unknown\n): FallbackOverflowCandidate[] {\n if (typeof error !== 'object' || error === null) {\n return [];\n }\n return [...(fallbackOverflowCandidates.get(error) ?? [])];\n}\n\n/**\n * Best-effort read of the configured model name from client options.\n * Providers disagree on the key (`model` vs `modelName`).\n */\nfunction extractClientOptionsModel(\n clientOptions: t.ClientOptions | undefined\n): string | undefined {\n const options = clientOptions as\n | { model?: unknown; modelName?: unknown }\n | undefined;\n if (typeof options?.model === 'string' && options.model !== '') {\n return options.model;\n }\n if (typeof options?.modelName === 'string' && options.modelName !== '') {\n return options.modelName;\n }\n return undefined;\n}\n\n/**\n * Attempts each fallback provider in order until one succeeds.\n *\n * When every fallback fails, a context overflow among them is thrown in\n * preference to whichever failure happened to come last. An overflow is the\n * one failure the caller can act on — it compacts and retries — and losing it\n * behind a later unrelated error would surface a dead end instead. Ordinary\n * failures still throw last-error-wins.\n */\nexport async function tryFallbackProviders({\n fallbacks,\n tools,\n messages,\n config,\n primaryError,\n context,\n onChunk,\n streamLimitState,\n overflowContext,\n prepareProviderMessages,\n}: {\n fallbacks: t.FallbackConfig[];\n tools?: t.GraphTools;\n messages: BaseMessage[];\n config?: RunnableConfig;\n primaryError: unknown;\n context?: InvokeContext;\n onChunk?: OnChunk;\n /** Accounting-lease owner forwarded to each fallback attempt (see\n * `AttemptInvokeParams.streamLimitState`). */\n streamLimitState?: StreamLimitState;\n /**\n * Prompt-size corroboration for signatures that are not self-describing.\n * Vertex AI's overflow is a bare `400` with no reason, so without this a\n * fallback that overflows is indistinguishable from any other 400 and would\n * be dropped in favour of whichever failure came last.\n */\n overflowContext?: ContextOverflowContext;\n /**\n * Optional final payload guard used by Graph. It receives the initialized,\n * tool-bound fallback model so Responses-vs-Chat projection is exact before\n * the fallback request is measured and sent.\n */\n prepareProviderMessages?: (input: {\n model: t.ChatModel;\n messages: BaseMessage[];\n provider: Providers;\n clientOptions?: t.ClientOptions;\n maxContextTokens?: number;\n config?: RunnableConfig;\n }) => BaseMessage[] | Promise<BaseMessage[]>;\n}): Promise<Partial<t.BaseGraphState> | undefined> {\n const isOverflow = (\n error: unknown,\n contextOverride = overflowContext\n ): boolean => getContextOverflowInfo(error, contextOverride) != null;\n let lastError: unknown = primaryError;\n /**\n * Tracked apart from the primary's overflow. A caller reaching this\n * function with an overflowing primary has already failed to recover from\n * it, so a fallback overflow — which may sit against a different window and\n * output allowance — is the more useful of the two to surface.\n */\n const overflowCandidates: FallbackOverflowCandidate[] = [];\n const primaryOverflowError: unknown = isOverflow(primaryError)\n ? primaryError\n : undefined;\n for (const fb of fallbacks) {\n try {\n const fbModel = initializeModel({\n provider: fb.provider,\n clientOptions: fb.clientOptions,\n tools,\n });\n /**\n * Stamp the fallback's configured model onto callback metadata so\n * per-call attribution (subagent usage capture) doesn't fall back to\n * the PRIMARY config's model when the provider reports no\n * `ls_model_name`. The serving provider is stamped uniformly by\n * `attemptInvoke` (`INVOKED_PROVIDER`).\n */\n const fbModelName = extractClientOptionsModel(fb.clientOptions);\n const fbConfig: RunnableConfig | undefined =\n fbModelName == null\n ? config\n : {\n ...config,\n metadata: {\n ...(config?.metadata ?? {}),\n [Constants.INVOKED_MODEL]: fbModelName,\n },\n };\n const fallbackMessages =\n (await prepareProviderMessages?.({\n model: fbModel as t.ChatModel,\n messages,\n provider: fb.provider,\n clientOptions: fb.clientOptions,\n maxContextTokens: fb.maxContextTokens,\n config: fbConfig,\n })) ?? messages;\n /** A sibling can trip the breaker while the preparation above is\n * awaited — and the catch below only sees attempts that THROW, so a\n * provider that ignores an aborted signal and succeeds would resolve\n * a run that must reject. Check before every fallback invocation. */\n if (\n config?.signal?.aborted === true &&\n config.signal.reason instanceof StreamLimitExceededError\n ) {\n throw config.signal.reason;\n }\n const result = await attemptInvoke(\n {\n model: fbModel as t.ChatModel,\n messages: fallbackMessages,\n provider: fb.provider,\n context,\n onChunk,\n streamLimitState,\n },\n fbConfig\n );\n return result;\n } catch (e) {\n /**\n * A tripped stream circuit breaker is a deliberate abort, not a\n * provider failure. Continuing would try the remaining fallbacks and a\n * succeeding one would resolve a run that must reject.\n */\n if (e instanceof StreamLimitExceededError) {\n throw e;\n }\n /** A parallel sibling's trip aborts this branch's composed signal, and\n * a provider can surface that as a generic abort error; advancing to\n * the next fallback would start new provider work after the safety\n * abort. Rethrow the breaker's own reason instead. */\n if (\n config?.signal?.aborted === true &&\n config.signal.reason instanceof StreamLimitExceededError\n ) {\n throw config.signal.reason;\n }\n lastError = e;\n const fallbackOverflowContext: ContextOverflowContext = {\n provider: fb.provider,\n maxContextTokens: fb.maxContextTokens,\n ...(overflowContext?.provider === fb.provider\n ? {\n estimatedPromptTokens: overflowContext.estimatedPromptTokens,\n }\n : {}),\n };\n if (isOverflow(e, fallbackOverflowContext)) {\n const errorContext: FallbackErrorContext = {\n provider: fb.provider,\n clientOptions: fb.clientOptions,\n maxContextTokens: fb.maxContextTokens,\n };\n attachFallbackErrorContext(e, errorContext);\n overflowCandidates.push({ error: e, context: errorContext });\n }\n continue;\n }\n }\n /**\n * Preference order: a fallback overflow, then the primary's overflow, then\n * whichever failure came last. An overflow is the only one of the three a\n * caller can act on, and the fallback's carries the client attribution that\n * makes a correct retry budget possible.\n */\n const preferred =\n overflowCandidates[0]?.error ?? primaryOverflowError ?? lastError;\n if (\n overflowCandidates.length > 0 &&\n typeof preferred === 'object' &&\n preferred !== null\n ) {\n fallbackOverflowCandidates.set(preferred, overflowCandidates);\n }\n if (preferred !== undefined) {\n throw preferred;\n }\n return undefined;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"invoke.mjs","names":[],"sources":["../../../src/llm/invoke.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/llm/mistral/index.ts"],"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/llm/mistral/index.ts"],"mappings":";;;;AAQA,IAAa,sBAAb,cAAyC,cAAc;CACrD;CAEA,OAAO,UAAgC;EACrC,OAAO;CACT;CAEA,YAAY,QAAiC;EAC3C,MAAM,MAAM;EACZ,KAAK,mBAAmB,mBAAmB,QAAQ,gBAAgB;CACrE;CAEA,OAAO,sBACL,UACA,SACA,YACqC;EACrC,OAAO,uBAAuB;GAC5B,QAAQ,MAAM,sBAAsB,UAAU,SAAS,KAAA,CAAS;GAChE,SAAS,KAAK;GACd,QAAQ,QAAQ;GAChB;EACF,CAAC;CACH;AACF"}
|