Class: Aidp::Harness::UI::StatusManager
- Inherits:
-
Base
- Object
- Base
- Aidp::Harness::UI::StatusManager
show all
- Defined in:
- lib/aidp/harness/ui/status_manager.rb
Overview
Real-time status updates using CLI UI spinners
Defined Under Namespace
Classes: InvalidStatusError, StatusError, UpdateError
Instance Method Summary
collapse
Constructor Details
#initialize(ui_components = {}) ⇒ StatusManager
Returns a new instance of StatusManager.
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 20
def initialize(ui_components = {})
super()
@status_widget = ui_components[:status_widget] || StatusWidget.new
@spinner_group = ui_components[:spinner_group] || SpinnerGroup.new
@frame_manager = ui_components[:frame_manager] || FrameManager.new
@formatter = ui_components[:formatter] || StatusManagerFormatter.new
@active_statuses = {}
@status_history = []
end
|
Instance Method Details
#clear_status_history ⇒ Object
130
131
132
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 130
def clear_status_history
@status_history.clear
end
|
#complete_status(status_id, final_message = "Completed") ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 89
def complete_status(status_id, final_message = "Completed")
validate_status_id(status_id)
status = @active_statuses[status_id]
raise InvalidStatusError, "Status #{status_id} not found" unless status
complete_status_display(status, final_message)
@active_statuses.delete(status_id)
record_status_completion(status_id, final_message)
end
|
#create_status_tracker(name, initial_message = "Initializing...") ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 77
def create_status_tracker(name, initial_message = "Initializing...")
validate_tracker_name(name)
validate_message(initial_message)
status_id = generate_status_id(name)
status_tracker = create_status_instance(name, initial_message)
@active_statuses[status_id] = status_tracker
record_status_creation(status_id, name, initial_message)
status_id
end
|
#get_status_summary ⇒ Object
121
122
123
124
125
126
127
128
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 121
def get_status_summary
{
active_statuses: @active_statuses.size,
completed_statuses: @status_history.count { |h| h[:status] == "completed" },
total_statuses: @status_history.size,
status_history: @status_history.dup
}
end
|
#show_concurrent_statuses(operations, &block) ⇒ Object
55
56
57
58
59
60
61
62
63
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 55
def show_concurrent_statuses(operations, &block)
validate_operations(operations)
@frame_manager.section("Concurrent Operations") do
@spinner_group.run_concurrent_operations(operations, &block)
end
rescue => e
raise UpdateError, "Failed to show concurrent statuses: #{e.message}"
end
|
#show_error_status(message) ⇒ Object
106
107
108
109
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 106
def show_error_status(message)
@status_widget.show_error_status(message)
record_status_event(:error, message)
end
|
#show_info_status(message) ⇒ Object
116
117
118
119
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 116
def show_info_status(message)
@status_widget.show_info_status(message)
record_status_event(:info, message)
end
|
#show_step_status(step_name, &block) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 43
def show_step_status(step_name, &block)
validate_step_name(step_name)
@frame_manager.step_frame(step_name, 1, 1) do
@status_widget.show_loading_status("Processing #{step_name}") do |spinner|
track_step_status(step_name, spinner, &block)
end
end
rescue => e
raise UpdateError, "Failed to show step status: #{e.message}"
end
|
#show_success_status(message) ⇒ Object
101
102
103
104
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 101
def show_success_status(message)
@status_widget.show_success_status(message)
record_status_event(:success, message)
end
|
#show_warning_status(message) ⇒ Object
111
112
113
114
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 111
def show_warning_status(message)
@status_widget.show_warning_status(message)
record_status_event(:warning, message)
end
|
#show_workflow_status(workflow_name, &block) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 31
def show_workflow_status(workflow_name, &block)
validate_workflow_name(workflow_name)
@frame_manager.workflow_frame(workflow_name) do
@status_widget.show_loading_status("Starting #{workflow_name}") do |spinner|
track_workflow_status(workflow_name, spinner, &block)
end
end
rescue => e
raise UpdateError, "Failed to show workflow status: #{e.message}"
end
|
#update_status(status_id, message, type = :info) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/aidp/harness/ui/status_manager.rb', line 65
def update_status(status_id, message, type = :info)
validate_status_id(status_id)
validate_message(message)
validate_status_type(type)
status = @active_statuses[status_id]
raise InvalidStatusError, "Status #{status_id} not found" unless status
update_status_display(status, message, type)
record_status_update(status_id, message, type)
end
|