Module: Legion::Extensions::Agentic::Homeostasis::Tide::Runners::CognitiveTide
- Extended by:
- CognitiveTide
- Includes:
- Helpers::Lex
- Included in:
- Client, CognitiveTide
- Defined in:
- lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb
Instance Method Summary collapse
- #add_oscillator(oscillator_type: :primary, period: 86_400, amplitude: 1.0, phase_offset: 0.0, engine: nil) ⇒ Object
- #check_tide(engine: nil) ⇒ Object
- #deposit_idea(domain:, idea:, capacity: 20, tide_threshold: nil, engine: nil) ⇒ Object
- #harvest(min_depth: 0.0, engine: nil) ⇒ Object
- #tide_forecast(duration: 86_400, engine: nil) ⇒ Object
- #tide_maintenance(engine: nil) ⇒ Object
- #tide_status(engine: nil) ⇒ Object
Instance Method Details
#add_oscillator(oscillator_type: :primary, period: 86_400, amplitude: 1.0, phase_offset: 0.0, engine: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 15 def add_oscillator(oscillator_type: :primary, period: 86_400, amplitude: 1.0, phase_offset: 0.0, engine: nil, **) eng = engine || tide_engine osc = eng.add_oscillator( oscillator_type: oscillator_type.to_sym, period: period, amplitude: amplitude, phase_offset: phase_offset ) log.debug("[cognitive_tide] oscillator added: type=#{oscillator_type} " \ "period=#{period} amplitude=#{amplitude}") { success: true, oscillator: osc.to_h } rescue ArgumentError => e log.error("[cognitive_tide] add_oscillator failed: #{e.}") { success: false, error: e. } end |
#check_tide(engine: nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 32 def check_tide(engine: nil, **) eng = engine || tide_engine level = eng.composite_tide_level phase = eng.current_phase label = Helpers::Constants::TIDE_LABELS.find { |tl| tl[:range].cover?(level) }&.fetch(:label, 'ebb') log.debug("[cognitive_tide] check_tide: level=#{level.round(3)} phase=#{phase} label=#{label}") { success: true, level: level, phase: phase, label: label } rescue ArgumentError => e log.error("[cognitive_tide] check_tide failed: #{e.}") { success: false, error: e. } end |
#deposit_idea(domain:, idea:, capacity: 20, tide_threshold: nil, engine: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 49 def deposit_idea(domain:, idea:, capacity: 20, tide_threshold: nil, engine: nil, **) eng = engine || tide_engine if tide_threshold level = eng.composite_tide_level if level > tide_threshold log.debug("[cognitive_tide] deposit_idea skipped: tide=#{level.round(3)} above threshold=#{tide_threshold}") return { success: false, reason: :tide_too_high, level: level } end end deposited = eng.deposit_to_pool(domain: domain, item: idea, capacity: capacity) log.debug("[cognitive_tide] deposit_idea: domain=#{domain} deposited=#{deposited}") { success: deposited, domain: domain } rescue ArgumentError => e log.error("[cognitive_tide] deposit_idea failed: #{e.}") { success: false, error: e. } end |
#harvest(min_depth: 0.0, engine: nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 68 def harvest(min_depth: 0.0, engine: nil, **) eng = engine || tide_engine result = eng.harvest_pools(min_depth: min_depth.to_f) total = result.values.sum(&:size) log.debug("[cognitive_tide] harvest: domains=#{result.keys.size} total_items=#{total}") { success: true, harvested: result, total_items: total } rescue ArgumentError => e log.error("[cognitive_tide] harvest failed: #{e.}") { success: false, error: e. } end |
#tide_forecast(duration: 86_400, engine: nil) ⇒ Object
79 80 81 82 83 84 85 86 87 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 79 def tide_forecast(duration: 86_400, engine: nil, **) eng = engine || tide_engine forecast = eng.tide_forecast(duration) log.debug("[cognitive_tide] tide_forecast: duration=#{duration} steps=#{forecast.size}") { success: true, forecast: forecast, duration: duration } rescue ArgumentError => e log.error("[cognitive_tide] tide_forecast failed: #{e.}") { success: false, error: e. } end |
#tide_maintenance(engine: nil) ⇒ Object
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 100 def tide_maintenance(engine: nil, **) eng = engine || tide_engine eng.evaporate_all! eng.oscillators.each(&:tick!) pools_maintained = eng.pools.size phase = eng.current_phase level = eng.composite_tide_level log.debug("[tide] maintenance: pools=#{pools_maintained} phase=#{phase} level=#{level}") { pools_maintained: pools_maintained, current_phase: phase, tide_level: level } end |
#tide_status(engine: nil) ⇒ Object
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/legion/extensions/agentic/homeostasis/tide/runners/cognitive_tide.rb', line 89 def tide_status(engine: nil, **) eng = engine || tide_engine report = eng.tide_report log.debug("[cognitive_tide] tide_status: level=#{report[:level].round(3)} " \ "phase=#{report[:phase]} pools=#{report[:pool_count]}") report.merge(success: true) rescue ArgumentError => e log.error("[cognitive_tide] tide_status failed: #{e.}") { success: false, error: e. } end |