@@ -8,13 +8,16 @@ use core_test_support::responses::ev_apply_patch_function_call;
88use core_test_support:: responses:: ev_assistant_message;
99use core_test_support:: responses:: ev_completed;
1010use core_test_support:: responses:: ev_function_call;
11+ use core_test_support:: responses:: ev_reasoning_item_added;
12+ use core_test_support:: responses:: ev_reasoning_summary_text_delta;
1113use core_test_support:: responses:: ev_response_created;
1214use core_test_support:: responses:: mount_sse_sequence;
1315use core_test_support:: responses:: sse;
1416use core_test_support:: responses:: start_mock_server;
1517use core_test_support:: skip_if_no_network;
1618use core_test_support:: test_codex:: test_codex;
1719use core_test_support:: wait_for_event;
20+ use pretty_assertions:: assert_eq;
1821
1922/// Delegate should surface ExecApprovalRequest from sub-agent and proceed
2023/// after parent submits an approval decision.
@@ -171,3 +174,52 @@ async fn codex_delegate_forwards_patch_approval_and_proceeds_on_decision() {
171174 . await ;
172175 wait_for_event ( & test. codex , |ev| matches ! ( ev, EventMsg :: TaskComplete ( _) ) ) . await ;
173176}
177+
178+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
179+ async fn codex_delegate_ignores_legacy_deltas ( ) {
180+ skip_if_no_network ! ( ) ;
181+
182+ // Single response with reasoning summary deltas.
183+ let sse_stream = sse ( vec ! [
184+ ev_response_created( "resp-1" ) ,
185+ ev_reasoning_item_added( "reason-1" , & [ "initial" ] ) ,
186+ ev_reasoning_summary_text_delta( "think-1" ) ,
187+ ev_completed( "resp-1" ) ,
188+ ] ) ;
189+
190+ let server = start_mock_server ( ) . await ;
191+ mount_sse_sequence ( & server, vec ! [ sse_stream] ) . await ;
192+
193+ let mut builder = test_codex ( ) ;
194+ let test = builder. build ( & server) . await . expect ( "build test codex" ) ;
195+
196+ // Kick off review (delegated).
197+ test. codex
198+ . submit ( Op :: Review {
199+ review_request : ReviewRequest {
200+ prompt : "Please review" . to_string ( ) ,
201+ user_facing_hint : "review" . to_string ( ) ,
202+ } ,
203+ } )
204+ . await
205+ . expect ( "submit review" ) ;
206+
207+ let mut reasoning_delta_count = 0 ;
208+ let mut legacy_reasoning_delta_count = 0 ;
209+
210+ loop {
211+ let ev = wait_for_event ( & test. codex , |_| true ) . await ;
212+ match ev {
213+ EventMsg :: ReasoningContentDelta ( _) => reasoning_delta_count += 1 ,
214+ EventMsg :: AgentReasoningDelta ( _) => legacy_reasoning_delta_count += 1 ,
215+ EventMsg :: TaskComplete ( _) => break ,
216+ _ => { }
217+ }
218+ }
219+
220+ assert_eq ! ( reasoning_delta_count, 1 , "expected one new reasoning delta" ) ;
221+ assert_eq ! (
222+ legacy_reasoning_delta_count, 1 ,
223+ "expected one legacy reasoning delta"
224+ ) ;
225+ }
0 commit comments