plugins: allow updating agent plugins#300344
Merged
connor4312 merged 4 commits intomainfrom Mar 10, 2026
Merged
Conversation
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)
Contributor
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: @lszomoruMatched files:
|
Contributor
There was a problem hiding this comment.
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.autoUpdateis 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.
src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.ts
Outdated
Show resolved
Hide resolved
DonJayamanne
previously approved these changes
Mar 10, 2026
DonJayamanne
approved these changes
Mar 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
installed vs live versions and mark outdated plugins
successful update so the UI immediately reflects the new version
store (not stale IAgentPlugin.fromMarketplace) for accurate version checks
instead of dialog when silent=true
so stored sourceDescriptor reflects new version/ref/sha