Class: Legion::Extensions::Agentic::Integration::Qualia::Helpers::QualiaEngine
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Integration::Qualia::Helpers::QualiaEngine
show all
- Includes:
- Constants
- Defined in:
- lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb
Constant Summary
Constants included
from Constants
Constants::DEFAULT_TEXTURE, Constants::DEFAULT_VALENCE, Constants::DEFAULT_VIVIDNESS, Constants::FAINT_THRESHOLD, Constants::INTENSE_THRESHOLD, Constants::MAX_EXPERIENCES, Constants::MAX_PALETTE_SIZE, Constants::MODALITIES, Constants::PHENOMENAL_QUALITIES, Constants::RICHNESS_LABELS, Constants::TEXTURE_TYPES, Constants::VALENCE_LABELS, Constants::VIVIDNESS_BOOST, Constants::VIVIDNESS_DECAY, Constants::VIVIDNESS_LABELS, Constants::VIVID_THRESHOLD
Instance Method Summary
collapse
Methods included from Constants
label_for
Constructor Details
Returns a new instance of QualiaEngine.
12
13
14
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 12
def initialize
@experiences = {}
end
|
Instance Method Details
#average_valence ⇒ Object
66
67
68
69
70
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 66
def average_valence
return 0.0 if @experiences.empty?
(@experiences.values.sum(&:valence) / @experiences.size).round(10)
end
|
#average_vividness ⇒ Object
60
61
62
63
64
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 60
def average_vividness
return 0.0 if @experiences.empty?
(@experiences.values.sum(&:vividness) / @experiences.size).round(10)
end
|
#by_modality(modality:) ⇒ Object
43
44
45
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 43
def by_modality(modality:)
@experiences.values.select { |q| q.modality == modality.to_sym }
end
|
#by_quality(quality:) ⇒ Object
47
48
49
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 47
def by_quality(quality:)
@experiences.values.select { |q| q.quality == quality.to_sym }
end
|
#by_texture(texture:) ⇒ Object
51
52
53
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 51
def by_texture(texture:)
@experiences.values.select { |q| q.texture == texture.to_sym }
end
|
#create_quale(content:, modality: :abstract, quality: :smooth, texture: :fluid, vividness: DEFAULT_VIVIDNESS, valence: DEFAULT_VALENCE) ⇒ Object
16
17
18
19
20
21
22
23
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 16
def create_quale(content:, modality: :abstract, quality: :smooth, texture: :fluid,
vividness: DEFAULT_VIVIDNESS, valence: DEFAULT_VALENCE)
prune_faint
quale = Quale.new(content: content, modality: modality, quality: quality,
texture: texture, vividness: vividness, valence: valence)
@experiences[quale.id] = quale
quale
end
|
#experiential_diversity ⇒ Object
92
93
94
95
96
97
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 92
def experiential_diversity
return 0.0 if @experiences.empty?
modalities_used = @experiences.values.map(&:modality).uniq.size
(modalities_used.to_f / MODALITIES.size).clamp(0.0, 1.0).round(10)
end
|
#fade_all! ⇒ Object
33
34
35
36
37
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 33
def fade_all!
@experiences.each_value(&:fade!)
prune_faint
{ remaining: @experiences.size }
end
|
#faint_experiences ⇒ Object
40
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 40
def faint_experiences = @experiences.values.select(&:faint?)
|
#intense_experiences ⇒ Object
41
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 41
def intense_experiences = @experiences.values.select(&:intense?)
|
#intensify(quale_id:, amount: VIVIDNESS_BOOST) ⇒ Object
25
26
27
28
29
30
31
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 25
def intensify(quale_id:, amount: VIVIDNESS_BOOST)
quale = @experiences[quale_id]
return nil unless quale
quale.intensify!(amount: amount)
quale
end
|
#modality_distribution ⇒ Object
78
79
80
81
82
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 78
def modality_distribution
MODALITIES.to_h do |mod|
[mod, @experiences.values.count { |q| q.modality == mod }]
end
end
|
#most_vivid(limit: 5) ⇒ Object
58
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 58
def most_vivid(limit: 5) = @experiences.values.sort_by { |q| -q.vividness }.first(limit)
|
#phenomenal_richness ⇒ Object
72
73
74
75
76
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 72
def phenomenal_richness
return 0.0 if @experiences.empty?
(@experiences.values.sum(&:phenomenal_richness) / @experiences.size).round(10)
end
|
#pleasant_experiences ⇒ Object
55
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 55
def pleasant_experiences = @experiences.values.select(&:pleasant?)
|
#qualia_report ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 99
def qualia_report
{
total_experiences: @experiences.size,
vivid_count: vivid_experiences.size,
faint_count: faint_experiences.size,
pleasant_count: pleasant_experiences.size,
unpleasant_count: unpleasant_experiences.size,
average_vividness: average_vividness,
average_valence: average_valence,
phenomenal_richness: phenomenal_richness,
experiential_diversity: experiential_diversity,
richness_label: Constants.label_for(RICHNESS_LABELS, phenomenal_richness),
most_vivid: most_vivid(limit: 3).map(&:to_h)
}
end
|
#quality_palette ⇒ Object
84
85
86
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 84
def quality_palette
@experiences.values.map(&:quality).tally.sort_by { |_, v| -v }.to_h
end
|
#texture_palette ⇒ Object
88
89
90
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 88
def texture_palette
@experiences.values.map(&:texture).tally.sort_by { |_, v| -v }.to_h
end
|
#to_h ⇒ Object
115
116
117
118
119
120
121
122
123
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 115
def to_h
{
total_experiences: @experiences.size,
vivid: vivid_experiences.size,
avg_vividness: average_vividness,
avg_valence: average_valence,
richness: phenomenal_richness
}
end
|
#unpleasant_experiences ⇒ Object
56
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 56
def unpleasant_experiences = @experiences.values.select(&:unpleasant?)
|
#vivid_experiences ⇒ Object
39
|
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 39
def vivid_experiences = @experiences.values.select(&:vivid?)
|