mirror of
https://github.com/openai/codex.git
synced 2026-10-24 18:18:41 +00:00
Keep realtime mirror outside turn handler
This commit is contained in:
+11
-18
@@ -4960,8 +4960,10 @@ mod handlers {
|
||||
}
|
||||
|
||||
pub async fn user_input_or_turn(sess: &Arc<Session>, 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<Session>,
|
||||
sub_id: String,
|
||||
op: Op,
|
||||
mirror_to_realtime: bool,
|
||||
) {
|
||||
) -> Option<Vec<UserInput>> {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user