Class: Aidp::Harness::State::WorkflowState
- Inherits:
-
Object
- Object
- Aidp::Harness::State::WorkflowState
- Defined in:
- lib/aidp/harness/state/workflow_state.rb
Overview
Manages workflow-specific state and progress tracking
Instance Attribute Summary collapse
-
#progress_tracker ⇒ Object
readonly
Returns the value of attribute progress_tracker.
Instance Method Summary collapse
- #all_steps_completed? ⇒ Boolean
- #completed_steps ⇒ Object
- #current_step ⇒ Object
-
#initialize(persistence, project_dir, mode, progress_tracker_factory: nil) ⇒ WorkflowState
constructor
A new instance of WorkflowState.
- #mark_step_completed(step_name) ⇒ Object
- #mark_step_in_progress(step_name) ⇒ Object
- #next_step ⇒ Object
- #progress_percentage ⇒ Object
- #progress_summary ⇒ Object
- #reset_all ⇒ Object
- #session_duration ⇒ Object
- #step_completed?(step_name) ⇒ Boolean
- #total_steps ⇒ Object
Constructor Details
#initialize(persistence, project_dir, mode, progress_tracker_factory: nil) ⇒ WorkflowState
Returns a new instance of WorkflowState.
13 14 15 16 17 18 19 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 13 def initialize(persistence, project_dir, mode, progress_tracker_factory: nil) @persistence = persistence @project_dir = project_dir @mode = mode @progress_tracker_factory = progress_tracker_factory @progress_tracker = @progress_tracker_factory ? @progress_tracker_factory.call : create_progress_tracker end |
Instance Attribute Details
#progress_tracker ⇒ Object (readonly)
Returns the value of attribute progress_tracker.
85 86 87 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 85 def progress_tracker @progress_tracker end |
Instance Method Details
#all_steps_completed? ⇒ Boolean
51 52 53 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 51 def all_steps_completed? completed_steps.size == total_steps end |
#completed_steps ⇒ Object
21 22 23 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 21 def completed_steps @progress_tracker.completed_steps end |
#current_step ⇒ Object
25 26 27 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 25 def current_step @progress_tracker.current_step end |
#mark_step_completed(step_name) ⇒ Object
33 34 35 36 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 33 def mark_step_completed(step_name) @progress_tracker.mark_step_completed(step_name) update_harness_state(current_step: nil, last_step_completed: step_name) end |
#mark_step_in_progress(step_name) ⇒ Object
38 39 40 41 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 38 def mark_step_in_progress(step_name) @progress_tracker.mark_step_in_progress(step_name) update_harness_state(current_step: step_name) end |
#next_step ⇒ Object
43 44 45 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 43 def next_step @progress_tracker.next_step end |
#progress_percentage ⇒ Object
55 56 57 58 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 55 def progress_percentage return 100.0 if all_steps_completed? (completed_steps.size.to_f / total_steps * 100).round(2) end |
#progress_summary ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 70 def progress_summary { mode: @mode, completed_steps: completed_steps.size, total_steps: total_steps, current_step: current_step, next_step: next_step, all_completed: all_steps_completed?, started_at: @progress_tracker.started_at, harness_state: harness_state, progress_percentage: progress_percentage, session_duration: session_duration } end |
#reset_all ⇒ Object
65 66 67 68 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 65 def reset_all @progress_tracker.reset @persistence.clear_state end |
#session_duration ⇒ Object
60 61 62 63 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 60 def session_duration return 0 unless @progress_tracker.started_at Time.now - @progress_tracker.started_at end |
#step_completed?(step_name) ⇒ Boolean
29 30 31 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 29 def step_completed?(step_name) @progress_tracker.step_completed?(step_name) end |
#total_steps ⇒ Object
47 48 49 |
# File 'lib/aidp/harness/state/workflow_state.rb', line 47 def total_steps steps_spec.keys.size end |