Compare commits

..
2 changed files with 22 additions and 38 deletions

View file

@ -227,16 +227,12 @@ it as a stdio child via `--mcp-config`. The hyperhive socket name is
`{state_dir}/hyperhive-status`; survives harness restarts. Pass `{state_dir}/hyperhive-status`; survives harness restarts. Pass
an empty string to clear. an empty string to clear.
- `get_agent_meta(name?)` — fetch identity + status metadata for - `get_agent_meta(name?)` — fetch identity + status metadata for
an agent: `{ name, role, hyperhive_rev, running, status_text, an agent: `{ name, role, hyperhive_rev, status_text,
status_set_at }`. Pass `name` to query a peer (e.g. check status_set_at }`. Pass `name` to query a peer (e.g. check
whether a sub-agent is idle before sending it work). Omit whether a sub-agent is idle before sending it work). Omit
`name` to get your own identity stamp — replaces the previous `name` to get your own identity stamp — replaces the previous
`whoami` tool. `running` is `true` when the container is up. `whoami` tool. Status fields are `None` when the target has
When `running` is `false` the host clears `status_text` / never called `set_status` or has cleared it.
`status_set_at` (they would be stale snapshots from before the
container stopped) before serving the response. Status fields are
also `None` when the target has never called `set_status` or
has cleared it.
- `request_next_turn()` — ask the harness to start another turn - `request_next_turn()` — ask the harness to start another turn
immediately after this one ends, even if the inbox is empty. Use for immediately after this one ends, even if the inbox is empty. Use for
multi-turn tasks (long builds, sequential steps) where you want to multi-turn tasks (long builds, sequential steps) where you want to

View file

@ -254,37 +254,25 @@ guess from container state.
the single source of truth. The frontend resolves each the single source of truth. The frontend resolves each
`AgentLink.kind` (`container``http://host:<container.port>`, `AgentLink.kind` (`container``http://host:<container.port>`,
`forge``http://host:3000`, `external` → already absolute). `forge``http://host:3000`, `external` → already absolute).
**When the container is stopped** (`ContainerView.running = false`), Status badges follow — `⊘ rate limited` (red, while the harness
the host clears live-only fields before emitting the state, so is parked after a 429), `needs login`, `needs update` — in-flight
the dashboard never renders stale data: the badge chain is `◐ pending-state…` pill (replaces buttons during operator-initiated
replaced by a single muted `■ not running` badge, the nav-strip start / stop / restart / rebuild / destroy). Additionally, when a
fetch is skipped (the agent web server is down), and the rebuild-queue entry for this agent is `queued` or `running` but no
self-reported status text is suppressed. The agent icon goes operator-initiated transient is set, the card surfaces a `building…` /
straight to the dimmed `/favicon.svg` fallback instead of `meta-updating…` badge sourced from `rebuildQueueState` (#398) —
attempting a doomed load from the container's URL. Static fields so the SW4RM tab shows the same rebuild progress visible on the
`needs_update`, `deployed_sha`, `pending_reminders`, `parent`, SYST3M tab's R3BU1LD QU3U3. Container name + port, and a
`config` link — remain visible regardless of run state. `ctx · Nk` chip showing the agent's last-turn context size
When the container is running, status badges follow — `⊘ rate (from `ContainerView.ctx_tokens`, read from the turn-stats
limited` (red, while the harness is parked after a 429), `needs sqlite on each `build_all` sweep; absent until the first turn).
login`, `needs update` — in-flight `◐ pending-state…` pill The chip colour (green / yellow / red) is keyed off the model's
(replaces buttons during operator-initiated start / stop / real context window: `build_all` resolves the last turn's model
restart / rebuild / destroy). Additionally, when a rebuild-queue against the host's per-model `contextWindowTokens` config and
entry for this agent is `queued` or `running` but no exposes it as `ContainerView.context_window_tokens`; the badge
operator-initiated transient is set, the card surfaces a goes yellow ≥ 50% and red ≥ 75% of that window (the harness
`building…` / `meta-updating…` badge sourced from compaction watermarks). When the window can't be resolved the
`rebuildQueueState` (#398) — so the SW4RM tab shows the same badge falls back to fixed 100k / 150k thresholds. (issue #66)
rebuild progress visible on the SYST3M tab's R3BU1LD QU3U3.
Container name + port, and a `ctx · Nk` chip showing the
agent's last-turn context size (from `ContainerView.ctx_tokens`,
read from the turn-stats sqlite on each `build_all` sweep;
absent until the first turn). The chip colour (green / yellow /
red) is keyed off the model's real context window: `build_all`
resolves the last turn's model against the host's per-model
`contextWindowTokens` config and exposes it as
`ContainerView.context_window_tokens`; the badge goes yellow
≥ 50% and red ≥ 75% of that window (the harness compaction
watermarks). When the window can't be resolved the badge falls
back to fixed 100k / 150k thresholds. (issue #66)
- Line 2: action buttons — `↻ R3BU1LD` always, `DESTR0Y` + `PURG3` - Line 2: action buttons — `↻ R3BU1LD` always, `DESTR0Y` + `PURG3`
on sub-agents, `↺ R3ST4RT` + (sub-agents) `■ ST0P` when running, on sub-agents, `↺ R3ST4RT` + (sub-agents) `■ ST0P` when running,
`▶ ST4RT` when stopped. Buttons dim + disable while a transient `▶ ST4RT` when stopped. Buttons dim + disable while a transient