Module: Legion::Extensions::Agentic::Affect::Fatigue::Runners::Fatigue
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb
Instance Method Summary collapse
- #energy_forecast(ticks: 50) ⇒ Object
- #energy_status ⇒ Object
- #enter_rest(mode: :full_rest) ⇒ Object
- #exit_rest ⇒ Object
- #fatigue_stats ⇒ Object
- #update_fatigue(tick_results: {}) ⇒ Object
Instance Method Details
#energy_forecast(ticks: 50) ⇒ Object
60 61 62 63 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 60 def energy_forecast(ticks: 50, **) log.debug("[fatigue] forecasting #{ticks} ticks") fatigue_store.energy_forecast(ticks: ticks) end |
#energy_status ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 30 def energy_status(**) model = fatigue_store.model log.debug("[fatigue] status: energy=#{model.energy.round(3)} level=#{model.fatigue_level}") { energy: model.energy.round(4), fatigue_level: model.fatigue_level, performance_factor: model.performance_factor, needs_rest: model.needs_rest?, critically_fatigued: model.critically_fatigued?, burnout: model.burnout?, recovery_mode: model.recovery_mode, trend: model.trend } end |
#enter_rest(mode: :full_rest) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 46 def enter_rest(mode: :full_rest, **) return { success: false, error: "unknown recovery mode: #{mode}" } unless Helpers::Constants::RECOVERY_MODES.include?(mode) fatigue_store.model.enter_recovery(mode) log.info("[fatigue] entered recovery mode=#{mode}") { success: true, mode: mode, energy: fatigue_store.model.energy.round(4) } end |
#exit_rest ⇒ Object
54 55 56 57 58 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 54 def exit_rest(**) fatigue_store.model.exit_recovery log.info('[fatigue] exited recovery mode') { success: true, energy: fatigue_store.model.energy.round(4), fatigue_level: fatigue_store.model.fatigue_level } end |
#fatigue_stats ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 65 def fatigue_stats(**) stats = fatigue_store.session_stats model = fatigue_store.model log.debug("[fatigue] stats: ticks=#{stats[:total_ticks]} burnout=#{stats[:burnout]}") { session: stats, history: model.history.last(10), trend: model.trend, schedule: fatigue_store.optimal_rest_schedule } end |
#update_fatigue(tick_results: {}) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/legion/extensions/agentic/affect/fatigue/runners/fatigue.rb', line 13 def update_fatigue(tick_results: {}, **) result = fatigue_store.update(tick_results: tick_results) recommendation = fatigue_store.recommend_action log.debug("[fatigue] tick: energy=#{result[:energy]} level=#{result[:fatigue_level]} " \ "perf=#{result[:performance_factor]} rec=#{recommendation}") { energy: result[:energy], fatigue_level: result[:fatigue_level], performance_factor: result[:performance_factor], recommendation: recommendation, needs_rest: result[:needs_rest], burnout: result[:burnout] } end |