feat: US-018 - Add SubagentTool with ToolResult support
Created new SubagentTool for synchronous subagent execution: - Implements Tool interface with Name(), Description(), Parameters(), SetContext(), Execute() - Returns ToolResult with ForUser (summary), ForLLM (full details), Silent=false, Async=false - Registered in AgentLoop with context support - Comprehensive test file subagent_tool_test.go with 9 passing tests Acceptance criteria met: - ForUser contains subagent output summary (truncated to 500 chars) - ForLLM contains full execution details with label and result - Typecheck passes (go build ./... succeeds) - go test ./pkg/tools -run TestSubagentTool passes (all 9 tests pass) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,10 @@ func NewAgentLoop(cfg *config.Config, msgBus *bus.MessageBus, provider providers
|
||||
spawnTool := tools.NewSpawnTool(subagentManager)
|
||||
toolsRegistry.Register(spawnTool)
|
||||
|
||||
// Register subagent tool (synchronous execution)
|
||||
subagentTool := tools.NewSubagentTool(subagentManager)
|
||||
toolsRegistry.Register(subagentTool)
|
||||
|
||||
// Register edit file tool
|
||||
editFileTool := tools.NewEditFileTool(workspace)
|
||||
toolsRegistry.Register(editFileTool)
|
||||
@@ -500,6 +504,11 @@ func (al *AgentLoop) updateToolContexts(channel, chatID string) {
|
||||
st.SetContext(channel, chatID)
|
||||
}
|
||||
}
|
||||
if tool, ok := al.tools.Get("subagent"); ok {
|
||||
if st, ok := tool.(tools.ContextualTool); ok {
|
||||
st.SetContext(channel, chatID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// maybeSummarize triggers summarization if the session history exceeds thresholds.
|
||||
|
||||
Reference in New Issue
Block a user