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.

77 lines 3.32 kB
/** * GenericElementValidator - Default validator implementation for most element types * * Provides standard validation logic that works for any element type. * Uses the existing ValidationService and TriggerValidationService for * consistent security-first validation patterns. * * Element types that need specialized validation (like personas) can * extend this class or implement ElementValidator directly. */ import { ElementType } from '../../portfolio/types.js'; import { ValidationService } from './ValidationService.js'; import { TriggerValidationService } from './TriggerValidationService.js'; import { MetadataService } from '../MetadataService.js'; import { ElementValidator, ValidationResult, ValidationReport, ElementValidationOptions, MetadataValidationOptions } from './ElementValidator.js'; /** * Default validator implementation for most element types */ export declare class GenericElementValidator implements ElementValidator { protected validationService: ValidationService; protected triggerValidationService: TriggerValidationService; protected metadataService: MetadataService; readonly elementType: ElementType; constructor(elementType: ElementType, validationService: ValidationService, triggerValidationService: TriggerValidationService, metadataService: MetadataService); /** * Validate data for element creation * * ARCHITECTURE: Input Normalization at Boundary * Step 1: Normalize ALL string fields (Unicode, confusables, direction overrides) * Step 2: Validate the normalized data (field rules, lengths, patterns) * * This ensures we can't forget to normalize a field - it happens once at entry. */ validateCreate(data: unknown, options?: ElementValidationOptions): Promise<ValidationResult>; /** * Validate changes to an existing element * * ARCHITECTURE: Input Normalization at Boundary * Step 1: Normalize ALL string fields in changes object * Step 2: Validate the normalized changes */ validateEdit(element: unknown, changes: unknown, options?: ElementValidationOptions): Promise<ValidationResult>; /** * Validate element metadata */ validateMetadata(metadata: unknown, options?: MetadataValidationOptions): Promise<ValidationResult>; /** * Generate a comprehensive validation report */ generateReport(element: unknown): Promise<ValidationReport>; /** * Validate element name */ protected validateName(name: unknown): ValidationResult; /** * Validate element description */ protected validateDescription(description: unknown): ValidationResult; private sanitizeDescriptionInput; /** * Validate element content */ protected validateContent(content: unknown, maxLength?: number): Promise<ValidationResult>; /** * Validate triggers array */ protected validateTriggers(triggers: unknown, elementName: string): ValidationResult; /** * Calculate a quality score for the element (0-100) */ protected calculateQualityScore(metadata: Record<string, unknown>, content: string): number; /** * Get human-readable label for this element type */ protected getElementLabel(): string; } //# sourceMappingURL=GenericElementValidator.d.ts.map