/** * Hook-based Enforcement Gates * * Uses Claude Flow hooks to enforce non-negotiable rules. * The model can forget. The hook does not. * * Gates: * 1. Destructive ops gate - requires confirmation + rollback plan * 2. Tool allowlist gate - blocks non-allowlisted tools * 3. Diff size gate - requires plan + staged commits for large diffs * 4. Secrets gate - redacts and warns on secret patterns * * @module @claude-flow/guidance/gates */ import type { GateConfig, GateResult, GateDecision, GuidanceRule } from './types.js'; export declare class EnforcementGates { private config; private activeRules; constructor(config?: Partial); /** * Update active rules from retrieval */ setActiveRules(rules: GuidanceRule[]): void; /** * Update configuration */ updateConfig(config: Partial): void; /** * Evaluate all gates for a command */ evaluateCommand(command: string): GateResult[]; /** * Evaluate all gates for a tool use */ evaluateToolUse(toolName: string, params: Record): GateResult[]; /** * Evaluate all gates for a file edit */ evaluateEdit(filePath: string, content: string, diffLines: number): GateResult[]; /** * Gate 1: Destructive Operations * * If command includes delete, drop, rm, force, migration, * require explicit confirmation and a rollback plan. */ evaluateDestructiveOps(command: string): GateResult | null; /** * Gate 2: Tool Allowlist * * If tool not in allowlist, block and ask for permission. */ evaluateToolAllowlist(toolName: string): GateResult | null; /** * Gate 3: Diff Size * * If patch exceeds threshold, require a plan and staged commits. */ evaluateDiffSize(filePath: string, diffLines: number): GateResult | null; /** * Gate 4: Secrets Detection * * If output matches secret patterns, redact and warn. */ evaluateSecrets(content: string): GateResult | null; /** * Get the most restrictive decision from multiple gate results */ aggregateDecision(results: GateResult[]): GateDecision; /** * Get gate statistics */ getActiveGateCount(): number; private findTriggeredRules; } /** * Create enforcement gates */ export declare function createGates(config?: Partial): EnforcementGates; //# sourceMappingURL=gates.d.ts.map