From f332d5b2ba9cdbe764d0fed113ba82955f996b3c Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Wed, 2 Sep 2026 20:38:18 -0700 Subject: [PATCH] =?UTF-8?q?refactor(hermes=5Fcli):=20tools=5Fconfig=20grou?= =?UTF-8?q?p=20=E2=80=94=20AST-neutral=20bracket=20hugging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hermes_cli/tools_config.py | 5 +---- hermes_cli/tools_config_mcp.py | 3 +-- hermes_cli/tools_config_post_setup.py | 14 ++++---------- hermes_cli/tools_config_providers.py | 7 ++----- hermes_cli/toolset_scope.py | 5 +---- hermes_cli/toolset_validation.py | 5 +---- 6 files changed, 10 insertions(+), 29 deletions(-) diff --git a/hermes_cli/tools_config.py b/hermes_cli/tools_config.py index c8414f1af4..cb681de378 100644 --- a/hermes_cli/tools_config.py +++ b/hermes_cli/tools_config.py @@ -407,10 +407,7 @@ TOOL_CATEGORIES = { # configurable: reconfigure menu + "[no API key]" suffix); its setup runs through `_configure_vision_backend()` # (full provider+model picker, never forcing OpenRouter) and `_toolset_has_keys("vision")` uses # `resolve_vision_provider_client()`. -TOOLSET_ENV_REQUIREMENTS = { - "vision": [("OPENROUTER_API_KEY", "https://openrouter.ai/keys")], -} - +TOOLSET_ENV_REQUIREMENTS = {"vision": [("OPENROUTER_API_KEY", "https://openrouter.ai/keys")]} # --- Platform / Toolset Helpers --- _PLATFORM_ENABLE_ENV_VARS = ( diff --git a/hermes_cli/tools_config_mcp.py b/hermes_cli/tools_config_mcp.py index 69260a5091..12fdcbee20 100644 --- a/hermes_cli/tools_config_mcp.py +++ b/hermes_cli/tools_config_mcp.py @@ -12,8 +12,7 @@ from hermes_cli.cli_output import ( ) from hermes_cli.colors import Colors, color from hermes_cli.toolset_scope import ( - _TOOLSET_PLATFORM_RESTRICTIONS, - toolset_allowed_for_platform as _toolset_allowed_for_platform, + _TOOLSET_PLATFORM_RESTRICTIONS, toolset_allowed_for_platform as _toolset_allowed_for_platform ) diff --git a/hermes_cli/tools_config_post_setup.py b/hermes_cli/tools_config_post_setup.py index d86c7fa7ed..f80d4e38da 100644 --- a/hermes_cli/tools_config_post_setup.py +++ b/hermes_cli/tools_config_post_setup.py @@ -18,10 +18,7 @@ from hermes_cli.cli_output import ( ) from hermes_cli.config import get_env_value from hermes_cli.tools_config_cua import ( - _cua_driver_install_ready, - _pip_install, - _post_setup_no_window_flags, - install_cua_driver, + _cua_driver_install_ready, _pip_install, _post_setup_no_window_flags, install_cua_driver ) logger = logging.getLogger("hermes_cli.tools_config") @@ -76,9 +73,8 @@ def _install_chromium(install_cmd: list[str]) -> None: _print_info(" Installing Chromium (~170MB one-time download)...") try: result = subprocess.run( - install_cmd, - capture_output=True, text=True, encoding="utf-8", errors="replace", cwd=str(PROJECT_ROOT), timeout=600, - creationflags=_post_setup_no_window_flags(), + install_cmd, capture_output=True, text=True, encoding="utf-8", errors="replace", + cwd=str(PROJECT_ROOT), timeout=600, creationflags=_post_setup_no_window_flags(), ) if result.returncode == 0: _print_success(" Chromium installed") @@ -449,9 +445,7 @@ def run_post_setup_command(args) -> int: # binary/dependency install (otherwise toggling the toolset on silently skips the hook). Only add an # entry when the post_setup is the ONLY install side-effect for a no-key provider and the check is # local, bounded, and import-light. -_POST_SETUP_INSTALLED: dict = { - "cua_driver": lambda: _cua_driver_install_ready(), -} +_POST_SETUP_INSTALLED: dict = {"cua_driver": lambda: _cua_driver_install_ready()} def _post_setup_already_installed(post_setup_key: str) -> bool: diff --git a/hermes_cli/tools_config_providers.py b/hermes_cli/tools_config_providers.py index 9094772ecd..8d4a3e00e1 100644 --- a/hermes_cli/tools_config_providers.py +++ b/hermes_cli/tools_config_providers.py @@ -360,10 +360,8 @@ def _web_tier_matches(provider: dict, config: dict) -> bool: # Managed-row marker -> (config section, key) the pick writes, in check order. _MANAGED_SELECTION_KEYS: tuple[tuple[str, str, str], ...] = ( - ("tts_provider", "tts", "provider"), - ("stt_provider", "stt", "provider"), - ("browser_provider", "browser", "cloud_provider"), - ("web_backend", "web", "backend"), + ("tts_provider", "tts", "provider"), ("stt_provider", "stt", "provider"), + ("browser_provider", "browser", "cloud_provider"), ("web_backend", "web", "backend"), ) @@ -666,7 +664,6 @@ def _select_plugin_gen_provider(section: str, plugin_name: str, config: dict, *, _select_plugin_image_gen_provider = partial(_select_plugin_gen_provider, "image_gen") _select_plugin_video_gen_provider = partial(_select_plugin_gen_provider, "video_gen") - # Per-provider STT model catalogs for the picker; keys are ``stt.`` sections, first entry is the # default. Kept in sync with the dashboard selects (web_server _CONFIG_FIELD_META) and the desktop settings # enums (apps/desktop/src/app/settings/constants.ts). diff --git a/hermes_cli/toolset_scope.py b/hermes_cli/toolset_scope.py index 4bb107fba3..6e080324b2 100644 --- a/hermes_cli/toolset_scope.py +++ b/hermes_cli/toolset_scope.py @@ -4,10 +4,7 @@ from typing import Set # Toolsets without a restriction entry are available on every platform. -_TOOLSET_PLATFORM_RESTRICTIONS = { - "discord": {"discord"}, - "discord_admin": {"discord"}, -} +_TOOLSET_PLATFORM_RESTRICTIONS = {"discord": {"discord"}, "discord_admin": {"discord"}} def toolset_allowed_for_platform(ts_key: str, platform: str) -> bool: diff --git a/hermes_cli/toolset_validation.py b/hermes_cli/toolset_validation.py index ad34f3bacb..be64be272c 100644 --- a/hermes_cli/toolset_validation.py +++ b/hermes_cli/toolset_validation.py @@ -93,10 +93,7 @@ def validate_platform_toolsets( ) continue hint = f" — did you mean '{default}'?" if default_valid else "" - warnings.append( - f"platform '{platform}' references unknown toolset " - f"'{name}'{hint}" - ) + warnings.append(f"platform '{platform}' references unknown toolset '{name}'{hint}") if platform_valid_count == 0: reason = "is configured with an empty toolset list" if not raw else "has no valid toolsets configured"