MCPcopy
hub / github.com/TanStack/ai / buildResponsesUsage

Function buildResponsesUsage

packages/openai-base/src/usage.ts:87–118  ·  view source on GitHub ↗
(
  usage: OpenAI.Responses.ResponseUsage | undefined | null,
)

Source from the content-addressed store, hash-verified

85 * zeroed totals.
86 */
87export function buildResponsesUsage(
88 usage: OpenAI.Responses.ResponseUsage | undefined | null,
89): TokenUsage | undefined {
90 if (!usage) return undefined
91
92 const result = buildBaseUsage({
93 promptTokens: usage.input_tokens || 0,
94 completionTokens: usage.output_tokens || 0,
95 totalTokens: usage.total_tokens || 0,
96 })
97
98 // Despite the SDK types marking these required, they can be undefined at runtime.
99 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
100 const cachedTokens = usage.input_tokens_details?.cached_tokens
101 if (cachedTokens && cachedTokens > 0) {
102 result.promptTokensDetails = {
103 ...result.promptTokensDetails,
104 cachedTokens,
105 }
106 }
107
108 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
109 const reasoningTokens = usage.output_tokens_details?.reasoning_tokens
110 if (reasoningTokens && reasoningTokens > 0) {
111 result.completionTokensDetails = {
112 ...result.completionTokensDetails,
113 reasoningTokens,
114 }
115 }
116
117 return result
118}
119
120/**
121 * Build normalized {@link TokenUsage} from an OpenAI Images API `usage` object.

Callers 2

structuredOutputStreamFunction · 0.90
processStreamChunksFunction · 0.90

Calls 1

buildBaseUsageFunction · 0.90

Tested by

no test coverage detected