Class: Legion::Extensions::Agentic::Integration::Qualia::Helpers::QualiaEngine

Inherits:
Object
  • Object
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

#initializeQualiaEngine

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_valenceObject



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_vividnessObject



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_diversityObject



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_experiencesObject



40
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 40

def faint_experiences = @experiences.values.select(&:faint?)

#intense_experiencesObject



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_distributionObject



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_richnessObject



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_experiencesObject



55
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 55

def pleasant_experiences = @experiences.values.select(&:pleasant?)

#qualia_reportObject



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_paletteObject



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_paletteObject



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_hObject



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_experiencesObject



56
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 56

def unpleasant_experiences = @experiences.values.select(&:unpleasant?)

#vivid_experiencesObject



39
# File 'lib/legion/extensions/agentic/integration/qualia/helpers/qualia_engine.rb', line 39

def vivid_experiences = @experiences.values.select(&:vivid?)