Repository navigation
feat(extensions): bulk sync to agents and bulk delete - #154
Merged
RealZST merged 5 commits intoOct 10, 2026
Merged
Conversation
- Add "Sync to agents" action to install selected extensions at Global scope across enabled agents, with per-agent skip reasons (already installed, unsupported hooks/transport, no source). - Add "Delete" action with a confirmation dialog that bulk-removes selected extensions and warns about full CLI bundle uninstall. - Introduce `sync-pairs` helper that pairs selected extension groups with target agents, plus unit tests. - Wire both dialogs into the extensions page selection toolbar. - Add i18n strings for sync and bulkDelete sections in en, zh, and zh-TW.
Contributor
Author
- Renamed to "Install to agents". The target scope follows the active scope and can be changed in the dialog; the detail panel's single install gets the same picker. All-scopes mode requires a pick. - No agents are pre-selected. - "Overwrite existing copies" re-installs agents that already have the item, from the most recently modified copy; the agent holding that copy is left alone. Without it, any same-named copy in the target scope counts as installed. - One gate (`installBlockReason`) and one plan builder (`buildInstallPlan`) decide what each agent can take, replacing the predicates copied from the detail panel. The detail panel's single install, including the Hermes category path, runs through the same plan and the same store action (`installPairs`). - Plugins, unsupported hooks/MCP/scopes/transports and existing copies are skipped instead of attempted. A CLI bundle whose items are also selected on their own leaves those items to their own rows instead of installing them twice. - Never copies a file onto itself (agents sharing one skill folder; a project-scope CLI child whose preferred source is the target's own copy). - Each copy shows up in the table as it lands, with one rescan at the end instead of one per install. Failures and skips are reported after the run. - Bulk delete is removed: the per-extension delete shows every copy's path and lets the user pick, which a bulk dialog can't match. - package-lock.json restored to main. Closes RealZST#153 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ith skips - While installing, Cancel becomes Stop: the install in flight finishes, nothing after it is attempted, the table is rescanned once, and the summary reports how many were not run. - A CLI bundle covered by its separately selected parts is listed at the top of the skipped list (not counted), or on its own when nothing else was skipped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Owner
Merged
Contributor
Author
|
good stuff thanks! |
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.






Closes #153.
The Extensions page multi-select only enabled/disabled. This adds the two missing bulk actions:
install_to_agentprimitive with Global scope; backend Validation errors land as failed rows.No backend, wire-schema, or kit changes.
Verification
npx tsc --noEmitclean;npm test36 files / 320 pass (8 newsync-pairstests);biome checkclean; 2/2 internal reviewers approve.