Module: Legion::Extensions::Agentic::Memory::EchoChamber::Runners::CognitiveEchoChamber

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb

Instance Method Summary collapse

Instance Method Details

#amplify(echo_id:, rate: 0.1, engine: nil) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 41

def amplify(echo_id:, rate: 0.1, engine: nil, **)
  eng  = engine || default_engine
  echo = eng.amplify_echo(echo_id: echo_id, rate: rate)
  return { success: false, error: 'echo not found' } unless echo

  log.debug("[cognitive_echo_chamber] amplified echo=#{echo_id} amplitude=#{echo.amplitude}")
  { success: true, echo: echo.to_h }
end

#chamber_status(engine: nil) ⇒ Object



74
75
76
77
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 74

def chamber_status(engine: nil, **)
  eng = engine || default_engine
  { success: true, **eng.echo_report }
end

#create_chamber(label:, domain: :general, wall_thickness: 0.5, engine: nil) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 30

def create_chamber(label:, domain: :general, wall_thickness: 0.5, engine: nil, **)
  raise ArgumentError, 'label cannot be empty' if label.to_s.strip.empty?

  eng     = engine || default_engine
  chamber = eng.create_chamber(label: label, domain: domain, wall_thickness: wall_thickness)
  log.debug("[cognitive_echo_chamber] chamber created id=#{chamber.id} label=#{label}")
  { success: true, chamber: chamber.to_h }
rescue ArgumentError => e
  { success: false, error: e.message }
end

#create_echo(content:, echo_type: :belief, domain: :general, source_agent: nil, amplitude: 0.5, engine: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 12

def create_echo(content:, echo_type: :belief, domain: :general,
                source_agent: nil, amplitude: 0.5, engine: nil, **)
  raise ArgumentError, 'content cannot be empty' if content.to_s.strip.empty?

  eng  = engine || default_engine
  echo = eng.create_echo(
    content:      content,
    echo_type:    echo_type,
    domain:       domain,
    source_agent: source_agent,
    amplitude:    amplitude
  )
  log.debug("[cognitive_echo_chamber] echo created id=#{echo.id} type=#{echo_type} domain=#{domain}")
  { success: true, echo: echo.to_h }
rescue ArgumentError => e
  { success: false, error: e.message }
end

#decay_all(engine: nil) ⇒ Object



68
69
70
71
72
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 68

def decay_all(engine: nil, **)
  eng = engine || default_engine
  eng.decay_all!
  { success: true, **eng.echo_report }
end

#disrupt(chamber_id:, force:, engine: nil) ⇒ Object



50
51
52
53
54
55
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 50

def disrupt(chamber_id:, force:, engine: nil, **)
  eng    = engine || default_engine
  result = eng.disrupt_chamber(chamber_id: chamber_id, force: force)
  log.debug("[cognitive_echo_chamber] disrupt chamber=#{chamber_id} success=#{result[:success]}")
  result
end

#list_echoes(echo_type: nil, domain: nil, engine: nil) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb', line 57

def list_echoes(echo_type: nil, domain: nil, engine: nil, **)
  eng    = engine || default_engine
  echoes = if echo_type
             eng.echoes_by_type(echo_type: echo_type)
           else
             eng.active_echoes
           end
  echoes = echoes.select { |e| e.domain == domain.to_sym } if domain
  { success: true, echoes: echoes.map(&:to_h), count: echoes.size }
end