lex-llm-bedrock 0.3.5 → 0.3.7

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: 9f9c067ce0f9cc6fc9bb7f9feec00b2efdb5343e96131737edf6073e23e9dbb0
4
- data.tar.gz: 5be013a6e8dc9b46d3849e34ca7adecfd89ce8b38b7ee263f02c8459ca64ce7e
3
+ metadata.gz: d0046ccd6a590eef46ec16fa6092134f7b63eb5d2512d6c75249ee51a63633ec
4
+ data.tar.gz: 4944f376912c69fc937856c81630996eeaa2e1504f94dd5ea06d0d8ab8d0ff66
5
5
  SHA512:
6
- metadata.gz: ba06fe3b7bc507f03f03f55ef0bdd9356f83bdf1c85fca81af5c171f3ef87a56cd1249066db28783ad02eabb9887694230f21020d353fd7ab852d8127a6556ce
7
- data.tar.gz: fccf538e1f430ced2cf600d0dcc728cf022bf4e8153284b086fc2b30aa5a8de5dfecdb3e1862632bd3cbb3eedf2fb0d2490848a61ee6aa2139a2a2d5ff1ac043
6
+ metadata.gz: a2fd955d35142f9d765d8059cb3a793f4453eab7dfefb171c4223a0b88ad59d520e653a3841c86bbfa9ecc193f9e8b85549176ab4ff559b673cfe4393a7aa519
7
+ data.tar.gz: bfeeee234144ba6b45cb7bd39495533c7c18c998d1c44e9c4ce6ac17d4a2b95403f28de6f0d25d07a49d5a2f413689cb8f4a2ee2aa59e5716f443daff80c5a0a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.7 - 2026-05-12
4
+
5
+ - Use `Legion::Logging::Helper` explicitly across Bedrock provider, actor, and fleet runner logging surfaces.
6
+ - Add non-sensitive debug logging for Bedrock tool configuration and fleet request routing.
7
+ - Report optional actor runtime load failures through `handle_exception` instead of direct warning output.
8
+
9
+ ## 0.3.6 - 2026-05-08
10
+
11
+ - Accept keyword arguments in `list_models` to match the base provider contract called by `discover_offerings`.
12
+
3
13
  ## 0.3.5 - 2026-05-06
4
14
 
5
15
  - Load provider-owned fleet actors through the LegionIO subscription base and the canonical Bedrock provider root.
@@ -1,16 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'legion/extensions/llm/bedrock'
4
+
3
5
  begin
4
6
  require 'legion/extensions/actors/subscription'
5
7
  rescue LoadError => e
6
- warn(e.message) if $VERBOSE
8
+ Legion::Extensions::Llm::Bedrock.handle_exception(
9
+ e,
10
+ level: :debug,
11
+ handled: true,
12
+ operation: 'bedrock.actor.fleet_worker.load_subscription'
13
+ )
7
14
  end
8
15
 
9
16
  unless defined?(Legion::Extensions::Actors::Subscription)
10
17
  raise LoadError, 'LegionIO actor runtime is required for Bedrock fleet worker'
11
18
  end
12
19
 
13
- require 'legion/extensions/llm/bedrock'
14
20
  require 'legion/extensions/llm/fleet/provider_responder'
15
21
 
16
22
  module Legion
@@ -20,6 +26,8 @@ module Legion
20
26
  module Actor
21
27
  # Subscription actor for Bedrock fleet request consumption.
22
28
  class FleetWorker < Legion::Extensions::Actors::Subscription
29
+ include Legion::Logging::Helper
30
+
23
31
  def runner_class
24
32
  'Legion::Extensions::Llm::Bedrock::Runners::FleetWorker'
25
33
  end
@@ -33,7 +41,10 @@ module Legion
33
41
  end
34
42
 
35
43
  def enabled?
36
- Legion::Extensions::Llm::Fleet::ProviderResponder.enabled_for?(Bedrock.discover_instances)
44
+ instances = Bedrock.discover_instances
45
+ enabled = Legion::Extensions::Llm::Fleet::ProviderResponder.enabled_for?(instances)
46
+ log.debug { "bedrock.actor.fleet_worker.enabled?: instances=#{instances.size} enabled=#{enabled}" }
47
+ enabled
37
48
  end
38
49
  end
39
50
  end
@@ -3,7 +3,7 @@
3
3
  require 'aws-sdk-bedrock'
4
4
  require 'aws-sdk-bedrockruntime'
5
5
  require 'legion/json'
6
- require 'legion/logging'
6
+ require 'legion/logging/helper'
7
7
  require 'legion/extensions/llm'
8
8
 
9
9
  module Legion
