cmux-next agent pane: name the agent in the header, not the prompt
Part of the cmux-next parity work listed in #16174 (comment). One of the four agent pane bugs from the real-agent clip in #16231 (comment).
Problem
The pane header showed the session title, which acpmux sets from the first prompt, so the prompt appeared twice: once as the title and again as the first message. The status next to it showed raw connection strings such as "tool_call" or "session changed".
Change
- The header names the agent (the harness's catalog name, such as "Codex"), falling back to the harness id, then "Agent Chat". The catalog comes from the query cache the composer uses.
- The status shows only Working, Reconnecting or Mock, and nothing while idle.
Verification
- Red first: commit 1 adds the
paneHeadertests inmodel.test.ts, which fail before the fix. bun test src/agent-session/acpmux(90 pass), typecheck,lint:ci,build-agent-pane-web.sh --check.
Screenshots
A real-agent clip from one fleet build with all four transcript fixes (feat-cmux-next-transcript-fixes-demo) will be added here. The mock transport writes rows directly and skips the client reducer, so a mock capture cannot show this fix.
🤖 Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
Summary by cubic
Fixes the agent pane header so it names the agent running the session instead of repeating the first prompt as the title, and trims the status to only useful states.
- The title uses the harness catalog name (e.g., "Codex"), falling back to the harness id, then "Agent Chat".
- The status shows Working, Reconnecting, Connecting, or Mock, and nothing while idle, instead of raw client events like "tool_call" or "session changed".
- A pane whose daemon is down no longer looks idle: while reconnecting it shows Connecting, and Reconnecting or Connecting wins over a Working that a dropped connection will never end.