MCPcopy
hub / github.com/claude-code-best/claude-code / formatModelUsage

Function formatModelUsage

src/cost-tracker.ts:182–227  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

180}
181
182function formatModelUsage(): string {
183 const modelUsageMap = getModelUsage()
184 if (Object.keys(modelUsageMap).length === 0) {
185 return 'Usage: 0 input, 0 output, 0 cache read, 0 cache write'
186 }
187
188 // Accumulate usage by short name
189 const usageByShortName: { [shortName: string]: ModelUsage } = {}
190 for (const [model, usage] of Object.entries(modelUsageMap)) {
191 const shortName = getCanonicalName(model)
192 if (!usageByShortName[shortName]) {
193 usageByShortName[shortName] = {
194 inputTokens: 0,
195 outputTokens: 0,
196 cacheReadInputTokens: 0,
197 cacheCreationInputTokens: 0,
198 webSearchRequests: 0,
199 costUSD: 0,
200 contextWindow: 0,
201 maxOutputTokens: 0,
202 }
203 }
204 const accumulated = usageByShortName[shortName]
205 accumulated.inputTokens += usage.inputTokens
206 accumulated.outputTokens += usage.outputTokens
207 accumulated.cacheReadInputTokens += usage.cacheReadInputTokens
208 accumulated.cacheCreationInputTokens += usage.cacheCreationInputTokens
209 accumulated.webSearchRequests += usage.webSearchRequests
210 accumulated.costUSD += usage.costUSD
211 }
212
213 let result = 'Usage by model:'
214 for (const [shortName, usage] of Object.entries(usageByShortName)) {
215 const usageString =
216 ` ${formatNumber(usage.inputTokens)} input, ` +
217 `${formatNumber(usage.outputTokens)} output, ` +
218 `${formatNumber(usage.cacheReadInputTokens)} cache read, ` +
219 `${formatNumber(usage.cacheCreationInputTokens)} cache write` +
220 (usage.webSearchRequests > 0
221 ? `, ${formatNumber(usage.webSearchRequests)} web search`
222 : '') +
223 ` (${formatCost(usage.costUSD)})`
224 result += `\n` + `${shortName}:`.padStart(21) + usageString
225 }
226 return result
227}
228
229export function formatTotalCost(): string {
230 const costDisplay =

Callers 1

formatTotalCostFunction · 0.85

Calls 6

getModelUsageFunction · 0.85
getCanonicalNameFunction · 0.85
formatNumberFunction · 0.85
formatCostFunction · 0.85
entriesMethod · 0.80
keysMethod · 0.65

Tested by

no test coverage detected