diff --git a/docs/turn-loop.md b/docs/turn-loop.md index e768e342..3ec1bd0a 100644 --- a/docs/turn-loop.md +++ b/docs/turn-loop.md @@ -574,10 +574,8 @@ status hint moved to the wake prompt + UI header. ### Tool whitelist (`mcp::ALLOWED_BUILTIN_TOOLS`) - Allowed built-ins: `Edit`, `Glob`, `Grep`, `Read`, `Write`. -- Tool-group-gated built-ins: `WebFetch`, `WebSearch` (added when the - `web_tools` tool group is enabled — see P3RM1SS10NS tab). - Denied by omission or `claude-settings.json` deny list: `Bash`, - `Task`, `NotebookEdit`, `TodoWrite`. + `WebFetch`, `WebSearch`, `Task`, `NotebookEdit`, `TodoWrite`. - Allowed MCP tools: as listed above per flavor. `Bash` is disallowed — shell execution goes through @@ -585,6 +583,3 @@ status hint moved to the wake prompt + UI header. task-id tracking) instead of an interactive shell. The `bash_run` / `bash_status` MCP tools are always in the `--allowedTools` list. -`WebFetch` / `WebSearch` are off by default; enable the `web_tools` -tool group in the P3RM1SS10NS tab and rebuild the agent to enable them. - diff --git a/docs/web-ui.md b/docs/web-ui.md index b251c5a1..052b4357 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -13,7 +13,7 @@ This doc has been split for readability. Pick the section you need: per-agent relative paths, `data-async` form pattern, side panel, atomic repaint. - **[Dashboard layout](web-ui/dashboard.md)** — tab contents - (SW4RM, Y3R C4LL, SYST3M, P3RM1SS10NS, SCH3DUL3S, P33RS, S3TT1NGS), container row, + (SW4RM, Y3R C4LL, SYST3M, SCH3DUL3S, P33RS, S3TT1NGS), container row, topology tree, selection bar, approval card, browser notifications, dashboard endpoints + event channel. - **[Per-agent page](web-ui/agent.md)** — header, main terminal, diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index 79f56f86..92116fe9 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -6,7 +6,7 @@ The dashboard (`/`) has a fixed chrome header at the top and a `
` that shows exactly one tab pane at a time. The URL hash -(`#swarm`, `#call`, `#system`, `#permissions`, `#schedules`, `#peers`, `#settings`) +(`#swarm`, `#call`, `#system`, `#schedules`, `#peers`, `#settings`) drives which pane is active; hash changes don't reload the page. FL0W is a separate full-page terminal at `/flow.html` — its tab-strip entry is a cross-page link (`◆ FL0W ◆ →`), not a pane @@ -14,7 +14,7 @@ swap. **Chrome header** (fixed, overlays the active tab pane): - **Tab strip**: `◆ SW4RM ◆`, `◆ Y3R C4LL ◆`, `◆ SYST3M ◆`, - `◆ P3RM1SS10NS ◆`, `◆ SCH3DUL3S ◆`, `◆ P33RS ◆` (hidden when `swarm.peers` is empty), + `◆ SCH3DUL3S ◆`, `◆ P33RS ◆` (hidden when `swarm.peers` is empty), `◆ M4TR1X ◆ →` (optional page link, see below), `◆ FL0W ◆ →` (page link), and `◆ S3TT1NGS ◆`. Count pills on SW4RM (container count), Y3R C4LL (pending approvals + questions), and SCH3DUL3S @@ -119,60 +119,6 @@ age + claude-creds badge). Two actions: `⊕ R3V1V3` (queues a Spawn approval; existing state is reused), `PURG3` (wipes state + applied dirs; `POST /purge-tombstone/{name}`). -## P3RM1SS10NS tab - -Per-agent permission configuration. Two sections, each rendered as a -column-driven checkbox matrix: rows are agents, columns are the -permission names fetched from the backend. The column list is -authoritative — adding a new tool-group or capability to the backend -requires no UI change; the new column appears automatically. - -Fetches fire on tab activation (not page-load) to avoid unnecessary -work when the operator never visits this tab. - -**C4P4B1L1T13S** — per-agent capability grants. Capabilities unlock -gated MCP tools and system-level access beyond the default agent -surface. A saving POST queues a rebuild for the affected agent so the -new `HIVE_CAPABILITIES` env var takes effect in the next session. - -The current capabilities are: - -| Name | Effect | -|------|--------| -| `manage_root_agent` | allows the `set_status` / lifecycle tools on the root manager | -| `read_host_journal` | unlocks `get_host_journal` to read journald from inside a container | -| `query_agent_state` | allows `get_loose_ends(agent: "")` calls targeting other agents | - -Each row is one agent. Columns are the capability names returned by -`GET /api/capabilities` as `caps: Vec`. Checking or unchecking -boxes changes only the in-browser state; the `S4V3` button on the -right edge POSTs the full capability set for that agent to -`POST /api/capabilities/{agent}` as `{ caps: ["name", …] }` and -queues a rebuild. Absent agents in the assignment map have no extra -capabilities. - -**T00L GR0UPS** — per-agent tool-group permissions. Tool groups are -named buckets of MCP tools; each agent starts with a role default -(agents: `messaging`, `meta`, `inbox`, `execution`; manager: all -groups). Checking / unchecking and saving changes which groups are -active for the agent. Backed by `GET /api/tool-groups` (columns) and -`POST /api/tool-groups/{agent}` (save). A rebuild is queued after -each save so `HIVE_TOOL_GROUPS` takes effect. - -The current tool groups are: `messaging`, `meta`, `inbox`, `lifecycle`, -`approvals`, `scheduling`, `diagnostics`, `execution`, `web_tools`. All -listed in `ToolGroup::ALL` in `hive-sh4re`. The `web_tools` group is -special: it carries no MCP tools; instead it adds Claude's built-in -`WebFetch` and `WebSearch` to `--tools` / `--allowedTools` for that -agent session. - -Both tables share the same visual shape: `.cap-table-wrap` / -`.tg-table-wrap` outer scroll container, `thead` with a label column -(`.cap-agent-col` / `.tg-agent-col`) + one column per permission -(`.cap-col` / `.tg-group-col`) + a save column (`.cap-save-col` / -`.tg-save-col`). Each tbody row is one agent: a name cell, checkbox -cells, and the `S4V3` button. - ## SCH3DUL3S tab Anything that fires at a future time. Operator-set schedules @@ -736,26 +682,6 @@ that's a browser-level decision, not ours. - `POST /cancel-reminder/{id}` — hard-delete a pending reminder. - `POST /retry-reminder/{id}` — re-arm a reminder whose delivery failed (clears the failure state so the scheduler retries). -- `GET /api/tool-groups` — returns `{ groups: Vec, - assignments: BTreeMap> }`. `groups` is the - ordered list of all known tool-group names (drives the column - headers in the P3RM1SS10NS tab); `assignments` is the per-agent - override map (absent agents use the role default). -- `POST /api/tool-groups/{agent}` — body `{ groups: ["name", …] }`. - Writes the tool-group set for `{agent}` to - `/var/lib/hyperhive/meta/tool-groups.json` and queues a rebuild so - `HIVE_TOOL_GROUPS` takes effect. Agent name validated; - `guard_agent_name` applied. -- `GET /api/capabilities` — returns `{ caps: Vec, - assignments: BTreeMap> }`. `caps` is the - ordered list of all known capability names; `assignments` is the - per-agent grant map (absent agents have no extra capabilities). -- `POST /api/capabilities/{agent}` — body `{ caps: ["name", …] }`. - Writes the capability set for `{agent}` to - `/var/lib/hyperhive/meta/capabilities.json` and queues a rebuild so - `HIVE_CAPABILITIES` takes effect. Agent name validated; - unknown capability strings are rejected (400). `guard_agent_name` - applied. - `GET /api/schedules` — list all schedules (active and recently cancelled) for the SYST3M scheduled-prompts panel. - `POST /api/schedules` — operator-direct schedule create: diff --git a/docs/web-ui/shape.md b/docs/web-ui/shape.md index 054f771a..29dce188 100644 --- a/docs/web-ui/shape.md +++ b/docs/web-ui/shape.md @@ -15,9 +15,7 @@ - `GET /static/*` → bundled CSS + JS produced by esbuild (`frontend/packages/{dashboard,agent}/build.mjs`). Both pages pull the shared terminal pane + Catppuccin palette + typography - from `@hive/shared` (was `hive-fr0nt`); the dashboard ships four - CSS bundles (`common.css` loaded by every page, plus per-page - `dashboard.css` / `flow.css` / `logs.css`); `common.css` inlines + from `@hive/shared` (was `hive-fr0nt`); the CSS bundle inlines `base.css` + `terminal.css` via esbuild's `@import` resolution. `terminal.js` exports `{ create, linkify }` as ES module members (no more `window.HiveTerminal` global outside the