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
+10
View File
@@ -223,6 +223,7 @@ pub struct PluginDetail {
pub source: MarketplacePluginSource,
pub policy: MarketplacePluginPolicy,
pub interface: Option<PluginManifestInterface>,
pub keywords: Vec<String>,
pub installed: bool,
pub enabled: bool,
pub skills: Vec<SkillMetadata>,
@@ -252,6 +253,7 @@ pub struct ConfiguredMarketplacePlugin {
pub source: MarketplacePluginSource,
pub policy: MarketplacePluginPolicy,
pub interface: Option<PluginManifestInterface>,
pub keywords: Vec<String>,
pub installed: bool,
pub enabled: bool,
}
@@ -1196,6 +1198,7 @@ impl PluginsManager {
source: plugin.source,
policy: plugin.policy,
interface: plugin.interface,
keywords: plugin.keywords,
})
})
.collect::<Vec<_>>();
@@ -1245,6 +1248,11 @@ impl PluginsManager {
source: plugin.source,
policy: plugin.policy,
interface: plugin.interface,
keywords: plugin
.manifest
.as_ref()
.map(|manifest| manifest.keywords.clone())
.unwrap_or_default(),
installed: installed_plugins.contains(&plugin_key),
enabled: enabled_plugins.contains(&plugin_key),
},
@@ -1287,6 +1295,7 @@ impl PluginsManager {
source: plugin.source,
policy: plugin.policy,
interface: plugin.interface,
keywords: plugin.keywords,
installed: plugin.installed,
enabled: plugin.enabled,
skills: Vec::new(),
@@ -1363,6 +1372,7 @@ impl PluginsManager {
source: plugin.source,
policy: plugin.policy,
interface,
keywords: manifest.keywords,
installed: plugin.installed,
enabled: plugin.enabled,
skills: resolved_skills.skills,