Files
VoiceAgent/bin/session_tool.py
T

79 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""CLI helper to inspect and reset Hermes voice agent sessions."""
import json
import sys
from pathlib import Path
# Add VoiceAgent1 project root to sys.path
project_root = Path(__file__).resolve().parent.parent
if str(project_root) not in sys.path:
sys.path.insert(0, str(project_root))
SESSION_FILE_NAME = ".hermes-voice-session.json"
def get_session_file(app_dir: Path | None = None) -> Path:
base_dir = app_dir or project_root
return base_dir / SESSION_FILE_NAME
def get_active_session_id(app_dir: Path | None = None) -> str | None:
session_file = get_session_file(app_dir)
if session_file.exists():
try:
data = json.loads(session_file.read_text())
sid = data.get("session_id")
if sid and isinstance(sid, str):
return sid.strip()
except Exception:
pass
return None
def reset_session(app_dir: Path | None = None) -> tuple[bool, str]:
session_file = get_session_file(app_dir)
deleted = False
if session_file.exists():
try:
session_file.unlink()
deleted = True
except Exception as e:
return False, f"Could not remove session file: {e}"
msg = "Session reset successfully. A fresh Hermes session will start on the next turn."
if not deleted:
msg = "No active session file found. Next turn will start with a fresh session."
try:
import web_server
web_server.broadcast_event("session_reset", {"message": msg})
except Exception:
pass
return True, msg
def main():
app_dir = project_root
if len(sys.argv) < 2 or sys.argv[1] in ("get", "info", "current", "show"):
sid = get_active_session_id(app_dir)
if sid:
print(f"Active Session ID: {sid}")
else:
print("No active Hermes session (a new session will start on the next turn).")
return
action = sys.argv[1].lower()
if action in ("reset", "new", "clear"):
ok, msg = reset_session(app_dir)
print(msg)
else:
print(f"Unknown action: {sys.argv[1]}. Usage: python bin/session_tool.py [get|reset]")
sys.exit(1)
if __name__ == "__main__":
main()