@eddyskywalker/dsh-chatgpt-subscription 0.35.0 → 0.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +6 -6
  3. package/lib/client.js +2064 -179
  4. package/lib/client.js.map +1 -1
  5. package/lib/index.js +206 -55
  6. package/lib/types/client/antigravity/AntigravitySection.d.ts.map +1 -1
  7. package/lib/types/client/claude/ClaudeSection.d.ts.map +1 -1
  8. package/lib/types/client/claude/useClaudeSection.d.ts.map +1 -1
  9. package/lib/types/client/cline-pass/ClinePassComposerQuota.d.ts +5 -2
  10. package/lib/types/client/cline-pass/ClinePassComposerQuota.d.ts.map +1 -1
  11. package/lib/types/client/cline-pass/ClinePassSection.d.ts.map +1 -1
  12. package/lib/types/client/cline-pass/api.d.ts +21 -1
  13. package/lib/types/client/cline-pass/api.d.ts.map +1 -1
  14. package/lib/types/client/command-code/CommandCodeSection.d.ts.map +1 -1
  15. package/lib/types/client/common/line-locale.d.ts +21 -0
  16. package/lib/types/client/common/line-locale.d.ts.map +1 -0
  17. package/lib/types/client/glm-coding-plan/GlmCodingPlanSection.d.ts.map +1 -1
  18. package/lib/types/client/glm-coding-plan/locales.d.ts +2 -2
  19. package/lib/types/client/index.d.ts.map +1 -1
  20. package/lib/types/client/kimi-code/KimiCodeSection.d.ts.map +1 -1
  21. package/lib/types/client/kimi-code/KimiModelCapabilities.d.ts.map +1 -1
  22. package/lib/types/client/kimi-code/locales.d.ts +2 -2
  23. package/lib/types/client/locales-ru/account-pool.d.ts +11 -0
  24. package/lib/types/client/locales-ru/account-pool.d.ts.map +1 -0
  25. package/lib/types/client/locales-ru/antigravity.d.ts +10 -0
  26. package/lib/types/client/locales-ru/antigravity.d.ts.map +1 -0
  27. package/lib/types/client/locales-ru/claude.d.ts +3 -0
  28. package/lib/types/client/locales-ru/claude.d.ts.map +1 -0
  29. package/lib/types/client/locales-ru/cline-pass.d.ts +11 -0
  30. package/lib/types/client/locales-ru/cline-pass.d.ts.map +1 -0
  31. package/lib/types/client/locales-ru/command-code.d.ts +9 -0
  32. package/lib/types/client/locales-ru/command-code.d.ts.map +1 -0
  33. package/lib/types/client/locales-ru/glm-coding-plan.d.ts +10 -0
  34. package/lib/types/client/locales-ru/glm-coding-plan.d.ts.map +1 -0
  35. package/lib/types/client/locales-ru/hub.d.ts +3 -0
  36. package/lib/types/client/locales-ru/hub.d.ts.map +1 -0
  37. package/lib/types/client/locales-ru/index.d.ts +27 -0
  38. package/lib/types/client/locales-ru/index.d.ts.map +1 -0
  39. package/lib/types/client/locales-ru/kimi-code.d.ts +10 -0
  40. package/lib/types/client/locales-ru/kimi-code.d.ts.map +1 -0
  41. package/lib/types/client/locales-ru/minimax-code.d.ts +9 -0
  42. package/lib/types/client/locales-ru/minimax-code.d.ts.map +1 -0
  43. package/lib/types/client/locales-ru/ollama.d.ts +10 -0
  44. package/lib/types/client/locales-ru/ollama.d.ts.map +1 -0
  45. package/lib/types/client/locales-ru/opendesign.d.ts +10 -0
  46. package/lib/types/client/locales-ru/opendesign.d.ts.map +1 -0
  47. package/lib/types/client/locales-ru/progress-updates.d.ts +8 -0
  48. package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -0
  49. package/lib/types/client/locales-ru/qoder.d.ts +11 -0
  50. package/lib/types/client/locales-ru/qoder.d.ts.map +1 -0
  51. package/lib/types/client/locales-ru/step-code.d.ts +9 -0
  52. package/lib/types/client/locales-ru/step-code.d.ts.map +1 -0
  53. package/lib/types/client/minimax-code/locales.d.ts +2 -2
  54. package/lib/types/client/ollama/OllamaSection.d.ts.map +1 -1
  55. package/lib/types/client/opendesign/OpenDesignSection.d.ts +4 -3
  56. package/lib/types/client/opendesign/OpenDesignSection.d.ts.map +1 -1
  57. package/lib/types/client/opendesign/locales.d.ts +108 -42
  58. package/lib/types/client/opendesign/locales.d.ts.map +1 -1
  59. package/lib/types/client/opendesign/styles.d.ts.map +1 -1
  60. package/lib/types/client/qoder/QoderSection.d.ts +2 -1
  61. package/lib/types/client/qoder/QoderSection.d.ts.map +1 -1
  62. package/lib/types/client/qoder/locales.d.ts +1 -1
  63. package/lib/types/client/step-code/StepCodeSection.d.ts.map +1 -1
  64. package/lib/types/client/step-code/locales.d.ts +2 -2
  65. package/lib/types/host/cline-pass/routes.d.ts +27 -3
  66. package/lib/types/host/cline-pass/routes.d.ts.map +1 -1
  67. package/lib/types/host/opendesign/client.d.ts +53 -0
  68. package/lib/types/host/opendesign/client.d.ts.map +1 -1
  69. package/lib/types/host/opendesign/routes.d.ts +4 -3
  70. package/lib/types/host/opendesign/routes.d.ts.map +1 -1
  71. package/lib/types/host/opendesign/types.d.ts +10 -0
  72. package/lib/types/host/opendesign/types.d.ts.map +1 -1
  73. package/lib/types/shared/cline-pass-contracts.d.ts +7 -0
  74. package/lib/types/shared/cline-pass-contracts.d.ts.map +1 -1
  75. package/lib/types/shared/opendesign-contracts.d.ts +35 -2
  76. package/lib/types/shared/opendesign-contracts.d.ts.map +1 -1
  77. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -59564,6 +59564,15 @@ async function readRequestJson$2(request) {
59564
59564
  function firstLine$2(value, max = 200) {
59565
59565
  return String(value ?? "").replace(/\s+/g, " ").trim().slice(0, max);
59566
59566
  }
59567
+ /**
59568
+ * Whether the cached snapshot is too old to be trusted as the card's numbers.
59569
+ *
59570
+ * `fetchedAt` is 0 until the first read lands, which counts as stale on
59571
+ * purpose: a card with no numbers at all is the case that most needs the read.
59572
+ */
59573
+ function usageStale(reading, now, ttlMs) {
59574
+ return reading.fetchedAt <= 0 || now - reading.fetchedAt > ttlMs;
59575
+ }
59567
59576
  /** Whether one account can serve a request right now. */
59568
59577
  function isUsable$1(account, now) {
59569
59578
  if (account.authStatus !== void 0 && account.authStatus !== "ok") return false;
@@ -59639,8 +59648,15 @@ function projectModels$1(settings, store) {
59639
59648
  };
59640
59649
  });
