Class: Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Chamber
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Memory::EchoChamber::Helpers::Chamber
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_at ⇒ Object
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_count ⇒ Object
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
|
#domain ⇒ Object
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
|
#id ⇒ Object
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
|
#label ⇒ Object
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_frequency ⇒ Object
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
|
#state ⇒ Object
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_thickness ⇒ Object
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_echoes ⇒ Object
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_count ⇒ Object
77
78
79
|
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 77
def echo_count
@echoes.size
end
|
#porous? ⇒ 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_level ⇒ Object
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_echoes ⇒ Object
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
65
66
67
|
# File 'lib/legion/extensions/agentic/memory/echo_chamber/helpers/chamber.rb', line 65
def sealed?
@wall_thickness >= SEALED_THRESHOLD
end
|
#to_h ⇒ Object
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
|