viettranx
df5d48c78d
feat(tools/shell): add runtime-reloadable global shell deny-groups via config.tools
...
Adds ToolsConfig.ShellDenyGroups (map[string]bool) so operators can toggle
shell deny groups (package_install, env_dump, etc.) from the /config Web UI
without a process restart.
Wiring:
- ExecTool gains globalDenyGroups + SetGlobalShellDenyGroups (defensive copy).
- effectiveDenyGroups merges per-agent context overrides with global, with
per-key agent precedence — multi-tenant invariant preserved.
- setupToolRegistry applies the initial config before any request can arrive.
- subscribeShellDenyGroupsReload (extracted helper for testability) reacts to
bus.TopicConfigChanged and re-applies the new toggles.
Regression coverage the original PR #1005 attempt missed:
- 6 unit tests for the merge / defensive-copy semantics in internal/tools.
- 3 pub/sub dispatch tests in cmd: happy path, wrong event name, wrong
payload type.
2026-04-24 20:59:08 +07:00
..
2026-04-16 14:17:48 +07:00
2026-04-23 19:16:02 +07:00
2026-04-12 08:55:20 +07:00
2026-04-09 21:15:19 +07:00
2026-04-17 19:50:11 +07:00
2026-04-09 21:15:19 +07:00
2026-04-11 21:22:23 +07:00
2026-04-23 19:16:02 +07:00
2026-04-15 11:24:57 +07:00
2026-04-04 23:07:42 +07:00
2026-04-02 09:53:01 +07:00
2026-04-02 09:35:21 +07:00
2026-04-02 09:35:21 +07:00
2026-04-23 08:22:39 +07:00
2026-04-24 00:16:14 +07:00
2026-04-23 08:22:39 +07:00
2026-04-04 23:07:42 +07:00
2026-04-02 10:33:35 +07:00
2026-04-02 10:33:35 +07:00
2026-04-02 10:33:35 +07:00
2026-04-14 18:28:31 +07:00
2026-04-24 20:53:28 +07:00
2026-04-24 20:53:28 +07:00
2026-03-15 20:13:18 +07:00
2026-04-14 10:46:53 +07:00
2026-04-19 14:23:26 +07:00
2026-04-16 14:17:48 +07:00
2026-03-16 08:14:03 +07:00
2026-04-17 19:50:11 +07:00
2026-04-16 14:17:48 +07:00
2026-04-23 19:16:05 +07:00
2026-04-17 19:02:53 +07:00
2026-04-17 19:02:53 +07:00
2026-02-22 22:49:22 +07:00
2026-04-02 19:28:04 +07:00
2026-04-09 21:15:19 +07:00
2026-03-28 17:25:59 +07:00
2026-04-09 21:15:19 +07:00
2026-03-21 07:29:48 +07:00
2026-03-21 07:29:48 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 19:16:12 +07:00
2026-04-23 19:16:02 +07:00
2026-03-12 09:35:04 +07:00
2026-03-19 17:21:38 +07:00
2026-04-01 13:59:56 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-03-25 13:40:44 +07:00
2026-04-24 00:16:14 +07:00
2026-04-12 09:00:58 +07:00
2026-04-24 00:16:14 +07:00
2026-04-09 21:15:19 +07:00
2026-03-29 22:33:17 +07:00
2026-03-27 22:45:40 +07:00
2026-04-10 13:32:02 +07:00
2026-04-18 17:44:57 +07:00
2026-04-18 17:45:28 +07:00
2026-04-23 08:31:53 +07:00
2026-03-10 00:09:15 +07:00
2026-04-18 14:54:51 +07:00
2026-04-23 08:22:39 +07:00
2026-04-16 17:07:56 +07:00
2026-03-20 09:14:28 +07:00
2026-04-23 19:16:12 +07:00
2026-04-24 09:00:15 +07:00
2026-04-16 14:17:48 +07:00
2026-03-10 00:09:15 +07:00
2026-02-22 14:58:07 +07:00
2026-04-24 20:55:28 +07:00
2026-04-24 20:55:28 +07:00
2026-03-10 00:09:15 +07:00
2026-03-10 00:09:15 +07:00
2026-04-11 21:39:47 +07:00
2026-04-11 21:39:47 +07:00
2026-04-11 21:39:47 +07:00
2026-03-23 08:08:23 +07:00
2026-03-10 00:09:15 +07:00
2026-04-15 11:24:57 +07:00
2026-03-24 21:09:16 +07:00
2026-04-23 08:22:39 +07:00
2026-04-23 08:22:39 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-04 20:08:59 +07:00
2026-04-12 21:05:10 +07:00
2026-03-15 20:13:18 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:31:53 +07:00
2026-04-13 11:04:19 +07:00
2026-04-13 11:04:19 +07:00
2026-04-13 11:04:19 +07:00
2026-04-16 14:17:48 +07:00
2026-03-30 22:28:00 +07:00
2026-04-13 11:04:19 +07:00
2026-04-15 11:24:57 +07:00
2026-04-17 19:02:53 +07:00
2026-04-02 18:58:24 +07:00
2026-04-08 13:35:19 +07:00
2026-04-24 20:59:08 +07:00
2026-04-08 13:38:30 +07:00
2026-04-14 18:28:31 +07:00
2026-04-14 18:28:31 +07:00
2026-04-24 20:59:08 +07:00
2026-04-16 14:17:48 +07:00
2026-03-24 20:40:59 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:45:16 +07:00
2026-04-16 14:17:48 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:44:54 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:45:16 +07:00
2026-04-16 14:17:48 +07:00
2026-03-23 08:08:23 +07:00
2026-04-16 14:17:48 +07:00
2026-03-18 11:04:45 +07:00
2026-03-27 09:28:42 +07:00
2026-03-23 13:51:28 +07:00
2026-04-12 19:03:47 +07:00
2026-03-20 17:51:40 +07:00
2026-04-23 08:31:53 +07:00
2026-04-11 21:22:23 +07:00
2026-03-29 19:41:35 +07:00
2026-04-12 19:03:47 +07:00
2026-03-24 08:56:10 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-03-27 22:26:36 +07:00
2026-03-28 17:25:59 +07:00
2026-03-27 22:26:36 +07:00
2026-04-18 14:53:42 +07:00
2026-03-27 22:26:36 +07:00
2026-03-28 17:25:59 +07:00
2026-03-27 22:26:36 +07:00
2026-03-27 22:26:36 +07:00
2026-04-09 21:15:19 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-04-18 15:53:40 +07:00
2026-04-12 17:05:57 +07:00
2026-04-12 17:05:57 +07:00
2026-03-27 22:26:36 +07:00
2026-04-12 19:03:47 +07:00
2026-03-31 12:10:55 +07:00
2026-03-31 12:10:55 +07:00
2026-03-27 21:03:34 +07:00
2026-04-23 19:16:12 +07:00
2026-04-15 11:24:57 +07:00
2026-04-20 06:46:19 +07:00
2026-04-16 14:17:48 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:22:39 +07:00
2026-03-10 00:09:15 +07:00
2026-04-23 18:43:31 +07:00
2026-04-23 18:43:31 +07:00
2026-04-23 18:43:31 +07:00
2026-04-19 15:00:07 +07:00
2026-04-23 18:43:31 +07:00
2026-03-10 00:09:15 +07:00
2026-03-03 17:10:55 +07:00
2026-03-07 19:35:19 +07:00
2026-03-10 00:09:15 +07:00
2026-03-20 14:21:46 +07:00
2026-04-12 11:19:00 +07:00
2026-03-20 14:21:46 +07:00
2026-03-20 22:26:48 +07:00
2026-03-10 00:09:15 +07:00
2026-04-12 11:19:00 +07:00
2026-04-12 11:19:00 +07:00
2026-04-12 11:09:32 +07:00
2026-04-18 17:47:17 +07:00
2026-04-18 17:47:17 +07:00
2026-04-18 17:47:21 +07:00
2026-04-12 11:09:32 +07:00
2026-04-12 11:09:32 +07:00
2026-04-23 19:16:12 +07:00
2026-04-12 11:09:32 +07:00
2026-04-18 17:47:21 +07:00
2026-03-07 19:31:56 +07:00
2026-03-24 23:17:51 +07:00
2026-03-23 08:08:23 +07:00
2026-03-18 13:02:07 +07:00
2026-03-25 16:03:31 +07:00
2026-03-25 16:03:31 +07:00