lex-agentic-self 0.1.15 → 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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/legion/extensions/agentic/self/architecture/helpers/subsystem.rb +1 -1
- data/lib/legion/extensions/agentic/self/metacognition/runners/metacognition.rb +4 -3
- data/lib/legion/extensions/agentic/self/version.rb +1 -1
- data/spec/legion/extensions/agentic/self/identity/local_persistence_spec.rb +2 -2
- data/spec/legion/extensions/agentic/self/identity/runners/entra_spec.rb +3 -3
- data/spec/legion/extensions/agentic/self/metacognition/runners/metacognition_spec.rb +31 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 78fabc193208b0e2059a6f95600bd6c358abe763ee62d26da104e624d8e665ab
|
|
4
|
+
data.tar.gz: a606062b0f999c578120934bc4cd6486d5b4f6f80456f2b119557cf7afbd7ea0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ada4ab413f48e62b67e0ed9913db7d88b4756af102d7bc121b6b9d26905158c2d1d3dcfacfe12e914d560583e2832076ac8c178d0977344bc0b9a245a8894ae
|
|
7
|
+
data.tar.gz: 9695b4662b313bbce2dc7d73ca9f1b6dd12e96a18525cf1cd4dc87dada063a5fbd87e8c93fc07202f35bfe7c178b2f4501b6a98309e626ce1abf25b4183da187
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.16] - 2026-10-29
|
|
4
|
+
### Fixed
|
|
5
|
+
- Refresh metacognitive snapshots immediately when new tick or subsystem observations arrive instead of hiding them behind the cache TTL.
|
|
6
|
+
- Refresh expired architecture overviews through normal introspection so newly loaded extensions appear in architecture change history.
|
|
7
|
+
|
|
3
8
|
## [0.1.15] - 2026-07-16
|
|
4
9
|
### Added
|
|
5
10
|
- Per-partner identity fingerprint models: `CognitiveFingerprint` runner now accepts `partner_identity:` on all methods, routing each partner to an isolated `FingerprintEngine` instance via an in-memory registry.
|
data/README.md
CHANGED
|
@@ -11,7 +11,9 @@ module Legion
|
|
|
11
11
|
Legion::Extensions::Helpers.const_defined?(:Lex, false)
|
|
12
12
|
|
|
13
13
|
def introspect(tick_results: {}, subsystem_states: {}, **)
|
|
14
|
-
|
|
14
|
+
observed = (tick_results.is_a?(Hash) && !tick_results.empty?) ||
|
|
15
|
+
(subsystem_states.is_a?(Hash) && !subsystem_states.empty?)
|
|
16
|
+
model = if snapshot_store.stale? || observed
|
|
15
17
|
fresh = Helpers::SelfModel.build(
|
|
16
18
|
subsystem_states: subsystem_states,
|
|
17
19
|
tick_results: tick_results
|
|
@@ -59,8 +61,7 @@ module Legion
|
|
|
59
61
|
end
|
|
60
62
|
|
|
61
63
|
def architecture_overview(**)
|
|
62
|
-
model =
|
|
63
|
-
snapshot_store.store(model) if snapshot_store.stale?
|
|
64
|
+
model = introspect
|
|
64
65
|
|
|
65
66
|
{
|
|
66
67
|
identity: model[:identity],
|
|
@@ -39,8 +39,8 @@ RSpec.describe Legion::Extensions::Agentic::Self::Identity::Helpers::Fingerprint
|
|
|
39
39
|
|
|
40
40
|
def stub_local(db)
|
|
41
41
|
local_mod = Module.new do
|
|
42
|
-
define_singleton_method(:connection)
|
|
43
|
-
define_singleton_method(:connected?)
|
|
42
|
+
define_singleton_method(:connection) { db }
|
|
43
|
+
define_singleton_method(:connected?) { true }
|
|
44
44
|
end
|
|
45
45
|
stub_const('Legion::Data', Module.new)
|
|
46
46
|
stub_const('Legion::Data::Local', local_mod)
|
|
@@ -9,8 +9,8 @@ unless defined?(Legion::Logging)
|
|
|
9
9
|
module_function
|
|
10
10
|
|
|
11
11
|
def debug(*); end
|
|
12
|
-
def info(*);
|
|
13
|
-
def warn(*);
|
|
12
|
+
def info(*); end
|
|
13
|
+
def warn(*); end
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -245,7 +245,7 @@ RSpec.describe Legion::Extensions::Agentic::Self::Identity::Runners::Entra do
|
|
|
245
245
|
describe '#refresh_access_token' do
|
|
246
246
|
let(:vault_secrets_mod) do
|
|
247
247
|
Module.new do
|
|
248
|
-
def self.read_client_secret(
|
|
248
|
+
def self.read_client_secret(**)
|
|
249
249
|
{ client_id: 'app-id', client_secret: 'secret-val' }
|
|
250
250
|
end
|
|
251
251
|
end
|
|
@@ -41,6 +41,24 @@ RSpec.describe Legion::Extensions::Agentic::Self::Metacognition::Runners::Metaco
|
|
|
41
41
|
expect(model.dig(:cognitive, :health)).to eq(0.95)
|
|
42
42
|
expect(store.size).to eq(2)
|
|
43
43
|
end
|
|
44
|
+
|
|
45
|
+
it 'uses newly observed health and subsystem state before the cache expires' do
|
|
46
|
+
client.introspect(tick_results: tick_results, subsystem_states: { memory: { status: :healthy } })
|
|
47
|
+
changed = tick_results.merge(post_tick_reflection: { cognitive_health: 0.35 })
|
|
48
|
+
|
|
49
|
+
model = client.introspect(tick_results: changed, subsystem_states: { memory: { status: :degraded } })
|
|
50
|
+
|
|
51
|
+
expect(model.dig(:cognitive, :health)).to eq(0.35)
|
|
52
|
+
expect(client.explain_subsystem(subsystem: :memory)[:state]).to eq(status: :degraded)
|
|
53
|
+
expect(client.health_trend[:trend].map { |entry| entry[:health] }).to eq([0.88, 0.35])
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'accepts new subsystem observations without requiring a new tick' do
|
|
57
|
+
client.introspect(subsystem_states: { memory: { status: :healthy } })
|
|
58
|
+
client.introspect(subsystem_states: { memory: { status: :degraded } })
|
|
59
|
+
|
|
60
|
+
expect(client.explain_subsystem(subsystem: :memory)[:state]).to eq(status: :degraded)
|
|
61
|
+
end
|
|
44
62
|
end
|
|
45
63
|
|
|
46
64
|
describe '#self_narrative' do
|
|
@@ -74,6 +92,19 @@ RSpec.describe Legion::Extensions::Agentic::Self::Metacognition::Runners::Metaco
|
|
|
74
92
|
expect(result[:identity][:framework]).to eq('LegionIO')
|
|
75
93
|
expect(result).to have_key(:capabilities)
|
|
76
94
|
end
|
|
95
|
+
|
|
96
|
+
it 'rediscovers loaded extensions after the cached architecture expires' do
|
|
97
|
+
hide_const('Legion::Extensions::Curiosity') if Legion::Extensions.const_defined?(:Curiosity, false)
|
|
98
|
+
old = client.introspect
|
|
99
|
+
old[:assembled_at] = Time.now.utc - 60
|
|
100
|
+
stub_const('Legion::Extensions::Curiosity', Module.new)
|
|
101
|
+
|
|
102
|
+
overview = client.architecture_overview
|
|
103
|
+
|
|
104
|
+
expect(overview[:architecture][:loaded]).to include(:Curiosity)
|
|
105
|
+
expect(overview[:assembled_at]).to be > old[:assembled_at]
|
|
106
|
+
expect(client.architecture_changes[:changes].last[:added]).to include(:Curiosity)
|
|
107
|
+
end
|
|
77
108
|
end
|
|
78
109
|
|
|
79
110
|
describe '#health_trend' do
|