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`; }