From aa4a0267ea4713983eb11c1008a3a8f68ae56da5 Mon Sep 17 00:00:00 2001 From: Michael Neale Date: Wed, 29 Oct 2025 13:29:03 +1100 Subject: [PATCH] can interrupt now --- Cargo.lock | 12 ++++++------ crates/g3-cli/src/lib.rs | 13 ++++++++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ec765c..05e1252 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -990,7 +990,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1062,7 +1062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2333,7 +2333,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2904,7 +2904,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3292,7 +3292,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.2", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3935,7 +3935,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/crates/g3-cli/src/lib.rs b/crates/g3-cli/src/lib.rs index bc11a1a..ab432c3 100644 --- a/crates/g3-cli/src/lib.rs +++ b/crates/g3-cli/src/lib.rs @@ -679,15 +679,22 @@ async fn run_accumulative_mode( .await?; // Run autonomous mode with the accumulated requirements - match run_autonomous( + let autonomous_result = tokio::select! { + result = run_autonomous( agent, project, cli.show_prompt, cli.show_code, cli.max_turns, cli.quiet, - ) - .await + ) => result, + _ = tokio::signal::ctrl_c() => { + output.print("\n⚠️ Autonomous run cancelled by user (Ctrl+C)"); + Ok(()) + } + }; + + match autonomous_result { Ok(_) => { output.print("");