fix: update cost field even when API returns zero tokens

When OpenAI-compatible APIs return content-filtered responses with all zero tokens,
the cost field is now properly set (even if 0), preventing the API request spinner
from running indefinitely.

Fixes #9574
This commit is contained in:
Roo Code 2025-11-25 13:32:34 +00:00
parent 2945b30191
commit 65fe488ea7

View file

@ -2574,7 +2574,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
tokens.input > 0 ||
tokens.output > 0 ||
tokens.cacheWrite > 0 ||
tokens.cacheRead > 0
tokens.cacheRead > 0 ||
tokens.total !== undefined
) {
// Update the shared variables atomically
inputTokens = tokens.input
@ -2663,7 +2664,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
bgInputTokens > 0 ||
bgOutputTokens > 0 ||
bgCacheWriteTokens > 0 ||
bgCacheReadTokens > 0
bgCacheReadTokens > 0 ||
bgTotalCost !== undefined
) {
// We have usage data either from a usage chunk or accumulated tokens
await captureUsageData(
@ -2688,7 +2690,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
bgInputTokens > 0 ||
bgOutputTokens > 0 ||
bgCacheWriteTokens > 0 ||
bgCacheReadTokens > 0
bgCacheReadTokens > 0 ||
bgTotalCost !== undefined
) {
await captureUsageData(
{