From 03b461bb1aa57cb91d3cb57296807faa6298de17 Mon Sep 17 00:00:00 2001 From: Yingjie He Date: Thu, 17 Apr 2025 11:31:03 -0700 Subject: [PATCH] fix: resolve the deadlock while listing tools (#2242) --- Cargo.lock | 12 ++++++------ crates/goose-server/src/routes/agent.rs | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc1b222c..553b3d26 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2377,7 +2377,7 @@ dependencies = [ [[package]] name = "goose" -version = "1.0.17" +version = "1.0.18" dependencies = [ "anyhow", "async-stream", @@ -2432,7 +2432,7 @@ dependencies = [ [[package]] name = "goose-bench" -version = "1.0.17" +version = "1.0.18" dependencies = [ "anyhow", "async-trait", @@ -2455,7 +2455,7 @@ dependencies = [ [[package]] name = "goose-cli" -version = "1.0.17" +version = "1.0.18" dependencies = [ "anyhow", "async-trait", @@ -2493,7 +2493,7 @@ dependencies = [ [[package]] name = "goose-ffi" -version = "1.0.17" +version = "1.0.18" dependencies = [ "cbindgen", "futures", @@ -2507,7 +2507,7 @@ dependencies = [ [[package]] name = "goose-mcp" -version = "1.0.17" +version = "1.0.18" dependencies = [ "anyhow", "async-trait", @@ -2553,7 +2553,7 @@ dependencies = [ [[package]] name = "goose-server" -version = "1.0.17" +version = "1.0.18" dependencies = [ "anyhow", "async-trait", diff --git a/crates/goose-server/src/routes/agent.rs b/crates/goose-server/src/routes/agent.rs index 01a6a82e..d543e429 100644 --- a/crates/goose-server/src/routes/agent.rs +++ b/crates/goose-server/src/routes/agent.rs @@ -198,8 +198,8 @@ async fn get_tools( let config = Config::global(); let goose_mode = config.get_param("GOOSE_MODE").unwrap_or("auto".to_string()); - let mut agent = state.agent.write().await; - let agent = agent.as_mut().ok_or(StatusCode::PRECONDITION_REQUIRED)?; + let agent = state.agent.read().await; + let agent = agent.as_ref().ok_or(StatusCode::PRECONDITION_REQUIRED)?; let permission_manager = PermissionManager::default(); let mut tools: Vec = agent