lex-llm-openai 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 16ed6620801f752c4020ffec05a5d37c43fc92fd3cdbeb31ccfb8014dbfb1c0f
4
+ data.tar.gz: ebbacf48c3414c220c3c097e30d6421af1660259712f07e0e186967d06b7b1f7
5
+ SHA512:
6
+ metadata.gz: aa9b6c65e7a236ab8e4efc5dddffef8a83b952edea64856043887d9310aa1dc32bf388f6928b4755c950605092489be610a518a8bf674d988fa970fa2833f999
7
+ data.tar.gz: 98bfcdac52d7b6cb1655bb1cfae23b7d3ad6726c2f2be55a447fb9a63869fa28a0afb51d48d81ec1b1e0498270063ad31f98cee3ff4c4e864bcecf18b011bad2
@@ -0,0 +1,2 @@
1
+ * @LegionIO/maintainers
2
+ * @LegionIO/ai
@@ -0,0 +1,18 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ day: monday
8
+ open-pull-requests-limit: 5
9
+ labels:
10
+ - "type:dependencies"
11
+ - package-ecosystem: github-actions
12
+ directory: /
13
+ schedule:
14
+ interval: weekly
15
+ day: monday
16
+ open-pull-requests-limit: 5
17
+ labels:
18
+ - "type:dependencies"
@@ -0,0 +1,16 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ pull_request:
6
+
7
+ jobs:
8
+ ci:
9
+ uses: LegionIO/.github/.github/workflows/ci.yml@main
10
+
11
+ release:
12
+ needs: ci
13
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
14
+ uses: LegionIO/.github/.github/workflows/release.yml@main
15
+ secrets:
16
+ rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /coverage/
3
+ /pkg/
4
+ /tmp/
5
+
6
+ .rspec_status*
7
+ .env
8
+ .claude
9
+ AGENTS.md
10
+ CLAUDE.md
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ plugins:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ NewCops: enable
8
+ TargetRubyVersion: 3.4
9
+ SuggestExtensions: false
10
+
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - "*.gemspec"
14
+ - spec/**/*
15
+ Metrics/MethodLength:
16
+ Enabled: false
17
+ RSpec/MultipleExpectations:
18
+ Enabled: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 - 2026-04-26
4
+
5
+ - Initial Legion LLM Openai provider extension scaffold.
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ if ENV['LEX_LLM_PATH'] && File.directory?(ENV.fetch('LEX_LLM_PATH'))
6
+ gem 'lex-llm', path: ENV.fetch('LEX_LLM_PATH')
7
+ else
8
+ gem 'lex-llm', git: 'https://github.com/LegionIO/lex-llm',
9
+ branch: ENV.fetch('LEX_LLM_BRANCH', 'lex-llm-routing-base-20260425')
10
+ end
11
+
12
+ gemspec
13
+
14
+ group :development do
15
+ gem 'bundler', '>= 2.0'
16
+ gem 'rake', '>= 13.0'
17
+ gem 'rspec', '~> 3.12'
18
+ gem 'rubocop', '>= 1.0'
19
+ gem 'rubocop-performance'
20
+ gem 'rubocop-rake', '>= 0.6'
21
+ gem 'rubocop-rspec'
22
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,161 @@
1
+ GIT
2
+ remote: https://github.com/LegionIO/lex-llm
3
+ revision: 6b2901bf332806ca369399ad08f09da82825b121
4
+ branch: lex-llm-routing-base-20260425
5
+ specs:
6
+ lex-llm (0.1.0)
7
+ base64
8
+ event_stream_parser (~> 1)
9
+ faraday (>= 1.10.0)
10
+ faraday-multipart (>= 1)
11
+ faraday-net_http (>= 1)
12
+ faraday-retry (>= 1)
13
+ marcel (~> 1)
14
+ ruby_llm-schema (~> 0)
15
+ zeitwerk (~> 2)
16
+
17
+ PATH
18
+ remote: .
19
+ specs:
20
+ lex-llm-openai (0.1.0)
21
+ faraday (>= 2.0)
22
+ lex-llm (>= 0.1.0)
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ ast (2.4.3)
28
+ base64 (0.3.0)
29
+ diff-lcs (1.6.2)
30
+ event_stream_parser (1.0.0)
31
+ faraday (2.14.1)
32
+ faraday-net_http (>= 2.0, < 3.5)
33
+ json
34
+ logger
35
+ faraday-multipart (1.2.0)
36
+ multipart-post (~> 2.0)
37
+ faraday-net_http (3.4.2)
38
+ net-http (~> 0.5)
39
+ faraday-retry (2.4.0)
40
+ faraday (~> 2.0)
41
+ json (2.19.4)
42
+ language_server-protocol (3.17.0.5)
43
+ lint_roller (1.1.0)
44
+ logger (1.7.0)
45
+ marcel (1.1.0)
46
+ multipart-post (2.4.1)
47
+ net-http (0.9.1)
48
+ uri (>= 0.11.1)
49
+ parallel (2.1.0)
50
+ parser (3.3.11.1)
51
+ ast (~> 2.4.1)
52
+ racc
53
+ prism (1.9.0)
54
+ racc (1.8.1)
55
+ rainbow (3.1.1)
56
+ rake (13.4.2)
57
+ regexp_parser (2.12.0)
58
+ rspec (3.13.2)
59
+ rspec-core (~> 3.13.0)
60
+ rspec-expectations (~> 3.13.0)
61
+ rspec-mocks (~> 3.13.0)
62
+ rspec-core (3.13.6)
63
+ rspec-support (~> 3.13.0)
64
+ rspec-expectations (3.13.5)
65
+ diff-lcs (>= 1.2.0, < 2.0)
66
+ rspec-support (~> 3.13.0)
67
+ rspec-mocks (3.13.8)
68
+ diff-lcs (>= 1.2.0, < 2.0)
69
+ rspec-support (~> 3.13.0)
70
+ rspec-support (3.13.7)
71
+ rubocop (1.86.1)
72
+ json (~> 2.3)
73
+ language_server-protocol (~> 3.17.0.2)
74
+ lint_roller (~> 1.1.0)
75
+ parallel (>= 1.10)
76
+ parser (>= 3.3.0.2)
77
+ rainbow (>= 2.2.2, < 4.0)
78
+ regexp_parser (>= 2.9.3, < 3.0)
79
+ rubocop-ast (>= 1.49.0, < 2.0)
80
+ ruby-progressbar (~> 1.7)
81
+ unicode-display_width (>= 2.4.0, < 4.0)
82
+ rubocop-ast (1.49.1)
83
+ parser (>= 3.3.7.2)
84
+ prism (~> 1.7)
85
+ rubocop-performance (1.26.1)
86
+ lint_roller (~> 1.1)
87
+ rubocop (>= 1.75.0, < 2.0)
88
+ rubocop-ast (>= 1.47.1, < 2.0)
89
+ rubocop-rake (0.7.1)
90
+ lint_roller (~> 1.1)
91
+ rubocop (>= 1.72.1)
92
+ rubocop-rspec (3.9.0)
93
+ lint_roller (~> 1.1)
94
+ rubocop (~> 1.81)
95
+ ruby-progressbar (1.13.0)
96
+ ruby_llm-schema (0.3.0)
97
+ unicode-display_width (3.2.0)
98
+ unicode-emoji (~> 4.1)
99
+ unicode-emoji (4.2.0)
100
+ uri (1.1.1)
101
+ zeitwerk (2.7.5)
102
+
103
+ PLATFORMS
104
+ arm64-darwin-25
105
+ ruby
106
+
107
+ DEPENDENCIES
108
+ bundler (>= 2.0)
109
+ lex-llm!
110
+ lex-llm-openai!
111
+ rake (>= 13.0)
112
+ rspec (~> 3.12)
113
+ rubocop (>= 1.0)
114
+ rubocop-performance
115
+ rubocop-rake (>= 0.6)
116
+ rubocop-rspec
117
+
118
+ CHECKSUMS
119
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
120
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
121
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
122
+ event_stream_parser (1.0.0) sha256=a2683bab70126286f8184dc88f7968ffc4028f813161fb073ec90d171f7de3c8
123
+ faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c
124
+ faraday-multipart (1.2.0) sha256=7d89a949693714176f612323ca13746a2ded204031a6ba528adee788694ef757
125
+ faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c
126
+ faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
127
+ json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac
128
+ language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
129
+ lex-llm (0.1.0)
130
+ lex-llm-openai (0.1.0)
131
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
132
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
133
+ marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
134
+ multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8
135
+ net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
136
+ parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
137
+ parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
138
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
139
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
140
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
141
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
142
+ regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
143
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
144
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
145
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
146
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
147
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
148
+ rubocop (1.86.1) sha256=44415f3f01d01a21e01132248d2fd0867572475b566ca188a0a42133a08d4531
149
+ rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
150
+ rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
151
+ rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
152
+ rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
153
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
154
+ ruby_llm-schema (0.3.0) sha256=a591edc5ca1b7f0304f0e2261de61ba4b3bea17be09f5cf7558153adfda3dec6
155
+ unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
156
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
157
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
158
+ zeitwerk (2.7.5) sha256=d8da92128c09ea6ec62c949011b00ed4a20242b255293dd66bf41545398f73dd
159
+
160
+ BUNDLED WITH
161
+ 4.0.6
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Carmine Paolino
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # lex-llm-openai
2
+
3
+ LegionIO LLM provider extension for Openai.
4
+
5
+ This gem lives under `Legion::Extensions::Llm::Openai` and depends on `lex-llm` for shared provider-neutral routing, fleet, and schema primitives.
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/legion/extensions/llm/openai/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'lex-llm-openai'
7
+ spec.version = Legion::Extensions::Llm::Openai::VERSION
8
+ spec.authors = ['LegionIO']
9
+ spec.email = ['matthewdiverson@gmail.com']
10
+ spec.summary = 'LegionIO LLM Openai provider extension'
11
+ spec.description = 'Openai provider integration for the LegionIO LLM routing framework.'
12
+ spec.homepage = 'https://github.com/LegionIO/lex-llm-openai'
13
+ spec.license = 'MIT'
14
+ spec.required_ruby_version = '>= 3.4'
15
+
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = spec.homepage
18
+ spec.metadata['documentation_uri'] = spec.homepage
19
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
20
+ spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
22
+
23
+ spec.files = `git ls-files -z`.split("\x0").reject { |file| file.match(%r{^(spec|test|features|tmp|coverage)/}) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_dependency 'faraday', '>= 2.0'
27
+ spec.add_dependency 'lex-llm', '>= 0.1.0'
28
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Llm
6
+ module Openai
7
+ # Builds provider defaults while inheriting shared lex-llm defaults.
8
+ module ProviderSettings
9
+ module_function
10
+
11
+ def build(family:, instance:)
12
+ deep_merge(
13
+ base_settings,
14
+ {
15
+ enabled: true,
16
+ provider_family: family,
17
+ discovery: { enabled: true, interval_seconds: 300 },
18
+ instances: {
19
+ default: {
20
+ enabled: true,
21
+ credentials: nil,
22
+ fleet: { enabled: false, consumer_priority: 0, prefetch: 1 }
23
+ }.merge(instance)
24
+ }
25
+ }
26
+ )
27
+ end
28
+
29
+ def base_settings
30
+ return {} unless ::Legion::Extensions::Llm.respond_to?(:default_settings)
31
+
32
+ deep_dup(::Legion::Extensions::Llm.default_settings)
33
+ end
34
+
35
+ def deep_dup(value)
36
+ case value
37
+ when Hash
38
+ value.to_h { |key, inner_value| [key, deep_dup(inner_value)] }
39
+ when Array
40
+ value.map { |inner_value| deep_dup(inner_value) }
41
+ else
42
+ value
43
+ end
44
+ end
45
+
46
+ def deep_merge(left, right)
47
+ left.merge(right) do |_key, left_value, right_value|
48
+ left_value.is_a?(Hash) && right_value.is_a?(Hash) ? deep_merge(left_value, right_value) : right_value
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Llm
6
+ module Openai
7
+ VERSION = '0.1.0'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/llm'
4
+ require 'legion/extensions/llm/openai/provider_settings'
5
+ require 'legion/extensions/llm/openai/version'
6
+
7
+ module Legion
8
+ module Extensions
9
+ module Llm
10
+ # Openai provider extension namespace.
11
+ module Openai
12
+ extend ::Legion::Extensions::Core if ::Legion::Extensions.const_defined?(:Core, false)
13
+
14
+ PROVIDER_FAMILY = :openai
15
+
16
+ def self.default_settings
17
+ ProviderSettings.build(
18
+ family: PROVIDER_FAMILY,
19
+ instance: {
20
+ endpoint: 'https://api.openai.com',
21
+ tier: :frontier,
22
+ transport: :http,
23
+ credentials: { api_key: 'env://OPENAI_API_KEY' },
24
+ usage: { inference: true, embedding: true },
25
+ limits: { concurrency: 4 }
26
+ }
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/llm/openai'
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lex-llm-openai
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - LegionIO
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
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: lex-llm
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.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: 0.1.0
40
+ description: Openai provider integration for the LegionIO LLM routing framework.
41
+ email:
42
+ - matthewdiverson@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - ".github/CODEOWNERS"
48
+ - ".github/dependabot.yml"
49
+ - ".github/workflows/ci.yml"
50
+ - ".gitignore"
51
+ - ".rubocop.yml"
52
+ - CHANGELOG.md
53
+ - Gemfile
54
+ - Gemfile.lock
55
+ - LICENSE
56
+ - README.md
57
+ - lex-llm-openai.gemspec
58
+ - lib/legion/extensions/llm/openai.rb
59
+ - lib/legion/extensions/llm/openai/provider_settings.rb
60
+ - lib/legion/extensions/llm/openai/version.rb
61
+ - lib/lex_llm_openai.rb
62
+ homepage: https://github.com/LegionIO/lex-llm-openai
63
+ licenses:
64
+ - MIT
65
+ metadata:
66
+ homepage_uri: https://github.com/LegionIO/lex-llm-openai
67
+ source_code_uri: https://github.com/LegionIO/lex-llm-openai
68
+ documentation_uri: https://github.com/LegionIO/lex-llm-openai
69
+ changelog_uri: https://github.com/LegionIO/lex-llm-openai/blob/main/CHANGELOG.md
70
+ bug_tracker_uri: https://github.com/LegionIO/lex-llm-openai/issues
71
+ rubygems_mfa_required: 'true'
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '3.4'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.6.9
87
+ specification_version: 4
88
+ summary: LegionIO LLM Openai provider extension
89
+ test_files: []