Read cached metadata for installed Git plugins#20825
Conversation
|
@codex review |
|
Note on the small This does not remove the behavior. The previous code computed the values inline when building installed: installed_plugins.contains(&plugin_key),
enabled: enabled_plugins.contains(&plugin_key),The PR hoists those exact same checks into local variables because the new cached-metadata path needs let installed = installed_plugins.contains(&plugin_key);
let enabled = enabled_plugins.contains(&plugin_key);
if installed && matches!(&plugin.source, MarketplacePluginSource::Git { .. }) {
// read active cached plugin root and use its plugin.json interface metadata
}Then the struct gets the same values: installed,
enabled,Concrete example: for
|
|
Codex Review: Didn't find any major issues. Another round soon, please! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
| PluginId::new(plugin.name.clone(), marketplace_name.clone()) | ||
| && let Some(plugin_root) = self.store.active_plugin_root(&plugin_id) | ||
| && let Some(manifest) = load_plugin_manifest(plugin_root.as_path()) | ||
| { |
There was a problem hiding this comment.
we display remote plugin detail iff plugin is:
- installed
- marketplace is git backed
- plugin root is valid
- plugin manifest exists
f62303e to
e4cac3f
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Chef's kiss. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
6fd0a0f to
b45d8bf
Compare
Summary
plugin/listinterface metadata for installed Git-sourced marketplace plugins from the active cached plugin bundle.plugin/read.Test Plan
cd codex-rs && just fmtcd codex-rs && cargo test -p codex-core-plugins list_marketplaces_installed_git_source_reads_metadata_from_cache_without_cloningcd codex-rs && cargo test -p codex-app-server plugin_list_returns_installed_git_source_interface_from_cachecd codex-rs && just fix -p codex-core-pluginscd codex-rs && just fix -p codex-app-servergit diff --checkServer-truth check: OpenAI monorepo app-server generated types already expose
PluginSummary.interface, and the webview consumes it for plugin cards. This PR keeps the protocol/schema unchanged and fills the existing field from the cached installed bundle for Git-backed cross-repo plugins.