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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +2 -0
  4. data/README.md +7 -2
  5. data/lex-llm-gateway.gemspec +2 -3
  6. data/lib/legion/extensions/llm/gateway/actors/inference_worker.rb +2 -2
  7. data/lib/legion/extensions/llm/gateway/actors/metering_writer.rb +2 -2
  8. data/lib/legion/extensions/llm/gateway/actors/spool_flush.rb +2 -2
  9. data/lib/legion/extensions/llm/gateway/client.rb +1 -1
  10. data/lib/legion/extensions/llm/gateway/helpers/auth.rb +1 -1
  11. data/lib/legion/extensions/llm/gateway/helpers/cost_estimator.rb +1 -1
  12. data/lib/legion/extensions/llm/gateway/helpers/reply_dispatcher.rb +1 -1
  13. data/lib/legion/extensions/llm/gateway/helpers/rpc.rb +1 -1
  14. data/lib/legion/extensions/llm/gateway/helpers/usage_queries.rb +1 -1
  15. data/lib/legion/extensions/llm/gateway/runners/fleet.rb +1 -1
  16. data/lib/legion/extensions/llm/gateway/runners/fleet_handler.rb +1 -1
  17. data/lib/legion/extensions/llm/gateway/runners/inference.rb +2 -2
  18. data/lib/legion/extensions/llm/gateway/runners/metering.rb +4 -4
  19. data/lib/legion/extensions/llm/gateway/runners/metering_writer.rb +1 -1
  20. data/lib/legion/extensions/llm/gateway/runners/provider_stats.rb +1 -1
  21. data/lib/legion/extensions/llm/gateway/runners/usage_reporter.rb +1 -1
  22. data/lib/legion/extensions/llm/gateway/transport/exchanges/inference.rb +1 -1
  23. data/lib/legion/extensions/llm/gateway/transport/exchanges/metering.rb +1 -1
  24. data/lib/legion/extensions/llm/gateway/transport/messages/inference_request.rb +1 -1
  25. data/lib/legion/extensions/llm/gateway/transport/messages/inference_response.rb +1 -1
  26. data/lib/legion/extensions/llm/gateway/transport/messages/metering_event.rb +1 -1
  27. data/lib/legion/extensions/llm/gateway/transport/queues/inference_process.rb +1 -1
  28. data/lib/legion/extensions/llm/gateway/transport/queues/metering_write.rb +1 -1
  29. data/lib/legion/extensions/llm/gateway/version.rb +2 -2
  30. data/lib/legion/extensions/llm/gateway.rb +1 -3
  31. metadata +2 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3508dacc36a4c4fe57b9969cebd91aad39c5e3ab0edd67234bcb1a7b2094d84
4
- data.tar.gz: 35eac64d3c2eadd149ad4c15dd87905ae83ea56a6b4b4a7ebbc1b7e0111b2605
3
+ metadata.gz: f7378ffac978b8fb4e5b5811fb5fbe0034260894eb1a12b5a49bdb445b519dfc
4
+ data.tar.gz: c7f0620b53bc3e684d5421bd6ec416a5aead215487e5d469200c8e76dbeb64a5
5
5
  SHA512:
6
- metadata.gz: 3910799509e5b020c223301493edae1bf5260d5544b5225448f2323740ce42139ea6fbc4a3350d61c01a66ebc0cfdf0c5fcb28a3c58d5e66796a209473e9b4e6
7
- data.tar.gz: 104043cffae24348aed89a1183c1426be9205f45f9c882d92183f35759b10cd0c2d5a5958e2f2d64bf05c87163f57535b27c816eeec20d229c4b5ff7f6bffd15
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
@@ -2,3 +2,5 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
  gemspec
5
+
6
+ gem 'rubocop-legion'
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::LLM::Gateway::Client.new
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 execution on fleet workers)
83
+ - `legion-llm` (preferred inference, fleet, and metering owner for new work)
79
84
 
80
85
  ## Development
81
86
 
@@ -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::LLM::Gateway::VERSION
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::LLM::Gateway'
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 LLM
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::LLM::Gateway::Runners::FleetHandler'
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 LLM
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::LLM::Gateway::Runners::MeteringWriter'
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 LLM
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::LLM::Gateway::Runners::Metering'
10
+ 'Legion::Extensions::Llm::Gateway::Runners::Metering'
11
11
  end
12
12
 
13
13
  def runner_function
@@ -6,7 +6,7 @@ require_relative 'runners/fleet'
6
6
 
7
7
  module Legion
8
8
  module Extensions
9
- module LLM
9
+ module Llm
10
10
  module Gateway
11
11
  class Client
12
12
  def initialize(**opts)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Helpers
8
8
  module Auth
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Helpers
8
8
  module CostEstimator
@@ -4,7 +4,7 @@ require 'concurrent'
4
4
 
5
5
  module Legion
6
6
  module Extensions
7
- module LLM
7
+ module Llm
8
8
  module Gateway
9
9
  module Helpers
10
10
  module ReplyDispatcher
@@ -4,7 +4,7 @@ require 'securerandom'
4
4
 
5
5
  module Legion
6
6
  module Extensions
7
- module LLM
7
+ module Llm
8
8
  module Gateway
9
9
  module Helpers
10
10
  module Rpc
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Helpers
8
8
  module UsageQueries
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Runners
8
8
  module Fleet
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Runners
8
8
  module FleetHandler
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
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::LLM::Gateway::Runners::Fleet) &&
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 LLM
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::LLM::Gateway)
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::LLM::Gateway::Transport::Messages::MeteringEvent.new(**event).publish
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::LLM::Gateway)
78
+ spool = Legion::Data::Spool.for(Legion::Extensions::Llm::Gateway)
79
79
  spool.write(:metering, event)
80
80
  end
81
81
  end
@@ -4,7 +4,7 @@ require_relative '../helpers/cost_estimator'
4
4
 
5
5
  module Legion
6
6
  module Extensions
7
- module LLM
7
+ module Llm
8
8
  module Gateway
9
9
  module Runners
10
10
  module MeteringWriter
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Runners
8
8
  module ProviderStats
@@ -4,7 +4,7 @@ require_relative '../helpers/usage_queries'
4
4
 
5
5
  module Legion
6
6
  module Extensions
7
- module LLM
7
+ module Llm
8
8
  module Gateway
9
9
  module Runners
10
10
  module UsageReporter
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Exchanges
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Exchanges
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Messages
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Messages
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Messages
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Queues
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
7
  module Transport
8
8
  module Queues
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Legion
4
4
  module Extensions
5
- module LLM
5
+ module Llm
6
6
  module Gateway
7
- VERSION = '0.2.13'
7
+ VERSION = '0.2.15'
8
8
  end
9
9
  end
10
10
  end
@@ -4,12 +4,10 @@ require 'legion/extensions/llm/gateway/version'
4
4
 
5
5
  module Legion
6
6
  module Extensions
7
- module LLM
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.13
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::LLM::Gateway
230
+ summary: Legion::Extensions::Llm::Gateway
245
231
  test_files: []