fix(desktop): suppress generic provider warning in onboarding

Hide the red setup notice when the message is the generic missing-provider guidance, since onboarding already presents provider auth actions. Centralize provider-setup matching across desktop hooks and add coverage for the matcher.
This commit is contained in:
Brooklyn Nicholson
2026-05-11 22:17:46 -04:00
parent 2252160dcf
commit 939ab58b8d
5 changed files with 44 additions and 8 deletions
@@ -15,6 +15,7 @@ import {
} from '@/lib/chat-messages'
import { coerceGatewayText, coerceThinkingText, normalizePersonalityValue } from '@/lib/chat-runtime'
import { triggerHaptic } from '@/lib/haptics'
import { isProviderSetupErrorMessage } from '@/lib/provider-setup-errors'
import { setClarifyRequest } from '@/store/clarify'
import { notify } from '@/store/notifications'
import { requestDesktopOnboarding } from '@/store/onboarding'
@@ -35,9 +36,6 @@ import type { RpcEvent } from '@/types/hermes'
import type { ClientSessionState } from '../../types'
const PROVIDER_SETUP_ERROR_RE =
/No inference provider configured|no_provider_configured|OPENROUTER_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|set an API key/i
interface MessageStreamOptions {
activeSessionIdRef: MutableRefObject<string | null>
hydrateFromStoredSession: (
@@ -598,7 +596,7 @@ export function useMessageStream({
}
} else if (event.type === 'error') {
const errorMessage = payload?.message || 'Hermes reported an error'
const looksLikeProviderSetup = PROVIDER_SETUP_ERROR_RE.test(errorMessage)
const looksLikeProviderSetup = isProviderSetupErrorMessage(errorMessage)
if (looksLikeProviderSetup) {
requestDesktopOnboarding(errorMessage)
@@ -18,6 +18,7 @@ import {
isDesktopSlashCommand
} from '@/lib/desktop-slash-commands'
import { triggerHaptic } from '@/lib/haptics'
import { isProviderSetupErrorMessage } from '@/lib/provider-setup-errors'
import {
$composerAttachments,
addComposerAttachment,
@@ -49,9 +50,7 @@ function blobToDataUrl(blob: Blob): Promise<string> {
function isProviderSetupError(error: unknown) {
const message = error instanceof Error ? error.message : String(error)
return /No inference provider configured|OPENROUTER_API_KEY|OPENAI_API_KEY|ANTHROPIC_API_KEY|set an API key/i.test(
message
)
return isProviderSetupErrorMessage(message)
}
interface PromptActionsOptions {