@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
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Constants } from '@/common';
|
|
2
|
+
import type { SubagentConfig } from '@/types';
|
|
3
|
+
import type { JsonSchemaType, LCTool } from '@/types/tools';
|
|
4
|
+
export declare const SubagentToolName = Constants.SUBAGENT;
|
|
5
|
+
export declare const SubagentToolDescription = "Delegate a task to a specialized subagent that runs in an isolated context window. The subagent executes independently and returns only its final text result \u2014 all intermediate tool calls, reasoning, and context stay isolated.\n\nWHEN TO USE:\n- The task is self-contained and can be described in a single prompt.\n- You want to offload verbose or exploratory work without bloating your own context.\n- A specialized subagent is available for the task domain.\n\nWHAT HAPPENS:\n- A fresh agent is created with the task description as its only input.\n- The subagent runs to completion using its own tools and context.\n- Only the final text response is returned to you.\n\nCONSTRAINTS:\n- subagent_type must match one of the available types listed below.\n- The subagent cannot see your conversation history.";
|
|
6
|
+
export declare const SubagentToolSchema: {
|
|
7
|
+
readonly type: "object";
|
|
8
|
+
readonly properties: {
|
|
9
|
+
readonly description: {
|
|
10
|
+
readonly type: "string";
|
|
11
|
+
readonly description: "Complete task description for the subagent. This is the ONLY information it receives — include all necessary context, requirements, and constraints.";
|
|
12
|
+
};
|
|
13
|
+
readonly subagent_type: {
|
|
14
|
+
readonly type: "string";
|
|
15
|
+
readonly description: "Which subagent type to delegate to. Must be one of the available types.";
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
readonly required: string[];
|
|
19
|
+
};
|
|
20
|
+
export declare const SubagentToolDefinition: LCTool;
|
|
21
|
+
/**
|
|
22
|
+
* Build the name, schema, and description params for `tool()` from available configs.
|
|
23
|
+
* Used by `Graph.createAgentNode()` when constructing the runtime tool instance.
|
|
24
|
+
* Extends `SubagentToolSchema` by populating `subagent_type.enum` dynamically.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildSubagentToolParams(configs: SubagentConfig[]): {
|
|
27
|
+
name: string;
|
|
28
|
+
schema: JsonSchemaType;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create a SubagentTool LCTool definition with dynamic enum and description
|
|
33
|
+
* populated from the available subagent configs.
|
|
34
|
+
* Used for the tool registry in event-driven mode.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createSubagentToolDefinition(configs: SubagentConfig[]): LCTool;
|
|
@@ -4,6 +4,23 @@ import type { RunnableConfig } from '@langchain/core/runnables';
|
|
|
4
4
|
import type { BaseMessage } from '@langchain/core/messages';
|
|
5
5
|
import type * as t from '@/types';
|
|
6
6
|
import { RunnableCallable } from '@/utils';
|
|
7
|
+
import { ToolOutputReferenceRegistry } from '@/tools/toolOutputReferences';
|
|
8
|
+
import type { ResolvedArgsByCallId } from '@/tools/toolOutputReferences';
|
|
9
|
+
/**
|
|
10
|
+
* Per-call batch context for `runTool`. Bundles every optional batch-scoped
|
|
11
|
+
* value the method needs so the signature stays at three positional params
|
|
12
|
+
* even as new context fields are added. (PR #117).
|
|
13
|
+
*/
|
|
14
|
+
type RunToolBatchContext = {
|
|
15
|
+
/** Position of this call within the parent ToolNode batch. */
|
|
16
|
+
batchIndex?: number;
|
|
17
|
+
/** Batch turn shared across every call in the batch. */
|
|
18
|
+
turn?: number;
|
|
19
|
+
/** Registry partition scope (run id or anonymous batch id). */
|
|
20
|
+
batchScopeId?: string;
|
|
21
|
+
/** Batch-local sink for post-substitution args. */
|
|
22
|
+
resolvedArgsByCallId?: ResolvedArgsByCallId;
|
|
23
|
+
};
|
|
7
24
|
export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
8
25
|
private toolMap;
|
|
9
26
|
private loadRuntimeTools?;
|
|
@@ -30,7 +47,37 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
|
30
47
|
private toolApprovalConfig?;
|
|
31
48
|
/** Buffer for recovering truncated tool call arguments from streaming data */
|
|
32
49
|
private streamingToolCallBuffer?;
|
|
33
|
-
|
|
50
|
+
/** Hook registry threaded down from Run for tool-lifecycle events. */
|
|
51
|
+
private hookRegistry?;
|
|
52
|
+
/**
|
|
53
|
+
* Tool output reference registry threaded down from Run / Graph
|
|
54
|
+
* (PR #114). When set, dispatchToolEvents resolves
|
|
55
|
+
* `{{tool<i>turn<n>}}` placeholders in args before invoking each tool
|
|
56
|
+
* and stores successful outputs under their stable reference keys for
|
|
57
|
+
* subsequent calls in the same run to pipe through.
|
|
58
|
+
*/
|
|
59
|
+
private toolOutputRegistry?;
|
|
60
|
+
/**
|
|
61
|
+
* Per-batch turn counter for the registry. Increments once per
|
|
62
|
+
* `dispatchToolEvents` invocation so `tool<i>turn<n>` keys remain
|
|
63
|
+
* unique across overlapping batches in a single run.
|
|
64
|
+
*/
|
|
65
|
+
private toolOutputTurn;
|
|
66
|
+
/**
|
|
67
|
+
* Counter for synthesising scope ids when `run()` is called without a
|
|
68
|
+
* `run_id` in config. Each anonymous batch gets a unique
|
|
69
|
+
* `\0anon-<n>` scope so concurrent invocations don't collide on the
|
|
70
|
+
* shared `toolOutputRegistry`.
|
|
71
|
+
*/
|
|
72
|
+
private anonBatchCounter;
|
|
73
|
+
constructor({ tools, toolMap, name, tags, errorHandler, toolCallStepIds, handleToolErrors, loadRuntimeTools, toolRegistry, sessions, eventDrivenMode, agentId, directToolNames, streamingToolCallBuffer, toolApprovalConfig, hookRegistry, toolOutputRegistry, toolOutputReferences, maxToolResultChars: _maxToolResultChars, }: t.ToolNodeConstructorParams);
|
|
74
|
+
/**
|
|
75
|
+
* Test-observation accessor for the tool-output reference registry.
|
|
76
|
+
* @internal Exposed for test observation only. Host code should rely on
|
|
77
|
+
* `{{tool<i>turn<n>}}` substitution at tool-invocation time and not
|
|
78
|
+
* mutate the registry directly.
|
|
79
|
+
*/
|
|
80
|
+
_unsafeGetToolOutputRegistry(): ToolOutputReferenceRegistry | undefined;
|
|
34
81
|
/**
|
|
35
82
|
* Returns cached programmatic tools, computing once on first access.
|
|
36
83
|
* Single iteration builds both toolMap and toolDefs simultaneously.
|
|
@@ -63,9 +110,15 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
|
63
110
|
*/
|
|
64
111
|
private requestApproval;
|
|
65
112
|
/**
|
|
66
|
-
* Runs a single tool call with error handling
|
|
113
|
+
* Runs a single tool call with error handling.
|
|
114
|
+
*
|
|
115
|
+
* @param batchContext Optional per-batch context (PR #117).
|
|
116
|
+
* Threaded from `run()` for tool output reference annotation. The
|
|
117
|
+
* `batchScopeId` field carries an anonymous synthetic scope when the
|
|
118
|
+
* caller has no `run_id`, so concurrent batches don't collide on the
|
|
119
|
+
* shared registry.
|
|
67
120
|
*/
|
|
68
|
-
protected runTool(call: ToolCall, config: RunnableConfig): Promise<BaseMessage | Command>;
|
|
121
|
+
protected runTool(call: ToolCall, config: RunnableConfig, batchContext?: RunToolBatchContext): Promise<BaseMessage | Command>;
|
|
69
122
|
/**
|
|
70
123
|
* Recover truncated tool call arguments using the raw streaming buffer.
|
|
71
124
|
*
|
|
@@ -89,6 +142,14 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
|
89
142
|
* @returns The args with recovered fields merged in
|
|
90
143
|
*/
|
|
91
144
|
private recoverTruncatedArgs;
|
|
145
|
+
/**
|
|
146
|
+
* Stores the raw, untruncated tool output in the registry under `refKey`
|
|
147
|
+
* (when registry + refKey are both present) and returns the metadata
|
|
148
|
+
* envelope to stamp on `ToolMessage.additional_kwargs`. The lazy
|
|
149
|
+
* annotation transform reads `_refKey` / `_refScope` / `_unresolvedRefs`
|
|
150
|
+
* at LLM request time to produce the transient annotated copy.
|
|
151
|
+
*/
|
|
152
|
+
private recordOutputReference;
|
|
92
153
|
/**
|
|
93
154
|
* Builds code session context for injection into event-driven tool calls.
|
|
94
155
|
* Mirrors the session injection logic in runTool() for direct execution.
|
|
@@ -110,8 +171,18 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
|
110
171
|
*/
|
|
111
172
|
private handleRunToolCompletions;
|
|
112
173
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
174
|
+
* Converts InjectedMessage entries into LangChain HumanMessages.
|
|
175
|
+
* 'user' and 'system' both become HumanMessage to avoid provider rejections
|
|
176
|
+
* (Anthropic/Google reject non-leading SystemMessages); the original role
|
|
177
|
+
* and metadata are preserved in additional_kwargs for downstream consumers.
|
|
178
|
+
*/
|
|
179
|
+
private convertInjectedMessages;
|
|
180
|
+
/**
|
|
181
|
+
* Dispatches tool calls to the host via ON_TOOL_EXECUTE event and returns
|
|
182
|
+
* the resulting ToolMessages along with any injected messages emitted by
|
|
183
|
+
* the host (e.g. SkillTool body injection). Injected messages must be
|
|
184
|
+
* placed AFTER the ToolMessages so the AIMessage tool_calls -> ToolMessage
|
|
185
|
+
* adjacency required by some providers is preserved.
|
|
115
186
|
*/
|
|
116
187
|
private dispatchToolEvents;
|
|
117
188
|
/**
|
|
@@ -124,3 +195,4 @@ export declare class ToolNode<T = any> extends RunnableCallable<T, T> {
|
|
|
124
195
|
private isMessagesState;
|
|
125
196
|
}
|
|
126
197
|
export declare function toolsCondition<T extends string>(state: BaseMessage[] | typeof MessagesAnnotation.State, toolNode: T, invokedToolIds?: Set<string>): T | typeof END;
|
|
198
|
+
export {};
|
|
@@ -67,7 +67,7 @@ export interface MemoryGetToolResult {
|
|
|
67
67
|
export declare function buildMemorySearchUnavailableResult(error: string | undefined): MemorySearchToolResult;
|
|
68
68
|
/**
|
|
69
69
|
* Clamp a ranked result list to a total character budget.
|
|
70
|
-
* Ported from
|
|
70
|
+
* Ported from a reference implementation `tools.citations.ts::clampResultsByInjectedChars`.
|
|
71
71
|
*/
|
|
72
72
|
export declare function clampResultsByInjectedChars<T extends {
|
|
73
73
|
content: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as t from './types';
|
|
2
|
+
export declare class TavilyScraper implements t.BaseScraper {
|
|
3
|
+
private apiKey;
|
|
4
|
+
private apiUrl;
|
|
5
|
+
private timeout;
|
|
6
|
+
private payloadTimeout;
|
|
7
|
+
private logger;
|
|
8
|
+
private extractDepth;
|
|
9
|
+
private includeImages;
|
|
10
|
+
private includeFavicon;
|
|
11
|
+
private format;
|
|
12
|
+
constructor(config?: t.TavilyScraperConfig);
|
|
13
|
+
scrapeUrl(url: string, options?: t.TavilyScrapeOptions): Promise<[string, t.TavilyScrapeResponse]>;
|
|
14
|
+
scrapeUrls(urls: string[], options?: t.TavilyScrapeOptions): Promise<Array<[string, t.TavilyScrapeResponse]>>;
|
|
15
|
+
private extractBatch;
|
|
16
|
+
extractContent(response: t.TavilyScrapeResponse): [string, undefined | t.References];
|
|
17
|
+
extractMetadata(response: t.TavilyScrapeResponse): t.GenericScrapeMetadata;
|
|
18
|
+
}
|
|
19
|
+
export declare const createTavilyScraper: (config?: t.TavilyScraperConfig) => TavilyScraper;
|
|
@@ -2,8 +2,8 @@ import type { Logger as WinstonLogger } from 'winston';
|
|
|
2
2
|
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
3
3
|
import type { BaseReranker } from './rerankers';
|
|
4
4
|
import { DATE_RANGE } from './schema';
|
|
5
|
-
export type SearchProvider = 'serper' | 'searxng';
|
|
6
|
-
export type ScraperProvider = 'firecrawl' | 'serper';
|
|
5
|
+
export type SearchProvider = 'serper' | 'searxng' | 'tavily';
|
|
6
|
+
export type ScraperProvider = 'firecrawl' | 'serper' | 'tavily';
|
|
7
7
|
export type RerankerType = 'infinity' | 'jina' | 'cohere' | 'none';
|
|
8
8
|
export interface Highlight {
|
|
9
9
|
score: number;
|
|
@@ -56,11 +56,50 @@ export interface Source {
|
|
|
56
56
|
snippet?: string;
|
|
57
57
|
date?: string;
|
|
58
58
|
}
|
|
59
|
+
export type TavilyTimeRange = 'day' | 'week' | 'month' | 'year';
|
|
60
|
+
export type TavilyTimeRangeInput = TavilyTimeRange | 'h' | 'd' | 'w' | 'm' | 'y';
|
|
61
|
+
export interface TavilySearchOptions {
|
|
62
|
+
searchDepth?: 'basic' | 'advanced' | 'fast' | 'ultra-fast';
|
|
63
|
+
maxResults?: number;
|
|
64
|
+
includeImages?: boolean;
|
|
65
|
+
includeAnswer?: boolean | 'basic' | 'advanced';
|
|
66
|
+
includeRawContent?: boolean | 'markdown' | 'text';
|
|
67
|
+
includeDomains?: string[];
|
|
68
|
+
excludeDomains?: string[];
|
|
69
|
+
topic?: 'general' | 'news' | 'finance';
|
|
70
|
+
timeRange?: TavilyTimeRangeInput;
|
|
71
|
+
includeImageDescriptions?: boolean;
|
|
72
|
+
includeFavicon?: boolean;
|
|
73
|
+
chunksPerSource?: number;
|
|
74
|
+
safeSearch?: boolean;
|
|
75
|
+
timeout?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface TavilySearchPayload {
|
|
78
|
+
query: string;
|
|
79
|
+
search_depth: NonNullable<TavilySearchOptions['searchDepth']>;
|
|
80
|
+
topic: NonNullable<TavilySearchOptions['topic']>;
|
|
81
|
+
max_results: number;
|
|
82
|
+
safe_search?: boolean;
|
|
83
|
+
time_range?: TavilyTimeRange;
|
|
84
|
+
country?: string;
|
|
85
|
+
include_images?: boolean;
|
|
86
|
+
include_answer?: NonNullable<TavilySearchOptions['includeAnswer']>;
|
|
87
|
+
include_raw_content?: NonNullable<TavilySearchOptions['includeRawContent']>;
|
|
88
|
+
include_domains?: string[];
|
|
89
|
+
exclude_domains?: string[];
|
|
90
|
+
include_image_descriptions?: boolean;
|
|
91
|
+
include_favicon?: boolean;
|
|
92
|
+
chunks_per_source?: number;
|
|
93
|
+
}
|
|
59
94
|
export interface SearchConfig {
|
|
60
95
|
searchProvider?: SearchProvider;
|
|
61
96
|
serperApiKey?: string;
|
|
62
97
|
searxngInstanceUrl?: string;
|
|
63
98
|
searxngApiKey?: string;
|
|
99
|
+
tavilyApiKey?: string;
|
|
100
|
+
tavilySearchUrl?: string;
|
|
101
|
+
tavilyExtractUrl?: string;
|
|
102
|
+
tavilySearchOptions?: TavilySearchOptions;
|
|
64
103
|
/** Domains to exclude from search results (e.g., 'reddit.com', 'twitter.com').
|
|
65
104
|
* Appended as -site: operators to the search query. */
|
|
66
105
|
domainBlocklist?: string[];
|
|
@@ -101,6 +140,16 @@ export interface SerperScraperConfig {
|
|
|
101
140
|
logger?: Logger;
|
|
102
141
|
includeMarkdown?: boolean;
|
|
103
142
|
}
|
|
143
|
+
export interface TavilyScraperConfig {
|
|
144
|
+
apiKey?: string;
|
|
145
|
+
apiUrl?: string;
|
|
146
|
+
timeout?: number;
|
|
147
|
+
logger?: Logger;
|
|
148
|
+
extractDepth?: 'basic' | 'advanced';
|
|
149
|
+
includeImages?: boolean;
|
|
150
|
+
includeFavicon?: boolean;
|
|
151
|
+
format?: 'markdown' | 'text';
|
|
152
|
+
}
|
|
104
153
|
export interface ScraperContentResult {
|
|
105
154
|
content: string;
|
|
106
155
|
}
|
|
@@ -141,6 +190,7 @@ export interface CohereRerankerResponse {
|
|
|
141
190
|
export type SafeSearchLevel = 0 | 1 | 2;
|
|
142
191
|
export type Logger = WinstonLogger;
|
|
143
192
|
export interface SearchToolConfig extends SearchConfig, ProcessSourcesConfig, FirecrawlConfig {
|
|
193
|
+
tavilyScraperOptions?: TavilyScraperConfig;
|
|
144
194
|
logger?: Logger;
|
|
145
195
|
safeSearch?: SafeSearchLevel;
|
|
146
196
|
jinaApiKey?: string;
|
|
@@ -163,15 +213,27 @@ export type UsedReferences = {
|
|
|
163
213
|
originalIndex: number;
|
|
164
214
|
reference: MediaReference;
|
|
165
215
|
}[];
|
|
216
|
+
export type AnyScraperResponse = FirecrawlScrapeResponse | SerperScrapeResponse | TavilyScrapeResponse;
|
|
166
217
|
/** Base Scraper Interface */
|
|
167
218
|
export interface BaseScraper {
|
|
168
|
-
scrapeUrl(url: string, options?: unknown): Promise<[string,
|
|
169
|
-
|
|
170
|
-
|
|
219
|
+
scrapeUrl(url: string, options?: unknown): Promise<[string, AnyScraperResponse]>;
|
|
220
|
+
scrapeUrls?(urls: string[], options?: unknown): Promise<Array<[string, AnyScraperResponse]>>;
|
|
221
|
+
extractContent(response: AnyScraperResponse): [string, undefined | References];
|
|
222
|
+
extractMetadata(response: AnyScraperResponse): ScrapeMetadata | GenericScrapeMetadata;
|
|
171
223
|
}
|
|
172
224
|
/** Firecrawl */
|
|
173
225
|
export type FirecrawlScrapeOptions = Omit<FirecrawlScraperConfig, 'apiKey' | 'apiUrl' | 'version' | 'logger'>;
|
|
174
226
|
export type SerperScrapeOptions = Omit<SerperScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
|
|
227
|
+
export type TavilyScrapeOptions = Omit<TavilyScraperConfig, 'apiKey' | 'apiUrl' | 'logger'>;
|
|
228
|
+
export interface TavilyExtractPayload {
|
|
229
|
+
urls: string[];
|
|
230
|
+
extract_depth: NonNullable<TavilyScraperConfig['extractDepth']>;
|
|
231
|
+
include_images: boolean;
|
|
232
|
+
include_favicon?: boolean;
|
|
233
|
+
format?: NonNullable<TavilyScraperConfig['format']>;
|
|
234
|
+
timeout?: number;
|
|
235
|
+
}
|
|
236
|
+
export type GenericScrapeMetadata = Record<string, string | number | boolean | null | undefined>;
|
|
175
237
|
export interface ScrapeMetadata {
|
|
176
238
|
sourceURL?: string;
|
|
177
239
|
url?: string;
|
|
@@ -247,6 +309,38 @@ export interface SerperScrapeResponse {
|
|
|
247
309
|
};
|
|
248
310
|
error?: string;
|
|
249
311
|
}
|
|
312
|
+
export interface TavilyScrapeResponse {
|
|
313
|
+
success: boolean;
|
|
314
|
+
data?: {
|
|
315
|
+
rawContent?: string;
|
|
316
|
+
images?: string[];
|
|
317
|
+
favicon?: string;
|
|
318
|
+
};
|
|
319
|
+
error?: string;
|
|
320
|
+
}
|
|
321
|
+
export interface TavilySearchResult {
|
|
322
|
+
title?: string;
|
|
323
|
+
url?: string;
|
|
324
|
+
content?: string;
|
|
325
|
+
score?: number;
|
|
326
|
+
published_date?: string;
|
|
327
|
+
}
|
|
328
|
+
export type TavilyImageResult = string | {
|
|
329
|
+
url?: string;
|
|
330
|
+
description?: string;
|
|
331
|
+
};
|
|
332
|
+
export interface TavilySearchResponse {
|
|
333
|
+
answer?: string;
|
|
334
|
+
images?: TavilyImageResult[];
|
|
335
|
+
results?: TavilySearchResult[];
|
|
336
|
+
}
|
|
337
|
+
export interface TavilyExtractResult {
|
|
338
|
+
url: string;
|
|
339
|
+
raw_content?: string;
|
|
340
|
+
images?: string[];
|
|
341
|
+
favicon?: string;
|
|
342
|
+
error?: string;
|
|
343
|
+
}
|
|
250
344
|
export interface FirecrawlScraperConfig {
|
|
251
345
|
apiKey?: string;
|
|
252
346
|
apiUrl?: string;
|
|
@@ -6,5 +6,5 @@ import type * as t from './types';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const createDefaultLogger: () => t.Logger;
|
|
8
8
|
export declare const fileExtRegex: RegExp;
|
|
9
|
-
export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger) => string | undefined;
|
|
10
|
-
export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata, logger?: t.Logger): string | undefined;
|
|
9
|
+
export declare const getDomainName: (link: string, metadata?: t.ScrapeMetadata | t.GenericScrapeMetadata, logger?: t.Logger) => string | undefined;
|
|
10
|
+
export declare function getAttribution(link: string, metadata?: t.ScrapeMetadata | t.GenericScrapeMetadata, logger?: t.Logger): string | undefined;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SkillCatalogEntry } from '@/types';
|
|
2
|
+
export type SkillCatalogOptions = {
|
|
3
|
+
/** Total context window in tokens. Default: 200_000 */
|
|
4
|
+
contextWindowTokens?: number;
|
|
5
|
+
/** Fraction of context budget for catalog. Default: 0.01 (1%) */
|
|
6
|
+
budgetPercent?: number;
|
|
7
|
+
/** Max chars per entry description. Default: 250 */
|
|
8
|
+
maxEntryChars?: number;
|
|
9
|
+
/** Descriptions below this length trigger names-only fallback. Default: 20 */
|
|
10
|
+
minDescLength?: number;
|
|
11
|
+
/** Approximate chars per token for budget calculation. Default: 4 */
|
|
12
|
+
charsPerToken?: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Formats a skill catalog for injection into agent context.
|
|
16
|
+
* Uses a truncation ladder: full descriptions, proportional truncation, names-only.
|
|
17
|
+
* Returns empty string for empty input.
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatSkillCatalog(skills: SkillCatalogEntry[], opts?: SkillCatalogOptions): string;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
2
|
+
import type { AgentInputs, StandardGraphInput, ResolvedSubagentConfig, SubagentConfig, TokenCounter } from '@/types';
|
|
3
|
+
import type { HookRegistry } from '@/hooks';
|
|
4
|
+
import type { AgentContext } from '@/agents/AgentContext';
|
|
5
|
+
import type { StandardGraph } from '@/graphs/Graph';
|
|
6
|
+
import type { HandlerRegistry } from '@/events';
|
|
7
|
+
export type SubagentExecuteParams = {
|
|
8
|
+
description: string;
|
|
9
|
+
subagentType: string;
|
|
10
|
+
threadId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Parent-side `tool_call_id` of the `subagent` tool invocation that
|
|
13
|
+
* triggered this execution. Surfaced on {@link SubagentUpdateEvent} so
|
|
14
|
+
* hosts can correlate child updates back to the originating tool call
|
|
15
|
+
* without relying on event ordering heuristics.
|
|
16
|
+
*/
|
|
17
|
+
parentToolCallId?: string;
|
|
18
|
+
};
|
|
19
|
+
export type SubagentExecuteResult = {
|
|
20
|
+
content: string;
|
|
21
|
+
messages: BaseMessage[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Factory that constructs a child graph for subagent execution. Injected
|
|
25
|
+
* rather than imported so that `SubagentExecutor` does not have a runtime
|
|
26
|
+
* dependency on `StandardGraph` — this avoids a circular dependency between
|
|
27
|
+
* `src/graphs/Graph.ts` and `src/tools/subagent/` that would otherwise break
|
|
28
|
+
* Rollup's chunking under `preserveModules`.
|
|
29
|
+
*/
|
|
30
|
+
export type ChildGraphFactory = (input: StandardGraphInput) => StandardGraph;
|
|
31
|
+
export type SubagentExecutorOptions = {
|
|
32
|
+
configs: Map<string, ResolvedSubagentConfig>;
|
|
33
|
+
parentSignal?: AbortSignal;
|
|
34
|
+
hookRegistry?: HookRegistry;
|
|
35
|
+
parentRunId: string;
|
|
36
|
+
parentAgentId?: string;
|
|
37
|
+
tokenCounter?: TokenCounter;
|
|
38
|
+
/** Remaining nesting budget. 0 or negative blocks execution. */
|
|
39
|
+
maxDepth?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Factory for constructing the isolated child graph. Callers pass
|
|
42
|
+
* `(input) => new StandardGraph(input)` — injected to break a circular
|
|
43
|
+
* module dependency.
|
|
44
|
+
*/
|
|
45
|
+
createChildGraph: ChildGraphFactory;
|
|
46
|
+
/**
|
|
47
|
+
* Parent's event handler registry. When provided, child-graph events are
|
|
48
|
+
* forwarded through this registry so hosts can:
|
|
49
|
+
* (a) execute event-driven tools (`ON_TOOL_EXECUTE` routed to parent's handler),
|
|
50
|
+
* (b) surface child activity to a UI via wrapped {@link GraphEvents.ON_SUBAGENT_UPDATE}.
|
|
51
|
+
* When omitted, the child runs fully isolated (legacy behavior).
|
|
52
|
+
*
|
|
53
|
+
* Can be a direct `HandlerRegistry` or a zero-arg getter — use the getter
|
|
54
|
+
* form when the registry is assigned to the graph AFTER the executor is
|
|
55
|
+
* constructed (the current `Run.create` flow sets `handlerRegistry`
|
|
56
|
+
* post-`createWorkflow`, so `createAgentNode` must capture lazily).
|
|
57
|
+
*/
|
|
58
|
+
parentHandlerRegistry?: HandlerRegistry | (() => HandlerRegistry | undefined);
|
|
59
|
+
};
|
|
60
|
+
export declare class SubagentExecutor {
|
|
61
|
+
private readonly configs;
|
|
62
|
+
private readonly parentSignal?;
|
|
63
|
+
private readonly hookRegistry?;
|
|
64
|
+
private readonly parentRunId;
|
|
65
|
+
private readonly parentAgentId?;
|
|
66
|
+
private readonly tokenCounter?;
|
|
67
|
+
private readonly maxDepth;
|
|
68
|
+
private readonly createChildGraph;
|
|
69
|
+
private readonly resolveParentHandlerRegistry?;
|
|
70
|
+
constructor(options: SubagentExecutorOptions);
|
|
71
|
+
/** Snapshot of the parent's registry at the moment a subagent is dispatched. */
|
|
72
|
+
private getParentHandlerRegistry;
|
|
73
|
+
execute(params: SubagentExecuteParams): Promise<SubagentExecuteResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Emits a single {@link GraphEvents.ON_SUBAGENT_UPDATE} envelope through the
|
|
76
|
+
* parent's handler registry. Silent no-op when no parent registry is set.
|
|
77
|
+
* Errors are swallowed — update events are observational.
|
|
78
|
+
*/
|
|
79
|
+
private emitSubagentUpdate;
|
|
80
|
+
/**
|
|
81
|
+
* Builds a BaseCallbackHandler that intercepts the child graph's custom
|
|
82
|
+
* events. Routing rules:
|
|
83
|
+
* - `ON_TOOL_EXECUTE` → forwarded as-is to the parent's ON_TOOL_EXECUTE
|
|
84
|
+
* handler (so event-driven tools work identically for child and parent).
|
|
85
|
+
* - `ON_RUN_STEP` / `ON_RUN_STEP_DELTA` / `ON_RUN_STEP_COMPLETED` /
|
|
86
|
+
* `ON_MESSAGE_DELTA` / `ON_REASONING_DELTA` → wrapped in a
|
|
87
|
+
* {@link GraphEvents.ON_SUBAGENT_UPDATE} envelope with a human-readable
|
|
88
|
+
* label, delivered to the parent's subagent-update handler.
|
|
89
|
+
* - Everything else → ignored (keeps parent's UI scoped to the events it
|
|
90
|
+
* cares about; host apps can extend by registering more phases).
|
|
91
|
+
*/
|
|
92
|
+
private createForwarderCallback;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Produces a short single-line label for an arbitrary forwarded child event.
|
|
96
|
+
* Used to populate {@link SubagentUpdateEvent.label} so the host UI can show
|
|
97
|
+
* a compact status ticker without parsing the raw payload.
|
|
98
|
+
*/
|
|
99
|
+
export declare function summarizeEvent(eventName: string, data: unknown): string;
|
|
100
|
+
/**
|
|
101
|
+
* Walk messages from last to first, returning the text content of the most
|
|
102
|
+
* recent AIMessage that has any. Non-text blocks (tool_use, thinking,
|
|
103
|
+
* redacted_thinking, tool_result) are stripped. If the last AIMessage is
|
|
104
|
+
* pure tool_use (e.g. the subagent hit `maxTurns` mid-tool-call), the walk
|
|
105
|
+
* continues to earlier AIMessages so partial progress is salvaged — this
|
|
106
|
+
* matches Claude Code's behavior in `agentToolUtils.finalizeAgentTool`.
|
|
107
|
+
* Returns "Task completed" only when no AIMessage in the history contains
|
|
108
|
+
* any text.
|
|
109
|
+
*/
|
|
110
|
+
export declare function filterSubagentResult(messages: BaseMessage[]): string;
|
|
111
|
+
/**
|
|
112
|
+
* Resolve self-spawn configs by filling in agentInputs from the parent context.
|
|
113
|
+
* Returns configs with agentInputs guaranteed present. Throws on duplicate
|
|
114
|
+
* `type` values to prevent silent config shadowing.
|
|
115
|
+
*/
|
|
116
|
+
export declare function resolveSubagentConfigs(configs: SubagentConfig[], parentContext: AgentContext): ResolvedSubagentConfig[];
|
|
117
|
+
/**
|
|
118
|
+
* Build child AgentInputs from a resolved config, stripping nesting and
|
|
119
|
+
* (optionally) event-driven fields. When `allowNested: true`, the child's
|
|
120
|
+
* `maxSubagentDepth` is decremented so that depth is consumed as the call
|
|
121
|
+
* chain deepens across graph boundaries — the parent's executor-level check
|
|
122
|
+
* alone cannot see into the child graph's separate executor.
|
|
123
|
+
*
|
|
124
|
+
* When `keepToolDefinitions` is `true`, the child retains the parent's
|
|
125
|
+
* `toolDefinitions` so event-driven tools remain usable. This is only safe
|
|
126
|
+
* when the caller has wired a forwarder for `ON_TOOL_EXECUTE` to a
|
|
127
|
+
* registered handler — otherwise the child will hang on tool dispatch.
|
|
128
|
+
*
|
|
129
|
+
* @remarks Advanced utility: exported primarily for testing and by
|
|
130
|
+
* {@link SubagentExecutor}. Host applications configuring subagents should
|
|
131
|
+
* not need to call this directly — it is invoked internally when a subagent
|
|
132
|
+
* tool is dispatched. The depth-countdown contract (parent's `maxDepth` in,
|
|
133
|
+
* child's decremented `maxSubagentDepth` on the returned inputs) is the
|
|
134
|
+
* mechanism that bounds nesting across graph boundaries; callers must
|
|
135
|
+
* respect it.
|
|
136
|
+
*/
|
|
137
|
+
export declare function buildChildInputs(config: ResolvedSubagentConfig, childAgentId: string, parentMaxDepth: number, keepToolDefinitions?: boolean): AgentInputs;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the subagent file-passing pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for:
|
|
5
|
+
* - the `file_ids` shape carried on the `subagent` tool's input schema
|
|
6
|
+
* - the manifest line format the host renders into the supervisor's
|
|
7
|
+
* trailing user-message channel (cache-stable, never the system block)
|
|
8
|
+
* - the resolver hook signature host applications implement to map
|
|
9
|
+
* parent-side `file_id`s into the child's `tool_resources` + first
|
|
10
|
+
* HumanMessage context blocks
|
|
11
|
+
*
|
|
12
|
+
* Keeping these in one place lets the lib, the host, and tests all
|
|
13
|
+
* reference the SAME constants — drift would silently break selective
|
|
14
|
+
* file passing (parent claims a file is available, child gets `null`).
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* One entry in the parent's file manifest. The host serializes an array of
|
|
18
|
+
* these into a short newline-delimited block that lives in the supervisor's
|
|
19
|
+
* trailing user-message channel — see `MANIFEST_PREFIX` /
|
|
20
|
+
* `formatFileManifest` for the canonical line format.
|
|
21
|
+
*/
|
|
22
|
+
export interface SubagentFileManifestEntry {
|
|
23
|
+
/** Stable file ID. Parent's LLM passes this back via `subagent({ file_ids })`. */
|
|
24
|
+
file_id: string;
|
|
25
|
+
/** Display name, used in the manifest line. */
|
|
26
|
+
name: string;
|
|
27
|
+
/** MIME type. Optional — only included in the manifest when present. */
|
|
28
|
+
type?: string;
|
|
29
|
+
/** Size in bytes. Optional — formatted for human readability when present. */
|
|
30
|
+
size?: number;
|
|
31
|
+
}
|
|
32
|
+
/** Header line that begins every parent file manifest block. */
|
|
33
|
+
export declare const MANIFEST_PREFIX = "Files available for delegation:";
|
|
34
|
+
/**
|
|
35
|
+
* Format a single manifest entry as a `- key: value, key: value, ...` line.
|
|
36
|
+
* Pure function — keeps the format consistent across host injection paths
|
|
37
|
+
* and test assertions.
|
|
38
|
+
*/
|
|
39
|
+
export declare function formatManifestEntry(entry: SubagentFileManifestEntry): string;
|
|
40
|
+
/**
|
|
41
|
+
* Format a full manifest block for injection below the cache breakpoint.
|
|
42
|
+
* Returns `null` for empty input so callers can `if (block) push(block)`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function formatFileManifest(entries: readonly SubagentFileManifestEntry[]): string | null;
|
|
45
|
+
/**
|
|
46
|
+
* Result of resolving parent-side `file_ids` for a child subagent invocation.
|
|
47
|
+
* Each field is shaped to slot directly into the child's runtime:
|
|
48
|
+
* - `toolResources` is merged into the child's `agentInputs.tool_resources`
|
|
49
|
+
* so file_search / execute_code tools see the file
|
|
50
|
+
* - `messageContextBlocks` is prepended to the child's first HumanMessage
|
|
51
|
+
* (alongside the supervisor's task description) so the child sees image
|
|
52
|
+
* blocks for vision models and a short text reference for everything else
|
|
53
|
+
*/
|
|
54
|
+
export interface ResolvedSubagentFiles {
|
|
55
|
+
/**
|
|
56
|
+
* Augmented tool_resources object merged into the child's `agentInputs`.
|
|
57
|
+
* Shape matches `AgentToolResources` from the host (kept untyped here to
|
|
58
|
+
* avoid pulling host types into the lib).
|
|
59
|
+
*/
|
|
60
|
+
toolResources?: Record<string, unknown>;
|
|
61
|
+
/**
|
|
62
|
+
* Files the resolver successfully looked up. Forwarded verbatim into the
|
|
63
|
+
* child's first message metadata for downstream attachment rendering.
|
|
64
|
+
*/
|
|
65
|
+
attachments?: Array<Record<string, unknown>>;
|
|
66
|
+
/**
|
|
67
|
+
* LangChain `HumanMessage.content` blocks (text or image_url) that should
|
|
68
|
+
* be prepended to the child's first message. Empty array for the common
|
|
69
|
+
* case where files are referenced only via tool_resources.
|
|
70
|
+
*/
|
|
71
|
+
messageContextBlocks?: Array<Record<string, unknown>>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Hook the host injects to resolve parent-side `file_id`s into child runtime
|
|
75
|
+
* context. Called once per `subagent` tool invocation that includes
|
|
76
|
+
* `file_ids`. Must be cheap on the empty-array path — the lib calls it for
|
|
77
|
+
* every subagent dispatch.
|
|
78
|
+
*
|
|
79
|
+
* @param fileIds - ID strings the supervisor's LLM picked from the manifest.
|
|
80
|
+
* @param childAgentId - ID assigned to the child for this invocation.
|
|
81
|
+
* @returns Resolved file context for the child, or `undefined` when nothing
|
|
82
|
+
* could be resolved (treated as a soft no-op — the child still runs).
|
|
83
|
+
*/
|
|
84
|
+
export type ResolveSubagentFiles = (fileIds: string[], childAgentId: string) => Promise<ResolvedSubagentFiles | undefined>;
|