lex-bedrock 0.2.0 → 0.2.1

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: fba4162f800e8419912e30cc4ce1477b5f9894f0f282bd67d3eafa3b61e74d9a
4
- data.tar.gz: 2c26974438c1758108c6006c14eba339ede7feb48d6a65c157c1156de2c4dd68
3
+ metadata.gz: ee5a83a0ee7afd53d1d8f496bd8382332b1312939b3a49cbdf8c86b2269ff6ab
4
+ data.tar.gz: 467176f83f6f58de4a7640bea5f2fcd6b75be4e2a8d5a77d4fa8f3fe82854c2b
5
5
  SHA512:
6
- metadata.gz: 8e3d7990c6e40d37a7ee94a58f2a792ded501d015e318e6d953589a0fe7592e1648dd631e911dc5b37b3f84d1769f7895d0fa628fc652255acb102a8c091c70b
7
- data.tar.gz: 4c643c663bbcac6110209a9dcb202e04962689fee2a2268321e91e6543d76476d7bc0d14eddc7efd71e5f76e597d66e8b37f3b97a940e4e41e897f7559bc6b07
6
+ metadata.gz: 106a987eb8c0d61d3c8fc1e409b0168d95277db70f98fba5ee8ebd0dbe9b74c3770837b052b6cb04b32aae8bfd639511de8b907dfaccee09ee72c563792ae051
7
+ data.tar.gz: d8c81a605d36fd3e6b572580ad4a092a1a7bf913e5edf51e5e26302facf20cd2248da4311fcbf1867fe6cfc35eea78bea61c71c4c7ca0ff43c91d99b920482f6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.1] - 2026-03-31
4
+
5
+ ### Added
6
+ - `Helpers::Usage` — standardized usage hash normalization from SDK structs (`normalize`) and parsed JSON (`from_json`)
7
+ - `Runners::Invoke#invoke_model` now returns a `usage:` key with standardized token counts extracted from the response body
8
+
9
+ ### Changed
10
+ - `Runners::Converse#create` returns `usage:` as a plain hash (`{ input_tokens:, output_tokens:, cache_read_tokens:, cache_write_tokens: }`) instead of raw SDK struct
11
+ - `Runners::Converse#create_stream` returns the same standardized usage hash
12
+ - `Runners::Invoke#invoke_model` wrapped in `Helpers::Errors.with_retry` for production reliability
13
+
3
14
  ## [0.2.0] - 2026-03-31
4
15
 
5
16
  ### Added
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Bedrock
6
+ module Helpers
7
+ module Usage
8
+ EMPTY_USAGE = {
9
+ input_tokens: 0,
10
+ output_tokens: 0,
11
+ cache_read_tokens: 0,
12
+ cache_write_tokens: 0
13
+ }.freeze
14
+
15
+ module_function
16
+
17
+ def normalize(sdk_usage)
18
+ return EMPTY_USAGE.dup unless sdk_usage
19
+
20
+ {
21
+ input_tokens: sdk_usage.input_tokens || 0,
22
+ output_tokens: sdk_usage.output_tokens || 0,
23
+ cache_read_tokens: 0,
24
+ cache_write_tokens: 0
25
+ }
26
+ end
27
+
28
+ def from_json(parsed)
29
+ return EMPTY_USAGE.dup unless parsed.is_a?(Hash)
30
+
31
+ usage = parsed['usage'] || {}
32
+ {
33
+ input_tokens: usage['input_tokens'] || 0,
34
+ output_tokens: usage['output_tokens'] || 0,
35
+ cache_read_tokens: 0,
36
+ cache_write_tokens: 0
37
+ }
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -3,6 +3,7 @@
3
3
  require 'legion/extensions/bedrock/helpers/client'
4
4
  require 'legion/extensions/bedrock/helpers/errors'
5
5
  require 'legion/extensions/bedrock/helpers/thinking'
6
+ require 'legion/extensions/bedrock/helpers/usage'
6
7
 
7
8
  module Legion
8
9
  module Extensions
@@ -30,7 +31,7 @@ module Legion
30
31
  response = Helpers::Errors.with_retry { client.converse(**request) }
31
32
  {
32
33
  result: response.output,
33
- usage: response.usage,
34
+ usage: Helpers::Usage.normalize(response.usage),
34
35
  stop_reason: response.stop_reason
35
36
  }
36
37
  end
@@ -83,7 +84,7 @@ module Legion
83
84
 
84
85
  {
85
86
  result: accumulated_text,
86
- usage: final_usage,
87
+ usage: Helpers::Usage.normalize(final_usage),
87
88
  stop_reason: final_stop
88
89
  }
89
90
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require 'json'
4
4
  require 'legion/extensions/bedrock/helpers/client'
5
+ require 'legion/extensions/bedrock/helpers/errors'
6
+ require 'legion/extensions/bedrock/helpers/usage'
5
7
 
6
8
  module Legion
7
9
  module Extensions
@@ -12,21 +14,25 @@ module Legion
12
14
  content_type: 'application/json', accept: 'application/json',
13
15
  region: Helpers::Client::DEFAULT_REGION, **)
14
16
  client = Helpers::Client.bedrock_runtime_client(
15
- access_key_id: access_key_id,
16
- secret_access_key: secret_access_key,
17
- region: region
17
+ access_key_id:,
18
+ secret_access_key:,
19
+ region:
18
20
  )
19
21
 
20
- response = client.invoke_model(
21
- model_id: model_id,
22
- body: ::JSON.dump(body),
23
- content_type: content_type,
24
- accept: accept
25
- )
22
+ response = Helpers::Errors.with_retry do
23
+ client.invoke_model(
24
+ model_id:,
25
+ body: ::JSON.dump(body),
26
+ content_type:,
27
+ accept:
28
+ )
29
+ end
26
30
 
31
+ parsed = ::JSON.parse(response.body.read)
27
32
  {
28
- result: ::JSON.parse(response.body.read),
29
- content_type: response.content_type
33
+ result: parsed,
34
+ content_type: response.content_type,
35
+ usage: Helpers::Usage.from_json(parsed)
30
36
  }
31
37
  end
32
38
 
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Bedrock
6
- VERSION = '0.2.0'
6
+ VERSION = '0.2.1'
7
7
  end
8
8
  end
9
9
  end
@@ -6,6 +6,7 @@ require 'legion/extensions/bedrock/helpers/errors'
6
6
  require 'legion/extensions/bedrock/helpers/credentials'
7
7
  require 'legion/extensions/bedrock/helpers/thinking'
8
8
  require 'legion/extensions/bedrock/helpers/model_registry'
9
+ require 'legion/extensions/bedrock/helpers/usage'
9
10
  require 'legion/extensions/bedrock/runners/models'
10
11
  require 'legion/extensions/bedrock/runners/converse'
11
12
  require 'legion/extensions/bedrock/runners/invoke'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-bedrock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -161,6 +161,7 @@ files:
161
161
  - lib/legion/extensions/bedrock/helpers/errors.rb
162
162
  - lib/legion/extensions/bedrock/helpers/model_registry.rb
163
163
  - lib/legion/extensions/bedrock/helpers/thinking.rb
164
+ - lib/legion/extensions/bedrock/helpers/usage.rb
164
165
  - lib/legion/extensions/bedrock/runners/converse.rb
165
166
  - lib/legion/extensions/bedrock/runners/invoke.rb
166
167
  - lib/legion/extensions/bedrock/runners/models.rb