@@ -6370,7 +6370,7 @@ pub(crate) mod tests {
63706370 "name" : "update_plan" , "namespace" : "functions" ,
63716371 "arguments" : "{\" plan\" :[]}" , "encrypted_function_args" : [ ] ,
63726372 } ) ) ;
6373- let original = serde_json :: to_value ( & item) . unwrap ( ) ;
6373+ assert_eq ! ( item. id ( ) . unwrap( ) . as_str ( ) , "fc_server" ) ;
63746374 let upstream = Box :: pin ( stream:: iter ( vec ! [
63756375 Ok ( ResponseEvent :: Created {
63766376 response_id: Some ( "real-provider" . into( ) ) ,
@@ -6386,7 +6386,7 @@ pub(crate) mod tests {
63866386 let mut intercepted = Box :: new ( request) . intercept ( upstream) ;
63876387 assert ! ( matches!(
63886388 intercepted. next( ) . await ,
6389- Some ( Ok ( ResponseEvent :: Created { .. } ) )
6389+ Some ( Ok ( ResponseEvent :: Created { response_id : Some ( id ) } ) ) if id == "real-provider"
63906390 ) ) ;
63916391 let edit = async {
63926392 let req = control. next ( ) . await . unwrap ( ) ;
@@ -6404,16 +6404,21 @@ pub(crate) mod tests {
64046404 let Some ( Ok ( ResponseEvent :: OutputItemDone ( item) ) ) = event else {
64056405 panic ! ( "missing actual item" )
64066406 } ;
6407- let mut actual = serde_json:: to_value ( item) . unwrap ( ) ;
6407+ assert ! ( item. id( ) . is_none( ) ) ;
6408+ assert ! ( matches!( & item, ResponseItem :: FunctionCall { call_id, .. }
6409+ if call_id == "real-native-call" ) ) ;
64086410 assert_eq ! (
6409- serde_json:: from_str:: <Value >( actual[ "arguments" ] . as_str( ) . unwrap( ) ) . unwrap( ) ,
6410- json!( { "plan" : [ ] , "explanation" : "effective" } )
6411+ serde_json:: to_value( item) . unwrap( ) ,
6412+ json!( {
6413+ "type" : "function_call" , "call_id" : "real-native-call" ,
6414+ "name" : "update_plan" , "namespace" : "functions" ,
6415+ "arguments" : json!( { "plan" : [ ] , "explanation" : "effective" } ) . to_string( ) ,
6416+ "encrypted_function_args" : [ ] ,
6417+ } )
64116418 ) ;
6412- actual[ "arguments" ] = original[ "arguments" ] . clone ( ) ;
6413- assert_eq ! ( actual, original) ; // including encrypted flags, id, name, namespace and metadata
64146419 assert ! ( matches!(
64156420 intercepted. next( ) . await ,
6416- Some ( Ok ( ResponseEvent :: Created { .. } ) )
6421+ Some ( Ok ( ResponseEvent :: Created { response_id : Some ( id ) } ) ) if id == "next-provider-event"
64176422 ) ) ;
64186423 assert ! ( intercepted. next( ) . await . is_none( ) ) ;
64196424 }
@@ -6477,7 +6482,7 @@ pub(crate) mod tests {
64776482 "arguments" : r#"{"task_name":"old","message":"opaque"}"# ,
64786483 "encrypted_function_args" : metadata,
64796484 } ) ) ;
6480- let original = serde_json :: to_value ( & item) . unwrap ( ) ;
6485+ assert_eq ! ( item. id ( ) . unwrap( ) . as_str ( ) , "fc_original" ) ;
64816486 let request = direct_request ( control. clone ( ) , "turn" ) ;
64826487 let edit = async {
64836488 let req = control. next ( ) . await . unwrap ( ) ;
@@ -6488,13 +6493,20 @@ pub(crate) mod tests {
64886493 } ;
64896494 let ( result, ( ) ) = tokio:: join!( request. before( item, None ) , edit) ;
64906495 if accepted {
6491- let mut actual = serde_json:: to_value ( result. unwrap ( ) . 0 ) . unwrap ( ) ;
6492- assert_eq ! (
6493- serde_json:: from_str:: <Value >( actual[ "arguments" ] . as_str( ) . unwrap( ) ) . unwrap( ) ,
6494- value
6495- ) ;
6496- actual[ "arguments" ] = original[ "arguments" ] . clone ( ) ;
6497- assert_eq ! ( actual, original) ;
6496+ let ( item, changed, _) = result. unwrap ( ) ;
6497+ assert ! ( changed) ;
6498+ assert ! ( item. id( ) . is_none( ) ) ;
6499+ assert ! ( matches!( & item, ResponseItem :: FunctionCall { call_id, .. }
6500+ if call_id == "original" ) ) ;
6501+ let mut expected = json ! ( {
6502+ "type" : "function_call" , "call_id" : "original" ,
6503+ "name" : "spawn_agent" , "namespace" : "collaboration" ,
6504+ "arguments" : value. to_string( ) ,
6505+ } ) ;
6506+ if !metadata. is_null ( ) {
6507+ expected[ "encrypted_function_args" ] = metadata;
6508+ }
6509+ assert_eq ! ( serde_json:: to_value( item) . unwrap( ) , expected) ;
64986510 } else {
64996511 assert ! (
65006512 matches!( result, Err ( ModelResponseError :: InvalidRequest { message } )
0 commit comments