feat: Integrate centralized error reporting for API interactions

Implements robust error handling for Gemini API calls, integrating with the centralized error reporting system.

- API errors are now caught and reported to dedicated log files, providing detailed diagnostics without cluttering the user interface.
- A concise error message is surfaced to the user in the UI, indicating an API issue.
- Ensures any pending UI updates are processed before an API error is displayed.

This change improves our ability to diagnose API-related problems by capturing rich error context centrally, while maintaining a clean user experience.

Signed-off-by: Gemini <YourFriendlyNeighborhoodAI@example.com>
This commit is contained in:
Taylor Mullen
2025-05-11 13:32:56 -07:00
committed by N. Taylor Mullen
parent 4d5f0dc080
commit 2970f0a06c
2 changed files with 55 additions and 21 deletions

View File

@@ -323,6 +323,18 @@ export const useGeminiStream = (
);
setStreamingState(StreamingState.Idle);
return; // Stop processing the stream
} else if (event.type === ServerGeminiEventType.Error) {
// Flush out existing pending history item.
if (pendingHistoryItemRef.current) {
addItem(pendingHistoryItemRef.current, userMessageTimestamp);
setPendingHistoryItem(null);
}
addItem(
{ type: 'error', text: `[API Error: ${event.value.message}]` },
userMessageTimestamp,
);
setStreamingState(StreamingState.Idle);
// Allow stream to end naturally
}
} // End stream loop
@@ -335,7 +347,6 @@ export const useGeminiStream = (
setStreamingState(StreamingState.Idle);
} catch (error: unknown) {
if (!isNodeError(error) || error.name !== 'AbortError') {
console.error('Error processing stream or executing tool:', error);
addItem(
{
type: 'error',