diff --git a/gateway/platforms/base.py b/gateway/platforms/base.py index 8b34f461aa..5c2bbf96aa 100644 --- a/gateway/platforms/base.py +++ b/gateway/platforms/base.py @@ -2678,8 +2678,15 @@ class BasePlatformAdapter(ABC): if mode == "natural": min_ms, max_ms = 800, 2500 return random.uniform(min_ms / 1000.0, max_ms / 1000.0) - min_ms = int(os.getenv("HERMES_HUMAN_DELAY_MIN_MS", "800")) - max_ms = int(os.getenv("HERMES_HUMAN_DELAY_MAX_MS", "2500")) + # custom mode — tolerate malformed env vars instead of crashing. + try: + min_ms = int(os.getenv("HERMES_HUMAN_DELAY_MIN_MS", "800")) + except (TypeError, ValueError): + min_ms = 800 + try: + max_ms = int(os.getenv("HERMES_HUMAN_DELAY_MAX_MS", "2500")) + except (TypeError, ValueError): + max_ms = 2500 return random.uniform(min_ms / 1000.0, max_ms / 1000.0) async def _process_message_background(self, event: MessageEvent, session_key: str) -> None: diff --git a/tests/gateway/test_platform_base.py b/tests/gateway/test_platform_base.py index dd6ffaf951..84f3b7239f 100644 --- a/tests/gateway/test_platform_base.py +++ b/tests/gateway/test_platform_base.py @@ -512,6 +512,17 @@ class TestGetHumanDelay: delay = BasePlatformAdapter._get_human_delay() assert 0.1 <= delay <= 0.2 + def test_custom_mode_tolerates_malformed_env_vars(self): + env = { + "HERMES_HUMAN_DELAY_MODE": "custom", + "HERMES_HUMAN_DELAY_MIN_MS": "oops", + "HERMES_HUMAN_DELAY_MAX_MS": "still-bad", + } + with patch.dict(os.environ, env): + # falls back to the custom-mode defaults instead of crashing + delay = BasePlatformAdapter._get_human_delay() + assert 0.8 <= delay <= 2.5 + # --------------------------------------------------------------------------- # utf16_len / _prefix_within_utf16_limit / truncate_message with len_fn