Module: Legion::Extensions::Agentic::Social::JointAttention::Runners::JointAttention
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb
Instance Method Summary collapse
- #attention_targets_for(agent_id:) ⇒ Object
- #create_attention_target(name:, domain:, creator:, priority: 0.5) ⇒ Object
- #direct_attention(from_agent:, to_agent:, target_id:) ⇒ Object
- #establish_mutual_awareness(target_id:, agent_a:, agent_b:) ⇒ Object
- #join_attention(target_id:, agent_id:, gaze: nil) ⇒ Object
- #joint_attention_stats ⇒ Object
- #leave_attention(target_id:, agent_id:) ⇒ Object
- #shared_focus(agent_a:, agent_b:) ⇒ Object
- #update_gaze(target_id:, agent_id:, gaze:) ⇒ Object
- #update_joint_attention ⇒ Object
Instance Method Details
#attention_targets_for(agent_id:) ⇒ Object
58 59 60 61 62 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 58 def attention_targets_for(agent_id:, **) targets = joint_focus_manager.targets_for_agent(agent_id: agent_id) log.debug "[joint_attention] targets_for: agent_id=#{agent_id} count=#{targets.size}" { success: true, agent_id: agent_id, targets: targets.map(&:to_h), count: targets.size } end |
#create_attention_target(name:, domain:, creator:, priority: 0.5) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 13 def create_attention_target(name:, domain:, creator:, priority: 0.5, **) target = joint_focus_manager.create_target(name: name, domain: domain, priority: priority, creator: creator) log.debug "[joint_attention] create_target: name=#{name} domain=#{domain} priority=#{priority} " \ "creator=#{creator} id=#{target.id}" { success: true, target: target.to_h } end |
#direct_attention(from_agent:, to_agent:, target_id:) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 32 def direct_attention(from_agent:, to_agent:, target_id:, **) result = joint_focus_manager.direct_attention(from_agent: from_agent, to_agent: to_agent, target_id: target_id) log.debug "[joint_attention] direct: from=#{from_agent} to=#{to_agent} target_id=#{target_id} result=#{result}" { success: %i[directed already_attending].include?(result), result: result, target_id: target_id, from_agent: from_agent, to_agent: to_agent } end |
#establish_mutual_awareness(target_id:, agent_a:, agent_b:) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 39 def establish_mutual_awareness(target_id:, agent_a:, agent_b:, **) result = joint_focus_manager.establish_shared(target_id: target_id, agent_a: agent_a, agent_b: agent_b) log.debug "[joint_attention] mutual_awareness: target_id=#{target_id} " \ "agent_a=#{agent_a} agent_b=#{agent_b} result=#{result}" { success: result == :established, result: result, target_id: target_id, agent_a: agent_a, agent_b: agent_b } end |
#join_attention(target_id:, agent_id:, gaze: nil) ⇒ Object
20 21 22 23 24 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 20 def join_attention(target_id:, agent_id:, gaze: nil, **) result = joint_focus_manager.join_target(target_id: target_id, agent_id: agent_id, gaze: gaze) log.debug "[joint_attention] join: target_id=#{target_id} agent_id=#{agent_id} gaze=#{gaze} result=#{result}" { success: %i[joined already_attending].include?(result), result: result, target_id: target_id, agent_id: agent_id } end |
#joint_attention_stats ⇒ Object
71 72 73 74 75 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 71 def joint_attention_stats(**) stats = joint_focus_manager.to_h log.debug "[joint_attention] stats: targets=#{stats[:target_count]} agents=#{stats[:agent_count]}" { success: true, stats: stats } end |
#leave_attention(target_id:, agent_id:) ⇒ Object
26 27 28 29 30 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 26 def leave_attention(target_id:, agent_id:, **) result = joint_focus_manager.leave_target(target_id: target_id, agent_id: agent_id) log.debug "[joint_attention] leave: target_id=#{target_id} agent_id=#{agent_id} result=#{result}" { success: result == :removed, result: result, target_id: target_id, agent_id: agent_id } end |
#shared_focus(agent_a:, agent_b:) ⇒ Object
52 53 54 55 56 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 52 def shared_focus(agent_a:, agent_b:, **) targets = joint_focus_manager.shared_targets(agent_a: agent_a, agent_b: agent_b) log.debug "[joint_attention] shared_focus: agent_a=#{agent_a} agent_b=#{agent_b} count=#{targets.size}" { success: true, agent_a: agent_a, agent_b: agent_b, shared_targets: targets.map(&:to_h), count: targets.size } end |
#update_gaze(target_id:, agent_id:, gaze:) ⇒ Object
46 47 48 49 50 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 46 def update_gaze(target_id:, agent_id:, gaze:, **) result = joint_focus_manager.update_gaze(target_id: target_id, agent_id: agent_id, gaze: gaze) log.debug "[joint_attention] update_gaze: target_id=#{target_id} agent_id=#{agent_id} gaze=#{gaze} result=#{result}" { success: result == :updated, result: result, target_id: target_id, agent_id: agent_id, gaze: gaze } end |
#update_joint_attention ⇒ Object
64 65 66 67 68 69 |
# File 'lib/legion/extensions/agentic/social/joint_attention/runners/joint_attention.rb', line 64 def update_joint_attention(**) joint_focus_manager.decay_all stats = joint_focus_manager.to_h log.debug "[joint_attention] decay_tick: targets=#{stats[:target_count]} agents=#{stats[:agent_count]}" { success: true, targets: stats[:target_count], agents: stats[:agent_count], history: stats[:history_size] } end |