Allow runtime enablement for remote plugins (#24707)

experimentalFeature/enablement/set now accepts remote_plugin as a
supported runtime feature key
This commit is contained in:
xl-openai authored and GitHub committed 2026-05-26 22:22:34 -07:00
1 parent 8ed38fe38e
commit 1de8c43467
3 files changed
+12 -2

No files matched your search

+1 -1
View File
@@ -192,7 +192,7 @@ Example with notification opt-out:
- `modelProvider/capabilities/read` — read provider-level capabilities for the currently configured model provider. - `modelProvider/capabilities/read` — read provider-level capabilities for the currently configured model provider.
- `experimentalFeature/list` — list feature flags with stage metadata (`beta`, `underDevelopment`, `stable`, etc.), enabled/default-enabled state, and cursor pagination. Pass `threadId` when showing feature state for an existing loaded thread so `enabled` is computed from that thread's refreshed config, including project-local config for the thread's cwd; if omitted, the server uses its default config resolution context. For non-beta flags, `displayName`/`description`/`announcement` are `null`. - `experimentalFeature/list` — list feature flags with stage metadata (`beta`, `underDevelopment`, `stable`, etc.), enabled/default-enabled state, and cursor pagination. Pass `threadId` when showing feature state for an existing loaded thread so `enabled` is computed from that thread's refreshed config, including project-local config for the thread's cwd; if omitted, the server uses its default config resolution context. For non-beta flags, `displayName`/`description`/`announcement` are `null`.
- `permissionProfile/list` — beta; list available permission profile ids with optional display `description` text, using cursor pagination. Pass `cwd` when the caller needs project-local `[permissions.<id>]` entries to be included in the current catalog view. - `permissionProfile/list` — beta; list available permission profile ids with optional display `description` text, using cursor pagination. Pass `cwd` when the caller needs project-local `[permissions.<id>]` entries to be included in the current catalog view.
- `experimentalFeature/enablement/set` — patch the in-memory process-wide runtime feature enablement for the currently supported feature keys (`apps`, `memories`, `plugins`, `tool_suggest`, `tool_call_mcp_elicitation`). For each feature, precedence is: cloud requirements > --enable <feature_name> > config.toml > experimentalFeature/enablement/set (new) > code default. - `experimentalFeature/enablement/set` — patch the in-memory process-wide runtime feature enablement for currently supported feature keys. For each feature, precedence is: cloud requirements > --enable <feature_name> > config.toml > experimentalFeature/enablement/set (new) > code default.
- `environment/add` — experimental; add or replace a named remote environment by `environmentId` and `execServerUrl` for later selection by `thread/start` or `turn/start`; returns `{}` and does not change the default environment. - `environment/add` — experimental; add or replace a named remote environment by `environmentId` and `execServerUrl` for later selection by `thread/start` or `turn/start`; returns `{}` and does not change the default environment.
- `collaborationMode/list` — list available collaboration mode presets (experimental, no pagination). Built-in presets do not select a model; the Plan preset selects medium reasoning effort. This response omits built-in developer instructions; clients should either pass `settings.developer_instructions: null` when setting a mode to use Codex's built-in instructions, or provide their own instructions explicitly. - `collaborationMode/list` — list available collaboration mode presets (experimental, no pagination). Built-in presets do not select a model; the Plan preset selects medium reasoning effort. This response omits built-in developer instructions; clients should either pass `settings.developer_instructions: null` when setting a mode to use Codex's built-in instructions, or provide their own instructions explicitly.
- `skills/list` — list skills for one or more `cwd` values (optional `forceReload`). - `skills/list` — list skills for one or more `cwd` values (optional `forceReload`).
@@ -54,6 +54,7 @@ const SUPPORTED_EXPERIMENTAL_FEATURE_ENABLEMENT: &[&str] = &[
"mentions_v2", "mentions_v2",
"plugins", "plugins",
"remote_control", "remote_control",
"remote_plugin",
"tool_suggest", "tool_suggest",
"tool_call_mcp_elicitation", "tool_call_mcp_elicitation",
]; ];
@@ -340,6 +340,7 @@ async fn experimental_feature_enablement_set_only_updates_named_features() -> Re
BTreeMap::from([ BTreeMap::from([
("memories".to_string(), true), ("memories".to_string(), true),
("plugins".to_string(), true), ("plugins".to_string(), true),
("remote_plugin".to_string(), true),
("tool_suggest".to_string(), true), ("tool_suggest".to_string(), true),
("tool_call_mcp_elicitation".to_string(), false), ("tool_call_mcp_elicitation".to_string(), false),
]), ]),
@@ -352,6 +353,7 @@ async fn experimental_feature_enablement_set_only_updates_named_features() -> Re
enablement: BTreeMap::from([ enablement: BTreeMap::from([
("memories".to_string(), true), ("memories".to_string(), true),
("plugins".to_string(), true), ("plugins".to_string(), true),
("remote_plugin".to_string(), true),
("tool_suggest".to_string(), true), ("tool_suggest".to_string(), true),
("tool_call_mcp_elicitation".to_string(), false), ("tool_call_mcp_elicitation".to_string(), false),
]), ]),
@@ -381,6 +383,13 @@ async fn experimental_feature_enablement_set_only_updates_named_features() -> Re
.and_then(|features| features.get("plugins")), .and_then(|features| features.get("plugins")),
Some(&json!(true)) Some(&json!(true))
); );
assert_eq!(
config
.additional
.get("features")
.and_then(|features| features.get("remote_plugin")),
Some(&json!(true))
);
assert_eq!( assert_eq!(
config config
.additional .additional
@@ -474,7 +483,7 @@ async fn experimental_feature_enablement_set_rejects_non_allowlisted_feature() -
); );
assert!( assert!(
error.message.contains( error.message.contains(
"apps, memories, mentions_v2, plugins, remote_control, tool_suggest, tool_call_mcp_elicitation" "apps, memories, mentions_v2, plugins, remote_control, remote_plugin, tool_suggest, tool_call_mcp_elicitation"
), ),
"{}", "{}",
error.message error.message