/** * adapters/claude-code — Claude Code platform adapter. * * Implements HookAdapter for Claude Code's JSON stdin/stdout hook paradigm. * * Claude Code hook specifics: * - I/O: JSON on stdin, JSON on stdout * - Arg modification: `updatedInput` field in response * - Blocking: `permissionDecision: "deny"` in response * - PostToolUse output: `updatedMCPToolOutput` field * - PreCompact: stdout on exit 0 * - Session ID: transcript_path UUID > session_id > CLAUDE_SESSION_ID > ppid * - Config: ~/.claude/settings.json * - Session dir: ~/.claude/context-mode/sessions/ */ import type { HookAdapter, HookParadigm, PlatformCapabilities, DiagnosticResult, PreToolUseEvent, PostToolUseEvent, PreCompactEvent, SessionStartEvent, PreToolUseResponse, PostToolUseResponse, PreCompactResponse, SessionStartResponse, HookRegistration } from "../types.js"; export declare class ClaudeCodeAdapter implements HookAdapter { readonly name = "Claude Code"; readonly paradigm: HookParadigm; readonly capabilities: PlatformCapabilities; parsePreToolUseInput(raw: unknown): PreToolUseEvent; parsePostToolUseInput(raw: unknown): PostToolUseEvent; parsePreCompactInput(raw: unknown): PreCompactEvent; parseSessionStartInput(raw: unknown): SessionStartEvent; formatPreToolUseResponse(response: PreToolUseResponse): unknown; formatPostToolUseResponse(response: PostToolUseResponse): unknown; formatPreCompactResponse(response: PreCompactResponse): unknown; formatSessionStartResponse(response: SessionStartResponse): unknown; getSettingsPath(): string; getSessionDir(): string; getSessionDBPath(projectDir: string): string; getSessionEventsPath(projectDir: string): string; generateHookConfig(pluginRoot: string): HookRegistration; readSettings(): Record | null; writeSettings(settings: Record): void; validateHooks(pluginRoot: string): DiagnosticResult[]; /** Read plugin hooks from hooks/hooks.json or .claude-plugin/hooks/hooks.json */ private readPluginHooks; /** Check if a hook type is configured in either settings.json or plugin hooks */ private checkHookType; checkPluginRegistration(): DiagnosticResult; getInstalledVersion(): string; configureAllHooks(pluginRoot: string): string[]; backupSettings(): string | null; setHookPermissions(pluginRoot: string): string[]; updatePluginRegistry(pluginRoot: string, version: string): void; /** * Extract session ID from Claude Code hook input. * Priority: transcript_path UUID > session_id field > CLAUDE_SESSION_ID env > ppid fallback. */ private extractSessionId; }