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