import type { HookScope } from '../ide/shared/safe-path.js'; import { type PeaksHookEntry } from './hooks-codegate-superpowers.js'; export { HOOK_ENFORCE_SENTINEL, HOOK_CODE_GATE_SENTINEL, HOOK_CODE_GATE_MATCHER, HOOK_CODE_GATE_EVENT, SUPERPOWERS_DENIED_SKILLS, type PeaksHookEntry } from './hooks-codegate-superpowers.js'; /** * Install (and remove) the Peaks-managed hooks in an IDE's settings.json. * * The hook runs `peaks gate enforce` before every relevant tool call; when a SOP * guard's gates fail it returns the adapter-specific deny shape, which blocks the * tool call BEFORE the IDE's permission checks — making the gate un-bypassable. * * This file owns the policy and the four operations; the mechanisms live in the * `hooks-settings-*` siblings. Installation is an EXPLICIT user command (never * postinstall): skills describe, the CLI performs side effects. Writes preserve every * other key and hook, reject symlinked targets, and use an atomic rename. */ export type { HookScope } from '../ide/shared/safe-path.js'; export type { HookEntryTarget, HookInstallOptions, HookInstallPlan, HookInstallResult, HookRemoveResult, HookStatus } from './hooks-settings-types.js'; export { readInstalledEntriesFromSettings } from './hooks-settings-read-installed.js'; export { TRIGGER_PHRASES, listSuperpowersDenyEntries, withSuperpowersSkillDenylist, withTriggeredDenyList, withoutSuperpowersSkillDenylist, withoutTriggeredDenyList } from './hooks-settings-deny-list.js'; import type { HookInstallOptions, HookInstallPlan, HookInstallResult, HookRemoveResult, HookStatus } from './hooks-settings-types.js'; /** Default (claude-code) hook command. */ export declare const HOOK_ENFORCE_COMMAND = "peaks gate enforce --project \"${CLAUDE_PROJECT_DIR}\" --json"; /** Default (claude-code) peaks-managed hook entries — kept as a stable export for tests. Slice #014: only the gate-enforce entry. */ export declare const PEAKS_HOOK_ENTRIES: ReadonlyArray; export declare function planHookInstall(scope: HookScope, projectRoot?: string, options?: HookInstallOptions): HookInstallPlan; export declare function applyHookInstall(scope: HookScope, projectRoot?: string, options?: HookInstallOptions): HookInstallResult; export declare function removeHookInstall(scope: HookScope, projectRoot?: string, options?: HookInstallOptions): HookRemoveResult; export declare function readHookStatus(scope: HookScope, projectRoot?: string, options?: HookInstallOptions): HookStatus;