diff --git a/templates/hooks/lib.ts b/templates/hooks/lib.ts index 411d208..6108e6a 100644 --- a/templates/hooks/lib.ts +++ b/templates/hooks/lib.ts @@ -286,6 +286,7 @@ export interface NotificationPayload { transcript_path: string hook_event_name: 'Notification' message: string + title?: string } export interface StopPayload { @@ -316,6 +317,13 @@ export interface PreCompactPayload { trigger: 'manual' | 'auto' } +export interface SessionStartPayload { + session_id: string + transcript_path: string + hook_event_name: 'SessionStart' + source: string +} + export type HookPayload = | (PreToolUsePayload & {hook_type: 'PreToolUse'}) | (PostToolUsePayload & {hook_type: 'PostToolUse'}) @@ -324,6 +332,7 @@ export type HookPayload = | (SubagentStopPayload & {hook_type: 'SubagentStop'}) | (UserPromptSubmitPayload & {hook_type: 'UserPromptSubmit'}) | (PreCompactPayload & {hook_type: 'PreCompact'}) + | (SessionStartPayload & {hook_type: 'SessionStart'}) // Base response fields available to all hooks export interface BaseHookResponse { @@ -368,6 +377,16 @@ export interface PreCompactResponse extends BaseHookResponse { reason?: string } +// SessionStart specific response +export interface SessionStartResponse extends BaseHookResponse { + decision?: 'approve' | 'block' + reason?: string + hookSpecificOutput?: { + hookEventName: 'SessionStart' + additionalContext?: string + } +} + // Legacy simple response for backward compatibility export interface HookResponse { action: 'continue' | 'block' @@ -390,6 +409,7 @@ export type UserPromptSubmitHandler = ( payload: UserPromptSubmitPayload, ) => Promise | UserPromptSubmitResponse export type PreCompactHandler = (payload: PreCompactPayload) => Promise | PreCompactResponse +export type SessionStartHandler = (payload: SessionStartPayload) => Promise | SessionStartResponse export interface HookHandlers { preToolUse?: PreToolUseHandler @@ -399,6 +419,7 @@ export interface HookHandlers { subagentStop?: SubagentStopHandler userPromptSubmit?: UserPromptSubmitHandler preCompact?: PreCompactHandler + sessionStart?: SessionStartHandler } // Logging utility @@ -485,6 +506,15 @@ export function runHook(handlers: HookHandlers): void { } break + case 'SessionStart': + if (handlers.sessionStart) { + const response = await handlers.sessionStart(payload) + console.log(JSON.stringify(response)) + } else { + console.log(JSON.stringify({})) + } + break + default: console.log(JSON.stringify({})) }