pub async fn handle_muxspect_list(__arg0: State<AppState>) -> impl IntoResponseExpand description
GET /api/v1/muxspect/list — every controller-backed block’s current
ProcessStatus, full detail (unlike agent.tracked-blocks, which
intentionally returns only block_ids for its Swarm-pane contract).
Each row also carries is_agent — ProcessStatus::is_agent()’s complete
classification rule (subprocess/persistent/acp are ALWAYS agents
regardless of is_agent_pane, which only applies to shell/cmd) — so
consumers don’t reimplement that rule themselves (codex P2 on PR #2380:
the CLI’s own naive is_agent_pane-only rendering mislabeled exactly
those three controller types).