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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3aa9de1a3f3c07848fe253d6f8627c54b03bbc74bb96ab5032a407b109aad13a
|
|
4
|
+
data.tar.gz: a3f680546d15739bdfb84f79daa70a45beae2650893aead380e23b0e9086b38e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
data/lex-llm-bedrock.gemspec
CHANGED
|
@@ -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.
|
|
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"
|
|
@@ -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:
|
|
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]
|
|
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.
|
|
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.
|
|
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.
|
|
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
|