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