/** * Permission evaluation for PreToolUse hooks across all AI platforms. * * Provides the `evaluate_permission` MCP-AQL READ operation, enabling * Claude Code, Cursor, Gemini CLI, Windsurf, and Codex to use * DollhouseMCP as their permission evaluation backend via hooks. * * Three-stage evaluation pipeline: * 1. Rate limiting — prevents abuse * 2. Static tool classification — built-in allow/deny rules * 3. Element policy evaluation — active element gatekeeper policies * * Returns platform-specific response formats so each platform's hook * script receives the JSON shape it expects. */ import type { RateLimiter } from '../../utils/RateLimiter.js'; import type { ToolClassificationResult, CliToolPolicyResult } from './policies/ToolClassification.js'; import type { ActiveElement } from './policies/ElementPolicies.js'; /** Error thrown when permission evaluation fails at a specific stage */ export declare class PermissionEvaluationError extends Error { readonly stage: 'rate_limit' | 'classification' | 'policy' | 'element_fetch'; readonly toolName: string; constructor(message: string, stage: 'rate_limit' | 'classification' | 'policy' | 'element_fetch', toolName: string, cause?: unknown); } /** Dependencies injected from MCPAQLHandler */ export interface EvaluatePermissionDeps { permissionPromptLimiter: RateLimiter; classifyTool: (toolName: string, toolInput: Record) => ToolClassificationResult; evaluateCliToolPolicy: (toolName: string, toolInput: Record, elements: ActiveElement[]) => CliToolPolicyResult; getActiveElements: (sessionId?: string) => Promise; } /** Known platform identifiers */ export declare const SUPPORTED_PLATFORMS: string[]; /** * Format permission evaluation response for platform-specific hook scripts. * Each platform expects a different JSON shape from its hook response. * * Unknown platforms default to claude_code format with a warning log. */ export declare function formatPermissionResponse(decision: 'allow' | 'deny' | 'ask', platform: string, _input: Record, reason?: string): Record; /** * Evaluate a CLI permission request for PreToolUse hooks. * * @param params - Tool name, input, and target platform * @param deps - Injected dependencies from MCPAQLHandler * @returns Platform-formatted permission decision */ export declare function evaluatePermission(params: { tool_name?: unknown; input?: unknown; platform?: unknown; session_id?: unknown; }, deps: EvaluatePermissionDeps): Promise>; //# sourceMappingURL=evaluatePermission.d.ts.map