From 3d4d253f8f4a812c595cd59e2c114c2c3696c293 Mon Sep 17 00:00:00 2001 From: felixxia-oai Date: Tue, 11 Aug 2026 10:37:42 +0000 Subject: [PATCH] Stop re-exporting skill APIs from `codex-core` (#37984) ## What changed - Import skill metadata and mention helpers directly from `codex-skills`. - Import host skill loading types directly from `codex-skills-extension`. - Make the remaining `codex-core` skills module private and remove its skill API re-exports, including the `HostSkillsService` re-export from `codex-core-api`. GitOrigin-RevId: 26bf8fffd980df9c4d0c308d7e983ceab9a5df82 --- .../src/request_processors/catalog_processor.rs | 6 +++--- .../app-server/src/request_processors/plugins.rs | 2 +- codex-rs/app-server/src/skills_watcher.rs | 4 ++-- codex-rs/core-api/src/lib.rs | 1 - codex-rs/core/src/agent/role_tests.rs | 2 +- codex-rs/core/src/lib.rs | 7 +------ codex-rs/core/src/mcp_skill_dependencies.rs | 2 +- codex-rs/core/src/plugins/mentions.rs | 2 -- codex-rs/core/src/plugins/mod.rs | 1 - codex-rs/core/src/session/mod.rs | 2 +- codex-rs/core/src/session/session.rs | 2 +- codex-rs/core/src/session/turn.rs | 4 ++-- codex-rs/core/src/skills.rs | 13 +++---------- codex-rs/core/src/state/service.rs | 2 +- codex-rs/core/src/thread_manager.rs | 2 +- 15 files changed, 18 insertions(+), 34 deletions(-) diff --git a/codex-rs/app-server/src/request_processors/catalog_processor.rs b/codex-rs/app-server/src/request_processors/catalog_processor.rs index f6cdd775fe..d56df03f5e 100644 --- a/codex-rs/app-server/src/request_processors/catalog_processor.rs +++ b/codex-rs/app-server/src/request_processors/catalog_processor.rs @@ -16,7 +16,7 @@ pub(crate) struct CatalogRequestProcessor { const SKILLS_LIST_CWD_CONCURRENCY: usize = 5; fn skills_to_info( - skills: &[codex_core::skills::SkillMetadata], + skills: &[codex_skills::SkillMetadata], disabled_paths: &HashSet, ) -> Vec { skills @@ -89,7 +89,7 @@ fn hooks_to_info(hooks: &[codex_hooks::HookListEntry]) -> Vec { } fn errors_to_info( - errors: &[codex_core::skills::SkillError], + errors: &[codex_skills::SkillError], ) -> Vec { errors .iter() @@ -555,7 +555,7 @@ impl CatalogRequestProcessor { ); } }; - let skills_input = codex_core::skills::HostSkillsLoadInput::new( + let skills_input = codex_skills_extension::HostSkillsLoadInput::new( cwd_abs.clone(), effective_skill_roots, config_layer_stack, diff --git a/codex-rs/app-server/src/request_processors/plugins.rs b/codex-rs/app-server/src/request_processors/plugins.rs index ed9a224bf6..6fc6e0044c 100644 --- a/codex-rs/app-server/src/request_processors/plugins.rs +++ b/codex-rs/app-server/src/request_processors/plugins.rs @@ -59,7 +59,7 @@ pub(crate) struct PluginRequestProcessor { } fn plugin_skills_to_info( - skills: &[codex_core::skills::SkillMetadata], + skills: &[codex_skills::SkillMetadata], disabled_skill_paths: &HashSet, ) -> Vec { skills diff --git a/codex-rs/app-server/src/skills_watcher.rs b/codex-rs/app-server/src/skills_watcher.rs index 026d0b41ce..da3d1f7076 100644 --- a/codex-rs/app-server/src/skills_watcher.rs +++ b/codex-rs/app-server/src/skills_watcher.rs @@ -7,8 +7,6 @@ use codex_app_server_protocol::ServerNotification; use codex_app_server_protocol::SkillsChangedNotification; use codex_core::ThreadManager; use codex_core::config::Config; -use codex_core::skills::HostSkillsLoadInput; -use codex_core::skills::HostSkillsService; use codex_file_watcher::FileWatcher; use codex_file_watcher::FileWatcherSubscriber; use codex_file_watcher::Receiver; @@ -17,6 +15,8 @@ use codex_file_watcher::WatchPath; use codex_file_watcher::WatchRegistration; use codex_protocol::protocol::TurnEnvironmentSelection; use codex_skills::system_cache_root_dir; +use codex_skills_extension::HostSkillsLoadInput; +use codex_skills_extension::HostSkillsService; use codex_utils_absolute_path::AbsolutePathBuf; use tokio_util::sync::CancellationToken; use tokio_util::sync::DropGuard; diff --git a/codex-rs/core-api/src/lib.rs b/codex-rs/core-api/src/lib.rs index 2bcb53d4ae..bc81e9a8a6 100644 --- a/codex-rs/core-api/src/lib.rs +++ b/codex-rs/core-api/src/lib.rs @@ -50,7 +50,6 @@ pub use codex_core::config::find_codex_home; pub use codex_core::init_state_db; pub use codex_core::local_agent_graph_store_from_state_db; pub use codex_core::resolve_installation_id; -pub use codex_core::skills::HostSkillsService; pub use codex_core::thread_store_from_config; pub use codex_exec_server::EnvironmentManager; pub use codex_exec_server::EnvironmentRegistryConnectRequest; diff --git a/codex-rs/core/src/agent/role_tests.rs b/codex-rs/core/src/agent/role_tests.rs index 3cc1b2b31d..26d82fffe4 100644 --- a/codex-rs/core/src/agent/role_tests.rs +++ b/codex-rs/core/src/agent/role_tests.rs @@ -1,11 +1,11 @@ use super::*; -use crate::HostSkillsService; use crate::config::ConfigBuilder; use crate::plugins::plugins_manager_for_config; use crate::skills_load_input_from_config; use codex_protocol::config_types::ServiceTier; use codex_protocol::models::BaseInstructionsProvenance; use codex_protocol::openai_models::ReasoningEffort; +use codex_skills_extension::HostSkillsService; use codex_utils_absolute_path::test_support::PathExt; use pretty_assertions::assert_eq; use std::fs; diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index adbde89877..db14427c50 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -81,7 +81,6 @@ pub(crate) mod prompt_debug; pub use prompt_debug::build_prompt_input; pub(crate) mod mentions { pub(crate) use crate::plugins::build_connector_slug_counts; - pub(crate) use crate::plugins::build_skill_name_counts; pub(crate) use crate::plugins::collect_explicit_app_ids; pub(crate) use crate::plugins::collect_explicit_plugin_mentions; pub(crate) use crate::plugins::collect_tool_mentions_from_messages; @@ -90,11 +89,7 @@ mod sandbox_tags; pub mod sandboxing; mod session_prefix; mod session_startup_prewarm; -pub mod skills; -pub(crate) use skills::HostSkillsService; -pub(crate) use skills::SkillMetadata; -pub(crate) use skills::build_skill_name_counts; -pub(crate) use skills::collect_explicit_skill_mentions; +mod skills; pub(crate) use skills::maybe_emit_implicit_skill_invocation; pub(crate) use skills::skills_load_input_from_config; mod stream_events_utils; diff --git a/codex-rs/core/src/mcp_skill_dependencies.rs b/codex-rs/core/src/mcp_skill_dependencies.rs index cef8c86076..51198f1570 100644 --- a/codex-rs/core/src/mcp_skill_dependencies.rs +++ b/codex-rs/core/src/mcp_skill_dependencies.rs @@ -17,7 +17,6 @@ use codex_rmcp_client::perform_oauth_login; use tokio_util::sync::CancellationToken; use tracing::warn; -use crate::SkillMetadata; use crate::config::edit::ConfigEditsBuilder; use crate::session::session::Session; use crate::session::turn_context::TurnContext; @@ -28,6 +27,7 @@ use codex_mcp::mcp_permission_prompt_is_auto_approved; use codex_mcp::oauth_login_support; use codex_mcp::resolve_oauth_scopes; use codex_mcp::should_retry_without_scopes; +use codex_skills::SkillMetadata; use codex_skills::SkillToolDependency; const SKILL_MCP_DEPENDENCY_PROMPT_ID: &str = "skill_mcp_dependency_install"; diff --git a/codex-rs/core/src/plugins/mentions.rs b/codex-rs/core/src/plugins/mentions.rs index 50b007b075..13563806da 100644 --- a/codex-rs/core/src/plugins/mentions.rs +++ b/codex-rs/core/src/plugins/mentions.rs @@ -102,8 +102,6 @@ pub(crate) fn collect_explicit_plugin_mentions( .collect() } -pub(crate) use crate::build_skill_name_counts; - pub(crate) fn build_connector_slug_counts( connectors: &[connectors::AppInfo], ) -> HashMap { diff --git a/codex-rs/core/src/plugins/mod.rs b/codex-rs/core/src/plugins/mod.rs index a2346abafe..fe51b8472f 100644 --- a/codex-rs/core/src/plugins/mod.rs +++ b/codex-rs/core/src/plugins/mod.rs @@ -20,7 +20,6 @@ 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::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; diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index 31e60e2d2b..3abbba529c 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -303,7 +303,6 @@ pub(crate) struct PreviousTurnSettings { pub(crate) realtime_active: Option, } -use crate::HostSkillsService; use crate::exec_policy::ExecPolicyUpdateError; use crate::guardian::GuardianReviewOptions; use crate::guardian::GuardianReviewSessionManager; @@ -384,6 +383,7 @@ use codex_protocol::protocol::TokenUsageInfo; use codex_protocol::protocol::TurnModerationMetadataEvent; use codex_protocol::protocol::WarningEvent; use codex_protocol::user_input::UserInput; +use codex_skills_extension::HostSkillsService; use codex_tools::UnifiedExecShellMode; use codex_utils_absolute_path::AbsolutePathBuf; #[cfg(test)] diff --git a/codex-rs/core/src/session/session.rs b/codex-rs/core/src/session/session.rs index e440be7336..206ec5d5e7 100644 --- a/codex-rs/core/src/session/session.rs +++ b/codex-rs/core/src/session/session.rs @@ -7,7 +7,6 @@ use crate::environment_selection::ThreadEnvironments; use crate::environment_selection::TurnEnvironmentSnapshot; use crate::session::turn_context::TurnEnvironmentConfig; use crate::shell_snapshot::ShellSnapshot; -use crate::skills::SkillError; use crate::state::ActiveTurn; use codex_extension_api::ExtensionDataInit; use codex_http_client::ClientRouteClass; @@ -26,6 +25,7 @@ use codex_protocol::protocol::MultiAgentVersion; use codex_protocol::protocol::ThreadHistoryMode; use codex_protocol::protocol::ThreadSource; use codex_protocol::protocol::TurnEnvironmentSelections; +use codex_skills::SkillError; use std::sync::OnceLock; use tokio::sync::Semaphore; diff --git a/codex-rs/core/src/session/turn.rs b/codex-rs/core/src/session/turn.rs index ef9dad66f2..23a060ccb5 100644 --- a/codex-rs/core/src/session/turn.rs +++ b/codex-rs/core/src/session/turn.rs @@ -6,7 +6,6 @@ use std::sync::atomic::Ordering; use crate::client::ModelClientSession; use crate::client_common::Prompt; use crate::client_common::ResponseEvent; -use crate::collect_explicit_skill_mentions; use crate::compact::InitialContextInjection; use crate::compact::run_inline_auto_compact_task; use crate::compact_remote::run_inline_remote_auto_compact_task; @@ -25,7 +24,6 @@ use crate::hook_runtime::run_pending_session_start_hooks; use crate::hook_runtime::run_turn_stop_hooks; use crate::mcp_skill_dependencies::maybe_prompt_and_install_mcp_dependencies; use crate::mentions::build_connector_slug_counts; -use crate::mentions::build_skill_name_counts; use crate::mentions::collect_explicit_app_ids; use crate::mentions::collect_explicit_plugin_mentions; use crate::mentions::collect_tool_mentions_from_messages; @@ -109,6 +107,8 @@ use codex_protocol::protocol::WarningEvent; use codex_protocol::user_input::UserInput; use codex_skills::ToolMentionKind; use codex_skills::app_id_from_path; +use codex_skills::build_skill_name_counts; +use codex_skills::collect_explicit_skill_mentions; use codex_skills::tool_kind_for_path; use codex_skills_extension::HostSkillPrompts; use codex_skills_extension::InjectedHostSkillPrompts; diff --git a/codex-rs/core/src/skills.rs b/codex-rs/core/src/skills.rs index a0d2aefde3..7094cb7ec9 100644 --- a/codex-rs/core/src/skills.rs +++ b/codex-rs/core/src/skills.rs @@ -9,21 +9,14 @@ use codex_extension_api::SkillInvocationInput; use codex_extension_api::SkillInvocationKind; use codex_otel::sanitize_metric_tag_value; use codex_protocol::protocol::SkillScope; +use codex_skills::SkillMetadata; +use codex_skills::detect_implicit_skill_invocation_for_command; +use codex_skills_extension::HostSkillsLoadInput; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_plugins::PluginSkillRoot; use std::collections::HashSet; use tokio::sync::Mutex; -pub use codex_skills::SkillError; -pub use codex_skills::SkillMetadata; -pub use codex_skills::SkillPolicy; -pub use codex_skills::build_skill_name_counts; -pub use codex_skills::collect_explicit_skill_mentions; -pub use codex_skills::detect_implicit_skill_invocation_for_command; -pub use codex_skills_extension::HostSkillsLoadInput; -pub use codex_skills_extension::HostSkillsService; -pub use codex_skills_extension::SkillLoadOutcome; - #[derive(Debug, Default)] struct ImplicitSkillInvocations(Mutex>); diff --git a/codex-rs/core/src/state/service.rs b/codex-rs/core/src/state/service.rs index 1e3cb00bca..0ef84c9b97 100644 --- a/codex-rs/core/src/state/service.rs +++ b/codex-rs/core/src/state/service.rs @@ -1,7 +1,6 @@ use std::path::PathBuf; use std::sync::Arc; -use crate::HostSkillsService; use crate::agent::AgentControl; use crate::agents_md_manager::AgentsMdManager; use crate::attestation::AttestationProvider; @@ -38,6 +37,7 @@ use codex_protocol::capabilities::SelectedCapabilityRoot; use codex_protocol::mcp::ClientMcpExtensions; use codex_rollout::state_db::StateDbHandle; use codex_rollout_trace::ThreadTraceContext; +use codex_skills_extension::HostSkillsService; use codex_thread_store::LiveThread; use codex_thread_store::ThreadStore; use tokio::runtime::Handle; diff --git a/codex-rs/core/src/thread_manager.rs b/codex-rs/core/src/thread_manager.rs index 197256133d..aa532421af 100644 --- a/codex-rs/core/src/thread_manager.rs +++ b/codex-rs/core/src/thread_manager.rs @@ -1,5 +1,4 @@ use crate::CodexAppsToolsCache; -use crate::HostSkillsService; use crate::agent::AgentControl; use crate::attestation::AttestationProvider; use crate::codex_thread::CodexThread; @@ -68,6 +67,7 @@ use codex_protocol::protocol::TurnAbortedEvent; use codex_protocol::protocol::TurnEnvironmentSelection; use codex_protocol::protocol::W3cTraceContext; use codex_rollout::state_db::StateDbHandle; +use codex_skills_extension::HostSkillsService; use codex_thread_store::InMemoryThreadStore; use codex_thread_store::LoadThreadHistoryParams; use codex_thread_store::LocalThreadStore;