lex-agentic-memory 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lex-agentic-memory.gemspec +1 -0
  4. data/lib/legion/extensions/agentic/memory/archaeology/actors/decay.rb +1 -1
  5. data/lib/legion/extensions/agentic/memory/compression/actors/maintenance.rb +1 -1
  6. data/lib/legion/extensions/agentic/memory/echo/actors/decay.rb +1 -1
  7. data/lib/legion/extensions/agentic/memory/echo_chamber/actors/decay.rb +1 -1
  8. data/lib/legion/extensions/agentic/memory/echo_chamber/runners/cognitive_echo_chamber.rb +4 -4
  9. data/lib/legion/extensions/agentic/memory/episodic/runners/episodic_buffer.rb +11 -11
  10. data/lib/legion/extensions/agentic/memory/hologram/runners/cognitive_hologram.rb +18 -18
  11. data/lib/legion/extensions/agentic/memory/immune_memory/actors/decay.rb +1 -1
  12. data/lib/legion/extensions/agentic/memory/nostalgia/actors/maintenance.rb +1 -1
  13. data/lib/legion/extensions/agentic/memory/nostalgia/helpers/nostalgia_engine.rb +2 -2
  14. data/lib/legion/extensions/agentic/memory/nostalgia/runners/analysis.rb +7 -7
  15. data/lib/legion/extensions/agentic/memory/nostalgia/runners/recall.rb +6 -6
  16. data/lib/legion/extensions/agentic/memory/offloading/runners/cognitive_offloading.rb +13 -13
  17. data/lib/legion/extensions/agentic/memory/palimpsest/actors/decay.rb +1 -1
  18. data/lib/legion/extensions/agentic/memory/reserve/actors/maintenance.rb +1 -1
  19. data/lib/legion/extensions/agentic/memory/semantic/runners/semantic_memory.rb +13 -13
  20. data/lib/legion/extensions/agentic/memory/semantic_priming/actors/decay.rb +1 -1
  21. data/lib/legion/extensions/agentic/memory/semantic_satiation/actors/recovery.rb +1 -1
  22. data/lib/legion/extensions/agentic/memory/semantic_satiation/runners/semantic_satiation.rb +16 -16
  23. data/lib/legion/extensions/agentic/memory/source_monitoring/actors/decay.rb +1 -1
  24. data/lib/legion/extensions/agentic/memory/source_monitoring/runners/source_monitoring.rb +9 -9
  25. data/lib/legion/extensions/agentic/memory/trace/batch_decay.rb +1 -1
  26. data/lib/legion/extensions/agentic/memory/trace/helpers/cache_store.rb +14 -14
  27. data/lib/legion/extensions/agentic/memory/trace/helpers/error_tracer.rb +2 -2
  28. data/lib/legion/extensions/agentic/memory/trace/helpers/hot_tier.rb +1 -1
  29. data/lib/legion/extensions/agentic/memory/trace/helpers/postgres_store.rb +5 -5
  30. data/lib/legion/extensions/agentic/memory/trace/helpers/snapshot.rb +1 -1
  31. data/lib/legion/extensions/agentic/memory/trace/helpers/store.rb +5 -5
  32. data/lib/legion/extensions/agentic/memory/trace/persistent_store.rb +3 -3
  33. data/lib/legion/extensions/agentic/memory/trace/runners/consolidation.rb +6 -6
  34. data/lib/legion/extensions/agentic/memory/trace/runners/traces.rb +8 -8
  35. data/lib/legion/extensions/agentic/memory/trace.rb +3 -3
  36. data/lib/legion/extensions/agentic/memory/transfer/runners/transfer_learning.rb +11 -11
  37. data/lib/legion/extensions/agentic/memory/version.rb +1 -1
  38. data/lib/legion/extensions/agentic/memory.rb +1 -1
  39. data/spec/legion/extensions/agentic/memory/archaeology/actors/decay_spec.rb +1 -1
  40. data/spec/legion/extensions/agentic/memory/compression/actors/maintenance_spec.rb +1 -1
  41. data/spec/legion/extensions/agentic/memory/echo/actors/decay_spec.rb +1 -1
  42. data/spec/legion/extensions/agentic/memory/echo_chamber/actors/decay_spec.rb +1 -1
  43. data/spec/legion/extensions/agentic/memory/immune_memory/actors/decay_spec.rb +1 -1
  44. data/spec/legion/extensions/agentic/memory/nostalgia/actors/maintenance_spec.rb +1 -1
  45. data/spec/legion/extensions/agentic/memory/palimpsest/actors/decay_spec.rb +1 -1
  46. data/spec/legion/extensions/agentic/memory/reserve/actors/maintenance_spec.rb +1 -1
  47. data/spec/legion/extensions/agentic/memory/semantic_priming/actors/decay_spec.rb +1 -1
  48. data/spec/legion/extensions/agentic/memory/semantic_satiation/actors/recovery_spec.rb +1 -1
  49. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53ea02bfdd236c2e64023525d767a238c9dfa28d96db8993cee882a2105bcccb
