bingocode 1.1.200-beta.2 → 1.1.200-beta.21

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.
@@ -52,6 +52,29 @@ export function getTokenCountFromUsage(usage: Usage): number {
52
52
  )
53
53
  }
54
54
 
55
+ /**
56
+ * Calculate total tokens across all agent messages, matching the ProgressTracker
57
+ * accumulation logic in LocalAgentTask. In Claude's API:
58
+ * - input_tokens (and cache tokens) are cumulative per turn — each call already
59
+ * includes all previous context, so we keep only the LATEST value.
60
+ * - output_tokens are per-turn independent, so we SUM them across all turns.
61
+ */
62
+ export function getTokenCountFromMessages(messages: Message[]): number {
63
+ let latestInputTokens = 0
64
+ let cumulativeOutputTokens = 0
65
+ for (const message of messages) {
66
+ const usage = getTokenUsage(message)
67
+ if (usage) {
68
+ latestInputTokens =
69
+ usage.input_tokens +
70
+ (usage.cache_creation_input_tokens ?? 0) +
71
+ (usage.cache_read_input_tokens ?? 0)
72
+ cumulativeOutputTokens += usage.output_tokens
73
+ }
74
+ }
75
+ return latestInputTokens + cumulativeOutputTokens
76
+ }
77
+
55
78
  export function tokenCountFromLastAPIResponse(messages: Message[]): number {
56
79
  let i = messages.length - 1
57
80
  while (i >= 0) {