hermes-agent/tests/hermes_cli
Teknium 2ba1cfeb2e
feat(goals): completion contracts for /goal — evidence-based judging (#50501)
Adds an optional structured completion contract to the standing-goal loop,
adapted from OpenAI Codex's /goal guidance (a durable objective works best
when it names what done means, how to prove it, what not to break, what's in
scope, and when to stop).

A contract has five optional fields — outcome, verification, constraints,
boundaries, stop_when. When set, the continuation prompt tells the agent to
target the verification surface and respect constraints, and the judge marks
the goal done only when the verification criterion is met with concrete
evidence (command result, file excerpt, test output) instead of a loose
"looks done" claim. This tightens the most common /goal failure mode:
premature completion / endless over-continuation on an underspecified goal.

Two ways to set a contract, both backward compatible (bare /goal <text>
behaves exactly as before):
- /goal draft <objective>  — expands plain text into a full contract via the
  goal_judge aux model (cache-safe side call), falls back to a free-form goal
  if the model is unavailable.
- /goal <text> with inline 'field: value' lines (verify:, constraints:,
  boundaries:, stop when:, ...). Plain goals with an incidental colon are not
  mangled — only known field prefixes are pulled out.
- /goal show prints the active contract.

Contracts persist in SessionDB.state_meta alongside the goal (survive /resume),
compose with /subgoal criteria, and old goal rows load unchanged. CLI + every
gateway platform via the shared GoalManager engine; zero new model tools.

