@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
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
export declare enum GraphEvents {
|
|
8
8
|
/** [Custom] Agent update event in multi-agent graph/workflow */
|
|
9
9
|
ON_AGENT_UPDATE = "on_agent_update",
|
|
10
|
+
/** [Custom] Subagent lifecycle event (start, run_step, message_delta, stop, error) */
|
|
11
|
+
ON_SUBAGENT_UPDATE = "on_subagent_update",
|
|
10
12
|
/** [Custom] Delta event for run steps (message creation and tool calls) */
|
|
11
13
|
ON_RUN_STEP = "on_run_step",
|
|
12
14
|
/** [Custom] Delta event for run steps (tool calls) */
|
|
@@ -79,12 +81,22 @@ export declare enum Providers {
|
|
|
79
81
|
MOONSHOT = "moonshot"
|
|
80
82
|
}
|
|
81
83
|
export declare enum EdgeType {
|
|
82
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Upstream-aligned handoff: one-way routing where the parent agent exits
|
|
86
|
+
* via a `lc_transfer_to_<destination>` tool call, the child takes over,
|
|
87
|
+
* and the child responds directly to the user. Replaces what used to be
|
|
88
|
+
* called "TRANSFER" in earlier Ranger versions; the parent-calls-child
|
|
89
|
+
* supervisor pattern (formerly `EdgeType.HANDOFF`) is gone — use the
|
|
90
|
+
* Subagent primitive (Tier 5) for deep delegation instead.
|
|
91
|
+
*/
|
|
83
92
|
HANDOFF = "handoff",
|
|
84
|
-
/**
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Fixed graph edges for automatic transitions. Naming matches upstream.
|
|
95
|
+
* Ranger keeps its enriched wiring on top of this edge type:
|
|
96
|
+
* fan-in with prompt + {results}, parallel groups, ApprovalGateNode
|
|
97
|
+
* insertion, and the `excludeResults` agentMessages channel.
|
|
98
|
+
*/
|
|
99
|
+
DIRECT = "direct"
|
|
88
100
|
}
|
|
89
101
|
export declare enum GraphNodeKeys {
|
|
90
102
|
TOOLS = "tools=",
|
|
@@ -137,17 +149,30 @@ export declare enum Callback {
|
|
|
137
149
|
export declare enum Constants {
|
|
138
150
|
OFFICIAL_CODE_BASEURL = "https://api.illuma.ai/v1",
|
|
139
151
|
EXECUTE_CODE = "execute_code",
|
|
152
|
+
/** Tool name for the bash execution primitive (upstream Tier 3). */
|
|
153
|
+
BASH_TOOL = "execute_bash",
|
|
154
|
+
/** Tool name for the bash programmatic-tool-calling variant (upstream Tier 3). */
|
|
155
|
+
BASH_PROGRAMMATIC_TOOL_CALLING = "run_tools_with_bash",
|
|
156
|
+
/** Tool name for the read-file primitive (upstream Tier 3). */
|
|
157
|
+
READ_FILE = "read_file",
|
|
158
|
+
/** Tool name for the SkillTool primitive (upstream Tier 2). */
|
|
159
|
+
SKILL_TOOL = "skill",
|
|
160
|
+
/** Tool name for the Subagent primitive (upstream Tier 5). */
|
|
161
|
+
SUBAGENT = "subagent",
|
|
140
162
|
TOOL_SEARCH = "tool_search",
|
|
141
163
|
PROGRAMMATIC_TOOL_CALLING = "run_tools_with_code",
|
|
142
164
|
WEB_SEARCH = "web_search",
|
|
143
165
|
CONTENT_AND_ARTIFACT = "content_and_artifact",
|
|
166
|
+
/** Prefix for handoff tool names (parent-exits routing): lc_transfer_to_{agentId}. */
|
|
144
167
|
LC_TRANSFER_TO_ = "lc_transfer_to_",
|
|
145
|
-
/** Prefix for handoff tool names: lc_handoff_to_{agentId} */
|
|
146
|
-
LC_HANDOFF_TO_ = "lc_handoff_to_",
|
|
147
168
|
/** Tool name for the AskUser structured question tool */
|
|
148
169
|
ASK_USER = "ask_user",
|
|
149
170
|
/** Delimiter for MCP tools: toolName_mcp_serverName */
|
|
150
|
-
MCP_DELIMITER = "_mcp_"
|
|
171
|
+
MCP_DELIMITER = "_mcp_",
|
|
172
|
+
/** Prefix for Anthropic-hosted server tool ids (web_search, code_execution).
|
|
173
|
+
* These are issued by Anthropic, not by us, and should be ignored by
|
|
174
|
+
* orphan-repair sweeps that don't have ground truth for them. */
|
|
175
|
+
ANTHROPIC_SERVER_TOOL_PREFIX = "srvtoolu_"
|
|
151
176
|
}
|
|
152
177
|
export declare enum TitleMethod {
|
|
153
178
|
STRUCTURED = "structured",
|
|
@@ -191,7 +216,9 @@ export declare enum MessageTypes {
|
|
|
191
216
|
DEVELOPER = "developer",
|
|
192
217
|
REMOVE = "remove"
|
|
193
218
|
}
|
|
194
|
-
/**
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Tool names that use the code execution environment (shared session, file
|
|
221
|
+
* tracking). Used by ToolNode to inject session context + file refs into
|
|
222
|
+
* `invokeParams` before tool execution. Upstream-aligned constant.
|
|
223
|
+
*/
|
|
224
|
+
export declare const CODE_EXECUTION_TOOLS: ReadonlySet<string>;
|
|
@@ -46,6 +46,49 @@ export declare abstract class Graph<T extends t.BaseGraphState = t.BaseGraphStat
|
|
|
46
46
|
/** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */
|
|
47
47
|
invokedToolIds?: Set<string>;
|
|
48
48
|
handlerRegistry: HandlerRegistry | undefined;
|
|
49
|
+
/** Optional hook registry threaded down from Run; consumed by ToolNode for tool-lifecycle hooks. */
|
|
50
|
+
hookRegistry?: import('@/hooks').HookRegistry;
|
|
51
|
+
/**
|
|
52
|
+
* Optional tool-output reference registry threaded down from Run
|
|
53
|
+
* (upstream PR #114). When set, every ToolNode built by this graph
|
|
54
|
+
* stores successful outputs here and resolves `{{tool<i>turn<n>}}`
|
|
55
|
+
* placeholders in args before invoking the tool.
|
|
56
|
+
*
|
|
57
|
+
* @deprecated Prefer `toolOutputReferences` config + the lazy
|
|
58
|
+
* `getOrCreateToolOutputRegistry()` accessor — keeps the registry
|
|
59
|
+
* lifecycle explicit (cleared in `clearHeavyState()`). Existing
|
|
60
|
+
* direct-set callers still work for backwards compat.
|
|
61
|
+
*/
|
|
62
|
+
toolOutputRegistry?: import('@/tools/toolOutputReferences').ToolOutputReferenceRegistry;
|
|
63
|
+
/**
|
|
64
|
+
* Run-scoped tool output reference configuration (upstream PR #117).
|
|
65
|
+
* When `enabled` is true, the graph lazily allocates a single
|
|
66
|
+
* `ToolOutputReferenceRegistry` on first `getOrCreateToolOutputRegistry()`
|
|
67
|
+
* call and shares it with every ToolNode the graph compiles, so
|
|
68
|
+
* cross-agent `{{tool<i>turn<n>}}` substitutions resolve.
|
|
69
|
+
*/
|
|
70
|
+
toolOutputReferences?: import('@/types/tools').ToolOutputReferencesConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Lazy single-instance registry for the run. Constructed on first
|
|
73
|
+
* `getOrCreateToolOutputRegistry()` call when
|
|
74
|
+
* `toolOutputReferences.enabled` is true. Cleared (and recreated on
|
|
75
|
+
* next access) by `clearHeavyState()`.
|
|
76
|
+
*/
|
|
77
|
+
private _toolOutputRegistry?;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the shared `ToolOutputReferenceRegistry` for this run,
|
|
80
|
+
* constructing it on first access. Returns `undefined` when the
|
|
81
|
+
* feature is disabled. All ToolNodes compiled from this graph share
|
|
82
|
+
* this single instance so cross-agent `{{...}}` references resolve.
|
|
83
|
+
*
|
|
84
|
+
* @internal Public so `attemptInvoke` can read it through the typed
|
|
85
|
+
* `InvokeContext` and project ToolMessages into LLM-facing annotated
|
|
86
|
+
* copies right before each provider call (see `annotateMessagesForLLM`).
|
|
87
|
+
* Host code should not call this directly — registry mutations outside
|
|
88
|
+
* the ToolNode lifecycle break the partitioning, eviction, and
|
|
89
|
+
* turn-counter invariants.
|
|
90
|
+
*/
|
|
91
|
+
getOrCreateToolOutputRegistry(): import('@/tools/toolOutputReferences').ToolOutputReferenceRegistry | undefined;
|
|
49
92
|
/**
|
|
50
93
|
* Tool session contexts for automatic state persistence across tool invocations.
|
|
51
94
|
* Keyed by tool name (e.g., Constants.EXECUTE_CODE).
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { BaseMessage } from '@langchain/core/messages';
|
|
2
1
|
import type * as t from '@/types';
|
|
3
2
|
import { StandardGraph } from './Graph';
|
|
4
3
|
/**
|
|
@@ -6,29 +5,20 @@ import { StandardGraph } from './Graph';
|
|
|
6
5
|
* with handoffs, fan-in/fan-out, and other composable patterns.
|
|
7
6
|
*
|
|
8
7
|
* Key behavior:
|
|
9
|
-
* - Agents with ONLY
|
|
10
|
-
* - Agents with ONLY
|
|
11
|
-
* - Agents with BOTH: Use Command for exclusive routing (
|
|
12
|
-
* - If
|
|
13
|
-
* - If no
|
|
8
|
+
* - Agents with ONLY handoff edges: Can dynamically route to any handoff destination
|
|
9
|
+
* - Agents with ONLY direct edges: Always follow their direct edges
|
|
10
|
+
* - Agents with BOTH: Use Command for exclusive routing (handoff OR direct, not both)
|
|
11
|
+
* - If handoff occurs: Only the handoff destination executes
|
|
12
|
+
* - If no handoff: Direct edges execute (potentially in parallel)
|
|
14
13
|
*
|
|
15
|
-
* This enables the common pattern where an agent either
|
|
16
|
-
* OR continues its workflow (
|
|
14
|
+
* This enables the common pattern where an agent either delegates (handoff)
|
|
15
|
+
* OR continues its workflow (direct edges), but not both simultaneously.
|
|
17
16
|
*/
|
|
18
17
|
export declare class MultiAgentGraph extends StandardGraph {
|
|
19
18
|
private edges;
|
|
20
19
|
private startingNodes;
|
|
21
|
-
private
|
|
22
|
-
private transferEdges;
|
|
20
|
+
private directEdges;
|
|
23
21
|
private handoffEdges;
|
|
24
|
-
/**
|
|
25
|
-
* Lazily populated registry of compiled subgraphs, keyed by agentId.
|
|
26
|
-
* Handoff tools are created in the constructor but reference subgraphs
|
|
27
|
-
* that are only created in createWorkflow(). This Map bridges that gap —
|
|
28
|
-
* tools capture the Map reference in their closure, and createWorkflow()
|
|
29
|
-
* populates it before any tool invocation occurs.
|
|
30
|
-
*/
|
|
31
|
-
private subgraphRegistry;
|
|
32
22
|
/**
|
|
33
23
|
* Map of agentId to parallel group info.
|
|
34
24
|
* Contains groupId (incrementing number reflecting execution order) for agents in parallel groups.
|
|
@@ -40,25 +30,21 @@ export declare class MultiAgentGraph extends StandardGraph {
|
|
|
40
30
|
* - summarizer: undefined (sequential, order 2)
|
|
41
31
|
*/
|
|
42
32
|
private agentParallelGroups;
|
|
33
|
+
constructor(input: t.MultiAgentGraphInput);
|
|
43
34
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* When set, the graph routes START to this agent instead of the default starting nodes.
|
|
55
|
-
* Enables multi-turn resumption: follow-up messages go to the agent that last handled
|
|
56
|
-
* the conversation rather than restarting from the root/router agent.
|
|
35
|
+
* Fails fast when an edge references an agent that is not in
|
|
36
|
+
* `agentContexts`. Without this check, the underlying LangGraph
|
|
37
|
+
* `StateGraph.compile()` would throw the opaque
|
|
38
|
+
* `Found edge ending at unknown node "<id>"` error after graph
|
|
39
|
+
* construction — far from the true root cause.
|
|
40
|
+
*
|
|
41
|
+
* This catches the common misuse of passing `edges` into a multi-agent
|
|
42
|
+
* config without also passing the corresponding sub-agent configs in
|
|
43
|
+
* `agents` (e.g. a host that forgot to pre-load handoff targets).
|
|
57
44
|
*/
|
|
58
|
-
private
|
|
59
|
-
constructor(input: t.MultiAgentGraphInput);
|
|
45
|
+
private validateEdgeAgents;
|
|
60
46
|
/**
|
|
61
|
-
* Categorize edges into handoff
|
|
47
|
+
* Categorize edges into handoff and direct types
|
|
62
48
|
*/
|
|
63
49
|
private categorizeEdges;
|
|
64
50
|
/**
|
|
@@ -86,12 +72,6 @@ export declare class MultiAgentGraph extends StandardGraph {
|
|
|
86
72
|
* Group IDs are incrementing numbers reflecting execution order.
|
|
87
73
|
*/
|
|
88
74
|
getParallelGroupId(agentId: string): number | undefined;
|
|
89
|
-
/**
|
|
90
|
-
* Returns the ID of the last agent that produced output.
|
|
91
|
-
* Used by auto-continuation to determine which agent's context to preserve
|
|
92
|
-
* when a response is truncated after an agent handoff.
|
|
93
|
-
*/
|
|
94
|
-
getLastActiveAgentId(): string | undefined;
|
|
95
75
|
/**
|
|
96
76
|
* Override to indicate this is a multi-agent graph.
|
|
97
77
|
* Enables agentId to be included in RunStep for frontend agent labeling.
|
|
@@ -102,112 +82,20 @@ export declare class MultiAgentGraph extends StandardGraph {
|
|
|
102
82
|
*/
|
|
103
83
|
protected getParallelGroupIdForAgent(agentId: string): number | undefined;
|
|
104
84
|
/**
|
|
105
|
-
* Create
|
|
106
|
-
* Transfer tools return Command for one-way routing — parent exits, child takes over.
|
|
107
|
-
*/
|
|
108
|
-
private createTransferTools;
|
|
109
|
-
/**
|
|
110
|
-
* Create transfer tools for an edge (handles multiple destinations).
|
|
111
|
-
* Transfer tools return Command for one-way routing — parent exits, child takes over.
|
|
112
|
-
* @param edge - The graph edge defining the transfer
|
|
113
|
-
* @param sourceAgentId - The ID of the agent that will perform the transfer
|
|
114
|
-
* @param sourceAgentName - The human-readable name of the source agent
|
|
115
|
-
*/
|
|
116
|
-
private createTransferToolsForEdge;
|
|
117
|
-
/**
|
|
118
|
-
* Builds orchestration guidance injected into the system message of agents
|
|
119
|
-
* that have handoff or transfer tools (i.e., orchestrator agents).
|
|
120
|
-
*
|
|
121
|
-
* Implements two orchestration primitives:
|
|
122
|
-
* - Execution bias guidance injected into the system prompt
|
|
123
|
-
* - Multi-round autonomous execution for dependent tasks
|
|
124
|
-
*
|
|
125
|
-
* Handoff tools are synchronous (browser-tool callback pattern): spawn the
|
|
126
|
-
* child, await completion, return the real text as the tool output. Parallel
|
|
127
|
-
* handoff tool calls in one turn run concurrently via LangGraph's ToolNode,
|
|
128
|
-
* so independent children run in parallel without explicit orchestration.
|
|
129
|
-
*
|
|
130
|
-
* @param childDescs - Display names (with optional descriptions) of child agents
|
|
131
|
-
* @param toolCount - Number of handoff/transfer tools available
|
|
132
|
-
*/
|
|
133
|
-
private buildOrchestratorGuidance;
|
|
134
|
-
/**
|
|
135
|
-
* Builds subagent context instructions injected into child agents that are
|
|
136
|
-
* handoff destinations. This tells the child agent it is a subagent with
|
|
137
|
-
* a focused task.
|
|
138
|
-
*
|
|
139
|
-
* @param orchestratorName - Display name of the parent orchestrator agent
|
|
140
|
-
*/
|
|
141
|
-
private buildChildAgentContext;
|
|
142
|
-
/**
|
|
143
|
-
* Builds a meaningful default description for a transfer tool when no explicit
|
|
144
|
-
* edge.description is provided. Uses the destination agent's name and description
|
|
145
|
-
* so the LLM can make informed routing decisions.
|
|
146
|
-
* @param destContext - AgentContext of the destination agent (may be undefined)
|
|
147
|
-
* @param destinationId - Raw agent ID (fallback when context unavailable)
|
|
148
|
-
*/
|
|
149
|
-
private buildDefaultTransferDescription;
|
|
150
|
-
/**
|
|
151
|
-
* Create handoff tools for agents based on handoff edges.
|
|
152
|
-
* Handoff tools invoke child agent subgraphs inline and return the result
|
|
153
|
-
* as a string to the parent agent's context. Unlike transfer tools (which
|
|
154
|
-
* return Command for one-way routing), handoff tools execute the child,
|
|
155
|
-
* extract the final text, and return it within the parent's agent loop.
|
|
156
|
-
*
|
|
157
|
-
* This enables the supervisor pattern: parent calls child → gets result → thinks → calls another.
|
|
85
|
+
* Create handoff tools for agents based on handoff edges only
|
|
158
86
|
*/
|
|
159
87
|
private createHandoffTools;
|
|
160
88
|
/**
|
|
161
|
-
* Create handoff tools for an edge (handles multiple destinations)
|
|
162
|
-
* Each handoff tool spawns the child agent's compiled subgraph asynchronously
|
|
163
|
-
* and returns immediately. The orchestrator uses `collect_results` to retrieve
|
|
164
|
-
* outputs and `check_agents` to monitor status — a push-based autonomous
|
|
165
|
-
* orchestration pattern.
|
|
166
|
-
*
|
|
89
|
+
* Create handoff tools for an edge (handles multiple destinations)
|
|
167
90
|
* @param edge - The graph edge defining the handoff
|
|
168
|
-
* @param sourceAgentId - The ID of the
|
|
91
|
+
* @param sourceAgentId - The ID of the agent that will perform the handoff
|
|
92
|
+
* @param sourceAgentName - The human-readable name of the source agent
|
|
169
93
|
*/
|
|
170
94
|
private createHandoffToolsForEdge;
|
|
171
|
-
/**
|
|
172
|
-
* Extract the final text result from a child agent's output messages.
|
|
173
|
-
* Walks backwards to find the last AIMessage with text content.
|
|
174
|
-
* Handles both string content and array content (multi-modal messages).
|
|
175
|
-
* @param messages - The child agent's output messages
|
|
176
|
-
* @param agentId - The child agent ID (for fallback message)
|
|
177
|
-
*/
|
|
178
|
-
static extractHandoffResult(messages: BaseMessage[], agentId: string): string;
|
|
179
|
-
/**
|
|
180
|
-
* Truncate handoff result using head/tail strategy (60/40 split).
|
|
181
|
-
* Preserves the beginning (key findings) and end (conclusions).
|
|
182
|
-
* Matches the TaskTool.truncateResult pattern used by host orchestrators.
|
|
183
|
-
* @param result - The full result text
|
|
184
|
-
* @param maxChars - Maximum allowed characters
|
|
185
|
-
*/
|
|
186
|
-
static truncateHandoffResult(result: string, maxChars: number): string;
|
|
187
|
-
/**
|
|
188
|
-
* Build a meaningful default description for a handoff tool.
|
|
189
|
-
* @param destContext - AgentContext of the destination agent
|
|
190
|
-
* @param destinationId - Raw agent ID (fallback)
|
|
191
|
-
*/
|
|
192
|
-
private buildDefaultHandoffDescription;
|
|
193
95
|
/**
|
|
194
96
|
* Create a complete agent subgraph (similar to createReactAgent)
|
|
195
97
|
*/
|
|
196
98
|
private createAgentSubgraph;
|
|
197
|
-
/**
|
|
198
|
-
* BFS from `rootAgentId` across sequence + transfer edges (NOT handoff edges).
|
|
199
|
-
* Returns the set of agents reachable in this agent's "local workflow".
|
|
200
|
-
*/
|
|
201
|
-
private computeReachableViaNonHandoff;
|
|
202
|
-
/**
|
|
203
|
-
* Build a compiled scoped StateGraph containing `agentIds` as nodes, rooted
|
|
204
|
-
* at `rootAgentId`. Linear sequence edges where both endpoints are in scope
|
|
205
|
-
* are wired directly; nodes with no outgoing in-scope edges route to END.
|
|
206
|
-
*
|
|
207
|
-
* Each node is wrapped around the per-agent `createAgentNode` compiled
|
|
208
|
-
* workflow (agent + tools loop) to preserve isolated tool context.
|
|
209
|
-
*/
|
|
210
|
-
private buildScopedSubgraph;
|
|
211
99
|
/**
|
|
212
100
|
* Detects if the current agent is receiving a handoff and processes the messages accordingly.
|
|
213
101
|
* Returns filtered messages with the transfer tool call/message removed, plus any instructions,
|
|
@@ -220,21 +108,9 @@ export declare class MultiAgentGraph extends StandardGraph {
|
|
|
220
108
|
* @param agentId - The agent ID to check for handoff reception
|
|
221
109
|
* @returns Object with filtered messages, extracted instructions, source agent, and parallel siblings
|
|
222
110
|
*/
|
|
111
|
+
private processHandoffReception;
|
|
223
112
|
/**
|
|
224
|
-
*
|
|
225
|
-
* {@link prepareHandoffMessagesUtil} for the full implementation and
|
|
226
|
-
* semantics — this static method is a thin delegate preserved for
|
|
227
|
-
* backward compatibility with existing call sites and unit tests.
|
|
228
|
-
*/
|
|
229
|
-
static prepareHandoffMessages(messages: BaseMessage[]): BaseMessage[];
|
|
230
|
-
/**
|
|
231
|
-
* Build an isolated message context for a downstream scoped-subgraph
|
|
232
|
-
* node. See {@link prepareIsolatedChildMessagesUtil} for details.
|
|
233
|
-
*/
|
|
234
|
-
static prepareIsolatedChildMessages(messages: BaseMessage[]): BaseMessage[];
|
|
235
|
-
private processTransferReception;
|
|
236
|
-
/**
|
|
237
|
-
* Create the multi-agent workflow with handoffs, transfers, and sequences
|
|
113
|
+
* Create the multi-agent workflow with dynamic handoffs
|
|
238
114
|
*/
|
|
239
115
|
createWorkflow(): t.CompiledMultiAgentWorkflow;
|
|
240
116
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { HookEvent, HookMatcher } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Run-scoped storage for hook matchers with an additional layer for
|
|
4
|
+
* session-scoped matchers that should be cleaned up between sessions.
|
|
5
|
+
*
|
|
6
|
+
* Hosts construct one registry per `Run` (mirroring how `HandlerRegistry` is
|
|
7
|
+
* scoped) and register global matchers + per-session matchers against it.
|
|
8
|
+
* Registration is strictly additive — nothing in this class mutates a
|
|
9
|
+
* matcher's callbacks or flags after insertion.
|
|
10
|
+
*
|
|
11
|
+
* ## Why `Map<sessionId, MatcherBucket>` and not `Record`
|
|
12
|
+
*
|
|
13
|
+
* LibreChat runs thousands of parallel sessions in one Node process, and
|
|
14
|
+
* hook registration happens inside hot paths (tool loading, agent spawning).
|
|
15
|
+
* A `Record<sessionId, ...>` has to be spread on every insertion, which is
|
|
16
|
+
* O(n) per call and O(n²) total for a batch of parallel registrations. A
|
|
17
|
+
* Map mutates in place, keeping insertions O(1). This mirrors the reasoning
|
|
18
|
+
* Claude Code documents at `utils/hooks/sessionHooks.ts:62`.
|
|
19
|
+
*/
|
|
20
|
+
export declare class HookRegistry {
|
|
21
|
+
private readonly global;
|
|
22
|
+
private readonly sessions;
|
|
23
|
+
/**
|
|
24
|
+
* Register a matcher for the lifetime of this registry (= one Run).
|
|
25
|
+
* Returns an unregister function that removes the matcher by reference.
|
|
26
|
+
*/
|
|
27
|
+
register<E extends HookEvent>(event: E, matcher: HookMatcher<E>): () => void;
|
|
28
|
+
/**
|
|
29
|
+
* Register a matcher for a specific session. Cleared automatically when
|
|
30
|
+
* `clearSession(sessionId)` is called, or can be removed directly via the
|
|
31
|
+
* returned unregister function.
|
|
32
|
+
*/
|
|
33
|
+
registerSession<E extends HookEvent>(sessionId: string, event: E, matcher: HookMatcher<E>): () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Returns all matchers registered for `event`, concatenating global first
|
|
36
|
+
* and then session-specific (when `sessionId` is supplied). The caller
|
|
37
|
+
* receives a fresh array, so iterating it is safe even if a matcher is
|
|
38
|
+
* removed mid-iteration (e.g. via `once: true`).
|
|
39
|
+
*/
|
|
40
|
+
getMatchers<E extends HookEvent>(event: E, sessionId?: string): HookMatcher<E>[];
|
|
41
|
+
/**
|
|
42
|
+
* Removes `matcher` by reference from global storage first, falling back
|
|
43
|
+
* to the session bucket when `sessionId` is supplied. Used by
|
|
44
|
+
* `executeHooks` to drop `once: true` matchers after they fire.
|
|
45
|
+
*/
|
|
46
|
+
removeMatcher<E extends HookEvent>(event: E, matcher: HookMatcher<E>, sessionId?: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Drops every session-scoped matcher for `sessionId`. Call this in the
|
|
49
|
+
* `finally` block around a Run so a `once: true` hook that never fired
|
|
50
|
+
* cannot leak into the next session on the same registry.
|
|
51
|
+
*/
|
|
52
|
+
clearSession(sessionId: string): void;
|
|
53
|
+
/** True if at least one matcher exists for `event` (global + session). */
|
|
54
|
+
hasHookFor(event: HookEvent, sessionId?: string): boolean;
|
|
55
|
+
private ensureSessionBucket;
|
|
56
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { Logger } from 'winston';
|
|
2
|
+
import type { HookRegistry } from './HookRegistry';
|
|
3
|
+
import type { HookInput, AggregatedHookResult } from './types';
|
|
4
|
+
/** Default per-hook timeout when a matcher doesn't set its own. */
|
|
5
|
+
export declare const DEFAULT_HOOK_TIMEOUT_MS = 30000;
|
|
6
|
+
/**
|
|
7
|
+
* Options for a single `executeHooks` call. The `input` drives everything —
|
|
8
|
+
* the event name is read from `input.hook_event_name`, matchers are looked
|
|
9
|
+
* up against that event, and each hook receives `input` directly.
|
|
10
|
+
*/
|
|
11
|
+
export interface ExecuteHooksOptions {
|
|
12
|
+
registry: HookRegistry;
|
|
13
|
+
input: HookInput;
|
|
14
|
+
/** Scope lookup to this session (in addition to global matchers). */
|
|
15
|
+
sessionId?: string;
|
|
16
|
+
/** Query string matched against each matcher's pattern (tool name, etc.). */
|
|
17
|
+
matchQuery?: string;
|
|
18
|
+
/** Parent AbortSignal — combined with per-hook timeout into the hook signal. */
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
/** Default per-hook timeout; overridden by `matcher.timeout` when present. */
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
/** Optional winston logger for non-internal hook errors. */
|
|
23
|
+
logger?: Logger;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fires every matcher registered against `input.hook_event_name`, folding
|
|
27
|
+
* their results per `deny > ask > allow` precedence and accumulating
|
|
28
|
+
* context/errors.
|
|
29
|
+
*
|
|
30
|
+
* ## Parallelism and determinism
|
|
31
|
+
*
|
|
32
|
+
* All matching hooks fire simultaneously and are awaited via `Promise.all`,
|
|
33
|
+
* which preserves input-array order in its returned results. The fold
|
|
34
|
+
* therefore iterates outcomes in **registration order** — outer loop over
|
|
35
|
+
* matchers as they sit in the registry (global first, then session), inner
|
|
36
|
+
* loop over each matcher's `hooks` array. Last-writer-wins fields
|
|
37
|
+
* (`updatedInput`, `updatedOutput`) are deterministic in that order, even
|
|
38
|
+
* though hooks may complete in arbitrary wall-clock order.
|
|
39
|
+
*
|
|
40
|
+
* Consumers that need a single authoritative rewrite should still scope
|
|
41
|
+
* `updatedInput`/`updatedOutput` to one hook per matcher to avoid subtle
|
|
42
|
+
* precedence bugs when matchers are added in a different order than
|
|
43
|
+
* expected.
|
|
44
|
+
*
|
|
45
|
+
* ## Timeouts and cancellation
|
|
46
|
+
*
|
|
47
|
+
* Each matcher receives **one shared `AbortSignal`** derived from the
|
|
48
|
+
* caller's parent signal combined with `matcher.timeout` (falling back to
|
|
49
|
+
* `opts.timeoutMs`, default {@link DEFAULT_HOOK_TIMEOUT_MS}). Sharing the
|
|
50
|
+
* signal across hooks in a matcher collapses N timer allocations into
|
|
51
|
+
* one, which matters on the PreToolUse hot path where a matcher with
|
|
52
|
+
* several hooks fires on every tool call. Each hook call is raced
|
|
53
|
+
* against the shared signal, so even a hook that ignores the signal is
|
|
54
|
+
* force-unblocked when the timeout fires. Timeout/abort errors are
|
|
55
|
+
* swallowed into the aggregated result's `errors` array (non-fatal by
|
|
56
|
+
* default).
|
|
57
|
+
*
|
|
58
|
+
* ## Internal matchers
|
|
59
|
+
*
|
|
60
|
+
* A matcher with `internal: true` is excluded from both the `errors` array
|
|
61
|
+
* and the logger output. Use it for infrastructure hooks whose failures
|
|
62
|
+
* should not pollute user-visible diagnostics.
|
|
63
|
+
*
|
|
64
|
+
* ## Once semantics — atomic at-most-once
|
|
65
|
+
*
|
|
66
|
+
* A matcher with `once: true` is removed from the registry **before any
|
|
67
|
+
* hook runs**, inside the synchronous prefix of `executeHooks` (between
|
|
68
|
+
* `getMatchers` and the first `await`). Because Node's event loop serialises
|
|
69
|
+
* sync work, two concurrent `executeHooks` calls can never both observe
|
|
70
|
+
* and dispatch the same `once` matcher — whichever call runs its sync
|
|
71
|
+
* prefix first consumes it, and the loser sees an empty bucket.
|
|
72
|
+
*
|
|
73
|
+
* Trade-off: if every hook in a `once` matcher throws, the matcher is
|
|
74
|
+
* still gone. "Once" here means "at most one dispatch, ever", not "at
|
|
75
|
+
* most one successful execution with retry on failure". Hosts that need
|
|
76
|
+
* retry semantics should register a normal matcher and self-unregister
|
|
77
|
+
* via the `unregister` callback returned from `registry.register`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function executeHooks(opts: ExecuteHooksOptions): Promise<AggregatedHookResult>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { HookRegistry } from './HookRegistry';
|
|
2
|
+
export { executeHooks, DEFAULT_HOOK_TIMEOUT_MS } from './executeHooks';
|
|
3
|
+
export { matchesQuery, hasNestedQuantifier, MAX_PATTERN_LENGTH, MAX_CACHE_SIZE, } from './matchers';
|
|
4
|
+
export { HOOK_EVENTS } from './types';
|
|
5
|
+
export type { HookEvent, HookInput, HookOutput, HookCallback, HookMatcher, HooksByEvent, HookInputByEvent, HookOutputByEvent, BaseHookInput, BaseHookOutput, ToolDecision, StopDecision, AggregatedHookResult, RunStartHookInput, UserPromptSubmitHookInput, PreToolUseHookInput, PostToolUseHookInput, PostToolUseFailureHookInput, PermissionDeniedHookInput, SubagentStartHookInput, SubagentStopHookInput, StopHookInput, StopFailureHookInput, PreCompactHookInput, PostCompactHookInput, RunStartHookOutput, UserPromptSubmitHookOutput, PreToolUseHookOutput, PostToolUseHookOutput, PostToolUseFailureHookOutput, PermissionDeniedHookOutput, SubagentStartHookOutput, SubagentStopHookOutput, StopHookOutput, StopFailureHookOutput, PreCompactHookOutput, PostCompactHookOutput, } from './types';
|
|
6
|
+
export type { ExecuteHooksOptions } from './executeHooks';
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upper bound on hook-matcher pattern length. Patterns longer than this
|
|
3
|
+
* are rejected outright — the goal is a cheap cap on pathological inputs
|
|
4
|
+
* (repeated quantifiers, huge alternation groups) without pulling in a
|
|
5
|
+
* safe-regex dependency.
|
|
6
|
+
*
|
|
7
|
+
* Legitimate matchers are almost always under 50 characters (tool names,
|
|
8
|
+
* short alternations, simple prefix anchors); 512 leaves generous
|
|
9
|
+
* headroom while preventing 10KB regexes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MAX_PATTERN_LENGTH = 512;
|
|
12
|
+
/**
|
|
13
|
+
* Upper bound on the compilation cache. Chosen to comfortably hold every
|
|
14
|
+
* distinct pattern a single multi-tenant run is likely to see (tools,
|
|
15
|
+
* agent types, basename filters) without growing without bound.
|
|
16
|
+
*
|
|
17
|
+
* Under hosts that register unique patterns per tenant, LRU eviction
|
|
18
|
+
* keeps the working set bounded — cold patterns are re-compiled on next
|
|
19
|
+
* use, which is the correct cost trade-off for long-running processes
|
|
20
|
+
* that must not leak memory.
|
|
21
|
+
*/
|
|
22
|
+
export declare const MAX_CACHE_SIZE = 256;
|
|
23
|
+
/**
|
|
24
|
+
* Cheap syntactic detector for the most common catastrophic-backtracking
|
|
25
|
+
* shape: a quantified group that contains another quantifier (e.g.
|
|
26
|
+
* `(a+)+`, `(.*)*`, `(\w+)+$`, `(?:(a+))+`). This is the "nested
|
|
27
|
+
* quantifier" class of ReDoS — runs in polynomial-or-worse time on
|
|
28
|
+
* adversarial inputs.
|
|
29
|
+
*
|
|
30
|
+
* The scan walks the pattern linearly using an explicit stack of group
|
|
31
|
+
* frames. For each group it tracks whether the group's contents include
|
|
32
|
+
* "backtrack risk" — meaning a direct quantifier OR a nested group that
|
|
33
|
+
* carries risk up. When a group closes with a trailing quantifier AND its
|
|
34
|
+
* frame carries backtrack risk, the pattern is flagged. Risk propagates
|
|
35
|
+
* to the enclosing frame when a child group closes (whether the child
|
|
36
|
+
* itself was quantified or not), so `(?:(a+))+` — equivalent to `(a+)+`
|
|
37
|
+
* — is flagged correctly even though the outer non-capturing wrapper is
|
|
38
|
+
* one level removed from the inner quantifier.
|
|
39
|
+
*
|
|
40
|
+
* ## Group-syntax prefixes
|
|
41
|
+
*
|
|
42
|
+
* Non-capturing groups (`(?:`), lookaheads (`(?=`, `(?!`), lookbehinds
|
|
43
|
+
* (`(?<=`, `(?<!`), and named groups (`(?<name>`) are skipped over at
|
|
44
|
+
* the `(` so their `?` is not misread as a quantifier. Without this,
|
|
45
|
+
* `(?:pre_)?tool_name` would be incorrectly rejected because the scanner
|
|
46
|
+
* would see the group-syntax `?` as a quantifier at depth 1.
|
|
47
|
+
*
|
|
48
|
+
* ## Heuristic, not a proof
|
|
49
|
+
*
|
|
50
|
+
* This catches the common forms but not all. Ambiguous-alternation ReDoS
|
|
51
|
+
* like `(a|a)+` is not detected. Pathologically long patterns are also
|
|
52
|
+
* caught by {@link MAX_PATTERN_LENGTH}. Hosts that accept user-supplied
|
|
53
|
+
* patterns must still validate upstream.
|
|
54
|
+
*/
|
|
55
|
+
export declare function hasNestedQuantifier(pattern: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Tests whether a hook matcher pattern matches the given query string.
|
|
58
|
+
*
|
|
59
|
+
* ## Semantics
|
|
60
|
+
*
|
|
61
|
+
* - `undefined` or empty `pattern` matches any query (wildcard). This is
|
|
62
|
+
* the intended shape for events that do not supply a query string at
|
|
63
|
+
* all (`RunStart`, `Stop`, etc.) — register such matchers without a
|
|
64
|
+
* pattern.
|
|
65
|
+
* - `undefined` or empty `query` with a non-empty `pattern` never matches.
|
|
66
|
+
* Setting a pattern on a query-less event is therefore inert: the
|
|
67
|
+
* matcher will simply never fire. This is intentional — it keeps
|
|
68
|
+
* query-based filtering out of event types where "query" has no meaning,
|
|
69
|
+
* and is documented on `HookMatcher.pattern`.
|
|
70
|
+
* - Otherwise, the pattern is compiled once (via a bounded LRU cache) and
|
|
71
|
+
* tested against the query.
|
|
72
|
+
* - Invalid regex patterns never throw — a failed compile is cached as
|
|
73
|
+
* "never matches" so a single malformed pattern cannot take out a whole
|
|
74
|
+
* `executeHooks` batch.
|
|
75
|
+
*
|
|
76
|
+
* ## ReDoS mitigations
|
|
77
|
+
*
|
|
78
|
+
* Patterns compile through three cheap gates before reaching `new RegExp`:
|
|
79
|
+
*
|
|
80
|
+
* 1. {@link MAX_PATTERN_LENGTH} length cap rejects oversized inputs.
|
|
81
|
+
* 2. {@link hasNestedQuantifier} rejects the most common catastrophic-
|
|
82
|
+
* backtracking shape (quantified group containing a quantifier).
|
|
83
|
+
* 3. Successful compiles are cached in a bounded LRU so repeated calls
|
|
84
|
+
* never re-enter the regex compiler.
|
|
85
|
+
*
|
|
86
|
+
* These are a floor, not a ceiling. Hosts that accept user-supplied
|
|
87
|
+
* patterns should still validate upstream. The design report §3.8 routes
|
|
88
|
+
* persistable hooks through a host-side compiler before they reach this
|
|
89
|
+
* module.
|
|
90
|
+
*/
|
|
91
|
+
export declare function matchesQuery(pattern: string | undefined, query: string | undefined): boolean;
|
|
92
|
+
/** Clears the regex compilation cache. Intended for test isolation. */
|
|
93
|
+
export declare function clearMatcherCache(): void;
|
|
94
|
+
/** Returns the current size of the compilation cache. Intended for tests. */
|
|
95
|
+
export declare function getMatcherCacheSize(): number;
|