UNPKG

@rip-user/rls-debugger-mcp

Version:

AI-powered MCP server for debugging Supabase Row Level Security policies with Claude structured outputs

179 lines 5.52 kB
import { z } from 'zod'; export interface RLSPolicy { schemaname: string; tablename: string; policyname: string; polpermissive: 'PERMISSIVE' | 'RESTRICTIVE'; policyrole: string; polcmd: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' | 'ALL'; policyqual: string | null; policywithcheck: string | null; } export declare const RLSAnalysisSchema: z.ZodObject<{ scenario_summary: z.ZodString; applicable_policies: z.ZodArray<z.ZodObject<{ table: z.ZodString; policy_name: z.ZodString; operation: z.ZodString; condition: z.ZodString; will_grant_access: z.ZodBoolean; reason: z.ZodString; policy_type: z.ZodEnum<["PERMISSIVE", "RESTRICTIVE"]>; }, "strip", z.ZodTypeAny, { table: string; policy_name: string; operation: string; condition: string; will_grant_access: boolean; reason: string; policy_type: "PERMISSIVE" | "RESTRICTIVE"; }, { table: string; policy_name: string; operation: string; condition: string; will_grant_access: boolean; reason: string; policy_type: "PERMISSIVE" | "RESTRICTIVE"; }>, "many">; policy_combination_logic: z.ZodString; root_cause: z.ZodObject<{ issue: z.ZodString; missing_condition: z.ZodOptional<z.ZodString>; incorrect_policy: z.ZodOptional<z.ZodString>; conflicting_policies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; }, "strip", z.ZodTypeAny, { issue: string; missing_condition?: string | undefined; incorrect_policy?: string | undefined; conflicting_policies?: string[] | undefined; }, { issue: string; missing_condition?: string | undefined; incorrect_policy?: string | undefined; conflicting_policies?: string[] | undefined; }>; required_relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{ table: z.ZodString; condition: z.ZodString; exists: z.ZodBoolean; verification_query: z.ZodString; }, "strip", z.ZodTypeAny, { table: string; condition: string; exists: boolean; verification_query: string; }, { table: string; condition: string; exists: boolean; verification_query: string; }>, "many">>; recommendations: z.ZodArray<z.ZodObject<{ action: z.ZodString; sql: z.ZodOptional<z.ZodString>; explanation: z.ZodString; risk_level: z.ZodEnum<["low", "medium", "high"]>; }, "strip", z.ZodTypeAny, { action: string; explanation: string; risk_level: "low" | "medium" | "high"; sql?: string | undefined; }, { action: string; explanation: string; risk_level: "low" | "medium" | "high"; sql?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { scenario_summary: string; applicable_policies: { table: string; policy_name: string; operation: string; condition: string; will_grant_access: boolean; reason: string; policy_type: "PERMISSIVE" | "RESTRICTIVE"; }[]; policy_combination_logic: string; root_cause: { issue: string; missing_condition?: string | undefined; incorrect_policy?: string | undefined; conflicting_policies?: string[] | undefined; }; recommendations: { action: string; explanation: string; risk_level: "low" | "medium" | "high"; sql?: string | undefined; }[]; required_relationships?: { table: string; condition: string; exists: boolean; verification_query: string; }[] | undefined; }, { scenario_summary: string; applicable_policies: { table: string; policy_name: string; operation: string; condition: string; will_grant_access: boolean; reason: string; policy_type: "PERMISSIVE" | "RESTRICTIVE"; }[]; policy_combination_logic: string; root_cause: { issue: string; missing_condition?: string | undefined; incorrect_policy?: string | undefined; conflicting_policies?: string[] | undefined; }; recommendations: { action: string; explanation: string; risk_level: "low" | "medium" | "high"; sql?: string | undefined; }[]; required_relationships?: { table: string; condition: string; exists: boolean; verification_query: string; }[] | undefined; }>; export type RLSAnalysis = z.infer<typeof RLSAnalysisSchema>; export interface PolicyLogicTree { table: string; rls_enabled: boolean; access_logic: string; additional_restrictions: string; permissive_policies: PolicyDetails[]; restrictive_policies: PolicyDetails[]; decision_flow: string; } export interface PolicyDetails { name: string; operation: string; condition: string; parsed: ParsedCondition; } export interface ParsedCondition { requires_auth: boolean; checks_relationships: boolean; referenced_tables: string[]; joins: string[]; comparisons: string[]; } export interface PolicyKnowledge { type: 'policy_intent' | 'known_issue' | 'architectural_decision' | 'correction'; content: string; tables: string[]; timestamp: string; related_policies?: string[]; } //# sourceMappingURL=types.d.ts.map