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
Markdown
# 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.*