Skip to content

Conversation

@DOsinga
Copy link
Collaborator

@DOsinga DOsinga commented Nov 4, 2025

Since platform tools are built-in but have their own type you couldn't explicitly enable them through the CLI. This changes that

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the add_builtin method to differentiate between platform extensions and builtin extensions. Platform extensions (like todo and extensionmanager) are now properly routed to use ExtensionConfig::Platform instead of ExtensionConfig::Builtin. The test script is also updated to include the new platform extensions in testing.

  • Adds logic to check if an extension is a platform extension using PLATFORM_EXTENSIONS
  • Routes platform extensions to ExtensionConfig::Platform configuration
  • Updates test script to include todo and extensionmanager in the builtin list

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
scripts/test_providers.sh Adds todo and extensionmanager to the list of builtin extensions tested
crates/goose-cli/src/session/mod.rs Implements conditional logic to create Platform vs Builtin extension configs based on extension type

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

description: name.trim().to_string(),
available_tools: Vec::new(),

let config = if PLATFORM_EXTENSIONS.contains_key(name) {
Copy link

Copilot AI Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The contains_key check uses the untrimmed name variable, but PLATFORM_EXTENSIONS keys are lowercase without spaces (e.g., "extensionmanager", "todo", "chatrecall"). The trimmed extension_name should be used here, or better yet, apply the same normalize() function used in extension_manager.rs which strips whitespace and converts to lowercase. Without this, platform extensions won't be recognized unless the user provides the exact key format.

Copilot uses AI. Check for mistakes.
Comment on lines 306 to 315
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(),
Copy link

Copilot AI Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name parameter is being called with trim() twice: once to create extension_name (line 300) and again here (line 306). Use extension_name consistently throughout both branches instead of re-trimming name.

Suggested change
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(),
description: extension_name.clone(),
available_tools: Vec::new(),
}
} else {
ExtensionConfig::Builtin {
name: extension_name.clone(),
display_name: None,
timeout: None,
bundled: None,
description: extension_name,

Copilot uses AI. Check for mistakes.
Comment on lines 304 to 315
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(),
Copy link

Copilot AI Nov 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name parameter is being called with trim() twice: once to create extension_name (line 300) and again here (line 315). Use extension_name consistently throughout both branches instead of re-trimming name.

Suggested change
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(),
name: extension_name.clone(),
bundled: None,
description: extension_name.clone(),
available_tools: Vec::new(),
}
} else {
ExtensionConfig::Builtin {
name: extension_name.clone(),
display_name: None,
timeout: None,
bundled: None,
description: extension_name.clone(),

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings November 6, 2025 15:11
@alexhancock alexhancock force-pushed the support-platform-cli-run branch from 71d7225 to f662b34 Compare November 6, 2025 15:11
@alexhancock
Copy link
Collaborator

(rebased this because I want to see if the provider tests are more reliable after recent merges)

ExtensionConfig::Builtin {
name: extension_name.to_string(),
display_name: None,
timeout: None,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the effect of the switch to have no timeout vs the prior

Some(goose::config::DEFAULT_EXTENSION_TIMEOUT)

?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interested to know, but doesn't seem like a big deal to me as we wouldn't expect the builtins to time out conceptually

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

ExtensionConfig::Platform {
name: extension_name.to_string(),
bundled: None,
description: name.to_string(),
Copy link

Copilot AI Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent description field usage. Line 308 uses name.to_string() while line 317 also uses name.to_string(), but extension_name was already trimmed on line 302. Line 308 should use extension_name.to_string() to avoid potential whitespace in the description.

Copilot uses AI. Check for mistakes.
display_name: None,
timeout: None,
bundled: None,
description: name.to_string(),
Copy link

Copilot AI Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description field should use extension_name.to_string() instead of name.to_string() to ensure it uses the trimmed version of the name and maintains consistency with the name field on line 313.

Copilot uses AI. Check for mistakes.
@alexhancock alexhancock merged commit 803bb78 into main Nov 6, 2025
22 checks passed
katzdave added a commit that referenced this pull request Nov 6, 2025
…bugfix

* 'main' of github.com:block/goose:
  Change the other location too (#5608)
  feat(ui): bring back quick launcher (#5144)
  Support platform tools through CLI (#5570)
  Avoid web double write (#5601)
wpfleger96 added a commit that referenced this pull request Nov 6, 2025
* main: (60 commits)
  fix: add standard context menu items to prevent empty right-click menu (#5616)
  Bump openapi in prepare-release (#5611)
  docs: add access control section to Developer tutorial (#5615)
  Token state not showing on load, or after message is finished. (#5606)
  Change the other location too (#5608)
  feat(ui): bring back quick launcher (#5144)
  Support platform tools through CLI (#5570)
  Avoid web double write (#5601)
  fix: gemini flash -> pro for mcp smoke tests (#5574)
  Manual compaction test and fix (#5568)
  fix: tidy up claude cli handling (#5594)
  Remove jetbrains (#5602)
  feat(githubcopilot): add support for newer Copilot AI Models (#5603)
  fix: customised recipe to yaml string to avoid minininjia parsing error (#5494)
  Add pending extension indicator to extension panel (#5493)
  Add environment subsition for auth blocks (#5439)
  acp: ToolCallLocations and working cancellation (#5588)
  feat(providers): add Mistral AI provider (#5009)
  Listen for ctrl-c during provider request (#5585)
  Also accept null as description, not just missing (#5589)
  ...
wpfleger96 added a commit that referenced this pull request Nov 6, 2025
* main: (31 commits)
  Standardize CLI argument flags and update documentation (#5516)
  Release 1.13.0
  fix: move goosehints/AGENTS.md handling to goose, and out of developer extension (#5575)
  fix: add standard context menu items to prevent empty right-click menu (#5616)
  Bump openapi in prepare-release (#5611)
  docs: add access control section to Developer tutorial (#5615)
  Token state not showing on load, or after message is finished. (#5606)
  Change the other location too (#5608)
  feat(ui): bring back quick launcher (#5144)
  Support platform tools through CLI (#5570)
  Avoid web double write (#5601)
  fix: gemini flash -> pro for mcp smoke tests (#5574)
  Manual compaction test and fix (#5568)
  fix: tidy up claude cli handling (#5594)
  Remove jetbrains (#5602)
  feat(githubcopilot): add support for newer Copilot AI Models (#5603)
  fix: customised recipe to yaml string to avoid minininjia parsing error (#5494)
  Add pending extension indicator to extension panel (#5493)
  Add environment subsition for auth blocks (#5439)
  acp: ToolCallLocations and working cancellation (#5588)
  ...
michaelneale added a commit that referenced this pull request Nov 7, 2025
* main: (21 commits)
  differentiate debug/release in cache key (#5613)
  Unify subrecipe and subagent execution through shared recipe pipeline (#5082)
  Standardize CLI argument flags and update documentation (#5516)
  Release 1.13.0
  fix: move goosehints/AGENTS.md handling to goose, and out of developer extension (#5575)
  fix: add standard context menu items to prevent empty right-click menu (#5616)
  Bump openapi in prepare-release (#5611)
  docs: add access control section to Developer tutorial (#5615)
  Token state not showing on load, or after message is finished. (#5606)
  Change the other location too (#5608)
  feat(ui): bring back quick launcher (#5144)
  Support platform tools through CLI (#5570)
  Avoid web double write (#5601)
  fix: gemini flash -> pro for mcp smoke tests (#5574)
  Manual compaction test and fix (#5568)
  fix: tidy up claude cli handling (#5594)
  Remove jetbrains (#5602)
  feat(githubcopilot): add support for newer Copilot AI Models (#5603)
  fix: customised recipe to yaml string to avoid minininjia parsing error (#5494)
  Add pending extension indicator to extension panel (#5493)
  ...
fbalicchia pushed a commit to fbalicchia/goose that referenced this pull request Nov 7, 2025
Co-authored-by: Douwe Osinga <[email protected]>
Signed-off-by: fbalicchia <[email protected]>
tlongwell-block added a commit that referenced this pull request Nov 7, 2025
* origin/main: (34 commits)
  Remove some logging (#5631)
  Use session IDs as task IDs for subagents instead of UUIDs (#5398)
  Fix the naming (#5628)
  fix: default tetrate model is broken, replace with haiku-4.5 (#5535) (#5587)
  Fetch less and use the right SHA (#5621)
  feat(ui): add custom macOS dock menu with New Window option (#5099)
  feat: remove hints from recipe prompts (#5622)
  docs: October 2025 Community All-Stars spotlight, Hacktoberfest edition (#5625)
  differentiate debug/release in cache key (#5613)
  Unify subrecipe and subagent execution through shared recipe pipeline (#5082)
  Standardize CLI argument flags and update documentation (#5516)
  Release 1.13.0
  fix: move goosehints/AGENTS.md handling to goose, and out of developer extension (#5575)
  fix: add standard context menu items to prevent empty right-click menu (#5616)
  Bump openapi in prepare-release (#5611)
  docs: add access control section to Developer tutorial (#5615)
  Token state not showing on load, or after message is finished. (#5606)
  Change the other location too (#5608)
  feat(ui): bring back quick launcher (#5144)
  Support platform tools through CLI (#5570)
  ...
Surendhar-N-D pushed a commit to Surendhar-N-D/goose that referenced this pull request Nov 17, 2025
arul-cc pushed a commit to arul-cc/goose that referenced this pull request Nov 17, 2025
BlairAllan pushed a commit to BlairAllan/goose that referenced this pull request Nov 29, 2025
Co-authored-by: Douwe Osinga <[email protected]>
Signed-off-by: Blair Allan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants