1+ #! /bin/sed -f
2+
3+ # Add SessionStartPayload interface after PreCompactPayload
4+ /^ }$ /, /^ export type HookPayload / {
5+ /^ export type HookPayload / i\
6+ \
7+ e xport interface SessionStartPayload {\
8+ session_id: string\
9+ transcript_path: string\
10+ hook_event_name: 'SessionStart'\
11+ source: string\
12+ }
13+ }
14+
15+ # Add SessionStart to HookPayload union type
16+ /| ( PreCompactPayload & {hook_type: 'PreCompact'}) $ / a\
17+ | (Se ssionStartPayload & {hook_type: 'SessionStart'})
18+
19+ # Add SessionStartResponse interface after PreCompactResponse
20+ /^ }$ /, /^ \/\/ Legacy simple response / {
21+ /^ \/\/ Legacy simple response / i\
22+ \
23+ // Se ssionStart specific response\
24+ export interface SessionStartResponse extends BaseHookResponse {\
25+ decision?: 'approve' | 'block'\
26+ reason?: string\
27+ hookSpecificOutput?: {\
28+ hookEventName: 'SessionStart'\
29+ additionalContext?: string\
30+ }\
31+ }
32+ }
33+
34+ # Add SessionStartHandler type after PreCompactHandler
35+ /^ export type PreCompactHandler. * $ / a\
36+ e xport type SessionStartHandler = (payload: SessionStartPayload) => Promise<SessionStartResponse> | SessionStartResponse
37+
38+ # Add sessionStart to HookHandlers interface
39+ / preCompact\? : PreCompactHandler$ / a\
40+ s essionStart? : S essionStartHandl er
41+
42+ # Add SessionStart case in runHook switch statement
43+ /case 'PreCompact':. * $ /, /break$ / {
44+ /break$ / a\
45+ \
46+ c ase 'SessionStart':\
47+ if (handlers.sessionStart) {\
48+ const response = await handlers.sessionStart(payload)\
49+ console.log(JSON.stringify(response))\
50+ } else {\
51+ console.log(JSON.stringify({}))\
52+ }\
53+ break
54+ }
0 commit comments