UNPKG

adpa-enterprise-framework-automation

Version:

Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe

198 lines (156 loc) 8.37 kB
# Interactive CLI Input Validation and Error Handling Implementation ## Summary Successfully implemented comprehensive input validation and error handling for the interactive CLI to ensure a robust user experience. The implementation prevents system crashes due to invalid inputs and provides user-friendly error messages with recovery options. ## Implementation Overview ### 1. InputValidationService (`src/modules/cli/InputValidationService.ts`) A comprehensive validation service that provides: #### Core Validation Methods - **`validateMenuChoice()`** - Validates menu selections and navigation commands - **`validateProjectName()`** - Validates project names with length and character restrictions - **`validateFilePath()`** - Validates file paths with security checks (prevents `..` and `~`) - **`validateUrl()`** - Validates URLs with protocol checking (HTTP/HTTPS only) - **`validateEmail()`** - Validates email addresses with proper format checking - **`validateApiKey()`** - Provider-specific API key validation (Google AI, OpenAI) - **`validateNumber()`** - Numeric input validation with min/max range support - **`validateYesNo()`** - Yes/No input validation with multiple format support - **`validateText()`** - Generic text validation with customizable options #### Security Features - **Input sanitization** - Removes potentially dangerous characters - **Length limiting** - Prevents DoS attacks through oversized inputs - **Pattern validation** - Ensures inputs match expected formats - **Path traversal protection** - Blocks dangerous path patterns #### User Experience Features - **Helpful error messages** - Clear, actionable error descriptions - **Suggestions** - Provides specific guidance for fixing invalid inputs - **Multiple input formats** - Accepts various valid formats (e.g., y/yes/true/1) - **Case-insensitive navigation** - Commands work regardless of case ### 2. InteractiveErrorHandler (`src/modules/cli/InteractiveErrorHandler.ts`) Specialized error handling for interactive CLI with: #### Error Categorization - **Validation errors** - Input format/content issues - **System errors** - File system, permissions, disk space issues - **Network errors** - API calls, timeouts, connectivity issues - **Configuration errors** - Missing/invalid configuration - **User cancellation** - User-initiated interruptions - **Unknown errors** - Unexpected errors with fallback handling #### Recovery Options - **Retry** - Allow users to try the operation again - **Go back** - Return to previous menu/state - **Skip** - Continue without completing the operation - **Help** - Show detailed assistance - **Exit** - Graceful application termination #### Advanced Features - **Error context tracking** - Records operation, input, menu, timestamp - **Error history** - Maintains log of recent errors for debugging - **Detailed help** - Context-specific troubleshooting guidance - **Recovery workflows** - Guided error resolution processes ### 3. Enhanced InteractiveMenuSystem (`src/modules/cli/InteractiveMenuSystem.ts`) Integrated validation and error handling into the main menu system: #### Menu Input Validation - **Choice validation** - Validates numeric choices and navigation commands - **Error recovery loops** - Continues menu operation after validation errors - **User-friendly feedback** - Shows validation errors with suggestions - **Graceful degradation** - Handles errors without crashing #### Enhanced Action Execution - **`executeMenuActionWithErrorHandling()`** - Wraps all menu actions with error handling - **`executeFunctionWithErrorHandling()`** - Enhanced function execution - **`executeCommandWithErrorHandling()`** - Enhanced command execution - **Recovery workflows** - Allows retry, navigation, or help after errors #### Specific Validations - **Project name validation** - In custom risk assessment workflow - **Choice validation** - For project type and assessment type selection - **Input sanitization** - Applied to all user inputs ### 4. Enhanced InteractiveProviderMenu (`src/modules/ai/interactive-menu.ts`) Added validation to AI provider selection menu: #### Menu Choice Validation - **Dynamic choice validation** - Validates against available providers and options - **Error display** - Shows validation errors with recovery options - **Graceful handling** - Continues menu operation after invalid inputs #### Provider Setup Validation - **Yes/No confirmation validation** - For provider selection and setup confirmation - **API key validation** - Provider-specific validation during setup - **URL validation** - For endpoint configuration - **Required field validation** - Ensures all required fields are provided ## Key Features Implemented ### ✅ Comprehensive Input Validation - All user inputs are validated before processing - Provider-specific validation rules (API keys, URLs, etc.) - Security-focused validation (path traversal protection, input sanitization) - Multiple input format support for user convenience ### ✅ Robust Error Handling - Categorized error types with appropriate handling - User-friendly error messages with actionable suggestions - Recovery options that don't require application restart - Error context tracking for debugging and user assistance ### ✅ System Stability - No crashes due to invalid inputs - Graceful error recovery with menu continuation - Proper exception handling throughout the interactive flow - Fallback mechanisms for unexpected errors ### ✅ Enhanced User Experience - Clear, helpful error messages - Specific suggestions for fixing invalid inputs - Multiple recovery options (retry, back, help, exit) - Case-insensitive navigation commands - Consistent validation across all interactive components ## Usage Examples ### Menu Choice Validation ``` Select an option: invalid ❌ Invalid choice "invalid" 💡 Suggestions: • Valid choices: 1, 2, 3, 4, 5 • Navigation commands: back, home, help, exit, status, refresh ``` ### Project Name Validation ``` Enter project name: A ❌ Project name must be at least 2 characters 💡 Suggestions: • Current length: 1 ``` ### API Key Validation ``` Enter GOOGLE_AI_API_KEY: short ❌ Google AI API key should start with "AI" and be at least 30 characters 💡 Suggestions: • Get your API key from https://aistudio.google.com/app/apikey ``` ### Error Recovery ``` ❌ Error: Network timeout occurred 💡 Suggestions: • Check your internet connection • Try again in a few moments • Check if the service is available 🔄 Recovery Options: • Press Enter to try again • Type "back" to return to previous menu • Type "help" for more assistance ``` ## Testing The implementation has been tested with: - Valid and invalid menu choices - Various project name formats - Different API key formats for multiple providers - URL validation with different protocols - Yes/No inputs in various formats - Error scenarios and recovery workflows ## Benefits 1. **Improved User Experience** - Clear feedback and guidance for all inputs 2. **System Reliability** - No crashes due to invalid inputs 3. **Security** - Input sanitization and path traversal protection 4. **Maintainability** - Centralized validation logic and error handling 5. **Extensibility** - Easy to add new validation rules and error types 6. **Debugging** - Error context tracking and history for troubleshooting ## Acceptance Criteria Met**Input validation must be implemented for all user inputs** - Comprehensive validation service covering all input types - Integrated into all interactive components ✅ **Error handling must be in place to manage exceptions and provide user feedback** - Specialized error handler with categorization and recovery options - User-friendly error messages with actionable suggestions ✅ **The system should not crash due to invalid inputs** - Robust error handling prevents crashes - Graceful recovery mechanisms maintain application stability The interactive CLI now provides a professional, robust user experience with comprehensive input validation and error handling that prevents crashes and guides users through error recovery.