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

423 lines (315 loc) • 11.1 kB
# Enhanced CLI Navigation System ## Overview The Enhanced CLI Navigation System provides an improved interactive interface for the ADPA CLI using the `inquirer` library. This system offers better user experience with arrow key navigation, improved prompts, and enhanced error handling. ## Features ### šŸŽÆ Core Features - **Arrow Key Navigation**: Navigate menus using arrow keys instead of typing numbers - **Enhanced Prompts**: Better visual feedback and input validation - **Step-by-Step Workflows**: Guided workflows for complex operations - **Graceful Error Handling**: Comprehensive error recovery options - **Context-Aware Help**: Contextual help based on current menu/step - **Navigation History**: Back/forward navigation with history tracking ### šŸš€ User Experience Improvements - **Visual Indicators**: Clear visual feedback for selections and status - **Input Validation**: Real-time validation with helpful error messages - **Keyboard Shortcuts**: Quick navigation commands (back, home, help, exit) - **Progress Tracking**: Visual progress indicators for multi-step operations - **Responsive Design**: Adapts to terminal width and capabilities ## Usage ### Basic Usage ```bash # Start enhanced navigation (recommended) adpa interactive --enhanced # Start with specific mode adpa interactive --enhanced --mode advanced # Skip intro and start directly adpa interactive --enhanced --skip-intro # Enable debug mode adpa interactive --enhanced --debug ``` ### Navigation Commands While in the enhanced navigation system, you can use these commands: - **Arrow Keys**: Navigate menu options - **Enter**: Select current option - **← Back**: Go to previous menu/step - **šŸ  Main Menu**: Return to main menu - **ā“ Help**: Show contextual help - **🚪 Exit**: Exit the application - **Ctrl+C**: Force quit ## Architecture ### Core Components #### 1. EnhancedMenuNavigation.ts Main navigation system that orchestrates the entire user experience. ```typescript export class EnhancedMenuNavigation extends EventEmitter { // Navigation state management // Flow execution // Error handling // User interaction } ``` #### 2. InquirerValidators.ts Validation utilities that integrate with the existing InputValidationService. ```typescript export class InquirerValidators { static projectName(): (input: string) => boolean | string static apiKey(provider?: string): (input: string) => boolean | string static required(fieldName: string): (input: string) => boolean | string // ... more validators } ``` #### 3. Navigation Flows Structured workflows that guide users through complex operations. ```typescript interface NavigationFlow { id: string; title: string; description?: string; steps: NavigationStep[]; startStep?: string; onComplete?: (results: any) => Promise<void>; } ``` ### Integration with Existing System The enhanced navigation system integrates seamlessly with the existing CLI infrastructure: - **Command Integration**: Uses `CommandIntegrationService` to execute CLI commands - **Validation**: Leverages existing `InputValidationService` for consistent validation - **Error Handling**: Extends `InteractiveErrorHandler` for comprehensive error management - **Backward Compatibility**: Maintains compatibility with the original menu system ## Navigation Flows ### 1. Main Menu Flow The primary entry point with access to all major features. **Available Options:** - šŸš€ Quick Start - Get started quickly - šŸ“ Document Generation - Generate project documents - šŸ¤– AI Configuration - Configure AI providers - šŸ“Š Project Management - Project analysis tools - šŸ”— Integrations - External system integrations - šŸ“ˆ Analytics & Feedback - Document analytics - āš™ļø System Configuration - System settings - šŸ” Workspace Analysis - Analyze current workspace - ā“ Help & Documentation - User assistance ### 2. Quick Start Flow Guided setup for new users. **Steps:** 1. Welcome and overview 2. Environment setup 3. Core document generation 4. Template browsing 5. Configuration verification ### 3. Document Generation Flow Comprehensive document generation workflows. **Options:** - Browse by Category - Search Templates - Generate Single Document - Generate Category - Generate All Documents - Custom Generation ### 4. AI Configuration Flow Step-by-step AI provider configuration. **Supported Providers:** - Google AI (Gemini) - OpenAI - Azure OpenAI - Provider testing and validation ## Error Handling ### Error Types 1. **Validation Errors**: Input validation failures with helpful messages 2. **System Errors**: Configuration or system-level issues 3. **Network Errors**: API connectivity problems 4. **User Cancellation**: Graceful handling of user cancellation ### Recovery Options For each error type, users are presented with appropriate recovery options: - **Retry**: Attempt the operation again - **Back**: Return to previous step - **Home**: Go to main menu - **Help**: Show contextual help - **Exit**: Exit the application ### Example Error Flow ``` āŒ Error: Invalid API key format How would you like to proceed? āÆ Try Again Go Back Main Menu Exit ``` ## Customization ### Adding New Flows To add a new navigation flow: 1. Define the flow structure: ```typescript const newFlow: NavigationFlow = { id: 'my-new-flow', title: 'My New Feature', description: 'Description of the new feature', steps: [ { id: 'step1', title: 'First Step', choices: [ { type: 'list', name: 'option', message: 'Select an option:', choices: [ { name: 'Option 1', value: 'opt1' }, { name: 'Option 2', value: 'opt2' } ] } ], onComplete: async (answers) => { // Handle step completion return { action: 'continue' }; } } ] }; ``` 2. Register the flow in `initializeFlows()`: ```typescript this.flows.set('my-new-flow', newFlow); ``` 3. Add navigation to the flow from other menus. ### Custom Validators Create custom validators for specific use cases: ```typescript const customValidator = (input: string): boolean | string => { if (!input.startsWith('custom-')) { return 'Input must start with "custom-"'; } return true; }; ``` ### Custom Filters Create custom input filters: ```typescript const customFilter = (input: string): string => { return input.toLowerCase().replace(/\s+/g, '-'); }; ``` ## Best Practices ### 1. User Experience - Keep menu options concise but descriptive - Provide clear descriptions for complex operations - Use consistent iconography and terminology - Offer contextual help at each step ### 2. Error Handling - Provide specific, actionable error messages - Offer multiple recovery options - Log errors for debugging purposes - Gracefully handle user cancellation ### 3. Performance - Lazy-load heavy operations - Show progress indicators for long-running tasks - Cache frequently accessed data - Optimize menu rendering for large lists ### 4. Accessibility - Support keyboard-only navigation - Provide clear visual indicators - Use semantic markup where applicable - Test with different terminal configurations ## Testing ### Manual Testing 1. **Basic Navigation**: ```bash npm run build node dist/cli.js interactive --enhanced ``` 2. **Error Scenarios**: - Test with invalid inputs - Test network connectivity issues - Test user cancellation at various points 3. **Integration Testing**: - Test command execution - Test with different AI providers - Test with various project configurations ### Automated Testing ```bash # Run the test script node test-enhanced-navigation.js # Test specific flows npm test -- --testPathPattern=enhanced-navigation ``` ## Migration Guide ### From Original Menu System The enhanced navigation system is designed to be a drop-in replacement: 1. **Enable Enhanced Mode**: ```bash # Old way adpa interactive # New way adpa interactive --enhanced ``` 2. **Configuration**: No configuration changes required - the system uses existing settings 3. **Commands**: All existing commands work the same way ### Gradual Migration You can migrate gradually: 1. Start with `--enhanced` flag for testing 2. Update documentation and training materials 3. Make enhanced mode the default 4. Eventually deprecate the original system ## Troubleshooting ### Common Issues 1. **Inquirer Not Found**: ```bash npm install inquirer @types/inquirer ``` 2. **Terminal Compatibility**: - Ensure terminal supports ANSI colors - Check terminal width settings - Verify TTY support 3. **Navigation Issues**: - Check keyboard input handling - Verify arrow key support - Test with different terminal emulators ### Debug Mode Enable debug mode for detailed logging: ```bash adpa interactive --enhanced --debug ``` This provides: - Detailed error messages - Navigation state information - Command execution logs - Performance metrics ## Future Enhancements ### Planned Features 1. **Themes**: Customizable color schemes and layouts 2. **Plugins**: Extensible plugin system for custom flows 3. **Shortcuts**: Configurable keyboard shortcuts 4. **History**: Command history and favorites 5. **Search**: Global search across all options 6. **Bookmarks**: Save frequently used workflows ### Performance Improvements 1. **Lazy Loading**: Load flows on demand 2. **Caching**: Cache menu structures and data 3. **Optimization**: Optimize rendering for large menus 4. **Memory Management**: Efficient memory usage for long sessions ## Contributing ### Adding New Features 1. Follow the existing architecture patterns 2. Add comprehensive error handling 3. Include unit tests for new functionality 4. Update documentation 5. Test with various terminal configurations ### Code Style - Use TypeScript for type safety - Follow existing naming conventions - Add JSDoc comments for public APIs - Use consistent error handling patterns ### Testing Requirements - Unit tests for all new validators and filters - Integration tests for new flows - Manual testing with different terminals - Performance testing for large menus ## Support For issues, questions, or contributions: 1. Check the troubleshooting section 2. Review existing GitHub issues 3. Create a new issue with detailed information 4. Include terminal and system information 5. Provide steps to reproduce any problems --- *This enhanced navigation system represents a significant improvement in user experience while maintaining full backward compatibility with the existing ADPA CLI infrastructure.*