From 894e8c8a8f505c863e4a1c2365feb6607e22072e Mon Sep 17 00:00:00 2001 From: Hunter B Date: Thu, 2 Apr 2026 19:59:19 -0500 Subject: [PATCH] fix: resolve opencode.ai context window to 1M and clean up display formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two issues resolved: 1. Add opencode.ai to _URL_TO_PROVIDER mapping so base_url routes through models.dev lookup (which has mimo-v2-pro at 1M context) instead of falling back to probing /models (404) and defaulting to 128K. 2. Fix _format_context_length to round cleanly: 1048576 → '1M' instead of '1.048576M'. Applies same rounding logic to K values. --- agent/model_metadata.py | 1 + hermes_cli/banner.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/agent/model_metadata.py b/agent/model_metadata.py index 5b1d3376a..9282586fe 100644 --- a/agent/model_metadata.py +++ b/agent/model_metadata.py @@ -197,6 +197,7 @@ _URL_TO_PROVIDER: Dict[str, str] = { "api.githubcopilot.com": "copilot", "models.github.ai": "copilot", "api.fireworks.ai": "fireworks", + "opencode.ai": "opencode-go", } diff --git a/hermes_cli/banner.py b/hermes_cli/banner.py index 03712c272..b29805872 100644 --- a/hermes_cli/banner.py +++ b/hermes_cli/banner.py @@ -295,10 +295,16 @@ def _format_context_length(tokens: int) -> str: """Format a token count for display (e.g. 128000 → '128K', 1048576 → '1M').""" if tokens >= 1_000_000: val = tokens / 1_000_000 - return f"{val:g}M" + rounded = round(val) + if abs(val - rounded) < 0.05: + return f"{rounded}M" + return f"{val:.1f}M" elif tokens >= 1_000: val = tokens / 1_000 - return f"{val:g}K" + rounded = round(val) + if abs(val - rounded) < 0.05: + return f"{rounded}K" + return f"{val:.1f}K" return str(tokens)