Compare commits

...

2 Commits

Author SHA1 Message Date
Dylan Hurd
39f12fb74a update prompt_caching test 2026-02-01 16:28:28 -08:00
Dylan Hurd
23cc805e85 fix(core) Stop duplicating personality messages 2026-02-01 15:58:47 -08:00
5 changed files with 46 additions and 5 deletions

View File

@@ -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()

View File

@@ -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()

View File

@@ -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),
&current_context,
@@ -2613,6 +2616,7 @@ mod handlers {
sess.record_conversation_items(&current_context, &update_items)
.await;
}
*previous_turn_context = Some(current_context);
}
pub async fn user_input_or_turn(

View File

@@ -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>"))

View File

@@ -388,17 +388,14 @@ async fn overrides_turn_context_but_keeps_cached_prefix_and_key_constant() -> an
});
let expected_permissions_msg = body1["input"][0].clone();
let body1_input = body1["input"].as_array().expect("input array");
// After overriding the turn context, emit two updated permissions messages.
// After overriding the turn context, emit one updated permissions message.
let expected_permissions_msg_2 = body2["input"][body1_input.len()].clone();
let expected_permissions_msg_3 = body2["input"][body1_input.len() + 1].clone();
assert_ne!(
expected_permissions_msg_2, expected_permissions_msg,
"expected updated permissions message after override"
);
assert_eq!(expected_permissions_msg_2, expected_permissions_msg_3);
let mut expected_body2 = body1_input.to_vec();
expected_body2.push(expected_permissions_msg_2);
expected_body2.push(expected_permissions_msg_3);
expected_body2.push(expected_user_message_2);
assert_eq!(body2["input"], serde_json::Value::Array(expected_body2));