Module: Legion::Extensions::Agentic::Self::RelationshipArc::Runners::RelationshipArc

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/self/relationship_arc/runners/relationship_arc.rb

Instance Method Summary collapse

Instance Method Details

#arc_stats(agent_id:) ⇒ Object



39
40
41
42
# File 'lib/legion/extensions/agentic/self/relationship_arc/runners/relationship_arc.rb', line 39

def arc_stats(agent_id:, **)
  engine = arc_engine_for(agent_id)
  engine.to_h
end

#record_milestone(agent_id:, type:, description:, significance:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/agentic/self/relationship_arc/runners/relationship_arc.rb', line 13

def record_milestone(agent_id:, type:, description:, significance:, **)
  unless Helpers::Constants::MILESTONE_TYPES.include?(type.to_sym)
    return { success: false,
             error:   "unknown type: #{type}" }
  end

  engine = arc_engine_for(agent_id)
  ms = engine.add_milestone(type: type, description: description, significance: significance)

  stamp_narrative_episode(ms)

  { success: true, milestone: ms.to_h }
rescue StandardError => e
  { success: false, error: e.message }
end

#update_arc(agent_id:, attachment_state: {}) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/legion/extensions/agentic/self/relationship_arc/runners/relationship_arc.rb', line 29

def update_arc(agent_id:, attachment_state: {}, **)
  engine = arc_engine_for(agent_id)
  engine.update_chapter!(bond_stage: attachment_state[:bond_stage] || :initial)

  { success: true, current_chapter: engine.current_chapter,
    milestone_count: engine.milestones.size }
rescue StandardError => e
  { success: false, error: e.message }
end