-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Phase 5: CLI Presentation
Implement output formatters and user interaction strategies.
Output Formatters (IOutputFormatter Strategy)
In Infrastructure/Cli/Output/:
SpectreOutputFormatter
- Uses Spectre.Console for rich terminal UI
- Markup for colors:
[green],[red],[yellow] - Tables for analysis reports
- Spinners for long operations
- Progress bars for cleanup
- Banner with ASCII art
- Replaces all bash
log_*functions andprint_banner/print_completion
PlainTextOutputFormatter
- Plain text, no ANSI codes
- For CI/CD, piping, logging
- Simple line-by-line output
- Tables as plain text with alignment
JsonOutputFormatter
- Structured JSON output
- For MCP server, scripting, automation
- All data serializable
- Example:
{
"timestamp": "2026-02-07T...",
"mode": "analyze",
"totalEstimatedSize": "15.3GB",
"targets": [...]
}User Interaction Strategies (IUserInteraction Strategy)
In Infrastructure/Cli/Interaction/:
InteractiveConsole
- Human interactive mode
- Prompts user for confirmations
- Different prompts per
ConfirmationLevel:- Simple: "Continue? (y/N)" - skipped with --force
- Dangerous: Type "yes" - skipped with --force
- Nuclear: Type "yes" - NEVER skipped, even with --force
- Uses Spectre.Console
ConfirmationPromptandTextPrompt
AutoConfirmInteraction
- For MCP server, CI/CD
- Auto-confirms everything (no prompts)
- Equivalent to --force but programmatic
- Returns true for all confirmations except Nuclear
- Nuclear still requires explicit "yes" from caller
InteractiveMenu
- Multi-select module menu using Spectre.Console
MultiSelectionPrompt - Loop for "cleanup more?" -
ask_continue_cleanup - Replaces bash
show_interactive_menuandshow_multiselect_menu
Tests Required
All in tests/Infrastructure/Cli/:
Output Tests:
Output/SpectreOutputFormatterTests: Markup rendering, table formattingOutput/PlainTextOutputFormatterTests: Plain text outputOutput/JsonOutputFormatterTests: JSON serialization, schema validation
Interaction Tests:
Interaction/InteractiveConsoleTests: Confirmation levels, force modeInteraction/AutoConfirmInteractionTests: Auto-confirm behaviorInteraction/InteractiveMenuTests: Menu display, module selection
Port tests from bash tests/unit/analyze_mode_test.sh for display formatting.
Definition of Done
- All 3 output formatters implemented
- All 2 interaction strategies implemented
- Interactive menu working with Spectre.Console
- Tests verify each formatter/strategy
- --output flag selects correct formatter
- MCP-ready with AutoConfirmInteraction + JsonOutputFormatter
Reactions are currently unavailable