File size: 870 Bytes
39371ea | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | export const CONTEXT_LIMIT = 8192;
// Usage describes the latest model call, not unsent draft text or the full
// saved transcript (which can contain turns excluded from model context).
export function restoredContextUsage(messages) {
const last = messages.findLast(message => message.role === 'assistant' && message.usage?.input > 0);
if (last) return { inputTokens: last.usage.input, outputTokens: last.usage.output ?? 0 };
return messages.length ? null : { inputTokens: 0, outputTokens: 0 };
}
export function contextLabel(usage) {
if (!usage) return `—/${CONTEXT_LIMIT.toLocaleString('en-US')} context`;
const used = usage.inputTokens + usage.outputTokens;
const remaining = Math.max(0, CONTEXT_LIMIT - used);
return `${used.toLocaleString('en-US')}/${CONTEXT_LIMIT.toLocaleString('en-US')} context · ${remaining.toLocaleString('en-US')} free`;
}
|