Merge pull request #464 from RWDai/fix/issue-455-codex-compact-include

fix: strip include from codex compact requests
This commit is contained in:
fawney19
2026-05-15 16:10:33 +08:00
committed by GitHub
2 changed files with 59 additions and 2 deletions

View File

@@ -179,6 +179,40 @@ fn local_openai_responses_compact_wrapper_strips_store_for_same_format_requests(
assert!(provider_request_body.get("stream").is_none());
}
#[test]
fn local_openai_responses_compact_wrapper_strips_include_for_codex_requests() {
let body_json = json!({
"model": "gpt-5.4",
"input": [],
"include": ["reasoning.encrypted_content"],
"store": true,
"stream": true
});
let provider_request_body = build_local_openai_responses_request_body(
&body_json,
"gpt-5.4",
false,
false,
"codex",
"openai:responses:compact",
None,
Some("key-123"),
&http::HeaderMap::new(),
false,
)
.expect("local codex compact body should build");
assert!(provider_request_body.get("include").is_none());
assert!(provider_request_body.get("store").is_none());
assert!(provider_request_body.get("stream").is_none());
assert_eq!(provider_request_body["instructions"], "");
assert_eq!(
provider_request_body["prompt_cache_key"],
"172c39e6-c0a0-5a70-8b63-e0f8e0d185a3"
);
}
#[test]
fn local_openai_responses_wrapper_applies_model_directive_before_body_rules() {
let body_json = json!({

View File

@@ -284,7 +284,8 @@ pub fn apply_openai_responses_compact_special_body_edits(
return;
};
// `/v1/responses/compact` does not accept `store` or body-level `stream`.
// `/v1/responses/compact` does not accept `include`, `store`, or body-level `stream`.
body_object.remove("include");
body_object.remove("store");
body_object.remove("stream");
}
@@ -514,7 +515,8 @@ pub fn apply_codex_openai_responses_special_headers(
mod tests {
use super::{
apply_codex_openai_responses_chat_body_edits,
apply_codex_openai_responses_special_body_edits, CODEX_OPENAI_IMAGE_INTERNAL_MODEL,
apply_codex_openai_responses_special_body_edits,
apply_openai_responses_compact_special_body_edits, CODEX_OPENAI_IMAGE_INTERNAL_MODEL,
};
use serde_json::json;
@@ -593,6 +595,27 @@ mod tests {
assert_eq!(provider_request_body["parallel_tool_calls"], json!(false));
}
#[test]
fn compact_body_edits_strip_include_store_and_stream() {
let mut provider_request_body = json!({
"input": [],
"model": "gpt-5.4",
"include": ["reasoning.encrypted_content"],
"store": true,
"stream": true,
});
apply_openai_responses_compact_special_body_edits(
&mut provider_request_body,
"openai:responses:compact",
);
assert!(provider_request_body.get("include").is_none());
assert!(provider_request_body.get("store").is_none());
assert!(provider_request_body.get("stream").is_none());
assert_eq!(provider_request_body["model"], json!("gpt-5.4"));
}
#[test]
fn codex_chat_body_edits_inject_reasoning_summary_defaults() {
let mut provider_request_body = json!({