lex-agentic-memory 0.1.14 → 0.1.16

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50c80158ba856d35e47e3c72fdfbadb29a4a75b0e45b1e859f507dafc850ab4d
4
- data.tar.gz: e8ca09283855617c11b3cef8da5bdeec38a1aaeea526f1558610d1702ee8f97e
3
+ metadata.gz: 53ea02bfdd236c2e64023525d767a238c9dfa28d96db8993cee882a2105bcccb
4
+ data.tar.gz: 442b45ad5cdacc49197156b364db727cdabbb0ebf2f30881f823b7b04f776871
5
5
  SHA512:
6
- metadata.gz: 9c7d4a3b2ba13f3639fcb6a6b8729ddef7e0e5286eaf2fb7a68fe5d4d395f6306e8dccf5d1a3c7ed2f884a49e2ddcb812f2377f0bca36384ad6231804d90a40b
7
- data.tar.gz: d55c7a895b14acb28209eafba19b83059a1a89e84335d0e130968d941814c3af4ee66bb6d4c95a0d5c655bbe117b753f3240eee80f00cbbdccaa3e7479d322fd
6
+ metadata.gz: f6c3ce2299ecd503a25069b865c7e68db33de87b90d4419879a45810119b92310f1816d140baf082014cf3bbcc920b9bc52342154db1c9db132b8ad6ba91fa0b
7
+ data.tar.gz: b2712151eae4cf64f51bfa92792210e4200b84c0c0caa71830d4361470fe6f38d04c2775d6cd1faba777180499fdef18120946d1e8a3b37e60262db7be241d2b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.16] - 2026-03-29
4
+
5
+ ### Fixed
6
+ - Add `=> e` capture and `Legion::Logging.error` call to all bare `rescue StandardError` clauses in `memory.rb` to satisfy rescue-logging lint rule
7
+ - Fix `Lint/ShadowedException` in `snapshot.rb`: replace `rescue NameError, NoMethodError` with `rescue NameError` (`NoMethodError` is a subclass of `NameError`)
8
+ - Refactor `Snapshot#distribute_state` into dedicated helper methods to reduce cyclomatic/perceived complexity below threshold
9
+
10
+ ## [0.1.15] - 2026-03-26
11
+
12
+ ### Changed
13
+ - fix remote_invocable? to use class method for local dispatch
14
+
3
15
  ## [0.1.14] - 2026-03-26
4
16
 
5
17
  ### Fixed
@@ -12,6 +12,8 @@ module Legion
12
12
  module Helpers
13
13
  module Snapshot
14
14
  class << self
15
+ include Legion::Logging::Helper if defined?(Legion::Logging::Helper)
16
+
15
17
  def save_snapshot(agent_id:)
16
18
  state = gather_state(agent_id)
17
19
  packed = MessagePack.pack(state)
@@ -37,16 +39,13 @@ module Legion
37
39
  signature = raw[-64..]
38
40
  packed = raw[0..-65]
39
41
 
40
- unless verify_data(packed, signature, agent_id)
41
- Legion::Logging.warn "[snapshot] signature verification failed for #{agent_id}" if defined?(Legion::Logging)
42
- return { success: false, reason: :invalid_signature }
43
- end
42
+ return { success: false, reason: :invalid_signature } unless verify_data(packed, signature, agent_id)
44
43
 
45
44
  state = MessagePack.unpack(packed, symbolize_keys: true)
46
45
  distribute_state(state)
47
46
  { success: true, agent_id: agent_id, timestamp: state[:timestamp] }
48
47
  rescue StandardError => e
49
- Legion::Logging.warn "[snapshot] restore failed: #{e.message}" if defined?(Legion::Logging)
48
+ log.error(e.message) if respond_to?(:log)
50
49
  { success: false, reason: :error, message: e.message }
51
50
  end
52
51
 
@@ -97,24 +96,90 @@ module Legion
97
96
  []
98
97
  end
99
98
 
100
- state[:personality_state] = {}
101
- state[:mood_state] = {}
102
- state[:trust_scores] = {}
103
- state[:reflection_history] = []
99
+ state[:personality_state] =
100
+ if defined?(Legion::Extensions::Agentic::Self) &&
101
+ Legion::Extensions::Agentic::Self.respond_to?(:personality_snapshot)
102
+ Legion::Extensions::Agentic::Self.personality_snapshot
103
+ else
104
+ {}
105
+ end
106
+
107
+ state[:mood_state] =
108
+ if defined?(Legion::Extensions::Agentic::Affect) &&
109
+ Legion::Extensions::Agentic::Affect.respond_to?(:mood_snapshot)
110
+ Legion::Extensions::Agentic::Affect.mood_snapshot
111
+ else
112
+ {}
113
+ end
114
+
115
+ state[:trust_scores] =
116
+ if defined?(Legion::Mesh) && Legion::Mesh.respond_to?(:trust_snapshot)
117
+ Legion::Mesh.trust_snapshot
118
+ else
119
+ {}
120
+ end
121
+
122
+ state[:reflection_history] =
123
+ if defined?(Legion::Extensions::Agentic::Self) &&
124
+ Legion::Extensions::Agentic::Self.respond_to?(:reflection_snapshot)
125
+ Legion::Extensions::Agentic::Self.reflection_snapshot
126
+ else
127
+ []
128
+ end
129
+
104
130
  state
105
131
  end
106
132
 
