| /** Compact token counts for context-window UI (e.g. 198.5k, 1.0M). */ | |
| export function formatCompactTokenCount(value: number): string { | |
| if (value >= 1_000_000) { | |
| const millions = value / 1_000_000; | |
| if (millions >= 10 && Number.isInteger(millions)) { | |
| return `${millions.toFixed(0)}M`; | |
| } | |
| return `${millions.toFixed(1)}M`; | |
| } | |
| if (value >= 1_000) { | |
| const thousands = value / 1_000; | |
| if (Number.isInteger(thousands)) { | |
| return `${thousands.toFixed(0)}k`; | |
| } | |
| return `${thousands.toFixed(1)}k`; | |
| } | |
| return value.toLocaleString(); | |
| } | |
| export function getContextWindowUsagePercentage( | |
| perTurnToken: number, | |
| contextWindow: number, | |
| ): number { | |
| if (contextWindow <= 0) { | |
| return 0; | |
| } | |
| return Math.min(100, (perTurnToken / contextWindow) * 100); | |
| } | |