From e1cc44f7ec827150784b5e934d8882c355cfc1b8 Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Sun, 24 May 2026 20:55:58 -0400 Subject: [PATCH] Build summon instructions per turn (#9329) Signed-off-by: Douwe Osinga Co-authored-by: Douwe Osinga --- .../goose/src/agents/platform_extensions/summon.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/goose/src/agents/platform_extensions/summon.rs b/crates/goose/src/agents/platform_extensions/summon.rs index e1edf260..2c67d38d 100644 --- a/crates/goose/src/agents/platform_extensions/summon.rs +++ b/crates/goose/src/agents/platform_extensions/summon.rs @@ -428,11 +428,8 @@ impl Drop for SummonClient { impl SummonClient { pub fn new(context: PlatformExtensionContext) -> Result { - let instructions = build_subagent_instructions(context.session.as_deref()); - let info = InitializeResult::new(ServerCapabilities::builder().enable_tools().build()) - .with_server_info(Implementation::new(EXTENSION_NAME, "1.0.0").with_title("Summon")) - .with_instructions(instructions); + .with_server_info(Implementation::new(EXTENSION_NAME, "1.0.0").with_title("Summon")); Ok(Self { info, @@ -1744,6 +1741,15 @@ impl McpClientTrait for SummonClient { Some(&self.info) } + fn get_instructions(&self) -> Option { + let instructions = build_subagent_instructions(self.context.session.as_deref()); + if instructions.is_empty() { + None + } else { + Some(instructions) + } + } + async fn subscribe(&self) -> mpsc::Receiver { let (tx, rx) = mpsc::channel(16); self.notification_subscribers.lock().await.push(tx);