Просмотр исходного кода

fix: tui not showing some errors

Aiden Cline 3 месяцев назад
Родитель
Сommit
aca32eaa1c

+ 2 - 0
packages/tui/internal/components/chat/messages.go

@@ -656,6 +656,8 @@ func (m *messagesComponent) renderView() tea.Cmd {
 				case nil:
 				case opencode.AssistantMessageErrorMessageOutputLengthError:
 					error = "Message output length exceeded"
+				case opencode.AssistantMessageErrorAPIError:
+					error = err.Data.Message
 				case opencode.ProviderAuthError:
 					error = err.Data.Message
 				case opencode.MessageAbortedError:

+ 14 - 0
packages/tui/internal/tui/tui.go

@@ -656,12 +656,26 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	case opencode.EventListResponseEventSessionError:
 		switch err := msg.Properties.Error.AsUnion().(type) {
 		case nil:
+			// No error details provided
 		case opencode.ProviderAuthError:
 			slog.Error("Failed to authenticate with provider", "error", err.Data.Message)
 			return a, toast.NewErrorToast("Provider error: " + err.Data.Message)
 		case opencode.UnknownError:
 			slog.Error("Server error", "name", err.Name, "message", err.Data.Message)
 			return a, toast.NewErrorToast(err.Data.Message, toast.WithTitle(string(err.Name)))
+		case opencode.EventListResponseEventSessionErrorPropertiesErrorAPIError:
+			slog.Error("API error", "message", err.Data.Message, "statusCode", err.Data.StatusCode)
+			return a, toast.NewErrorToast(err.Data.Message, toast.WithTitle(string(err.Name)))
+		case opencode.MessageAbortedError:
+			// Message was aborted - this is expected when user cancels, so just log it
+			slog.Debug("Message aborted", "message", err.Data.Message)
+		case opencode.EventListResponseEventSessionErrorPropertiesErrorMessageOutputLengthError:
+			slog.Error("Message output length error")
+			return a, toast.NewErrorToast("Message output length exceeded limit")
+		default:
+			// Handle any unhandled error types
+			slog.Error("Unhandled session error type", "type", fmt.Sprintf("%T", err))
+			return a, toast.NewErrorToast("An unexpected error occurred")
 		}
 	case opencode.EventListResponseEventSessionCompacted:
 		if msg.Properties.SessionID == a.app.Session.ID {