hermes-agent/hermes_cli
Teknium 029938fbed
fix(cli): defensive subparser routing for argparse bpo-9338 (#10113)
On some Python versions, argparse fails to route subcommand tokens when
the parent parser has nargs='?' optional arguments (--continue).  The
symptom: 'hermes model' produces 'unrecognized arguments: model' even
though 'model' is a registered subcommand.

Fix: when argv contains a token matching a known subcommand, set
subparsers.required=True to force deterministic routing.  If that fails
(e.g. 'hermes -c model' where 'model' is consumed as the session name
for --continue), fall back to the default optional-subparsers behaviour.

Adds 13 tests covering all key argument combinations.

Reported via user screenshot showing the exact error on an installed
version with the model subcommand listed in usage but rejected at parse
time.
2026-04-14 23:13:02 -07:00
..
__init__.py chore: release v0.9.0 (v2026.4.13) (#9182) 2026-04-13 11:52:09 -07:00
auth.py feat(zai): add GLM-5V-Turbo support for coding plan (#9907) 2026-04-14 16:26:01 -07:00
auth_commands.py fix(config): restore custom providers after v11→v12 migration 2026-04-13 10:50:52 -07:00
backup.py feat: fix SQLite safety in hermes backup + add --quick snapshots + /snapshot command (#8971) 2026-04-13 04:46:13 -07:00
banner.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00
callbacks.py fix: ESC cancels secret/sudo prompts, clearer skip messaging (#9902) 2026-04-14 16:11:37 -07:00
claw.py fix: unify OpenClaw detection, add isatty guard, fix print_warning import 2026-04-12 16:40:37 -07:00
cli_output.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00
clipboard.py feat(gateway): WSL-aware gateway with smart systemd detection (#7510) 2026-04-10 21:15:47 -07:00
codex_models.py fix: add gpt-5.4-mini to Codex fallback catalog (#3855) 2026-03-29 20:10:00 -07:00
colors.py feat: respect NO_COLOR env var and TERM=dumb (#4079) 2026-03-30 17:07:21 -07:00
commands.py fix: remove @staticmethod from _context_completions — crashes on @ mention 2026-04-14 19:43:42 -07:00
completion.py fix: preserve profile name completion in dynamic shell completion 2026-04-14 10:45:42 -07:00
config.py fix: detect and strip non-ASCII characters from API keys (#6843) 2026-04-14 20:20:31 -07:00
copilot_auth.py fix(copilot): resolve GHE token poisoning when GITHUB_TOKEN is set 2026-04-13 05:12:36 -07:00
cron.py feat(cron): track delivery failures in job status (#6042) 2026-04-07 22:49:01 -07:00
curses_ui.py feat(cli): add native /model picker modal for provider → model selection 2026-04-11 17:16:06 -07:00
debug.py feat: add hermes debug share — upload debug report to pastebin (#8681) 2026-04-12 18:05:14 -07:00
default_soul.py fix: reset default SOUL.md to baseline identity text (#3159) 2026-03-26 01:34:27 -07:00
doctor.py fix(cli): fix doctor checks for Kimi China credentials 2026-04-14 10:16:30 -07:00
dump.py fix: QQBot missing integration points, timestamp parsing, test fix 2026-04-14 00:11:49 -07:00
env_loader.py fix: detect and strip non-ASCII characters from API keys (#6843) 2026-04-14 20:20:31 -07:00
gateway.py fix: stale agent timeout, uv venv detection, empty response after tools (#9051, #8620, #9400) 2026-04-14 22:16:02 -07:00
logs.py feat: component-separated logging with session context and filtering (#7991) 2026-04-11 17:23:36 -07:00
main.py fix(cli): defensive subparser routing for argparse bpo-9338 (#10113) 2026-04-14 23:13:02 -07:00
mcp_config.py feat: add --env and --preset support to hermes mcp add 2026-04-11 15:34:57 -07:00
memory_setup.py fix: memory_setup.py - write non-secret env vars, check all fields in status 2026-04-14 10:49:35 -07:00
model_normalize.py feat(providers): add Arcee AI as direct API provider 2026-04-13 18:40:06 -07:00
model_switch.py fix: auto-correct close model name matches in /model validation (#9424) 2026-04-13 23:09:39 -07:00
models.py feat(zai): add GLM-5V-Turbo support for coding plan (#9907) 2026-04-14 16:26:01 -07:00
nous_subscription.py feat(tools): add Voxtral TTS provider (Mistral AI) 2026-04-11 01:56:55 -07:00
pairing.py chore: fix 154 f-strings, simplify getattr/URL patterns, remove dead code (#3119) 2026-03-25 19:47:58 -07:00
platforms.py feat(gateway): unify QQBot branding, add PLATFORM_HINTS, fix streaming, restore missing setup functions 2026-04-14 00:11:49 -07:00
plugins.py feat(plugins): namespaced skill registration for plugin skill bundles 2026-04-14 10:42:58 -07:00
plugins_cmd.py fix: no auto-activation + unified hermes plugins UI with provider categories 2026-04-10 19:15:50 -07:00
profiles.py fix: improve profile creation UX — seed SOUL.md + credential warning (#8553) 2026-04-12 12:22:34 -07:00
providers.py feat(providers): add Arcee AI as direct API provider 2026-04-13 18:40:06 -07:00
runtime_provider.py fix: resolve CI test failures — add missing functions, fix stale tests (#9483) 2026-04-14 01:43:45 -07:00
setup.py feat(gateway): unify QQBot branding, add PLATFORM_HINTS, fix streaming, restore missing setup functions 2026-04-14 00:11:49 -07:00
skills_config.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00
skills_hub.py fix(skills): cache GitHub repo trees to avoid rate-limit exhaustion on install 2026-04-12 16:39:04 -07:00
skin_engine.py feat(skin): add warm-lightmode skin from PR #4811 2026-04-13 23:51:21 -07:00
status.py feat(gateway): unify QQBot branding, add PLATFORM_HINTS, fix streaming, restore missing setup functions 2026-04-14 00:11:49 -07:00
tips.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00
tools_config.py feat(setup): add recommendation badges to tool provider selection (#9929) 2026-04-14 16:58:10 -07:00
uninstall.py refactor: remove dead code — 1,784 lines across 77 files (#9180) 2026-04-13 16:32:04 -07:00
web_server.py fix: override stale 'stopped' state when health probe confirms gateway alive 2026-04-14 15:41:30 -07:00
webhook.py refactor: replace inline HERMES_HOME re-implementations with get_hermes_home() 2026-04-07 10:40:34 -07:00