{#snippet seg(items: { value: string; label: string }[], active: string, pick: (v: string) => void)}
{#if ov.dateRange.earliest && ov.dateRange.latest} {range.label} · activity {fmtDateShort(ov.dateRange.earliest)} – {fmtDateShort( ov.dateRange.latest )} {:else} {range.label} · no activity in this window yet. {/if}
No model usage in this window.
{/if}Prompt caching stores the stable prefix of your prompt (system prompt, tools, earlier turns) so repeat requests skip reprocessing it.
Cache write — the first time a chunk of context is cached (≈1.25× the input rate).
Cache read — that context reused on later turns (≈0.1× the input rate, ~10× cheaper).
Claude Code resends the whole conversation each turn, so most of the input side becomes cheap cache reads. $ saved is those reads priced at the read rate vs. what they'd cost at the full input rate.
No usage gauges yet.
{/if}| Tool | Calls | Errors | Avg latency | Output |
|---|---|---|---|---|
| {t.toolName} | {fmtInt(t.callCount)} | 0}> {t.errorCount > 0 ? `${fmtInt(t.errorCount)} (${fmtPct(t.errorCount / t.callCount)})` : '—'} | {fmtMs(t.avgDurationMs)} | {fmtBytes(t.totalResultBytes)} |
No tool calls in this window.
{/if}No sessions in this window.
{/if}