lex-apollo 0.4.8 → 0.4.9

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: ef4d63cf3e8b7a9ce86f11af1150b851a911fa7383ca2233d753bc328be31cb5
4
- data.tar.gz: 8d4e3f73d3d7d04c1dff338eb226a3385d0977d57d77c2378d41723b3fff80e6
3
+ metadata.gz: 59e9aac7402ce0e7ecf6c11f6fd65ca9fbe0f23c89583b724db0a8502c290201
4
+ data.tar.gz: 210cc5d0b6ef7e466f0783e354dc24181be86c01c473399c18602c2729b14796
5
5
  SHA512:
6
- metadata.gz: fae193470f3da5dedcdb5ee91310ac824064aa3ebd60de9f21e9d9a6c5eb770db23ad21603cb6c8d7337fb7fb84b1f85f9c3155f1ff38cac2bd426a3270eaabf
7
- data.tar.gz: 6d6827a8defe1e41724a3033193f774034830cddf28bd34096622410f736d233a79853567f71b5e2f7547e48194ff3d23ce685633b55f832747ad37026c54df5
6
+ metadata.gz: 330d8e9902f715f934c343b83ecf44da34e01d5e93176d846fa155cad954bb8b7d8d7f2b0f817a9fc2a83fe476b18b9601114c16932b2351d8bd89a9a0b1ce10
7
+ data.tar.gz: 6178bfd570b0ac4e5bcf5b3e1e9dc45db26f80423487fe55ce01e96cbbfa89f857611c264a80d429cb6475c24b8649b40015c96f989531cf2404e836da0dcd75
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.9] - 2026-03-25
4
+
5
+ ### Changed
6
+ - `Helpers::Writeback#write_directly` now routes through `Legion::Apollo.ingest` when the core library is loaded, falling back to `Runners::Knowledge.handle_ingest` for backward compatibility when it is not
7
+
3
8
  ## [0.4.8] - 2026-03-25
4
9
 
5
10
  ### Changed
@@ -77,7 +77,11 @@ module Legion
77
77
  end
78
78
 
79
79
  def write_directly(payload)
80
- Runners::Knowledge.handle_ingest(**payload)
80
+ if defined?(Legion::Apollo)
81
+ Legion::Apollo.ingest(**payload)
82
+ else
83
+ Runners::Knowledge.handle_ingest(**payload)
84
+ end
81
85
  rescue StandardError => e
82
86
  Legion::Logging.warn("apollo direct write failed, falling back to transport: #{e.message}") if defined?(Legion::Logging)
83
87
  publish_to_transport(payload, has_embedding: !payload[:embedding].nil?)
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Apollo
6
- VERSION = '0.4.8'
6
+ VERSION = '0.4.9'
7
7
  end
8
8
  end
9
9
  end
@@ -80,6 +80,68 @@ RSpec.describe Legion::Extensions::Apollo::Helpers::Writeback do
80
80
  end
81
81
  end
82
82
 
83
+ describe '.write_directly' do
84
+ let(:payload) do
85
+ {
86
+ content: 'test content for ingest',
87
+ tags: %w[test ruby],
88
+ content_type: 'observation',
89
+ embedding: Array.new(1024, 0.1)
90
+ }
91
+ end
92
+
93
+ context 'when Legion::Apollo is defined' do
94
+ before do
95
+ stub_const('Legion::Apollo', Module.new)
96
+ allow(Legion::Apollo).to receive(:ingest)
97
+ end
98
+
99
+ it 'routes through Legion::Apollo.ingest' do
100
+ described_class.write_directly(payload)
101
+ expect(Legion::Apollo).to have_received(:ingest).with(**payload)
102
+ end
103
+
104
+ it 'does not call Runners::Knowledge.handle_ingest directly' do
105
+ knowledge_mod = Module.new { def self.handle_ingest(**_); end }
106
+ stub_const('Legion::Extensions::Apollo::Runners', Module.new)
107
+ stub_const('Legion::Extensions::Apollo::Runners::Knowledge', knowledge_mod)
108
+ allow(knowledge_mod).to receive(:handle_ingest)
109
+ described_class.write_directly(payload)
110
+ expect(knowledge_mod).not_to have_received(:handle_ingest)
111
+ end
112
+ end
113
+
114
+ context 'when Legion::Apollo is not defined' do
115
+ let(:knowledge_mod) { Module.new { def self.handle_ingest(**_); end } }
116
+
117
+ before do
118
+ hide_const('Legion::Apollo') if defined?(Legion::Apollo)
119
+ stub_const('Legion::Extensions::Apollo::Runners', Module.new)
120
+ stub_const('Legion::Extensions::Apollo::Runners::Knowledge', knowledge_mod)
121
+ allow(knowledge_mod).to receive(:handle_ingest)
122
+ end
123
+
124
+ it 'falls back to Runners::Knowledge.handle_ingest' do
125
+ described_class.write_directly(payload)
126
+ expect(knowledge_mod).to have_received(:handle_ingest).with(**payload)
127
+ end
128
+ end
129
+
130
+ context 'when an error is raised' do
131
+ before do
132
+ stub_const('Legion::Apollo', Module.new)
133
+ allow(Legion::Apollo).to receive(:ingest).and_raise(StandardError, 'boom')
134
+ allow(described_class).to receive(:publish_to_transport)
135
+ end
136
+
137
+ it 'falls back to publish_to_transport' do
138
+ described_class.write_directly(payload)
139
+ expect(described_class).to have_received(:publish_to_transport)
140
+ .with(payload, has_embedding: true)
141
+ end
142
+ end
143
+ end
144
+
83
145
  describe '.content_hash' do
84
146
  it 'produces consistent hashes for same content' do
85
147
  hash1 = described_class.content_hash('hello world')
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.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity