{"version":3,"sources":["../../src/util/intent-router-validation.ts"],"names":[],"mappings":"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","file":"intent-router-validation.mjs","sourcesContent":["/**\n * Intent Router Command Validation\n *\n * Validates IntentRouterCommand definitions before they are saved.\n * Used by both the admin UI and CloudFormation custom resource.\n *\n * @since 0.18.0\n */\n\nimport type {\n    IntentRouterCommand,\n    PikaCommand,\n    CommandValidationError,\n    CommandValidationResult,\n    CommandsValidationResult\n} from '../types/chatbot/intent-router-types';\n\n// Re-export types for consumers of this module\nexport type { CommandValidationError, CommandValidationResult, CommandsValidationResult };\n\n// Valid PikaCommand types\nconst VALID_COMMAND_TYPES = ['renderTag', 'closeCanvas', 'closeDialog', 'closeHero', 'showHero', 'hideHero', 'showToast', 'navigateTo', 'custom'] as const;\n\n// Valid rendering contexts\nconst VALID_RENDERING_CONTEXTS = ['canvas', 'dialog', 'hero', 'spotlight'] as const;\n\n// Valid toast variants\nconst VALID_TOAST_VARIANTS = ['success', 'error', 'info', 'warning'] as const;\n\n// Command ID pattern: lowercase letters, numbers, underscores, starting with letter\nconst COMMAND_ID_PATTERN = /^[a-z][a-z0-9_]*$/;\n\n// Tag ID pattern: scope.tag format\nconst TAG_ID_PATTERN = /^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$/;\n\n/**\n * Validate a single IntentRouterCommand.\n */\nexport function validateCommand(command: IntentRouterCommand): CommandValidationResult {\n    const errors: CommandValidationError[] = [];\n\n    // Required fields\n    if (!command.commandId) {\n        errors.push({ field: 'commandId', message: 'Command ID is required' });\n    } else if (!COMMAND_ID_PATTERN.test(command.commandId)) {\n        errors.push({\n            field: 'commandId',\n            message: 'Command ID must start with a lowercase letter and contain only lowercase letters, numbers, and underscores',\n            value: command.commandId\n        });\n    }\n\n    if (!command.name || !command.name.trim()) {\n        errors.push({ field: 'name', message: 'Name is required' });\n    }\n\n    if (!command.description || !command.description.trim()) {\n        errors.push({ field: 'description', message: 'Description is required' });\n    }\n\n    // Examples validation\n    if (!command.examples || !Array.isArray(command.examples)) {\n        errors.push({ field: 'examples', message: 'Examples must be an array' });\n    } else if (command.examples.length === 0) {\n        errors.push({ field: 'examples', message: 'At least one example is required' });\n    } else {\n        const validExamples = command.examples.filter((e) => typeof e === 'string' && e.trim());\n        if (validExamples.length === 0) {\n            errors.push({ field: 'examples', message: 'At least one non-empty example is required' });\n        }\n    }\n\n    // Anti-examples validation (optional but must be valid if provided)\n    if (command.antiExamples !== undefined) {\n        if (!Array.isArray(command.antiExamples)) {\n            errors.push({ field: 'antiExamples', message: 'Anti-examples must be an array' });\n        }\n    }\n\n    // Priority validation\n    if (typeof command.priority !== 'number') {\n        errors.push({ field: 'priority', message: 'Priority must be a number' });\n    } else if (command.priority < 0 || command.priority > 1000) {\n        errors.push({\n            field: 'priority',\n            message: 'Priority must be between 0 and 1000',\n            value: command.priority\n        });\n    }\n\n    // Confidence threshold validation (optional)\n    if (command.confidenceThreshold !== undefined) {\n        if (typeof command.confidenceThreshold !== 'number') {\n            errors.push({ field: 'confidenceThreshold', message: 'Confidence threshold must be a number' });\n        } else if (command.confidenceThreshold < 0 || command.confidenceThreshold > 1) {\n            errors.push({\n                field: 'confidenceThreshold',\n                message: 'Confidence threshold must be between 0 and 1',\n                value: command.confidenceThreshold\n            });\n        }\n    }\n\n    // RequiresContext validation (optional)\n    if (command.requiresContext !== undefined) {\n        if (!Array.isArray(command.requiresContext)) {\n            errors.push({ field: 'requiresContext', message: 'RequiresContext must be an array of strings' });\n        } else {\n            for (let i = 0; i < command.requiresContext.length; i++) {\n                const path = command.requiresContext[i];\n                if (typeof path !== 'string' || !path.trim()) {\n                    errors.push({\n                        field: `requiresContext[${i}]`,\n                        message: 'Context path must be a non-empty string',\n                        value: path\n                    });\n                }\n            }\n        }\n    }\n\n    // Execution validation\n    if (!command.execution) {\n        errors.push({ field: 'execution', message: 'Execution configuration is required' });\n    } else {\n        const executionErrors = validateExecution(command.execution);\n        errors.push(...executionErrors);\n    }\n\n    return {\n        valid: errors.length === 0,\n        errors\n    };\n}\n\n/**\n * Validate the execution configuration of a command.\n */\nfunction validateExecution(execution: IntentRouterCommand['execution']): CommandValidationError[] {\n    const errors: CommandValidationError[] = [];\n\n    // Cast to unknown then to Record for flexible validation - we want to catch invalid modes at runtime\n    const exec = execution as unknown as Record<string, unknown>;\n    const mode = exec.mode as string | undefined;\n\n    if (!mode) {\n        errors.push({ field: 'execution.mode', message: 'Execution mode is required' });\n        return errors;\n    }\n\n    if (mode !== 'direct' && mode !== 'dispatch') {\n        // Note: 'enrich' and 'enrich-and-action' are not yet implemented\n        if (mode === 'enrich' || mode === 'enrich-and-action') {\n            errors.push({\n                field: 'execution.mode',\n                message: `Execution mode '${mode}' is not yet implemented. Use 'direct' or 'dispatch'.`,\n                value: mode\n            });\n        } else {\n            errors.push({\n                field: 'execution.mode',\n                message: `Invalid execution mode. Must be 'direct' or 'dispatch'.`,\n                value: mode\n            });\n        }\n        return errors;\n    }\n\n    if (execution.mode === 'direct') {\n        // Direct mode requires a command\n        if (!execution.command) {\n            errors.push({ field: 'execution.command', message: 'Direct execution requires a command' });\n        } else {\n            const commandErrors = validatePikaCommand(execution.command, 'execution.command');\n            errors.push(...commandErrors);\n        }\n\n        // passToAgent is optional boolean\n        if (execution.passToAgent !== undefined && typeof execution.passToAgent !== 'boolean') {\n            errors.push({ field: 'execution.passToAgent', message: 'passToAgent must be a boolean' });\n        }\n    }\n\n    if (execution.mode === 'dispatch') {\n        // Dispatch mode requires handlerTagId\n        if (!execution.handlerTagId) {\n            errors.push({ field: 'execution.handlerTagId', message: 'Dispatch execution requires handlerTagId' });\n        } else if (!TAG_ID_PATTERN.test(execution.handlerTagId)) {\n            errors.push({\n                field: 'execution.handlerTagId',\n                message: 'Handler tag ID must be in format \"scope.tag\" (e.g., \"myapp.orchestrator\")',\n                value: execution.handlerTagId\n            });\n        }\n\n        // payload is optional object\n        if (execution.payload !== undefined && (typeof execution.payload !== 'object' || execution.payload === null || Array.isArray(execution.payload))) {\n            errors.push({ field: 'execution.payload', message: 'Payload must be an object' });\n        }\n    }\n\n    // responseTemplate is optional string (both modes)\n    if (execution.responseTemplate !== undefined && typeof execution.responseTemplate !== 'string') {\n        errors.push({ field: 'execution.responseTemplate', message: 'Response template must be a string' });\n    }\n\n    return errors;\n}\n\n/**\n * Validate a PikaCommand.\n */\nfunction validatePikaCommand(command: PikaCommand, basePath: string): CommandValidationError[] {\n    const errors: CommandValidationError[] = [];\n\n    if (!command || typeof command !== 'object') {\n        errors.push({ field: basePath, message: 'Command must be an object' });\n        return errors;\n    }\n\n    if (!command.type) {\n        errors.push({ field: `${basePath}.type`, message: 'Command type is required' });\n        return errors;\n    }\n\n    if (!VALID_COMMAND_TYPES.includes(command.type as any)) {\n        errors.push({\n            field: `${basePath}.type`,\n            message: `Invalid command type '${command.type}'. Valid types: ${VALID_COMMAND_TYPES.join(', ')}`,\n            value: command.type\n        });\n        return errors;\n    }\n\n    switch (command.type) {\n        case 'renderTag':\n            if (!command.tagId) {\n                errors.push({ field: `${basePath}.tagId`, message: 'Tag ID is required for renderTag command' });\n            } else if (!TAG_ID_PATTERN.test(command.tagId) && !command.tagId.includes('{{')) {\n                // Allow template syntax\n                errors.push({\n                    field: `${basePath}.tagId`,\n                    message: 'Tag ID must be in format \"scope.tag\" (e.g., \"myapp.widget\")',\n                    value: command.tagId\n                });\n            }\n\n            if (!command.renderingContext) {\n                errors.push({ field: `${basePath}.renderingContext`, message: 'Rendering context is required for renderTag command' });\n            } else if (!VALID_RENDERING_CONTEXTS.includes(command.renderingContext as any)) {\n                errors.push({\n                    field: `${basePath}.renderingContext`,\n                    message: `Invalid rendering context. Valid contexts: ${VALID_RENDERING_CONTEXTS.join(', ')}`,\n                    value: command.renderingContext\n                });\n            }\n\n            // data is optional object\n            if (command.data !== undefined && (typeof command.data !== 'object' || command.data === null || Array.isArray(command.data))) {\n                errors.push({ field: `${basePath}.data`, message: 'Data must be an object' });\n            }\n\n            // metadata is optional object\n            if (command.metadata !== undefined && (typeof command.metadata !== 'object' || command.metadata === null || Array.isArray(command.metadata))) {\n                errors.push({ field: `${basePath}.metadata`, message: 'Metadata must be an object' });\n            }\n            break;\n\n        case 'showToast':\n            if (!command.message || typeof command.message !== 'string') {\n                errors.push({ field: `${basePath}.message`, message: 'Toast message is required and must be a string' });\n            }\n            if (!command.variant) {\n                errors.push({ field: `${basePath}.variant`, message: 'Toast variant is required' });\n            } else if (!VALID_TOAST_VARIANTS.includes(command.variant as any)) {\n                errors.push({\n                    field: `${basePath}.variant`,\n                    message: `Invalid toast variant. Valid variants: ${VALID_TOAST_VARIANTS.join(', ')}`,\n                    value: command.variant\n                });\n            }\n            break;\n\n        case 'navigateTo':\n            if (!command.path || typeof command.path !== 'string') {\n                errors.push({ field: `${basePath}.path`, message: 'Path is required for navigateTo command' });\n            }\n            break;\n\n        case 'custom':\n            if (!command.action || typeof command.action !== 'string') {\n                errors.push({ field: `${basePath}.action`, message: 'Action is required for custom command' });\n            }\n            if (command.params !== undefined && (typeof command.params !== 'object' || command.params === null || Array.isArray(command.params))) {\n                errors.push({ field: `${basePath}.params`, message: 'Params must be an object' });\n            }\n            break;\n\n        // closeCanvas, closeDialog, closeHero, showHero, hideHero - no additional fields required\n    }\n\n    return errors;\n}\n\n/**\n * Validate an array of IntentRouterCommands.\n * Also checks for duplicate command IDs.\n */\nexport function validateCommands(commands: IntentRouterCommand[]): CommandsValidationResult {\n    const errors: Array<CommandValidationError & { commandIndex: number; commandId?: string }> = [];\n\n    if (!Array.isArray(commands)) {\n        errors.push({\n            commandIndex: -1,\n            field: 'intentRouterCommands',\n            message: 'intentRouterCommands must be an array'\n        });\n        return { valid: false, errors };\n    }\n\n    // Track command IDs for duplicate detection\n    const seenIds = new Map<string, number>();\n\n    for (let i = 0; i < commands.length; i++) {\n        const command = commands[i];\n        const commandId = command?.commandId;\n\n        // Check for duplicates\n        if (commandId) {\n            const existingIndex = seenIds.get(commandId);\n            if (existingIndex !== undefined) {\n                errors.push({\n                    commandIndex: i,\n                    commandId,\n                    field: 'commandId',\n                    message: `Duplicate command ID '${commandId}' (also at index ${existingIndex})`,\n                    value: commandId\n                });\n            } else {\n                seenIds.set(commandId, i);\n            }\n        }\n\n        // Validate individual command\n        const result = validateCommand(command);\n        for (const error of result.errors) {\n            errors.push({\n                commandIndex: i,\n                commandId: commandId || undefined,\n                ...error\n            });\n        }\n    }\n\n    return {\n        valid: errors.length === 0,\n        errors\n    };\n}\n\n/**\n * Format validation errors into a human-readable message.\n */\nexport function formatValidationErrors(result: CommandsValidationResult): string {\n    if (result.valid) {\n        return 'No validation errors';\n    }\n\n    const lines: string[] = ['Intent Router command validation failed:'];\n\n    for (const error of result.errors) {\n        const prefix = error.commandIndex >= 0 ? `  [Command ${error.commandIndex}${error.commandId ? ` (${error.commandId})` : ''}]` : '  ';\n        lines.push(`${prefix} ${error.field}: ${error.message}`);\n    }\n\n    return lines.join('\\n');\n}\n"]}