* Extract session usage and add to metadata
(metadata: Record<string, any>)
| 74 | * Extract session usage and add to metadata |
| 75 | */ |
| 76 | function collectSessionUsage(metadata: Record<string, any>): void { |
| 77 | try { |
| 78 | const usage = getSessionUsage(); |
| 79 | if (usage.totalCost > 0) { |
| 80 | metadata.usage = { |
| 81 | totalCost: parseFloat(usage.totalCost.toFixed(6)), |
| 82 | promptTokens: usage.promptTokens, |
| 83 | completionTokens: usage.completionTokens, |
| 84 | ...(usage.promptTokensDetails?.cachedTokens && { |
| 85 | cachedTokens: usage.promptTokensDetails.cachedTokens, |
| 86 | }), |
| 87 | ...(usage.promptTokensDetails?.cacheWriteTokens && { |
| 88 | cacheWriteTokens: usage.promptTokensDetails.cacheWriteTokens, |
| 89 | }), |
| 90 | }; |
| 91 | } |
| 92 | } catch (err) { |
| 93 | logger.debug("Failed to get session usage (non-critical)", err as any); |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | /** |
| 98 | * Update agent session metadata in control plane |
no test coverage detected