(&self, dc: &mut DoctorCounters, ctx: &HealthcheckContext)
| 196 | } |
| 197 | |
| 198 | fn healthcheck(&self, dc: &mut DoctorCounters, ctx: &HealthcheckContext) { |
| 199 | eprintln!("\n\x1b[1mCodex CLI integration\x1b[0m"); |
| 200 | let local_plugin_dir = codex_repo_plugin_install_dir(&ctx.project_path); |
| 201 | if local_plugin_dir.join(".codex-plugin/plugin.json").exists() { |
| 202 | doctor_check_plugin_dir( |
| 203 | dc, |
| 204 | &local_plugin_dir, |
| 205 | CodexBundlePolicy::for_scope(InstallScope::ProjectLocal), |
| 206 | &ctx.home, |
| 207 | ); |
| 208 | doctor_check_marketplace_entry( |
| 209 | dc, |
| 210 | &codex_repo_marketplace_path(&ctx.project_path), |
| 211 | "repo marketplace", |
| 212 | "./plugins/tracedecay", |
| 213 | "tracedecay install --local --agent codex", |
| 214 | ); |
| 215 | // Repo-local bundles ship no lifecycle hooks by design; hooks come |
| 216 | // from the personal plugin. Without one, no session/tool hooks run. |
| 217 | if !codex_plugin_manifest_path(&ctx.home).exists() |
| 218 | && codex_plugin_cached_install_dirs(&ctx.home).is_empty() |
| 219 | { |
| 220 | dc.warn( |
| 221 | "repo-local Codex bundles ship no lifecycle hooks — run `tracedecay install --agent codex` to add the personal plugin (session hooks, transcript ingest)", |
| 222 | ); |
| 223 | } |
| 224 | } else { |
| 225 | doctor_check_plugin(dc, &ctx.home); |
| 226 | } |
| 227 | doctor_suggest_native_memories_off(dc, &ctx.home); |
| 228 | } |
| 229 | |
| 230 | fn is_detected(&self, home: &Path) -> bool { |
| 231 | home.join(".codex").is_dir() |
nothing calls this directly
no test coverage detected