lex-llm-gemini 0.1.1 → 0.1.2

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: 1134a4cb3dc92ae34c6a8dfe5c307c2c16c8ead8ad4795eacb070b44561ada54
4
+ data.tar.gz: a83a9fab31f175beed47cd196da8930f3f8f20bd4ff38205996997c1ca774b05
5
5
  SHA512:
6
- metadata.gz: 9647f4d3d4bfa69924576f8cab5ff4b1523ace82b33d8ec60fcf9c57e7877f184f2f9920b6a7a5d46c5a3822dadddd0982f7bc215c7bd970d3c58744282d2773
7
- data.tar.gz: 905d32ea8573ee0903794c19547d7068c1c27aab9ad5f23b12fb57780908cf55a0f7e639604421a14558b64671557ad30dc8e08033ad57bbd4f1f762795b8ed9
6
+ metadata.gz: 6b682d787c4b406727f3f8758a5e81d5df9298435fd0047f62e0914c1367a2be8f9769b42e134ec3589a4eba46729d549a699442fb6fb2f02387069da63457d2
7
+ data.tar.gz: f41e2b8dcf0a0d45a6ac4c0eeda4c743034669190d346e3d31211ed6308ee173590b590b7adeaa2eae8767d8b104fecfbc5931b128cf979edd9f6add1e7a05b9
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,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.2 - 2026-04-28
4
+
5
+ - Replace fork-era namespace references with the standard Legion::Extensions::Llm provider contract.
6
+ - Remove GitHub-based lex-llm Gemfile fallback so test installs use only a guarded local path or released gem dependency.
7
+ - Require lex-llm >= 0.1.3 for the cleaned Legion-native base extension.
8
+
3
9
  ## 0.1.1 - 2026-04-27
4
10
 
5
- - Add the Gemini LexLLM provider class with generateContent, streaming, model listing, and embedContent helpers.
11
+ - Add the Gemini Legion::Extensions::Llm provider class with generateContent, streaming, model listing, and embedContent helpers.
6
12
  - Use shared `Legion::Extensions::Llm.provider_settings` defaults from `lex-llm`.
7
13
  - Remove the committed `Gemfile.lock`.
8
14
 
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
+ lex_llm_path = ENV.fetch('LEX_LLM_PATH', File.expand_path('../lex-llm', __dir__))
7
+ gem 'lex-llm', path: lex_llm_path if File.directory?(lex_llm_path)
12
8
  end
13
9
 
14
10
  gemspec
data/README.md CHANGED
@@ -6,7 +6,7 @@ This gem lives under `Legion::Extensions::Llm::Gemini` and depends on `lex-llm`
6
6
 
7
7
  ## What It Provides
8
8
 
9
- - `LexLLM::Provider` registration as `:gemini`
9
+ - `Legion::Extensions::Llm::Provider` registration as `:gemini`
10
10
  - Gemini-native chat requests through `POST /v1beta/{model=models/*}:generateContent`
11
11
  - streaming chat support through `POST /v1beta/{model=models/*}:streamGenerateContent?alt=sse`
12
12
  - model discovery through `GET /v1beta/models`
@@ -35,7 +35,7 @@ Legion::Extensions::Llm::Gemini.default_settings
35
35
  ## Configuration
36
36
 
37
37
  ```ruby
38
- LexLLM.configure do |config|
38
+ Legion::Extensions::Llm.configure do |config|
39
39
  config.gemini_api_key = ENV.fetch("GEMINI_API_KEY")
40
40
  config.gemini_api_base = "https://generativelanguage.googleapis.com/v1beta"
41
41
  config.default_model = "gemini-2.0-flash"
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'legion-json', '>= 1.0'
28
28
  spec.add_dependency 'legion-logging', '>= 1.0'
29
29
  spec.add_dependency 'legion-settings', '>= 1.3.14'
30
- spec.add_dependency 'lex-llm', '>= 0.1.1'
30
+ spec.add_dependency 'lex-llm', '>= 0.1.3'
31
31
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lex_llm'
3
+ require 'legion/extensions/llm'
4
4
  require 'legion/json'
5
5
 
6
6
  module Legion
7
7
  module Extensions
8
8
  module Llm
9
9
  module Gemini
10
- # Gemini provider implementation for the LexLLM base provider contract.
11
- class Provider < LexLLM::Provider # rubocop:disable Metrics/ClassLength
10
+ # Gemini provider implementation for the Legion::Extensions::Llm base provider contract.
11
+ class Provider < Legion::Extensions::Llm::Provider # rubocop:disable Metrics/ClassLength
12
12
  class << self
13
13
  def slug = 'gemini'
14
14
  def configuration_options = %i[gemini_api_key gemini_api_base]
@@ -148,9 +148,9 @@ module Legion
148
148
  end
149
149
 
150
150
  def content_parts(content)
151
- return Array(content.value) if content.is_a?(LexLLM::Content::Raw)
151
+ return Array(content.value) if content.is_a?(Legion::Extensions::Llm::Content::Raw)
152
152
  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)
153
+ return [{ text: content.to_s }] unless content.is_a?(Legion::Extensions::Llm::Content)
154
154
 
155
155
  parts = []
156
156
  parts << { text: content.text } if content.text
@@ -202,7 +202,7 @@ module Legion
202
202
  body = response.body
203
203
  parts = response_parts(body)
204
204
 
205
- LexLLM::Message.new(
205
+ Legion::Extensions::Llm::Message.new(
206
206
  role: :assistant,
207
207
  content: text_content(parts),
208
208
  tool_calls: parse_tool_calls(parts),
@@ -218,7 +218,7 @@ module Legion
218
218
  def build_chunk(data)
219
219
  parts = response_parts(data)
220
220
 
221
- LexLLM::Chunk.new(
221
+ Legion::Extensions::Llm::Chunk.new(
222
222
  role: :assistant,
223
223
  content: text_content(parts),
224
224
  tool_calls: parse_tool_calls(parts),
@@ -253,7 +253,7 @@ module Legion
253
253
  next unless function_call
254
254
 
255
255
  id = SecureRandom.uuid
256
- result[id] = LexLLM::ToolCall.new(
256
+ result[id] = Legion::Extensions::Llm::ToolCall.new(
257
257
  id: id,
258
258
  name: function_call['name'],
259
259
  arguments: function_call['args'] || {}
@@ -268,7 +268,7 @@ module Legion
268
268
  model_id = model_data.fetch('name').delete_prefix('models/')
269
269
  methods = Array(model_data['supportedGenerationMethods'])
270
270
 
271
- LexLLM::Model::Info.new(
271
+ Legion::Extensions::Llm::Model::Info.new(
272
272
  id: model_id,
273
273
  name: model_data['displayName'] || model_id,
274
274
  provider: provider,
@@ -300,7 +300,7 @@ module Legion
300
300
  end
301
301
 
302
302
  def parse_embedding_response(response, model:, **)
303
- LexLLM::Embedding.new(
303
+ Legion::Extensions::Llm::Embedding.new(
304
304
  vectors: response.body.dig('embedding', 'values'),
305
305
  model: model,
306
306
  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.2'
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.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO
@@ -71,14 +71,14 @@ dependencies:
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 0.1.1
74
+ version: 0.1.3
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: 0.1.1
81
+ version: 0.1.3
82
82
  description: Gemini provider integration for the LegionIO LLM routing framework.
83
83
  email:
84
84
  - matthewdiverson@gmail.com