Module: Legion::Extensions::Agentic::Homeostasis::Neuromodulation::Runners::Neuromodulation
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb
Instance Method Summary collapse
- #all_modulator_levels ⇒ Object
- #boost_modulator(name:, amount:, reason: nil) ⇒ Object
- #cognitive_influence ⇒ Object
-
#is_optimal(name:) ⇒ Object
rubocop:disable Naming/PredicatePrefix.
- #modulator_history(name:, limit: 20) ⇒ Object
- #modulator_level(name:) ⇒ Object
- #neuromodulation_stats ⇒ Object
- #suppress_modulator(name:, amount:, reason: nil) ⇒ Object
- #system_balance ⇒ Object
- #update_neuromodulation ⇒ Object
Instance Method Details
#all_modulator_levels ⇒ Object
54 55 56 57 58 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 54 def all_modulator_levels(**) levels = neuromod_system.all_levels log.debug("[neuromodulation] all levels: #{levels.map { |k, v| "#{k}=#{v.round(3)}" }.join(' ')}") { success: true, levels: levels.transform_values { |v| v.round(4) } } end |
#boost_modulator(name:, amount:, reason: nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 13 def boost_modulator(name:, amount:, reason: nil, **) mod_name = name.to_sym return { success: false, error: "Unknown modulator: #{name}" } unless Helpers::Constants::MODULATORS.include?(mod_name) new_level = neuromod_system.boost(mod_name, amount.to_f, reason: reason) log.debug("[neuromodulation] boost #{mod_name} by #{amount} -> #{new_level.round(4)}") { success: true, modulator: mod_name, level: new_level.round(4), state: neuromod_system.modulators[mod_name].state_label } end |
#cognitive_influence ⇒ Object
60 61 62 63 64 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 60 def cognitive_influence(**) influences = neuromod_system.composite_influences log.debug('[neuromodulation] cognitive influence snapshot') { success: true, influences: influences } end |
#is_optimal(name:) ⇒ Object
rubocop:disable Naming/PredicatePrefix
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 66 def is_optimal(name:, **) # rubocop:disable Naming/PredicatePrefix mod_name = name.to_sym return { success: false, error: "Unknown modulator: #{name}" } unless Helpers::Constants::MODULATORS.include?(mod_name) optimal = neuromod_system.modulators[mod_name].optimal? { success: true, modulator: mod_name, optimal: optimal, level: neuromod_system.level(mod_name).round(4), range: Helpers::Constants::OPTIMAL_RANGES[mod_name].to_s } end |
#modulator_history(name:, limit: 20) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 101 def modulator_history(name:, limit: 20, **) mod_name = name.to_sym return { success: false, error: "Unknown modulator: #{name}" } unless Helpers::Constants::MODULATORS.include?(mod_name) events = neuromod_system.modulators[mod_name].events.last(limit.to_i) { success: true, modulator: mod_name, events: events, count: events.size } end |
#modulator_level(name:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 41 def modulator_level(name:, **) mod_name = name.to_sym return { success: false, error: "Unknown modulator: #{name}" } unless Helpers::Constants::MODULATORS.include?(mod_name) level = neuromod_system.level(mod_name) { success: true, modulator: mod_name, level: level.round(4), state: neuromod_system.modulators[mod_name].state_label } end |
#neuromodulation_stats ⇒ Object
125 126 127 128 129 130 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 125 def neuromodulation_stats(**) { success: true, system: neuromod_system.to_h } end |
#suppress_modulator(name:, amount:, reason: nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 27 def suppress_modulator(name:, amount:, reason: nil, **) mod_name = name.to_sym return { success: false, error: "Unknown modulator: #{name}" } unless Helpers::Constants::MODULATORS.include?(mod_name) new_level = neuromod_system.suppress(mod_name, amount.to_f, reason: reason) log.debug("[neuromodulation] suppress #{mod_name} by #{amount} -> #{new_level.round(4)}") { success: true, modulator: mod_name, level: new_level.round(4), state: neuromod_system.modulators[mod_name].state_label } end |
#system_balance ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 80 def system_balance(**) score = neuromod_system.balance_score states = neuromod_system.modulators.transform_values(&:state_label) status = if score >= 1.0 :fully_balanced elsif score >= 0.75 :mostly_balanced elsif score >= 0.5 :partially_balanced else :imbalanced end log.debug("[neuromodulation] system balance: #{score.round(2)} status=#{status}") { success: true, score: score.round(4), status: status, states: states } end |
#update_neuromodulation ⇒ Object
114 115 116 117 118 119 120 121 122 123 |
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/runners/neuromodulation.rb', line 114 def update_neuromodulation(**) neuromod_system.tick levels = neuromod_system.all_levels log.debug('[neuromodulation] drift tick completed') { success: true, action: :drift_tick, levels: levels.transform_values { |v| v.round(4) } } end |