@@ -140,7 +140,7 @@ module Legion
140
140
  end
141
141
  end
142
142
 
143
- def list_models
143
+ def list_models(**)
144
144
  log.info { 'bedrock.provider.list_models: fetching live model list' }
145
145
  response = bedrock_client.list_foundation_models
146
146
  models = Array(value(response, :model_summaries)).filter_map { |summary| model_info_from_summary(summary) }
@@ -164,6 +164,10 @@ module Legion
164
164
  converse_request(messages, model:, temperature:, max_tokens:, tools:, tool_prefs:),
165
165
  params
166
166
  )
167
+ log.debug do
168
+ "bedrock.provider.chat: request prepared model=#{model_id(model)} tools=#{tools.size} " \
169
+ "tool_choice=#{tool_choice_label(tool_prefs)} param_keys=#{params.keys.map(&:to_s).sort.join(',')}"
170
+ end
167
171
  parse_converse_response(runtime_client.converse(**request), model_id(model))
168
172
  end
169
173
 
@@ -174,6 +178,10 @@ module Legion
174
178
  converse_request(messages, model:, temperature:, max_tokens:, tools:, tool_prefs:),
175
179
  params
176
180
  )
181
+ log.debug do
182
+ "bedrock.provider.stream: request prepared model=#{model_id(model)} tools=#{tools.size} " \
183
+ "tool_choice=#{tool_choice_label(tool_prefs)} param_keys=#{params.keys.map(&:to_s).sort.join(',')}"
184
+ end
177
185
  stream_converse(request, model_id(model), &)
178
186
  end
179
187
 
@@ -349,6 +357,10 @@ module Legion
349
357
  def format_tool_config(tools, tool_prefs)
350
358
  return nil if tools.empty?
351
359
 
360
+ log.debug do
361
+ "bedrock.provider.tools: formatting tools=#{tools.keys.map(&:to_s).sort.join(',')} " \
362
+ "tool_choice=#{tool_choice_label(tool_prefs)}"
363
+ end
352
364
  { tools: tools.values.map { |tool| tool_definition(tool) }, tool_choice: tool_choice(tool_prefs) }.compact
353
365
  end
354
366
 
@@ -382,6 +394,12 @@ module Legion
382
394
  end
383
395
  end
384
396
 
397
+ def tool_choice_label(tool_prefs)
398
+ return 'none' unless tool_prefs
399
+
400
+ (tool_prefs[:choice] || tool_prefs['choice'] || 'unspecified').to_s
401
+ end
402
+
385
403
  def parse_converse_response(response, fallback_model)
386
404
  output = value(response, :output)
387
405
  message = value(output, :message)
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'legion/extensions/llm/fleet/provider_responder'
4
4
  require 'legion/extensions/llm/bedrock'
5
+ require 'legion/logging/helper'
5
6
 
6
7
  module Legion
7
8
  module Extensions
@@ -10,9 +11,15 @@ module Legion
10
11
  module Runners
11
12
  # Runner entrypoint for Bedrock fleet request execution.
12
13
  module FleetWorker
14
+ extend Legion::Logging::Helper
15
+
13
16
  module_function
14
17
 
15
18
  def handle_fleet_request(payload, delivery: nil, properties: nil)
19
+ log.debug do
20
+ "bedrock.runner.fleet_worker.handle_fleet_request: request_id=#{payload_value(payload, :request_id)} " \
21
+ "provider_instance=#{payload_value(payload, :provider_instance) || 'default'}"
22
+ end
16
23
  Legion::Extensions::Llm::Fleet::ProviderResponder.call(
17
24
  payload: payload,
18
25
  provider_family: Bedrock::PROVIDER_FAMILY,
@@ -22,6 +29,12 @@ module Legion
22
29
  properties: properties
23
30
  )
24
31
  end
32
+
33
+ def payload_value(payload, key)
34
+ return nil unless payload.respond_to?(:[])
35
+
36
+ payload[key] || payload[key.to_s]
37
+ end
25
38
  end
26
39
  end
27
40
  end
@@ -4,7 +4,7 @@ module Legion
4
4
  module Extensions
5
5
  module Llm
6
6
  module Bedrock
7
- VERSION = '0.3.5'
7
+ VERSION = '0.3.7'
8
8
  end
9
9
  end
10
10
  end
@@ -3,6 +3,7 @@
3
3
  require 'legion/extensions/llm'
4
4
  require 'legion/extensions/llm/bedrock/provider'
5
5
  require 'legion/extensions/llm/bedrock/version'
6
+ require 'legion/logging/helper'
6
7
 
7
8
  module Legion
8
9
  module Extensions
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.3.5
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - LegionIO