Skip to content

feat(hooks): emit session:start and session:end lifecycle events#1432

Open
bayrakdarerdem wants to merge 1 commit intoNousResearch:mainfrom
bayrakdarerdem:feat/hooks-new-events-v2
Open

feat(hooks): emit session:start and session:end lifecycle events#1432
bayrakdarerdem wants to merge 1 commit intoNousResearch:mainfrom
bayrakdarerdem:feat/hooks-new-events-v2

Conversation

@bayrakdarerdem
Copy link

Summary

The gateway hook system has had session:start listed in its documentation since day one — but it was never actually emitted. Any plugin author who wrote a hook listening for session:start would get silence. This PR fixes that disconnect and adds a companion session:end event that was also missing.

Changes
gateway/run.py

Emits session:start on the first message of a new session (detected by checking if transcript history is empty)
Emits session:end just before session:reset so hooks can clean up or persist data before the session is destroyed

gateway/hooks.py

Updated docstring to accurately list both new events
Clarified the distinction between session:end (session is closing) and session:reset (new session entry has been created)

Why This Matters
The hook system is designed for extensibility — plugins subscribe to lifecycle events and react accordingly. A session boundary is one of the most fundamental events in any agent system. Without session:start and session:end, plugins have no way to:

Initialize per-session state
Persist session analytics
Send welcome or goodbye messages
Clean up resources when a conversation ends

This is a small but foundational fix for the plugin ecosystem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant