diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 209a4d8604..6007a5d654 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -4960,8 +4960,10 @@ mod handlers { } pub async fn user_input_or_turn(sess: &Arc, sub_id: String, op: Op) { - let mirror_to_realtime = true; - user_input_or_turn_inner(sess, sub_id, op, mirror_to_realtime).await; + let accepted_items = user_input_or_turn_inner(sess, sub_id, op).await; + if let Some(items) = accepted_items { + mirror_user_text_to_realtime(sess, &items).await; + } } pub(super) async fn user_input_or_turn_without_realtime_text_mirror( @@ -4969,16 +4971,14 @@ mod handlers { sub_id: String, op: Op, ) { - let mirror_to_realtime = false; - user_input_or_turn_inner(sess, sub_id, op, mirror_to_realtime).await; + let _ = user_input_or_turn_inner(sess, sub_id, op).await; } async fn user_input_or_turn_inner( sess: &Arc, sub_id: String, op: Op, - mirror_to_realtime: bool, - ) { + ) -> Option> { let (items, updates, responsesapi_client_metadata) = match op { Op::UserTurn { cwd, @@ -5040,7 +5040,7 @@ mod handlers { let Ok(current_context) = sess.new_turn_with_sub_id(sub_id.clone(), updates).await else { // new_turn_with_sub_id already emits the error event. - return; + return None; }; sess.maybe_emit_unknown_model_warning_for_turn(current_context.as_ref()) .await; @@ -5054,9 +5054,7 @@ mod handlers { { Ok(_) => { current_context.session_telemetry.user_prompt(&items); - if mirror_to_realtime { - mirror_user_text_to_realtime(sess, &items).await; - } + Some(items) } Err(SteerInputError::NoActiveTurn(items)) => { if let Some(responsesapi_client_metadata) = responsesapi_client_metadata { @@ -5067,20 +5065,14 @@ mod handlers { current_context.session_telemetry.user_prompt(&items); sess.refresh_mcp_servers_if_requested(¤t_context) .await; - let realtime_items = if mirror_to_realtime { - Some(items.clone()) - } else { - None - }; + let accepted_items = items.clone(); sess.spawn_task( Arc::clone(¤t_context), items, crate::tasks::RegularTask::new(), ) .await; - if let Some(items) = realtime_items { - mirror_user_text_to_realtime(sess, &items).await; - } + Some(accepted_items) } Err(err) => { sess.send_event_raw(Event { @@ -5088,6 +5080,7 @@ mod handlers { msg: EventMsg::Error(err.to_error_event()), }) .await; + None } } }