Fetch remote installed plugins across all scopes (#37210)

## What changed

- Fetch the paginated installed-plugin snapshot without a `scope` query instead of issuing separate requests for global, user, and workspace plugins.
- Use the combined snapshot for installed-plugin caching and bundle synchronization while continuing to reconcile each scope's marketplace independently.

## Testing

- Cover pagination across mixed scopes, request query parameters, marketplace reconciliation, stale cache cleanup, and discoverable-plugin filtering.

GitOrigin-RevId: 7428a9db81d7ec04e65cc4b236b652278b200956
This commit is contained in:
Matthew Zeng authored and copyberry committed 2026-08-06 03:53:05 +00:00
1 parent 0a0ebb8535
commit 1ae82ce6a5
8 files changed
+562 -529

No files matched your search

@@ -355,7 +355,6 @@ async fn mount_empty_remote_installed_plugins(server: &wiremock::MockServer) ->
async fn mount_remote_calendar_installed_plugins(server: &wiremock::MockServer) {
Mock::given(method("GET"))
.and(path("/ps/plugins/installed"))
.and(query_param("scope", "GLOBAL"))
.respond_with(remote_installed_plugins_response(vec![json!({
"id": REMOTE_CALENDAR_PLUGIN_ID,
"name": "calendar",
@@ -373,15 +372,6 @@ async fn mount_remote_calendar_installed_plugins(server: &wiremock::MockServer)
.with_priority(1)
.mount(server)
.await;
for scope in ["WORKSPACE", "USER"] {
Mock::given(method("GET"))
.and(path("/ps/plugins/installed"))
.and(query_param("scope", scope))
.respond_with(remote_installed_plugins_response(Vec::new()))
.with_priority(1)
.mount(server)
.await;
}
}
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]