From 96243030dad8fb0ae839beeb597c3aefc1d4bcda Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Tue, 4 Nov 2025 18:20:53 -0500 Subject: [PATCH 1/2] Support platform tools through CLI --- crates/goose-cli/src/session/mod.rs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/crates/goose-cli/src/session/mod.rs b/crates/goose-cli/src/session/mod.rs index 5cc3dd18017c..ac888519ee76 100644 --- a/crates/goose-cli/src/session/mod.rs +++ b/crates/goose-cli/src/session/mod.rs @@ -28,7 +28,7 @@ use goose::utils::safe_truncate; use anyhow::{Context, Result}; use completion::GooseCompleter; -use goose::agents::extension::{Envs, ExtensionConfig}; +use goose::agents::extension::{Envs, ExtensionConfig, PLATFORM_EXTENSIONS}; use goose::agents::types::RetryConfig; use goose::agents::{Agent, SessionConfig, MANUAL_COMPACT_TRIGGER}; use goose::config::{Config, GooseMode}; @@ -300,14 +300,23 @@ impl CliSession { pub async fn add_builtin(&mut self, builtin_name: String) -> Result<()> { for name in builtin_name.split(',') { let extension_name = name.trim().to_string(); - let config = ExtensionConfig::Builtin { - name: extension_name, - display_name: None, - // TODO: should set a timeout - timeout: Some(goose::config::DEFAULT_EXTENSION_TIMEOUT), - bundled: None, - description: name.trim().to_string(), - available_tools: Vec::new(), + + let config = if PLATFORM_EXTENSIONS.contains_key(name) { + ExtensionConfig::Platform { + name: extension_name, + bundled: None, + description: name.trim().to_string(), + available_tools: Vec::new(), + } + } else { + ExtensionConfig::Builtin { + name: extension_name, + display_name: None, + timeout: None, + bundled: None, + description: name.trim().to_string(), + available_tools: Vec::new(), + } }; self.agent .add_extension(config) From f662b34a28374fdad292a5d30b976eec22bae1fb Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Tue, 4 Nov 2025 18:37:24 -0500 Subject: [PATCH 2/2] Good one githyb --- crates/goose-cli/src/session/mod.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/goose-cli/src/session/mod.rs b/crates/goose-cli/src/session/mod.rs index ac888519ee76..469b06e11b9b 100644 --- a/crates/goose-cli/src/session/mod.rs +++ b/crates/goose-cli/src/session/mod.rs @@ -299,22 +299,22 @@ impl CliSession { /// * `builtin_name` - Name of the builtin extension(s), comma separated pub async fn add_builtin(&mut self, builtin_name: String) -> Result<()> { for name in builtin_name.split(',') { - let extension_name = name.trim().to_string(); + let extension_name = name.trim(); - let config = if PLATFORM_EXTENSIONS.contains_key(name) { + let config = if PLATFORM_EXTENSIONS.contains_key(extension_name) { ExtensionConfig::Platform { - name: extension_name, + name: extension_name.to_string(), bundled: None, - description: name.trim().to_string(), + description: name.to_string(), available_tools: Vec::new(), } } else { ExtensionConfig::Builtin { - name: extension_name, + name: extension_name.to_string(), display_name: None, timeout: None, bundled: None, - description: name.trim().to_string(), + description: name.to_string(), available_tools: Vec::new(), } };