diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index aeaff44114..6a4c723bd9 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -17750,7 +17750,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json index fbc7f8b5d4..26154496d2 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json @@ -13711,7 +13711,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/json/v2/PluginInstalledResponse.json b/codex-rs/app-server-protocol/schema/json/v2/PluginInstalledResponse.json index e258544028..322735c1b3 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/PluginInstalledResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/PluginInstalledResponse.json @@ -118,7 +118,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json b/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json index 38207ac285..ce0bb10cdb 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/PluginListResponse.json @@ -118,7 +118,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/json/v2/PluginReadResponse.json b/codex-rs/app-server-protocol/schema/json/v2/PluginReadResponse.json index 2123c0b8eb..62720874cc 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/PluginReadResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/PluginReadResponse.json @@ -325,7 +325,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/json/v2/PluginShareListResponse.json b/codex-rs/app-server-protocol/schema/json/v2/PluginShareListResponse.json index bcae24d57c..448a856439 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/PluginShareListResponse.json +++ b/codex-rs/app-server-protocol/schema/json/v2/PluginShareListResponse.json @@ -92,7 +92,7 @@ ] }, "defaultPrompt": { - "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + "description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", "items": { "type": "string" }, diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst index 2317f2c209..a1d1ca3642 100644 Binary files a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst and b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst differ diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst index c35c1e5ff0..47a33c0d68 100644 Binary files a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst and b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst differ diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/PluginInterface.ts b/codex-rs/app-server-protocol/schema/typescript/v2/PluginInterface.ts index 1e57d4974d..e32dcf10be 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/PluginInterface.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/PluginInterface.ts @@ -6,7 +6,7 @@ import type { AbsolutePathBuf } from "../AbsolutePathBuf"; export type PluginInterface = { displayName: string | null, shortDescription: string | null, longDescription: string | null, developerName: string | null, category: string | null, capabilities: Array, websiteUrl: string | null, privacyPolicyUrl: string | null, termsOfServiceUrl: string | null, /** * Starter prompts for the plugin. Capped at 3 entries with a maximum of - * 128 characters per entry. + * 512 characters per entry. */ defaultPrompt: Array | null, brandColor: string | null, /** diff --git a/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs b/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs index ad368abead..05c1665af6 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs @@ -882,7 +882,7 @@ pub struct PluginInterface { pub privacy_policy_url: Option, pub terms_of_service_url: Option, /// Starter prompts for the plugin. Capped at 3 entries with a maximum of - /// 128 characters per entry. + /// 512 characters per entry. pub default_prompt: Option>, pub brand_color: Option, /// Local composer icon path, resolved from the installed plugin package. diff --git a/codex-rs/core-plugins/src/discoverable_tests.rs b/codex-rs/core-plugins/src/discoverable_tests.rs index 1821f6d823..5642ee211e 100644 --- a/codex-rs/core-plugins/src/discoverable_tests.rs +++ b/codex-rs/core-plugins/src/discoverable_tests.rs @@ -647,7 +647,7 @@ async fn discovery_warns_once_per_invalid_manifest() { write_openai_curated_marketplace(&curated_root, &["slack", "gmail", "openai-developers"]); install_marketplace_plugin(codex_home.path(), curated_root.as_path(), "slack").await; - let too_long_prompt = "x".repeat(129); + let too_long_prompt = "x".repeat(513); for plugin_name in ["gmail", "openai-developers"] { write_file( &curated_root.join(format!("plugins/{plugin_name}/.codex-plugin/plugin.json")), diff --git a/codex-rs/core-plugins/src/manifest.rs b/codex-rs/core-plugins/src/manifest.rs index a532660dde..854768f8ba 100644 --- a/codex-rs/core-plugins/src/manifest.rs +++ b/codex-rs/core-plugins/src/manifest.rs @@ -14,7 +14,7 @@ use std::path::PathBuf; mod manifest_cache; pub(crate) use manifest_cache::ManifestCache; const MAX_DEFAULT_PROMPT_COUNT: usize = 3; -const MAX_DEFAULT_PROMPT_LEN: usize = 128; +const MAX_DEFAULT_PROMPT_LEN: usize = 512; #[path = "agent_plugin_manifest.rs"] mod agent_plugin_manifest; @@ -739,6 +739,7 @@ mod tests { fn plugin_interface_normalizes_default_prompt_array() { let tmp = tempdir().expect("tempdir"); let plugin_root = tmp.path().join("demo-plugin"); + let at_limit = "é".repeat(MAX_DEFAULT_PROMPT_LEN); let too_long = "x".repeat(MAX_DEFAULT_PROMPT_LEN + 1); write_manifest( &plugin_root, @@ -747,7 +748,7 @@ mod tests { r#"{{ "displayName": "Demo Plugin", "defaultPrompt": [ - " Summarize my inbox ", + " {at_limit} ", 123, "{too_long}", " ", @@ -765,7 +766,7 @@ mod tests { assert_eq!( interface.default_prompt, Some(vec![ - "Summarize my inbox".to_string(), + at_limit, "Draft the reply".to_string(), "Find my next action".to_string(), ]) diff --git a/sdk/python/src/openai_codex/generated/v2_all.py b/sdk/python/src/openai_codex/generated/v2_all.py index 914cd5f063..5a839ab215 100644 --- a/sdk/python/src/openai_codex/generated/v2_all.py +++ b/sdk/python/src/openai_codex/generated/v2_all.py @@ -3376,7 +3376,7 @@ class PluginInterface(BaseModel): list[str] | None, Field( alias="defaultPrompt", - description="Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.", + description="Starter prompts for the plugin. Capped at 3 entries with a maximum of 512 characters per entry.", ), ] = None developer_name: Annotated[str | None, Field(alias="developerName")] = None