This commit is contained in:
Ahmed Ibrahim
2025-12-18 21:44:02 -08:00
parent 42273d94e8
commit 27cec53ddc
2 changed files with 26 additions and 29 deletions

View File

@@ -2368,6 +2368,30 @@ pub(crate) async fn run_task(
last_agent_message
}
async fn refresh_models_and_reset_turn_context(
sess: &Arc<Session>,
turn_context: &mut Arc<TurnContext>,
) {
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<Session>, turn_context: &Arc<TurnContext>) {
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,

View File

@@ -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.