lex-apollo 0.4.30 → 0.4.44
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 +92 -0
- data/README.md +42 -5
- data/lib/legion/extensions/apollo/actors/contradiction_scanner.rb +14 -11
- data/lib/legion/extensions/apollo/actors/gas_subscriber.rb +4 -6
- data/lib/legion/extensions/apollo/api.rb +19 -9
- data/lib/legion/extensions/apollo/helpers/capability.rb +8 -20
- data/lib/legion/extensions/apollo/helpers/confidence.rb +1 -1
- data/lib/legion/extensions/apollo/helpers/graph_query.rb +30 -46
- data/lib/legion/extensions/apollo/helpers/writeback.rb +9 -13
- data/lib/legion/extensions/apollo/runners/gas.rb +90 -20
- data/lib/legion/extensions/apollo/runners/knowledge.rb +152 -104
- data/lib/legion/extensions/apollo/runners/maintenance.rb +133 -34
- data/lib/legion/extensions/apollo/runners/request.rb +4 -5
- data/lib/legion/extensions/apollo/transport.rb +20 -0
- data/lib/legion/extensions/apollo/version.rb +1 -1
- data/spec/legion/extensions/apollo/actors/contradiction_scanner_spec.rb +38 -0
- data/spec/legion/extensions/apollo/actors/gas_subscriber_spec.rb +4 -14
- data/spec/legion/extensions/apollo/api_spec.rb +11 -21
- data/spec/legion/extensions/apollo/contradiction_spec.rb +0 -9
- data/spec/legion/extensions/apollo/helpers/capability_spec.rb +2 -2
- data/spec/legion/extensions/apollo/helpers/writeback_spec.rb +29 -1
- data/spec/legion/extensions/apollo/runners/corroboration_integration_spec.rb +191 -0
- data/spec/legion/extensions/apollo/runners/gas_deposit_integration_spec.rb +92 -0
- data/spec/legion/extensions/apollo/runners/gas_spec.rb +27 -33
- data/spec/legion/extensions/apollo/runners/ingest_transaction_integration_spec.rb +114 -0
- data/spec/legion/extensions/apollo/runners/knowledge_spec.rb +47 -57
- data/spec/legion/extensions/apollo/runners/lifecycle_integration_spec.rb +165 -0
- data/spec/legion/extensions/apollo/runners/maintenance_spec.rb +22 -108
- data/spec/legion/extensions/apollo/runners/request_spec.rb +43 -26
- metadata +34 -2
- data/spec/legion/extensions/apollo/helpers/graph_query_spec.rb +0 -100
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-apollo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.44
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -149,6 +149,34 @@ dependencies:
|
|
|
149
149
|
- - ">="
|
|
150
150
|
- !ruby/object:Gem::Version
|
|
151
151
|
version: '0'
|
|
152
|
+
- !ruby/object:Gem::Dependency
|
|
153
|
+
name: sinatra
|
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - "~>"
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '4.0'
|
|
159
|
+
type: :development
|
|
160
|
+
prerelease: false
|
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
162
|
+
requirements:
|
|
163
|
+
- - "~>"
|
|
164
|
+
- !ruby/object:Gem::Version
|
|
165
|
+
version: '4.0'
|
|
166
|
+
- !ruby/object:Gem::Dependency
|
|
167
|
+
name: sqlite3
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - ">="
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '2.0'
|
|
173
|
+
type: :development
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - ">="
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '2.0'
|
|
152
180
|
description: Durable shared knowledge with vector search, concept graph, and expertise
|
|
153
181
|
tracking
|
|
154
182
|
email:
|
|
@@ -199,6 +227,7 @@ files:
|
|
|
199
227
|
- lib/legion/extensions/apollo/transport/queues/writeback_store.rb
|
|
200
228
|
- lib/legion/extensions/apollo/transport/queues/writeback_vectorize.rb
|
|
201
229
|
- lib/legion/extensions/apollo/version.rb
|
|
230
|
+
- spec/legion/extensions/apollo/actors/contradiction_scanner_spec.rb
|
|
202
231
|
- spec/legion/extensions/apollo/actors/decay_spec.rb
|
|
203
232
|
- spec/legion/extensions/apollo/actors/entity_watchdog_spec.rb
|
|
204
233
|
- spec/legion/extensions/apollo/actors/expertise_aggregator_spec.rb
|
|
@@ -213,18 +242,21 @@ files:
|
|
|
213
242
|
- spec/legion/extensions/apollo/helpers/capability_spec.rb
|
|
214
243
|
- spec/legion/extensions/apollo/helpers/confidence_spec.rb
|
|
215
244
|
- spec/legion/extensions/apollo/helpers/entity_watchdog_spec.rb
|
|
216
|
-
- spec/legion/extensions/apollo/helpers/graph_query_spec.rb
|
|
217
245
|
- spec/legion/extensions/apollo/helpers/similarity_spec.rb
|
|
218
246
|
- spec/legion/extensions/apollo/helpers/tag_normalizer_spec.rb
|
|
219
247
|
- spec/legion/extensions/apollo/helpers/writeback_spec.rb
|
|
248
|
+
- spec/legion/extensions/apollo/runners/corroboration_integration_spec.rb
|
|
220
249
|
- spec/legion/extensions/apollo/runners/decay_cycle_spec.rb
|
|
221
250
|
- spec/legion/extensions/apollo/runners/entity_extractor_spec.rb
|
|
222
251
|
- spec/legion/extensions/apollo/runners/expertise_spec.rb
|
|
223
252
|
- spec/legion/extensions/apollo/runners/gas_anticipate_spec.rb
|
|
253
|
+
- spec/legion/extensions/apollo/runners/gas_deposit_integration_spec.rb
|
|
224
254
|
- spec/legion/extensions/apollo/runners/gas_relate_spec.rb
|
|
225
255
|
- spec/legion/extensions/apollo/runners/gas_spec.rb
|
|
226
256
|
- spec/legion/extensions/apollo/runners/gas_synthesize_spec.rb
|
|
257
|
+
- spec/legion/extensions/apollo/runners/ingest_transaction_integration_spec.rb
|
|
227
258
|
- spec/legion/extensions/apollo/runners/knowledge_spec.rb
|
|
259
|
+
- spec/legion/extensions/apollo/runners/lifecycle_integration_spec.rb
|
|
228
260
|
- spec/legion/extensions/apollo/runners/maintenance_spec.rb
|
|
229
261
|
- spec/legion/extensions/apollo/runners/request_spec.rb
|
|
230
262
|
- spec/legion/extensions/apollo/transport/messages/ingest_spec.rb
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require 'legion/extensions/apollo/helpers/graph_query'
|
|
5
|
-
|
|
6
|
-
RSpec.describe Legion::Extensions::Apollo::Helpers::GraphQuery do
|
|
7
|
-
describe 'constants' do
|
|
8
|
-
it 'defines SPREAD_FACTOR' do
|
|
9
|
-
expect(described_class::SPREAD_FACTOR).to eq(0.6)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'defines DEFAULT_DEPTH' do
|
|
13
|
-
expect(described_class::DEFAULT_DEPTH).to eq(2)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it 'defines MIN_ACTIVATION' do
|
|
17
|
-
expect(described_class::MIN_ACTIVATION).to eq(0.1)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe '.build_traversal_sql' do
|
|
22
|
-
it 'returns SQL string with entry_id placeholder' do
|
|
23
|
-
sql = described_class.build_traversal_sql(depth: 2)
|
|
24
|
-
expect(sql).to include('apollo_entries')
|
|
25
|
-
expect(sql).to include('apollo_relations')
|
|
26
|
-
expect(sql).to include('WITH RECURSIVE')
|
|
27
|
-
expect(sql).to include(':entry_id')
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it 'includes relation type filter when specified' do
|
|
31
|
-
sql = described_class.build_traversal_sql(depth: 2, relation_types: %w[causes depends_on])
|
|
32
|
-
expect(sql).to include("'causes'")
|
|
33
|
-
expect(sql).to include("'depends_on'")
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'respects custom depth' do
|
|
37
|
-
sql = described_class.build_traversal_sql(depth: 3)
|
|
38
|
-
expect(sql).to include('g.depth < 3')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it 'applies spread factor and min activation' do
|
|
42
|
-
sql = described_class.build_traversal_sql(depth: 2)
|
|
43
|
-
expect(sql).to include('0.6')
|
|
44
|
-
expect(sql).to include('0.1')
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
describe '.build_semantic_search_sql' do
|
|
49
|
-
it 'returns SQL with vector placeholder' do
|
|
50
|
-
sql = described_class.build_semantic_search_sql(limit: 5, min_confidence: 0.3)
|
|
51
|
-
expect(sql).to include('apollo_entries')
|
|
52
|
-
expect(sql).to include(':embedding')
|
|
53
|
-
expect(sql).to include('<=>')
|
|
54
|
-
expect(sql).to include('LIMIT 5')
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it 'includes status filter' do
|
|
58
|
-
sql = described_class.build_semantic_search_sql(limit: 10, statuses: %w[confirmed])
|
|
59
|
-
expect(sql).to include("'confirmed'")
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it 'includes tag filter when specified' do
|
|
63
|
-
sql = described_class.build_semantic_search_sql(limit: 10, tags: %w[vault dns])
|
|
64
|
-
expect(sql).to include("'vault'")
|
|
65
|
-
expect(sql).to include("'dns'")
|
|
66
|
-
expect(sql).to include('&&')
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
context 'without requesting_principal_id' do
|
|
70
|
-
it 'includes no access_scope filter' do
|
|
71
|
-
sql = described_class.build_semantic_search_sql(limit: 5, min_confidence: 0.3)
|
|
72
|
-
expect(sql).not_to include('access_scope')
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
context 'with requesting_principal_id' do
|
|
77
|
-
let(:sql) { described_class.build_semantic_search_sql(limit: 5, min_confidence: 0.3, requesting_principal_id: 42) }
|
|
78
|
-
|
|
79
|
-
it 'allows global entries unconditionally' do
|
|
80
|
-
expect(sql).to include("access_scope = 'global'")
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it 'allows private entries owned by the principal via principal FK' do
|
|
84
|
-
expect(sql).to include('e.identity_principal_id = 42')
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it 'allows private entries owned by the principal via identity subquery (multi-provider auth)' do
|
|
88
|
-
expect(sql).to include('SELECT id FROM identities WHERE principal_id = 42')
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it 'allows team entries when principal shares a group with the submitter' do
|
|
92
|
-
expect(sql).to include('identity_group_memberships')
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it 'wraps the entire access_scope condition in parentheses so it does not break AND chaining' do
|
|
96
|
-
expect(sql).to match(/AND \(.*access_scope.*\)/m)
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|