@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
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Russian wording for the Antigravity namespace.
3
+ *
4
+ * Key set and order follow the `zh` object key for key; the meaning is taken
5
+ * from `en`. The account-pool subset comes from `account-pool.ts` and is
6
+ * repeated here only because the source re-lists it in place.
7
+ */
8
+ import type { AntigravityLocaleKey } from '../antigravity/locales.ts';
9
+ export declare const dictionary: Record<AntigravityLocaleKey, string>;
10
+ //# sourceMappingURL=antigravity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/antigravity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CA6E3D,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ClaudeLocaleKey } from '../claude/locales.ts';
2
+ export declare const dictionary: Record<ClaudeLocaleKey, string>;
3
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/claude.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAsItD,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Russian dictionary for the Cline Pass tab.
3
+ *
4
+ * Mirrors `cline-pass/locales.ts` key for key, wording taken from `en`. The
5
+ * shared account-pool card supplies its labels; the two overrides the source
6
+ * makes (a Cline Pass key never expires and is replaced rather than re-signed-in)
7
+ * are kept here as well.
8
+ */
9
+ import type { ClinePassLocaleKey } from '../cline-pass/locales.ts';
10
+ export declare const dictionary: Record<ClinePassLocaleKey, string>;
11
+ //# sourceMappingURL=cline-pass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-pass.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/cline-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAGlE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAwJzD,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Russian wording for the Command Code namespace.
3
+ *
4
+ * Key set and order follow the `zh` object key for key; the meaning is taken
5
+ * from `en`. The account-pool subset comes from `account-pool.ts`.
6
+ */
7
+ import type { CommandCodeLocaleKey } from '../command-code/locales.ts';
8
+ export declare const dictionary: Record<CommandCodeLocaleKey, string>;
9
+ //# sourceMappingURL=command-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/command-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAGtE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAmE3D,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Russian wording for the GLM Coding Plan namespace.
3
+ *
4
+ * Key set and order follow the `zh` object key for key; the meaning is taken
5
+ * from `en`. Shared account-pool labels come from `account-pool.ts` so this
6
+ * line cannot drift from the other provider tabs.
7
+ */
8
+ import type { GlmCodingPlanLocaleKey } from '../glm-coding-plan/locales.ts';
9
+ export declare const dictionary: Record<GlmCodingPlanLocaleKey, string>;
10
+ //# sourceMappingURL=glm-coding-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glm-coding-plan.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/glm-coding-plan.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAG3E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAsG7D,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { LocaleKey } from '../locales.ts';
2
+ export declare const dictionary: Record<LocaleKey, string>;
3
+ //# sourceMappingURL=hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/hub.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAmLhD,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Russian language pack for this plugin's own settings surface.
3
+ *
4
+ * `@deepseek-ai/dsh-client-locale` has one registration form for a whole
5
+ * namespace-bilingual dictionary (`register(ns, { zh, en })`, both shipped
6
+ * locales required) and a single-locale form for everything a language pack
7
+ * contributes. Russian goes through the second path: the language definition
8
+ * first, then one dictionary per namespace.
9
+ *
10
+ * The declared fallback is `en`, so a key this pack misses reads as English
11
+ * rather than as a raw key name, and the harness's own UI (which ships only
12
+ * `zh`/`en`) keeps speaking English underneath — a native Russian DSH locale
13
+ * would be a separate pack of its own.
14
+ */
15
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
16
+ /** Language id of this pack: the value stored as `locale.preference`. */
17
+ export declare const RU_LOCALE = "ru";
18
+ /**
19
+ * Register the Russian language and every dictionary it covers.
20
+ *
21
+ * The runtime lives in `locale`, which the client plugin already injects, so
22
+ * this cannot be mounted without it.
23
+ *
24
+ * @param ctx - client plugin context owning the locale service.
25
+ */
26
+ export declare function installRussianLocale(ctx: ClientContext): void;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA6BnE,yEAAyE;AACzE,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAmD7D"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Russian dictionary for the Kimi Code tab.
3
+ *
4
+ * Mirrors `kimi-code/locales.ts`: the same keys in the same order, wording taken
5
+ * from `en`. The account-pool card is shared, so its labels come from
6
+ * `./account-pool.ts` rather than being restated here.
7
+ */
8
+ import type { KimiCodeLocaleKey } from '../kimi-code/locales.ts';
9
+ export declare const dictionary: Record<KimiCodeLocaleKey, string>;
10
+ //# sourceMappingURL=kimi-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/kimi-code.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CA2HxD,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Russian dictionary for the MiniMax Code namespace.
3
+ *
4
+ * Key set and order mirror `minimax-code/locales.ts` `zh`; the meaning comes from
5
+ * `en`, which is the source of truth. Placeholders are kept verbatim.
6
+ */
7
+ import type { MinimaxCodeLocaleKey } from '../minimax-code/locales.ts';
8
+ export declare const dictionary: Record<MinimaxCodeLocaleKey, string>;
9
+ //# sourceMappingURL=minimax-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/minimax-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAGtE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAqM3D,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Russian wording for the Ollama namespace.
3
+ *
4
+ * Key set and order follow the `zh` object key for key; the meaning is taken
5
+ * from `en`. Shared account-pool labels come from `account-pool.ts`; only the
6
+ * keys this line overrides are repeated here.
7
+ */
8
+ import type { OllamaLocaleKey } from '../ollama/locales.ts';
9
+ export declare const dictionary: Record<OllamaLocaleKey, string>;
10
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAG3D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAyDtD,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Russian wording for the OpenDesign namespace.
3
+ *
4
+ * Key set and order follow the `zh` object key for key; the meaning is taken
5
+ * from `en`. Shared account-pool labels come from `account-pool.ts`; only the
6
+ * keys this line overrides are repeated here.
7
+ */
8
+ import type { OpenDesignLocaleKey } from '../opendesign/locales.ts';
9
+ export declare const dictionary: Record<OpenDesignLocaleKey, string>;
10
+ //# sourceMappingURL=opendesign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opendesign.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/opendesign.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAGnE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAyG1D,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Russian dictionary for the progress-updates namespace.
3
+ *
4
+ * Key set and order mirror the `zh` source; meaning follows `en`.
5
+ */
6
+ import type { ProgressUpdatesLocaleKey } from '../progress-updates/locales.ts';
7
+ export declare const dictionary: Record<ProgressUpdatesLocaleKey, string>;
8
+ //# sourceMappingURL=progress-updates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-updates.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/progress-updates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE9E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CA6B/D,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Russian dictionary for the Qoder (subscription) tab.
3
+ *
4
+ * Mirrors `qoder/locales.ts` key for key, wording taken from `en`. The three
5
+ * one-line model-row labels lead, then the shared account-pool card, and the two
6
+ * labels the Qoder card rewrites (the composer badge and the window fallback) are
7
+ * overridden at the tail, exactly where the source rewrites them.
8
+ */
9
+ import type { QoderLocaleKey } from '../qoder/locales.ts';
10
+ export declare const dictionary: Record<QoderLocaleKey, string>;
11
+ //# sourceMappingURL=qoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qoder.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/qoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAkIrD,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Russian dictionary for the Step Code namespace.
3
+ *
4
+ * Key set and order mirror `step-code/locales.ts` `zh`; the meaning comes from
5
+ * `en`, which is the source of truth. Placeholders are kept verbatim.
6
+ */
7
+ import type { StepCodeLocaleKey } from '../step-code/locales.ts';
8
+ export declare const dictionary: Record<StepCodeLocaleKey, string>;
9
+ //# sourceMappingURL=step-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-code.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/step-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAkLxD,CAAA"}
@@ -679,8 +679,8 @@ export declare const dictionaries: {
679
679
  readonly quotaUsed: string;
680
680
  readonly quotaFactsScope: string;
681
681
  };
