Skip to content

Commit ef76290

Browse files
committed
Fix naming
1 parent 2ecc35d commit ef76290

File tree

3 files changed

+50
-11
lines changed

3 files changed

+50
-11
lines changed

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/StreamingAiMessage.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,14 @@ export const StreamingAiMessage = ({
4848
updateAiMessage(message.id, contentRef.current, 'complete')
4949
}
5050
},
51-
onError: () => {
51+
onError: (error) => {
52+
console.error('[AI Provider] Error in StreamingAiMessage:', {
53+
messageId: message.id,
54+
errorMessage: error.message,
55+
errorStack: error.stack,
56+
errorName: error.name,
57+
fullError: error,
58+
})
5259
updateAiMessage(
5360
message.id,
5461
message.content || 'Error occurred',

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/useAskAi.ts

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
},

src/api/Elastic.Documentation.Api.Infrastructure/Adapters/AskAi/StreamTransformerBase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ private async Task ProcessStreamAsync(PipeReader reader, PipeWriter writer, Acti
209209
_ = parseActivity?.SetTag("tool.result_summary", toolResult.Result);
210210
break;
211211
}
212-
case AskAiEvent.MessageComplete chunkComplete:
212+
case AskAiEvent.MessageComplete messageComplete:
213213
{
214-
outputMessageParts.Add(new MessagePart("text", chunkComplete.FullContent));
215-
Logger.LogInformation("AskAI output message: {OutputMessage}", chunkComplete.FullContent);
214+
outputMessageParts.Add(new MessagePart("text", messageComplete.FullContent));
215+
Logger.LogInformation("AskAI output message: {OutputMessage}", messageComplete.FullContent);
216216
break;
217217
}
218218
case AskAiEvent.ConversationEnd:

0 commit comments

Comments
 (0)