Class: Aidp::Harness::State::Metrics

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

Overview

Manages metrics, analytics, and performance calculations

Instance Method Summary collapse

Constructor Details

#initialize(persistence, workflow_state) ⇒ Metrics



8
9
10
11
# File 'lib/aidp/harness/state/metrics.rb', line 8

def initialize(persistence, workflow_state)
  @persistence = persistence
  @workflow_state = workflow_state
end

Instance Method Details

#harness_metricsObject



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/aidp/harness/state/metrics.rb', line 63

def harness_metrics
  state = load_state
  {
    provider_switches: state[:provider_switches] || 0,
    rate_limit_events: state[:rate_limit_events] || 0,
    user_feedback_requests: state[:user_feedback_requests] || 0,
    error_events: state[:error_events] || 0,
    retry_attempts: state[:retry_attempts] || 0,
    current_provider: state[:current_provider],
    harness_state: state[:state],
    last_activity: state[:last_updated]
  }
end

#performance_metricsObject



77
78
79
80
81
82
83
# File 'lib/aidp/harness/state/metrics.rb', line 77

def performance_metrics
  {
    efficiency: calculate_efficiency_metrics,
    reliability: calculate_reliability_metrics,
    performance: calculate_performance_metrics
  }
end

#record_error_event(step_name, error_type, provider_name = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/aidp/harness/state/metrics.rb', line 43

def record_error_event(step_name, error_type, provider_name = nil)
  current_state = load_state
  error_events = (current_state[:error_events] || 0) + 1

  update_state(
    error_events: error_events,
    last_error: create_error_record(step_name, error_type, provider_name)
  )
end

#record_provider_switch(from_provider, to_provider) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/aidp/harness/state/metrics.rb', line 13

def record_provider_switch(from_provider, to_provider)
  current_state = load_state
  provider_switches = (current_state[:provider_switches] || 0) + 1

  update_state(
    provider_switches: provider_switches,
    last_provider_switch: create_switch_record(from_provider, to_provider)
  )
end

#record_rate_limit_event(provider_name, reset_time) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/aidp/harness/state/metrics.rb', line 23

def record_rate_limit_event(provider_name, reset_time)
  current_state = load_state
  rate_limit_events = (current_state[:rate_limit_events] || 0) + 1

  update_state(
    rate_limit_events: rate_limit_events,
    last_rate_limit: create_rate_limit_record(provider_name, reset_time)
  )
end

#record_retry_attempt(step_name, provider_name, attempt_number) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/aidp/harness/state/metrics.rb', line 53

def record_retry_attempt(step_name, provider_name, attempt_number)
  current_state = load_state
  retry_attempts = (current_state[:retry_attempts] || 0) + 1

  update_state(
    retry_attempts: retry_attempts,
    last_retry: create_retry_record(step_name, provider_name, attempt_number)
  )
end

#record_user_feedback_request(step_name, questions_count) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/aidp/harness/state/metrics.rb', line 33

def record_user_feedback_request(step_name, questions_count)
  current_state = load_state
  user_feedback_requests = (current_state[:user_feedback_requests] || 0) + 1

  update_state(
    user_feedback_requests: user_feedback_requests,
    last_user_feedback: create_feedback_record(step_name, questions_count)
  )
end