Print detected agent names on a single line. */
| 7023 | |
| 7024 | /* Print detected agent names on a single line. */ |
| 7025 | static void print_detected_agents(const cbm_detected_agents_t *a, const char *home) { |
| 7026 | struct { |
| 7027 | bool flag; |
| 7028 | const char *name; |
| 7029 | } agents[] = { |
| 7030 | {a->claude_code, "Claude-Code"}, |
| 7031 | {a->codex, "Codex"}, |
| 7032 | {a->gemini, "Gemini-CLI"}, |
| 7033 | {a->zed, "Zed"}, |
| 7034 | {a->opencode, "OpenCode"}, |
| 7035 | {a->antigravity, "Antigravity"}, |
| 7036 | {a->aider, "Aider"}, |
| 7037 | {a->kilocode, "KiloCode"}, |
| 7038 | {a->vscode, "VS-Code"}, |
| 7039 | {a->cursor, "Cursor"}, |
| 7040 | {a->windsurf, "Windsurf"}, |
| 7041 | {a->augment, "Augment-Auggie"}, |
| 7042 | {a->openclaw, "OpenClaw"}, |
| 7043 | {a->kiro, "Kiro"}, |
| 7044 | {a->junie, "Junie"}, |
| 7045 | {a->hermes, "Hermes"}, |
| 7046 | {a->openhands, "OpenHands"}, |
| 7047 | {a->cline, "Cline"}, |
| 7048 | {a->warp, "Warp"}, |
| 7049 | {a->qwen, "Qwen-Code"}, |
| 7050 | {a->copilot_cli, "Copilot-CLI"}, |
| 7051 | {a->factory_droid, "Factory-Droid"}, |
| 7052 | {a->crush, "Crush"}, |
| 7053 | {a->goose, "Goose"}, |
| 7054 | {a->mistral_vibe, "Mistral-Vibe"}, |
| 7055 | }; |
| 7056 | printf("Detected agents:"); |
| 7057 | bool any = false; |
| 7058 | for (int i = 0; i < (int)(sizeof(agents) / sizeof(agents[0])); i++) { |
| 7059 | if (agents[i].flag) { |
| 7060 | printf(" %s", agents[i].name); |
| 7061 | any = true; |
| 7062 | } |
| 7063 | } |
| 7064 | print_detected_registry_agents(home, &any); |
| 7065 | if (!any) { |
| 7066 | printf(" (none)"); |
| 7067 | } |
| 7068 | printf("\n\n"); |
| 7069 | } |
| 7070 | |
| 7071 | /* Install Claude Code-specific configs (skills, MCP, hooks). */ |
| 7072 | /* ── Install plan recorder (issue #388) ──────────────────────────── |
no test coverage detected