Module: Legion::Extensions::Agentic::Inference::CausalAttribution::Runners::CausalAttribution
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb
Instance Method Summary collapse
- #attribution_bias_assessment ⇒ Object
- #attributions_by_pattern(locus: nil, stability: nil, controllability: nil) ⇒ Object
- #causal_attribution_stats ⇒ Object
- #create_causal_attribution(event:, outcome:, domain:, locus:, stability:, controllability:, confidence: nil) ⇒ Object
- #domain_attributions(domain:) ⇒ Object
- #emotional_attribution_profile ⇒ Object
- #most_common_attribution ⇒ Object
- #outcome_attributions(outcome:) ⇒ Object
- #reattribute_cause(attribution_id:, locus: nil, stability: nil, controllability: nil) ⇒ Object
- #update_causal_attribution ⇒ Object
Instance Method Details
#attribution_bias_assessment ⇒ Object
70 71 72 73 74 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 70 def attribution_bias_assessment(**) bias = engine.attribution_bias log.debug "[causal_attribution] bias_assessment self_serving=#{bias[:self_serving_bias_detected]}" { success: true, bias: bias } end |
#attributions_by_pattern(locus: nil, stability: nil, controllability: nil) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 48 def attributions_by_pattern(locus: nil, stability: nil, controllability: nil, **) results = engine.by_pattern( locus: locus&.to_sym, stability: stability&.to_sym, controllability: controllability&.to_sym ) log.debug "[causal_attribution] by_pattern count=#{results.size}" { success: true, attributions: results.map(&:to_h), count: results.size } end |
#causal_attribution_stats ⇒ Object
94 95 96 97 98 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 94 def causal_attribution_stats(**) stats = engine.to_h log.debug "[causal_attribution] stats total=#{stats[:total_attributions]}" { success: true, stats: stats } end |
#create_causal_attribution(event:, outcome:, domain:, locus:, stability:, controllability:, confidence: nil) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 13 def create_causal_attribution(event:, outcome:, domain:, locus:, stability:, controllability:, confidence: nil, **) conf = (confidence || Helpers::Attribution::DEFAULT_CONFIDENCE) .clamp(Helpers::Attribution::CONFIDENCE_FLOOR, Helpers::Attribution::CONFIDENCE_CEILING) attr = engine.create_attribution( event: event, outcome: outcome, domain: domain, locus: locus.to_sym, stability: stability.to_sym, controllability: controllability.to_sym, confidence: conf ) log.info "[causal_attribution] create id=#{attr.id} event=#{event} " \ "outcome=#{outcome} locus=#{locus} emotion=#{attr.emotional_response}" { success: true, attribution: attr.to_h } end |
#domain_attributions(domain:) ⇒ Object
58 59 60 61 62 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 58 def domain_attributions(domain:, **) results = engine.by_domain(domain: domain.to_sym) log.debug "[causal_attribution] by_domain domain=#{domain} count=#{results.size}" { success: true, attributions: results.map(&:to_h), count: results.size } end |
#emotional_attribution_profile ⇒ Object
76 77 78 79 80 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 76 def emotional_attribution_profile(**) profile = engine.emotional_profile log.debug "[causal_attribution] emotional_profile dominant=#{profile[:dominant]} total=#{profile[:total]}" { success: true, profile: profile } end |
#most_common_attribution ⇒ Object
82 83 84 85 86 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 82 def most_common_attribution(**) result = engine.most_common_pattern log.debug "[causal_attribution] most_common pattern=#{result[:pattern].inspect} count=#{result[:count]}" { success: true, pattern: result[:pattern], count: result[:count] } end |
#outcome_attributions(outcome:) ⇒ Object
64 65 66 67 68 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 64 def outcome_attributions(outcome:, **) results = engine.by_outcome(outcome: outcome.to_sym) log.debug "[causal_attribution] by_outcome outcome=#{outcome} count=#{results.size}" { success: true, attributions: results.map(&:to_h), count: results.size } end |
#reattribute_cause(attribution_id:, locus: nil, stability: nil, controllability: nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 31 def reattribute_cause(attribution_id:, locus: nil, stability: nil, controllability: nil, **) result = engine.reattribute( attribution_id: attribution_id, locus: locus&.to_sym, stability: stability&.to_sym, controllability: controllability&.to_sym ) if result.is_a?(Hash) && result[:found] == false log.warn "[causal_attribution] reattribute not_found id=#{attribution_id}" return { success: false, attribution_id: attribution_id, found: false } end log.debug "[causal_attribution] reattribute id=#{attribution_id} " \ "locus=#{result.locus} emotion=#{result.emotional_response}" { success: true, attribution: result.to_h } end |
#update_causal_attribution ⇒ Object
88 89 90 91 92 |
# File 'lib/legion/extensions/agentic/inference/causal_attribution/runners/causal_attribution.rb', line 88 def update_causal_attribution(**) decayed = engine.decay_all log.debug "[causal_attribution] decay cycle entries=#{decayed}" { success: true, decayed: decayed } end |