4
- data.tar.gz: 442b45ad5cdacc49197156b364db727cdabbb0ebf2f30881f823b7b04f776871
3
+ metadata.gz: fb1bf71d34f865e24372a5bc7f5c8f47d692ec141de8bb40fe5c96269aa78fc9
4
+ data.tar.gz: bc392262705eddec3f4e122b1afb79a6e25da73b20497b508778a95dc6b01d61
5
5
  SHA512:
6
- metadata.gz: f6c3ce2299ecd503a25069b865c7e68db33de87b90d4419879a45810119b92310f1816d140baf082014cf3bbcc920b9bc52342154db1c9db132b8ad6ba91fa0b
7
- data.tar.gz: b2712151eae4cf64f51bfa92792210e4200b84c0c0caa71830d4361470fe6f38d04c2775d6cd1faba777180499fdef18120946d1e8a3b37e60262db7be241d2b
6
+ metadata.gz: 97ff50ebc6ae1c740d8041b808f2186e23d78dc055d498bd2eda2e527d46f8de85af5ddb2069553e6c9cbdfa5021ea09302713277352efe9c973bc449fd4a0fd
7
+ data.tar.gz: 5990cbe7a015dcfe0d702318d859592dc85245fc8b2dd3b589f6bc7af54bf40954e7b776a01b5fe6c7688fe51bcb06d0de1b1a8390684111386d4d9c92ee38d2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.17] - 2026-03-30
4
+
5
+ ### Changed
6
+ - update to rubocop-legion 0.1.7, resolve all offenses
7
+
3
8
  ## [0.1.16] - 2026-03-29
4
9
 
5
10
  ### Fixed
@@ -35,5 +35,6 @@ Gem::Specification.new do |spec|
35
35
 
36
36
  spec.add_development_dependency 'rspec', '~> 3.13'
37
37
  spec.add_development_dependency 'rubocop', '~> 1.60'
38
+ spec.add_development_dependency 'rubocop-legion', '~> 0.1'
38
39
  spec.add_development_dependency 'rubocop-rspec', '~> 2.26'
39
40
  end
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Archaeology
8
- module Actors
8
+ module Actor
9
9
  class Decay < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveArchaeology
11
11
  def runner_function = 'decay_all'
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Compression
8
- module Actors
8
+ module Actor
9
9
  class Maintenance < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveCompression
11
11
  def runner_function = 'compress_all'
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Echo
8
- module Actors
8
+ module Actor
9
9
  class Decay < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveEcho
11
11
  def runner_function = 'decay_all'
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module EchoChamber
8
- module Actors
8
+ module Actor
9
9
  class Decay < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveEchoChamber
11
11
  def runner_function = 'decay_all'
@@ -21,7 +21,7 @@ module Legion
21
21
  source_agent: source_agent,
22
22
  amplitude: amplitude
23
23
  )
24
- Legion::Logging.debug "[cognitive_echo_chamber] echo created id=#{echo.id} type=#{echo_type} domain=#{domain}"
24
+ log.debug("[cognitive_echo_chamber] echo created id=#{echo.id} type=#{echo_type} domain=#{domain}")
25
25
  { success: true, echo: echo.to_h }
26
26
  rescue ArgumentError => e
27
27
  { success: false, error: e.message }
@@ -32,7 +32,7 @@ module Legion
32
32
 
33
33
  eng = engine || default_engine
34
34
  chamber = eng.create_chamber(label: label, domain: domain, wall_thickness: wall_thickness)
35
- Legion::Logging.debug "[cognitive_echo_chamber] chamber created id=#{chamber.id} label=#{label}"
35
+ log.debug("[cognitive_echo_chamber] chamber created id=#{chamber.id} label=#{label}")
36
36
  { success: true, chamber: chamber.to_h }
37
37
  rescue ArgumentError => e
38
38
  { success: false, error: e.message }
@@ -43,14 +43,14 @@ module Legion
43
43
  echo = eng.amplify_echo(echo_id: echo_id, rate: rate)
44
44
  return { success: false, error: 'echo not found' } unless echo
45
45
 
46
- Legion::Logging.debug "[cognitive_echo_chamber] amplified echo=#{echo_id} amplitude=#{echo.amplitude}"
46
+ log.debug("[cognitive_echo_chamber] amplified echo=#{echo_id} amplitude=#{echo.amplitude}")
47
47
  { success: true, echo: echo.to_h }
48
48
  end
49
49
 
50
50
  def disrupt(chamber_id:, force:, engine: nil, **)
51
51
  eng = engine || default_engine
52
52
  result = eng.disrupt_chamber(chamber_id: chamber_id, force: force)
53
- Legion::Logging.debug "[cognitive_echo_chamber] disrupt chamber=#{chamber_id} success=#{result[:success]}"
53
+ log.debug("[cognitive_echo_chamber] disrupt chamber=#{chamber_id} success=#{result[:success]}")
54
54
  result
55
55
  end
56
56
 
@@ -10,7 +10,7 @@ module Legion
10
10
  def create_episode(**)
11
11
  store = default_store
12
12
  episode = store.create_episode
13
- Legion::Logging.debug "[episodic_buffer] created episode id=#{episode.id[0..7]}"
13
+ log.debug("[episodic_buffer] created episode id=#{episode.id[0..7]}")
14
14
  { success: true, episode_id: episode.id, created_at: episode.created_at }
15
15
  end
16
16
 
@@ -28,10 +28,10 @@ module Legion
28
28
  )
29
29
 
30
30
  if result[:added]
31
- Legion::Logging.debug "[episodic_buffer] add_binding ep=#{episode_id[0..7]} mod=#{modality}"
31
+ log.debug("[episodic_buffer] add_binding ep=#{episode_id[0..7]} mod=#{modality}")
32
32
  { success: true, episode_id: episode_id, binding_id: result[:binding_id] }
33
33
  else
34
- Legion::Logging.debug "[episodic_buffer] add_binding failed ep=#{episode_id[0..7]} r=#{result[:reason]}"
34
+ log.debug("[episodic_buffer] add_binding failed ep=#{episode_id[0..7]} r=#{result[:reason]}")
35
35
  { success: false, episode_id: episode_id, reason: result[:reason] }
36
36
  end
37
37
  end
@@ -39,56 +39,56 @@ module Legion
39
39
  def attend_episode(episode_id:, **)
40
40
  store = default_store
41
41
  result = store.attend_episode(episode_id: episode_id)
42
- Legion::Logging.debug "[episodic_buffer] attend ep=#{episode_id[0..7]} success=#{result[:success]}"
42
+ log.debug("[episodic_buffer] attend ep=#{episode_id[0..7]} success=#{result[:success]}")
43
43
  result.merge(success: result[:success])
44
44
  end
45
45
 
46
46
  def rehearse_episode(episode_id:, **)
47
47
  store = default_store
48
48
  result = store.rehearse_episode(episode_id: episode_id)
49
- Legion::Logging.debug "[episodic_buffer] rehearse ep=#{episode_id[0..7]} success=#{result[:success]}"
49
+ log.debug("[episodic_buffer] rehearse ep=#{episode_id[0..7]} success=#{result[:success]}")
50
50
  result.merge(success: result[:success])
51
51
  end
52
52
 
53
53
  def check_integration(episode_id:, **)
54
54
  store = default_store
55
55
  result = store.integrate(episode_id: episode_id)
56
- Legion::Logging.debug "[episodic_buffer] check_integration ep=#{episode_id[0..7]} ok=#{result[:integrated]}"
56
+ log.debug("[episodic_buffer] check_integration ep=#{episode_id[0..7]} ok=#{result[:integrated]}")
57
57
  result.merge(success: true)
58
58
  end
59
59
 
60
60
  def retrieve_by_modality(modality:, **)
61
61
  store = default_store
62
62
  episodes = store.retrieve_by_modality(modality: modality.to_sym)
63
- Legion::Logging.debug "[episodic_buffer] retrieve_by_modality mod=#{modality} count=#{episodes.size}"
63
+ log.debug("[episodic_buffer] retrieve_by_modality mod=#{modality} count=#{episodes.size}")
64
64
  { success: true, modality: modality, count: episodes.size, episodes: episodes.map(&:to_h) }
65
65
  end
66
66
 
67
67
  def retrieve_multimodal(**)
68
68
  store = default_store
69
69
  episodes = store.retrieve_multimodal
70
- Legion::Logging.debug "[episodic_buffer] retrieve_multimodal count=#{episodes.size}"
70
+ log.debug("[episodic_buffer] retrieve_multimodal count=#{episodes.size}")
71
71
  { success: true, count: episodes.size, episodes: episodes.map(&:to_h) }
72
72
  end
73
73
 
74
74
  def most_coherent(limit: 5, **)
75
75
  store = default_store
76
76
  episodes = store.most_coherent(limit: limit)
77
- Legion::Logging.debug "[episodic_buffer] most_coherent limit=#{limit} returned=#{episodes.size}"
77
+ log.debug("[episodic_buffer] most_coherent limit=#{limit} returned=#{episodes.size}")
78
78
  { success: true, count: episodes.size, episodes: episodes.map(&:to_h) }
79
79
  end
80
80
 
81
81
  def update_episodic_buffer(**)
82
82
  store = default_store
83
83
  result = store.tick
