Print detected agent names on a single line. */
| 7129 | |
| 7130 | /* Print detected agent names on a single line. */ |
| 7131 | static void print_detected_agents(const cbm_detected_agents_t *a, const char *home) { |
| 7132 | struct { |
| 7133 | bool flag; |
| 7134 | const char *name; |
| 7135 | } agents[] = { |
| 7136 | {a->claude_code, "Claude-Code"}, |
| 7137 | {a->codex, "Codex"}, |
| 7138 | {a->gemini, "Gemini-CLI"}, |
| 7139 | {a->zed, "Zed"}, |
| 7140 | {a->opencode, "OpenCode"}, |
| 7141 | {a->antigravity, "Antigravity"}, |
| 7142 | {a->aider, "Aider"}, |
| 7143 | {a->kilocode, "KiloCode"}, |
| 7144 | {a->vscode, "VS-Code"}, |
| 7145 | {a->cursor, "Cursor"}, |
| 7146 | {a->windsurf, "Windsurf"}, |
| 7147 | {a->augment, "Augment-Auggie"}, |
| 7148 | {a->openclaw, "OpenClaw"}, |
| 7149 | {a->kiro, "Kiro"}, |
| 7150 | {a->junie, "Junie"}, |
| 7151 | {a->hermes, "Hermes"}, |
| 7152 | {a->openhands, "OpenHands"}, |
| 7153 | {a->cline, "Cline"}, |
| 7154 | {a->warp, "Warp"}, |
| 7155 | {a->qwen, "Qwen-Code"}, |
| 7156 | {a->copilot_cli, "Copilot-CLI"}, |
| 7157 | {a->factory_droid, "Factory-Droid"}, |
| 7158 | {a->crush, "Crush"}, |
| 7159 | {a->goose, "Goose"}, |
| 7160 | {a->mistral_vibe, "Mistral-Vibe"}, |
| 7161 | }; |
| 7162 | printf("Detected agents:"); |
| 7163 | bool any = false; |
| 7164 | for (int i = 0; i < (int)(sizeof(agents) / sizeof(agents[0])); i++) { |
| 7165 | if (agents[i].flag) { |
| 7166 | printf(" %s", agents[i].name); |
| 7167 | any = true; |
| 7168 | } |
| 7169 | } |
| 7170 | print_detected_registry_agents(home, &any); |
| 7171 | if (!any) { |
| 7172 | printf(" (none)"); |
| 7173 | } |
| 7174 | printf("\n\n"); |
| 7175 | } |
| 7176 | |
| 7177 | /* Install Claude Code-specific configs (skills, MCP, hooks). */ |
| 7178 | /* ── Install plan recorder (issue #388) ──────────────────────────── |
no test coverage detected