lex-llm-openai 0.4.4 → 0.4.5

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: 7bb7451045c6e85e6e89657665065fe502888f49982d3dc43a53fdcb1bf4ebcd
4
- data.tar.gz: 05e91bb97ec042142b126b310e9e05dcfb99fe1ae999b8595f7924102106d592
3
+ metadata.gz: 4091bfdcfbcd60f52453e29e42e30a4564edd48dabcd9b0f8edadfa68440f52b
4
+ data.tar.gz: 0de0b799f80f47f937a9ecdc797996c4c0d3e64784fc518bf0b5de8628df135b
5
5
  SHA512:
6
- metadata.gz: a7bdaf1e6de4518d02d1f0bc6af5ddcd39392f4fd8153902ce0414264ec773e2295ad14b8508984ed8140f96742081b1e76f16c2843dd4667e59d25fb558bf3a
7
- data.tar.gz: d5dfe88b242d5b9ab7d3c27621c1761fd7e5a8a6958dfadcafe20be3e7a89a9f7c33f4b21bcda2574bc29e0ef7ea025b9f905f4d01d9e45c0de2aecc8f22648b
6
+ metadata.gz: 0abdd81c00439b7ccba758adbd7f8576e83ce5e367673ce2092708dc3f61290c406db462e0736e56402957c32f47b0fd781bdcf6486508a5b8486ab48f6d2edf
7
+ data.tar.gz: 29b4b768e0bd91aee7cd05283b62caf93d4ffbd6215063c7fa480d3ed1a2b164341e669d6badcb4e7f804db55e9500e81c016eef5f4a7223c20039730942ec37
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.5 - 2026-06-17
4
+
5
+ ### Changed
6
+ - **Policy-aware default model** — `default_model` is no longer a hardcoded literal forced via `||=`. The `gpt-5.5` fallback is now a named `DEFAULT_MODEL` constant applied through `Provider.policy_safe_default_model`, so a configured `model_whitelist`/`model_blacklist` is never overridden: if neither the configured default nor the fallback is permitted, `default_model` is left unset and routing resolves an allowed discovered model instead. Requires lex-llm >= 0.5.4.
7
+
3
8
  ## 0.4.4 - 2026-06-16
4
9
 
5
10
  - dependency updates, code quality improvements
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'legion-logging', '>= 1.3.2'
28
28
  spec.add_dependency 'legion-settings', '>= 1.3.14'
29
29
  spec.add_dependency 'legion-transport', '>= 1.4.14'
30
- spec.add_dependency 'lex-llm', '>= 0.5.0'
30
+ spec.add_dependency 'lex-llm', '>= 0.5.4'
31
31
  end
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Llm
6
6
  module Openai
7
- VERSION = '0.4.4'
7
+ VERSION = '0.4.5'
8
8
  end
9
9
  end
10
10
  end
@@ -16,13 +16,17 @@ module Legion
16
16
  extend Legion::Extensions::Llm::AutoRegistration
17
17
 
18
18
  PROVIDER_FAMILY = :openai
19
+ # Provider's preferred default when the operator configures none. Used only
20
+ # as a fallback and only when the configured model policy permits it
21
+ # (see resolve_default_model) — a whitelist/blacklist is never overridden.
22
+ DEFAULT_MODEL = 'gpt-5.5'
19
23
 
20
24
  def self.default_settings
21
25
  ::Legion::Extensions::Llm.provider_settings(
22
26
  family: PROVIDER_FAMILY,
23
27
  instance: {
24
28
  endpoint: 'https://api.openai.com',
25
- default_model: 'gpt-5.5',
29
+ default_model: DEFAULT_MODEL,
26
30
  tier: :frontier,
27
31
  transport: :http,
28
32
  credentials: {
@@ -100,10 +104,10 @@ module Legion
100
104
  candidates[name.to_sym] = normalized.merge(tier: :frontier)
101
105
  end
102
106
 
103
- # 8. Dedup + inject default_model
107
+ # 8. Dedup + inject a policy-aware default_model
104
108
  discovered = CredentialSources.dedup_credentials(candidates).transform_values do |config|
105
109
  sanitized = sanitize_instance_config(config)
106
- sanitized[:default_model] ||= 'gpt-5.5'
110
+ sanitized[:default_model] = resolve_default_model(sanitized)
107
111
  sanitized
108
112
  end
109
113
  instance_names = discovered.keys.sort_by(&:to_s).join(', ')
@@ -111,6 +115,15 @@ module Legion
111
115
  discovered
112
116
  end
113
117
 
118
+ # Resolve a default_model that never violates the configured model policy
119
+ # (whitelist/blacklist stays authoritative over the DEFAULT_MODEL fallback).
120
+ def self.resolve_default_model(config)
121
+ provider_class.policy_safe_default_model(
122
+ configured: config[:default_model], fallback: DEFAULT_MODEL,
123
+ **provider_class.model_policy(config, PROVIDER_FAMILY)
124
+ )
125
+ end
126
+
114
127
  def self.settings_instances(config)
115
128
  return {} unless config.is_a?(Hash)
116
129
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-llm-openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
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.5.0
74
+ version: 0.5.4
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.5.0
81
+ version: 0.5.4
82
82
  description: OpenAI provider integration for the LegionIO LLM routing framework.
83
83
  email:
84
84
  - matthewdiverson@gmail.com