@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/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 callId = String(toolResult.toolCallId);
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 ${callId}${toolResult.isError ? " (error)" : ""}:\n${rawOutput}`
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 = String(block.id);
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 { availableCount: Math.max(0, Math.floor(available)) };
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,EAAmC,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;AAEtE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3B,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgRxE;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,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"}
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<"tokens" | "title" | "intro" | "account" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storage" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "pending" | "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" | "quota" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "stale" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHL,CAAA;AAEV,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,EAAE,MAAM,CAoH9C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAA;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAA"}
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":"AA2FA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/client/styles.ts"],"names":[],"mappings":"AAiGA,wBAAgB,aAAa,IAAI,MAAM,IAAI,CAQ1C"}
@@ -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;AAGlF,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;AAED,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,CA+F3B"}
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,CAmJ3I"}
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":"AAKA,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;IASX,OAAO,CAAC,QAAQ,CAAC,KAAK;IARlC,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;gBAE1B,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,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;YASpC,eAAe;IAmC7B,OAAO,CAAC,KAAK;IAMb,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"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "author": {
6
6
  "name": "eddyskywalker",