Class: Legion::Extensions::Agentic::Self::Personality::Helpers::PersonalityStore
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Self::Personality::Helpers::PersonalityStore
- Defined in:
- lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Instance Method Summary collapse
- #compatibility_score(other_profile) ⇒ Object
- #full_description ⇒ Object
-
#initialize ⇒ PersonalityStore
constructor
A new instance of PersonalityStore.
- #update(tick_results) ⇒ Object
Constructor Details
#initialize ⇒ PersonalityStore
Returns a new instance of PersonalityStore.
12 13 14 |
# File 'lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb', line 12 def initialize @model = TraitModel.new end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
10 11 12 |
# File 'lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb', line 10 def model @model end |
Instance Method Details
#compatibility_score(other_profile) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb', line 32 def compatibility_score(other_profile) return nil unless other_profile.is_a?(Hash) diffs = Constants::TRAITS.map do |trait| mine = @model.trait(trait) || 0.5 theirs = other_profile[trait] || 0.5 (mine - theirs).abs end avg_diff = diffs.sum / diffs.size.to_f (1.0 - avg_diff).round(3) end |
#full_description ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb', line 23 def full_description return 'Personality not yet formed — insufficient observations.' unless @model.formed? parts = Constants::TRAITS.filter_map do |trait| @model.describe(trait) end "#{parts.join('. ')}." end |
#update(tick_results) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/legion/extensions/agentic/self/personality/helpers/personality_store.rb', line 16 def update(tick_results) signals = extract_signals(tick_results) @model.update(signals) partner_signals = extract_partner_signals(tick_results) @model.apply_partner_signals(partner_signals) unless partner_signals.empty? end |