Skip to content

Commit 48cf3ed

Browse files
xl-openaicodex
andauthored
Extract plugin loading and marketplace logic into codex-core-plugins (#18070)
Split plugin loading, marketplace, and related infrastructure out of core into codex-core-plugins, while keeping the core-facing configuration and orchestration flow in codex-core. --------- Co-authored-by: Codex <noreply@openai.com>
1 parent 224dad4 commit 48cf3ed

24 files changed

Lines changed: 1025 additions & 892 deletions

codex-rs/Cargo.lock

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codex-rs/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ members = [
2828
"shell-escalation",
2929
"skills",
3030
"core",
31+
"core-plugins",
3132
"core-skills",
3233
"hooks",
3334
"instructions",
@@ -128,6 +129,7 @@ codex-code-mode = { path = "code-mode" }
128129
codex-config = { path = "config" }
129130
codex-connectors = { path = "connectors" }
130131
codex-core = { path = "core" }
132+
codex-core-plugins = { path = "core-plugins" }
131133
codex-core-skills = { path = "core-skills" }
132134
codex-exec = { path = "exec" }
133135
codex-exec-server = { path = "exec-server" }

codex-rs/app-server/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ codex-arg0 = { workspace = true }
3434
codex-cloud-requirements = { workspace = true }
3535
codex-config = { workspace = true }
3636
codex-core = { workspace = true }
37+
codex-core-plugins = { workspace = true }
3738
codex-exec-server = { workspace = true }
3839
codex-features = { workspace = true }
3940
codex-git-utils = { workspace = true }

codex-rs/app-server/src/codex_message_processor.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,22 +232,23 @@ use codex_core::find_thread_names_by_ids;
232232
use codex_core::find_thread_path_by_id_str;
233233
use codex_core::path_utils;
234234
use codex_core::plugins::MarketplaceAddError;
235-
use codex_core::plugins::MarketplaceError;
236-
use codex_core::plugins::MarketplacePluginSource;
237235
use codex_core::plugins::OPENAI_CURATED_MARKETPLACE_NAME;
238236
use codex_core::plugins::PluginInstallError as CorePluginInstallError;
239237
use codex_core::plugins::PluginInstallRequest;
240238
use codex_core::plugins::PluginReadRequest;
241239
use codex_core::plugins::PluginUninstallError as CorePluginUninstallError;
242240
use codex_core::plugins::add_marketplace as add_marketplace_to_codex_home;
243-
use codex_core::plugins::load_plugin_apps;
244-
use codex_core::plugins::load_plugin_mcp_servers;
245241
use codex_core::read_head_for_summary;
246242
use codex_core::read_session_meta_line;
247243
use codex_core::sandboxing::SandboxPermissions;
248244
use codex_core::windows_sandbox::WindowsSandboxLevelExt;
249245
use codex_core::windows_sandbox::WindowsSandboxSetupMode as CoreWindowsSandboxSetupMode;
250246
use codex_core::windows_sandbox::WindowsSandboxSetupRequest;
247+
use codex_core_plugins::loader::load_plugin_apps;
248+
use codex_core_plugins::loader::load_plugin_mcp_servers;
249+
use codex_core_plugins::manifest::PluginManifestInterface;
250+
use codex_core_plugins::marketplace::MarketplaceError;
251+
use codex_core_plugins::marketplace::MarketplacePluginSource;
251252
use codex_exec_server::LOCAL_FS;
252253
use codex_features::FEATURES;
253254
use codex_features::Feature;
@@ -8834,9 +8835,7 @@ fn plugin_skills_to_info(
88348835
.collect()
88358836
}
88368837

8837-
fn plugin_interface_to_info(
8838-
interface: codex_core::plugins::PluginManifestInterface,
8839-
) -> PluginInterface {
8838+
fn plugin_interface_to_info(interface: PluginManifestInterface) -> PluginInterface {
88408839
PluginInterface {
88418840
display_name: interface.display_name,
88428841
short_description: interface.short_description,

codex-rs/app-server/src/config_api.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ use codex_core::config_loader::LoaderOverrides;
2727
use codex_core::config_loader::ResidencyRequirement as CoreResidencyRequirement;
2828
use codex_core::config_loader::SandboxModeRequirement as CoreSandboxModeRequirement;
2929
use codex_core::plugins::PluginId;
30-
use codex_core::plugins::collect_plugin_enabled_candidates;
31-
use codex_core::plugins::installed_plugin_telemetry_metadata;
30+
use codex_core_plugins::loader::installed_plugin_telemetry_metadata;
31+
use codex_core_plugins::toggles::collect_plugin_enabled_candidates;
3232
use codex_features::canonical_feature_for_key;
3333
use codex_features::feature_for_key;
3434
use codex_protocol::config_types::WebSearchMode;

codex-rs/core-plugins/BUILD.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
load("//:defs.bzl", "codex_rust_crate")
2+
3+
codex_rust_crate(
4+
name = "core-plugins",
5+
crate_name = "codex_core_plugins",
6+
compile_data = glob(
7+
include = ["**"],
8+
exclude = [
9+
"**/* *",
10+
"BUILD.bazel",
11+
"Cargo.toml",
12+
],
13+
allow_empty = True,
14+
),
15+
)

codex-rs/core-plugins/Cargo.toml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
[package]
2+
edition.workspace = true
3+
license.workspace = true
4+
name = "codex-core-plugins"
5+
version.workspace = true
6+
7+
[lib]
8+
doctest = false
9+
name = "codex_core_plugins"
10+
path = "src/lib.rs"
11+
12+
[lints]
13+
workspace = true
14+
15+
[dependencies]
16+
codex-app-server-protocol = { workspace = true }
17+
codex-config = { workspace = true }
18+
codex-core-skills = { workspace = true }
19+
codex-exec-server = { workspace = true }
20+
codex-git-utils = { workspace = true }
21+
codex-login = { workspace = true }
22+
codex-plugin = { workspace = true }
23+
codex-protocol = { workspace = true }
24+
codex-utils-absolute-path = { workspace = true }
25+
codex-utils-plugins = { workspace = true }
26+
dirs = { workspace = true }
27+
reqwest = { workspace = true }
28+
serde = { workspace = true, features = ["derive"] }
29+
serde_json = { workspace = true }
30+
tempfile = { workspace = true }
31+
thiserror = { workspace = true }
32+
tokio = { workspace = true, features = ["fs"] }
33+
toml = { workspace = true }
34+
tracing = { workspace = true }
35+
url = { workspace = true }
36+
37+
[dev-dependencies]
38+
pretty_assertions = { workspace = true }
39+
tempfile = { workspace = true }

codex-rs/core-plugins/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pub mod loader;
2+
pub mod manifest;
3+
pub mod marketplace;
4+
pub mod remote;
5+
pub mod store;
6+
pub mod toggles;

0 commit comments

Comments
 (0)