From 2c48ebdbfb2b8849c5e6de07b2d821589e6ecd1f Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Wed, 18 Mar 2026 13:38:11 -0700 Subject: [PATCH] codex: remove token_data shim from core (#15079) Co-authored-by: Codex --- codex-rs/app-server/tests/common/auth_fixtures.rs | 4 ++-- codex-rs/core/src/api_bridge.rs | 2 +- codex-rs/core/src/auth.rs | 8 ++++---- codex-rs/core/src/auth/storage.rs | 2 +- codex-rs/core/src/auth/storage_tests.rs | 5 +++-- codex-rs/core/src/auth_tests.rs | 7 ++++--- codex-rs/core/src/connectors.rs | 2 +- codex-rs/core/src/error.rs | 4 ++-- codex-rs/core/src/lib.rs | 7 ++++++- codex-rs/core/src/token_data.rs | 1 - codex-rs/core/tests/suite/auth_refresh.rs | 4 ++-- codex-rs/login/src/lib.rs | 2 +- codex-rs/login/src/server.rs | 4 ++-- 13 files changed, 29 insertions(+), 23 deletions(-) delete mode 100644 codex-rs/core/src/token_data.rs diff --git a/codex-rs/app-server/tests/common/auth_fixtures.rs b/codex-rs/app-server/tests/common/auth_fixtures.rs index c52109ac5b..f164c72d8d 100644 --- a/codex-rs/app-server/tests/common/auth_fixtures.rs +++ b/codex-rs/app-server/tests/common/auth_fixtures.rs @@ -7,11 +7,11 @@ use base64::engine::general_purpose::URL_SAFE_NO_PAD; use chrono::DateTime; use chrono::Utc; use codex_app_server_protocol::AuthMode; +use codex_core::TokenData; use codex_core::auth::AuthCredentialsStoreMode; use codex_core::auth::AuthDotJson; use codex_core::auth::save_auth; -use codex_core::token_data::TokenData; -use codex_core::token_data::parse_chatgpt_jwt_claims; +use codex_core::parse_chatgpt_jwt_claims; use serde_json::json; /// Builder for writing a fake ChatGPT auth.json in tests. diff --git a/codex-rs/core/src/api_bridge.rs b/codex-rs/core/src/api_bridge.rs index 2060b78cf7..a4f03ba117 100644 --- a/codex-rs/core/src/api_bridge.rs +++ b/codex-rs/core/src/api_bridge.rs @@ -10,13 +10,13 @@ use http::HeaderMap; use serde::Deserialize; use serde_json::Value; +use crate::PlanType; use crate::auth::CodexAuth; use crate::error::CodexErr; use crate::error::RetryLimitReachedError; use crate::error::UnexpectedResponseError; use crate::error::UsageLimitReachedError; use crate::model_provider_info::ModelProviderInfo; -use crate::token_data::PlanType; pub(crate) fn map_api_error(err: ApiError) -> CodexErr { match err { diff --git a/codex-rs/core/src/auth.rs b/codex-rs/core/src/auth.rs index 90f0dcfdaf..ea2f50cff7 100644 --- a/codex-rs/core/src/auth.rs +++ b/codex-rs/core/src/auth.rs @@ -19,6 +19,9 @@ use codex_app_server_protocol::AuthMode as ApiAuthMode; use codex_otel::TelemetryAuthMode; use codex_protocol::config_types::ForcedLoginMethod; +use crate::KnownPlan as InternalKnownPlan; +use crate::PlanType as InternalPlanType; +use crate::TokenData; pub use crate::auth::storage::AuthCredentialsStoreMode; pub use crate::auth::storage::AuthDotJson; use crate::auth::storage::AuthStorageBackend; @@ -26,10 +29,7 @@ use crate::auth::storage::create_auth_storage; use crate::config::Config; use crate::error::RefreshTokenFailedError; use crate::error::RefreshTokenFailedReason; -use crate::token_data::KnownPlan as InternalKnownPlan; -use crate::token_data::PlanType as InternalPlanType; -use crate::token_data::TokenData; -use crate::token_data::parse_chatgpt_jwt_claims; +use crate::parse_chatgpt_jwt_claims; use crate::util::try_parse_error_message; use codex_client::CodexHttpClient; use codex_protocol::account::PlanType as AccountPlanType; diff --git a/codex-rs/core/src/auth/storage.rs b/codex-rs/core/src/auth/storage.rs index b1e04b8685..51af76c480 100644 --- a/codex-rs/core/src/auth/storage.rs +++ b/codex-rs/core/src/auth/storage.rs @@ -19,7 +19,7 @@ use std::sync::Arc; use std::sync::Mutex; use tracing::warn; -use crate::token_data::TokenData; +use crate::TokenData; use codex_app_server_protocol::AuthMode; use codex_keyring_store::DefaultKeyringStore; use codex_keyring_store::KeyringStore; diff --git a/codex-rs/core/src/auth/storage_tests.rs b/codex-rs/core/src/auth/storage_tests.rs index 4bf72c11b9..ff989f689b 100644 --- a/codex-rs/core/src/auth/storage_tests.rs +++ b/codex-rs/core/src/auth/storage_tests.rs @@ -1,5 +1,6 @@ use super::*; -use crate::token_data::IdTokenInfo; +use crate::IdTokenInfo; +use crate::TokenData; use anyhow::Context; use base64::Engine; use pretty_assertions::assert_eq; @@ -167,7 +168,7 @@ fn id_token_with_prefix(prefix: &str) -> IdTokenInfo { let signature_b64 = encode(b"sig"); let fake_jwt = format!("{header_b64}.{payload_b64}.{signature_b64}"); - crate::token_data::parse_chatgpt_jwt_claims(&fake_jwt).expect("fake JWT should parse") + crate::parse_chatgpt_jwt_claims(&fake_jwt).expect("fake JWT should parse") } fn auth_with_prefix(prefix: &str) -> AuthDotJson { diff --git a/codex-rs/core/src/auth_tests.rs b/codex-rs/core/src/auth_tests.rs index 3bc5eb6c78..44a8fc06ce 100644 --- a/codex-rs/core/src/auth_tests.rs +++ b/codex-rs/core/src/auth_tests.rs @@ -1,11 +1,12 @@ use super::*; +use crate::IdTokenInfo; +use crate::KnownPlan as InternalKnownPlan; +use crate::PlanType as InternalPlanType; +use crate::TokenData; use crate::auth::storage::FileAuthStorage; use crate::auth::storage::get_auth_file; use crate::config::Config; use crate::config::ConfigBuilder; -use crate::token_data::IdTokenInfo; -use crate::token_data::KnownPlan as InternalKnownPlan; -use crate::token_data::PlanType as InternalPlanType; use codex_protocol::account::PlanType as AccountPlanType; use base64::Engine; diff --git a/codex-rs/core/src/connectors.rs b/codex-rs/core/src/connectors.rs index fdd5cfb59e..a41a94b631 100644 --- a/codex-rs/core/src/connectors.rs +++ b/codex-rs/core/src/connectors.rs @@ -25,6 +25,7 @@ use tracing::warn; use crate::AuthManager; use crate::CodexAuth; use crate::SandboxState; +use crate::TokenData; use crate::config::Config; use crate::config::types::AppToolApproval; use crate::config::types::AppsConfigToml; @@ -44,7 +45,6 @@ use crate::mcp_connection_manager::codex_apps_tools_cache_key; use crate::plugins::AppConnectorId; use crate::plugins::PluginsManager; use crate::plugins::list_tool_suggest_discoverable_plugins; -use crate::token_data::TokenData; use crate::tools::discoverable::DiscoverablePluginInfo; use crate::tools::discoverable::DiscoverableTool; diff --git a/codex-rs/core/src/error.rs b/codex-rs/core/src/error.rs index 72afcb890a..555eb02b07 100644 --- a/codex-rs/core/src/error.rs +++ b/codex-rs/core/src/error.rs @@ -1,7 +1,7 @@ +use crate::KnownPlan; +use crate::PlanType; use crate::exec::ExecToolCallOutput; use crate::network_policy_decision::NetworkPolicyDecisionPayload; -use crate::token_data::KnownPlan; -use crate::token_data::PlanType; use crate::truncate::TruncationPolicy; use crate::truncate::truncate_text; use chrono::DateTime; diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 10a51b23ec..bcdcb35fbd 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -76,11 +76,16 @@ mod shell_detect; mod stream_events_utils; pub mod test_support; mod text_encoding; -pub mod token_data; mod truncate; mod unified_exec; pub mod windows_sandbox; pub use client::X_RESPONSESAPI_INCLUDE_TIMING_METRICS_HEADER; +pub use codex_auth::token_data::IdTokenInfo; +pub use codex_auth::token_data::IdTokenInfoError; +pub use codex_auth::token_data::KnownPlan; +pub use codex_auth::token_data::PlanType; +pub use codex_auth::token_data::TokenData; +pub use codex_auth::token_data::parse_chatgpt_jwt_claims; pub use model_provider_info::DEFAULT_LMSTUDIO_PORT; pub use model_provider_info::DEFAULT_OLLAMA_PORT; pub use model_provider_info::LMSTUDIO_OSS_PROVIDER_ID; diff --git a/codex-rs/core/src/token_data.rs b/codex-rs/core/src/token_data.rs deleted file mode 100644 index 105e171a04..0000000000 --- a/codex-rs/core/src/token_data.rs +++ /dev/null @@ -1 +0,0 @@ -pub use codex_auth::token_data::*; diff --git a/codex-rs/core/tests/suite/auth_refresh.rs b/codex-rs/core/tests/suite/auth_refresh.rs index f5b13f0918..46ac87cf79 100644 --- a/codex-rs/core/tests/suite/auth_refresh.rs +++ b/codex-rs/core/tests/suite/auth_refresh.rs @@ -5,6 +5,8 @@ use chrono::Duration; use chrono::Utc; use codex_app_server_protocol::AuthMode; use codex_core::AuthManager; +use codex_core::IdTokenInfo; +use codex_core::TokenData; use codex_core::auth::AuthCredentialsStoreMode; use codex_core::auth::AuthDotJson; use codex_core::auth::REFRESH_TOKEN_URL_OVERRIDE_ENV_VAR; @@ -12,8 +14,6 @@ use codex_core::auth::RefreshTokenError; use codex_core::auth::load_auth_dot_json; use codex_core::auth::save_auth; use codex_core::error::RefreshTokenFailedReason; -use codex_core::token_data::IdTokenInfo; -use codex_core::token_data::TokenData; use core_test_support::skip_if_no_network; use pretty_assertions::assert_eq; use serde::Serialize; diff --git a/codex-rs/login/src/lib.rs b/codex-rs/login/src/lib.rs index 60b0c57f28..bb8bb7dd62 100644 --- a/codex-rs/login/src/lib.rs +++ b/codex-rs/login/src/lib.rs @@ -16,6 +16,7 @@ pub use server::run_login_server; pub use codex_app_server_protocol::AuthMode; pub use codex_core::AuthManager; pub use codex_core::CodexAuth; +pub use codex_core::TokenData; pub use codex_core::auth::AuthDotJson; pub use codex_core::auth::CLIENT_ID; pub use codex_core::auth::CODEX_API_KEY_ENV_VAR; @@ -23,4 +24,3 @@ pub use codex_core::auth::OPENAI_API_KEY_ENV_VAR; pub use codex_core::auth::login_with_api_key; pub use codex_core::auth::logout; pub use codex_core::auth::save_auth; -pub use codex_core::token_data::TokenData; diff --git a/codex-rs/login/src/server.rs b/codex-rs/login/src/server.rs index a51e038dc1..c25fab771f 100644 --- a/codex-rs/login/src/server.rs +++ b/codex-rs/login/src/server.rs @@ -29,12 +29,12 @@ use base64::Engine; use chrono::Utc; use codex_app_server_protocol::AuthMode; use codex_client::build_reqwest_client_with_custom_ca; +use codex_core::TokenData; use codex_core::auth::AuthCredentialsStoreMode; use codex_core::auth::AuthDotJson; use codex_core::auth::save_auth; use codex_core::default_client::originator; -use codex_core::token_data::TokenData; -use codex_core::token_data::parse_chatgpt_jwt_claims; +use codex_core::parse_chatgpt_jwt_claims; use rand::RngCore; use serde_json::Value as JsonValue; use tiny_http::Header;