import type { PlatformAdapter, NormalizedHookInput, HookResult } from '../types.js';
// Maps Claude Code stdin format (session_id, cwd, tool_name, etc.)
// SessionStart hooks receive no stdin, so we must handle undefined input gracefully
export const claudeCodeAdapter: PlatformAdapter = {
normalizeInput(raw) {
const r = (raw ?? {}) as any;
return {
sessionId: r.session_id,
cwd: r.cwd ?? process.cwd(),
prompt: r.prompt,
toolName: r.tool_name,
toolInput: r.tool_input,
toolResponse: r.tool_response,
transcriptPath: r.transcript_path,
};
},
formatOutput(result) {
if (result.hookSpecificOutput) {
return { hookSpecificOutput: result.hookSpecificOutput };
}
return { continue: result.continue ?? true, suppressOutput: result.suppressOutput ?? true };
}
};