84
- Legion::Logging.debug "[episodic_buffer] tick decayed=#{result[:decayed]} expired=#{result[:expired]}"
84
+ log.debug("[episodic_buffer] tick decayed=#{result[:decayed]} expired=#{result[:expired]}")
85
85
  { success: true }.merge(result)
86
86
  end
87
87
 
88
88
  def episodic_buffer_stats(**)
89
89
  store = default_store
90
90
  stats = store.to_h
91
- Legion::Logging.debug "[episodic_buffer] stats episodes=#{stats[:episode_count]}"
91
+ log.debug("[episodic_buffer] stats episodes=#{stats[:episode_count]}")
92
92
  { success: true }.merge(stats)
93
93
  end
94
94
 
@@ -7,8 +7,8 @@ module Legion
7
7
  module Hologram
8
8
  module Runners
9
9
  module CognitiveHologram
10
- include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
11
- Legion::Extensions::Helpers.const_defined?(:Lex)
10
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
11
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
12
12
 
13
13
  def create(domain: :general, content: '', engine: nil, **)
14
14
  raise ArgumentError, 'content cannot be empty' if content.to_s.strip.empty?
@@ -16,11 +16,11 @@ module Legion
16
16
  target_engine = engine || default_engine
17
17
  hologram = target_engine.create_hologram(domain: domain, content: content)
18
18
 
19
- Legion::Logging.debug "[cognitive_hologram] created hologram: domain=#{domain} id=#{hologram.id}"
19
+ log.debug("[cognitive_hologram] created hologram: domain=#{domain} id=#{hologram.id}")
20
20
 
21
21
  { success: true, hologram: hologram.to_h }
22
22
  rescue StandardError => e
23
- Legion::Logging.error "[cognitive_hologram] create failed: #{e.message}"
23
+ log.error("[cognitive_hologram] create failed: #{e.message}")
24
24
  { success: false, error: e.message }
25
25
  end
26
26
 
@@ -29,14 +29,14 @@ module Legion
29
29
  fragments = target_engine.fragment_hologram(hologram_id: hologram_id, count: count)
30
30
 
31
31
  unless fragments
32
- Legion::Logging.warn "[cognitive_hologram] fragment: hologram not found id=#{hologram_id}"
32
+ log.warn("[cognitive_hologram] fragment: hologram not found id=#{hologram_id}")
33
33
  return { success: false, reason: :hologram_not_found }
34
34
  end
35
35
 
36
- Legion::Logging.debug "[cognitive_hologram] fragmented hologram id=#{hologram_id} count=#{fragments.size}"
36
+ log.debug("[cognitive_hologram] fragmented hologram id=#{hologram_id} count=#{fragments.size}")
37
37
  { success: true, fragment_count: fragments.size, fragments: fragments.map(&:to_h) }
38
38
  rescue StandardError => e
39
- Legion::Logging.error "[cognitive_hologram] fragment failed: #{e.message}"
39
+ log.error("[cognitive_hologram] fragment failed: #{e.message}")
40
40
  { success: false, error: e.message }
41
41
  end
42
42
 
@@ -47,12 +47,12 @@ module Legion
47
47
  fragment_ids: fragment_ids
48
48
  )
49
49
 
50
- Legion::Logging.debug "[cognitive_hologram] reconstruct hologram=#{hologram_id} " \
51
- "fragments=#{fragment_ids.size} success=#{result[:success]}"
50
+ log.debug("[cognitive_hologram] reconstruct hologram=#{hologram_id} " \
51
+ "fragments=#{fragment_ids.size} success=#{result[:success]}")
52
52
 
53
53
  result.merge(success: result[:success])
54
54
  rescue StandardError => e
55
- Legion::Logging.error "[cognitive_hologram] reconstruct failed: #{e.message}"
55
+ log.error("[cognitive_hologram] reconstruct failed: #{e.message}")
56
56
  { success: false, error: e.message }
57
57
  end
58
58
 
@@ -60,10 +60,10 @@ module Legion
60
60
  target_engine = engine || default_engine
61
61
  holograms = target_engine.holograms.first(limit)
62
62
 
63
- Legion::Logging.debug "[cognitive_hologram] list_holograms: count=#{holograms.size} limit=#{limit}"
63
+ log.debug("[cognitive_hologram] list_holograms: count=#{holograms.size} limit=#{limit}")
64
64
  { success: true, holograms: holograms.map(&:to_h), count: holograms.size }
65
65
  rescue StandardError => e
66
- Legion::Logging.error "[cognitive_hologram] list_holograms failed: #{e.message}"
66
+ log.error("[cognitive_hologram] list_holograms failed: #{e.message}")
67
67
  { success: false, error: e.message }
68
68
  end
69
69
 
@@ -74,12 +74,12 @@ module Legion
74
74
  hologram_id_b: hologram_id_b
75
75
  )
