mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-22 16:25:58 +00:00
* fix(gateway): wire checkpoint config into agents * fix(checkpoints): resolve gateway file paths by task cwd
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""Behavioral coverage for file-tool checkpoint path resolution."""
|
|
|
|
from types import SimpleNamespace
|
|
|
|
from agent.tool_executor import _ensure_file_checkpoint
|
|
from tools.checkpoint_manager import CheckpointManager
|
|
|
|
|
|
def test_relative_file_checkpoint_uses_task_workspace(tmp_path, monkeypatch):
|
|
"""Checkpoint lookup must use the same cwd as a relative file mutation."""
|
|
process_cwd = tmp_path / "opt" / "hermes"
|
|
workspace_cwd = tmp_path / "opt" / "data" / "workspace"
|
|
process_cwd.mkdir(parents=True)
|
|
workspace_cwd.mkdir(parents=True)
|
|
|
|
# Both directories contain content so checkpointing the wrong one would
|
|
# still succeed and remain observable as the regression did in Docker.
|
|
(process_cwd / "pyproject.toml").write_text("[project]\nname = 'hermes'\n")
|
|
(workspace_cwd / "pyproject.toml").write_text("[project]\nname = 'workspace'\n")
|
|
(workspace_cwd / "existing.txt").write_text("before\n")
|
|
|
|
monkeypatch.chdir(process_cwd)
|
|
monkeypatch.setenv("TERMINAL_CWD", str(workspace_cwd))
|
|
monkeypatch.setattr(
|
|
"tools.checkpoint_manager.CHECKPOINT_BASE",
|
|
tmp_path / "checkpoints",
|
|
)
|
|
|
|
manager = CheckpointManager(enabled=True)
|
|
agent = SimpleNamespace(_checkpoint_mgr=manager)
|
|
|
|
_ensure_file_checkpoint(
|
|
agent,
|
|
"write_file",
|
|
{"path": "test_permissions2.txt"},
|
|
"gateway-session",
|
|
)
|
|
|
|
assert manager.list_checkpoints(str(workspace_cwd))
|
|
assert manager.list_checkpoints(str(process_cwd)) == []
|