mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix: /retry, /undo, /compress, and /reset gateway commands (#210)
- /retry, /undo, /compress were setting a non-existent conversation_history attribute on SessionEntry (a @dataclass with no such field). The dangling attribute was silently created but never read — transcript was reloaded from DB on next interaction, making all three commands no-ops. - /reset accessed self.session_store._sessions (non-existent) instead of self.session_store._entries, causing AttributeError caught by a bare except, silently skipping the pre-reset memory flush. Fix: - Add SessionDB.clear_messages() to delete messages and reset counters - Add SessionStore.rewrite_transcript() to atomically replace transcript in both SQLite and legacy JSONL storage - Replace all dangling attr assignments with rewrite_transcript() calls - Fix _sessions → _entries in /reset handler Closes #210
This commit is contained in:
parent
0512ada793
commit
698b35933e
3 changed files with 44 additions and 5 deletions
|
|
@ -476,6 +476,17 @@ class SessionDB:
|
|||
results.append({**session, "messages": messages})
|
||||
return results
|
||||
|
||||
def clear_messages(self, session_id: str) -> None:
|
||||
"""Delete all messages for a session and reset its counters."""
|
||||
self._conn.execute(
|
||||
"DELETE FROM messages WHERE session_id = ?", (session_id,)
|
||||
)
|
||||
self._conn.execute(
|
||||
"UPDATE sessions SET message_count = 0, tool_call_count = 0 WHERE id = ?",
|
||||
(session_id,),
|
||||
)
|
||||
self._conn.commit()
|
||||
|
||||
def delete_session(self, session_id: str) -> bool:
|
||||
"""Delete a session and all its messages. Returns True if found."""
|
||||
cursor = self._conn.execute(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue