Class: Legion::Extensions::Agentic::Social::Conflict::Helpers::ConflictLog

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConflictLog

Returns a new instance of ConflictLog.



14
15
16
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 14

def initialize
  @conflicts = {}
end

Instance Attribute Details

#conflictsObject (readonly)

Returns the value of attribute conflicts.



12
13
14
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 12

def conflicts
  @conflicts
end

Instance Method Details

#active_conflictsObject



53
54
55
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 53

def active_conflicts
  @conflicts.values.select { |c| c[:status] == :active }
end

#add_exchange(conflict_id, speaker:, message:) ⇒ Object



35
36
37
38
39
40
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 35

def add_exchange(conflict_id, speaker:, message:)
  conflict = @conflicts[conflict_id]
  return nil unless conflict

  conflict[:exchanges] << { speaker: speaker, message: message, at: Time.now.utc }
end

#countObject



61
62
63
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 61

def count
  @conflicts.size
end

#get(conflict_id) ⇒ Object



57
58
59
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 57

def get(conflict_id)
  @conflicts[conflict_id]
end

#record(parties:, severity:, description:, posture: nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 18

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



42
43
44
45
46
47
48
49
50
51
# File 'lib/legion/extensions/agentic/social/conflict/helpers/conflict_log.rb', line 42

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