@illuma-ai/agents 1.4.0-alpha.6 → 1.5.1
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/graphs/phases/memoryFlushPhase.cjs +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.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 +1 -4
- 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/memory/citations.cjs +4 -4
- package/dist/cjs/memory/citations.cjs.map +1 -1
- package/dist/cjs/memory/constants.cjs +17 -17
- package/dist/cjs/memory/constants.cjs.map +1 -1
- package/dist/cjs/memory/mmr.cjs +1 -1
- package/dist/cjs/memory/mmr.cjs.map +1 -1
- package/dist/cjs/memory/paths.cjs +1 -1
- package/dist/cjs/memory/paths.cjs.map +1 -1
- package/dist/cjs/memory/recallTracking.cjs +3 -3
- package/dist/cjs/memory/recallTracking.cjs.map +1 -1
- package/dist/cjs/memory/temporalDecay.cjs +2 -2
- package/dist/cjs/memory/temporalDecay.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 +45 -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/memory/memoryAppendTool.cjs +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
- package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
- package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/shared.cjs +1 -1
- package/dist/cjs/tools/memory/shared.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 +54 -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/graphs/phases/memoryFlushPhase.mjs +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.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 +1 -4
- 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/memory/citations.mjs +4 -4
- package/dist/esm/memory/citations.mjs.map +1 -1
- package/dist/esm/memory/constants.mjs +17 -17
- package/dist/esm/memory/constants.mjs.map +1 -1
- package/dist/esm/memory/mmr.mjs +1 -1
- package/dist/esm/memory/mmr.mjs.map +1 -1
- package/dist/esm/memory/paths.mjs +1 -1
- package/dist/esm/memory/paths.mjs.map +1 -1
- package/dist/esm/memory/recallTracking.mjs +3 -3
- package/dist/esm/memory/recallTracking.mjs.map +1 -1
- package/dist/esm/memory/temporalDecay.mjs +2 -2
- package/dist/esm/memory/temporalDecay.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 +45 -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/memory/memoryAppendTool.mjs +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
- package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
- package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
- package/dist/esm/tools/memory/shared.mjs +1 -1
- package/dist/esm/tools/memory/shared.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 +52 -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/graphs/phases/memoryFlushPhase.d.ts +2 -2
- 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/llm/openai/index.d.ts +1 -1
- package/dist/types/memory/citations.d.ts +4 -4
- package/dist/types/memory/constants.d.ts +17 -17
- package/dist/types/memory/mmr.d.ts +3 -3
- package/dist/types/memory/paths.d.ts +1 -1
- package/dist/types/memory/temporalDecay.d.ts +2 -2
- package/dist/types/memory/types.d.ts +3 -3
- 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/memory/shared.d.ts +1 -1
- 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 +71 -0
- package/dist/types/types/graph.d.ts +163 -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.ts +321 -78
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +266 -0
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
- package/src/agents/__tests__/AgentContext.test.ts +632 -0
- package/src/common/__tests__/enum.test.ts +7 -17
- package/src/common/enum.ts +43 -12
- package/src/common/index.ts +0 -1
- package/src/graphs/Graph.ts +222 -2
- package/src/graphs/MultiAgentGraph.ts +154 -1466
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
- package/src/graphs/gapFeatures.test.ts +1 -1
- package/src/graphs/index.ts +0 -1
- package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
- package/src/graphs/phases/memoryFlushPhase.ts +2 -2
- 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.ts +15 -24
- 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/utils/message_inputs.ts +10 -1
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -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.ts +116 -41
- package/src/llm/openai/index.ts +2 -2
- package/src/llm/openai/utils/index.ts +31 -14
- package/src/memory/citations.ts +4 -4
- package/src/memory/constants.ts +17 -17
- package/src/memory/mmr.ts +3 -3
- package/src/memory/paths.ts +1 -1
- package/src/memory/recallTracking.ts +3 -3
- package/src/memory/temporalDecay.ts +2 -2
- package/src/memory/types.ts +3 -3
- package/src/messages/__tests__/contextPruning.test.ts +228 -0
- package/src/messages/cache.test.ts +62 -24
- package/src/messages/cache.ts +112 -0
- package/src/messages/contextPruning.ts +191 -0
- package/src/messages/contextPruningSettings.ts +90 -0
- package/src/messages/ensureThinkingBlock.test.ts +1 -1
- package/src/messages/format.ts +164 -12
- package/src/messages/formatAgentMessages.skills.test.ts +413 -0
- package/src/messages/formatAgentMessages.test.ts +1 -1
- package/src/messages/index.ts +2 -0
- package/src/messages/prune.ts +661 -4
- package/src/run.ts +155 -1
- package/src/scripts/multi-agent-chain.ts +2 -2
- package/src/scripts/multi-agent-document-review-chain.ts +2 -2
- package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
- package/src/scripts/multi-agent-parallel.ts +3 -3
- package/src/scripts/multi-agent-sequence.ts +3 -3
- package/src/scripts/multi-agent-subagent.ts +246 -0
- package/src/scripts/multi-agent-supervisor.ts +5 -5
- package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
- package/src/scripts/sequential-full-metadata-test.ts +2 -2
- 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.ts +3 -3
- package/src/scripts/test-handoff-input.ts +1 -1
- package/src/scripts/test-handoff-steering.ts +3 -3
- package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
- package/src/scripts/test-parallel-agent-labeling.ts +3 -3
- package/src/scripts/test-parallel-handoffs.ts +2 -2
- package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-thinking-handoff.ts +1 -1
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
- package/src/scripts/test-tools-before-handoff.ts +1 -1
- package/src/specs/agent-handoffs.test.ts +26 -483
- package/src/specs/anthropic.simple.test.ts +61 -0
- package/src/specs/multi-agent-summarization.test.ts +396 -0
- package/src/specs/prune.orphans.test.ts +248 -0
- package/src/specs/prune.test.ts +104 -16
- package/src/specs/thinking-handoff.test.ts +19 -19
- package/src/tools/BashExecutor.ts +281 -0
- package/src/tools/BashProgrammaticToolCalling.ts +397 -0
- package/src/tools/CodeExecutor.ts +63 -54
- package/src/tools/ProgrammaticToolCalling.ts +29 -14
- package/src/tools/ReadFile.ts +39 -0
- package/src/tools/SkillTool.ts +46 -0
- package/src/tools/SubagentTool.ts +100 -0
- package/src/tools/ToolNode.ts +548 -26
- package/src/tools/__tests__/BashExecutor.test.ts +49 -0
- package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
- 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__/SubagentExecutor.test.ts +1148 -0
- package/src/tools/__tests__/SubagentTool.test.ts +149 -0
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -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/memory/memoryAppendTool.ts +1 -1
- package/src/tools/memory/memoryGetTool.ts +2 -2
- package/src/tools/memory/memorySearchTool.ts +3 -3
- package/src/tools/memory/shared.ts +1 -1
- package/src/tools/search/search.ts +12 -2
- 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/tool.ts +36 -2
- package/src/tools/search/types.ts +133 -8
- 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 +74 -0
- package/src/types/graph.ts +172 -20
- package/src/types/index.ts +3 -0
- package/src/types/messages.ts +27 -0
- package/src/types/run.ts +22 -0
- package/src/types/skill.ts +11 -0
- package/src/types/tools.ts +118 -0
- package/src/utils/__tests__/truncation.test.ts +66 -0
- package/src/utils/index.ts +1 -3
- 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/tools/search/test.d.ts +0 -1
- 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/tools/search/output.md +0 -2775
- package/src/tools/search/test.html +0 -884
- package/src/tools/search/test.md +0 -643
- package/src/tools/search/test.ts +0 -159
- 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
|
@@ -12,6 +12,8 @@ import type * as t from '@/types';
|
|
|
12
12
|
import type { createPruneMessages } from '@/messages';
|
|
13
13
|
import { createSchemaOnlyTools } from '@/tools/schema';
|
|
14
14
|
import { ContentTypes, Providers } from '@/common';
|
|
15
|
+
import { MAX_SYSTEM_CACHE_BLOCKS } from '@/types/agent-cache';
|
|
16
|
+
import { isBedrockCacheSupported } from '@/llm/bedrock/cacheSupport';
|
|
15
17
|
import { toJsonSchema } from '@/utils/schema';
|
|
16
18
|
|
|
17
19
|
/**
|
|
@@ -37,7 +39,9 @@ export class AgentContext {
|
|
|
37
39
|
toolEnd,
|
|
38
40
|
toolRegistry,
|
|
39
41
|
toolDefinitions,
|
|
42
|
+
system_cache_blocks,
|
|
40
43
|
instructions,
|
|
44
|
+
instructions_cache_ttl,
|
|
41
45
|
additional_instructions,
|
|
42
46
|
streamBuffer,
|
|
43
47
|
maxContextTokens,
|
|
@@ -85,7 +89,9 @@ export class AgentContext {
|
|
|
85
89
|
toolMap,
|
|
86
90
|
toolRegistry,
|
|
87
91
|
toolDefinitions,
|
|
92
|
+
systemCacheBlocks: system_cache_blocks,
|
|
88
93
|
instructions,
|
|
94
|
+
instructionsCacheTtl: instructions_cache_ttl,
|
|
89
95
|
additionalInstructions: additional_instructions,
|
|
90
96
|
reasoningKey,
|
|
91
97
|
toolEnd,
|
|
@@ -101,6 +107,16 @@ export class AgentContext {
|
|
|
101
107
|
fileManifest,
|
|
102
108
|
});
|
|
103
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Track subagent inputs on the context. `_sourceInputs`
|
|
112
|
+
* preserves the original AgentInputs so SubagentExecutor can self-spawn
|
|
113
|
+
* (`SubagentConfig.self === true`) without separate config; the other
|
|
114
|
+
* two flow straight from agentConfig.
|
|
115
|
+
*/
|
|
116
|
+
agentContext._sourceInputs = agentConfig;
|
|
117
|
+
agentContext.subagentConfigs = agentConfig.subagentConfigs;
|
|
118
|
+
agentContext.maxSubagentDepth = agentConfig.maxSubagentDepth;
|
|
119
|
+
|
|
104
120
|
if (tokenCounter) {
|
|
105
121
|
// Initialize system runnable BEFORE async tool token calculation
|
|
106
122
|
// This ensures system message tokens are in instructionTokens before
|
|
@@ -173,9 +189,18 @@ export class AgentContext {
|
|
|
173
189
|
toolDefinitions?: t.LCTool[];
|
|
174
190
|
/** Set of tool names discovered via tool search (to be loaded) */
|
|
175
191
|
discoveredToolNames: Set<string> = new Set();
|
|
176
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* Cacheable system content blocks emitted before `instructions`. Each
|
|
194
|
+
* gets its own cache marker (cachePoint on Bedrock, cache_control on
|
|
195
|
+
* Anthropic). Earlier entries = wider cache key (best for cross-tenant
|
|
196
|
+
* sharing). See `src/types/agent-cache.ts`.
|
|
197
|
+
*/
|
|
198
|
+
systemCacheBlocks?: t.SystemCacheBlock[];
|
|
199
|
+
/** Stable/cacheable instructions for this agent (gets trailing marker). */
|
|
177
200
|
instructions?: string;
|
|
178
|
-
/**
|
|
201
|
+
/** TTL for the trailing instructions cache marker. Defaults to '5m'. */
|
|
202
|
+
instructionsCacheTtl?: t.AgentCacheTTL;
|
|
203
|
+
/** Dynamic system tail (per-user / per-message — never cached). */
|
|
179
204
|
additionalInstructions?: string;
|
|
180
205
|
/**
|
|
181
206
|
* Dynamic context that changes per-request (e.g., current time, user info).
|
|
@@ -254,6 +279,12 @@ export class AgentContext {
|
|
|
254
279
|
summarizationConfig?: t.SummarizationConfig;
|
|
255
280
|
/** Lightweight file manifest for file-aware compaction (IDs and names only, no content) */
|
|
256
281
|
fileManifest?: t.FileManifestEntry[];
|
|
282
|
+
/** Original AgentInputs used to create this context — used for self-spawn subagent resolution. */
|
|
283
|
+
_sourceInputs?: t.AgentInputs;
|
|
284
|
+
/** Subagent configurations for hierarchical delegation. */
|
|
285
|
+
subagentConfigs?: t.SubagentConfig[];
|
|
286
|
+
/** Maximum subagent nesting depth. */
|
|
287
|
+
maxSubagentDepth?: number;
|
|
257
288
|
|
|
258
289
|
constructor({
|
|
259
290
|
agentId,
|
|
@@ -268,7 +299,9 @@ export class AgentContext {
|
|
|
268
299
|
toolMap,
|
|
269
300
|
toolRegistry,
|
|
270
301
|
toolDefinitions,
|
|
302
|
+
systemCacheBlocks,
|
|
271
303
|
instructions,
|
|
304
|
+
instructionsCacheTtl,
|
|
272
305
|
additionalInstructions,
|
|
273
306
|
dynamicContext,
|
|
274
307
|
reasoningKey,
|
|
@@ -294,7 +327,9 @@ export class AgentContext {
|
|
|
294
327
|
toolMap?: t.ToolMap;
|
|
295
328
|
toolRegistry?: t.LCToolRegistry;
|
|
296
329
|
toolDefinitions?: t.LCTool[];
|
|
330
|
+
systemCacheBlocks?: t.SystemCacheBlock[];
|
|
297
331
|
instructions?: string;
|
|
332
|
+
instructionsCacheTtl?: t.AgentCacheTTL;
|
|
298
333
|
additionalInstructions?: string;
|
|
299
334
|
dynamicContext?: string;
|
|
300
335
|
reasoningKey?: 'reasoning_content' | 'reasoning';
|
|
@@ -322,7 +357,20 @@ export class AgentContext {
|
|
|
322
357
|
this.toolMap = toolMap;
|
|
323
358
|
this.toolRegistry = toolRegistry;
|
|
324
359
|
this.toolDefinitions = toolDefinitions;
|
|
360
|
+
if (
|
|
361
|
+
systemCacheBlocks &&
|
|
362
|
+
systemCacheBlocks.length > MAX_SYSTEM_CACHE_BLOCKS
|
|
363
|
+
) {
|
|
364
|
+
throw new Error(
|
|
365
|
+
`system_cache_blocks supports at most ${MAX_SYSTEM_CACHE_BLOCKS} entries ` +
|
|
366
|
+
`(received ${systemCacheBlocks.length}); excess entries would exceed ` +
|
|
367
|
+
`Bedrock's 4-cachePoint per-request budget once the tools array and ` +
|
|
368
|
+
`trailing 'instructions' marker are counted. See src/types/agent-cache.ts.`,
|
|
369
|
+
);
|
|
370
|
+
}
|
|
371
|
+
this.systemCacheBlocks = systemCacheBlocks;
|
|
325
372
|
this.instructions = instructions;
|
|
373
|
+
this.instructionsCacheTtl = instructionsCacheTtl;
|
|
326
374
|
this.additionalInstructions = additionalInstructions;
|
|
327
375
|
this.dynamicContext = dynamicContext;
|
|
328
376
|
this.structuredOutput = structuredOutput;
|
|
@@ -557,8 +605,11 @@ export class AgentContext {
|
|
|
557
605
|
}
|
|
558
606
|
|
|
559
607
|
// Stale or first access - rebuild
|
|
560
|
-
|
|
561
|
-
|
|
608
|
+
this.cachedSystemRunnable = this.buildSystemRunnable({
|
|
609
|
+
systemCacheBlocks: this.systemCacheBlocks ?? [],
|
|
610
|
+
stableInstructions: this.buildStableInstructionsString(),
|
|
611
|
+
dynamicInstructions: this.buildDynamicInstructionsString(),
|
|
612
|
+
});
|
|
562
613
|
this.systemRunnableStale = false;
|
|
563
614
|
return this.cachedSystemRunnable;
|
|
564
615
|
}
|
|
@@ -569,17 +620,27 @@ export class AgentContext {
|
|
|
569
620
|
*/
|
|
570
621
|
initializeSystemRunnable(): void {
|
|
571
622
|
if (this.systemRunnableStale || this.cachedSystemRunnable === undefined) {
|
|
572
|
-
|
|
573
|
-
|
|
623
|
+
this.cachedSystemRunnable = this.buildSystemRunnable({
|
|
624
|
+
systemCacheBlocks: this.systemCacheBlocks ?? [],
|
|
625
|
+
stableInstructions: this.buildStableInstructionsString(),
|
|
626
|
+
dynamicInstructions: this.buildDynamicInstructionsString(),
|
|
627
|
+
});
|
|
574
628
|
this.systemRunnableStale = false;
|
|
575
629
|
}
|
|
576
630
|
}
|
|
577
631
|
|
|
578
632
|
/**
|
|
579
|
-
* Builds the
|
|
580
|
-
* Includes agent identity preamble
|
|
633
|
+
* Builds the cacheable instructions string (without creating SystemMessage).
|
|
634
|
+
* Includes agent identity preamble, the agent's static instructions, and
|
|
635
|
+
* programmatic-only tool documentation. This is the part of the system
|
|
636
|
+
* message that stays byte-stable across turns and across users for the
|
|
637
|
+
* same agent — the prompt cache prefix.
|
|
638
|
+
*
|
|
639
|
+
* Per-user/per-message dynamic context belongs in
|
|
640
|
+
* `buildDynamicInstructionsString()` so it does not invalidate the cache
|
|
641
|
+
* marker. (See `feedback_cache_stability_invariant` for the rule.)
|
|
581
642
|
*/
|
|
582
|
-
private
|
|
643
|
+
private buildStableInstructionsString(): string {
|
|
583
644
|
const parts: string[] = [];
|
|
584
645
|
|
|
585
646
|
/** Build agent identity and handoff context preamble */
|
|
@@ -593,7 +654,27 @@ export class AgentContext {
|
|
|
593
654
|
parts.push(this.instructions);
|
|
594
655
|
}
|
|
595
656
|
|
|
596
|
-
/** Add
|
|
657
|
+
/** Add programmatic tools documentation */
|
|
658
|
+
const programmaticToolsDoc = this.buildProgrammaticOnlyToolsInstructions();
|
|
659
|
+
if (programmaticToolsDoc) {
|
|
660
|
+
parts.push(programmaticToolsDoc);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
return parts.join('\n\n');
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* Builds the dynamic system-tail string (without creating SystemMessage).
|
|
668
|
+
* Keep this out of prompt-cache-marked content so volatile per-call
|
|
669
|
+
* context does not invalidate the stable prefix.
|
|
670
|
+
*
|
|
671
|
+
* `additional_instructions` is treated as dynamic (per-user/per-message
|
|
672
|
+
* memory, runtime context, etc.) and intentionally excluded from the
|
|
673
|
+
* cacheable prefix.
|
|
674
|
+
*/
|
|
675
|
+
private buildDynamicInstructionsString(): string {
|
|
676
|
+
const parts: string[] = [];
|
|
677
|
+
|
|
597
678
|
if (
|
|
598
679
|
this.additionalInstructions != null &&
|
|
599
680
|
this.additionalInstructions !== ''
|
|
@@ -601,12 +682,6 @@ export class AgentContext {
|
|
|
601
682
|
parts.push(this.additionalInstructions);
|
|
602
683
|
}
|
|
603
684
|
|
|
604
|
-
/** Add programmatic tools documentation */
|
|
605
|
-
const programmaticToolsDoc = this.buildProgrammaticOnlyToolsInstructions();
|
|
606
|
-
if (programmaticToolsDoc) {
|
|
607
|
-
parts.push(programmaticToolsDoc);
|
|
608
|
-
}
|
|
609
|
-
|
|
610
685
|
return parts.join('\n\n');
|
|
611
686
|
}
|
|
612
687
|
|
|
@@ -662,43 +737,168 @@ export class AgentContext {
|
|
|
662
737
|
}
|
|
663
738
|
|
|
664
739
|
/**
|
|
665
|
-
*
|
|
666
|
-
*
|
|
740
|
+
* True when Anthropic prompt caching is enabled for this agent.
|
|
741
|
+
* Used by `buildSystemRunnable` to decide whether to emit a cache_control
|
|
742
|
+
* marker on the stable instructions prefix.
|
|
743
|
+
*/
|
|
744
|
+
private hasAnthropicPromptCache(): boolean {
|
|
745
|
+
if (this.provider !== Providers.ANTHROPIC) {
|
|
746
|
+
return false;
|
|
747
|
+
}
|
|
748
|
+
const anthropicOptions = this.clientOptions as
|
|
749
|
+
| t.AnthropicClientOptions
|
|
750
|
+
| undefined;
|
|
751
|
+
return anthropicOptions?.promptCache === true;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* True when Bedrock prompt caching is enabled for this agent AND the
|
|
756
|
+
* configured model supports `cachePoint` blocks. Only Claude (and Nova)
|
|
757
|
+
* models on Bedrock honour cachePoint — Llama / Titan reject it.
|
|
758
|
+
*
|
|
759
|
+
* Used by `buildSystemRunnable` to inline a `cachePoint` block right
|
|
760
|
+
* after the stable system text so the system prefix is cached at the
|
|
761
|
+
* AWS account level (cross-user, cross-conversation).
|
|
762
|
+
*/
|
|
763
|
+
private hasBedrockPromptCache(): boolean {
|
|
764
|
+
if (this.provider !== Providers.BEDROCK) {
|
|
765
|
+
return false;
|
|
766
|
+
}
|
|
767
|
+
const bedrockOptions = this.clientOptions as
|
|
768
|
+
| (t.BedrockAnthropicClientOptions & {
|
|
769
|
+
model?: string;
|
|
770
|
+
bedrockCacheModelPatterns?: readonly RegExp[];
|
|
771
|
+
})
|
|
772
|
+
| undefined;
|
|
773
|
+
if (bedrockOptions?.promptCache !== true) {
|
|
774
|
+
return false;
|
|
775
|
+
}
|
|
776
|
+
/* Allowlist-based check (see src/llm/bedrock/cacheSupport.ts). The
|
|
777
|
+
* `bedrockCacheModelPatterns` clientOption lets consumers add new
|
|
778
|
+
* model patterns without forking the library — useful when AWS adds
|
|
779
|
+
* a new family before the next library release. */
|
|
780
|
+
return isBedrockCacheSupported(
|
|
781
|
+
bedrockOptions.model,
|
|
782
|
+
bedrockOptions.bedrockCacheModelPatterns,
|
|
783
|
+
);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
/**
|
|
787
|
+
* Build system runnable from cacheable blocks + the trailing
|
|
788
|
+
* `instructions` block + optional dynamic tail.
|
|
789
|
+
*
|
|
790
|
+
* ┌──────────────────────────────────────────┐
|
|
791
|
+
* │ system_cache_blocks[0].text │ ← consumer-defined block 0
|
|
792
|
+
* ├──── cache marker (TTL = blocks[0].ttl) ──┤
|
|
793
|
+
* │ system_cache_blocks[1].text │ ← consumer-defined block 1
|
|
794
|
+
* ├──── cache marker (TTL = blocks[1].ttl) ──┤
|
|
795
|
+
* │ instructions │ ← per-agent stable
|
|
796
|
+
* ├──── cache marker (TTL = instructionsCacheTtl) ┤
|
|
797
|
+
* │ additional_instructions │ ← dynamic (uncached)
|
|
798
|
+
* └──────────────────────────────────────────┘
|
|
799
|
+
*
|
|
800
|
+
* If `system_cache_blocks` is empty, behavior reduces to the 2-tier
|
|
801
|
+
* (instructions + dynamic) path used by simpler consumers.
|
|
802
|
+
*
|
|
803
|
+
* Provider-specific cache marker:
|
|
804
|
+
* - Anthropic: `cache_control: { type: 'ephemeral', ttl?: '1h'|'5m' }` on
|
|
805
|
+
* each cacheable text block. Up to 4 cache breakpoints per workspace.
|
|
806
|
+
* - Bedrock (Claude/Nova): a `{ cachePoint: { type: 'default', ttl?: '1h'|'5m' } }`
|
|
807
|
+
* block inserted after each cacheable section. Up to 4 cachePoints per
|
|
808
|
+
* request, of which the tools array can consume up to 2.
|
|
809
|
+
*
|
|
810
|
+
* Cache key composition: every byte from message start to a given cache
|
|
811
|
+
* marker forms that marker's cache key. Earlier blocks = wider cache key
|
|
812
|
+
* = more cross-tenant share. Place the most stable content first.
|
|
667
813
|
*/
|
|
668
|
-
private buildSystemRunnable(
|
|
669
|
-
|
|
670
|
-
|
|
814
|
+
private buildSystemRunnable({
|
|
815
|
+
systemCacheBlocks,
|
|
816
|
+
stableInstructions,
|
|
817
|
+
dynamicInstructions,
|
|
818
|
+
}: {
|
|
819
|
+
systemCacheBlocks: t.SystemCacheBlock[];
|
|
820
|
+
stableInstructions: string;
|
|
821
|
+
dynamicInstructions: string;
|
|
822
|
+
}):
|
|
671
823
|
| Runnable<
|
|
672
824
|
BaseMessage[],
|
|
673
825
|
(BaseMessage | SystemMessage)[],
|
|
674
826
|
RunnableConfig<Record<string, unknown>>
|
|
675
827
|
>
|
|
676
828
|
| undefined {
|
|
677
|
-
|
|
829
|
+
const hasAnyCacheBlocks = systemCacheBlocks.length > 0;
|
|
830
|
+
if (!hasAnyCacheBlocks && !stableInstructions && !dynamicInstructions) {
|
|
678
831
|
// Remove previous tokens if we had a system message before
|
|
679
832
|
this.instructionTokens -= this.systemMessageTokens;
|
|
680
833
|
this.systemMessageTokens = 0;
|
|
681
834
|
return undefined;
|
|
682
835
|
}
|
|
683
836
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
837
|
+
const useAnthropicCache = this.hasAnthropicPromptCache();
|
|
838
|
+
const useBedrockCache = this.hasBedrockPromptCache();
|
|
839
|
+
const instructionsTtl: t.AgentCacheTTL = this.instructionsCacheTtl ?? '5m';
|
|
840
|
+
|
|
841
|
+
let finalInstructions: string | BaseMessageFields;
|
|
842
|
+
if (useAnthropicCache) {
|
|
843
|
+
type AnthropicTextBlock = {
|
|
844
|
+
type: 'text';
|
|
845
|
+
text: string;
|
|
846
|
+
cache_control?: { type: 'ephemeral'; ttl?: t.AgentCacheTTL };
|
|
847
|
+
};
|
|
848
|
+
const content: AnthropicTextBlock[] = [];
|
|
849
|
+
// Emit each system_cache_blocks entry with its own cache_control.
|
|
850
|
+
for (const block of systemCacheBlocks) {
|
|
851
|
+
if (!block.text) continue;
|
|
852
|
+
content.push({
|
|
853
|
+
type: 'text',
|
|
854
|
+
text: block.text,
|
|
855
|
+
cache_control: { type: 'ephemeral', ttl: block.ttl ?? '5m' },
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
// Trailing stable instructions block (also cacheable).
|
|
859
|
+
if (stableInstructions) {
|
|
860
|
+
content.push({
|
|
861
|
+
type: 'text',
|
|
862
|
+
text: stableInstructions,
|
|
863
|
+
cache_control: { type: 'ephemeral', ttl: instructionsTtl },
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
if (dynamicInstructions) {
|
|
867
|
+
// Dynamic tail: NO cache_control so it doesn't shift the cache prefix.
|
|
868
|
+
content.push({ type: 'text', text: dynamicInstructions });
|
|
701
869
|
}
|
|
870
|
+
finalInstructions = { content } as BaseMessageFields;
|
|
871
|
+
} else if (useBedrockCache && (hasAnyCacheBlocks || stableInstructions)) {
|
|
872
|
+
type BedrockBlock =
|
|
873
|
+
| { type: 'text'; text: string }
|
|
874
|
+
| { cachePoint: { type: 'default'; ttl?: t.AgentCacheTTL } };
|
|
875
|
+
const content: BedrockBlock[] = [];
|
|
876
|
+
// Emit each system_cache_blocks entry as text + cachePoint pair.
|
|
877
|
+
for (const block of systemCacheBlocks) {
|
|
878
|
+
if (!block.text) continue;
|
|
879
|
+
content.push({ type: 'text', text: block.text });
|
|
880
|
+
content.push({
|
|
881
|
+
cachePoint: { type: 'default', ttl: block.ttl ?? '5m' },
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
if (stableInstructions) {
|
|
885
|
+
content.push({ type: 'text', text: stableInstructions });
|
|
886
|
+
content.push({
|
|
887
|
+
cachePoint: { type: 'default', ttl: instructionsTtl },
|
|
888
|
+
});
|
|
889
|
+
}
|
|
890
|
+
if (dynamicInstructions) {
|
|
891
|
+
content.push({ type: 'text', text: dynamicInstructions });
|
|
892
|
+
}
|
|
893
|
+
finalInstructions = { content } as unknown as BaseMessageFields;
|
|
894
|
+
} else {
|
|
895
|
+
finalInstructions = [
|
|
896
|
+
...systemCacheBlocks.map((b) => b.text),
|
|
897
|
+
stableInstructions,
|
|
898
|
+
dynamicInstructions,
|
|
899
|
+
]
|
|
900
|
+
.filter((part) => part !== '')
|
|
901
|
+
.join('\n\n');
|
|
702
902
|
}
|
|
703
903
|
|
|
704
904
|
const systemMessage = new SystemMessage(finalInstructions);
|
|
@@ -774,6 +974,49 @@ export class AgentContext {
|
|
|
774
974
|
}
|
|
775
975
|
}
|
|
776
976
|
|
|
977
|
+
/** Active tool definitions for token accounting (excludes deferred-and-undiscovered entries
|
|
978
|
+
* and definitions whose `allowed_callers` exclude `'direct'`). Mirrors the gate
|
|
979
|
+
* `getEventDrivenToolsForBinding` applies so accounting and binding stay aligned. */
|
|
980
|
+
private getActiveToolDefinitions(): t.LCTool[] {
|
|
981
|
+
if (!this.toolDefinitions) {
|
|
982
|
+
return [];
|
|
983
|
+
}
|
|
984
|
+
return this.toolDefinitions.filter((def) => {
|
|
985
|
+
const allowedCallers = def.allowed_callers ?? ['direct'];
|
|
986
|
+
if (!allowedCallers.includes('direct')) {
|
|
987
|
+
return false;
|
|
988
|
+
}
|
|
989
|
+
return (
|
|
990
|
+
def.defer_loading !== true || this.discoveredToolNames.has(def.name)
|
|
991
|
+
);
|
|
992
|
+
});
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
/**
|
|
996
|
+
* Single source of truth for "which entries of `this.tools` should be
|
|
997
|
+
* treated as actually bound". Callers:
|
|
998
|
+
* - `getToolsForBinding` (non-event-driven branch)
|
|
999
|
+
* - `getEventDrivenToolsForBinding` (appends instance tools alongside
|
|
1000
|
+
* schema-only definitions)
|
|
1001
|
+
* - `calculateInstructionTokens` (counts schema bytes for accounting)
|
|
1002
|
+
*
|
|
1003
|
+
* In event-driven mode (`toolDefinitions` present) instance tools are
|
|
1004
|
+
* appended unfiltered; outside event-driven mode they pass through
|
|
1005
|
+
* `filterToolsForBinding`. Centralizing the decision here prevents the
|
|
1006
|
+
* accounting/binding paths from drifting apart, which was the root
|
|
1007
|
+
* cause of the original miscount (Fixes #121).
|
|
1008
|
+
*/
|
|
1009
|
+
private getEffectiveInstanceTools(): t.GraphTools | undefined {
|
|
1010
|
+
if (!this.tools) {
|
|
1011
|
+
return undefined;
|
|
1012
|
+
}
|
|
1013
|
+
const isEventDriven = (this.toolDefinitions?.length ?? 0) > 0;
|
|
1014
|
+
if (isEventDriven || !this.toolRegistry) {
|
|
1015
|
+
return this.tools;
|
|
1016
|
+
}
|
|
1017
|
+
return this.filterToolsForBinding(this.tools);
|
|
1018
|
+
}
|
|
1019
|
+
|
|
777
1020
|
/**
|
|
778
1021
|
* Calculate tool tokens and add to instruction tokens
|
|
779
1022
|
* Note: System message tokens are calculated during systemRunnable creation
|
|
@@ -791,9 +1034,17 @@ export class AgentContext {
|
|
|
791
1034
|
// Reset per-tool breakdown
|
|
792
1035
|
this.toolsDetail = [];
|
|
793
1036
|
|
|
1037
|
+
/* Use `getEffectiveInstanceTools()` so accounting reflects exactly the
|
|
1038
|
+
* subset that `getToolsForBinding` would emit — preventing the
|
|
1039
|
+
* worst-case-ceiling miscount that triggered spurious `empty_messages`
|
|
1040
|
+
* preflight rejections at low `maxContextTokens`. Deferred and
|
|
1041
|
+
* non-`'direct'` `toolDefinitions` are excluded by
|
|
1042
|
+
* `getActiveToolDefinitions()` below. */
|
|
1043
|
+
const effectiveInstanceTools = this.getEffectiveInstanceTools();
|
|
1044
|
+
|
|
794
1045
|
// Count tokens for bound tools (StructuredTool instances with .schema)
|
|
795
|
-
if (
|
|
796
|
-
for (const tool of
|
|
1046
|
+
if (effectiveInstanceTools && effectiveInstanceTools.length > 0) {
|
|
1047
|
+
for (const tool of effectiveInstanceTools) {
|
|
797
1048
|
const genericTool = tool as Record<string, unknown>;
|
|
798
1049
|
if (
|
|
799
1050
|
genericTool.schema != null &&
|
|
@@ -822,25 +1073,27 @@ export class AgentContext {
|
|
|
822
1073
|
// Count tokens for tool definitions (MCP / event-driven tools).
|
|
823
1074
|
// These are sent to the provider API as tool schemas alongside bound tools.
|
|
824
1075
|
// Both can be populated simultaneously (graph tools + MCP tools).
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
description: def.description ?? '',
|
|
833
|
-
parameters: def.parameters ?? {},
|
|
834
|
-
};
|
|
835
|
-
const defTokens = tokenCounter(
|
|
836
|
-
new SystemMessage(JSON.stringify(schema))
|
|
837
|
-
);
|
|
838
|
-
this.toolsDetail.push({
|
|
839
|
-
name: def.name || 'unknown',
|
|
840
|
-
tokens: defTokens,
|
|
841
|
-
});
|
|
842
|
-
toolTokens += defTokens;
|
|
1076
|
+
// Use `getActiveToolDefinitions()` so programmatic-only definitions
|
|
1077
|
+
// (e.g. `allowed_callers: ['code_execution']`) and deferred-and-
|
|
1078
|
+
// -undiscovered ones don't inflate `toolSchemaTokens` while never
|
|
1079
|
+
// being bound to the model.
|
|
1080
|
+
for (const def of this.getActiveToolDefinitions()) {
|
|
1081
|
+
if (countedToolNames.has(def.name)) {
|
|
1082
|
+
continue; // Already counted via this.tools
|
|
843
1083
|
}
|
|
1084
|
+
const schema = {
|
|
1085
|
+
name: def.name,
|
|
1086
|
+
description: def.description ?? '',
|
|
1087
|
+
parameters: def.parameters ?? {},
|
|
1088
|
+
};
|
|
1089
|
+
const defTokens = tokenCounter(
|
|
1090
|
+
new SystemMessage(JSON.stringify(schema))
|
|
1091
|
+
);
|
|
1092
|
+
this.toolsDetail.push({
|
|
1093
|
+
name: def.name || 'unknown',
|
|
1094
|
+
tokens: defTokens,
|
|
1095
|
+
});
|
|
1096
|
+
toolTokens += defTokens;
|
|
844
1097
|
}
|
|
845
1098
|
|
|
846
1099
|
// Store total tool tokens for breakdown reporting
|
|
@@ -1011,10 +1264,7 @@ export class AgentContext {
|
|
|
1011
1264
|
}
|
|
1012
1265
|
|
|
1013
1266
|
/** Traditional mode: filter actual tool instances */
|
|
1014
|
-
const filtered =
|
|
1015
|
-
!this.tools || !this.toolRegistry
|
|
1016
|
-
? this.tools
|
|
1017
|
-
: this.filterToolsForBinding(this.tools);
|
|
1267
|
+
const filtered = this.getEffectiveInstanceTools();
|
|
1018
1268
|
|
|
1019
1269
|
if (this.graphTools && this.graphTools.length > 0) {
|
|
1020
1270
|
return [...(filtered ?? []), ...this.graphTools];
|
|
@@ -1029,21 +1279,11 @@ export class AgentContext {
|
|
|
1029
1279
|
return this.graphTools ?? [];
|
|
1030
1280
|
}
|
|
1031
1281
|
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
if (
|
|
1038
|
-
def.defer_loading === true &&
|
|
1039
|
-
!this.discoveredToolNames.has(def.name)
|
|
1040
|
-
) {
|
|
1041
|
-
return false;
|
|
1042
|
-
}
|
|
1043
|
-
return true;
|
|
1044
|
-
});
|
|
1045
|
-
|
|
1046
|
-
const schemaTools = createSchemaOnlyTools(defsToInclude) as t.GraphTools;
|
|
1282
|
+
/* Reuse `getActiveToolDefinitions()` so the binding gate matches the
|
|
1283
|
+
* accounting filter exactly (single source of truth). */
|
|
1284
|
+
const schemaTools = createSchemaOnlyTools(
|
|
1285
|
+
this.getActiveToolDefinitions()
|
|
1286
|
+
) as t.GraphTools;
|
|
1047
1287
|
|
|
1048
1288
|
const allTools = [...schemaTools];
|
|
1049
1289
|
|
|
@@ -1051,6 +1291,9 @@ export class AgentContext {
|
|
|
1051
1291
|
allTools.push(...this.graphTools);
|
|
1052
1292
|
}
|
|
1053
1293
|
|
|
1294
|
+
/* In event-driven mode, instance tools are appended UNFILTERED (matching
|
|
1295
|
+
* `getEffectiveInstanceTools()`'s event-driven branch). Deferred /
|
|
1296
|
+
* non-direct logic is represented in `toolDefinitions`, not here. */
|
|
1054
1297
|
if (this.tools && this.tools.length > 0) {
|
|
1055
1298
|
allTools.push(...this.tools);
|
|
1056
1299
|
}
|