diff --git a/gateway/hooks.py b/gateway/hooks.py index 2274b5b9..657c2e44 100644 --- a/gateway/hooks.py +++ b/gateway/hooks.py @@ -8,8 +8,9 @@ Hooks are discovered from ~/.hermes/hooks/ directories, each containing: Events: - gateway:startup -- Gateway process starts - - session:start -- New session created - - session:reset -- User ran /new or /reset + - session:start -- New session created (first message of a new session) + - session:end -- Session ends (user ran /new or /reset) + - session:reset -- Session reset completed (new session entry created) - agent:start -- Agent begins processing a message - agent:step -- Each turn in the tool-calling loop - agent:end -- Agent finishes processing diff --git a/gateway/run.py b/gateway/run.py index d652d01d..25f69b7d 100644 --- a/gateway/run.py +++ b/gateway/run.py @@ -2178,7 +2178,14 @@ class GatewayRunner: # Reset the session new_entry = self.session_store.reset_session(session_key) - + + # Emit session:end hook (session is ending) + await self.hooks.emit("session:end", { + "platform": source.platform.value if source.platform else "", + "user_id": source.user_id, + "session_key": session_key, + }) + # Emit session:reset hook await self.hooks.emit("session:reset", { "platform": source.platform.value if source.platform else "",