lex-llm-vllm 0.2.6 → 0.2.8

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: 14dc7ee5334135f8eece7622a27cb57bad3c9c885cb6203de56006b5d2a1b353
4
- data.tar.gz: 59ea84f7c50a9407da2af50c51f77ad26894d45b7f06d9c0223198a73a7e22a8
3
+ metadata.gz: 0ec67bb352cf0bd9dc3ae3f0102e7d26a27ebc8c64c56d98811742c4b75e4ae0
4
+ data.tar.gz: de092940c2c186e982b0d453b4f1f94157a868626e2a7b4b16cd6c0c1596b28c
5
5
  SHA512:
6
- metadata.gz: 05c8fa912c908ec88943277dfd2e2b82f84bbd4ff6880d4e1f288f1397baf2cc1f72c2d20e894684be14be9f5f213e381ea5f524bfed3162e116de0271009f93
7
- data.tar.gz: 14fffc18eff78d0c8751fbb96c9db6cbdd2773af66c46359b5934fad09d9a8fa37183a4f123f7cb75008e44cf821a21d97756d47633e44a50ab935f3f5743f0d
6
+ metadata.gz: aad15995696865b3cc0a6e42b6e627e2d4a5dbdb7768ec676d3867964fad107709ce10bfe908128a6575d8bc81d0a8ee9b97b45c554db093b12dbea5b67300c0
7
+ data.tar.gz: ecfe08d54a3113188c09f642e1b457af39eca29542315d529c477f3f2cac4096a7a1485fd2977fb6acdb7a4c6885f904510b9a3653eb9a966da5ffb6b60ac5ba
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.8 - 2026-05-07
4
+
5
+ - Read vLLM thinking defaults from the active provider instance config so per-instance `enable_thinking` settings affect chat payloads.
6
+
7
+ ## 0.2.7 - 2026-05-07
8
+
9
+ - Fix merge order in `discover_instances` so a user-supplied `tier:` in instance config is no longer clobbered by the `:direct` default.
10
+ - Infer instance tier from endpoint URL in `normalize_instance_config`: `localhost`/`127.0.0.1`/`::1` → `:local`, any other host → `:direct`. Explicit `tier:` in config still wins.
11
+
3
12
  ## 0.2.6 - 2026-05-06
4
13
 
5
14
  - Load provider-owned fleet actors through the LegionIO subscription base and the canonical vLLM provider root.
@@ -162,18 +162,25 @@ module Legion
162
162
  end
163
163
 
164
164
  def vllm_thinking_setting
165
+ instance_thinking_enabled? || global_thinking_enabled?
166
+ rescue StandardError => e
167
+ handle_exception(e, level: :debug, handled: true, operation: 'vllm.thinking_setting')
168
+ false
169
+ end
170
+
171
+ def instance_thinking_enabled?
172
+ return config.enable_thinking if config.respond_to?(:enable_thinking)
173
+
174
+ config.respond_to?(:[]) && config[:enable_thinking] == true
175
+ end
176
+
177
+ def global_thinking_enabled?
165
178
  return false unless defined?(Legion::Settings)
166
179
 
167
180
  vllm = Legion::Settings.dig(:llm, :providers, :vllm)
168
181
  return false unless vllm.is_a?(Hash)
169
182
 
170
- vllm[:enable_thinking] == true ||
171
- vllm['enable_thinking'] == true ||
172
- vllm.dig(:instances, :default, :enable_thinking) == true ||
173
- vllm.dig('instances', 'default', 'enable_thinking') == true
174
- rescue StandardError => e
175
- handle_exception(e, level: :debug, handled: true, operation: 'vllm.thinking_setting')
176
- false
183
+ vllm[:enable_thinking] == true || vllm['enable_thinking'] == true
177
184
  end
178
185
 
179
186
  def parse_list_models_response(response, provider, capabilities)
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Llm
6
6
  module Vllm
7
- VERSION = '0.2.6'
7
+ VERSION = '0.2.8'
8
8
  end
9
9
  end
10
10
  end
@@ -14,6 +14,7 @@ module Legion
14
14
  extend Legion::Extensions::Llm::AutoRegistration
15
15
 
16
16
  PROVIDER_FAMILY = :vllm
17
+ DEFAULT_INSTANCE_TIER = { tier: :direct }.freeze
17
18
 
18
19
  def self.default_settings
19
20
  ::Legion::Extensions::Llm.provider_settings(
@@ -60,7 +61,7 @@ module Legion
60
61
  configured = CredentialSources.setting(:extensions, :llm, :vllm, :instances)
61
62
  if configured.is_a?(Hash)
62
63
  configured.each do |name, config|
63
- instances[name.to_sym] = normalize_instance_config(config).merge(tier: :direct)
64
+ instances[name.to_sym] = DEFAULT_INSTANCE_TIER.merge(normalize_instance_config(config))
64
65
  end
65
66
  end
66
67
 
@@ -69,16 +70,31 @@ module Legion
69
70
 
70
71
  def self.normalize_instance_config(config)
71
72
  normalized = config.to_h.transform_keys(&:to_sym)
73
+ resolve_api_base_aliases(normalized)
74
+ normalized[:tier] ||= infer_tier_from_endpoint(normalized[:vllm_api_base])
75
+ normalized
76
+ end
77
+
78
+ def self.resolve_api_base_aliases(normalized)
72
79
  normalized[:vllm_api_base] ||= normalized.delete(:base_url)
73
80
  normalized[:vllm_api_base] ||= normalized.delete(:api_base)
74
81
  normalized[:vllm_api_base] ||= normalized.delete(:endpoint)
75
82
  normalized[:vllm_api_base] = normalize_api_base(normalized[:vllm_api_base]) if normalized[:vllm_api_base]
76
- normalized
77
83
  end
78
84
 
79
85
  def self.normalize_api_base(url)
80
86
  url.to_s.sub(%r{/v1/?\z}, '')
81
87
  end
88
+
89
+ def self.infer_tier_from_endpoint(url)
90
+ return :direct if url.nil? || url.to_s.empty?
91
+
92
+ require 'uri'
93
+ host = URI.parse(url.to_s).host.to_s.downcase
94
+ %w[localhost 127.0.0.1 ::1].include?(host) ? :local : :direct
95
+ rescue URI::InvalidURIError
96
+ :direct
97
+ end
82
98
  end
83
99
  end
84
100
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-llm-vllm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO