| 10006 | bool dry_run); |
| 10007 | |
| 10008 | static void uninstall_qoder_durable_context(const char *home, const char *binary_path, |
| 10009 | const char *settings_path, bool config_resolved, |
| 10010 | bool dry_run) { |
| 10011 | char skills_dir[CLI_BUF_1K]; |
| 10012 | char agent_path[CLI_BUF_1K]; |
| 10013 | snprintf(skills_dir, sizeof(skills_dir), "%s/.qoder/skills", home); |
| 10014 | snprintf(agent_path, sizeof(agent_path), "%s/.qoder/agents/codebase-memory.md", home); |
| 10015 | bool cleanup_ok = true; |
| 10016 | if (!dry_run && config_resolved && |
| 10017 | cbm_remove_qoder_context_hook(settings_path, binary_path) != CLI_OK) { |
| 10018 | cleanup_ok = false; |
| 10019 | record_agent_config_error(true, "Qoder CLI", "context_hook_uninstall", settings_path); |
| 10020 | } |
| 10021 | const char *hook_status = !config_resolved ? "skipped because the settings path was unresolved" |
| 10022 | : dry_run ? "canonical lifecycle/read cleanup planned" |
| 10023 | : cleanup_ok |
| 10024 | ? "canonical lifecycle/read cleanup complete; modified or " |
| 10025 | "foreign entries preserved" |
| 10026 | : "canonical lifecycle/read cleanup failed"; |
| 10027 | printf(" hook: %s\n", hook_status); |
| 10028 | uninstall_agent_skill("Qoder CLI", skills_dir, dry_run); |
| 10029 | uninstall_tiered_agent_profiles( |
| 10030 | (cbm_tiered_profile_set_t){ |
| 10031 | .label = "Qoder CLI", |
| 10032 | .verify_path = agent_path, |
| 10033 | .binary_path = binary_path, |
| 10034 | .legacy_verify_content = legacy_qoder_verify_agent_content, |
| 10035 | .dialect = CBM_GRAPH_DIALECT_QODER, |
| 10036 | }, |
| 10037 | dry_run); |
| 10038 | } |
| 10039 | |
| 10040 | static void uninstall_gitlab_durable_context(const cbm_agent_registry_context_t *registry, |
| 10041 | const char *binary_path, bool dry_run) { |
no test coverage detected