Files
openchamber/packages/ui/src/stores/utils/contextUtils.ts
T

22 lines
916 B
TypeScript

export const calculateContextUsage = (
totalTokens: number,
contextLimit: number,
outputLimit: number
) => {
const safeContext = Number.isFinite(contextLimit) ? Math.max(contextLimit, 0) : 0;
const hasOutputLimit = Number.isFinite(outputLimit) && outputLimit > 0;
const safeOutput = hasOutputLimit ? Math.max(outputLimit, 0) : 0;
const effectiveOutputReservation = Math.min(hasOutputLimit ? safeOutput : 32000, 32000);
const normalizedOutput = Math.min(effectiveOutputReservation, safeContext);
const thresholdLimit = safeContext > 0 ? Math.max(safeContext - normalizedOutput, 1) : 0;
const percentage = thresholdLimit > 0 ? (totalTokens / thresholdLimit) * 100 : 0;
return {
percentage: Math.min(percentage, 100),
contextLimit: safeContext,
outputLimit: safeOutput,
thresholdLimit: thresholdLimit || 1,
normalizedOutput
};
};