Cloud: add repository picker and recovery UI
Cloud chats now show their Default environment with the shared edit cog, an Add repository picker, and attached repository rows. The picker searches the local, recent, and GitHub installation catalog, syncs it before list/add, and attaches with inline progress.
Agent list_repos and add_repo recovery rows handle repo.needs_github, repo.no_access, and repo.ambiguous with inline actions. Connecting GitHub waits for installation and retries the exact backend-provided action automatically. Gallery fixtures cover picker, empty, and each recovery state, with a Bun contract test for typed recovery payloads.
Leo asked for Cloud chats that start immediately with an Environment showing “Default” and “Add repository…”, and for repository failures to carry the next action instead of dead-ending.
Peer-picked Cloud chats whose pane has no authenticated machine repository route now keep the existing Environment rows and hide Add repository. Routing those chats to the peer daemon with its session binding, plus the daemon-side surface/principal check, is tracked in #30628.
agent-identity footer --repo manaflow-ai/cmux
Agent session: agent session