Class: Aidp::CLI
- Inherits:
-
Object
- Object
- Aidp::CLI
- Extended by:
- MessageDisplay::ClassMethods, RescueLogging
- Includes:
- MessageDisplay, RescueLogging
- Defined in:
- lib/aidp/cli.rb,
lib/aidp/cli/terminal_io.rb,
lib/aidp/cli/jobs_command.rb,
lib/aidp/cli/mcp_dashboard.rb,
lib/aidp/cli/tools_command.rb,
lib/aidp/cli/config_command.rb,
lib/aidp/cli/enhanced_input.rb,
lib/aidp/cli/models_command.rb,
lib/aidp/cli/harness_command.rb,
lib/aidp/cli/first_run_wizard.rb,
lib/aidp/cli/providers_command.rb,
lib/aidp/cli/checkpoint_command.rb,
lib/aidp/cli/devcontainer_commands.rb
Overview
CLI interface for AIDP
Defined Under Namespace
Classes: CheckpointCommand, ConfigCommand, DevcontainerCommands, EnhancedInput, FirstRunWizard, HarnessCommand, JobsCommand, McpDashboard, ModelsCommand, ProvidersCommand, TerminalIO, ToolsCommand
Constant Summary
Constants included from MessageDisplay
Class Attribute Summary collapse
-
.last_options ⇒ Object
Returns the value of attribute last_options.
Class Method Summary collapse
- .create_prompt ⇒ Object
-
.log_rescue(error, component:, action:, fallback: nil, level: :warn, **context) ⇒ Object
Explicit singleton delegator (defensive: ensure availability even if extend fails to attach).
- .run(args = ARGV) ⇒ Object
Instance Method Summary collapse
-
#initialize(prompt: TTY::Prompt.new) ⇒ CLI
constructor
A new instance of CLI.
Methods included from MessageDisplay::ClassMethods
Methods included from RescueLogging
Methods included from MessageDisplay
#display_message, included, #message_display_prompt
Constructor Details
#initialize(prompt: TTY::Prompt.new) ⇒ CLI
Returns a new instance of CLI.
20 21 22 |
# File 'lib/aidp/cli.rb', line 20 def initialize(prompt: TTY::Prompt.new) @prompt = prompt end |
Class Attribute Details
.last_options ⇒ Object
Returns the value of attribute last_options.
35 36 37 |
# File 'lib/aidp/cli.rb', line 35 def @last_options end |
Class Method Details
.create_prompt ⇒ Object
37 38 39 |
# File 'lib/aidp/cli.rb', line 37 def create_prompt ::TTY::Prompt.new end |
.log_rescue(error, component:, action:, fallback: nil, level: :warn, **context) ⇒ Object
Explicit singleton delegator (defensive: ensure availability even if extend fails to attach)
29 30 31 |
# File 'lib/aidp/cli.rb', line 29 def log_rescue(error, component:, action:, fallback: nil, level: :warn, **context) Aidp::RescueLogging.log_rescue(error, component: component, action: action, fallback: fallback, level: level, **context) end |
.run(args = ARGV) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/aidp/cli.rb', line 41 def run(args = ARGV) # Handle subcommands first (status, jobs, kb, harness) return run_subcommand(args) if subcommand?(args) = (args) self. = if [:help] ([:parser].to_s, type: :info) return 0 end if [:version] ("Aidp version #{Aidp::VERSION}", type: :info) return 0 end # Initialize logger from aidp.yml config # Priority: ENV variable > aidp.yml > default (info) setup_logging(Dir.pwd) # Start the interactive TUI ("AIDP initializing...", type: :info) (" Press Ctrl+C to stop\n", type: :highlight) # Handle configuration setup # Create a prompt for the wizard prompt = create_prompt if [:setup_config] # Force setup/reconfigure even if config exists unless Aidp::CLI::FirstRunWizard.setup_config(Dir.pwd, prompt: prompt, non_interactive: ENV["CI"] == "true") ("Configuration setup cancelled. Aborting startup.", type: :info) return 1 end else # First-time setup wizard (before TUI to avoid noisy errors) unless Aidp::CLI::FirstRunWizard.ensure_config(Dir.pwd, prompt: prompt, non_interactive: ENV["CI"] == "true") ("Configuration required. Aborting startup.", type: :info) return 1 end end # Initialize the enhanced TUI tui = Aidp::Harness::UI::EnhancedTUI.new workflow_selector = Aidp::Harness::UI::EnhancedWorkflowSelector.new(tui, project_dir: Dir.pwd) begin # Copilot is now the default mode - no menu selection # The guided workflow selector will internally choose appropriate mode mode = :guided # Get workflow configuration (no spinner - may wait for user input) workflow_config = workflow_selector.select_workflow(harness_mode: false, mode: mode) # Use the mode determined by the guided workflow selector actual_mode = workflow_config[:mode] || :execute # Pass workflow configuration to harness = { mode: actual_mode, workflow_type: workflow_config[:workflow_type], selected_steps: workflow_config[:steps], user_input: workflow_config[:user_input] } # Create and run the enhanced harness harness_runner = Aidp::Harness::EnhancedRunner.new(Dir.pwd, actual_mode, ) result = harness_runner.run display_harness_result(result) 0 rescue Interrupt ("\n\n⏹️ Interrupted by user", type: :warning) 1 rescue => e log_rescue(e, component: "cli", action: "run_harness", fallback: 1, mode: actual_mode) ("\n❌ Error: #{e.}", type: :error) 1 ensure tui.restore_screen end end |