107
133
  def distribute_state(state)
108
- return unless state[:memory_traces]
134
+ restore_memory_traces(state[:memory_traces])
135
+ restore_personality(state[:personality_state])
136
+ restore_mood(state[:mood_state])
137
+ restore_trust_scores(state[:trust_scores])
138
+ restore_reflections(state[:reflection_history])
139
+ end
140
+
141
+ def restore_memory_traces(traces)
142
+ return unless traces
109
143
 
110
144
  store = Legion::Extensions::Agentic::Memory::Trace.shared_store
111
145
  if store.respond_to?(:restore_traces)
112
- store.restore_traces(state[:memory_traces])
146
+ store.restore_traces(traces)
113
147
  elsif store.respond_to?(:store)
114
- state[:memory_traces].each { |t| store.store(t) }
148
+ traces.each { |t| store.store(t) }
115
149
  end
116
150
  end
117
151
 
152
+ def restore_personality(personality_state)
153
+ return unless personality_state && !personality_state.empty?
154
+ return unless defined?(Legion::Extensions::Agentic::Self) &&
155
+ Legion::Extensions::Agentic::Self.respond_to?(:restore_personality)
156
+
157
+ Legion::Extensions::Agentic::Self.restore_personality(personality_state)
158
+ end
159
+
160
+ def restore_mood(mood_state)
161
+ return unless mood_state && !mood_state.empty?
162
+ return unless defined?(Legion::Extensions::Agentic::Affect) &&
163
+ Legion::Extensions::Agentic::Affect.respond_to?(:restore_mood)
164
+
165
+ Legion::Extensions::Agentic::Affect.restore_mood(mood_state)
166
+ end
167
+
168
+ def restore_trust_scores(trust_scores)
169
+ return unless trust_scores && !trust_scores.empty?
170
+ return unless defined?(Legion::Mesh) && Legion::Mesh.respond_to?(:restore_trust)
171
+
172
+ Legion::Mesh.restore_trust(trust_scores)
173
+ end
174
+
175
+ def restore_reflections(reflection_history)
176
+ return unless reflection_history && !reflection_history.empty?
177
+ return unless defined?(Legion::Extensions::Agentic::Self) &&
178
+ Legion::Extensions::Agentic::Self.respond_to?(:restore_reflections)
179
+
180
+ Legion::Extensions::Agentic::Self.restore_reflections(reflection_history)
181
+ end
182
+
118
183
  def sign_data(data, _agent_id)
119
184
  if defined?(Legion::Crypt) && Legion::Crypt.respond_to?(:ed25519_sign)
120
185
  signature = Legion::Crypt.ed25519_sign(data)
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Agentic
6
6
  module Memory
7
- VERSION = '0.1.14'
7
+ VERSION = '0.1.16'
8
8
  end
9
9
  end
10
10
  end
@@ -26,7 +26,7 @@ module Legion
26
26
  module Memory
27
27
  extend Legion::Extensions::Core if Legion::Extensions.const_defined? :Core
28
28
 
29
- def remote_invocable?
29
+ def self.remote_invocable?
30
30
  false
31
31
  end
32
32
  end
@@ -36,41 +36,24 @@ end
36
36
 
37
37
  # Snapshot lifecycle hooks
38
38
  if defined?(Legion::Events)
39
- snapshot_enabled = begin
40
- Legion::Settings.dig(:snapshot, :enabled)
41
- rescue StandardError
42
- true
43
- end
39
+ settings_loaded = defined?(Legion::Settings)
40
+ snapshot_enabled = settings_loaded ? Legion::Settings.dig(:snapshot, :enabled) : true
44
41
  if snapshot_enabled
45
42
  require 'legion/extensions/agentic/memory/trace/helpers/snapshot'
46
43
 
47
44
  Legion::Events.on('service.shutting_down') do
48
- next unless begin
49
- Legion::Settings.dig(:snapshot, :auto_save_on_shutdown)
50
- rescue StandardError
51
- true
52
- end
45
+ auto_save = settings_loaded ? Legion::Settings.dig(:snapshot, :auto_save_on_shutdown) : true
46
+ next unless auto_save
53
47
 
54
- agent_id = begin
55
- Legion::Settings.dig(:agent, :id)
56
- rescue StandardError
57
- nil
58
- end || 'default'
48
+ agent_id = (settings_loaded ? Legion::Settings.dig(:agent, :id) : nil) || 'default'
59
49
  Legion::Extensions::Agentic::Memory::Trace::Helpers::Snapshot.save_snapshot(agent_id: agent_id)
60
50
  end
61
51
 
62
52
  Legion::Events.once('gaia.started') do
63
- next unless begin
64
- Legion::Settings.dig(:snapshot, :auto_restore_on_boot)
65
- rescue StandardError
66
- true
67
- end
53
+ auto_restore = settings_loaded ? Legion::Settings.dig(:snapshot, :auto_restore_on_boot) : true
54
+ next unless auto_restore
68
55
 
69
- agent_id = begin
70
- Legion::Settings.dig(:agent, :id)
71
- rescue StandardError
72
- nil
73
- end || 'default'
56
+ agent_id = (settings_loaded ? Legion::Settings.dig(:agent, :id) : nil) || 'default'
74
57
  Legion::Extensions::Agentic::Memory::Trace::Helpers::Snapshot.restore_snapshot(agent_id: agent_id)
75
58
  end
76
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-agentic-memory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity