| 1 | export interface ContextWindowPercentages { |
| 2 | raw: number; |
| 3 | display: number; |
| 4 | } |
| 5 | |
| 6 | export function contextWindowPercentages(usedTokens: number, windowTokens: number): ContextWindowPercentages { |
| 7 | if (!Number.isFinite(usedTokens) || !Number.isFinite(windowTokens) || usedTokens <= 0 || windowTokens <= 0) { |
| 8 | return { raw: 0, display: 0 }; |
| 9 | } |
| 10 | const rounded = Math.max(0, Math.round((usedTokens / windowTokens) * 100)); |
| 11 | const raw = usedTokens > windowTokens ? Math.max(101, rounded) : rounded; |
| 12 | return { raw, display: Math.min(100, raw) }; |
| 13 | } |
| 14 |