diff --git a/codex-rs/tui/src/app.rs b/codex-rs/tui/src/app.rs index 2ea82c2368..0786c0309c 100644 --- a/codex-rs/tui/src/app.rs +++ b/codex-rs/tui/src/app.rs @@ -7551,7 +7551,7 @@ smart_approvals = true } #[tokio::test] - async fn override_turn_context_and_reload_user_config_use_runtime_path() { + async fn legacy_runtime_ops_use_runtime_path() { let mut app = make_test_app().await; let app_server = start_test_app_server(app.config.clone()).await; let event = app @@ -7583,6 +7583,16 @@ smart_approvals = true app.submit_app_server_op(&app_server, event.session_id, Op::ReloadUserConfig) .await ); + assert!( + app.submit_app_server_op( + &app_server, + event.session_id, + Op::AddToHistory { + text: "persist me".to_string(), + }, + ) + .await + ); app_server .shutdown() diff --git a/codex-rs/tui/src/app/app_server_adapter.rs b/codex-rs/tui/src/app/app_server_adapter.rs index f6fd7306a8..89e8547b20 100644 --- a/codex-rs/tui/src/app/app_server_adapter.rs +++ b/codex-rs/tui/src/app/app_server_adapter.rs @@ -624,11 +624,6 @@ impl App { resolve_server_request(app_server_client, request_id, response, "item/tool/call") .await?; } - Op::AddToHistory { text } => { - let _ = (thread_id, text); - // TODO(app-server): expose message-history append/lookup APIs and migrate - // `AddToHistory`/`GetHistoryEntryRequest` together. - } Op::ListSkills { cwds, force_reload } => { let response: SkillsListResponse = send_request_with_response( app_server_client, @@ -720,7 +715,8 @@ impl App { self.unsubscribe_thread_via_app_server(app_server_client, thread_id) .await?; } - Op::ListCustomPrompts + Op::AddToHistory { .. } + | Op::ListCustomPrompts | Op::Undo | Op::DropMemories | Op::UpdateMemories diff --git a/codex-rs/tui/src/lib.rs b/codex-rs/tui/src/lib.rs index 9294f767b4..808f2d6f60 100644 --- a/codex-rs/tui/src/lib.rs +++ b/codex-rs/tui/src/lib.rs @@ -678,17 +678,7 @@ async fn run_ratatui_app( None }; let login_status = if let Some(app_server) = onboarding_app_server.as_ref() { - match read_login_status_via_app_server(app_server).await { - Ok(status) => status, - Err(err) => { - if let Some(app_server) = onboarding_app_server.take() { - let _ = app_server.shutdown().await; - } - restore(); - session_log::log_session_end(); - return Err(color_eyre::eyre::eyre!("{err}")); - } - } + read_login_status_via_app_server(app_server).await } else { LoginStatus::NotAuthenticated }; diff --git a/codex-rs/tui/src/onboarding/account_login.rs b/codex-rs/tui/src/onboarding/account_login.rs index abaf2ce50f..16831ba297 100644 --- a/codex-rs/tui/src/onboarding/account_login.rs +++ b/codex-rs/tui/src/onboarding/account_login.rs @@ -10,6 +10,7 @@ use codex_app_server_protocol::LoginAccountResponse; use codex_app_server_protocol::RequestId; use codex_core::auth::AuthMode; use serde::de::DeserializeOwned; +use tracing::warn; use crate::LoginStatus; @@ -105,12 +106,25 @@ pub(crate) fn login_status_from_account(account: Option<&Account>) -> LoginStatu } } +fn login_status_from_account_read_result( + result: Result, +) -> LoginStatus { + match result { + Ok(response) => login_status_from_account(response.account.as_ref()), + Err(err) => { + warn!( + "account/read failed during onboarding startup; continuing unauthenticated: {err}" + ); + LoginStatus::NotAuthenticated + } + } +} + pub(crate) async fn read_login_status_via_app_server( app_server: &InProcessAppServerClient, -) -> Result { +) -> LoginStatus { let mut api = OnboardingAccountApi::default(); - let response = api.read_account(app_server).await?; - Ok(login_status_from_account(response.account.as_ref())) + login_status_from_account_read_result(api.read_account(app_server).await) } async fn send_request_with_response( @@ -126,3 +140,16 @@ where .await .map_err(|err| format!("{method} failed: {err}")) } + +#[cfg(test)] +mod tests { + use super::*; + use pretty_assertions::assert_eq; + + #[tokio::test] + async fn read_login_status_falls_back_to_unauthenticated_on_rpc_error() { + let status = login_status_from_account_read_result(Err("boom".to_string())); + + assert_eq!(status, LoginStatus::NotAuthenticated); + } +}