aggregateTokenUsage sums token usage rows and aggregates metadata.
(tokens []database.AIBridgeTokenUsage)
| 1433 | |
| 1434 | // aggregateTokenUsage sums token usage rows and aggregates metadata. |
| 1435 | func aggregateTokenUsage(tokens []database.AIBridgeTokenUsage) codersdk.AIBridgeSessionThreadsTokenUsage { |
| 1436 | var inputTokens, outputTokens, cacheRead, cacheWrite int64 |
| 1437 | for _, tu := range tokens { |
| 1438 | inputTokens += tu.InputTokens |
| 1439 | outputTokens += tu.OutputTokens |
| 1440 | cacheRead += tu.CacheReadInputTokens |
| 1441 | cacheWrite += tu.CacheWriteInputTokens |
| 1442 | } |
| 1443 | return codersdk.AIBridgeSessionThreadsTokenUsage{ |
| 1444 | InputTokens: inputTokens, |
| 1445 | OutputTokens: outputTokens, |
| 1446 | CacheReadInputTokens: cacheRead, |
| 1447 | CacheWriteInputTokens: cacheWrite, |
| 1448 | Metadata: aggregateTokenMetadata(tokens), |
| 1449 | } |
| 1450 | } |
| 1451 | |
| 1452 | // aggregateTokenMetadata sums all numeric values from the metadata |
| 1453 | // JSONB across the given token usage rows by key. Nested objects are |