picoclaw/pkg/tools
Paolo Anzani eb86e10e5c
fix(tools): propagate tool registry to subagents (#1711)
* fix(tools): propagate tool registry to subagents via Clone

SubagentManager was created with an empty ToolRegistry and SetTools()
was never called, causing all subagent tool invocations to fail with
"tool not found". This was a regression from the multi-agent refactor.

Fix: clone the parent agent's tool registry into the subagent manager
after creation but before spawn/spawn_status registration — giving
subagents access to file, exec, web, and other tools while preventing
recursive subagent spawning.

- Add ToolRegistry.Clone() for independent shallow copies
- Call subagentManager.SetTools(agent.Tools.Clone()) in registerSharedTools
- Add tests for Clone isolation, empty clone, and hidden tool state

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(tools): fix cron_test build error and add TTL clone test

- Fix cron_test.go:229 — replace non-existent SubscribeOutbound(ctx)
  with select on OutboundChan(), matching the MessageBus channel API
- Add TestToolRegistry_Clone_PreservesTTLValue per reviewer feedback
- Add version reset note to Clone() doc comment

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 00:17:16 +08:00
..
base.go fix: eliminate data races on shared tool instances (#1080) 2026-03-05 09:57:33 +08:00
cron.go feat(config): add exec controls and gate cron commands on exec settings (#1685) 2026-03-17 18:56:52 +08:00
cron_test.go fix(cron): update test to use OutboundChan instead of removed SubscribeOutbound 2026-03-18 01:37:07 +08:00
edit.go fix(tools): allow /dev/null redirection and add read/write sandbox split (#967) 2026-03-02 12:22:02 +08:00
edit_test.go fix(security): workspace sandbox avoid time-of-check/time-of-use (TOCTOU) races (#464) 2026-02-23 20:09:53 +11:00
filesystem.go fix(tools): normalize whitelist path checks for symlinked allowed roots (#1660) 2026-03-17 14:10:11 +08:00
filesystem_test.go fix(tools): normalize whitelist path checks for symlinked allowed roots (#1660) 2026-03-17 14:10:11 +08:00
i2c.go refactor: cleanup dead code and turn on dead code detection in CI (#515) 2026-02-24 21:52:25 +08:00
i2c_linux.go feat(linter): Fix govet linter 2026-02-20 22:35:16 +02:00
i2c_other.go feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
mcp_tool.go fix: improve MCP tool name collision safety and registry overwrite warning 2026-03-01 12:00:26 +08:00
mcp_tool_test.go chore: fix lint issues in mcp and agent packages 2026-03-01 08:53:13 +08:00
message.go fix: eliminate data races on shared tool instances (#1080) 2026-03-05 09:57:33 +08:00
message_test.go fix: eliminate data races on shared tool instances (#1080) 2026-03-05 09:57:33 +08:00
registry.go fix(tools): propagate tool registry to subagents (#1711) 2026-03-19 00:17:16 +08:00
registry_test.go fix(tools): propagate tool registry to subagents (#1711) 2026-03-19 00:17:16 +08:00
result.go feat(channels): add MediaSender optional interface for outbound media 2026-02-23 03:10:57 +08:00
result_test.go feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
search_tool.go feat(mcp): tool search tools (#1243) 2026-03-09 18:21:49 +01:00
search_tools_test.go feat(mcp): tool search tools (#1243) 2026-03-09 18:21:49 +01:00
send_file.go fix(tools): allow sandbox access to temp media files 2026-03-14 12:02:06 +08:00
send_file_test.go fix(tools): allow sandbox access to temp media files 2026-03-14 12:02:06 +08:00
shell.go fix: Avoid failure of the main agent process due to tool call failures (#1023) 2026-03-19 00:10:26 +08:00
shell_process_unix.go fix(exec): terminate process tree on timeout 2026-02-18 02:01:29 +08:00
shell_process_windows.go fix(exec): terminate process tree on timeout 2026-02-18 02:01:29 +08:00
shell_test.go fix: Avoid failure of the main agent process due to tool call failures (#1023) 2026-03-19 00:10:26 +08:00
shell_timeout_unix_test.go fix(exec) fail close on invalid deny pattern (#781) 2026-02-28 16:24:26 +08:00
skills_install.go refactor(pkg): move atomic file write to dedicated fileutil package 2026-02-24 23:57:13 +08:00
skills_install_test.go feat(fmt): Fix formatting 2026-02-20 20:03:11 +02:00
skills_search.go feat(fmt): Fix formatting 2026-02-20 20:03:11 +02:00
skills_search_test.go feat(fmt): Fix formatting 2026-02-20 20:03:11 +02:00
spawn.go fix: eliminate data races on shared tool instances (#1080) 2026-03-05 09:57:33 +08:00
spawn_status.go feat(tools): add SpawnStatusTool for reporting subagent statuses (#1540) 2026-03-17 14:41:43 +08:00
spawn_status_test.go feat(tools): add SpawnStatusTool for reporting subagent statuses (#1540) 2026-03-17 14:41:43 +08:00
spawn_test.go fix: background task results silently dropped 2026-03-05 13:07:17 +01:00
spi.go refactor: cleanup dead code and turn on dead code detection in CI (#515) 2026-02-24 21:52:25 +08:00
spi_linux.go feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
spi_other.go feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
subagent.go feat(tools): add SpawnStatusTool for reporting subagent statuses (#1540) 2026-03-17 14:41:43 +08:00
subagent_tool_test.go fix: background task results silently dropped 2026-03-05 13:07:17 +01:00
toolloop.go feat: execute LLM tool calls in parallel for faster response (#1070) 2026-03-04 17:17:28 +08:00
types.go feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
web.go fix lint + error check 2026-03-17 17:14:23 +01:00
web_test.go fix lint + error check 2026-03-17 17:14:23 +01:00