diff --git a/gateway/platforms/base.py b/gateway/platforms/base.py index 4d611fdaa5..8b34f461aa 100644 --- a/gateway/platforms/base.py +++ b/gateway/platforms/base.py @@ -2675,10 +2675,11 @@ class BasePlatformAdapter(ABC): mode = os.getenv("HERMES_HUMAN_DELAY_MODE", "off").lower() if mode == "off": return 0.0 - min_ms = int(os.getenv("HERMES_HUMAN_DELAY_MIN_MS", "800")) - max_ms = int(os.getenv("HERMES_HUMAN_DELAY_MAX_MS", "2500")) 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")) 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 a6e0d51d60..dd6ffaf951 100644 --- a/tests/gateway/test_platform_base.py +++ b/tests/gateway/test_platform_base.py @@ -492,6 +492,16 @@ class TestGetHumanDelay: delay = BasePlatformAdapter._get_human_delay() assert 0.8 <= delay <= 2.5 + def test_natural_mode_ignores_malformed_custom_env_vars(self): + env = { + "HERMES_HUMAN_DELAY_MODE": "natural", + "HERMES_HUMAN_DELAY_MIN_MS": "oops", + "HERMES_HUMAN_DELAY_MAX_MS": "still-bad", + } + with patch.dict(os.environ, env): + delay = BasePlatformAdapter._get_human_delay() + assert 0.8 <= delay <= 2.5 + def test_custom_mode_uses_env_vars(self): env = { "HERMES_HUMAN_DELAY_MODE": "custom",