@illuma-ai/agents 1.4.0-alpha.6 → 1.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/README.md +62 -0
- package/dist/cjs/agents/AgentContext.cjs +274 -67
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +44 -13
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +182 -5
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +162 -0
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
- package/dist/cjs/hooks/executeHooks.cjs +276 -0
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
- package/dist/cjs/hooks/matchers.cjs +256 -0
- package/dist/cjs/hooks/matchers.cjs.map +1 -0
- package/dist/cjs/hooks/types.cjs +27 -0
- package/dist/cjs/hooks/types.cjs.map +1 -0
- package/dist/cjs/langchain/google-common.cjs +3 -0
- package/dist/cjs/langchain/google-common.cjs.map +1 -0
- package/dist/cjs/langchain/index.cjs +86 -0
- package/dist/cjs/langchain/index.cjs.map +1 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
- package/dist/cjs/langchain/messages/tool.cjs +3 -0
- package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
- package/dist/cjs/langchain/messages.cjs +51 -0
- package/dist/cjs/langchain/messages.cjs.map +1 -0
- package/dist/cjs/langchain/openai.cjs +3 -0
- package/dist/cjs/langchain/openai.cjs.map +1 -0
- package/dist/cjs/langchain/prompts.cjs +11 -0
- package/dist/cjs/langchain/prompts.cjs.map +1 -0
- package/dist/cjs/langchain/runnables.cjs +19 -0
- package/dist/cjs/langchain/runnables.cjs.map +1 -0
- package/dist/cjs/langchain/tools.cjs +23 -0
- package/dist/cjs/langchain/tools.cjs.map +1 -0
- package/dist/cjs/langchain/utils/env.cjs +11 -0
- package/dist/cjs/langchain/utils/env.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
- package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
- package/dist/cjs/llm/bedrock/index.cjs +61 -33
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +0 -3
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +27 -10
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +178 -127
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +89 -0
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +156 -0
- package/dist/cjs/messages/contextPruning.cjs.map +1 -0
- package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +144 -20
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +505 -4
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/run.cjs +141 -1
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +235 -0
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
- package/dist/cjs/tools/CodeExecutor.cjs +44 -47
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +44 -0
- package/dist/cjs/tools/ReadFile.cjs.map +1 -0
- package/dist/cjs/tools/SkillTool.cjs +51 -0
- package/dist/cjs/tools/SkillTool.cjs.map +1 -0
- package/dist/cjs/tools/SubagentTool.cjs +93 -0
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +450 -24
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +11 -3
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
- package/dist/cjs/tools/search/tavily-search.cjs +372 -0
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
- package/dist/cjs/tools/search/tool.cjs +28 -4
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +10 -3
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +84 -0
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
- package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
- package/dist/cjs/types/agent-cache.cjs +53 -0
- package/dist/cjs/types/agent-cache.cjs.map +1 -0
- package/dist/cjs/types/graph.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +135 -0
- package/dist/cjs/utils/truncation.cjs.map +1 -0
- package/dist/esm/agents/AgentContext.mjs +274 -67
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +44 -12
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +182 -5
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +160 -0
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
- package/dist/esm/hooks/executeHooks.mjs +273 -0
- package/dist/esm/hooks/executeHooks.mjs.map +1 -0
- package/dist/esm/hooks/matchers.mjs +251 -0
- package/dist/esm/hooks/matchers.mjs.map +1 -0
- package/dist/esm/hooks/types.mjs +25 -0
- package/dist/esm/hooks/types.mjs.map +1 -0
- package/dist/esm/langchain/google-common.mjs +2 -0
- package/dist/esm/langchain/google-common.mjs.map +1 -0
- package/dist/esm/langchain/index.mjs +5 -0
- package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
- package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
- package/dist/esm/langchain/messages/tool.mjs +2 -0
- package/dist/esm/langchain/messages/tool.mjs.map +1 -0
- package/dist/esm/langchain/messages.mjs +2 -0
- package/dist/esm/langchain/messages.mjs.map +1 -0
- package/dist/esm/langchain/openai.mjs +2 -0
- package/dist/esm/langchain/openai.mjs.map +1 -0
- package/dist/esm/langchain/prompts.mjs +2 -0
- package/dist/esm/langchain/prompts.mjs.map +1 -0
- package/dist/esm/langchain/runnables.mjs +2 -0
- package/dist/esm/langchain/runnables.mjs.map +1 -0
- package/dist/esm/langchain/tools.mjs +2 -0
- package/dist/esm/langchain/tools.mjs.map +1 -0
- package/dist/esm/langchain/utils/env.mjs +2 -0
- package/dist/esm/langchain/utils/env.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
- package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
- package/dist/esm/llm/bedrock/index.mjs +61 -34
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +0 -3
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +27 -10
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/main.mjs +21 -27
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +89 -0
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +154 -0
- package/dist/esm/messages/contextPruning.mjs.map +1 -0
- package/dist/esm/messages/contextPruningSettings.mjs +50 -0
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +136 -12
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +504 -7
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/run.mjs +141 -1
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +227 -0
- package/dist/esm/tools/BashExecutor.mjs.map +1 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
- package/dist/esm/tools/CodeExecutor.mjs +44 -48
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +39 -0
- package/dist/esm/tools/ReadFile.mjs.map +1 -0
- package/dist/esm/tools/SkillTool.mjs +46 -0
- package/dist/esm/tools/SkillTool.mjs.map +1 -0
- package/dist/esm/tools/SubagentTool.mjs +86 -0
- package/dist/esm/tools/SubagentTool.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +452 -26
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +11 -3
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
- package/dist/esm/tools/search/tavily-search.mjs +370 -0
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
- package/dist/esm/tools/search/tool.mjs +28 -4
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +10 -3
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +82 -0
- package/dist/esm/tools/skillCatalog.mjs.map +1 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
- package/dist/esm/tools/toolOutputReferences.mjs +662 -0
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
- package/dist/esm/types/agent-cache.mjs +51 -0
- package/dist/esm/types/agent-cache.mjs.map +1 -0
- package/dist/esm/types/graph.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +128 -0
- package/dist/esm/utils/truncation.mjs.map +1 -0
- package/dist/types/agents/AgentContext.d.ts +101 -8
- package/dist/types/common/enum.d.ts +39 -12
- package/dist/types/common/index.d.ts +0 -1
- package/dist/types/graphs/Graph.d.ts +43 -0
- package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
- package/dist/types/graphs/index.d.ts +0 -1
- package/dist/types/hooks/HookRegistry.d.ts +56 -0
- package/dist/types/hooks/executeHooks.d.ts +79 -0
- package/dist/types/hooks/index.d.ts +6 -0
- package/dist/types/hooks/matchers.d.ts +95 -0
- package/dist/types/hooks/types.d.ts +320 -0
- package/dist/types/index.d.ts +9 -9
- package/dist/types/langchain/google-common.d.ts +1 -0
- package/dist/types/langchain/index.d.ts +8 -0
- package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
- package/dist/types/langchain/messages/tool.d.ts +1 -0
- package/dist/types/langchain/messages.d.ts +2 -0
- package/dist/types/langchain/openai.d.ts +1 -0
- package/dist/types/langchain/prompts.d.ts +1 -0
- package/dist/types/langchain/runnables.d.ts +2 -0
- package/dist/types/langchain/tools.d.ts +2 -0
- package/dist/types/langchain/utils/env.d.ts +1 -0
- package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
- package/dist/types/llm/bedrock/index.d.ts +54 -1
- package/dist/types/messages/contextPruning.d.ts +42 -0
- package/dist/types/messages/contextPruningSettings.d.ts +44 -0
- package/dist/types/messages/format.d.ts +9 -1
- package/dist/types/messages/index.d.ts +2 -0
- package/dist/types/messages/prune.d.ts +91 -1
- package/dist/types/run.d.ts +2 -0
- package/dist/types/tools/BashExecutor.d.ts +76 -0
- package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
- package/dist/types/tools/CodeExecutor.d.ts +8 -26
- package/dist/types/tools/ReadFile.d.ts +28 -0
- package/dist/types/tools/SkillTool.d.ts +40 -0
- package/dist/types/tools/SubagentTool.d.ts +36 -0
- package/dist/types/tools/ToolNode.d.ts +77 -5
- package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
- package/dist/types/tools/search/tavily-search.d.ts +4 -0
- package/dist/types/tools/search/types.d.ts +99 -5
- package/dist/types/tools/search/utils.d.ts +2 -2
- package/dist/types/tools/skillCatalog.d.ts +19 -0
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
- package/dist/types/tools/subagent/index.d.ts +2 -0
- package/dist/types/tools/subagent/types.d.ts +84 -0
- package/dist/types/tools/toolOutputReferences.d.ts +236 -0
- package/dist/types/types/agent-cache.d.ts +70 -0
- package/dist/types/types/graph.d.ts +162 -22
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/messages.d.ts +26 -0
- package/dist/types/types/run.d.ts +22 -0
- package/dist/types/types/skill.d.ts +9 -0
- package/dist/types/types/tools.d.ts +111 -0
- package/dist/types/utils/index.d.ts +1 -3
- package/dist/types/utils/truncation.d.ts +70 -0
- package/package.json +57 -17
- package/src/agents/AgentContext.js.map +1 -0
- package/src/agents/AgentContext.test.js.map +1 -0
- package/src/agents/AgentContext.ts +321 -78
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
- package/src/agents/__tests__/AgentContext.test.js.map +1 -0
- package/src/agents/__tests__/AgentContext.test.ts +632 -0
- package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
- package/src/common/__tests__/enum.test.ts +7 -17
- package/src/common/enum.js.map +1 -0
- package/src/common/enum.ts +43 -12
- package/src/common/index.js.map +1 -0
- package/src/common/index.ts +0 -1
- package/src/events.js.map +1 -0
- package/src/graphs/Graph.js.map +1 -0
- package/src/graphs/Graph.ts +222 -2
- package/src/graphs/MultiAgentGraph.js.map +1 -0
- package/src/graphs/MultiAgentGraph.ts +154 -1466
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
- package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
- package/src/graphs/__tests__/structured-output.test.js.map +1 -0
- package/src/graphs/contextManagement.e2e.test.js.map +1 -0
- package/src/graphs/contextManagement.test.js.map +1 -0
- package/src/graphs/handoffValidation.test.js.map +1 -0
- package/src/graphs/index.js.map +1 -0
- package/src/graphs/index.ts +0 -1
- package/src/hooks/HookRegistry.ts +208 -0
- package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
- package/src/hooks/__tests__/compactHooks.test.ts +214 -0
- package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
- package/src/hooks/__tests__/integration.test.ts +337 -0
- package/src/hooks/__tests__/matchers.test.ts +238 -0
- package/src/hooks/__tests__/toolHooks.test.ts +665 -0
- package/src/hooks/executeHooks.ts +375 -0
- package/src/hooks/index.ts +57 -0
- package/src/hooks/matchers.ts +280 -0
- package/src/hooks/types.ts +404 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +15 -24
- package/src/instrumentation.js.map +1 -0
- package/src/langchain/google-common.ts +1 -0
- package/src/langchain/index.ts +8 -0
- package/src/langchain/language_models/chat_models.ts +1 -0
- package/src/langchain/messages/tool.ts +5 -0
- package/src/langchain/messages.ts +21 -0
- package/src/langchain/openai.ts +1 -0
- package/src/langchain/prompts.ts +1 -0
- package/src/langchain/runnables.ts +7 -0
- package/src/langchain/tools.ts +8 -0
- package/src/langchain/utils/env.ts +1 -0
- package/src/llm/anthropic/index.js.map +1 -0
- package/src/llm/anthropic/types.js.map +1 -0
- package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
- package/src/llm/anthropic/utils/message_inputs.ts +10 -1
- package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
- package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
- package/src/llm/anthropic/utils/tools.js.map +1 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
- package/src/llm/bedrock/cacheSupport.test.ts +99 -0
- package/src/llm/bedrock/cacheSupport.ts +53 -0
- package/src/llm/bedrock/index.js.map +1 -0
- package/src/llm/bedrock/index.ts +116 -41
- package/src/llm/bedrock/types.js.map +1 -0
- package/src/llm/bedrock/utils/index.js.map +1 -0
- package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
- package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
- package/src/llm/fake.js.map +1 -0
- package/src/llm/google/index.js.map +1 -0
- package/src/llm/google/types.js.map +1 -0
- package/src/llm/google/utils/common.js.map +1 -0
- package/src/llm/google/utils/tools.js.map +1 -0
- package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
- package/src/llm/openai/index.js.map +1 -0
- package/src/llm/openai/types.js.map +1 -0
- package/src/llm/openai/utils/index.js.map +1 -0
- package/src/llm/openai/utils/index.ts +31 -14
- package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
- package/src/llm/openrouter/index.js.map +1 -0
- package/src/llm/openrouter/reasoning.test.js.map +1 -0
- package/src/llm/providers.js.map +1 -0
- package/src/llm/text.js.map +1 -0
- package/src/llm/vertexai/index.js.map +1 -0
- package/src/messages/__tests__/contextPruning.test.ts +228 -0
- package/src/messages/__tests__/tools.test.js.map +1 -0
- package/src/messages/cache.js.map +1 -0
- package/src/messages/cache.test.js.map +1 -0
- package/src/messages/cache.test.ts +62 -24
- package/src/messages/cache.ts +112 -0
- package/src/messages/content.js.map +1 -0
- package/src/messages/content.test.js.map +1 -0
- package/src/messages/contextPruning.ts +191 -0
- package/src/messages/contextPruningSettings.ts +90 -0
- package/src/messages/core.js.map +1 -0
- package/src/messages/ensureThinkingBlock.test.js.map +1 -0
- package/src/messages/format.js.map +1 -0
- package/src/messages/format.ts +164 -12
- package/src/messages/formatAgentMessages.skills.test.ts +413 -0
- package/src/messages/formatAgentMessages.test.js.map +1 -0
- package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
- package/src/messages/formatMessage.test.js.map +1 -0
- package/src/messages/ids.js.map +1 -0
- package/src/messages/index.js.map +1 -0
- package/src/messages/index.ts +2 -0
- package/src/messages/labelContentByAgent.test.js.map +1 -0
- package/src/messages/prune.js.map +1 -0
- package/src/messages/prune.ts +661 -4
- package/src/messages/reducer.js.map +1 -0
- package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
- package/src/messages/summarize.js.map +1 -0
- package/src/messages/summarize.test.js.map +1 -0
- package/src/messages/tools.js.map +1 -0
- package/src/mockStream.js.map +1 -0
- package/src/prompts/collab.js.map +1 -0
- package/src/prompts/index.js.map +1 -0
- package/src/prompts/taskmanager.js.map +1 -0
- package/src/run.js.map +1 -0
- package/src/run.ts +155 -1
- package/src/schemas/index.js.map +1 -0
- package/src/schemas/schema-preparation.test.js.map +1 -0
- package/src/schemas/validate.js.map +1 -0
- package/src/schemas/validate.test.js.map +1 -0
- package/src/scripts/abort.js.map +1 -0
- package/src/scripts/ant_web_search.js.map +1 -0
- package/src/scripts/ant_web_search_edge_case.js.map +1 -0
- package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
- package/src/scripts/args.js.map +1 -0
- package/src/scripts/bedrock-cache-debug.js.map +1 -0
- package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
- package/src/scripts/bedrock-merge-test.js.map +1 -0
- package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
- package/src/scripts/caching.js.map +1 -0
- package/src/scripts/cli.js.map +1 -0
- package/src/scripts/cli2.js.map +1 -0
- package/src/scripts/cli3.js.map +1 -0
- package/src/scripts/cli4.js.map +1 -0
- package/src/scripts/cli5.js.map +1 -0
- package/src/scripts/code_exec.js.map +1 -0
- package/src/scripts/code_exec_files.js.map +1 -0
- package/src/scripts/code_exec_multi_session.js.map +1 -0
- package/src/scripts/code_exec_ptc.js.map +1 -0
- package/src/scripts/code_exec_session.js.map +1 -0
- package/src/scripts/code_exec_simple.js.map +1 -0
- package/src/scripts/content.js.map +1 -0
- package/src/scripts/empty_input.js.map +1 -0
- package/src/scripts/handoff-test.js.map +1 -0
- package/src/scripts/image.js.map +1 -0
- package/src/scripts/memory.js.map +1 -0
- package/src/scripts/multi-agent-chain.js.map +1 -0
- package/src/scripts/multi-agent-chain.ts +2 -2
- package/src/scripts/multi-agent-conditional.js.map +1 -0
- package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
- package/src/scripts/multi-agent-document-review-chain.ts +2 -2
- package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
- package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
- package/src/scripts/multi-agent-parallel-start.js.map +1 -0
- package/src/scripts/multi-agent-parallel.js.map +1 -0
- package/src/scripts/multi-agent-parallel.ts +3 -3
- package/src/scripts/multi-agent-sequence.js.map +1 -0
- package/src/scripts/multi-agent-sequence.ts +3 -3
- package/src/scripts/multi-agent-subagent.ts +246 -0
- package/src/scripts/multi-agent-supervisor.js.map +1 -0
- package/src/scripts/multi-agent-supervisor.ts +5 -5
- package/src/scripts/multi-agent-test.js.map +1 -0
- package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
- package/src/scripts/parallel-full-metadata-test.js.map +1 -0
- package/src/scripts/parallel-tools-test.js.map +1 -0
- package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
- package/src/scripts/programmatic_exec.js.map +1 -0
- package/src/scripts/programmatic_exec_agent.js.map +1 -0
- package/src/scripts/search.js.map +1 -0
- package/src/scripts/sequential-full-metadata-test.js.map +1 -0
- package/src/scripts/sequential-full-metadata-test.ts +2 -2
- package/src/scripts/simple.js.map +1 -0
- package/src/scripts/single-agent-metadata-test.js.map +1 -0
- package/src/scripts/stream.js.map +1 -0
- package/src/scripts/subagent-event-driven-debug.ts +190 -0
- package/src/scripts/subagent-tools-debug.ts +160 -0
- package/src/scripts/test-custom-prompt-key.js.map +1 -0
- package/src/scripts/test-custom-prompt-key.ts +3 -3
- package/src/scripts/test-handoff-input.js.map +1 -0
- package/src/scripts/test-handoff-input.ts +1 -1
- package/src/scripts/test-handoff-preamble.js.map +1 -0
- package/src/scripts/test-handoff-steering.js.map +1 -0
- package/src/scripts/test-handoff-steering.ts +3 -3
- package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
- package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
- package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
- package/src/scripts/test-parallel-agent-labeling.ts +3 -3
- package/src/scripts/test-parallel-handoffs.js.map +1 -0
- package/src/scripts/test-parallel-handoffs.ts +2 -2
- package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
- package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-thinking-handoff.js.map +1 -0
- package/src/scripts/test-thinking-handoff.ts +1 -1
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
- package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
- package/src/scripts/test-tools-before-handoff.js.map +1 -0
- package/src/scripts/test-tools-before-handoff.ts +1 -1
- package/src/scripts/test_code_api.js.map +1 -0
- package/src/scripts/thinking-bedrock.js.map +1 -0
- package/src/scripts/thinking-vertexai.js.map +1 -0
- package/src/scripts/thinking.js.map +1 -0
- package/src/scripts/tool_search.js.map +1 -0
- package/src/scripts/tools.js.map +1 -0
- package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
- package/src/specs/agent-handoffs.test.js.map +1 -0
- package/src/specs/agent-handoffs.test.ts +26 -483
- package/src/specs/anthropic.simple.test.js.map +1 -0
- package/src/specs/anthropic.simple.test.ts +61 -0
- package/src/specs/azure.simple.test.js.map +1 -0
- package/src/specs/cache.simple.test.js.map +1 -0
- package/src/specs/custom-event-await.test.js.map +1 -0
- package/src/specs/deepseek.simple.test.js.map +1 -0
- package/src/specs/emergency-prune.test.js.map +1 -0
- package/src/specs/moonshot.simple.test.js.map +1 -0
- package/src/specs/multi-agent-summarization.test.ts +396 -0
- package/src/specs/observability.integration.test.js.map +1 -0
- package/src/specs/openai.simple.test.js.map +1 -0
- package/src/specs/openrouter.simple.test.js.map +1 -0
- package/src/specs/prune.orphans.test.ts +248 -0
- package/src/specs/prune.test.js.map +1 -0
- package/src/specs/prune.test.ts +104 -16
- package/src/specs/reasoning.test.js.map +1 -0
- package/src/specs/spec.utils.js.map +1 -0
- package/src/specs/thinking-handoff.test.js.map +1 -0
- package/src/specs/thinking-handoff.test.ts +19 -19
- package/src/specs/thinking-prune.test.js.map +1 -0
- package/src/specs/token-distribution-edge-case.test.js.map +1 -0
- package/src/specs/token-memoization.test.js.map +1 -0
- package/src/specs/tokens.test.js.map +1 -0
- package/src/specs/tool-error.test.js.map +1 -0
- package/src/splitStream.js.map +1 -0
- package/src/splitStream.test.js.map +1 -0
- package/src/stream.js.map +1 -0
- package/src/stream.test.js.map +1 -0
- package/src/test/mockTools.js.map +1 -0
- package/src/tools/BashExecutor.ts +281 -0
- package/src/tools/BashProgrammaticToolCalling.ts +397 -0
- package/src/tools/BrowserTools.js.map +1 -0
- package/src/tools/Calculator.js.map +1 -0
- package/src/tools/Calculator.test.js.map +1 -0
- package/src/tools/CodeExecutor.js.map +1 -0
- package/src/tools/CodeExecutor.ts +62 -54
- package/src/tools/ProgrammaticToolCalling.js.map +1 -0
- package/src/tools/ProgrammaticToolCalling.ts +29 -14
- package/src/tools/ReadFile.ts +39 -0
- package/src/tools/SkillTool.ts +46 -0
- package/src/tools/StreamingToolCallBuffer.js.map +1 -0
- package/src/tools/SubagentTool.ts +100 -0
- package/src/tools/ToolNode.js.map +1 -0
- package/src/tools/ToolNode.ts +548 -26
- package/src/tools/ToolSearch.js.map +1 -0
- package/src/tools/__tests__/BashExecutor.test.ts +49 -0
- package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
- package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
- package/src/tools/__tests__/ReadFile.test.ts +44 -0
- package/src/tools/__tests__/SkillTool.test.ts +442 -0
- package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
- package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
- package/src/tools/__tests__/SubagentTool.test.ts +149 -0
- package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
- package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
- package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
- package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
- package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
- package/src/tools/__tests__/handlers.test.js.map +1 -0
- package/src/tools/__tests__/skillCatalog.test.ts +161 -0
- package/src/tools/__tests__/subagentHooks.test.ts +210 -0
- package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
- package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
- package/src/tools/handlers.js.map +1 -0
- package/src/tools/schema.js.map +1 -0
- package/src/tools/search/anthropic.js.map +1 -0
- package/src/tools/search/content.js.map +1 -0
- package/src/tools/search/content.test.js.map +1 -0
- package/src/tools/search/firecrawl.js.map +1 -0
- package/src/tools/search/format.js.map +1 -0
- package/src/tools/search/highlights.js.map +1 -0
- package/src/tools/search/index.js.map +1 -0
- package/src/tools/search/jina-reranker.test.js.map +1 -0
- package/src/tools/search/rerankers.js.map +1 -0
- package/src/tools/search/schema.js.map +1 -0
- package/src/tools/search/search.js.map +1 -0
- package/src/tools/search/search.ts +12 -2
- package/src/tools/search/serper-scraper.js.map +1 -0
- package/src/tools/search/tavily-scraper.ts +235 -0
- package/src/tools/search/tavily-search.ts +424 -0
- package/src/tools/search/tavily.test.ts +965 -0
- package/src/tools/search/test.js.map +1 -0
- package/src/tools/search/tool.js.map +1 -0
- package/src/tools/search/tool.ts +36 -2
- package/src/tools/search/types.js.map +1 -0
- package/src/tools/search/types.ts +133 -8
- package/src/tools/search/utils.js.map +1 -0
- package/src/tools/search/utils.ts +13 -5
- package/src/tools/skillCatalog.ts +126 -0
- package/src/tools/subagent/SubagentExecutor.ts +676 -0
- package/src/tools/subagent/index.ts +13 -0
- package/src/tools/subagent/types.test.ts +70 -0
- package/src/tools/subagent/types.ts +115 -0
- package/src/tools/toolOutputReferences.ts +825 -0
- package/src/types/agent-cache.ts +73 -0
- package/src/types/graph.js.map +1 -0
- package/src/types/graph.test.js.map +1 -0
- package/src/types/graph.ts +171 -20
- package/src/types/index.js.map +1 -0
- package/src/types/index.ts +3 -0
- package/src/types/llm.js.map +1 -0
- package/src/types/messages.js.map +1 -0
- package/src/types/messages.ts +27 -0
- package/src/types/run.js.map +1 -0
- package/src/types/run.ts +22 -0
- package/src/types/skill.ts +11 -0
- package/src/types/stream.js.map +1 -0
- package/src/types/tools.js.map +1 -0
- package/src/types/tools.ts +118 -0
- package/src/utils/__tests__/truncation.test.ts +66 -0
- package/src/utils/contextAnalytics.js.map +1 -0
- package/src/utils/contextAnalytics.test.js.map +1 -0
- package/src/utils/events.js.map +1 -0
- package/src/utils/graph.js.map +1 -0
- package/src/utils/handlers.js.map +1 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/index.ts +1 -3
- package/src/utils/llm.js.map +1 -0
- package/src/utils/llmConfig.js.map +1 -0
- package/src/utils/logging.js.map +1 -0
- package/src/utils/misc.js.map +1 -0
- package/src/utils/run.js.map +1 -0
- package/src/utils/schema.js.map +1 -0
- package/src/utils/title.js.map +1 -0
- package/src/utils/tokens.js.map +1 -0
- package/src/utils/toonFormat.js.map +1 -0
- package/src/utils/truncation.ts +154 -0
- package/dist/cjs/common/spawnPath.cjs +0 -104
- package/dist/cjs/common/spawnPath.cjs.map +0 -1
- package/dist/cjs/content/ArtifactStore.cjs +0 -579
- package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
- package/dist/cjs/content/ContentStore.cjs +0 -638
- package/dist/cjs/content/ContentStore.cjs.map +0 -1
- package/dist/cjs/content/contentAnalyzer.cjs +0 -91
- package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
- package/dist/cjs/content/index.cjs +0 -20
- package/dist/cjs/content/index.cjs.map +0 -1
- package/dist/cjs/content/mcpAutoCache.cjs +0 -115
- package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
- package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
- package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/a2a/client.cjs +0 -92
- package/dist/cjs/providers/a2a/client.cjs.map +0 -1
- package/dist/cjs/providers/a2a/config.cjs +0 -38
- package/dist/cjs/providers/a2a/config.cjs.map +0 -1
- package/dist/cjs/providers/capabilityNaming.cjs +0 -43
- package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/mcp/config.cjs +0 -42
- package/dist/cjs/providers/mcp/config.cjs.map +0 -1
- package/dist/cjs/providers/mcp/transport.cjs +0 -65
- package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/types.cjs +0 -51
- package/dist/cjs/providers/types.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/schema.cjs +0 -86
- package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/tool.cjs +0 -219
- package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
- package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
- package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
- package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
- package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
- package/dist/cjs/tools/proxyTool.cjs +0 -102
- package/dist/cjs/tools/proxyTool.cjs.map +0 -1
- package/dist/cjs/utils/childAgentContext.cjs +0 -242
- package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
- package/dist/cjs/utils/credentials.cjs +0 -142
- package/dist/cjs/utils/credentials.cjs.map +0 -1
- package/dist/cjs/utils/httpClient.cjs +0 -74
- package/dist/cjs/utils/httpClient.cjs.map +0 -1
- package/dist/cjs/utils/toolManifest.cjs +0 -100
- package/dist/cjs/utils/toolManifest.cjs.map +0 -1
- package/dist/esm/common/spawnPath.mjs +0 -95
- package/dist/esm/common/spawnPath.mjs.map +0 -1
- package/dist/esm/content/ArtifactStore.mjs +0 -576
- package/dist/esm/content/ArtifactStore.mjs.map +0 -1
- package/dist/esm/content/ContentStore.mjs +0 -635
- package/dist/esm/content/ContentStore.mjs.map +0 -1
- package/dist/esm/content/contentAnalyzer.mjs +0 -87
- package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
- package/dist/esm/content/index.mjs +0 -5
- package/dist/esm/content/mcpAutoCache.mjs +0 -111
- package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
- package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
- package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/a2a/client.mjs +0 -88
- package/dist/esm/providers/a2a/client.mjs.map +0 -1
- package/dist/esm/providers/a2a/config.mjs +0 -35
- package/dist/esm/providers/a2a/config.mjs.map +0 -1
- package/dist/esm/providers/capabilityNaming.mjs +0 -39
- package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/mcp/config.mjs +0 -39
- package/dist/esm/providers/mcp/config.mjs.map +0 -1
- package/dist/esm/providers/mcp/transport.mjs +0 -63
- package/dist/esm/providers/mcp/transport.mjs.map +0 -1
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/types.mjs +0 -51
- package/dist/esm/providers/types.mjs.map +0 -1
- package/dist/esm/tools/artifacts/schema.mjs +0 -79
- package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
- package/dist/esm/tools/artifacts/tool.mjs +0 -213
- package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
- package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
- package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/schema.mjs +0 -15
- package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/tool.mjs +0 -152
- package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
- package/dist/esm/tools/proxyTool.mjs +0 -100
- package/dist/esm/tools/proxyTool.mjs.map +0 -1
- package/dist/esm/utils/childAgentContext.mjs +0 -237
- package/dist/esm/utils/childAgentContext.mjs.map +0 -1
- package/dist/esm/utils/credentials.mjs +0 -135
- package/dist/esm/utils/credentials.mjs.map +0 -1
- package/dist/esm/utils/httpClient.mjs +0 -70
- package/dist/esm/utils/httpClient.mjs.map +0 -1
- package/dist/esm/utils/toolManifest.mjs +0 -96
- package/dist/esm/utils/toolManifest.mjs.map +0 -1
- package/dist/types/common/spawnPath.d.ts +0 -59
- package/dist/types/content/ArtifactStore.d.ts +0 -223
- package/dist/types/content/ContentStore.d.ts +0 -140
- package/dist/types/content/contentAnalyzer.d.ts +0 -38
- package/dist/types/content/index.d.ts +0 -24
- package/dist/types/content/mcpAutoCache.d.ts +0 -89
- package/dist/types/content/types.d.ts +0 -75
- package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
- package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
- package/dist/types/providers/a2a/client.d.ts +0 -47
- package/dist/types/providers/a2a/config.d.ts +0 -18
- package/dist/types/providers/a2a/index.d.ts +0 -6
- package/dist/types/providers/a2a/types.d.ts +0 -173
- package/dist/types/providers/capabilityNaming.d.ts +0 -25
- package/dist/types/providers/index.d.ts +0 -12
- package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
- package/dist/types/providers/mcp/config.d.ts +0 -20
- package/dist/types/providers/mcp/index.d.ts +0 -5
- package/dist/types/providers/mcp/transport.d.ts +0 -18
- package/dist/types/providers/mcp/types.d.ts +0 -112
- package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
- package/dist/types/providers/tools-server/index.d.ts +0 -1
- package/dist/types/providers/types.d.ts +0 -184
- package/dist/types/tools/artifacts/index.d.ts +0 -3
- package/dist/types/tools/artifacts/schema.d.ts +0 -63
- package/dist/types/tools/artifacts/tool.d.ts +0 -16
- package/dist/types/tools/artifacts/types.d.ts +0 -127
- package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
- package/dist/types/tools/fileSearch/index.d.ts +0 -5
- package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
- package/dist/types/tools/fileSearch/schema.d.ts +0 -13
- package/dist/types/tools/fileSearch/tool.d.ts +0 -18
- package/dist/types/tools/fileSearch/types.d.ts +0 -139
- package/dist/types/tools/proxyTool.d.ts +0 -62
- package/dist/types/utils/childAgentContext.d.ts +0 -99
- package/dist/types/utils/credentials.d.ts +0 -77
- package/dist/types/utils/httpClient.d.ts +0 -46
- package/dist/types/utils/toolManifest.d.ts +0 -49
- package/src/common/__tests__/spawnPath.test.ts +0 -110
- package/src/common/spawnPath.ts +0 -101
- package/src/content/ArtifactStore.ts +0 -782
- package/src/content/ContentStore.ts +0 -753
- package/src/content/contentAnalyzer.ts +0 -105
- package/src/content/index.ts +0 -51
- package/src/content/mcpAutoCache.ts +0 -185
- package/src/content/types.ts +0 -82
- package/src/graphs/HandoffRegistry.ts +0 -199
- package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
- package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
- package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
- package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
- package/src/graphs/handoffValidation.test.ts +0 -353
- package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
- package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
- package/src/providers/__tests__/types.test.ts +0 -64
- package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
- package/src/providers/a2a/client.ts +0 -115
- package/src/providers/a2a/config.ts +0 -40
- package/src/providers/a2a/index.ts +0 -29
- package/src/providers/a2a/types.ts +0 -191
- package/src/providers/capabilityNaming.ts +0 -42
- package/src/providers/index.ts +0 -68
- package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
- package/src/providers/mcp/config.ts +0 -45
- package/src/providers/mcp/index.ts +0 -21
- package/src/providers/mcp/transport.ts +0 -76
- package/src/providers/mcp/types.ts +0 -139
- package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
- package/src/providers/tools-server/index.ts +0 -1
- package/src/providers/types.ts +0 -204
- package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
- package/src/scripts/test-handoff-preamble.ts +0 -278
- package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
- package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
- package/src/tools/artifacts/index.ts +0 -33
- package/src/tools/artifacts/schema.ts +0 -99
- package/src/tools/artifacts/tool.ts +0 -289
- package/src/tools/artifacts/types.ts +0 -162
- package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
- package/src/tools/fileSearch/formatter.ts +0 -129
- package/src/tools/fileSearch/index.ts +0 -23
- package/src/tools/fileSearch/ragClient.ts +0 -137
- package/src/tools/fileSearch/schema.ts +0 -19
- package/src/tools/fileSearch/tool.ts +0 -207
- package/src/tools/fileSearch/types.ts +0 -149
- package/src/tools/proxyTool.ts +0 -166
- package/src/utils/__tests__/childAgentContext.test.ts +0 -217
- package/src/utils/__tests__/credentials.test.ts +0 -130
- package/src/utils/__tests__/httpClient.test.ts +0 -75
- package/src/utils/__tests__/toolManifest.test.ts +0 -116
- package/src/utils/childAgentContext.ts +0 -259
- package/src/utils/credentials.ts +0 -157
- package/src/utils/httpClient.ts +0 -92
- package/src/utils/toolManifest.ts +0 -109
- /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
var messages = require('@langchain/core/messages');
|
|
4
4
|
var _enum = require('../common/enum.cjs');
|
|
5
5
|
require('../tools/approval/constants.cjs');
|
|
6
|
+
var truncation = require('../utils/truncation.cjs');
|
|
7
|
+
var contextPruning = require('./contextPruning.cjs');
|
|
6
8
|
|
|
7
9
|
function isIndexInContext(arrayA, arrayB, targetIndex) {
|
|
8
10
|
const startingIndexInA = arrayA.length - arrayB.length;
|
|
@@ -84,12 +86,12 @@ function buildEmergencyContext(messages, endIndex) {
|
|
|
84
86
|
}
|
|
85
87
|
return result;
|
|
86
88
|
}
|
|
87
|
-
function getMessagesWithinTokenLimit({ messages: _messages, maxContextTokens, indexTokenCountMap, startType: _startType, thinkingEnabled, tokenCounter, thinkingStartIndex: _thinkingStartIndex = -1, reasoningType = _enum.ContentTypes.THINKING, }) {
|
|
89
|
+
function getMessagesWithinTokenLimit({ messages: _messages, maxContextTokens, indexTokenCountMap, startType: _startType, thinkingEnabled, tokenCounter, thinkingStartIndex: _thinkingStartIndex = -1, reasoningType = _enum.ContentTypes.THINKING, instructionTokens: _instructionTokens = 0, }) {
|
|
88
90
|
// Every reply is primed with <|start|>assistant<|message|>, so we
|
|
89
91
|
// start with 3 tokens for the label after all messages have been counted.
|
|
90
92
|
let currentTokenCount = 3;
|
|
91
93
|
const instructions = _messages[0]?.getType() === 'system' ? _messages[0] : undefined;
|
|
92
|
-
const instructionsTokenCount = instructions != null ? (indexTokenCountMap[0] ?? 0) :
|
|
94
|
+
const instructionsTokenCount = instructions != null ? (indexTokenCountMap[0] ?? 0) : _instructionTokens;
|
|
93
95
|
const initialContextTokens = maxContextTokens - instructionsTokenCount;
|
|
94
96
|
let remainingContextTokens = initialContextTokens;
|
|
95
97
|
let startType = _startType;
|
|
@@ -308,12 +310,443 @@ function getMessagesWithinTokenLimit({ messages: _messages, maxContextTokens, in
|
|
|
308
310
|
function checkValidNumber(value) {
|
|
309
311
|
return typeof value === 'number' && !isNaN(value) && value > 0;
|
|
310
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Returns the set of tool_call ids referenced by an AIMessage — both via the
|
|
315
|
+
* canonical `tool_calls` array and via inline `tool_use` / `tool_call` content
|
|
316
|
+
* blocks (Anthropic-style content arrays).
|
|
317
|
+
*/
|
|
318
|
+
function getToolCallIds(message) {
|
|
319
|
+
if (message.getType() !== 'ai') {
|
|
320
|
+
return new Set();
|
|
321
|
+
}
|
|
322
|
+
const ids = new Set();
|
|
323
|
+
const aiMessage = message;
|
|
324
|
+
for (const toolCall of aiMessage.tool_calls ?? []) {
|
|
325
|
+
if (typeof toolCall.id === 'string' && toolCall.id.length > 0) {
|
|
326
|
+
ids.add(toolCall.id);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (Array.isArray(aiMessage.content)) {
|
|
330
|
+
for (const part of aiMessage.content) {
|
|
331
|
+
if (typeof part !== 'object') {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
const record = part;
|
|
335
|
+
if ((record.type === 'tool_use' || record.type === 'tool_call') &&
|
|
336
|
+
typeof record.id === 'string' &&
|
|
337
|
+
record.id.length > 0) {
|
|
338
|
+
ids.add(record.id);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return ids;
|
|
343
|
+
}
|
|
344
|
+
function getToolResultId(message) {
|
|
345
|
+
if (message.getType() !== 'tool') {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
const toolMessage = message;
|
|
349
|
+
if (typeof toolMessage.tool_call_id === 'string' &&
|
|
350
|
+
toolMessage.tool_call_id.length > 0) {
|
|
351
|
+
return toolMessage.tool_call_id;
|
|
352
|
+
}
|
|
353
|
+
if (typeof toolMessage.toolCallId === 'string' &&
|
|
354
|
+
toolMessage.toolCallId.length > 0) {
|
|
355
|
+
return toolMessage.toolCallId;
|
|
356
|
+
}
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
function resolveTokenCountForMessage({ message, messageIndexMap, tokenCounter, indexTokenCountMap, }) {
|
|
360
|
+
const originalIndex = messageIndexMap.get(message) ?? -1;
|
|
361
|
+
if (originalIndex > -1 && indexTokenCountMap[originalIndex] != null) {
|
|
362
|
+
return indexTokenCountMap[originalIndex];
|
|
363
|
+
}
|
|
364
|
+
return tokenCounter(message);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Repairs orphan tool messages in a pruned context. Drops `ToolMessage`s whose
|
|
368
|
+
* matching `AIMessage` was pruned, and strips orphan `tool_use` content blocks
|
|
369
|
+
* (and `tool_calls` entries) from `AIMessage`s whose corresponding tool results
|
|
370
|
+
* are missing. Without this, Anthropic / Bedrock / OpenAI reject the request
|
|
371
|
+
* with a structural validation 400.
|
|
372
|
+
*
|
|
373
|
+
* Intended to run on the post-prune `context` array (not the pre-prune
|
|
374
|
+
* `allMessages`). The dropped messages are returned so the caller can append
|
|
375
|
+
* them to `messagesToRefine` for summarization fidelity.
|
|
376
|
+
*/
|
|
377
|
+
function repairOrphanedToolMessages({ context, allMessages, tokenCounter, indexTokenCountMap, }) {
|
|
378
|
+
const messageIndexMap = new Map();
|
|
379
|
+
for (let i = 0; i < allMessages.length; i++) {
|
|
380
|
+
messageIndexMap.set(allMessages[i], i);
|
|
381
|
+
}
|
|
382
|
+
const validToolCallIds = new Set();
|
|
383
|
+
const presentToolResultIds = new Set();
|
|
384
|
+
for (const message of context) {
|
|
385
|
+
for (const id of getToolCallIds(message)) {
|
|
386
|
+
validToolCallIds.add(id);
|
|
387
|
+
}
|
|
388
|
+
const resultId = getToolResultId(message);
|
|
389
|
+
if (resultId != null) {
|
|
390
|
+
presentToolResultIds.add(resultId);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
let reclaimedTokens = 0;
|
|
394
|
+
let droppedOrphanCount = 0;
|
|
395
|
+
const repairedContext = [];
|
|
396
|
+
const droppedMessages = [];
|
|
397
|
+
for (const message of context) {
|
|
398
|
+
if (message.getType() === 'tool') {
|
|
399
|
+
const toolResultId = getToolResultId(message);
|
|
400
|
+
if (toolResultId == null || !validToolCallIds.has(toolResultId)) {
|
|
401
|
+
droppedOrphanCount += 1;
|
|
402
|
+
reclaimedTokens += resolveTokenCountForMessage({
|
|
403
|
+
message,
|
|
404
|
+
tokenCounter,
|
|
405
|
+
messageIndexMap,
|
|
406
|
+
indexTokenCountMap,
|
|
407
|
+
});
|
|
408
|
+
droppedMessages.push(message);
|
|
409
|
+
continue;
|
|
410
|
+
}
|
|
411
|
+
repairedContext.push(message);
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
if (message.getType() === 'ai' && message instanceof messages.AIMessage) {
|
|
415
|
+
const toolCallIds = getToolCallIds(message);
|
|
416
|
+
if (toolCallIds.size > 0) {
|
|
417
|
+
let hasOrphanToolCalls = false;
|
|
418
|
+
for (const id of toolCallIds) {
|
|
419
|
+
if (!presentToolResultIds.has(id)) {
|
|
420
|
+
hasOrphanToolCalls = true;
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (hasOrphanToolCalls) {
|
|
425
|
+
const originalTokens = resolveTokenCountForMessage({
|
|
426
|
+
message,
|
|
427
|
+
messageIndexMap,
|
|
428
|
+
tokenCounter,
|
|
429
|
+
indexTokenCountMap,
|
|
430
|
+
});
|
|
431
|
+
const stripped = stripOrphanToolUseBlocks(message, presentToolResultIds);
|
|
432
|
+
if (stripped != null) {
|
|
433
|
+
const strippedTokens = tokenCounter(stripped);
|
|
434
|
+
reclaimedTokens += originalTokens - strippedTokens;
|
|
435
|
+
repairedContext.push(stripped);
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
droppedOrphanCount += 1;
|
|
439
|
+
reclaimedTokens += originalTokens;
|
|
440
|
+
droppedMessages.push(message);
|
|
441
|
+
}
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
repairedContext.push(message);
|
|
447
|
+
}
|
|
448
|
+
return {
|
|
449
|
+
context: repairedContext,
|
|
450
|
+
reclaimedTokens,
|
|
451
|
+
droppedOrphanCount,
|
|
452
|
+
droppedMessages,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Strips tool_use content blocks and tool_calls entries from an AI message
|
|
457
|
+
* when their corresponding ToolMessages are not in the context.
|
|
458
|
+
* Returns null if the message has no content left after stripping.
|
|
459
|
+
*/
|
|
460
|
+
function stripOrphanToolUseBlocks(message, presentToolResultIds) {
|
|
461
|
+
const keptToolCalls = (message.tool_calls ?? []).filter((tc) => typeof tc.id === 'string' && presentToolResultIds.has(tc.id));
|
|
462
|
+
let keptContent;
|
|
463
|
+
if (Array.isArray(message.content)) {
|
|
464
|
+
const filtered = message.content.filter((block) => {
|
|
465
|
+
if (typeof block !== 'object') {
|
|
466
|
+
return true;
|
|
467
|
+
}
|
|
468
|
+
const record = block;
|
|
469
|
+
if ((record.type === 'tool_use' || record.type === 'tool_call') &&
|
|
470
|
+
typeof record.id === 'string') {
|
|
471
|
+
return presentToolResultIds.has(record.id);
|
|
472
|
+
}
|
|
473
|
+
return true;
|
|
474
|
+
});
|
|
475
|
+
if (filtered.length === 0) {
|
|
476
|
+
return null;
|
|
477
|
+
}
|
|
478
|
+
keptContent = filtered;
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
keptContent = message.content;
|
|
482
|
+
}
|
|
483
|
+
return new messages.AIMessage({
|
|
484
|
+
...message,
|
|
485
|
+
content: keptContent,
|
|
486
|
+
tool_calls: keptToolCalls.length > 0 ? keptToolCalls : undefined,
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Lightweight structural cleanup: strips orphan tool_use blocks from AI messages
|
|
491
|
+
* and drops orphan ToolMessages whose AI counterpart is missing.
|
|
492
|
+
*
|
|
493
|
+
* Unlike `repairOrphanedToolMessages`, this does NOT track tokens — it is
|
|
494
|
+
* intended as a final safety net right before model invocation to prevent
|
|
495
|
+
* Anthropic / Bedrock structural validation errors.
|
|
496
|
+
*
|
|
497
|
+
* Uses duck-typing instead of `getType()` because messages at this stage
|
|
498
|
+
* may be plain objects (from LangGraph state serialization) rather than
|
|
499
|
+
* proper BaseMessage class instances.
|
|
500
|
+
*
|
|
501
|
+
* Includes a fast-path: if every tool_call has a matching tool_result and
|
|
502
|
+
* vice-versa, the original array is returned immediately with zero allocation.
|
|
503
|
+
*/
|
|
504
|
+
function sanitizeOrphanToolBlocks(messages$1) {
|
|
505
|
+
const allToolCallIds = new Set();
|
|
506
|
+
const allToolResultIds = new Set();
|
|
507
|
+
for (const msg of messages$1) {
|
|
508
|
+
const msgAny = msg;
|
|
509
|
+
const toolCalls = msgAny.tool_calls;
|
|
510
|
+
if (Array.isArray(toolCalls)) {
|
|
511
|
+
for (const tc of toolCalls) {
|
|
512
|
+
if (typeof tc.id === 'string' &&
|
|
513
|
+
tc.id.length > 0 &&
|
|
514
|
+
!tc.id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {
|
|
515
|
+
allToolCallIds.add(tc.id);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
if (Array.isArray(msgAny.content)) {
|
|
520
|
+
for (const block of msgAny.content) {
|
|
521
|
+
if (typeof block === 'object' &&
|
|
522
|
+
(block.type === 'tool_use' || block.type === 'tool_call') &&
|
|
523
|
+
typeof block.id === 'string' &&
|
|
524
|
+
!block.id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {
|
|
525
|
+
allToolCallIds.add(block.id);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
const toolCallId = msgAny.tool_call_id;
|
|
530
|
+
if (typeof toolCallId === 'string' && toolCallId.length > 0) {
|
|
531
|
+
allToolResultIds.add(toolCallId);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
let hasOrphans = false;
|
|
535
|
+
for (const id of allToolCallIds) {
|
|
536
|
+
if (!allToolResultIds.has(id)) {
|
|
537
|
+
hasOrphans = true;
|
|
538
|
+
break;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
if (!hasOrphans) {
|
|
542
|
+
for (const id of allToolResultIds) {
|
|
543
|
+
if (!allToolCallIds.has(id)) {
|
|
544
|
+
hasOrphans = true;
|
|
545
|
+
break;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
if (!hasOrphans) {
|
|
550
|
+
return messages$1;
|
|
551
|
+
}
|
|
552
|
+
const result = [];
|
|
553
|
+
const strippedAiIndices = new Set();
|
|
554
|
+
for (const msg of messages$1) {
|
|
555
|
+
const msgAny = msg;
|
|
556
|
+
const msgType = typeof msg.getType === 'function'
|
|
557
|
+
? msg.getType()
|
|
558
|
+
: (msgAny.role ??
|
|
559
|
+
msgAny._type);
|
|
560
|
+
const toolCallId = msgAny.tool_call_id;
|
|
561
|
+
if ((msgType === 'tool' || msg instanceof messages.ToolMessage) &&
|
|
562
|
+
typeof toolCallId === 'string' &&
|
|
563
|
+
!allToolCallIds.has(toolCallId)) {
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
const toolCalls = msgAny.tool_calls;
|
|
567
|
+
if ((msgType === 'ai' ||
|
|
568
|
+
msgType === 'assistant' ||
|
|
569
|
+
msg instanceof messages.AIMessage) &&
|
|
570
|
+
Array.isArray(toolCalls) &&
|
|
571
|
+
toolCalls.length > 0) {
|
|
572
|
+
const hasOrphanCalls = toolCalls.some((tc) => typeof tc.id === 'string' && !allToolResultIds.has(tc.id));
|
|
573
|
+
if (hasOrphanCalls) {
|
|
574
|
+
if (msg instanceof messages.AIMessage) {
|
|
575
|
+
const stripped = stripOrphanToolUseBlocks(msg, allToolResultIds);
|
|
576
|
+
if (stripped != null) {
|
|
577
|
+
strippedAiIndices.add(result.length);
|
|
578
|
+
result.push(stripped);
|
|
579
|
+
}
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
const keptToolCalls = toolCalls.filter((tc) => typeof tc.id === 'string' && allToolResultIds.has(tc.id));
|
|
583
|
+
const keptContent = Array.isArray(msgAny.content)
|
|
584
|
+
? msgAny.content.filter((block) => {
|
|
585
|
+
if (typeof block !== 'object')
|
|
586
|
+
return true;
|
|
587
|
+
if ((block.type === 'tool_use' || block.type === 'tool_call') &&
|
|
588
|
+
typeof block.id === 'string') {
|
|
589
|
+
return allToolResultIds.has(block.id);
|
|
590
|
+
}
|
|
591
|
+
return true;
|
|
592
|
+
})
|
|
593
|
+
: msgAny.content;
|
|
594
|
+
if (keptToolCalls.length === 0 &&
|
|
595
|
+
Array.isArray(keptContent) &&
|
|
596
|
+
keptContent.length === 0) {
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
strippedAiIndices.add(result.length);
|
|
600
|
+
const patched = Object.create(Object.getPrototypeOf(msg), Object.getOwnPropertyDescriptors(msg));
|
|
601
|
+
patched.tool_calls = keptToolCalls.length > 0 ? keptToolCalls : [];
|
|
602
|
+
patched.content = keptContent;
|
|
603
|
+
result.push(patched);
|
|
604
|
+
continue;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
result.push(msg);
|
|
608
|
+
}
|
|
609
|
+
// Bedrock/Anthropic require the conversation to end with a user message;
|
|
610
|
+
// a stripped AI message (tool_use removed) represents a dead-end exchange.
|
|
611
|
+
while (result.length > 0 && strippedAiIndices.has(result.length - 1)) {
|
|
612
|
+
result.pop();
|
|
613
|
+
}
|
|
614
|
+
return result;
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Pre-flight truncation: truncates oversized tool result string content before
|
|
618
|
+
* the budget walker runs. Older results get smaller budgets (recency factor),
|
|
619
|
+
* with a 200-char floor so even ancient entries keep diagnostic signal. Returns
|
|
620
|
+
* the number of ToolMessages truncated.
|
|
621
|
+
*/
|
|
622
|
+
function preFlightTruncateToolResults(params) {
|
|
623
|
+
const { messages: messages$1, maxContextTokens, indexTokenCountMap, tokenCounter } = params;
|
|
624
|
+
const baseMaxChars = truncation.calculateMaxToolResultChars(maxContextTokens);
|
|
625
|
+
let truncatedCount = 0;
|
|
626
|
+
const toolIndices = [];
|
|
627
|
+
for (let i = 0; i < messages$1.length; i++) {
|
|
628
|
+
if (messages$1[i].getType() === 'tool') {
|
|
629
|
+
toolIndices.push(i);
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
for (let t = 0; t < toolIndices.length; t++) {
|
|
633
|
+
const i = toolIndices[t];
|
|
634
|
+
const message = messages$1[i];
|
|
635
|
+
const content = message.content;
|
|
636
|
+
if (typeof content !== 'string') {
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
const position = toolIndices.length > 1 ? t / (toolIndices.length - 1) : 1;
|
|
640
|
+
const recencyFactor = 0.2 + 0.8 * position;
|
|
641
|
+
const maxChars = Math.max(200, Math.floor(baseMaxChars * recencyFactor));
|
|
642
|
+
if (content.length <= maxChars) {
|
|
643
|
+
continue;
|
|
644
|
+
}
|
|
645
|
+
const truncated = truncation.truncateToolResultContent(content, maxChars);
|
|
646
|
+
const cloned = new messages.ToolMessage({
|
|
647
|
+
content: truncated,
|
|
648
|
+
tool_call_id: message.tool_call_id,
|
|
649
|
+
name: message.name,
|
|
650
|
+
id: message.id,
|
|
651
|
+
additional_kwargs: message.additional_kwargs,
|
|
652
|
+
response_metadata: message.response_metadata,
|
|
653
|
+
});
|
|
654
|
+
messages$1[i] = cloned;
|
|
655
|
+
indexTokenCountMap[i] = tokenCounter(cloned);
|
|
656
|
+
truncatedCount++;
|
|
657
|
+
}
|
|
658
|
+
return truncatedCount;
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Pre-flight truncation: truncates oversized `tool_use` input fields in AI messages.
|
|
662
|
+
*
|
|
663
|
+
* Tool call inputs (arguments) can be very large — e.g., code evaluation payloads from
|
|
664
|
+
* MCP tools like chrome-devtools. Since these tool calls have already been executed,
|
|
665
|
+
* the model only needs a summary of what was called, not the full arguments. Truncating
|
|
666
|
+
* them before pruning can prevent entire messages from being dropped.
|
|
667
|
+
*
|
|
668
|
+
* Uses 15% of the context window (in estimated characters, ~4 chars/token) as the
|
|
669
|
+
* per-input cap, capped at 200K chars.
|
|
670
|
+
*
|
|
671
|
+
* @returns The number of AI messages that had tool_use inputs truncated.
|
|
672
|
+
*/
|
|
673
|
+
function preFlightTruncateToolCallInputs(params) {
|
|
674
|
+
const { messages: messages$1, maxContextTokens, indexTokenCountMap, tokenCounter } = params;
|
|
675
|
+
const maxInputChars = Math.min(Math.floor(maxContextTokens * 0.15) * 4, 200_000);
|
|
676
|
+
let truncatedCount = 0;
|
|
677
|
+
for (let i = 0; i < messages$1.length; i++) {
|
|
678
|
+
const message = messages$1[i];
|
|
679
|
+
if (message.getType() !== 'ai') {
|
|
680
|
+
continue;
|
|
681
|
+
}
|
|
682
|
+
if (!Array.isArray(message.content)) {
|
|
683
|
+
continue;
|
|
684
|
+
}
|
|
685
|
+
const originalContent = message.content;
|
|
686
|
+
const state = { changed: false };
|
|
687
|
+
const newContent = originalContent.map((block) => {
|
|
688
|
+
if (typeof block !== 'object') {
|
|
689
|
+
return block;
|
|
690
|
+
}
|
|
691
|
+
const record = block;
|
|
692
|
+
if (record.type !== 'tool_use' && record.type !== 'tool_call') {
|
|
693
|
+
return block;
|
|
694
|
+
}
|
|
695
|
+
const input = record.input;
|
|
696
|
+
if (input == null) {
|
|
697
|
+
return block;
|
|
698
|
+
}
|
|
699
|
+
const serialized = typeof input === 'string' ? input : JSON.stringify(input);
|
|
700
|
+
if (serialized.length <= maxInputChars) {
|
|
701
|
+
return block;
|
|
702
|
+
}
|
|
703
|
+
state.changed = true;
|
|
704
|
+
// Replaces original input with { _truncated, _originalChars } —
|
|
705
|
+
// safe because the tool call already executed in a prior turn.
|
|
706
|
+
return {
|
|
707
|
+
...record,
|
|
708
|
+
input: truncation.truncateToolInput(serialized, maxInputChars),
|
|
709
|
+
};
|
|
710
|
+
});
|
|
711
|
+
if (!state.changed) {
|
|
712
|
+
continue;
|
|
713
|
+
}
|
|
714
|
+
const aiMsg = message;
|
|
715
|
+
const newToolCalls = (aiMsg.tool_calls ?? []).map((tc) => {
|
|
716
|
+
const serializedArgs = JSON.stringify(tc.args);
|
|
717
|
+
if (serializedArgs.length <= maxInputChars) {
|
|
718
|
+
return tc;
|
|
719
|
+
}
|
|
720
|
+
// Replaces original args with { _truncated, _originalChars } —
|
|
721
|
+
// safe because the tool call already executed in a prior turn.
|
|
722
|
+
return {
|
|
723
|
+
...tc,
|
|
724
|
+
args: truncation.truncateToolInput(serializedArgs, maxInputChars),
|
|
725
|
+
};
|
|
726
|
+
});
|
|
727
|
+
messages$1[i] = new messages.AIMessage({
|
|
728
|
+
...aiMsg,
|
|
729
|
+
content: newContent,
|
|
730
|
+
tool_calls: newToolCalls.length > 0 ? newToolCalls : undefined,
|
|
731
|
+
});
|
|
732
|
+
indexTokenCountMap[i] = tokenCounter(messages$1[i]);
|
|
733
|
+
truncatedCount++;
|
|
734
|
+
}
|
|
735
|
+
return truncatedCount;
|
|
736
|
+
}
|
|
311
737
|
function createPruneMessages(factoryParams) {
|
|
312
738
|
const indexTokenCountMap = { ...factoryParams.indexTokenCountMap };
|
|
313
739
|
let lastTurnStartIndex = factoryParams.startIndex;
|
|
314
740
|
let lastCutOffIndex = 0;
|
|
315
741
|
let totalTokens = Object.values(indexTokenCountMap).reduce((a = 0, b = 0) => a + b, 0);
|
|
316
742
|
let runThinkingStartIndex = -1;
|
|
743
|
+
/**
|
|
744
|
+
* Original (pre-truncation) tool result content keyed by message index.
|
|
745
|
+
* Lets the summarizer see full tool outputs even after pre-flight truncation
|
|
746
|
+
* has shortened them in the live messages array. Cleared whenever the
|
|
747
|
+
* factory is recreated (e.g. after a summarization checkpoint).
|
|
748
|
+
*/
|
|
749
|
+
const originalToolContent = new Map();
|
|
317
750
|
return function pruneMessages(params) {
|
|
318
751
|
if (factoryParams.provider === _enum.Providers.OPENAI &&
|
|
319
752
|
factoryParams.thinkingEnabled === true) {
|
|
@@ -412,6 +845,47 @@ function createPruneMessages(factoryParams) {
|
|
|
412
845
|
messagesToRefine: [],
|
|
413
846
|
};
|
|
414
847
|
}
|
|
848
|
+
/*
|
|
849
|
+
* Pre-flight truncation: chop oversized tool result content and oversized
|
|
850
|
+
* tool_use input args BEFORE the budget walker runs. Older results get
|
|
851
|
+
* smaller per-message budgets (recencyFactor) so they degrade first while
|
|
852
|
+
* recent turns stay intact. Saves the originals in `originalToolContent`
|
|
853
|
+
* keyed by message index so the summarizer can later reconstruct full
|
|
854
|
+
* fidelity even after the live array was shortened.
|
|
855
|
+
*/
|
|
856
|
+
for (let i = 0; i < params.messages.length; i++) {
|
|
857
|
+
const m = params.messages[i];
|
|
858
|
+
if (m.getType() === 'tool' &&
|
|
859
|
+
typeof m.content === 'string' &&
|
|
860
|
+
!originalToolContent.has(i)) {
|
|
861
|
+
originalToolContent.set(i, m.content);
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
preFlightTruncateToolResults({
|
|
865
|
+
messages: params.messages,
|
|
866
|
+
maxContextTokens: factoryParams.maxTokens,
|
|
867
|
+
indexTokenCountMap,
|
|
868
|
+
tokenCounter: factoryParams.tokenCounter,
|
|
869
|
+
});
|
|
870
|
+
preFlightTruncateToolCallInputs({
|
|
871
|
+
messages: params.messages,
|
|
872
|
+
maxContextTokens: factoryParams.maxTokens,
|
|
873
|
+
indexTokenCountMap,
|
|
874
|
+
tokenCounter: factoryParams.tokenCounter,
|
|
875
|
+
});
|
|
876
|
+
/*
|
|
877
|
+
* Position-based content degradation: soft-trim then hard-clear older tool
|
|
878
|
+
* results before the budget walker runs. Off by default — caller opts in
|
|
879
|
+
* via `contextPruningConfig.enabled`.
|
|
880
|
+
*/
|
|
881
|
+
if (factoryParams.contextPruningConfig?.enabled) {
|
|
882
|
+
contextPruning.applyContextPruning({
|
|
883
|
+
messages: params.messages,
|
|
884
|
+
indexTokenCountMap,
|
|
885
|
+
tokenCounter: factoryParams.tokenCounter,
|
|
886
|
+
config: factoryParams.contextPruningConfig,
|
|
887
|
+
});
|
|
888
|
+
}
|
|
415
889
|
const { context, thinkingStartIndex, messagesToRefine } = getMessagesWithinTokenLimit({
|
|
416
890
|
maxContextTokens: factoryParams.maxTokens,
|
|
417
891
|
messages: params.messages,
|
|
@@ -427,10 +901,33 @@ function createPruneMessages(factoryParams) {
|
|
|
427
901
|
: undefined,
|
|
428
902
|
});
|
|
429
903
|
runThinkingStartIndex = thinkingStartIndex ?? -1;
|
|
904
|
+
/*
|
|
905
|
+
* Orphan repair pass — drops tool messages whose AIMessage was pruned and
|
|
906
|
+
* strips orphan tool_use blocks from AIMessages whose tool results are
|
|
907
|
+
* missing. Without this, the budget walker can split tool_use ↔ tool_result
|
|
908
|
+
* pairs and the provider rejects the request with a structural 400.
|
|
909
|
+
* Dropped messages flow into messagesToRefine for summarization.
|
|
910
|
+
*/
|
|
911
|
+
const repaired = repairOrphanedToolMessages({
|
|
912
|
+
context,
|
|
913
|
+
allMessages: params.messages,
|
|
914
|
+
tokenCounter: factoryParams.tokenCounter,
|
|
915
|
+
indexTokenCountMap,
|
|
916
|
+
});
|
|
917
|
+
const finalContext = repaired.context;
|
|
918
|
+
const finalMessagesToRefine = repaired.droppedMessages.length > 0
|
|
919
|
+
? [...messagesToRefine, ...repaired.droppedMessages]
|
|
920
|
+
: messagesToRefine;
|
|
430
921
|
/** The index is the first value of `context`, index relative to `params.messages` */
|
|
431
922
|
lastCutOffIndex = Math.max(params.messages.length -
|
|
432
|
-
(
|
|
433
|
-
|
|
923
|
+
(finalContext.length -
|
|
924
|
+
(finalContext[0]?.getType() === 'system' ? 1 : 0)), 0);
|
|
925
|
+
return {
|
|
926
|
+
context: finalContext,
|
|
927
|
+
indexTokenCountMap,
|
|
928
|
+
messagesToRefine: finalMessagesToRefine,
|
|
929
|
+
originalToolContent,
|
|
930
|
+
};
|
|
434
931
|
};
|
|
435
932
|
}
|
|
436
933
|
/** Calculates context utilization as a percentage (0-100) */
|
|
@@ -449,4 +946,8 @@ exports.checkValidNumber = checkValidNumber;
|
|
|
449
946
|
exports.createPruneMessages = createPruneMessages;
|
|
450
947
|
exports.getContextUtilization = getContextUtilization;
|
|
451
948
|
exports.getMessagesWithinTokenLimit = getMessagesWithinTokenLimit;
|
|
949
|
+
exports.preFlightTruncateToolCallInputs = preFlightTruncateToolCallInputs;
|
|
950
|
+
exports.preFlightTruncateToolResults = preFlightTruncateToolResults;
|
|
951
|
+
exports.repairOrphanedToolMessages = repairOrphanedToolMessages;
|
|
952
|
+
exports.sanitizeOrphanToolBlocks = sanitizeOrphanToolBlocks;
|
|
452
953
|
//# sourceMappingURL=prune.cjs.map
|