a83f669bcf
Follow-up to the static list refresh: replace the hardcoded xAI entries with _xai_curated_models(), mirroring the _codex_curated_models() pattern from PR #7844. The helper reads $HERMES_HOME/models_dev_cache.json at import time (no network call) and falls back to a small static list when the cache is missing or malformed. Why: _PROVIDER_MODELS["xai"] has drifted once already (issue #16699) and will drift again next time xAI renames a model. Hermes already maintains the models.dev cache and uses it for context-length lookups; pointing _PROVIDER_MODELS at the same source means the /model picker self-heals on the next cache refresh instead of requiring a PR. Behavior: - With cache populated (normal user): shows every current xAI model ID, picks up renames automatically on next refresh. - Without cache (fresh install, offline): falls back to a static snapshot of the 9 current flagship IDs. - Malformed cache / unexpected shape: same static fallback, no crash. Import time verified <20ms — disk read only, no HTTP. Addresses the structural piece of #16699 ("consider a single _provider_models(provider) resolver") for xAI. Other per-provider lists can adopt the same pattern as drift is observed.