59641
59650
  }
59642
- /** Assemble the whole status payload the Cline Pass tab renders. */
59643
- async function getClinePassWebStatus(options) {
59651
+ /**
59652
+ * Assemble the whole status payload the Cline Pass tab renders.
59653
+ *
59654
+ * `quotaRefresh` is the single flight the caller refreshes through, when it has
59655
+ * one: passing it is what lets the answer say a refresh is still running behind
59656
+ * it. A caller that only reads (the management tools are one) omits it and gets
59657
+ * the cache alone, which keeps a tool call from spending the line's quota reads.
59658
+ */
59659
+ async function getClinePassWebStatus(options, quotaRefresh) {
59644
59660
  const { settings: settingsStore, accountPool, store } = options;
59645
59661
  const settings = await settingsStore.read().catch(() => settingsStore.status());
59646
59662
  const data = await accountPool.read().catch(() => null);
@@ -59676,6 +59692,7 @@ async function getClinePassWebStatus(options) {
59676
59692
  catalogSynced: settings.catalogModels.length > 0,
59677
59693
  catalogCount: settings.catalogModels.length,
59678
59694
  usage: store.usage().accounts.length === 0 ? null : store.usage(),
59695
+ quotaRefreshing: quotaRefresh?.refreshing === true,
59679
59696
  historySize: store.historySize(),
59680
59697
  login: options.login?.current() ?? null,
59681
59698
  settings: {
@@ -59721,10 +59738,60 @@ const CLINE_PASS_ROUTES = {
59721
59738
  function registerClinePassRoutes(ctx, options) {
59722
59739
  const { settings: settingsStore, accountPool, store, engine, fetchFn } = options;
59723
59740
  const openBrowser = options.openBrowser ?? (() => void 0);
59741
+ const quotaTtlMs = options.quotaTtlMs ?? 3e5;
59742
+ const quotaRefresh = new QuotaRefresh();
59724
59743
  const emitModelsUpdated = () => {
59725
59744
  ctx.emit?.("llm/adapters-updated");
59726
59745
  };
59727
- const status = async () => await getClinePassWebStatus(options);
59746
+ /**
59747
+ * Read every usable account's official quota and replace the snapshot.
59748
+ *
59749
+ * Shared by the explicit refresh action and the background one a status read
59750
+ * schedules, so both fan out over the same accounts and write the same shape.
59751
+ * Null means no account can serve right now, which only the explicit action
59752
+ * reports: a background refresh has nobody to tell.
59753
+ */
59754
+ const refreshUsage = async () => {
59755
+ const enabled = ((await accountPool.read().catch(() => null))?.accounts ?? []).filter((account) => isUsable$1(account, Date.now()));
59756
+ if (enabled.length === 0) return null;
59757
+ const settings = await settingsStore.read();
59758
+ const readings = await Promise.all(enabled.map(async (account) => {
59759
+ const fetchedAt = Date.now();
59760
+ try {
59761
+ const credentials = await accountPool.getFreshCredential(account.id, fetchFn);
59762
+ const baseURL = credentials.baseURL && credentials.baseURL.trim() !== "" ? credentials.baseURL.trim() : settings.baseURL;
59763
+ const result = await fetchUsageLimits({
59764
+ fetchFn,
59765
+ baseURL,
59766
+ apiKey: bearerFor$1(credentials)
59767
+ });
59768
+ return {
59769
+ accountId: account.id,
59770
+ alias: account.alias,
59771
+ ok: result.ok,
59772
+ windows: result.limits.map((limit) => ({
59773
+ type: limit.type,
59774
+ label: clinePassWindowLabel(limit.type),
59775
+ percentUsed: limit.percentUsed,
59776
+ resetsAt: limit.resetsAt
59777
+ })),
59778
+ error: result.error,
59779
+ fetchedAt
59780
+ };
59781
+ } catch (error) {
59782
+ return {
59783
+ accountId: account.id,
59784
+ alias: account.alias,
59785
+ ok: false,
59786
+ windows: [],
59787
+ error: firstLine$2(error instanceof Error ? error.message : error, 240),
59788
+ fetchedAt
59789
+ };
59790
+ }
59791
+ }));
59792
+ return store.setUsage({ accounts: readings });
59793
+ };
59794
+ const status = async () => await getClinePassWebStatus(options, quotaRefresh);
59728
59795
  return ctx.webServer.register({
59729
59796
  kind: "prefix",
59730
59797
  path: CLINE_PASS_ROUTE_PREFIX,
@@ -59733,10 +59800,13 @@ function registerClinePassRoutes(ctx, options) {
59733
59800
  const path = url.pathname.replace(/^\/cline-pass\/api\/?/, "");
59734
59801
  const method = request.method ?? "GET";
59735
59802
  try {
59736
- if (path === "" || path === "status") return sendJson$2(response, 200, {
59737
- ok: true,
59738
- value: await status()
59739
- });
59803
+ if (path === "" || path === "status") {
59804
+ if (method === "GET" && usageStale(store.usage(), Date.now(), quotaTtlMs)) quotaRefresh.start(refreshUsage);
59805
+ return sendJson$2(response, 200, {
59806
+ ok: true,
59807
+ value: await status()
59808
+ });
59809
+ }
59740
59810
  if (path === "settings") {
59741
59811
  if (method !== "POST") return sendMethodNotAllowed$2(response);
59742
59812
  if (!isSameOriginMutation(request)) return sendJson$2(response, 403, {
@@ -60265,50 +60335,28 @@ function registerClinePassRoutes(ctx, options) {
60265
60335
  ok: false,
60266
60336
  error: "Cross-origin request rejected."
60267
60337
  });
60268
- const enabled = ((await accountPool.read().catch(() => null))?.accounts ?? []).filter((account) => isUsable$1(account, Date.now()));
60269
- if (enabled.length === 0) return sendJson$2(response, 400, {
60270
- ok: false,
60271
- error: "Every Cline Pass account is disabled, cooling down, or unusable. Enable one first."
60272
- });
60273
- const settings = await settingsStore.read();
60274
- const readings = await Promise.all(enabled.map(async (account) => {
60275
- const fetchedAt = Date.now();
60338
+ const outcome = {
60339
+ reading: null,
60340
+ cause: null
60341
+ };
60342
+ await quotaRefresh.run(async () => {
60276
60343
  try {
60277
- const credentials = await accountPool.getFreshCredential(account.id, fetchFn);
60278
- const baseURL = credentials.baseURL && credentials.baseURL.trim() !== "" ? credentials.baseURL.trim() : settings.baseURL;
60279
- const result = await fetchUsageLimits({
60280
- fetchFn,
60281
- baseURL,
60282
- apiKey: bearerFor$1(credentials)
60283
- });
60284
- return {
60285
- accountId: account.id,
60286
- alias: account.alias,
60287
- ok: result.ok,
60288
- windows: result.limits.map((limit) => ({
60289
- type: limit.type,
60290
- label: clinePassWindowLabel(limit.type),
60291
- percentUsed: limit.percentUsed,
60292
- resetsAt: limit.resetsAt
60293
- })),
60294
- error: result.error,
60295
- fetchedAt
60296
- };
60344
+ outcome.reading = await refreshUsage();
60297
60345
  } catch (error) {
60298
- return {
60299
- accountId: account.id,
60300
- alias: account.alias,
60301
- ok: false,
60302
- windows: [],
60303
- error: firstLine$2(error instanceof Error ? error.message : error, 240),
60304
- fetchedAt
60305
- };
60346
+ outcome.cause = error;
60347
+ throw error;
60306
60348
  }
60307
- }));
60349
+ });
60350
+ if (outcome.cause !== null) throw outcome.cause;
60351
+ const reading = outcome.reading;
60352
+ if (reading === null) return sendJson$2(response, 400, {
60353
+ ok: false,
60354
+ error: "Every Cline Pass account is disabled, cooling down, or unusable. Enable one first."
60355
+ });
60308
60356
  return sendJson$2(response, 200, {
60309
60357
  ok: true,
60310
60358
  value: {
60311
- usage: store.setUsage({ accounts: readings }),
60359
+ usage: reading,
60312
60360
  status: await status()
60313
60361
  }
60314
60362
  });
@@ -66441,6 +66489,16 @@ const AMR_API_BASE = "https://amr-api.open-design.ai/api/v1";
66441
66489
  const DEVICE_AUTHORIZATIONS_PATH = "/cli/device-authorizations";
66442
66490
  const WALLET_BALANCE_PATH = "/wallet/balance";
66443
66491
  /**
66492
+ * The account's plan + credits summary.
66493
+ *
66494
+ * The only endpoint that states the paid tier: `/me` carries a `plan` field, but
66495
+ * it answers `free` for a subscribed account (probed 2026-10-21 against a Go
66496
+ * account whose billing period was active), so it is a rough profile flag and
66497
+ * never the tier. This one reports `membershipTier` plus the credit buckets the
66498
+ * plan grants, the amounts consumed, and the current billing period.
66499
+ */
66500
+ const BILLING_SUMMARY_PATH = "/billing/summary";
66501
+ /**
66444
66502
  * What the create call says about this client. The service stores host /
66445
66503
  * profile / cliVersion per authorization (its console lists devices by them);
66446
66504
  * the profile vocabulary is 'prod' | 'test' | 'feature-test' | 'local' per the
@@ -67915,6 +67973,82 @@ async function fetchWalletBalance({ fetchFn, controlKey, apiBase = AMR_API_BASE,
67915
67973
  };
67916
67974
  }
67917
67975
  }
67976
+ function usdString(value) {
67977
+ return typeof value === "string" && /^-?\d+(?:\.\d+)?$/.test(value) ? value : null;
67978
+ }
67979
+ function creditString(value) {
67980
+ return typeof value === "string" && /^\d+$/.test(value) ? value : null;
67981
+ }
67982
+ function isoString(value) {
67983
+ return typeof value === "string" && Number.isFinite(Date.parse(value)) ? value : null;
67984
+ }
67985
+ function textString(value) {
67986
+ return typeof value === "string" ? value.trim() : "";
67987
+ }
67988
+ /**
67989
+ * Read one OAuth account's plan and credits with its control key.
67990
+ *
67991
+ * The summary is display data: a refusal is returned as data, never thrown, and
67992
+ * must never mark the account (billing 401/403 is display-only upstream —
67993
+ * OPEND-3553 — exactly like the wallet read). A summary with no
67994
+ * `membershipTier` is not treated as a plan: "the tier is unknown" and "the plan
67995
+ * is free" are different statements.
67996
+ */
67997
+ async function fetchBillingSummary({ fetchFn, controlKey, apiBase = AMR_API_BASE, signal, timeoutMs = 15e3 }) {
67998
+ const refusal = {
67999
+ ok: false,
68000
+ billing: null,
68001
+ error: ""
68002
+ };
68003
+ try {
68004
+ const result = await sendJSON$1(fetchFn, trimBase$1(apiBase) + BILLING_SUMMARY_PATH, {
68005
+ apiKey: controlKey,
68006
+ signal,
68007
+ timeoutMs
68008
+ });
68009
+ if (!result.ok) {
68010
+ const detail = firstMessage(result.json) || result.text.slice(0, 120);
68011
+ return {
68012
+ ...refusal,
68013
+ error: "the billing summary answered HTTP " + result.status + (detail === "" ? "" : ": " + detail)
68014
+ };
68015
+ }
68016
+ const body = isRecord$2(result.json) ? result.json : {};
68017
+ const plan = textString(body.membershipTier);
68018
+ if (plan === "") return {
68019
+ ...refusal,
68020
+ error: "the billing summary named no membershipTier"
68021
+ };
68022
+ const balances = isRecord$2(body.balances) ? body.balances : {};
68023
+ return {
68024
+ ok: true,
68025
+ billing: {
68026
+ plan,
68027
+ status: textString(body.subscriptionStatus),
68028
+ entitlementStatus: textString(body.subscriptionEntitlementStatus),
68029
+ billingInterval: textString(body.billingInterval),
68030
+ periodStart: isoString(body.subscriptionCurrentPeriodStart),
68031
+ periodEnd: isoString(body.subscriptionCurrentPeriodEnd),
68032
+ subscriptionCredits: creditString(balances.subscriptionCredits),
68033
+ rechargeCredits: creditString(balances.rechargeCredits),
68034
+ totalAvailableCredits: creditString(balances.totalAvailableCredits),
68035
+ subscriptionCreditsUsd: usdString(body.subscriptionCreditsUsd),
68036
+ rechargeCreditsUsd: usdString(body.rechargeCreditsUsd),
68037
+ totalAvailableCreditsUsd: usdString(body.totalAvailableCreditsUsd),
68038
+ totalConsumedUsd: usdString(body.totalConsumedUsd),
68039
+ todayConsumedUsd: usdString(body.todayConsumedUsd),
68040
+ usageCount: typeof body.usageCount === "number" && Number.isSafeInteger(body.usageCount) && body.usageCount >= 0 ? body.usageCount : null,
68041
+ updatedAt: isoString(body.updatedAt)
68042
+ },
68043
+ error: ""
68044
+ };
68045
+ } catch (error) {
68046
+ return {
68047
+ ...refusal,
68048
+ error: error instanceof Error ? error.message : String(error)
68049
+ };
68050
+ }
68051
+ }
67918
68052
  //#endregion
67919
68053
  //#region src/host/opendesign/mapper.ts
67920
68054
  /**
@@ -69124,14 +69258,26 @@ async function getOpenDesignWebStatus(options, usageStore) {
69124
69258
  const settings = await settingsStore.read().catch(() => settingsStore.status());
69125
69259
  const data = await accountPool.read().catch(() => null);
69126
69260
  const accounts = await accountPool.listAccounts().catch(() => []);
69261
+ const billedPlans = /* @__PURE__ */ new Map();
69262
+ if (usageStore !== void 0) for (const reading of usageStore.readings.values()) {
69263
+ const plan = reading.billing?.plan;
69264
+ if (plan !== void 0 && plan !== "") billedPlans.set(reading.accountId, plan);
69265
+ }
69266
+ const projectedAccounts = billedPlans.size === 0 ? accounts : accounts.map((account) => {
69267
+ const plan = billedPlans.get(account.id);
69268
+ return plan === void 0 ? account : {
69269
+ ...account,
69270
+ plan
69271
+ };
69272
+ });
69127
69273
  const now = Date.now();
69128
69274
  const pool = {
69129
- accounts,
69275
+ accounts: projectedAccounts,
69130
69276
  rotationStrategy: data?.rotationStrategy ?? "sequential",
69131
69277
  ...data?.activeAccountId === void 0 ? {} : { activeAccountId: data.activeAccountId }
69132
69278
  };
69133
69279
  const models = projectModels(settings);
69134
- const usable = accounts.some((account) => isUsable(account, now));
69280
+ const usable = projectedAccounts.some((account) => isUsable(account, now));
69135
69281
  const authenticated = usable && settings.enabled;
69136
69282
  return {
69137
69283
  enabled: settings.enabled,
@@ -69621,7 +69767,7 @@ function registerOpenDesignRoutes(ctx, options) {
69621
69767
  const readable = (data?.accounts ?? []).filter((account) => isUsable(account, now) && isOpenDesignOAuthCredentials(account.credentials));
69622
69768
  if (readable.length === 0) return sendJson(response, 400, {
69623
69769
  ok: false,
69624
- error: "No OAuth-signed-in account can be read. Wallet balances come from the control key a browser sign-in issues; a pasted API key has none."
69770
+ error: "No OAuth-signed-in account can be read. Plan, credits and wallet balances come from the control key a browser sign-in issues; a pasted API key has none."
69625
69771
  });
69626
69772
  const readings = await Promise.all(readable.map(async (account) => {
69627
69773
  const fetchedAt = Date.now();
@@ -69636,18 +69782,23 @@ function registerOpenDesignRoutes(ctx, options) {
69636
69782
  error: "no control key on this account",
69637
69783
  fetchedAt
69638
69784
  };
69639
- const result = await fetchWalletBalance({
69785
+ const [wallet, billing] = await Promise.all([fetchWalletBalance({
69640
69786
  fetchFn,
69641
69787
  controlKey
69642
- });
69788
+ }), fetchBillingSummary({
69789
+ fetchFn,
69790
+ controlKey
69791
+ })]);
69792
+ const balanceUsd = wallet.balanceUsd ?? billing.billing?.totalAvailableCreditsUsd ?? null;
69643
69793
  return {
69644
69794
  accountId: account.id,
69645
69795
  alias: account.alias,
69646
- ok: result.ok,
69647
- balanceUsd: result.balanceUsd,
69648
- updatedAt: result.updatedAt,
69649
- error: result.error,
69650
- fetchedAt
69796
+ ok: wallet.ok || billing.ok,
69797
+ balanceUsd,
69798
+ updatedAt: wallet.updatedAt,
69799
+ error: wallet.error,
69800
+ fetchedAt,
69801
+ ...billing.billing === null ? {} : { billing: billing.billing }
69651
69802
  };
69652
69803
  } catch (error) {
69653
69804
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"AntigravitySection.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravitySection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAiBvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAwBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAyiBnG"}
1
+ {"version":3,"file":"AntigravitySection.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravitySection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAkBvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAwBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAyiBnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClaudeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/claude/ClaudeSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAmCjF,wBAAgB,aAAa,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA6Z3G"}
1
+ {"version":3,"file":"ClaudeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/claude/ClaudeSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAoCjF,wBAAgB,aAAa,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA6Z3G"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClaudeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/claude/useClaudeSection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useClaudeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/claude/useClaudeSection.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,11 @@ export interface ClinePassComposerQuotaProps {
11
11
  *
12
12
  * Quota follows the ACCOUNT, and a pool has several. The badge therefore shows
13
13
  * the most-consumed window across the accounts the host has already read, which
14
- * is the one that will stop the next request first; it never triggers a quota
15
- * read of its own, so a poll cannot fan out one upstream call per account.
14
+ * is the one that will stop the next request first. Its own 60 s poll is a plain
15
+ * read, so a poll never fans out one upstream call per account; only an explicit
16
+ * click on the badge asks the host for the forced refresh, the same POST the
17
+ * card's own "refresh usage" button drives — which is exactly what the shared
18
+ * badge's `refresh` argument is for, and what this line used to drop.
16
19
  */
17
20
  export declare function ClinePassComposerQuota(props: ClinePassComposerQuotaProps): React.JSX.Element;
18
21
  /** The line's own number picker, exported so a test can pin the rule. */
@@ -1 +1 @@
1
- {"version":3,"file":"ClinePassComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassComposerQuota.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAkC,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,IAAI,IAAI,CAAA;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAS5F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAe3B"}
1
+ {"version":3,"file":"ClinePassComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassComposerQuota.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAkC,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAM9E,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,IAAI,IAAI,CAAA;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAS5F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAe3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClinePassSection.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAsBxE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAsDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAsyBjE"}
1
+ {"version":3,"file":"ClinePassSection.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/ClinePassSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAiChF,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAoDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA40BjE"}
@@ -10,6 +10,16 @@ export interface ClinePassPinResult {
10
10
  warnings: string[];
11
11
  status: ClinePassWebStatus;
12
12
  }
13
+ /**
14
+ * Whether the host is refreshing the quota behind this answer.
15
+ *
16
+ * The field is optional by contract, because a host built before it existed
17
+ * answers without it. Every caller only ever compares it to `true`, so "absent"
18
+ * and "false" read the same — nothing is in flight — and a stale host degrades to
19
+ * plain polling instead of crashing. Kept as one reader so that convention lives
20
+ * in a single place rather than being re-derived at each call site.
21
+ */
22
+ export declare function quotaRefreshingOf(status: ClinePassWebStatus): boolean;
13
23
  /**
14
24
  * The Cline Pass settings API, as the card uses it.
15
25
  *
@@ -17,7 +27,17 @@ export interface ClinePassPinResult {
17
27
  * section uses, so the shared account-pool card and this helper read alike.
18
28
  */
19
29
  export declare class ClinePassApi {
20
- status(): Promise<ClinePassWebStatus>;
30
+ /**
31
+ * One status read.
32
+ *
33
+ * A plain call is the GET the first paint, the 60 s poll and the composer
34
+ * badge use: it is cheap and never fans out one upstream request per account.
35
+ * `refresh` is the forced path — the same POST /usage the card's own button
36
+ * drives — and the host answers it with `{ usage, status }`; only the status
37
+ * half is returned, because every caller renders a status card rather than the
38
+ * raw quota payload.
39
+ */
40
+ status(refresh?: boolean): Promise<ClinePassWebStatus>;
21
41
  updateSettings(patch: ClinePassSettingsUpdateDto): Promise<ClinePassWebStatus>;
22
42
  accountAction(action: ClinePassAccountAction, body?: {
23
43
  accountId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/client/cline-pass/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/command-code/CommandCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAkCvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAsBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAqiBnG"}
1
+ {"version":3,"file":"CommandCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/command-code/CommandCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAmCvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAsBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAqiBnG"}
@@ -0,0 +1,21 @@
1
+ import type { LocaleRuntime } from '@deepseek-ai/dsh-client-locale/client';
2
+ /**
3
+ * Hand the client locale runtime to this module.
4
+ *
5
+ * Called once from the plugin entry, before any card mounts. Rendering without
6
+ * it (unit tests that mount a card bare) keeps the dictionary's own values,
7
+ * which is what those tests assert against.
8
+ *
9
+ * @param locale - the plugin context's locale runtime.
10
+ */
11
+ export declare function installLineLocale(locale: LocaleRuntime): void;
12
+ /**
13
+ * Dictionary-shaped view of one namespace, resolved through the active locale.
14
+ *
15
+ * @param ns - the namespace the card registered its dictionaries under.
16
+ * @param fallback - the card's own `zh` dictionary: source of the key set and
17
+ * of the value used when no locale service is installed.
18
+ * @returns the same key shape as `fallback`, with values read at render time.
19
+ */
20
+ export declare function useLineDict<D extends Record<string, string>>(ns: string, fallback: D): D;
21
+ //# sourceMappingURL=line-locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-locale.d.ts","sourceRoot":"","sources":["../../../../src/client/common/line-locale.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAa1E;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAU7D;AAkBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"GlmCodingPlanSection.d.ts","sourceRoot":"","sources":["../../../../src/client/glm-coding-plan/GlmCodingPlanSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,EAA2B,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAOtG,wBAAgB,oBAAoB,CAAC,EAAE,aAAa,EAAE,GAAE,yBAA8B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwazG"}
1
+ {"version":3,"file":"GlmCodingPlanSection.d.ts","sourceRoot":"","sources":["../../../../src/client/glm-coding-plan/GlmCodingPlanSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,EAA2B,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAQtG,wBAAgB,oBAAoB,CAAC,EAAE,aAAa,EAAE,GAAE,yBAA8B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwazG"}
@@ -384,8 +384,8 @@ export declare const dictionaries: {
384
384
  readonly quotaFactsScope: string;
385
385
  readonly composerLabel: string;
386
386
  };
387
- en: Record<"quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "expires" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "quotaSignedOut" | "modelChecklistCount" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "progress" | "pageDesc" | "modelsSection" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "quotaSection" | "quotaDesc" | "quotaEmpty" | "adoptedBadge" | "openAuthorizeUrl" | "authorizeUrl" | "loginComplete" | "manualPasteSection" | "manualPasteHint" | "manualPastePlaceholder" | "manualPasteSubmit" | "manualPasteSubmitting" | "testingConnection" | "testSuccess" | "testLatency" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "adopt" | "region" | "regionCn" | "regionIntl" | "regionHint" | "authorizing" | "loginIdle" | "loginHaveAccounts" | "loginPending" | "loginCompletedAt" | "loginCompleteNoAccount" | "loginError" | "loginRetryable" | "loginNotRetryable" | "pollEvery" | "loginExpiresAt" | "restartLogin" | "cancelLogin" | "cancelLoginBusy" | "manualPasteEmpty" | "adopting" | "adoptAdopted" | "adoptNoAttempt" | "adoptNoCredentialsFile" | "adoptSecretUnavailable" | "adoptDecryptFailed" | "adoptTokenExpired" | "adoptExchangeFailed" | "adoptNotAZcodeLogin" | "adoptFallback" | "testSuccessAccount" | "testSuccessModel" | "testFailedDetail" | "modelsUnavailable" | "dismiss" | "invalidCapacity" | "quotaRefresh" | "quotaPlan" | "quotaPlanLevel" | "quotaRenews" | "quotaReadAt" | "quotaSources" | "quotaRefreshingNote" | "quotaErrorLabel" | "quotaAllowance" | "quotaAllowancePlan" | "quotaAllowanceFreeTrial" | "quotaAllowanceUnknown" | "quotaAllowanceHint", string>;
388
- 'en-US': Record<"quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "expires" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "quotaSignedOut" | "modelChecklistCount" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "progress" | "pageDesc" | "modelsSection" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "quotaSection" | "quotaDesc" | "quotaEmpty" | "adoptedBadge" | "openAuthorizeUrl" | "authorizeUrl" | "loginComplete" | "manualPasteSection" | "manualPasteHint" | "manualPastePlaceholder" | "manualPasteSubmit" | "manualPasteSubmitting" | "testingConnection" | "testSuccess" | "testLatency" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "adopt" | "region" | "regionCn" | "regionIntl" | "regionHint" | "authorizing" | "loginIdle" | "loginHaveAccounts" | "loginPending" | "loginCompletedAt" | "loginCompleteNoAccount" | "loginError" | "loginRetryable" | "loginNotRetryable" | "pollEvery" | "loginExpiresAt" | "restartLogin" | "cancelLogin" | "cancelLoginBusy" | "manualPasteEmpty" | "adopting" | "adoptAdopted" | "adoptNoAttempt" | "adoptNoCredentialsFile" | "adoptSecretUnavailable" | "adoptDecryptFailed" | "adoptTokenExpired" | "adoptExchangeFailed" | "adoptNotAZcodeLogin" | "adoptFallback" | "testSuccessAccount" | "testSuccessModel" | "testFailedDetail" | "modelsUnavailable" | "dismiss" | "invalidCapacity" | "quotaRefresh" | "quotaPlan" | "quotaPlanLevel" | "quotaRenews" | "quotaReadAt" | "quotaSources" | "quotaRefreshingNote" | "quotaErrorLabel" | "quotaAllowance" | "quotaAllowancePlan" | "quotaAllowanceFreeTrial" | "quotaAllowanceUnknown" | "quotaAllowanceHint", string>;
387
+ en: Record<"quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "expires" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "quotaSignedOut" | "modelChecklistCount" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "progress" | "pageDesc" | "modelsSection" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "quotaSection" | "quotaDesc" | "quotaEmpty" | "adoptedBadge" | "openAuthorizeUrl" | "authorizeUrl" | "loginComplete" | "manualPasteSection" | "manualPasteHint" | "manualPastePlaceholder" | "manualPasteSubmit" | "manualPasteSubmitting" | "testingConnection" | "testSuccess" | "testLatency" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "region" | "regionCn" | "regionIntl" | "regionHint" | "authorizing" | "loginIdle" | "loginHaveAccounts" | "loginPending" | "loginCompletedAt" | "loginCompleteNoAccount" | "loginError" | "loginRetryable" | "loginNotRetryable" | "pollEvery" | "loginExpiresAt" | "restartLogin" | "cancelLogin" | "cancelLoginBusy" | "manualPasteEmpty" | "adopt" | "adopting" | "adoptAdopted" | "adoptNoAttempt" | "adoptNoCredentialsFile" | "adoptFallback" | "testSuccessAccount" | "testSuccessModel" | "testFailedDetail" | "modelsUnavailable" | "dismiss" | "invalidCapacity" | "quotaRefresh" | "quotaPlan" | "quotaRenews" | "quotaReadAt" | "quotaSources" | "quotaRefreshingNote" | "quotaErrorLabel" | "adoptSecretUnavailable" | "adoptDecryptFailed" | "adoptTokenExpired" | "adoptExchangeFailed" | "adoptNotAZcodeLogin" | "quotaPlanLevel" | "quotaAllowance" | "quotaAllowancePlan" | "quotaAllowanceFreeTrial" | "quotaAllowanceUnknown" | "quotaAllowanceHint", string>;
388
+ 'en-US': Record<"quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "expires" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "quotaSignedOut" | "modelChecklistCount" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "progress" | "pageDesc" | "modelsSection" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "quotaSection" | "quotaDesc" | "quotaEmpty" | "adoptedBadge" | "openAuthorizeUrl" | "authorizeUrl" | "loginComplete" | "manualPasteSection" | "manualPasteHint" | "manualPastePlaceholder" | "manualPasteSubmit" | "manualPasteSubmitting" | "testingConnection" | "testSuccess" | "testLatency" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "region" | "regionCn" | "regionIntl" | "regionHint" | "authorizing" | "loginIdle" | "loginHaveAccounts" | "loginPending" | "loginCompletedAt" | "loginCompleteNoAccount" | "loginError" | "loginRetryable" | "loginNotRetryable" | "pollEvery" | "loginExpiresAt" | "restartLogin" | "cancelLogin" | "cancelLoginBusy" | "manualPasteEmpty" | "adopt" | "adopting" | "adoptAdopted" | "adoptNoAttempt" | "adoptNoCredentialsFile" | "adoptFallback" | "testSuccessAccount" | "testSuccessModel" | "testFailedDetail" | "modelsUnavailable" | "dismiss" | "invalidCapacity" | "quotaRefresh" | "quotaPlan" | "quotaRenews" | "quotaReadAt" | "quotaSources" | "quotaRefreshingNote" | "quotaErrorLabel" | "adoptSecretUnavailable" | "adoptDecryptFailed" | "adoptTokenExpired" | "adoptExchangeFailed" | "adoptNotAZcodeLogin" | "quotaPlanLevel" | "quotaAllowance" | "quotaAllowancePlan" | "quotaAllowanceFreeTrial" | "quotaAllowanceUnknown" | "quotaAllowanceHint", string>;
389
389
  };
390
390
  export type GlmCodingPlanLocaleKey = keyof typeof zh;
391
391
  /** 一个配额窗口的键到「窗口长度(分钟)」的映射。 */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAenE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAM/D,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGtH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGlG,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAExH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM5G,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKxH,OAAO,EAA0D,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAElI,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG5G,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGhH,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG9F,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAMlH,OAAO,EAA6D,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExI,OAAO,QAAQ,kCAAkC,CAAC;IAChD;;;;;;;OAOG;IACH,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;QACrC,iBAAiB,EAAE,oBAAoB,CAAA;QACvC,YAAY,EAAE,eAAe,CAAA;QAC7B,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,eAAe,EAAE,iBAAiB,CAAA;QAClC,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,qBAAqB,EAAE,sBAAsB,CAAA;QAC7C,YAAY,EAAE,eAAe,CAAA;QAC7B,eAAe,EAAE,iBAAiB,CAAA;QAClC,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,WAAW,EAAE,cAAc,CAAA;QAC3B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,sBAAsB,EAAE,wBAAwB,CAAA;KACjD;CACF;AAED,eAAO,MAAM,MAAM,UAQlB,CAAA;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAqN9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAenE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ/D,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGtH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGlG,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAExH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM5G,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKxH,OAAO,EAA0D,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAElI,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG5G,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGhH,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG9F,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAMlH,OAAO,EAA6D,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExI,OAAO,QAAQ,kCAAkC,CAAC;IAChD;;;;;;;OAOG;IACH,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;QACrC,iBAAiB,EAAE,oBAAoB,CAAA;QACvC,YAAY,EAAE,eAAe,CAAA;QAC7B,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,eAAe,EAAE,iBAAiB,CAAA;QAClC,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,qBAAqB,EAAE,sBAAsB,CAAA;QAC7C,YAAY,EAAE,eAAe,CAAA;QAC7B,eAAe,EAAE,iBAAiB,CAAA;QAClC,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,WAAW,EAAE,cAAc,CAAA;QAC3B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,sBAAsB,EAAE,wBAAwB,CAAA;KACjD;CACF;AAED,eAAO,MAAM,MAAM,UAQlB,CAAA;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CA2N9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"KimiCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAsBvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAoCD,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA6qBhG"}
1
+ {"version":3,"file":"KimiCodeSection.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiCodeSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAuBvE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAuCD,wBAAgB,eAAe,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA6qBhG"}
@@ -1 +1 @@
1
- {"version":3,"file":"KimiModelCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiModelCapabilities.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAe9E,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAkEhG"}
1
+ {"version":3,"file":"KimiModelCapabilities.d.ts","sourceRoot":"","sources":["../../../../src/client/kimi-code/KimiModelCapabilities.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAc9E,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAmEhG"}
@@ -460,8 +460,8 @@ export declare const dictionaries: {
460
460
  readonly quotaFactsScope: string;
461
461
  readonly composerLabel: string;
462
462
  };
463
- en: Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "cacheTtl" | "cacheTtlHint" | "cacheTtl1h" | "cacheTtl5m" | "effortLow" | "effortHigh" | "effortMax" | "resetAt" | "copied" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "region" | "quotaPlan" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "cacheTtlDefault" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheHint" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "requests", string>;
464
- 'en-US': Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "cacheTtl" | "cacheTtlHint" | "cacheTtl1h" | "cacheTtl5m" | "effortLow" | "effortHigh" | "effortMax" | "resetAt" | "copied" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "region" | "quotaPlan" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "cacheTtlDefault" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheHint" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "requests", string>;
463
+ en: Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "cacheTtl" | "cacheTtlHint" | "cacheTtl1h" | "cacheTtl5m" | "effortLow" | "effortHigh" | "effortMax" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "cacheTtlDefault" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheHint" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "requests", string>;
464
+ 'en-US': Record<"account" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "plan" | "expires" | "signIn" | "signInAgain" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "contextWindowResetAllConfirm" | "save" | "refreshQuota" | "accountPool" | "addAccount" | "accountCount" | "primaryAccount" | "activeAccount" | "setPrimary" | "deleteAccount" | "cooling" | "cooldownLeft" | "cooldownRemaining" | "cooldownRemainingSeconds" | "clearCooldown" | "needsRelogin" | "strategySequential" | "strategyRoundRobin" | "strategySticky" | "noAccounts" | "email" | "lastUsed" | "accountQuota" | "quotaNone" | "quotaSnapshot" | "quotaResets" | "quotaExhausted" | "quotaWindow" | "quotaUsed" | "quotaFactsScope" | "composerLabel" | "pageDesc" | "signingIn" | "modelsSection" | "enhanced" | "defaultReasoningEffort" | "defaultReasoningEffortHint" | "defaultEffortAuto" | "contextWindowSection" | "contextWindowHint" | "contextWindowNoneEnabled" | "saved" | "saving" | "cacheSection" | "cacheDesc" | "cacheEmpty" | "cacheHitRatio" | "cacheCached" | "cacheFresh" | "cacheRequests" | "cacheDriftTools" | "quotaSection" | "quotaDesc" | "refreshingQuota" | "quotaEmpty" | "updatedAt" | "loginFailed" | "planUnknown" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "refreshCatalog" | "refreshingCatalog" | "cacheTtl" | "cacheTtlHint" | "cacheTtl1h" | "cacheTtl5m" | "effortLow" | "effortHigh" | "effortMax" | "resetAt" | "copied" | "region" | "quotaPlan" | "authenticatedAt" | "openSignInPage" | "wireAnthropic" | "wireOpenai" | "nickname" | "regionMainland" | "regionGlobal" | "refreshRejected" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "requestingCode" | "oauthHost" | "codingEndpoint" | "capVideo" | "capDynamicTools" | "capImageOnly" | "capNone" | "capVideoFootnote" | "capabilitiesTitle" | "capColMedia" | "capColTools" | "capColNotes" | "capPlan" | "capInputCap" | "capNoTools" | "speedRegular" | "speedHighspeed" | "quotaCost" | "minimumPlan" | "cacheTtlDefault" | "effortNone" | "contextWindowPlan" | "cacheOutput" | "cacheHint" | "cacheExpired" | "cacheDrift" | "cacheDriftFirst" | "cacheDriftStable" | "cacheDriftSystemPrompt" | "cacheDriftCacheKey" | "cacheDriftColdKey" | "preserveThinking" | "preserveOn" | "preserveOff" | "outputCap" | "quotaWallet" | "quotaWalletLimit" | "quotaWalletUsed" | "requests", string>;
465
465
  };
466
466
  export type KimiCodeLocaleKey = keyof typeof zh;
467
467
  //# sourceMappingURL=locales.d.ts.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Russian wording of the labels every provider tab's account-pool card renders.
3
+ *
4
+ * Same role as `common/account-pool-labels.ts` on the `zh`/`en` side: one shared
5
+ * set, so the twelve tabs cannot drift apart in wording, ordering or meaning.
6
+ * Each Russian namespace spreads the subset it needs and may override keys that
7
+ * would be untrue for its line (a pasted API key never expires, for instance).
8
+ */
9
+ import type { AccountPoolLabels } from '../common/account-pool-labels.ts';
10
+ export declare const accountPoolRu: AccountPoolLabels;
11
+ //# sourceMappingURL=account-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-pool.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/account-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAEzE,eAAO,MAAM,aAAa,EAAE,iBAiC3B,CAAA"}