From acd540f1581bf30f963fccbcce43ac494102242c Mon Sep 17 00:00:00 2001 From: Michael Bolin Date: Thu, 30 Jul 2026 19:40:51 +0000 Subject: [PATCH] Precompute app-server protocol exports (#36212) ## Why Normal app-server protocol builds do not need the `ts-rs` and `schemars` implementations used to generate schema exports. ## What changed - Embed compressed stable and experimental TypeScript and JSON schema exports, and serve the existing export APIs from those artifacts. - Use no-op schema derives in non-test builds while keeping the real generators available for fixture regeneration and tests. - Move schema fixture regeneration behind a Python helper and update `just write-app-server-schema --experimental` to refresh the experimental embedded exports. ## Testing - Verify embedded exports match freshly generated stable and experimental schemas. - Verify export options and on-disk output remain compatible. GitOrigin-RevId: e8536338b457e6eec34bdf29ec0684144bd13734 --- codex-rs/Cargo.lock | 7 +- codex-rs/Cargo.toml | 2 + .../BUILD.bazel | 7 + .../Cargo.toml | 13 ++ .../src/lib.rs | 20 ++ codex-rs/app-server-protocol/BUILD.bazel | 1 + codex-rs/app-server-protocol/Cargo.toml | 14 +- .../app-server-exports-experimental.json.zst | Bin 0 -> 129812 bytes .../app-server-exports-stable.json.zst | Bin 0 -> 128943 bytes .../scripts/write_schema_fixtures.py | 61 +++++ .../app-server-protocol/src/bin/export.rs | 34 --- .../src/bin/write_schema_fixtures.rs | 42 ---- codex-rs/app-server-protocol/src/export.rs | 13 +- codex-rs/app-server-protocol/src/lib.rs | 39 +++- .../src/precomputed_exports.rs | 214 ++++++++++++++++++ .../src/precomputed_exports_tests.rs | 69 ++++++ .../src/protocol/common.rs | 25 +- .../src/protocol/serde_helpers.rs | 1 + .../app-server-protocol/src/protocol/v1.rs | 4 +- .../src/protocol/v2/account.rs | 4 +- .../src/protocol/v2/apps.rs | 4 +- .../src/protocol/v2/attestation.rs | 4 +- .../src/protocol/v2/collaboration_mode.rs | 4 +- .../src/protocol/v2/command_exec.rs | 4 +- .../src/protocol/v2/config.rs | 4 +- .../src/protocol/v2/current_time.rs | 4 +- .../src/protocol/v2/environment.rs | 4 +- .../src/protocol/v2/experimental_feature.rs | 4 +- .../src/protocol/v2/feedback.rs | 4 +- .../app-server-protocol/src/protocol/v2/fs.rs | 4 +- .../src/protocol/v2/hook.rs | 4 +- .../src/protocol/v2/item.rs | 4 +- .../src/protocol/v2/mcp.rs | 4 +- .../src/protocol/v2/model.rs | 4 +- .../src/protocol/v2/notification.rs | 4 +- .../src/protocol/v2/permissions.rs | 4 +- .../src/protocol/v2/plugin.rs | 4 +- .../src/protocol/v2/process.rs | 4 +- .../src/protocol/v2/realtime.rs | 4 +- .../src/protocol/v2/remote_control.rs | 4 +- .../src/protocol/v2/review.rs | 4 +- .../src/protocol/v2/shared.rs | 12 +- .../src/protocol/v2/thread.rs | 4 +- .../src/protocol/v2/thread_data.rs | 7 +- .../src/protocol/v2/turn.rs | 4 +- .../src/protocol/v2/windows_sandbox.rs | 4 +- codex-rs/app-server-protocol/src/rpc.rs | 4 +- .../src/schema_fixtures.rs | 98 +++++++- .../schema_fixtures_tests.rs} | 112 ++++++++- codex-rs/app-server/README.md | 2 +- 50 files changed, 720 insertions(+), 181 deletions(-) create mode 100644 codex-rs/app-server-protocol-noop-macros/BUILD.bazel create mode 100644 codex-rs/app-server-protocol-noop-macros/Cargo.toml create mode 100644 codex-rs/app-server-protocol-noop-macros/src/lib.rs create mode 100644 codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst create mode 100644 codex-rs/app-server-protocol/schema/precomputed/app-server-exports-stable.json.zst create mode 100644 codex-rs/app-server-protocol/scripts/write_schema_fixtures.py delete mode 100644 codex-rs/app-server-protocol/src/bin/export.rs delete mode 100644 codex-rs/app-server-protocol/src/bin/write_schema_fixtures.rs create mode 100644 codex-rs/app-server-protocol/src/precomputed_exports.rs create mode 100644 codex-rs/app-server-protocol/src/precomputed_exports_tests.rs rename codex-rs/app-server-protocol/{tests/schema_fixtures.rs => src/schema_fixtures_tests.rs} (55%) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 9d4f5ab7cb..9948bc70d2 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -2137,7 +2137,7 @@ name = "codex-app-server-protocol" version = "0.0.0" dependencies = [ "anyhow", - "clap", + "codex-app-server-protocol-noop-macros", "codex-experimental-api-macros", "codex-extension-items", "codex-protocol", @@ -2159,8 +2159,13 @@ dependencies = [ "tracing", "ts-rs", "uuid", + "zstd", ] +[[package]] +name = "codex-app-server-protocol-noop-macros" +version = "0.0.0" + [[package]] name = "codex-app-server-test-client" version = "0.0.0" diff --git a/codex-rs/Cargo.toml b/codex-rs/Cargo.toml index a6db565517..aa80daee7f 100644 --- a/codex-rs/Cargo.toml +++ b/codex-rs/Cargo.toml @@ -13,6 +13,7 @@ members = [ "app-server-daemon", "app-server-client", "app-server-protocol", + "app-server-protocol-noop-macros", "app-server-test-client", "apply-patch", "arg0", @@ -152,6 +153,7 @@ codex-app-server-transport = { path = "app-server-transport" } codex-app-server-daemon = { path = "app-server-daemon" } codex-app-server-client = { path = "app-server-client" } codex-app-server-protocol = { path = "app-server-protocol" } +codex-app-server-protocol-noop-macros = { path = "app-server-protocol-noop-macros" } codex-app-server-test-client = { path = "app-server-test-client" } codex-apply-patch = { path = "apply-patch" } codex-arg0 = { path = "arg0" } diff --git a/codex-rs/app-server-protocol-noop-macros/BUILD.bazel b/codex-rs/app-server-protocol-noop-macros/BUILD.bazel new file mode 100644 index 0000000000..5d7f086efd --- /dev/null +++ b/codex-rs/app-server-protocol-noop-macros/BUILD.bazel @@ -0,0 +1,7 @@ +load("//:defs.bzl", "codex_rust_crate") + +codex_rust_crate( + name = "app-server-protocol-noop-macros", + crate_name = "codex_app_server_protocol_noop_macros", + proc_macro = True, +) diff --git a/codex-rs/app-server-protocol-noop-macros/Cargo.toml b/codex-rs/app-server-protocol-noop-macros/Cargo.toml new file mode 100644 index 0000000000..93a24b070b --- /dev/null +++ b/codex-rs/app-server-protocol-noop-macros/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "codex-app-server-protocol-noop-macros" +version.workspace = true +edition.workspace = true +license.workspace = true + +[lib] +proc-macro = true +test = false +doctest = false + +[lints] +workspace = true diff --git a/codex-rs/app-server-protocol-noop-macros/src/lib.rs b/codex-rs/app-server-protocol-noop-macros/src/lib.rs new file mode 100644 index 0000000000..74af71abc2 --- /dev/null +++ b/codex-rs/app-server-protocol-noop-macros/src/lib.rs @@ -0,0 +1,20 @@ +//! No-op schema derives for production app-server protocol builds. +//! +//! The real `ts-rs` and `schemars` derives are only needed when regenerating +//! the vendored protocol exports. Normal builds retain the annotations so the +//! protocol definitions stay readable, but use these derives to avoid +//! generating implementations that cannot be reached at runtime. + +use proc_macro::TokenStream; + +/// Accepts `#[schemars(...)]` helper attributes without generating an impl. +#[proc_macro_derive(JsonSchema, attributes(schemars))] +pub fn derive_json_schema(_input: TokenStream) -> TokenStream { + TokenStream::new() +} + +/// Accepts `#[ts(...)]` helper attributes without generating an impl. +#[proc_macro_derive(TS, attributes(ts))] +pub fn derive_ts(_input: TokenStream) -> TokenStream { + TokenStream::new() +} diff --git a/codex-rs/app-server-protocol/BUILD.bazel b/codex-rs/app-server-protocol/BUILD.bazel index af8c039688..eb6e1d280a 100644 --- a/codex-rs/app-server-protocol/BUILD.bazel +++ b/codex-rs/app-server-protocol/BUILD.bazel @@ -2,6 +2,7 @@ load("//:defs.bzl", "codex_rust_crate") codex_rust_crate( name = "app-server-protocol", + compile_data = glob(["schema/precomputed/**"]), crate_name = "codex_app_server_protocol", test_data_extra = glob( ["schema/**"], diff --git a/codex-rs/app-server-protocol/Cargo.toml b/codex-rs/app-server-protocol/Cargo.toml index 1f0cf450b3..debad694ab 100644 --- a/codex-rs/app-server-protocol/Cargo.toml +++ b/codex-rs/app-server-protocol/Cargo.toml @@ -14,14 +14,13 @@ workspace = true [dependencies] anyhow = { workspace = true } -clap = { workspace = true, features = ["derive"] } codex-experimental-api-macros = { workspace = true } +codex-app-server-protocol-noop-macros = { workspace = true } codex-extension-items = { workspace = true } codex-protocol = { workspace = true } codex-shell-command = { workspace = true } codex-utils-absolute-path = { workspace = true } codex-utils-path-uri = { workspace = true } -schemars = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } serde_with = { workspace = true } @@ -30,17 +29,24 @@ thiserror = { workspace = true } rmcp = { workspace = true, default-features = false, features = [ "base64", "macros", - "schemars", "server", ] } -ts-rs = { workspace = true } inventory = { workspace = true } tracing = { workspace = true } uuid = { workspace = true, features = ["serde", "v7"] } +zstd = { workspace = true } [dev-dependencies] anyhow = { workspace = true } codex-utils-cargo-bin = { workspace = true } pretty_assertions = { workspace = true } +rmcp = { workspace = true, default-features = false, features = [ + "base64", + "macros", + "schemars", + "server", +] } +schemars = { workspace = true } similar = { workspace = true } tempfile = { workspace = true } +ts-rs = { workspace = true } diff --git a/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst b/codex-rs/app-server-protocol/schema/precomputed/app-server-exports-experimental.json.zst new file mode 100644 index 0000000000000000000000000000000000000000..929386b1d6bb6bc77d9d8c8a4e1462c6b3cbfbb4 GIT binary patch literal 129812 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

d-+36 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%0A?xsbZh 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 literal 0 HcmV?d00001 diff --git a/codex-rs/app-server-protocol/scripts/write_schema_fixtures.py b/codex-rs/app-server-protocol/scripts/write_schema_fixtures.py new file mode 100644 index 0000000000..69217206cc --- /dev/null +++ b/codex-rs/app-server-protocol/scripts/write_schema_fixtures.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 + +import argparse +import os +from pathlib import Path +import subprocess + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Regenerate vendored app-server schema fixtures" + ) + parser.add_argument( + "--schema-root", + type=Path, + help="root directory containing the schema fixtures", + ) + parser.add_argument( + "-p", + "--prettier", + type=Path, + help="optional Prettier executable used to format TypeScript files", + ) + parser.add_argument( + "--experimental", + action="store_true", + help="regenerate the precomputed experimental exports", + ) + args = parser.parse_args() + + workspace_root = Path(__file__).resolve().parents[2] + schema_root = args.schema_root or workspace_root / "app-server-protocol" / "schema" + + env = os.environ.copy() + env["CODEX_APP_SERVER_SCHEMA_ROOT"] = str(schema_root) + env["CODEX_APP_SERVER_SCHEMA_EXPERIMENTAL"] = ( + "1" if args.experimental else "0" + ) + if args.prettier: + env["CODEX_APP_SERVER_SCHEMA_PRETTIER"] = str(args.prettier) + + subprocess.run( + [ + "cargo", + "test", + "-p", + "codex-app-server-protocol", + "--lib", + "schema_fixtures_tests::write_schema_fixtures_from_env", + "--", + "--exact", + "--ignored", + ], + cwd=workspace_root, + env=env, + check=True, + ) + + +if __name__ == "__main__": + main() diff --git a/codex-rs/app-server-protocol/src/bin/export.rs b/codex-rs/app-server-protocol/src/bin/export.rs deleted file mode 100644 index 10541d1fcb..0000000000 --- a/codex-rs/app-server-protocol/src/bin/export.rs +++ /dev/null @@ -1,34 +0,0 @@ -use anyhow::Result; -use clap::Parser; -use std::path::PathBuf; - -#[derive(Parser, Debug)] -#[command( - about = "Generate TypeScript bindings and JSON Schemas for the Codex app-server protocol" -)] -struct Args { - /// Output directory where generated files will be written - #[arg(short = 'o', long = "out", value_name = "DIR")] - out_dir: PathBuf, - - /// Optional Prettier executable path to format generated TypeScript files - #[arg(short = 'p', long = "prettier", value_name = "PRETTIER_BIN")] - prettier: Option, - - /// Include experimental API methods and fields in generated output. - #[arg(long = "experimental")] - experimental: bool, -} - -fn main() -> Result<()> { - let args = Args::parse(); - codex_app_server_protocol::generate_ts_with_options( - &args.out_dir, - args.prettier.as_deref(), - codex_app_server_protocol::GenerateTsOptions { - experimental_api: args.experimental, - ..codex_app_server_protocol::GenerateTsOptions::default() - }, - )?; - codex_app_server_protocol::generate_json_with_experimental(&args.out_dir, args.experimental) -} diff --git a/codex-rs/app-server-protocol/src/bin/write_schema_fixtures.rs b/codex-rs/app-server-protocol/src/bin/write_schema_fixtures.rs deleted file mode 100644 index 789d30cea2..0000000000 --- a/codex-rs/app-server-protocol/src/bin/write_schema_fixtures.rs +++ /dev/null @@ -1,42 +0,0 @@ -use anyhow::Context; -use anyhow::Result; -use clap::Parser; -use std::path::PathBuf; - -#[derive(Parser, Debug)] -#[command(about = "Regenerate vendored app-server schema fixtures")] -struct Args { - /// Root directory containing `typescript/` and `json/`. - #[arg(long = "schema-root", value_name = "DIR")] - schema_root: Option, - - /// Optional path to the Prettier executable to format generated TypeScript files. - #[arg(short = 'p', long = "prettier", value_name = "PRETTIER_BIN")] - prettier: Option, - - /// Include experimental API methods and fields in generated fixtures. - #[arg(long = "experimental")] - experimental: bool, -} - -fn main() -> Result<()> { - let args = Args::parse(); - - let schema_root = args - .schema_root - .unwrap_or_else(|| PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("schema")); - - codex_app_server_protocol::write_schema_fixtures_with_options( - &schema_root, - args.prettier.as_deref(), - codex_app_server_protocol::SchemaFixtureOptions { - experimental_api: args.experimental, - }, - ) - .with_context(|| { - format!( - "failed to regenerate schema fixtures under {}", - schema_root.display() - ) - }) -} diff --git a/codex-rs/app-server-protocol/src/export.rs b/codex-rs/app-server-protocol/src/export.rs index 03cfa8e632..ebd45a47c8 100644 --- a/codex-rs/app-server-protocol/src/export.rs +++ b/codex-rs/app-server-protocol/src/export.rs @@ -1,8 +1,10 @@ use crate::ClientNotification; use crate::ClientRequest; +use crate::JsonSchema; use crate::ServerNotification; use crate::ServerNotificationEnvelope; use crate::ServerRequest; +use crate::TS; use crate::experimental_api::experimental_fields; use crate::export_client_notification_schemas; use crate::export_client_param_schemas; @@ -22,7 +24,6 @@ use anyhow::Context; use anyhow::Result; use anyhow::anyhow; use codex_protocol::protocol::RolloutLine; -use schemars::JsonSchema; use schemars::schema_for; use serde::Serialize; use serde_json::Map; @@ -38,7 +39,6 @@ use std::path::Path; use std::path::PathBuf; use std::process::Command; use std::thread; -use ts_rs::TS; pub(crate) const GENERATED_TS_HEADER: &str = "// GENERATED CODE! DO NOT MODIFY BY HAND!\n\n"; const IGNORED_DEFINITIONS: &[&str] = &["Option<()>"]; @@ -87,11 +87,6 @@ impl GeneratedSchema { } type JsonSchemaEmitter = fn(&Path) -> Result; -pub fn generate_types(out_dir: &Path, prettier: Option<&Path>) -> Result<()> { - generate_ts(out_dir, prettier)?; - generate_json(out_dir)?; - Ok(()) -} #[derive(Clone, Copy, Debug)] pub struct GenerateTsOptions { @@ -112,10 +107,6 @@ impl Default for GenerateTsOptions { } } -pub fn generate_ts(out_dir: &Path, prettier: Option<&Path>) -> Result<()> { - generate_ts_with_options(out_dir, prettier, GenerateTsOptions::default()) -} - pub fn generate_ts_with_options( out_dir: &Path, prettier: Option<&Path>, diff --git a/codex-rs/app-server-protocol/src/lib.rs b/codex-rs/app-server-protocol/src/lib.rs index 26842d50dc..eb2b76de07 100644 --- a/codex-rs/app-server-protocol/src/lib.rs +++ b/codex-rs/app-server-protocol/src/lib.rs @@ -1,17 +1,26 @@ mod experimental_api; +#[cfg(test)] mod export; +mod precomputed_exports; +#[cfg(test)] +#[path = "precomputed_exports_tests.rs"] +mod precomputed_exports_tests; mod protocol; pub mod rpc; +#[cfg(test)] mod schema_fixtures; +#[cfg(test)] +#[path = "schema_fixtures_tests.rs"] +mod schema_fixtures_tests; pub use experimental_api::*; -pub use export::GenerateTsOptions; -pub use export::generate_internal_json_schema; -pub use export::generate_json; -pub use export::generate_json_with_experimental; -pub use export::generate_ts; -pub use export::generate_ts_with_options; -pub use export::generate_types; +pub use precomputed_exports::GenerateTsOptions; +pub use precomputed_exports::generate_internal_json_schema; +pub use precomputed_exports::generate_json; +pub use precomputed_exports::generate_json_with_experimental; +pub use precomputed_exports::generate_ts; +pub use precomputed_exports::generate_ts_with_options; +pub use precomputed_exports::generate_types; pub use protocol::common::*; pub use protocol::event_mapping::*; pub use protocol::item_builders::*; @@ -41,10 +50,22 @@ pub use protocol::v1::Tools; pub use protocol::v1::UserSavedConfig; pub use protocol::v2::*; pub use rpc::*; +#[cfg(test)] pub use schema_fixtures::SchemaFixtureOptions; -#[doc(hidden)] -pub use schema_fixtures::generate_typescript_schema_fixture_subtree_for_tests; +#[cfg(test)] pub use schema_fixtures::read_schema_fixture_subtree; +#[cfg(test)] pub use schema_fixtures::read_schema_fixture_tree; +#[cfg(test)] pub use schema_fixtures::write_schema_fixtures; +#[cfg(test)] pub use schema_fixtures::write_schema_fixtures_with_options; + +#[cfg(not(test))] +pub(crate) use codex_app_server_protocol_noop_macros::JsonSchema; +#[cfg(not(test))] +pub(crate) use codex_app_server_protocol_noop_macros::TS; +#[cfg(test)] +pub(crate) use schemars::JsonSchema; +#[cfg(test)] +pub(crate) use ts_rs::TS; diff --git a/codex-rs/app-server-protocol/src/precomputed_exports.rs b/codex-rs/app-server-protocol/src/precomputed_exports.rs new file mode 100644 index 0000000000..51af299a46 --- /dev/null +++ b/codex-rs/app-server-protocol/src/precomputed_exports.rs @@ -0,0 +1,214 @@ +use anyhow::Context; +use anyhow::Result; +use anyhow::bail; +use serde::Deserialize; +use std::collections::BTreeMap; +use std::ffi::OsStr; +use std::fs; +use std::io::Cursor; +use std::path::Component; +use std::path::Path; +use std::path::PathBuf; +use std::process::Command; + +pub(crate) const GENERATED_TS_HEADER: &str = "// GENERATED CODE! DO NOT MODIFY BY HAND!\n\n"; +const STABLE_EXPORTS: &[u8] = + include_bytes!("../schema/precomputed/app-server-exports-stable.json.zst"); +const EXPERIMENTAL_EXPORTS: &[u8] = + include_bytes!("../schema/precomputed/app-server-exports-experimental.json.zst"); + +#[derive(Clone, Copy, Debug)] +pub struct GenerateTsOptions { + pub generate_indices: bool, + pub ensure_headers: bool, + pub run_prettier: bool, + pub experimental_api: bool, +} + +impl Default for GenerateTsOptions { + fn default() -> Self { + Self { + generate_indices: true, + ensure_headers: true, + run_prettier: true, + experimental_api: false, + } + } +} + +#[derive(Deserialize)] +#[cfg_attr(test, derive(Debug, PartialEq, Eq, serde::Serialize))] +pub(crate) struct PrecomputedExports { + pub(crate) typescript: BTreeMap, + pub(crate) json_schema: BTreeMap, + pub(crate) internal_json_schema: BTreeMap, +} + +#[derive(Clone, Copy)] +enum ExportSet { + Stable, + Experimental, +} + +pub fn generate_types(out_dir: &Path, prettier: Option<&Path>) -> Result<()> { + generate_ts(out_dir, prettier)?; + generate_json(out_dir) +} + +pub fn generate_ts(out_dir: &Path, prettier: Option<&Path>) -> Result<()> { + generate_ts_with_options(out_dir, prettier, GenerateTsOptions::default()) +} + +pub fn generate_ts_with_options( + out_dir: &Path, + prettier: Option<&Path>, + options: GenerateTsOptions, +) -> Result<()> { + let export_set = if options.experimental_api { + ExportSet::Experimental + } else { + ExportSet::Stable + }; + let exports = load_exports(export_set)?; + let ts_files = write_typescript_exports(out_dir, &exports.typescript, options)?; + + if options.run_prettier + && let Some(prettier_bin) = prettier + && !ts_files.is_empty() + { + let status = Command::new(prettier_bin) + .arg("--write") + .arg("--log-level") + .arg("warn") + .args(ts_files.iter().map(PathBuf::as_path)) + .status() + .with_context(|| format!("Failed to invoke Prettier at {}", prettier_bin.display()))?; + if !status.success() { + bail!("Prettier failed with status {status}"); + } + } + + trim_trailing_whitespace_in_ts_files(&ts_files) +} + +pub fn generate_json(out_dir: &Path) -> Result<()> { + generate_json_with_experimental(out_dir, /*experimental_api*/ false) +} + +pub fn generate_json_with_experimental(out_dir: &Path, experimental_api: bool) -> Result<()> { + let export_set = if experimental_api { + ExportSet::Experimental + } else { + ExportSet::Stable + }; + let exports = load_exports(export_set)?; + write_exports(out_dir, &exports.json_schema)?; + Ok(()) +} + +pub fn generate_internal_json_schema(out_dir: &Path) -> Result<()> { + let exports = load_exports(ExportSet::Stable)?; + write_exports(out_dir, &exports.internal_json_schema)?; + Ok(()) +} + +fn load_exports(export_set: ExportSet) -> Result { + let compressed = match export_set { + ExportSet::Stable => STABLE_EXPORTS, + ExportSet::Experimental => EXPERIMENTAL_EXPORTS, + }; + let bytes = zstd::stream::decode_all(Cursor::new(compressed)) + .context("decompress precomputed app-server protocol exports")?; + serde_json::from_slice(&bytes).context("decode precomputed app-server protocol exports") +} + +fn write_typescript_exports( + out_dir: &Path, + exports: &BTreeMap, + options: GenerateTsOptions, +) -> Result> { + let mut written = Vec::new(); + for (relative_path, archived_contents) in exports { + let is_index = Path::new(relative_path).file_name() == Some(OsStr::new("index.ts")); + if is_index && !options.generate_indices { + continue; + } + + let contents = if options.ensure_headers || is_index { + archived_contents.as_str() + } else { + archived_contents + .strip_prefix(GENERATED_TS_HEADER) + .unwrap_or(archived_contents) + }; + written.push(write_export(out_dir, relative_path, contents)?); + } + Ok(written) +} + +fn write_exports(out_dir: &Path, exports: &BTreeMap) -> Result> { + exports + .iter() + .map(|(relative_path, contents)| write_export(out_dir, relative_path, contents)) + .collect() +} + +fn write_export(out_dir: &Path, relative_path: &str, contents: &str) -> Result { + let relative_path = validated_relative_path(relative_path)?; + let output_path = out_dir.join(relative_path); + let parent = output_path + .parent() + .context("precomputed export path should have a parent")?; + fs::create_dir_all(parent).with_context(|| format!("Failed to create {}", parent.display()))?; + fs::write(&output_path, contents) + .with_context(|| format!("Failed to write {}", output_path.display()))?; + Ok(output_path) +} + +fn validated_relative_path(path: &str) -> Result<&Path> { + let path = Path::new(path); + if path.as_os_str().is_empty() + || path + .components() + .any(|component| !matches!(component, Component::Normal(_))) + { + bail!("invalid precomputed export path: {}", path.display()); + } + Ok(path) +} + +fn trim_trailing_whitespace_in_ts_files(paths: &[PathBuf]) -> Result<()> { + for path in paths { + let content = fs::read_to_string(path) + .with_context(|| format!("Failed to read {}", path.display()))?; + let trimmed = trim_trailing_line_whitespace(&content); + if trimmed != content { + fs::write(path, trimmed) + .with_context(|| format!("Failed to write {}", path.display()))?; + } + } + Ok(()) +} + +fn trim_trailing_line_whitespace(content: &str) -> String { + let mut trimmed = String::with_capacity(content.len()); + for line in content.split_inclusive('\n') { + if let Some(line_without_newline) = line.strip_suffix('\n') { + trimmed.push_str(line_without_newline.trim_end_matches([' ', '\t'])); + trimmed.push('\n'); + } else { + trimmed.push_str(line.trim_end_matches([' ', '\t'])); + } + } + trimmed +} + +#[cfg(test)] +pub(crate) fn decode_precomputed_exports(experimental_api: bool) -> Result { + let export_set = if experimental_api { + ExportSet::Experimental + } else { + ExportSet::Stable + }; + load_exports(export_set) +} diff --git a/codex-rs/app-server-protocol/src/precomputed_exports_tests.rs b/codex-rs/app-server-protocol/src/precomputed_exports_tests.rs new file mode 100644 index 0000000000..8a18b9a634 --- /dev/null +++ b/codex-rs/app-server-protocol/src/precomputed_exports_tests.rs @@ -0,0 +1,69 @@ +use crate::GenerateTsOptions; +use crate::generate_internal_json_schema; +use crate::generate_json_with_experimental; +use crate::generate_ts_with_options; +use crate::precomputed_exports::GENERATED_TS_HEADER; +use crate::precomputed_exports::decode_precomputed_exports; +use crate::schema_fixtures::collect_export_files_recursive; +use anyhow::Context; +use anyhow::Result; +use pretty_assertions::assert_eq; +use std::path::Path; + +#[test] +fn precomputed_exports_are_written_to_disk() -> Result<()> { + let output_dir = tempfile::tempdir().context("create export temp dir")?; + let typescript_dir = output_dir.path().join("typescript"); + let json_dir = output_dir.path().join("json"); + let internal_json_dir = output_dir.path().join("internal-json"); + + generate_ts_with_options( + &typescript_dir, + /*prettier*/ None, + GenerateTsOptions::default(), + )?; + generate_json_with_experimental(&json_dir, /*experimental_api*/ false)?; + generate_internal_json_schema(&internal_json_dir)?; + + let exports = decode_precomputed_exports(/*experimental_api*/ false)?; + assert_eq!( + collect_export_files_recursive(&typescript_dir)?, + exports.typescript + ); + assert_eq!( + collect_export_files_recursive(&json_dir)?, + exports.json_schema + ); + assert_eq!( + collect_export_files_recursive(&internal_json_dir)?, + exports.internal_json_schema + ); + Ok(()) +} + +#[test] +fn typescript_export_options_preserve_generator_behavior() -> Result<()> { + let output_dir = tempfile::tempdir().context("create TypeScript export temp dir")?; + generate_ts_with_options( + output_dir.path(), + /*prettier*/ None, + GenerateTsOptions { + generate_indices: false, + ensure_headers: false, + ..GenerateTsOptions::default() + }, + )?; + + let files = collect_export_files_recursive(output_dir.path())?; + assert!(!files.keys().any(|path| { + Path::new(path) + .file_name() + .is_some_and(|name| name == "index.ts") + })); + assert!( + files + .values() + .all(|contents| !contents.starts_with(GENERATED_TS_HEADER)) + ); + Ok(()) +} diff --git a/codex-rs/app-server-protocol/src/protocol/common.rs b/codex-rs/app-server-protocol/src/protocol/common.rs index 983c97b807..37f81e738c 100644 --- a/codex-rs/app-server-protocol/src/protocol/common.rs +++ b/codex-rs/app-server-protocol/src/protocol/common.rs @@ -1,19 +1,22 @@ +#[cfg(test)] use std::path::Path; use std::path::PathBuf; use crate::JSONRPCNotification; use crate::JSONRPCRequest; +use crate::JsonSchema; use crate::RequestId; +use crate::TS; +#[cfg(test)] use crate::export::GeneratedSchema; +#[cfg(test)] use crate::export::write_json_schema; use crate::protocol::v1; use crate::protocol::v2; use codex_experimental_api_macros::ExperimentalApi; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use strum_macros::Display; -use ts_rs::TS; /// Authentication mode for OpenAI-backed providers. #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Display, JsonSchema, TS)] @@ -90,6 +93,7 @@ macro_rules! experimental_reason_expr { }; } +#[cfg(test)] macro_rules! experimental_method_entry { (#[experimental($reason:expr)] => $wire:literal) => { $wire @@ -102,6 +106,7 @@ macro_rules! experimental_method_entry { }; } +#[cfg(test)] macro_rules! experimental_type_entry { (#[experimental($reason:expr)] $ty:ty) => { stringify!($ty) @@ -393,22 +398,26 @@ macro_rules! client_request_definitions { } } + #[cfg(test)] pub(crate) const EXPERIMENTAL_CLIENT_METHODS: &[&str] = &[ $( experimental_method_entry!($(#[experimental($reason)])? => $wire), )* ]; + #[cfg(test)] pub(crate) const EXPERIMENTAL_CLIENT_METHOD_PARAM_TYPES: &[&str] = &[ $( experimental_type_entry!($(#[experimental($reason)])? $params), )* ]; + #[cfg(test)] pub(crate) const EXPERIMENTAL_CLIENT_METHOD_RESPONSE_TYPES: &[&str] = &[ $( experimental_type_entry!($(#[experimental($reason)])? $response), )* ]; + #[cfg(test)] pub fn export_client_responses( out_dir: &::std::path::Path, ) -> ::std::result::Result<(), ::ts_rs::ExportError> { @@ -418,12 +427,14 @@ macro_rules! client_request_definitions { Ok(()) } + #[cfg(test)] pub(crate) fn visit_client_response_types(v: &mut impl ::ts_rs::TypeVisitor) { $( v.visit::<$response>(); )* } + #[cfg(test)] #[allow(clippy::vec_init_then_push)] pub fn export_client_response_schemas( out_dir: &::std::path::Path, @@ -435,6 +446,7 @@ macro_rules! client_request_definitions { Ok(schemas) } + #[cfg(test)] #[allow(clippy::vec_init_then_push)] pub fn export_client_param_schemas( out_dir: &::std::path::Path, @@ -1330,22 +1342,26 @@ macro_rules! server_request_definitions { } } + #[cfg(test)] pub(crate) const EXPERIMENTAL_SERVER_METHODS: &[&str] = &[ $( experimental_method_entry!($(#[experimental($reason)])? $(=> $wire)?), )* ]; + #[cfg(test)] pub(crate) const EXPERIMENTAL_SERVER_METHOD_PARAM_TYPES: &[&str] = &[ $( experimental_type_entry!($(#[experimental($reason)])? $params), )* ]; + #[cfg(test)] pub(crate) const EXPERIMENTAL_SERVER_METHOD_RESPONSE_TYPES: &[&str] = &[ $( experimental_type_entry!($(#[experimental($reason)])? $response), )* ]; + #[cfg(test)] pub fn export_server_responses( out_dir: &::std::path::Path, ) -> ::std::result::Result<(), ::ts_rs::ExportError> { @@ -1355,12 +1371,14 @@ macro_rules! server_request_definitions { Ok(()) } + #[cfg(test)] pub(crate) fn visit_server_response_types(v: &mut impl ::ts_rs::TypeVisitor) { $( v.visit::<$response>(); )* } + #[cfg(test)] #[allow(clippy::vec_init_then_push)] pub fn export_server_response_schemas( out_dir: &Path, @@ -1375,6 +1393,7 @@ macro_rules! server_request_definitions { Ok(schemas) } + #[cfg(test)] #[allow(clippy::vec_init_then_push)] pub fn export_server_param_schemas( out_dir: &Path, @@ -1438,6 +1457,7 @@ macro_rules! server_notification_definitions { } } + #[cfg(test)] #[allow(clippy::vec_init_then_push)] pub fn export_server_notification_schemas( out_dir: &::std::path::Path, @@ -1466,6 +1486,7 @@ macro_rules! client_notification_definitions { )* } + #[cfg(test)] pub fn export_client_notification_schemas( _out_dir: &::std::path::Path, ) -> ::anyhow::Result> { diff --git a/codex-rs/app-server-protocol/src/protocol/serde_helpers.rs b/codex-rs/app-server-protocol/src/protocol/serde_helpers.rs index 8d3cdbea61..57a2ce1004 100644 --- a/codex-rs/app-server-protocol/src/protocol/serde_helpers.rs +++ b/codex-rs/app-server-protocol/src/protocol/serde_helpers.rs @@ -5,6 +5,7 @@ use serde::Deserializer; use serde::Serialize; use serde::Serializer; +#[cfg(test)] pub(crate) fn nullable_string_schema( generator: &mut schemars::r#gen::SchemaGenerator, ) -> schemars::schema::Schema { diff --git a/codex-rs/app-server-protocol/src/protocol/v1.rs b/codex-rs/app-server-protocol/src/protocol/v1.rs index dccea51a36..bdd820e25e 100644 --- a/codex-rs/app-server-protocol/src/protocol/v1.rs +++ b/codex-rs/app-server-protocol/src/protocol/v1.rs @@ -1,6 +1,8 @@ use std::collections::HashMap; use std::path::PathBuf; +use crate::JsonSchema; +use crate::TS; use codex_protocol::ThreadId; use codex_protocol::config_types::ForcedLoginMethod; use codex_protocol::config_types::ReasoningSummary; @@ -16,10 +18,8 @@ use codex_protocol::protocol::SandboxPolicy; use codex_protocol::protocol::SessionSource; use codex_protocol::protocol::TurnAbortReason; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; use crate::protocol::common::AuthMode; use crate::protocol::v2::ForcedChatgptWorkspaceIds; diff --git a/codex-rs/app-server-protocol/src/protocol/v2/account.rs b/codex-rs/app-server-protocol/src/protocol/v2/account.rs index 1e7ac5088f..6b4e78e000 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/account.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/account.rs @@ -1,3 +1,5 @@ +use crate::JsonSchema; +use crate::TS; use crate::protocol::common::AuthMode; use codex_experimental_api_macros::ExperimentalApi; use codex_protocol::account::PlanType; @@ -7,11 +9,9 @@ use codex_protocol::protocol::RateLimitReachedType as CoreRateLimitReachedType; use codex_protocol::protocol::RateLimitSnapshot as CoreRateLimitSnapshot; use codex_protocol::protocol::RateLimitWindow as CoreRateLimitWindow; use codex_protocol::protocol::SpendControlLimitSnapshot as CoreSpendControlLimitSnapshot; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(tag = "type", rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/apps.rs b/codex-rs/app-server-protocol/src/protocol/v2/apps.rs index ea511183bd..2b36fa1746 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/apps.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/apps.rs @@ -1,9 +1,9 @@ use super::shared::default_enabled; -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/attestation.rs b/codex-rs/app-server-protocol/src/protocol/v2/attestation.rs index ef8828b580..931539b3f1 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/attestation.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/attestation.rs @@ -1,7 +1,7 @@ -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS, Default)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/collaboration_mode.rs b/codex-rs/app-server-protocol/src/protocol/v2/collaboration_mode.rs index b013bc13d4..250719229e 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/collaboration_mode.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/collaboration_mode.rs @@ -1,10 +1,10 @@ +use crate::JsonSchema; +use crate::TS; use codex_protocol::config_types::CollaborationModeMask as CoreCollaborationModeMask; use codex_protocol::config_types::ModeKind; use codex_protocol::openai_models::ReasoningEffort; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; /// EXPERIMENTAL - list collaboration mode presets. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/command_exec.rs b/codex-rs/app-server-protocol/src/protocol/v2/command_exec.rs index 8f913b5bcf..15d747bd21 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/command_exec.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/command_exec.rs @@ -1,11 +1,11 @@ use super::SandboxPolicy; +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; use std::path::PathBuf; -use ts_rs::TS; /// PTY size in character cells for `command/exec` PTY sessions. #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/config.rs b/codex-rs/app-server-protocol/src/protocol/v2/config.rs index aaafb255b2..82b4ca9fba 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/config.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/config.rs @@ -3,6 +3,8 @@ use super::AskForApproval; use super::SandboxMode; use super::WindowsSandboxSetupMode; use super::shared::default_enabled; +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; use codex_protocol::config_types::AutoCompactTokenLimitScope; use codex_protocol::config_types::ForcedLoginMethod; @@ -13,14 +15,12 @@ use codex_protocol::config_types::WebSearchToolConfig; use codex_protocol::openai_models::ReasoningEffort; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_path_uri::PathUri; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::BTreeMap; use std::collections::HashMap; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] #[serde(tag = "type", rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/current_time.rs b/codex-rs/app-server-protocol/src/protocol/v2/current_time.rs index 9fd23f7981..830b05b862 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/current_time.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/current_time.rs @@ -1,7 +1,7 @@ -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/environment.rs b/codex-rs/app-server-protocol/src/protocol/v2/environment.rs index 5f8af6f26b..4351199224 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/environment.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/environment.rs @@ -1,8 +1,8 @@ +use crate::JsonSchema; +use crate::TS; use codex_utils_path_uri::PathUri; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/experimental_feature.rs b/codex-rs/app-server-protocol/src/protocol/v2/experimental_feature.rs index a16f45216b..1ea8fc7779 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/experimental_feature.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/experimental_feature.rs @@ -1,8 +1,8 @@ -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; use std::collections::BTreeMap; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/feedback.rs b/codex-rs/app-server-protocol/src/protocol/v2/feedback.rs index fdddb3aaa7..4c5fae4059 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/feedback.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/feedback.rs @@ -1,9 +1,9 @@ -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; use std::collections::BTreeMap; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/fs.rs b/codex-rs/app-server-protocol/src/protocol/v2/fs.rs index 0132c6b284..951b7af9b6 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/fs.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/fs.rs @@ -1,8 +1,8 @@ +use crate::JsonSchema; +use crate::TS; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; /// Read a file from the host filesystem. #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/hook.rs b/codex-rs/app-server-protocol/src/protocol/v2/hook.rs index 247b69e647..69984e8657 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/hook.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/hook.rs @@ -1,4 +1,6 @@ use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use codex_protocol::protocol::HookEventName as CoreHookEventName; use codex_protocol::protocol::HookExecutionMode as CoreHookExecutionMode; use codex_protocol::protocol::HookHandlerType as CoreHookHandlerType; @@ -10,10 +12,8 @@ use codex_protocol::protocol::HookScope as CoreHookScope; use codex_protocol::protocol::HookSource as CoreHookSource; use codex_protocol::protocol::HookTrustStatus as CoreHookTrustStatus; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; v2_enum_from_core!( pub enum HookEventName from CoreHookEventName { diff --git a/codex-rs/app-server-protocol/src/protocol/v2/item.rs b/codex-rs/app-server-protocol/src/protocol/v2/item.rs index 009b7275d4..1099f710ae 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/item.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/item.rs @@ -8,6 +8,8 @@ use super::NetworkPolicyAmendment; use super::RequestPermissionProfile; use super::UserInput; use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use crate::protocol::item_builders::command_actions_for_path_uri; use crate::protocol::item_builders::convert_patch_changes; use crate::protocol::item_builders::review_output_text; @@ -44,7 +46,6 @@ use codex_protocol::protocol::SubAgentActivityKind as CoreSubAgentActivityKind; use codex_shell_command::parse_command::shlex_join; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_path_uri::LegacyAppPathString; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; @@ -52,7 +53,6 @@ use serde_with::serde_as; use std::collections::HashMap; use std::io; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/mcp.rs b/codex-rs/app-server-protocol/src/protocol/v2/mcp.rs index 95317c8d01..979d92ecb2 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/mcp.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/mcp.rs @@ -1,4 +1,6 @@ use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use codex_protocol::approvals::ElicitationRequest as CoreElicitationRequest; use codex_protocol::items::McpToolCallError as CoreMcpToolCallError; use codex_protocol::mcp::CallToolResult as CoreMcpCallToolResult; @@ -7,12 +9,10 @@ use codex_protocol::mcp::Resource as McpResource; pub use codex_protocol::mcp::ResourceContent as McpResourceContent; use codex_protocol::mcp::ResourceTemplate as McpResourceTemplate; use codex_protocol::mcp::Tool as McpTool; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::BTreeMap; -use ts_rs::TS; v2_enum_from_core!( pub enum McpAuthStatus from codex_protocol::protocol::McpAuthStatus { diff --git a/codex-rs/app-server-protocol/src/protocol/v2/model.rs b/codex-rs/app-server-protocol/src/protocol/v2/model.rs index bb6c411124..7d9409136e 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/model.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/model.rs @@ -1,15 +1,15 @@ use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use codex_protocol::openai_models::InputModality; use codex_protocol::openai_models::ModelAvailabilityNux as CoreModelAvailabilityNux; use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::openai_models::default_input_modalities; use codex_protocol::protocol::ModelRerouteReason as CoreModelRerouteReason; use codex_protocol::protocol::ModelVerification as CoreModelVerification; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; -use ts_rs::TS; v2_enum_from_core!( pub enum ModelRerouteReason from CoreModelRerouteReason { diff --git a/codex-rs/app-server-protocol/src/protocol/v2/notification.rs b/codex-rs/app-server-protocol/src/protocol/v2/notification.rs index 8289cf5683..af2287627c 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/notification.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/notification.rs @@ -1,9 +1,9 @@ use super::TurnError; +use crate::JsonSchema; use crate::RequestId; -use schemars::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/permissions.rs b/codex-rs/app-server-protocol/src/protocol/v2/permissions.rs index 58c3735ba1..9360934aa4 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/permissions.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/permissions.rs @@ -1,4 +1,6 @@ use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use codex_protocol::approvals::ExecPolicyAmendment as CoreExecPolicyAmendment; use codex_protocol::approvals::NetworkApprovalContext as CoreNetworkApprovalContext; use codex_protocol::approvals::NetworkApprovalProtocol as CoreNetworkApprovalProtocol; @@ -19,13 +21,11 @@ use codex_protocol::request_permissions::RequestPermissionProfile as CoreRequest use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_path_uri::LegacyAppPathString; use codex_utils_path_uri::PathConvention; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::io; use std::num::NonZeroUsize; use std::path::Path; -use ts_rs::TS; v2_enum_from_core! { pub enum NetworkApprovalProtocol from CoreNetworkApprovalProtocol { diff --git a/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs b/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs index 458a0247f5..e0f521b60f 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs @@ -3,17 +3,17 @@ use super::HookEventName; use super::HookHandlerType; use super::HookSource; use super::HookTrustStatus; +use crate::JsonSchema; +use crate::TS; use codex_protocol::protocol::SkillDependencies as CoreSkillDependencies; use codex_protocol::protocol::SkillInterface as CoreSkillInterface; use codex_protocol::protocol::SkillMetadata as CoreSkillMetadata; use codex_protocol::protocol::SkillScope as CoreSkillScope; use codex_protocol::protocol::SkillToolDependency as CoreSkillToolDependency; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/process.rs b/codex-rs/app-server-protocol/src/protocol/v2/process.rs index b70847165e..11a8d687d4 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/process.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/process.rs @@ -1,9 +1,9 @@ +use crate::JsonSchema; +use crate::TS; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; -use ts_rs::TS; /// PTY size in character cells for `process/spawn` PTY sessions. #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs b/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs index cede06a43d..950590c366 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/realtime.rs @@ -1,3 +1,5 @@ +use crate::JsonSchema; +use crate::TS; use codex_protocol::protocol::CodexResponseHandoffMode; use codex_protocol::protocol::ConversationTextRole; use codex_protocol::protocol::RealtimeAudioFrame as CoreRealtimeAudioFrame; @@ -5,12 +7,10 @@ use codex_protocol::protocol::RealtimeConversationVersion; use codex_protocol::protocol::RealtimeOutputModality; use codex_protocol::protocol::RealtimeVoice; use codex_protocol::protocol::RealtimeVoicesList; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::BTreeMap; -use ts_rs::TS; /// EXPERIMENTAL - thread realtime audio chunk. #[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, JsonSchema, TS)] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/remote_control.rs b/codex-rs/app-server-protocol/src/protocol/v2/remote_control.rs index f69bbdc008..f089126cf3 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/remote_control.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/remote_control.rs @@ -1,7 +1,7 @@ -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, Eq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/review.rs b/codex-rs/app-server-protocol/src/protocol/v2/review.rs index 82ec5b6f59..2896418e22 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/review.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/review.rs @@ -1,9 +1,9 @@ use super::Turn; use super::shared::v2_enum_from_core; -use schemars::JsonSchema; +use crate::JsonSchema; +use crate::TS; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; v2_enum_from_core!( pub enum ReviewDelivery from codex_protocol::protocol::ReviewDelivery { diff --git a/codex-rs/app-server-protocol/src/protocol/v2/shared.rs b/codex-rs/app-server-protocol/src/protocol/v2/shared.rs index 4cd580ed69..340c0ab496 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/shared.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/shared.rs @@ -1,3 +1,5 @@ +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; use codex_protocol::config_types::ApprovalsReviewer as CoreApprovalsReviewer; use codex_protocol::config_types::SandboxMode as CoreSandboxMode; @@ -5,16 +7,20 @@ use codex_protocol::protocol::AskForApproval as CoreAskForApproval; use codex_protocol::protocol::CodexErrorInfo as CoreCodexErrorInfo; use codex_protocol::protocol::GranularApprovalConfig as CoreGranularApprovalConfig; use codex_protocol::protocol::NonSteerableTurnKind as CoreNonSteerableTurnKind; -use schemars::JsonSchema; +#[cfg(test)] use schemars::r#gen::SchemaGenerator; +#[cfg(test)] use schemars::schema::InstanceType; +#[cfg(test)] use schemars::schema::Metadata; +#[cfg(test)] use schemars::schema::Schema; +#[cfg(test)] use schemars::schema::SchemaObject; use serde::Deserialize; use serde::Serialize; +#[cfg(test)] use serde_json::Value as JsonValue; -use ts_rs::TS; // Macro to declare a camelCased API v2 enum mirroring a core enum which // tends to use either snake_case or kebab-case. @@ -236,6 +242,7 @@ pub enum ApprovalsReviewer { AutoReview, } +#[cfg(test)] impl JsonSchema for ApprovalsReviewer { fn schema_name() -> String { "ApprovalsReviewer".to_string() @@ -249,6 +256,7 @@ impl JsonSchema for ApprovalsReviewer { } } +#[cfg(test)] fn string_enum_schema_with_description(values: &[&str], description: &str) -> Schema { let mut schema = SchemaObject { instance_type: Some(InstanceType::String.into()), diff --git a/codex-rs/app-server-protocol/src/protocol/v2/thread.rs b/codex-rs/app-server-protocol/src/protocol/v2/thread.rs index d8b02ac650..569593ac3f 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/thread.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/thread.rs @@ -12,6 +12,8 @@ use super::Turn; use super::TurnEnvironmentParams; use super::TurnItemsView; use super::shared::v2_enum_from_core; +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; pub use codex_protocol::capabilities::CapabilityRootLocation; pub use codex_protocol::capabilities::SelectedCapabilityRoot; @@ -31,13 +33,11 @@ use codex_protocol::protocol::TokenUsageInfo as CoreTokenUsageInfo; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_path_uri::LegacyAppPathString; use codex_utils_path_uri::PathUri; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::HashMap; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs b/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs index 3b63fc3c87..4a55a10839 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/thread_data.rs @@ -2,20 +2,22 @@ use super::CodexErrorInfo; use super::ThreadItem; use super::ThreadStatus; use super::TurnStatus; +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; use codex_protocol::protocol::SessionSource as CoreSessionSource; use codex_protocol::protocol::SubAgentSource as CoreSubAgentSource; use codex_protocol::protocol::ThreadHistoryMode as CoreThreadHistoryMode; use codex_protocol::protocol::ThreadSource as CoreThreadSource; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; +#[cfg(test)] use schemars::r#gen::SchemaGenerator; +#[cfg(test)] use schemars::schema::Schema; use serde::Deserialize; use serde::Serialize; use std::path::PathBuf; use thiserror::Error; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] @@ -103,6 +105,7 @@ pub enum ThreadSource { MemoryConsolidation, } +#[cfg(test)] impl JsonSchema for ThreadSource { fn schema_name() -> String { "ThreadSource".to_string() diff --git a/codex-rs/app-server-protocol/src/protocol/v2/turn.rs b/codex-rs/app-server-protocol/src/protocol/v2/turn.rs index cb8473d49a..0b2c092ec8 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/turn.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/turn.rs @@ -2,6 +2,8 @@ use super::ApprovalsReviewer; use super::AskForApproval; use super::SandboxPolicy; use super::Turn; +use crate::JsonSchema; +use crate::TS; use codex_experimental_api_macros::ExperimentalApi; use codex_protocol::config_types::CollaborationMode; use codex_protocol::config_types::MultiAgentMode; @@ -16,13 +18,11 @@ use codex_protocol::user_input::TextElement as CoreTextElement; use codex_protocol::user_input::UserInput as CoreUserInput; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_path_uri::LegacyAppPathString; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use serde_json::Value as JsonValue; use std::collections::HashMap; use std::path::PathBuf; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/protocol/v2/windows_sandbox.rs b/codex-rs/app-server-protocol/src/protocol/v2/windows_sandbox.rs index 3e090c7bfd..1cc240a95e 100644 --- a/codex-rs/app-server-protocol/src/protocol/v2/windows_sandbox.rs +++ b/codex-rs/app-server-protocol/src/protocol/v2/windows_sandbox.rs @@ -1,8 +1,8 @@ +use crate::JsonSchema; +use crate::TS; use codex_utils_absolute_path::AbsolutePathBuf; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; -use ts_rs::TS; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] #[serde(rename_all = "camelCase")] diff --git a/codex-rs/app-server-protocol/src/rpc.rs b/codex-rs/app-server-protocol/src/rpc.rs index 4e8858ce00..23920864dd 100644 --- a/codex-rs/app-server-protocol/src/rpc.rs +++ b/codex-rs/app-server-protocol/src/rpc.rs @@ -1,12 +1,12 @@ //! We do not do true JSON-RPC 2.0, as we neither send nor expect the //! "jsonrpc": "2.0" field. +use crate::JsonSchema; +use crate::TS; use codex_protocol::protocol::W3cTraceContext; -use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use std::fmt; -use ts_rs::TS; pub const JSONRPC_VERSION: &str = "2.0"; diff --git a/codex-rs/app-server-protocol/src/schema_fixtures.rs b/codex-rs/app-server-protocol/src/schema_fixtures.rs index 6bf60e4a55..d0f36db800 100644 --- a/codex-rs/app-server-protocol/src/schema_fixtures.rs +++ b/codex-rs/app-server-protocol/src/schema_fixtures.rs @@ -3,10 +3,12 @@ use crate::ClientRequest; use crate::ServerNotification; use crate::ServerNotificationEnvelope; use crate::ServerRequest; +use crate::TS; use crate::export::GENERATED_TS_HEADER; use crate::export::filter_experimental_ts_tree; use crate::export::generate_index_ts_tree; use crate::export::trim_trailing_line_whitespace; +use crate::precomputed_exports::PrecomputedExports; use crate::protocol::common::visit_client_response_types; use crate::protocol::common::visit_server_response_types; use anyhow::Context; @@ -17,9 +19,9 @@ use std::any::TypeId; use std::cmp::Ordering; use std::collections::BTreeMap; use std::collections::HashSet; +use std::io::Cursor; use std::path::Path; use std::path::PathBuf; -use ts_rs::TS; use ts_rs::TypeVisitor; #[derive(Clone, Copy, Debug, Default)] @@ -81,7 +83,7 @@ pub fn generate_typescript_schema_fixture_subtree_for_tests() -> Result, options: SchemaFixtureOptions, ) -> Result<()> { + if options.experimental_api { + return write_experimental_precomputed_exports(schema_root, prettier); + } + let typescript_out_dir = schema_root.join("typescript"); let json_out_dir = schema_root.join("json"); ensure_empty_dir(&typescript_out_dir)?; ensure_empty_dir(&json_out_dir)?; - crate::generate_ts_with_options( + crate::export::generate_ts_with_options( &typescript_out_dir, prettier, - crate::GenerateTsOptions { - experimental_api: options.experimental_api, - ..crate::GenerateTsOptions::default() - }, + crate::export::GenerateTsOptions::default(), )?; - crate::generate_json_with_experimental(&json_out_dir, options.experimental_api)?; + crate::export::generate_json(&json_out_dir)?; + + let internal_dir = tempfile::tempdir().context("create internal schema temp dir")?; + crate::export::generate_internal_json_schema(internal_dir.path())?; + let exports = PrecomputedExports { + typescript: collect_export_files_recursive(&typescript_out_dir)?, + json_schema: collect_export_files_recursive(&json_out_dir)?, + internal_json_schema: collect_export_files_recursive(internal_dir.path())?, + }; + write_precomputed_exports(schema_root, "stable", &exports)?; Ok(()) } +fn write_experimental_precomputed_exports( + schema_root: &Path, + prettier: Option<&Path>, +) -> Result<()> { + let temp_dir = tempfile::tempdir().context("create experimental schema temp dir")?; + let typescript_out_dir = temp_dir.path().join("typescript"); + let json_out_dir = temp_dir.path().join("json"); + + crate::export::generate_ts_with_options( + &typescript_out_dir, + prettier, + crate::export::GenerateTsOptions { + experimental_api: true, + ..crate::export::GenerateTsOptions::default() + }, + )?; + crate::export::generate_json_with_experimental(&json_out_dir, /*experimental_api*/ true)?; + + let exports = PrecomputedExports { + typescript: collect_export_files_recursive(&typescript_out_dir)?, + json_schema: collect_export_files_recursive(&json_out_dir)?, + internal_json_schema: BTreeMap::new(), + }; + write_precomputed_exports(schema_root, "experimental", &exports) +} + +fn write_precomputed_exports( + schema_root: &Path, + name: &str, + exports: &PrecomputedExports, +) -> Result<()> { + let output_dir = schema_root.join("precomputed"); + std::fs::create_dir_all(&output_dir) + .with_context(|| format!("create {}", output_dir.display()))?; + let output_path = output_dir.join(format!("app-server-exports-{name}.json.zst")); + let json = serde_json::to_vec(exports).context("serialize precomputed protocol exports")?; + let compressed = zstd::stream::encode_all(Cursor::new(json), 19) + .context("compress precomputed protocol exports")?; + std::fs::write(&output_path, compressed) + .with_context(|| format!("write {}", output_path.display())) +} + fn ensure_empty_dir(dir: &Path) -> Result<()> { if dir.exists() { std::fs::remove_dir_all(dir) @@ -229,8 +283,31 @@ fn schema_array_item_sort_key(item: &Value) -> Option { } fn collect_files_recursive(root: &Path) -> Result>> { - let mut files = BTreeMap::new(); + files_recursive(root)? + .into_iter() + .map(|(relative_path, path)| Ok((relative_path, read_file_bytes(&path)?))) + .collect() +} +pub(crate) fn collect_export_files_recursive(root: &Path) -> Result> { + files_recursive(root)? + .into_iter() + .map(|(relative_path, path)| { + let relative_path = relative_path + .components() + .map(|component| component.as_os_str().to_string_lossy()) + .collect::>() + .join("/"); + let contents = std::fs::read_to_string(&path) + .with_context(|| format!("read UTF-8 export {}", path.display()))? + .replace("\r\n", "\n"); + Ok((relative_path, contents)) + }) + .collect() +} + +fn files_recursive(root: &Path) -> Result> { + let mut files = Vec::new(); let mut stack = vec![root.to_path_buf()]; while let Some(dir) = stack.pop() { for entry in std::fs::read_dir(&dir) @@ -262,10 +339,11 @@ fn collect_files_recursive(root: &Path) -> Result>> { })? .to_path_buf(); - files.insert(rel, read_file_bytes(&path)?); + files.push((rel, path)); } } + files.sort_by(|(left, _), (right, _)| left.cmp(right)); Ok(files) } diff --git a/codex-rs/app-server-protocol/tests/schema_fixtures.rs b/codex-rs/app-server-protocol/src/schema_fixtures_tests.rs similarity index 55% rename from codex-rs/app-server-protocol/tests/schema_fixtures.rs rename to codex-rs/app-server-protocol/src/schema_fixtures_tests.rs index 3fef9d6d0b..d87072b49c 100644 --- a/codex-rs/app-server-protocol/tests/schema_fixtures.rs +++ b/codex-rs/app-server-protocol/src/schema_fixtures_tests.rs @@ -1,8 +1,16 @@ +use crate::export::GenerateTsOptions; +use crate::export::generate_internal_json_schema; +use crate::export::generate_json_with_experimental; +use crate::export::generate_ts_with_options; +use crate::precomputed_exports::decode_precomputed_exports; +use crate::schema_fixtures::SchemaFixtureOptions; +use crate::schema_fixtures::collect_export_files_recursive; +use crate::schema_fixtures::generate_typescript_schema_fixture_subtree_for_tests; +use crate::schema_fixtures::read_schema_fixture_subtree; +use crate::schema_fixtures::write_schema_fixtures_with_options; use anyhow::Context; use anyhow::Result; -use codex_app_server_protocol::generate_json_with_experimental; -use codex_app_server_protocol::generate_typescript_schema_fixture_subtree_for_tests; -use codex_app_server_protocol::read_schema_fixture_subtree; +use pretty_assertions::assert_eq; use similar::TextDiff; use std::collections::BTreeMap; use std::path::Path; @@ -35,6 +43,81 @@ fn json_schema_fixtures_match_generated() -> Result<()> { }) } +#[test] +fn stable_precomputed_exports_match_schema_fixtures() -> Result<()> { + let schema_root = schema_root()?; + let exports = decode_precomputed_exports(/*experimental_api*/ false)?; + + assert_eq!( + exports.typescript, + collect_export_files_recursive(&schema_root.join("typescript"))? + ); + assert_eq!( + exports.json_schema, + collect_export_files_recursive(&schema_root.join("json"))? + ); + + let internal_dir = tempfile::tempdir().context("create internal schema temp dir")?; + generate_internal_json_schema(internal_dir.path())?; + assert_json_export_trees_match( + &exports.internal_json_schema, + &collect_export_files_recursive(internal_dir.path())?, + )?; + Ok(()) +} + +#[test] +fn experimental_precomputed_exports_match_generated() -> Result<()> { + let output_dir = tempfile::tempdir().context("create experimental schema temp dir")?; + let typescript_dir = output_dir.path().join("typescript"); + let json_dir = output_dir.path().join("json"); + generate_ts_with_options( + &typescript_dir, + /*prettier*/ None, + GenerateTsOptions { + experimental_api: true, + ..GenerateTsOptions::default() + }, + )?; + generate_json_with_experimental(&json_dir, /*experimental_api*/ true)?; + + let exports = decode_precomputed_exports(/*experimental_api*/ true)?; + assert_eq!( + exports.typescript, + collect_export_files_recursive(&typescript_dir)? + ); + assert_json_export_trees_match( + &exports.json_schema, + &collect_export_files_recursive(&json_dir)?, + )?; + assert_eq!(exports.internal_json_schema, BTreeMap::new()); + Ok(()) +} + +#[test] +#[ignore = "invoked by `just write-app-server-schema`"] +fn write_schema_fixtures_from_env() -> Result<()> { + let schema_root = std::env::var_os("CODEX_APP_SERVER_SCHEMA_ROOT") + .map(PathBuf::from) + .context("CODEX_APP_SERVER_SCHEMA_ROOT must be set")?; + let prettier = std::env::var_os("CODEX_APP_SERVER_SCHEMA_PRETTIER").map(PathBuf::from); + let experimental = std::env::var("CODEX_APP_SERVER_SCHEMA_EXPERIMENTAL") + .context("CODEX_APP_SERVER_SCHEMA_EXPERIMENTAL must be set")?; + let experimental_api = match experimental.as_str() { + "0" => false, + "1" => true, + value => { + anyhow::bail!("CODEX_APP_SERVER_SCHEMA_EXPERIMENTAL must be 0 or 1, got {value:?}") + } + }; + + write_schema_fixtures_with_options( + &schema_root, + prettier.as_deref(), + SchemaFixtureOptions { experimental_api }, + ) +} + fn assert_schema_fixtures_match_generated( label: &'static str, generate: impl FnOnce(&Path) -> Result<()>, @@ -52,9 +135,24 @@ fn assert_schema_fixtures_match_generated( })?; let generated_tree = read_tree(temp_dir.path(), label)?; + assert_schema_trees_match(label, &fixture_tree, &generated_tree) +} - assert_schema_trees_match(label, &fixture_tree, &generated_tree)?; - +fn assert_json_export_trees_match( + expected: &BTreeMap, + actual: &BTreeMap, +) -> Result<()> { + assert_eq!( + expected.keys().collect::>(), + actual.keys().collect::>() + ); + for (path, expected) in expected { + let expected: serde_json::Value = serde_json::from_str(expected) + .with_context(|| format!("parse precomputed JSON export {path}"))?; + let actual: serde_json::Value = serde_json::from_str(&actual[path]) + .with_context(|| format!("parse freshly generated JSON export {path}"))?; + assert_eq!(expected, actual, "JSON export differs: {path}"); + } Ok(()) } @@ -86,7 +184,6 @@ Run `just write-app-server-schema` to overwrite with your changes.\n\n{diff}" ); } - // If the file sets match, diff contents for each file for a nicer error. for (path, expected) in fixture_tree { let actual = generated_tree .get(path) @@ -113,8 +210,6 @@ Run `just write-app-server-schema` to overwrite with your changes.\n\n{diff}", } fn schema_root() -> Result { - // In Bazel runfiles (especially manifest-only mode), resolving directories is not - // reliable. Resolve a known file, then walk up to the schema root. let typescript_index = codex_utils_cargo_bin::find_resource!("schema/typescript/index.ts") .context("resolve TypeScript schema index.ts")?; let schema_root = typescript_index @@ -123,7 +218,6 @@ fn schema_root() -> Result { .context("derive schema root from schema/typescript/index.ts")? .to_path_buf(); - // Sanity check that the JSON fixtures resolve to the same schema root. let json_bundle = codex_utils_cargo_bin::find_resource!("schema/json/codex_app_server_protocol.schemas.json") .context("resolve JSON schema bundle")?; diff --git a/codex-rs/app-server/README.md b/codex-rs/app-server/README.md index 680e223e76..0ff7854162 100644 --- a/codex-rs/app-server/README.md +++ b/codex-rs/app-server/README.md @@ -2438,7 +2438,7 @@ For server-initiated request payloads, annotate the field the same way so schema ```bash just write-app-server-schema - # Include experimental API fields/methods in fixtures. + # Refresh the embedded exports that include experimental API fields/methods. just write-app-server-schema --experimental ```