682
- en: Record<"account" | "quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "expires" | "signIn" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "unknown" | "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" | "saving" | "quotaSection" | "resetUnavailable" | "loginFailed" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "capImage" | "copied" | "openSignInPage" | "region" | "regionCn" | "testSuccessModel" | "modelsUnavailable" | "invalidCapacity" | "quotaRefresh" | "expiresAt" | "regionGlobal" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "accountLabel" | "expiresRemaining" | "expiresExpired" | "expiresHint" | "codeMinutes" | "loginExpired" | "loginDenied" | "logoutOwnedByApp" | "dailyCheckin" | "checkinHint" | "checkinAuto" | "checkinToday" | "checkinSkipped" | "checkinFailed" | "checkinStreak" | "checkinClaimed" | "checkinLastRun" | "checkinNever" | "checkinNow" | "checkinRunning" | "quotaUnavailable" | "quotaNeedsApiKey" | "quotaUnreachable" | "quotaTokenExpired" | "quotaStale" | "quotaUsedShare" | "resetSection" | "resetHint" | "resetConfirm" | "resetAvailable" | "resetNone" | "resetExpires" | "resetUse" | "resetUsing" | "resetRefresh" | "resetRefreshing" | "resetFlowTitle" | "resetFlowEmpty" | "resetFlowGrant" | "resetFlowUse" | "resetOutcomeSuccess" | "resetOutcomeReplayed" | "resetOutcomeUncertain" | "resetOutcomeExpired" | "resetOutcomeNotFound" | "thinkingAlwaysOn" | "thinkingToggle" | "thinkingForced" | "capText" | "videoToolTitle" | "videoToolRunning" | "videoToolDone" | "videoToolFailed" | "videoGenerating" | "videoReading" | "videoTooLarge" | "videoUnreadable" | "videoUnplayable" | "videoNoMeta" | "videoChannelOff" | "videoFailed" | "videoSize" | "videoTitle" | "videoCommandLabel" | "videoCommandDesc" | "videoPresetGroup" | "videoPresetCustom" | "videoPresetCustomDesc" | "videoDialogTitle" | "videoDialogDesc" | "videoPromptLabel" | "videoPromptPlaceholder" | "videoPromptRequired" | "videoModelLabel" | "videoRatioLabel" | "videoRatioLockedKeyframes" | "videoRatioLockedTextOnly" | "videoDurationLabel" | "videoDurationUnit" | "videoResolutionLabel" | "videoWatermarkLabel" | "videoMediaSection" | "videoMediaHint" | "videoInputImageLabel" | "videoLastFrameLabel" | "videoReferenceImagesLabel" | "videoReferenceVideosLabel" | "videoReferenceVideoDurationsLabel" | "videoReferenceAudiosLabel" | "videoMediaUnsupported" | "videoLastFrameUnsupported" | "videoTooManyImages" | "videoTooManyVideos" | "videoTooManyAudios" | "videoTooManyTotal" | "videoDurationInvalid" | "videoMediaBrowse" | "videoMediaAdd" | "videoMediaAddMore" | "videoMediaManualPlaceholder" | "videoMediaSuggestLabel" | "videoMediaSuggestFolder" | "videoMediaPaste" | "videoMediaDragHint" | "videoMediaDragActive" | "videoMediaRemove" | "videoMediaEmpty" | "videoMediaUrlRejected" | "videoReferenceVideoDurationOne" | "videoReferenceVideoDurationPlaceholder" | "videoReferenceVideoDurationWhy" | "videoUrlNeedsDuration" | "videoMediaNoPath" | "videoTierLabel" | "videoAdvanced" | "videoPromptFromComposer" | "videoSubmit" | "videoCancel" | "videoClose" | "videoDraftFilled" | "videoDraftFailed" | "videoNotMinimax" | "videoDefaultsSection" | "videoDefaultsHint" | "videoDefaultsSaved" | "videoHistorySection" | "videoHistoryHint" | "videoHistoryEmpty" | "videoHistoryUnavailable" | "videoHistoryRefresh" | "videoHistoryRefreshing" | "videoHistoryAt" | "videoHistoryMeta" | "videoHistoryNoRatio" | "videoHistoryStorage" | "videoHistoryEncrypted" | "videoHistoryPlain", string>;
683
- 'en-US': Record<"account" | "quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "expires" | "signIn" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "unknown" | "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" | "saving" | "quotaSection" | "resetUnavailable" | "loginFailed" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "capImage" | "copied" | "openSignInPage" | "region" | "regionCn" | "testSuccessModel" | "modelsUnavailable" | "invalidCapacity" | "quotaRefresh" | "expiresAt" | "regionGlobal" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "accountLabel" | "expiresRemaining" | "expiresExpired" | "expiresHint" | "codeMinutes" | "loginExpired" | "loginDenied" | "logoutOwnedByApp" | "dailyCheckin" | "checkinHint" | "checkinAuto" | "checkinToday" | "checkinSkipped" | "checkinFailed" | "checkinStreak" | "checkinClaimed" | "checkinLastRun" | "checkinNever" | "checkinNow" | "checkinRunning" | "quotaUnavailable" | "quotaNeedsApiKey" | "quotaUnreachable" | "quotaTokenExpired" | "quotaStale" | "quotaUsedShare" | "resetSection" | "resetHint" | "resetConfirm" | "resetAvailable" | "resetNone" | "resetExpires" | "resetUse" | "resetUsing" | "resetRefresh" | "resetRefreshing" | "resetFlowTitle" | "resetFlowEmpty" | "resetFlowGrant" | "resetFlowUse" | "resetOutcomeSuccess" | "resetOutcomeReplayed" | "resetOutcomeUncertain" | "resetOutcomeExpired" | "resetOutcomeNotFound" | "thinkingAlwaysOn" | "thinkingToggle" | "thinkingForced" | "capText" | "videoToolTitle" | "videoToolRunning" | "videoToolDone" | "videoToolFailed" | "videoGenerating" | "videoReading" | "videoTooLarge" | "videoUnreadable" | "videoUnplayable" | "videoNoMeta" | "videoChannelOff" | "videoFailed" | "videoSize" | "videoTitle" | "videoCommandLabel" | "videoCommandDesc" | "videoPresetGroup" | "videoPresetCustom" | "videoPresetCustomDesc" | "videoDialogTitle" | "videoDialogDesc" | "videoPromptLabel" | "videoPromptPlaceholder" | "videoPromptRequired" | "videoModelLabel" | "videoRatioLabel" | "videoRatioLockedKeyframes" | "videoRatioLockedTextOnly" | "videoDurationLabel" | "videoDurationUnit" | "videoResolutionLabel" | "videoWatermarkLabel" | "videoMediaSection" | "videoMediaHint" | "videoInputImageLabel" | "videoLastFrameLabel" | "videoReferenceImagesLabel" | "videoReferenceVideosLabel" | "videoReferenceVideoDurationsLabel" | "videoReferenceAudiosLabel" | "videoMediaUnsupported" | "videoLastFrameUnsupported" | "videoTooManyImages" | "videoTooManyVideos" | "videoTooManyAudios" | "videoTooManyTotal" | "videoDurationInvalid" | "videoMediaBrowse" | "videoMediaAdd" | "videoMediaAddMore" | "videoMediaManualPlaceholder" | "videoMediaSuggestLabel" | "videoMediaSuggestFolder" | "videoMediaPaste" | "videoMediaDragHint" | "videoMediaDragActive" | "videoMediaRemove" | "videoMediaEmpty" | "videoMediaUrlRejected" | "videoReferenceVideoDurationOne" | "videoReferenceVideoDurationPlaceholder" | "videoReferenceVideoDurationWhy" | "videoUrlNeedsDuration" | "videoMediaNoPath" | "videoTierLabel" | "videoAdvanced" | "videoPromptFromComposer" | "videoSubmit" | "videoCancel" | "videoClose" | "videoDraftFilled" | "videoDraftFailed" | "videoNotMinimax" | "videoDefaultsSection" | "videoDefaultsHint" | "videoDefaultsSaved" | "videoHistorySection" | "videoHistoryHint" | "videoHistoryEmpty" | "videoHistoryUnavailable" | "videoHistoryRefresh" | "videoHistoryRefreshing" | "videoHistoryAt" | "videoHistoryMeta" | "videoHistoryNoRatio" | "videoHistoryStorage" | "videoHistoryEncrypted" | "videoHistoryPlain", string>;
682
+ en: Record<"account" | "quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "expires" | "signIn" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "unknown" | "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" | "saving" | "quotaSection" | "resetUnavailable" | "loginFailed" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "capImage" | "copied" | "region" | "regionCn" | "testSuccessModel" | "modelsUnavailable" | "invalidCapacity" | "quotaRefresh" | "openSignInPage" | "regionGlobal" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "accountLabel" | "expiresAt" | "expiresRemaining" | "expiresExpired" | "expiresHint" | "codeMinutes" | "loginExpired" | "loginDenied" | "logoutOwnedByApp" | "dailyCheckin" | "checkinHint" | "checkinAuto" | "checkinToday" | "checkinSkipped" | "checkinFailed" | "checkinStreak" | "checkinClaimed" | "checkinLastRun" | "checkinNever" | "checkinNow" | "checkinRunning" | "quotaUnavailable" | "quotaNeedsApiKey" | "quotaUnreachable" | "quotaTokenExpired" | "quotaStale" | "quotaUsedShare" | "resetSection" | "resetHint" | "resetConfirm" | "resetAvailable" | "resetNone" | "resetExpires" | "resetUse" | "resetUsing" | "resetRefresh" | "resetRefreshing" | "resetFlowTitle" | "resetFlowEmpty" | "resetFlowGrant" | "resetFlowUse" | "resetOutcomeSuccess" | "resetOutcomeReplayed" | "resetOutcomeUncertain" | "resetOutcomeExpired" | "resetOutcomeNotFound" | "thinkingAlwaysOn" | "thinkingToggle" | "thinkingForced" | "capText" | "videoToolTitle" | "videoToolRunning" | "videoToolDone" | "videoToolFailed" | "videoGenerating" | "videoReading" | "videoTooLarge" | "videoUnreadable" | "videoUnplayable" | "videoNoMeta" | "videoChannelOff" | "videoFailed" | "videoSize" | "videoTitle" | "videoCommandLabel" | "videoCommandDesc" | "videoPresetGroup" | "videoPresetCustom" | "videoPresetCustomDesc" | "videoDialogTitle" | "videoDialogDesc" | "videoPromptLabel" | "videoPromptPlaceholder" | "videoPromptRequired" | "videoModelLabel" | "videoRatioLabel" | "videoRatioLockedKeyframes" | "videoRatioLockedTextOnly" | "videoDurationLabel" | "videoDurationUnit" | "videoResolutionLabel" | "videoWatermarkLabel" | "videoMediaSection" | "videoMediaHint" | "videoInputImageLabel" | "videoLastFrameLabel" | "videoReferenceImagesLabel" | "videoReferenceVideosLabel" | "videoReferenceVideoDurationsLabel" | "videoReferenceAudiosLabel" | "videoMediaUnsupported" | "videoLastFrameUnsupported" | "videoTooManyImages" | "videoTooManyVideos" | "videoTooManyAudios" | "videoTooManyTotal" | "videoDurationInvalid" | "videoMediaBrowse" | "videoMediaAdd" | "videoMediaAddMore" | "videoMediaManualPlaceholder" | "videoMediaSuggestLabel" | "videoMediaSuggestFolder" | "videoMediaPaste" | "videoMediaDragHint" | "videoMediaDragActive" | "videoMediaRemove" | "videoMediaEmpty" | "videoMediaUrlRejected" | "videoReferenceVideoDurationOne" | "videoReferenceVideoDurationPlaceholder" | "videoReferenceVideoDurationWhy" | "videoUrlNeedsDuration" | "videoMediaNoPath" | "videoTierLabel" | "videoAdvanced" | "videoPromptFromComposer" | "videoSubmit" | "videoCancel" | "videoClose" | "videoDraftFilled" | "videoDraftFailed" | "videoNotMinimax" | "videoDefaultsSection" | "videoDefaultsHint" | "videoDefaultsSaved" | "videoHistorySection" | "videoHistoryHint" | "videoHistoryEmpty" | "videoHistoryUnavailable" | "videoHistoryRefresh" | "videoHistoryRefreshing" | "videoHistoryAt" | "videoHistoryMeta" | "videoHistoryNoRatio" | "videoHistoryStorage" | "videoHistoryEncrypted" | "videoHistoryPlain", string>;
683
+ 'en-US': Record<"account" | "quotaRefreshing" | "rotationStrategy" | "accountId" | "relogin" | "tokens" | "title" | "signedOut" | "signedIn" | "expires" | "signIn" | "signOut" | "loading" | "connection" | "testConnection" | "selectAll" | "unselectAll" | "modelsHint" | "contextWindowReset" | "contextWindowResetAll" | "save" | "unknown" | "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" | "saving" | "quotaSection" | "resetUnavailable" | "loginFailed" | "cancelSignIn" | "testingConnection" | "testSuccess" | "testFailed" | "routeOwned" | "routeConflict" | "capImage" | "copied" | "region" | "regionCn" | "testSuccessModel" | "modelsUnavailable" | "invalidCapacity" | "quotaRefresh" | "openSignInPage" | "regionGlobal" | "deviceCodeSection" | "deviceCodeHint" | "copyCode" | "userCode" | "codeExpires" | "waitingAuthorization" | "accountLabel" | "expiresAt" | "expiresRemaining" | "expiresExpired" | "expiresHint" | "codeMinutes" | "loginExpired" | "loginDenied" | "logoutOwnedByApp" | "dailyCheckin" | "checkinHint" | "checkinAuto" | "checkinToday" | "checkinSkipped" | "checkinFailed" | "checkinStreak" | "checkinClaimed" | "checkinLastRun" | "checkinNever" | "checkinNow" | "checkinRunning" | "quotaUnavailable" | "quotaNeedsApiKey" | "quotaUnreachable" | "quotaTokenExpired" | "quotaStale" | "quotaUsedShare" | "resetSection" | "resetHint" | "resetConfirm" | "resetAvailable" | "resetNone" | "resetExpires" | "resetUse" | "resetUsing" | "resetRefresh" | "resetRefreshing" | "resetFlowTitle" | "resetFlowEmpty" | "resetFlowGrant" | "resetFlowUse" | "resetOutcomeSuccess" | "resetOutcomeReplayed" | "resetOutcomeUncertain" | "resetOutcomeExpired" | "resetOutcomeNotFound" | "thinkingAlwaysOn" | "thinkingToggle" | "thinkingForced" | "capText" | "videoToolTitle" | "videoToolRunning" | "videoToolDone" | "videoToolFailed" | "videoGenerating" | "videoReading" | "videoTooLarge" | "videoUnreadable" | "videoUnplayable" | "videoNoMeta" | "videoChannelOff" | "videoFailed" | "videoSize" | "videoTitle" | "videoCommandLabel" | "videoCommandDesc" | "videoPresetGroup" | "videoPresetCustom" | "videoPresetCustomDesc" | "videoDialogTitle" | "videoDialogDesc" | "videoPromptLabel" | "videoPromptPlaceholder" | "videoPromptRequired" | "videoModelLabel" | "videoRatioLabel" | "videoRatioLockedKeyframes" | "videoRatioLockedTextOnly" | "videoDurationLabel" | "videoDurationUnit" | "videoResolutionLabel" | "videoWatermarkLabel" | "videoMediaSection" | "videoMediaHint" | "videoInputImageLabel" | "videoLastFrameLabel" | "videoReferenceImagesLabel" | "videoReferenceVideosLabel" | "videoReferenceVideoDurationsLabel" | "videoReferenceAudiosLabel" | "videoMediaUnsupported" | "videoLastFrameUnsupported" | "videoTooManyImages" | "videoTooManyVideos" | "videoTooManyAudios" | "videoTooManyTotal" | "videoDurationInvalid" | "videoMediaBrowse" | "videoMediaAdd" | "videoMediaAddMore" | "videoMediaManualPlaceholder" | "videoMediaSuggestLabel" | "videoMediaSuggestFolder" | "videoMediaPaste" | "videoMediaDragHint" | "videoMediaDragActive" | "videoMediaRemove" | "videoMediaEmpty" | "videoMediaUrlRejected" | "videoReferenceVideoDurationOne" | "videoReferenceVideoDurationPlaceholder" | "videoReferenceVideoDurationWhy" | "videoUrlNeedsDuration" | "videoMediaNoPath" | "videoTierLabel" | "videoAdvanced" | "videoPromptFromComposer" | "videoSubmit" | "videoCancel" | "videoClose" | "videoDraftFilled" | "videoDraftFailed" | "videoNotMinimax" | "videoDefaultsSection" | "videoDefaultsHint" | "videoDefaultsSaved" | "videoHistorySection" | "videoHistoryHint" | "videoHistoryEmpty" | "videoHistoryUnavailable" | "videoHistoryRefresh" | "videoHistoryRefreshing" | "videoHistoryAt" | "videoHistoryMeta" | "videoHistoryNoRatio" | "videoHistoryStorage" | "videoHistoryEncrypted" | "videoHistoryPlain", string>;
684
684
  };
