[codex] expose remote plugin share URL (#27890)

## Summary

- expose the remote plugin detail endpoint's `share_url` as nullable
`PluginDetail.shareUrl`
- preserve existing `PluginSummary.shareContext` behavior for local and
workspace sharing flows
- regenerate the app-server TypeScript and JSON schema fixtures

## Why

The remote plugin detail response already includes a canonical
`share_url`, but that value was not surfaced by `plugin/read` for global
plugins. Global plugins intentionally have no `shareContext`, so using
that model for the URL would change the semantics consumed by the
existing share modal.

## User impact

Codex clients can use `PluginDetail.shareUrl` for a remote plugin's
copy-link action, including when the plugin is disabled by an
administrator, without changing existing share-modal or ownership
behavior.

## Validation

- `cargo test -p codex-app-server
plugin_read_includes_share_url_for_admin_disabled_remote_plugin`
- `cargo test -p codex-app-server-protocol
typescript_schema_fixtures_match_generated`
- `cargo test -p codex-app-server-protocol
json_schema_fixtures_match_generated`
- `cargo fmt --all`
This commit is contained in:
Eric Ning authored and GitHub committed 2026-06-12 11:53:55 -07:00
1 parent 52a50aec70
commit 9600afb1a1
11 files changed
+86 -47

No files matched your search

@@ -1070,6 +1070,7 @@ impl PluginRequestProcessor {
interface: outcome.plugin.interface.map(local_plugin_interface_to_info),
keywords: outcome.plugin.keywords,
},
share_url: None,
description: outcome.plugin.description,
skills: plugin_skills_to_info(
&visible_skills,
@@ -2081,6 +2082,7 @@ fn remote_plugin_detail_to_info(
marketplace_name: detail.marketplace_name,
marketplace_path: None,
summary: remote_plugin_summary_to_info(detail.summary),
share_url: detail.share_url,
description: detail.description,
skills: detail
.skills