Consolidate session events: remove session_before_new/session_new, add reason field to switch events

- Remove session_before_new and session_new hook events
- Add reason: 'new' | 'resume' to session_before_switch and session_switch events
- Remove 'new' reason from custom tool onSession (use 'switch' for both /new and /resume)
- Rename reset() to newSession(options?) in AgentSession
- Add NewSessionOptions with optional parentSession for lineage tracking
- Rename branchedFrom to parentSession in SessionHeader
- Rename RPC reset command to new_session with optional parentSession
- Update example hooks to use new event structure
- Update documentation and changelog

Based on discussion in #293
This commit is contained in:
Mario Zechner 2026-01-01 23:31:26 +01:00
parent 1d9fa13d58
commit 484d7e06bb
19 changed files with 117 additions and 117 deletions

View file

@ -76,22 +76,27 @@ Response:
{"type": "response", "command": "abort", "success": true}
```
#### reset
#### new_session
Clear context and start a fresh session. Can be cancelled by a `before_clear` hook.
Start a fresh session. Can be cancelled by a `session_before_switch` hook.
```json
{"type": "reset"}
{"type": "new_session"}
```
With optional parent session tracking:
```json
{"type": "new_session", "parentSession": "/path/to/parent-session.jsonl"}
```
Response:
```json
{"type": "response", "command": "reset", "success": true, "data": {"cancelled": false}}
{"type": "response", "command": "new_session", "success": true, "data": {"cancelled": false}}
```
If a hook cancelled the reset:
If a hook cancelled:
```json
{"type": "response", "command": "reset", "success": true, "data": {"cancelled": true}}
{"type": "response", "command": "new_session", "success": true, "data": {"cancelled": true}}
```
### State