fix(agent): improve subagent management for spawn and spawn_status tools
This commit is contained in:
parent
7614f03e5b
commit
521db349ff
1 changed files with 13 additions and 10 deletions
|
|
@ -222,23 +222,26 @@ func registerSharedTools(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spawn tool with allowlist checker
|
// Spawn and spawn_status tools share a SubagentManager.
|
||||||
if cfg.Tools.IsToolEnabled("spawn") {
|
// Construct it when either tool is enabled (both require subagent).
|
||||||
if cfg.Tools.IsToolEnabled("subagent") {
|
spawnEnabled := cfg.Tools.IsToolEnabled("spawn")
|
||||||
|
spawnStatusEnabled := cfg.Tools.IsToolEnabled("spawn_status")
|
||||||
|
if (spawnEnabled || spawnStatusEnabled) && cfg.Tools.IsToolEnabled("subagent") {
|
||||||
subagentManager := tools.NewSubagentManager(provider, agent.Model, agent.Workspace)
|
subagentManager := tools.NewSubagentManager(provider, agent.Model, agent.Workspace)
|
||||||
subagentManager.SetLLMOptions(agent.MaxTokens, agent.Temperature)
|
subagentManager.SetLLMOptions(agent.MaxTokens, agent.Temperature)
|
||||||
|
if spawnEnabled {
|
||||||
spawnTool := tools.NewSpawnTool(subagentManager)
|
spawnTool := tools.NewSpawnTool(subagentManager)
|
||||||
currentAgentID := agentID
|
currentAgentID := agentID
|
||||||
spawnTool.SetAllowlistChecker(func(targetAgentID string) bool {
|
spawnTool.SetAllowlistChecker(func(targetAgentID string) bool {
|
||||||
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
||||||
})
|
})
|
||||||
agent.Tools.Register(spawnTool)
|
agent.Tools.Register(spawnTool)
|
||||||
if cfg.Tools.IsToolEnabled("spawn_status") {
|
}
|
||||||
|
if spawnStatusEnabled {
|
||||||
agent.Tools.Register(tools.NewSpawnStatusTool(subagentManager))
|
agent.Tools.Register(tools.NewSpawnStatusTool(subagentManager))
|
||||||
}
|
}
|
||||||
} else {
|
} else if (spawnEnabled || spawnStatusEnabled) && !cfg.Tools.IsToolEnabled("subagent") {
|
||||||
logger.WarnCF("agent", "spawn tool requires subagent to be enabled", nil)
|
logger.WarnCF("agent", "spawn/spawn_status tools require subagent to be enabled", nil)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue