ace-llm 0.40.0 → 0.41.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: 48321c690b49c8d136a85e6f131328bbb4a6cfc55e504d1467c56d4d2a554092
4
- data.tar.gz: 0af124c46785c2278cd5b1d10b4e5fee3b7f67ff6e446cd28e9bbe091abea429
3
+ metadata.gz: be27933d1e68809cb7b94334d46cd97f41ad6d90426da9a707f7e3b80a6e3a3c
4
+ data.tar.gz: 0ce33a24a57a2d38ba1400cebaf3d9e44b51f1a25336ae925669c75c7ca62ac4
5
5
  SHA512:
6
- metadata.gz: e13d32931c1e249cba948d8113e124fc7412462fbafd2d397f389c38effe2beadc8f7413ce7e196893680e9c27842cae15218bba6da1db5c3f5e9a085ec34aff
7
- data.tar.gz: 73b5a3eab3ffeceab03a5c67631162ab245ff512e01262029b253a04bc7acad610926ce4e13c62944f618c9c03b19964ecf0af2ffd9adfec8d7fce23a5bca9f5
6
+ metadata.gz: 7ef60bd90eaad66f91b2633e7453b1bac297bc5804d74619b6939b4bfea318328a5ffa28a641fa70f3a0398b1e11e7ccce8e9669cf354b7aa713e80e4c51e9ad
7
+ data.tar.gz: 795ecb19d4864a89128f54741d328f7e374c0c239530200593bde3b9252222047f03723d43cfab7f4809ebad0c05b135b55c97c7e1eb72ca77fa2b0116b16235
data/CHANGELOG.md CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.41.1] - 2026-09-29
11
+
12
+ ### Changed
13
+
14
+ - Codex selector help now resolves `codex:gpt` to `gpt-6-sol` under the v6-only model catalog.
15
+
16
+ ### Technical
17
+
18
+ - Docs: codex alias table, shortcut rows, and demo tape aligned to the gpt-6 sol/astra/luna policy (gpt-5.x, terra, and spark entries removed).
19
+ - Tests: codex target and model-limit-resolver expectations updated to the v6 catalog.
20
+
21
+ ## [0.41.0] - 2026-09-27
22
+
23
+ ### Changed
24
+
25
+ - Query results now derive the top-level `usage` record from provider metadata token counts (model, input/output/cached/total). Absent counts stay absent; a measured zero cache read is kept so cost models can distinguish "no cache" from "unknown". Sessions no longer report "usage unavailable" when the provider supplied tokens.
26
+
10
27
  ## [0.40.0] - 2026-09-24
11
28
 
12
29
  ### Fixed
@@ -115,7 +115,7 @@ module Ace
115
115
  puts " Short aliases for common provider:MODEL combinations:"
116
116
  puts " gflash → google:gemini-flash-latest"
117
117
  puts " glite → google:gemini-flash-lite-latest"
118
- puts " codex:gpt → codex:gpt-5.4"
118
+ puts " codex:gpt → codex:gpt-6-sol"
119
119
  puts " cc → claude:sonnet"
120
120
  puts " sonnet → anthropic:claude-sonnet-4-5"
121
121
  end
@@ -153,7 +153,7 @@ module Ace
153
153
  thinking_level: response.fetch(:execution, {}).fetch(:thinking_level, parse_result.thinking_level),
154
154
  execution: response[:execution],
155
155
  requested_selector: provider_model,
156
- usage: response[:usage],
156
+ usage: build_usage(response[:metadata]),
157
157
  metadata: response[:metadata]
158
158
  }
159
159
 
@@ -182,6 +182,27 @@ module Ace
182
182
 
183
183
  private
184
184
 
185
+ # Derive the measured usage record from client metadata. Providers hand
186
+ # token counts to session recording through metadata keys; absent counts
187
+ # stay absent (never zero) so cost models can tell "no cache" from
188
+ # "unknown". Returns nil when the client reported no token counts at all.
189
+ def self.build_usage(metadata)
190
+ meta = metadata.is_a?(Hash) ? metadata : {}
191
+ input = meta[:input_tokens] || meta["input_tokens"]
192
+ output = meta[:output_tokens] || meta["output_tokens"]
193
+ return nil if input.nil? && output.nil?
194
+
195
+ usage = {model: meta[:model] || meta["model"]}
196
+ usage[:input_tokens] = input unless input.nil?
197
+ usage[:output_tokens] = output unless output.nil?
198
+ cached = meta[:cached_tokens] || meta["cached_tokens"]
199
+ usage[:cached_tokens] = cached unless cached.nil?
200
+ total = meta[:total_tokens] || meta["total_tokens"]
201
+ usage[:total_tokens] = total.nil? ? (input.to_i + output.to_i) : total
202
+ usage
203
+ end
204
+ private_class_method :build_usage
205
+
185
206
  def self.resolve_preset_name(suffix_preset, explicit_preset)
186
207
  suffix = suffix_preset&.to_s&.strip
187
208
  explicit = explicit_preset&.to_s&.strip
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module LLM
5
- VERSION = "0.40.0"
5
+ VERSION = "0.41.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-09-24 00:00:00.000000000 Z
10
+ date: 2026-09-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-cli