Module: Legion::Extensions::Agentic::Self::Personality::Runners::Personality

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

Instance Method Summary collapse

Instance Method Details

#describe_personalityObject



37
38
39
40
41
42
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 37

def describe_personality(**)
  {
    description: personality_store.full_description,
    formed:      personality_store.model.formed?
  }
end

#personality_compatibility(other_profile:) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 58

def personality_compatibility(other_profile:, **)
  score = personality_store.compatibility_score(other_profile)
  {
    compatibility:  score,
    interpretation: interpret_compatibility(score)
  }
end

#personality_profileObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 25

def personality_profile(**)
  model = personality_store.model
  {
    traits:       model.profile,
    formed:       model.formed?,
    stability:    model.stability,
    dominant:     model.dominant_trait,
    observations: model.observation_count,
    history_size: model.history.size
  }
end

#personality_statsObject



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 66

def personality_stats(**)
  model = personality_store.model
  {
    observation_count: model.observation_count,
    formed:            model.formed?,
    stability:         model.stability,
    dominant_trait:    model.dominant_trait,
    profile:           model.profile,
    history_size:      model.history.size,
    trait_trends:      Helpers::Constants::TRAITS.to_h { |t| [t, model.trend(t)] }
  }
end

#trait_detail(trait:) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 44

def trait_detail(trait:, **)
  model = personality_store.model
  value = model.trait(trait)
  return { trait: trait.to_sym, error: :unknown_trait } unless value

  {
    trait:       trait.to_sym,
    value:       value.round(3),
    level:       model.trait_level(trait),
    description: model.describe(trait),
    trend:       model.trend(trait)
  }
end

#update_personality(tick_results: {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/agentic/self/personality/runners/personality.rb', line 12

def update_personality(tick_results: {}, **)
  personality_store.update(tick_results)
  model = personality_store.model

  {
    updated:           true,
    observation_count: model.observation_count,
    formed:            model.formed?,
    profile:           model.profile,
    dominant_trait:    model.dominant_trait
  }
end