@@ -72,6 +72,15 @@ fn assert_default_env_context(text: &str, cwd: &str, shell: &Shell) {
7272 ) ;
7373}
7474
75+ fn message_input_texts ( value : & serde_json:: Value ) -> Vec < & str > {
76+ value[ "content" ]
77+ . as_array ( )
78+ . expect ( "message content array" )
79+ . iter ( )
80+ . filter_map ( |entry| entry[ "text" ] . as_str ( ) )
81+ . collect ( )
82+ }
83+
7584fn assert_tool_names ( body : & serde_json:: Value , expected_names : & [ & str ] ) {
7685 assert_eq ! (
7786 body[ "tools" ]
@@ -338,25 +347,25 @@ async fn prefixes_context_and_instructions_once_and_consistently_across_requests
338347 "expected permissions + cached contextual user prefix + user msg"
339348 ) ;
340349
341- let ui_text = input1[ 1 ] [ "content" ] [ 0 ] [ "text" ]
342- . as_str ( )
343- . expect ( "ui message text" ) ;
350+ let contextual_user_texts = message_input_texts ( & input1[ 1 ] ) ;
351+ let ui_text = contextual_user_texts
352+ . iter ( )
353+ . copied ( )
354+ . find ( |text| text. contains ( "be consistent and helpful" ) )
355+ . expect ( "user instructions text" ) ;
344356 assert ! (
345357 ui_text. contains( "be consistent and helpful" ) ,
346358 "expected user instructions in UI message: {ui_text}"
347359 ) ;
348360
349361 let shell = default_user_shell ( ) ;
350362 let cwd_str = config. cwd . to_string_lossy ( ) ;
351- let env_text = input1[ 1 ] [ "content" ] [ 1 ] [ "text" ]
352- . as_str ( )
363+ let env_text = contextual_user_texts
364+ . iter ( )
365+ . copied ( )
366+ . find ( |text| text. starts_with ( ENVIRONMENT_CONTEXT_OPEN_TAG ) )
353367 . expect ( "environment context text" ) ;
354368 assert_default_env_context ( env_text, & cwd_str, & shell) ;
355- assert_eq ! (
356- input1[ 1 ] [ "content" ] [ 1 ] [ "type" ] . as_str( ) ,
357- Some ( "input_text" ) ,
358- "expected environment context bundled after UI message in cached contextual message"
359- ) ;
360369 assert_eq ! ( input1[ 2 ] , text_user_input( "hello 1" . to_string( ) ) ) ;
361370
362371 let body2 = req2. single_request ( ) . body_json ( ) ;
@@ -846,23 +855,16 @@ async fn send_user_turn_with_no_changes_does_not_send_environment_context() -> a
846855 let body2 = request2. body_json ( ) ;
847856
848857 let expected_permissions_msg = body1[ "input" ] [ 0 ] . clone ( ) ;
849- let expected_ui_msg = body1[ "input" ] [ 1 ] . clone ( ) ;
858+ let expected_contextual_user_msg_1 = body1[ "input" ] [ 1 ] . clone ( ) ;
850859
851860 let shell = default_user_shell ( ) ;
852861 let default_cwd_lossy = default_cwd. to_string_lossy ( ) ;
853- let expected_env_text_1 = expected_ui_msg[ "content" ] [ 1 ] [ "text" ]
854- . as_str ( )
862+ let expected_env_text_1 = message_input_texts ( & expected_contextual_user_msg_1)
863+ . into_iter ( )
864+ . find ( |text| text. starts_with ( ENVIRONMENT_CONTEXT_OPEN_TAG ) )
855865 . expect ( "cached environment context text" )
856866 . to_string ( ) ;
857867 assert_default_env_context ( & expected_env_text_1, & default_cwd_lossy, & shell) ;
858-
859- let expected_contextual_user_msg_1 = text_user_input_parts ( vec ! [
860- expected_ui_msg[ "content" ] [ 0 ] [ "text" ]
861- . as_str( )
862- . expect( "cached user instructions text" )
863- . to_string( ) ,
864- expected_env_text_1,
865- ] ) ;
866868 let expected_user_message_1 = text_user_input ( "hello 1" . to_string ( ) ) ;
867869
868870 let expected_input_1 = serde_json:: Value :: Array ( vec ! [
@@ -970,21 +972,15 @@ async fn send_user_turn_with_changes_sends_environment_context() -> anyhow::Resu
970972 let body2 = request2. body_json ( ) ;
971973
972974 let expected_permissions_msg = body1[ "input" ] [ 0 ] . clone ( ) ;
973- let expected_ui_msg = body1[ "input" ] [ 1 ] . clone ( ) ;
975+ let expected_contextual_user_msg_1 = body1[ "input" ] [ 1 ] . clone ( ) ;
974976
975977 let shell = default_user_shell ( ) ;
976- let expected_env_text_1 = expected_ui_msg[ "content" ] [ 1 ] [ "text" ]
977- . as_str ( )
978+ let expected_env_text_1 = message_input_texts ( & expected_contextual_user_msg_1)
979+ . into_iter ( )
980+ . find ( |text| text. starts_with ( ENVIRONMENT_CONTEXT_OPEN_TAG ) )
978981 . expect ( "cached environment context text" )
979982 . to_string ( ) ;
980983 assert_default_env_context ( & expected_env_text_1, & default_cwd. to_string_lossy ( ) , & shell) ;
981- let expected_contextual_user_msg_1 = text_user_input_parts ( vec ! [
982- expected_ui_msg[ "content" ] [ 0 ] [ "text" ]
983- . as_str( )
984- . expect( "cached user instructions text" )
985- . to_string( ) ,
986- expected_env_text_1,
987- ] ) ;
988984 let expected_user_message_1 = text_user_input ( "hello 1" . to_string ( ) ) ;
989985 let expected_input_1 = serde_json:: Value :: Array ( vec ! [
990986 expected_permissions_msg. clone( ) ,
0 commit comments