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