Class: Aidp::Harness::State::WorkflowState

Inherits:
Object
  • Object
show all
Defined in:
lib/aidp/harness/state/workflow_state.rb

Overview

Manages workflow-specific state and progress tracking

Instance Attribute Summary collapse

Instance Method Summary collapse

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_trackerObject (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

Returns:

  • (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_stepsObject



21
22
23
# File 'lib/aidp/harness/state/workflow_state.rb', line 21

def completed_steps
  @progress_tracker.completed_steps
end

#current_stepObject



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_stepObject



43
44
45
# File 'lib/aidp/harness/state/workflow_state.rb', line 43

def next_step
  @progress_tracker.next_step
end

#progress_percentageObject



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_summaryObject



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_allObject



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_durationObject



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

Returns:

  • (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_stepsObject



47
48
49
# File 'lib/aidp/harness/state/workflow_state.rb', line 47

def total_steps
  steps_spec.keys.size
end