mirror of
https://github.com/openai/codex.git
synced 2026-05-29 15:30:22 +00:00
Persist refreshed context before first sampling request
Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
@@ -5351,7 +5351,6 @@ pub(crate) async fn run_turn(
|
||||
prewarmed_client_session.unwrap_or_else(|| sess.services.model_client.new_session());
|
||||
let mut client_session_model_slug = turn_context.model_info.slug.clone();
|
||||
let initial_turn_context = Arc::clone(&turn_context);
|
||||
let mut is_first_sampling_request = true;
|
||||
let mut should_check_pre_request_compaction = false;
|
||||
|
||||
loop {
|
||||
@@ -5396,11 +5395,8 @@ pub(crate) async fn run_turn(
|
||||
client_session_model_slug = turn_context.model_info.slug.clone();
|
||||
server_model_warning_emitted_for_turn = false;
|
||||
}
|
||||
if !is_first_sampling_request {
|
||||
sess.maybe_record_context_updates_for_turn(turn_context.as_ref())
|
||||
.await;
|
||||
}
|
||||
is_first_sampling_request = false;
|
||||
sess.maybe_record_context_updates_for_turn(turn_context.as_ref())
|
||||
.await;
|
||||
|
||||
// Note that pending_input would be something like a message the user
|
||||
// submitted through the UI while the model was running. Though the UI
|
||||
@@ -9427,6 +9423,38 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn maybe_record_context_updates_for_turn_noops_when_reference_matches() {
|
||||
let (session, turn_context) = make_session_and_context().await;
|
||||
{
|
||||
let mut state = session.state.lock().await;
|
||||
state.set_reference_context_item(Some(turn_context.to_turn_context_item()));
|
||||
}
|
||||
session
|
||||
.set_previous_turn_settings_from_turn_context(&turn_context)
|
||||
.await;
|
||||
|
||||
session
|
||||
.maybe_record_context_updates_for_turn(&turn_context)
|
||||
.await;
|
||||
|
||||
assert_eq!(
|
||||
session.clone_history().await.raw_items().to_vec(),
|
||||
Vec::new()
|
||||
);
|
||||
assert_eq!(
|
||||
session.reference_context_item().await,
|
||||
Some(turn_context.to_turn_context_item())
|
||||
);
|
||||
assert_eq!(
|
||||
session.previous_turn_settings().await,
|
||||
Some(PreviousTurnSettings {
|
||||
model: turn_context.model_info.slug.clone(),
|
||||
realtime_active: Some(turn_context.realtime_active),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn mid_turn_compaction_advances_previous_turn_settings_for_model_change() {
|
||||
let (session, previous_context) = make_session_and_context().await;
|
||||
|
||||
Reference in New Issue
Block a user