From 50e7ee0e67fa68c633cfbd6500cfc9fd265d8f7b Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Thu, 29 Jan 2026 12:44:42 -0800 Subject: [PATCH] fix: capture accurate usage --- src-tauri/src/wsl_bridge.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/wsl_bridge.rs b/src-tauri/src/wsl_bridge.rs index b1e8f31..75292f2 100644 --- a/src-tauri/src/wsl_bridge.rs +++ b/src-tauri/src/wsl_bridge.rs @@ -704,7 +704,7 @@ fn process_json_line( subtype, result, permission_denials, - usage: _, + usage, .. } => { let state = if subtype == "success" { @@ -713,6 +713,21 @@ fn process_json_line( CharacterState::Error }; + // Track token usage from Result messages if available + // This captures tokens from tool outputs and other operations + if let Some(usage_info) = usage { + // We need the model info to calculate cost properly + // For now, use the last known model from stats + let model = { + let stats_guard = stats.read(); + stats_guard.model.clone().unwrap_or_else(|| "claude-opus-4-20250514".to_string()) + }; + + let mut stats_guard = stats.write(); + stats_guard.add_usage(usage_info.input_tokens, usage_info.output_tokens, &model); + println!("Result message tokens - input: {}, output: {}", usage_info.input_tokens, usage_info.output_tokens); + } + // Always emit updated stats on result message (less frequent) // This includes the latest session duration let newly_unlocked = { -- 2.52.0