From 27cec53ddc67a994a68732f9f3e9b3d9cc531859 Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Thu, 18 Dec 2025 21:44:02 -0800 Subject: [PATCH] error --- codex-rs/core/src/codex.rs | 44 +++++++++++++--------- codex-rs/core/tests/suite/remote_models.rs | 11 ------ 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index cbe80df26b..d4a87d46f5 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -2368,6 +2368,30 @@ pub(crate) async fn run_task( last_agent_message } +async fn refresh_models_and_reset_turn_context( + sess: &Arc, + turn_context: &mut Arc, +) { + let config = { + let state = sess.state.lock().await; + state + .session_configuration + .original_config_do_not_use + .clone() + }; + if let Err(err) = sess + .services + .models_manager + .refresh_available_models(&config) + .await + { + error!("failed to refresh models after outdated models error: {err}"); + } + *turn_context = sess + .new_default_turn_with_sub_id(turn_context.sub_id.clone()) + .await; +} + async fn run_auto_compact(sess: &Arc, turn_context: &Arc) { if should_use_remote_compact_task(sess.as_ref(), &turn_context.client.get_provider()) { run_inline_remote_auto_compact_task(Arc::clone(sess), Arc::clone(turn_context)).await; @@ -2460,24 +2484,8 @@ async fn run_turn( retries += 1; // Refresh models if we got an outdated models error if matches!(e, CodexErr::OutdatedModels) { - let config = { - let state = sess.state.lock().await; - state - .session_configuration - .original_config_do_not_use - .clone() - }; - if let Err(err) = sess - .services - .models_manager - .refresh_available_models(&config) - .await - { - error!("failed to refresh models after outdated models error: {err}"); - } - *turn_context = sess - .new_default_turn_with_sub_id(turn_context.sub_id.clone()) - .await; + refresh_models_and_reset_turn_context(&sess, turn_context).await; + continue; } let delay = match e { CodexErr::Stream(_, Some(delay)) => delay, diff --git a/codex-rs/core/tests/suite/remote_models.rs b/codex-rs/core/tests/suite/remote_models.rs index b03f3ce09f..d54405fe6d 100644 --- a/codex-rs/core/tests/suite/remote_models.rs +++ b/codex-rs/core/tests/suite/remote_models.rs @@ -530,17 +530,6 @@ async fn remote_models_refresh_etag_after_outdated_models() -> Result<()> { }) .await?; - let stream_error = - wait_for_event(&codex, |event| matches!(event, EventMsg::StreamError(_))).await; - let EventMsg::StreamError(stream_error) = stream_error else { - unreachable!(); - }; - assert!( - stream_error.message.starts_with("Reconnecting..."), - "unexpected stream error message: {}", - stream_error.message - ); - wait_for_event(&codex, |event| matches!(event, EventMsg::TaskComplete(_))).await; // Phase 3c: assert the refresh happened and the ETag was updated.