hermes-agent/tests/hermes_cli
teknium1 1a626470ca refactor(cli): promote 9 closure handlers to top-level + extract their parsers (god-file Phase 2 follow-up)
Subcommands whose handler was a closure defined inside main() — memory, acp,
tools, insights, skills, pairing, plugins, mcp, claw — have their handler
promoted to a top-level function and their parser block extracted into
hermes_cli/subcommands/<name>.py (build_<name>_parser, injected handler).

These 9 had zero closure-over-main-locals, so promotion is a pure relocation.
acp/mcp parser blocks use the shared add_accept_hooks_flag helper.

main() 1798 -> 954 LOC (71% below the 3297 Phase-2 starting point);
add_parser calls in main.py 89 -> 28.

Deferred: sessions, computer-use, secrets handlers reference <name>_parser
(for a no-subcommand print_help fallback) — left in place to avoid the
_self_parser indirection; minority, low value.

Behavior-neutral: all 9 subcommands' --help (incl nested subactions) byte-
identical to pre-extraction (diff-verified). tests/hermes_cli/ 6519 passed /
0 failed; new test_subcommands_followup.py covers the 9 builders.
2026-06-07 22:56:23 -07:00
..
__init__.py
conftest.py fix(update): quarantine hermes.exe vs concurrent Windows instance (#26670) (#26677) 2026-05-19 11:10:51 -07:00
conftest_dashboard_auth.py fix(dashboard-auth): use fixed-length sig suffix in stub token framing 2026-05-27 02:12:27 -07:00
test_anthropic_model_flow_stale_oauth.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_anthropic_oauth_flow.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
test_anthropic_provider_persistence.py refactor(tests): re-architect tests + fix CI failures (#5946) 2026-04-07 17:19:07 -07:00
test_api_key_providers.py fix(minimax): update AUTHOR_MAP entry + test_minimax_oauth_aux_model_registered 2026-06-04 05:53:35 -07:00
test_apply_model_switch_result_context.py fix(cli): /model picker honors provider-specific context caps (#16030) 2026-04-26 05:43:31 -07:00
test_apply_profile_override.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_arcee_provider.py remove Vercel AI Gateway and Vercel Sandbox (#33067) 2026-05-27 00:43:32 -07:00
test_argparse_flag_propagation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_at_context_completion_filter.py fix(tui): @folder: only yields directories, @file: only yields files 2026-04-21 14:31:48 -05:00
test_atomic_json_write.py fix(utils): guard os.fchmod for Windows in atomic_json_write 2026-06-01 09:57:10 -07:00
test_atomic_yaml_write.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_auth_codex_provider.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_auth_commands.py fix(auth): set active_provider after hermes auth add qwen-oauth 2026-06-04 05:58:33 -07:00
test_auth_loopback_ssh_hint.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_auth_manual_paste.py fix(xai-oauth): accept bare-code manual paste (state=None) (#26923) (#33880) 2026-05-28 05:47:30 -07:00
test_auth_nous_provider.py refactor(auth): remove vestigial Nous min_key_ttl/inference_auth_mode params 2026-05-29 02:24:48 -07:00
test_auth_profile_fallback.py revert: keep Google Chat OAuth secret + active_provider profile-scoped (#39398) 2026-06-04 16:54:40 -07:00
test_auth_provider_gate.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_auth_qwen_provider.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_auth_ssl_macos.py fix(auth): honor SSL CA env vars across httpx + requests callsites 2026-04-24 03:00:33 -07:00
test_auth_toctou_file_modes.py test: migrate stale os.kill monkeypatches to gateway.status._pid_exists 2026-05-08 14:27:40 -07:00
test_auth_usable_secret.py security: harden API server key placeholder handling (#30738) 2026-05-24 04:25:32 -07:00
test_auth_xai_oauth_provider.py fix(xai-oauth): pin inference base_url to x.ai origin (#28952) 2026-05-19 14:51:21 -07:00
test_aux_config.py fix(aux): remove stale session_search model menu entry 2026-05-18 20:01:34 -07:00
test_azure_detect.py feat(azure-foundry): add Microsoft Entra ID auth 2026-05-18 10:14:38 -07:00
test_azure_foundry_entra.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_backup.py fix(cron): restore jobs.json emptied by config migration on update 2026-05-29 13:22:54 -07:00
test_banner.py fix(mcp): banner shows 'disabled' not 'failed' for enabled:false servers (#38204) 2026-06-03 05:41:13 -07:00
test_banner_git_state.py fix(docker): bake build-time git SHA into the image 2026-05-28 15:14:05 +10:00
test_banner_pip_update.py refactor: DRY cleanup from code review 2026-05-15 14:45:43 -07:00
test_banner_skills.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_bedrock_model_picker.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_build_info.py fix(docker): bake build-time git SHA into the image 2026-05-28 15:14:05 +10:00
test_bundles.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_chat_skills_flag.py fix(termux): add local image chat route 2026-04-09 16:24:53 -07:00
test_claw.py fix(ci): stabilize main test suite regressions (#17660) 2026-04-29 23:18:55 -07:00
test_clear_stale_base_url.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_cli_output.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
test_cmd_update.py fix: align test fixture arg order + add zakame to AUTHOR_MAP 2026-06-06 18:22:20 -07:00
test_cmd_update_docker.py test(docker-update): stub subprocess.run in git-install regression guard 2026-05-28 15:50:25 +10:00
test_coalesce_session_args.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_codex_cli_model_picker.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_codex_models.py fix(codex): drop dead model slugs that HTTP 400 on ChatGPT Pro (#33424) 2026-05-27 12:16:15 -07:00
test_codex_runtime_plugin_migration.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_codex_runtime_switch.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_commands.py test(slack): drop /q alias assertion now displaced by /version cap clamp 2026-06-05 18:05:05 -07:00
test_completion.py test(cli): strengthen zsh completion regression coverage 2026-05-13 09:34:15 -07:00
test_config.py fix(config): preserve custom-provider models maps and metadata through v11->v12 migration (#40573) 2026-06-06 18:43:20 -07:00
test_config_drift.py feat(delegate): orchestrator role and configurable spawn depth (default flat) 2026-04-21 14:23:45 -07:00
test_config_env_expansion.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_config_env_refs.py fix(config): preserve env refs when save_config rewrites config (#11892) 2026-04-17 19:03:26 -07:00
test_config_validation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_container_aware_cli.py fix(ci): stabilize main test suite regressions (#17660) 2026-04-29 23:18:55 -07:00
test_container_boot.py fix(docker): seed s6 gateway state for legacy run cmd (#34829) 2026-06-01 11:28:56 +10:00
test_copilot_auth.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_copilot_catalog_oauth_fallback.py fix(copilot): require successful exchange when walking credential_pool catalog tokens 2026-04-28 01:18:09 -07:00
test_copilot_context.py fix(copilot): wire live /models max_prompt_tokens into context-window resolver 2026-04-24 05:09:08 -07:00
test_copilot_in_model_list.py test: remove low-value model-catalog mirror tests 2026-05-29 23:45:05 -07:00
test_copilot_token_exchange.py fix(copilot): exchange raw GitHub token for Copilot API JWT 2026-04-24 05:09:08 -07:00
test_cron.py fix(cron): don't crash on cron list when a job's repeat is null 2026-06-05 00:19:45 -07:00
test_curator_archive_prune.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_curator_recent_run_notice.py feat(curator): show rename map in user-visible summary (#22910) 2026-05-09 18:43:40 -07:00
test_curator_run.py fix(curator): make manual runs synchronous 2026-05-07 05:27:47 -07:00
test_curator_status.py fix(curator): make manual runs synchronous 2026-05-07 05:27:47 -07:00
test_curses_arrow_keys.py test: skip curses tests on Windows where _curses is unavailable (#40611) 2026-06-07 18:21:03 -07:00
test_curses_color_compat.py test: skip curses tests on Windows where _curses is unavailable (#40611) 2026-06-07 18:21:03 -07:00
test_curses_ui_fuzzy_rank.py feat(cli): ranked fuzzy search in the curses model picker 2026-06-01 16:58:58 -07:00
test_curses_ui_search.py feat(cli): add fuzzy search helpers for curses pickers 2026-06-01 16:58:58 -07:00
test_custom_provider_context_length.py fix(context): honor custom_providers context_length on /model switch + bump probe tier to 256K (#15844) 2026-04-25 18:47:53 -07:00
test_custom_provider_model_switch.py feat(model): honor discover_models in terminal hermes model named-custom flow 2026-06-06 01:29:41 +05:30
test_dashboard_admin_endpoints.py feat(dashboard): full tool backend configuration in the GUI (#40418) 2026-06-06 07:45:36 -07:00
test_dashboard_auth_401_reauth.py feat(dashboard-auth): rotate dashboard sessions via refresh token (#37247) 2026-06-02 21:16:41 +10:00
test_dashboard_auth_audit.py feat(dashboard-auth): json-lines audit log at $HERMES_HOME/logs/dashboard-auth.log 2026-05-27 02:12:27 -07:00
test_dashboard_auth_cookies.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_dashboard_auth_gate.py feat(dashboard-auth): Nous plugin always-on; default portal URL; specific error messages 2026-05-27 02:12:27 -07:00
test_dashboard_auth_middleware.py fix(dashboard-auth): don't abort verify chain on one provider's ProviderError 2026-06-04 03:23:45 -07:00
test_dashboard_auth_password_login.py test(dashboard-auth): cover password login route, provider, and plugin 2026-06-04 01:02:25 -07:00
test_dashboard_auth_plugin_hook.py feat(plugins): add register_dashboard_auth_provider hook on PluginContext 2026-05-27 02:12:27 -07:00
test_dashboard_auth_prefix.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_dashboard_auth_provider_base.py test(dashboard-auth): cover registry register/get/list/clear semantics 2026-05-27 02:12:27 -07:00
test_dashboard_auth_status_endpoint.py fix(dashboard-auth): share /api/* public allowlist between legacy and OAuth gates 2026-05-29 12:17:12 +10:00
test_dashboard_auth_stub_provider.py test(dashboard-auth): stub auth provider for E2E gate testing 2026-05-27 02:12:27 -07:00
test_dashboard_auth_ws_auth.py fix(dashboard): authenticate server-spawned PTY child WS with a process-internal credential 2026-06-02 23:43:27 -07:00
test_dashboard_auth_ws_tickets.py test(dashboard): direct unit coverage for internal WS credential + docstring fix 2026-06-02 23:43:27 -07:00
test_dashboard_browser_safe_imports.py Merge upstream/main and address Copilot review feedback 2026-04-30 06:43:22 -04:00
test_dashboard_lifecycle_flags.py feat(dashboard): always enable embedded chat; remove dashboard --tui flag 2026-06-04 03:03:35 -07:00
test_dashboard_profiles_nav_label.py fix(dashboard): UI polish — modals, layout, consistency, test fixes 2026-05-12 13:59:22 -04:00
test_dashboard_register.py fix(dashboard): honor --portal-url / HERMES_DASHBOARD_PORTAL_URL override in register 2026-06-04 00:17:57 -07:00
test_dashboard_tui_backcompat.py fix(ci): map @TheGardenGallery email + drop unused pytest import 2026-06-06 12:43:28 -05:00
test_debug.py feat(dashboard): add Debug Share to the System page (#38600) 2026-06-03 19:37:04 -07:00
test_default_interface_resolution.py feat(cli): configurable default interface (cli vs tui) 2026-06-02 20:49:44 -05:00
test_dep_ensure.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_deprecated_cwd_warning.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_destructive_slash_confirm_gate.py feat: confirm prompt for destructive slash commands (#4069) (#22687) 2026-05-09 11:04:46 -07:00
test_detect_api_mode_for_url.py fix: restrict provider URL detection to exact hostname matches 2026-04-20 22:14:29 -07:00
test_determine_api_mode_hostname.py fix: extend hostname-match provider detection across remaining call sites 2026-04-20 22:14:29 -07:00
test_dingtalk_auth.py test(dingtalk): cover QR device-flow auth + OpenClaw branding disclosure 2026-04-17 05:08:07 -07:00
test_discord_skill_clamp_warning.py test: add tests for cmd_key preservation through name clamping 2026-05-03 03:25:45 -07:00
test_doctor.py fix(doctor): detect + repair stale HERMES_MAX_ITERATIONS .env ghost shadowing config.yaml (#38222) 2026-06-03 06:38:40 -07:00
test_doctor_command_install.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_doctor_dedicated_provider_skip.py fix(doctor): skip pluggable provider profiles when a dedicated check exists (#22346) 2026-05-09 13:36:33 -07:00
test_dump_git_commit.py fix(docker): bake build-time git SHA into the image 2026-05-28 15:14:05 +10:00
test_ensure_hermes_home_uid_34107.py fix(config): chown ensure_hermes_home dirs to HERMES_UID/GID in Docker (#34107) (#34268) 2026-06-01 13:27:30 +10:00
test_env_load_cache.py perf(tools): cache get_nous_auth_status() and load_env() to fix slow hermes tools menus (#25341) 2026-05-13 18:40:14 -07:00
test_env_loader.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_env_sanitize_on_load.py clarify placeholder telegram credential in tests 2026-05-04 15:31:15 -04:00
test_fallback_cmd.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_gateway.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_gateway_linger.py fix(termux): disable gateway service flows on android 2026-04-09 16:24:53 -07:00
test_gateway_platform_gating.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_gateway_proc_fallback.py fix(gateway): detect gateway process via /proc in Docker without procps 2026-05-09 17:54:17 -07:00
test_gateway_restart_loop.py fix(gateway,cron): reuse existing _HERMES_GATEWAY marker; tighten cron regex 2026-05-30 23:05:56 -07:00
test_gateway_runtime_health.py
test_gateway_s6_dispatch.py fix(gateway): fall back to in-process heartbeat when s6 sleep is missing (#36208) (#37120) 2026-06-02 11:59:27 +10:00
test_gateway_service.py fix(gateway): use user launchd domain + Background session, detached fallback (macOS 26) 2026-06-06 09:08:37 -07:00
test_gateway_service_paths.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_gateway_windows.py fix(gateway-windows): anchor detached/startup cwd at HERMES_HOME 2026-06-03 19:37:29 -07:00
test_gateway_wsl.py fix(gateway,windows): reliability — JOB breakaway + status --deep probes + test-leak fix (#40909) 2026-06-06 19:53:58 -07:00
test_gemini_free_tier_setup_block.py feat(gemini): block free-tier keys at setup + surface guidance on 429 (#15100) 2026-04-24 04:46:17 -07:00
test_gemini_provider.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_gmi_provider.py test: remove low-value model-catalog mirror tests 2026-05-29 23:45:05 -07:00
test_goals.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_graphical_browser_detection.py fix(auth): don't launch a text-mode browser inside the terminal for OAuth (#34479) 2026-05-29 01:23:06 -07:00
test_gui_command.py fix(desktop): purge electron cache unconditionally, not via stdlib zipfile gate 2026-06-04 07:17:33 -07:00
test_gui_uninstall.py feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) 2026-06-06 18:22:38 -07:00
test_hooks_cli.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_ignore_user_config_flags.py refactor(cli): derive relaunch flag table from argparse introspection 2026-04-29 20:33:29 -07:00
test_image_gen_picker.py fix(auth): refresh Nous entitlement in tool menus 2026-05-28 00:19:31 -07:00
test_install_cua_driver.py fix(cli): pre-check CUA release asset for Intel macOS before install 2026-05-21 19:17:45 -07:00
test_inventory.py refactor(inventory): make force_fresh_nous_tier keyword-only + pin contract 2026-06-07 00:41:13 -07:00
test_inventory_pricing.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_kanban_blocked_sticky.py fix(kanban): align recompute_ready guard with breaker's configured failure_limit 2026-05-30 01:40:57 -07:00
test_kanban_boards.py fix(kanban): align board_exists with board discovery rules 2026-05-18 20:17:10 -07:00
test_kanban_cli.py fix(kanban): isolate board override per concurrent call 2026-06-04 07:39:53 -07:00
test_kanban_cli_dispatch_passthrough.py fix(kanban): CLI dispatch honors max_in_progress/max_spawn from config; swap missing 'avoid-ai-writing' skill for bundled humanizer (#33488, #29415) (#34337) 2026-05-28 21:00:46 -07:00
test_kanban_core_functionality.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_kanban_db.py fix(kanban): sweep deferred scratch parent on non-scratch child completion + tests 2026-06-07 09:50:44 -07:00
test_kanban_db_init.py fix(kanban): rebuild legacy TEXT-PK tables to INTEGER AUTOINCREMENT on open 2026-05-30 01:40:49 -07:00
test_kanban_decompose.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_kanban_decompose_db.py fix(kanban): decompose children inherit root workspace instead of forcing scratch (#37172) 2026-06-01 20:26:57 -07:00
test_kanban_default_assignee.py feat(kanban): default_assignee fallback + per-profile concurrency cap (#27145, #21582) (#34244) 2026-05-28 19:02:55 -07:00
test_kanban_diagnostics.py fix(kanban): honor severity thresholds in diagnostics 2026-05-18 20:47:01 -07:00
test_kanban_goal_mode.py feat(kanban): goal_mode cards run workers in a /goal loop (#35710) 2026-05-31 01:16:33 -07:00
test_kanban_notify.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_kanban_per_profile_cap.py feat(kanban): default_assignee fallback + per-profile concurrency cap (#27145, #21582) (#34244) 2026-05-28 19:02:55 -07:00
test_kanban_promote.py feat(kanban): --ids bulk promote + AUTHOR_MAP entry for #29464 2026-05-23 23:10:36 -07:00
test_kanban_specify.py feat(kanban): add specify — auxiliary LLM fleshes out triage tasks (#21435) 2026-05-07 13:04:41 -07:00
test_kanban_specify_db.py feat(kanban): add specify — auxiliary LLM fleshes out triage tasks (#21435) 2026-05-07 13:04:41 -07:00
test_kanban_swarm.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_kanban_worker_image_extraction.py feat(kanban): attach images referenced in task bodies to worker vision (#34210) 2026-05-28 17:50:42 -07:00
test_launcher.py
test_list_picker_providers.py fix(gateway): preserve model picker current context 2026-05-06 03:50:59 -07:00
test_logs.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_managed_installs.py fix(tests): catch up 25 stale tests after recent merges (#28626) 2026-05-19 01:28:32 -07:00
test_managed_uv.py fix(update/windows): don't return _UvResult on Windows (subprocess argv crash) (#39820) 2026-06-05 07:54:08 -05:00
test_mcp_add_command_dest.py fix(mcp): give 'mcp add --command' a distinct argparse dest 2026-05-07 05:17:03 -07:00
test_mcp_catalog.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_config.py fix(mcp): resolve ${ENV} in discovery probe so header auth works (#38571) 2026-06-03 17:49:39 -07:00
test_mcp_reload_confirm_gate.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_startup.py perf(cli): stop eager MCP discovery from blocking agent-capable startup 2026-05-30 07:45:26 -07:00
test_mcp_tools_config.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_memory_reset.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_memory_setup_provider_arg.py fix(memory): fall back to pip when uv is unavailable (salvage #5954) (#38668) 2026-06-04 14:03:02 +10:00
test_migrate_xai.py fix(xai): align migrate retirement map with docs 2026-05-20 09:18:23 -07:00
test_model_catalog.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_model_normalize.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_model_picker_viewport.py refactor(cli): align model picker viewport with PR #11260 vocabulary 2026-04-17 06:33:21 -07:00
test_model_provider_persistence.py fix(cli): migrate setup model/provider pickers off simple_term_menu to curses 2026-05-31 03:19:37 -07:00
test_model_switch_context_display.py fix(context): honor custom_providers context_length on /model switch + bump probe tier to 256K (#15844) 2026-04-25 18:47:53 -07:00
test_model_switch_copilot_api_mode.py fix: recompute Copilot api_mode after model switch 2026-04-16 01:16:14 -07:00
test_model_switch_custom_providers.py feat(model_switch): honor discover_models in custom_providers section 4 2026-06-06 01:04:13 +05:30
test_model_switch_opencode_anthropic.py fix(opencode): derive api_mode from target model, not stale config default (#15106) 2026-04-24 04:58:46 -07:00
test_model_switch_variant_tags.py fix(models): preserve OpenRouter variant tags (:free, :extended, :fast) during model switch (#6383) 2026-04-08 19:58:16 -07:00
test_model_validation.py test: remove low-value model-catalog mirror tests 2026-05-29 23:45:05 -07:00
test_models.py switch model order 2026-06-04 17:29:31 -07:00
test_models_dev_preferred_merge.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_non_ascii_credential.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_nous_account.py feat(auth) normalise the way in which we check whether a user has free/paid access to nous portal so we can expose behaviour and error messages accordingly. 2026-05-28 00:19:31 -07:00
test_nous_auth_status_cache.py perf(tools): cache get_nous_auth_status() and load_env() to fix slow hermes tools menus (#25341) 2026-05-13 18:40:14 -07:00
test_nous_hermes_non_agentic.py fix(cli): narrow Nous Hermes non-agentic warning to actual hermes-3/-4 models 2026-04-13 04:33:52 -07:00
test_nous_inference_url_validation.py test(auth): update nous jwt-only expectations 2026-05-29 02:24:48 -07:00
test_nous_subscription.py fix(cli): require Chromium for local browser readiness in setup/status surfaces 2026-06-05 04:06:17 -07:00
test_ollama_cloud_auth.py fix(completion): remove /model <arg> autocomplete from CLI/TUI (#39727) 2026-06-05 06:43:51 -07:00
test_ollama_cloud_provider.py test: remove low-value model-catalog mirror tests 2026-05-29 23:45:05 -07:00
test_openai_codex_model_validation_fallback.py fix(codex-spark): defensive 128k entry in DEFAULT_CONTEXT_LENGTHS + clarify validation test docstring 2026-05-09 23:17:25 -07:00
test_openai_picker_curated.py fix(model-picker): OpenAI shows curated models; OpenRouter no longer phantom-shows (#37404) 2026-06-02 06:31:37 -07:00
test_opencode_go_flat_namespace.py fix(opencode-go): keep users on opencode-go instead of hijacking to native providers (#20802) 2026-05-06 09:08:33 -07:00
test_opencode_go_in_model_list.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_opencode_go_validation_fallback.py fix(/model): accept provider switches when /models is unreachable 2026-04-21 05:19:43 -07:00
test_overlay_slug_resolution.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_path_completion.py
test_picker_prewarm.py perf(/model): prewarm picker provider-models cache in background (#39847) 2026-06-05 06:55:09 -07:00
test_pin_kanban_board_env.py test(kanban): isolate HERMES_KANBAN_BOARD writes in pin-env tests 2026-05-05 04:37:47 -07:00
test_pip_install_detection.py fix(cli): don't treat any container as the Docker image for updates (#35139) 2026-05-30 00:22:46 -07:00
test_placeholder_usage.py
test_plugin_auxiliary_tasks.py feat(plugins): add register_auxiliary_task() to PluginContext API 2026-05-23 17:49:47 -07:00
test_plugin_cli_registration.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_plugin_scanner_recursion.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_plugins.py fix(middleware): single-use next_call guard + deepcopy-safe request copies 2026-06-06 23:07:25 +05:30
test_plugins_cmd.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_plugins_cmd_list.py fix: improve plugins list usability 2026-05-29 00:59:42 -07:00
test_plugins_transcription_registration.py feat(stt): add register_transcription_provider() plugin hook 2026-05-25 01:41:19 -07:00
test_plugins_tts_registration.py feat(tts): add register_tts_provider() plugin hook (closes #30398) 2026-05-24 18:04:54 -07:00
test_portal_cli.py fix(cli): harden hermes portal SystemExit handling + finish model-pick doc sweep 2026-06-04 02:33:33 +05:30
test_post_setup_gating.py fix(tools): install cua-driver when Computer Use is enabled via 'hermes tools' (#22765) 2026-05-09 13:02:25 -07:00
test_profile_describer.py feat(kanban): orchestrator-driven auto-decomposition on triage (#27572) 2026-05-17 13:54:12 -07:00
test_profile_distribution.py fix(dist): stop USER_OWNED_EXCLUDE from filtering nested directories 2026-06-07 21:50:57 -07:00
test_profile_export_credentials.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_profiles.py feat(cli): display custom profile alias names in profile list/show (#40371) 2026-06-06 08:08:07 +00:00
test_profiles_s6_hooks.py fix(profiles): short-circuit s6 hooks on host before importing service_manager 2026-05-24 18:07:47 -07:00
test_project_plugin_rce_bypass.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_prompt_api_key.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
test_prompt_size.py feat(cli): add hermes prompt-size diagnostic (#35276) 2026-05-30 02:53:42 -07:00
test_provider_config_validation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_provider_groups.py feat(model-picker): show short description on grouped provider rows 2026-05-31 15:02:26 -07:00
test_proxy.py refactor(auth): remove vestigial Nous min_key_ttl/inference_auth_mode params 2026-05-29 02:24:48 -07:00
test_psutil_android_extract.py fix(android): reject unsafe tar members in psutil compatibility installer 2026-05-28 02:36:09 -07:00
test_pty_bridge.py fix(dashboard): clamp PTY resize dimensions for WSL2 winsize garbage (#38200) 2026-06-03 09:00:16 -07:00
test_reasoning_effort_menu.py fix(cli): migrate setup model/provider pickers off simple_term_menu to curses 2026-05-31 03:19:37 -07:00
test_redact_config_bridge.py feat(security): enable secret redaction by default (#17691, #20785) (#21193) 2026-05-07 05:10:33 -07:00
test_regression_16767.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_relaunch.py fix(windows): prefer npm.cmd over npm.ps1, skip .py argv0 in relaunch 2026-05-08 14:27:40 -07:00
test_resolve_last_session.py fix(cli): tighten MRU lookup and session DB cleanup 2026-04-27 08:52:12 -07:00
test_run_with_idle_timeout.py fix(update): stream + idle-kill npm run build so a stalled webui-build can't soft-brick the install (#33803) 2026-05-28 03:34:47 -07:00
test_runtime_provider_resolution.py fix(model): isolate custom provider picker credentials 2026-05-29 12:32:35 -07:00
test_secret_prompt.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
test_secrets_bitwarden_non_tty.py fix(secrets): fail early with clear error when bitwarden setup runs without TTY (#40571) 2026-06-06 18:36:40 -07:00
test_security_advisories.py feat(security): supply-chain advisory checker + lazy-install framework + tiered install fallback (#24220) 2026-05-12 01:02:25 -07:00
test_security_audit.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_send_cmd.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_service_manager.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_session_browse.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_session_handoff.py feat(session): make /handoff actually transfer the session live 2026-05-10 13:06:25 -07:00
test_session_recap.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_sessions_delete.py test(sessions): wire sessions_dir through auto-prune + file-cleanup regression tests 2026-04-26 18:31:07 -07:00
test_set_config_value.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup_agent_settings.py fix(gateway): shutdown + restart hygiene (drain timeout, false-fatal, success log) (#18761) 2026-05-02 02:08:06 -07:00
test_setup_hermes_script.py chore: remove Atropos RL environments and tinker-atropos integration (#26106) 2026-05-15 10:36:38 +05:30
test_setup_irc.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup_matrix_e2ee.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup_menu_curses_migration.py feat(cli): ranked fuzzy search in the curses model picker 2026-06-01 16:58:58 -07:00
test_setup_model_provider.py fix(cli): require Chromium for local browser readiness in setup/status surfaces 2026-06-05 04:06:17 -07:00
test_setup_noninteractive.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup_ollama_cloud_force_refresh.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_setup_openclaw_migration.py fix(tests): catch up 25 stale tests after recent merges (#28626) 2026-05-19 01:28:32 -07:00
test_setup_prompt_menus.py fix(cli): show masked feedback for secret prompts 2026-05-25 01:20:33 -07:00
test_setup_reconfigure.py feat(setup): thin out setup — Quick Setup via Nous Portal + Full Setup defaults (#35723) 2026-05-31 09:13:06 -07:00
test_signal_handler_kanban_worker.py fix(kanban): SIGTERM on worker must terminate the process (#28181) 2026-05-28 11:59:58 -07:00
test_skills_config.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skills_hub.py fix(skills-hub): stop ellipsis-truncating the Identifier column (#33810) 2026-05-28 04:53:13 -07:00
test_skills_install_flags.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skills_skip_confirm.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skills_subparser.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skin_engine.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_slack_cli.py fix(slack): enable writable app home DMs in manifest 2026-05-08 17:01:12 -07:00
test_spotify_auth.py fix(auth): keep Spotify logout from resetting model config 2026-05-07 05:53:14 -07:00
test_startup_plugin_gating.py perf(cli): skip eager plugin discovery on known built-in subcommands (#22120) 2026-05-08 16:07:23 -07:00
test_status.py feat(cli): make hermes portal the human-readable Portal onboarding alias 2026-06-04 01:19:28 +05:30
test_status_model_provider.py feat(video_gen): wire Nous subscription override into hermes tools UX 2026-05-29 22:26:24 +05:30
test_subcommands_batch.py refactor(cli): extract 25 more subcommand parsers into hermes_cli/subcommands/ 2026-06-07 22:18:14 -07:00
test_subcommands_cron.py refactor(cli): extract hermes cron parser into hermes_cli/subcommands/ (god-file Phase 2) 2026-06-07 22:18:14 -07:00
test_subcommands_followup.py refactor(cli): promote 9 closure handlers to top-level + extract their parsers (god-file Phase 2 follow-up) 2026-06-07 22:56:23 -07:00
test_subcommands_profile_gateway.py refactor(cli): extract profile + gateway/proxy parsers into hermes_cli/subcommands/ 2026-06-07 22:18:14 -07:00
test_subparser_routing_fallback.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_subprocess_timeouts.py
test_suppress_eio_on_interrupt.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_systemd_optional_directives.py fix(gateway): normalize optional systemd directives in stale-check (#41119) 2026-06-07 21:50:57 -07:00
test_teams_pipeline_plugin_cli.py feat(teams-pipeline): add plugin runtime and operator cli 2026-05-08 11:18:14 -07:00
test_telegram_managed_bot.py Add CLI Telegram QR onboarding 2026-06-05 03:20:10 -07:00
test_tencent_tokenhub_provider.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_terminal_menu_fallbacks.py fix(cli): migrate setup model/provider pickers off simple_term_menu to curses 2026-05-31 03:19:37 -07:00
test_timeouts.py fix(codex): size and propagate timeouts for Responses-API requests; lower stale defaults 2026-05-25 01:47:55 -07:00
test_tips.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tool_token_estimation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tools_config.py feat(desktop): polish credentials settings and messaging env routing (#39217) 2026-06-04 14:01:15 -04:00
test_tools_disable_enable.py
test_tts_picker.py feat(tts): add register_tts_provider() plugin hook (closes #30398) 2026-05-24 18:04:54 -07:00
test_tui_bundled.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tui_heap_sizing.py fix(tui): cgroup-aware V8 heap cap so memory-limited containers stop dying silently (#38541) 2026-06-03 16:40:28 -07:00
test_tui_mouse_residue_suppression.py fix(tui): suppress mouse-residue leaks during Python launcher startup (#31213) 2026-05-27 22:03:45 -05:00
test_tui_npm_install.py test: update non-Termux workspace-scope fixtures for #38358 fix 2026-06-06 18:22:20 -07:00
test_tui_resume_flow.py fix(cli): surface oneshot agent exceptions to stderr with rc=1 2026-05-30 07:31:48 -07:00
test_uninstall_node_symlinks.py fix(installer): symlink bundled node/npm into command bin dir for FHS root installs 2026-06-04 02:31:49 -07:00
test_update_autostash.py feat(update): stash/restore by default + settable discard for non-interactive updates (reverts #38542, #39568) (#39645) 2026-06-05 17:30:10 +05:30
test_update_check.py fix(update-check): stop reporting phantom "N commits behind" inside Docker (#39559) 2026-06-05 15:37:19 +10:00
test_update_concurrent_quarantine.py fix(update/windows): robustly exclude launcher-shim ancestors from concurrent check (#35257) 2026-05-30 02:38:40 -07:00
test_update_config_clears_custom_fields.py fix(anthropic): complete third-party Anthropic-compatible provider support (#12846) 2026-04-19 22:43:09 -07:00
test_update_hangup_protection.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_update_post_pull_syntax_guard.py feat(update): syntax-validate critical files post-pull, auto-rollback on failure (#28669) 2026-05-19 03:01:02 -07:00
test_update_stale_dashboard.py fix(cli): exclude desktop-managed backend from stale-dashboard kill 2026-06-03 04:59:49 -07:00
test_update_yes_flag.py test: remove 50 stale/broken tests to unblock CI (#22098) 2026-05-08 14:55:40 -07:00
test_update_zip_symlink_reject.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_user_providers_model_switch.py fix(model-picker): stop routing OpenAI selection to OpenRouter (#37175) 2026-06-01 20:27:41 -07:00
test_uv_tool_update.py fix(install): scrap rebuild venv 2026-06-04 23:20:29 -04:00
test_verify_core_dependencies.py fix(cli): quarantine running hermes.exe during update dep-verification repair on Windows (#40409) 2026-06-06 12:50:58 -05:00
test_video_gen_picker.py fix(tools): video_gen picker reflects active xAI selection and runs xai_grok post_setup 2026-05-15 12:11:32 -07:00
test_voice_wrapper.py fix(tui): restore voice push-to-talk parity (#20897) 2026-05-06 15:49:59 -07:00
test_web_oauth_dispatch.py fix(desktop): signal loopback worker to stop on cancel 2026-06-02 18:28:24 -05:00
test_web_server.py fix: reap zombie subprocesses in web_server action status and meet_bot cleanup 2026-06-07 21:50:57 -07:00
test_web_server_cron_profiles.py fix(cron): reject id mutation + validate output paths under OUTPUT_DIR 2026-05-25 01:15:24 -07:00
test_web_server_host_header.py fix(dashboard): validate WebSocket Host and Origin 2026-05-24 15:00:44 -07:00
test_web_server_oauth_write.py Protect dashboard OAuth credentials with the same file-safety guarantees as other auth paths 2026-05-24 17:47:24 -07:00
test_web_server_session_search.py perf(desktop): make session-id search SQL-bounded, not O(n) 2026-06-04 07:49:34 -07:00
test_web_ui_build.py test: update non-Termux workspace-scope fixtures for #38358 fix 2026-06-06 18:22:20 -07:00
test_webhook_cli.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_whatsapp_setup_ordering.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_windows_native_docs.py docs(windows): fix Get-Command PATH guidance to venv\Scripts\hermes.exe (#40613) 2026-06-07 18:28:23 -07:00
test_xai_oauth_pkce_token_exchange.py test(xai-oauth): pin PKCE token-exchange wire format 2026-05-17 12:35:01 -07:00
test_xai_provider_labels.py fix(model): include Premium+ in xAI OAuth label 2026-05-24 18:12:16 -07:00
test_xai_retirement.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_xiaomi_provider.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00