@@ -3,6 +3,12 @@ import type {TokenUsageBreakdown} from "./app-server/v2";
33/**
44 * Token usage information for a turn.
55 * This interface decouples our API from Codex's internal types.
6+ *
7+ * [totalTokens]: total number of tokens used (the sum of all other fields)
8+ * [inputTokens]: number of non-cached input tokens
9+ * [cachedInputTokens]: number of cached input tokens
10+ * [outputTokens]: number of output tokens (including reasoning output tokens)
11+ * [reasoningOutputTokens]: number of reasoning output tokens
612 */
713export interface TokenCount {
814 totalTokens : number ;
@@ -15,11 +21,13 @@ export interface TokenCount {
1521/**
1622 * Maps Codex's TokenUsageBreakdown to our TokenCount interface.
1723 * This explicit mapping ensures compile-time errors if Codex changes their types.
24+ * Note: Codex includes cached input tokens in the input token count, so they are subtracted here.
1825 */
1926export function toTokenCount ( usage : TokenUsageBreakdown ) : TokenCount {
27+
2028 return {
2129 totalTokens : usage . totalTokens ,
22- inputTokens : usage . inputTokens ,
30+ inputTokens : usage . inputTokens - usage . cachedInputTokens ,
2331 cachedInputTokens : usage . cachedInputTokens ,
2432 outputTokens : usage . outputTokens ,
2533 reasoningOutputTokens : usage . reasoningOutputTokens ,
0 commit comments