76
76
 
77
- Legion::Logging.debug '[cognitive_hologram] interference_check: ' \
78
- "a=#{hologram_id_a} b=#{hologram_id_b} score=#{result[:interference]}"
77
+ log.debug('[cognitive_hologram] interference_check: ' \
78
+ "a=#{hologram_id_a} b=#{hologram_id_b} score=#{result[:interference]}")
79
79
 
80
80
  result.merge(success: true)
81
81
  rescue StandardError => e
82
- Legion::Logging.error "[cognitive_hologram] interference_check failed: #{e.message}"
82
+ log.error("[cognitive_hologram] interference_check failed: #{e.message}")
83
83
  { success: false, error: e.message }
84
84
  end
85
85
 
@@ -87,12 +87,12 @@ module Legion
87
87
  target_engine = engine || default_engine
88
88
  report = target_engine.hologram_report
89
89
 
90
- Legion::Logging.debug "[cognitive_hologram] status: total=#{report[:total_holograms]} " \
91
- "avg_resolution=#{report[:average_resolution].round(2)}"
90
+ log.debug("[cognitive_hologram] status: total=#{report[:total_holograms]} " \
91
+ "avg_resolution=#{report[:average_resolution].round(2)}")
92
92
 
93
93
  { success: true, report: report }
94
94
  rescue StandardError => e
95
- Legion::Logging.error "[cognitive_hologram] hologram_status failed: #{e.message}"
95
+ log.error("[cognitive_hologram] hologram_status failed: #{e.message}")
96
96
  { success: false, error: e.message }
97
97
  end
98
98
 
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module ImmuneMemory
8
- module Actors
8
+ module Actor
9
9
  class Decay < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveImmuneMemory
11
11
  def runner_function = 'decay_all'
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Nostalgia
8
- module Actors
8
+ module Actor
9
9
  class Maintenance < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::Recall
11
11
  def runner_function = 'age_memories'
@@ -31,7 +31,7 @@ module Legion
31
31
  candidates = find_candidates(domain, trigger)
32
32
  return [] if candidates.empty?
33
33
 
34
- new_events = candidates.map do |memory|
34
+ new_events = candidates.filter_map do |memory|
35
35
  intensity = compute_intensity(memory, intensity_hint)
36
36
  next unless intensity >= Constants::TRIGGER_SENSITIVITY
37
37
 
@@ -44,7 +44,7 @@ module Legion
44
44
  memory.warm!(intensity * 0.1)
45
45
  @events << event
46
46
  event
47
- end.compact
47
+ end
48
48
 
49
49
  @events.shift while @events.size > Constants::MAX_EVENTS
50
50
  new_events
@@ -7,13 +7,13 @@ module Legion
7
7
  module Nostalgia
8
8
  module Runners
9
9
  module Analysis
10
- include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
11
- Legion::Extensions::Helpers.const_defined?(:Lex)
10
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
11
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
12
12
 
13
13
  def warmth_by_domain(engine: nil, **)
14
14
  eng = engine || nostalgia_engine
15
15
  by_domain = eng.warmth_by_domain
16
- Legion::Logging.debug "[cognitive_nostalgia] warmth_by_domain: #{by_domain.size} domains"
16
+ log.debug("[cognitive_nostalgia] warmth_by_domain: #{by_domain.size} domains")
17
17
  { success: true, warmth_by_domain: by_domain }
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ module Legion
21
21
  eng = engine || nostalgia_engine
22
22
  index = eng.rosy_retrospection_index
23
23
  label = Helpers::Constants.label_for(Helpers::Constants::RETROSPECTION_LABELS, index)
24
- Legion::Logging.debug "[cognitive_nostalgia] rosy_retrospection_index=#{index.round(2)} label=#{label}"
24
+ log.debug("[cognitive_nostalgia] rosy_retrospection_index=#{index.round(2)} label=#{label}")
25
25
  { success: true, index: index, label: label }
26
26
  end
27
27
 
@@ -29,21 +29,21 @@ module Legion
29
29
  eng = engine || nostalgia_engine
30
30
  proneness = eng.nostalgia_proneness
31
31
  label = Helpers::Constants.label_for(Helpers::Constants::NOSTALGIA_LABELS, proneness)
32
- Legion::Logging.debug "[cognitive_nostalgia] nostalgia_proneness=#{proneness.round(2)} label=#{label}"
32
+ log.debug("[cognitive_nostalgia] nostalgia_proneness=#{proneness.round(2)} label=#{label}")
33
33
  { success: true, proneness: proneness, label: label }
34
34
  end
35
35
 
36
36
  def most_nostalgic_domains(engine: nil, **)
37
37
  eng = engine || nostalgia_engine
38
38
  domains = eng.most_nostalgic_domains
