@eddyskywalker/dsh-chatgpt-subscription 0.36.0 → 0.36.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.
- package/CHANGELOG.md +18 -0
- package/lib/client.js +73 -12
- package/lib/client.js.map +1 -1
- package/lib/index.js +138 -59
- package/lib/types/client/cline-pass/ClinePassComposerQuota.d.ts +5 -2
- package/lib/types/client/cline-pass/ClinePassComposerQuota.d.ts.map +1 -1
- package/lib/types/client/cline-pass/ClinePassSection.d.ts.map +1 -1
- package/lib/types/client/cline-pass/api.d.ts +21 -1
- package/lib/types/client/cline-pass/api.d.ts.map +1 -1
- package/lib/types/host/claude/routes.d.ts.map +1 -1
- package/lib/types/host/cline-pass/routes.d.ts +27 -3
- package/lib/types/host/cline-pass/routes.d.ts.map +1 -1
- package/lib/types/shared/cline-pass-contracts.d.ts +7 -0
- package/lib/types/shared/cline-pass-contracts.d.ts.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -44615,6 +44615,34 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44615
44615
|
};
|
|
44616
44616
|
};
|
|
44617
44617
|
/**
|
|
44618
|
+
* The credential the card should spend right now, renewed when a pool is in
|
|
44619
|
+
* charge.
|
|
44620
|
+
*
|
|
44621
|
+
* Every card path below (status, quota, the connection probe, the catalog
|
|
44622
|
+
* refresh) used to hand out {@link activeAccount}'s STORED value. An access
|
|
44623
|
+
* token lives for hours, not days, so a managed account left idle overnight
|
|
44624
|
+
* presented a token that had already died: the usage read and the probe were
|
|
44625
|
+
* answered 401, and the card rendered that as a credential the user had to
|
|
44626
|
+
* replace by signing in again — for a refresh token that was still good, and
|
|
44627
|
+
* for a model request path that renews by itself.
|
|
44628
|
+
*
|
|
44629
|
+
* The pool owns both the rotation and the write-back, so asking it here also
|
|
44630
|
+
* updates the expiry the card displays (the account list is read from the pool
|
|
44631
|
+
* rows). Without a pool there is no rotation to consult: the single-credential
|
|
44632
|
+
* store keeps its own behaviour. A borrowed Claude Code snapshot keeps its
|
|
44633
|
+
* never-refresh invariant for free — the pool's own guard refuses it before a
|
|
44634
|
+
* request is made — and simply answers with the stored credential.
|
|
44635
|
+
*/
|
|
44636
|
+
const effectiveCredentials = async (target) => {
|
|
44637
|
+
if (pool === void 0) return target.credentials;
|
|
44638
|
+
if (target.id === void 0) return target.credentials;
|
|
44639
|
+
try {
|
|
44640
|
+
return await pool.getFreshCredential(target.id, fetchFn);
|
|
44641
|
+
} catch {
|
|
44642
|
+
return target.credentials;
|
|
44643
|
+
}
|
|
44644
|
+
};
|
|
44645
|
+
/**
|
|
44618
44646
|
* The store the sign-in flow writes through.
|
|
44619
44647
|
*
|
|
44620
44648
|
* With a pool the write goes through the pool, because the pool is the routing
|
|
@@ -44648,7 +44676,7 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44648
44676
|
...options.login ?? {},
|
|
44649
44677
|
fetchFn
|
|
44650
44678
|
};
|
|
44651
|
-
const readStatus = (quotaError = null) => activeAccount().then((active) => getClaudeWebStatus(store, modelSettings, preferences, options, quotaError, active));
|
|
44679
|
+
const readStatus = (quotaError = null, resolved) => (resolved === void 0 ? activeAccount() : Promise.resolve(resolved)).then((active) => getClaudeWebStatus(store, modelSettings, preferences, options, quotaError, active));
|
|
44652
44680
|
return ctx.webServer.register({
|
|
44653
44681
|
kind: "prefix",
|
|
44654
44682
|
path: ROUTE_PREFIX,
|
|
@@ -44658,7 +44686,11 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44658
44686
|
try {
|
|
44659
44687
|
if (path === "" || path === "status") {
|
|
44660
44688
|
if (method !== "GET") return sendMethodNotAllowed$5(response);
|
|
44661
|
-
const
|
|
44689
|
+
const stored = await activeAccount();
|
|
44690
|
+
const active = {
|
|
44691
|
+
id: stored.id,
|
|
44692
|
+
credentials: await effectiveCredentials(stored)
|
|
44693
|
+
};
|
|
44662
44694
|
const cached = active.credentials === void 0 ? null : cachedQuotaForPool(active.id, active.credentials);
|
|
44663
44695
|
const stale = cached === null || Date.now() - (cached.fetchedAt || 0) > 12e4;
|
|
44664
44696
|
if (active.credentials !== void 0 && stale) {
|
|
@@ -44674,7 +44706,7 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44674
44706
|
return sendJson$5(response, 200, {
|
|
44675
44707
|
ok: true,
|
|
44676
44708
|
value: {
|
|
44677
|
-
...await readStatus(quotaRefresh.lastError()),
|
|
44709
|
+
...await readStatus(quotaRefresh.lastError(), active),
|
|
44678
44710
|
quotaRefreshing: quotaRefresh.refreshing
|
|
44679
44711
|
}
|
|
44680
44712
|
});
|
|
@@ -44743,11 +44775,12 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44743
44775
|
error: "Cross-origin request rejected."
|
|
44744
44776
|
});
|
|
44745
44777
|
const active = await activeAccount();
|
|
44746
|
-
|
|
44778
|
+
const credentials = active.credentials === void 0 ? void 0 : await effectiveCredentials(active);
|
|
44779
|
+
if (credentials === void 0) return sendJson$5(response, 400, {
|
|
44747
44780
|
ok: false,
|
|
44748
44781
|
error: "Not signed in."
|
|
44749
44782
|
});
|
|
44750
|
-
const probe = await probeConnection(
|
|
44783
|
+
const probe = await probeConnection(credentials, { fetchFn });
|
|
44751
44784
|
return sendJson$5(response, 200, {
|
|
44752
44785
|
ok: true,
|
|
44753
44786
|
value: probe.ok ? {
|
|
@@ -44778,11 +44811,11 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44778
44811
|
error: "Cross-origin request rejected."
|
|
44779
44812
|
});
|
|
44780
44813
|
const active = await activeAccount();
|
|
44781
|
-
|
|
44814
|
+
const credentials = active.credentials === void 0 ? void 0 : await effectiveCredentials(active);
|
|
44815
|
+
if (credentials === void 0) return sendJson$5(response, 400, {
|
|
44782
44816
|
ok: false,
|
|
44783
44817
|
error: "Not signed in to Claude."
|
|
44784
44818
|
});
|
|
44785
|
-
const credentials = active.credentials;
|
|
44786
44819
|
let quotaError = null;
|
|
44787
44820
|
try {
|
|
44788
44821
|
await fetchAccountQuota$1(credentials, {
|
|
@@ -44807,13 +44840,11 @@ function registerClaudeRoutes(ctx, store, modelSettings, preferences, options =
|
|
|
44807
44840
|
});
|
|
44808
44841
|
clearCachedCatalog();
|
|
44809
44842
|
const active = await activeAccount();
|
|
44810
|
-
|
|
44811
|
-
|
|
44812
|
-
|
|
44813
|
-
|
|
44814
|
-
|
|
44815
|
-
})))(credentials).catch(() => void 0);
|
|
44816
|
-
}
|
|
44843
|
+
const credentials = active.credentials === void 0 ? void 0 : await effectiveCredentials(active);
|
|
44844
|
+
if (credentials !== void 0) await (options.loadCatalog ?? ((current) => loadCatalog(current, {
|
|
44845
|
+
fetchFn,
|
|
44846
|
+
force: true
|
|
44847
|
+
})))(credentials).catch(() => void 0);
|
|
44817
44848
|
return sendJson$5(response, 200, {
|
|
44818
44849
|
ok: true,
|
|
44819
44850
|
value: await readStatus()
|
|
@@ -59564,6 +59595,15 @@ async function readRequestJson$2(request) {
|
|
|
59564
59595
|
function firstLine$2(value, max = 200) {
|
|
59565
59596
|
return String(value ?? "").replace(/\s+/g, " ").trim().slice(0, max);
|
|
59566
59597
|
}
|
|
59598
|
+
/**
|
|
59599
|
+
* Whether the cached snapshot is too old to be trusted as the card's numbers.
|
|
59600
|
+
*
|
|
59601
|
+
* `fetchedAt` is 0 until the first read lands, which counts as stale on
|
|
59602
|
+
* purpose: a card with no numbers at all is the case that most needs the read.
|
|
59603
|
+
*/
|
|
59604
|
+
function usageStale(reading, now, ttlMs) {
|
|
59605
|
+
return reading.fetchedAt <= 0 || now - reading.fetchedAt > ttlMs;
|
|
59606
|
+
}
|
|
59567
59607
|
/** Whether one account can serve a request right now. */
|
|
59568
59608
|
function isUsable$1(account, now) {
|
|
59569
59609
|
if (account.authStatus !== void 0 && account.authStatus !== "ok") return false;
|
|
@@ -59639,8 +59679,15 @@ function projectModels$1(settings, store) {
|
|
|
59639
59679
|
};
|
|
59640
59680
|
});
|
|
59641
59681
|
}
|
|
59642
|
-
/**
|
|
59643
|
-
|
|
59682
|
+
/**
|
|
59683
|
+
* Assemble the whole status payload the Cline Pass tab renders.
|
|
59684
|
+
*
|
|
59685
|
+
* `quotaRefresh` is the single flight the caller refreshes through, when it has
|
|
59686
|
+
* one: passing it is what lets the answer say a refresh is still running behind
|
|
59687
|
+
* it. A caller that only reads (the management tools are one) omits it and gets
|
|
59688
|
+
* the cache alone, which keeps a tool call from spending the line's quota reads.
|
|
59689
|
+
*/
|
|
59690
|
+
async function getClinePassWebStatus(options, quotaRefresh) {
|
|
59644
59691
|
const { settings: settingsStore, accountPool, store } = options;
|
|
59645
59692
|
const settings = await settingsStore.read().catch(() => settingsStore.status());
|
|
59646
59693
|
const data = await accountPool.read().catch(() => null);
|
|
@@ -59676,6 +59723,7 @@ async function getClinePassWebStatus(options) {
|
|
|
59676
59723
|
catalogSynced: settings.catalogModels.length > 0,
|
|
59677
59724
|
catalogCount: settings.catalogModels.length,
|
|
59678
59725
|
usage: store.usage().accounts.length === 0 ? null : store.usage(),
|
|
59726
|
+
quotaRefreshing: quotaRefresh?.refreshing === true,
|
|
59679
59727
|
historySize: store.historySize(),
|
|
59680
59728
|
login: options.login?.current() ?? null,
|
|
59681
59729
|
settings: {
|
|
@@ -59721,10 +59769,60 @@ const CLINE_PASS_ROUTES = {
|
|
|
59721
59769
|
function registerClinePassRoutes(ctx, options) {
|
|
59722
59770
|
const { settings: settingsStore, accountPool, store, engine, fetchFn } = options;
|
|
59723
59771
|
const openBrowser = options.openBrowser ?? (() => void 0);
|
|
59772
|
+
const quotaTtlMs = options.quotaTtlMs ?? 3e5;
|
|
59773
|
+
const quotaRefresh = new QuotaRefresh();
|
|
59724
59774
|
const emitModelsUpdated = () => {
|
|
59725
59775
|
ctx.emit?.("llm/adapters-updated");
|
|
59726
59776
|
};
|
|
59727
|
-
|
|
59777
|
+
/**
|
|
59778
|
+
* Read every usable account's official quota and replace the snapshot.
|
|
59779
|
+
*
|
|
59780
|
+
* Shared by the explicit refresh action and the background one a status read
|
|
59781
|
+
* schedules, so both fan out over the same accounts and write the same shape.
|
|
59782
|
+
* Null means no account can serve right now, which only the explicit action
|
|
59783
|
+
* reports: a background refresh has nobody to tell.
|
|
59784
|
+
*/
|
|
59785
|
+
const refreshUsage = async () => {
|
|
59786
|
+
const enabled = ((await accountPool.read().catch(() => null))?.accounts ?? []).filter((account) => isUsable$1(account, Date.now()));
|
|
59787
|
+
if (enabled.length === 0) return null;
|
|
59788
|
+
const settings = await settingsStore.read();
|
|
59789
|
+
const readings = await Promise.all(enabled.map(async (account) => {
|
|
59790
|
+
const fetchedAt = Date.now();
|
|
59791
|
+
try {
|
|
59792
|
+
const credentials = await accountPool.getFreshCredential(account.id, fetchFn);
|
|
59793
|
+
const baseURL = credentials.baseURL && credentials.baseURL.trim() !== "" ? credentials.baseURL.trim() : settings.baseURL;
|
|
59794
|
+
const result = await fetchUsageLimits({
|
|
59795
|
+
fetchFn,
|
|
59796
|
+
baseURL,
|
|
59797
|
+
apiKey: bearerFor$1(credentials)
|
|
59798
|
+
});
|
|
59799
|
+
return {
|
|
59800
|
+
accountId: account.id,
|
|
59801
|
+
alias: account.alias,
|
|
59802
|
+
ok: result.ok,
|
|
59803
|
+
windows: result.limits.map((limit) => ({
|
|
59804
|
+
type: limit.type,
|
|
59805
|
+
label: clinePassWindowLabel(limit.type),
|
|
59806
|
+
percentUsed: limit.percentUsed,
|
|
59807
|
+
resetsAt: limit.resetsAt
|
|
59808
|
+
})),
|
|
59809
|
+
error: result.error,
|
|
59810
|
+
fetchedAt
|
|
59811
|
+
};
|
|
59812
|
+
} catch (error) {
|
|
59813
|
+
return {
|
|
59814
|
+
accountId: account.id,
|
|
59815
|
+
alias: account.alias,
|
|
59816
|
+
ok: false,
|
|
59817
|
+
windows: [],
|
|
59818
|
+
error: firstLine$2(error instanceof Error ? error.message : error, 240),
|
|
59819
|
+
fetchedAt
|
|
59820
|
+
};
|
|
59821
|
+
}
|
|
59822
|
+
}));
|
|
59823
|
+
return store.setUsage({ accounts: readings });
|
|
59824
|
+
};
|
|
59825
|
+
const status = async () => await getClinePassWebStatus(options, quotaRefresh);
|
|
59728
59826
|
return ctx.webServer.register({
|
|
59729
59827
|
kind: "prefix",
|
|
59730
59828
|
path: CLINE_PASS_ROUTE_PREFIX,
|
|
@@ -59733,10 +59831,13 @@ function registerClinePassRoutes(ctx, options) {
|
|
|
59733
59831
|
const path = url.pathname.replace(/^\/cline-pass\/api\/?/, "");
|
|
59734
59832
|
const method = request.method ?? "GET";
|
|
59735
59833
|
try {
|
|
59736
|
-
if (path === "" || path === "status")
|
|
59737
|
-
|
|
59738
|
-
|
|
59739
|
-
|
|
59834
|
+
if (path === "" || path === "status") {
|
|
59835
|
+
if (method === "GET" && usageStale(store.usage(), Date.now(), quotaTtlMs)) quotaRefresh.start(refreshUsage);
|
|
59836
|
+
return sendJson$2(response, 200, {
|
|
59837
|
+
ok: true,
|
|
59838
|
+
value: await status()
|
|
59839
|
+
});
|
|
59840
|
+
}
|
|
59740
59841
|
if (path === "settings") {
|
|
59741
59842
|
if (method !== "POST") return sendMethodNotAllowed$2(response);
|
|
59742
59843
|
if (!isSameOriginMutation(request)) return sendJson$2(response, 403, {
|
|
@@ -60265,50 +60366,28 @@ function registerClinePassRoutes(ctx, options) {
|
|
|
60265
60366
|
ok: false,
|
|
60266
60367
|
error: "Cross-origin request rejected."
|
|
60267
60368
|
});
|
|
60268
|
-
const
|
|
60269
|
-
|
|
60270
|
-
|
|
60271
|
-
|
|
60272
|
-
|
|
60273
|
-
const settings = await settingsStore.read();
|
|
60274
|
-
const readings = await Promise.all(enabled.map(async (account) => {
|
|
60275
|
-
const fetchedAt = Date.now();
|
|
60369
|
+
const outcome = {
|
|
60370
|
+
reading: null,
|
|
60371
|
+
cause: null
|
|
60372
|
+
};
|
|
60373
|
+
await quotaRefresh.run(async () => {
|
|
60276
60374
|
try {
|
|
60277
|
-
|
|
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
|
-
};
|
|
60375
|
+
outcome.reading = await refreshUsage();
|
|
60297
60376
|
} catch (error) {
|
|
60298
|
-
|
|
60299
|
-
|
|
60300
|
-
alias: account.alias,
|
|
60301
|
-
ok: false,
|
|
60302
|
-
windows: [],
|
|
60303
|
-
error: firstLine$2(error instanceof Error ? error.message : error, 240),
|
|
60304
|
-
fetchedAt
|
|
60305
|
-
};
|
|
60377
|
+
outcome.cause = error;
|
|
60378
|
+
throw error;
|
|
60306
60379
|
}
|
|
60307
|
-
})
|
|
60380
|
+
});
|
|
60381
|
+
if (outcome.cause !== null) throw outcome.cause;
|
|
60382
|
+
const reading = outcome.reading;
|
|
60383
|
+
if (reading === null) return sendJson$2(response, 400, {
|
|
60384
|
+
ok: false,
|
|
60385
|
+
error: "Every Cline Pass account is disabled, cooling down, or unusable. Enable one first."
|
|
60386
|
+
});
|
|
60308
60387
|
return sendJson$2(response, 200, {
|
|
60309
60388
|
ok: true,
|
|
60310
60389
|
value: {
|
|
60311
|
-
usage:
|
|
60390
|
+
usage: reading,
|
|
60312
60391
|
status: await status()
|
|
60313
60392
|
}
|
|
60314
60393
|
});
|
|
@@ -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
|
|
15
|
-
* read
|
|
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
|
|
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,
|
|
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
|
-
|
|
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":"AACA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAA;AAI7C,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9F,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,kBAAkB,CAAA;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/claude/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAWL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EAEhB,cAAc,EAGf,MAAM,aAAa,CAAA;AACpB,OAAO,EAML,KAAK,iBAAiB,EAGvB,MAAM,YAAY,CAAA;AACnB,OAAO,EAEL,yBAAyB,EACzB,4BAA4B,EAE7B,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EASL,KAAK,iBAAiB,EAGtB,KAAK,eAAe;AACpB,0FAA0F;AAC1F,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAA;AAKzC,sDAAsD;AACtD,eAAO,MAAM,YAAY,gBAAgB,CAAA;AAwCzC;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,UAAO,GACb,MAAM,EAAE,CASV;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,iBAAiB,EAAE,CAsBrB;AAqFD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;IACtB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAA;IACnC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAA;IAChD,4FAA4F;IAC5F,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;IACtF,6DAA6D;IAC7D,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;CAC3C;AAmBD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,EAAE,qBAAqB,GAAG,SAAS,EAC9C,OAAO,GAAE,mBAAwB,EACjC,UAAU,GAAE,MAAM,GAAG,IAAW;AAChC,qEAAqE;AACrE,MAAM,GAAE;IAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAA8C,GACzH,OAAO,CAAC,eAAe,CAAC,CA6D1B;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,CAAC,EAAE,qBAAqB,EACnC,OAAO,GAAE,mBAAwB,GAChC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/claude/routes.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
|
-
*
|
|
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
|
-
/**
|
|
41
|
-
|
|
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
|
|
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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"}
|