fix(gateway): build service PATH from existing dirs only, include ~/.hermes/node_modules

Extract PATH building into _build_service_path_dirs() that skips directories
which don't exist on disk (e.g. node_modules/.bin for pip installs) and also
includes ~/.hermes/node/bin and ~/.hermes/node_modules/.bin for agent-browser.
This commit is contained in:
alt-glitch 2026-05-15 12:01:31 +00:00 committed by Teknium
parent c4bda3f27c
commit d69eab1efd
2 changed files with 61 additions and 8 deletions

View file

@ -0,0 +1,31 @@
from pathlib import Path
from unittest.mock import patch
def test_service_path_skips_nonexistent_node_modules(tmp_path):
"""Service PATH should not include node_modules/.bin if it doesn't exist."""
from hermes_cli.gateway import _build_service_path_dirs
with patch("hermes_cli.gateway.get_hermes_home", return_value=tmp_path / ".hermes"):
dirs = _build_service_path_dirs(project_root=tmp_path)
node_modules_bin = str(tmp_path / "node_modules" / ".bin")
assert node_modules_bin not in dirs
def test_service_path_includes_node_modules_when_present(tmp_path):
"""Service PATH should include node_modules/.bin when it exists."""
nm_bin = tmp_path / "node_modules" / ".bin"
nm_bin.mkdir(parents=True)
from hermes_cli.gateway import _build_service_path_dirs
with patch("hermes_cli.gateway.get_hermes_home", return_value=tmp_path / ".hermes"):
dirs = _build_service_path_dirs(project_root=tmp_path)
assert str(nm_bin) in dirs
def test_service_path_includes_hermes_home_node_modules(tmp_path):
"""Service PATH should include ~/.hermes/node_modules/.bin when it exists."""
hermes_nm = tmp_path / ".hermes" / "node_modules" / ".bin"
hermes_nm.mkdir(parents=True)
from hermes_cli.gateway import _build_service_path_dirs
with patch("hermes_cli.gateway.get_hermes_home", return_value=tmp_path / ".hermes"):
dirs = _build_service_path_dirs(project_root=tmp_path)
assert str(hermes_nm) in dirs