hyperhive#4008, mara: 'add a setting to not display verbose output... like the grey colored debug stuff.' Same shape as the existing expand-tool-output preference (ExpandDetailsSetting.tsx): a new shared/src/prefs.ts key pair (getHideDebugPref/setHideDebugPref), a new settings-menu-row component owning its own state (HideDebugSetting.tsx, not a prop threaded through the shared SettingsMenu component — per mara's earlier review on the first one, more per-page options as props there is how that component accumulates cruft), mounted next to ExpandDetailsSetting in Root.tsx. Row.tsx skips (returns null for, not CSS display:none) any TermMsg whose level is 'debug' when the pref is set — matches the muted 'debug' row this issue is about (see docs/web-ui/terminal-rendering.md's Levels table). Read live per-row, same as expand-details, so toggling applies to newly streamed rows in an already-open tab without a reload; already -rendered rows are unaffected either way, same non-retroactive precedent the existing preference already sets.
56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
# Per-agent terminal: row taxonomy (as built)
|
|
|
|
The per-agent web UI's live pane renders one row per `TermMsg`
|
|
(`hive-agent/src/term_msg.rs`): `{icon?, level: debug|info|warn|error,
|
|
summary, body?, body_format?: markdown|diff, coalesce_key?}`. Classification
|
|
(icon, summary text, whether a tool call gets an expandable body) happens
|
|
server-side, once — `term_msg.rs` + `stream_enrich.rs` — and is served
|
|
identically by both `GET /api/events/history` and `GET /api/events/stream`
|
|
as `TermEnvelope { ts, seq?, msgs: TermMsg[] }` frames
|
|
(`hive-agent/src/web_ui/stream.rs`).
|
|
|
|
The frontend renders a `TermMsg` close to as-is
|
|
(`frontend/packages/agent/src/components/Row.tsx`): `level` picks the
|
|
CSS colour (`terminal.css`'s `.live .level-*`), an empty `summary` +
|
|
markdown `body` renders as a flat row with just the body (assistant
|
|
text), and any other bodied row is an expandable `<details>`, opened by
|
|
default according to the operator's expand-tool-output preference
|
|
(`getExpandDetailsPref()`) — uniformly, no per-tool override. There's no
|
|
separate client-side row model or classification step.
|
|
|
|
## Layout
|
|
|
|
Every row shares one prefix column via `padding-left` + negative
|
|
`text-indent` on `.live .row`; an icon (when set) sits in a fixed-width
|
|
`.row-glyph` cell so icons of different rendered widths still line up.
|
|
`<details>` summaries reuse the same metrics, with the disclosure caret
|
|
leading the summary text rather than the icon.
|
|
|
|
## Levels
|
|
|
|
| Level | Colour | Roughly |
|
|
|---|---|---|
|
|
| `debug` | muted | thinking, coalesced ticks, ambient harness chatter |
|
|
| `info` | default fg | turn start/ok, assistant text, tool calls + results |
|
|
| `warn` | amber, left rule | stderr, an unrecognised event shape, API retries |
|
|
| `error` | red, left rule | turn failed, a tool result with `is_error: true` |
|
|
|
|
The settings menu's "hide debug output" toggle (`getHideDebugPref()`,
|
|
`@hive/shared/prefs.js`) skips `debug`-level rows entirely rather than
|
|
muting them further — client-side only, same live-read-no-reload shape
|
|
as the expand-tool-output preference above.
|
|
|
|
Per-tool icon + summary formatting (what a `Read`/`Edit`/`send` call's row
|
|
actually says) lives in `stream_enrich.rs`'s `fmt_tool_use()` family —
|
|
read that when you need the specifics, this doc doesn't duplicate it.
|
|
|
|
## Markdown
|
|
|
|
`frontend/packages/agent/src/lib/markdown.ts`'s `renderMarkdown()` runs
|
|
`marked.parse()` through DOMPurify into a `<div class="md">`. Applied to
|
|
any `TermMsg` with `body_format: "markdown"`.
|
|
|
|
## Dashboard side (not covered here)
|
|
|
|
The main dashboard's message-flow pane is a different shape: broker
|
|
messages render as `.msgrow` grid lines, not agent-terminal rows.
|