agent terminal: coherence pass
layout - unified prefix-column for every row kind: padding-left + negative text-indent so the glyph (→ ← · ◆ ✓ ✗ ⌁ !) sits in the same column whether the row is flat or a <details>. wraps hang under the body, not under the glyph. - expandable rows drop the directional glyph from their summary text; the ▸/▾ disclosure marker from CSS sits in the prefix column instead, and the row's colour still carries cyan = outbound, muted = inbound. - turn-start / turn-end de-weighted: bold/margin/tint dropped, the coloured left rule alone marks the boundary. note classification - stderr lines render orange with a `!` glyph (was muted `·`) - operator-initiated notes (cancel/compact/model/new-session) render mauve italic (was muted `·` indistinguishable from harness chatter) - catch-all .sys row escalates to orange `!` so unrecognised stream-json shapes surface for follow-up instead of hiding in muted noise message-bearing rows - send / ask / answer tool_use rich renderers default-open with the body inline; new ask + answer renderers (previously fell through to the generic JSON dump). recv tool_result also default-open, keyed by tracking tool_use_id → name across the stream so we know which result came from which tool. - assistant text rows render markdown. - bodies use vendored marked v4.0.2 (hive-fr0nt::MARKED_JS); falls back to plain text when the asset doesn't load. extra-mcp tool pretty-print - generic args formatter replaces the raw JSON dump for unknown tools (single-string field → `name k: "v"`; single dict / multi-field → trimmed `k: v · k: v …` summary) dashboard .live .msgrow gets a text-indent: 0 reset so the new hanging-indent metrics from TERMINAL_CSS don't leak into the flex-grid broker rows.
This commit is contained in:
parent
f827187341
commit
f8f2ccff52
7 changed files with 256 additions and 52 deletions
|
|
@ -94,6 +94,7 @@ pub async fn serve(
|
|||
.route("/static/agent.css", get(serve_css))
|
||||
.route("/static/app.js", get(serve_app_js))
|
||||
.route("/static/hive-fr0nt.js", get(serve_shared_js))
|
||||
.route("/static/marked.js", get(serve_marked_js))
|
||||
.route("/api/state", get(api_state))
|
||||
.route("/events/stream", get(events_stream))
|
||||
.route("/events/history", get(events_history))
|
||||
|
|
@ -190,6 +191,13 @@ async fn serve_shared_js() -> impl IntoResponse {
|
|||
)
|
||||
}
|
||||
|
||||
async fn serve_marked_js() -> impl IntoResponse {
|
||||
(
|
||||
[("content-type", "application/javascript")],
|
||||
hive_fr0nt::MARKED_JS,
|
||||
)
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct StateSnapshot {
|
||||
/// Bus seq at the moment this snapshot was assembled. Clients dedupe
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue