hermes-agent/hermes_cli
teknium1 145c57fc01 fix: provider selection not persisting when switching via hermes model
Two related bugs prevented users from reliably switching providers:

1. OPENAI_BASE_URL poisoning OpenRouter resolution: When a user with a
   custom endpoint ran /model openrouter:model, _resolve_openrouter_runtime
   picked up OPENAI_BASE_URL instead of the OpenRouter URL, causing model
   validation to probe the wrong API and reject valid models.

   Fix: skip OPENAI_BASE_URL when requested_provider is explicitly
   'openrouter'.

2. Provider never saved to config: _save_model_choice() could save
   config.model as a plain string. All five _model_flow_* functions then
   checked isinstance(model, dict) before writing the provider — which
   silently failed on strings. With no provider in config, auto-detection
   would pick up stale credentials (e.g. Codex desktop app) instead of
   the user's explicit choice.

   Fix: _save_model_choice() now always saves as dict format. All flow
   functions also normalize string->dict as a safety net before writing
   provider.

Adds 4 regression tests. 2873 tests pass.
2026-03-10 17:12:34 -07:00
..
__init__.py Hermes Agent UX Improvements 2026-02-22 02:16:11 -08:00
auth.py fix: provider selection not persisting when switching via hermes model 2026-03-10 17:12:34 -07:00
banner.py feat: add data-driven skin/theme engine for CLI customization 2026-03-10 00:37:28 -07:00
callbacks.py refactor: reorganize agent and CLI structure for improved clarity 2026-02-21 23:17:18 -08:00
clipboard.py fix: resolve merge conflict with main in clipboard.py 2026-03-09 03:50:29 +03:00
codex_models.py Merge PR #446: fix(cli): use correct visibility filter string in codex API model fetch 2026-03-09 17:42:39 -07:00
colors.py Cleanup time! 2026-02-20 23:23:32 -08:00
commands.py feat: add data-driven skin/theme engine for CLI customization 2026-03-10 00:37:28 -07:00
config.py fix(config): atomic write for config.yaml to prevent data loss on crash 2026-03-10 06:48:37 -07:00
cron.py refactor: streamline cron job handling and update CLI commands 2026-02-21 16:21:19 -08:00
doctor.py fix: add Kimi Code API support (api.kimi.com/coding/v1) 2026-03-07 21:00:12 -05:00
gateway.py fix: Slack gateway setup missing event subscriptions and scopes 2026-03-09 14:31:19 -07:00
main.py fix: provider selection not persisting when switching via hermes model 2026-03-10 17:12:34 -07:00
models.py fix: custom endpoint provider shows as openrouter in gateway 2026-03-09 02:38:34 -07:00
pairing.py Cleanup time! 2026-02-20 23:23:32 -08:00
runtime_provider.py fix: provider selection not persisting when switching via hermes model 2026-03-10 17:12:34 -07:00
setup.py feat: add Nous Portal API key provider (#644) 2026-03-10 06:28:00 -07:00
skills_hub.py fix: Initialize Skills Hub on list 2026-03-09 01:43:59 +08:00
skin_engine.py fix: add themed hero art for all skins, fix triple-quote syntax 2026-03-10 03:54:12 -07:00
status.py Merge PR #458: Add explicit UTF-8 encoding to config/data file I/O 2026-03-09 21:19:20 -07:00
tools_config.py fix: setup wizard overwrites platform_toolsets saved by tools_command 2026-03-08 23:39:00 -07:00
uninstall.py Cleanup time! 2026-02-20 23:23:32 -08:00