@@ -798,6 +798,43 @@ describe("TriggerChatTransport", function () {
798798 expect ( errors [ 0 ] ?. error . message ) . toBe ( "mapper failed" ) ;
799799 } ) ;
800800
801+ it ( "normalizes non-Error mapper failures before reporting onError" , async function ( ) {
802+ const errors : TriggerChatTransportError [ ] = [ ] ;
803+
804+ const transport = new TriggerChatTransport <
805+ UIMessage ,
806+ { prompt : string }
807+ > ( {
808+ task : "chat-task" ,
809+ stream : "chat-stream" ,
810+ accessToken : "pk_trigger" ,
811+ payloadMapper : async function payloadMapper ( ) {
812+ throw "string mapper failure" ;
813+ } ,
814+ onError : function onError ( error ) {
815+ errors . push ( error ) ;
816+ } ,
817+ } ) ;
818+
819+ await expect (
820+ transport . sendMessages ( {
821+ trigger : "submit-message" ,
822+ chatId : "chat-mapper-string-failure" ,
823+ messageId : undefined ,
824+ messages : [ ] ,
825+ abortSignal : undefined ,
826+ } )
827+ ) . rejects . toBe ( "string mapper failure" ) ;
828+
829+ expect ( errors ) . toHaveLength ( 1 ) ;
830+ expect ( errors [ 0 ] ) . toMatchObject ( {
831+ phase : "payloadMapper" ,
832+ chatId : "chat-mapper-string-failure" ,
833+ runId : undefined ,
834+ } ) ;
835+ expect ( errors [ 0 ] ?. error . message ) . toBe ( "string mapper failure" ) ;
836+ } ) ;
837+
801838 it ( "surfaces trigger options resolver errors and does not trigger runs" , async function ( ) {
802839 let triggerCalls = 0 ;
803840 const errors : TriggerChatTransportError [ ] = [ ] ;
0 commit comments