685
685
  export type MinimaxCodeLocaleKey = keyof typeof zh;
686
686
  //# sourceMappingURL=locales.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OllamaSection.d.ts","sourceRoot":"","sources":["../../../../src/client/ollama/OllamaSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA6B/D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAuR9D"}
1
+ {"version":3,"file":"OllamaSection.d.ts","sourceRoot":"","sources":["../../../../src/client/ollama/OllamaSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA8B/D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAuR9D"}
@@ -9,9 +9,10 @@ interface Props {
9
9
  * The account card, its badges and the rotation picker are the shared
10
10
  * {@link AccountPoolSection}, so this line looks like every other provider tab
11
11
  * by construction. What is written here is only what is genuinely OpenDesign's:
12
- * pasting a console-issued API key and the catalog sync. There is deliberately
13
- * no quota block: the gateway answers an API key no balance, and a card that
14
- * drew one would be inventing it.
12
+ * pasting a console-issued API key, the catalog sync, and the plan/credit card
13
+ * fed by the billing summary. That summary needs a control key, which only a
14
+ * browser sign-in issues: a pasted key gets the explanation, never an invented
15
+ * figure.
15
16
  */
16
17
  export declare function OpenDesignSection(props: Props): React.ReactElement;
17
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"OpenDesignSection.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/OpenDesignSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAiBxE,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAukBlE"}
1
+ {"version":3,"file":"OpenDesignSection.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/OpenDesignSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAoBhF,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AA4ID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA0mBlE"}
@@ -71,18 +71,29 @@ export declare const zh: {
71
71
  readonly saveSettings: "保存设置";
72
72
  readonly savingSettings: "保存中...";
73
73
  readonly limitsSection: "说明";
74
- readonly usageSection: "钱包余额";
75
- readonly usageHint: "余额属于账号。浏览器授权登录的账号带控制 Key,可直接读;粘贴的 API Key 没有控制 Key,请在控制台查看。刷新会为每个可读的 OAuth 账号各发一次请求。";
76
- readonly usageRefresh: "刷新余额";
74
+ readonly usageSection: "套餐与额度";
75
+ readonly usageHint: "套餐档位和额度来自账号的账单摘要;浏览器授权登录的账号带控制 Key,可直接读,打开本页会自动读一次。粘贴的 API Key 没有控制 Key,请在控制台查看。";
76
+ readonly usageRefresh: "刷新额度";
77
77
  readonly usageRefreshing: "刷新中...";
78
- readonly usageEmpty: "尚未读取余额。";
79
- readonly usageUnavailable: "读不到余额:{detail}";
80
- readonly usageBalance: "余额 ${amount}";
78
+ readonly usageEmpty: "尚未读取额度。";
79
+ readonly usageUnavailable: "读不到额度:{detail}";
80
+ readonly usageBalance: "钱包余额 ${amount}";
81
81
  readonly usageReadAt: "读取于 {time}";
82
+ readonly usagePlan: "套餐 {plan}";
83
+ readonly usagePlanActive: "生效中";
84
+ readonly usagePlanInactive: "状态 {status}";
85
+ readonly usagePeriod: "本周期 {start} → {end}";
86
+ readonly usageSubscriptionCredits: "订阅额度 {credits} credits(${usd})";
87
+ readonly usageRechargeCredits: "充值额度 {credits} credits(${usd})";
88
+ readonly usageTotalCredits: "可用合计 {credits} credits(${usd})";
89
+ readonly usageTodayConsumed: "今日消耗 ${amount}";
90
+ readonly usageTotalConsumed: "累计消耗 ${amount}";
91
+ readonly usageUsageCount: "计费请求 {count} 次";
92
+ readonly usagePlanUnknown: "已读取额度,但上游未返回套餐档位。";
82
93
  readonly limitKey: "凭据存储在系统加密凭据库中,界面从不显示 Key 本身。";
83
94
  readonly limitGateway: "请求由 OpenDesign 网关服务,实际上游由网关决定。";
84
95
  readonly limitRoute: "模型路由按 provider id 抢占:若已有其他插件占用 opendesign,本卡仍可配置,但请求由对方服务。";
85
- readonly limitQuota: "余额读取只覆盖浏览器授权登录的账号;粘贴的 API Key 请在 OpenDesign Cloud 控制台查看用量。";
96
+ readonly limitQuota: "套餐与额度读取只覆盖浏览器授权登录的账号;粘贴的 API Key 没有控制 Key,请在 OpenDesign Cloud 控制台查看用量。";
86
97
  readonly accountPool: string;
87
98
  readonly accountCount: string;
88
99
  readonly primaryAccount: string;
@@ -184,18 +195,29 @@ export declare const en: {
184
195
  readonly saveSettings: "Save settings";
185
196
  readonly savingSettings: "Saving...";
186
197
  readonly limitsSection: "Notes";
187
- readonly usageSection: "Wallet balance";
188
- readonly usageHint: "Balances belong to accounts. Browser-signed-in accounts carry a control key and can be read here; a pasted API key has none — check the console for it. Refreshing sends one request per readable OAuth account.";
189
- readonly usageRefresh: "Refresh balance";
198
+ readonly usageSection: "Plan and credits";
199
+ readonly usageHint: "The plan tier and credits come from the account's billing summary. Browser-signed-in accounts carry a control key and are read here automatically when this page opens; a pasted API key has none — check the console for it.";
200
+ readonly usageRefresh: "Refresh plan & credits";
190
201
  readonly usageRefreshing: "Refreshing...";
191
- readonly usageEmpty: "No balance reading yet.";
192
- readonly usageUnavailable: "Could not read the balance: {detail}";
193
- readonly usageBalance: "Balance ${amount}";
202
+ readonly usageEmpty: "No plan or credit reading yet.";
203
+ readonly usageUnavailable: "Could not read the plan and credits: {detail}";
204
+ readonly usageBalance: "Wallet balance ${amount}";
194
205
  readonly usageReadAt: "Read at {time}";
206
+ readonly usagePlan: "Plan {plan}";
207
+ readonly usagePlanActive: "active";
208
+ readonly usagePlanInactive: "status {status}";
209
+ readonly usagePeriod: "Period {start} → {end}";
210
+ readonly usageSubscriptionCredits: "Subscription credits {credits} (${usd})";
211
+ readonly usageRechargeCredits: "Top-up credits {credits} (${usd})";
212
+ readonly usageTotalCredits: "Total available {credits} credits (${usd})";
213
+ readonly usageTodayConsumed: "Consumed today ${amount}";
214
+ readonly usageTotalConsumed: "Consumed in total ${amount}";
215
+ readonly usageUsageCount: "Billed requests: {count}";
216
+ readonly usagePlanUnknown: "Credits were read, but the upstream named no plan tier.";
195
217
  readonly limitKey: "API keys live in the OS credential store; the card never shows the key itself.";
196
218
  readonly limitGateway: "Requests are served by the OpenDesign gateway, which chooses the actual upstream.";
197
219
  readonly limitRoute: "The route is claimed by provider id: if another plugin already serves opendesign, this card still configures the line but that provider answers the requests.";
198
- readonly limitQuota: "Balance reads cover browser-signed-in accounts only; for a pasted API key, see usage in the OpenDesign Cloud console.";
220
+ readonly limitQuota: "Plan and credit reads cover browser-signed-in accounts only; a pasted API key has no control key, so see usage in the OpenDesign Cloud console.";
199
221
  readonly accountPool: string;
200
222
  readonly accountCount: string;
201
223
  readonly primaryAccount: string;
@@ -298,18 +320,29 @@ export declare const dictionaries: {
298
320
  readonly saveSettings: "保存设置";
299
321
  readonly savingSettings: "保存中...";
300
322
  readonly limitsSection: "说明";
301
- readonly usageSection: "钱包余额";
302
- readonly usageHint: "余额属于账号。浏览器授权登录的账号带控制 Key,可直接读;粘贴的 API Key 没有控制 Key,请在控制台查看。刷新会为每个可读的 OAuth 账号各发一次请求。";
303
- readonly usageRefresh: "刷新余额";
323
+ readonly usageSection: "套餐与额度";
324
+ readonly usageHint: "套餐档位和额度来自账号的账单摘要;浏览器授权登录的账号带控制 Key,可直接读,打开本页会自动读一次。粘贴的 API Key 没有控制 Key,请在控制台查看。";
325
+ readonly usageRefresh: "刷新额度";
304
326
  readonly usageRefreshing: "刷新中...";
305
- readonly usageEmpty: "尚未读取余额。";
306
- readonly usageUnavailable: "读不到余额:{detail}";
307
- readonly usageBalance: "余额 ${amount}";
327
+ readonly usageEmpty: "尚未读取额度。";
328
+ readonly usageUnavailable: "读不到额度:{detail}";
329
+ readonly usageBalance: "钱包余额 ${amount}";
308
330
  readonly usageReadAt: "读取于 {time}";
331
+ readonly usagePlan: "套餐 {plan}";
332
+ readonly usagePlanActive: "生效中";
333
+ readonly usagePlanInactive: "状态 {status}";
334
+ readonly usagePeriod: "本周期 {start} → {end}";
335
+ readonly usageSubscriptionCredits: "订阅额度 {credits} credits(${usd})";
336
+ readonly usageRechargeCredits: "充值额度 {credits} credits(${usd})";
337
+ readonly usageTotalCredits: "可用合计 {credits} credits(${usd})";
338
+ readonly usageTodayConsumed: "今日消耗 ${amount}";
339
+ readonly usageTotalConsumed: "累计消耗 ${amount}";
340
+ readonly usageUsageCount: "计费请求 {count} 次";
341
+ readonly usagePlanUnknown: "已读取额度,但上游未返回套餐档位。";
309
342
  readonly limitKey: "凭据存储在系统加密凭据库中,界面从不显示 Key 本身。";
310
343
  readonly limitGateway: "请求由 OpenDesign 网关服务,实际上游由网关决定。";
311
344
  readonly limitRoute: "模型路由按 provider id 抢占:若已有其他插件占用 opendesign,本卡仍可配置,但请求由对方服务。";
312
- readonly limitQuota: "余额读取只覆盖浏览器授权登录的账号;粘贴的 API Key 请在 OpenDesign Cloud 控制台查看用量。";
345
+ readonly limitQuota: "套餐与额度读取只覆盖浏览器授权登录的账号;粘贴的 API Key 没有控制 Key,请在 OpenDesign Cloud 控制台查看用量。";
313
346
  readonly accountPool: string;
314
347
  readonly accountCount: string;
315
348
  readonly primaryAccount: string;
@@ -411,18 +444,29 @@ export declare const dictionaries: {
411
444
  readonly saveSettings: "保存设置";
412
445
  readonly savingSettings: "保存中...";
413
446
  readonly limitsSection: "说明";
414
- readonly usageSection: "钱包余额";
415
- readonly usageHint: "余额属于账号。浏览器授权登录的账号带控制 Key,可直接读;粘贴的 API Key 没有控制 Key,请在控制台查看。刷新会为每个可读的 OAuth 账号各发一次请求。";
416
- readonly usageRefresh: "刷新余额";
447
+ readonly usageSection: "套餐与额度";
448
+ readonly usageHint: "套餐档位和额度来自账号的账单摘要;浏览器授权登录的账号带控制 Key,可直接读,打开本页会自动读一次。粘贴的 API Key 没有控制 Key,请在控制台查看。";
449
+ readonly usageRefresh: "刷新额度";
417
450
  readonly usageRefreshing: "刷新中...";
418
- readonly usageEmpty: "尚未读取余额。";
419
- readonly usageUnavailable: "读不到余额:{detail}";
420
- readonly usageBalance: "余额 ${amount}";
451
+ readonly usageEmpty: "尚未读取额度。";
452
+ readonly usageUnavailable: "读不到额度:{detail}";
453
+ readonly usageBalance: "钱包余额 ${amount}";
421
454
  readonly usageReadAt: "读取于 {time}";
455
+ readonly usagePlan: "套餐 {plan}";
456
+ readonly usagePlanActive: "生效中";
457
+ readonly usagePlanInactive: "状态 {status}";
458
+ readonly usagePeriod: "本周期 {start} → {end}";
459
+ readonly usageSubscriptionCredits: "订阅额度 {credits} credits(${usd})";
460
+ readonly usageRechargeCredits: "充值额度 {credits} credits(${usd})";
461
+ readonly usageTotalCredits: "可用合计 {credits} credits(${usd})";
462
+ readonly usageTodayConsumed: "今日消耗 ${amount}";
463
+ readonly usageTotalConsumed: "累计消耗 ${amount}";
464
+ readonly usageUsageCount: "计费请求 {count} 次";
465
+ readonly usagePlanUnknown: "已读取额度,但上游未返回套餐档位。";
422
466
  readonly limitKey: "凭据存储在系统加密凭据库中,界面从不显示 Key 本身。";
423
467
  readonly limitGateway: "请求由 OpenDesign 网关服务,实际上游由网关决定。";
424
468
  readonly limitRoute: "模型路由按 provider id 抢占:若已有其他插件占用 opendesign,本卡仍可配置,但请求由对方服务。";
425
- readonly limitQuota: "余额读取只覆盖浏览器授权登录的账号;粘贴的 API Key 请在 OpenDesign Cloud 控制台查看用量。";
469
+ readonly limitQuota: "套餐与额度读取只覆盖浏览器授权登录的账号;粘贴的 API Key 没有控制 Key,请在 OpenDesign Cloud 控制台查看用量。";
426
470
  readonly accountPool: string;
427
471
  readonly accountCount: string;
428
472
  readonly primaryAccount: string;
@@ -524,18 +568,29 @@ export declare const dictionaries: {
524
568
  readonly saveSettings: "Save settings";
525
569
  readonly savingSettings: "Saving...";
526
570
  readonly limitsSection: "Notes";
527
- readonly usageSection: "Wallet balance";
528
- readonly usageHint: "Balances belong to accounts. Browser-signed-in accounts carry a control key and can be read here; a pasted API key has none — check the console for it. Refreshing sends one request per readable OAuth account.";
529
- readonly usageRefresh: "Refresh balance";
571
+ readonly usageSection: "Plan and credits";
572
+ readonly usageHint: "The plan tier and credits come from the account's billing summary. Browser-signed-in accounts carry a control key and are read here automatically when this page opens; a pasted API key has none — check the console for it.";
573
+ readonly usageRefresh: "Refresh plan & credits";
530
574
  readonly usageRefreshing: "Refreshing...";
531
- readonly usageEmpty: "No balance reading yet.";
532
- readonly usageUnavailable: "Could not read the balance: {detail}";
533
- readonly usageBalance: "Balance ${amount}";
575
+ readonly usageEmpty: "No plan or credit reading yet.";
576
+ readonly usageUnavailable: "Could not read the plan and credits: {detail}";
577
+ readonly usageBalance: "Wallet balance ${amount}";
534
578
  readonly usageReadAt: "Read at {time}";
579
+ readonly usagePlan: "Plan {plan}";
580
+ readonly usagePlanActive: "active";
581
+ readonly usagePlanInactive: "status {status}";
582
+ readonly usagePeriod: "Period {start} → {end}";
583
+ readonly usageSubscriptionCredits: "Subscription credits {credits} (${usd})";
584
+ readonly usageRechargeCredits: "Top-up credits {credits} (${usd})";
585
+ readonly usageTotalCredits: "Total available {credits} credits (${usd})";
586
+ readonly usageTodayConsumed: "Consumed today ${amount}";
587
+ readonly usageTotalConsumed: "Consumed in total ${amount}";
588
+ readonly usageUsageCount: "Billed requests: {count}";
589
+ readonly usagePlanUnknown: "Credits were read, but the upstream named no plan tier.";
535
590
  readonly limitKey: "API keys live in the OS credential store; the card never shows the key itself.";
536
591
  readonly limitGateway: "Requests are served by the OpenDesign gateway, which chooses the actual upstream.";
537
592
  readonly limitRoute: "The route is claimed by provider id: if another plugin already serves opendesign, this card still configures the line but that provider answers the requests.";
538
- readonly limitQuota: "Balance reads cover browser-signed-in accounts only; for a pasted API key, see usage in the OpenDesign Cloud console.";
593
+ readonly limitQuota: "Plan and credit reads cover browser-signed-in accounts only; a pasted API key has no control key, so see usage in the OpenDesign Cloud console.";
539
594
  readonly accountPool: string;
540
595
  readonly accountCount: string;
541
596
  readonly primaryAccount: string;
@@ -637,18 +692,29 @@ export declare const dictionaries: {
637
692
  readonly saveSettings: "Save settings";
638
693
  readonly savingSettings: "Saving...";
639
694
  readonly limitsSection: "Notes";
640
- readonly usageSection: "Wallet balance";
641
- readonly usageHint: "Balances belong to accounts. Browser-signed-in accounts carry a control key and can be read here; a pasted API key has none — check the console for it. Refreshing sends one request per readable OAuth account.";
642
- readonly usageRefresh: "Refresh balance";
695
+ readonly usageSection: "Plan and credits";
696
+ readonly usageHint: "The plan tier and credits come from the account's billing summary. Browser-signed-in accounts carry a control key and are read here automatically when this page opens; a pasted API key has none — check the console for it.";
697
+ readonly usageRefresh: "Refresh plan & credits";
643
698
  readonly usageRefreshing: "Refreshing...";
644
- readonly usageEmpty: "No balance reading yet.";
645
- readonly usageUnavailable: "Could not read the balance: {detail}";
646
- readonly usageBalance: "Balance ${amount}";
699
+ readonly usageEmpty: "No plan or credit reading yet.";
700
+ readonly usageUnavailable: "Could not read the plan and credits: {detail}";
701
+ readonly usageBalance: "Wallet balance ${amount}";
647
702
  readonly usageReadAt: "Read at {time}";
703
+ readonly usagePlan: "Plan {plan}";
704
+ readonly usagePlanActive: "active";
705
+ readonly usagePlanInactive: "status {status}";
706
+ readonly usagePeriod: "Period {start} → {end}";
707
+ readonly usageSubscriptionCredits: "Subscription credits {credits} (${usd})";
708
+ readonly usageRechargeCredits: "Top-up credits {credits} (${usd})";
709
+ readonly usageTotalCredits: "Total available {credits} credits (${usd})";
710
+ readonly usageTodayConsumed: "Consumed today ${amount}";
711
+ readonly usageTotalConsumed: "Consumed in total ${amount}";
712
+ readonly usageUsageCount: "Billed requests: {count}";
713
+ readonly usagePlanUnknown: "Credits were read, but the upstream named no plan tier.";
648
714
  readonly limitKey: "API keys live in the OS credential store; the card never shows the key itself.";
649
715
  readonly limitGateway: "Requests are served by the OpenDesign gateway, which chooses the actual upstream.";
650
716
  readonly limitRoute: "The route is claimed by provider id: if another plugin already serves opendesign, this card still configures the line but that provider answers the requests.";
651
- readonly limitQuota: "Balance reads cover browser-signed-in accounts only; for a pasted API key, see usage in the OpenDesign Cloud console.";
717
+ readonly limitQuota: "Plan and credit reads cover browser-signed-in accounts only; a pasted API key has no control key, so see usage in the OpenDesign Cloud console.";
652
718
  readonly accountPool: string;
653
719
  readonly accountCount: string;
654
720
  readonly primaryAccount: string;
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/locales.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAE7C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FL,CAAA;AAEV,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6FL,CAAA;AAIV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/locales.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAE7C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GL,CAAA;AAEV,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGL,CAAA;AAIV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CA0B9C"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/client/opendesign/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAiC9C"}
@@ -23,6 +23,7 @@
23
23
  */
24
24
  import React from 'react';
25
25
  import { type QoderModelOption } from '../../shared/qoder-contracts.ts';
26
+ import { zh } from './locales.ts';
26
27
  import { type QoderSectionProps } from './useQoderSection.ts';
27
28
  /**
28
29
  * 一行模型的能力摘要:`1M · text+image · 档位 low/high/max · 输出 131k`。
@@ -31,6 +32,6 @@ import { type QoderSectionProps } from './useQoderSection.ts';
31
32
  * `defaultMaxTokens`),客户端不按模型名推断任何一项。与 OpenDesign 卡同一写法:
32
33
  * 数据一行,散文进折叠区。
33
34
  */
34
- export declare function qoderModelRowHint(model: QoderModelOption): string;
35
+ export declare function qoderModelRowHint(model: QoderModelOption, t?: typeof zh): string;
35
36
  export declare function QoderSection({ onModelChange }?: QoderSectionProps): React.JSX.Element;
36
37
  //# sourceMappingURL=QoderSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QoderSection.d.ts","sourceRoot":"","sources":["../../../../src/client/qoder/QoderSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,iCAAiC,CAAA;AAYxC,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AA4D9E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAQjE;AAED,wBAAgB,YAAY,CAAC,EAAE,aAAa,EAAE,GAAE,iBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAydzF"}
1
+ {"version":3,"file":"QoderSection.d.ts","sourceRoot":"","sources":["../../../../src/client/qoder/QoderSection.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAgD,EAAE,EAAiC,MAAM,cAAc,CAAA;AAC9G,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AA6D9E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC,GAAE,OAAO,EAAO,GAAG,MAAM,CAQpF;AAED,wBAAgB,YAAY,CAAC,EAAE,aAAa,EAAE,GAAE,iBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAydzF"}