diff --git a/codex-rs/codex-api/src/requests/headers.rs b/codex-rs/codex-api/src/requests/headers.rs index d91d2a2bf18b..ed5a5ad647f8 100644 --- a/codex-rs/codex-api/src/requests/headers.rs +++ b/codex-rs/codex-api/src/requests/headers.rs @@ -6,9 +6,11 @@ pub fn build_session_headers(session_id: Option, thread_id: Option Result<()> { req.headers.get("session_id").and_then(|v| v.to_str().ok()), Some("sess_123") ); + assert_eq!( + req.headers.get("session-id").and_then(|v| v.to_str().ok()), + Some("sess_123") + ); assert_eq!( req.headers.get("thread_id").and_then(|v| v.to_str().ok()), Some("thread_123") ); + assert_eq!( + req.headers.get("thread-id").and_then(|v| v.to_str().ok()), + Some("thread_123") + ); assert_eq!( req.headers .get("x-client-request-id") diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index 432b57de9f8b..afad0930b37c 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -764,7 +764,9 @@ async fn includes_session_id_thread_id_and_model_headers_in_request() { let request = resp_mock.single_request(); assert_eq!(request.path(), "/v1/responses"); let request_session_id = request.header("session_id").expect("session_id header"); + let request_session_id_hyphenated = request.header("session-id").expect("session-id header"); let request_thread_id = request.header("thread_id").expect("thread_id header"); + let request_thread_id_hyphenated = request.header("thread-id").expect("thread-id header"); let request_authorization = request .header("authorization") .expect("authorization header"); @@ -776,7 +778,12 @@ async fn includes_session_id_thread_id_and_model_headers_in_request() { let thread_id_string = expected_thread_id.to_string(); assert_eq!(request_session_id, expected_session_id.to_string()); + assert_eq!( + request_session_id_hyphenated, + expected_session_id.to_string() + ); assert_eq!(request_thread_id, thread_id_string.as_str()); + assert_eq!(request_thread_id_hyphenated, thread_id_string.as_str()); assert_eq!(request_originator, originator().value); assert_eq!(request_authorization, "Bearer Test API Key"); assert_eq!( @@ -1038,12 +1045,19 @@ async fn chatgpt_auth_sends_correct_request() { let request_body = request.body_json(); let request_session_id = request.header("session_id").expect("session_id header"); + let request_session_id_hyphenated = request.header("session-id").expect("session-id header"); let request_thread_id = request.header("thread_id").expect("thread_id header"); + let request_thread_id_hyphenated = request.header("thread-id").expect("thread-id header"); let installation_id = std::fs::read_to_string(test.codex_home_path().join(INSTALLATION_ID_FILENAME)) .expect("read installation id"); assert_eq!(request_session_id, expected_session_id.to_string()); + assert_eq!( + request_session_id_hyphenated, + expected_session_id.to_string() + ); assert_eq!(request_thread_id, expected_thread_id.to_string()); + assert_eq!(request_thread_id_hyphenated, expected_thread_id.to_string()); assert_eq!(request_originator, originator().value); assert_eq!(request_authorization, "Bearer Access Token"); diff --git a/codex-rs/tui/tests/suite/model_availability_nux.rs b/codex-rs/tui/tests/suite/model_availability_nux.rs index 04a03a09f97a..5a384e82809e 100644 --- a/codex-rs/tui/tests/suite/model_availability_nux.rs +++ b/codex-rs/tui/tests/suite/model_availability_nux.rs @@ -177,15 +177,24 @@ trust_level = "trusted" } }; let output_text = String::from_utf8_lossy(&output); - let interrupt_only_output = { - let trimmed_output = output_text.trim(); - !trimmed_output.is_empty() - && trimmed_output + let rendered_output = { + let mut parser = vt100::Parser::new( + /*rows*/ 24, /*cols*/ 80, /*scrollback_len*/ 0, + ); + parser.process(&output); + parser.screen().contents() + }; + let interrupted_during_terminal_startup = { + let trimmed_output = rendered_output.trim(); + trimmed_output.is_empty() + || trimmed_output .chars() .all(|character| character == '^' || character == 'C' || character.is_whitespace()) }; anyhow::ensure!( - exit_code == 0 || exit_code == 130 || (exit_code == 1 && interrupt_only_output), + exit_code == 0 + || exit_code == 130 + || (exit_code == 1 && interrupted_during_terminal_startup), "unexpected exit code from codex resume: {exit_code}; output: {output_text}", );