Module: Legion::Extensions::Agentic::Homeostasis::Weather::Runners::CognitiveWeather
- Extended by:
- CognitiveWeather
- Includes:
- Helpers::Lex
- Included in:
- Client, CognitiveWeather
- Defined in:
- lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb
Instance Method Summary collapse
- #brew_storm(front_id:, condition: :stormy, intensity: 0.5, coverage: 0.5, engine: nil) ⇒ Object
- #create_front(front_type: :warm, domain: 'default', pressure: 0.5, temperature: 0.5, humidity: 0.5, engine: nil) ⇒ Object
- #forecast(engine: nil) ⇒ Object
- #intensify(storm_id:, rate: Helpers::Constants::PRESSURE_CHANGE_RATE, engine: nil) ⇒ Object
- #list_fronts(engine: nil) ⇒ Object
- #weather_status(engine: nil) ⇒ Object
Instance Method Details
#brew_storm(front_id:, condition: :stormy, intensity: 0.5, coverage: 0.5, engine: nil) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 38 def brew_storm(front_id:, condition: :stormy, intensity: 0.5, coverage: 0.5, engine: nil, **) eng = engine || weather_engine storm = eng.brew_storm( front_id: front_id.to_s, condition: condition.to_sym, intensity: intensity.to_f, coverage: coverage.to_f ) if storm log.debug("[cognitive_weather] storm brewed: condition=#{condition} " \ "intensity=#{intensity} front=#{front_id}") { success: true, storm: storm.to_h } else log.warn('[cognitive_weather] brew_storm: front not found or MAX_STORMS reached') { success: false, reason: :brew_failed } end rescue ArgumentError => e log.error("[cognitive_weather] brew_storm failed: #{e.}") { success: false, error: e. } end |
#create_front(front_type: :warm, domain: 'default', pressure: 0.5, temperature: 0.5, humidity: 0.5, engine: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 15 def create_front(front_type: :warm, domain: 'default', pressure: 0.5, temperature: 0.5, humidity: 0.5, engine: nil, **) eng = engine || weather_engine front = eng.create_front( front_type: front_type.to_sym, domain: domain, pressure: pressure.to_f, temperature: temperature.to_f, humidity: humidity.to_f ) if front log.debug("[cognitive_weather] front created: type=#{front_type} " \ "domain=#{domain} pressure=#{pressure}") { success: true, front: front.to_h } else log.warn('[cognitive_weather] create_front: MAX_FRONTS reached') { success: false, reason: :max_fronts_reached } end rescue ArgumentError => e log.error("[cognitive_weather] create_front failed: #{e.}") { success: false, error: e. } end |
#forecast(engine: nil) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 75 def forecast(engine: nil, **) eng = engine || weather_engine forecast = eng.weather_forecast log.debug("[cognitive_weather] forecast: condition=#{forecast[:condition]} " \ "avg_intensity=#{forecast[:avg_intensity]&.round(3)} " \ "storms=#{forecast[:active_storms]}") forecast.merge(success: true) rescue ArgumentError => e log.error("[cognitive_weather] forecast failed: #{e.}") { success: false, error: e. } end |
#intensify(storm_id:, rate: Helpers::Constants::PRESSURE_CHANGE_RATE, engine: nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 59 def intensify(storm_id:, rate: Helpers::Constants::PRESSURE_CHANGE_RATE, engine: nil, **) eng = engine || weather_engine storm = eng.intensify_storm(storm_id: storm_id.to_s, rate: rate.to_f) if storm log.debug("[cognitive_weather] storm intensified: id=#{storm_id} " \ "intensity=#{storm.intensity.round(3)} raging=#{storm.raging?}") { success: true, storm: storm.to_h } else log.warn("[cognitive_weather] intensify: storm #{storm_id} not found") { success: false, reason: :storm_not_found } end rescue ArgumentError => e log.error("[cognitive_weather] intensify failed: #{e.}") { success: false, error: e. } end |
#list_fronts(engine: nil) ⇒ Object
87 88 89 90 91 92 93 94 95 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 87 def list_fronts(engine: nil, **) eng = engine || weather_engine fronts = eng.fronts.map(&:to_h) log.debug("[cognitive_weather] list_fronts: count=#{fronts.size}") { success: true, fronts: fronts, count: fronts.size } rescue ArgumentError => e log.error("[cognitive_weather] list_fronts failed: #{e.}") { success: false, error: e. } end |
#weather_status(engine: nil) ⇒ Object
97 98 99 100 101 102 103 104 105 106 |
# File 'lib/legion/extensions/agentic/homeostasis/weather/runners/cognitive_weather.rb', line 97 def weather_status(engine: nil, **) eng = engine || weather_engine report = eng.atmospheric_report log.debug("[cognitive_weather] weather_status: fronts=#{report[:front_count]} " \ "storms=#{report[:storm_count]}") report.merge(success: true) rescue ArgumentError => e log.error("[cognitive_weather] weather_status failed: #{e.}") { success: false, error: e. } end |