Skip to content

Commit 94a763b

Browse files
committed
Fix is_api_message to correctly exclude reasoning messages
1 parent d7286e9 commit 94a763b

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

codex-rs/core/src/conversation_history.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,17 @@ fn is_api_message(message: &ResponseItem) -> bool {
4747
| ResponseItem::CustomToolCall { .. }
4848
| ResponseItem::CustomToolCallOutput { .. }
4949
| ResponseItem::LocalShellCall { .. }
50-
| ResponseItem::Reasoning { .. }
5150
| ResponseItem::WebSearchCall { .. } => true,
52-
ResponseItem::Other => false,
51+
ResponseItem::Reasoning { .. } | ResponseItem::Other => false,
5352
}
5453
}
5554

5655
#[cfg(test)]
5756
mod tests {
5857
use super::*;
5958
use codex_protocol::models::ContentItem;
59+
use codex_protocol::models::ReasoningItemContent;
60+
use codex_protocol::models::ReasoningItemReasoningSummary;
6061

6162
fn assistant_msg(text: &str) -> ResponseItem {
6263
ResponseItem::Message {
@@ -78,18 +79,32 @@ mod tests {
7879
}
7980
}
8081

82+
fn reasoning_msg(text: &str) -> ResponseItem {
83+
ResponseItem::Reasoning {
84+
id: String::new(),
85+
summary: vec![ReasoningItemReasoningSummary::SummaryText {
86+
text: "summary".to_string(),
87+
}],
88+
content: Some(vec![ReasoningItemContent::ReasoningText {
89+
text: text.to_string(),
90+
}]),
91+
encrypted_content: None,
92+
}
93+
}
94+
8195
#[test]
8296
fn filters_non_api_messages() {
8397
let mut h = ConversationHistory::default();
84-
// System message is not an API message; Other is ignored.
98+
// System message and reasoning message are not API messages; Other is ignored.
8599
let system = ResponseItem::Message {
86100
id: None,
87101
role: "system".to_string(),
88102
content: vec![ContentItem::OutputText {
89103
text: "ignored".to_string(),
90104
}],
91105
};
92-
h.record_items([&system, &ResponseItem::Other]);
106+
let reasoning = reasoning_msg("thinking...");
107+
h.record_items([&system, &reasoning, &ResponseItem::Other]);
93108

94109
// User and assistant should be retained.
95110
let u = user_msg("hi");

0 commit comments

Comments
 (0)