feat(#513): inject HIVE_TOOL_GROUPS from meta tool-groups.json per agent
This commit is contained in:
parent
98d9204ebf
commit
816523861c
4 changed files with 129 additions and 5 deletions
|
|
@ -290,9 +290,23 @@ binary flavor.
|
|||
| `scheduling` | `request_schedule_prompt`, `fire_schedule_now`, `cancel_schedule`, `edit_schedule`, `list_schedules` *(privileged)* |
|
||||
| `diagnostics` | `get_logs` *(privileged)* |
|
||||
|
||||
**Config storage** — per-agent tool groups live in
|
||||
`/var/lib/hyperhive/meta/tool-groups.json` (hive-c0re-owned, committed to the
|
||||
meta repo alongside `topology.json`). Format: `{ "alice": ["messaging", "meta",
|
||||
"inbox", "lifecycle"], "bob": ["messaging", "meta", "inbox"] }`. An absent entry
|
||||
means "use role default". Tool permissions are intentionally NOT configurable
|
||||
from `agent.nix` — that file goes through the manager's approval flow, so
|
||||
letting it declare its own groups would let the manager grant itself any tool by
|
||||
submitting a config commit, bypassing the operator gate.
|
||||
|
||||
**Setting groups** — the operator sets groups via the dashboard or
|
||||
`hive-c0re::tool_groups::set_groups(name, groups)`. After a change
|
||||
`meta::sync_agents` commits the updated file; the next agent rebuild picks up
|
||||
the new `HIVE_TOOL_GROUPS` env var. Agents with no entry get no var.
|
||||
|
||||
**Runtime resolution** — at session start the harness reads `HIVE_TOOL_GROUPS`
|
||||
(a comma-separated list of snake_case group names written by the meta renderer
|
||||
from per-agent config). Unrecognised tokens are logged and skipped. Falls back
|
||||
(a comma-separated list of snake_case group names injected by the meta renderer
|
||||
from `tool-groups.json`). Unrecognised tokens are logged and skipped. Falls back
|
||||
to `ToolGroup::AGENT_DEFAULT` (`messaging`, `meta`, `inbox`) or
|
||||
`ToolGroup::MANAGER_DEFAULT` (all groups) when the var is absent or empty.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue