From 739b30bc021fc2d8202b4fea8aed91c389f7fc33 Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Sun, 3 May 2026 14:47:45 +0530 Subject: [PATCH] fix: follow-up fixes for TinyFish browser provider salvage - Remove ENV_VARS_BY_VERSION[23] entry: adding optional env vars does not require a config version bump (deep-merge handles it) - Replace change-detector test (assert _config_version == 23) with invariant test (assert positive int) - Add TinyFish case to setup.py missing_browser_hint - Add TINYFISH_BROWSER_TIMEOUT to set_config_value allowed keys - Add contributor simantak-dabhade to AUTHOR_MAP --- hermes_cli/config.py | 3 +-- hermes_cli/setup.py | 6 +++++- scripts/release.py | 1 + tests/tools/test_browser_camofox_state.py | 9 +++++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/hermes_cli/config.py b/hermes_cli/config.py index 4bd1a2bb2f..80314792f9 100644 --- a/hermes_cli/config.py +++ b/hermes_cli/config.py @@ -1307,7 +1307,6 @@ ENV_VARS_BY_VERSION: Dict[int, List[str]] = { "SLACK_BOT_TOKEN", "SLACK_APP_TOKEN", "SLACK_ALLOWED_USERS"], 10: ["TAVILY_API_KEY"], 11: ["TERMINAL_MODAL_MODE"], - 23: ["TINYFISH_API_KEY", "TINYFISH_API_URL", "TINYFISH_BROWSER_TIMEOUT"], } # Required environment variables with metadata for migration prompts. @@ -4642,7 +4641,7 @@ def set_config_value(key: str, value: str): 'FIRECRAWL_GATEWAY_URL', 'TOOL_GATEWAY_DOMAIN', 'TOOL_GATEWAY_SCHEME', 'TOOL_GATEWAY_USER_TOKEN', 'TAVILY_API_KEY', 'BROWSERBASE_API_KEY', 'BROWSERBASE_PROJECT_ID', 'BROWSER_USE_API_KEY', - 'TINYFISH_API_KEY', 'TINYFISH_API_URL', + 'TINYFISH_API_KEY', 'TINYFISH_API_URL', 'TINYFISH_BROWSER_TIMEOUT', 'FAL_KEY', 'TELEGRAM_BOT_TOKEN', 'DISCORD_BOT_TOKEN', 'TERMINAL_SSH_HOST', 'TERMINAL_SSH_USER', 'TERMINAL_SSH_KEY', 'SUDO_PASSWORD', 'SLACK_BOT_TOKEN', 'SLACK_APP_TOKEN', diff --git a/hermes_cli/setup.py b/hermes_cli/setup.py index 31cb846012..74ae153e23 100644 --- a/hermes_cli/setup.py +++ b/hermes_cli/setup.py @@ -384,7 +384,7 @@ def _print_setup_summary(config: dict, hermes_home): else: tool_status.append(("Web Search & Extract", False, "EXA_API_KEY, PARALLEL_API_KEY, FIRECRAWL_API_KEY/FIRECRAWL_API_URL, or TAVILY_API_KEY")) - # Browser tools (local Chromium, Camofox, Browserbase, Browser Use, or Firecrawl) + # Browser tools (local Chromium, Camofox, Browserbase, Browser Use, Firecrawl, or TinyFish) browser_provider = subscription_features.browser.current_provider if subscription_features.browser.managed_by_nous: tool_status.append(("Browser Automation (Nous Browser Use)", True, None)) @@ -406,6 +406,10 @@ def _print_setup_summary(config: dict, hermes_home): ) elif browser_provider == "Camofox": missing_browser_hint = "CAMOFOX_URL" + elif browser_provider == "TinyFish": + missing_browser_hint = ( + "npm install -g agent-browser and set TINYFISH_API_KEY" + ) elif browser_provider == "Local browser": missing_browser_hint = "npm install -g agent-browser" tool_status.append( diff --git a/scripts/release.py b/scripts/release.py index 32453d723d..41201d04a7 100755 --- a/scripts/release.py +++ b/scripts/release.py @@ -673,6 +673,7 @@ AUTHOR_MAP = { "web3blind@gmail.com": "web3blind", "ztzheng@163.com": "chengoak", # PR #17467 "24110240104@m.fudan.edu.cn": "YuShu", # co-author only + "simantak@mac.local": "simantak-dabhade", # PR #6329 } diff --git a/tests/tools/test_browser_camofox_state.py b/tests/tools/test_browser_camofox_state.py index 820ba9e218..770067d053 100644 --- a/tests/tools/test_browser_camofox_state.py +++ b/tests/tools/test_browser_camofox_state.py @@ -59,9 +59,10 @@ class TestCamofoxConfigDefaults: browser_cfg = DEFAULT_CONFIG["browser"] assert browser_cfg["camofox"]["managed_persistence"] is False - def test_config_version_matches_current_schema(self): + def test_config_version_is_positive_int(self): from hermes_cli.config import DEFAULT_CONFIG - # The current schema version is tracked globally; unrelated default - # options may bump it after browser defaults are added. - assert DEFAULT_CONFIG["_config_version"] == 23 + # Invariant: config version must be a positive integer. + # Don't assert a specific number — that's a change-detector. + assert isinstance(DEFAULT_CONFIG["_config_version"], int) + assert DEFAULT_CONFIG["_config_version"] > 0