/** * Official Claude Code Hooks Bridge * * Maps V3 internal hook events to official Claude Code hook events. * This bridge enables seamless integration between claude-flow's * internal hook system and the official Claude Code plugin API. * * @module v3/hooks/bridge/official-hooks-bridge */ import { HookEvent, type HookHandler, type HookContext, type HookResult } from '../types.js'; /** * Official Claude Code hook event types * Based on https://code.claude.com/docs/en/hooks */ export type OfficialHookEvent = 'PreToolUse' | 'PostToolUse' | 'UserPromptSubmit' | 'PermissionRequest' | 'Notification' | 'Stop' | 'SubagentStop' | 'PreCompact' | 'SessionStart'; /** * Official hook input structure (received via stdin) */ export interface OfficialHookInput { session_id: string; transcript_path: string; cwd: string; permission_mode: string; hook_event_name: OfficialHookEvent; tool_name?: string; tool_input?: Record; tool_output?: unknown; tool_success?: boolean; tool_exit_code?: number; prompt?: string; notification_message?: string; notification_level?: 'info' | 'warning' | 'error'; } /** * Official hook output structure (returned via stdout) */ export interface OfficialHookOutput { /** Decision for permission/flow control */ decision?: 'allow' | 'deny' | 'block' | 'ask' | 'approve' | 'stop' | 'continue'; /** Reason for the decision */ reason?: string; /** Whether to continue processing (false stops Claude) */ continue?: boolean; /** Modified tool input (for PreToolUse) */ updatedInput?: Record; /** Suppress the tool call result display */ suppressOutput?: boolean; } /** * Mapping from V3 HookEvent to Official hook events */ export declare const V3_TO_OFFICIAL_HOOK_MAP: Record; /** * Tool matchers for V3 events that map to PreToolUse/PostToolUse */ export declare const V3_TOOL_MATCHERS: Partial>; /** * Bridge class for converting between V3 and official hooks */ export declare class OfficialHooksBridge { /** * Convert official hook input to V3 HookContext */ static toV3Context(input: OfficialHookInput): HookContext; /** * Convert V3 HookResult to official hook output */ static toOfficialOutput(result: HookResult, event: OfficialHookEvent): OfficialHookOutput; /** * Convert official hook event to V3 HookEvent */ static officialToV3Event(officialEvent: OfficialHookEvent, toolName?: string): HookEvent; /** * Get tool matcher for a V3 event */ static getToolMatcher(event: HookEvent): string | null; /** * Check if V3 event maps to an official hook */ static hasOfficialMapping(event: HookEvent): boolean; /** * Create a CLI command for a V3 hook handler */ static createCLICommand(event: HookEvent, handler: string): string; } /** * Process stdin from official Claude Code hook system */ export declare function processOfficialHookInput(): Promise; /** * Output result to official Claude Code hook system */ export declare function outputOfficialHookResult(output: OfficialHookOutput): void; /** * Execute a V3 handler and bridge to official output */ export declare function executeWithBridge(input: OfficialHookInput, handler: HookHandler): Promise; export default OfficialHooksBridge; //# sourceMappingURL=official-hooks-bridge.d.ts.map