Module: Legion::Extensions::Agentic::Self::Fingerprint::Runners::CognitiveFingerprint

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb

Instance Method Summary collapse

Instance Method Details

#anomaly_check(category:, value:) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 31

def anomaly_check(category:, value:, **)
  result = fingerprint_engine.anomaly_check(category: category.to_sym, value: value.to_f)
  if result[:anomaly]
    log.warn "[cognitive_fingerprint] anomaly category=#{category} " \
             "deviation=#{result[:deviation]&.round(4)}"
  end
  result
end

#fingerprint_hashObject



59
60
61
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 59

def fingerprint_hash(**)
  { fingerprint_hash: fingerprint_engine.fingerprint_hash }
end

#fingerprint_reportObject



63
64
65
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 63

def fingerprint_report(**)
  fingerprint_engine.fingerprint_report
end

#fingerprint_statusObject



67
68
69
70
71
72
73
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 67

def fingerprint_status(**)
  {
    trait_count:  fingerprint_engine.trait_count,
    sample_count: fingerprint_engine.sample_count,
    label:        fingerprint_engine.identity_label
  }
end

#identity_confidenceObject



52
53
54
55
56
57
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 52

def identity_confidence(**)
  confidence = fingerprint_engine.identity_confidence
  label      = fingerprint_engine.identity_label
  log.debug "[cognitive_fingerprint] confidence=#{confidence.round(4)} label=#{label}"
  { confidence: confidence, label: label }
end

#record_observation(category:, value:) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 13

def record_observation(category:, value:, **)
  category = category.to_sym
  result   = fingerprint_engine.record_observation(category: category, value: value.to_f)
  log.debug "[cognitive_fingerprint] record category=#{category} " \
            "baseline=#{result[:baseline]&.round(4)} samples=#{result[:samples]}"
  result
end

#strongest_traits(top_n: 3) ⇒ Object



44
45
46
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 44

def strongest_traits(top_n: 3, **)
  { traits: fingerprint_engine.strongest_traits(top_n.to_i) }
end

#trait_profileObject



40
41
42
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 40

def trait_profile(**)
  { profile: fingerprint_engine.trait_profile }
end

#verify_identity(observations:) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 21

def verify_identity(observations:, **)
  parsed = Array(observations).map do |obs|
    { category: obs[:category].to_sym, value: obs[:value].to_f }
  end
  result = fingerprint_engine.verify_identity(observations: parsed)
  log.info "[cognitive_fingerprint] verify score=#{result[:match_score]&.round(4)} " \
           "verdict=#{result[:verdict]}"
  result
end

#weakest_traits(top_n: 3) ⇒ Object



48
49
50
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 48

def weakest_traits(top_n: 3, **)
  { traits: fingerprint_engine.weakest_traits(top_n.to_i) }
end