lex-llm-gemini 0.1.1 → 0.1.3

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: b03f32f8b23f0f05443b2e0a32d2a6860c287628b1f2bd9f5ee0ad38b458d311
4
- data.tar.gz: 1eb0389046f1c40f8b8e74c1ed306d871bdc6030492ead96aeec07293167bf10
3
+ metadata.gz: 7673575bf56bb514a64f48de727512748a7d0ea39508dc9cf03fc1a353176aed
4
+ data.tar.gz: ca88287ed62989ee44fc732c16a234aeb9df83dfa3e6bebf87b72369ea3cf471
5
5
  SHA512:
6
- metadata.gz: 9647f4d3d4bfa69924576f8cab5ff4b1523ace82b33d8ec60fcf9c57e7877f184f2f9920b6a7a5d46c5a3822dadddd0982f7bc215c7bd970d3c58744282d2773
7
- data.tar.gz: 905d32ea8573ee0903794c19547d7068c1c27aab9ad5f23b12fb57780908cf55a0f7e639604421a14558b64671557ad30dc8e08033ad57bbd4f1f762795b8ed9
6
+ metadata.gz: 4ec296851f8ef6301caf79f593d3aae1b9ae606ef10db99c10a619247e11a67e6991a1e570a41f87c1a522abbf68f69453013d9401edf9b6c9d1acb3580f51d9
7
+ data.tar.gz: 3d3163c19725b922247602d945913ce53d1c49ff02d97c020b665fa8cfd902d8abe5042282e809ae888ce60922ccdbcfd1a8d6e7aa3b6661a2856742aefba7bf
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  /pkg/
4
4
  /tmp/
5
5
  Gemfile.lock
6
+ *.gem
6
7
 
7
8
  .rspec_status*
8
9
  .env
data/CHANGELOG.md CHANGED
@@ -1,8 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3 - 2026-04-28
4
+
5
+ - Remove the leftover compatibility entrypoint outside the Legion namespace.
6
+ - Load specs through the canonical `legion/extensions/llm/gemini` namespace path.
7
+ - Keep provider gemspec dependencies scoped to the shared `lex-llm` base gem.
8
+
9
+ ## 0.1.2 - 2026-04-28
10
+
11
+ - Replace fork-era namespace references with the standard Legion::Extensions::Llm provider contract.
12
+ - Remove GitHub-based lex-llm Gemfile fallback so test installs use only a guarded local path or released gem dependency.
13
+ - Require lex-llm >= 0.1.3 for the cleaned Legion-native base extension.
14
+
3
15
  ## 0.1.1 - 2026-04-27
4
16
 
5
- - Add the Gemini LexLLM provider class with generateContent, streaming, model listing, and embedContent helpers.
17
+ - Add the Gemini Legion::Extensions::Llm provider class with generateContent, streaming, model listing, and embedContent helpers.
6
18
  - Use shared `Legion::Extensions::Llm.provider_settings` defaults from `lex-llm`.
7
19
  - Remove the committed `Gemfile.lock`.
8
20
 
data/Gemfile CHANGED
@@ -3,12 +3,8 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  group :test do
6
- if ENV['LEX_LLM_PATH'] && File.directory?(ENV.fetch('LEX_LLM_PATH'))
7
- gem 'lex-llm', path: ENV.fetch('LEX_LLM_PATH')
8
- else
9
- gem 'lex-llm', git: 'https://github.com/LegionIO/lex-llm',
10
- branch: ENV.fetch('LEX_LLM_BRANCH', 'main')
11
- end
6
+ llm_base_path = ENV.fetch('LEX_LLM_PATH', File.expand_path('../lex-llm', __dir__))
7
+ gem 'lex-llm', path: llm_base_path if File.directory?(llm_base_path)
12
8
  end
13
9
 
14
10
  gemspec
data/README.md CHANGED
@@ -4,9 +4,11 @@ LegionIO LLM provider extension for Gemini.
4
4
 
