@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
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
export const ARTIFACT_WRITE_ACTIONS = [
|
|
4
|
-
'write',
|
|
5
|
-
'edit',
|
|
6
|
-
'verify',
|
|
7
|
-
'delete',
|
|
8
|
-
] as const;
|
|
9
|
-
export const CONTENT_READ_ACTIONS = ['read', 'search', 'list', 'info'] as const;
|
|
10
|
-
|
|
11
|
-
export const artifactToolSchema = z.object({
|
|
12
|
-
action: z
|
|
13
|
-
.enum(ARTIFACT_WRITE_ACTIONS)
|
|
14
|
-
.describe(
|
|
15
|
-
'Authoring action: write (create/overwrite), edit (str_replace), verify (syntax check), delete (remove).'
|
|
16
|
-
),
|
|
17
|
-
content_id: z
|
|
18
|
-
.string()
|
|
19
|
-
.optional()
|
|
20
|
-
.describe(
|
|
21
|
-
'ID of the artifact entry. Required for edit/verify/delete; optional for write (supply to overwrite an existing entry).'
|
|
22
|
-
),
|
|
23
|
-
|
|
24
|
-
// write
|
|
25
|
-
content: z
|
|
26
|
-
.string()
|
|
27
|
-
.optional()
|
|
28
|
-
.describe('Full file content (required for write action).'),
|
|
29
|
-
name: z
|
|
30
|
-
.string()
|
|
31
|
-
.optional()
|
|
32
|
-
.describe(
|
|
33
|
-
'Filename for the new entry (required when creating). MUST include the correct file extension — the extension drives the preview template.'
|
|
34
|
-
),
|
|
35
|
-
|
|
36
|
-
// edit (str_replace)
|
|
37
|
-
old_str: z
|
|
38
|
-
.string()
|
|
39
|
-
.optional()
|
|
40
|
-
.describe('Exact string to find and replace (required for edit).'),
|
|
41
|
-
new_str: z
|
|
42
|
-
.string()
|
|
43
|
-
.optional()
|
|
44
|
-
.describe('Replacement string (required for edit).'),
|
|
45
|
-
replace_all: z
|
|
46
|
-
.boolean()
|
|
47
|
-
.optional()
|
|
48
|
-
.describe(
|
|
49
|
-
'edit: when true, replaces every occurrence of old_str. When false (default) and old_str matches more than one location, the edit is refused.'
|
|
50
|
-
),
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
export const contentReaderSchema = z.object({
|
|
54
|
-
action: z
|
|
55
|
-
.enum(CONTENT_READ_ACTIONS)
|
|
56
|
-
.describe(
|
|
57
|
-
'Read-only action: read (lines), search (regex), list (all entries), info (metadata).'
|
|
58
|
-
),
|
|
59
|
-
content_id: z
|
|
60
|
-
.string()
|
|
61
|
-
.optional()
|
|
62
|
-
.describe(
|
|
63
|
-
'ID of the content entry. Required for read/search/info. Omit for list.'
|
|
64
|
-
),
|
|
65
|
-
|
|
66
|
-
// read pagination
|
|
67
|
-
start_line: z.number().optional().describe('1-based start line for reading.'),
|
|
68
|
-
end_line: z.number().optional().describe('1-based end line (inclusive).'),
|
|
69
|
-
|
|
70
|
-
// search
|
|
71
|
-
pattern: z
|
|
72
|
-
.string()
|
|
73
|
-
.optional()
|
|
74
|
-
.describe('Regex pattern (required for search).'),
|
|
75
|
-
flags: z
|
|
76
|
-
.string()
|
|
77
|
-
.optional()
|
|
78
|
-
.describe('Regex flags (e.g., "i" for case-insensitive).'),
|
|
79
|
-
context: z
|
|
80
|
-
.number()
|
|
81
|
-
.optional()
|
|
82
|
-
.describe('Lines of context around each match.'),
|
|
83
|
-
|
|
84
|
-
// shared pagination
|
|
85
|
-
offset: z
|
|
86
|
-
.number()
|
|
87
|
-
.optional()
|
|
88
|
-
.describe('Offset for read or search pagination.'),
|
|
89
|
-
limit: z
|
|
90
|
-
.number()
|
|
91
|
-
.optional()
|
|
92
|
-
.describe('Max lines (read) or matches (search).'),
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
export const ARTIFACT_TOOL_NAME = 'artifact_tool';
|
|
96
|
-
export const CONTENT_READER_NAME = 'content_reader';
|
|
97
|
-
|
|
98
|
-
export type ArtifactToolInput = z.infer<typeof artifactToolSchema>;
|
|
99
|
-
export type ContentReaderInput = z.infer<typeof contentReaderSchema>;
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* artifact_tool + content_reader library factories.
|
|
3
|
-
*
|
|
4
|
-
* The library owns the LangChain wiring (schema, description, response
|
|
5
|
-
* shape) and the action dispatch; the runtime supplies a handler bundle
|
|
6
|
-
* matching the `ArtifactWriteHandlers` / `ContentReadHandlers` interface.
|
|
7
|
-
*
|
|
8
|
-
* This keeps 800+ LOC of host-specific handler logic (S3 adapters, file
|
|
9
|
-
* model CRUD, syntax checkers, line utils) out of the library while
|
|
10
|
-
* still centralizing the tool surface every runtime shares.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { tool, DynamicStructuredTool } from '@langchain/core/tools';
|
|
14
|
-
import {
|
|
15
|
-
artifactToolSchema,
|
|
16
|
-
contentReaderSchema,
|
|
17
|
-
ARTIFACT_TOOL_NAME,
|
|
18
|
-
CONTENT_READER_NAME,
|
|
19
|
-
} from './schema';
|
|
20
|
-
import type {
|
|
21
|
-
ArtifactToolConfig,
|
|
22
|
-
ContentReaderToolConfig,
|
|
23
|
-
ArtifactToolScope,
|
|
24
|
-
ArtifactToolResult,
|
|
25
|
-
WriteArgs,
|
|
26
|
-
EditArgs,
|
|
27
|
-
VerifyArgs,
|
|
28
|
-
DeleteArgs,
|
|
29
|
-
ReadArgs,
|
|
30
|
-
SearchArgs,
|
|
31
|
-
ListArgs,
|
|
32
|
-
InfoArgs,
|
|
33
|
-
ContentIdResolver,
|
|
34
|
-
} from './types';
|
|
35
|
-
|
|
36
|
-
const DEFAULT_ARTIFACT_DESCRIPTION = `Author content artifacts that render live in the host's preview panel — this tool does NOT produce downloadable files (use execute_code for those).
|
|
37
|
-
|
|
38
|
-
Actions:
|
|
39
|
-
- write: Create a new artifact. Write a COMPLETE file in one call. The \`name\` field MUST include the file extension — it routes the preview (.tsx, .html, .mmd, .svg, .csv, .json, .dot, .md, .drawio).
|
|
40
|
-
- verify: Check an artifact for syntax errors. REQUIRED as the next step after every write/edit on code files — do not render until verify passes.
|
|
41
|
-
- edit: Surgical string replacement — provide old_str (exact match) and new_str. Works on all file types.
|
|
42
|
-
- delete: Remove an artifact and its backing file.
|
|
43
|
-
|
|
44
|
-
Artifacts are persisted by the host. No manual save needed.`;
|
|
45
|
-
|
|
46
|
-
const DEFAULT_CONTENT_READER_DESCRIPTION = `Read and navigate stored content — artifacts authored by artifact_tool, large tool results auto-cached by the host, uploaded file attachments, and code blocks.
|
|
47
|
-
|
|
48
|
-
Read-only surface. Use write/edit tools (artifact_tool, execute_code) to mutate.
|
|
49
|
-
|
|
50
|
-
Actions:
|
|
51
|
-
- read: Return line ranges from a specific content_id.
|
|
52
|
-
- search: Regex search across a specific content_id with paginated matches.
|
|
53
|
-
- list: Enumerate every content entry currently stored.
|
|
54
|
-
- info: Metadata (size, kind, creation time) for a specific content_id.`;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Optional content_id self-healing — if the runtime supplies a resolver,
|
|
58
|
-
* we pre-resolve the ID on every action that takes one so nicknames
|
|
59
|
-
* (e.g., "Dashboard") map to canonical IDs.
|
|
60
|
-
*/
|
|
61
|
-
async function resolveContentIdIfPresent(
|
|
62
|
-
resolver: ContentIdResolver | undefined,
|
|
63
|
-
id: string | undefined,
|
|
64
|
-
scope: ArtifactToolScope,
|
|
65
|
-
logger?: { debug: (msg: string) => void }
|
|
66
|
-
): Promise<string | undefined> {
|
|
67
|
-
if (!resolver || !id) return id;
|
|
68
|
-
const out = await resolver.resolve(id, scope);
|
|
69
|
-
if (!out) return id;
|
|
70
|
-
if (out.resolvedId !== id) {
|
|
71
|
-
logger?.debug(
|
|
72
|
-
`[artifact] resolved "${id}" → "${out.resolvedId}"${out.resolvedName ? ` ("${out.resolvedName}")` : ''}`
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
return out.resolvedId;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// ─── Writer tool (artifact_tool) ─────────────────────────────────────────
|
|
79
|
-
|
|
80
|
-
export function createArtifactTool(
|
|
81
|
-
config: ArtifactToolConfig
|
|
82
|
-
): DynamicStructuredTool {
|
|
83
|
-
const { handlers, getScope, resolver, logger, descriptionOverride } = config;
|
|
84
|
-
|
|
85
|
-
return tool(
|
|
86
|
-
async (rawInput, runnableConfig): Promise<ArtifactToolResult> => {
|
|
87
|
-
const scope = getScope(runnableConfig);
|
|
88
|
-
if (!scope) {
|
|
89
|
-
logger?.warn('[artifact_tool] no scope resolved from runnableConfig');
|
|
90
|
-
return ['Error: No conversation context available', {}];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const input = rawInput as {
|
|
94
|
-
action: 'write' | 'edit' | 'verify' | 'delete';
|
|
95
|
-
content_id?: string;
|
|
96
|
-
content?: string;
|
|
97
|
-
name?: string;
|
|
98
|
-
old_str?: string;
|
|
99
|
-
new_str?: string;
|
|
100
|
-
replace_all?: boolean;
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const resolvedContentId = await resolveContentIdIfPresent(
|
|
104
|
-
resolver,
|
|
105
|
-
input.content_id,
|
|
106
|
-
scope,
|
|
107
|
-
logger
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
const started = Date.now();
|
|
111
|
-
try {
|
|
112
|
-
switch (input.action) {
|
|
113
|
-
case 'write': {
|
|
114
|
-
const args: WriteArgs = {
|
|
115
|
-
action: 'write',
|
|
116
|
-
content_id: resolvedContentId,
|
|
117
|
-
content: input.content ?? '',
|
|
118
|
-
name: input.name,
|
|
119
|
-
};
|
|
120
|
-
if (!args.content) return ['Error: write requires content', {}];
|
|
121
|
-
return await handlers.write(args, scope);
|
|
122
|
-
}
|
|
123
|
-
case 'edit': {
|
|
124
|
-
if (!resolvedContentId)
|
|
125
|
-
return ['Error: edit requires content_id', {}];
|
|
126
|
-
const args: EditArgs = {
|
|
127
|
-
action: 'edit',
|
|
128
|
-
content_id: resolvedContentId,
|
|
129
|
-
old_str: input.old_str ?? '',
|
|
130
|
-
new_str: input.new_str ?? '',
|
|
131
|
-
replace_all: input.replace_all,
|
|
132
|
-
};
|
|
133
|
-
if (!args.old_str) return ['Error: edit requires old_str', {}];
|
|
134
|
-
return await handlers.edit(args, scope);
|
|
135
|
-
}
|
|
136
|
-
case 'verify': {
|
|
137
|
-
if (!resolvedContentId)
|
|
138
|
-
return ['Error: verify requires content_id', {}];
|
|
139
|
-
const args: VerifyArgs = {
|
|
140
|
-
action: 'verify',
|
|
141
|
-
content_id: resolvedContentId,
|
|
142
|
-
};
|
|
143
|
-
return await handlers.verify(args, scope);
|
|
144
|
-
}
|
|
145
|
-
case 'delete': {
|
|
146
|
-
if (!resolvedContentId)
|
|
147
|
-
return ['Error: delete requires content_id', {}];
|
|
148
|
-
const args: DeleteArgs = {
|
|
149
|
-
action: 'delete',
|
|
150
|
-
content_id: resolvedContentId,
|
|
151
|
-
};
|
|
152
|
-
return await handlers.delete(args, scope);
|
|
153
|
-
}
|
|
154
|
-
default:
|
|
155
|
-
return [
|
|
156
|
-
`Unknown action: ${(input as { action: string }).action}`,
|
|
157
|
-
{},
|
|
158
|
-
];
|
|
159
|
-
}
|
|
160
|
-
} catch (err) {
|
|
161
|
-
const e = err instanceof Error ? err : new Error(String(err));
|
|
162
|
-
logger?.error('[artifact_tool] handler threw', {
|
|
163
|
-
action: input.action,
|
|
164
|
-
contentId: resolvedContentId,
|
|
165
|
-
error: e.message,
|
|
166
|
-
elapsed: `${Date.now() - started}ms`,
|
|
167
|
-
});
|
|
168
|
-
return [`Error: ${e.message}`, {}];
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
name: ARTIFACT_TOOL_NAME,
|
|
173
|
-
responseFormat: 'content_and_artifact',
|
|
174
|
-
description: descriptionOverride ?? DEFAULT_ARTIFACT_DESCRIPTION,
|
|
175
|
-
schema: artifactToolSchema,
|
|
176
|
-
}
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// ─── Reader tool (content_reader) ────────────────────────────────────────
|
|
181
|
-
|
|
182
|
-
export function createContentReaderTool(
|
|
183
|
-
config: ContentReaderToolConfig
|
|
184
|
-
): DynamicStructuredTool {
|
|
185
|
-
const { handlers, getScope, resolver, logger, descriptionOverride } = config;
|
|
186
|
-
|
|
187
|
-
return tool(
|
|
188
|
-
async (rawInput, runnableConfig): Promise<ArtifactToolResult> => {
|
|
189
|
-
const scope = getScope(runnableConfig);
|
|
190
|
-
if (!scope) {
|
|
191
|
-
logger?.warn('[content_reader] no scope resolved from runnableConfig');
|
|
192
|
-
return ['Error: No conversation context available', {}];
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const input = rawInput as {
|
|
196
|
-
action: 'read' | 'search' | 'list' | 'info';
|
|
197
|
-
content_id?: string;
|
|
198
|
-
start_line?: number;
|
|
199
|
-
end_line?: number;
|
|
200
|
-
pattern?: string;
|
|
201
|
-
flags?: string;
|
|
202
|
-
context?: number;
|
|
203
|
-
offset?: number;
|
|
204
|
-
limit?: number;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
const resolvedContentId = await resolveContentIdIfPresent(
|
|
208
|
-
resolver,
|
|
209
|
-
input.content_id,
|
|
210
|
-
scope,
|
|
211
|
-
logger
|
|
212
|
-
);
|
|
213
|
-
|
|
214
|
-
const started = Date.now();
|
|
215
|
-
try {
|
|
216
|
-
switch (input.action) {
|
|
217
|
-
case 'read': {
|
|
218
|
-
if (!resolvedContentId)
|
|
219
|
-
return ['Error: read requires content_id', {}];
|
|
220
|
-
const args: ReadArgs = {
|
|
221
|
-
action: 'read',
|
|
222
|
-
content_id: resolvedContentId,
|
|
223
|
-
start_line: input.start_line,
|
|
224
|
-
end_line: input.end_line,
|
|
225
|
-
offset: input.offset,
|
|
226
|
-
limit: input.limit,
|
|
227
|
-
};
|
|
228
|
-
return await handlers.read(args, scope);
|
|
229
|
-
}
|
|
230
|
-
case 'search': {
|
|
231
|
-
if (!resolvedContentId)
|
|
232
|
-
return ['Error: search requires content_id', {}];
|
|
233
|
-
if (!input.pattern) return ['Error: search requires pattern', {}];
|
|
234
|
-
const args: SearchArgs = {
|
|
235
|
-
action: 'search',
|
|
236
|
-
content_id: resolvedContentId,
|
|
237
|
-
pattern: input.pattern,
|
|
238
|
-
flags: input.flags,
|
|
239
|
-
context: input.context,
|
|
240
|
-
offset: input.offset,
|
|
241
|
-
limit: input.limit,
|
|
242
|
-
};
|
|
243
|
-
return await handlers.search(args, scope);
|
|
244
|
-
}
|
|
245
|
-
case 'list': {
|
|
246
|
-
const args: ListArgs = { action: 'list' };
|
|
247
|
-
return await handlers.list(args, scope);
|
|
248
|
-
}
|
|
249
|
-
case 'info': {
|
|
250
|
-
if (!resolvedContentId)
|
|
251
|
-
return ['Error: info requires content_id', {}];
|
|
252
|
-
const args: InfoArgs = {
|
|
253
|
-
action: 'info',
|
|
254
|
-
content_id: resolvedContentId,
|
|
255
|
-
};
|
|
256
|
-
return await handlers.info(args, scope);
|
|
257
|
-
}
|
|
258
|
-
default:
|
|
259
|
-
return [
|
|
260
|
-
`Unknown action: ${(input as { action: string }).action}`,
|
|
261
|
-
{},
|
|
262
|
-
];
|
|
263
|
-
}
|
|
264
|
-
} catch (err) {
|
|
265
|
-
const e = err instanceof Error ? err : new Error(String(err));
|
|
266
|
-
logger?.error('[content_reader] handler threw', {
|
|
267
|
-
action: input.action,
|
|
268
|
-
contentId: resolvedContentId,
|
|
269
|
-
error: e.message,
|
|
270
|
-
elapsed: `${Date.now() - started}ms`,
|
|
271
|
-
});
|
|
272
|
-
return [`Error: ${e.message}`, {}];
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
name: CONTENT_READER_NAME,
|
|
277
|
-
responseFormat: 'content_and_artifact',
|
|
278
|
-
description: descriptionOverride ?? DEFAULT_CONTENT_READER_DESCRIPTION,
|
|
279
|
-
schema: contentReaderSchema,
|
|
280
|
-
}
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
export {
|
|
285
|
-
ARTIFACT_TOOL_NAME,
|
|
286
|
-
CONTENT_READER_NAME,
|
|
287
|
-
ARTIFACT_WRITE_ACTIONS,
|
|
288
|
-
CONTENT_READ_ACTIONS,
|
|
289
|
-
} from './schema';
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Artifact-tool types. The library owns the LangChain wiring, schema, and
|
|
3
|
-
* action dispatch. Runtime supplies an `ArtifactHandlers` bundle — one
|
|
4
|
-
* function per action — so ranger reuses its existing handlers, CLI
|
|
5
|
-
* supplies disk-backed ones, and A2A server supplies buffer-backed ones.
|
|
6
|
-
*
|
|
7
|
-
* Each handler receives:
|
|
8
|
-
* - `args`: the parsed input (typed per action)
|
|
9
|
-
* - `scope`: runtime-resolved scope identity (conversationId + userId
|
|
10
|
-
* for ranger, agent-run-id for CLI, a2a-task-id for A2A)
|
|
11
|
-
*
|
|
12
|
-
* Each handler returns a `[llmText, toolArtifact]` tuple matching
|
|
13
|
-
* LangChain's `content_and_artifact` response format.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
export interface ArtifactToolScope {
|
|
17
|
-
/**
|
|
18
|
-
* Primary scope — whatever the runtime uses to silo artifacts per
|
|
19
|
-
* session/run/conversation. Ranger uses `conversationId`; CLI uses
|
|
20
|
-
* `agent-run-id` or `agent-id`; A2A uses `a2a-task-id`.
|
|
21
|
-
*/
|
|
22
|
-
conversationId: string;
|
|
23
|
-
/** Optional — present when the runtime has an authenticated user. */
|
|
24
|
-
userId?: string;
|
|
25
|
-
/** Free-form extension — runtimes can add their own fields. */
|
|
26
|
-
[key: string]: unknown;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type ArtifactToolResult = [llmText: string, artifact?: unknown];
|
|
30
|
-
|
|
31
|
-
// ─── Action arg shapes ────────────────────────────────────────────────────
|
|
32
|
-
|
|
33
|
-
export interface WriteArgs {
|
|
34
|
-
action: 'write';
|
|
35
|
-
content_id?: string;
|
|
36
|
-
content: string;
|
|
37
|
-
name?: string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export interface EditArgs {
|
|
41
|
-
action: 'edit';
|
|
42
|
-
content_id: string;
|
|
43
|
-
old_str: string;
|
|
44
|
-
new_str: string;
|
|
45
|
-
replace_all?: boolean;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export interface VerifyArgs {
|
|
49
|
-
action: 'verify';
|
|
50
|
-
content_id: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface DeleteArgs {
|
|
54
|
-
action: 'delete';
|
|
55
|
-
content_id: string;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface ReadArgs {
|
|
59
|
-
action: 'read';
|
|
60
|
-
content_id: string;
|
|
61
|
-
start_line?: number;
|
|
62
|
-
end_line?: number;
|
|
63
|
-
offset?: number;
|
|
64
|
-
limit?: number;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export interface SearchArgs {
|
|
68
|
-
action: 'search';
|
|
69
|
-
content_id: string;
|
|
70
|
-
pattern: string;
|
|
71
|
-
flags?: string;
|
|
72
|
-
context?: number;
|
|
73
|
-
offset?: number;
|
|
74
|
-
limit?: number;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface ListArgs {
|
|
78
|
-
action: 'list';
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export interface InfoArgs {
|
|
82
|
-
action: 'info';
|
|
83
|
-
content_id: string;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export type ArtifactWriteAction =
|
|
87
|
-
| WriteArgs
|
|
88
|
-
| EditArgs
|
|
89
|
-
| VerifyArgs
|
|
90
|
-
| DeleteArgs;
|
|
91
|
-
export type ArtifactReadAction = ReadArgs | SearchArgs | ListArgs | InfoArgs;
|
|
92
|
-
|
|
93
|
-
// ─── Handler bundles ──────────────────────────────────────────────────────
|
|
94
|
-
|
|
95
|
-
/** Writer-surface handlers — invoked by `artifact_tool`. */
|
|
96
|
-
export interface ArtifactWriteHandlers {
|
|
97
|
-
write(args: WriteArgs, scope: ArtifactToolScope): Promise<ArtifactToolResult>;
|
|
98
|
-
edit(args: EditArgs, scope: ArtifactToolScope): Promise<ArtifactToolResult>;
|
|
99
|
-
verify(
|
|
100
|
-
args: VerifyArgs,
|
|
101
|
-
scope: ArtifactToolScope
|
|
102
|
-
): Promise<ArtifactToolResult>;
|
|
103
|
-
delete(
|
|
104
|
-
args: DeleteArgs,
|
|
105
|
-
scope: ArtifactToolScope
|
|
106
|
-
): Promise<ArtifactToolResult>;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/** Reader-surface handlers — invoked by `content_reader`. */
|
|
110
|
-
export interface ContentReadHandlers {
|
|
111
|
-
read(args: ReadArgs, scope: ArtifactToolScope): Promise<ArtifactToolResult>;
|
|
112
|
-
search(
|
|
113
|
-
args: SearchArgs,
|
|
114
|
-
scope: ArtifactToolScope
|
|
115
|
-
): Promise<ArtifactToolResult>;
|
|
116
|
-
list(args: ListArgs, scope: ArtifactToolScope): Promise<ArtifactToolResult>;
|
|
117
|
-
info(args: InfoArgs, scope: ArtifactToolScope): Promise<ArtifactToolResult>;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Optional content_id self-healing: runtimes that want to let the LLM
|
|
122
|
-
* pass nicknames (e.g., "Dashboard") instead of canonical IDs implement
|
|
123
|
-
* this. Library falls through when unset.
|
|
124
|
-
*/
|
|
125
|
-
export interface ContentIdResolver {
|
|
126
|
-
resolve(
|
|
127
|
-
id: string,
|
|
128
|
-
scope: ArtifactToolScope
|
|
129
|
-
): Promise<{ resolvedId: string; resolvedName?: string } | null>;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export interface ArtifactToolLogger {
|
|
133
|
-
debug: (msg: string, ...args: unknown[]) => void;
|
|
134
|
-
info: (msg: string, ...args: unknown[]) => void;
|
|
135
|
-
warn: (msg: string, ...args: unknown[]) => void;
|
|
136
|
-
error: (msg: string, ...args: unknown[]) => void;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export interface ArtifactToolBaseConfig {
|
|
140
|
-
/**
|
|
141
|
-
* Resolves the runtime scope from the LangChain `config` object on each
|
|
142
|
-
* invocation. Ranger pulls `conversationId` + `userId` from request
|
|
143
|
-
* metadata; CLI pulls `agent-run-id` from its runner context.
|
|
144
|
-
*/
|
|
145
|
-
getScope: (config: unknown) => ArtifactToolScope | null;
|
|
146
|
-
resolver?: ContentIdResolver;
|
|
147
|
-
logger?: ArtifactToolLogger;
|
|
148
|
-
/**
|
|
149
|
-
* Description override. Host can inject brand-specific guidance
|
|
150
|
-
* (e.g., ranger's HTML branding mandate, TSX style rules). Defaults
|
|
151
|
-
* to a generic description appropriate for any runtime.
|
|
152
|
-
*/
|
|
153
|
-
descriptionOverride?: string;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export interface ArtifactToolConfig extends ArtifactToolBaseConfig {
|
|
157
|
-
handlers: ArtifactWriteHandlers;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export interface ContentReaderToolConfig extends ArtifactToolBaseConfig {
|
|
161
|
-
handlers: ContentReadHandlers;
|
|
162
|
-
}
|