legion-tty 0.2.10 → 0.3.1

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: ea23a72fd076f819eae9c2b21e1fa72de878e670022aae957ecd8c55d25cfa08
4
- data.tar.gz: f5987ba4e11c0e82dd814a3985e759f3db23216047d6297ba4af4f84e1cd34b6
3
+ metadata.gz: df932fba0f861bcb1473808566486e7ebc769ab735d53b4464f2d1c77a78f7a0
4
+ data.tar.gz: a13036205e7d36cee04d0dbdea574041b358f62cf7d533b87a564a86a39a4ddd
5
5
  SHA512:
6
- metadata.gz: 7d814de2b94f34585861c914e41436d5ce2095c74d17415d1d6e3265138e715910a7695c37544c815a2413e9ffd1c29ebca5986fa9af3b3e01c653165e483058
7
- data.tar.gz: 18eba2616be0ce56df9875992c50f529b0d2c113ee87fd3da2fa0c40700cbd9f4a999a3b67605455064ac455eaa91de9830286cfeed9cccb82ebfcb32b58ca0a
6
+ metadata.gz: f9d27f13872938348b97a31cb8949cb93d158c3b288dc9972ad48de25b9e47abdd298a5fa0688c3b9497648ce864280308d1ec82653502192a57ea00535ed80a
7
+ data.tar.gz: aad5dfe5fa9b5960acde7a58d086ac87ccd49c2503d6bed0e3a0220d2a5caae4d121b38e2d53f78cfa940c43dc665d252c5ffc5ddbdb32ce4bd5f791b8837149
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.1] - 2026-03-19
4
+
5
+ ### Fixed
6
+ - LLM boot order: follow Legion::Service init sequence (logging -> settings -> crypt -> resolve_secrets -> LLM merge -> start) instead of ad-hoc loading
7
+ - TTY shell now correctly discovers LLM providers configured in ~/.legionio/settings/llm.json
8
+
9
+ ### Added
10
+ - `boot_legion_subsystems` method mirrors Service.rb initialization order
11
+ - `settings_search_path` helper matching Service default config search paths
12
+
3
13
  ## [0.2.9] - 2026-03-18
4
14
 
5
15
  ### Fixed
@@ -93,6 +93,7 @@ module Legion
93
93
  end
94
94
 
95
95
  def setup_llm
96
+ boot_legion_subsystems
96
97
  @llm_chat = try_settings_llm || try_credentials_llm
97
98
  rescue StandardError
98
99
  @llm_chat = nil
@@ -140,9 +141,48 @@ module Legion
140
141
 
141
142
  private
142
143
 
143
- def try_settings_llm
144
- require 'legion/llm'
144
+ def boot_legion_subsystems # rubocop:disable Metrics/MethodLength
145
+ # Follow the same init order as Legion::Service:
146
+ # 1. logging 2. settings 3. crypt 4. resolve secrets 5. LLM merge
147
+ require 'legion/logging'
148
+ Legion::Logging.setup(log_level: 'error', level: 'error', trace: false)
149
+
145
150
  require 'legion/settings'
151
+ unless Legion::Settings.instance_variable_get(:@loader)
152
+ config_dir = settings_search_path
153
+ Legion::Settings.load(config_dir: config_dir)
154
+ end
155
+
156
+ begin
157
+ require 'legion/crypt'
158
+ Legion::Crypt.start unless Legion::Crypt.instance_variable_get(:@started)
159
+ Legion::Settings.resolve_secrets! if Legion::Settings.respond_to?(:resolve_secrets!)
160
+ rescue LoadError, StandardError
161
+ nil
162
+ end
163
+
164
+ begin
165
+ require 'legion/llm'
166
+ Legion::Settings.merge_settings(:llm, Legion::LLM::Settings.default)
167
+ rescue LoadError
168
+ nil
169
+ end
170
+ rescue LoadError
171
+ nil
172
+ end
173
+
174
+ def settings_search_path
175
+ [
176
+ '/etc/legionio',
177
+ File.expand_path('~/.legionio/settings'),
178
+ File.expand_path('~/legionio'),
179
+ './settings'
180
+ ].find { |p| Dir.exist?(p) } || @config_dir
181
+ end
182
+
183
+ def try_settings_llm
184
+ return nil unless defined?(Legion::LLM)
185
+
146
186
  Legion::LLM.start unless Legion::LLM.started?
147
187
  return nil unless Legion::LLM.started?
148
188
 
@@ -150,7 +190,7 @@ module Legion
150
190
  return nil unless provider
151
191
 
152
192
  Legion::LLM.chat(provider: provider)
153
- rescue LoadError, StandardError
193
+ rescue StandardError
154
194
  nil
155
195
  end
156
196
 
@@ -248,14 +288,13 @@ module Legion
248
288
  end
249
289
 
250
290
  def try_legion_llm(llm_provider, api_key)
251
- require 'legion/llm'
252
- return false unless defined?(Legion::Settings)
291
+ return false unless defined?(Legion::LLM) && defined?(Legion::Settings)
253
292
 
254
293
  Legion::Settings[:llm][:providers][llm_provider][:enabled] = true
255
294
  Legion::Settings[:llm][:providers][llm_provider][:api_key] = api_key
256
295
  Legion::LLM.start unless Legion::LLM.started?
257
296
  true
258
- rescue LoadError, StandardError
297
+ rescue StandardError
259
298
  false
260
299
  end
261
300
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module TTY
5
- VERSION = '0.2.10'
5
+ VERSION = '0.3.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-tty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity