@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 @@ import { RunnableLambda } from '@langchain/core/runnables';
|
|
|
3
3
|
import { createSchemaOnlyTools } from '../tools/schema.mjs';
|
|
4
4
|
import { ContentTypes, Providers } from '../common/enum.mjs';
|
|
5
5
|
import '../tools/approval/constants.mjs';
|
|
6
|
+
import { MAX_SYSTEM_CACHE_BLOCKS } from '../types/agent-cache.mjs';
|
|
7
|
+
import { isBedrockCacheSupported } from '../llm/bedrock/cacheSupport.mjs';
|
|
6
8
|
import { toJsonSchema } from '../utils/schema.mjs';
|
|
7
9
|
|
|
8
10
|
/* eslint-disable no-console */
|
|
@@ -15,7 +17,7 @@ class AgentContext {
|
|
|
15
17
|
* Create an AgentContext from configuration with token accounting initialization
|
|
16
18
|
*/
|
|
17
19
|
static fromConfig(agentConfig, tokenCounter, indexTokenCountMap) {
|
|
18
|
-
const { agentId, name, description, provider, clientOptions, tools, toolMap, toolEnd, toolRegistry, toolDefinitions, instructions, additional_instructions, streamBuffer, maxContextTokens, reasoningKey, useLegacyContent, dynamicContext, structuredOutput: structuredOutputCamel, structured_output: structuredOutputSnake, discoveredTools, summarizeCallback, persistedSummary, summarizationConfig, fileManifest, } = agentConfig;
|
|
20
|
+
const { agentId, name, description, provider, clientOptions, tools, toolMap, toolEnd, toolRegistry, toolDefinitions, system_cache_blocks, instructions, instructions_cache_ttl, additional_instructions, streamBuffer, maxContextTokens, reasoningKey, useLegacyContent, dynamicContext, structuredOutput: structuredOutputCamel, structured_output: structuredOutputSnake, discoveredTools, summarizeCallback, persistedSummary, summarizationConfig, fileManifest, } = agentConfig;
|
|
19
21
|
// Normalize structured output: support both camelCase and snake_case inputs
|
|
20
22
|
// Priority: structuredOutput (camelCase) > structured_output (snake_case with enabled check)
|
|
21
23
|
let structuredOutput;
|
|
@@ -45,7 +47,9 @@ class AgentContext {
|
|
|
45
47
|
toolMap,
|
|
46
48
|
toolRegistry,
|
|
47
49
|
toolDefinitions,
|
|
50
|
+
systemCacheBlocks: system_cache_blocks,
|
|
48
51
|
instructions,
|
|
52
|
+
instructionsCacheTtl: instructions_cache_ttl,
|
|
49
53
|
additionalInstructions: additional_instructions,
|
|
50
54
|
reasoningKey,
|
|
51
55
|
toolEnd,
|
|
@@ -60,6 +64,15 @@ class AgentContext {
|
|
|
60
64
|
summarizationConfig,
|
|
61
65
|
fileManifest,
|
|
62
66
|
});
|
|
67
|
+
/**
|
|
68
|
+
* Track upstream-aligned subagent inputs on the context. `_sourceInputs`
|
|
69
|
+
* preserves the original AgentInputs so SubagentExecutor can self-spawn
|
|
70
|
+
* (`SubagentConfig.self === true`) without separate config; the other
|
|
71
|
+
* two flow straight from agentConfig.
|
|
72
|
+
*/
|
|
73
|
+
agentContext._sourceInputs = agentConfig;
|
|
74
|
+
agentContext.subagentConfigs = agentConfig.subagentConfigs;
|
|
75
|
+
agentContext.maxSubagentDepth = agentConfig.maxSubagentDepth;
|
|
63
76
|
if (tokenCounter) {
|
|
64
77
|
// Initialize system runnable BEFORE async tool token calculation
|
|
65
78
|
// This ensures system message tokens are in instructionTokens before
|
|
@@ -130,9 +143,18 @@ class AgentContext {
|
|
|
130
143
|
toolDefinitions;
|
|
131
144
|
/** Set of tool names discovered via tool search (to be loaded) */
|
|
132
145
|
discoveredToolNames = new Set();
|
|
133
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* Cacheable system content blocks emitted before `instructions`. Each
|
|
148
|
+
* gets its own cache marker (cachePoint on Bedrock, cache_control on
|
|
149
|
+
* Anthropic). Earlier entries = wider cache key (best for cross-tenant
|
|
150
|
+
* sharing). See `src/types/agent-cache.ts`.
|
|
151
|
+
*/
|
|
152
|
+
systemCacheBlocks;
|
|
153
|
+
/** Stable/cacheable instructions for this agent (gets trailing marker). */
|
|
134
154
|
instructions;
|
|
135
|
-
/**
|
|
155
|
+
/** TTL for the trailing instructions cache marker. Defaults to '5m'. */
|
|
156
|
+
instructionsCacheTtl;
|
|
157
|
+
/** Dynamic system tail (per-user / per-message — never cached). */
|
|
136
158
|
additionalInstructions;
|
|
137
159
|
/**
|
|
138
160
|
* Dynamic context that changes per-request (e.g., current time, user info).
|
|
@@ -194,7 +216,13 @@ class AgentContext {
|
|
|
194
216
|
summarizationConfig;
|
|
195
217
|
/** Lightweight file manifest for file-aware compaction (IDs and names only, no content) */
|
|
196
218
|
fileManifest;
|
|
197
|
-
|
|
219
|
+
/** Original AgentInputs used to create this context — used for self-spawn subagent resolution. */
|
|
220
|
+
_sourceInputs;
|
|
221
|
+
/** Subagent configurations for hierarchical delegation. */
|
|
222
|
+
subagentConfigs;
|
|
223
|
+
/** Maximum subagent nesting depth. */
|
|
224
|
+
maxSubagentDepth;
|
|
225
|
+
constructor({ agentId, name, description, provider, clientOptions, maxContextTokens, streamBuffer, tokenCounter, tools, toolMap, toolRegistry, toolDefinitions, systemCacheBlocks, instructions, instructionsCacheTtl, additionalInstructions, dynamicContext, reasoningKey, toolEnd, instructionTokens, useLegacyContent, structuredOutput, discoveredTools, summarizeCallback, persistedSummary, summarizationConfig, fileManifest, }) {
|
|
198
226
|
this.agentId = agentId;
|
|
199
227
|
this.name = name;
|
|
200
228
|
this.description = description;
|
|
@@ -207,7 +235,16 @@ class AgentContext {
|
|
|
207
235
|
this.toolMap = toolMap;
|
|
208
236
|
this.toolRegistry = toolRegistry;
|
|
209
237
|
this.toolDefinitions = toolDefinitions;
|
|
238
|
+
if (systemCacheBlocks &&
|
|
239
|
+
systemCacheBlocks.length > MAX_SYSTEM_CACHE_BLOCKS) {
|
|
240
|
+
throw new Error(`system_cache_blocks supports at most ${MAX_SYSTEM_CACHE_BLOCKS} entries ` +
|
|
241
|
+
`(received ${systemCacheBlocks.length}); excess entries would exceed ` +
|
|
242
|
+
`Bedrock's 4-cachePoint per-request budget once the tools array and ` +
|
|
243
|
+
`trailing 'instructions' marker are counted. See src/types/agent-cache.ts.`);
|
|
244
|
+
}
|
|
245
|
+
this.systemCacheBlocks = systemCacheBlocks;
|
|
210
246
|
this.instructions = instructions;
|
|
247
|
+
this.instructionsCacheTtl = instructionsCacheTtl;
|
|
211
248
|
this.additionalInstructions = additionalInstructions;
|
|
212
249
|
this.dynamicContext = dynamicContext;
|
|
213
250
|
this.structuredOutput = structuredOutput;
|
|
@@ -398,8 +435,11 @@ class AgentContext {
|
|
|
398
435
|
return this.cachedSystemRunnable;
|
|
399
436
|
}
|
|
400
437
|
// Stale or first access - rebuild
|
|
401
|
-
|
|
402
|
-
|
|
438
|
+
this.cachedSystemRunnable = this.buildSystemRunnable({
|
|
439
|
+
systemCacheBlocks: this.systemCacheBlocks ?? [],
|
|
440
|
+
stableInstructions: this.buildStableInstructionsString(),
|
|
441
|
+
dynamicInstructions: this.buildDynamicInstructionsString(),
|
|
442
|
+
});
|
|
403
443
|
this.systemRunnableStale = false;
|
|
404
444
|
return this.cachedSystemRunnable;
|
|
405
445
|
}
|
|
@@ -409,16 +449,26 @@ class AgentContext {
|
|
|
409
449
|
*/
|
|
410
450
|
initializeSystemRunnable() {
|
|
411
451
|
if (this.systemRunnableStale || this.cachedSystemRunnable === undefined) {
|
|
412
|
-
|
|
413
|
-
|
|
452
|
+
this.cachedSystemRunnable = this.buildSystemRunnable({
|
|
453
|
+
systemCacheBlocks: this.systemCacheBlocks ?? [],
|
|
454
|
+
stableInstructions: this.buildStableInstructionsString(),
|
|
455
|
+
dynamicInstructions: this.buildDynamicInstructionsString(),
|
|
456
|
+
});
|
|
414
457
|
this.systemRunnableStale = false;
|
|
415
458
|
}
|
|
416
459
|
}
|
|
417
460
|
/**
|
|
418
|
-
* Builds the
|
|
419
|
-
* Includes agent identity preamble
|
|
461
|
+
* Builds the cacheable instructions string (without creating SystemMessage).
|
|
462
|
+
* Includes agent identity preamble, the agent's static instructions, and
|
|
463
|
+
* programmatic-only tool documentation. This is the part of the system
|
|
464
|
+
* message that stays byte-stable across turns and across users for the
|
|
465
|
+
* same agent — the prompt cache prefix.
|
|
466
|
+
*
|
|
467
|
+
* Per-user/per-message dynamic context belongs in
|
|
468
|
+
* `buildDynamicInstructionsString()` so it does not invalidate the cache
|
|
469
|
+
* marker. (See `feedback_cache_stability_invariant` for the rule.)
|
|
420
470
|
*/
|
|
421
|
-
|
|
471
|
+
buildStableInstructionsString() {
|
|
422
472
|
const parts = [];
|
|
423
473
|
/** Build agent identity and handoff context preamble */
|
|
424
474
|
const identityPreamble = this.buildIdentityPreamble();
|
|
@@ -429,11 +479,6 @@ class AgentContext {
|
|
|
429
479
|
if (this.instructions != null && this.instructions !== '') {
|
|
430
480
|
parts.push(this.instructions);
|
|
431
481
|
}
|
|
432
|
-
/** Add additional instructions */
|
|
433
|
-
if (this.additionalInstructions != null &&
|
|
434
|
-
this.additionalInstructions !== '') {
|
|
435
|
-
parts.push(this.additionalInstructions);
|
|
436
|
-
}
|
|
437
482
|
/** Add programmatic tools documentation */
|
|
438
483
|
const programmaticToolsDoc = this.buildProgrammaticOnlyToolsInstructions();
|
|
439
484
|
if (programmaticToolsDoc) {
|
|
@@ -441,6 +486,23 @@ class AgentContext {
|
|
|
441
486
|
}
|
|
442
487
|
return parts.join('\n\n');
|
|
443
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* Builds the dynamic system-tail string (without creating SystemMessage).
|
|
491
|
+
* Keep this out of prompt-cache-marked content so volatile per-call
|
|
492
|
+
* context does not invalidate the stable prefix.
|
|
493
|
+
*
|
|
494
|
+
* `additional_instructions` is treated as dynamic (per-user/per-message
|
|
495
|
+
* memory, runtime context, etc.) and intentionally excluded from the
|
|
496
|
+
* cacheable prefix.
|
|
497
|
+
*/
|
|
498
|
+
buildDynamicInstructionsString() {
|
|
499
|
+
const parts = [];
|
|
500
|
+
if (this.additionalInstructions != null &&
|
|
501
|
+
this.additionalInstructions !== '') {
|
|
502
|
+
parts.push(this.additionalInstructions);
|
|
503
|
+
}
|
|
504
|
+
return parts.join('\n\n');
|
|
505
|
+
}
|
|
444
506
|
/**
|
|
445
507
|
* Builds the agent identity preamble including handoff context if present.
|
|
446
508
|
* This helps the agent understand its role in the multi-agent workflow.
|
|
@@ -478,31 +540,136 @@ class AgentContext {
|
|
|
478
540
|
return lines.join('\n');
|
|
479
541
|
}
|
|
480
542
|
/**
|
|
481
|
-
*
|
|
482
|
-
*
|
|
543
|
+
* True when Anthropic prompt caching is enabled for this agent.
|
|
544
|
+
* Used by `buildSystemRunnable` to decide whether to emit a cache_control
|
|
545
|
+
* marker on the stable instructions prefix.
|
|
483
546
|
*/
|
|
484
|
-
|
|
485
|
-
if (
|
|
547
|
+
hasAnthropicPromptCache() {
|
|
548
|
+
if (this.provider !== Providers.ANTHROPIC) {
|
|
549
|
+
return false;
|
|
550
|
+
}
|
|
551
|
+
const anthropicOptions = this.clientOptions;
|
|
552
|
+
return anthropicOptions?.promptCache === true;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* True when Bedrock prompt caching is enabled for this agent AND the
|
|
556
|
+
* configured model supports `cachePoint` blocks. Only Claude (and Nova)
|
|
557
|
+
* models on Bedrock honour cachePoint — Llama / Titan reject it.
|
|
558
|
+
*
|
|
559
|
+
* Used by `buildSystemRunnable` to inline a `cachePoint` block right
|
|
560
|
+
* after the stable system text so the system prefix is cached at the
|
|
561
|
+
* AWS account level (cross-user, cross-conversation).
|
|
562
|
+
*/
|
|
563
|
+
hasBedrockPromptCache() {
|
|
564
|
+
if (this.provider !== Providers.BEDROCK) {
|
|
565
|
+
return false;
|
|
566
|
+
}
|
|
567
|
+
const bedrockOptions = this.clientOptions;
|
|
568
|
+
if (bedrockOptions?.promptCache !== true) {
|
|
569
|
+
return false;
|
|
570
|
+
}
|
|
571
|
+
/* Allowlist-based check (see src/llm/bedrock/cacheSupport.ts). The
|
|
572
|
+
* `bedrockCacheModelPatterns` clientOption lets consumers add new
|
|
573
|
+
* model patterns without forking the library — useful when AWS adds
|
|
574
|
+
* a new family before the next library release. */
|
|
575
|
+
return isBedrockCacheSupported(bedrockOptions.model, bedrockOptions.bedrockCacheModelPatterns);
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Build system runnable from cacheable blocks + the trailing
|
|
579
|
+
* `instructions` block + optional dynamic tail.
|
|
580
|
+
*
|
|
581
|
+
* ┌──────────────────────────────────────────┐
|
|
582
|
+
* │ system_cache_blocks[0].text │ ← consumer-defined block 0
|
|
583
|
+
* ├──── cache marker (TTL = blocks[0].ttl) ──┤
|
|
584
|
+
* │ system_cache_blocks[1].text │ ← consumer-defined block 1
|
|
585
|
+
* ├──── cache marker (TTL = blocks[1].ttl) ──┤
|
|
586
|
+
* │ instructions │ ← per-agent stable
|
|
587
|
+
* ├──── cache marker (TTL = instructionsCacheTtl) ┤
|
|
588
|
+
* │ additional_instructions │ ← dynamic (uncached)
|
|
589
|
+
* └──────────────────────────────────────────┘
|
|
590
|
+
*
|
|
591
|
+
* If `system_cache_blocks` is empty, behavior reduces to the 2-tier
|
|
592
|
+
* (instructions + dynamic) path used by simpler consumers.
|
|
593
|
+
*
|
|
594
|
+
* Provider-specific cache marker:
|
|
595
|
+
* - Anthropic: `cache_control: { type: 'ephemeral', ttl?: '1h'|'5m' }` on
|
|
596
|
+
* each cacheable text block. Up to 4 cache breakpoints per workspace.
|
|
597
|
+
* - Bedrock (Claude/Nova): a `{ cachePoint: { type: 'default', ttl?: '1h'|'5m' } }`
|
|
598
|
+
* block inserted after each cacheable section. Up to 4 cachePoints per
|
|
599
|
+
* request, of which the tools array can consume up to 2.
|
|
600
|
+
*
|
|
601
|
+
* Cache key composition: every byte from message start to a given cache
|
|
602
|
+
* marker forms that marker's cache key. Earlier blocks = wider cache key
|
|
603
|
+
* = more cross-tenant share. Place the most stable content first.
|
|
604
|
+
*/
|
|
605
|
+
buildSystemRunnable({ systemCacheBlocks, stableInstructions, dynamicInstructions, }) {
|
|
606
|
+
const hasAnyCacheBlocks = systemCacheBlocks.length > 0;
|
|
607
|
+
if (!hasAnyCacheBlocks && !stableInstructions && !dynamicInstructions) {
|
|
486
608
|
// Remove previous tokens if we had a system message before
|
|
487
609
|
this.instructionTokens -= this.systemMessageTokens;
|
|
488
610
|
this.systemMessageTokens = 0;
|
|
489
611
|
return undefined;
|
|
490
612
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
613
|
+
const useAnthropicCache = this.hasAnthropicPromptCache();
|
|
614
|
+
const useBedrockCache = this.hasBedrockPromptCache();
|
|
615
|
+
const instructionsTtl = this.instructionsCacheTtl ?? '5m';
|
|
616
|
+
let finalInstructions;
|
|
617
|
+
if (useAnthropicCache) {
|
|
618
|
+
const content = [];
|
|
619
|
+
// Emit each system_cache_blocks entry with its own cache_control.
|
|
620
|
+
for (const block of systemCacheBlocks) {
|
|
621
|
+
if (!block.text)
|
|
622
|
+
continue;
|
|
623
|
+
content.push({
|
|
624
|
+
type: 'text',
|
|
625
|
+
text: block.text,
|
|
626
|
+
cache_control: { type: 'ephemeral', ttl: block.ttl ?? '5m' },
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
// Trailing stable instructions block (also cacheable).
|
|
630
|
+
if (stableInstructions) {
|
|
631
|
+
content.push({
|
|
632
|
+
type: 'text',
|
|
633
|
+
text: stableInstructions,
|
|
634
|
+
cache_control: { type: 'ephemeral', ttl: instructionsTtl },
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
if (dynamicInstructions) {
|
|
638
|
+
// Dynamic tail: NO cache_control so it doesn't shift the cache prefix.
|
|
639
|
+
content.push({ type: 'text', text: dynamicInstructions });
|
|
505
640
|
}
|
|
641
|
+
finalInstructions = { content };
|
|
642
|
+
}
|
|
643
|
+
else if (useBedrockCache && (hasAnyCacheBlocks || stableInstructions)) {
|
|
644
|
+
const content = [];
|
|
645
|
+
// Emit each system_cache_blocks entry as text + cachePoint pair.
|
|
646
|
+
for (const block of systemCacheBlocks) {
|
|
647
|
+
if (!block.text)
|
|
648
|
+
continue;
|
|
649
|
+
content.push({ type: 'text', text: block.text });
|
|
650
|
+
content.push({
|
|
651
|
+
cachePoint: { type: 'default', ttl: block.ttl ?? '5m' },
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
if (stableInstructions) {
|
|
655
|
+
content.push({ type: 'text', text: stableInstructions });
|
|
656
|
+
content.push({
|
|
657
|
+
cachePoint: { type: 'default', ttl: instructionsTtl },
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
if (dynamicInstructions) {
|
|
661
|
+
content.push({ type: 'text', text: dynamicInstructions });
|
|
662
|
+
}
|
|
663
|
+
finalInstructions = { content };
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
finalInstructions = [
|
|
667
|
+
...systemCacheBlocks.map((b) => b.text),
|
|
668
|
+
stableInstructions,
|
|
669
|
+
dynamicInstructions,
|
|
670
|
+
]
|
|
671
|
+
.filter((part) => part !== '')
|
|
672
|
+
.join('\n\n');
|
|
506
673
|
}
|
|
507
674
|
const systemMessage = new SystemMessage(finalInstructions);
|
|
508
675
|
// Update token counts (subtract old, add new)
|
|
@@ -571,6 +738,45 @@ class AgentContext {
|
|
|
571
738
|
this.indexTokenCountMap = { ...baseTokenMap };
|
|
572
739
|
}
|
|
573
740
|
}
|
|
741
|
+
/** Active tool definitions for token accounting (excludes deferred-and-undiscovered entries
|
|
742
|
+
* and definitions whose `allowed_callers` exclude `'direct'`). Mirrors the gate
|
|
743
|
+
* `getEventDrivenToolsForBinding` applies so accounting and binding stay aligned. */
|
|
744
|
+
getActiveToolDefinitions() {
|
|
745
|
+
if (!this.toolDefinitions) {
|
|
746
|
+
return [];
|
|
747
|
+
}
|
|
748
|
+
return this.toolDefinitions.filter((def) => {
|
|
749
|
+
const allowedCallers = def.allowed_callers ?? ['direct'];
|
|
750
|
+
if (!allowedCallers.includes('direct')) {
|
|
751
|
+
return false;
|
|
752
|
+
}
|
|
753
|
+
return (def.defer_loading !== true || this.discoveredToolNames.has(def.name));
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Single source of truth for "which entries of `this.tools` should be
|
|
758
|
+
* treated as actually bound". Callers:
|
|
759
|
+
* - `getToolsForBinding` (non-event-driven branch)
|
|
760
|
+
* - `getEventDrivenToolsForBinding` (appends instance tools alongside
|
|
761
|
+
* schema-only definitions)
|
|
762
|
+
* - `calculateInstructionTokens` (counts schema bytes for accounting)
|
|
763
|
+
*
|
|
764
|
+
* In event-driven mode (`toolDefinitions` present) instance tools are
|
|
765
|
+
* appended unfiltered; outside event-driven mode they pass through
|
|
766
|
+
* `filterToolsForBinding`. Centralizing the decision here prevents the
|
|
767
|
+
* accounting/binding paths from drifting apart, which was the root
|
|
768
|
+
* cause of the original miscount (Fixes upstream #121).
|
|
769
|
+
*/
|
|
770
|
+
getEffectiveInstanceTools() {
|
|
771
|
+
if (!this.tools) {
|
|
772
|
+
return undefined;
|
|
773
|
+
}
|
|
774
|
+
const isEventDriven = (this.toolDefinitions?.length ?? 0) > 0;
|
|
775
|
+
if (isEventDriven || !this.toolRegistry) {
|
|
776
|
+
return this.tools;
|
|
777
|
+
}
|
|
778
|
+
return this.filterToolsForBinding(this.tools);
|
|
779
|
+
}
|
|
574
780
|
/**
|
|
575
781
|
* Calculate tool tokens and add to instruction tokens
|
|
576
782
|
* Note: System message tokens are calculated during systemRunnable creation
|
|
@@ -584,9 +790,16 @@ class AgentContext {
|
|
|
584
790
|
const countedToolNames = new Set();
|
|
585
791
|
// Reset per-tool breakdown
|
|
586
792
|
this.toolsDetail = [];
|
|
793
|
+
/* Use `getEffectiveInstanceTools()` so accounting reflects exactly the
|
|
794
|
+
* subset that `getToolsForBinding` would emit — preventing the
|
|
795
|
+
* worst-case-ceiling miscount that triggered spurious `empty_messages`
|
|
796
|
+
* preflight rejections at low `maxContextTokens`. Deferred and
|
|
797
|
+
* non-`'direct'` `toolDefinitions` are excluded by
|
|
798
|
+
* `getActiveToolDefinitions()` below. */
|
|
799
|
+
const effectiveInstanceTools = this.getEffectiveInstanceTools();
|
|
587
800
|
// Count tokens for bound tools (StructuredTool instances with .schema)
|
|
588
|
-
if (
|
|
589
|
-
for (const tool of
|
|
801
|
+
if (effectiveInstanceTools && effectiveInstanceTools.length > 0) {
|
|
802
|
+
for (const tool of effectiveInstanceTools) {
|
|
590
803
|
const genericTool = tool;
|
|
591
804
|
if (genericTool.schema != null &&
|
|
592
805
|
typeof genericTool.schema === 'object') {
|
|
@@ -605,23 +818,25 @@ class AgentContext {
|
|
|
605
818
|
// Count tokens for tool definitions (MCP / event-driven tools).
|
|
606
819
|
// These are sent to the provider API as tool schemas alongside bound tools.
|
|
607
820
|
// Both can be populated simultaneously (graph tools + MCP tools).
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
description: def.description ?? '',
|
|
616
|
-
parameters: def.parameters ?? {},
|
|
617
|
-
};
|
|
618
|
-
const defTokens = tokenCounter(new SystemMessage(JSON.stringify(schema)));
|
|
619
|
-
this.toolsDetail.push({
|
|
620
|
-
name: def.name || 'unknown',
|
|
621
|
-
tokens: defTokens,
|
|
622
|
-
});
|
|
623
|
-
toolTokens += defTokens;
|
|
821
|
+
// Use `getActiveToolDefinitions()` so programmatic-only definitions
|
|
822
|
+
// (e.g. `allowed_callers: ['code_execution']`) and deferred-and-
|
|
823
|
+
// -undiscovered ones don't inflate `toolSchemaTokens` while never
|
|
824
|
+
// being bound to the model.
|
|
825
|
+
for (const def of this.getActiveToolDefinitions()) {
|
|
826
|
+
if (countedToolNames.has(def.name)) {
|
|
827
|
+
continue; // Already counted via this.tools
|
|
624
828
|
}
|
|
829
|
+
const schema = {
|
|
830
|
+
name: def.name,
|
|
831
|
+
description: def.description ?? '',
|
|
832
|
+
parameters: def.parameters ?? {},
|
|
833
|
+
};
|
|
834
|
+
const defTokens = tokenCounter(new SystemMessage(JSON.stringify(schema)));
|
|
835
|
+
this.toolsDetail.push({
|
|
836
|
+
name: def.name || 'unknown',
|
|
837
|
+
tokens: defTokens,
|
|
838
|
+
});
|
|
839
|
+
toolTokens += defTokens;
|
|
625
840
|
}
|
|
626
841
|
// Store total tool tokens for breakdown reporting
|
|
627
842
|
this.toolTokensTotal = toolTokens;
|
|
@@ -753,9 +968,7 @@ class AgentContext {
|
|
|
753
968
|
return this.getEventDrivenToolsForBinding();
|
|
754
969
|
}
|
|
755
970
|
/** Traditional mode: filter actual tool instances */
|
|
756
|
-
const filtered =
|
|
757
|
-
? this.tools
|
|
758
|
-
: this.filterToolsForBinding(this.tools);
|
|
971
|
+
const filtered = this.getEffectiveInstanceTools();
|
|
759
972
|
if (this.graphTools && this.graphTools.length > 0) {
|
|
760
973
|
return [...(filtered ?? []), ...this.graphTools];
|
|
761
974
|
}
|
|
@@ -766,22 +979,16 @@ class AgentContext {
|
|
|
766
979
|
if (!this.toolDefinitions) {
|
|
767
980
|
return this.graphTools ?? [];
|
|
768
981
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
return false;
|
|
773
|
-
}
|
|
774
|
-
if (def.defer_loading === true &&
|
|
775
|
-
!this.discoveredToolNames.has(def.name)) {
|
|
776
|
-
return false;
|
|
777
|
-
}
|
|
778
|
-
return true;
|
|
779
|
-
});
|
|
780
|
-
const schemaTools = createSchemaOnlyTools(defsToInclude);
|
|
982
|
+
/* Reuse `getActiveToolDefinitions()` so the binding gate matches the
|
|
983
|
+
* accounting filter exactly (single source of truth). */
|
|
984
|
+
const schemaTools = createSchemaOnlyTools(this.getActiveToolDefinitions());
|
|
781
985
|
const allTools = [...schemaTools];
|
|
782
986
|
if (this.graphTools && this.graphTools.length > 0) {
|
|
783
987
|
allTools.push(...this.graphTools);
|
|
784
988
|
}
|
|
989
|
+
/* In event-driven mode, instance tools are appended UNFILTERED (matching
|
|
990
|
+
* `getEffectiveInstanceTools()`'s event-driven branch). Deferred /
|
|
991
|
+
* non-direct logic is represented in `toolDefinitions`, not here. */
|
|
785
992
|
if (this.tools && this.tools.length > 0) {
|
|
786
993
|
allTools.push(...this.tools);
|
|
787
994
|
}
|