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:, partner_identity: nil) ⇒ 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:, partner_identity: nil, **)
  result = engine_for(partner_identity).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

#erase_partner!(identity:) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 77

def erase_partner!(identity:, **)
  registry = fingerprint_registry
  return { erased: false, identity: identity } unless registry.key?(identity)

  registry.delete(identity)
  log.info "[cognitive_fingerprint] erased partner identity=#{identity}"
  { erased: true, identity: identity }
end

#fingerprint_hash(partner_identity: nil) ⇒ Object



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

def fingerprint_hash(partner_identity: nil, **)
  { fingerprint_hash: engine_for(partner_identity).fingerprint_hash }
end

#fingerprint_report(partner_identity: nil) ⇒ Object



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

def fingerprint_report(partner_identity: nil, **)
  engine_for(partner_identity).fingerprint_report
end

#fingerprint_status(partner_identity: nil) ⇒ Object



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

def fingerprint_status(partner_identity: nil, **)
  engine = engine_for(partner_identity)
  {
    trait_count:  engine.trait_count,
    sample_count: engine.sample_count,
    label:        engine.identity_label
  }
end

#identity_confidence(partner_identity: nil) ⇒ Object



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

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

#record_observation(category:, value:, partner_identity: nil) ⇒ 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:, partner_identity: nil, **)
  category = category.to_sym
  result   = engine_for(partner_identity).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, partner_identity: nil) ⇒ Object



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

def strongest_traits(top_n: 3, partner_identity: nil, **)
  { traits: engine_for(partner_identity).strongest_traits(top_n.to_i) }
end

#tracked_partnersObject



86
87
88
# File 'lib/legion/extensions/agentic/self/fingerprint/runners/cognitive_fingerprint.rb', line 86

def tracked_partners
  fingerprint_registry.keys.compact
end

#trait_profile(partner_identity: nil) ⇒ Object



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

def trait_profile(partner_identity: nil, **)
  { profile: engine_for(partner_identity).trait_profile }
end

#verify_identity(observations:, partner_identity: nil) ⇒ 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:, partner_identity: nil, **)
  parsed = Array(observations).map do |obs|
    { category: obs[:category].to_sym, value: obs[:value].to_f }
  end
  result = engine_for(partner_identity).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, partner_identity: nil) ⇒ Object



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

def weakest_traits(top_n: 3, partner_identity: nil, **)
  { traits: engine_for(partner_identity).weakest_traits(top_n.to_i) }
end