39
- Legion::Logging.debug "[cognitive_nostalgia] most_nostalgic_domains: top=#{domains.first&.fetch(:domain, :none)}"
39
+ log.debug("[cognitive_nostalgia] most_nostalgic_domains: top=#{domains.first&.fetch(:domain, :none)}")
40
40
  { success: true, domains: domains }
41
41
  end
42
42
 
43
43
  def bittersweet_memories(engine: nil, **)
44
44
  eng = engine || nostalgia_engine
45
45
  memories = eng.bittersweet_memories
46
- Legion::Logging.debug "[cognitive_nostalgia] bittersweet_memories: count=#{memories.size}"
46
+ log.debug("[cognitive_nostalgia] bittersweet_memories: count=#{memories.size}")
47
47
  { success: true, memories: memories, count: memories.size }
48
48
  end
49
49
 
@@ -7,8 +7,8 @@ module Legion
7
7
  module Nostalgia
8
8
  module Runners
9
9
  module Recall
10
- include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
11
- Legion::Extensions::Helpers.const_defined?(:Lex)
10
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
11
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
12
12
 
13
13
  def store_memory(content:, domain: :unknown, warmth: Helpers::Constants::DEFAULT_WARMTH,
14
14
  original_valence: 0.5, engine: nil, **)
@@ -19,21 +19,21 @@ module Legion
19
19
  warmth: warmth,
20
20
  original_valence: original_valence
21
21
  )
22
- Legion::Logging.debug "[cognitive_nostalgia] stored memory id=#{memory.id} domain=#{memory.domain} warmth=#{memory.warmth.round(2)}"
22
+ log.debug("[cognitive_nostalgia] stored memory id=#{memory.id} domain=#{memory.domain} warmth=#{memory.warmth.round(2)}")
23
23
  { success: true, memory: memory.to_h }
24
24
  end
25
25
 
26
26
  def trigger_nostalgia(trigger:, domain: nil, intensity_hint: nil, engine: nil, **)
27
27
  eng = engine || nostalgia_engine
28
28
  events = eng.trigger_nostalgia(trigger: trigger, domain: domain, intensity_hint: intensity_hint)
29
- Legion::Logging.debug "[cognitive_nostalgia] triggered nostalgia: trigger=#{trigger} events=#{events.size}"
29
+ log.debug("[cognitive_nostalgia] triggered nostalgia: trigger=#{trigger} events=#{events.size}")
30
30
  { success: true, events: events.map(&:to_h), count: events.size }
31
31
  end
32
32
 
33
33
  def age_memories(engine: nil, **)
34
34
  eng = engine || nostalgia_engine
35
35
  eng.age_all!
36
- Legion::Logging.debug "[cognitive_nostalgia] aged #{eng.memories.size} memories"
36
+ log.debug("[cognitive_nostalgia] aged #{eng.memories.size} memories")
37
37
  { success: true, memory_count: eng.memories.size }
38
38
  end
39
39
 
@@ -42,7 +42,7 @@ module Legion
42
42
  report = eng.nostalgia_report
43
43
  idx = report[:rosy_retrospection_index].round(2)
44
44
  pro = report[:nostalgia_proneness].round(2)
45
- Legion::Logging.debug "[cognitive_nostalgia] report: index=#{idx} proneness=#{pro}"
45
+ log.debug("[cognitive_nostalgia] report: index=#{idx} proneness=#{pro}")
46
46
  { success: true, **report }
47
47
  end
48
48
 
@@ -7,17 +7,17 @@ module Legion
7
7
  module Offloading
8
8
  module Runners
9
9
  module CognitiveOffloading
10
- include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
11
- Legion::Extensions::Helpers.const_defined?(:Lex)
10
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
11
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
12
12
 
13
13
  def register_store(name:, store_type:, engine: nil, **)
14
14
  eng = engine || offloading_engine
15
15
  store = eng.register_store(name: name, store_type: store_type)
16
16
  if store
17
- Legion::Logging.info "[cognitive_offloading] registered store name=#{name} type=#{store_type} id=#{store.id}"
17
+ log.info("[cognitive_offloading] registered store name=#{name} type=#{store_type} id=#{store.id}")
18
18
  { success: true, store: store.to_h }
19
19
  else
20
- Legion::Logging.warn '[cognitive_offloading] register_store failed: limit reached or invalid store_type'
20
+ log.warn('[cognitive_offloading] register_store failed: limit reached or invalid store_type')
21
21
  { success: false, reason: :limit_reached }
22
22
  end
23
23
  end
@@ -26,10 +26,10 @@ module Legion
26
26
  eng = engine || offloading_engine
27
27
  item = eng.offload(content: content, item_type: item_type, importance: importance, store_id: store_id)
28
28
  if item
