acpmux: route/list says which routes serve the session's family

Merged
TE
18d ago
+43-5

Summary

With a sessionId, _acpmux/route/list now also returns the session's harness family, and each route gets serves: true|false from Route::serves. The composer's new Account menu (#21853) uses it to list only the routes that can run the chat, without copying the serving rules into TypeScript. Without a sessionId the reply is unchanged.

Nothing else changes: who may call route/list (unix socket and local app, never Web or peer) is the same, and no secret is added to the reply.

Testing

routes_rpc.rs a_chat_switches_from_proxy_a_to_proxy_b_without_a_restart now adds a codex-only route and checks family == "claude", serves true for a Claude route and false for the codex one, and no serves without a session.

Hosted (./scripts/verify-cmux-tui-hosted.sh --filter a_chat_switches_from_proxy_a_to_proxy_b_without_a_restart):

Changelog

none

Proof

Wire change only; the test above is the proof.

🤖 Generated with Claude Code