diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 52c16b0fb..dfa174a2c 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -1427,7 +1427,7 @@ dependencies = [ "codex-chatgpt", "codex-cloud-requirements", "codex-core", - "codex-environment", + "codex-exec-server", "codex-feedback", "codex-file-search", "codex-login", @@ -1843,7 +1843,7 @@ dependencies = [ "codex-client", "codex-config", "codex-connectors", - "codex-environment", + "codex-exec-server", "codex-execpolicy", "codex-file-search", "codex-git", @@ -1947,17 +1947,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "codex-environment" -version = "0.0.0" -dependencies = [ - "async-trait", - "codex-utils-absolute-path", - "pretty_assertions", - "tempfile", - "tokio", -] - [[package]] name = "codex-exec" version = "0.0.0" @@ -2008,13 +1997,16 @@ name = "codex-exec-server" version = "0.0.0" dependencies = [ "anyhow", + "async-trait", "clap", "codex-app-server-protocol", + "codex-utils-absolute-path", "codex-utils-cargo-bin", "futures", "pretty_assertions", "serde", "serde_json", + "tempfile", "thiserror 2.0.18", "tokio", "tokio-tungstenite", diff --git a/codex-rs/Cargo.toml b/codex-rs/Cargo.toml index 7d4b8792b..0cac1be8b 100644 --- a/codex-rs/Cargo.toml +++ b/codex-rs/Cargo.toml @@ -22,7 +22,6 @@ members = [ "shell-escalation", "skills", "core", - "environment", "hooks", "secrets", "exec", @@ -105,8 +104,8 @@ codex-cloud-requirements = { path = "cloud-requirements" } codex-connectors = { path = "connectors" } codex-config = { path = "config" } codex-core = { path = "core" } -codex-environment = { path = "environment" } codex-exec = { path = "exec" } +codex-exec-server = { path = "exec-server" } codex-execpolicy = { path = "execpolicy" } codex-experimental-api-macros = { path = "codex-experimental-api-macros" } codex-feedback = { path = "feedback" } diff --git a/codex-rs/app-server/Cargo.toml b/codex-rs/app-server/Cargo.toml index c4588df7e..939105049 100644 --- a/codex-rs/app-server/Cargo.toml +++ b/codex-rs/app-server/Cargo.toml @@ -32,7 +32,7 @@ axum = { workspace = true, default-features = false, features = [ codex-arg0 = { workspace = true } codex-cloud-requirements = { workspace = true } codex-core = { workspace = true } -codex-environment = { workspace = true } +codex-exec-server = { workspace = true } codex-otel = { workspace = true } codex-shell-command = { workspace = true } codex-utils-cli = { workspace = true } diff --git a/codex-rs/app-server/src/fs_api.rs b/codex-rs/app-server/src/fs_api.rs index 601842862..1d53bbe18 100644 --- a/codex-rs/app-server/src/fs_api.rs +++ b/codex-rs/app-server/src/fs_api.rs @@ -18,11 +18,11 @@ use codex_app_server_protocol::FsRemoveResponse; use codex_app_server_protocol::FsWriteFileParams; use codex_app_server_protocol::FsWriteFileResponse; use codex_app_server_protocol::JSONRPCErrorError; -use codex_environment::CopyOptions; -use codex_environment::CreateDirectoryOptions; -use codex_environment::Environment; -use codex_environment::ExecutorFileSystem; -use codex_environment::RemoveOptions; +use codex_exec_server::CopyOptions; +use codex_exec_server::CreateDirectoryOptions; +use codex_exec_server::Environment; +use codex_exec_server::ExecutorFileSystem; +use codex_exec_server::RemoveOptions; use std::io; use std::sync::Arc; diff --git a/codex-rs/core/Cargo.toml b/codex-rs/core/Cargo.toml index d11e20981..a44da5e11 100644 --- a/codex-rs/core/Cargo.toml +++ b/codex-rs/core/Cargo.toml @@ -34,7 +34,7 @@ codex-async-utils = { workspace = true } codex-client = { workspace = true } codex-connectors = { workspace = true } codex-config = { workspace = true } -codex-environment = { workspace = true } +codex-exec-server = { workspace = true } codex-shell-command = { workspace = true } codex-skills = { workspace = true } codex-execpolicy = { workspace = true } diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 45227d813..b90d702b2 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -59,7 +59,7 @@ use chrono::Local; use chrono::Utc; use codex_app_server_protocol::McpServerElicitationRequest; use codex_app_server_protocol::McpServerElicitationRequestParams; -use codex_environment::Environment; +use codex_exec_server::Environment; use codex_hooks::HookEvent; use codex_hooks::HookEventAfterAgent; use codex_hooks::HookPayload; diff --git a/codex-rs/core/src/codex_tests.rs b/codex-rs/core/src/codex_tests.rs index ddec552c7..787ad399b 100644 --- a/codex-rs/core/src/codex_tests.rs +++ b/codex-rs/core/src/codex_tests.rs @@ -2450,7 +2450,7 @@ pub(crate) async fn make_session_and_context() -> (Session, TurnContext) { true, )); let network_approval = Arc::new(NetworkApprovalService::default()); - let environment = Arc::new(codex_environment::Environment); + let environment = Arc::new(codex_exec_server::Environment); let file_watcher = Arc::new(FileWatcher::noop()); let services = SessionServices { @@ -3244,7 +3244,7 @@ pub(crate) async fn make_session_and_context_with_dynamic_tools_and_rx( true, )); let network_approval = Arc::new(NetworkApprovalService::default()); - let environment = Arc::new(codex_environment::Environment); + let environment = Arc::new(codex_exec_server::Environment); let file_watcher = Arc::new(FileWatcher::noop()); let services = SessionServices { diff --git a/codex-rs/core/src/state/service.rs b/codex-rs/core/src/state/service.rs index 0bd13870c..ceab67f1c 100644 --- a/codex-rs/core/src/state/service.rs +++ b/codex-rs/core/src/state/service.rs @@ -20,7 +20,7 @@ use crate::tools::network_approval::NetworkApprovalService; use crate::tools::runtimes::ExecveSessionApproval; use crate::tools::sandboxing::ApprovalStore; use crate::unified_exec::UnifiedExecProcessManager; -use codex_environment::Environment; +use codex_exec_server::Environment; use codex_hooks::Hooks; use codex_otel::SessionTelemetry; use codex_utils_absolute_path::AbsolutePathBuf; diff --git a/codex-rs/core/src/tools/handlers/view_image.rs b/codex-rs/core/src/tools/handlers/view_image.rs index 5069b1a4b..9cbe9bbc7 100644 --- a/codex-rs/core/src/tools/handlers/view_image.rs +++ b/codex-rs/core/src/tools/handlers/view_image.rs @@ -1,5 +1,5 @@ use async_trait::async_trait; -use codex_environment::ExecutorFileSystem; +use codex_exec_server::ExecutorFileSystem; use codex_protocol::models::FunctionCallOutputBody; use codex_protocol::models::FunctionCallOutputContentItem; use codex_protocol::models::FunctionCallOutputPayload; diff --git a/codex-rs/environment/BUILD.bazel b/codex-rs/environment/BUILD.bazel deleted file mode 100644 index 90487c35e..000000000 --- a/codex-rs/environment/BUILD.bazel +++ /dev/null @@ -1,6 +0,0 @@ -load("//:defs.bzl", "codex_rust_crate") - -codex_rust_crate( - name = "environment", - crate_name = "codex_environment", -) diff --git a/codex-rs/environment/Cargo.toml b/codex-rs/environment/Cargo.toml deleted file mode 100644 index 255348f7a..000000000 --- a/codex-rs/environment/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "codex-environment" -version.workspace = true -edition.workspace = true -license.workspace = true - -[lib] -name = "codex_environment" -path = "src/lib.rs" - -[lints] -workspace = true - -[dependencies] -async-trait = { workspace = true } -codex-utils-absolute-path = { workspace = true } -tokio = { workspace = true, features = ["fs", "io-util", "rt"] } - -[dev-dependencies] -pretty_assertions = { workspace = true } -tempfile = { workspace = true } diff --git a/codex-rs/environment/src/lib.rs b/codex-rs/environment/src/lib.rs deleted file mode 100644 index 0cf9f22f2..000000000 --- a/codex-rs/environment/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -pub mod fs; - -pub use fs::CopyOptions; -pub use fs::CreateDirectoryOptions; -pub use fs::ExecutorFileSystem; -pub use fs::FileMetadata; -pub use fs::FileSystemResult; -pub use fs::ReadDirectoryEntry; -pub use fs::RemoveOptions; - -#[derive(Clone, Debug, Default)] -pub struct Environment; - -impl Environment { - pub fn get_filesystem(&self) -> impl ExecutorFileSystem + use<> { - fs::LocalFileSystem - } -} diff --git a/codex-rs/exec-server/Cargo.toml b/codex-rs/exec-server/Cargo.toml index 7eeada396..91af099eb 100644 --- a/codex-rs/exec-server/Cargo.toml +++ b/codex-rs/exec-server/Cargo.toml @@ -15,13 +15,16 @@ path = "src/bin/codex-exec-server.rs" workspace = true [dependencies] +async-trait = { workspace = true } clap = { workspace = true, features = ["derive"] } codex-app-server-protocol = { workspace = true } +codex-utils-absolute-path = { workspace = true } futures = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = [ + "fs", "io-std", "io-util", "macros", @@ -38,3 +41,4 @@ tracing = { workspace = true } anyhow = { workspace = true } codex-utils-cargo-bin = { workspace = true } pretty_assertions = { workspace = true } +tempfile = { workspace = true } diff --git a/codex-rs/exec-server/src/environment.rs b/codex-rs/exec-server/src/environment.rs new file mode 100644 index 000000000..eb8658780 --- /dev/null +++ b/codex-rs/exec-server/src/environment.rs @@ -0,0 +1,11 @@ +use crate::fs; +use crate::fs::ExecutorFileSystem; + +#[derive(Clone, Debug, Default)] +pub struct Environment; + +impl Environment { + pub fn get_filesystem(&self) -> impl ExecutorFileSystem + use<> { + fs::LocalFileSystem + } +} diff --git a/codex-rs/environment/src/fs.rs b/codex-rs/exec-server/src/fs.rs similarity index 100% rename from codex-rs/environment/src/fs.rs rename to codex-rs/exec-server/src/fs.rs diff --git a/codex-rs/exec-server/src/lib.rs b/codex-rs/exec-server/src/lib.rs index b6b9c4137..fdd22e163 100644 --- a/codex-rs/exec-server/src/lib.rs +++ b/codex-rs/exec-server/src/lib.rs @@ -1,6 +1,8 @@ mod client; mod client_api; mod connection; +mod environment; +mod fs; mod protocol; mod rpc; mod server; @@ -9,6 +11,14 @@ pub use client::ExecServerClient; pub use client::ExecServerError; pub use client_api::ExecServerClientConnectOptions; pub use client_api::RemoteExecServerConnectArgs; +pub use environment::Environment; +pub use fs::CopyOptions; +pub use fs::CreateDirectoryOptions; +pub use fs::ExecutorFileSystem; +pub use fs::FileMetadata; +pub use fs::FileSystemResult; +pub use fs::ReadDirectoryEntry; +pub use fs::RemoveOptions; pub use protocol::InitializeParams; pub use protocol::InitializeResponse; pub use server::DEFAULT_LISTEN_URL;