Class: Legion::Extensions::Agentic::Social::Conflict::Helpers::ConflictLog
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Social::Conflict::Helpers::ConflictLog
- Defined in:
- lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb
Constant Summary collapse
- MAX_CONFLICTS =
1000- RESOLVED_RETENTION_DAYS =
30
Instance Attribute Summary collapse
-
#conflicts ⇒ Object
readonly
Returns the value of attribute conflicts.
Instance Method Summary collapse
- #active_conflicts ⇒ Object
- #add_exchange(conflict_id, speaker:, message:) ⇒ Object
- #count ⇒ Object
- #evict ⇒ Object
- #get(conflict_id) ⇒ Object
-
#initialize ⇒ ConflictLog
constructor
A new instance of ConflictLog.
- #record(parties:, severity:, description:, posture: nil) ⇒ Object
- #resolve(conflict_id, outcome:, resolution_notes: nil) ⇒ Object
Constructor Details
#initialize ⇒ ConflictLog
Returns a new instance of ConflictLog.
17 18 19 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 17 def initialize @conflicts = {} end |
Instance Attribute Details
#conflicts ⇒ Object (readonly)
Returns the value of attribute conflicts.
15 16 17 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 15 def conflicts @conflicts end |
Instance Method Details
#active_conflicts ⇒ Object
56 57 58 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 56 def active_conflicts @conflicts.values.select { |c| c[:status] == :active } end |
#add_exchange(conflict_id, speaker:, message:) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 38 def add_exchange(conflict_id, speaker:, message:) conflict = @conflicts[conflict_id] return nil unless conflict conflict[:exchanges] << { speaker: speaker, message: , at: Time.now.utc } end |
#count ⇒ Object
64 65 66 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 64 def count @conflicts.size end |
#evict ⇒ Object
68 69 70 71 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 68 def evict evict_expired_resolved evict_overflow end |
#get(conflict_id) ⇒ Object
60 61 62 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 60 def get(conflict_id) @conflicts[conflict_id] end |
#record(parties:, severity:, description:, posture: nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 21 def record(parties:, severity:, description:, posture: nil) id = SecureRandom.uuid @conflicts[id] = { conflict_id: id, parties: parties, severity: severity, posture: posture || Severity.recommended_posture(severity), description: description, status: :active, outcome: nil, created_at: Time.now.utc, resolved_at: nil, exchanges: [] } id end |
#resolve(conflict_id, outcome:, resolution_notes: nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 45 def resolve(conflict_id, outcome:, resolution_notes: nil) conflict = @conflicts[conflict_id] return nil unless conflict conflict[:status] = :resolved conflict[:outcome] = outcome conflict[:resolution_notes] = resolution_notes conflict[:resolved_at] = Time.now.utc conflict end |