openlimiter 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Advice, type ProviderCode, type Snapshot } from "@openlimiter/core";
2
- import type { StatuslineColor, StatuslineConfig } from "./config.js";
2
+ import type { StatuslineColor, StatuslineConfig, StatuslineCaptions } from "./config.js";
3
3
  import type { StatuslineSession } from "./statusline-ingest.js";
4
4
  export declare const DEFAULT_PROVIDER_ORDER: readonly ProviderCode[];
5
5
  /**
@@ -44,7 +44,9 @@ export declare const CELL_GAP = " ";
44
44
  * so a statusline cell and a table row draw the same reading in the same band
45
45
  * colour. Left off, the bar reads the environment for itself.
46
46
  */
47
- export declare function statuslineCells(snapshots: readonly Snapshot[], now: string, order: readonly ProviderCode[], meters: StatuslineConfig["meters"], color: boolean, wide?: boolean): readonly StatuslineCell[];
47
+ export declare function statuslineCells(snapshots: readonly Snapshot[], now: string, order: readonly ProviderCode[], meters: StatuslineConfig["meters"], color: boolean, wide?: boolean, bars?: boolean, hostProvider?: ProviderCode | null, captions?: StatuslineCaptions): readonly StatuslineCell[];
48
+ /** The compact one line style, with the same meter meanings as the bar style. */
49
+ export declare function renderPlainStatusline(advice: Advice, snapshots: readonly Snapshot[], now: string, order: readonly ProviderCode[], meters: StatuslineConfig["meters"], pollHint?: string, hostProvider?: ProviderCode | null): string;
48
50
  /**
49
51
  * Everything that is not a cell.
50
52
  *
@@ -64,10 +66,12 @@ export declare const BAR_CELL_SEPARATOR = " | ";
64
66
  export declare const TEN_BLOCK_FULL = "\u2588";
65
67
  export declare const TEN_BLOCK_EMPTY = "\u2591";
66
68
  export declare function windowCode(snapshot: Snapshot): string;
69
+ /** The one caption rule used by bar cells, legacy cells, and availability. */
70
+ export declare function captionFor(snapshot: Snapshot, hostProvider: ProviderCode | null, captions?: StatuslineCaptions, familyCodes?: readonly string[]): string;
67
71
  export declare function tenBlockBar(value: number, unicode?: boolean): string;
68
72
  export declare function formatResetTime(resetAt: string | null | undefined, now: string): string;
69
73
  export declare function paintBand(text: string, value: number, _state: "fresh" | "stale", _wide?: boolean): string;
