Skip to content

feat: switchboard band, session wire, Herdr combo, /agt-deck (v3.4.0) - #86

Merged
hasuwini77 merged 7 commits into
mainfrom
feat/switchboard
Oct 7, 2026
Merged

hasuwini77 merged 7 commits into
mainfrom
feat/switchboard

Conversation

@hasuwini77

Copy link
Copy Markdown
Owner

Closes #85

What changes

  • Switchboard band: framed dispatch tree rooted at the lead; ◇ subagent vs ▣ pane session rows with model pill, live tool, elapsed, tokens, ↑ escalations.
  • The wire: workers publish live status to $.store and message the lead via $.session.send when done (answer head + saved report). The lead wakes on it; panes mode drops the background herdr agent wait loop (kept as fallback).
  • Herdr combo: sidebar labels + live titles per worker, ↗ focuses a worker. tmux gets the band and ↗.
  • /agt-deck [auto|off] optional pane: mascot cast, routing timeline, wire log, token bars. /agt-tell messages a worker.
  • Fix: herdr agent start retried on agent_pane_busy (a shell banner made spawn_pane fail).

Verification

  • claude plugin test . → 202 pass, 0 fail; claude plugin validate . --strict passed; scripts/validate.sh 0 fails.
  • Live in Herdr with a lead and workers loaded from this branch: the band rendered ◇2 ▣1 rows with live tools; a worker's done message woke the lead's model; Herdr showed ▣ exec-1 · haiku | ✓ done 0:16; /agt-deck drew cast, routing, wire and tokens; spawn_pane opened a routed, labeled worker after the busy-pane retry.

🤖 Generated with Claude Code

hasuwini77 and others added 7 commits October 7, 2026 12:25
board.js turns the run's agents into switchboard rows: tree prefix,
kind glyph (◇ subagent, ▣ pane session), model pill, live tool,
elapsed and tokens, with columns that drop out on narrow bands. The
lead band's mascot rows are retired; mascots move to the deck cast.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wire.js defines what a worker publishes to the shared store, the done
message it sends its lead (answer head + saved report path), and how
the lead parses it. panes.js carries the lead's session id and the
worker's name into the split env, and adds Herdr sidebar metadata and
focus argv.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-tell

The band is now a framed dispatch tree rooted at the lead. Worker panes
publish their live tool and tokens and message the lead when they
finish, so the lead wakes without a background wait loop. Herdr's
sidebar labels each worker, a row's ↗ focuses it, and /agt-deck opens
an optional pane with the cast, routing timeline, wire log and tokens.

Closes #85

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a args

A fresh split is busy while its shell runs its startup (a login banner),
so herdr agent start failed with agent_pane_busy and spawn_pane never
opened a worker on such a machine. Retry for up to ~10s, and put
Herdr's stderr in the error. report-metadata reads the pane id before
its options; the label call now passes it first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rows without a ↗ keep a one-cell slot so the time column lines up; a
band with no agent rows shows the wire line alone; the deck's cast
labels and routing columns no longer run together, and pane workers
get their model pill from the wire. A subagent with no tool yet reads
thinking.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Panes mode now ends the turn after a wave and harvests from the
worker's wire message; the herdr wait loop is the fallback. README
lists /agt-deck and /agt-tell and the Herdr combo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hasuwini77
hasuwini77 merged commit f84a45a into main Oct 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: switchboard — dispatch tree band, session wire, Herdr combo, opt-in deck

1 participant