mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
[codex] Expose unavailable app templates in plugin detail (#26317)
## Summary - Adds `unavailable_app_templates` to the app-server protocol and generated schemas/types. - Parses plugin-service `release.unavailable_app_templates` in the remote plugin client. - Maps remote unavailable templates into app-server `PluginDetail`. - Defaults local plugins to an empty unavailable app template list. ## Validation - `just write-app-server-schema` - `cargo +1.95.0 fmt --manifest-path codex-rs/Cargo.toml --all --check` - `cargo +1.95.0 test --manifest-path codex-rs/Cargo.toml -p codex-app-server-protocol schema_fixtures` - `cargo +1.95.0 check --manifest-path codex-rs/Cargo.toml -p codex-app-server-protocol -p codex-core-plugins -p codex-app-server` - `git diff --check` Note: default `cargo check` uses rustc 1.89 locally and failed because dependencies require newer Rust, so validation was rerun with installed Rust 1.95.
This commit is contained in:
@@ -30,6 +30,8 @@ use codex_app_server_protocol::AdditionalContextKind;
|
||||
use codex_app_server_protocol::AppInfo;
|
||||
use codex_app_server_protocol::AppListUpdatedNotification;
|
||||
use codex_app_server_protocol::AppSummary;
|
||||
use codex_app_server_protocol::AppTemplateSummary;
|
||||
use codex_app_server_protocol::AppTemplateUnavailableReason;
|
||||
use codex_app_server_protocol::AppsListParams;
|
||||
use codex_app_server_protocol::AppsListResponse;
|
||||
use codex_app_server_protocol::AskForApproval;
|
||||
|
||||
@@ -8,6 +8,7 @@ use codex_app_server_protocol::PluginShareTargetRole;
|
||||
use codex_config::types::McpServerConfig;
|
||||
use codex_core_plugins::OPENAI_CURATED_MARKETPLACE_NAME;
|
||||
use codex_core_plugins::remote::REMOTE_GLOBAL_MARKETPLACE_NAME;
|
||||
use codex_core_plugins::remote::RemoteAppTemplateUnavailableReason;
|
||||
use codex_core_plugins::remote::RemotePluginScope;
|
||||
use codex_core_plugins::remote::is_valid_remote_plugin_id;
|
||||
use codex_core_plugins::remote::validate_remote_plugin_id;
|
||||
@@ -1062,6 +1063,7 @@ impl PluginRequestProcessor {
|
||||
})
|
||||
.collect(),
|
||||
apps: app_summaries,
|
||||
app_templates: Vec::new(),
|
||||
mcp_servers: outcome.plugin.mcp_server_names,
|
||||
}
|
||||
}
|
||||
@@ -2007,6 +2009,28 @@ fn remote_plugin_detail_to_info(
|
||||
detail: RemoteCatalogPluginDetail,
|
||||
apps: Vec<AppSummary>,
|
||||
) -> PluginDetail {
|
||||
let app_templates = detail
|
||||
.app_templates
|
||||
.into_iter()
|
||||
.map(|template| AppTemplateSummary {
|
||||
template_id: template.template_id,
|
||||
name: template.name,
|
||||
description: template.description,
|
||||
canonical_connector_id: template.canonical_connector_id,
|
||||
logo_url: template.logo_url,
|
||||
logo_url_dark: template.logo_url_dark,
|
||||
materialized_app_ids: template.materialized_app_ids,
|
||||
reason: template.reason.map(|reason| match reason {
|
||||
RemoteAppTemplateUnavailableReason::NotConfiguredForWorkspace => {
|
||||
AppTemplateUnavailableReason::NotConfiguredForWorkspace
|
||||
}
|
||||
RemoteAppTemplateUnavailableReason::NoActiveWorkspace => {
|
||||
AppTemplateUnavailableReason::NoActiveWorkspace
|
||||
}
|
||||
}),
|
||||
})
|
||||
.collect();
|
||||
|
||||
PluginDetail {
|
||||
marketplace_name: detail.marketplace_name,
|
||||
marketplace_path: None,
|
||||
@@ -2026,6 +2050,7 @@ fn remote_plugin_detail_to_info(
|
||||
.collect(),
|
||||
hooks: Vec::new(),
|
||||
apps,
|
||||
app_templates,
|
||||
mcp_servers: detail.mcp_servers,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user