Skip to content

plugins: allow updating agent plugins#300344

Merged
connor4312 merged 4 commits intomainfrom
connor4312/plugin-updates
Mar 10, 2026
Merged

plugins: allow updating agent plugins#300344
connor4312 merged 4 commits intomainfrom
connor4312/plugin-updates

Conversation

@connor4312
Copy link
Member

Add update detection and update buttons to the agent plugins view and editor.
This allows users to see when installed plugins have newer versions available
and update them directly from the UI without manually checking for updates.

  • Export hasSourceChanged() from pluginMarketplaceService for reuse
  • Add 'outdated' and 'liveMarketplacePlugin' fields to IInstalledPluginItem
  • Fetch marketplace data in AgentPluginsListView.show() to cross-reference
    installed vs live versions and mark outdated plugins
  • Add UpdatePluginAction to list view with live marketplace data
  • Add UpdatePluginEditorAction to plugin editor with live marketplace data
  • Both update actions re-register the plugin with updated metadata after
    successful update so the UI immediately reflects the new version
  • Read fresh installed metadata from pluginMarketplaceService.installedPlugins
    store (not stale IAgentPlugin.fromMarketplace) for accurate version checks
  • Pass 'silent' option to runInstall() to show non-blocking notification
    instead of dialog when silent=true
  • Re-register plugins with live data after updateAllPlugins() completes
    so stored sourceDescriptor reflects new version/ref/sha

Add update detection and update buttons to the agent plugins view and editor.
This allows users to see when installed plugins have newer versions available
and update them directly from the UI without manually checking for updates.

- Export hasSourceChanged() from pluginMarketplaceService for reuse
- Add 'outdated' and 'liveMarketplacePlugin' fields to IInstalledPluginItem
- Fetch marketplace data in AgentPluginsListView.show() to cross-reference
  installed vs live versions and mark outdated plugins
- Add UpdatePluginAction to list view with live marketplace data
- Add UpdatePluginEditorAction to plugin editor with live marketplace data
- Both update actions re-register the plugin with updated metadata after
  successful update so the UI immediately reflects the new version
- Read fresh installed metadata from pluginMarketplaceService.installedPlugins
  store (not stale IAgentPlugin.fromMarketplace) for accurate version checks
- Pass 'silent' option to runInstall() to show non-blocking notification
  instead of dialog when silent=true
- Re-register plugins with live data after updateAllPlugins() completes
  so stored sourceDescriptor reflects new version/ref/sha

(Commit message generated by Copilot)
Copilot AI review requested due to automatic review settings March 10, 2026 05:47
@connor4312 connor4312 enabled auto-merge (squash) March 10, 2026 05:47
@vs-code-engineering
Copy link
Contributor

vs-code-engineering bot commented Mar 10, 2026

📬 CODENOTIFY

The following users are being notified based on files changed in this PR:

@lszomoru

Matched files:

  • extensions/git/src/commands.ts
  • extensions/git/src/git.ts

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 extends the agent plugin system to support “update” semantics (detecting whether updates actually changed content), adds a bulk “update all plugins” flow, and integrates plugin updates into existing update entry points (Extensions: Check for Updates, plus new Chat plugin update commands). It also adds a periodic background check to flag when marketplace repos are behind upstream.

Changes:

  • Introduces boolean “changed” results for git pulls/plugin-source updates and wires those through plugin install/update APIs.
  • Adds updateAllPlugins(...) (including silent/background operation) and UI actions/commands for updating plugins.
  • Adds periodic (daily) update-availability checks for cloned plugin marketplace repositories when extensions.autoUpdate is enabled.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts Runs plugin bulk update alongside extension update checks.
src/vs/workbench/contrib/chat/test/browser/plugins/pluginInstallService.test.ts Updates mocks to match new boolean-returning update APIs.
src/vs/workbench/contrib/chat/common/plugins/pluginSource.ts Updates plugin source interfaces (update returns boolean; runInstall supports silent).
src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.ts Adds periodic update availability tracking + helper for source change detection.
src/vs/workbench/contrib/chat/common/plugins/pluginInstallService.ts Expands install service contract to include bulk update + richer result.
src/vs/workbench/contrib/chat/common/plugins/agentPluginRepositoryService.ts Adjusts repository service interface to return “changed” and adds fetch-behind check.
src/vs/workbench/contrib/chat/browser/pluginSources.ts Implements boolean “changed” updates + silent install confirmations.
src/vs/workbench/contrib/chat/browser/pluginInstallService.ts Implements updateAllPlugins, notification/progress behavior, and metadata refresh.
src/vs/workbench/contrib/chat/browser/agentPluginsView.ts Adds per-plugin Update actions, outdated detection, and update commands.
src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.ts Implements boolean pull/update and silent fetch-behind logic.
src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.ts Extends installed item model to carry outdated/live marketplace data.
src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.ts Adds Update action in editor when installed plugin is outdated.
extensions/git/src/git.ts Changes pull to return boolean “changed” based on output.
extensions/git/src/commands.ts Adjusts _git.pull return type and adds fetch/revParse/revListCount commands.

You can also share your feedback on Copilot code review. Take the survey.

DonJayamanne
DonJayamanne previously approved these changes Mar 10, 2026
@connor4312 connor4312 merged commit 0a8edf7 into main Mar 10, 2026
29 of 30 checks passed
@connor4312 connor4312 deleted the connor4312/plugin-updates branch March 10, 2026 17:57
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