/** * Pure client-safe token-projection vocabulary. * * @module @deepseek-ai/dsh-token-meter/projection */ /** * Durable cumulative provider usage for a complete session log. * * The four buckets are disjoint. In particular, reasoning tokens are already * included in `outputTokens` and are not accumulated again. */ export interface TokenUsageProjection { uncachedInputTokens: number outputTokens: number cacheReadTokens: number cacheWriteTokens: number } /** * Approximate context occupancy for a status display. * * The two fields, when present, are deliberately NOT one atomic request * observation: `pressureTokens` is the newest provider-reported prompt size, * `contextWindow` the newest recorded route capacity. Switching models can * therefore pair a fresh capacity with the previous route's pressure until the * next request reports usage. This is an intentional trade — the value is a * user-facing reference, not a billing or gating input — and it matches how * the TUI status line has always computed occupancy. See the token-meter * README for the full rationale. */ export interface ContextPressureProjection { /** * Provider-reported prompt size of the most recent request: uncached input * plus cache reads and writes. Response output is excluded, so this does not * grow as the current turn streams. Absent until a provider reports usage. */ pressureTokens?: number /** Newest recorded route capacity; absent when no adapter advertised one. */ contextWindow?: number } declare module '@deepseek-ai/dsh-session-projection/types' { interface SessionProjectionMap { /** Provider-reported usage accumulated across the complete durable log. */ tokenUsage: TokenUsageProjection /** Newest request pressure paired with the newest known route capacity. */ contextPressure: ContextPressureProjection } }