Expose plugin manifest keywords in app server (#21271)

## Summary
- Add plugin manifest keywords to core plugin marketplace/detail models
- Expose keywords on app-server v2 PluginSummary and generated
schema/types
- Populate keywords in plugin/list and plugin/read responses for local
plugins

Depends on https://github.com/openai/openai/pull/891087

## Validation
- just fmt
- just write-app-server-schema
- cargo test -p codex-app-server-protocol
- cargo test -p codex-core-plugins
- cargo test -p codex-app-server
plugin_list_keeps_valid_marketplaces_when_another_marketplace_fails_to_load
- cargo test -p codex-app-server
plugin_read_returns_plugin_details_with_bundle_contents
This commit is contained in:
Abdulrahman Alfozan
2026-05-05 22:09:05 -04:00
committed by GitHub
Unverified
parent 136e442e95
commit 94db03d5af
20 changed files with 140 additions and 2 deletions
@@ -446,6 +446,8 @@ pub struct PluginSummary {
#[serde(default)]
pub availability: PluginAvailability,
pub interface: Option<PluginInterface>,
#[serde(default)]
pub keywords: Vec<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
@@ -3044,6 +3044,7 @@ fn plugin_share_list_response_serializes_share_items() {
auth_policy: PluginAuthPolicy::OnUse,
availability: PluginAvailability::Available,
interface: None,
keywords: Vec::new(),
},
share_url: "https://chatgpt.example/plugins/share/share-key-1".to_string(),
local_plugin_path: None,
@@ -3062,6 +3063,7 @@ fn plugin_share_list_response_serializes_share_items() {
"authPolicy": "ON_USE",
"availability": "AVAILABLE",
"interface": null,
"keywords": [],
},
"shareUrl": "https://chatgpt.example/plugins/share/share-key-1",
"localPluginPath": null,