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
This commit is contained in:
felixxia-oai authored and copyberry committed 2026-08-11 10:43:11 +00:00
1 parent 7d486ffa94
commit 3d4d253f8f
15 files changed
+18 -34

No files matched your search

@@ -16,7 +16,7 @@ pub(crate) struct CatalogRequestProcessor {
const SKILLS_LIST_CWD_CONCURRENCY: usize = 5; const SKILLS_LIST_CWD_CONCURRENCY: usize = 5;
fn skills_to_info( fn skills_to_info(
skills: &[codex_core::skills::SkillMetadata], skills: &[codex_skills::SkillMetadata],
disabled_paths: &HashSet<AbsolutePathBuf>, disabled_paths: &HashSet<AbsolutePathBuf>,
) -> Vec<codex_app_server_protocol::SkillMetadata> { ) -> Vec<codex_app_server_protocol::SkillMetadata> {
skills skills
@@ -89,7 +89,7 @@ fn hooks_to_info(hooks: &[codex_hooks::HookListEntry]) -> Vec<HookMetadata> {
} }
fn errors_to_info( fn errors_to_info(
errors: &[codex_core::skills::SkillError], errors: &[codex_skills::SkillError],
) -> Vec<codex_app_server_protocol::SkillErrorInfo> { ) -> Vec<codex_app_server_protocol::SkillErrorInfo> {
errors errors
.iter() .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(), cwd_abs.clone(),
effective_skill_roots, effective_skill_roots,
config_layer_stack, config_layer_stack,
@@ -59,7 +59,7 @@ pub(crate) struct PluginRequestProcessor {
} }
fn plugin_skills_to_info( fn plugin_skills_to_info(
skills: &[codex_core::skills::SkillMetadata], skills: &[codex_skills::SkillMetadata],
disabled_skill_paths: &HashSet<AbsolutePathBuf>, disabled_skill_paths: &HashSet<AbsolutePathBuf>,
) -> Vec<SkillSummary> { ) -> Vec<SkillSummary> {
skills skills
+2 -2
View File
@@ -7,8 +7,6 @@ use codex_app_server_protocol::ServerNotification;
use codex_app_server_protocol::SkillsChangedNotification; use codex_app_server_protocol::SkillsChangedNotification;
use codex_core::ThreadManager; use codex_core::ThreadManager;
use codex_core::config::Config; use codex_core::config::Config;
use codex_core::skills::HostSkillsLoadInput;
use codex_core::skills::HostSkillsService;
use codex_file_watcher::FileWatcher; use codex_file_watcher::FileWatcher;
use codex_file_watcher::FileWatcherSubscriber; use codex_file_watcher::FileWatcherSubscriber;
use codex_file_watcher::Receiver; use codex_file_watcher::Receiver;
@@ -17,6 +15,8 @@ use codex_file_watcher::WatchPath;
use codex_file_watcher::WatchRegistration; use codex_file_watcher::WatchRegistration;
use codex_protocol::protocol::TurnEnvironmentSelection; use codex_protocol::protocol::TurnEnvironmentSelection;
use codex_skills::system_cache_root_dir; use codex_skills::system_cache_root_dir;
use codex_skills_extension::HostSkillsLoadInput;
use codex_skills_extension::HostSkillsService;
use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_absolute_path::AbsolutePathBuf;
use tokio_util::sync::CancellationToken; use tokio_util::sync::CancellationToken;
use tokio_util::sync::DropGuard; use tokio_util::sync::DropGuard;
-1
View File
@@ -50,7 +50,6 @@ pub use codex_core::config::find_codex_home;
pub use codex_core::init_state_db; pub use codex_core::init_state_db;
pub use codex_core::local_agent_graph_store_from_state_db; pub use codex_core::local_agent_graph_store_from_state_db;
pub use codex_core::resolve_installation_id; pub use codex_core::resolve_installation_id;
pub use codex_core::skills::HostSkillsService;
pub use codex_core::thread_store_from_config; pub use codex_core::thread_store_from_config;
pub use codex_exec_server::EnvironmentManager; pub use codex_exec_server::EnvironmentManager;
pub use codex_exec_server::EnvironmentRegistryConnectRequest; pub use codex_exec_server::EnvironmentRegistryConnectRequest;
+1 -1
View File
@@ -1,11 +1,11 @@
use super::*; use super::*;
use crate::HostSkillsService;
use crate::config::ConfigBuilder; use crate::config::ConfigBuilder;
use crate::plugins::plugins_manager_for_config; use crate::plugins::plugins_manager_for_config;
use crate::skills_load_input_from_config; use crate::skills_load_input_from_config;
use codex_protocol::config_types::ServiceTier; use codex_protocol::config_types::ServiceTier;
use codex_protocol::models::BaseInstructionsProvenance; use codex_protocol::models::BaseInstructionsProvenance;
use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::ReasoningEffort;
use codex_skills_extension::HostSkillsService;
use codex_utils_absolute_path::test_support::PathExt; use codex_utils_absolute_path::test_support::PathExt;
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use std::fs; use std::fs;
+1 -6
View File
@@ -81,7 +81,6 @@ pub(crate) mod prompt_debug;
pub use prompt_debug::build_prompt_input; pub use prompt_debug::build_prompt_input;
pub(crate) mod mentions { pub(crate) mod mentions {
pub(crate) use crate::plugins::build_connector_slug_counts; 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_app_ids;
pub(crate) use crate::plugins::collect_explicit_plugin_mentions; pub(crate) use crate::plugins::collect_explicit_plugin_mentions;
pub(crate) use crate::plugins::collect_tool_mentions_from_messages; pub(crate) use crate::plugins::collect_tool_mentions_from_messages;
@@ -90,11 +89,7 @@ mod sandbox_tags;
pub mod sandboxing; pub mod sandboxing;
mod session_prefix; mod session_prefix;
mod session_startup_prewarm; mod session_startup_prewarm;
pub mod skills; 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;
pub(crate) use skills::maybe_emit_implicit_skill_invocation; pub(crate) use skills::maybe_emit_implicit_skill_invocation;
pub(crate) use skills::skills_load_input_from_config; pub(crate) use skills::skills_load_input_from_config;
mod stream_events_utils; mod stream_events_utils;
+1 -1
View File
@@ -17,7 +17,6 @@ use codex_rmcp_client::perform_oauth_login;
use tokio_util::sync::CancellationToken; use tokio_util::sync::CancellationToken;
use tracing::warn; use tracing::warn;
use crate::SkillMetadata;
use crate::config::edit::ConfigEditsBuilder; use crate::config::edit::ConfigEditsBuilder;
use crate::session::session::Session; use crate::session::session::Session;
use crate::session::turn_context::TurnContext; 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::oauth_login_support;
use codex_mcp::resolve_oauth_scopes; use codex_mcp::resolve_oauth_scopes;
use codex_mcp::should_retry_without_scopes; use codex_mcp::should_retry_without_scopes;
use codex_skills::SkillMetadata;
use codex_skills::SkillToolDependency; use codex_skills::SkillToolDependency;
const SKILL_MCP_DEPENDENCY_PROMPT_ID: &str = "skill_mcp_dependency_install"; const SKILL_MCP_DEPENDENCY_PROMPT_ID: &str = "skill_mcp_dependency_install";
-2
View File
@@ -102,8 +102,6 @@ pub(crate) fn collect_explicit_plugin_mentions(
.collect() .collect()
} }
pub(crate) use crate::build_skill_name_counts;
pub(crate) fn build_connector_slug_counts( pub(crate) fn build_connector_slug_counts(
connectors: &[connectors::AppInfo], connectors: &[connectors::AppInfo],
) -> HashMap<String, usize> { ) -> HashMap<String, usize> {
-1
View File
@@ -20,7 +20,6 @@ pub(crate) use injection::build_plugin_injections;
pub(crate) use render::render_explicit_plugin_instructions; pub(crate) use render::render_explicit_plugin_instructions;
pub(crate) use mentions::build_connector_slug_counts; 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_app_ids;
pub(crate) use mentions::collect_explicit_plugin_mentions; pub(crate) use mentions::collect_explicit_plugin_mentions;
pub(crate) use mentions::collect_tool_mentions_from_messages; pub(crate) use mentions::collect_tool_mentions_from_messages;
+1 -1
View File
@@ -303,7 +303,6 @@ pub(crate) struct PreviousTurnSettings {
pub(crate) realtime_active: Option<bool>, pub(crate) realtime_active: Option<bool>,
} }
use crate::HostSkillsService;
use crate::exec_policy::ExecPolicyUpdateError; use crate::exec_policy::ExecPolicyUpdateError;
use crate::guardian::GuardianReviewOptions; use crate::guardian::GuardianReviewOptions;
use crate::guardian::GuardianReviewSessionManager; use crate::guardian::GuardianReviewSessionManager;
@@ -384,6 +383,7 @@ use codex_protocol::protocol::TokenUsageInfo;
use codex_protocol::protocol::TurnModerationMetadataEvent; use codex_protocol::protocol::TurnModerationMetadataEvent;
use codex_protocol::protocol::WarningEvent; use codex_protocol::protocol::WarningEvent;
use codex_protocol::user_input::UserInput; use codex_protocol::user_input::UserInput;
use codex_skills_extension::HostSkillsService;
use codex_tools::UnifiedExecShellMode; use codex_tools::UnifiedExecShellMode;
use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_absolute_path::AbsolutePathBuf;
#[cfg(test)] #[cfg(test)]
+1 -1
View File
@@ -7,7 +7,6 @@ use crate::environment_selection::ThreadEnvironments;
use crate::environment_selection::TurnEnvironmentSnapshot; use crate::environment_selection::TurnEnvironmentSnapshot;
use crate::session::turn_context::TurnEnvironmentConfig; use crate::session::turn_context::TurnEnvironmentConfig;
use crate::shell_snapshot::ShellSnapshot; use crate::shell_snapshot::ShellSnapshot;
use crate::skills::SkillError;
use crate::state::ActiveTurn; use crate::state::ActiveTurn;
use codex_extension_api::ExtensionDataInit; use codex_extension_api::ExtensionDataInit;
use codex_http_client::ClientRouteClass; use codex_http_client::ClientRouteClass;
@@ -26,6 +25,7 @@ use codex_protocol::protocol::MultiAgentVersion;
use codex_protocol::protocol::ThreadHistoryMode; use codex_protocol::protocol::ThreadHistoryMode;
use codex_protocol::protocol::ThreadSource; use codex_protocol::protocol::ThreadSource;
use codex_protocol::protocol::TurnEnvironmentSelections; use codex_protocol::protocol::TurnEnvironmentSelections;
use codex_skills::SkillError;
use std::sync::OnceLock; use std::sync::OnceLock;
use tokio::sync::Semaphore; use tokio::sync::Semaphore;
+2 -2
View File
@@ -6,7 +6,6 @@ use std::sync::atomic::Ordering;
use crate::client::ModelClientSession; use crate::client::ModelClientSession;
use crate::client_common::Prompt; use crate::client_common::Prompt;
use crate::client_common::ResponseEvent; use crate::client_common::ResponseEvent;
use crate::collect_explicit_skill_mentions;
use crate::compact::InitialContextInjection; use crate::compact::InitialContextInjection;
use crate::compact::run_inline_auto_compact_task; use crate::compact::run_inline_auto_compact_task;
use crate::compact_remote::run_inline_remote_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::hook_runtime::run_turn_stop_hooks;
use crate::mcp_skill_dependencies::maybe_prompt_and_install_mcp_dependencies; use crate::mcp_skill_dependencies::maybe_prompt_and_install_mcp_dependencies;
use crate::mentions::build_connector_slug_counts; 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_app_ids;
use crate::mentions::collect_explicit_plugin_mentions; use crate::mentions::collect_explicit_plugin_mentions;
use crate::mentions::collect_tool_mentions_from_messages; 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_protocol::user_input::UserInput;
use codex_skills::ToolMentionKind; use codex_skills::ToolMentionKind;
use codex_skills::app_id_from_path; 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::tool_kind_for_path;
use codex_skills_extension::HostSkillPrompts; use codex_skills_extension::HostSkillPrompts;
use codex_skills_extension::InjectedHostSkillPrompts; use codex_skills_extension::InjectedHostSkillPrompts;
+3 -10
View File
@@ -9,21 +9,14 @@ use codex_extension_api::SkillInvocationInput;
use codex_extension_api::SkillInvocationKind; use codex_extension_api::SkillInvocationKind;
use codex_otel::sanitize_metric_tag_value; use codex_otel::sanitize_metric_tag_value;
use codex_protocol::protocol::SkillScope; 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_absolute_path::AbsolutePathBuf;
use codex_utils_plugins::PluginSkillRoot; use codex_utils_plugins::PluginSkillRoot;
use std::collections::HashSet; use std::collections::HashSet;
use tokio::sync::Mutex; 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)] #[derive(Debug, Default)]
struct ImplicitSkillInvocations(Mutex<HashSet<String>>); struct ImplicitSkillInvocations(Mutex<HashSet<String>>);
+1 -1
View File
@@ -1,7 +1,6 @@
use std::path::PathBuf; use std::path::PathBuf;
use std::sync::Arc; use std::sync::Arc;
use crate::HostSkillsService;
use crate::agent::AgentControl; use crate::agent::AgentControl;
use crate::agents_md_manager::AgentsMdManager; use crate::agents_md_manager::AgentsMdManager;
use crate::attestation::AttestationProvider; use crate::attestation::AttestationProvider;
@@ -38,6 +37,7 @@ use codex_protocol::capabilities::SelectedCapabilityRoot;
use codex_protocol::mcp::ClientMcpExtensions; use codex_protocol::mcp::ClientMcpExtensions;
use codex_rollout::state_db::StateDbHandle; use codex_rollout::state_db::StateDbHandle;
use codex_rollout_trace::ThreadTraceContext; use codex_rollout_trace::ThreadTraceContext;
use codex_skills_extension::HostSkillsService;
use codex_thread_store::LiveThread; use codex_thread_store::LiveThread;
use codex_thread_store::ThreadStore; use codex_thread_store::ThreadStore;
use tokio::runtime::Handle; use tokio::runtime::Handle;
+1 -1
View File
@@ -1,5 +1,4 @@
use crate::CodexAppsToolsCache; use crate::CodexAppsToolsCache;
use crate::HostSkillsService;
use crate::agent::AgentControl; use crate::agent::AgentControl;
use crate::attestation::AttestationProvider; use crate::attestation::AttestationProvider;
use crate::codex_thread::CodexThread; use crate::codex_thread::CodexThread;
@@ -68,6 +67,7 @@ use codex_protocol::protocol::TurnAbortedEvent;
use codex_protocol::protocol::TurnEnvironmentSelection; use codex_protocol::protocol::TurnEnvironmentSelection;
use codex_protocol::protocol::W3cTraceContext; use codex_protocol::protocol::W3cTraceContext;
use codex_rollout::state_db::StateDbHandle; use codex_rollout::state_db::StateDbHandle;
use codex_skills_extension::HostSkillsService;
use codex_thread_store::InMemoryThreadStore; use codex_thread_store::InMemoryThreadStore;
use codex_thread_store::LoadThreadHistoryParams; use codex_thread_store::LoadThreadHistoryParams;
use codex_thread_store::LocalThreadStore; use codex_thread_store::LocalThreadStore;