Tests: +18 in tests/hermes_cli/test_goals.py (parse/serialize/judge-prompt/
draft/fallback), 73/73 green; 42/42 across the broader goal test surface;
live E2E roundtrip (set -> persist -> reload -> contract-aware prompts) green.
2026-06-22 12:20:09 -07:00
..
__init__.py
…
conftest.py test(hermes_cli): harden concurrent-gate fixture against partial-import race (#42626) 2026-06-08 22:54:25 -07:00
conftest_dashboard_auth.py
…
test_active_sessions.py feat(sessions): add optional max session cap 2026-06-08 15:12:12 -07:00
test_anthropic_model_flow_stale_oauth.py
…
test_anthropic_oauth_flow.py
…
test_anthropic_picker_curated.py fix(models): keep curated Anthropic aliases in /model picker (#43103) 2026-06-09 14:45:19 -07:00
test_anthropic_provider_persistence.py
…
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
…
test_apply_profile_override.py fix(s6): reserved default gateway must not follow sticky active_profile (#46483) 2026-06-15 05:36:20 +00:00
test_arcee_provider.py
…
test_argparse_flag_propagation.py
…
test_at_context_completion_filter.py
…
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
…
test_auth_codex_provider.py fix(auth): retry Codex device-code login on 429 with clear rate-limit message (#47860) 2026-06-17 05:48:35 -07:00
test_auth_codex_self_heal.py fix(auth): self-heal missing Codex access tokens 2026-06-13 05:15:26 -07:00
test_auth_commands.py feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 2026-06-21 19:53:27 -07:00
test_auth_loopback_ssh_hint.py
…
test_auth_manual_paste.py fix(xai): accept Grok Build code during loopback wait + tiny screenshot guard 2026-06-09 23:21:24 -07:00
test_auth_nous_provider.py
…
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
…
test_auth_qwen_provider.py
…
test_auth_ssl_macos.py
…
test_auth_toctou_file_modes.py
…
test_auth_usable_secret.py
…
test_auth_xai_oauth_provider.py fix(auth): refresh xAI OAuth tokens earlier 2026-06-15 05:40:23 -07:00
test_aux_config.py
…
test_azure_detect.py
…
test_azure_foundry_entra.py
…
test_backup.py test(backup): add regression tests for restore_quick_snapshot path traversal 2026-06-21 12:44:22 -07:00
test_banner.py fix(banner): don't advertise toolsets/skills the agent wasn't given (#50497) 2026-06-21 19:08:54 -07:00
test_banner_git_state.py
…
test_banner_pip_update.py
…
test_banner_skills.py
…
test_bedrock_model_picker.py
…
test_billing_cli.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
test_billing_portal_url.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
test_billing_scope_stepup.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
test_build_info.py
…
test_bundles.py
…
test_chat_skills_flag.py
…
test_claw.py
…
test_clear_stale_base_url.py
…
test_cli_active_session_limit.py feat(sessions): add optional max session cap 2026-06-08 15:12:12 -07:00
test_cli_output.py
…
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 fix(ci): remove pytest-timeout, use per-file timeout only 2026-06-12 13:42:42 -04:00
test_coalesce_session_args.py
…
test_codex_cli_model_picker.py
…
test_codex_models.py fix(model): require confirmation for expensive model selections 2026-06-10 00:24:06 -07:00
test_codex_runtime_plugin_migration.py
…
test_codex_runtime_switch.py
…
test_commands.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
test_completion.py
…
test_config.py Address email pairing review feedback 2026-06-21 22:43:57 -07:00
test_config_drift.py
…
test_config_env_expansion.py
…
test_config_env_refs.py
…
test_config_validation.py
…
test_container_aware_cli.py
…
test_container_boot.py fix(container): detect dashboard role under s6-overlay v3 (#49196) (#50600) 2026-06-22 15:35:38 +10:00
test_context_switch_guard.py fix(cli): log instead of swallow preflight-warning errors; consistent TUI warning field 2026-06-21 16:31:56 +05:30
test_copilot_auth.py
…
test_copilot_catalog_oauth_fallback.py
…
test_copilot_context.py
…
test_copilot_in_model_list.py
…
test_copilot_token_exchange.py
…
test_cron.py revert(cron): remove per-job profile support (PR #28124) (#43956) 2026-06-10 20:46:17 -07:00
test_cron_fire_dashboard.py fix(cron): serve /api/cron/fire on the dashboard app (hosted-agent surface) 2026-06-19 12:43:30 +10:00
test_cron_parser_builder.py fix(cli): omit --workspace when subpackage has its own package-lock.json (#42973) (#43986) 2026-06-11 05:01:25 +00:00
test_ctrlg_editor_submit.py feat(cli): Ctrl+G submits the edited draft on save (TUI parity) (#50560) 2026-06-21 22:43:55 -07:00
test_curator_archive_prune.py
…
test_curator_recent_run_notice.py
…
test_curator_run.py
…
test_curator_status.py
…
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
…
test_custom_provider_identity.py Fix custom provider identity loss in session persistence 2026-06-13 05:51:05 -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): surface full per-MCP catalog detail; fix pip-install doc (#48520) 2026-06-18 09:40:56 -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
…
test_dashboard_auth_cookies.py
…
test_dashboard_auth_gate.py fix(security): close hermes-0day MCP-persistence attack surface 2026-06-21 19:05:27 -07:00
test_dashboard_auth_middleware.py fix(dashboard): _require_token endpoints all 401 behind the OAuth gate (#42578) 2026-06-09 22:57:49 -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
…
test_dashboard_auth_prefix.py fix(dashboard-auth): warn when public_url override is silently rejected (#43214) 2026-06-10 12:14:57 +10:00
test_dashboard_auth_provider_base.py
…
test_dashboard_auth_status_endpoint.py fix(security): stop /api/status leaking host paths and PID on gated binds 2026-06-13 07:18:59 -07:00
test_dashboard_auth_stub_provider.py
…
test_dashboard_auth_ws_auth.py fix(security): fail-closed when WebSocket peer is empty in loopback mode 2026-06-21 13:33:18 -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
…
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
…
test_dashboard_register.py fix(cli): persist custom --portal-url to .env on dashboard register (#42435) 2026-06-09 13:56:33 +10:00
test_dashboard_tui_backcompat.py fix(ci): map @TheGardenGallery email + drop unused pytest import 2026-06-06 12:43:28 -05:00
test_dashboard_unified_launch.py fix(dashboard): pin machine-dashboard reroute to the machine root, not $HOME/.hermes (#46487) 2026-06-15 15:33:15 +10:00
test_debug.py fix(debug): include gui.log (dashboard/TUI/pty/websocket) in hermes debug share 2026-06-19 07:05:42 -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
…
test_deprecated_cwd_warning.py
…
test_destructive_slash_confirm_gate.py
…
test_detect_api_mode_for_url.py fix(providers): support anthropic proxy v1 endpoints 2026-06-14 02:09:16 -07:00
test_determine_api_mode_hostname.py
…
test_dingtalk_auth.py
…
test_discord_skill_clamp_warning.py
…
test_doctor.py feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 2026-06-21 19:53:27 -07:00
test_doctor_command_install.py
…
test_doctor_dedicated_provider_skip.py
…
test_dump_git_commit.py fix(dump): show commit date instead of release date in hermes debug (#48104) 2026-06-17 16:53:42 -07:00
test_dump_terminal_backend.py test(dump): cover terminal backend override reporting 2026-06-15 12:31:23 -07: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_ensure_utf8_locale.py fix(cli): repair non-UTF-8 stdout/stderr on all platforms, not just Windows (#43439) 2026-06-10 02:21:00 -07:00
test_env_load_cache.py
…
test_env_loader.py
…
test_env_sanitize_on_load.py
…
test_fallback_cmd.py
…
test_gateway.py feat(relay): connector⇄gateway channel auth + signed-HTTP inbound receiver + enroll CLI (#48147) 2026-06-18 12:01:54 +10:00
test_gateway_linger.py fix(gateway): refuse to write service definitions with a temp-dir HERMES_HOME (#44267) 2026-06-11 06:10:08 -07:00
test_gateway_platform_gating.py
…
test_gateway_proc_fallback.py
…
test_gateway_restart_loop.py fix(terminal): block gateway lifecycle commands from inside the gateway process 2026-06-19 11:53:44 +05:30
test_gateway_runtime_health.py Fix dashboard gateway profile scoping 2026-06-17 05:40:57 -07:00
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): defer macOS launchd reload when run inside the gateway tree (#47842) 2026-06-17 05:19:21 -07:00
test_gateway_service_paths.py
…
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
…
test_gemini_provider.py fix(gemini): strip native self prefixes before generateContent (#36141) 2026-06-13 13:47:08 -07:00
test_gmi_provider.py
…
test_goals.py feat(goals): completion contracts for /goal — evidence-based judging (#50501) 2026-06-22 12:20:09 -07:00
test_graphical_browser_detection.py
…
test_gui_command.py fix(desktop): resolve electronDist dynamically + self-heal blocked installs (supersedes #48081/#48082) (#48091) 2026-06-17 18:48:35 -05: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
…
test_ignore_user_config_flags.py
…
test_image_gen_picker.py
…
test_install_cua_driver.py fix(computer_use): probe cua-driver-rs release tag, not monorepo releases/latest 2026-06-22 06:42:30 -07:00
test_inventory.py fix(picker): keep flat-namespace reseller first-party models in desktop picker 2026-06-22 06:09:08 -07:00
test_inventory_pricing.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_kanban_blocked_sticky.py
…
test_kanban_boards.py
…
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
…
test_kanban_core_functionality.py refactor(kanban): fold worker/orchestrator skills into injected guidance (#50473) 2026-06-21 17:06:48 -07:00
test_kanban_db.py fix(kanban): bound the cross-process init lock so connect() can't hang forever (#50353) 2026-06-21 12:43:41 -07:00
test_kanban_db_init.py
…
test_kanban_decompose.py
…
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
…
test_kanban_diagnostics.py
…
test_kanban_dispatch_lock.py fix(kanban): single-writer dispatch lock to prevent orphan-dispatcher DB corruption (#50331) 2026-06-21 12:06:24 -07:00
test_kanban_goal_mode.py feat(goals): /goal wait <pid> — park the loop on a background process (#50503) 2026-06-22 06:27:29 -07:00
test_kanban_init_lock_bounded.py fix(kanban): bound the cross-process init lock so connect() can't hang forever (#50353) 2026-06-21 12:43:41 -07:00
test_kanban_lifecycle_hooks.py feat(kanban): add task lifecycle plugin hooks (claimed/completed/blocked) (#50349) 2026-06-21 12:38:14 -07:00
test_kanban_notify.py
…
test_kanban_per_profile_cap.py
…
test_kanban_promote.py
…
test_kanban_reclaim_claim_lock_guard.py fix(kanban): make reclaim claim-lock-aware to stop task/run status desync (#50366) 2026-06-21 12:49:07 -07:00
test_kanban_specify.py
…
test_kanban_specify_db.py
…
test_kanban_swarm.py
…
test_kanban_worker_image_extraction.py
…
test_kanban_worker_spawn_toolsets.py fix(kanban): pin assigned profile toolsets for workers (#45590) 2026-06-13 05:50:09 -07:00
test_kanban_worker_terminal_cwd.py fix(kanban): pin worker TERMINAL_CWD to the task workspace (#50348) 2026-06-21 12:43:37 -07:00
test_launcher.py
…
test_list_picker_providers.py
…
test_logs.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_managed_installs.py
…
test_managed_scope.py feat(managed-scope): add managed_scope module (resolver, loaders, key helpers) 2026-06-19 07:46:33 -07:00
test_managed_scope_cli_config.py fix(managed-scope): apply managed layer in cli.py's standalone config loader 2026-06-19 07:46:33 -07:00
test_managed_scope_config.py feat(managed-scope): managed config layer wins over user config 2026-06-19 07:46:33 -07:00
test_managed_scope_env.py feat(managed-scope): apply managed .env last with override 2026-06-19 07:46:33 -07:00
test_managed_scope_loaders.py fix(managed-scope): honor managed scope in config→env bridges too 2026-06-19 07:46:33 -07:00
test_managed_scope_overlay.py fix(managed-scope): honor managed scope in all standalone config loaders 2026-06-19 07:46:33 -07:00
test_managed_scope_regression.py test(config): pin config/env load behavior before managed scope 2026-06-19 07:46:33 -07:00
test_managed_scope_surfacing.py feat(managed-scope): surface managed scope in config show and doctor 2026-06-19 07:46:33 -07:00
test_managed_scope_writeguard.py feat(managed-scope): guard writes to managed config/env keys 2026-06-19 07:46:33 -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): preserve stdio argv passthrough 2026-06-11 08:59:55 -07:00
test_mcp_catalog.py fix(mcp): block exfil-shaped stdio server configs (#46083) 2026-06-14 04:24:14 -07:00
test_mcp_config.py fix(mcp): fail fast for noninteractive oauth without tokens 2026-06-15 04:22:07 -07:00
test_mcp_reload_confirm_gate.py
…
test_mcp_security.py fix(security): close hermes-0day MCP-persistence attack surface 2026-06-21 19:05:27 -07:00
test_mcp_startup.py
…
test_mcp_tools_config.py
…
test_memory_providers.py fix(desktop): show Hindsight memory provider (#37546) 2026-06-18 16:48:47 -05:00
test_memory_reset.py
…
test_memory_setup.py feat(memory): improve OpenViking setup UX 2026-06-17 01:04:26 +08: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
…
test_model_catalog.py fix(picker): keep max_models=0 distinct from unlimited; lock cap semantics 2026-06-18 13:47:31 -07:00
test_model_cost_guard.py fix(model): require confirmation for expensive model selections 2026-06-10 00:24:06 -07:00
test_model_normalize.py fix(gemini): strip native self prefixes before generateContent (#36141) 2026-06-13 13:47:08 -07:00
test_model_picker_expensive_confirm.py fix(model): persist /model switch by default across sessions 2026-06-19 07:07:06 -07:00
test_model_picker_viewport.py
…
test_model_provider_persistence.py feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 2026-06-21 19:53:27 -07:00
test_model_switch_context_display.py
…
test_model_switch_copilot_api_mode.py
…
test_model_switch_custom_providers.py fix(picker): keep flat-namespace reseller first-party models in desktop picker 2026-06-22 06:09:08 -07:00
test_model_switch_opencode_anthropic.py
…
test_model_switch_persist_default.py fix(model): persist /model switch by default across sessions 2026-06-19 07:07:06 -07:00
test_model_switch_variant_tags.py
…
test_model_validation.py fix(providers): support anthropic proxy v1 endpoints 2026-06-14 02:09:16 -07:00
test_models.py switch model order 2026-06-04 17:29:31 -07:00
test_models_dev_preferred_merge.py fix(models): keep curated-first ordering in live+curated merge; use pure-catalog helper in validation 2026-06-16 23:25:07 +05:30
test_non_ascii_credential.py
…
test_nous_account.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
test_nous_auth_keepalive.py fix Nous auth refresh for idle agents 2026-06-21 22:43:48 -07:00
test_nous_auth_status_cache.py fix(desktop): route global remote profile REST calls (#47011) 2026-06-15 23:24:55 -05:00
test_nous_hermes_non_agentic.py
…
test_nous_inference_url_validation.py fix(auth): heal poisoned Nous inference URL on refresh instead of retaining it 2026-06-20 10:53:45 -07:00
test_nous_subscription.py fix(whatsapp-cloud): review follow-ups for #43921 2026-06-11 07:51:01 -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_openai_codex_model_validation_fallback.py
…
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
…
test_opencode_go_in_model_list.py
…
test_opencode_go_validation_fallback.py
…
test_overlay_slug_resolution.py
…
test_path_completion.py test(cli): URL tokens must not trigger filesystem path completion 2026-06-17 12:33:56 +05:30
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_pip_install_detection.py fix(update): scope install-method stamp to the code tree, not $HERMES_HOME (#48188) 2026-06-18 14:14:41 +10:00
test_placeholder_usage.py
…
test_plugin_auxiliary_tasks.py
…
test_plugin_cli_registration.py
…
test_plugin_scanner_recursion.py
…
test_plugins.py docs(plugins): document acting from hooks via ctx.profile_name + dispatch_tool (#50352) 2026-06-21 12:54:40 -07:00
test_plugins_cmd.py fix(plugins): normalize browser-pasted GitHub repo URLs (#33539) 2026-06-13 13:23:59 -07:00
test_plugins_cmd_category_discovery.py fix(plugins): discover nested category plugins in 'plugins list' (issue #41066) 2026-06-07 08:02:55 +00:00
test_plugins_cmd_enable_disable_nested.py fix(plugins): alias-normalize enable/disable for nested category plugins (follow-up to #41076) 2026-06-08 17:57:37 +05:30
test_plugins_cmd_list.py fix(plugins): alias-normalize enable/disable for nested category plugins (follow-up to #41076) 2026-06-08 17:57:37 +05:30
test_plugins_transcription_registration.py
…
test_plugins_tts_registration.py
…
test_post_setup_gating.py
…
test_profile_describer.py
…
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
…
test_profiles.py feat(gateway): multiplex phase 0 — config flag, profile enumeration, profile-stamped session keys 2026-06-19 07:34:15 -07:00
test_profiles_s6_hooks.py fix(s6): register profile gateways without auto-starting (#46266) 2026-06-15 11:43:23 +10:00
test_project_plugin_rce_bypass.py fix(security): restrict dashboard plugin backend import to bundled plugins (#43719) 2026-06-22 17:51:37 +05:30
test_prompt_api_key.py
…
test_prompt_compose_command.py feat(cli): /prompt — compose your next prompt in $EDITOR (#50509) 2026-06-21 20:21:33 -07:00
test_prompt_size.py
…
test_provider_catalog.py feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 2026-06-21 19:53:27 -07:00
test_provider_config_validation.py
…
test_provider_groups.py feat(model-picker): show short description on grouped provider rows 2026-05-31 15:02:26 -07:00
test_provider_live_curated_merge.py fix(models): keep curated-first ordering in live+curated merge; use pure-catalog helper in validation 2026-06-16 23:25:07 +05:30
test_provider_parity.py test(desktop): lock GUI⊇`hermes model` provider parity; surface Bedrock 2026-06-19 07:26:46 -07:00
test_proxy.py
…
test_psutil_android_extract.py
…
test_pty_bridge.py fix(pty-bridge): terminate PTY process groups on teardown 2026-06-08 07:03:12 -07:00
test_reasoning_effort_menu.py
…
test_reasoning_full_command.py feat(cli): /reasoning full — show complete thinking, not 10-line clamp (#50499) 2026-06-21 20:21:11 -07:00
test_redact_config_bridge.py
…
test_regression_16767.py
…
test_relaunch.py
…
test_resolve_last_session.py
…
test_resolve_provider_openrouter_pool.py fix(auth): auto-detect OpenRouter credential from the pool, not just env (#42263) 2026-06-08 10:01:47 -07:00
test_run_with_idle_timeout.py
…
test_runtime_provider_resolution.py fix Nous auth refresh for idle agents 2026-06-21 22:43:48 -07:00
test_safe_mode.py fix(desktop): keep composer usable during reconnect (#45488) 2026-06-13 02:36:09 -07:00
test_secret_prompt.py feat(memory): improve OpenViking setup UX 2026-06-17 01:04:26 +08: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
…
test_security_audit.py
…
test_security_audit_startup.py feat(security): startup security posture audit (warn-on-load) 2026-06-21 19:05:27 -07:00
test_send_cmd.py fix(send): helpful error when --file gets a binary; document MEDIA: attachments (#45116) 2026-06-12 11:48:06 -07:00
test_service_manager.py fix(docker): supervised gateway uses --replace to take over stale holder (NS-505) (#47555) 2026-06-18 10:49:02 +10:00
test_session_browse.py
…
test_session_handoff.py
…
test_session_recap.py
…
test_sessions_delete.py
…
test_set_config_value.py fix(config): redact api_key in config show/set output (#50245) (#50313) 2026-06-21 11:50:31 -07:00
test_setup.py refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2026-06-20 10:26:45 -07:00
test_setup_agent_settings.py
…
test_setup_blank_slate.py feat(setup): Blank Slate setup mode — minimal agent, opt in to everything (#36733) 2026-06-20 10:45:55 -07:00
test_setup_hermes_script.py
…
test_setup_irc.py
…
test_setup_matrix_e2ee.py
…
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
…
test_setup_ollama_cloud_force_refresh.py refactor(cli): extract 18 model-flow wizard functions into model_setup_flows (god-file Phase 2) 2026-06-08 09:42:44 -07:00
test_setup_openclaw_migration.py
…
test_setup_prompt_menus.py
…
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
…
test_skills_config.py fix(skills): apply global|platform disabled union to all resolution sites 2026-06-14 22:54:54 +05:30
test_skills_hub.py feat(skills): show live per-source progress while browsing (#43398) 2026-06-10 01:02:40 -07:00
test_skills_install_flags.py
…
test_skills_skip_confirm.py
…
test_skills_subparser.py
…
test_skin_engine.py
…
test_slack_cli.py
…
test_spotify_auth.py fix(spotify): quarantine dead tokens on terminal refresh failure 2026-06-20 23:23:47 -07:00
test_startup_plugin_gating.py
…
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 Merge commit '6110aed9b' into feat/whatsapp-cloud-api 2026-06-10 21:39:22 -04:00
test_subcommands_batch.py fix(cli): deprecated `hermes login` fails gracefully for any provider 2026-06-17 12:55:40 +05:30
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 feat(relay): connector⇄gateway channel auth + signed-HTTP inbound receiver + enroll CLI (#48147) 2026-06-18 12:01:54 +10:00
test_subparser_routing_fallback.py
…
test_subprocess_timeouts.py
…
test_suppress_eio_on_interrupt.py
…
test_system_stats_platform.py fix(dashboard): show Windows 11 in host panel (#44511) 2026-06-11 19:06:29 -04: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
…
test_telegram_managed_bot.py fix(desktop): keep profile homes out of bootstrap (#46073) 2026-06-14 03:08:52 -07:00
test_tencent_tokenhub_provider.py
…
test_terminal_menu_fallbacks.py fix(model): require confirmation for expensive model selections 2026-06-10 00:24:06 -07:00
test_timeouts.py
…
test_timestamps_command.py feat(cli): /timestamps command + timestamps in /history (#50506) 2026-06-21 22:44:25 -07:00
test_tips.py
…
test_tool_token_estimation.py
…
test_tools_config.py refactor: remove agent-callable send_message tool (#47856) 2026-06-17 07:11:23 -07:00
test_tools_disable_enable.py
…
test_tts_picker.py
…
test_tui_bundled.py
…
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
…
test_tui_npm_install.py fix(cli): auto-restore a deleted ui-tui workspace from git before TUI launch 2026-06-21 13:10:22 -07:00
test_tui_resume_flow.py fix(tui): apply terminal backend config before launch 2026-06-09 00:31:27 -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 fix(cli,deps): clear esbuild audit loop 2026-06-15 06:18:27 -07:00
test_update_check.py fix(update): don't count across shallow-clone boundary (bogus '12492 commits behind') (#50784) 2026-06-22 05:39:11 -07:00
test_update_concurrent_quarantine.py fix(gateway): cold-start installed Windows gateway after update when none was running (#50804) 2026-06-22 06:02:31 -07:00
test_update_config_clears_custom_fields.py fix(model): clear stale endpoint credentials across switches 2026-06-19 19:58:26 -07:00
test_update_hangup_protection.py
…
test_update_interrupted_recovery.py fix(update): self-heal a venv left half-built by an interrupted install (#42172) 2026-06-10 02:57:05 -07:00
test_update_modified_notice.py refactor(skills): dedupe file-listing, share user-modified predicate, trim diff contract 2026-06-18 12:42:58 +05:30
test_update_post_pull_syntax_guard.py
…
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_update_zip_atomic_replace.py fix(cli): make ZIP-update directory replace atomic so it can't delete ui-tui 2026-06-21 13:10:22 -07:00
test_update_zip_symlink_reject.py
…
test_user_providers_model_switch.py test(model-switch): cover section-3 no-auth probe; map chimpera author 2026-06-16 13:07:52 -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
…
test_voice_wrapper.py
…
test_web_oauth_dispatch.py feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 2026-06-21 19:53:27 -07:00
test_web_server.py fix(security): restrict dashboard plugin backend import to bundled plugins (#43719) 2026-06-22 17:51:37 +05:30
test_web_server_boot_handshake.py test(web_server): add integration tests for desktop boot handshake fix 2026-06-21 12:29:18 -07:00
test_web_server_cron_profiles.py
…
test_web_server_files.py fix(dashboard): clean up upload temp file on client disconnect + pin python-multipart (NS-501) 2026-06-18 11:32:18 +05:30
test_web_server_fs.py fix(desktop): scope remote workspace defaults 2026-06-11 09:41:35 -07:00
test_web_server_host_header.py
…
test_web_server_messaging_profiles.py Fix dashboard gateway profile scoping 2026-06-17 05:40:57 -07:00
test_web_server_oauth_write.py
…
test_web_server_profile_unification.py Fix dashboard gateway profile scoping 2026-06-17 05:40:57 -07:00
test_web_server_pty_import.py feat(windows): enable dashboard /chat tab via ConPTY (win_pty_bridge) + tests (#42251) 2026-06-08 11:32:43 -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_server_skill_editor.py feat(dashboard): SKILL.md editor on Skills page + attach-skill selector in cron modals (#44231) 2026-06-11 06:10:27 -07:00
test_web_server_skills_profiles.py fix(dashboard): skill installs from the dashboard silently auto-cancel (#45150) 2026-06-12 12:58:36 -07:00
test_web_ui_build.py fix(dashboard): suppress unicode-animations postinstall during npm ci 2026-06-11 11:49:08 -07:00
test_webhook_cli.py
…
test_whatsapp_cloud_setup.py
…
test_whatsapp_setup_ordering.py
…
test_win_pty_bridge.py feat(windows): enable dashboard /chat tab via ConPTY (win_pty_bridge) + tests (#42251) 2026-06-08 11:32:43 -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_curated_models.py chore: add AUTHOR_MAP entry for #47904 salvage 2026-06-17 09:49:46 -07:00
test_xai_model_flow.py fix(xai): accept Grok Build code during loopback wait + tiny screenshot guard 2026-06-09 23:21:24 -07:00
test_xai_oauth_pkce_token_exchange.py
…
test_xai_oauth_profile_auth.py fix(auth): resolve xAI OAuth credentials across profiles 2026-06-15 17:03:35 +05:30
test_xai_oauth_refresh.py fix(auth): refresh xAI OAuth tokens earlier 2026-06-15 05:40:23 -07:00
test_xai_oauth_writethrough.py fix(auth): write rotated xAI OAuth tokens back to global root (#43589) 2026-06-15 17:08:19 +05:30
test_xai_provider_labels.py
…
test_xai_retirement.py
…
test_xiaomi_provider.py
…