mirror of
https://github.com/openai/codex.git
synced 2026-04-24 06:35:50 +00:00
fix(core) Stop duplicating personality messages
This commit is contained in:
@@ -437,6 +437,14 @@ async fn thread_resume_accepts_personality_override() -> Result<()> {
|
||||
|
||||
let request = response_mock.single_request();
|
||||
let developer_texts = request.message_input_texts("developer");
|
||||
let personality_update_count = developer_texts
|
||||
.iter()
|
||||
.filter(|text| text.contains("<personality_spec>"))
|
||||
.count();
|
||||
assert_eq!(
|
||||
personality_update_count, 1,
|
||||
"expected exactly one personality update message in developer input, got {developer_texts:?}"
|
||||
);
|
||||
assert!(
|
||||
developer_texts
|
||||
.iter()
|
||||
|
||||
@@ -474,6 +474,14 @@ async fn turn_start_accepts_personality_override_v2() -> Result<()> {
|
||||
eprintln!("request body: {}", request.body_json());
|
||||
}
|
||||
|
||||
let personality_update_count = developer_texts
|
||||
.iter()
|
||||
.filter(|text| text.contains("<personality_spec>"))
|
||||
.count();
|
||||
assert_eq!(
|
||||
personality_update_count, 1,
|
||||
"expected exactly one personality update message in developer input, got {developer_texts:?}"
|
||||
);
|
||||
assert!(
|
||||
developer_texts
|
||||
.iter()
|
||||
@@ -585,6 +593,14 @@ async fn turn_start_change_personality_mid_thread_v2() -> Result<()> {
|
||||
);
|
||||
|
||||
let second_developer_texts = requests[1].message_input_texts("developer");
|
||||
let personality_update_count = second_developer_texts
|
||||
.iter()
|
||||
.filter(|text| text.contains("<personality_spec>"))
|
||||
.count();
|
||||
assert_eq!(
|
||||
personality_update_count, 1,
|
||||
"expected exactly one personality update message in second request, got {second_developer_texts:?}"
|
||||
);
|
||||
assert!(
|
||||
second_developer_texts
|
||||
.iter()
|
||||
|
||||
@@ -2434,6 +2434,7 @@ async fn submission_loop(sess: Arc<Session>, config: Arc<Config>, rx_sub: Receiv
|
||||
personality,
|
||||
..Default::default()
|
||||
},
|
||||
&mut previous_context,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
@@ -2572,6 +2573,7 @@ mod handlers {
|
||||
sess: &Session,
|
||||
sub_id: String,
|
||||
updates: SessionSettingsUpdate,
|
||||
previous_turn_context: &mut Option<Arc<TurnContext>>,
|
||||
) {
|
||||
let previous_context = sess
|
||||
.new_default_turn_with_sub_id(sess.next_internal_sub_id())
|
||||
@@ -2597,12 +2599,13 @@ mod handlers {
|
||||
return;
|
||||
}
|
||||
|
||||
let current_context = sess.new_default_turn_with_sub_id(sub_id).await;
|
||||
let initial_context_seeded = sess.state.lock().await.initial_context_seeded;
|
||||
if !initial_context_seeded {
|
||||
*previous_turn_context = Some(current_context);
|
||||
return;
|
||||
}
|
||||
|
||||
let current_context = sess.new_default_turn_with_sub_id(sub_id).await;
|
||||
let update_items = sess.build_settings_update_items(
|
||||
Some(&previous_context),
|
||||
¤t_context,
|
||||
@@ -2613,6 +2616,7 @@ mod handlers {
|
||||
sess.record_conversation_items(¤t_context, &update_items)
|
||||
.await;
|
||||
}
|
||||
*previous_turn_context = Some(current_context);
|
||||
}
|
||||
|
||||
pub async fn user_input_or_turn(
|
||||
|
||||
@@ -255,6 +255,14 @@ async fn user_turn_personality_some_adds_update_message() -> anyhow::Result<()>
|
||||
.expect("expected personality update request");
|
||||
|
||||
let developer_texts = request.message_input_texts("developer");
|
||||
let personality_update_count = developer_texts
|
||||
.iter()
|
||||
.filter(|text| text.contains("<personality_spec>"))
|
||||
.count();
|
||||
assert_eq!(
|
||||
personality_update_count, 1,
|
||||
"expected exactly one personality update message in developer input, got {developer_texts:?}"
|
||||
);
|
||||
let personality_text = developer_texts
|
||||
.iter()
|
||||
.find(|text| text.contains("<personality_spec>"))
|
||||
@@ -738,6 +746,14 @@ async fn user_turn_personality_remote_model_template_includes_update_message() -
|
||||
.last()
|
||||
.expect("expected personality update request");
|
||||
let developer_texts = request.message_input_texts("developer");
|
||||
let personality_update_count = developer_texts
|
||||
.iter()
|
||||
.filter(|text| text.contains("<personality_spec>"))
|
||||
.count();
|
||||
assert_eq!(
|
||||
personality_update_count, 1,
|
||||
"expected exactly one personality update message in developer input, got {developer_texts:?}"
|
||||
);
|
||||
let personality_text = developer_texts
|
||||
.iter()
|
||||
.find(|text| text.contains("<personality_spec>"))
|
||||
|
||||
Reference in New Issue
Block a user