Module: Legion::Extensions::Agentic::Social::SocialLearning::Runners::SocialLearning

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

Instance Method Summary collapse

Instance Method Details

#best_model_agents(limit: 5) ⇒ Object



68
69
70
71
72
73
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 68

def best_model_agents(limit: 5, **)
  lim = limit.to_i
  log.debug "[social_learning] best_model_agents limit=#{lim}"
  models = engine.best_models(limit: lim)
  { success: true, models: models.map(&:to_h), count: models.size }
end

#domain_models(domain:) ⇒ Object



75
76
77
78
79
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 75

def domain_models(domain:, **)
  log.debug "[social_learning] domain_models domain=#{domain}"
  models = engine.by_domain(domain: domain)
  { success: true, models: models.map(&:to_h), count: models.size }
end

#observe_agent_behavior(model_id:, action:, domain:, outcome:, context: {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 20

def observe_agent_behavior(model_id:, action:, domain:, outcome:, context: {}, **)
  log.debug "[social_learning] observe model=#{model_id} action=#{action} domain=#{domain} outcome=#{outcome}"
  behavior = engine.observe_behavior(
    model_id: model_id,
    action:   action,
    domain:   domain,
    outcome:  outcome,
    context:  context
  )
  if behavior
    { success: true, behavior: behavior.to_h }
  else
    { success: false, reason: 'model not found or below attention threshold' }
  end
end

#register_model_agent(agent_id:, domain:, prestige: nil) ⇒ Object



13
14
15
16
17
18
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 13

def register_model_agent(agent_id:, domain:, prestige: nil, **)
  init_prestige = prestige || Helpers::Constants::DEFAULT_PRESTIGE
  log.debug "[social_learning] register_model agent=#{agent_id} domain=#{domain} prestige=#{init_prestige}"
  model = engine.register_model(agent_id: agent_id, domain: domain, prestige: init_prestige)
  { success: true, model: model.to_h }
end

#reinforce_reproduction(behavior_id:, outcome:) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 58

def reinforce_reproduction(behavior_id:, outcome:, **)
  log.debug "[social_learning] reinforce behavior_id=#{behavior_id} outcome=#{outcome}"
  result = engine.reinforce_reproduction(behavior_id: behavior_id, outcome: outcome)
  if result
    { success: true }.merge(result)
  else
    { success: false, reason: 'behavior or model not found' }
  end
end

#reproduce_observed_behavior(behavior_id:) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 48

def reproduce_observed_behavior(behavior_id:, **)
  log.debug "[social_learning] reproduce behavior_id=#{behavior_id}"
  behavior = engine.reproduce_behavior(behavior_id: behavior_id)
  if behavior
    { success: true, behavior: behavior.to_h }
  else
    { success: false, reason: 'behavior not found or retention too low' }
  end
end

#reproducible_behaviors(domain: nil) ⇒ Object



42
43
44
45
46
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 42

def reproducible_behaviors(domain: nil, **)
  log.debug "[social_learning] reproducible_behaviors domain=#{domain.inspect}"
  behaviors = engine.reproducible_behaviors(domain: domain)
  { success: true, behaviors: behaviors.map(&:to_h), count: behaviors.size }
end

#retained_behaviors(domain: nil) ⇒ Object



36
37
38
39
40
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 36

def retained_behaviors(domain: nil, **)
  log.debug "[social_learning] retained_behaviors domain=#{domain.inspect}"
  behaviors = engine.retained_behaviors(domain: domain)
  { success: true, behaviors: behaviors.map(&:to_h), count: behaviors.size }
end

#social_learning_statsObject



89
90
91
92
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 89

def social_learning_stats(**)
  log.debug '[social_learning] social_learning_stats'
  { success: true }.merge(engine.to_h)
end

#update_social_learningObject



81
82
83
84
85
86
87
# File 'lib/legion/extensions/agentic/social/social_learning/runners/social_learning.rb', line 81

def update_social_learning(**)
  log.debug '[social_learning] update_social_learning decay+prune cycle'
  engine.decay_all
  engine.prune_forgotten
  stats = engine.to_h
  { success: true }.merge(stats)
end