legion-tty 0.4.36 → 0.4.37

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: 2e331de1a9cb6b1a10576797303b5f1c691b639a74212c5cca6dc5d5fb161f7c
4
- data.tar.gz: 01b5bfdefa8e991d01db3da00c1f0d7f51ff029d08c89e6a008a1abb607c8543
3
+ metadata.gz: f6aab5b9e38570a9072b676e7573506c5051693e503ff3861c1f7c042e836267
4
+ data.tar.gz: 412cd703adfd6117e87fb0a57820d8d01c60d2701dea9b2b0c6c30c5f0a44f06
5
5
  SHA512:
6
- metadata.gz: f94def1314643beeda49eb00c7a9f70a4cacee8843c56551bf24b9edfa77dfcbf17fbca6f9c5f708574a14bdf3316e382a04d41e542e8d841eba21324cc0d248
7
- data.tar.gz: fa6d3c970d1e33492185f3cb89e3dbc9f349c8f36431558f86f13bd1a48c96656a6b0adecee84bd2dc3713ee11c25a09282bdacc3cc7ffff6a3886e785b1839e
6
+ metadata.gz: e6164b922a3e05f202cc8ae224ce0a8ebc84cba655ee333bfc74dfaf66f3ab62aeff4dfde49e624d7d40f26e0cb377a3ba36a20b0f03e0806f55f08e9efd43da
7
+ data.tar.gz: 37b23570482bc80906620439d165594bd436d56c87da0f13612729e8e5d06f26ebf786881c88b708236efb9af3d55f71c407e46051680479bd1f6c95940f1d68
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.37] - 2026-03-26
4
+
5
+ ### Fixed
6
+ - Token tracking uses `model_id` from RubyLLM::Message response (was incorrectly checking non-existent `model` method)
7
+ - Initialize TokenTracker with actual model from LLM chat session when available
8
+ - Guard against blank `model_id` in `track_response_tokens` — a nil `model_id` no longer overwrites the previously-set model with an empty string
9
+
10
+ ### Added
11
+ - Daemon path token tracking via `track_daemon_tokens` (reads `meta[:tokens_in]`/`meta[:tokens_out]` from daemon response)
12
+ - Extracted `update_status_bar_tokens` helper to DRY up status bar updates after tracking
13
+
3
14
  ## [0.4.36] - 2026-03-26
4
15
 
5
16
  ### Changed
@@ -74,7 +74,10 @@ module Legion
74
74
  @message_stream = Components::MessageStream.new
75
75
  @status_bar = Components::StatusBar.new
76
76
  @llm_chat = app.respond_to?(:llm_chat) ? app.llm_chat : nil
77
- @token_tracker = Components::TokenTracker.new(provider: detect_provider)
77
+ @token_tracker = Components::TokenTracker.new(
78
+ provider: detect_provider,
79
+ model: @llm_chat.respond_to?(:model) ? @llm_chat.model.to_s : nil
80
+ )
78
81
  @session_store = SessionStore.new
79
82
  @session_name = 'default'
80
83
  @plan_mode = false
@@ -251,6 +254,7 @@ module Legion
251
254
  parser = build_tool_call_parser
252
255
  parser.feed(result[:response])
253
256
  parser.flush
257
+ track_daemon_tokens(result)
254
258
  when :error
255
259
  err = result.dig(:error, :message) || 'Unknown error'
256
260
  @message_stream.append_streaming("\n[Daemon error: #{err}]")
@@ -602,12 +606,31 @@ module Legion
602
606
  def track_response_tokens(response)
603
607
  return unless response.respond_to?(:input_tokens)
604
608
 
605
- model_id = response.respond_to?(:model) ? response.model.to_s : nil
609
+ raw_model = response.respond_to?(:model_id) ? response.model_id.to_s : nil
610
+ model_id = raw_model && !raw_model.empty? ? raw_model : nil
611
+ input_tokens = response.input_tokens.to_i
612
+ output_tokens = response.respond_to?(:output_tokens) ? response.output_tokens.to_i : 0
606
613
  @token_tracker.track(
607
- input_tokens: response.input_tokens.to_i,
608
- output_tokens: response.output_tokens.to_i,
614
+ input_tokens: input_tokens,
615
+ output_tokens: output_tokens,
609
616
  model: model_id
610
617
  )
618
+ update_status_bar_tokens
619
+ end
620
+
621
+ def track_daemon_tokens(result)
622
+ meta = result[:meta]
623
+ return unless meta.is_a?(Hash) && (meta[:tokens_in] || meta[:tokens_out])
624
+
625
+ @token_tracker.track(
626
+ input_tokens: meta[:tokens_in].to_i,
627
+ output_tokens: meta[:tokens_out].to_i,
628
+ model: meta[:model]&.to_s
629
+ )
630
+ update_status_bar_tokens
631
+ end
632
+
633
+ def update_status_bar_tokens
611
634
  @status_bar.update(
612
635
  tokens: @token_tracker.total_input_tokens + @token_tracker.total_output_tokens,
613
636
  cost: @token_tracker.total_cost
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module TTY
5
- VERSION = '0.4.36'
5
+ VERSION = '0.4.37'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-tty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.36
4
+ version: 0.4.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity