Class: Legion::Extensions::Agentic::Executive::DualProcess::Helpers::Heuristic

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pattern:, domain:, response:, confidence: Constants::DEFAULT_CONFIDENCE) ⇒ Heuristic

Returns a new instance of Heuristic.



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 15

def initialize(pattern:, domain:, response:, confidence: Constants::DEFAULT_CONFIDENCE)
  @id            = SecureRandom.uuid
  @pattern       = pattern
  @domain        = domain
  @response      = response
  @confidence    = confidence.clamp(Constants::CONFIDENCE_FLOOR, Constants::CONFIDENCE_CEILING)
  @use_count     = 0
  @success_count = 0
  @created_at    = Time.now.utc
  @last_used_at  = nil
end

Instance Attribute Details

#confidenceObject (readonly)

Returns the value of attribute confidence.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def confidence
  @confidence
end

#created_atObject (readonly)

Returns the value of attribute created_at.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def created_at
  @created_at
end

#domainObject (readonly)

Returns the value of attribute domain.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def domain
  @domain
end

#idObject (readonly)

Returns the value of attribute id.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def id
  @id
end

#last_used_atObject (readonly)

Returns the value of attribute last_used_at.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def last_used_at
  @last_used_at
end

#patternObject (readonly)

Returns the value of attribute pattern.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def pattern
  @pattern
end

#responseObject (readonly)

Returns the value of attribute response.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def response
  @response
end

#success_countObject (readonly)

Returns the value of attribute success_count.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def success_count
  @success_count
end

#use_countObject (readonly)

Returns the value of attribute use_count.



12
13
14
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12

def use_count
  @use_count
end

Instance Method Details

#reliable?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 42

def reliable?
  success_rate >= 0.7 && @use_count >= 3
end

#success_rateObject



36
37
38
39
40
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 36

def success_rate
  return 0.0 if @use_count.zero?

  @success_count.to_f / @use_count
end

#to_hObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 46

def to_h
  {
    id:            @id,
    pattern:       @pattern,
    domain:        @domain,
    response:      @response,
    confidence:    @confidence,
    use_count:     @use_count,
    success_count: @success_count,
    success_rate:  success_rate,
    reliable:      reliable?,
    created_at:    @created_at,
    last_used_at:  @last_used_at
  }
end

#use!(success: true) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 27

def use!(success: true)
  @use_count    += 1
  @last_used_at  = Time.now.utc
  @success_count += 1 if success

  delta = success ? Constants::HEURISTIC_BOOST : -Constants::HEURISTIC_BOOST
  @confidence = (@confidence + delta).clamp(Constants::CONFIDENCE_FLOOR, Constants::CONFIDENCE_CEILING)
end