fix(whatsapp): classify npm install failures as non-retryable fatal errors (#80095)

This commit is contained in:
Christopher
2026-08-07 00:08:19 +02:00
committed by Teknium
parent 6f3dcabfeb
commit 136a911065
2 changed files with 13 additions and 0 deletions
+10
View File
@@ -600,6 +600,11 @@ class WhatsAppAdapter(WhatsAppBehaviorMixin, BasePlatformAdapter):
)
if install_result.returncode != 0:
print(f"[{self.name}] npm install failed: {install_result.stderr}")
self._set_fatal_error(
"whatsapp_npm_install_failed",
f"WhatsApp bridge npm install failed. Run `cd {bridge_dir} && {_npm_bin} install` manually, then restart `hermes gateway`.",
retryable=False,
)
return False
print(f"[{self.name}] Dependencies installed")
if _pkg_hash:
@@ -609,6 +614,11 @@ class WhatsAppAdapter(WhatsAppBehaviorMixin, BasePlatformAdapter):
pass # Stamp is an optimization; install still succeeded
except Exception as e:
print(f"[{self.name}] Failed to install dependencies: {e}")
self._set_fatal_error(
"whatsapp_npm_install_failed",
f"WhatsApp bridge npm install failed ({e}). Run `cd {bridge_dir} && {_npm_bin} install` manually, then restart `hermes gateway`.",
retryable=False,
)
return False
# Ensure session directory exists
+3
View File
@@ -216,6 +216,9 @@ class TestConnectCleanup:
result = await adapter.connect()
assert result is False
assert adapter.fatal_error_code == "whatsapp_npm_install_failed"
assert adapter.fatal_error_retryable is False
assert "npm install failed" in (adapter.fatal_error_message or "")
mock_release.assert_called_once_with("whatsapp-session", str(adapter._session_path))
assert adapter._platform_lock_identity is None