feat: add doctor command for diagnosing installs and cleaning stale daemon state (#1254)

* feat: add `doctor` command for install diagnostics and cleanup

Adds `agent-browser doctor`, a one-shot diagnostic that checks
environment, Chrome install, daemon state, config, encryption key,
providers, network reachability, and a live headless launch test.
Auto-cleans stale `.sock` / `.pid` / `.version` / `.stream` sidecar
files on every run. Destructive repairs (reinstall Chrome, purge old
state, close version-mismatched daemons, generate missing encryption
key) are gated behind `--fix`. Supports `--offline`, `--quick`, and
`--json`.

* fixes
This commit is contained in:
Chris Tate
2026-04-16 18:20:41 -05:00
committed by GitHub
parent 4cc6ca40b7
commit 14ece9b3ad
21 changed files with 2294 additions and 125 deletions
+10 -3
View File
@@ -714,14 +714,21 @@ pub fn dispatch_state_command(cmd: &Value) -> Option<Result<Value, String>> {
}
}
pub fn get_sessions_dir() -> PathBuf {
/// Return the agent-browser state root (`~/.agent-browser`, falling back to
/// `<tempdir>/agent-browser` when the home directory can't be resolved).
/// This is the parent of `sessions/`, auth storage, and the encryption key.
pub fn get_state_dir() -> PathBuf {
if let Some(home) = dirs::home_dir() {
home.join(".agent-browser").join("sessions")
home.join(".agent-browser")
} else {
std::env::temp_dir().join("agent-browser").join("sessions")
std::env::temp_dir().join("agent-browser")
}
}
pub fn get_sessions_dir() -> PathBuf {
get_state_dir().join("sessions")
}
#[cfg(test)]
mod tests {
use super::*;