Files
codex/codex-rs/exec-server-cli/src/lib.rs
T
Dmitriy Kovalenko a9ea49e78b Add a standalone codex-exec-server executable (#57589)
## What changed

Extract executor startup into `codex-exec-server-cli`, shared by `codex exec-server` and the new standalone binary. Preserve executor arguments, authentication, configuration overrides, and sandbox helper dispatch across both entry points.

Build the standalone binary with `cargo build -p codex-exec-server-cli --bin codex-exec-server` and run it with `codex-exec-server --listen stdio`.

## Testing

Add standalone CLI parsing and help coverage, plus an integration test for version reporting, stdio initialization, filesystem reads, process execution, and sandbox helper re-execution when supported.

GitOrigin-RevId: ab3a81c6b91b6f45e4d72d8add2e01af8372e97f
2026-10-27 23:13:53 +00:00

36 lines
1.2 KiB
Rust

//! Startup shared by the full Codex CLI and the standalone executor.
//! Internal sandbox and filesystem re-exec modes always dispatch before argument parsing.
use clap::CommandFactory;
use clap::Parser;
use codex_utils_cli::CliConfigOverrides;
use codex_utils_cli::collect_config_overrides;
mod command;
mod config;
mod exec_server_auth;
mod exec_server_credential;
mod exec_server_telemetry;
pub use command::ExecServerCommand;
#[derive(Debug, Parser)]
#[command(name = "codex-exec-server", bin_name = "codex-exec-server", version)]
struct ExecServerCli {
#[command(flatten)]
config_overrides: CliConfigOverrides,
#[command(flatten)]
command: ExecServerCommand,
}
/// Starts the executor after dispatching internal helper modes and preparing runtime paths.
pub fn run_standalone() -> anyhow::Result<()> {
codex_arg0::arg0_dispatch_or_else(|paths| async move {
let args: Vec<_> = std::env::args_os().collect();
let mut cli = ExecServerCli::parse_from(&args);
cli.config_overrides = collect_config_overrides(ExecServerCli::command(), args)
.unwrap_or_else(|error| error.exit());
cli.command.run(&paths, &cli.config_overrides).await
})
}