v3.38.2 — removed-agent restore + mcp http foreground fix
- Added `ruflo migrate fix --agents` command that restores missing agent files from canonical plugin content with fallback resolution (marketplace clone → repo checkout → GitHub tag → main) and rewrites the marketplace-only `mcp__plugin_ruflo-core_ruflo__*` tool namespace to the canonical `claude-flow` server key
- Updated `README.md` and `docs/USERGUIDE.md` examples to use the canonical `claude-flow` server key per #2206
- Fixed `ruflo migrate status`'s ADR-128 removed-agent remediation command to print `/plugin install <plugin>@ruflo` instead of an incorrect `ruflo plugins install` invocation
- Fixed `ruflo mcp start -t http` to block in the foreground with SIGINT/SIGTERM-driven graceful shutdown instead of exiting immediately after printing success, which prevented the HTTP server from accepting connections
- Corrected documentation claim that the Claude Code plugin path never registers an MCP server, as `ruflo-core` ships its own
Fixes
#2985 — ruflo migrate status's ADR-128 removed-agent remediation printed a command that couldn't succeed. ruflo plugins install <plugin> required -n/--name (not a positional) and targeted the npm-package plugin system entirely, while the gap detector's own registry check (installed_plugins.json) is for the Claude Code marketplace system. Fixed to print /plugin install <plugin>@ruflo, and — going further than a pointer fix — adds a real ruflo migrate fix --agents command that restores the missing agent files from their canonical plugin content (marketplace clone → repo checkout → GitHub tag → main fallback), rewriting the marketplace-only mcp__plugin_ruflo-core_ruflo__* tool namespace to the canonical claude-flow server key for npm-track users. Never overwrites an existing file. Contributed by @pacphi via #2986.
#2984 — ruflo mcp start -t http printed a full "Status: Running" success table, then exited within seconds without ever binding the port. Root cause: bin/cli.js's dispatcher unconditionally exits the process once a command's action resolves (an assumption that only holds for genuinely one-shot commands) — mcp start's HTTP/WebSocket path returned immediately after printing its success table, tearing down the freshly-bound http.Server before any client could connect. Fixed by blocking in the foreground with SIGINT/SIGTERM-driven graceful shutdown, matching daemon start --foreground's established pattern.
Also corrected doc drift found while investigating #2985: README.md/docs/USERGUIDE.md's claude mcp add examples now use the canonical claude-flow server key (per #2206); README's claim that the Claude Code plugin path never registers an MCP server corrected (ruflo-core ships its own).
Also investigated this cycle, not reproduced
#2969 (--version hang), #2970 (witness verify soft-pass), #2967 bug 1 (uptime unit mismatch) — checked via direct repro against main, none reproduced. See the linked issues for the evidence.