From b4ba42550c9260ae6e5114aeaebfa2c0c5a8e099 Mon Sep 17 00:00:00 2001 From: Julien Talbot Date: Sun, 10 May 2026 19:43:21 +0400 Subject: [PATCH] feat(doctor): surface xAI model retirement in hermes doctor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new section in run_doctor that lists retired xAI model references found in the active config and points the user at the official xAI migration guide. Each retired reference shows its config path (principal.model, auxiliary..model, delegation.model, tts.xai.model, or plugins.image_gen.xai.model), the recommended replacement, and whether reasoning_effort needs to be set (for non-reasoning variants that map to grok-4.3 + reasoning_effort=none). Findings are appended to manual_issues so the final doctor summary reminds the user to update their config.yaml manually (no automatic YAML rewriting in this PR — preserves comments, key order, types). Wrapped in try/except so doctor still completes if load_config or the retirement module raise unexpectedly. --- hermes_cli/doctor.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hermes_cli/doctor.py b/hermes_cli/doctor.py index 61381502511..df75ac68664 100644 --- a/hermes_cli/doctor.py +++ b/hermes_cli/doctor.py @@ -777,7 +777,33 @@ def run_doctor(args): except Exception: pass + _section("xAI Model Retirement (May 15, 2026)") + + try: + from hermes_cli.config import load_config + from hermes_cli.xai_retirement import ( + MIGRATION_GUIDE_URL, + find_retired_xai_refs, + format_issue, + ) + + _xai_cfg = load_config() + retired_refs = find_retired_xai_refs(_xai_cfg) + if not retired_refs: + check_ok("No retired xAI models in config") + else: + for ref in retired_refs: + check_warn(format_issue(ref)) + check_info(f"Migration guide: {MIGRATION_GUIDE_URL}") + manual_issues.append( + f"Update {len(retired_refs)} retired xAI model reference(s) " + f"in config.yaml — see {MIGRATION_GUIDE_URL}" + ) + except Exception as _xai_check_err: + check_warn("xAI retirement check skipped", f"({_xai_check_err})") + _section("Auth Providers") + try: from hermes_cli.auth import ( get_nous_auth_status,