bingocode 1.1.200-beta.17 → 1.1.200-beta.18

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingocode",
3
- "version": "1.1.200-beta.17",
3
+ "version": "1.1.200-beta.18",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "claude": "bin/claude-win.cjs",
@@ -55,7 +55,7 @@ import {
55
55
  } from '../../utils/permissions/yoloClassifier.js'
56
56
  import { emitTaskProgress as emitTaskProgressEvent } from '../../utils/task/sdkProgress.js'
57
57
  import { isInProcessTeammate } from '../../utils/teammateContext.js'
58
- import { getTokenCountFromUsage } from '../../utils/tokens.js'
58
+ import { getTokenCountFromMessages } from '../../utils/tokens.js'
59
59
  import { EXIT_PLAN_MODE_V2_TOOL_NAME } from '../ExitPlanModeTool/constants.js'
60
60
  import { AGENT_TOOL_NAME, LEGACY_AGENT_TOOL_NAME } from './constants.js'
61
61
  import type { AgentDefinition } from './loadAgentsDir.js'
@@ -316,7 +316,7 @@ export function finalizeAgentTool(
316
316
  }
317
317
  }
318
318
 
319
- const totalTokens = getTokenCountFromUsage(lastAssistantMessage.message.usage)
319
+ const totalTokens = getTokenCountFromMessages(agentMessages)
320
320
  const totalToolUseCount = countToolUses(agentMessages)
321
321
 
322
322
  logEvent('tengu_agent_tool_completed', {
@@ -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) {