5
5
  This gem lives under `Legion::Extensions::Llm::Gemini` and depends on `lex-llm` for shared provider-neutral routing, fleet, and schema primitives.
6
6
 
7
+ Load it with `require 'legion/extensions/llm/gemini'`.
8
+
7
9
  ## What It Provides
8
10
 
9
- - `LexLLM::Provider` registration as `:gemini`
11
+ - `Legion::Extensions::Llm::Provider` registration as `:gemini`
10
12
  - Gemini-native chat requests through `POST /v1beta/{model=models/*}:generateContent`
11
13
  - streaming chat support through `POST /v1beta/{model=models/*}:streamGenerateContent?alt=sse`
12
14
  - model discovery through `GET /v1beta/models`
@@ -35,7 +37,7 @@ Legion::Extensions::Llm::Gemini.default_settings
35
37
  ## Configuration
36
38
 
37
39
  ```ruby
38
- LexLLM.configure do |config|
40
+ Legion::Extensions::Llm.configure do |config|
39
41
  config.gemini_api_key = ENV.fetch("GEMINI_API_KEY")
40
42
  config.gemini_api_base = "https://generativelanguage.googleapis.com/v1beta"
41
43
  config.default_model = "gemini-2.0-flash"
@@ -23,9 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.files = `git ls-files -z`.split("\x0").reject { |file| file.match(%r{^(spec|test|features|tmp|coverage)/}) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_dependency 'faraday', '>= 2.0'
27
- spec.add_dependency 'legion-json', '>= 1.0'
28
- spec.add_dependency 'legion-logging', '>= 1.0'
29
- spec.add_dependency 'legion-settings', '>= 1.3.14'
30
- spec.add_dependency 'lex-llm', '>= 0.1.1'
26
+ spec.add_dependency 'lex-llm', '>= 0.1.3'
31
27
  end
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lex_llm'
4
- require 'legion/json'
3
+ require 'legion/extensions/llm'
5
4
 
6
5
  module Legion
7
6
  module Extensions
8
7
  module Llm
9
8
  module Gemini
10
- # Gemini provider implementation for the LexLLM base provider contract.
11
- class Provider < LexLLM::Provider # rubocop:disable Metrics/ClassLength
9
+ # Gemini provider implementation for the Legion::Extensions::Llm base provider contract.
10
+ class Provider < Legion::Extensions::Llm::Provider # rubocop:disable Metrics/ClassLength
12
11
  class << self
13
12
  def slug = 'gemini'
14
13
  def configuration_options = %i[gemini_api_key gemini_api_base]
@@ -148,9 +147,9 @@ module Legion
148
147
  end
149
148
 
150
149
  def content_parts(content)
151
- return Array(content.value) if content.is_a?(LexLLM::Content::Raw)
150
+ return Array(content.value) if content.is_a?(Legion::Extensions::Llm::Content::Raw)
152
151
  return [{ text: Legion::JSON.generate(content) }] if content.is_a?(Hash) || content.is_a?(Array)
153
- return [{ text: content.to_s }] unless content.is_a?(LexLLM::Content)
152
+ return [{ text: content.to_s }] unless content.is_a?(Legion::Extensions::Llm::Content)
154
153
 
155
154
  parts = []
156
155
  parts << { text: content.text } if content.text
@@ -202,7 +201,7 @@ module Legion
202
201
  body = response.body
203
202
  parts = response_parts(body)
204
203
 
205
- LexLLM::Message.new(
204
+ Legion::Extensions::Llm::Message.new(
206
205
  role: :assistant,
207
206
  content: text_content(parts),
208
207
  tool_calls: parse_tool_calls(parts),
@@ -218,7 +217,7 @@ module Legion
218
217
  def build_chunk(data)
219
218
  parts = response_parts(data)
220
219
 
221
- LexLLM::Chunk.new(
220
+ Legion::Extensions::Llm::Chunk.new(
222
221
  role: :assistant,
223
222
  content: text_content(parts),
224
223
  tool_calls: parse_tool_calls(parts),
@@ -253,7 +252,7 @@ module Legion
253
252
  next unless function_call
254
253
 
255
254
  id = SecureRandom.uuid
256
- result[id] = LexLLM::ToolCall.new(
255
+ result[id] = Legion::Extensions::Llm::ToolCall.new(
257
256
  id: id,
258
257
  name: function_call['name'],
259
258
  arguments: function_call['args'] || {}
@@ -268,7 +267,7 @@ module Legion
268
267
  model_id = model_data.fetch('name').delete_prefix('models/')
269
268
  methods = Array(model_data['supportedGenerationMethods'])
270
269
 
271
- LexLLM::Model::Info.new(
270
+ Legion::Extensions::Llm::Model::Info.new(
272
271
  id: model_id,
273
272
  name: model_data['displayName'] || model_id,
274
273
  provider: provider,
@@ -300,7 +299,7 @@ module Legion
300
299
  end
301
300
 
302
301
  def parse_embedding_response(response, model:, **)
303
- LexLLM::Embedding.new(
302
+ Legion::Extensions::Llm::Embedding.new(
304
303
  vectors: response.body.dig('embedding', 'values'),
305
304
  model: model,
306
305
  input_tokens: response.body.dig('usageMetadata', 'promptTokenCount').to_i
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Llm
6
6
  module Gemini
7
- VERSION = '0.1.1'
7
+ VERSION = '0.1.3'
8
8
  end
9
9
  end
10
10
  end
@@ -35,5 +35,5 @@ module Legion
35
35
  end
36
36
  end
37
37
 
38
- LexLLM::Provider.register(Legion::Extensions::Llm::Gemini::PROVIDER_FAMILY,
39
- Legion::Extensions::Llm::Gemini::Provider)
38
+ Legion::Extensions::Llm::Provider.register(Legion::Extensions::Llm::Gemini::PROVIDER_FAMILY,
39
+ Legion::Extensions::Llm::Gemini::Provider)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-llm-gemini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO
@@ -9,76 +9,20 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: faraday
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: '2.0'
19
- type: :runtime
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: '2.0'
26
- - !ruby/object:Gem::Dependency
27
- name: legion-json
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '1.0'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '1.0'
40
- - !ruby/object:Gem::Dependency
41
- name: legion-logging
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '1.0'
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '1.0'
54
- - !ruby/object:Gem::Dependency
55
- name: legion-settings
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 1.3.14
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 1.3.14
68
12
  - !ruby/object:Gem::Dependency
69
13
  name: lex-llm
70
14
  requirement: !ruby/object:Gem::Requirement
71
15
  requirements:
72
16
  - - ">="
73
17
  - !ruby/object:Gem::Version
74
- version: 0.1.1
18
+ version: 0.1.3
75
19
  type: :runtime
76
20
  prerelease: false
77
21
  version_requirements: !ruby/object:Gem::Requirement
78
22
  requirements:
79
23
  - - ">="
80
24
  - !ruby/object:Gem::Version
81
- version: 0.1.1
25
+ version: 0.1.3
82
26
  description: Gemini provider integration for the LegionIO LLM routing framework.
83
27
  email:
84
28
  - matthewdiverson@gmail.com
@@ -99,7 +43,6 @@ files:
99
43
  - lib/legion/extensions/llm/gemini.rb
100
44
  - lib/legion/extensions/llm/gemini/provider.rb
101
45
  - lib/legion/extensions/llm/gemini/version.rb
102
- - lib/lex_llm_gemini.rb
103
46
  homepage: https://github.com/LegionIO/lex-llm-gemini
104
47
  licenses:
105
48
  - MIT
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'legion/extensions/llm/gemini'