d5328667e4741b3745da6f40a30d9fcc8839bed5
The spec's §10 consumer steps land. The rhema binary routes `mcp` and everything unrecognized (the external subcommand, which is the road the init file's stubs take: `rhema __server <name> ...`) to rhema_mcp::cli::run, whose exit code owns the process; outside a wired shell it exits 4 silently, exactly the spec's contract. The claw gains its first subcommand the same way (`claw mcp ...`). The frontends wire: session_agent_config (the TUI's three call sites) and the headless one-shot merge the wiring's shell_env into the agent config and the lines into the prompt's mcp section -- always behind the sandbox gate, so a session whose bash runs elsewhere advertises nothing it cannot run. The registry keys by profile name: a profile switch rewires, staying put reuses the bridge and its already-spawned servers. The bridge itself moved to a dedicated thread with its own runtime in this pass, which is what makes wire() synchronous -- a dedicated runtime dropped at return took the accept loop with it the first time, and a blocking CLI read starving a current-thread runtime taught the same lesson from the other side. Muting persists: disabled_mcp_servers lands beside skills_disabled in the config file, the settings toggle writes both the live set and the config through save_config, and the running agent rebuilds so the very next turn sees the change -- the MCP twin of the skill toggle, with the round-trip test extended to assert the config. The process-level pin the spec's §9 asked for: a bash child sources the provisioned init file from BASH_ENV, calls the generated function, the stub execs the CLI bin (the same dispatch the rhema binary routes to), and the envelope prints -- plus the unknown-tool path exiting 2 through clap's own text. provision and wire grow provision_with_bin/wire_with_bin test seams so the exec chain can run without building the frontend; the standalone rhema-mcp-cli bin target is the seam's exec side.
Languages
Rust
74.9%
Kotlin
13.8%
Vue
7.1%
TypeScript
3%
Dockerfile
0.5%
Other
0.6%