29
- Legion::Logging.info "[cognitive_offloading] offloaded item=#{item.id} type=#{item_type} importance=#{importance.round(2)} store=#{store_id}"
29
+ log.info("[cognitive_offloading] offloaded item=#{item.id} type=#{item_type} importance=#{importance.round(2)} store=#{store_id}")
30
30
  { success: true, item: item.to_h }
31
31
  else
32
- Legion::Logging.warn "[cognitive_offloading] offload failed: limit reached or store not found store_id=#{store_id}"
32
+ log.warn("[cognitive_offloading] offload failed: limit reached or store not found store_id=#{store_id}")
33
33
  { success: false, reason: :offload_failed }
34
34
  end
35
35
  end
@@ -38,10 +38,10 @@ module Legion
38
38
  eng = engine || offloading_engine
39
39
  item = eng.retrieve(item_id: item_id)
40
40
  if item
41
- Legion::Logging.debug "[cognitive_offloading] retrieved item=#{item_id} count=#{item.retrieved_count}"
41
+ log.debug("[cognitive_offloading] retrieved item=#{item_id} count=#{item.retrieved_count}")
42
42
  { success: true, item: item.to_h }
43
43
  else
44
- Legion::Logging.warn "[cognitive_offloading] retrieve failed: item not found item_id=#{item_id}"
44
+ log.warn("[cognitive_offloading] retrieve failed: item not found item_id=#{item_id}")
45
45
  { success: false, reason: :not_found }
46
46
  end
47
47
  end
@@ -52,7 +52,7 @@ module Legion
52
52
  if item
53
53
  store = eng.stores[item.store_id]
54
54
  trust = store&.trust&.round(2)
55
- Legion::Logging.warn "[cognitive_offloading] retrieval failure item=#{item_id} store_trust=#{trust}"
55
+ log.warn("[cognitive_offloading] retrieval failure item=#{item_id} store_trust=#{trust}")
56
56
  { success: true, item_id: item_id, store_trust: trust }
57
57
  else
58
58
  { success: false, reason: :not_found }
@@ -62,21 +62,21 @@ module Legion
62
62
  def items_in_store(store_id:, engine: nil, **)
63
63
  eng = engine || offloading_engine
64
64
  items = eng.items_in_store(store_id: store_id)
65
- Legion::Logging.debug "[cognitive_offloading] items_in_store store=#{store_id} count=#{items.size}"
65
+ log.debug("[cognitive_offloading] items_in_store store=#{store_id} count=#{items.size}")
66
66
  { success: true, items: items.map(&:to_h), count: items.size }
67
67
  end
68
68
 
69
69
  def items_by_type(item_type:, engine: nil, **)
70
70
  eng = engine || offloading_engine
71
71
  items = eng.items_by_type(item_type: item_type)
72
- Legion::Logging.debug "[cognitive_offloading] items_by_type type=#{item_type} count=#{items.size}"
72
+ log.debug("[cognitive_offloading] items_by_type type=#{item_type} count=#{items.size}")
73
73
  { success: true, items: items.map(&:to_h), count: items.size }
74
74
  end
75
75
 
76
76
  def most_important_offloaded(limit: 10, engine: nil, **)
77
77
  eng = engine || offloading_engine
78
78
  items = eng.most_important_offloaded(limit: limit)
79
- Legion::Logging.debug "[cognitive_offloading] most_important limit=#{limit} count=#{items.size}"
79
+ log.debug("[cognitive_offloading] most_important limit=#{limit} count=#{items.size}")
80
80
  { success: true, items: items.map(&:to_h), count: items.size }
81
81
  end
82
82
 
@@ -84,7 +84,7 @@ module Legion
84
84
  eng = engine || offloading_engine
85
85
  report = eng.offloading_report
86
86
  ratio = report[:offloading_ratio]
87
- Legion::Logging.debug "[cognitive_offloading] status items=#{report[:total_items]} stores=#{report[:total_stores]} ratio=#{ratio}"
87
+ log.debug("[cognitive_offloading] status items=#{report[:total_items]} stores=#{report[:total_stores]} ratio=#{ratio}")
88
88
  { success: true, report: report }
89
89
  end
90
90
 
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Palimpsest
8
- module Actors
8
+ module Actor
9
9
  class Decay < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitivePalimpsest
11
11
  def runner_function = 'decay_all_ghosts'
@@ -5,7 +5,7 @@ module Legion
5
5
  module Agentic
6
6
  module Memory
7
7
  module Reserve
8
- module Actors
8
+ module Actor
9
9
  class Maintenance < Legion::Extensions::Actors::Every
10
10
  def runner_class = Runners::CognitiveReserve
11
11
  def runner_function = 'update_cognitive_reserve'
@@ -7,68 +7,68 @@ module Legion
7
7
  module Semantic
8
8
  module Runners
9
9
  module SemanticMemory
10
- include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers) &&
11
- Legion::Extensions::Helpers.const_defined?(:Lex)
10
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
11
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
12
12
 
