diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 9ae4e7c46..b084aec05 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -410,6 +410,7 @@ dependencies = [ "codex-app-server-protocol", "codex-core", "codex-features", + "codex-login", "codex-protocol", "codex-utils-cargo-bin", "core_test_support", @@ -1594,6 +1595,7 @@ dependencies = [ "codex-connectors", "codex-core", "codex-git-utils", + "codex-login", "codex-utils-cargo-bin", "codex-utils-cli", "pretty_assertions", diff --git a/codex-rs/app-server/tests/common/Cargo.toml b/codex-rs/app-server/tests/common/Cargo.toml index 851ba9556..4eef03e96 100644 --- a/codex-rs/app-server/tests/common/Cargo.toml +++ b/codex-rs/app-server/tests/common/Cargo.toml @@ -14,6 +14,7 @@ chrono = { workspace = true } codex-app-server-protocol = { workspace = true } codex-core = { workspace = true } codex-features = { workspace = true } +codex-login = { workspace = true } codex-protocol = { workspace = true } codex-utils-cargo-bin = { workspace = true } serde = { workspace = true } diff --git a/codex-rs/app-server/tests/common/auth_fixtures.rs b/codex-rs/app-server/tests/common/auth_fixtures.rs index c52109ac5..d814dece4 100644 --- a/codex-rs/app-server/tests/common/auth_fixtures.rs +++ b/codex-rs/app-server/tests/common/auth_fixtures.rs @@ -10,8 +10,8 @@ use codex_app_server_protocol::AuthMode; 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_login::token_data::TokenData; +use codex_login::token_data::parse_chatgpt_jwt_claims; use serde_json::json; /// Builder for writing a fake ChatGPT auth.json in tests. diff --git a/codex-rs/chatgpt/Cargo.toml b/codex-rs/chatgpt/Cargo.toml index cd14a6700..84c793b53 100644 --- a/codex-rs/chatgpt/Cargo.toml +++ b/codex-rs/chatgpt/Cargo.toml @@ -12,6 +12,7 @@ anyhow = { workspace = true } clap = { workspace = true, features = ["derive"] } codex-connectors = { workspace = true } codex-core = { workspace = true } +codex-login = { workspace = true } codex-utils-cli = { workspace = true } codex-utils-cargo-bin = { workspace = true } serde = { workspace = true, features = ["derive"] } diff --git a/codex-rs/chatgpt/src/chatgpt_token.rs b/codex-rs/chatgpt/src/chatgpt_token.rs index 93aaef7ed..ceca132e9 100644 --- a/codex-rs/chatgpt/src/chatgpt_token.rs +++ b/codex-rs/chatgpt/src/chatgpt_token.rs @@ -1,10 +1,10 @@ use codex_core::AuthManager; +use codex_login::token_data::TokenData; use std::path::Path; use std::sync::LazyLock; use std::sync::RwLock; use codex_core::auth::AuthCredentialsStoreMode; -use codex_core::token_data::TokenData; static CHATGPT_TOKEN: LazyLock>> = LazyLock::new(|| RwLock::new(None)); diff --git a/codex-rs/chatgpt/src/connectors.rs b/codex-rs/chatgpt/src/connectors.rs index 4dcf8886c..3c2b2fe4e 100644 --- a/codex-rs/chatgpt/src/connectors.rs +++ b/codex-rs/chatgpt/src/connectors.rs @@ -1,6 +1,6 @@ use codex_core::AuthManager; use codex_core::config::Config; -use codex_core::token_data::TokenData; +use codex_login::token_data::TokenData; use std::collections::HashSet; use std::time::Duration; diff --git a/codex-rs/core/src/api_bridge.rs b/codex-rs/core/src/api_bridge.rs index 2060b78cf..e7826f9ac 100644 --- a/codex-rs/core/src/api_bridge.rs +++ b/codex-rs/core/src/api_bridge.rs @@ -6,6 +6,7 @@ use codex_api::TransportError; use codex_api::error::ApiError; use codex_api::rate_limits::parse_promo_message; use codex_api::rate_limits::parse_rate_limit_for_limit; +use codex_login::token_data::PlanType; use http::HeaderMap; use serde::Deserialize; use serde_json::Value; @@ -16,7 +17,6 @@ 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/connectors.rs b/codex-rs/core/src/connectors.rs index fdb0f4322..e4999b9b4 100644 --- a/codex-rs/core/src/connectors.rs +++ b/codex-rs/core/src/connectors.rs @@ -16,6 +16,7 @@ pub use codex_app_server_protocol::AppInfo; pub use codex_app_server_protocol::AppMetadata; use codex_connectors::AllConnectorsCacheKey; use codex_connectors::DirectoryListResponse; +use codex_login::token_data::TokenData; use codex_protocol::protocol::SandboxPolicy; use rmcp::model::ToolAnnotations; use serde::Deserialize; @@ -43,7 +44,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; use codex_features::Feature; diff --git a/codex-rs/core/src/error.rs b/codex-rs/core/src/error.rs index b0c55a55c..1fef42e0a 100644 --- a/codex-rs/core/src/error.rs +++ b/codex-rs/core/src/error.rs @@ -1,7 +1,5 @@ use crate::exec::ExecToolCallOutput; use crate::network_policy_decision::NetworkPolicyDecisionPayload; -use crate::token_data::KnownPlan; -use crate::token_data::PlanType; use chrono::DateTime; use chrono::Datelike; use chrono::Local; @@ -9,6 +7,8 @@ use chrono::Utc; use codex_async_utils::CancelErr; pub use codex_login::auth::RefreshTokenFailedError; pub use codex_login::auth::RefreshTokenFailedReason; +use codex_login::token_data::KnownPlan; +use codex_login::token_data::PlanType; use codex_protocol::ThreadId; use codex_protocol::protocol::CodexErrorInfo; use codex_protocol::protocol::ErrorEvent; diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 1ed3250f3..ea2651f92 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -102,7 +102,6 @@ mod skills_watcher; mod stream_events_utils; pub mod test_support; mod text_encoding; -pub use codex_login::token_data; mod unified_exec; pub mod windows_sandbox; pub use client::X_RESPONSESAPI_INCLUDE_TIMING_METRICS_HEADER; diff --git a/codex-rs/core/tests/suite/auth_refresh.rs b/codex-rs/core/tests/suite/auth_refresh.rs index 3390a9319..c5302bbac 100644 --- a/codex-rs/core/tests/suite/auth_refresh.rs +++ b/codex-rs/core/tests/suite/auth_refresh.rs @@ -12,8 +12,8 @@ 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 codex_login::token_data::IdTokenInfo; +use codex_login::token_data::TokenData; use core_test_support::skip_if_no_network; use pretty_assertions::assert_eq; use serde::Serialize; diff --git a/codex-rs/tui_app_server/src/local_chatgpt_auth.rs b/codex-rs/tui_app_server/src/local_chatgpt_auth.rs index 33d6e508a..cc4af28ea 100644 --- a/codex-rs/tui_app_server/src/local_chatgpt_auth.rs +++ b/codex-rs/tui_app_server/src/local_chatgpt_auth.rs @@ -60,8 +60,8 @@ mod tests { use codex_app_server_protocol::AuthMode; use codex_core::auth::AuthDotJson; use codex_core::auth::save_auth; - use codex_core::token_data::TokenData; use codex_login::auth::login_with_chatgpt_auth_tokens; + use codex_login::token_data::TokenData; use pretty_assertions::assert_eq; use serde::Serialize; use serde_json::json; @@ -99,7 +99,7 @@ mod tests { auth_mode: Some(AuthMode::Chatgpt), openai_api_key: None, tokens: Some(TokenData { - id_token: codex_core::token_data::parse_chatgpt_jwt_claims(&id_token) + id_token: codex_login::token_data::parse_chatgpt_jwt_claims(&id_token) .expect("id token should parse"), access_token, refresh_token: "refresh-token".to_string(),