legionio 1.6.33 → 1.6.34
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 +9 -0
- data/lib/legion/api/logs.rb +13 -3
- data/lib/legion/cli/connection.rb +11 -0
- data/lib/legion/cli/knowledge_command.rb +16 -30
- data/lib/legion/version.rb +1 -1
- 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: f47bba61ed42d34114fc93779bc2c911b6dd67f03f6d06febaae9424bc0c61cf
|
|
4
|
+
data.tar.gz: c4e45617785c4a31b32f9802b0ec77cc57dceb9ad223b6f71a35a9a54b21c119
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 92a3fed3a076dc34d63fdb69dbde68d3a73ce4f68c17652dfa862fbc355b8df9ac0e1023edd1a93020806d6af838071dd103dc176b6b32a0d03b51e1f03fec6c
|
|
7
|
+
data.tar.gz: 13dfb3297160e508288d61f3713d8a97ee930b74cd58eab56311116ab2bbb065c88d20ba279ea6c55b6fb62af5623c8222bcf560a88aa0c93e8f24693ba38aca
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [1.6.34] - 2026-03-29
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- `POST /api/logs` no longer raises `NoMethodError: undefined method 'values' for nil` — replaced `Legion::Transport::Messages::Dynamic.new(...).publish` with a direct `Legion::Transport::Exchanges::Logging` publish call; `Dynamic` requires a `function_id` for database lookup which log payloads do not have
|
|
9
|
+
- `legion knowledge` CLI commands (`require_monitor!`, `require_knowledge!`, `require_ingest!`, `require_maintenance!`) now use `Connection.ensure_knowledge` to dynamically load `lex-knowledge` when not yet loaded, instead of raising a generic error
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `Connection.ensure_knowledge` — lazily loads the `lex-knowledge` gem on demand, consistent with `ensure_llm` and other lazy loaders
|
|
13
|
+
|
|
5
14
|
## [1.6.33] - 2026-03-28
|
|
6
15
|
|
|
7
16
|
### Added
|
data/lib/legion/api/logs.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'legion/transport/exchanges/logging'
|
|
4
|
+
|
|
3
5
|
module Legion
|
|
4
6
|
class API < Sinatra::Base
|
|
5
7
|
module Routes
|
|
@@ -20,9 +22,17 @@ module Legion
|
|
|
20
22
|
payload = Legion::API::Routes::Logs.build_log_payload(body, level, source)
|
|
21
23
|
key = Legion::API::Routes::Logs.routing_key_for(body, level, source)
|
|
22
24
|
|
|
23
|
-
Legion::Transport::
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
exchange = Legion::Transport::Exchanges::Logging.cached_instance || Legion::Transport::Exchanges::Logging.new
|
|
26
|
+
exchange.publish(
|
|
27
|
+
Legion::JSON.dump(payload),
|
|
28
|
+
routing_key: key,
|
|
29
|
+
content_type: 'application/json',
|
|
30
|
+
content_encoding: 'identity',
|
|
31
|
+
type: 'log',
|
|
32
|
+
persistent: true,
|
|
33
|
+
app_id: 'legion',
|
|
34
|
+
headers: { 'legion_protocol_version' => '2.0' }
|
|
35
|
+
)
|
|
26
36
|
|
|
27
37
|
json_response({ published: true, routing_key: key }, status_code: 201)
|
|
28
38
|
rescue StandardError => e
|
|
@@ -88,6 +88,17 @@ module Legion
|
|
|
88
88
|
raise CLI::Error, 'legion-cache gem is not installed (gem install legion-cache)'
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
+
def ensure_knowledge
|
|
92
|
+
return if @knowledge_ready
|
|
93
|
+
|
|
94
|
+
ensure_settings
|
|
95
|
+
spec = Gem::Specification.find_by_name('lex-knowledge')
|
|
96
|
+
require "#{spec.gem_dir}/lib/legion/extensions/knowledge"
|
|
97
|
+
@knowledge_ready = true
|
|
98
|
+
rescue Gem::MissingSpecError
|
|
99
|
+
raise CLI::Error, 'lex-knowledge gem is not installed (gem install lex-knowledge)'
|
|
100
|
+
end
|
|
101
|
+
|
|
91
102
|
def ensure_llm
|
|
92
103
|
return if @llm_ready
|
|
93
104
|
|
|
@@ -90,9 +90,7 @@ module Legion
|
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def require_monitor!
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
raise CLI::Error, 'lex-knowledge extension is not loaded. Install and enable it first.'
|
|
93
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Monitor)
|
|
96
94
|
end
|
|
97
95
|
end
|
|
98
96
|
end
|
|
@@ -120,15 +118,12 @@ module Legion
|
|
|
120
118
|
content = "Git commit: #{sha}\nSubject: #{subject}\n\nDiff stat:\n#{diff_stat}"
|
|
121
119
|
tags = %w[git commit knowledge-capture]
|
|
122
120
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
else
|
|
130
|
-
{ success: false, error: 'lex-knowledge not loaded' }
|
|
131
|
-
end
|
|
121
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Ingest)
|
|
122
|
+
result = Legion::Extensions::Knowledge::Runners::Ingest.ingest_file(
|
|
123
|
+
content: content,
|
|
124
|
+
tags: tags,
|
|
125
|
+
source: "git:#{sha}"
|
|
126
|
+
)
|
|
132
127
|
|
|
133
128
|
out = formatter
|
|
134
129
|
if options[:json]
|
|
@@ -155,15 +150,12 @@ module Legion
|
|
|
155
150
|
tags = ['session', 'knowledge-capture', ::Time.now.strftime('%Y-%m-%d')]
|
|
156
151
|
tags << "repo:#{repo}" unless repo.empty?
|
|
157
152
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
else
|
|
165
|
-
{ success: false, error: 'lex-knowledge not loaded' }
|
|
166
|
-
end
|
|
153
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Ingest)
|
|
154
|
+
result = Legion::Extensions::Knowledge::Runners::Ingest.ingest_file(
|
|
155
|
+
content: content,
|
|
156
|
+
tags: tags,
|
|
157
|
+
source: "session:#{::Time.now.iso8601}"
|
|
158
|
+
)
|
|
167
159
|
|
|
168
160
|
out = formatter
|
|
169
161
|
if options[:json]
|
|
@@ -473,21 +465,15 @@ module Legion
|
|
|
473
465
|
end
|
|
474
466
|
|
|
475
467
|
def require_knowledge!
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
raise CLI::Error, 'lex-knowledge extension is not loaded. Install and enable it first.'
|
|
468
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Query)
|
|
479
469
|
end
|
|
480
470
|
|
|
481
471
|
def require_ingest!
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
raise CLI::Error, 'lex-knowledge extension is not loaded. Install and enable it first.'
|
|
472
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Ingest)
|
|
485
473
|
end
|
|
486
474
|
|
|
487
475
|
def require_maintenance!
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
raise CLI::Error, 'lex-knowledge extension is not loaded. Install and enable it first.'
|
|
476
|
+
Connection.ensure_knowledge unless defined?(Legion::Extensions::Knowledge::Runners::Maintenance)
|
|
491
477
|
end
|
|
492
478
|
|
|
493
479
|
def knowledge_query
|
data/lib/legion/version.rb
CHANGED