import { AgentTool, SessionHook, AttachReport } from '../types.js'; export declare class SessionHookInstaller { /** Detect installed agents on this machine + project */ detectInstalled(projectDir: string): Promise; /** Install hooks for ALL detected agents in one shot */ attachAll(projectDir: string): Promise; /** Best-effort non-mutating audit of Shadow Brain hook artifacts. */ audit(projectDir: string): Promise; /** Detach Shadow Brain from every detected agent without creating new hooks. */ detachAll(projectDir: string): Promise; /** Install hooks for a single agent. Returns list of installed hooks. */ attach(agent: AgentTool, projectDir: string): Promise; /** Detach Shadow Brain from a specific agent */ detach(agent: AgentTool, projectDir: string): Promise; private attachClaudeCode; private attachCursor; private attachCline; private attachWindsurf; private attachCodex; private attachKiloCode; private attachOpenCode; private attachRooCode; private attachAider; private attachCopilot; /** Add Shadow Brain to an MCP-server-style JSON config without clobbering existing servers */ private upsertMcpJson; private findInstalledHooks; private containsShadowBrain; private removeShadowBrainBlock; private removeFromJsonConfig; /** * Claude Code schema requires each SessionStart entry to have shape: * { matcher: string, hooks: [{ type: 'command', command: '...' }] } * Older Shadow Brain versions mistakenly wrote flat { name, command, timeout } * entries directly, which broke Claude Code's settings loader. This function: * - drops null/undefined/non-object entries * - rewraps flat "legacy" entries into a valid { matcher, hooks } block * - ensures every block.hooks is a valid array of { type:'command', command } * - strips any nested malformed entries */ private repairClaudeHookBlocks; private cursorRuleTemplate; private genericRuleTemplate; private copilotInstructionsTemplate; } export declare function getHookInstaller(): SessionHookInstaller; //# sourceMappingURL=session-hooks.d.ts.map