Module: Legion::Extensions::Agentic::Affect::Reappraisal::Runners::CognitiveReappraisal
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb
Instance Method Summary collapse
- #auto_reappraise_event(event_id:, engine: nil) ⇒ Object
- #intense_events(engine: nil) ⇒ Object
- #most_regulated_events(limit: 5, engine: nil) ⇒ Object
- #negative_events(engine: nil) ⇒ Object
- #reappraisal_report(engine: nil) ⇒ Object
- #reappraisal_status(engine: nil) ⇒ Object
- #reappraise_event(event_id:, strategy:, new_appraisal:, engine: nil) ⇒ Object
- #register_event(content:, valence:, intensity:, appraisal:, engine: nil) ⇒ Object
- #regulate_pending_events(engine: nil) ⇒ Object
Instance Method Details
#auto_reappraise_event(event_id:, engine: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 49 def auto_reappraise_event(event_id:, engine: nil, **) eng = engine || reappraisal_engine event = eng.events[event_id] return { success: false, reason: :event_not_found } unless event strategy = select_strategy_for(event) appraisal = llm_appraisal_for(event, strategy) || Helpers::ReappraisalEngine.mechanical_appraisal(strategy, event.current_valence) result = eng.reappraise(event_id: event_id, strategy: strategy, new_appraisal: appraisal) if result[:success] log.info("[cognitive_reappraisal] auto-reappraised event=#{event_id[0..7]} " \ "strategy=#{strategy}") else log.debug("[cognitive_reappraisal] auto-reappraisal failed: #{result[:reason]}") end result end |
#intense_events(engine: nil) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 76 def intense_events(engine: nil, **) eng = engine || reappraisal_engine events = eng.intense_events log.debug("[cognitive_reappraisal] intense events count=#{events.size}") { events: events.map(&:to_h), count: events.size } end |
#most_regulated_events(limit: 5, engine: nil) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 83 def most_regulated_events(limit: 5, engine: nil, **) eng = engine || reappraisal_engine events = eng.most_regulated(limit: limit) log.debug("[cognitive_reappraisal] most regulated count=#{events.size}") { events: events.map(&:to_h), count: events.size } end |
#negative_events(engine: nil) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 69 def negative_events(engine: nil, **) eng = engine || reappraisal_engine events = eng.negative_events log.debug("[cognitive_reappraisal] negative events count=#{events.size}") { events: events.map(&:to_h), count: events.size } end |
#reappraisal_report(engine: nil) ⇒ Object
102 103 104 105 106 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 102 def reappraisal_report(engine: nil, **) eng = engine || reappraisal_engine log.debug('[cognitive_reappraisal] generating report') { success: true, report: eng.reappraisal_report } end |
#reappraisal_status(engine: nil) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 90 def reappraisal_status(engine: nil, **) eng = engine || reappraisal_engine log.debug("[cognitive_reappraisal] status: overall=#{eng.overall_regulation_ability.round(2)}") { overall_regulation_ability: eng.overall_regulation_ability, average_regulation: eng.average_regulation, total_events: eng.events.size, total_reappraisals: eng.reappraisal_log.size, strategy_effectiveness: eng.strategy_effectiveness } end |
#reappraise_event(event_id:, strategy:, new_appraisal:, engine: nil) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 30 def reappraise_event(event_id:, strategy:, new_appraisal:, engine: nil, **) unless Helpers::Constants.valid_strategy?(strategy) return { success: false, reason: :invalid_strategy, valid_strategies: Helpers::Constants::STRATEGIES } end eng = engine || reappraisal_engine appraisal = llm_appraisal_for(eng.events[event_id], strategy) || new_appraisal result = eng.reappraise(event_id: event_id, strategy: strategy, new_appraisal: appraisal) if result[:success] log.info("[cognitive_reappraisal] reappraised event=#{event_id[0..7]} " \ "strategy=#{strategy} change=#{result[:change].round(2)}") else log.debug("[cognitive_reappraisal] reappraisal failed event=#{event_id[0..7]} reason=#{result[:reason]}") end result end |
#register_event(content:, valence:, intensity:, appraisal:, engine: nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 13 def register_event(content:, valence:, intensity:, appraisal:, engine: nil, **) eng = engine || reappraisal_engine event = eng.register_event(content: content, valence: valence, intensity: intensity, appraisal: appraisal) log.debug("[cognitive_reappraisal] registered event id=#{event.id[0..7]} " \ "valence=#{event.initial_valence.round(2)} intensity=#{event.initial_intensity.round(2)}") { success: true, event_id: event.id, valence: event.initial_valence.round(10), intensity: event.initial_intensity.round(10), negative: event.negative?, intense: event.intense? } end |
#regulate_pending_events(engine: nil) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/legion/extensions/agentic/affect/reappraisal/runners/cognitive_reappraisal.rb', line 108 def regulate_pending_events(engine: nil, **) eng = engine || reappraisal_engine events = eng.events.values checked = events.size regulated = 0 event_ids = [] events.each do |event| next unless event.negative? && event.reappraisal_count.zero? result = eng.auto_reappraise(event_id: event.id) next unless result[:success] regulated += 1 event_ids << event.id end log.debug("[reappraisal] regulate pending: checked=#{checked} regulated=#{regulated}") { checked: checked, regulated: regulated, event_ids: event_ids } end |