UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

54 lines 2.67 kB
/** * 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<string, unknown>) => ToolClassificationResult; evaluateCliToolPolicy: (toolName: string, toolInput: Record<string, unknown>, elements: ActiveElement[]) => CliToolPolicyResult; getActiveElements: (sessionId?: string) => Promise<ActiveElement[]>; } /** 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<string, unknown>, reason?: string): Record<string, unknown>; /** * 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<Record<string, unknown>>; //# sourceMappingURL=evaluatePermission.d.ts.map