fix(whatsapp): classify npm install failures as non-retryable fatal errors (#80095)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user