dsh-subscriptions 0.1.5 → 0.2.2

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.
Files changed (110) hide show
  1. package/README.md +212 -154
  2. package/lib/auth/claude-code-creds.js +31 -9
  3. package/lib/auth/device-flow.js +16 -9
  4. package/lib/auth/oauth-flow.js +13 -10
  5. package/lib/auth/rpc.d.ts +73 -2
  6. package/lib/auth/rpc.js +124 -23
  7. package/lib/auth/store.js +80 -31
  8. package/lib/client/CursorCard.d.ts +1 -1
  9. package/lib/client/CursorCard.js +50 -16
  10. package/lib/client/ExternalUsageCards.d.ts +1 -1
  11. package/lib/client/ExternalUsageCards.js +37 -16
  12. package/lib/client/ImageGallery.d.ts +2 -2
  13. package/lib/client/ImageGallery.js +92 -33
  14. package/lib/client/ImageGenerateToolview.js +50 -14
  15. package/lib/client/OllamaCard.d.ts +13 -0
  16. package/lib/client/OllamaCard.js +94 -0
  17. package/lib/client/OllamaSettingsManager.d.ts +24 -0
  18. package/lib/client/OllamaSettingsManager.js +329 -0
  19. package/lib/client/ProviderAccountManager.d.ts +1 -1
  20. package/lib/client/ProviderAccountManager.js +164 -49
  21. package/lib/client/ProviderModelEditor.js +109 -26
  22. package/lib/client/SpeedSelect.d.ts +62 -14
  23. package/lib/client/SpeedSelect.js +257 -46
  24. package/lib/client/SubscriptionUsageBadge.d.ts +5 -11
  25. package/lib/client/SubscriptionUsageBadge.js +301 -112
  26. package/lib/client/SubscriptionsSection.d.ts +2 -0
  27. package/lib/client/SubscriptionsSection.js +259 -85
  28. package/lib/client/UsageBadgeDisplaySetting.js +35 -12
  29. package/lib/client/UsageMeter.d.ts +1 -1
  30. package/lib/client/UsageMeter.js +69 -27
  31. package/lib/client/VideoGenerateToolview.js +69 -17
  32. package/lib/client/account-preferences.d.ts +8 -0
  33. package/lib/client/account-preferences.js +20 -5
  34. package/lib/client/host-contract.d.ts +11 -2
  35. package/lib/client/host-contract.js +20 -3
  36. package/lib/client/index.d.ts +5 -5
  37. package/lib/client/index.js +34 -12
  38. package/lib/client/locales.d.ts +78 -0
  39. package/lib/client/locales.js +121 -34
  40. package/lib/client/ollama-draft.d.ts +229 -0
  41. package/lib/client/ollama-draft.js +255 -0
  42. package/lib/client/reset-action.js +6 -4
  43. package/lib/client/reset-credits-view.d.ts +1 -1
  44. package/lib/client/reset-credits-view.js +66 -17
  45. package/lib/client/subscription-card-styles.js +94 -24
  46. package/lib/client/usage-color-preferences.js +4 -2
  47. package/lib/client/usage-pace.d.ts +7 -0
  48. package/lib/client/usage-pace.js +43 -10
  49. package/lib/client.js +1647 -266
  50. package/lib/client.js.map +1 -1
  51. package/lib/http.js +1 -1
  52. package/lib/index.d.ts +28 -3
  53. package/lib/index.js +9329 -8217
  54. package/lib/model-defaults.js +4 -2
  55. package/lib/provider-settings.d.ts +14 -1
  56. package/lib/provider-settings.js +64 -20
  57. package/lib/providers/account-preferences.js +51 -22
  58. package/lib/providers/accounts.js +15 -9
  59. package/lib/providers/antigravity-oauth-client.js +2 -2
  60. package/lib/providers/antigravity.js +141 -68
  61. package/lib/providers/catalog-store.js +120 -41
  62. package/lib/providers/claude-cli-version.js +3 -3
  63. package/lib/providers/claude.d.ts +23 -3
  64. package/lib/providers/claude.js +167 -92
  65. package/lib/providers/codex-client-version.js +3 -3
  66. package/lib/providers/codex-search.js +40 -13
  67. package/lib/providers/codex.js +196 -112
  68. package/lib/providers/common.d.ts +14 -0
  69. package/lib/providers/common.js +118 -38
  70. package/lib/providers/copilot.js +143 -82
  71. package/lib/providers/cursor-adapter.js +42 -18
  72. package/lib/providers/cursor-auth.d.ts +1 -1
  73. package/lib/providers/cursor-auth.js +69 -24
  74. package/lib/providers/cursor-model-settings.js +14 -5
  75. package/lib/providers/cursor-usage.js +27 -13
  76. package/lib/providers/external-usage-controller.d.ts +9 -2
  77. package/lib/providers/external-usage-controller.js +30 -7
  78. package/lib/providers/external-usage.d.ts +8 -0
  79. package/lib/providers/external-usage.js +140 -20
  80. package/lib/providers/grok.js +152 -89
  81. package/lib/providers/image-pool.js +29 -11
  82. package/lib/providers/minimax-usage.js +31 -11
  83. package/lib/providers/npm-cli-version.js +10 -3
  84. package/lib/providers/ollama-settings.d.ts +90 -0
  85. package/lib/providers/ollama-settings.js +213 -0
  86. package/lib/providers/ollama-web.d.ts +46 -0
  87. package/lib/providers/ollama-web.js +231 -0
  88. package/lib/providers/ollama.d.ts +107 -0
  89. package/lib/providers/ollama.js +608 -0
  90. package/lib/providers/pool-family.js +11 -3
  91. package/lib/providers/pool-health.js +28 -8
  92. package/lib/providers/pool-usage.js +16 -9
  93. package/lib/providers/pool.d.ts +8 -0
  94. package/lib/providers/pool.js +81 -42
  95. package/lib/providers/rate-limit.js +8 -2
  96. package/lib/providers/replay.js +40 -17
  97. package/lib/providers/reset-redemption.js +18 -6
  98. package/lib/tools/image-generate.js +123 -65
  99. package/lib/tools/registration.js +5 -2
  100. package/lib/tools/video-generate.js +51 -31
  101. package/lib/tools/x-search.js +50 -22
  102. package/lib/translate/anthropic.js +85 -37
  103. package/lib/translate/antigravity-schema.js +71 -28
  104. package/lib/translate/antigravity-thinking.js +22 -9
  105. package/lib/translate/antigravity.js +141 -50
  106. package/lib/translate/chat-completions.js +67 -23
  107. package/lib/translate/resolved.js +55 -21
  108. package/lib/translate/responses.js +69 -29
  109. package/lib/translate/sse.js +4 -1
  110. package/package.json +26 -4
