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
|
@@ -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 {
|
|
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 =
|
|
319
|
+
const totalTokens = getTokenCountFromMessages(agentMessages)
|
|
320
320
|
const totalToolUseCount = countToolUses(agentMessages)
|
|
321
321
|
|
|
322
322
|
logEvent('tengu_agent_tool_completed', {
|
package/src/utils/tokens.ts
CHANGED
|
@@ -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) {
|