mirror of
https://github.com/openai/codex.git
synced 2026-10-25 15:56:38 +00:00
## Why Selected plugin MCP servers may be skipped after the optional startup grace period. When a user explicitly mentions a plugin or MCP server, the turn should continue waiting so the requested tools are available to the model. ## What changed - Track explicitly mentioned plugin IDs and MCP servers across later samples, steered input, and same-turn restarts. - Require matching selected-plugin MCP servers to finish startup before capturing the tool catalog, while leaving unmentioned servers optional. - Match `plugin://` identities independently of display names and ignore targeting query parameters such as `app` and `browserFamily`. ## Testing Added coverage for linked and structured plugin mentions, direct and batched capability discovery, delayed environment attachment, steering, and same-turn restarts. GitOrigin-RevId: c509ef8df45df1a7edb0da6afdb2682dc53a4de8
47 lines
1.4 KiB
Rust
47 lines
1.4 KiB
Rust
mod discoverable;
|
|
mod injection;
|
|
mod mentions;
|
|
pub(crate) mod metrics;
|
|
mod render;
|
|
#[cfg(test)]
|
|
#[path = "skill_snapshot_tests.rs"]
|
|
mod skill_snapshot_tests;
|
|
#[cfg(test)]
|
|
pub(crate) mod test_support;
|
|
|
|
use crate::config::Config;
|
|
use codex_core_plugins::PluginsManager;
|
|
use codex_login::AuthManager;
|
|
use codex_skills_extension::HostSkillsService;
|
|
use std::sync::Arc;
|
|
|
|
pub(crate) use codex_plugin::PluginCapabilitySummary;
|
|
|
|
pub(crate) use discoverable::list_tool_suggest_discoverable_plugins;
|
|
pub(crate) use injection::build_plugin_injections;
|
|
pub(crate) use render::render_explicit_plugin_instructions;
|
|
|
|
pub(crate) use mentions::build_connector_slug_counts;
|
|
pub(crate) use mentions::collect_explicit_app_ids;
|
|
pub(crate) use mentions::collect_explicit_plugin_ids;
|
|
pub(crate) use mentions::collect_explicit_plugin_mentions;
|
|
pub(crate) use mentions::collect_tool_mentions_from_messages;
|
|
|
|
/// Constructs a standalone plugin manager with extension-owned plugin skill loading.
|
|
///
|
|
/// Callers that already own a host skills service should inject that existing service instead.
|
|
pub fn plugins_manager_for_config(
|
|
config: &Config,
|
|
auth_manager: Arc<AuthManager>,
|
|
) -> PluginsManager {
|
|
let skill_root_loader = Arc::new(HostSkillsService::new(
|
|
config.codex_home.clone(),
|
|
/*bundled_skills_enabled*/ false,
|
|
));
|
|
PluginsManager::new(
|
|
config.codex_home.to_path_buf(),
|
|
auth_manager,
|
|
skill_root_loader,
|
|
)
|
|
}
|