@@ -61,18 +61,44 @@ export const useAskAi = (props: Props): UseAskAiResponse => {
6161 const onMessage = useCallback (
6262 ( sseEvent : EventSourceMessage ) => {
6363 try {
64- // Parse and validate the canonical AskAiEvent format
64+ // Parse JSON first
6565 const rawData = JSON . parse ( sseEvent . data )
66- const askAiEvent = AskAiEventSchema . parse ( rawData )
6766
68- processMessage ( askAiEvent )
67+ // Use safeParse with reportInput to include input data in validation errors
68+ const result = AskAiEventSchema . safeParse ( rawData , {
69+ reportInput : true ,
70+ } )
71+
72+ if ( ! result . success ) {
73+ // Log detailed validation errors with input data
74+ console . error ( '[AI Provider] Failed to parse SSE event:' , {
75+ eventId : sseEvent . id || 'unknown' ,
76+ eventType : sseEvent . event || 'unknown' ,
77+ rawEventData : sseEvent . data ,
78+ validationErrors : result . error . issues ,
79+ } )
80+ throw new Error (
81+ `Event validation failed: ${ result . error . issues . map ( ( e ) => `${ e . path . join ( '.' ) } : ${ e . message } ` ) . join ( '; ' ) } `
82+ )
83+ }
84+
85+ processMessage ( result . data )
6986 } catch ( error ) {
87+ // Handle JSON parsing errors or other unexpected errors
88+ if ( error instanceof Error && error . message . includes ( 'Event validation failed' ) ) {
89+ // Already logged above, just re-throw
90+ throw error
91+ }
92+
93+ // Log JSON parsing or other errors
7094 console . error ( '[AI Provider] Failed to parse SSE event:' , {
71- eventData : sseEvent . data ,
72- error :
73- error instanceof Error ? error . message : String ( error ) ,
95+ eventId : sseEvent . id || 'unknown' ,
96+ eventType : sseEvent . event || 'unknown' ,
97+ rawEventData : sseEvent . data ,
98+ error : error instanceof Error ? error . message : String ( error ) ,
99+ errorStack : error instanceof Error ? error . stack : undefined ,
74100 } )
75- // Re-throw to trigger onError handler
101+
76102 throw new Error (
77103 `Event parsing failed: ${ error instanceof Error ? error . message : String ( error ) } `
78104 )
@@ -86,6 +112,12 @@ export const useAskAi = (props: Props): UseAskAiResponse => {
86112 headers,
87113 onMessage,
88114 onError : ( error ) => {
115+ console . error ( '[AI Provider] Error in useFetchEventSource:' , {
116+ errorMessage : error . message ,
117+ errorStack : error . stack ,
118+ errorName : error . name ,
119+ fullError : error ,
120+ } )
89121 setError ( error )
90122 props . onError ?.( error )
91123 } ,
0 commit comments