Re-runs full `install()` + `post_install()` for every tracked agent so tool permissions, hooks, and MCP config stay in sync with the running binary — a superset of `refresh_generated_plugins`, which rewrites generated artifacts only. Mirrors the canonical `handle_reinstall_command` (global scope: `project_root: None`). Continues past a failing agent; returns [`ReinstallOutcome::PartialFailure`] li
(user_config: &UserConfig)
| 289 | /// resolved, no install runs and a descriptive failure is reported so the |
| 290 | /// version markers stay put. |
| 291 | pub(crate) async fn reinstall_tracked_agents(user_config: &UserConfig) -> ReinstallOutcome { |
| 292 | let (Some(home), Some(bin)) = ( |
| 293 | tracedecay::agents::home_dir(), |
| 294 | tracedecay::agents::which_tracedecay(), |
| 295 | ) else { |
| 296 | return ReinstallOutcome::PartialFailure { |
| 297 | failed: vec![ |
| 298 | "<environment>: could not resolve home directory or tracedecay binary on PATH" |
| 299 | .to_string(), |
| 300 | ], |
| 301 | }; |
| 302 | }; |
| 303 | let results = |
| 304 | crate::agent_cmd::reinstall_agent_integrations(&user_config.installed_agents, &home, &bin) |
| 305 | .await; |
| 306 | partition_reinstall_results(results) |
| 307 | } |
| 308 | |
| 309 | pub(crate) async fn run_post_update_tasks( |
| 310 | no_heal: bool, |
no test coverage detected