mirror of
https://github.com/openai/codex.git
synced 2026-10-29 19:08:43 +00:00
rework to isolate core
This commit is contained in:
@@ -63,6 +63,7 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "first request".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
@@ -87,6 +88,7 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies()
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "commentary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: Some(MessagePhase::Commentary),
|
||||
}],
|
||||
@@ -101,6 +103,7 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies()
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "final response".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: Some(MessagePhase::FinalAnswer),
|
||||
}],
|
||||
@@ -115,6 +118,7 @@ async fn build_arc_monitor_request_includes_relevant_history_and_null_policies()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "latest request".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
@@ -269,6 +273,7 @@ async fn monitor_action_posts_expected_arc_request() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "please run the tool".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
@@ -348,6 +353,7 @@ async fn monitor_action_uses_env_url_and_token_overrides() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "please run the tool".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
@@ -417,6 +423,7 @@ async fn monitor_action_rejects_legacy_response_fields() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "please run the tool".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
|
||||
@@ -2670,6 +2670,7 @@ impl Session {
|
||||
.inject_response_items(vec![ResponseInputItem::Message {
|
||||
role: "developer".to_string(),
|
||||
content: vec![ContentItem::InputText { text }],
|
||||
metadata: None,
|
||||
}])
|
||||
.await
|
||||
.is_err()
|
||||
@@ -2767,6 +2768,7 @@ impl Session {
|
||||
.inject_response_items(vec![ResponseInputItem::Message {
|
||||
role: "developer".to_string(),
|
||||
content: vec![ContentItem::InputText { text }],
|
||||
metadata: None,
|
||||
}])
|
||||
.await
|
||||
.is_err()
|
||||
@@ -3241,6 +3243,7 @@ impl Session {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("Warning: {}", message.into()),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
@@ -16,6 +16,7 @@ fn user_message(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -28,6 +29,7 @@ fn assistant_message(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -107,6 +107,7 @@ fn user_message(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -119,6 +120,7 @@ fn assistant_message(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -131,6 +133,7 @@ fn skill_message(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -682,6 +685,7 @@ async fn reconstruct_history_uses_replacement_history_verbatim() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -693,6 +697,7 @@ async fn reconstruct_history_uses_replacement_history_verbatim() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "stale developer instructions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -3338,6 +3343,7 @@ async fn record_context_updates_and_set_reference_context_item_reinjects_full_co
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("{}\nsummary", crate::compact::SUMMARY_PREFIX),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -3701,6 +3707,7 @@ async fn task_finish_emits_turn_item_lifecycle_for_leftover_pending_user_input()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "late pending input".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
}])
|
||||
.await
|
||||
.expect("inject pending input into active turn");
|
||||
@@ -3714,6 +3721,7 @@ async fn task_finish_emits_turn_item_lifecycle_for_leftover_pending_user_input()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "late pending input".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4056,6 +4064,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "first user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4071,6 +4080,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "assistant reply one".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4098,6 +4108,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "second user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4113,6 +4124,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "assistant reply two".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4140,6 +4152,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "third user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -4155,6 +4168,7 @@ async fn sample_rollout(
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "assistant reply three".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
@@ -123,6 +123,7 @@ impl CodexThread {
|
||||
let pending_item = ResponseInputItem::Message {
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputText { text: message }],
|
||||
metadata: None,
|
||||
};
|
||||
let pending_items = vec![pending_item];
|
||||
let Err(items_without_active_turn) = self
|
||||
|
||||
@@ -367,6 +367,7 @@ fn build_compacted_history_with_limit(
|
||||
content: vec![ContentItem::InputText {
|
||||
text: message.clone(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -382,6 +383,7 @@ fn build_compacted_history_with_limit(
|
||||
id: None,
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputText { text: summary_text }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
|
||||
@@ -59,6 +59,7 @@ fn collect_user_messages_extracts_user_text_only() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "ignored".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -68,6 +69,7 @@ fn collect_user_messages_extracts_user_text_only() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "first".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -93,6 +95,7 @@ do things
|
||||
</INSTRUCTIONS>"#
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -102,6 +105,7 @@ do things
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "<ENVIRONMENT_CONTEXT>cwd=/tmp</ENVIRONMENT_CONTEXT>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -111,6 +115,7 @@ do things
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "real user message".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -194,6 +199,7 @@ async fn process_compacted_history_replaces_developer_messages() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "stale permissions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -203,6 +209,7 @@ async fn process_compacted_history_replaces_developer_messages() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -212,6 +219,7 @@ async fn process_compacted_history_replaces_developer_messages() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "stale personality".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -224,6 +232,7 @@ async fn process_compacted_history_replaces_developer_messages() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -238,6 +247,7 @@ async fn process_compacted_history_reinjects_full_initial_context() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -249,6 +259,7 @@ async fn process_compacted_history_reinjects_full_initial_context() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -269,6 +280,7 @@ keep me updated
|
||||
</INSTRUCTIONS>"#
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -282,6 +294,7 @@ keep me updated
|
||||
</environment_context>"#
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -295,6 +308,7 @@ keep me updated
|
||||
</turn_aborted>"#
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -304,6 +318,7 @@ keep me updated
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -313,6 +328,7 @@ keep me updated
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "stale developer instructions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -325,6 +341,7 @@ keep me updated
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -340,6 +357,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "older user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -349,6 +367,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("{SUMMARY_PREFIX}\nsummary text"),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -358,6 +377,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "latest user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -372,6 +392,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "older user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -381,6 +402,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("{SUMMARY_PREFIX}\nsummary text"),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -392,6 +414,7 @@ async fn process_compacted_history_inserts_context_before_last_real_user_message
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "latest user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -406,6 +429,7 @@ async fn process_compacted_history_reinjects_model_switch_message() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -436,6 +460,7 @@ async fn process_compacted_history_reinjects_model_switch_message() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "summary".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
@@ -451,6 +476,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "older user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -460,6 +486,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "latest user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -469,6 +496,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("{SUMMARY_PREFIX}\nsummary text"),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -479,6 +507,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "fresh permissions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -492,6 +521,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "older user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -501,6 +531,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "fresh permissions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -510,6 +541,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "latest user".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -519,6 +551,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_summary_last()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: format!("{SUMMARY_PREFIX}\nsummary text"),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -537,6 +570,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_compaction_last
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "fresh permissions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -550,6 +584,7 @@ fn insert_initial_context_before_last_real_user_or_summary_keeps_compaction_last
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "fresh permissions".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
|
||||
@@ -33,6 +33,7 @@ fn assistant_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -53,6 +54,7 @@ fn user_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -65,6 +67,7 @@ fn user_input_text_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -120,6 +123,7 @@ fn filters_non_api_messages() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "ignored".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -151,6 +155,7 @@ fn filters_non_api_messages() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "hi".to_string()
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -160,6 +165,7 @@ fn filters_non_api_messages() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "hello".to_string()
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -265,6 +271,7 @@ fn for_prompt_strips_images_when_model_does_not_support_images() {
|
||||
text: "caption".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -327,6 +334,7 @@ fn for_prompt_strips_images_when_model_does_not_support_images() {
|
||||
text: "caption".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -384,6 +392,7 @@ fn for_prompt_strips_images_when_model_does_not_support_images() {
|
||||
image_url: "https://example.com/img.png".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}]);
|
||||
@@ -412,6 +421,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_supported() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "hi".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -437,6 +447,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_supported() {
|
||||
image_url: "data:image/png;base64,Zm9v".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -446,6 +457,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_supported() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "hi".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -462,6 +474,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_unsupported() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "generate a lobster".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -482,6 +495,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_unsupported() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "generate a lobster".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -503,6 +517,7 @@ fn for_prompt_rewrites_image_generation_calls_when_images_are_unsupported() {
|
||||
.to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -653,6 +668,7 @@ fn replace_last_turn_images_does_not_touch_user_images() {
|
||||
content: vec![ContentItem::InputImage {
|
||||
image_url: "data:image/png;base64,AAA".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -1507,6 +1523,7 @@ fn image_data_url_payload_does_not_dominate_message_estimate() {
|
||||
},
|
||||
ContentItem::InputImage { image_url },
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1516,6 +1533,7 @@ fn image_data_url_payload_does_not_dominate_message_estimate() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "Here is the screenshot".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1588,6 +1606,7 @@ fn non_base64_image_urls_are_unchanged() {
|
||||
content: vec![ContentItem::InputImage {
|
||||
image_url: "https://example.com/foo.png".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1619,6 +1638,7 @@ fn data_url_without_base64_marker_is_unchanged() {
|
||||
content: vec![ContentItem::InputImage {
|
||||
image_url: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'/>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1657,6 +1677,7 @@ fn mixed_case_data_url_markers_are_adjusted() {
|
||||
id: None,
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputImage { image_url }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1688,6 +1709,7 @@ fn multiple_inline_images_apply_multiple_fixed_costs() {
|
||||
image_url: image_url_two,
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -1771,6 +1793,7 @@ fn text_only_items_unchanged() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "Hello world, this is a response.".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
@@ -322,6 +322,7 @@ pub(crate) fn rewrite_image_generation_calls_for_stateless_input(items: &mut Vec
|
||||
},
|
||||
ContentItem::InputImage { image_url },
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -178,6 +178,7 @@ fn build_text_message(role: &str, text_sections: Vec<String>) -> Option<Response
|
||||
id: None,
|
||||
role: role.to_string(),
|
||||
content,
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
})
|
||||
|
||||
@@ -57,6 +57,7 @@ impl ContextualUserFragmentDefinition {
|
||||
id: None,
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputText { text }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ fn parses_user_message_with_text_and_two_images() {
|
||||
image_url: img2.clone(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -72,6 +73,7 @@ fn skips_local_image_label_text() {
|
||||
text: user_text.clone(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -114,6 +116,7 @@ fn skips_unnamed_image_label_text() {
|
||||
text: user_text.clone(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -144,6 +147,7 @@ fn skips_user_instructions_and_env() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "# AGENTS.md instructions for test_directory\n\n<INSTRUCTIONS>\ntest_text\n</INSTRUCTIONS>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -153,6 +157,7 @@ fn skips_user_instructions_and_env() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "<environment_context>test_text</environment_context>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -162,6 +167,7 @@ fn skips_user_instructions_and_env() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "# AGENTS.md instructions for test_directory\n\n<INSTRUCTIONS>\ntest_text\n</INSTRUCTIONS>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -172,6 +178,7 @@ fn skips_user_instructions_and_env() {
|
||||
text: "<skill>\n<name>demo</name>\n<path>skills/demo/SKILL.md</path>\nbody\n</skill>"
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -181,6 +188,7 @@ fn skips_user_instructions_and_env() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "<user_shell_command>echo 42</user_shell_command>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -197,6 +205,7 @@ fn skips_user_instructions_and_env() {
|
||||
.to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -216,6 +225,7 @@ fn parses_agent_message() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "Hello from Codex".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -320,7 +330,6 @@ fn parses_web_search_call() {
|
||||
query: Some("weather".to_string()),
|
||||
queries: None,
|
||||
},
|
||||
metadata: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -348,7 +357,6 @@ fn parses_web_search_open_page_call() {
|
||||
action: WebSearchAction::OpenPage {
|
||||
url: Some("https://example.com".to_string()),
|
||||
},
|
||||
metadata: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -378,7 +386,6 @@ fn parses_web_search_find_in_page_call() {
|
||||
url: Some("https://example.com".to_string()),
|
||||
pattern: Some("needle".to_string()),
|
||||
},
|
||||
metadata: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
@@ -401,7 +408,6 @@ fn parses_partial_web_search_call_without_action_as_other() {
|
||||
id: "ws_partial".to_string(),
|
||||
query: String::new(),
|
||||
action: WebSearchAction::Other,
|
||||
metadata: None,
|
||||
}
|
||||
),
|
||||
other => panic!("expected TurnItem::WebSearch, got {other:?}"),
|
||||
|
||||
@@ -64,6 +64,7 @@ fn collect_guardian_transcript_entries_skips_contextual_user_messages() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "<environment_context>\n<cwd>/tmp</cwd>\n</environment_context>".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -73,6 +74,7 @@ fn collect_guardian_transcript_entries_skips_contextual_user_messages() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "hello".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -99,6 +101,7 @@ fn collect_guardian_transcript_entries_includes_recent_tool_calls_and_output() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "check the repo".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -121,6 +124,7 @@ fn collect_guardian_transcript_entries_includes_recent_tool_calls_and_output() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "I need to push a fix".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -314,6 +318,7 @@ async fn guardian_review_request_layout_matches_model_visible_request_snapshot()
|
||||
text: "Please check the repo visibility and push the docs fix if needed."
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -337,6 +342,7 @@ async fn guardian_review_request_layout_matches_model_visible_request_snapshot()
|
||||
text: "The repo is public; I now need approval to push the docs fix."
|
||||
.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
|
||||
@@ -330,6 +330,7 @@ mod job {
|
||||
&rollout_contents,
|
||||
)?,
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
|
||||
@@ -1134,6 +1134,7 @@ async fn test_updated_at_uses_file_mtime() -> Result<()> {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: format!("reply-{idx}"),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}),
|
||||
|
||||
@@ -13,6 +13,7 @@ fn user_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -25,6 +26,7 @@ fn assistant_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ fn assistant_output_text(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: Some(true),
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -433,6 +433,7 @@ impl Session {
|
||||
"{TURN_ABORTED_OPEN_TAG}\n{TURN_ABORTED_INTERRUPTED_GUIDANCE}\n</turn_aborted>"
|
||||
),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
@@ -239,6 +239,7 @@ pub(crate) async fn exit_review_mode(
|
||||
id: Some(REVIEW_USER_MESSAGE_ID.to_string()),
|
||||
role: "user".to_string(),
|
||||
content: vec![ContentItem::InputText { text: user_message }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}],
|
||||
@@ -260,6 +261,7 @@ pub(crate) async fn exit_review_mode(
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: assistant_message,
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
|
||||
@@ -326,7 +326,16 @@ async fn persist_user_shell_output(
|
||||
}
|
||||
|
||||
let response_input_item = match output_item {
|
||||
ResponseItem::Message { role, content, .. } => ResponseInputItem::Message { role, content },
|
||||
ResponseItem::Message {
|
||||
role,
|
||||
content,
|
||||
metadata,
|
||||
..
|
||||
} => ResponseInputItem::Message {
|
||||
role,
|
||||
content,
|
||||
metadata,
|
||||
},
|
||||
_ => unreachable!("user shell command output record should always be a message"),
|
||||
};
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ fn user_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -27,6 +28,7 @@ fn assistant_msg(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -638,6 +638,7 @@ async fn resume_agent_restores_closed_agent_and_accepts_send_input() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "materialized".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
})]),
|
||||
|
||||
@@ -58,7 +58,6 @@ async fn turn_timing_state_records_ttfm_independently_of_ttft() {
|
||||
id: "msg-1".to_string(),
|
||||
content: Vec::new(),
|
||||
phase: None,
|
||||
metadata: None,
|
||||
}))
|
||||
.await
|
||||
.is_some()
|
||||
@@ -69,7 +68,6 @@ async fn turn_timing_state_records_ttfm_independently_of_ttft() {
|
||||
id: "msg-2".to_string(),
|
||||
content: Vec::new(),
|
||||
phase: None,
|
||||
metadata: None,
|
||||
}))
|
||||
.await,
|
||||
None
|
||||
@@ -102,6 +100,7 @@ fn response_item_records_turn_ttft_for_first_output_signals() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "hello".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}));
|
||||
@@ -115,6 +114,7 @@ fn response_item_records_turn_ttft_ignores_empty_non_output_items() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: String::new(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}));
|
||||
|
||||
@@ -637,6 +637,7 @@ pub fn user_message_item(text: &str) -> ResponseItem {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: text.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -105,6 +105,7 @@ async fn responses_stream_includes_subagent_header_on_review() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "hello".into(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -218,6 +219,7 @@ async fn responses_stream_includes_subagent_header_on_other() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "hello".into(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
@@ -330,6 +332,7 @@ async fn responses_respects_model_info_overrides_from_config() {
|
||||
content: vec![ContentItem::InputText {
|
||||
text: "hello".into(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}];
|
||||
|
||||
@@ -177,6 +177,7 @@ async fn resume_includes_initial_messages_and_sends_prior_items() {
|
||||
content: vec![codex_protocol::models::ContentItem::InputText {
|
||||
text: "resumed user message".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -199,6 +200,7 @@ async fn resume_includes_initial_messages_and_sends_prior_items() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: "resumed system instruction".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -221,6 +223,7 @@ async fn resume_includes_initial_messages_and_sends_prior_items() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: "resumed assistant message".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: Some(MessagePhase::Commentary),
|
||||
};
|
||||
@@ -400,6 +403,7 @@ async fn resume_replays_legacy_js_repl_image_rollout_shapes() {
|
||||
content: vec![ContentItem::InputImage {
|
||||
image_url: legacy_image_url.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}),
|
||||
@@ -1865,6 +1869,7 @@ async fn azure_responses_request_includes_store_and_reasoning_ids() {
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "message".into(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
});
|
||||
|
||||
@@ -1470,6 +1470,7 @@ fn message_item(text: &str) -> ResponseItem {
|
||||
id: None,
|
||||
role: "user".into(),
|
||||
content: vec![ContentItem::InputText { text: text.into() }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
@@ -1480,6 +1481,7 @@ fn assistant_message_item(id: &str, text: &str) -> ResponseItem {
|
||||
id: Some(id.to_string()),
|
||||
role: "assistant".into(),
|
||||
content: vec![ContentItem::OutputText { text: text.into() }],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
}
|
||||
|
||||
@@ -1586,6 +1586,7 @@ async fn auto_compact_runs_after_resume_when_token_usage_is_over_limit() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: remote_summary.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -2795,6 +2796,7 @@ async fn auto_compact_counts_encrypted_reasoning_before_last_user() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: "REMOTE_COMPACT_SUMMARY".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -2915,6 +2917,7 @@ async fn auto_compact_runs_when_reasoning_header_clears_between_turns() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: "REMOTE_COMPACT_SUMMARY".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
|
||||
@@ -1101,6 +1101,7 @@ async fn remote_compact_persists_replacement_history_in_rollout() -> Result<()>
|
||||
content: vec![ContentItem::OutputText {
|
||||
text: "COMPACTED_ASSISTANT_NOTE".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -1238,6 +1239,7 @@ async fn remote_compact_and_resume_refresh_stale_developer_instructions() -> Res
|
||||
content: vec![ContentItem::InputText {
|
||||
text: stale_developer_message.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
@@ -1370,6 +1372,7 @@ async fn remote_compact_refreshes_stale_developer_instructions_without_resume()
|
||||
content: vec![ContentItem::InputText {
|
||||
text: stale_developer_message.to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
},
|
||||
|
||||
@@ -157,6 +157,7 @@ async fn copy_paste_local_image_persists_rollout_request_shape() -> anyhow::Resu
|
||||
text: "pasted image".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -240,6 +241,7 @@ async fn drag_drop_image_persists_rollout_request_shape() -> anyhow::Result<()>
|
||||
text: "dropped image".to_string(),
|
||||
},
|
||||
],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
@@ -530,6 +530,7 @@ async fn review_input_isolated_from_parent_history() {
|
||||
content: vec![codex_protocol::models::ContentItem::InputText {
|
||||
text: "parent: earlier user message".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
@@ -550,6 +551,7 @@ async fn review_input_isolated_from_parent_history() {
|
||||
content: vec![codex_protocol::models::ContentItem::OutputText {
|
||||
text: "parent: assistant reply".to_string(),
|
||||
}],
|
||||
metadata: None,
|
||||
end_turn: None,
|
||||
phase: None,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user