UNPKG

@toolprint/hypertool-mcp

Version:

HyperTool MCP proxy server for routing requests between clients and multiple underlying MCP servers

177 lines • 6.67 kB
/** * Multi-layer validation for persona configurations * * This module implements comprehensive validation for persona configurations including * schema validation, business rules, tool resolution, and MCP config validation. * The PersonaValidator class orchestrates multiple validation layers and provides * detailed error reporting with actionable suggestions. * * @fileoverview Persona configuration validation system */ import type { IToolDiscoveryEngine } from "../discovery/types.js"; import { type PersonaConfig, type ValidationResult, type PersonaAssets } from "./types.js"; /** * Validation context for providing additional information during validation */ export interface ValidationContext { /** Path to the persona folder or configuration file */ personaPath: string; /** Expected persona name from folder structure */ expectedPersonaName?: string; /** Whether to perform tool resolution validation */ checkToolAvailability?: boolean; /** Whether to validate MCP config if present */ validateMcpConfig?: boolean; /** Tool discovery engine for tool resolution validation */ toolDiscoveryEngine?: IToolDiscoveryEngine; /** Additional persona assets for comprehensive validation */ assets?: PersonaAssets; } /** * Validation options for customizing validation behavior */ export interface ValidationOptions { /** Whether to include warnings in the result (default: true) */ includeWarnings?: boolean; /** Whether to stop validation on first error (default: false) */ stopOnFirstError?: boolean; /** Whether to perform tool availability checks (default: true) */ checkToolAvailability?: boolean; /** Whether to validate MCP config files (default: true) */ validateMcpConfig?: boolean; /** Custom validation functions for extensibility */ customValidators?: Array<(config: PersonaConfig, context: ValidationContext) => ValidationResult>; } /** * Comprehensive persona configuration validator * * Implements a multi-layer validation system that covers: * 1. YAML syntax and schema validation * 2. Business rule validation * 3. Tool resolution validation * 4. MCP config validation */ export declare class PersonaValidator { private toolDiscoveryEngine?; constructor(toolDiscoveryEngine?: IToolDiscoveryEngine); /** * Validate a persona configuration from parsed data * * @param config - Parsed persona configuration * @param context - Validation context * @param options - Validation options * @returns Comprehensive validation result */ validatePersonaConfig(config: PersonaConfig, context: ValidationContext, options?: ValidationOptions): Promise<ValidationResult>; /** * Validate a persona configuration from a file path * * @param filePath - Path to persona.yaml/yml file * @param options - Validation options * @returns Comprehensive validation result */ validatePersonaFile(filePath: string, options?: ValidationOptions): Promise<ValidationResult>; /** * Validate a persona directory (containing persona.yaml/yml) * * @param directoryPath - Path to persona directory * @param options - Validation options * @returns Comprehensive validation result */ validatePersonaDirectory(directoryPath: string, options?: ValidationOptions): Promise<ValidationResult>; /** * Validate business rules for persona configuration * * @param config - Persona configuration * @param context - Validation context * @returns Business rule validation result */ private validateBusinessRules; /** * Validate tool resolution against discovery engine * * @param config - Persona configuration * @param toolDiscoveryEngine - Tool discovery engine * @returns Tool resolution validation result */ private validateToolResolution; /** * Validate MCP configuration file * * @param mcpConfigPath - Path to mcp.json file * @returns MCP config validation result */ private validateMcpConfig; /** * Find persona configuration file in a directory * * @param directoryPath - Directory to search * @returns Path to config file or null if not found */ private findPersonaConfigFile; /** * Find MCP config file in a directory * * @param directoryPath - Directory to search * @returns Path to mcp.json file or null if not found */ private findMcpConfigFile; /** * Check if two names are similar enough to be confusing * * @param name1 - First name * @param name2 - Second name * @returns True if names are similar */ private areNamesSimilar; /** * Merge validation results together * * @param target - Target validation result to merge into * @param source - Source validation result to merge from * @param includeWarnings - Whether to include warnings */ private mergeValidationResults; /** * Set the tool discovery engine for this validator * * @param toolDiscoveryEngine - Tool discovery engine instance */ setToolDiscoveryEngine(toolDiscoveryEngine: IToolDiscoveryEngine): void; /** * Get validation statistics * * @returns Validation statistics */ getValidationStats(): { hasToolDiscoveryEngine: boolean; supportedFileTypes: readonly string[]; validationLayers: string[]; }; } /** * Create a default persona validator instance * * @param toolDiscoveryEngine - Optional tool discovery engine * @returns PersonaValidator instance */ export declare function createPersonaValidator(toolDiscoveryEngine?: IToolDiscoveryEngine): PersonaValidator; /** * Quick validation function for simple use cases * * @param filePath - Path to persona file or directory * @param toolDiscoveryEngine - Optional tool discovery engine * @param options - Validation options * @returns Validation result */ export declare function validatePersona(filePath: string, toolDiscoveryEngine?: IToolDiscoveryEngine, options?: ValidationOptions): Promise<ValidationResult>; /** * Batch validation for multiple personas * * @param paths - Array of file or directory paths * @param toolDiscoveryEngine - Optional tool discovery engine * @param options - Validation options * @returns Map of path to validation result */ export declare function validateMultiplePersonas(paths: string[], toolDiscoveryEngine?: IToolDiscoveryEngine, options?: ValidationOptions): Promise<Map<string, ValidationResult>>; //# sourceMappingURL=validator.d.ts.map