From 87252e542db96e15eeb14bf1cb2fb78a4c2eff63 Mon Sep 17 00:00:00 2001 From: Will Pfleger Date: Wed, 1 Oct 2025 17:31:48 -0400 Subject: [PATCH 1/3] --resume with --name should still accept session IDs --- crates/goose-cli/src/cli.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/goose-cli/src/cli.rs b/crates/goose-cli/src/cli.rs index ad5cc9835e90..5c644bf6eb1b 100644 --- a/crates/goose-cli/src/cli.rs +++ b/crates/goose-cli/src/cli.rs @@ -75,7 +75,7 @@ async fn get_session_id(identifier: Identifier) -> Result { sessions .into_iter() - .find(|s| s.description == name) + .find(|s| s.id == name || s.description.contains(&name)) .map(|s| s.id) .ok_or_else(|| anyhow::anyhow!("No session found with name '{}'", name)) } else if let Some(path) = identifier.path { From d9d10b9e9f03f446f32c00a0d4fa42a83d14e5f6 Mon Sep 17 00:00:00 2001 From: Will Pfleger Date: Wed, 1 Oct 2025 17:40:56 -0400 Subject: [PATCH 2/3] Print out session ID at session start/end to make resuming easier --- crates/goose-cli/src/cli.rs | 14 ++++++++++++++ crates/goose-cli/src/session/output.rs | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/crates/goose-cli/src/cli.rs b/crates/goose-cli/src/cli.rs index 5c644bf6eb1b..08a2023b52bf 100644 --- a/crates/goose-cli/src/cli.rs +++ b/crates/goose-cli/src/cli.rs @@ -1,5 +1,6 @@ use anyhow::Result; use clap::{Args, Parser, Subcommand}; +use console::style; use goose::config::{Config, ExtensionConfig}; @@ -889,6 +890,10 @@ pub async fn cli() -> Result<()> { let result = session.interactive(None).await; + if let Some(id) = session.session_id() { + println!("Closing session. Session ID: {}", style(id).cyan()); + } + let session_duration = session_start.elapsed(); let exit_type = if result.is_ok() { "normal" } else { "error" }; @@ -1102,6 +1107,10 @@ pub async fn cli() -> Result<()> { let result = session.headless(contents).await; + if let Some(id) = session.session_id() { + println!("Closing session. Session ID: {}", style(id).cyan()); + } + let session_duration = session_start.elapsed(); let exit_type = if result.is_ok() { "normal" } else { "error" }; @@ -1264,6 +1273,11 @@ pub async fn cli() -> Result<()> { eprintln!("Session ended with error: {}", e); std::process::exit(1); } + + if let Some(id) = session.session_id() { + println!("Closing session. Session ID: {}", style(id).cyan()); + } + Ok(()) }; } diff --git a/crates/goose-cli/src/session/output.rs b/crates/goose-cli/src/session/output.rs index 9027426ca1d9..639d7da96157 100644 --- a/crates/goose-cli/src/session/output.rs +++ b/crates/goose-cli/src/session/output.rs @@ -743,6 +743,14 @@ pub fn display_session_info( ); } + if let Some(id) = session_id { + println!( + " {} {}", + style("session id:").dim(), + style(id).cyan().dim() + ); + } + println!( " {} {}", style("working directory:").dim(), From 1382d087a14418702e09206a726ae17da170523c Mon Sep 17 00:00:00 2001 From: Will Pfleger Date: Wed, 1 Oct 2025 17:56:29 -0400 Subject: [PATCH 3/3] Cut down number of unnecessary print statements --- crates/goose-cli/src/cli.rs | 14 -------------- crates/goose-cli/src/session/mod.rs | 5 +++++ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/crates/goose-cli/src/cli.rs b/crates/goose-cli/src/cli.rs index 08a2023b52bf..5c644bf6eb1b 100644 --- a/crates/goose-cli/src/cli.rs +++ b/crates/goose-cli/src/cli.rs @@ -1,6 +1,5 @@ use anyhow::Result; use clap::{Args, Parser, Subcommand}; -use console::style; use goose::config::{Config, ExtensionConfig}; @@ -890,10 +889,6 @@ pub async fn cli() -> Result<()> { let result = session.interactive(None).await; - if let Some(id) = session.session_id() { - println!("Closing session. Session ID: {}", style(id).cyan()); - } - let session_duration = session_start.elapsed(); let exit_type = if result.is_ok() { "normal" } else { "error" }; @@ -1107,10 +1102,6 @@ pub async fn cli() -> Result<()> { let result = session.headless(contents).await; - if let Some(id) = session.session_id() { - println!("Closing session. Session ID: {}", style(id).cyan()); - } - let session_duration = session_start.elapsed(); let exit_type = if result.is_ok() { "normal" } else { "error" }; @@ -1273,11 +1264,6 @@ pub async fn cli() -> Result<()> { eprintln!("Session ended with error: {}", e); std::process::exit(1); } - - if let Some(id) = session.session_id() { - println!("Closing session. Session ID: {}", style(id).cyan()); - } - Ok(()) }; } diff --git a/crates/goose-cli/src/session/mod.rs b/crates/goose-cli/src/session/mod.rs index 61bb06d7ac8a..aadcdd5f0f08 100644 --- a/crates/goose-cli/src/session/mod.rs +++ b/crates/goose-cli/src/session/mod.rs @@ -758,6 +758,11 @@ impl CliSession { } } } + + if let Some(id) = &self.session_id { + println!("Closing session. Session ID: {}", console::style(id).cyan()); + } + Ok(()) }