Module: Legion::Extensions::Agentic::Social::MirrorSystem::Runners::Mirror

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

Instance Method Summary collapse

Instance Method Details

#imitate_behavior(action:, domain:, source_agent: nil) ⇒ Object



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

def imitate_behavior(action:, domain:, source_agent: nil, **)
  result = mirror_system.imitate(action: action, domain: domain, source_agent: source_agent)
  if result
    log.debug "[mirror] imitate: action=#{action} domain=#{domain} " \
              "fidelity=#{result[:fidelity].round(3)}"
    {
      success:   true,
      imitated:  true,
      action:    action,
      domain:    domain,
      fidelity:  result[:fidelity].round(4),
      source:    result[:observation].agent_id,
      resonance: result[:observation].resonance.round(4)
    }
  else
    log.debug "[mirror] imitate: action=#{action} domain=#{domain} no_observation"
    { success: true, imitated: false, action: action, domain: domain }
  end
end

#mirror_statsObject



84
85
86
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 84

def mirror_stats(**)
  { success: true, stats: mirror_system.to_h }
end

#observations_for(agent_id:) ⇒ Object



54
55
56
57
58
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 54

def observations_for(agent_id:, **)
  observations = mirror_system.observations_for_agent(agent_id)
  log.debug "[mirror] observations_for: agent=#{agent_id} count=#{observations.size}"
  { success: true, agent_id: agent_id, observations: observations.map(&:to_h), count: observations.size }
end

#observations_in(domain:) ⇒ Object



60
61
62
63
64
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 60

def observations_in(domain:, **)
  observations = mirror_system.observations_in_domain(domain)
  log.debug "[mirror] observations_in: domain=#{domain} count=#{observations.size}"
  { success: true, domain: domain, observations: observations.map(&:to_h), count: observations.size }
end

#observe_behavior(agent_id:, action:, domain:, context: nil, outcome: nil) ⇒ Object



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

def observe_behavior(agent_id:, action:, domain:, context: nil, outcome: nil, **)
  obs = mirror_system.observe(agent_id: agent_id, action: action, domain: domain, context: context, outcome: outcome)
  log.debug "[mirror] observe: agent=#{agent_id} action=#{action} domain=#{domain} " \
            "resonance=#{obs.resonance.round(3)} count=#{obs.observation_count}"
  { success: true, observation: obs.to_h }
end

#repertoire_statusObject



66
67
68
69
70
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 66

def repertoire_status(**)
  rep = mirror_system.repertoire
  log.debug "[mirror] repertoire: size=#{rep.size}"
  { success: true, repertoire: rep.values, size: rep.size }
end

#report_imitation_outcome(action:, domain:, success_flag:) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 40

def report_imitation_outcome(action:, domain:, success_flag:, **)
  mirror_system.update_fidelity(action: action, domain: domain, success: success_flag)
  fidelity = mirror_system.fidelity_for(action, domain)
  log.debug "[mirror] outcome: action=#{action} domain=#{domain} " \
            "success=#{success_flag} fidelity=#{fidelity.round(3)}"
  { success: true, action: action, domain: domain, fidelity: fidelity.round(4) }
end

#strongest_mirrors(count: 5) ⇒ Object



48
49
50
51
52
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 48

def strongest_mirrors(count: 5, **)
  mirrors = mirror_system.strongest_mirrors(count)
  log.debug "[mirror] strongest: count=#{mirrors.size}"
  { success: true, mirrors: mirrors.map(&:to_h), count: mirrors.size }
end

#update_mirrorObject



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/legion/extensions/agentic/social/mirror_system/runners/mirror.rb', line 72

def update_mirror(**)
  mirror_system.decay_all
  log.debug "[mirror] tick: observations=#{mirror_system.observation_count} " \
            "repertoire=#{mirror_system.repertoire_size} agents=#{mirror_system.mirrored_agents.size}"
  {
    success:      true,
    observations: mirror_system.observation_count,
    repertoire:   mirror_system.repertoire_size,
    agents:       mirror_system.mirrored_agents.size
  }
end