13
13
  def store_concept(name:, domain: :general, confidence: nil, properties: {}, **)
14
14
  concept = knowledge_store.store(name: name, domain: domain, confidence: confidence, properties: properties)
15
- Legion::Logging.debug "[semantic_memory] store: name=#{name} domain=#{domain} conf=#{concept.confidence.round(3)}"
15
+ log.debug("[semantic_memory] store: name=#{name} domain=#{domain} conf=#{concept.confidence.round(3)}")
16
16
  { success: true, concept: concept.to_h }
17
17
  end
18
18
 
19
19
  def relate_concepts(source:, target:, type:, confidence: nil, **)
20
20
  type_sym = type.to_sym
21
21
  result = knowledge_store.relate(source: source, target: target, type: type_sym, confidence: confidence)
22
- Legion::Logging.debug "[semantic_memory] relate: #{source} --#{type_sym}--> #{target}"
22
+ log.debug("[semantic_memory] relate: #{source} --#{type_sym}--> #{target}")
23
23
  { success: true, source: source, target: target, type: type_sym, relation: result }
24
24
  end
25
25
 
26
26
  def retrieve_concept(name:, **)
27
27
  concept = knowledge_store.retrieve(name: name)
28
28
  if concept
29
- Legion::Logging.debug "[semantic_memory] retrieve: name=#{name} conf=#{concept.confidence.round(3)}"
29
+ log.debug("[semantic_memory] retrieve: name=#{name} conf=#{concept.confidence.round(3)}")
30
30
  { success: true, found: true, concept: concept.to_h }
31
31
  else
32
- Legion::Logging.debug "[semantic_memory] retrieve: name=#{name} not_found"
32
+ log.debug("[semantic_memory] retrieve: name=#{name} not_found")
33
33
  { success: true, found: false, name: name }
34
34
  end
35
35
  end
36
36
 
37
37
  def query_concept_relations(name:, type: nil, **)
38
38
  relations = knowledge_store.query_relations(name: name, type: type&.to_sym)
39
- Legion::Logging.debug "[semantic_memory] query_relations: name=#{name} type=#{type} count=#{relations.size}"
39
+ log.debug("[semantic_memory] query_relations: name=#{name} type=#{type} count=#{relations.size}")
40
40
  { success: true, name: name, relations: relations, count: relations.size }
41
41
  end
42
42
 
43
43
  def check_category(concept:, category:, **)
44
44
  result = knowledge_store.check_is_a(concept, category)
45
- Legion::Logging.debug "[semantic_memory] check_category: #{concept} is_a #{category} = #{result}"
45
+ log.debug("[semantic_memory] check_category: #{concept} is_a #{category} = #{result}")
46
46
  { success: true, concept: concept, category: category, is_member: result }
47
47
  end
48
48
 
49
49
  def find_instances(category:, **)
50
50
  instances = knowledge_store.instances_of(category)
51
- Legion::Logging.debug "[semantic_memory] instances_of: #{category} count=#{instances.size}"
51
+ log.debug("[semantic_memory] instances_of: #{category} count=#{instances.size}")
52
52
  { success: true, category: category, instances: instances.map(&:name), count: instances.size }
53
53
  end
54
54
 
55
55
  def activate_spread(seed:, hops: nil, **)
56
56
  hop_count = hops || Helpers::Constants::MAX_SPREAD_HOPS
57
57
  activated = knowledge_store.spreading_activation(seed: seed, hops: hop_count)
58
- Legion::Logging.debug "[semantic_memory] spread: seed=#{seed} hops=#{hop_count} activated=#{activated.size}"
58
+ log.debug("[semantic_memory] spread: seed=#{seed} hops=#{hop_count} activated=#{activated.size}")
59
59
  { success: true, seed: seed, activated: activated, count: activated.size }
60
60
  end
61
61
 
62
62
  def concepts_in(domain:, **)
63
63
  concepts = knowledge_store.concepts_in_domain(domain)
64
- Legion::Logging.debug "[semantic_memory] domain_query: domain=#{domain} count=#{concepts.size}"
64
+ log.debug("[semantic_memory] domain_query: domain=#{domain} count=#{concepts.size}")
65
65
  { success: true, domain: domain, concepts: concepts.map(&:name), count: concepts.size }
66
66
  end
67
67
 
68
68
  def update_semantic_memory(**)
69
69
  knowledge_store.decay_all
70
- Legion::Logging.debug "[semantic_memory] tick: concepts=#{knowledge_store.concept_count} " \
71
- "relations=#{knowledge_store.relation_count}"
70
+ log.debug("[semantic_memory] tick: concepts=#{knowledge_store.concept_count} " \
71
+ "relations=#{knowledge_store.relation_count}")
72
72
  {
73
73
  success: true,
74
74
  concepts: knowledge_store.concept_count,