Supports both Copilot marketplaces as well as Claude marketplaces (when configured).
Still todo:
- Currently enumerating plugins hit public GH APIs. But this would fail for private repos. In this case we should generalize the PluginInstallService to allow cloning the repo for the purpose of enumeration, not just install.
- Updating plugins still needs to be hooked up.
- Marketplace-installed plugins should get their own Discovery implementation rather than configuring the setting.
- We should normalize the type of plugin a bit so it flows from the marketplace type rather than getting re-discovered from disk.
Includes public API, user setting, status bar icon and a new service to support metered network connections.
Updates code in various areas performing automated actions using network to delay/pause network operations while network connection is being metered.
* Initial plan
* Add garbage collection for old content-addressed askpass directories
- Implement updateDirectoryMtime to update folder mtime when used
- Add garbageCollectOldDirectories to remove folders older than 7 days
- Update ensureAskpassScripts to call GC on every activation
- Add comprehensive test coverage for GC functionality
Co-authored-by: joaomoreno <22350+joaomoreno@users.noreply.github.com>
* Remove GC from fast path to keep it fast
Only run garbage collection when creating new directories, not when reusing existing ones. Old folders only accumulate when creating new content-addressed directories.
Co-authored-by: joaomoreno <22350+joaomoreno@users.noreply.github.com>
* Hoist askpassBaseDir variable to avoid duplication
Declare askpassBaseDir once at the top of the function and reuse it when constructing askpassDir and when calling garbageCollectOldDirectories.
Co-authored-by: joaomoreno <22350+joaomoreno@users.noreply.github.com>
* Fix test failures and address bot review comments
- Export ensureAskpassScripts for testing to avoid dependency on isWindowsUserOrSystemSetup check
- Remove redundant success log after directory removal
- Update tests to call ensureAskpassScripts directly instead of getAskpassPaths
- Remove Windows-only restrictions from tests to make them cross-platform
- Remove setTimeout workarounds - tests now properly await async operations
Co-authored-by: joaomoreno <22350+joaomoreno@users.noreply.github.com>
* formatting
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joaomoreno <22350+joaomoreno@users.noreply.github.com>
Co-authored-by: João Moreno <joaomoreno@users.noreply.github.com>
* Add setting, and initial implementation
* Tweak the implementation
* Factor in git ignored files
* No need to use split chunks with check-ignore
* Switch to a faster approach to copy the files
* Update extensions/git/src/repository.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>