diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 63fc5b26e8..8a34615829 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -2703,6 +2703,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "codex-config-schema" +version = "0.0.0" +dependencies = [ + "anyhow", + "clap", + "codex-config", +] + [[package]] name = "codex-connectors" version = "0.0.0" @@ -2759,7 +2768,6 @@ dependencies = [ "base64 0.22.1", "bm25", "chrono", - "clap", "codex-agent-graph-store", "codex-agent-roles", "codex-analytics", diff --git a/codex-rs/Cargo.toml b/codex-rs/Cargo.toml index c6e21960f5..27b5ac0153 100644 --- a/codex-rs/Cargo.toml +++ b/codex-rs/Cargo.toml @@ -36,6 +36,7 @@ members = [ "collaboration-mode-templates", "connectors", "config", + "config-schema", "context-fragments", "shell-command", "shell-escalation", diff --git a/codex-rs/config-schema/BUILD.bazel b/codex-rs/config-schema/BUILD.bazel new file mode 100644 index 0000000000..26058bc6cd --- /dev/null +++ b/codex-rs/config-schema/BUILD.bazel @@ -0,0 +1,6 @@ +load("//:defs.bzl", "codex_rust_crate") + +codex_rust_crate( + name = "config-schema", + crate_name = "codex_config_schema", +) diff --git a/codex-rs/config-schema/Cargo.toml b/codex-rs/config-schema/Cargo.toml new file mode 100644 index 0000000000..ec6458bd3e --- /dev/null +++ b/codex-rs/config-schema/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "codex-config-schema" +version.workspace = true +edition.workspace = true +license.workspace = true + +[[bin]] +name = "codex-write-config-schema" +path = "src/main.rs" + +[lints] +workspace = true + +[dependencies] +anyhow = { workspace = true } +clap = { workspace = true, features = ["derive"] } +codex-config = { workspace = true } diff --git a/codex-rs/core/src/bin/config_schema.rs b/codex-rs/config-schema/src/main.rs similarity index 65% rename from codex-rs/core/src/bin/config_schema.rs rename to codex-rs/config-schema/src/main.rs index f92ce62307..ef5608f700 100644 --- a/codex-rs/core/src/bin/config_schema.rs +++ b/codex-rs/config-schema/src/main.rs @@ -1,3 +1,5 @@ +//! Generates the canonical config schema fixture for development and releases. + use anyhow::Result; use clap::Parser; use std::path::PathBuf; @@ -12,9 +14,9 @@ struct Args { fn main() -> Result<()> { let args = Args::parse(); - let out_path = args - .out - .unwrap_or_else(|| PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("config.schema.json")); + let out_path = args.out.unwrap_or_else(|| { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../core/config.schema.json") + }); codex_config::schema::write_config_schema(&out_path)?; Ok(()) } diff --git a/codex-rs/core/Cargo.toml b/codex-rs/core/Cargo.toml index 932d0b0cbd..9632576e39 100644 --- a/codex-rs/core/Cargo.toml +++ b/codex-rs/core/Cargo.toml @@ -8,10 +8,6 @@ version.workspace = true name = "codex_core" path = "src/lib.rs" -[[bin]] -name = "codex-write-config-schema" -path = "src/bin/config_schema.rs" - [lints] workspace = true @@ -22,7 +18,6 @@ async-channel = { workspace = true } base64 = { workspace = true } bm25 = { workspace = true } chrono = { workspace = true, features = ["serde"] } -clap = { workspace = true, features = ["derive"] } codex-analytics = { workspace = true } codex-agent-graph-store = { workspace = true } codex-agent-roles = { workspace = true } diff --git a/justfile b/justfile index ec70adfc84..b8319d09a2 100644 --- a/justfile +++ b/justfile @@ -175,7 +175,7 @@ mcp-server-run *args: # Regenerate the json schema for config.toml from the current config types. write-config-schema: - cargo run -p codex-core --bin codex-write-config-schema + cargo run -p codex-config-schema --bin codex-write-config-schema # Regenerate vendored app-server protocol schema artifacts. write-app-server-schema *args: