feat(models): active model health probe (on-demand reachability test)

Author: lfnovoCreated Jul 21, 2026Updated Sep 5, 2026
Labelsenhancementtracked-in-umbrella

Part of the Model & Provider Configuration umbrella #947 (Phase 1 — health primitive).

Goal

An active model health probe: let a user test whether a configured model/credential is reachable and usable, on demand.

Design (from #947 §5)

This is the probe primitive only. Two things it is explicitly not:

  • Not the passive error taxonomy — that (unreachable/unauthorized/rate_limited/context_exceeded/…) is blocked on esperanto#227 (normalized exception hierarchy). We consume that upstream hierarchy when it lands rather than hand-rolling a string-matching classifier.
  • Not the resilience behaviors — fallback (#1156), picker prune (#1157), threshold warning (#1155) consume the probe/taxonomy but live in their own cards.

Implementation pointers

  • Reuse the existing connection-test path (connection_tester) that already backs ModelTestResultDialog.tsx.
  • Surface an on-demand "Test" affordance per model (the credential-level test already exists; extend/confirm it covers a chosen model).
  • Classify only what esperanto already types today: EsperantoError, ProviderCapabilityError. Leave richer categories for the #227 follow-up.

Acceptance

  • A user can run an on-demand health/reachability test for a model and see a clear pass/fail result.
  • Failures surface a clean message (using the currently-typed esperanto errors), not a raw stacktrace.
  • Follow-up noted: richer passive classification tracked against esperanto#227.