@illuma-ai/agents 1.4.0-alpha.6 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/cjs/agents/AgentContext.cjs +274 -67
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +44 -13
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +182 -5
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +152 -1167
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
- package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
- package/dist/cjs/hooks/HookRegistry.cjs +162 -0
- package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
- package/dist/cjs/hooks/executeHooks.cjs +276 -0
- package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
- package/dist/cjs/hooks/matchers.cjs +256 -0
- package/dist/cjs/hooks/matchers.cjs.map +1 -0
- package/dist/cjs/hooks/types.cjs +27 -0
- package/dist/cjs/hooks/types.cjs.map +1 -0
- package/dist/cjs/langchain/google-common.cjs +3 -0
- package/dist/cjs/langchain/google-common.cjs.map +1 -0
- package/dist/cjs/langchain/index.cjs +86 -0
- package/dist/cjs/langchain/index.cjs.map +1 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs +3 -0
- package/dist/cjs/langchain/language_models/chat_models.cjs.map +1 -0
- package/dist/cjs/langchain/messages/tool.cjs +3 -0
- package/dist/cjs/langchain/messages/tool.cjs.map +1 -0
- package/dist/cjs/langchain/messages.cjs +51 -0
- package/dist/cjs/langchain/messages.cjs.map +1 -0
- package/dist/cjs/langchain/openai.cjs +3 -0
- package/dist/cjs/langchain/openai.cjs.map +1 -0
- package/dist/cjs/langchain/prompts.cjs +11 -0
- package/dist/cjs/langchain/prompts.cjs.map +1 -0
- package/dist/cjs/langchain/runnables.cjs +19 -0
- package/dist/cjs/langchain/runnables.cjs.map +1 -0
- package/dist/cjs/langchain/tools.cjs +23 -0
- package/dist/cjs/langchain/tools.cjs.map +1 -0
- package/dist/cjs/langchain/utils/env.cjs +11 -0
- package/dist/cjs/langchain/utils/env.cjs.map +1 -0
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/cacheSupport.cjs +55 -0
- package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +1 -0
- package/dist/cjs/llm/bedrock/index.cjs +61 -33
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +1 -4
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +27 -10
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/main.cjs +178 -127
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/memory/citations.cjs +4 -4
- package/dist/cjs/memory/citations.cjs.map +1 -1
- package/dist/cjs/memory/constants.cjs +17 -17
- package/dist/cjs/memory/constants.cjs.map +1 -1
- package/dist/cjs/memory/mmr.cjs +1 -1
- package/dist/cjs/memory/mmr.cjs.map +1 -1
- package/dist/cjs/memory/paths.cjs +1 -1
- package/dist/cjs/memory/paths.cjs.map +1 -1
- package/dist/cjs/memory/recallTracking.cjs +3 -3
- package/dist/cjs/memory/recallTracking.cjs.map +1 -1
- package/dist/cjs/memory/temporalDecay.cjs +2 -2
- package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +89 -0
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +156 -0
- package/dist/cjs/messages/contextPruning.cjs.map +1 -0
- package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +144 -20
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +505 -4
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/run.cjs +141 -1
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/tools/BashExecutor.cjs +235 -0
- package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +297 -0
- package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
- package/dist/cjs/tools/CodeExecutor.cjs +45 -47
- package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs +16 -11
- package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
- package/dist/cjs/tools/ReadFile.cjs +44 -0
- package/dist/cjs/tools/ReadFile.cjs.map +1 -0
- package/dist/cjs/tools/SkillTool.cjs +51 -0
- package/dist/cjs/tools/SkillTool.cjs.map +1 -0
- package/dist/cjs/tools/SubagentTool.cjs +93 -0
- package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +450 -24
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
- package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
- package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
- package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
- package/dist/cjs/tools/memory/shared.cjs +1 -1
- package/dist/cjs/tools/memory/shared.cjs.map +1 -1
- package/dist/cjs/tools/search/search.cjs +11 -3
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tavily-scraper.cjs +189 -0
- package/dist/cjs/tools/search/tavily-scraper.cjs.map +1 -0
- package/dist/cjs/tools/search/tavily-search.cjs +372 -0
- package/dist/cjs/tools/search/tavily-search.cjs.map +1 -0
- package/dist/cjs/tools/search/tool.cjs +28 -4
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +10 -3
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/cjs/tools/skillCatalog.cjs +84 -0
- package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +512 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
- package/dist/cjs/tools/toolOutputReferences.cjs +670 -0
- package/dist/cjs/tools/toolOutputReferences.cjs.map +1 -0
- package/dist/cjs/types/agent-cache.cjs +54 -0
- package/dist/cjs/types/agent-cache.cjs.map +1 -0
- package/dist/cjs/types/graph.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +135 -0
- package/dist/cjs/utils/truncation.cjs.map +1 -0
- package/dist/esm/agents/AgentContext.mjs +274 -67
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +44 -12
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +182 -5
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +155 -1170
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
- package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
- package/dist/esm/hooks/HookRegistry.mjs +160 -0
- package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
- package/dist/esm/hooks/executeHooks.mjs +273 -0
- package/dist/esm/hooks/executeHooks.mjs.map +1 -0
- package/dist/esm/hooks/matchers.mjs +251 -0
- package/dist/esm/hooks/matchers.mjs.map +1 -0
- package/dist/esm/hooks/types.mjs +25 -0
- package/dist/esm/hooks/types.mjs.map +1 -0
- package/dist/esm/langchain/google-common.mjs +2 -0
- package/dist/esm/langchain/google-common.mjs.map +1 -0
- package/dist/esm/langchain/index.mjs +5 -0
- package/dist/esm/langchain/language_models/chat_models.mjs +2 -0
- package/dist/esm/langchain/language_models/chat_models.mjs.map +1 -0
- package/dist/esm/langchain/messages/tool.mjs +2 -0
- package/dist/esm/langchain/messages/tool.mjs.map +1 -0
- package/dist/esm/langchain/messages.mjs +2 -0
- package/dist/esm/langchain/messages.mjs.map +1 -0
- package/dist/esm/langchain/openai.mjs +2 -0
- package/dist/esm/langchain/openai.mjs.map +1 -0
- package/dist/esm/langchain/prompts.mjs +2 -0
- package/dist/esm/langchain/prompts.mjs.map +1 -0
- package/dist/esm/langchain/runnables.mjs +2 -0
- package/dist/esm/langchain/runnables.mjs.map +1 -0
- package/dist/esm/langchain/tools.mjs +2 -0
- package/dist/esm/langchain/tools.mjs.map +1 -0
- package/dist/esm/langchain/utils/env.mjs +2 -0
- package/dist/esm/langchain/utils/env.mjs.map +1 -0
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/cacheSupport.mjs +52 -0
- package/dist/esm/llm/bedrock/cacheSupport.mjs.map +1 -0
- package/dist/esm/llm/bedrock/index.mjs +61 -34
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +1 -4
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +27 -10
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/main.mjs +21 -27
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/memory/citations.mjs +4 -4
- package/dist/esm/memory/citations.mjs.map +1 -1
- package/dist/esm/memory/constants.mjs +17 -17
- package/dist/esm/memory/constants.mjs.map +1 -1
- package/dist/esm/memory/mmr.mjs +1 -1
- package/dist/esm/memory/mmr.mjs.map +1 -1
- package/dist/esm/memory/paths.mjs +1 -1
- package/dist/esm/memory/paths.mjs.map +1 -1
- package/dist/esm/memory/recallTracking.mjs +3 -3
- package/dist/esm/memory/recallTracking.mjs.map +1 -1
- package/dist/esm/memory/temporalDecay.mjs +2 -2
- package/dist/esm/memory/temporalDecay.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +89 -0
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +154 -0
- package/dist/esm/messages/contextPruning.mjs.map +1 -0
- package/dist/esm/messages/contextPruningSettings.mjs +50 -0
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +136 -12
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +504 -7
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/run.mjs +141 -1
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/tools/BashExecutor.mjs +227 -0
- package/dist/esm/tools/BashExecutor.mjs.map +1 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs +288 -0
- package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
- package/dist/esm/tools/CodeExecutor.mjs +45 -48
- package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
- package/dist/esm/tools/ProgrammaticToolCalling.mjs +17 -12
- package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
- package/dist/esm/tools/ReadFile.mjs +39 -0
- package/dist/esm/tools/ReadFile.mjs.map +1 -0
- package/dist/esm/tools/SkillTool.mjs +46 -0
- package/dist/esm/tools/SkillTool.mjs.map +1 -0
- package/dist/esm/tools/SubagentTool.mjs +86 -0
- package/dist/esm/tools/SubagentTool.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +452 -26
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
- package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
- package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
- package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
- package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
- package/dist/esm/tools/memory/shared.mjs +1 -1
- package/dist/esm/tools/memory/shared.mjs.map +1 -1
- package/dist/esm/tools/search/search.mjs +11 -3
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tavily-scraper.mjs +186 -0
- package/dist/esm/tools/search/tavily-scraper.mjs.map +1 -0
- package/dist/esm/tools/search/tavily-search.mjs +370 -0
- package/dist/esm/tools/search/tavily-search.mjs.map +1 -0
- package/dist/esm/tools/search/tool.mjs +28 -4
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +10 -3
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/esm/tools/skillCatalog.mjs +82 -0
- package/dist/esm/tools/skillCatalog.mjs.map +1 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +506 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
- package/dist/esm/tools/toolOutputReferences.mjs +662 -0
- package/dist/esm/tools/toolOutputReferences.mjs.map +1 -0
- package/dist/esm/types/agent-cache.mjs +52 -0
- package/dist/esm/types/agent-cache.mjs.map +1 -0
- package/dist/esm/types/graph.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +128 -0
- package/dist/esm/utils/truncation.mjs.map +1 -0
- package/dist/types/agents/AgentContext.d.ts +101 -8
- package/dist/types/common/enum.d.ts +39 -12
- package/dist/types/common/index.d.ts +0 -1
- package/dist/types/graphs/Graph.d.ts +43 -0
- package/dist/types/graphs/MultiAgentGraph.d.ts +26 -150
- package/dist/types/graphs/index.d.ts +0 -1
- package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
- package/dist/types/hooks/HookRegistry.d.ts +56 -0
- package/dist/types/hooks/executeHooks.d.ts +79 -0
- package/dist/types/hooks/index.d.ts +6 -0
- package/dist/types/hooks/matchers.d.ts +95 -0
- package/dist/types/hooks/types.d.ts +320 -0
- package/dist/types/index.d.ts +9 -9
- package/dist/types/langchain/google-common.d.ts +1 -0
- package/dist/types/langchain/index.d.ts +8 -0
- package/dist/types/langchain/language_models/chat_models.d.ts +1 -0
- package/dist/types/langchain/messages/tool.d.ts +1 -0
- package/dist/types/langchain/messages.d.ts +2 -0
- package/dist/types/langchain/openai.d.ts +1 -0
- package/dist/types/langchain/prompts.d.ts +1 -0
- package/dist/types/langchain/runnables.d.ts +2 -0
- package/dist/types/langchain/tools.d.ts +2 -0
- package/dist/types/langchain/utils/env.d.ts +1 -0
- package/dist/types/llm/bedrock/cacheSupport.d.ts +35 -0
- package/dist/types/llm/bedrock/index.d.ts +54 -1
- package/dist/types/llm/openai/index.d.ts +1 -1
- package/dist/types/memory/citations.d.ts +4 -4
- package/dist/types/memory/constants.d.ts +17 -17
- package/dist/types/memory/mmr.d.ts +3 -3
- package/dist/types/memory/paths.d.ts +1 -1
- package/dist/types/memory/temporalDecay.d.ts +2 -2
- package/dist/types/memory/types.d.ts +3 -3
- package/dist/types/messages/contextPruning.d.ts +42 -0
- package/dist/types/messages/contextPruningSettings.d.ts +44 -0
- package/dist/types/messages/format.d.ts +9 -1
- package/dist/types/messages/index.d.ts +2 -0
- package/dist/types/messages/prune.d.ts +91 -1
- package/dist/types/run.d.ts +2 -0
- package/dist/types/tools/BashExecutor.d.ts +76 -0
- package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
- package/dist/types/tools/CodeExecutor.d.ts +8 -26
- package/dist/types/tools/ReadFile.d.ts +28 -0
- package/dist/types/tools/SkillTool.d.ts +40 -0
- package/dist/types/tools/SubagentTool.d.ts +36 -0
- package/dist/types/tools/ToolNode.d.ts +77 -5
- package/dist/types/tools/memory/shared.d.ts +1 -1
- package/dist/types/tools/search/tavily-scraper.d.ts +19 -0
- package/dist/types/tools/search/tavily-search.d.ts +4 -0
- package/dist/types/tools/search/types.d.ts +99 -5
- package/dist/types/tools/search/utils.d.ts +2 -2
- package/dist/types/tools/skillCatalog.d.ts +19 -0
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
- package/dist/types/tools/subagent/index.d.ts +2 -0
- package/dist/types/tools/subagent/types.d.ts +84 -0
- package/dist/types/tools/toolOutputReferences.d.ts +236 -0
- package/dist/types/types/agent-cache.d.ts +71 -0
- package/dist/types/types/graph.d.ts +163 -22
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/messages.d.ts +26 -0
- package/dist/types/types/run.d.ts +22 -0
- package/dist/types/types/skill.d.ts +9 -0
- package/dist/types/types/tools.d.ts +111 -0
- package/dist/types/utils/index.d.ts +1 -3
- package/dist/types/utils/truncation.d.ts +70 -0
- package/package.json +57 -17
- package/src/agents/AgentContext.ts +321 -78
- package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +259 -0
- package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +266 -0
- package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +342 -0
- package/src/agents/__tests__/AgentContext.test.ts +632 -0
- package/src/common/__tests__/enum.test.ts +7 -17
- package/src/common/enum.ts +43 -12
- package/src/common/index.ts +0 -1
- package/src/graphs/Graph.ts +222 -2
- package/src/graphs/MultiAgentGraph.ts +154 -1466
- package/src/graphs/__tests__/MultiAgentGraph.test.ts +91 -0
- package/src/graphs/gapFeatures.test.ts +1 -1
- package/src/graphs/index.ts +0 -1
- package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
- package/src/graphs/phases/memoryFlushPhase.ts +2 -2
- package/src/hooks/HookRegistry.ts +208 -0
- package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
- package/src/hooks/__tests__/compactHooks.test.ts +214 -0
- package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
- package/src/hooks/__tests__/integration.test.ts +337 -0
- package/src/hooks/__tests__/matchers.test.ts +238 -0
- package/src/hooks/__tests__/toolHooks.test.ts +665 -0
- package/src/hooks/executeHooks.ts +375 -0
- package/src/hooks/index.ts +57 -0
- package/src/hooks/matchers.ts +280 -0
- package/src/hooks/types.ts +404 -0
- package/src/index.ts +15 -24
- package/src/langchain/google-common.ts +1 -0
- package/src/langchain/index.ts +8 -0
- package/src/langchain/language_models/chat_models.ts +1 -0
- package/src/langchain/messages/tool.ts +5 -0
- package/src/langchain/messages.ts +21 -0
- package/src/langchain/openai.ts +1 -0
- package/src/langchain/prompts.ts +1 -0
- package/src/langchain/runnables.ts +7 -0
- package/src/langchain/tools.ts +8 -0
- package/src/langchain/utils/env.ts +1 -0
- package/src/llm/anthropic/utils/message_inputs.ts +10 -1
- package/src/llm/anthropic/utils/server-tool-inputs.test.ts +436 -0
- package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +166 -18
- package/src/llm/bedrock/cacheSupport.test.ts +99 -0
- package/src/llm/bedrock/cacheSupport.ts +53 -0
- package/src/llm/bedrock/index.ts +116 -41
- package/src/llm/openai/index.ts +2 -2
- package/src/llm/openai/utils/index.ts +31 -14
- package/src/memory/citations.ts +4 -4
- package/src/memory/constants.ts +17 -17
- package/src/memory/mmr.ts +3 -3
- package/src/memory/paths.ts +1 -1
- package/src/memory/recallTracking.ts +3 -3
- package/src/memory/temporalDecay.ts +2 -2
- package/src/memory/types.ts +3 -3
- package/src/messages/__tests__/contextPruning.test.ts +228 -0
- package/src/messages/cache.test.ts +62 -24
- package/src/messages/cache.ts +112 -0
- package/src/messages/contextPruning.ts +191 -0
- package/src/messages/contextPruningSettings.ts +90 -0
- package/src/messages/ensureThinkingBlock.test.ts +1 -1
- package/src/messages/format.ts +164 -12
- package/src/messages/formatAgentMessages.skills.test.ts +413 -0
- package/src/messages/formatAgentMessages.test.ts +1 -1
- package/src/messages/index.ts +2 -0
- package/src/messages/prune.ts +661 -4
- package/src/run.ts +155 -1
- package/src/scripts/multi-agent-chain.ts +2 -2
- package/src/scripts/multi-agent-document-review-chain.ts +2 -2
- package/src/scripts/multi-agent-hybrid-flow.ts +4 -4
- package/src/scripts/multi-agent-parallel.ts +3 -3
- package/src/scripts/multi-agent-sequence.ts +3 -3
- package/src/scripts/multi-agent-subagent.ts +246 -0
- package/src/scripts/multi-agent-supervisor.ts +5 -5
- package/src/scripts/poc-multi-agent-comprehensive.ts +8 -8
- package/src/scripts/sequential-full-metadata-test.ts +2 -2
- package/src/scripts/subagent-event-driven-debug.ts +190 -0
- package/src/scripts/subagent-tools-debug.ts +160 -0
- package/src/scripts/test-custom-prompt-key.ts +3 -3
- package/src/scripts/test-handoff-input.ts +1 -1
- package/src/scripts/test-handoff-steering.ts +3 -3
- package/src/scripts/test-multi-agent-list-handoff.ts +1 -1
- package/src/scripts/test-parallel-agent-labeling.ts +3 -3
- package/src/scripts/test-parallel-handoffs.ts +2 -2
- package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-thinking-handoff.ts +1 -1
- package/src/scripts/test-thinking-to-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-tool-before-handoff-role-order.ts +1 -1
- package/src/scripts/test-tools-before-handoff.ts +1 -1
- package/src/specs/agent-handoffs.test.ts +26 -483
- package/src/specs/anthropic.simple.test.ts +61 -0
- package/src/specs/multi-agent-summarization.test.ts +396 -0
- package/src/specs/prune.orphans.test.ts +248 -0
- package/src/specs/prune.test.ts +104 -16
- package/src/specs/thinking-handoff.test.ts +19 -19
- package/src/tools/BashExecutor.ts +281 -0
- package/src/tools/BashProgrammaticToolCalling.ts +397 -0
- package/src/tools/CodeExecutor.ts +63 -54
- package/src/tools/ProgrammaticToolCalling.ts +29 -14
- package/src/tools/ReadFile.ts +39 -0
- package/src/tools/SkillTool.ts +46 -0
- package/src/tools/SubagentTool.ts +100 -0
- package/src/tools/ToolNode.ts +548 -26
- package/src/tools/__tests__/BashExecutor.test.ts +49 -0
- package/src/tools/__tests__/CodeExecutor.test.ts +37 -36
- package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +60 -0
- package/src/tools/__tests__/ReadFile.test.ts +44 -0
- package/src/tools/__tests__/SkillTool.test.ts +442 -0
- package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
- package/src/tools/__tests__/SubagentTool.test.ts +149 -0
- package/src/tools/__tests__/ToolNode.outputReferences.test.ts +1438 -0
- package/src/tools/__tests__/annotateMessagesForLLM.test.ts +479 -0
- package/src/tools/__tests__/skillCatalog.test.ts +161 -0
- package/src/tools/__tests__/subagentHooks.test.ts +210 -0
- package/src/tools/__tests__/toolOutputReferences.test.ts +415 -0
- package/src/tools/memory/memoryAppendTool.ts +1 -1
- package/src/tools/memory/memoryGetTool.ts +2 -2
- package/src/tools/memory/memorySearchTool.ts +3 -3
- package/src/tools/memory/shared.ts +1 -1
- package/src/tools/search/search.ts +12 -2
- package/src/tools/search/tavily-scraper.ts +235 -0
- package/src/tools/search/tavily-search.ts +424 -0
- package/src/tools/search/tavily.test.ts +965 -0
- package/src/tools/search/tool.ts +36 -2
- package/src/tools/search/types.ts +133 -8
- package/src/tools/search/utils.ts +13 -5
- package/src/tools/skillCatalog.ts +126 -0
- package/src/tools/subagent/SubagentExecutor.ts +676 -0
- package/src/tools/subagent/index.ts +13 -0
- package/src/tools/subagent/types.test.ts +70 -0
- package/src/tools/subagent/types.ts +115 -0
- package/src/tools/toolOutputReferences.ts +825 -0
- package/src/types/agent-cache.ts +74 -0
- package/src/types/graph.ts +172 -20
- package/src/types/index.ts +3 -0
- package/src/types/messages.ts +27 -0
- package/src/types/run.ts +22 -0
- package/src/types/skill.ts +11 -0
- package/src/types/tools.ts +118 -0
- package/src/utils/__tests__/truncation.test.ts +66 -0
- package/src/utils/index.ts +1 -3
- package/src/utils/truncation.ts +154 -0
- package/dist/cjs/common/spawnPath.cjs +0 -104
- package/dist/cjs/common/spawnPath.cjs.map +0 -1
- package/dist/cjs/content/ArtifactStore.cjs +0 -579
- package/dist/cjs/content/ArtifactStore.cjs.map +0 -1
- package/dist/cjs/content/ContentStore.cjs +0 -638
- package/dist/cjs/content/ContentStore.cjs.map +0 -1
- package/dist/cjs/content/contentAnalyzer.cjs +0 -91
- package/dist/cjs/content/contentAnalyzer.cjs.map +0 -1
- package/dist/cjs/content/index.cjs +0 -20
- package/dist/cjs/content/index.cjs.map +0 -1
- package/dist/cjs/content/mcpAutoCache.cjs +0 -115
- package/dist/cjs/content/mcpAutoCache.cjs.map +0 -1
- package/dist/cjs/graphs/HandoffRegistry.cjs +0 -143
- package/dist/cjs/graphs/HandoffRegistry.cjs.map +0 -1
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs +0 -288
- package/dist/cjs/providers/a2a/A2ACapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/a2a/client.cjs +0 -92
- package/dist/cjs/providers/a2a/client.cjs.map +0 -1
- package/dist/cjs/providers/a2a/config.cjs +0 -38
- package/dist/cjs/providers/a2a/config.cjs.map +0 -1
- package/dist/cjs/providers/capabilityNaming.cjs +0 -43
- package/dist/cjs/providers/capabilityNaming.cjs.map +0 -1
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs +0 -244
- package/dist/cjs/providers/mcp/MCPCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/mcp/config.cjs +0 -42
- package/dist/cjs/providers/mcp/config.cjs.map +0 -1
- package/dist/cjs/providers/mcp/transport.cjs +0 -65
- package/dist/cjs/providers/mcp/transport.cjs.map +0 -1
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs +0 -128
- package/dist/cjs/providers/tools-server/ToolsServerCapabilityProvider.cjs.map +0 -1
- package/dist/cjs/providers/types.cjs +0 -51
- package/dist/cjs/providers/types.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/schema.cjs +0 -86
- package/dist/cjs/tools/artifacts/schema.cjs.map +0 -1
- package/dist/cjs/tools/artifacts/tool.cjs +0 -219
- package/dist/cjs/tools/artifacts/tool.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/formatter.cjs +0 -93
- package/dist/cjs/tools/fileSearch/formatter.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/ragClient.cjs +0 -102
- package/dist/cjs/tools/fileSearch/ragClient.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/schema.cjs +0 -18
- package/dist/cjs/tools/fileSearch/schema.cjs.map +0 -1
- package/dist/cjs/tools/fileSearch/tool.cjs +0 -155
- package/dist/cjs/tools/fileSearch/tool.cjs.map +0 -1
- package/dist/cjs/tools/proxyTool.cjs +0 -102
- package/dist/cjs/tools/proxyTool.cjs.map +0 -1
- package/dist/cjs/utils/childAgentContext.cjs +0 -242
- package/dist/cjs/utils/childAgentContext.cjs.map +0 -1
- package/dist/cjs/utils/credentials.cjs +0 -142
- package/dist/cjs/utils/credentials.cjs.map +0 -1
- package/dist/cjs/utils/httpClient.cjs +0 -74
- package/dist/cjs/utils/httpClient.cjs.map +0 -1
- package/dist/cjs/utils/toolManifest.cjs +0 -100
- package/dist/cjs/utils/toolManifest.cjs.map +0 -1
- package/dist/esm/common/spawnPath.mjs +0 -95
- package/dist/esm/common/spawnPath.mjs.map +0 -1
- package/dist/esm/content/ArtifactStore.mjs +0 -576
- package/dist/esm/content/ArtifactStore.mjs.map +0 -1
- package/dist/esm/content/ContentStore.mjs +0 -635
- package/dist/esm/content/ContentStore.mjs.map +0 -1
- package/dist/esm/content/contentAnalyzer.mjs +0 -87
- package/dist/esm/content/contentAnalyzer.mjs.map +0 -1
- package/dist/esm/content/index.mjs +0 -5
- package/dist/esm/content/mcpAutoCache.mjs +0 -111
- package/dist/esm/content/mcpAutoCache.mjs.map +0 -1
- package/dist/esm/graphs/HandoffRegistry.mjs +0 -141
- package/dist/esm/graphs/HandoffRegistry.mjs.map +0 -1
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs +0 -281
- package/dist/esm/providers/a2a/A2ACapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/a2a/client.mjs +0 -88
- package/dist/esm/providers/a2a/client.mjs.map +0 -1
- package/dist/esm/providers/a2a/config.mjs +0 -35
- package/dist/esm/providers/a2a/config.mjs.map +0 -1
- package/dist/esm/providers/capabilityNaming.mjs +0 -39
- package/dist/esm/providers/capabilityNaming.mjs.map +0 -1
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs +0 -240
- package/dist/esm/providers/mcp/MCPCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/mcp/config.mjs +0 -39
- package/dist/esm/providers/mcp/config.mjs.map +0 -1
- package/dist/esm/providers/mcp/transport.mjs +0 -63
- package/dist/esm/providers/mcp/transport.mjs.map +0 -1
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs +0 -126
- package/dist/esm/providers/tools-server/ToolsServerCapabilityProvider.mjs.map +0 -1
- package/dist/esm/providers/types.mjs +0 -51
- package/dist/esm/providers/types.mjs.map +0 -1
- package/dist/esm/tools/artifacts/schema.mjs +0 -79
- package/dist/esm/tools/artifacts/schema.mjs.map +0 -1
- package/dist/esm/tools/artifacts/tool.mjs +0 -213
- package/dist/esm/tools/artifacts/tool.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/formatter.mjs +0 -90
- package/dist/esm/tools/fileSearch/formatter.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/ragClient.mjs +0 -98
- package/dist/esm/tools/fileSearch/ragClient.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/schema.mjs +0 -15
- package/dist/esm/tools/fileSearch/schema.mjs.map +0 -1
- package/dist/esm/tools/fileSearch/tool.mjs +0 -152
- package/dist/esm/tools/fileSearch/tool.mjs.map +0 -1
- package/dist/esm/tools/proxyTool.mjs +0 -100
- package/dist/esm/tools/proxyTool.mjs.map +0 -1
- package/dist/esm/utils/childAgentContext.mjs +0 -237
- package/dist/esm/utils/childAgentContext.mjs.map +0 -1
- package/dist/esm/utils/credentials.mjs +0 -135
- package/dist/esm/utils/credentials.mjs.map +0 -1
- package/dist/esm/utils/httpClient.mjs +0 -70
- package/dist/esm/utils/httpClient.mjs.map +0 -1
- package/dist/esm/utils/toolManifest.mjs +0 -96
- package/dist/esm/utils/toolManifest.mjs.map +0 -1
- package/dist/types/common/spawnPath.d.ts +0 -59
- package/dist/types/content/ArtifactStore.d.ts +0 -223
- package/dist/types/content/ContentStore.d.ts +0 -140
- package/dist/types/content/contentAnalyzer.d.ts +0 -38
- package/dist/types/content/index.d.ts +0 -24
- package/dist/types/content/mcpAutoCache.d.ts +0 -89
- package/dist/types/content/types.d.ts +0 -75
- package/dist/types/graphs/HandoffRegistry.d.ts +0 -97
- package/dist/types/providers/a2a/A2ACapabilityProvider.d.ts +0 -89
- package/dist/types/providers/a2a/client.d.ts +0 -47
- package/dist/types/providers/a2a/config.d.ts +0 -18
- package/dist/types/providers/a2a/index.d.ts +0 -6
- package/dist/types/providers/a2a/types.d.ts +0 -173
- package/dist/types/providers/capabilityNaming.d.ts +0 -25
- package/dist/types/providers/index.d.ts +0 -12
- package/dist/types/providers/mcp/MCPCapabilityProvider.d.ts +0 -54
- package/dist/types/providers/mcp/config.d.ts +0 -20
- package/dist/types/providers/mcp/index.d.ts +0 -5
- package/dist/types/providers/mcp/transport.d.ts +0 -18
- package/dist/types/providers/mcp/types.d.ts +0 -112
- package/dist/types/providers/tools-server/ToolsServerCapabilityProvider.d.ts +0 -59
- package/dist/types/providers/tools-server/index.d.ts +0 -1
- package/dist/types/providers/types.d.ts +0 -184
- package/dist/types/tools/artifacts/index.d.ts +0 -3
- package/dist/types/tools/artifacts/schema.d.ts +0 -63
- package/dist/types/tools/artifacts/tool.d.ts +0 -16
- package/dist/types/tools/artifacts/types.d.ts +0 -127
- package/dist/types/tools/fileSearch/formatter.d.ts +0 -25
- package/dist/types/tools/fileSearch/index.d.ts +0 -5
- package/dist/types/tools/fileSearch/ragClient.d.ts +0 -32
- package/dist/types/tools/fileSearch/schema.d.ts +0 -13
- package/dist/types/tools/fileSearch/tool.d.ts +0 -18
- package/dist/types/tools/fileSearch/types.d.ts +0 -139
- package/dist/types/tools/proxyTool.d.ts +0 -62
- package/dist/types/tools/search/test.d.ts +0 -1
- package/dist/types/utils/childAgentContext.d.ts +0 -99
- package/dist/types/utils/credentials.d.ts +0 -77
- package/dist/types/utils/httpClient.d.ts +0 -46
- package/dist/types/utils/toolManifest.d.ts +0 -49
- package/src/common/__tests__/spawnPath.test.ts +0 -110
- package/src/common/spawnPath.ts +0 -101
- package/src/content/ArtifactStore.ts +0 -782
- package/src/content/ContentStore.ts +0 -753
- package/src/content/contentAnalyzer.ts +0 -105
- package/src/content/index.ts +0 -51
- package/src/content/mcpAutoCache.ts +0 -185
- package/src/content/types.ts +0 -82
- package/src/graphs/HandoffRegistry.ts +0 -199
- package/src/graphs/__tests__/HandoffRegistry.test.ts +0 -410
- package/src/graphs/__tests__/multi-agent-delegate.test.ts +0 -458
- package/src/graphs/__tests__/multi-agent-edges.test.ts +0 -276
- package/src/graphs/__tests__/multi-agent-nested-subgraph.test.ts +0 -221
- package/src/graphs/handoffValidation.test.ts +0 -353
- package/src/providers/__tests__/ToolsServerCapabilityProvider.integration.spec.ts +0 -79
- package/src/providers/__tests__/ToolsServerCapabilityProvider.test.ts +0 -271
- package/src/providers/__tests__/types.test.ts +0 -64
- package/src/providers/a2a/A2ACapabilityProvider.ts +0 -384
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.integration.spec.ts +0 -345
- package/src/providers/a2a/__tests__/A2ACapabilityProvider.test.ts +0 -460
- package/src/providers/a2a/client.ts +0 -115
- package/src/providers/a2a/config.ts +0 -40
- package/src/providers/a2a/index.ts +0 -29
- package/src/providers/a2a/types.ts +0 -191
- package/src/providers/capabilityNaming.ts +0 -42
- package/src/providers/index.ts +0 -68
- package/src/providers/mcp/MCPCapabilityProvider.ts +0 -345
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.integration.spec.ts +0 -386
- package/src/providers/mcp/__tests__/MCPCapabilityProvider.test.ts +0 -371
- package/src/providers/mcp/config.ts +0 -45
- package/src/providers/mcp/index.ts +0 -21
- package/src/providers/mcp/transport.ts +0 -76
- package/src/providers/mcp/types.ts +0 -139
- package/src/providers/tools-server/ToolsServerCapabilityProvider.ts +0 -249
- package/src/providers/tools-server/index.ts +0 -1
- package/src/providers/types.ts +0 -204
- package/src/scripts/test-bedrock-handoff-autonomous.ts +0 -267
- package/src/scripts/test-handoff-preamble.ts +0 -278
- package/src/specs/agent-handoffs-bedrock.integration.test.ts +0 -415
- package/src/tools/artifacts/__tests__/tool.test.ts +0 -259
- package/src/tools/artifacts/index.ts +0 -33
- package/src/tools/artifacts/schema.ts +0 -99
- package/src/tools/artifacts/tool.ts +0 -289
- package/src/tools/artifacts/types.ts +0 -162
- package/src/tools/fileSearch/__tests__/tool.test.ts +0 -261
- package/src/tools/fileSearch/formatter.ts +0 -129
- package/src/tools/fileSearch/index.ts +0 -23
- package/src/tools/fileSearch/ragClient.ts +0 -137
- package/src/tools/fileSearch/schema.ts +0 -19
- package/src/tools/fileSearch/tool.ts +0 -207
- package/src/tools/fileSearch/types.ts +0 -149
- package/src/tools/proxyTool.ts +0 -166
- package/src/tools/search/output.md +0 -2775
- package/src/tools/search/test.html +0 -884
- package/src/tools/search/test.md +0 -643
- package/src/tools/search/test.ts +0 -159
- package/src/utils/__tests__/childAgentContext.test.ts +0 -217
- package/src/utils/__tests__/credentials.test.ts +0 -130
- package/src/utils/__tests__/httpClient.test.ts +0 -75
- package/src/utils/__tests__/toolManifest.test.ts +0 -116
- package/src/utils/childAgentContext.ts +0 -259
- package/src/utils/credentials.ts +0 -157
- package/src/utils/httpClient.ts +0 -92
- package/src/utils/toolManifest.ts +0 -109
- /package/dist/esm/{content → langchain}/index.mjs.map +0 -0
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
import { DynamicStructuredTool } from '@langchain/core/tools';
|
|
27
27
|
import { z } from 'zod';
|
|
28
28
|
import { Run } from '@/run';
|
|
29
|
-
import { Providers, GraphEvents } from '@/common';
|
|
29
|
+
import { Providers, GraphEvents, EdgeType } from '@/common';
|
|
30
30
|
import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
|
|
31
31
|
import { ToolEndHandler, ModelEndHandler } from '@/events';
|
|
32
32
|
import type * as t from '@/types';
|
|
@@ -690,7 +690,7 @@ Start with "SUMMARY:" and end with "RECOMMENDATION:"`
|
|
|
690
690
|
{
|
|
691
691
|
from: 'researcher',
|
|
692
692
|
to: 'analyst',
|
|
693
|
-
edgeType:
|
|
693
|
+
edgeType: EdgeType.DIRECT,
|
|
694
694
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
695
695
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
696
696
|
return `Here are the research findings. Analyze them and provide insights:\n\n${buffer}`;
|
|
@@ -700,7 +700,7 @@ Start with "SUMMARY:" and end with "RECOMMENDATION:"`
|
|
|
700
700
|
{
|
|
701
701
|
from: 'analyst',
|
|
702
702
|
to: 'summarizer',
|
|
703
|
-
edgeType:
|
|
703
|
+
edgeType: EdgeType.DIRECT,
|
|
704
704
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
705
705
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
706
706
|
return `Here are the combined research and analysis. Synthesize into a final summary:\n\n${buffer}`;
|
|
@@ -813,7 +813,7 @@ Start with "REVIEW:" and keep it to 3-4 lines.`
|
|
|
813
813
|
{
|
|
814
814
|
from: 'data_collector',
|
|
815
815
|
to: 'translator',
|
|
816
|
-
edgeType:
|
|
816
|
+
edgeType: EdgeType.DIRECT,
|
|
817
817
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
818
818
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
819
819
|
return `Here is the collected data. Translate the key findings to Spanish:\n\n${buffer}`;
|
|
@@ -823,7 +823,7 @@ Start with "REVIEW:" and keep it to 3-4 lines.`
|
|
|
823
823
|
{
|
|
824
824
|
from: 'translator',
|
|
825
825
|
to: 'reviewer',
|
|
826
|
-
edgeType:
|
|
826
|
+
edgeType: EdgeType.DIRECT,
|
|
827
827
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
828
828
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
829
829
|
return `Here is the collected and translated data. Review it for quality:\n\n${buffer}`;
|
|
@@ -934,7 +934,7 @@ Format as a brief executive memo (4-5 sentences). Start with "EXECUTIVE SUMMARY:
|
|
|
934
934
|
{
|
|
935
935
|
from: 'intel_gatherer',
|
|
936
936
|
to: 'market_analyst',
|
|
937
|
-
edgeType:
|
|
937
|
+
edgeType: EdgeType.DIRECT,
|
|
938
938
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
939
939
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
940
940
|
return `Here is the gathered intelligence. Analyze the market sentiment and cross-reference with our database:\n\n${buffer}`;
|
|
@@ -944,7 +944,7 @@ Format as a brief executive memo (4-5 sentences). Start with "EXECUTIVE SUMMARY:
|
|
|
944
944
|
{
|
|
945
945
|
from: 'market_analyst',
|
|
946
946
|
to: 'presenter',
|
|
947
|
-
edgeType:
|
|
947
|
+
edgeType: EdgeType.DIRECT,
|
|
948
948
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
949
949
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
950
950
|
return `Here is the intelligence and market analysis. Create a polished executive summary:\n\n${buffer}`;
|
|
@@ -1070,7 +1070,7 @@ Start with "SENTIMENT ANALYSIS:"`,
|
|
|
1070
1070
|
{
|
|
1071
1071
|
from: 'planner',
|
|
1072
1072
|
to: 'researcher',
|
|
1073
|
-
edgeType:
|
|
1073
|
+
edgeType: EdgeType.DIRECT,
|
|
1074
1074
|
prompt: (messages: BaseMessage[], startIndex: number) => {
|
|
1075
1075
|
const buffer = getBufferString(messages.slice(startIndex));
|
|
1076
1076
|
return `Here is the content plan. Gather the required data:\n\n${buffer}`;
|
|
@@ -4,7 +4,7 @@ config();
|
|
|
4
4
|
import { HumanMessage, BaseMessage } from '@langchain/core/messages';
|
|
5
5
|
import type * as t from '@/types';
|
|
6
6
|
import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
|
|
7
|
-
import { Providers, GraphEvents } from '@/common';
|
|
7
|
+
import { Providers, GraphEvents, EdgeType } from '@/common';
|
|
8
8
|
import { sleep } from '@/utils/run';
|
|
9
9
|
import { Run } from '@/run';
|
|
10
10
|
|
|
@@ -49,7 +49,7 @@ async function testSequentialMetadata() {
|
|
|
49
49
|
|
|
50
50
|
// Sequential edge: A -> B (using edgeType not type)
|
|
51
51
|
const edges: t.GraphEdge[] = [
|
|
52
|
-
{ from: 'agent_a', to: 'agent_b', edgeType:
|
|
52
|
+
{ from: 'agent_a', to: 'agent_b', edgeType: EdgeType.DIRECT },
|
|
53
53
|
];
|
|
54
54
|
|
|
55
55
|
const captureMetadata = (
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { config } from 'dotenv';
|
|
2
|
+
config();
|
|
3
|
+
|
|
4
|
+
import { HumanMessage } from '@langchain/core/messages';
|
|
5
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
6
|
+
import type * as t from '@/types';
|
|
7
|
+
import { ChatModelStreamHandler } from '@/stream';
|
|
8
|
+
import { ToolEndHandler, ModelEndHandler } from '@/events';
|
|
9
|
+
import { Providers, GraphEvents, Constants } from '@/common';
|
|
10
|
+
import { Run } from '@/run';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Repro for the reference consumer setup: event-driven tools via `toolDefinitions`
|
|
14
|
+
* + an ON_TOOL_EXECUTE handler that runs the tool. Self-spawn subagent must
|
|
15
|
+
* be able to drive the SAME tool pipeline.
|
|
16
|
+
*/
|
|
17
|
+
const apiKey = process.env.OPENAI_API_KEY!;
|
|
18
|
+
if (!apiKey) {
|
|
19
|
+
console.error('Missing OPENAI_API_KEY');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Simulate consumer: tool definitions only, execution routed via event.
|
|
24
|
+
const calculatorDef: t.LCTool = {
|
|
25
|
+
name: 'calculator',
|
|
26
|
+
description: 'Evaluate a math expression. Use for any arithmetic.',
|
|
27
|
+
parameters: {
|
|
28
|
+
type: 'object',
|
|
29
|
+
properties: {
|
|
30
|
+
expression: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: "A JS math expression, e.g. '42 * 58'",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
required: ['expression'],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
async function main() {
|
|
40
|
+
console.log('=== Subagent Event-Driven Tool Diagnostic ===\n');
|
|
41
|
+
|
|
42
|
+
const parentAgent: t.AgentInputs = {
|
|
43
|
+
agentId: 'supervisor',
|
|
44
|
+
provider: Providers.OPENAI,
|
|
45
|
+
clientOptions: { modelName: 'gpt-4o-mini', apiKey },
|
|
46
|
+
instructions: `You have calculator AND can spawn a "self" subagent in an isolated context.
|
|
47
|
+
For any arithmetic question, spawn the "self" subagent with the math task.
|
|
48
|
+
The subagent MUST use the calculator tool — never estimate.`,
|
|
49
|
+
maxContextTokens: 8000,
|
|
50
|
+
toolDefinitions: [calculatorDef],
|
|
51
|
+
subagentConfigs: [
|
|
52
|
+
{
|
|
53
|
+
type: 'self',
|
|
54
|
+
self: true,
|
|
55
|
+
name: 'supervisor',
|
|
56
|
+
description:
|
|
57
|
+
'Spawn a copy of this agent in an isolated context for a focused math subtask.',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
let toolCallCount = 0;
|
|
63
|
+
const customHandlers: Record<string, t.EventHandler> = {
|
|
64
|
+
[GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
|
|
65
|
+
[GraphEvents.TOOL_END]: new ToolEndHandler(),
|
|
66
|
+
[GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
|
|
67
|
+
[GraphEvents.ON_TOOL_EXECUTE]: {
|
|
68
|
+
handle: (_event, rawData): void => {
|
|
69
|
+
const data = rawData as t.ToolExecuteBatchRequest;
|
|
70
|
+
console.log(
|
|
71
|
+
`[PARENT ON_TOOL_EXECUTE] agentId=${data.agentId} calls=${data.toolCalls
|
|
72
|
+
.map((c) => c.name)
|
|
73
|
+
.join(',')}`
|
|
74
|
+
);
|
|
75
|
+
const results: t.ToolExecuteResult[] = data.toolCalls.map((call) => {
|
|
76
|
+
toolCallCount += 1;
|
|
77
|
+
const args = call.args as { expression?: string };
|
|
78
|
+
const expression = args.expression ?? '';
|
|
79
|
+
let content: string;
|
|
80
|
+
try {
|
|
81
|
+
// eslint-disable-next-line no-eval
|
|
82
|
+
const result = eval(expression);
|
|
83
|
+
content = `${expression} = ${result}`;
|
|
84
|
+
} catch (err) {
|
|
85
|
+
content = `Error: ${String(err)}`;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
toolCallId: call.id!,
|
|
89
|
+
status: 'success',
|
|
90
|
+
content,
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
data.resolve(results);
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
[GraphEvents.ON_RUN_STEP]: {
|
|
97
|
+
handle: (event, data): void => {
|
|
98
|
+
const d = data as { type?: string; runId?: string; agentId?: string };
|
|
99
|
+
console.log(
|
|
100
|
+
`[PARENT ${event}] type=${d.type} agentId=${d.agentId ?? '-'} runId=${d.runId ?? '-'}`
|
|
101
|
+
);
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
[GraphEvents.ON_RUN_STEP_COMPLETED]: {
|
|
105
|
+
handle: (event, data): void => {
|
|
106
|
+
const r = (
|
|
107
|
+
data as { result: { type: string; tool_call?: { name?: string } } }
|
|
108
|
+
).result;
|
|
109
|
+
console.log(
|
|
110
|
+
`[PARENT ${event}] type=${r.type} tool=${r.tool_call?.name ?? '-'}`
|
|
111
|
+
);
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
[GraphEvents.ON_SUBAGENT_UPDATE]: {
|
|
115
|
+
handle: (_event, rawData): void => {
|
|
116
|
+
const d = rawData as t.SubagentUpdateEvent;
|
|
117
|
+
console.log(
|
|
118
|
+
`[SUBAGENT ${d.phase}] [${d.subagentType}] tool_call_id=${d.parentToolCallId ?? '-'} ${d.label ?? ''}`
|
|
119
|
+
);
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const run = await Run.create<t.IState>({
|
|
125
|
+
runId: `sub-evt-${Date.now()}`,
|
|
126
|
+
graphConfig: { type: 'standard', agents: [parentAgent] },
|
|
127
|
+
customHandlers,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const question = new HumanMessage(
|
|
131
|
+
'Compute (42 * 58) + (13 ** 3). Use the self subagent, and have it use the calculator.'
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
console.log('User:', question.content, '\n');
|
|
135
|
+
|
|
136
|
+
await run.processStream(
|
|
137
|
+
{ messages: [question] },
|
|
138
|
+
{
|
|
139
|
+
configurable: { thread_id: `sub-evt` },
|
|
140
|
+
version: 'v2' as const,
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
const msgs = (run.getRunMessages() ?? []) as BaseMessage[];
|
|
145
|
+
console.log('\n--- Run messages ---\n');
|
|
146
|
+
for (const msg of msgs) {
|
|
147
|
+
const type = msg._getType();
|
|
148
|
+
const name = 'name' in msg ? (msg as { name?: string }).name : undefined;
|
|
149
|
+
const content =
|
|
150
|
+
typeof msg.content === 'string'
|
|
151
|
+
? msg.content.slice(0, 400)
|
|
152
|
+
: JSON.stringify(msg.content).slice(0, 400);
|
|
153
|
+
const toolCalls =
|
|
154
|
+
'tool_calls' in msg
|
|
155
|
+
? (msg as { tool_calls?: Array<{ name: string; args: unknown }> })
|
|
156
|
+
.tool_calls
|
|
157
|
+
: undefined;
|
|
158
|
+
console.log(`[${type}]${name ? ` name=${name}` : ''}`);
|
|
159
|
+
if (toolCalls?.length) {
|
|
160
|
+
for (const tc of toolCalls) {
|
|
161
|
+
console.log(
|
|
162
|
+
` tool_call: ${tc.name}(${JSON.stringify(tc.args).slice(0, 150)})`
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
console.log(` content: ${content}\n`);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const subagentMsgs = msgs.filter(
|
|
170
|
+
(m) =>
|
|
171
|
+
m._getType() === 'tool' &&
|
|
172
|
+
(m as { name?: string }).name === Constants.SUBAGENT
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
console.log('--- Verification ---');
|
|
176
|
+
console.log(`subagent tool calls seen (parent): ${subagentMsgs.length}`);
|
|
177
|
+
console.log(
|
|
178
|
+
`ON_TOOL_EXECUTE dispatched (parent saw): ${toolCallCount} (expected >= 1 if subagent used calculator)`
|
|
179
|
+
);
|
|
180
|
+
if (subagentMsgs[0]) {
|
|
181
|
+
console.log(
|
|
182
|
+
`\nsubagent result:\n${(subagentMsgs[0].content as string).slice(0, 600)}`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
main().catch((err) => {
|
|
188
|
+
console.error('Script error:', err);
|
|
189
|
+
process.exit(1);
|
|
190
|
+
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { config } from 'dotenv';
|
|
2
|
+
config();
|
|
3
|
+
|
|
4
|
+
import { HumanMessage } from '@langchain/core/messages';
|
|
5
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
6
|
+
import { tool } from '@langchain/core/tools';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import type * as t from '@/types';
|
|
9
|
+
import { ChatModelStreamHandler } from '@/stream';
|
|
10
|
+
import { ToolEndHandler, ModelEndHandler } from '@/events';
|
|
11
|
+
import { Providers, GraphEvents, Constants } from '@/common';
|
|
12
|
+
import { Run } from '@/run';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Diagnostic: verify a self-spawned subagent can call parent's real tools.
|
|
16
|
+
* Expected before-fix: parent delegates to self; child cannot invoke calculator.
|
|
17
|
+
*/
|
|
18
|
+
const apiKey = process.env.OPENAI_API_KEY!;
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
console.error('Missing OPENAI_API_KEY');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const calculator = tool(
|
|
25
|
+
async ({ expression }) => {
|
|
26
|
+
const result = eval(expression); // don't do this in prod
|
|
27
|
+
return `${expression} = ${result}`;
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'calculator',
|
|
31
|
+
description: 'Evaluate a math expression. Use for any arithmetic.',
|
|
32
|
+
schema: z.object({
|
|
33
|
+
expression: z.string().describe("A JS math expression, e.g. '42 * 58'"),
|
|
34
|
+
}),
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
async function main() {
|
|
39
|
+
console.log('=== Subagent Tool-Access Diagnostic ===\n');
|
|
40
|
+
|
|
41
|
+
const parentAgent: t.AgentInputs = {
|
|
42
|
+
agentId: 'supervisor',
|
|
43
|
+
provider: Providers.OPENAI,
|
|
44
|
+
clientOptions: { modelName: 'gpt-4o-mini', apiKey },
|
|
45
|
+
instructions: `You have calculator AND can spawn a "self" subagent in an isolated context.
|
|
46
|
+
For any arithmetic question that would bloat your context, spawn the "self" subagent with the math task.
|
|
47
|
+
The subagent must use the calculator tool — never estimate.`,
|
|
48
|
+
maxContextTokens: 8000,
|
|
49
|
+
tools: [calculator],
|
|
50
|
+
subagentConfigs: [
|
|
51
|
+
{
|
|
52
|
+
type: 'self',
|
|
53
|
+
self: true,
|
|
54
|
+
name: 'supervisor',
|
|
55
|
+
description:
|
|
56
|
+
'Spawn a copy of this agent in an isolated context for a focused math subtask.',
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const customHandlers: Record<string, t.EventHandler> = {
|
|
62
|
+
[GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
|
|
63
|
+
[GraphEvents.TOOL_END]: new ToolEndHandler(),
|
|
64
|
+
[GraphEvents.CHAT_MODEL_END]: new ModelEndHandler(),
|
|
65
|
+
[GraphEvents.ON_RUN_STEP]: {
|
|
66
|
+
handle: (event, data): void => {
|
|
67
|
+
console.log(
|
|
68
|
+
`[PARENT EVENT] ${event}`,
|
|
69
|
+
JSON.stringify(data).slice(0, 200)
|
|
70
|
+
);
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
[GraphEvents.ON_RUN_STEP_COMPLETED]: {
|
|
74
|
+
handle: (event, data): void => {
|
|
75
|
+
console.log(
|
|
76
|
+
`[PARENT EVENT] ${event}`,
|
|
77
|
+
JSON.stringify(data).slice(0, 200)
|
|
78
|
+
);
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const run = await Run.create<t.IState>({
|
|
84
|
+
runId: `subagent-debug-${Date.now()}`,
|
|
85
|
+
graphConfig: { type: 'standard', agents: [parentAgent] },
|
|
86
|
+
customHandlers,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const question = new HumanMessage(
|
|
90
|
+
'Compute (42 * 58) + (13 ^ 3). Spawn the self subagent to do this, and have IT use calculator.'
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
console.log('User:', question.content, '\n');
|
|
94
|
+
|
|
95
|
+
await run.processStream(
|
|
96
|
+
{ messages: [question] },
|
|
97
|
+
{
|
|
98
|
+
configurable: { thread_id: `subagent-debug` },
|
|
99
|
+
version: 'v2' as const,
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const msgs = (run.getRunMessages() ?? []) as BaseMessage[];
|
|
104
|
+
console.log('\n--- Run messages ---\n');
|
|
105
|
+
for (const msg of msgs) {
|
|
106
|
+
const type = msg._getType();
|
|
107
|
+
const name = 'name' in msg ? (msg as { name?: string }).name : undefined;
|
|
108
|
+
const content =
|
|
109
|
+
typeof msg.content === 'string'
|
|
110
|
+
? msg.content.slice(0, 400)
|
|
111
|
+
: JSON.stringify(msg.content).slice(0, 400);
|
|
112
|
+
const toolCalls =
|
|
113
|
+
'tool_calls' in msg
|
|
114
|
+
? (msg as { tool_calls?: Array<{ name: string; args: unknown }> })
|
|
115
|
+
.tool_calls
|
|
116
|
+
: undefined;
|
|
117
|
+
console.log(`[${type}]${name ? ` name=${name}` : ''}`);
|
|
118
|
+
if (toolCalls?.length) {
|
|
119
|
+
for (const tc of toolCalls) {
|
|
120
|
+
console.log(
|
|
121
|
+
` tool_call: ${tc.name}(${JSON.stringify(tc.args).slice(0, 150)})`
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
console.log(` content: ${content}\n`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const subagentCalls = msgs.filter(
|
|
129
|
+
(m) =>
|
|
130
|
+
m._getType() === 'tool' &&
|
|
131
|
+
'name' in m &&
|
|
132
|
+
(m as { name?: string }).name === Constants.SUBAGENT
|
|
133
|
+
);
|
|
134
|
+
const calculatorCalls = msgs.filter(
|
|
135
|
+
(m) =>
|
|
136
|
+
m._getType() === 'tool' &&
|
|
137
|
+
'name' in m &&
|
|
138
|
+
(m as { name?: string }).name === 'calculator'
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
console.log('--- Verification ---');
|
|
142
|
+
console.log(`subagent tool calls seen (parent): ${subagentCalls.length}`);
|
|
143
|
+
console.log(
|
|
144
|
+
`calculator tool calls seen (parent): ${calculatorCalls.length} (expected: 0 if subagent did the math)`
|
|
145
|
+
);
|
|
146
|
+
if (subagentCalls.length > 0) {
|
|
147
|
+
const subResult = subagentCalls[0].content as string;
|
|
148
|
+
console.log(`\nsubagent result snippet:\n${subResult.slice(0, 600)}\n`);
|
|
149
|
+
if (/\berror\b/i.test(subResult) && /tool/i.test(subResult)) {
|
|
150
|
+
console.log('⚠️ BUG CONFIRMED: subagent result mentions tool error');
|
|
151
|
+
} else if (!/\d/.test(subResult)) {
|
|
152
|
+
console.log('⚠️ POSSIBLY BUGGY: subagent result has no numbers');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
main().catch((err) => {
|
|
158
|
+
console.error('Script error:', err);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
});
|
|
@@ -75,7 +75,7 @@ async function testCustomPromptKey() {
|
|
|
75
75
|
{
|
|
76
76
|
from: 'supervisor',
|
|
77
77
|
to: 'researcher',
|
|
78
|
-
edgeType:
|
|
78
|
+
edgeType: EdgeType.HANDOFF,
|
|
79
79
|
// Custom parameter name: "query"
|
|
80
80
|
prompt: 'The research question or topic to investigate',
|
|
81
81
|
promptKey: 'query',
|
|
@@ -83,7 +83,7 @@ async function testCustomPromptKey() {
|
|
|
83
83
|
{
|
|
84
84
|
from: 'supervisor',
|
|
85
85
|
to: 'designer',
|
|
86
|
-
edgeType:
|
|
86
|
+
edgeType: EdgeType.HANDOFF,
|
|
87
87
|
// Custom parameter name: "requirements"
|
|
88
88
|
prompt: 'The design requirements and constraints',
|
|
89
89
|
promptKey: 'requirements',
|
|
@@ -91,7 +91,7 @@ async function testCustomPromptKey() {
|
|
|
91
91
|
{
|
|
92
92
|
from: 'supervisor',
|
|
93
93
|
to: 'coder',
|
|
94
|
-
edgeType:
|
|
94
|
+
edgeType: EdgeType.HANDOFF,
|
|
95
95
|
// Custom parameter name: "specification"
|
|
96
96
|
prompt: 'The technical specification for the code to implement',
|
|
97
97
|
promptKey: 'specification',
|
|
@@ -123,7 +123,7 @@ async function testHandoffInput() {
|
|
|
123
123
|
{
|
|
124
124
|
from: 'supervisor',
|
|
125
125
|
to: ['analyst', 'writer'],
|
|
126
|
-
edgeType:
|
|
126
|
+
edgeType: EdgeType.HANDOFF,
|
|
127
127
|
// This prompt field now serves as the description for the input parameter
|
|
128
128
|
prompt:
|
|
129
129
|
'Specific instructions for the specialist to follow. Be detailed about what analysis to perform, what data to focus on, or what content to create.',
|
|
@@ -121,7 +121,7 @@ When you receive a task, execute it thoroughly. Always identify yourself as the
|
|
|
121
121
|
{
|
|
122
122
|
from: 'coordinator',
|
|
123
123
|
to: 'specialist',
|
|
124
|
-
edgeType:
|
|
124
|
+
edgeType: EdgeType.HANDOFF,
|
|
125
125
|
description: 'Transfer to specialist for detailed work',
|
|
126
126
|
prompt:
|
|
127
127
|
'Provide specific instructions for the specialist about what to analyze or create',
|
|
@@ -226,7 +226,7 @@ You must follow the exact format requested.`,
|
|
|
226
226
|
{
|
|
227
227
|
from: 'manager',
|
|
228
228
|
to: 'writer',
|
|
229
|
-
edgeType:
|
|
229
|
+
edgeType: EdgeType.HANDOFF,
|
|
230
230
|
description: 'Transfer to writer for report creation',
|
|
231
231
|
prompt:
|
|
232
232
|
'Provide specific formatting and content instructions for the writer',
|
|
@@ -322,7 +322,7 @@ If asked about non-Italian food, politely redirect to Italian alternatives.`,
|
|
|
322
322
|
{
|
|
323
323
|
from: 'router',
|
|
324
324
|
to: 'chef',
|
|
325
|
-
edgeType:
|
|
325
|
+
edgeType: EdgeType.HANDOFF,
|
|
326
326
|
description: 'Transfer to chef',
|
|
327
327
|
prompt: 'Instructions for the chef about how to respond',
|
|
328
328
|
promptKey: 'instructions',
|
|
@@ -7,7 +7,7 @@ import { HumanMessage, BaseMessage } from '@langchain/core/messages';
|
|
|
7
7
|
import type * as t from '@/types';
|
|
8
8
|
import { labelContentByAgent, formatAgentMessages } from '@/messages/format';
|
|
9
9
|
import { ChatModelStreamHandler, createContentAggregator } from '@/stream';
|
|
10
|
-
import { Providers, GraphEvents, StepTypes } from '@/common';
|
|
10
|
+
import { Providers, GraphEvents, EdgeType, StepTypes } from '@/common';
|
|
11
11
|
import { ToolEndHandler, ModelEndHandler } from '@/events';
|
|
12
12
|
import { Run } from '@/run';
|
|
13
13
|
|
|
@@ -83,13 +83,13 @@ async function testParallelWithAgentLabeling() {
|
|
|
83
83
|
from: 'researcher',
|
|
84
84
|
to: ['analyst1', 'analyst2', 'analyst3'],
|
|
85
85
|
description: 'Distribute research to specialist analysts',
|
|
86
|
-
edgeType:
|
|
86
|
+
edgeType: EdgeType.DIRECT,
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
from: ['analyst1', 'analyst2', 'analyst3'],
|
|
90
90
|
to: 'summarizer',
|
|
91
91
|
description: 'Aggregate analysis results',
|
|
92
|
-
edgeType:
|
|
92
|
+
edgeType: EdgeType.DIRECT,
|
|
93
93
|
prompt:
|
|
94
94
|
'Based on the analyses below, provide an integrated summary:\n\n{results}',
|
|
95
95
|
},
|
|
@@ -82,14 +82,14 @@ When delegating, provide clear instructions to each agent about what they should
|
|
|
82
82
|
{
|
|
83
83
|
from: 'coordinator',
|
|
84
84
|
to: 'researcher',
|
|
85
|
-
edgeType:
|
|
85
|
+
edgeType: EdgeType.HANDOFF,
|
|
86
86
|
description: 'Transfer to researcher for research and fact-finding tasks',
|
|
87
87
|
prompt: 'Research task instructions',
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
from: 'coordinator',
|
|
91
91
|
to: 'writer',
|
|
92
|
-
edgeType:
|
|
92
|
+
edgeType: EdgeType.HANDOFF,
|
|
93
93
|
description: 'Transfer to writer for content creation and writing tasks',
|
|
94
94
|
prompt: 'Writing task instructions',
|
|
95
95
|
},
|
|
@@ -156,7 +156,7 @@ Do NOT write a long response. Just call the tool and hand off.`,
|
|
|
156
156
|
from: 'router',
|
|
157
157
|
to: 'data_analyst',
|
|
158
158
|
description: 'Transfer to data analyst after checking sessions',
|
|
159
|
-
edgeType:
|
|
159
|
+
edgeType: EdgeType.HANDOFF,
|
|
160
160
|
prompt:
|
|
161
161
|
'Provide specific instructions for the data analyst about what to analyze',
|
|
162
162
|
promptKey: 'instructions',
|