Module: Legion::Extensions::Agentic::Integration::Map::Runners::CognitiveMap

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb

Instance Method Summary collapse

Instance Method Details

#add_location(id:, domain: :general, properties: {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 13

def add_location(id:, domain: :general, properties: {}, **)
  result = map_store.add_location(id: id, domain: domain, properties: properties)
  if result
    log.debug("[cognitive_map] add_location id=#{id} domain=#{domain}")
    { success: true, id: id, domain: domain }
  else
    log.warn("[cognitive_map] add_location failed: capacity or duplicate id=#{id}")
    { success: false, id: id, reason: :capacity_or_duplicate }
  end
end

#cognitive_map_statsObject



78
79
80
81
82
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 78

def cognitive_map_stats(**)
  stats = map_store.to_h
  log.debug("[cognitive_map] stats context=#{stats[:context]} locations=#{stats[:location_count]}")
  { success: true }.merge(stats)
end

#connect_locations(from:, to:, distance: Helpers::Constants::DEFAULT_DISTANCE, bidirectional: true) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 24

def connect_locations(from:, to:, distance: Helpers::Constants::DEFAULT_DISTANCE,
                      bidirectional: true, **)
  result = map_store.connect(from: from, to: to, distance: distance, bidirectional: bidirectional)
  if result
    log.debug("[cognitive_map] connect from=#{from} to=#{to} distance=#{distance}")
    { success: true, from: from, to: to, distance: distance, bidirectional: bidirectional }
  else
    log.warn("[cognitive_map] connect failed: missing location from=#{from} to=#{to}")
    { success: false, from: from, to: to, reason: :missing_location }
  end
end

#explore_neighborhood(id:, max_distance: 3.0) ⇒ Object



48
49
50
51
52
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 48

def explore_neighborhood(id:, max_distance: 3.0, **)
  reachable = map_store.reachable_from(id: id, max_distance: max_distance)
  log.debug("[cognitive_map] explore id=#{id} max_distance=#{max_distance} found=#{reachable.size}")
  { success: true, id: id, reachable: reachable, count: reachable.size }
end

#familiar_locations(limit: 10) ⇒ Object



60
61
62
63
64
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 60

def familiar_locations(limit: 10, **)
  locations = map_store.most_familiar(limit: limit)
  log.debug("[cognitive_map] familiar_locations count=#{locations.size}")
  { success: true, locations: locations, count: locations.size }
end

#find_path(from:, to:) ⇒ Object



42
43
44
45
46
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 42

def find_path(from:, to:, **)
  result = map_store.shortest_path(from: from, to: to)
  log.debug("[cognitive_map] find_path from=#{from} to=#{to} found=#{result[:found]}")
  result.merge(success: result[:found])
end

#map_clustersObject



54
55
56
57
58
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 54

def map_clusters(**)
  components = map_store.clusters
  log.debug("[cognitive_map] clusters count=#{components.size}")
  { success: true, clusters: components, count: components.size }
end

#switch_context(context_id:) ⇒ Object



66
67
68
69
70
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 66

def switch_context(context_id:, **)
  result = map_store.context_switch(context_id: context_id)
  log.info("[cognitive_map] context_switch context_id=#{context_id} switched=#{result[:switched]}")
  result.merge(success: result[:switched])
end

#update_cognitive_mapObject



72
73
74
75
76
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 72

def update_cognitive_map(**)
  result = map_store.decay_all
  log.debug("[cognitive_map] decay_cycle decayed=#{result[:decayed]} pruned=#{result[:pruned]}")
  { success: true, decayed: result[:decayed], pruned: result[:pruned] }
end

#visit_location(id:) ⇒ Object



36
37
38
39
40
# File 'lib/legion/extensions/agentic/integration/map/runners/cognitive_map.rb', line 36

def visit_location(id:, **)
  result = map_store.visit(id: id)
  log.debug("[cognitive_map] visit id=#{id} found=#{result[:found]}")
  result.merge(success: result[:found])
end