/** * Result Validator for MCP Functions * * Validates and sanitizes function execution results */ /** * Validation rule types */ export type ValidationRuleType = 'type' | 'format' | 'length' | 'range' | 'pattern' | 'whitelist' | 'blacklist' | 'custom'; /** * Validation rule */ export interface ValidationRule { type: ValidationRuleType; constraint: any; message?: string; severity: 'error' | 'warning' | 'info'; } /** * Validation schema */ export interface ValidationSchema { type: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'null' | 'any'; rules: ValidationRule[]; properties?: Record; items?: ValidationSchema; required?: string[]; optional?: string[]; additionalProperties?: boolean; } /** * Validation result */ export interface ValidationResult { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; sanitizedValue?: any; metadata: { validatedAt: Date; validationTime: number; rulesApplied: number; transformationsApplied: string[]; }; } /** * Validation error */ export interface ValidationError { path: string; rule: ValidationRuleType; message: string; actualValue: any; expectedConstraint: any; } /** * Validation warning */ export interface ValidationWarning { path: string; rule: ValidationRuleType; message: string; suggestion?: string; } /** * Sanitization options */ export interface SanitizationOptions { removeUnknownProperties: boolean; truncateStrings: boolean; maxStringLength: number; maxArrayLength: number; maxObjectDepth: number; convertTypes: boolean; removeNullValues: boolean; escapeSqlInjection: boolean; escapeXssVectors: boolean; removeScriptTags: boolean; } /** * Built-in validation patterns */ export declare const VALIDATION_PATTERNS: { EMAIL: RegExp; URL: RegExp; UUID: RegExp; PHONE: RegExp; IP_ADDRESS: RegExp; DATE_ISO: RegExp; ALPHANUMERIC: RegExp; NO_SQL_INJECTION: RegExp; NO_XSS: RegExp; }; /** * Result Validator */ export declare class ResultValidator { private defaultSanitizationOptions; private schemas; private customRules; constructor(defaultSanitizationOptions?: SanitizationOptions); /** * Register validation schema for a function */ registerSchema(functionName: string, schema: ValidationSchema): void; /** * Register custom validation rule */ registerCustomRule(ruleName: string, validator: (value: any) => boolean): void; /** * Validate function result */ validateResult(functionName: string, result: any, options?: Partial): Promise; /** * Validate value against schema */ private validateValue; /** * Validate type */ private validateType; /** * Attempt type conversion */ private attemptTypeConversion; /** * Apply validation rule */ private applyValidationRule; /** * Apply length rule */ private applyLengthRule; /** * Apply range rule */ private applyRangeRule; /** * Apply pattern rule */ private applyPatternRule; /** * Apply whitelist rule */ private applyWhitelistRule; /** * Apply blacklist rule */ private applyBlacklistRule; /** * Apply format rule */ private applyFormatRule; /** * Apply custom rule */ private applyCustomRule; /** * Validate string */ private validateString; /** * Validate array */ private validateArray; /** * Validate object */ private validateObject; /** * Basic validation for functions without schemas */ private basicValidation; /** * Count rules in schema */ private countRules; /** * Initialize built-in schemas */ private initializeBuiltinSchemas; /** * Get registered schemas */ getRegisteredSchemas(): string[]; /** * Remove schema */ removeSchema(functionName: string): boolean; } export default ResultValidator; //# sourceMappingURL=result-validator.d.ts.map