Files
hermes-agent/evals/session_snapshot_removal.py
2026-09-07 08:08:41 -07:00

37 lines
1.8 KiB
Python

"""Real config → SQLite persistence → explicit /save A/B, without provider calls.
Run with a clean HOME/HERMES_HOME and PYTHONPATH pointing at the tree under test.
"""
import json
import os
from pathlib import Path
from types import SimpleNamespace
home = Path(os.environ["HERMES_HOME"])
home.mkdir(parents=True, exist_ok=True)
(home / "config.yaml").write_text("sessions:\n write_json_snapshots: true\n", encoding="utf-8")
from agent.agent_init import _init_session_state
from agent.session_persistence import SessionPersistenceMixin
from hermes_cli.cli_session_mixin import CLISessionMixin
from hermes_state import SessionDB
with SessionDB(db_path=home / "state.db") as db:
agent = SessionPersistenceMixin()
agent.max_iterations = 1
_init_session_state(agent, "snapshot-probe", db, None, None, None, False, 1, 1, 1)
agent.model, agent.base_url, agent.platform = "fixture", "http://127.0.0.1:1/v1", "cli"
agent.tools, agent.verbose_logging = [], True
db.create_session(agent.session_id, source="cli", model=agent.model)
agent._session_db_created = True
messages = [{"role": "user", "content": "retained question"},
{"role": "assistant", "content": "retained answer"}]
agent._persist_session(messages)
snapshots = [p.name for p in agent.logs_dir.glob("session_*.json")]
cli = SimpleNamespace(_session_db=db, session_id=agent.session_id)
explicit = home / "explicit.json"
CLISessionMixin.save_conversation(cli, f"/save json {explicit}")
saved = json.loads(explicit.read_text(encoding="utf-8"))
print(json.dumps({"automatic_snapshots": snapshots,
"sqlite_messages": len(db.get_messages_as_conversation(agent.session_id)),
"explicit_saved_messages": [m["content"] for m in saved["messages"]]}))