Class: Legion::Extensions::Agentic::Affect::Resonance::Helpers::ResonanceEngine
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Affect::Resonance::Helpers::ResonanceEngine
- Defined in:
- lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb
Instance Attribute Summary collapse
-
#vigilance ⇒ Object
readonly
Returns the value of attribute vigilance.
Instance Method Summary collapse
- #adjust_vigilance(amount:) ⇒ Object
- #best_match(input) ⇒ Object
- #category_count ⇒ Object
-
#initialize(vigilance: Constants::DEFAULT_VIGILANCE) ⇒ ResonanceEngine
constructor
A new instance of ResonanceEngine.
- #present_input(input:) ⇒ Object
- #resonance_report ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(vigilance: Constants::DEFAULT_VIGILANCE) ⇒ ResonanceEngine
Returns a new instance of ResonanceEngine.
12 13 14 15 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 12 def initialize(vigilance: Constants::DEFAULT_VIGILANCE) @vigilance = vigilance.clamp(0.0, 1.0) @categories = {} end |
Instance Attribute Details
#vigilance ⇒ Object (readonly)
Returns the value of attribute vigilance.
10 11 12 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 10 def vigilance @vigilance end |
Instance Method Details
#adjust_vigilance(amount:) ⇒ Object
44 45 46 47 48 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 44 def adjust_vigilance(amount:) @vigilance = (@vigilance + amount).clamp(0.0, 1.0) Legion::Logging.debug("[cognitive_resonance] vigilance adjusted to #{@vigilance.round(3)}") # rubocop:disable Legion/HelperMigration/DirectLogging @vigilance end |
#best_match(input) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 28 def best_match(input) return nil if @categories.empty? normalized = input.map { |v| v.to_f.clamp(0.0, 1.0) } best = nil @categories.each_value do |category| quality = category.match_quality(input: normalized) next unless best.nil? || quality > best[:quality] best = { id: category.id, quality: quality } end best end |
#category_count ⇒ Object
50 51 52 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 50 def category_count @categories.size end |
#present_input(input:) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 17 def present_input(input:) normalized = input.map { |v| v.to_f.clamp(0.0, 1.0) } match = best_match(normalized) if match && match[:quality] >= @vigilance resonate_with(match, normalized) else create_category(normalized, prior_match: match) end end |
#resonance_report ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 54 def resonance_report vigilance_lbl = Constants.vigilance_label(@vigilance) { category_count: @categories.size, vigilance: @vigilance, vigilance_label: vigilance_lbl, categories: @categories.values.map(&:to_h) } end |
#to_h ⇒ Object
64 65 66 67 68 69 |
# File 'lib/legion/extensions/agentic/affect/resonance/helpers/resonance_engine.rb', line 64 def to_h { vigilance: @vigilance, category_count: @categories.size } end |