Class: Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Chamber

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb

Constant Summary

Constants included from Constants

Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::AMPLIFICATION_LABELS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::AMPLIFICATION_RATE, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::BREAKTHROUGH_BONUS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::CHAMBER_STATES, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::CHAMBER_STATE_LABELS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::DECAY_RATE, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::DEFAULT_AMPLITUDE, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::DEFAULT_WALL_THICKNESS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::DISRUPTION_THRESHOLD, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::ECHO_TYPES, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::MAX_CHAMBERS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::MAX_ECHOES, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::POROUS_THRESHOLD, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::RESONANCE_LABELS, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::SEALED_THRESHOLD, Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Constants::SILENT_THRESHOLD

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Constants

label_for

Constructor Details

#initialize(label:, domain: :general, wall_thickness: DEFAULT_WALL_THICKNESS) ⇒ Chamber

Returns a new instance of Chamber.



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 17

def initialize(label:, domain: :general, wall_thickness: DEFAULT_WALL_THICKNESS)
  @id                  = SecureRandom.uuid
  @label               = label
  @domain              = domain.to_sym
  @state               = :forming
  @wall_thickness      = wall_thickness.to_f.clamp(0.0, 1.0).round(10)
  @resonance_frequency = 0.0
  @echoes              = {}
  @disruption_count    = 0
  @created_at          = Time.now.utc
end

Instance Attribute Details

#created_atObject (readonly)

Returns the value of attribute created_at.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def created_at
  @created_at
end

#disruption_countObject (readonly)

Returns the value of attribute disruption_count.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def disruption_count
  @disruption_count
end

#domainObject (readonly)

Returns the value of attribute domain.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def domain
  @domain
end

#idObject (readonly)

Returns the value of attribute id.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def id
  @id
end

#labelObject (readonly)

Returns the value of attribute label.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def label
  @label
end

#resonance_frequencyObject (readonly)

Returns the value of attribute resonance_frequency.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def resonance_frequency
  @resonance_frequency
end

#stateObject (readonly)

Returns the value of attribute state.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def state
  @state
end

#wall_thicknessObject (readonly)

Returns the value of attribute wall_thickness.



14
15
16
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 14

def wall_thickness
  @wall_thickness
end

Instance Method Details

#active_echoesObject



81
82
83
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 81

def active_echoes
  @echoes.values.reject(&:silent?)
end

#add_echo(echo) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 29

def add_echo(echo)
  return false if @echoes.size >= MAX_ECHOES

  @echoes[echo.id] = echo
  recalculate_resonance
  update_state
  true
end

#amplify_all!(rate = AMPLIFICATION_RATE) ⇒ Object



45
46
47
48
49
50
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 45

def amplify_all!(rate = AMPLIFICATION_RATE)
  @echoes.each_value { |e| e.amplify!(rate) }
  recalculate_resonance
  update_state
  { amplified: @echoes.size, resonance_frequency: @resonance_frequency }
end

#disrupt!(force) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 52

def disrupt!(force)
  force = force.to_f.clamp(0.0, 1.0)
  return { success: false, reason: 'insufficient_force', force: force, wall: @wall_thickness } if force <= @wall_thickness

  @disruption_count += 1
  breakthrough = force - @wall_thickness
  @wall_thickness = (@wall_thickness - (breakthrough * BREAKTHROUGH_BONUS)).clamp(0.0, 1.0).round(10)
  @echoes.each_value { |e| e.dampen!(breakthrough.round(10)) }
  @state = :disrupted
  recalculate_resonance
  { success: true, force: force, breakthrough: breakthrough.round(10), wall_remaining: @wall_thickness }
end

#echo_countObject



77
78
79
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 77

def echo_count
  @echoes.size
end

#porous?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 69

def porous?
  @wall_thickness <= POROUS_THRESHOLD
end

#remove_echo(echo_id) ⇒ Object



38
39
40
41
42
43
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 38

def remove_echo(echo_id)
  removed = @echoes.delete(echo_id)
  recalculate_resonance if removed
  update_state
  !removed.nil?
end

#resonance_levelObject



73
74
75
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 73

def resonance_level
  Constants.label_for(RESONANCE_LABELS, @resonance_frequency)
end

#resonating_echoesObject



85
86
87
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 85

def resonating_echoes
  @echoes.values.select(&:resonate?)
end

#sealed?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 65

def sealed?
  @wall_thickness >= SEALED_THRESHOLD
end

#to_hObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 89

def to_h
  {
    id:                  @id,
    label:               @label,
    domain:              @domain,
    state:               @state,
    wall_thickness:      @wall_thickness,
    resonance_frequency: @resonance_frequency,
    resonance_level:     resonance_level,
    sealed:              sealed?,
    porous:              porous?,
    echo_count:          echo_count,
    active_echo_count:   active_echoes.size,
    disruption_count:    @disruption_count,
    created_at:          @created_at
  }
end