70
- export declare function barStyleCells(snapshots: readonly Snapshot[], now: string, order: readonly ProviderCode[], host: StatuslineHost, show: readonly string[], metersSetting: StatuslineConfig["meters"], color: boolean, wide?: boolean, explicitSelection?: boolean, visibility?: Readonly<Record<string, boolean>>, unicode?: boolean): readonly StatuslineCell[];
74
+ export declare function barStyleCells(snapshots: readonly Snapshot[], now: string, order: readonly ProviderCode[], host: StatuslineHost, show: readonly string[], metersSetting: StatuslineConfig["meters"], color: boolean, wide?: boolean, explicitSelection?: boolean, visibility?: Readonly<Record<string, boolean>>, unicode?: boolean, inputCaptions?: StatuslineCaptions): readonly StatuslineCell[];
71
75
  export interface StatuslineLayoutInput {
72
76
  advice: Advice;
73
77
  snapshots: readonly Snapshot[];
@@ -81,6 +85,7 @@ export interface StatuslineLayoutInput {
81
85
  unicode?: boolean;
82
86
  /** The parsed `api-spend-v1.json`, when the desktop app has saved one. */
83
87
  apiSpend?: unknown;
88
+ pollHint?: string;
84
89
  }
85
90
  /** What the statusline says when it has nothing bounded to say. */
86
91
  export declare const STATUSLINE_UNKNOWN = "OpenLimiter UNKNOWN";
@@ -1 +1 @@
1
- {"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PROVIDER_CODES, floorFixed, freshness } from "@openlimiter/core";
1
+ import { PROVIDER_CODES, claudeMeterPresentation, floorFixed, freshness, providerMeterPresentation, providerMeterRank, providerMeterVisible, isSnapshotDisplayEligible } from "@openlimiter/core";
2
2
  import { STATUSLINE_BAR_SEGMENTS, meterBar } from "./render.js";
3
3
  import { MONEY_TAGS, moneyCells } from "./api-spend.js";
4
4
  /**
@@ -87,9 +87,26 @@ const AVAILABILITY_WORDS = {
87
87
  function isAvailabilitySnapshot(snapshot) {
88
88
  return snapshot.availability !== undefined || snapshot.meter.toUpperCase() === "ACQUISITION";
89
89
  }
90
+ function isOpenRouterAccountBalance(snapshot) {
91
+ return snapshot.provider === "OPENROUTER" &&
92
+ (snapshot.meter === "ACCOUNT_BALANCE" || snapshot.meter === "CREDITS");
93
+ }
94
+ function isBalanceSnapshot(snapshot) {
95
+ return isOpenRouterAccountBalance(snapshot) ||
96
+ providerMeterPresentation(snapshot.provider, snapshot.meter)?.valueSemantics === "balance";
97
+ }
90
98
  function availabilityText(snapshot, now) {
91
99
  if (snapshot.availability === undefined)
92
100
  return "not measured";
101
+ if (snapshot.provider === "OPENROUTER" && snapshot.meter === "KEY_LIMIT" &&
102
+ snapshot.availability === "unlimited")
103
+ return "No key cap";
104
+ if (snapshot.provider === "OPENROUTER" && snapshot.meter === "ACCOUNT_BALANCE" &&
105
+ snapshot.availability === "missing_credentials")
106
+ return "unavailable";
107
+ if (snapshot.provider === "CODEX" && snapshot.meter === "CREDITS" &&
108
+ snapshot.availability === "unlimited")
109
+ return "unlimited credits";
93
110
  if (snapshot.availability === "rate_limited" && snapshot.retryAt !== undefined) {
94
111
  const retryAt = Date.parse(snapshot.retryAt);
95
112
  const nowAt = Date.parse(now);
@@ -153,8 +170,12 @@ export function meterClass(snapshot) {
153
170
  }
154
171
  /** Two spaces between cells, so a reader can tell one cell from the next. */
155
172
  export const CELL_GAP = " ";
156
- function buildCell(label, snapshot, state, color, wide) {
157
- const percent = floorFixed(snapshot.value, 1) + "%";
173
+ function buildCell(label, snapshot, state, color, wide, bars = true) {
174
+ const percent = Math.round(snapshot.value) + "%";
175
+ if (!bars) {
176
+ const text = label + " " + percent;
177
+ return { plain: text, painted: text, percent: snapshot.value };
178
+ }
158
179
  const bar = meterBar(snapshot.value, state, false, STATUSLINE_BAR_SEGMENTS, wide);
159
180
  return {
160
181
  plain: label + " " + bar + " " + percent,
@@ -162,8 +183,28 @@ function buildCell(label, snapshot, state, color, wide) {
162
183
  percent: snapshot.value
163
184
  };
164
185
  }
186
+ function balanceCell(label, snapshot, stale) {
187
+ let value;
188
+ if (snapshot.currency === "USD" &&
189
+ snapshot.usedAmount !== undefined &&
190
+ snapshot.limitAmount !== undefined) {
191
+ value = "$" + Math.max(0, snapshot.limitAmount - snapshot.usedAmount).toFixed(2);
192
+ }
193
+ else if (isOpenRouterAccountBalance(snapshot) && snapshot.unit === "CREDITS") {
194
+ // The current balance identity can carry a direct credit amount, as the
195
+ // capture fixture does. Version 3 also retires the ambiguous legacy name,
196
+ // but an already loaded balance keeps the same terminal meaning.
197
+ value = "$" + snapshot.value.toFixed(2);
198
+ }
199
+ else {
200
+ value = floorFixed(snapshot.value, 2) + " credits";
201
+ }
202
+ const text = label + " " + (stale ? "~" : "") + value;
203
+ return { plain: text, painted: text, percent: Number.NEGATIVE_INFINITY };
204
+ }
165
205
  function readingsFor(snapshots, provider, now) {
166
- const providerRows = snapshots.filter((snapshot) => snapshot.provider === provider);
206
+ const providerRows = snapshots.filter((snapshot) => snapshot.provider === provider && providerMeterVisible(snapshot.provider, snapshot.meter) &&
207
+ isSnapshotDisplayEligible(snapshot));
167
208
  const latestAccount = new Map();
168
209
  for (const snapshot of providerRows) {
169
210
  const observed = Date.parse(snapshot.observedAt);
@@ -173,29 +214,73 @@ function readingsFor(snapshots, provider, now) {
173
214
  }
174
215
  // Dormant accounts remain in the cache, but cannot displace an active account.
175
216
  const readings = providerRows
176
- .filter((snapshot) => (snapshot.unit === "PERCENT" || snapshot.provider === "OPENROUTER" && snapshot.unit === "CREDITS" || isAvailabilitySnapshot(snapshot)) &&
217
+ .filter((snapshot) => (snapshot.unit === "PERCENT" ||
218
+ isBalanceSnapshot(snapshot) ||
219
+ isAvailabilitySnapshot(snapshot)) &&
177
220
  Date.parse(now) - (latestAccount.get(snapshot.accountId) ?? 0) <= ONE_DAY * 1000)
178
221
  .map((snapshot) => ({
179
222
  snapshot,
180
223
  state: freshness(snapshot.observedAt, snapshot.expiresAt, now)
181
224
  }))
182
- .filter((reading) => reading.state !== "unknown")
225
+ .filter((reading) => reading.state !== "unknown" &&
226
+ !(reading.snapshot.provider === "CLAUDE" &&
227
+ reading.snapshot.meter.startsWith("SEVEN_DAY") &&
228
+ reading.state !== "fresh"))
183
229
  .sort((left, right) => {
230
+ const presentationRank = (providerMeterRank(provider, left.snapshot.meter) ?? 90) -
231
+ (providerMeterRank(provider, right.snapshot.meter) ?? 90);
232
+ if (presentationRank !== 0)
233
+ return presentationRank;
184
234
  const rank = METER_CLASS_RANK[meterClass(left.snapshot)] -
185
235
  METER_CLASS_RANK[meterClass(right.snapshot)];
186
236
  if (rank !== 0)
187
237
  return rank;
188
238
  return left.snapshot.meter < right.snapshot.meter ? -1 : 1;
189
239
  });
190
- const measuredAccounts = new Set(readings
240
+ const balanceRows = provider === "OPENROUTER"
241
+ ? readings.filter(({ snapshot }) => isOpenRouterAccountBalance(snapshot))
242
+ : [];
243
+ const measuredBalances = balanceRows.filter(({ snapshot }) => !isAvailabilitySnapshot(snapshot));
244
+ const newestBalance = provider === "OPENROUTER"
245
+ ? (measuredBalances.length > 0 ? measuredBalances : balanceRows).reduce((newest, reading) => newest === undefined ||
246
+ Date.parse(reading.snapshot.observedAt) > Date.parse(newest.snapshot.observedAt) ? reading : newest, undefined)
247
+ : undefined;
248
+ const selectedReadings = newestBalance === undefined
249
+ ? readings
250
+ : readings.filter(({ snapshot }) => !isOpenRouterAccountBalance(snapshot) || snapshot === newestBalance.snapshot);
251
+ const measuredAccounts = new Set(selectedReadings
191
252
  .filter((reading) => !isAvailabilitySnapshot(reading.snapshot))
192
253
  .map((reading) => reading.snapshot.accountId));
193
254
  // Only measured readings are drawn: a provider that cannot be measured right
194
255
  // now is left out of the line entirely, exactly as it is left off Home.
195
256
  // Unlimited is an answer, not a failure, so it stays.
196
- return readings.filter((reading) => !isAvailabilitySnapshot(reading.snapshot) ||
257
+ return selectedReadings.filter((reading) => !isAvailabilitySnapshot(reading.snapshot) ||
258
+ providerMeterPresentation(reading.snapshot.provider, reading.snapshot.meter)?.displayAvailability === true ||
197
259
  reading.snapshot.availability === "unlimited" && !measuredAccounts.has(reading.snapshot.accountId));
198
260
  }
261
+ function claudeFamilyCodesFor(snapshot, snapshots) {
262
+ return snapshots
263
+ .filter((candidate) => candidate.provider === "CLAUDE" && candidate.accountId === snapshot.accountId)
264
+ .map((candidate) => candidate.meter);
265
+ }
266
+ function tightest(readings) {
267
+ let worst = readings[0];
268
+ for (const reading of readings.slice(1)) {
269
+ if (worst === undefined || reading.snapshot.value > worst.snapshot.value)
270
+ worst = reading;
271
+ }
272
+ return worst;
273
+ }
274
+ function worstReadings(provider, readings) {
275
+ if (provider === "OPENROUTER") {
276
+ const keyRows = readings.filter(({ snapshot }) => snapshot.meter === "KEY_LIMIT");
277
+ const balanceRows = readings.filter(({ snapshot }) => snapshot.meter === "ACCOUNT_BALANCE");
278
+ return [tightest(keyRows), tightest(balanceRows)].filter((row) => row !== undefined);
279
+ }
280
+ const percentages = readings.filter(({ snapshot }) => !isAvailabilitySnapshot(snapshot) && !isBalanceSnapshot(snapshot));
281
+ return [tightest(percentages.length > 0 ? percentages : readings)]
282
+ .filter((row) => row !== undefined);
283
+ }
199
284
  /**
200
285
  * One cell per provider, or one per meter.
201
286
  *
@@ -210,35 +295,58 @@ function readingsFor(snapshots, provider, now) {
210
295
  * so a statusline cell and a table row draw the same reading in the same band
211
296
  * colour. Left off, the bar reads the environment for itself.
212
297
  */
213
- export function statuslineCells(snapshots, now, order, meters, color, wide) {
298
+ export function statuslineCells(snapshots, now, order, meters, color, wide, bars = true, hostProvider = null, captions = "short") {
214
299
  const cells = [];
215
300
  for (const provider of order) {
216
- const readings = readingsFor(snapshots.filter((snapshot) => snapshot.unit === "PERCENT" || isAvailabilitySnapshot(snapshot)), provider, now);
301
+ const readings = readingsFor(snapshots, provider, now);
217
302
  if (readings.length === 0)
218
303
  continue;
219
304
  if (meters === "all") {
220
305
  for (const reading of readings) {
221
306
  if (isAvailabilitySnapshot(reading.snapshot)) {
222
- cells.push(availabilityCell(provider, reading.snapshot, now));
307
+ cells.push(availabilityCell(captionFor(reading.snapshot, hostProvider, captions, claudeFamilyCodesFor(reading.snapshot, snapshots)), reading.snapshot, now));
308
+ continue;
309
+ }
310
+ const meterTag = captionFor(reading.snapshot, hostProvider, captions, claudeFamilyCodesFor(reading.snapshot, snapshots));
311
+ if (providerMeterPresentation(provider, reading.snapshot.meter)?.valueSemantics === "balance") {
312
+ cells.push(balanceCell(meterTag, reading.snapshot, reading.state === "stale"));
223
313
  continue;
224
314
  }
225
- cells.push(buildCell(provider + ":" + reading.snapshot.meter, reading.snapshot, reading.state, color, wide));
315
+ cells.push(buildCell(meterTag, reading.snapshot, reading.state, color, wide, bars));
226
316
  }
227
317
  continue;
228
318
  }
229
- let worst = readings[0];
230
- for (const reading of readings.slice(1)) {
231
- if (reading.snapshot.value > worst.snapshot.value)
232
- worst = reading;
233
- }
234
- if (isAvailabilitySnapshot(worst.snapshot)) {
235
- cells.push(availabilityCell(provider, worst.snapshot, now));
236
- continue;
319
+ for (const worst of worstReadings(provider, readings)) {
320
+ const label = captionFor(worst.snapshot, hostProvider, captions, claudeFamilyCodesFor(worst.snapshot, snapshots));
321
+ if (isAvailabilitySnapshot(worst.snapshot)) {
322
+ cells.push(availabilityCell(label, worst.snapshot, now));
323
+ continue;
324
+ }
325
+ if (providerMeterPresentation(provider, worst.snapshot.meter)?.valueSemantics === "balance") {
326
+ cells.push(balanceCell(label, worst.snapshot, worst.state === "stale"));
327
+ continue;
328
+ }
329
+ cells.push(buildCell(label, worst.snapshot, worst.state, color, wide, bars));
237
330
  }
238
- cells.push(buildCell(provider, worst.snapshot, worst.state, color, wide));
239
331
  }
240
332
  return cells;
241
333
  }
334
+ /** The compact one line style, with the same meter meanings as the bar style. */
335
+ export function renderPlainStatusline(advice, snapshots, now, order, meters, pollHint, hostProvider = null) {
336
+ if (!advice.inject || advice.reason === "UNKNOWN")
337
+ return "OpenLimiter UNKNOWN";
338
+ const cells = statuslineCells(snapshots, now, order, meters, false, undefined, false, hostProvider);
339
+ if (cells.length === 0)
340
+ return "OpenLimiter UNKNOWN";
341
+ const recommendation = advice.recommendation.code === "PREFER"
342
+ ? " PREFER " + advice.recommendation.provider
343
+ : " NONE";
344
+ const unknown = advice.unknownProviders.length === 0
345
+ ? ""
346
+ : " UNKNOWN " + advice.unknownProviders.join(",");
347
+ return "OpenLimiter " + advice.reason + " " + cells.map((cell) => cell.plain).join(" ") +
348
+ recommendation + unknown + (pollHint === undefined ? "" : " " + pollHint);
349
+ }
242
350
  /* ------------------------------------------------------------------ layout */
243
351
  /**
244
352
  * Everything that is not a cell.
@@ -355,6 +463,11 @@ export const BAR_CELL_SEPARATOR = " | ";
355
463
  export const TEN_BLOCK_FULL = "█";
356
464
  export const TEN_BLOCK_EMPTY = "░";
357
465
  export function windowCode(snapshot) {
466
+ const presentation = providerMeterPresentation(snapshot.provider, snapshot.meter);
467
+ const claude = snapshot.provider === "CLAUDE" ? claudeMeterPresentation(snapshot.meter) : null;
468
+ if (claude !== null && (claude.model !== null || claude.labelKey === "claudeExtraUsage")) {
469
+ return claude.compactLabel.toLowerCase();
470
+ }
358
471
  if (snapshot.unit === "CREDITS" || snapshot.window.kind === "lifetime") {
359
472
  return "";
360
473
  }
@@ -381,34 +494,84 @@ export function windowCode(snapshot) {
381
494
  return "mo";
382
495
  return "";
383
496
  }
497
+ /** The one caption rule used by bar cells, legacy cells, and availability. */
498
+ export function captionFor(snapshot, hostProvider, captions = "short", familyCodes = []) {
499
+ const provider = snapshot.provider;
500
+ const presentation = providerMeterPresentation(provider, snapshot.meter, familyCodes);
501
+ const claude = provider === "CLAUDE" ? claudeMeterPresentation(snapshot.meter, familyCodes) : null;
502
+ if (claude !== null && (claude.model !== null || claude.labelKey === "claudeExtraUsage")) {
503
+ return claude.compactLabel.toLowerCase();
504
+ }
505
+ if (provider === "ANTIGRAVITY" &&
506
+ (snapshot.meter === "THIRD_PARTY_SESSION" || snapshot.meter === "THIRD_PARTY_WEEKLY")) {
507
+ const scoped = presentation?.compactLabel.toLowerCase() ?? windowCode(snapshot);
508
+ return captions === "tagged" || hostProvider !== provider
509
+ ? PROVIDER_SHORT_TAGS[provider] + scoped
510
+ : scoped;
511
+ }
512
+ if (provider === "OPENROUTER" && snapshot.meter === "KEY_LIMIT" && snapshot.availability === undefined) {
513
+ const key = presentation?.compactLabel.toLowerCase() ?? "key";
514
+ return captions === "tagged" || hostProvider !== provider
515
+ ? PROVIDER_SHORT_TAGS[provider] + " " + key
516
+ : key;
517
+ }
518
+ const code = windowCode(snapshot);
519
+ if (code === "")
520
+ return PROVIDER_SHORT_TAGS[provider];
521
+ if (captions === "tagged" || hostProvider !== provider) {
522
+ return PROVIDER_SHORT_TAGS[provider] + code;
523
+ }
524
+ return code;
525
+ }
526
+ function visibilityKey(snapshot) {
527
+ if (snapshot.provider === "CLAUDE") {
528
+ const presentation = claudeMeterPresentation(snapshot.meter);
529
+ if (presentation?.labelKey === "claudeWeeklyFable")
530
+ return "fable";
531
+ if (presentation?.model !== null && presentation?.model !== undefined) {
532
+ return presentation.model.split(/[\s-]+/u)[0].toLowerCase();
533
+ }
534
+ if (presentation?.labelKey === "claudeExtraUsage")
535
+ return "extra";
536
+ }
537
+ return windowCode(snapshot).toLowerCase();
538
+ }
539
+ function windowVisible(snapshot, visibility) {
540
+ const specific = visibility[visibilityKey(snapshot)];
541
+ if (specific !== undefined)
542
+ return specific;
543
+ if (snapshot.provider === "CLAUDE" && claudeMeterPresentation(snapshot.meter)?.modelScoped) {
544
+ return visibility["7d"] !== false;
545
+ }
546
+ return true;
547
+ }
384
548
  export function tenBlockBar(value, unicode = true) {
385
549
  const clamped = Math.min(100, Math.max(0, value));
386
550
  const filled = clamped > 0 ? Math.max(1, Math.floor(clamped / 10)) : 0;
387
551
  const empty = 10 - filled;
388
552
  return "[" + (unicode ? TEN_BLOCK_FULL : "#").repeat(filled) + (unicode ? TEN_BLOCK_EMPTY : ".").repeat(empty) + "]";
389
553
  }
390
- export function formatResetTime(resetAt, now) {
391
- if (!resetAt)
392
- return "";
393
- const diffMs = new Date(resetAt).getTime() - new Date(now).getTime();
394
- const diffSec = Math.floor(diffMs / 1000);
395
- if (!Number.isFinite(diffSec) || diffSec <= 0)
396
- return "";
554
+ function compactResetDuration(diffSec) {
397
555
  if (diffSec >= 86_400) {
398
556
  const days = Math.floor(diffSec / 86_400);
399
557
  const hours = Math.floor((diffSec % 86_400) / 3600);
400
- return hours > 0 ? "·" + String(days) + "d" + String(hours) + "h" : "·" + String(days) + "d";
558
+ return String(days) + "d" + (hours > 0 ? String(hours) + "h" : "");
401
559
  }
402
560
  if (diffSec >= 3600) {
403
561
  const hours = Math.floor(diffSec / 3600);
404
562
  const mins = Math.floor((diffSec % 3600) / 60);
405
- return mins > 0 ? "·" + String(hours) + "h" + String(mins) + "m" : "·" + String(hours) + "h";
563
+ return String(hours) + "h" + (mins > 0 ? String(mins) + "m" : "");
406
564
  }
407
- if (diffSec >= 60) {
408
- const mins = Math.floor(diffSec / 60);
409
- return "·" + String(mins) + "m";
410
- }
411
- return "·" + String(diffSec) + "s";
565
+ return diffSec >= 60 ? String(Math.floor(diffSec / 60)) + "m" : String(diffSec) + "s";
566
+ }
567
+ export function formatResetTime(resetAt, now) {
568
+ if (!resetAt)
569
+ return "";
570
+ const diffMs = new Date(resetAt).getTime() - new Date(now).getTime();
571
+ const diffSec = Math.floor(diffMs / 1000);
572
+ if (!Number.isFinite(diffSec) || diffSec <= 0)
573
+ return "";
574
+ return "·" + compactResetDuration(diffSec);
412
575
  }
413
576
  export function paintBand(text, value, _state, _wide = false) {
414
577
  if (value >= 90)
@@ -419,7 +582,7 @@ export function paintBand(text, value, _state, _wide = false) {
419
582
  return "\x1b[33m" + text + "\x1b[0m";
420
583
  return "\x1b[32m" + text + "\x1b[0m";
421
584
  }
422
- export function barStyleCells(snapshots, now, order, host, show, metersSetting, color, wide, explicitSelection = false, visibility = {}, unicode = true) {
585
+ export function barStyleCells(snapshots, now, order, host, show, metersSetting, color, wide, explicitSelection = false, visibility = {}, unicode = true, inputCaptions = "short") {
423
586
  const cells = [];
424
587
  const hostProvider = HOST_PROVIDER[host];
425
588
  const allowedProviders = show.length === 0 && !explicitSelection
@@ -432,41 +595,26 @@ export function barStyleCells(snapshots, now, order, host, show, metersSetting,
432
595
  allowedProviders.has(shortTag));
433
596
  if (!isAllowed)
434
597
  continue;
435
- const readings = readingsFor(snapshots, provider, now).filter(({ snapshot }) => visibility[windowCode(snapshot)] !== false);
598
+ const readings = readingsFor(snapshots, provider, now).filter(({ snapshot }) => windowVisible(snapshot, visibility));
436
599
  // Nothing measured means nothing drawn, even for a provider someone chose.
437
600
  if (readings.length === 0)
438
601
  continue;
439
602
  let selectedReadings = [];
440
- if (provider === "OPENROUTER") {
441
- // Account caches may overlap. The newest observed balance owns the one
442
- // OpenRouter cell, and api spend remains the fallback when none exists.
443
- const balances = readings.filter(({ snapshot }) => snapshot.unit === "CREDITS" ||
444
- snapshot.currency === "USD" && snapshot.limitAmount !== undefined && snapshot.usedAmount !== undefined);
445
- if (balances.length > 0) {
446
- selectedReadings = [balances.reduce((newest, reading) => Date.parse(reading.snapshot.observedAt) > Date.parse(newest.snapshot.observedAt) ? reading : newest)];
447
- }
448
- }
449
- else if (provider === hostProvider) {
603
+ if (provider === hostProvider) {
450
604
  selectedReadings = readings;
451
605
  }
452
606
  else if (metersSetting === "all") {
453
607
  selectedReadings = readings;
454
608
  }
455
609
  else {
456
- let worst = readings[0];
457
- for (const r of readings.slice(1)) {
458
- if (r.snapshot.value > worst.snapshot.value)
459
- worst = r;
460
- }
461
- selectedReadings = [worst];
610
+ selectedReadings = worstReadings(provider, readings);
462
611
  }
463
612
  for (const reading of selectedReadings) {
464
613
  const { snapshot, state } = reading;
465
- const providerTag = provider === hostProvider ? "" : shortTag;
466
614
  const ageSeconds = Math.max(0, Math.floor((Date.parse(now) - Date.parse(snapshot.observedAt)) / 1000));
467
615
  const stale = state === "stale" || ageSeconds >= 180 || snapshot.precision === "estimated";
468
616
  if (isAvailabilitySnapshot(snapshot)) {
469
- const tag = providerTag || shortTag;
617
+ const tag = captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots));
470
618
  const plain = tag + " " + availabilityText(snapshot, now);
471
619
  const chosen = visibility[provider.toLowerCase()] === true ||
472
620
  allowedProviders?.has(provider.toLowerCase()) || allowedProviders?.has(shortTag);
@@ -475,23 +623,36 @@ export function barStyleCells(snapshots, now, order, host, show, metersSetting,
475
623
  (unknown ? (color ? " \x1b[31m[?]\x1b[0m" : " [?]") : ""), percent: Number.NEGATIVE_INFINITY });
476
624
  continue;
477
625
  }
478
- if (provider === "OPENROUTER" && (snapshot.unit === "CREDITS" ||
479
- snapshot.currency === "USD" && snapshot.limitAmount !== undefined && snapshot.usedAmount !== undefined)) {
480
- const balance = snapshot.unit === "CREDITS" ? snapshot.value : snapshot.limitAmount - snapshot.usedAmount;
481
- const amount = (stale ? "~" : "") + "$" + balance.toFixed(2);
482
- const band = balance < 1 ? 95 : balance < 5 ? 65 : 0;
483
- cells.push({ plain: "or " + amount, painted: "or " + (color ? paintBand(amount, band, "fresh") : amount), percent: band });
626
+ if (isBalanceSnapshot(snapshot)) {
627
+ cells.push(balanceCell(captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots)), snapshot, stale));
628
+ continue;
629
+ }
630
+ if (provider === "OPENROUTER" && snapshot.meter === "KEY_LIMIT" &&
631
+ snapshot.usedAmount !== undefined && snapshot.limitAmount !== undefined &&
632
+ snapshot.currency === "USD") {
633
+ const amount = (stale ? "~" : "") + "$" + snapshot.usedAmount.toFixed(2) +
634
+ "/$" + snapshot.limitAmount.toFixed(2);
635
+ const plain = captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots)) + " " + amount;
636
+ cells.push({ plain, painted: plain, percent: snapshot.value });
637
+ continue;
638
+ }
639
+ if (snapshot.provider === "CLAUDE" && snapshot.meter === "EXTRA_USAGE" &&
640
+ snapshot.usedAmount !== undefined && snapshot.limitAmount !== undefined &&
641
+ snapshot.currency === "USD") {
642
+ const amount = (stale ? "~" : "") + "$" + snapshot.usedAmount.toFixed(2) +
643
+ "/$" + snapshot.limitAmount.toFixed(2);
644
+ const tag = captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots));
645
+ const plain = tag + " " + amount;
646
+ cells.push({ plain, painted: plain, percent: snapshot.value });
484
647
  continue;
485
648
  }
486
649
  if (snapshot.usedAmount !== undefined && snapshot.currency === "USD") {
487
- const tag = providerTag || shortTag;
650
+ const tag = captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots));
488
651
  const plain = tag + " spend " + (stale ? "~" : "") + "$" + snapshot.usedAmount.toFixed(2);
489
652
  cells.push({ plain, painted: plain, percent: snapshot.value });
490
653
  continue;
491
654
  }
492
- const winTag = windowCode(snapshot);
493
- const combinedTag = providerTag + winTag;
494
- const tag = combinedTag === "" ? shortTag : combinedTag;
655
+ const tag = captionFor(snapshot, hostProvider, inputCaptions, claudeFamilyCodesFor(snapshot, snapshots));
495
656
  const bar = tenBlockBar(snapshot.value, unicode);
496
657
  const percentStr = (stale ? "~" : "") + Math.round(snapshot.value) + "%";
497
658
  const resetStr = formatResetTime(snapshot.resetAt, now).replace("·", unicode ? "·" : ".");
@@ -519,11 +680,10 @@ export function barStyleCells(snapshots, now, order, host, show, metersSetting,
519
680
  function renderBarStatusline(input) {
520
681
  const { config } = input;
521
682
  const host = input.host ?? "claude";
522
- const cells = barStyleCells(input.snapshots, input.now, resolveProviderOrder(config.order), host, config.show, config.meters, input.color, input.wide, config.showMode === "explicit", config.visibility, input.unicode);
683
+ const cells = barStyleCells(input.snapshots, input.now, resolveProviderOrder(config.order), host, config.show, config.meters, input.color, input.wide, config.showMode === "explicit", config.visibility, input.unicode, config.captions);
523
684
  const listed = new Set(config.show.map((entry) => entry.toLowerCase()));
524
685
  const apiMoney = moneyCells(input.apiSpend, {
525
686
  now: input.now,
526
- hasOpenRouter: cells.some((cell) => cell.plain.startsWith("or ")),
527
687
  allowed: (name) => {
528
688
  const tag = name === "openrouter" ? "or" : MONEY_TAGS[name];
529
689
  return config.visibility?.[name] ??
@@ -548,6 +708,8 @@ function renderBarStatusline(input) {
548
708
  : cell.plain));
549
709
  if (shown("style") && session.style)
550
710
  parts.push(session.style);
711
+ if (input.pollHint && shown("7d"))
712
+ parts.push(input.pollHint);
551
713
  // The host owns wrapping. A column guess must not silently hide a provider.
552
714
  return parts.join(BAR_CELL_SEPARATOR) || STATUSLINE_UNKNOWN;
553
715
  }
@@ -566,9 +728,9 @@ export function renderStatuslineLayout(input) {
566
728
  if (config.style === "cells") {
567
729
  if (!advice.inject || advice.reason === "UNKNOWN")
568
730
  return STATUSLINE_UNKNOWN;
569
- const cells = statuslineCells(input.snapshots.filter((snapshot) => config.visibility?.[windowCode(snapshot)] !== false), input.now, resolveProviderOrder(config.order).filter((provider) => config.visibility?.[provider.toLowerCase()] ??
731
+ const cells = statuslineCells(input.snapshots.filter((snapshot) => windowVisible(snapshot, config.visibility ?? {})), input.now, resolveProviderOrder(config.order).filter((provider) => config.visibility?.[provider.toLowerCase()] ??
570
732
  (config.show.length === 0 && config.showMode !== "explicit" ||
571
- config.show.includes(provider.toLowerCase()) || config.show.includes(PROVIDER_SHORT_TAGS[provider]))), config.meters, input.color, input.wide);
733
+ config.show.includes(provider.toLowerCase()) || config.show.includes(PROVIDER_SHORT_TAGS[provider]))), config.meters, input.color, input.wide, true, HOST_PROVIDER[input.host ?? "claude"], config.captions);
572
734
  if (cells.length === 0)
573
735
  return STATUSLINE_UNKNOWN;
574
736
  const head = statuslineHead(advice);