@illuma-ai/agents 1.4.0-alpha.6 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/cjs/agents/AgentContext.cjs +274 -67
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +44 -13
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +182 -5
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +162 -0
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
- package/dist/cjs/hooks/executeHooks.cjs +276 -0
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
- package/dist/cjs/hooks/matchers.cjs +256 -0
- package/dist/cjs/hooks/matchers.cjs.map +1 -0
- package/dist/cjs/hooks/types.cjs +27 -0
- package/dist/cjs/hooks/types.cjs.map +1 -0
- package/dist/cjs/langchain/google-common.cjs +3 -0
- package/dist/cjs/langchain/google-common.cjs.map +1 -0
- package/dist/cjs/langchain/index.cjs +86 -0
- package/dist/cjs/langchain/index.cjs.map +1 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
- package/dist/cjs/langchain/messages/tool.cjs +3 -0
- package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
- package/dist/cjs/langchain/messages.cjs +51 -0
- package/dist/cjs/langchain/messages.cjs.map +1 -0
- package/dist/cjs/langchain/openai.cjs +3 -0
- package/dist/cjs/langchain/openai.cjs.map +1 -0
- package/dist/cjs/langchain/prompts.cjs +11 -0
- package/dist/cjs/langchain/prompts.cjs.map +1 -0
- package/dist/cjs/langchain/runnables.cjs +19 -0
- package/dist/cjs/langchain/runnables.cjs.map +1 -0
- package/dist/cjs/langchain/tools.cjs +23 -0
- package/dist/cjs/langchain/tools.cjs.map +1 -0
- package/dist/cjs/langchain/utils/env.cjs +11 -0
- package/dist/cjs/langchain/utils/env.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
- package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
- package/dist/cjs/llm/bedrock/index.cjs +61 -33
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +0 -3
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +27 -10
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +178 -127
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +89 -0
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +156 -0
- package/dist/cjs/messages/contextPruning.cjs.map +1 -0
- package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +144 -20
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +505 -4
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/run.cjs +141 -1
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +235 -0
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
- package/dist/cjs/tools/CodeExecutor.cjs +44 -47
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +44 -0
- package/dist/cjs/tools/ReadFile.cjs.map +1 -0
- package/dist/cjs/tools/SkillTool.cjs +51 -0
- package/dist/cjs/tools/SkillTool.cjs.map +1 -0
- package/dist/cjs/tools/SubagentTool.cjs +93 -0
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +450 -24
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +11 -3
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
- package/dist/cjs/tools/search/tavily-search.cjs +372 -0
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
- package/dist/cjs/tools/search/tool.cjs +28 -4
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +10 -3
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +84 -0
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
- package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
- package/dist/cjs/types/agent-cache.cjs +53 -0
- package/dist/cjs/types/agent-cache.cjs.map +1 -0
- package/dist/cjs/types/graph.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +135 -0
- package/dist/cjs/utils/truncation.cjs.map +1 -0
- package/dist/esm/agents/AgentContext.mjs +274 -67
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +44 -12
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +182 -5
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +160 -0
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
- package/dist/esm/hooks/executeHooks.mjs +273 -0
- package/dist/esm/hooks/executeHooks.mjs.map +1 -0
- package/dist/esm/hooks/matchers.mjs +251 -0
- package/dist/esm/hooks/matchers.mjs.map +1 -0
- package/dist/esm/hooks/types.mjs +25 -0
- package/dist/esm/hooks/types.mjs.map +1 -0
- package/dist/esm/langchain/google-common.mjs +2 -0
- package/dist/esm/langchain/google-common.mjs.map +1 -0
- package/dist/esm/langchain/index.mjs +5 -0
- package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
- package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
- package/dist/esm/langchain/messages/tool.mjs +2 -0
- package/dist/esm/langchain/messages/tool.mjs.map +1 -0
- package/dist/esm/langchain/messages.mjs +2 -0
- package/dist/esm/langchain/messages.mjs.map +1 -0
- package/dist/esm/langchain/openai.mjs +2 -0
- package/dist/esm/langchain/openai.mjs.map +1 -0
- package/dist/esm/langchain/prompts.mjs +2 -0
- package/dist/esm/langchain/prompts.mjs.map +1 -0
- package/dist/esm/langchain/runnables.mjs +2 -0
- package/dist/esm/langchain/runnables.mjs.map +1 -0
- package/dist/esm/langchain/tools.mjs +2 -0
- package/dist/esm/langchain/tools.mjs.map +1 -0
- package/dist/esm/langchain/utils/env.mjs +2 -0
- package/dist/esm/langchain/utils/env.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
- package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
- package/dist/esm/llm/bedrock/index.mjs +61 -34
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +0 -3
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +27 -10
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/main.mjs +21 -27
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +89 -0
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +154 -0
- package/dist/esm/messages/contextPruning.mjs.map +1 -0
- package/dist/esm/messages/contextPruningSettings.mjs +50 -0
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +136 -12
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +504 -7
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/run.mjs +141 -1
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +227 -0
- package/dist/esm/tools/BashExecutor.mjs.map +1 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
- package/dist/esm/tools/CodeExecutor.mjs +44 -48
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +39 -0
- package/dist/esm/tools/ReadFile.mjs.map +1 -0
- package/dist/esm/tools/SkillTool.mjs +46 -0
- package/dist/esm/tools/SkillTool.mjs.map +1 -0
- package/dist/esm/tools/SubagentTool.mjs +86 -0
- package/dist/esm/tools/SubagentTool.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +452 -26
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +11 -3
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
- package/dist/esm/tools/search/tavily-search.mjs +370 -0
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
- package/dist/esm/tools/search/tool.mjs +28 -4
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +10 -3
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +82 -0
- package/dist/esm/tools/skillCatalog.mjs.map +1 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
- package/dist/esm/tools/toolOutputReferences.mjs +662 -0
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
- package/dist/esm/types/agent-cache.mjs +51 -0
- package/dist/esm/types/agent-cache.mjs.map +1 -0
- package/dist/esm/types/graph.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +128 -0
- package/dist/esm/utils/truncation.mjs.map +1 -0
- package/dist/types/agents/AgentContext.d.ts +101 -8
- package/dist/types/common/enum.d.ts +39 -12
- package/dist/types/common/index.d.ts +0 -1
- package/dist/types/graphs/Graph.d.ts +43 -0
- package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
- package/dist/types/graphs/index.d.ts +0 -1
- package/dist/types/hooks/HookRegistry.d.ts +56 -0
- package/dist/types/hooks/executeHooks.d.ts +79 -0
- package/dist/types/hooks/index.d.ts +6 -0
- package/dist/types/hooks/matchers.d.ts +95 -0
- package/dist/types/hooks/types.d.ts +320 -0
- package/dist/types/index.d.ts +9 -9
- package/dist/types/langchain/google-common.d.ts +1 -0
- package/dist/types/langchain/index.d.ts +8 -0
- package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
- package/dist/types/langchain/messages/tool.d.ts +1 -0
- package/dist/types/langchain/messages.d.ts +2 -0
- package/dist/types/langchain/openai.d.ts +1 -0
- package/dist/types/langchain/prompts.d.ts +1 -0
- package/dist/types/langchain/runnables.d.ts +2 -0
- package/dist/types/langchain/tools.d.ts +2 -0
- package/dist/types/langchain/utils/env.d.ts +1 -0
- package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
- package/dist/types/llm/bedrock/index.d.ts +54 -1
- package/dist/types/messages/contextPruning.d.ts +42 -0
- package/dist/types/messages/contextPruningSettings.d.ts +44 -0
- package/dist/types/messages/format.d.ts +9 -1
- package/dist/types/messages/index.d.ts +2 -0
- package/dist/types/messages/prune.d.ts +91 -1
- package/dist/types/run.d.ts +2 -0
- package/dist/types/tools/BashExecutor.d.ts +76 -0
- package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
- package/dist/types/tools/CodeExecutor.d.ts +8 -26
- package/dist/types/tools/ReadFile.d.ts +28 -0
- package/dist/types/tools/SkillTool.d.ts +40 -0
- package/dist/types/tools/SubagentTool.d.ts +36 -0
- package/dist/types/tools/ToolNode.d.ts +77 -5
- package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
- package/dist/types/tools/search/tavily-search.d.ts +4 -0
- package/dist/types/tools/search/types.d.ts +99 -5
- package/dist/types/tools/search/utils.d.ts +2 -2
- package/dist/types/tools/skillCatalog.d.ts +19 -0
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
- package/dist/types/tools/subagent/index.d.ts +2 -0
- package/dist/types/tools/subagent/types.d.ts +84 -0
- package/dist/types/tools/toolOutputReferences.d.ts +236 -0
- package/dist/types/types/agent-cache.d.ts +70 -0
- package/dist/types/types/graph.d.ts +162 -22
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/messages.d.ts +26 -0
- package/dist/types/types/run.d.ts +22 -0
- package/dist/types/types/skill.d.ts +9 -0
- package/dist/types/types/tools.d.ts +111 -0
- package/dist/types/utils/index.d.ts +1 -3
- package/dist/types/utils/truncation.d.ts +70 -0
- package/package.json +57 -17
- package/src/agents/AgentContext.js.map +1 -0
- package/src/agents/AgentContext.test.js.map +1 -0
- package/src/agents/AgentContext.ts +321 -78
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +264 -0
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
- package/src/agents/__tests__/AgentContext.test.js.map +1 -0
- package/src/agents/__tests__/AgentContext.test.ts +632 -0
- package/src/agents/__tests__/resolveStructuredOutputMode.test.js.map +1 -0
- package/src/common/__tests__/enum.test.ts +7 -17
- package/src/common/enum.js.map +1 -0
- package/src/common/enum.ts +43 -12
- package/src/common/index.js.map +1 -0
- package/src/common/index.ts +0 -1
- package/src/events.js.map +1 -0
- package/src/graphs/Graph.js.map +1 -0
- package/src/graphs/Graph.ts +222 -2
- package/src/graphs/MultiAgentGraph.js.map +1 -0
- package/src/graphs/MultiAgentGraph.ts +154 -1466
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
- package/src/graphs/__tests__/structured-output.integration.test.js.map +1 -0
- package/src/graphs/__tests__/structured-output.test.js.map +1 -0
- package/src/graphs/contextManagement.e2e.test.js.map +1 -0
- package/src/graphs/contextManagement.test.js.map +1 -0
- package/src/graphs/handoffValidation.test.js.map +1 -0
- package/src/graphs/index.js.map +1 -0
- package/src/graphs/index.ts +0 -1
- package/src/hooks/HookRegistry.ts +208 -0
- package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
- package/src/hooks/__tests__/compactHooks.test.ts +214 -0
- package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
- package/src/hooks/__tests__/integration.test.ts +337 -0
- package/src/hooks/__tests__/matchers.test.ts +238 -0
- package/src/hooks/__tests__/toolHooks.test.ts +665 -0
- package/src/hooks/executeHooks.ts +375 -0
- package/src/hooks/index.ts +57 -0
- package/src/hooks/matchers.ts +280 -0
- package/src/hooks/types.ts +404 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +15 -24
- package/src/instrumentation.js.map +1 -0
- package/src/langchain/google-common.ts +1 -0
- package/src/langchain/index.ts +8 -0
- package/src/langchain/language_models/chat_models.ts +1 -0
- package/src/langchain/messages/tool.ts +5 -0
- package/src/langchain/messages.ts +21 -0
- package/src/langchain/openai.ts +1 -0
- package/src/langchain/prompts.ts +1 -0
- package/src/langchain/runnables.ts +7 -0
- package/src/langchain/tools.ts +8 -0
- package/src/langchain/utils/env.ts +1 -0
- package/src/llm/anthropic/index.js.map +1 -0
- package/src/llm/anthropic/types.js.map +1 -0
- package/src/llm/anthropic/utils/message_inputs.js.map +1 -0
- package/src/llm/anthropic/utils/message_inputs.ts +10 -1
- package/src/llm/anthropic/utils/message_outputs.js.map +1 -0
- package/src/llm/anthropic/utils/output_parsers.js.map +1 -0
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
- package/src/llm/anthropic/utils/tools.js.map +1 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.js.map +1 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
- package/src/llm/bedrock/cacheSupport.test.ts +99 -0
- package/src/llm/bedrock/cacheSupport.ts +53 -0
- package/src/llm/bedrock/index.js.map +1 -0
- package/src/llm/bedrock/index.ts +116 -41
- package/src/llm/bedrock/types.js.map +1 -0
- package/src/llm/bedrock/utils/index.js.map +1 -0
- package/src/llm/bedrock/utils/message_inputs.js.map +1 -0
- package/src/llm/bedrock/utils/message_outputs.js.map +1 -0
- package/src/llm/fake.js.map +1 -0
- package/src/llm/google/index.js.map +1 -0
- package/src/llm/google/types.js.map +1 -0
- package/src/llm/google/utils/common.js.map +1 -0
- package/src/llm/google/utils/tools.js.map +1 -0
- package/src/llm/google/utils/zod_to_genai_parameters.js.map +1 -0
- package/src/llm/openai/index.js.map +1 -0
- package/src/llm/openai/types.js.map +1 -0
- package/src/llm/openai/utils/index.js.map +1 -0
- package/src/llm/openai/utils/index.ts +31 -14
- package/src/llm/openai/utils/isReasoningModel.test.js.map +1 -0
- package/src/llm/openrouter/index.js.map +1 -0
- package/src/llm/openrouter/reasoning.test.js.map +1 -0
- package/src/llm/providers.js.map +1 -0
- package/src/llm/text.js.map +1 -0
- package/src/llm/vertexai/index.js.map +1 -0
- package/src/messages/__tests__/contextPruning.test.ts +228 -0
- package/src/messages/__tests__/tools.test.js.map +1 -0
- package/src/messages/cache.js.map +1 -0
- package/src/messages/cache.test.js.map +1 -0
- package/src/messages/cache.test.ts +62 -24
- package/src/messages/cache.ts +112 -0
- package/src/messages/content.js.map +1 -0
- package/src/messages/content.test.js.map +1 -0
- package/src/messages/contextPruning.ts +191 -0
- package/src/messages/contextPruningSettings.ts +90 -0
- package/src/messages/core.js.map +1 -0
- package/src/messages/ensureThinkingBlock.test.js.map +1 -0
- package/src/messages/format.js.map +1 -0
- package/src/messages/format.ts +164 -12
- package/src/messages/formatAgentMessages.skills.test.ts +413 -0
- package/src/messages/formatAgentMessages.test.js.map +1 -0
- package/src/messages/formatAgentMessages.tools.test.js.map +1 -0
- package/src/messages/formatMessage.test.js.map +1 -0
- package/src/messages/ids.js.map +1 -0
- package/src/messages/index.js.map +1 -0
- package/src/messages/index.ts +2 -0
- package/src/messages/labelContentByAgent.test.js.map +1 -0
- package/src/messages/prune.js.map +1 -0
- package/src/messages/prune.ts +661 -4
- package/src/messages/reducer.js.map +1 -0
- package/src/messages/shiftIndexTokenCountMap.test.js.map +1 -0
- package/src/messages/summarize.js.map +1 -0
- package/src/messages/summarize.test.js.map +1 -0
- package/src/messages/tools.js.map +1 -0
- package/src/mockStream.js.map +1 -0
- package/src/prompts/collab.js.map +1 -0
- package/src/prompts/index.js.map +1 -0
- package/src/prompts/taskmanager.js.map +1 -0
- package/src/run.js.map +1 -0
- package/src/run.ts +155 -1
- package/src/schemas/index.js.map +1 -0
- package/src/schemas/schema-preparation.test.js.map +1 -0
- package/src/schemas/validate.js.map +1 -0
- package/src/schemas/validate.test.js.map +1 -0
- package/src/scripts/abort.js.map +1 -0
- package/src/scripts/ant_web_search.js.map +1 -0
- package/src/scripts/ant_web_search_edge_case.js.map +1 -0
- package/src/scripts/ant_web_search_error_edge_case.js.map +1 -0
- package/src/scripts/args.js.map +1 -0
- package/src/scripts/bedrock-cache-debug.js.map +1 -0
- package/src/scripts/bedrock-content-aggregation-test.js.map +1 -0
- package/src/scripts/bedrock-merge-test.js.map +1 -0
- package/src/scripts/bedrock-parallel-tools-test.js.map +1 -0
- package/src/scripts/caching.js.map +1 -0
- package/src/scripts/cli.js.map +1 -0
- package/src/scripts/cli2.js.map +1 -0
- package/src/scripts/cli3.js.map +1 -0
- package/src/scripts/cli4.js.map +1 -0
- package/src/scripts/cli5.js.map +1 -0
- package/src/scripts/code_exec.js.map +1 -0
- package/src/scripts/code_exec_files.js.map +1 -0
- package/src/scripts/code_exec_multi_session.js.map +1 -0
- package/src/scripts/code_exec_ptc.js.map +1 -0
- package/src/scripts/code_exec_session.js.map +1 -0
- package/src/scripts/code_exec_simple.js.map +1 -0
- package/src/scripts/content.js.map +1 -0
- package/src/scripts/empty_input.js.map +1 -0
- package/src/scripts/handoff-test.js.map +1 -0
- package/src/scripts/image.js.map +1 -0
- package/src/scripts/memory.js.map +1 -0
- package/src/scripts/multi-agent-chain.js.map +1 -0
- package/src/scripts/multi-agent-chain.ts +2 -2
- package/src/scripts/multi-agent-conditional.js.map +1 -0
- package/src/scripts/multi-agent-document-review-chain.js.map +1 -0
- package/src/scripts/multi-agent-document-review-chain.ts +2 -2
- package/src/scripts/multi-agent-hybrid-flow.js.map +1 -0
- package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
- package/src/scripts/multi-agent-parallel-start.js.map +1 -0
- package/src/scripts/multi-agent-parallel.js.map +1 -0
- package/src/scripts/multi-agent-parallel.ts +3 -3
- package/src/scripts/multi-agent-sequence.js.map +1 -0
- package/src/scripts/multi-agent-sequence.ts +3 -3
- package/src/scripts/multi-agent-subagent.ts +246 -0
- package/src/scripts/multi-agent-supervisor.js.map +1 -0
- package/src/scripts/multi-agent-supervisor.ts +5 -5
- package/src/scripts/multi-agent-test.js.map +1 -0
- package/src/scripts/parallel-asymmetric-tools-test.js.map +1 -0
- package/src/scripts/parallel-full-metadata-test.js.map +1 -0
- package/src/scripts/parallel-tools-test.js.map +1 -0
- package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
- package/src/scripts/programmatic_exec.js.map +1 -0
- package/src/scripts/programmatic_exec_agent.js.map +1 -0
- package/src/scripts/search.js.map +1 -0
- package/src/scripts/sequential-full-metadata-test.js.map +1 -0
- package/src/scripts/sequential-full-metadata-test.ts +2 -2
- package/src/scripts/simple.js.map +1 -0
- package/src/scripts/single-agent-metadata-test.js.map +1 -0
- package/src/scripts/stream.js.map +1 -0
- package/src/scripts/subagent-event-driven-debug.ts +190 -0
- package/src/scripts/subagent-tools-debug.ts +160 -0
- package/src/scripts/test-custom-prompt-key.js.map +1 -0
- package/src/scripts/test-custom-prompt-key.ts +3 -3
- package/src/scripts/test-handoff-input.js.map +1 -0
- package/src/scripts/test-handoff-input.ts +1 -1
- package/src/scripts/test-handoff-preamble.js.map +1 -0
- package/src/scripts/test-handoff-steering.js.map +1 -0
- package/src/scripts/test-handoff-steering.ts +3 -3
- package/src/scripts/test-multi-agent-list-handoff.js.map +1 -0
- package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
- package/src/scripts/test-parallel-agent-labeling.js.map +1 -0
- package/src/scripts/test-parallel-agent-labeling.ts +3 -3
- package/src/scripts/test-parallel-handoffs.js.map +1 -0
- package/src/scripts/test-parallel-handoffs.ts +2 -2
- package/src/scripts/test-thinking-handoff-bedrock.js.map +1 -0
- package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-thinking-handoff.js.map +1 -0
- package/src/scripts/test-thinking-handoff.ts +1 -1
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.js.map +1 -0
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-tool-before-handoff-role-order.js.map +1 -0
- package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
- package/src/scripts/test-tools-before-handoff.js.map +1 -0
- package/src/scripts/test-tools-before-handoff.ts +1 -1
- package/src/scripts/test_code_api.js.map +1 -0
- package/src/scripts/thinking-bedrock.js.map +1 -0
- package/src/scripts/thinking-vertexai.js.map +1 -0
- package/src/scripts/thinking.js.map +1 -0
- package/src/scripts/tool_search.js.map +1 -0
- package/src/scripts/tools.js.map +1 -0
- package/src/specs/agent-handoffs-bedrock.integration.test.js.map +1 -0
- package/src/specs/agent-handoffs.test.js.map +1 -0
- package/src/specs/agent-handoffs.test.ts +26 -483
- package/src/specs/anthropic.simple.test.js.map +1 -0
- package/src/specs/anthropic.simple.test.ts +61 -0
- package/src/specs/azure.simple.test.js.map +1 -0
- package/src/specs/cache.simple.test.js.map +1 -0
- package/src/specs/custom-event-await.test.js.map +1 -0
- package/src/specs/deepseek.simple.test.js.map +1 -0
- package/src/specs/emergency-prune.test.js.map +1 -0
- package/src/specs/moonshot.simple.test.js.map +1 -0
- package/src/specs/multi-agent-summarization.test.ts +396 -0
- package/src/specs/observability.integration.test.js.map +1 -0
- package/src/specs/openai.simple.test.js.map +1 -0
- package/src/specs/openrouter.simple.test.js.map +1 -0
- package/src/specs/prune.orphans.test.ts +248 -0
- package/src/specs/prune.test.js.map +1 -0
- package/src/specs/prune.test.ts +104 -16
- package/src/specs/reasoning.test.js.map +1 -0
- package/src/specs/spec.utils.js.map +1 -0
- package/src/specs/thinking-handoff.test.js.map +1 -0
- package/src/specs/thinking-handoff.test.ts +19 -19
- package/src/specs/thinking-prune.test.js.map +1 -0
- package/src/specs/token-distribution-edge-case.test.js.map +1 -0
- package/src/specs/token-memoization.test.js.map +1 -0
- package/src/specs/tokens.test.js.map +1 -0
- package/src/specs/tool-error.test.js.map +1 -0
- package/src/splitStream.js.map +1 -0
- package/src/splitStream.test.js.map +1 -0
- package/src/stream.js.map +1 -0
- package/src/stream.test.js.map +1 -0
- package/src/test/mockTools.js.map +1 -0
- package/src/tools/BashExecutor.ts +281 -0
- package/src/tools/BashProgrammaticToolCalling.ts +397 -0
- package/src/tools/BrowserTools.js.map +1 -0
- package/src/tools/Calculator.js.map +1 -0
- package/src/tools/Calculator.test.js.map +1 -0
- package/src/tools/CodeExecutor.js.map +1 -0
- package/src/tools/CodeExecutor.ts +62 -54
- package/src/tools/ProgrammaticToolCalling.js.map +1 -0
- package/src/tools/ProgrammaticToolCalling.ts +29 -14
- package/src/tools/ReadFile.ts +39 -0
- package/src/tools/SkillTool.ts +46 -0
- package/src/tools/StreamingToolCallBuffer.js.map +1 -0
- package/src/tools/SubagentTool.ts +100 -0
- package/src/tools/ToolNode.js.map +1 -0
- package/src/tools/ToolNode.ts +548 -26
- package/src/tools/ToolSearch.js.map +1 -0
- package/src/tools/__tests__/BashExecutor.test.ts +49 -0
- package/src/tools/__tests__/BrowserTools.test.js.map +1 -0
- package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
- package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.js.map +1 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.test.js.map +1 -0
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
- package/src/tools/__tests__/ReadFile.test.ts +44 -0
- package/src/tools/__tests__/SkillTool.test.ts +442 -0
- package/src/tools/__tests__/StreamingToolCallBuffer.test.js.map +1 -0
- package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
- package/src/tools/__tests__/SubagentTool.test.ts +149 -0
- package/src/tools/__tests__/ToolApproval.test.js.map +1 -0
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
- package/src/tools/__tests__/ToolNode.recovery.test.js.map +1 -0
- package/src/tools/__tests__/ToolNode.session.test.js.map +1 -0
- package/src/tools/__tests__/ToolSearch.integration.test.js.map +1 -0
- package/src/tools/__tests__/ToolSearch.test.js.map +1 -0
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
- package/src/tools/__tests__/handlers.test.js.map +1 -0
- package/src/tools/__tests__/skillCatalog.test.ts +161 -0
- package/src/tools/__tests__/subagentHooks.test.ts +210 -0
- package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
- package/src/tools/__tests__/truncation-recovery.integration.test.js.map +1 -0
- package/src/tools/handlers.js.map +1 -0
- package/src/tools/schema.js.map +1 -0
- package/src/tools/search/anthropic.js.map +1 -0
- package/src/tools/search/content.js.map +1 -0
- package/src/tools/search/content.test.js.map +1 -0
- package/src/tools/search/firecrawl.js.map +1 -0
- package/src/tools/search/format.js.map +1 -0
- package/src/tools/search/highlights.js.map +1 -0
- package/src/tools/search/index.js.map +1 -0
- package/src/tools/search/jina-reranker.test.js.map +1 -0
- package/src/tools/search/rerankers.js.map +1 -0
- package/src/tools/search/schema.js.map +1 -0
- package/src/tools/search/search.js.map +1 -0
- package/src/tools/search/search.ts +12 -2
- package/src/tools/search/serper-scraper.js.map +1 -0
- package/src/tools/search/tavily-scraper.ts +235 -0
- package/src/tools/search/tavily-search.ts +424 -0
- package/src/tools/search/tavily.test.ts +965 -0
- package/src/tools/search/test.js.map +1 -0
- package/src/tools/search/tool.js.map +1 -0
- package/src/tools/search/tool.ts +36 -2
- package/src/tools/search/types.js.map +1 -0
- package/src/tools/search/types.ts +133 -8
- package/src/tools/search/utils.js.map +1 -0
- package/src/tools/search/utils.ts +13 -5
- package/src/tools/skillCatalog.ts +126 -0
- package/src/tools/subagent/SubagentExecutor.ts +676 -0
- package/src/tools/subagent/index.ts +13 -0
- package/src/tools/subagent/types.test.ts +70 -0
- package/src/tools/subagent/types.ts +115 -0
- package/src/tools/toolOutputReferences.ts +825 -0
- package/src/types/agent-cache.ts +73 -0
- package/src/types/graph.js.map +1 -0
- package/src/types/graph.test.js.map +1 -0
- package/src/types/graph.ts +171 -20
- package/src/types/index.js.map +1 -0
- package/src/types/index.ts +3 -0
- package/src/types/llm.js.map +1 -0
- package/src/types/messages.js.map +1 -0
- package/src/types/messages.ts +27 -0
- package/src/types/run.js.map +1 -0
- package/src/types/run.ts +22 -0
- package/src/types/skill.ts +11 -0
- package/src/types/stream.js.map +1 -0
- package/src/types/tools.js.map +1 -0
- package/src/types/tools.ts +118 -0
- package/src/utils/__tests__/truncation.test.ts +66 -0
- package/src/utils/contextAnalytics.js.map +1 -0
- package/src/utils/contextAnalytics.test.js.map +1 -0
- package/src/utils/events.js.map +1 -0
- package/src/utils/graph.js.map +1 -0
- package/src/utils/handlers.js.map +1 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/index.ts +1 -3
- package/src/utils/llm.js.map +1 -0
- package/src/utils/llmConfig.js.map +1 -0
- package/src/utils/logging.js.map +1 -0
- package/src/utils/misc.js.map +1 -0
- package/src/utils/run.js.map +1 -0
- package/src/utils/schema.js.map +1 -0
- package/src/utils/title.js.map +1 -0
- package/src/utils/tokens.js.map +1 -0
- package/src/utils/toonFormat.js.map +1 -0
- package/src/utils/truncation.ts +154 -0
- package/dist/cjs/common/spawnPath.cjs +0 -104
- package/dist/cjs/common/spawnPath.cjs.map +0 -1
- package/dist/cjs/content/ArtifactStore.cjs +0 -579
- package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
- package/dist/cjs/content/ContentStore.cjs +0 -638
- package/dist/cjs/content/ContentStore.cjs.map +0 -1
- package/dist/cjs/content/contentAnalyzer.cjs +0 -91
- package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
- package/dist/cjs/content/index.cjs +0 -20
- package/dist/cjs/content/index.cjs.map +0 -1
- package/dist/cjs/content/mcpAutoCache.cjs +0 -115
- package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
- package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
- package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/a2a/client.cjs +0 -92
- package/dist/cjs/providers/a2a/client.cjs.map +0 -1
- package/dist/cjs/providers/a2a/config.cjs +0 -38
- package/dist/cjs/providers/a2a/config.cjs.map +0 -1
- package/dist/cjs/providers/capabilityNaming.cjs +0 -43
- package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/mcp/config.cjs +0 -42
- package/dist/cjs/providers/mcp/config.cjs.map +0 -1
- package/dist/cjs/providers/mcp/transport.cjs +0 -65
- package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/types.cjs +0 -51
- package/dist/cjs/providers/types.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/schema.cjs +0 -86
- package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/tool.cjs +0 -219
- package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
- package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
- package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
- package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
- package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
- package/dist/cjs/tools/proxyTool.cjs +0 -102
- package/dist/cjs/tools/proxyTool.cjs.map +0 -1
- package/dist/cjs/utils/childAgentContext.cjs +0 -242
- package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
- package/dist/cjs/utils/credentials.cjs +0 -142
- package/dist/cjs/utils/credentials.cjs.map +0 -1
- package/dist/cjs/utils/httpClient.cjs +0 -74
- package/dist/cjs/utils/httpClient.cjs.map +0 -1
- package/dist/cjs/utils/toolManifest.cjs +0 -100
- package/dist/cjs/utils/toolManifest.cjs.map +0 -1
- package/dist/esm/common/spawnPath.mjs +0 -95
- package/dist/esm/common/spawnPath.mjs.map +0 -1
- package/dist/esm/content/ArtifactStore.mjs +0 -576
- package/dist/esm/content/ArtifactStore.mjs.map +0 -1
- package/dist/esm/content/ContentStore.mjs +0 -635
- package/dist/esm/content/ContentStore.mjs.map +0 -1
- package/dist/esm/content/contentAnalyzer.mjs +0 -87
- package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
- package/dist/esm/content/index.mjs +0 -5
- package/dist/esm/content/mcpAutoCache.mjs +0 -111
- package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
- package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
- package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/a2a/client.mjs +0 -88
- package/dist/esm/providers/a2a/client.mjs.map +0 -1
- package/dist/esm/providers/a2a/config.mjs +0 -35
- package/dist/esm/providers/a2a/config.mjs.map +0 -1
- package/dist/esm/providers/capabilityNaming.mjs +0 -39
- package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/mcp/config.mjs +0 -39
- package/dist/esm/providers/mcp/config.mjs.map +0 -1
- package/dist/esm/providers/mcp/transport.mjs +0 -63
- package/dist/esm/providers/mcp/transport.mjs.map +0 -1
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/types.mjs +0 -51
- package/dist/esm/providers/types.mjs.map +0 -1
- package/dist/esm/tools/artifacts/schema.mjs +0 -79
- package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
- package/dist/esm/tools/artifacts/tool.mjs +0 -213
- package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
- package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
- package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/schema.mjs +0 -15
- package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/tool.mjs +0 -152
- package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
- package/dist/esm/tools/proxyTool.mjs +0 -100
- package/dist/esm/tools/proxyTool.mjs.map +0 -1
- package/dist/esm/utils/childAgentContext.mjs +0 -237
- package/dist/esm/utils/childAgentContext.mjs.map +0 -1
- package/dist/esm/utils/credentials.mjs +0 -135
- package/dist/esm/utils/credentials.mjs.map +0 -1
- package/dist/esm/utils/httpClient.mjs +0 -70
- package/dist/esm/utils/httpClient.mjs.map +0 -1
- package/dist/esm/utils/toolManifest.mjs +0 -96
- package/dist/esm/utils/toolManifest.mjs.map +0 -1
- package/dist/types/common/spawnPath.d.ts +0 -59
- package/dist/types/content/ArtifactStore.d.ts +0 -223
- package/dist/types/content/ContentStore.d.ts +0 -140
- package/dist/types/content/contentAnalyzer.d.ts +0 -38
- package/dist/types/content/index.d.ts +0 -24
- package/dist/types/content/mcpAutoCache.d.ts +0 -89
- package/dist/types/content/types.d.ts +0 -75
- package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
- package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
- package/dist/types/providers/a2a/client.d.ts +0 -47
- package/dist/types/providers/a2a/config.d.ts +0 -18
- package/dist/types/providers/a2a/index.d.ts +0 -6
- package/dist/types/providers/a2a/types.d.ts +0 -173
- package/dist/types/providers/capabilityNaming.d.ts +0 -25
- package/dist/types/providers/index.d.ts +0 -12
- package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
- package/dist/types/providers/mcp/config.d.ts +0 -20
- package/dist/types/providers/mcp/index.d.ts +0 -5
- package/dist/types/providers/mcp/transport.d.ts +0 -18
- package/dist/types/providers/mcp/types.d.ts +0 -112
- package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
- package/dist/types/providers/tools-server/index.d.ts +0 -1
- package/dist/types/providers/types.d.ts +0 -184
- package/dist/types/tools/artifacts/index.d.ts +0 -3
- package/dist/types/tools/artifacts/schema.d.ts +0 -63
- package/dist/types/tools/artifacts/tool.d.ts +0 -16
- package/dist/types/tools/artifacts/types.d.ts +0 -127
- package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
- package/dist/types/tools/fileSearch/index.d.ts +0 -5
- package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
- package/dist/types/tools/fileSearch/schema.d.ts +0 -13
- package/dist/types/tools/fileSearch/tool.d.ts +0 -18
- package/dist/types/tools/fileSearch/types.d.ts +0 -139
- package/dist/types/tools/proxyTool.d.ts +0 -62
- package/dist/types/utils/childAgentContext.d.ts +0 -99
- package/dist/types/utils/credentials.d.ts +0 -77
- package/dist/types/utils/httpClient.d.ts +0 -46
- package/dist/types/utils/toolManifest.d.ts +0 -49
- package/src/common/__tests__/spawnPath.test.ts +0 -110
- package/src/common/spawnPath.ts +0 -101
- package/src/content/ArtifactStore.ts +0 -782
- package/src/content/ContentStore.ts +0 -753
- package/src/content/contentAnalyzer.ts +0 -105
- package/src/content/index.ts +0 -51
- package/src/content/mcpAutoCache.ts +0 -185
- package/src/content/types.ts +0 -82
- package/src/graphs/HandoffRegistry.ts +0 -199
- package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
- package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
- package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
- package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
- package/src/graphs/handoffValidation.test.ts +0 -353
- package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
- package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
- package/src/providers/__tests__/types.test.ts +0 -64
- package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
- package/src/providers/a2a/client.ts +0 -115
- package/src/providers/a2a/config.ts +0 -40
- package/src/providers/a2a/index.ts +0 -29
- package/src/providers/a2a/types.ts +0 -191
- package/src/providers/capabilityNaming.ts +0 -42
- package/src/providers/index.ts +0 -68
- package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
- package/src/providers/mcp/config.ts +0 -45
- package/src/providers/mcp/index.ts +0 -21
- package/src/providers/mcp/transport.ts +0 -76
- package/src/providers/mcp/types.ts +0 -139
- package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
- package/src/providers/tools-server/index.ts +0 -1
- package/src/providers/types.ts +0 -204
- package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
- package/src/scripts/test-handoff-preamble.ts +0 -278
- package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
- package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
- package/src/tools/artifacts/index.ts +0 -33
- package/src/tools/artifacts/schema.ts +0 -99
- package/src/tools/artifacts/tool.ts +0 -289
- package/src/tools/artifacts/types.ts +0 -162
- package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
- package/src/tools/fileSearch/formatter.ts +0 -129
- package/src/tools/fileSearch/index.ts +0 -23
- package/src/tools/fileSearch/ragClient.ts +0 -137
- package/src/tools/fileSearch/schema.ts +0 -19
- package/src/tools/fileSearch/tool.ts +0 -207
- package/src/tools/fileSearch/types.ts +0 -149
- package/src/tools/proxyTool.ts +0 -166
- package/src/utils/__tests__/childAgentContext.test.ts +0 -217
- package/src/utils/__tests__/credentials.test.ts +0 -130
- package/src/utils/__tests__/httpClient.test.ts +0 -75
- package/src/utils/__tests__/toolManifest.test.ts +0 -116
- package/src/utils/childAgentContext.ts +0 -259
- package/src/utils/credentials.ts +0 -157
- package/src/utils/httpClient.ts +0 -92
- package/src/utils/toolManifest.ts +0 -109
- /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
|
@@ -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>;
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool output reference registry.
|
|
3
|
+
*
|
|
4
|
+
* When enabled via `RunConfig.toolOutputReferences.enabled`, ToolNode
|
|
5
|
+
* stores each successful tool output under a stable key
|
|
6
|
+
* (`tool<idx>turn<turn>`) where `idx` is the tool's position within a
|
|
7
|
+
* ToolNode batch and `turn` is the batch index within the run
|
|
8
|
+
* (incremented once per ToolNode invocation).
|
|
9
|
+
*
|
|
10
|
+
* Subsequent tool calls can pipe a previous output into their args by
|
|
11
|
+
* embedding `{{tool<idx>turn<turn>}}` inside any string argument;
|
|
12
|
+
* {@link ToolOutputReferenceRegistry.resolve} walks the args and
|
|
13
|
+
* substitutes the placeholders immediately before invocation.
|
|
14
|
+
*
|
|
15
|
+
* The registry stores the *raw, untruncated* tool output so a later
|
|
16
|
+
* `{{…}}` substitution pipes the full payload into the next tool —
|
|
17
|
+
* even when the LLM only saw a head+tail-truncated preview in
|
|
18
|
+
* `ToolMessage.content`. Outputs are stored without any annotation
|
|
19
|
+
* (the `_ref` key or the `[ref: ...]` prefix seen by the LLM is
|
|
20
|
+
* strictly a UX signal attached to `ToolMessage.content`). Keeping the
|
|
21
|
+
* registry pristine means downstream bash/jq piping receives the
|
|
22
|
+
* complete, verbatim output with no injected fields.
|
|
23
|
+
*/
|
|
24
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
25
|
+
/**
|
|
26
|
+
* Non-global matcher for a single `{{tool<i>turn<n>}}` placeholder.
|
|
27
|
+
* Exported for consumers that want to detect references (e.g., syntax
|
|
28
|
+
* highlighting, docs). The stateful `g` variant lives inside the
|
|
29
|
+
* registry so nobody trips on `lastIndex`.
|
|
30
|
+
*/
|
|
31
|
+
export declare const TOOL_OUTPUT_REF_PATTERN: RegExp;
|
|
32
|
+
/** Object key used when a parsed-object output has `_ref` injected. */
|
|
33
|
+
export declare const TOOL_OUTPUT_REF_KEY = "_ref";
|
|
34
|
+
/**
|
|
35
|
+
* Object key used to carry unresolved reference warnings on a parsed-
|
|
36
|
+
* object output. Using a dedicated field instead of a trailing text
|
|
37
|
+
* line keeps the annotated `ToolMessage.content` parseable as JSON for
|
|
38
|
+
* downstream consumers that rely on the object shape.
|
|
39
|
+
*/
|
|
40
|
+
export declare const TOOL_OUTPUT_UNRESOLVED_KEY = "_unresolved_refs";
|
|
41
|
+
/** Single-line prefix prepended to non-object tool outputs so the LLM sees the reference key. */
|
|
42
|
+
export declare function buildReferencePrefix(key: string): string;
|
|
43
|
+
/** Stable registry key for a tool output. */
|
|
44
|
+
export declare function buildReferenceKey(toolIndex: number, turn: number): string;
|
|
45
|
+
export type ToolOutputReferenceRegistryOptions = {
|
|
46
|
+
/** Maximum characters stored per registered output. */
|
|
47
|
+
maxOutputSize?: number;
|
|
48
|
+
/** Maximum total characters retained across all registered outputs. */
|
|
49
|
+
maxTotalSize?: number;
|
|
50
|
+
/**
|
|
51
|
+
* Upper bound on the number of concurrently-tracked runs. When
|
|
52
|
+
* exceeded, the oldest run bucket is evicted (FIFO). Defaults to 32.
|
|
53
|
+
*/
|
|
54
|
+
maxActiveRuns?: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Result of resolving placeholders in tool args.
|
|
58
|
+
*/
|
|
59
|
+
export type ResolveResult<T> = {
|
|
60
|
+
/** Arguments with placeholders replaced. Same shape as the input. */
|
|
61
|
+
resolved: T;
|
|
62
|
+
/** Reference keys that were referenced but had no stored value. */
|
|
63
|
+
unresolved: string[];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Read-only view over a frozen registry snapshot. Returned by
|
|
67
|
+
* {@link ToolOutputReferenceRegistry.snapshot} for callers that need
|
|
68
|
+
* to resolve placeholders against the registry state at a specific
|
|
69
|
+
* point in time, ignoring any subsequent registrations.
|
|
70
|
+
*/
|
|
71
|
+
export interface ToolOutputResolveView {
|
|
72
|
+
resolve<T>(args: T): ResolveResult<T>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Pre-resolved arg map keyed by `toolCallId`. Used by the mixed
|
|
76
|
+
* direct+event dispatch path to feed event calls' resolved args
|
|
77
|
+
* (captured pre-batch) into the dispatcher without re-resolving
|
|
78
|
+
* against the now-stale live registry.
|
|
79
|
+
*/
|
|
80
|
+
export type PreResolvedArgsMap = Map<string, {
|
|
81
|
+
resolved: Record<string, unknown>;
|
|
82
|
+
unresolved: string[];
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Per-call sink for resolved args, keyed by `toolCallId`. Threaded
|
|
86
|
+
* as a per-batch local map so concurrent `ToolNode.run()` calls do
|
|
87
|
+
* not race on shared sink state.
|
|
88
|
+
*/
|
|
89
|
+
export type ResolvedArgsByCallId = Map<string, Record<string, unknown>>;
|
|
90
|
+
/**
|
|
91
|
+
* Ordered map of reference-key → stored output, partitioned by run so
|
|
92
|
+
* concurrent / interleaved runs sharing one registry cannot leak
|
|
93
|
+
* outputs between each other.
|
|
94
|
+
*
|
|
95
|
+
* Each public method takes a `runId` which selects the run's bucket.
|
|
96
|
+
* Hosts typically get one registry per run via `Graph`, in which
|
|
97
|
+
* case only a single bucket is ever populated; the partitioning
|
|
98
|
+
* exists so the registry also behaves correctly when a single
|
|
99
|
+
* instance is reused directly.
|
|
100
|
+
*/
|
|
101
|
+
export declare class ToolOutputReferenceRegistry {
|
|
102
|
+
private runStates;
|
|
103
|
+
private readonly maxOutputSize;
|
|
104
|
+
private readonly maxTotalSize;
|
|
105
|
+
private readonly maxActiveRuns;
|
|
106
|
+
/**
|
|
107
|
+
* Local stateful matcher used only by `replaceInString`. Kept
|
|
108
|
+
* off-module so callers of the exported `TOOL_OUTPUT_REF_PATTERN`
|
|
109
|
+
* never see a stale `lastIndex`.
|
|
110
|
+
*/
|
|
111
|
+
private static readonly PLACEHOLDER_MATCHER;
|
|
112
|
+
constructor(options?: ToolOutputReferenceRegistryOptions);
|
|
113
|
+
private keyFor;
|
|
114
|
+
private getOrCreate;
|
|
115
|
+
/** Registers (or replaces) the output stored under `key` for `runId`. */
|
|
116
|
+
set(runId: string | undefined, key: string, value: string): void;
|
|
117
|
+
/** Returns the stored value for `key` in `runId`'s bucket, or `undefined`. */
|
|
118
|
+
get(runId: string | undefined, key: string): string | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* Returns `true` when `key` is currently stored in `runId`'s bucket.
|
|
121
|
+
* Used by {@link annotateMessagesForLLM} to gate transient annotation
|
|
122
|
+
* on whether the registry still owns the referenced output (a stale
|
|
123
|
+
* `_refKey` from a prior run silently no-ops here).
|
|
124
|
+
*/
|
|
125
|
+
has(runId: string | undefined, key: string): boolean;
|
|
126
|
+
/** Total number of registered outputs across every run bucket. */
|
|
127
|
+
get size(): number;
|
|
128
|
+
/** Maximum characters retained per output (post-clip). */
|
|
129
|
+
get perOutputLimit(): number;
|
|
130
|
+
/** Maximum total characters retained *per run*. */
|
|
131
|
+
get totalLimit(): number;
|
|
132
|
+
/** Drops every run's state. */
|
|
133
|
+
clear(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Explicitly release `runId`'s state. Safe to call when a run has
|
|
136
|
+
* finished. Hosts sharing one registry across runs should call this
|
|
137
|
+
* to reclaim memory deterministically; otherwise LRU eviction kicks
|
|
138
|
+
* in when `maxActiveRuns` runs accumulate.
|
|
139
|
+
*/
|
|
140
|
+
releaseRun(runId: string | undefined): void;
|
|
141
|
+
/**
|
|
142
|
+
* Claims the next batch turn synchronously from `runId`'s bucket.
|
|
143
|
+
*
|
|
144
|
+
* Must be called once at the start of each ToolNode batch before
|
|
145
|
+
* any `await`, so concurrent invocations within the same run see
|
|
146
|
+
* distinct turn values (reads are effectively atomic by JS's
|
|
147
|
+
* single-threaded execution of the sync prefix).
|
|
148
|
+
*
|
|
149
|
+
* If `runId` is missing the anonymous bucket is dropped and a
|
|
150
|
+
* fresh one created so each anonymous call behaves as its own run.
|
|
151
|
+
*/
|
|
152
|
+
nextTurn(runId: string | undefined): number;
|
|
153
|
+
/**
|
|
154
|
+
* Records that `toolName` has been warned about in `runId` (returns
|
|
155
|
+
* `true` on the first call per run, `false` after). Used by
|
|
156
|
+
* ToolNode to emit one log line per offending tool per run when a
|
|
157
|
+
* `ToolMessage.content` isn't a string.
|
|
158
|
+
*/
|
|
159
|
+
claimWarnOnce(runId: string | undefined, toolName: string): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Walks `args` and replaces every `{{tool<i>turn<n>}}` placeholder in
|
|
162
|
+
* string values with the stored output *from `runId`'s bucket*. Non-
|
|
163
|
+
* string values and object keys are left untouched. Unresolved
|
|
164
|
+
* references are left in-place and reported so the caller can
|
|
165
|
+
* surface them to the LLM. When no placeholder appears anywhere in
|
|
166
|
+
* the serialized args, the original input is returned without
|
|
167
|
+
* walking the tree.
|
|
168
|
+
*/
|
|
169
|
+
resolve<T>(runId: string | undefined, args: T): ResolveResult<T>;
|
|
170
|
+
/**
|
|
171
|
+
* Captures a frozen snapshot of `runId`'s current entries and
|
|
172
|
+
* returns a view that resolves placeholders against *only* that
|
|
173
|
+
* snapshot. The snapshot is decoupled from the live registry, so
|
|
174
|
+
* subsequent `set()` calls (for example, same-turn direct outputs
|
|
175
|
+
* registering while an event branch is still in flight) are
|
|
176
|
+
* invisible to the snapshot's `resolve`. Used by the mixed
|
|
177
|
+
* direct+event dispatch path to preserve same-turn isolation when
|
|
178
|
+
* a `PreToolUse` hook rewrites event args after directs have
|
|
179
|
+
* completed.
|
|
180
|
+
*/
|
|
181
|
+
snapshot(runId: string | undefined): ToolOutputResolveView;
|
|
182
|
+
private resolveAgainst;
|
|
183
|
+
private transform;
|
|
184
|
+
private replaceInString;
|
|
185
|
+
private evictWithinBucket;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Annotates `content` with a reference key and/or unresolved-ref
|
|
189
|
+
* warnings so the LLM sees both alongside the tool output.
|
|
190
|
+
*
|
|
191
|
+
* Behavior:
|
|
192
|
+
* - If `content` parses as a plain (non-array, non-null) JSON object
|
|
193
|
+
* and the object does not already have a conflicting `_ref` key,
|
|
194
|
+
* the reference key and (when present) `_unresolved_refs` array
|
|
195
|
+
* are injected as object fields, preserving JSON validity for
|
|
196
|
+
* downstream consumers that parse the output.
|
|
197
|
+
* - Otherwise (string output, JSON array/primitive, parse failure,
|
|
198
|
+
* or `_ref` collision), a `[ref: <key>]\n` prefix line is
|
|
199
|
+
* prepended and unresolved refs are appended as a trailing
|
|
200
|
+
* `[unresolved refs: …]` line.
|
|
201
|
+
*
|
|
202
|
+
* The annotated string is what the LLM sees as `ToolMessage.content`.
|
|
203
|
+
* The *original* (un-annotated) value is what gets stored in the
|
|
204
|
+
* registry, so downstream piping remains pristine.
|
|
205
|
+
*
|
|
206
|
+
* @param content Raw (post-truncation) tool output.
|
|
207
|
+
* @param key Reference key for this output, or undefined when
|
|
208
|
+
* there is nothing to register (errors etc.).
|
|
209
|
+
* @param unresolved Reference keys that failed to resolve during
|
|
210
|
+
* argument substitution. Surfaced so the LLM can
|
|
211
|
+
* self-correct its next tool call.
|
|
212
|
+
*/
|
|
213
|
+
export declare function annotateToolOutputWithReference(content: string, key: string | undefined, unresolved?: string[]): string;
|
|
214
|
+
/**
|
|
215
|
+
* Lazy projection that, given a registry and a runId, returns a new
|
|
216
|
+
* `messages` array where each `ToolMessage` carrying ref metadata is
|
|
217
|
+
* projected into a transient copy with annotated content (when the ref
|
|
218
|
+
* is live in the registry) and with the framework-owned `additional_
|
|
219
|
+
* kwargs` keys (`_refKey`, `_refScope`, `_unresolvedRefs`) stripped
|
|
220
|
+
* regardless of whether annotation applied. The original input array
|
|
221
|
+
* and its messages are never mutated.
|
|
222
|
+
*
|
|
223
|
+
* Annotation is gated on registry presence: a stale `_refKey` from a
|
|
224
|
+
* prior run (e.g. one that survived in persisted history) silently
|
|
225
|
+
* no-ops on the *content* side. The strip-metadata side still runs so
|
|
226
|
+
* stale framework keys never leak onto the wire under any custom or
|
|
227
|
+
* future provider serializer that might transmit `additional_kwargs`.
|
|
228
|
+
* `_unresolvedRefs` is always meaningful and is not gated.
|
|
229
|
+
*
|
|
230
|
+
* **Feature-disabled fast path:** when the host hasn't enabled the
|
|
231
|
+
* tool-output-reference feature, the registry is `undefined` and this
|
|
232
|
+
* function returns the input array reference-equal *without iterating
|
|
233
|
+
* a single message*. The loop is exclusive to the feature-enabled
|
|
234
|
+
* code path.
|
|
235
|
+
*/
|
|
236
|
+
export declare function annotateMessagesForLLM(messages: BaseMessage[], registry: ToolOutputReferenceRegistry | undefined, runId: string | undefined): BaseMessage[];
|