From aca32eaa1c1e16ca1e4044ac9ea28050a78d5381 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Thu, 30 Oct 2025 01:41:28 -0500 Subject: [PATCH] fix: tui not showing some errors --- packages/tui/internal/components/chat/messages.go | 2 ++ packages/tui/internal/tui/tui.go | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index a09e809f..3d52b84e 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/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: diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 27944367..3a0bc373 100644 --- a/packages/tui/internal/tui/tui.go +++ b/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 {