@eddyskywalker/dsh-chatgpt-subscription 0.36.0 → 0.36.1

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.
package/lib/index.js CHANGED
@@ -59564,6 +59564,15 @@ async function readRequestJson$2(request) {
59564
59564
  function firstLine$2(value, max = 200) {
59565
59565
  return String(value ?? "").replace(/\s+/g, " ").trim().slice(0, max);
59566
59566
  }
59567
+ /**
59568
+ * Whether the cached snapshot is too old to be trusted as the card's numbers.
59569
+ *
59570
+ * `fetchedAt` is 0 until the first read lands, which counts as stale on
59571
+ * purpose: a card with no numbers at all is the case that most needs the read.
59572
+ */
59573
+ function usageStale(reading, now, ttlMs) {
59574
+ return reading.fetchedAt <= 0 || now - reading.fetchedAt > ttlMs;
59575
+ }
59567
59576
  /** Whether one account can serve a request right now. */
59568
59577
  function isUsable$1(account, now) {
59569
59578
  if (account.authStatus !== void 0 && account.authStatus !== "ok") return false;
@@ -59639,8 +59648,15 @@ function projectModels$1(settings, store) {
59639
59648
  };
59640
59649
  });
59641
59650
  }
59642
- /** Assemble the whole status payload the Cline Pass tab renders. */
59643
- async function getClinePassWebStatus(options) {
59651
+ /**
59652
+ * Assemble the whole status payload the Cline Pass tab renders.
59653
+ *
59654
+ * `quotaRefresh` is the single flight the caller refreshes through, when it has
59655
+ * one: passing it is what lets the answer say a refresh is still running behind
59656
+ * it. A caller that only reads (the management tools are one) omits it and gets
59657
+ * the cache alone, which keeps a tool call from spending the line's quota reads.
59658
+ */
59659
+ async function getClinePassWebStatus(options, quotaRefresh) {
59644
59660
  const { settings: settingsStore, accountPool, store } = options;
59645
59661
  const settings = await settingsStore.read().catch(() => settingsStore.status());
59646
59662
  const data = await accountPool.read().catch(() => null);
@@ -59676,6 +59692,7 @@ async function getClinePassWebStatus(options) {
59676
59692
  catalogSynced: settings.catalogModels.length > 0,
59677
59693
  catalogCount: settings.catalogModels.length,
59678
59694
  usage: store.usage().accounts.length === 0 ? null : store.usage(),
59695
+ quotaRefreshing: quotaRefresh?.refreshing === true,
59679
59696
  historySize: store.historySize(),
59680
59697
  login: options.login?.current() ?? null,
59681
59698
  settings: {
@@ -59721,10 +59738,60 @@ const CLINE_PASS_ROUTES = {
59721
59738
  function registerClinePassRoutes(ctx, options) {
59722
59739
  const { settings: settingsStore, accountPool, store, engine, fetchFn } = options;
59723
59740
  const openBrowser = options.openBrowser ?? (() => void 0);
59741
+ const quotaTtlMs = options.quotaTtlMs ?? 3e5;
59742
+ const quotaRefresh = new QuotaRefresh();
59724
59743
  const emitModelsUpdated = () => {
59725
59744
  ctx.emit?.("llm/adapters-updated");
59726
59745
  };
59727
- const status = async () => await getClinePassWebStatus(options);
59746
+ /**
59747
+ * Read every usable account's official quota and replace the snapshot.
59748
+ *
59749
+ * Shared by the explicit refresh action and the background one a status read
59750
+ * schedules, so both fan out over the same accounts and write the same shape.
59751
+ * Null means no account can serve right now, which only the explicit action
59752
+ * reports: a background refresh has nobody to tell.
59753
+ */
59754
+ const refreshUsage = async () => {
59755
+ const enabled = ((await accountPool.read().catch(() => null))?.accounts ?? []).filter((account) => isUsable$1(account, Date.now()));
59756
+ if (enabled.length === 0) return null;
59757
+ const settings = await settingsStore.read();
59758
+ const readings = await Promise.all(enabled.map(async (account) => {
59759
+ const fetchedAt = Date.now();
59760
+ try {
59761
+ const credentials = await accountPool.getFreshCredential(account.id, fetchFn);
59762
+ const baseURL = credentials.baseURL && credentials.baseURL.trim() !== "" ? credentials.baseURL.trim() : settings.baseURL;
59763
+ const result = await fetchUsageLimits({
59764
+ fetchFn,
59765
+ baseURL,
59766
+ apiKey: bearerFor$1(credentials)
59767
+ });
59768
+ return {
59769
+ accountId: account.id,
59770
+ alias: account.alias,
59771
+ ok: result.ok,
59772
+ windows: result.limits.map((limit) => ({
59773
+ type: limit.type,
59774
+ label: clinePassWindowLabel(limit.type),
59775
+ percentUsed: limit.percentUsed,
59776
+ resetsAt: limit.resetsAt
59777
+ })),
59778
+ error: result.error,
59779
+ fetchedAt
59780
+ };
59781
+ } catch (error) {
59782
+ return {
59783
+ accountId: account.id,
59784
+ alias: account.alias,
59785
+ ok: false,
59786
+ windows: [],
59787
+ error: firstLine$2(error instanceof Error ? error.message : error, 240),
59788
+ fetchedAt
59789
+ };
59790
+ }
59791
+ }));
59792
+ return store.setUsage({ accounts: readings });
59793
+ };
59794
+ const status = async () => await getClinePassWebStatus(options, quotaRefresh);
59728
59795
  return ctx.webServer.register({
59729
59796
  kind: "prefix",
59730
59797
  path: CLINE_PASS_ROUTE_PREFIX,
@@ -59733,10 +59800,13 @@ function registerClinePassRoutes(ctx, options) {
59733
59800
  const path = url.pathname.replace(/^\/cline-pass\/api\/?/, "");
59734
59801
  const method = request.method ?? "GET";
59735
59802
  try {
59736
- if (path === "" || path === "status") return sendJson$2(response, 200, {
59737
- ok: true,
59738
- value: await status()
59739
- });
59803
+ if (path === "" || path === "status") {
59804
+ if (method === "GET" && usageStale(store.usage(), Date.now(), quotaTtlMs)) quotaRefresh.start(refreshUsage);
59805
+ return sendJson$2(response, 200, {
59806
+ ok: true,
59807
+ value: await status()
59808
+ });
59809
+ }
59740
59810
  if (path === "settings") {
59741
59811
  if (method !== "POST") return sendMethodNotAllowed$2(response);
59742
59812
  if (!isSameOriginMutation(request)) return sendJson$2(response, 403, {
@@ -60265,50 +60335,28 @@ function registerClinePassRoutes(ctx, options) {
60265
60335
  ok: false,
60266
60336
  error: "Cross-origin request rejected."
60267
60337
  });
60268
- const enabled = ((await accountPool.read().catch(() => null))?.accounts ?? []).filter((account) => isUsable$1(account, Date.now()));
60269
- if (enabled.length === 0) return sendJson$2(response, 400, {
60270
- ok: false,
60271
- error: "Every Cline Pass account is disabled, cooling down, or unusable. Enable one first."
60272
- });
60273
- const settings = await settingsStore.read();
60274
- const readings = await Promise.all(enabled.map(async (account) => {
60275
- const fetchedAt = Date.now();
60338
+ const outcome = {
60339
+ reading: null,
60340
+ cause: null
60341
+ };
60342
+ await quotaRefresh.run(async () => {
60276
60343
  try {
60277
- const credentials = await accountPool.getFreshCredential(account.id, fetchFn);
60278
- const baseURL = credentials.baseURL && credentials.baseURL.trim() !== "" ? credentials.baseURL.trim() : settings.baseURL;
60279
- const result = await fetchUsageLimits({
60280
- fetchFn,
60281
- baseURL,
60282
- apiKey: bearerFor$1(credentials)
60283
- });
60284
- return {
60285
- accountId: account.id,
60286
- alias: account.alias,
60287
- ok: result.ok,
60288
- windows: result.limits.map((limit) => ({
60289
- type: limit.type,
60290
- label: clinePassWindowLabel(limit.type),
60291
- percentUsed: limit.percentUsed,
60292
- resetsAt: limit.resetsAt
60293
- })),
60294
- error: result.error,
60295
- fetchedAt
60296
- };
60344
+ outcome.reading = await refreshUsage();
60297
60345
  } catch (error) {
60298
- return {
60299
- accountId: account.id,
60300
- alias: account.alias,
60301
- ok: false,
60302
- windows: [],
60303
- error: firstLine$2(error instanceof Error ? error.message : error, 240),
60304
- fetchedAt
60305
- };
60346
+ outcome.cause = error;
60347
+ throw error;
60306
60348
  }
60307
- }));
60349
+ });
60350
+ if (outcome.cause !== null) throw outcome.cause;
60351
+ const reading = outcome.reading;
60352
+ if (reading === null) return sendJson$2(response, 400, {
60353
+ ok: false,
60354
+ error: "Every Cline Pass account is disabled, cooling down, or unusable. Enable one first."
60355
+ });
60308
60356
  return sendJson$2(response, 200, {
60309
60357
  ok: true,
60310
60358
  value: {
60311
- usage: store.setUsage({ accounts: readings }),
60359
+ usage: reading,
60312
60360
  status: await status()
60313
60361
  }
60314
60362
  });
@@ -11,8 +11,11 @@ export interface ClinePassComposerQuotaProps {
11
11
  *
12
12
  * Quota follows the ACCOUNT, and a pool has several. The badge therefore shows
13
13
  * the most-consumed window across the accounts the host has already read, which
14
- * is the one that will stop the next request first; it never triggers a quota
15
- * read of its own, so a poll cannot fan out one upstream call per account.
14
+ * is the one that will stop the next request first. Its own 60 s poll is a plain
15
+ * read, so a poll never fans out one upstream call per account; only an explicit
16
+ * click on the badge asks the host for the forced refresh, the same POST the
17
+ * card's own "refresh usage" button drives — which is exactly what the shared
18
+ * badge's `refresh` argument is for, and what this line used to drop.
16
19
  */
17
20
  export declare function ClinePassComposerQuota(props: ClinePassComposerQuotaProps): React.JSX.Element;
18
21
  /** The line's own number picker, exported so a test can pin the rule. */
@@ -1 +1 @@
1
- {"version":3,"file":"ClinePassComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassComposerQuota.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAkC,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,IAAI,IAAI,CAAA;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAS5F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAe3B"}
1
+ {"version":3,"file":"ClinePassComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassComposerQuota.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAkC,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,IAAI,IAAI,CAAA;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAS5F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAe3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClinePassSection.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAuBxE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAoDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAwyBjE"}
1
+ {"version":3,"file":"ClinePassSection.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAiChF,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAoDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA40BjE"}
@@ -10,6 +10,16 @@ export interface ClinePassPinResult {
10
10
  warnings: string[];
11
11
  status: ClinePassWebStatus;
12
12
  }
13
+ /**
14
+ * Whether the host is refreshing the quota behind this answer.
15
+ *
16
+ * The field is optional by contract, because a host built before it existed
17
+ * answers without it. Every caller only ever compares it to `true`, so "absent"
18
+ * and "false" read the same — nothing is in flight — and a stale host degrades to
19
+ * plain polling instead of crashing. Kept as one reader so that convention lives
20
+ * in a single place rather than being re-derived at each call site.
21
+ */
22
+ export declare function quotaRefreshingOf(status: ClinePassWebStatus): boolean;
13
23
  /**
14
24
  * The Cline Pass settings API, as the card uses it.
15
25
  *
@@ -17,7 +27,17 @@ export interface ClinePassPinResult {
17
27
  * section uses, so the shared account-pool card and this helper read alike.
18
28
  */
19
29
  export declare class ClinePassApi {
20
- status(): Promise<ClinePassWebStatus>;
30
+ /**
31
+ * One status read.
32
+ *
33
+ * A plain call is the GET the first paint, the 60 s poll and the composer
34
+ * badge use: it is cheap and never fans out one upstream request per account.
35
+ * `refresh` is the forced path — the same POST /usage the card's own button
36
+ * drives — and the host answers it with `{ usage, status }`; only the status
37
+ * half is returned, because every caller renders a status card rather than the
38
+ * raw quota payload.
39
+ */
40
+ status(refresh?: boolean): Promise<ClinePassWebStatus>;
21
41
  updateSettings(patch: ClinePassSettingsUpdateDto): Promise<ClinePassWebStatus>;
22
42
  accountAction(action: ClinePassAccountAction, body?: {
23
43
  accountId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/api.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,15 @@
6
6
  * a channel probe/validate/test pair, the official quota reading and the
7
7
  * in-process request history.
8
8
  *
9
- * Reads never trigger an upstream call; quota is refreshed by its own action.
9
+ * A status read never waits on Cline: it answers the cached quota snapshot and,
10
+ * when that snapshot is missing or older than the line's TTL, schedules one
11
+ * refresh behind the answer. The explicit refresh action still runs now, but
12
+ * through the same single flight, so the two cannot fan out twice at once.
10
13
  *
11
14
  * @module dsh-chatgpt-subscription/cline-pass-routes
12
15
  */
13
16
  import type { Context } from '@deepseek-ai/cordis';
17
+ import { QuotaRefresh } from '../common/quota-refresh.ts';
14
18
  import type { ClinePassAccountPool } from './account-pool.ts';
15
19
  import type { ClinePassEngine } from './engine.ts';
16
20
  import type { ClinePassStore } from './store.ts';
@@ -18,6 +22,14 @@ import type { ClinePassLoginManager } from './oauth.ts';
18
22
  import { type ClinePassModelSettingsStore } from './token-store.ts';
19
23
  import { openPlatformBrowser } from '../step-code/routes.ts';
20
24
  import { type ClinePassWebStatus } from '../../shared/cline-pass-contracts.ts';
25
+ /**
26
+ * How long a quota snapshot may answer a status read before it is re-read.
27
+ *
28
+ * The card polls status, so this is what keeps the meters moving without a
29
+ * per-poll upstream call: a stale snapshot answers now and is replaced behind
30
+ * the answer.
31
+ */
32
+ export declare const CLINE_PASS_QUOTA_TTL_MS: number;
21
33
  export interface ClinePassRouteOptions {
22
34
  settings: ClinePassModelSettingsStore;
23
35
  accountPool: ClinePassAccountPool;
@@ -34,11 +46,23 @@ export interface ClinePassRouteOptions {
34
46
  openBrowser?: (url: string) => void;
35
47
  serving(): boolean;
36
48
  conflict(): string | null;
49
+ /**
50
+ * How old a cached quota snapshot may get before a status read refreshes it
51
+ * behind the answer; defaults to {@link CLINE_PASS_QUOTA_TTL_MS}.
52
+ */
53
+ quotaTtlMs?: number;
37
54
  }
38
55
  /** Named browser opener for deployments that want the host to launch the verification URL. */
39
56
  export declare const openClinePassBrowser: typeof openPlatformBrowser;
40
- /** Assemble the whole status payload the Cline Pass tab renders. */
41
- export declare function getClinePassWebStatus(options: ClinePassRouteOptions): Promise<ClinePassWebStatus>;
57
+ /**
58
+ * Assemble the whole status payload the Cline Pass tab renders.
59
+ *
60
+ * `quotaRefresh` is the single flight the caller refreshes through, when it has
61
+ * one: passing it is what lets the answer say a refresh is still running behind
62
+ * it. A caller that only reads (the management tools are one) omits it and gets
63
+ * the cache alone, which keeps a tool call from spending the line's quota reads.
64
+ */
65
+ export declare function getClinePassWebStatus(options: ClinePassRouteOptions, quotaRefresh?: QuotaRefresh): Promise<ClinePassWebStatus>;
42
66
  /** The route table, exported so the client and this file can be checked against each other. */
43
67
  export declare const CLINE_PASS_ROUTES: {
44
68
  readonly status: "GET";
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/cline-pass/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAA0C,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAE3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAiBL,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAA;AAkH7C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,2BAA2B,CAAA;IACrC,WAAW,EAAE,oBAAoB,CAAA;IACjC,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,kEAAkE;IAClE,OAAO,EAAE,OAAO,KAAK,CAAA;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,OAAO,IAAI,OAAO,CAAA;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,4BAAsB,CAAA;AAEvD,oEAAoE;AACpE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgDvG;AAwBD,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CAAS,CAAA;AAEvC;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAqdhG"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/cline-pass/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAA0C,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAE3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAiBL,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAA;AAgC7C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAgB,CAAA;AA8FpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,2BAA2B,CAAA;IACrC,WAAW,EAAE,oBAAoB,CAAA;IACjC,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,kEAAkE;IAClE,OAAO,EAAE,OAAO,KAAK,CAAA;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,OAAO,IAAI,OAAO,CAAA;IAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,4BAAsB,CAAA;AAEvD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAmD7B;AAwBD,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CAAS,CAAA;AAEvC;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAsgBhG"}
@@ -127,6 +127,13 @@ export interface ClinePassWebStatus {
127
127
  catalogSynced: boolean;
128
128
  catalogCount: number;
129
129
  usage: ClinePassUsageDto | null;
130
+ /**
131
+ * Whether a quota refresh is running behind this answer.
132
+ *
133
+ * `usage` above is the cache, not a live read; a client that sees this should
134
+ * read the status again shortly rather than treat the numbers as final.
135
+ */
136
+ quotaRefreshing?: boolean;
130
137
  historySize: number;
131
138
  /** Latest device-code flow in this process, or null when none was started. */
132
139
  login: ClinePassLoginFlowDto | null;
@@ -1 +1 @@
1
- {"version":3,"file":"cline-pass-contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/cline-pass-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cline-pass-contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/cline-pass-contracts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.36.0",
3
+ "version": "0.36.1",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "icon": "./icon.svg",
6
6
  "author": {