Class: Aidp::Harness::UI::Navigation::WorkflowSelector

Inherits:
Base
  • Object
show all
Defined in:
lib/aidp/harness/ui/navigation/workflow_selector.rb

Overview

Handles workflow mode selection (simple vs advanced)

Defined Under Namespace

Classes: InvalidModeError, SelectionError, WorkflowError

Constant Summary collapse

WORKFLOW_MODES =
{
  simple: {
    name: "Simple Mode",
    description: "Predefined workflows with guided templates",
    icon: "🚀"
  },
  advanced: {
    name: "Advanced Mode",
    description: "Custom workflow configuration",
    icon: "⚙️"
  }
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(ui_components = {}, prompt: nil) ⇒ WorkflowSelector

Returns a new instance of WorkflowSelector.



33
34
35
36
37
38
39
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 33

def initialize(ui_components = {}, prompt: nil)
  super()
  @prompt = prompt || ui_components[:prompt] || TTY::Prompt.new
  @pastel = Pastel.new
  @formatter = ui_components[:formatter] || WorkflowFormatter.new
  @state_manager = ui_components[:state_manager]
end

Instance Method Details

#get_available_modesObject



60
61
62
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 60

def get_available_modes
  WORKFLOW_MODES.keys
end

#get_mode_info(mode) ⇒ Object



64
65
66
67
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 64

def get_mode_info(mode)
  validate_mode(mode)
  WORKFLOW_MODES[mode]
end

#is_advanced_mode?(mode) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 73

def is_advanced_mode?(mode)
  mode == :advanced
end

#is_simple_mode?(mode) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 69

def is_simple_mode?(mode)
  mode == :simple
end

#select_workflow_modeObject



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 41

def select_workflow_mode
  display_mode_selection
  selection = prompt_for_mode_selection
  validate_selection(selection)

  selected_mode = parse_selection(selection)
  record_selection(selected_mode)
  selected_mode
rescue => e
  raise SelectionError, "Failed to select workflow mode: #{e.message}"
end

#show_mode_description(mode) ⇒ Object



53
54
55
56
57
58
# File 'lib/aidp/harness/ui/navigation/workflow_selector.rb', line 53

def show_mode_description(mode)
  validate_mode(mode)

  mode_info = WORKFLOW_MODES[mode]
  display_mode_info(mode_info)
end