lex-llm-gateway 0.2.13 → 0.2.15
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 +12 -0
- data/Gemfile +2 -0
- data/README.md +7 -2
- data/lex-llm-gateway.gemspec +2 -3
- data/lib/legion/extensions/llm/gateway/actors/inference_worker.rb +2 -2
- data/lib/legion/extensions/llm/gateway/actors/metering_writer.rb +2 -2
- data/lib/legion/extensions/llm/gateway/actors/spool_flush.rb +2 -2
- data/lib/legion/extensions/llm/gateway/client.rb +1 -1
- data/lib/legion/extensions/llm/gateway/helpers/auth.rb +1 -1
- data/lib/legion/extensions/llm/gateway/helpers/cost_estimator.rb +1 -1
- data/lib/legion/extensions/llm/gateway/helpers/reply_dispatcher.rb +1 -1
- data/lib/legion/extensions/llm/gateway/helpers/rpc.rb +1 -1
- data/lib/legion/extensions/llm/gateway/helpers/usage_queries.rb +1 -1
- data/lib/legion/extensions/llm/gateway/runners/fleet.rb +1 -1
- data/lib/legion/extensions/llm/gateway/runners/fleet_handler.rb +1 -1
- data/lib/legion/extensions/llm/gateway/runners/inference.rb +2 -2
- data/lib/legion/extensions/llm/gateway/runners/metering.rb +4 -4
- data/lib/legion/extensions/llm/gateway/runners/metering_writer.rb +1 -1
- data/lib/legion/extensions/llm/gateway/runners/provider_stats.rb +1 -1
- data/lib/legion/extensions/llm/gateway/runners/usage_reporter.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/exchanges/inference.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/exchanges/metering.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/messages/inference_request.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/messages/inference_response.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/messages/metering_event.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/queues/inference_process.rb +1 -1
- data/lib/legion/extensions/llm/gateway/transport/queues/metering_write.rb +1 -1
- data/lib/legion/extensions/llm/gateway/version.rb +2 -2
- data/lib/legion/extensions/llm/gateway.rb +1 -3
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7378ffac978b8fb4e5b5811fb5fbe0034260894eb1a12b5a49bdb445b519dfc
|
|
4
|
+
data.tar.gz: c7f0620b53bc3e684d5421bd6ec416a5aead215487e5d469200c8e76dbeb64a5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f9b5b71f37af3ab2a1d925cac0c2ecee197e8b3e5feeaafd0e80230dd6d499b7af773d0c515156e84220779184e48b7d473be07f5145c58136f2b75e2148ad50
|
|
7
|
+
data.tar.gz: 46d748650fa0f14e2546ca97372fc92ed11e7fb1040b59b33ace1e189c0bf00ff6b45ffc5b3b7fe1c73e66b6a0ba28441b68ba932001127a86bab1e60debabea
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.15] - 2026-04-28
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Mark `lex-llm-gateway` as legacy compatibility glue now that the `legion-llm` uplift owns in-tree metering, fleet transport, and inference routing
|
|
7
|
+
- Update README/CLAUDE namespace and version references after the `Llm::Gateway` rename
|
|
8
|
+
|
|
9
|
+
## [0.2.14] - 2026-04-09
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Rename module namespace from `Legion::Extensions::LLM::Gateway` to `Legion::Extensions::Llm::Gateway` for framework const_get compatibility
|
|
13
|
+
- Remove `remove_const(:Llm)` / `Llm = LLM` alias hack that caused namespace collisions with other `lex-llm-*` extensions
|
|
14
|
+
|
|
3
15
|
## [0.2.13] - 2026-03-30
|
|
4
16
|
|
|
5
17
|
### Changed
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# lex-llm-gateway
|
|
2
2
|
|
|
3
|
+
**Version**: 0.2.15 | **License**: MIT | **Ruby**: >= 3.4
|
|
4
|
+
|
|
5
|
+
> [!WARNING]
|
|
6
|
+
> `lex-llm-gateway` is legacy compatibility glue. New LegionIO LLM work should use `legion-llm` directly; the current `legion-llm` uplift owns in-tree metering, fleet transport, and inference routing through `Legion::LLM`.
|
|
7
|
+
|
|
3
8
|
LLM inference gateway for [LegionIO](https://github.com/LegionIO/LegionIO). Provides centralized metering over RabbitMQ, fleet RPC dispatch to GPU workers, and local disk spooling for offline resilience.
|
|
4
9
|
|
|
5
10
|
## Installation
|
|
@@ -46,7 +51,7 @@ Full stack (transport + gateway + LLM + fleet)
|
|
|
46
51
|
```ruby
|
|
47
52
|
require 'legion/extensions/llm/gateway/client'
|
|
48
53
|
|
|
49
|
-
client = Legion::Extensions::
|
|
54
|
+
client = Legion::Extensions::Llm::Gateway::Client.new
|
|
50
55
|
result = client.chat(model: 'claude-opus-4-6', messages: [{ role: 'user', content: 'Hello' }])
|
|
51
56
|
result[:success] # => true
|
|
52
57
|
result[:response] # => "Hello! How can I help you?"
|
|
@@ -75,7 +80,7 @@ result[:response] # => "Hello! How can I help you?"
|
|
|
75
80
|
- `legion-transport` (AMQP metering + inference queues)
|
|
76
81
|
- `legion-crypt` (JWT signing for fleet auth, optional)
|
|
77
82
|
- `legion-data` (MeteringWriter and disk spool, optional)
|
|
78
|
-
- `legion-llm` (inference
|
|
83
|
+
- `legion-llm` (preferred inference, fleet, and metering owner for new work)
|
|
79
84
|
|
|
80
85
|
## Development
|
|
81
86
|
|
data/lex-llm-gateway.gemspec
CHANGED
|
@@ -6,11 +6,11 @@ require 'legion/extensions/llm/gateway/version'
|
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = 'lex-llm-gateway'
|
|
9
|
-
spec.version = Legion::Extensions::
|
|
9
|
+
spec.version = Legion::Extensions::Llm::Gateway::VERSION
|
|
10
10
|
spec.authors = ['Esity']
|
|
11
11
|
spec.email = ['matthewdiverson@gmail.com']
|
|
12
12
|
|
|
13
|
-
spec.summary = 'Legion::Extensions::
|
|
13
|
+
spec.summary = 'Legion::Extensions::Llm::Gateway'
|
|
14
14
|
spec.description = 'LLM inference gateway: metering over RabbitMQ, fleet RPC dispatch, local disk spool'
|
|
15
15
|
spec.homepage = 'https://github.com/LegionIO/lex-llm-gateway'
|
|
16
16
|
spec.license = 'MIT'
|
|
@@ -36,7 +36,6 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_dependency 'legion-settings', '>= 1.3.14'
|
|
37
37
|
spec.add_dependency 'legion-transport', '>= 1.3.9'
|
|
38
38
|
|
|
39
|
-
spec.add_development_dependency 'rake'
|
|
40
39
|
spec.add_development_dependency 'rspec'
|
|
41
40
|
spec.add_development_dependency 'rubocop'
|
|
42
41
|
spec.add_development_dependency 'rubocop-legion'
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module Legion
|
|
4
4
|
module Extensions
|
|
5
|
-
module
|
|
5
|
+
module Llm
|
|
6
6
|
module Gateway
|
|
7
7
|
module Actor
|
|
8
8
|
class InferenceWorker < Legion::Extensions::Actors::Subscription
|
|
9
9
|
def runner_class
|
|
10
|
-
'Legion::Extensions::
|
|
10
|
+
'Legion::Extensions::Llm::Gateway::Runners::FleetHandler'
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def runner_function
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module Legion
|
|
4
4
|
module Extensions
|
|
5
|
-
module
|
|
5
|
+
module Llm
|
|
6
6
|
module Gateway
|
|
7
7
|
module Actor
|
|
8
8
|
class MeteringWriter < Legion::Extensions::Actors::Subscription
|
|
9
9
|
def runner_class
|
|
10
|
-
'Legion::Extensions::
|
|
10
|
+
'Legion::Extensions::Llm::Gateway::Runners::MeteringWriter'
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def runner_function
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module Legion
|
|
4
4
|
module Extensions
|
|
5
|
-
module
|
|
5
|
+
module Llm
|
|
6
6
|
module Gateway
|
|
7
7
|
module Actor
|
|
8
8
|
class SpoolFlush < Legion::Extensions::Actors::Every # rubocop:disable Legion/Extension/EveryActorRequiresTime
|
|
9
9
|
def runner_class
|
|
10
|
-
'Legion::Extensions::
|
|
10
|
+
'Legion::Extensions::Llm::Gateway::Runners::Metering'
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def runner_function
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module Legion
|
|
4
4
|
module Extensions
|
|
5
|
-
module
|
|
5
|
+
module Llm
|
|
6
6
|
module Gateway
|
|
7
7
|
module Runners
|
|
8
8
|
module Inference
|
|
@@ -100,7 +100,7 @@ module Legion
|
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def fleet_available?
|
|
103
|
-
defined?(Legion::Extensions::
|
|
103
|
+
defined?(Legion::Extensions::Llm::Gateway::Runners::Fleet) &&
|
|
104
104
|
Fleet.respond_to?(:fleet_available?) && Fleet.fleet_available?
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module Legion
|
|
4
4
|
module Extensions
|
|
5
|
-
module
|
|
5
|
+
module Llm
|
|
6
6
|
module Gateway
|
|
7
7
|
module Runners
|
|
8
8
|
module Metering
|
|
@@ -56,7 +56,7 @@ module Legion
|
|
|
56
56
|
def flush_spool
|
|
57
57
|
return 0 unless spool_available? && transport_connected?
|
|
58
58
|
|
|
59
|
-
spool = Legion::Data::Spool.for(Legion::Extensions::
|
|
59
|
+
spool = Legion::Data::Spool.for(Legion::Extensions::Llm::Gateway)
|
|
60
60
|
spool.flush(:metering) { |event| publish_event(event) }
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -71,11 +71,11 @@ module Legion
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def publish_event(event)
|
|
74
|
-
Legion::Extensions::
|
|
74
|
+
Legion::Extensions::Llm::Gateway::Transport::Messages::MeteringEvent.new(**event).publish
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def spool_event(event)
|
|
78
|
-
spool = Legion::Data::Spool.for(Legion::Extensions::
|
|
78
|
+
spool = Legion::Data::Spool.for(Legion::Extensions::Llm::Gateway)
|
|
79
79
|
spool.write(:metering, event)
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -4,12 +4,10 @@ require 'legion/extensions/llm/gateway/version'
|
|
|
4
4
|
|
|
5
5
|
module Legion
|
|
6
6
|
module Extensions
|
|
7
|
-
module
|
|
7
|
+
module Llm
|
|
8
8
|
module Gateway
|
|
9
9
|
extend Legion::Extensions::Core if Legion::Extensions.const_defined?(:Core, false)
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
|
-
remove_const(:Llm) if const_defined?(:Llm, false)
|
|
13
|
-
Llm = LLM
|
|
14
12
|
end
|
|
15
13
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-llm-gateway
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -107,20 +107,6 @@ dependencies:
|
|
|
107
107
|
- - ">="
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
109
|
version: 1.3.9
|
|
110
|
-
- !ruby/object:Gem::Dependency
|
|
111
|
-
name: rake
|
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
|
-
type: :development
|
|
118
|
-
prerelease: false
|
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
110
|
- !ruby/object:Gem::Dependency
|
|
125
111
|
name: rspec
|
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -241,5 +227,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
241
227
|
requirements: []
|
|
242
228
|
rubygems_version: 3.6.9
|
|
243
229
|
specification_version: 4
|
|
244
|
-
summary: Legion::Extensions::
|
|
230
|
+
summary: Legion::Extensions::Llm::Gateway
|
|
245
231
|
test_files: []
|