Skip to content

checkAllProvidersHealth() silently checks 8 of 31 providers #1305

Description

@murdore

Split out of #342, which is being closed: rebuilding the BaseProvider.checkHealth() architecture that issue asked for would duplicate the better ProviderHealthChecker that already ships. But while verifying that, a concrete gap turned up in the replacement.

The problem

ProviderHealthChecker.checkAllProvidersHealth() iterates a hardcoded array:

// src/lib/utils/providerHealth.ts:1984-1993
const providers: AIProviderName[] = [
  AIProviderName.VERTEX,
  AIProviderName.GOOGLE_AI,
  AIProviderName.ANTHROPIC,
  AIProviderName.OPENAI,
  AIProviderName.BEDROCK,
  AIProviderName.AZURE,
  AIProviderName.LITELLM,
  AIProviderName.OLLAMA,
];

Eight providers. AIProviderName has 31.

The 23 it never checks include openai-compatible, openrouter, huggingface, mistral, sagemaker, deepseek, nvidia-nim, lm-studio, llamacpp, xai, groq, cohere, together-ai, fireworks, perplexity, cloudflare, replicate, and the embedding/image providers.

Why it matters

The method is named check all providers, and both the SDK (NeuroLink.checkAllProvidersHealth()) and the background warm-up path (providerHealth.ts:1847) call it. A user who runs it to validate their configuration gets a clean result set that silently omits two-thirds of what they might have configured — including whichever provider is actually broken.

Failing to report an unhealthy provider is worse than not offering the check, because the caller reasonably concludes everything is fine.

Suggested fix

Derive the list from the provider registry / AIProviderName rather than hardcoding it, so a newly registered provider is covered automatically and can't be forgotten. If some providers genuinely can't be probed, exclude them explicitly with a comment saying why — an intentional, documented exclusion rather than an accidental omission.

Worth checking getProviderStatus() at the same time: it has a separate hardcoded list of 11 with the same failure mode.

Found while re-verifying #342 against release on 2026-08-08. Counted via the AIProviderName enum in src/lib/constants/enums.ts (31 members) against the array above (8).

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions