From 803bb78308579a62fb1e3b052ea92e34ed801c22 Mon Sep 17 00:00:00 2001 From: Douwe Osinga Date: Thu, 6 Nov 2025 10:31:34 -0500 Subject: [PATCH] Support platform tools through CLI (#5570) Co-authored-by: Douwe Osinga --- crates/goose-cli/src/session/mod.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/goose-cli/src/session/mod.rs b/crates/goose-cli/src/session/mod.rs index 5cc3dd18..469b06e1 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}; @@ -299,15 +299,24 @@ 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 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 extension_name = name.trim(); + + let config = if PLATFORM_EXTENSIONS.contains_key(extension_name) { + ExtensionConfig::Platform { + name: extension_name.to_string(), + bundled: None, + description: name.to_string(), + available_tools: Vec::new(), + } + } else { + ExtensionConfig::Builtin { + name: extension_name.to_string(), + display_name: None, + timeout: None, + bundled: None, + description: name.to_string(), + available_tools: Vec::new(), + } }; self.agent .add_extension(config)