Prefer remote Sites over the bundled plugin (#42100)

## Why

When the remote Sites plugin is installed and its local bundle is available, exposing the bundled copy as well creates duplicate catalog entries and can load the wrong skills.

## What changed

- Persist an account- and backend-scoped exclusion for `sites@openai-bundled` once the remote replacement is installed and loadable.
- Apply the exclusion to plugin catalogs, search, direct reads and installs, runtime loading, hooks, and skill caches while preserving the remote plugin's server-owned enabled state.
- Restore the bundled fallback when the remote plugin is absent or its local files are unavailable, and throttle repeated availability checks for 60 seconds.

## Testing

- Added manager tests for persistence across restarts, account/backend isolation, fallback restoration, concurrent checks, and refresh throttling.
- Added app-server and agent-turn tests confirming that catalog, search, and skill loading prefer remote Sites.

GitOrigin-RevId: bc1154f79d3107910fee9fa27389a0ddb48ce6cf
This commit is contained in:
Jiwon Kim
2026-09-01 16:58:54 +00:00
committed by copyberry
parent a17ee5705c
commit b6ab99ed87
16 changed files with 864 additions and 27 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ pub async fn run_plugin_add(
)?;
let outcome = manager
.install_plugin(
&plugins_input.config_layer_stack,
&plugins_input,
PluginInstallRequest {
plugin_name,
marketplace_path: marketplace.path,