MCPcopy Index your code
hub / github.com/TanStack/ai / flattenModalityTokenCounts

Function flattenModalityTokenCounts

packages/ai-gemini/src/usage.ts:30–67  ·  view source on GitHub ↗
(
  modalities?: Array<ModalityTokenCount>,
)

Source from the content-addressed store, hash-verified

28 * normalized structure.
29 */
30export function flattenModalityTokenCounts(
31 modalities?: Array<ModalityTokenCount>,
32): FlattenedModalityTokens {
33 if (!modalities || modalities.length === 0) {
34 return {}
35 }
36
37 const result: FlattenedModalityTokens = {}
38
39 for (const item of modalities) {
40 if (!item.modality || item.tokenCount === undefined) {
41 continue
42 }
43
44 const modality = item.modality.toUpperCase()
45 const count = item.tokenCount
46
47 switch (modality) {
48 case 'TEXT':
49 result.textTokens = (result.textTokens ?? 0) + count
50 break
51 case 'IMAGE':
52 result.imageTokens = (result.imageTokens ?? 0) + count
53 break
54 case 'AUDIO':
55 result.audioTokens = (result.audioTokens ?? 0) + count
56 break
57 case 'VIDEO':
58 result.videoTokens = (result.videoTokens ?? 0) + count
59 break
60 case 'DOCUMENT':
61 result.documentTokens = (result.documentTokens ?? 0) + count
62 break
63 }
64 }
65
66 return result
67}
68
69/**
70 * Checks if a FlattenedModalityTokens object has any values set.

Callers 2

buildGeminiUsageFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected