From 581e166e8acb694e22ce00e1d2e89e8cd8b0f177 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 12 Jan 2026 11:30:07 -0600 Subject: [PATCH] fixes --- cli/src/connection.rs | 12 +++++++++--- cli/src/main.rs | 22 ++++++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/cli/src/connection.rs b/cli/src/connection.rs index 9d0ef40..7a103ec 100644 --- a/cli/src/connection.rs +++ b/cli/src/connection.rs @@ -153,9 +153,15 @@ fn daemon_ready(session: &str) -> bool { } } -pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>) -> Result<(), String> { +/// Result of ensure_daemon indicating whether a new daemon was started +pub struct DaemonResult { + /// True if we connected to an existing daemon, false if we started a new one + pub already_running: bool, +} + +pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>) -> Result { if is_daemon_running(session) && daemon_ready(session) { - return Ok(()); + return Ok(DaemonResult { already_running: true }); } let exe_path = env::current_exe().map_err(|e| e.to_string())?; @@ -242,7 +248,7 @@ pub fn ensure_daemon(session: &str, headed: bool, executable_path: Option<&str>) for _ in 0..50 { if daemon_ready(session) { - return Ok(()); + return Ok(DaemonResult { already_running: false }); } thread::sleep(Duration::from_millis(100)); } diff --git a/cli/src/main.rs b/cli/src/main.rs index 06dc06f..0413d3b 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -149,13 +149,23 @@ fn main() { } }; - if let Err(e) = ensure_daemon(&flags.session, flags.headed, flags.executable_path.as_deref()) { - if flags.json { - println!(r#"{{"success":false,"error":"{}"}}"#, e); - } else { - eprintln!("\x1b[31m✗\x1b[0m {}", e); + let daemon_result = match ensure_daemon(&flags.session, flags.headed, flags.executable_path.as_deref()) { + Ok(result) => result, + Err(e) => { + if flags.json { + println!(r#"{{"success":false,"error":"{}"}}"#, e); + } else { + eprintln!("\x1b[31m✗\x1b[0m {}", e); + } + exit(1); + } + }; + + // Warn if executable_path was specified but daemon was already running + if daemon_result.already_running && flags.executable_path.is_some() { + if !flags.json { + eprintln!("\x1b[33m⚠\x1b[0m --executable-path ignored: daemon already running. Use 'agent-browser close' first to restart with new path."); } - exit(1); } // If --headed flag is set, send launch command first to switch to headed mode