mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
faf48489f3
## Summary - Add best-effort auto-upgrade for user-configured Git marketplaces recorded in `config.toml`. - Track the last activated Git revision with `last_revision` so unchanged marketplace sources skip clone work. - Trigger the upgrade from plugin startup and `plugin/list`, while preserving existing fail-open plugin behavior with warning logs rather than new user-visible errors. ## Details - Remote configured marketplaces use `git ls-remote` to compare the source/ref against the recorded revision. - Upgrades clone into a staging directory, validate that `.agents/plugins/marketplace.json` exists and that the manifest name matches the configured marketplace key, then atomically activate the new root. - Local `.agents/plugins/marketplace.json` marketplaces remain live filesystem state and are not auto-pulled. - Existing non-curated plugin cache refresh is kicked after successful marketplace root upgrades. ## Validation - `just write-config-schema` - `cargo test -p codex-core marketplace_upgrade` - `cargo check -p codex-cli -p codex-app-server` - `just fix -p codex-core` Did not run the complete `cargo test` suite because the repo instructions require asking before a full core workspace run.
63 lines
2.6 KiB
Rust
63 lines
2.6 KiB
Rust
use codex_config::types::McpServerConfig;
|
|
|
|
mod discoverable;
|
|
mod injection;
|
|
mod installed_marketplaces;
|
|
mod manager;
|
|
mod marketplace_add;
|
|
mod mentions;
|
|
mod render;
|
|
mod startup_sync;
|
|
#[cfg(test)]
|
|
pub(crate) mod test_support;
|
|
|
|
pub use codex_core_plugins::marketplace_upgrade::ConfiguredMarketplaceUpgradeError as PluginMarketplaceUpgradeError;
|
|
pub use codex_core_plugins::marketplace_upgrade::ConfiguredMarketplaceUpgradeOutcome as PluginMarketplaceUpgradeOutcome;
|
|
pub use codex_plugin::AppConnectorId;
|
|
pub use codex_plugin::EffectiveSkillRoots;
|
|
pub use codex_plugin::PluginCapabilitySummary;
|
|
pub use codex_plugin::PluginId;
|
|
pub use codex_plugin::PluginIdError;
|
|
pub use codex_plugin::PluginTelemetryMetadata;
|
|
pub use codex_plugin::validate_plugin_segment;
|
|
|
|
pub type LoadedPlugin = codex_plugin::LoadedPlugin<McpServerConfig>;
|
|
pub type PluginLoadOutcome = codex_plugin::PluginLoadOutcome<McpServerConfig>;
|
|
|
|
pub(crate) use codex_core_plugins::marketplace::find_marketplace_manifest_path;
|
|
pub(crate) use discoverable::list_tool_suggest_discoverable_plugins;
|
|
pub(crate) use injection::build_plugin_injections;
|
|
pub use installed_marketplaces::INSTALLED_MARKETPLACES_DIR;
|
|
pub use installed_marketplaces::marketplace_install_root;
|
|
pub use manager::ConfiguredMarketplace;
|
|
pub use manager::ConfiguredMarketplaceListOutcome;
|
|
pub use manager::ConfiguredMarketplacePlugin;
|
|
pub use manager::OPENAI_CURATED_MARKETPLACE_NAME;
|
|
pub use manager::PluginDetail;
|
|
pub use manager::PluginInstallError;
|
|
pub use manager::PluginInstallOutcome;
|
|
pub use manager::PluginInstallRequest;
|
|
pub use manager::PluginReadOutcome;
|
|
pub use manager::PluginReadRequest;
|
|
pub use manager::PluginRemoteSyncError;
|
|
pub use manager::PluginUninstallError;
|
|
pub use manager::PluginsManager;
|
|
pub use manager::RemotePluginSyncResult;
|
|
pub(crate) use manager::configured_plugins_from_stack;
|
|
pub use marketplace_add::MarketplaceAddError;
|
|
pub use marketplace_add::MarketplaceAddOutcome;
|
|
pub use marketplace_add::MarketplaceAddRequest;
|
|
pub use marketplace_add::add_marketplace;
|
|
pub(crate) use marketplace_add::parse_marketplace_source;
|
|
pub(crate) use render::render_explicit_plugin_instructions;
|
|
pub(crate) use render::render_plugins_section;
|
|
pub(crate) use startup_sync::curated_plugins_repo_path;
|
|
pub(crate) use startup_sync::read_curated_plugins_sha;
|
|
pub(crate) use startup_sync::sync_openai_plugins_repo;
|
|
|
|
pub(crate) use mentions::build_connector_slug_counts;
|
|
pub(crate) use mentions::build_skill_name_counts;
|
|
pub(crate) use mentions::collect_explicit_app_ids;
|
|
pub(crate) use mentions::collect_explicit_plugin_mentions;
|
|
pub(crate) use mentions::collect_tool_mentions_from_messages;
|