diff --git a/frontend/app/aipanel/aipanel.tsx b/frontend/app/aipanel/aipanel.tsx index 6ef092909d..9edee784d4 100644 --- a/frontend/app/aipanel/aipanel.tsx +++ b/frontend/app/aipanel/aipanel.tsx @@ -243,12 +243,6 @@ const AIPanelComponentInner = memo(({ onClose }: AIPanelProps) => { onError: (error) => { console.error("AI Chat error:", error); model.setError(error.message || "An error occurred"); - setMessages((prevMessages) => { - if (prevMessages.length > 0 && prevMessages[prevMessages.length - 1].role === "user") { - return prevMessages.slice(0, -1); - } - return prevMessages; - }); }, }); diff --git a/pkg/aiusechat/openai/openai-backend.go b/pkg/aiusechat/openai/openai-backend.go index 7edf2c0a9a..34be1c8721 100644 --- a/pkg/aiusechat/openai/openai-backend.go +++ b/pkg/aiusechat/openai/openai-backend.go @@ -25,6 +25,22 @@ import ( "github.com/wavetermdev/waveterm/pkg/web/sse" ) +// sanitizeHostnameInError removes the specific hostname from error messages +func sanitizeHostnameInError(err error, baseURL string) error { + if err == nil { + return nil + } + + errStr := err.Error() + parsedURL, parseErr := url.Parse(baseURL) + if parseErr == nil && parsedURL.Host != "" { + errStr = strings.ReplaceAll(errStr, baseURL, "AI service") + errStr = strings.ReplaceAll(errStr, parsedURL.Host, "host") + } + + return fmt.Errorf("%s", errStr) +} + // ---------- OpenAI wire types (subset) ---------- type OpenAIChatMessage struct { @@ -495,7 +511,7 @@ func RunOpenAIChatStep( resp, err := httpClient.Do(req) if err != nil { - return nil, nil, nil, err + return nil, nil, nil, sanitizeHostnameInError(err, chatOpts.Config.BaseURL) } defer resp.Body.Close()