@eddyskywalker/dsh-chatgpt-subscription 0.1.22 → 0.1.24
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/client.js +67 -5
- package/lib/client.js.map +1 -1
- package/lib/index.js +176 -8
- package/lib/types/client/CodexSubscriptionSection.d.ts +8 -1
- package/lib/types/client/CodexSubscriptionSection.d.ts.map +1 -1
- package/lib/types/client/api.d.ts +1 -0
- package/lib/types/client/api.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +11 -1
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/styles.d.ts.map +1 -1
- package/lib/types/compat.d.ts +2 -0
- package/lib/types/compat.d.ts.map +1 -1
- package/lib/types/host/responses-mapper.d.ts.map +1 -1
- package/lib/types/host/routes.d.ts.map +1 -1
- package/lib/types/host/usage-service.d.ts +9 -0
- package/lib/types/host/usage-service.d.ts.map +1 -1
- package/lib/types/shared/contracts.d.ts +2 -0
- package/lib/types/shared/contracts.d.ts.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -33,6 +33,8 @@ const CODEX_RESPONSES_URL = `${CODEX_API_BASE}/responses`;
|
|
|
33
33
|
const CODEX_IMAGE_GENERATION_URL = `${CODEX_API_BASE}/images/generations`;
|
|
34
34
|
const CODEX_SEARCH_URL = `${CODEX_API_BASE}/alpha/search`;
|
|
35
35
|
const CODEX_USAGE_URL = "https://chatgpt.com/backend-api/wham/usage";
|
|
36
|
+
const CODEX_RESET_CREDITS_URL = "https://chatgpt.com/backend-api/wham/rate-limit-reset-credits";
|
|
37
|
+
const CODEX_RESET_CREDITS_CONSUME_URL = `${CODEX_RESET_CREDITS_URL}/consume`;
|
|
36
38
|
const CODEX_ORIGINATOR = "opencode";
|
|
37
39
|
const CODEX_IMAGE_TOOL_NAME = "codex_image_generate";
|
|
38
40
|
const CODEX_IMAGE_MODEL = "gpt-image-2";
|
|
@@ -1153,9 +1155,39 @@ function hiddenSandboxControlToolNames(options) {
|
|
|
1153
1155
|
const retryTools = recentSandboxRetryToolNames(options.messages);
|
|
1154
1156
|
return new Set(options.tools?.filter((tool) => hasSandboxControls(tool.parameters) && !retryTools.has(tool.name)).map((tool) => tool.name) ?? []);
|
|
1155
1157
|
}
|
|
1158
|
+
function createCallIdNormalizer() {
|
|
1159
|
+
const normalizedByOriginal = /* @__PURE__ */ new Map();
|
|
1160
|
+
const originalByNormalized = /* @__PURE__ */ new Map();
|
|
1161
|
+
return (value) => {
|
|
1162
|
+
const original = String(value);
|
|
1163
|
+
const existing = normalizedByOriginal.get(original);
|
|
1164
|
+
if (existing !== void 0) return existing;
|
|
1165
|
+
const claim = (candidate) => {
|
|
1166
|
+
const owner = originalByNormalized.get(candidate);
|
|
1167
|
+
if (owner !== void 0 && owner !== original) return false;
|
|
1168
|
+
normalizedByOriginal.set(original, candidate);
|
|
1169
|
+
originalByNormalized.set(candidate, original);
|
|
1170
|
+
return true;
|
|
1171
|
+
};
|
|
1172
|
+
if (original.length <= 64 && claim(original)) return original;
|
|
1173
|
+
for (let attempt = 0;; attempt++) {
|
|
1174
|
+
const material = attempt === 0 ? original : `${original}\0${attempt}`;
|
|
1175
|
+
const candidate = `dsh_${createHash("sha256").update(material).digest("hex").slice(0, 60)}`;
|
|
1176
|
+
if (claim(candidate)) return candidate;
|
|
1177
|
+
}
|
|
1178
|
+
};
|
|
1179
|
+
}
|
|
1180
|
+
function normalizeReplayCallIds(items, normalizeCallId) {
|
|
1181
|
+
if (items === null) return null;
|
|
1182
|
+
return items.map((item) => typeof item.call_id === "string" ? {
|
|
1183
|
+
...item,
|
|
1184
|
+
call_id: normalizeCallId(item.call_id)
|
|
1185
|
+
} : item);
|
|
1186
|
+
}
|
|
1156
1187
|
async function buildResponsesPayload(options, attachments, localRawImages = {}) {
|
|
1157
1188
|
const sandboxRetryTools = recentSandboxRetryToolNames(options.messages);
|
|
1158
1189
|
const resolveLocalRawImages = supportsImageInput(options);
|
|
1190
|
+
const normalizeCallId = createCallIdNormalizer();
|
|
1159
1191
|
const instructionParts = [
|
|
1160
1192
|
options.system?.trim(),
|
|
1161
1193
|
...options.messages.filter((message) => message.role === "system").map((message) => blocksToText(message.content).trim()),
|
|
@@ -1172,7 +1204,7 @@ async function buildResponsesPayload(options, attachments, localRawImages = {})
|
|
|
1172
1204
|
};
|
|
1173
1205
|
for (const message of options.messages) {
|
|
1174
1206
|
if (message.role === "system") continue;
|
|
1175
|
-
const replayItems = replayOutputItems(message);
|
|
1207
|
+
const replayItems = normalizeReplayCallIds(replayOutputItems(message), normalizeCallId);
|
|
1176
1208
|
if (message.role === "assistant" && replayItems !== null) {
|
|
1177
1209
|
input.push(...replayItems);
|
|
1178
1210
|
for (const item of replayItems) if (item.type === "function_call" && typeof item.call_id === "string") knownToolCalls.set(item.call_id, typeof item.name === "string" ? item.name : void 0);
|
|
@@ -1183,12 +1215,13 @@ async function buildResponsesPayload(options, attachments, localRawImages = {})
|
|
|
1183
1215
|
content
|
|
1184
1216
|
});
|
|
1185
1217
|
}
|
|
1186
|
-
appendMissingToolCalls(input, knownToolCalls, message);
|
|
1218
|
+
appendMissingToolCalls(input, knownToolCalls, message, normalizeCallId);
|
|
1187
1219
|
continue;
|
|
1188
1220
|
}
|
|
1189
1221
|
const toolResult = message.content.find((block) => block.type === "tool-result");
|
|
1190
1222
|
if (toolResult?.type === "tool-result") {
|
|
1191
|
-
const
|
|
1223
|
+
const originalCallId = String(toolResult.toolCallId);
|
|
1224
|
+
const callId = normalizeCallId(originalCallId);
|
|
1192
1225
|
const rawOutput = blocksToText(toolResult.content);
|
|
1193
1226
|
if (knownToolCalls.has(callId)) {
|
|
1194
1227
|
const output = toolResult.isError && knownToolCalls.get(callId) === "run_code" ? runCodeErrorOutput(rawOutput) : rawOutput;
|
|
@@ -1201,7 +1234,7 @@ async function buildResponsesPayload(options, attachments, localRawImages = {})
|
|
|
1201
1234
|
role: "user",
|
|
1202
1235
|
content: [{
|
|
1203
1236
|
type: "input_text",
|
|
1204
|
-
text: `Tool result for unavailable call ${
|
|
1237
|
+
text: `Tool result for unavailable call ${originalCallId}${toolResult.isError ? " (error)" : ""}:\n${rawOutput}`
|
|
1205
1238
|
}]
|
|
1206
1239
|
});
|
|
1207
1240
|
continue;
|
|
@@ -1211,7 +1244,7 @@ async function buildResponsesPayload(options, attachments, localRawImages = {})
|
|
|
1211
1244
|
role: message.role,
|
|
1212
1245
|
content
|
|
1213
1246
|
});
|
|
1214
|
-
if (message.role === "assistant") appendMissingToolCalls(input, knownToolCalls, message);
|
|
1247
|
+
if (message.role === "assistant") appendMissingToolCalls(input, knownToolCalls, message, normalizeCallId);
|
|
1215
1248
|
}
|
|
1216
1249
|
const payload = {
|
|
1217
1250
|
model: options.model,
|
|
@@ -1341,10 +1374,10 @@ function recentSandboxRetryToolNames(messages) {
|
|
|
1341
1374
|
function isSandboxDenial(output) {
|
|
1342
1375
|
return /\[sandbox:\s*file access denied\b/i.test(output) || /\bsandbox\b.*\b(?:access denied|denied access|EPERM)\b/i.test(output);
|
|
1343
1376
|
}
|
|
1344
|
-
function appendMissingToolCalls(input, knownToolCalls, message) {
|
|
1377
|
+
function appendMissingToolCalls(input, knownToolCalls, message, normalizeCallId) {
|
|
1345
1378
|
for (const block of message.content) {
|
|
1346
1379
|
if (block.type !== "tool-call") continue;
|
|
1347
|
-
const callId =
|
|
1380
|
+
const callId = normalizeCallId(block.id);
|
|
1348
1381
|
if (knownToolCalls.has(callId)) continue;
|
|
1349
1382
|
input.push({
|
|
1350
1383
|
type: "function_call",
|
|
@@ -1914,6 +1947,7 @@ var UsageService = class {
|
|
|
1914
1947
|
blockedUntil = 0;
|
|
1915
1948
|
invalidated = false;
|
|
1916
1949
|
inFlight = null;
|
|
1950
|
+
resetConsumeInFlight = null;
|
|
1917
1951
|
constructor(oauth, options = {}) {
|
|
1918
1952
|
this.oauth = oauth;
|
|
1919
1953
|
this.fetchFn = options.fetchFn ?? fetch;
|
|
@@ -1958,6 +1992,89 @@ var UsageService = class {
|
|
|
1958
1992
|
this.blockedUntil = 0;
|
|
1959
1993
|
this.invalidated = false;
|
|
1960
1994
|
}
|
|
1995
|
+
async consumeResetCredit() {
|
|
1996
|
+
if (this.resetConsumeInFlight !== null) return this.resetConsumeInFlight;
|
|
1997
|
+
this.resetConsumeInFlight = this.consumeResetCreditUpstream().finally(() => {
|
|
1998
|
+
this.resetConsumeInFlight = null;
|
|
1999
|
+
});
|
|
2000
|
+
return this.resetConsumeInFlight;
|
|
2001
|
+
}
|
|
2002
|
+
async consumeResetCreditUpstream() {
|
|
2003
|
+
let credentials;
|
|
2004
|
+
try {
|
|
2005
|
+
credentials = await this.oauth.credentials();
|
|
2006
|
+
let creditsResponse = await this.fetchResetCredits(credentials);
|
|
2007
|
+
if (creditsResponse.status === 401) {
|
|
2008
|
+
await creditsResponse.body?.cancel().catch(() => void 0);
|
|
2009
|
+
credentials = await this.oauth.credentials(true);
|
|
2010
|
+
creditsResponse = await this.fetchResetCredits(credentials);
|
|
2011
|
+
}
|
|
2012
|
+
if (!creditsResponse.ok) {
|
|
2013
|
+
const status = creditsResponse.status;
|
|
2014
|
+
await creditsResponse.body?.cancel().catch(() => void 0);
|
|
2015
|
+
throw new UsageServiceError({
|
|
2016
|
+
code: status === 429 ? "rate-limited" : "quota-failed",
|
|
2017
|
+
message: status === 429 ? "Reset credit request was rate limited." : `Reset credit request failed (${status}).`
|
|
2018
|
+
});
|
|
2019
|
+
}
|
|
2020
|
+
const creditId = parseResetCredits(await creditsResponse.json()).availableCreditIds[0];
|
|
2021
|
+
if (creditId === void 0) throw new UsageServiceError({
|
|
2022
|
+
code: "bad-request",
|
|
2023
|
+
message: "No reset credits are currently available."
|
|
2024
|
+
});
|
|
2025
|
+
const redeemRequestId = randomUUID();
|
|
2026
|
+
let consumeResponse = await this.fetchFn(CODEX_RESET_CREDITS_CONSUME_URL, {
|
|
2027
|
+
method: "POST",
|
|
2028
|
+
headers: {
|
|
2029
|
+
...codexHeaders(credentials),
|
|
2030
|
+
accept: "application/json",
|
|
2031
|
+
"content-type": "application/json"
|
|
2032
|
+
},
|
|
2033
|
+
body: JSON.stringify({
|
|
2034
|
+
credit_id: creditId,
|
|
2035
|
+
redeem_request_id: redeemRequestId
|
|
2036
|
+
})
|
|
2037
|
+
});
|
|
2038
|
+
if (consumeResponse.status === 401) {
|
|
2039
|
+
await consumeResponse.body?.cancel().catch(() => void 0);
|
|
2040
|
+
credentials = await this.oauth.credentials(true);
|
|
2041
|
+
consumeResponse = await this.fetchFn(CODEX_RESET_CREDITS_CONSUME_URL, {
|
|
2042
|
+
method: "POST",
|
|
2043
|
+
headers: {
|
|
2044
|
+
...codexHeaders(credentials),
|
|
2045
|
+
accept: "application/json",
|
|
2046
|
+
"content-type": "application/json"
|
|
2047
|
+
},
|
|
2048
|
+
body: JSON.stringify({
|
|
2049
|
+
credit_id: creditId,
|
|
2050
|
+
redeem_request_id: redeemRequestId
|
|
2051
|
+
})
|
|
2052
|
+
});
|
|
2053
|
+
}
|
|
2054
|
+
if (!consumeResponse.ok) {
|
|
2055
|
+
const status = consumeResponse.status;
|
|
2056
|
+
await consumeResponse.body?.cancel().catch(() => void 0);
|
|
2057
|
+
throw new UsageServiceError({
|
|
2058
|
+
code: status === 429 ? "rate-limited" : "quota-failed",
|
|
2059
|
+
message: status === 429 ? "Using the reset credit was rate limited." : `Using the reset credit failed (${status}).`
|
|
2060
|
+
});
|
|
2061
|
+
}
|
|
2062
|
+
await consumeResponse.body?.cancel().catch(() => void 0);
|
|
2063
|
+
this.clear();
|
|
2064
|
+
const refreshed = await this.refreshUpstream(credentials, identityKey(credentials));
|
|
2065
|
+
if (refreshed.error !== void 0) throw new UsageServiceError({
|
|
2066
|
+
code: "quota-failed",
|
|
2067
|
+
message: "The reset credit was used, but usage could not be refreshed."
|
|
2068
|
+
});
|
|
2069
|
+
return refreshed;
|
|
2070
|
+
} catch (error) {
|
|
2071
|
+
if (error instanceof UsageServiceError) throw error;
|
|
2072
|
+
throw new UsageServiceError({
|
|
2073
|
+
code: "quota-failed",
|
|
2074
|
+
message: "The reset credit could not be used."
|
|
2075
|
+
});
|
|
2076
|
+
}
|
|
2077
|
+
}
|
|
1961
2078
|
async testConnection() {
|
|
1962
2079
|
const started = this.now();
|
|
1963
2080
|
const result = await this.status(true, true);
|
|
@@ -2000,6 +2117,16 @@ var UsageService = class {
|
|
|
2000
2117
|
});
|
|
2001
2118
|
}
|
|
2002
2119
|
const usage = parseCodexUsage(await response.json());
|
|
2120
|
+
if ((usage.resetCredits?.availableCount ?? 0) > 0) {
|
|
2121
|
+
const resetResponse = await this.fetchResetCredits(credentials).catch(() => null);
|
|
2122
|
+
if (resetResponse?.ok === true) {
|
|
2123
|
+
const reset = parseResetCredits(await resetResponse.json());
|
|
2124
|
+
usage.resetCredits = {
|
|
2125
|
+
availableCount: reset.availableCount,
|
|
2126
|
+
expiresAt: reset.expiresAt
|
|
2127
|
+
};
|
|
2128
|
+
} else await resetResponse?.body?.cancel().catch(() => void 0);
|
|
2129
|
+
}
|
|
2003
2130
|
this.cache = {
|
|
2004
2131
|
usage,
|
|
2005
2132
|
fetchedAt: this.now(),
|
|
@@ -2021,6 +2148,12 @@ var UsageService = class {
|
|
|
2021
2148
|
accept: "application/json"
|
|
2022
2149
|
} });
|
|
2023
2150
|
}
|
|
2151
|
+
fetchResetCredits(credentials) {
|
|
2152
|
+
return this.fetchFn(CODEX_RESET_CREDITS_URL, { headers: {
|
|
2153
|
+
...codexHeaders(credentials),
|
|
2154
|
+
accept: "application/json"
|
|
2155
|
+
} });
|
|
2156
|
+
}
|
|
2024
2157
|
fromCache(stale, error) {
|
|
2025
2158
|
if (this.cache === null) return {
|
|
2026
2159
|
state: error ? "error" : "empty",
|
|
@@ -2136,7 +2269,35 @@ function mapResetCredits(value) {
|
|
|
2136
2269
|
if (data === null) return null;
|
|
2137
2270
|
const available = numeric(data.available_count);
|
|
2138
2271
|
if (available === void 0) return null;
|
|
2139
|
-
return {
|
|
2272
|
+
return {
|
|
2273
|
+
availableCount: Math.max(0, Math.floor(available)),
|
|
2274
|
+
expiresAt: null
|
|
2275
|
+
};
|
|
2276
|
+
}
|
|
2277
|
+
function parseResetCredits(value) {
|
|
2278
|
+
const data = record(value);
|
|
2279
|
+
if (data === null) return {
|
|
2280
|
+
availableCount: 0,
|
|
2281
|
+
expiresAt: null,
|
|
2282
|
+
availableCreditIds: []
|
|
2283
|
+
};
|
|
2284
|
+
const available = (Array.isArray(data.credits) ? data.credits : []).map(record).filter((credit) => credit !== null && credit.status === "available").map((credit) => ({
|
|
2285
|
+
id: text(credit.id),
|
|
2286
|
+
expiresAt: timestamp(credit.expires_at)
|
|
2287
|
+
})).filter((credit) => credit.id !== null).sort((left, right) => (left.expiresAt ?? Number.MAX_SAFE_INTEGER) - (right.expiresAt ?? Number.MAX_SAFE_INTEGER));
|
|
2288
|
+
const reported = numeric(data.available_count);
|
|
2289
|
+
return {
|
|
2290
|
+
availableCount: reported === void 0 ? available.length : Math.max(0, Math.floor(reported)),
|
|
2291
|
+
expiresAt: available.map((credit) => credit.expiresAt).find((expiresAt) => expiresAt !== null) ?? null,
|
|
2292
|
+
availableCreditIds: available.map((credit) => credit.id)
|
|
2293
|
+
};
|
|
2294
|
+
}
|
|
2295
|
+
function timestamp(value) {
|
|
2296
|
+
const numericValue = numeric(value);
|
|
2297
|
+
if (numericValue !== void 0 && numericValue > 0) return numericValue > 1e10 ? Math.floor(numericValue / 1e3) : Math.floor(numericValue);
|
|
2298
|
+
if (typeof value !== "string") return null;
|
|
2299
|
+
const parsed = Date.parse(value);
|
|
2300
|
+
return Number.isFinite(parsed) ? Math.floor(parsed / 1e3) : null;
|
|
2140
2301
|
}
|
|
2141
2302
|
function record(value) {
|
|
2142
2303
|
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
|
|
@@ -2327,6 +2488,13 @@ function registerRoutes(ctx, oauth, usage, preferences) {
|
|
|
2327
2488
|
value: await usage.status(true, true)
|
|
2328
2489
|
});
|
|
2329
2490
|
return;
|
|
2491
|
+
case `${ROUTE_PREFIX}/quota/reset-credit/use`:
|
|
2492
|
+
if (!(await oauth.status()).authenticated) throw new Error("not authenticated");
|
|
2493
|
+
json(response, {
|
|
2494
|
+
ok: true,
|
|
2495
|
+
value: await usage.consumeResetCredit()
|
|
2496
|
+
});
|
|
2497
|
+
return;
|
|
2330
2498
|
case `${ROUTE_PREFIX}/connection/test`:
|
|
2331
2499
|
json(response, {
|
|
2332
2500
|
ok: true,
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
-
import type { CredentialStorageDto, QuotaWindowDto } from '../shared/contracts.ts';
|
|
2
|
+
import type { CredentialStorageDto, PluginStatusDto, QuotaWindowDto } from '../shared/contracts.ts';
|
|
3
3
|
import { NS } from './locales.ts';
|
|
4
4
|
type Props = PropsRuntime<'settings.section'> & PropsLocale<typeof NS>;
|
|
5
|
+
type BusyAction = 'login' | 'token' | 'quota' | 'reset-credit' | 'test' | 'logout' | 'preferences' | null;
|
|
5
6
|
type Translate = Props['t'];
|
|
6
7
|
export declare function CodexSubscriptionSection({ t }: Props): React.JSX.Element;
|
|
7
8
|
export declare function storageLabel(storage: CredentialStorageDto | undefined, t: Translate): string;
|
|
8
9
|
export declare function storageNotice(storage: CredentialStorageDto | undefined, t: Translate): string;
|
|
10
|
+
export declare function ResetCreditsFact({ resetCredits, busy, onUse, t }: {
|
|
11
|
+
resetCredits: NonNullable<PluginStatusDto['quota']['resetCredits']>;
|
|
12
|
+
busy: BusyAction;
|
|
13
|
+
onUse: () => Promise<void>;
|
|
14
|
+
t: Translate;
|
|
15
|
+
}): React.JSX.Element;
|
|
9
16
|
export declare function QuotaBar({ label, window, t }: {
|
|
10
17
|
label: string;
|
|
11
18
|
window: QuotaWindowDto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"CodexSubscriptionSection.d.ts","sourceRoot":"","sources":["../../../src/client/CodexSubscriptionSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAkB,cAAc,EAAoC,MAAM,wBAAwB,CAAA;AAGrJ,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAGjC,KAAK,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;AACtE,KAAK,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAA;AACzG,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4RxE;AAiBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAO7F;AAcD,wBAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAAE,YAAY,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUzN;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAczH;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAQxE;AAcD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG1D;AA0BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUnD"}
|
|
@@ -11,6 +11,7 @@ export declare class SubscriptionApi {
|
|
|
11
11
|
}>;
|
|
12
12
|
refresh(): Promise<PluginStatusDto>;
|
|
13
13
|
refreshQuota(): Promise<QuotaStatusDto>;
|
|
14
|
+
useResetCredit(): Promise<QuotaStatusDto>;
|
|
14
15
|
testConnection(): Promise<ConnectionTestDto>;
|
|
15
16
|
updatePreferences(patch: SubscriptionPreferencesUpdateDto): Promise<SubscriptionPreferencesDto>;
|
|
16
17
|
events(loginId: string): EventSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,qBAAa,eAAe;IAC1B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAIlC,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAI1C,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAIpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,MAAM,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,KAAK,CAAA;KAAE,CAAC;IAI3C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAIvC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAI/F,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;CAGrC;AAmBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAOjF"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,wBAAwB,CAAA;AAE/B,qBAAa,eAAe;IAC1B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAIlC,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAI1C,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAIpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D,MAAM,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,KAAK,CAAA;KAAE,CAAC;IAI3C,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAIvC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IAIzC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAI/F,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;CAGrC;AAmBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,IAAI,CAOjF"}
|
|
@@ -97,6 +97,11 @@ export declare const zh: {
|
|
|
97
97
|
readonly credits: "Credits";
|
|
98
98
|
readonly monthlySpend: "月度消费控制";
|
|
99
99
|
readonly resetCredits: "重置次数";
|
|
100
|
+
readonly resetCreditExpires: "到期时间";
|
|
101
|
+
readonly useResetCredit: "使用重置卡";
|
|
102
|
+
readonly usingResetCredit: "使用中…";
|
|
103
|
+
readonly useResetCreditConfirm: "使用后会立即消耗 1 次重置机会,并重置符合条件的 Codex 额度窗口。确定继续吗?";
|
|
104
|
+
readonly resetCreditUsed: "重置卡已使用,用量数据已刷新。";
|
|
100
105
|
readonly spendControlReached: "已触发月度消费控制,新的订阅调用可能被限制。";
|
|
101
106
|
readonly limit: "上限";
|
|
102
107
|
readonly exhausted: "额度已用尽";
|
|
@@ -217,6 +222,11 @@ export declare const dictionaries: {
|
|
|
217
222
|
readonly credits: "Credits";
|
|
218
223
|
readonly monthlySpend: "月度消费控制";
|
|
219
224
|
readonly resetCredits: "重置次数";
|
|
225
|
+
readonly resetCreditExpires: "到期时间";
|
|
226
|
+
readonly useResetCredit: "使用重置卡";
|
|
227
|
+
readonly usingResetCredit: "使用中…";
|
|
228
|
+
readonly useResetCreditConfirm: "使用后会立即消耗 1 次重置机会,并重置符合条件的 Codex 额度窗口。确定继续吗?";
|
|
229
|
+
readonly resetCreditUsed: "重置卡已使用,用量数据已刷新。";
|
|
220
230
|
readonly spendControlReached: "已触发月度消费控制,新的订阅调用可能被限制。";
|
|
221
231
|
readonly limit: "上限";
|
|
222
232
|
readonly exhausted: "额度已用尽";
|
|
@@ -236,6 +246,6 @@ export declare const dictionaries: {
|
|
|
236
246
|
readonly retry: "重试";
|
|
237
247
|
readonly unknown: "未知";
|
|
238
248
|
};
|
|
239
|
-
en: Record<"
|
|
249
|
+
en: Record<"quota" | "account" | "storage" | "stale" | "pending" | "tokens" | "title" | "intro" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "enhancements" | "subagentSettingsNav" | "subagentSettingsTitle" | "subagentSettingsIntro" | "subagentModelGroup" | "subagentLimitsGroup" | "subagentMaxDepth" | "subagentMaxDepthHint" | "subagentMaxAgents" | "subagentMaxAgentsHint" | "subagentLimitsNotice" | "levels" | "agents" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "subagentProvider" | "subagentProviderHint" | "subagentModel" | "subagentModelHint" | "subagentReasoningEffort" | "subagentReasoningEffortHint" | "providerDefault" | "effectiveContextWindow" | "selectedModelContextHint" | "reasoningNone" | "reasoningLow" | "reasoningMedium" | "reasoningHigh" | "reasoningXhigh" | "reasoningMax" | "contextWindows" | "contextWindowsHint" | "contextWindow" | "contextWindowInvalid" | "saveContextWindow" | "save" | "quickQuota" | "quickQuotaHint" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "resetCreditExpires" | "useResetCredit" | "usingResetCredit" | "useResetCreditConfirm" | "resetCreditUsed" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
|
|
240
250
|
};
|
|
241
251
|
//# sourceMappingURL=locales.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,EAAG,0BAAmC,CAAA;AAErD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAyH9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAiGA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
|
package/lib/types/compat.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare const CODEX_RESPONSES_URL: "https://chatgpt.com/backend-api/codex
|
|
|
21
21
|
export declare const CODEX_IMAGE_GENERATION_URL: "https://chatgpt.com/backend-api/codex/images/generations";
|
|
22
22
|
export declare const CODEX_SEARCH_URL: "https://chatgpt.com/backend-api/codex/alpha/search";
|
|
23
23
|
export declare const CODEX_USAGE_URL: "https://chatgpt.com/backend-api/wham/usage";
|
|
24
|
+
export declare const CODEX_RESET_CREDITS_URL: "https://chatgpt.com/backend-api/wham/rate-limit-reset-credits";
|
|
25
|
+
export declare const CODEX_RESET_CREDITS_CONSUME_URL: "https://chatgpt.com/backend-api/wham/rate-limit-reset-credits/consume";
|
|
24
26
|
export declare const CODEX_ORIGINATOR: "opencode";
|
|
25
27
|
export declare const CODEX_ENHANCED_ORIGINATOR: "pi";
|
|
26
28
|
export declare const CODEX_IMAGE_TOOL_NAME: "codex_image_generate";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../src/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAG,yBAAkC,CAAA;AACtE,eAAO,MAAM,uBAAuB,EAAG,8BAAuC,CAAA;AAC9E,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AACvD,eAAO,MAAM,mBAAmB,EAAG,IAAa,CAAA;AAChD,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAC5D,eAAO,MAAM,kBAAkB,uCAAwF,CAAA;AACvH,eAAO,MAAM,WAAW,EAAG,qCAA8C,CAAA;AACzE,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAChD,eAAO,MAAM,uBAAuB,QAAS,CAAA;AAC7C,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAA;AACpE,eAAO,MAAM,cAAc,EAAG,eAAwB,CAAA;AACtD,eAAO,MAAM,yBAAyB,EAAG,eAAwB,CAAA;AAEjE,eAAO,MAAM,cAAc,EAAG,uCAAgD,CAAA;AAC9E,eAAO,MAAM,mBAAmB,mDAAyC,CAAA;AACzE,eAAO,MAAM,0BAA0B,4DAAkD,CAAA;AACzF,eAAO,MAAM,gBAAgB,sDAA4C,CAAA;AACzE,eAAO,MAAM,eAAe,EAAG,4CAAqD,CAAA;AACpF,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,yBAAyB,EAAG,IAAa,CAAA;AACtD,eAAO,MAAM,qBAAqB,EAAG,sBAA+B,CAAA;AACpE,eAAO,MAAM,iBAAiB,EAAG,aAAsB,CAAA;AACvD,eAAO,MAAM,wBAAwB,EAAG,oBAA6B,CAAA;AACrE,eAAO,MAAM,cAAc,QAAS,CAAA;AACpC,eAAO,MAAM,8BAA8B,QAAS,CAAA;AAEpD,eAAO,MAAM,mBAAmB,2CAAqD,CAAA;AACrF,eAAO,MAAM,eAAe,uCAAiD,CAAA"}
|
|
1
|
+
{"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../src/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAG,yBAAkC,CAAA;AACtE,eAAO,MAAM,uBAAuB,EAAG,8BAAuC,CAAA;AAC9E,eAAO,MAAM,mBAAmB,EAAG,WAAoB,CAAA;AACvD,eAAO,MAAM,mBAAmB,EAAG,IAAa,CAAA;AAChD,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAA;AAC5D,eAAO,MAAM,kBAAkB,uCAAwF,CAAA;AACvH,eAAO,MAAM,WAAW,EAAG,qCAA8C,CAAA;AACzE,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAChD,eAAO,MAAM,uBAAuB,QAAS,CAAA;AAC7C,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAA;AACpE,eAAO,MAAM,cAAc,EAAG,eAAwB,CAAA;AACtD,eAAO,MAAM,yBAAyB,EAAG,eAAwB,CAAA;AAEjE,eAAO,MAAM,cAAc,EAAG,uCAAgD,CAAA;AAC9E,eAAO,MAAM,mBAAmB,mDAAyC,CAAA;AACzE,eAAO,MAAM,0BAA0B,4DAAkD,CAAA;AACzF,eAAO,MAAM,gBAAgB,sDAA4C,CAAA;AACzE,eAAO,MAAM,eAAe,EAAG,4CAAqD,CAAA;AACpF,eAAO,MAAM,uBAAuB,EAAG,+DAAwE,CAAA;AAC/G,eAAO,MAAM,+BAA+B,yEAAgD,CAAA;AAC5F,eAAO,MAAM,gBAAgB,EAAG,UAAmB,CAAA;AACnD,eAAO,MAAM,yBAAyB,EAAG,IAAa,CAAA;AACtD,eAAO,MAAM,qBAAqB,EAAG,sBAA+B,CAAA;AACpE,eAAO,MAAM,iBAAiB,EAAG,aAAsB,CAAA;AACvD,eAAO,MAAM,wBAAwB,EAAG,oBAA6B,CAAA;AACrE,eAAO,MAAM,cAAc,QAAS,CAAA;AACpC,eAAO,MAAM,8BAA8B,QAAS,CAAA;AAEpD,eAAO,MAAM,mBAAmB,2CAAqD,CAAA;AACrF,eAAO,MAAM,eAAe,uCAAiD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses-mapper.d.ts","sourceRoot":"","sources":["../../../src/host/responses-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,6BAA6B,CAAA;AACtG,OAAO,KAAK,EAAgB,eAAe,EAAW,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"responses-mapper.d.ts","sourceRoot":"","sources":["../../../src/host/responses-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,6BAA6B,CAAA;AACtG,OAAO,KAAK,EAAgB,eAAe,EAAW,MAAM,sBAAsB,CAAA;AAIlF,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEhG,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAQD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAKnF;AAsCD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAC/F,cAAc,GAAE,oBAAyB,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAiG3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAKpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/host/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAKpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,GAAG,MAAM,IAAI,CAyJ3I"}
|
|
@@ -14,13 +14,17 @@ export declare class UsageService {
|
|
|
14
14
|
private blockedUntil;
|
|
15
15
|
private invalidated;
|
|
16
16
|
private inFlight;
|
|
17
|
+
private resetConsumeInFlight;
|
|
17
18
|
constructor(oauth: OAuthService, options?: UsageServiceOptions);
|
|
18
19
|
status(authenticated: boolean, force?: boolean): Promise<QuotaStatusDto>;
|
|
19
20
|
invalidate(): void;
|
|
20
21
|
clear(): void;
|
|
22
|
+
consumeResetCredit(): Promise<QuotaStatusDto>;
|
|
23
|
+
private consumeResetCreditUpstream;
|
|
21
24
|
testConnection(): Promise<ConnectionTestDto>;
|
|
22
25
|
private refreshUpstream;
|
|
23
26
|
private fetch;
|
|
27
|
+
private fetchResetCredits;
|
|
24
28
|
private fromCache;
|
|
25
29
|
private failure;
|
|
26
30
|
}
|
|
@@ -30,5 +34,10 @@ export declare class UsageServiceError extends Error {
|
|
|
30
34
|
}
|
|
31
35
|
export declare function mapCodexUsage(value: unknown): QuotaBucketDto[];
|
|
32
36
|
export declare function parseCodexUsage(value: unknown): QuotaUsageDto;
|
|
37
|
+
export declare function parseResetCredits(value: unknown): {
|
|
38
|
+
availableCount: number;
|
|
39
|
+
expiresAt: number | null;
|
|
40
|
+
availableCreditIds: string[];
|
|
41
|
+
};
|
|
33
42
|
export {};
|
|
34
43
|
//# sourceMappingURL=usage-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-service.d.ts","sourceRoot":"","sources":["../../../src/host/usage-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usage-service.d.ts","sourceRoot":"","sources":["../../../src/host/usage-service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAA;AAgB7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,qBAAa,YAAY;IAUX,OAAO,CAAC,QAAQ,CAAC,KAAK;IATlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,oBAAoB,CAAuC;gBAEtC,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB;IAK7E,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IA2B5E,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;IAMP,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;YAQrC,0BAA0B;IA2DlC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;YASpC,eAAe;IA4C7B,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,OAAO;CAGhB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,WAAW,EAAE,cAAc;gBAA3B,WAAW,EAAE,cAAc;CAGjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CAE9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAwB7D;AAuED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBpI"}
|
|
@@ -105,6 +105,8 @@ export interface QuotaIndividualLimitDto {
|
|
|
105
105
|
}
|
|
106
106
|
export interface QuotaResetCreditsDto {
|
|
107
107
|
availableCount: number;
|
|
108
|
+
/** Earliest expiration among currently available reset credits, as Unix seconds. */
|
|
109
|
+
expiresAt: number | null;
|
|
108
110
|
}
|
|
109
111
|
export interface QuotaUsageDto {
|
|
110
112
|
buckets: QuotaBucketDto[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":"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"}
|