@@ -21,7 +21,7 @@ export function resetCountdownParts(ms) {
21
21
  { unit: 'hour', count: Math.floor((total % 1440) / 60) },
22
22
  { unit: 'minute', count: total % 60 },
23
23
  ];
24
- return parts.filter(part => part.count > 0).slice(0, 2);
24
+ return parts.filter((part) => part.count > 0).slice(0, 2);
25
25
  }
26
26
  /**
27
27
  * Whether the reported percentage still describes the window now. Only a fresh
@@ -30,10 +30,14 @@ export function resetCountdownParts(ms) {
30
30
  * drawn: where the window stands in time never depends on the reading.
31
31
  */
32
32
  export function isUsageFresh(window, observation, now = Date.now()) {
33
- return validUsage(window.usedPercent) && observation.stale !== true
34
- && observation.observedAt !== undefined && Number.isFinite(observation.observedAt)
35
- && observation.observedAt <= now && now - observation.observedAt <= USAGE_FRESHNESS_MS
36
- && (window.resetsAt === undefined || Number.isFinite(window.resetsAt) && window.resetsAt > now);
33
+ return (validUsage(window.usedPercent) &&
34
+ observation.stale !== true &&
35
+ observation.observedAt !== undefined &&
36
+ Number.isFinite(observation.observedAt) &&
37
+ observation.observedAt <= now &&
38
+ now - observation.observedAt <= USAGE_FRESHNESS_MS &&
39
+ (window.resetsAt === undefined ||
40
+ (Number.isFinite(window.resetsAt) && window.resetsAt > now)));
37
41
  }
38
42
  /**
39
43
  * How far through its window the clock is, from the window's own timing alone.
@@ -48,10 +52,19 @@ export function elapsedPercent(window, now = Date.now()) {
48
52
  if (end === undefined || !Number.isFinite(end) || end <= now)
49
53
  return undefined;
50
54
  const duration = window.windowDurationMs;
51
- const start = window.startsAt ?? (window.fixedWindow === true && duration !== undefined && Number.isFinite(duration) && duration > 0 ? end - duration : undefined);
52
- if (start === undefined || !Number.isFinite(start) || start >= end || start > now)
55
+ const start = window.startsAt ??
56
+ (window.fixedWindow === true &&
57
+ duration !== undefined &&
58
+ Number.isFinite(duration) &&
59
+ duration > 0
60
+ ? end - duration
61
+ : undefined);
62
+ if (start === undefined ||
63
+ !Number.isFinite(start) ||
64
+ start >= end ||
65
+ start > now)
53
66
  return undefined;
54
- return Math.min(100, Math.max(0, (now - start) / (end - start) * 100));
67
+ return Math.min(100, Math.max(0, ((now - start) / (end - start)) * 100));
55
68
  }
56
69
  export function usageColorState(used, elapsed, preset, fresh) {
57
70
  if (!validUsage(used))
@@ -65,7 +78,27 @@ export function usageColorState(used, elapsed, preset, fresh) {
65
78
  }
66
79
  export function usageBarColor(used, elapsed, preset = 'standard', fresh = true) {
67
80
  const state = usageColorState(used, elapsed, preset, fresh);
68
- return state === 'red' ? 'var(--dsw-alias-state-error-primary)'
69
- : state === 'yellow' ? 'var(--dsw-alias-state-warn-label)'
81
+ return state === 'red'
82
+ ? 'var(--dsw-alias-state-error-primary)'
83
+ : state === 'yellow'
84
+ ? 'var(--dsw-alias-state-warn-label)'
70
85
  : 'var(--dsw-alias-state-success-primary)';
71
86
  }
87
+ /**
88
+ * Marker position from the window's display-only assumed start
89
+ * (`displayStartsAt`): the reading and its age are irrelevant, exactly
90
+ * like the verified marker. Returns undefined when the window carries no
91
+ * assumed start or its reset has passed.
92
+ */
93
+ export function displayStartPercent(window, now = Date.now()) {
94
+ const end = window.resetsAt;
95
+ const start = window.displayStartsAt;
96
+ if (end === undefined || !Number.isFinite(end) || end <= now)
97
+ return undefined;
98
+ if (start === undefined ||
99
+ !Number.isFinite(start) ||
100
+ start >= end ||
101
+ start > now)
102
+ return undefined;
103
+ return Math.min(100, Math.max(0, ((now - start) / (end - start)) * 100));
104
+ }