lex-llm-bedrock 0.4.3 → 0.4.4

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: 05badbea355fec879dbd270070928472682c35d8709e3e6336e0080ca00aeb36
4
- data.tar.gz: ec34813a7de565ad347c95777715054d27bd53ce71b04d8ddfd57de149852c9e
3
+ metadata.gz: 3aa9de1a3f3c07848fe253d6f8627c54b03bbc74bb96ab5032a407b109aad13a
4
+ data.tar.gz: a3f680546d15739bdfb84f79daa70a45beae2650893aead380e23b0e9086b38e
5
5
  SHA512:
6
- metadata.gz: '073218f79b092a425703aa62f45b8d07d69afcf01d1249b66435fa4dce7211f74cbfab184e7df61f506f92c0ca4322d1d8448e6317ed5d52870d699ff42757e9'
7
- data.tar.gz: 415524d66dcb863b18036935b15b7965996adb249d78779845b6f53679e22745b9316a438de386e490051cf7c46af6bc3264cf3db24d2b7517a7c5c4d49c9375
6
+ metadata.gz: 7b6ade385af00bbcd329278658f4fe829b312735f0141514353e4da0912d1002a9213cbd6f7411f4ba8dcad9dc9284adefe3518c17ff12297dd18d3f9db36d92
7
+ data.tar.gz: 0ffcee037a6efb318802b3ec1ad1684f0516ee133799dc420bd7a74883320c0c2029fc0df916757c5c4584386d4cc2f7cc5f5f8e7bfca46a8def152adfdb9e1f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.4 - 2026-06-17
4
+
5
+ ### Fixed
6
+ - **Model policy enforced at dispatch (compliance)** — Bedrock overrides the base dispatch methods (`chat`, `stream`, `embed`), so the base `enforce_model_allowed!` guard did not apply. Each override now calls `enforce_model_allowed!(model_id(model))`, raising `ModelNotAllowedError` before any Bedrock API call when the model is excluded by `model_whitelist`/`model_blacklist`. Fail-closed, no exceptions.
7
+
8
+ ### Changed
9
+ - **Policy-aware default model** — the `anthropic.claude-sonnet-4` default is no longer a hardcoded literal forced via `||=`; it is a named `DEFAULT_MODEL` constant resolved through `Provider.policy_safe_default_model`, so a configured whitelist/blacklist is never overridden by the fallback. Requires lex-llm >= 0.5.4.
10
+
3
11
  ## 0.4.3 - 2026-06-16
4
12
 
5
13
  - Dependency updates and code quality improvements.
@@ -29,5 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency 'legion-logging', '>= 1.3.2'
30
30
  spec.add_dependency 'legion-settings', '>= 1.3.14'
31
31
  spec.add_dependency 'legion-transport', '>= 1.4.14'
32
- spec.add_dependency 'lex-llm', '>= 0.5.0'
32
+ spec.add_dependency 'lex-llm', '>= 0.5.4'
33
33
  end
@@ -225,6 +225,7 @@ module Legion
225
225
  thinking: nil,
226
226
  **_provider_options
227
227
  )
228
+ enforce_model_allowed!(model_id(model))
228
229
  log.info { "bedrock.provider.chat: model=#{model_id(model)} messages=#{messages.size}" }
229
230
 
230
231
  # Bedrock Converse API silently drops thinking config and tool_use blocks
@@ -311,6 +312,7 @@ module Legion
311
312
 
312
313
  def stream(messages:, model:, temperature: nil, max_tokens: nil, tools: {}, tool_prefs: nil, params: {},
313
314
  thinking: nil, **_provider_options, &)
315
+ enforce_model_allowed!(model_id(model))
314
316
  log.info do
315
317
  "bedrock.provider.stream: model=#{model_id(model)} messages=#{messages.size} tools=#{tools.size}"
316
318
  end
@@ -368,6 +370,7 @@ module Legion
368
370
  **_provider_options
369
371
  )
370
372
  mid = model_id(model)
373
+ enforce_model_allowed!(mid)
371
374
  unless titan_embed?(mid)
372
375
  raise NotImplementedError,
373
376
  "Bedrock embedding payload for #{mid} is not standardized"
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Llm
6
6
  module Bedrock
7
- VERSION = '0.4.3'
7
+ VERSION = '0.4.4'
8
8
  end
9
9
  end
10
10
  end
@@ -19,12 +19,16 @@ module Legion
19
19
  PROVIDER_FAMILY = :bedrock
20
20
 
21
21
  DEFAULT_REGION = 'us-east-2'
22
+ # Provider's preferred default when the operator configures none. Used only
23
+ # as a fallback and only when the configured model policy permits it
24
+ # (see resolve_default_model) — a whitelist/blacklist is never overridden.
25
+ DEFAULT_MODEL = 'anthropic.claude-sonnet-4'
22
26
 
23
27
  def self.default_settings
24
28
  ::Legion::Extensions::Llm.provider_settings(
25
29
  family: PROVIDER_FAMILY,
26
30
  instance: {
27
- default_model: 'anthropic.claude-sonnet-4',
31
+ default_model: DEFAULT_MODEL,
28
32
  region: 'us-east-1',
29
33
  tier: :cloud,
30
34
  transport: :aws_sdk,
@@ -73,11 +77,20 @@ module Legion
73
77
  .transform_values do |config|
74
78
  sanitized = sanitize_instance_config(config)
75
79
  sanitized[:capabilities] ||= DEFAULT_CAPABILITIES.dup
76
- sanitized[:default_model] ||= 'anthropic.claude-sonnet-4'
80
+ sanitized[:default_model] = resolve_default_model(sanitized)
77
81
  sanitized
78
82
  end
79
83
  end
80
84
 
85
+ # Resolve a default_model that never violates the configured model policy
86
+ # (whitelist/blacklist stays authoritative over the DEFAULT_MODEL fallback).
87
+ def self.resolve_default_model(config)
88
+ provider_class.policy_safe_default_model(
89
+ configured: config[:default_model], fallback: DEFAULT_MODEL,
90
+ **provider_class.model_policy(config, PROVIDER_FAMILY)
91
+ )
92
+ end
93
+
81
94
  def self.unresolved_credential?(config)
82
95
  return false if config[:bedrock_profile]
83
96
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-llm-bedrock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO
@@ -99,14 +99,14 @@ dependencies:
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 0.5.0
102
+ version: 0.5.4
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 0.5.0
109
+ version: 0.5.4
110
110
  description: Amazon Bedrock provider integration for the LegionIO LLM routing framework.
111
111
  email:
112
112
  - matthewdiverson@gmail.com