dsh-subscriptions 0.1.0

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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -0
  3. package/cordis.patch.yml +12 -0
  4. package/lib/auth/claude-code-creds.d.ts +23 -0
  5. package/lib/auth/claude-code-creds.js +172 -0
  6. package/lib/auth/device-flow.d.ts +55 -0
  7. package/lib/auth/device-flow.js +177 -0
  8. package/lib/auth/jwt.d.ts +10 -0
  9. package/lib/auth/jwt.js +25 -0
  10. package/lib/auth/oauth-flow.d.ts +91 -0
  11. package/lib/auth/oauth-flow.js +227 -0
  12. package/lib/auth/pkce.d.ts +31 -0
  13. package/lib/auth/pkce.js +35 -0
  14. package/lib/auth/rpc.d.ts +209 -0
  15. package/lib/auth/rpc.js +386 -0
  16. package/lib/auth/store.d.ts +196 -0
  17. package/lib/auth/store.js +468 -0
  18. package/lib/client/CursorCard.d.ts +9 -0
  19. package/lib/client/CursorCard.js +113 -0
  20. package/lib/client/ExternalUsageCards.d.ts +9 -0
  21. package/lib/client/ExternalUsageCards.js +72 -0
  22. package/lib/client/ImageGallery.d.ts +54 -0
  23. package/lib/client/ImageGallery.js +112 -0
  24. package/lib/client/ImageGenerateToolview.d.ts +48 -0
  25. package/lib/client/ImageGenerateToolview.js +133 -0
  26. package/lib/client/ProviderAccountManager.d.ts +13 -0
  27. package/lib/client/ProviderAccountManager.js +147 -0
  28. package/lib/client/ProviderModelEditor.d.ts +39 -0
  29. package/lib/client/ProviderModelEditor.js +107 -0
  30. package/lib/client/SpeedSelect.d.ts +71 -0
  31. package/lib/client/SpeedSelect.js +177 -0
  32. package/lib/client/SubscriptionUsageBadge.d.ts +116 -0
  33. package/lib/client/SubscriptionUsageBadge.js +543 -0
  34. package/lib/client/SubscriptionsSection.d.ts +140 -0
  35. package/lib/client/SubscriptionsSection.js +544 -0
  36. package/lib/client/UsageBadgeDisplaySetting.d.ts +7 -0
  37. package/lib/client/UsageBadgeDisplaySetting.js +36 -0
  38. package/lib/client/VideoGenerateToolview.d.ts +42 -0
  39. package/lib/client/VideoGenerateToolview.js +175 -0
  40. package/lib/client/account-preferences.d.ts +24 -0
  41. package/lib/client/account-preferences.js +21 -0
  42. package/lib/client/fast-command.d.ts +2 -0
  43. package/lib/client/fast-command.js +4 -0
  44. package/lib/client/host-contract.d.ts +90 -0
  45. package/lib/client/host-contract.js +101 -0
  46. package/lib/client/host-icons.d.ts +24 -0
  47. package/lib/client/host-icons.js +21 -0
  48. package/lib/client/index.d.ts +27 -0
  49. package/lib/client/index.js +136 -0
  50. package/lib/client/locales.d.ts +297 -0
  51. package/lib/client/locales.js +295 -0
  52. package/lib/client/subscription-card-styles.d.ts +3 -0
  53. package/lib/client/subscription-card-styles.js +53 -0
  54. package/lib/client/subscriptions-rpc.d.ts +14 -0
  55. package/lib/client/subscriptions-rpc.js +34 -0
  56. package/lib/client/usage-badge-preferences.d.ts +11 -0
  57. package/lib/client/usage-badge-preferences.js +41 -0
  58. package/lib/client.js +4472 -0
  59. package/lib/client.js.map +1 -0
  60. package/lib/compat.d.ts +36 -0
  61. package/lib/compat.js +20 -0
  62. package/lib/http.d.ts +6 -0
  63. package/lib/http.js +15 -0
  64. package/lib/index.d.ts +80 -0
  65. package/lib/index.js +14018 -0
  66. package/lib/model-defaults.d.ts +23 -0
  67. package/lib/model-defaults.js +237 -0
  68. package/lib/provider-settings.d.ts +39 -0
  69. package/lib/provider-settings.js +151 -0
  70. package/lib/providers/account-preferences.d.ts +41 -0
  71. package/lib/providers/account-preferences.js +153 -0
  72. package/lib/providers/accounts.d.ts +112 -0
  73. package/lib/providers/accounts.js +142 -0
  74. package/lib/providers/antigravity-oauth-client.d.ts +7 -0
  75. package/lib/providers/antigravity-oauth-client.js +7 -0
  76. package/lib/providers/antigravity.d.ts +110 -0
  77. package/lib/providers/antigravity.js +516 -0
  78. package/lib/providers/catalog-store.d.ts +48 -0
  79. package/lib/providers/catalog-store.js +243 -0
  80. package/lib/providers/claude-cli-version.d.ts +15 -0
  81. package/lib/providers/claude-cli-version.js +24 -0
  82. package/lib/providers/claude.d.ts +181 -0
  83. package/lib/providers/claude.js +680 -0
  84. package/lib/providers/codex-client-version.d.ts +8 -0
  85. package/lib/providers/codex-client-version.js +17 -0
  86. package/lib/providers/codex-search.d.ts +29 -0
  87. package/lib/providers/codex-search.js +198 -0
  88. package/lib/providers/codex.d.ts +229 -0
  89. package/lib/providers/codex.js +821 -0
  90. package/lib/providers/common.d.ts +389 -0
  91. package/lib/providers/common.js +656 -0
  92. package/lib/providers/copilot.d.ts +344 -0
  93. package/lib/providers/copilot.js +888 -0
  94. package/lib/providers/cursor-adapter.d.ts +15 -0
  95. package/lib/providers/cursor-adapter.js +39 -0
  96. package/lib/providers/cursor-auth.d.ts +43 -0
  97. package/lib/providers/cursor-auth.js +169 -0
  98. package/lib/providers/cursor-model-settings.d.ts +15 -0
  99. package/lib/providers/cursor-model-settings.js +51 -0
  100. package/lib/providers/cursor-usage.d.ts +9 -0
  101. package/lib/providers/cursor-usage.js +112 -0
  102. package/lib/providers/external-usage-controller.d.ts +19 -0
  103. package/lib/providers/external-usage-controller.js +32 -0
  104. package/lib/providers/external-usage.d.ts +8 -0
  105. package/lib/providers/external-usage.js +82 -0
  106. package/lib/providers/grok.d.ts +205 -0
  107. package/lib/providers/grok.js +713 -0
  108. package/lib/providers/image-pool.d.ts +30 -0
  109. package/lib/providers/image-pool.js +89 -0
  110. package/lib/providers/npm-cli-version.d.ts +56 -0
  111. package/lib/providers/npm-cli-version.js +98 -0
  112. package/lib/providers/pool-family.d.ts +56 -0
  113. package/lib/providers/pool-family.js +45 -0
  114. package/lib/providers/pool-health.d.ts +74 -0
  115. package/lib/providers/pool-health.js +150 -0
  116. package/lib/providers/pool-usage.d.ts +86 -0
  117. package/lib/providers/pool-usage.js +223 -0
  118. package/lib/providers/pool.d.ts +108 -0
  119. package/lib/providers/pool.js +368 -0
  120. package/lib/providers/rate-limit.d.ts +192 -0
  121. package/lib/providers/rate-limit.js +338 -0
  122. package/lib/tools/image-generate.d.ts +128 -0
  123. package/lib/tools/image-generate.js +438 -0
  124. package/lib/tools/registration.d.ts +15 -0
  125. package/lib/tools/registration.js +24 -0
  126. package/lib/tools/video-generate.d.ts +89 -0
  127. package/lib/tools/video-generate.js +257 -0
  128. package/lib/tools/x-search.d.ts +58 -0
  129. package/lib/tools/x-search.js +197 -0
  130. package/lib/translate/anthropic.d.ts +161 -0
  131. package/lib/translate/anthropic.js +515 -0
  132. package/lib/translate/antigravity-schema.d.ts +4 -0
  133. package/lib/translate/antigravity-schema.js +145 -0
  134. package/lib/translate/antigravity-thinking.d.ts +5 -0
  135. package/lib/translate/antigravity-thinking.js +44 -0
  136. package/lib/translate/antigravity.d.ts +114 -0
  137. package/lib/translate/antigravity.js +366 -0
  138. package/lib/translate/chat-completions.d.ts +120 -0
  139. package/lib/translate/chat-completions.js +382 -0
  140. package/lib/translate/resolved.d.ts +80 -0
  141. package/lib/translate/resolved.js +118 -0
  142. package/lib/translate/responses.d.ts +179 -0
  143. package/lib/translate/responses.js +408 -0
  144. package/lib/translate/sse.d.ts +21 -0
  145. package/lib/translate/sse.js +56 -0
  146. package/package.json +114 -0
  147. package/vendor/cursor/LICENSE +21 -0
  148. package/vendor/cursor/index.d.ts +18 -0
  149. package/vendor/cursor/index.js +3574 -0
  150. package/vendor/cursor/proto.js +254 -0
@@ -0,0 +1,297 @@
1
+ /** Copy dictionaries for the Subscriptions settings section. */
2
+ /** English strings (the key-set source of truth for this pair). */
3
+ export declare const en: {
4
+ accountsManage: string;
5
+ accountsTitle: string;
6
+ accountsHint: string;
7
+ accountsLoading: string;
8
+ accountsLoadFailed: string;
9
+ accountsSaveFailed: string;
10
+ accountsEmpty: string;
11
+ accountsAlias: string;
12
+ accountsPoolEnabled: string;
13
+ accountsIndependent: string;
14
+ accountsIndependentHint: string;
15
+ accountsModels: string;
16
+ accountsModelsAll: string;
17
+ accountsModelsCount: string;
18
+ accountsModelsHint: string;
19
+ accountsModelsAutomatic: string;
20
+ accountsNoModels: string;
21
+ accountsCatalogUnavailable: string;
22
+ modelsPartialSave: string;
23
+ modelsEdit: string;
24
+ modelsHint: string;
25
+ modelsAutomatic: string;
26
+ modelsSelectAll: string;
27
+ modelsSelectNone: string;
28
+ modelsContext: string;
29
+ modelsContextBounds: string;
30
+ modelsContextHint: string;
31
+ modelsContextInvalid: string;
32
+ modelsTools: string;
33
+ modelsToolsHint: string;
34
+ modelsImage: string;
35
+ modelsVideo: string;
36
+ modelsSearch: string;
37
+ modelsWebSearch: string;
38
+ modelsSave: string;
39
+ modelsUnavailable: string;
40
+ nav: string;
41
+ intro: string;
42
+ unavailable: string;
43
+ checking: string;
44
+ loginInProgress: string;
45
+ notLoggedIn: string;
46
+ loggedInCount: string;
47
+ clientVersion: string;
48
+ clientVersionNpm: string;
49
+ clientVersionLocal: string;
50
+ clientVersionFallback: string;
51
+ clientVersionConfig: string;
52
+ clientVersionHint: string;
53
+ accountExpires: string;
54
+ defaultBadge: string;
55
+ setDefault: string;
56
+ addAccount: string;
57
+ addAccountOAuth: string;
58
+ addAccountKeychain: string;
59
+ addAccountHint: string;
60
+ login: string;
61
+ cancel: string;
62
+ logout: string;
63
+ logoutAccountConfirm: string;
64
+ manualSummary: string;
65
+ manualPlaceholder: string;
66
+ submit: string;
67
+ loginMissingUrl: string;
68
+ deviceCodePrompt: string;
69
+ deviceCodeCopy: string;
70
+ deviceCodeCopied: string;
71
+ deviceCodeOpenPage: string;
72
+ usageTitle: string;
73
+ usageRefresh: string;
74
+ usageLoading: string;
75
+ usageEmpty: string;
76
+ usageError: string;
77
+ usageSession: string;
78
+ usageWeekly: string;
79
+ usageMonthly: string;
80
+ usageWindow: string;
81
+ usageResets: string;
82
+ usagePlan: string;
83
+ externalUsageTitle: string;
84
+ externalUsageConnected: string;
85
+ externalUsageNotConfigured: string;
86
+ externalUsageApiKey: string;
87
+ externalUsageConfigure: string;
88
+ externalUsageUnavailable: string;
89
+ cursorTitle: string;
90
+ cursorOpenLogin: string;
91
+ cursorWaiting: string;
92
+ cursorConnected: string;
93
+ cursorManageTitle: string;
94
+ cursorManageSignIn: string;
95
+ cursorAccountsHint: string;
96
+ cursorManageHint: string;
97
+ cursorFilterModels: string;
98
+ cursorModelsLoading: string;
99
+ cursorModelsError: string;
100
+ cursorModelsCount: string;
101
+ cursorIncluded: string;
102
+ cursorModels: string;
103
+ cursorOtherModels: string;
104
+ cursorIncludedRequests: string;
105
+ modelDefaultsTitle: string;
106
+ modelDefaultsHint: string;
107
+ modelDefaultsFollowProvider: string;
108
+ modelDefaultsNoLevels: string;
109
+ modelDefaultsLoading: string;
110
+ modelDefaultsLoadFailed: string;
111
+ modelDefaultsRetry: string;
112
+ modelDefaultsRefresh: string;
113
+ modelDefaultsSaving: string;
114
+ modelDefaultsSaveFailedNamed: string;
115
+ modelDefaultsSummary: string;
116
+ modelDefaultsSummaryNone: string;
117
+ modelDefaultsSummaryEmpty: string;
118
+ modelDefaultsFilterPlaceholder: string;
119
+ modelDefaultsFilterEmpty: string;
120
+ generating: string;
121
+ image: string;
122
+ viewImage: string;
123
+ viewImageNamed: string;
124
+ imageLoading: string;
125
+ imageLoadFailed: string;
126
+ imagePreview: string;
127
+ imageClose: string;
128
+ generatingVideo: string;
129
+ videoLoading: string;
130
+ videoLoadFailed: string;
131
+ usageBadgeTitle: string;
132
+ usageBadgeDisplay: string;
133
+ usageBadgeDisplayRecent: string;
134
+ usageBadgeDisplayHidden: string;
135
+ usageBadgeDisplayHint: string;
136
+ usageBadgeDisplaySaveFailed: string;
137
+ usageBadgeCurrent: string;
138
+ usageBadgeModelCount: string;
139
+ usageBadgeModelUnavailable: string;
140
+ usageBadgeMoreWindows: string;
141
+ speed: string;
142
+ speedStandard: string;
143
+ speedStandardDescription: string;
144
+ speedFast: string;
145
+ speedFastDescription: string;
146
+ commandFast: string;
147
+ commandFastUnavailable: string;
148
+ };
149
+ /** zh strings, one per {@link en} key. */
150
+ export declare const zh: {
151
+ accountsManage: string;
152
+ accountsTitle: string;
153
+ accountsHint: string;
154
+ accountsLoading: string;
155
+ accountsLoadFailed: string;
156
+ accountsSaveFailed: string;
157
+ accountsEmpty: string;
158
+ accountsAlias: string;
159
+ accountsPoolEnabled: string;
160
+ accountsIndependent: string;
161
+ accountsIndependentHint: string;
162
+ accountsModels: string;
163
+ accountsModelsAll: string;
164
+ accountsModelsCount: string;
165
+ accountsModelsHint: string;
166
+ accountsModelsAutomatic: string;
167
+ accountsNoModels: string;
168
+ accountsCatalogUnavailable: string;
169
+ modelsPartialSave: string;
170
+ modelsEdit: string;
171
+ modelsHint: string;
172
+ modelsAutomatic: string;
173
+ modelsSelectAll: string;
174
+ modelsSelectNone: string;
175
+ modelsContext: string;
176
+ modelsContextBounds: string;
177
+ modelsContextHint: string;
178
+ modelsContextInvalid: string;
179
+ modelsTools: string;
180
+ modelsToolsHint: string;
181
+ modelsImage: string;
182
+ modelsVideo: string;
183
+ modelsSearch: string;
184
+ modelsWebSearch: string;
185
+ modelsSave: string;
186
+ modelsUnavailable: string;
187
+ nav: string;
188
+ intro: string;
189
+ unavailable: string;
190
+ checking: string;
191
+ loginInProgress: string;
192
+ notLoggedIn: string;
193
+ loggedInCount: string;
194
+ clientVersion: string;
195
+ clientVersionNpm: string;
196
+ clientVersionLocal: string;
197
+ clientVersionFallback: string;
198
+ clientVersionConfig: string;
199
+ clientVersionHint: string;
200
+ accountExpires: string;
201
+ defaultBadge: string;
202
+ setDefault: string;
203
+ addAccount: string;
204
+ addAccountOAuth: string;
205
+ addAccountKeychain: string;
206
+ addAccountHint: string;
207
+ login: string;
208
+ cancel: string;
209
+ logout: string;
210
+ logoutAccountConfirm: string;
211
+ manualSummary: string;
212
+ manualPlaceholder: string;
213
+ submit: string;
214
+ loginMissingUrl: string;
215
+ deviceCodePrompt: string;
216
+ deviceCodeCopy: string;
217
+ deviceCodeCopied: string;
218
+ deviceCodeOpenPage: string;
219
+ usageTitle: string;
220
+ usageRefresh: string;
221
+ usageLoading: string;
222
+ usageEmpty: string;
223
+ usageError: string;
224
+ usageSession: string;
225
+ usageWeekly: string;
226
+ usageMonthly: string;
227
+ usageWindow: string;
228
+ usageResets: string;
229
+ usagePlan: string;
230
+ externalUsageTitle: string;
231
+ externalUsageConnected: string;
232
+ externalUsageNotConfigured: string;
233
+ externalUsageApiKey: string;
234
+ externalUsageConfigure: string;
235
+ externalUsageUnavailable: string;
236
+ cursorTitle: string;
237
+ cursorOpenLogin: string;
238
+ cursorWaiting: string;
239
+ cursorConnected: string;
240
+ cursorManageTitle: string;
241
+ cursorManageSignIn: string;
242
+ cursorAccountsHint: string;
243
+ cursorManageHint: string;
244
+ cursorFilterModels: string;
245
+ cursorModelsLoading: string;
246
+ cursorModelsError: string;
247
+ cursorModelsCount: string;
248
+ cursorIncluded: string;
249
+ cursorModels: string;
250
+ cursorOtherModels: string;
251
+ cursorIncludedRequests: string;
252
+ modelDefaultsTitle: string;
253
+ modelDefaultsHint: string;
254
+ modelDefaultsFollowProvider: string;
255
+ modelDefaultsNoLevels: string;
256
+ modelDefaultsLoading: string;
257
+ modelDefaultsLoadFailed: string;
258
+ modelDefaultsRetry: string;
259
+ modelDefaultsRefresh: string;
260
+ modelDefaultsSaving: string;
261
+ modelDefaultsSaveFailedNamed: string;
262
+ modelDefaultsSummary: string;
263
+ modelDefaultsSummaryNone: string;
264
+ modelDefaultsSummaryEmpty: string;
265
+ modelDefaultsFilterPlaceholder: string;
266
+ modelDefaultsFilterEmpty: string;
267
+ generating: string;
268
+ image: string;
269
+ viewImage: string;
270
+ viewImageNamed: string;
271
+ imageLoading: string;
272
+ imageLoadFailed: string;
273
+ imagePreview: string;
274
+ imageClose: string;
275
+ generatingVideo: string;
276
+ videoLoading: string;
277
+ videoLoadFailed: string;
278
+ usageBadgeTitle: string;
279
+ usageBadgeDisplay: string;
280
+ usageBadgeDisplayRecent: string;
281
+ usageBadgeDisplayHidden: string;
282
+ usageBadgeDisplayHint: string;
283
+ usageBadgeDisplaySaveFailed: string;
284
+ usageBadgeCurrent: string;
285
+ usageBadgeModelCount: string;
286
+ usageBadgeModelUnavailable: string;
287
+ usageBadgeMoreWindows: string;
288
+ speed: string;
289
+ speedStandard: string;
290
+ speedStandardDescription: string;
291
+ speedFast: string;
292
+ speedFastDescription: string;
293
+ commandFast: string;
294
+ commandFastUnavailable: string;
295
+ };
296
+ /** The Subscriptions namespace key union (en is the key-set source of truth). */
297
+ export type SubscriptionsKey = keyof typeof en;
@@ -0,0 +1,295 @@
1
+ /** Copy dictionaries for the Subscriptions settings section. */
2
+ /** English strings (the key-set source of truth for this pair). */
3
+ export const en = {
4
+ accountsManage: 'Manage',
5
+ accountsTitle: 'Manage {provider} accounts',
6
+ accountsHint: 'Choose which accounts serve pooled LLM requests. Pool exclusion applies only to LLM routing, not tools or session-wide isolation.',
7
+ accountsLoading: 'Loading accounts…',
8
+ accountsLoadFailed: 'Could not load account settings: {message}',
9
+ accountsSaveFailed: 'Could not save changes: {message}',
10
+ accountsEmpty: 'No connected accounts. Add an account on the provider card first.',
11
+ accountsAlias: 'Alias (optional)',
12
+ accountsPoolEnabled: 'Include in the LLM account pool',
13
+ accountsIndependent: 'Show an independent entry in the model picker',
14
+ accountsIndependentHint: 'Independent LLM routes use only this account, with no fallback to another account. This does not isolate tools or the whole session.',
15
+ accountsModels: 'Pool model allowlist',
16
+ accountsModelsAll: 'All models',
17
+ accountsModelsCount: '{count} selected',
18
+ accountsModelsHint: 'Applies only to pooled LLM routing, not independent entries. An empty selection allows no models. Turning off pool participation keeps this selection for later.',
19
+ accountsModelsAutomatic: 'Allow all models, including future models',
20
+ accountsNoModels: 'No models reported for this account.',
21
+ accountsCatalogUnavailable: 'Model discovery is currently unavailable. Saved model selections are preserved.',
22
+ modelsPartialSave: 'Some reasoning defaults were saved. Remaining changes are still in the draft; retry to finish.',
23
+ modelsEdit: "Edit model list",
24
+ modelsHint: "Configure model visibility, default reasoning effort, context and tools here; Save changes below submits them together with the account settings. Hidden models remain usable by existing sessions; tool changes apply to new sessions.",
25
+ modelsAutomatic: "Automatically show all models, including new models",
26
+ modelsSelectAll: "Select all",
27
+ modelsSelectNone: "Clear selection",
28
+ modelsContext: "Context (tokens)",
29
+ modelsContextBounds: "Default {default} · Maximum {max}",
30
+ modelsContextHint: "Leave blank to follow the provider. The requested window is capped by the account’s advertised maximum; account pools use the smallest member window. This controls local history and compaction, not the API’s capacity.",
31
+ modelsContextInvalid: "Enter a positive whole number of tokens for {model}.",
32
+ modelsTools: "Provider tools",
33
+ modelsToolsHint: "Changes apply only to sessions created after saving. Existing sessions keep their tools. Shared tools remain available if any supporting provider is enabled.",
34
+ modelsImage: "Image generation",
35
+ modelsVideo: "Video generation",
36
+ modelsSearch: "X search",
37
+ modelsWebSearch: "Web search",
38
+ modelsSave: "Save changes",
39
+ modelsUnavailable: "Currently unavailable",
40
+ nav: 'Subscriptions',
41
+ intro: 'Log a subscription provider in or out. Login opens the provider’s authorization page in a new tab; headless setups can paste the callback URL or code instead.',
42
+ unavailable: 'Connection unavailable; subscription status cannot be loaded.',
43
+ checking: 'Checking…',
44
+ loginInProgress: 'Login in progress…',
45
+ notLoggedIn: 'Not logged in',
46
+ loggedInCount: '{count} account(s) connected',
47
+ clientVersion: 'CLI {version} · {source}',
48
+ clientVersionNpm: 'latest on npm',
49
+ clientVersionLocal: 'local CLI',
50
+ clientVersionFallback: 'built-in',
51
+ clientVersionConfig: 'configured',
52
+ clientVersionHint: 'Requests present this CLI version, and newer models may require a recent one. It is the latest release on npm, or the local CLI / built-in version while npm is unreachable. Refreshing the model list checks again.',
53
+ accountExpires: 'expires {date}',
54
+ defaultBadge: 'Default',
55
+ setDefault: 'Set as default',
56
+ addAccount: 'Add account',
57
+ addAccountOAuth: 'Browser authorization',
58
+ addAccountKeychain: 'Import Claude Code',
59
+ addAccountHint: 'Browser authorization signs in whichever account the browser currently uses — switch accounts there first (or use an incognito window with the manual code below) to add a different one.',
60
+ login: 'Log in',
61
+ cancel: 'Cancel',
62
+ logout: 'Log out',
63
+ logoutAccountConfirm: 'Log out {account} of {provider}?',
64
+ manualSummary: 'Browser flow not working? Paste the callback URL or code',
65
+ manualPlaceholder: 'Paste the callback URL or code',
66
+ submit: 'Submit',
67
+ loginMissingUrl: 'login answered without an authorizeUrl',
68
+ deviceCodePrompt: 'Enter this code on the GitHub verification page:',
69
+ deviceCodeCopy: 'Copy code',
70
+ deviceCodeCopied: 'Copied',
71
+ deviceCodeOpenPage: 'Open GitHub verification page',
72
+ usageTitle: 'Usage',
73
+ usageRefresh: 'Refresh',
74
+ usageLoading: 'Loading usage…',
75
+ usageEmpty: 'No usage windows reported.',
76
+ usageError: 'Usage lookup failed: {message}',
77
+ usageSession: '5-hour window',
78
+ usageWeekly: 'Weekly',
79
+ usageMonthly: 'Monthly',
80
+ usageWindow: 'Window',
81
+ usageResets: 'resets {date}',
82
+ usagePlan: 'Plan: {plan}',
83
+ externalUsageTitle: 'Built-in provider usage',
84
+ externalUsageConnected: 'API key configured',
85
+ externalUsageNotConfigured: 'Not configured',
86
+ externalUsageApiKey: 'API key',
87
+ externalUsageConfigure: 'No API key found at {ref}. Add one in Settings → Models.',
88
+ externalUsageUnavailable: 'Usage status unavailable: {message}',
89
+ cursorTitle: 'Cursor',
90
+ cursorOpenLogin: 'Open Cursor sign-in',
91
+ cursorWaiting: 'Waiting for Cursor sign-in…',
92
+ cursorConnected: 'Connected',
93
+ cursorManageTitle: 'Manage Cursor',
94
+ cursorManageSignIn: 'Sign in to see the models available to this Cursor account.',
95
+ cursorAccountsHint: 'Cursor uses one connected account. Choose which of its models appear in the model picker.',
96
+ cursorManageHint: 'Choose model visibility here. Refresh fetches the current models from Cursor; Save changes updates the model picker.',
97
+ cursorFilterModels: 'Filter models',
98
+ cursorModelsLoading: 'Loading Cursor models…',
99
+ cursorModelsError: 'Could not load Cursor models: {message}',
100
+ cursorModelsCount: '{count} models available',
101
+ cursorIncluded: 'Included usage',
102
+ cursorModels: 'Cursor Models',
103
+ cursorOtherModels: 'Other Models',
104
+ cursorIncludedRequests: 'Included requests',
105
+ modelDefaultsTitle: 'Default reasoning effort',
106
+ modelDefaultsHint: 'The model picker preselects this level when you switch to the model; models without levels always follow the provider.',
107
+ modelDefaultsFollowProvider: 'Follow provider',
108
+ modelDefaultsNoLevels: '{count} model(s) advertise no reasoning levels and always follow the provider.',
109
+ modelDefaultsLoading: 'Loading models…',
110
+ modelDefaultsLoadFailed: 'Failed to load models: {message}',
111
+ modelDefaultsRetry: 'Retry',
112
+ modelDefaultsRefresh: 'Refresh model lists (all subscriptions)',
113
+ modelDefaultsSaving: 'Saving…',
114
+ modelDefaultsSaveFailedNamed: 'Save failed for {model}: {message}',
115
+ modelDefaultsSummary: '{total} model(s) · {configured} overridden',
116
+ modelDefaultsSummaryNone: '{total} model(s) · following the provider',
117
+ modelDefaultsSummaryEmpty: 'No model advertises reasoning levels',
118
+ modelDefaultsFilterPlaceholder: 'Filter models',
119
+ modelDefaultsFilterEmpty: 'No model matches “{query}”.',
120
+ generating: 'Generating image…',
121
+ image: 'image',
122
+ viewImage: 'View image',
123
+ viewImageNamed: 'View {name}',
124
+ imageLoading: 'Loading…',
125
+ imageLoadFailed: 'Retry',
126
+ imagePreview: 'Image preview',
127
+ imageClose: 'Close',
128
+ generatingVideo: 'Generating video…',
129
+ videoLoading: 'Loading video…',
130
+ videoLoadFailed: 'Video failed to load: {message}',
131
+ usageBadgeTitle: 'Provider usage',
132
+ usageBadgeDisplay: 'Status-bar quota display',
133
+ usageBadgeDisplayRecent: 'Current / most recent provider with usage',
134
+ usageBadgeDisplayHidden: 'Hidden',
135
+ usageBadgeDisplayHint: 'Saved automatically in this browser. One provider is shown at a time. Models without a quota source keep the most recent provider selected in this view, or show nothing. Hiding does not affect usage details here.',
136
+ usageBadgeDisplaySaveFailed: 'Could not save the display preference. Check browser storage permissions.',
137
+ usageBadgeCurrent: 'current',
138
+ usageBadgeModelCount: '{count} model quotas',
139
+ usageBadgeModelUnavailable: 'Current model quota unavailable',
140
+ usageBadgeMoreWindows: 'More quota windows ({count})',
141
+ speed: 'Speed',
142
+ speedStandard: 'Standard',
143
+ speedStandardDescription: 'Default speed',
144
+ speedFast: 'Fast',
145
+ speedFastDescription: '1.5x speed, more usage',
146
+ commandFast: 'Switch the Codex speed tier (Standard/Fast)',
147
+ commandFastUnavailable: 'The current model has no fast tier; /fast only works on Codex models whose catalog advertises one',
148
+ };
149
+ /** zh strings, one per {@link en} key. */
150
+ export const zh = {
151
+ accountsManage: '管理',
152
+ accountsTitle: '管理 {provider} 账号',
153
+ accountsHint: '选择参与账号池 LLM 请求的账号。退出账号池仅影响 LLM 路由,不影响工具,也不代表整个会话隔离。',
154
+ accountsLoading: '加载账号中…',
155
+ accountsLoadFailed: '账号设置加载失败:{message}',
156
+ accountsSaveFailed: '保存失败:{message}',
157
+ accountsEmpty: '暂无已连接账号,请先在服务商卡片中添加账号。',
158
+ accountsAlias: '别名(可选)',
159
+ accountsPoolEnabled: '参与 LLM 账号池',
160
+ accountsIndependent: '在模型选择器中显示独立入口',
161
+ accountsIndependentHint: '独立 LLM 路由仅使用此账号,失败时不会回退到其他账号。这不代表工具或整个会话的隔离。',
162
+ accountsModels: '账号池模型白名单',
163
+ accountsModelsAll: '全部模型',
164
+ accountsModelsCount: '已选 {count} 个',
165
+ accountsModelsHint: '仅影响账号池 LLM 路由,不限制独立入口。清空选择表示不允许任何模型。关闭参与账号池后仍保留此选择。',
166
+ accountsModelsAutomatic: '允许全部模型(包含以后新增的模型)',
167
+ accountsNoModels: '此账号暂未返回模型。',
168
+ accountsCatalogUnavailable: '暂时无法获取模型目录,已保存的模型选择会被保留。',
169
+ modelsPartialSave: '部分推理档已保存,其余更改仍保留在草稿中,请重试完成保存。',
170
+ modelsEdit: "编辑模型列表",
171
+ modelsHint: "在此配置模型显示、默认推理档、上下文与工具,底部的「保存更改」会连同账号设置一起提交。隐藏模型不影响已有会话;工具开关对新建会话生效。",
172
+ modelsAutomatic: "自动显示全部模型(包含以后新增的模型)",
173
+ modelsSelectAll: "全选",
174
+ modelsSelectNone: "清空选择",
175
+ modelsContext: "上下文(token)",
176
+ modelsContextBounds: "默认 {default} · 最大 {max}",
177
+ modelsContextHint: "留空跟随服务商。配置值按账号返回的最大窗口限制;账号池取各成员的最小窗口。此设置控制本地历史保留和压缩时机,不会扩大 API 本身的容量。",
178
+ modelsContextInvalid: "请为 {model} 输入正整数 token 数。",
179
+ modelsTools: "Provider 工具",
180
+ modelsToolsHint: "仅对保存后新建的会话生效,已有会话保留原工具。任一支持的服务商启用共享工具时,该工具仍会显示。",
181
+ modelsImage: "图片生成",
182
+ modelsVideo: "视频生成",
183
+ modelsSearch: "X 搜索",
184
+ modelsWebSearch: "网页搜索",
185
+ modelsSave: "保存更改",
186
+ modelsUnavailable: "当前不可用",
187
+ nav: '订阅',
188
+ intro: '在此登录或退出订阅服务商。点击登录会在新标签页打开服务商的授权页面;无浏览器环境可改为粘贴回调 URL 或授权码。',
189
+ unavailable: '连接不可用,无法加载订阅状态。',
190
+ checking: '查询中…',
191
+ loginInProgress: '登录中…',
192
+ notLoggedIn: '未登录',
193
+ loggedInCount: '已连接 {count} 个账号',
194
+ clientVersion: 'CLI {version} · {source}',
195
+ clientVersionNpm: 'npm 最新',
196
+ clientVersionLocal: '本机 CLI',
197
+ clientVersionFallback: '内置版本',
198
+ clientVersionConfig: '手动配置',
199
+ clientVersionHint: '请求以这个 CLI 版本号发出,新模型可能要求较新的版本。默认使用 npm 上的最新版本;npm 无法访问时使用本机 CLI 或内置版本。刷新模型列表会重新检查。',
200
+ accountExpires: '过期时间 {date}',
201
+ defaultBadge: '默认',
202
+ setDefault: '设为默认',
203
+ addAccount: '添加账号',
204
+ addAccountOAuth: '浏览器授权',
205
+ addAccountKeychain: '导入 Claude Code',
206
+ addAccountHint: '浏览器授权以浏览器当前登录的账号为准;要添加不同账号,请先在浏览器里切换账号,或用无痕窗口走下方手动授权码。',
207
+ login: '登录',
208
+ cancel: '取消',
209
+ logout: '退出登录',
210
+ logoutAccountConfirm: '确定退出 {provider} 的账号 {account} 吗?',
211
+ manualSummary: '浏览器流程无法完成?粘贴回调 URL 或授权码',
212
+ manualPlaceholder: '粘贴回调 URL 或授权码',
213
+ submit: '提交',
214
+ loginMissingUrl: 'login 响应缺少 authorizeUrl',
215
+ deviceCodePrompt: '在 GitHub 验证页面输入此验证码:',
216
+ deviceCodeCopy: '复制验证码',
217
+ deviceCodeCopied: '已复制',
218
+ deviceCodeOpenPage: '打开 GitHub 验证页面',
219
+ usageTitle: '用量',
220
+ usageRefresh: '刷新',
221
+ usageLoading: '用量加载中…',
222
+ usageEmpty: '服务商未返回任何用量窗口。',
223
+ usageError: '用量查询失败:{message}',
224
+ usageSession: '5 小时窗口',
225
+ usageWeekly: '每周',
226
+ usageMonthly: '每月',
227
+ usageWindow: '窗口',
228
+ usageResets: '{date} 重置',
229
+ usagePlan: '计划:{plan}',
230
+ externalUsageTitle: '内置供应商用量',
231
+ externalUsageConnected: '已配置 API 密钥',
232
+ externalUsageNotConfigured: '未配置',
233
+ externalUsageApiKey: 'API 密钥',
234
+ externalUsageConfigure: '未在 {ref} 找到 API 密钥。请在「设置 → 模型」中添加。',
235
+ externalUsageUnavailable: '无法获取用量状态:{message}',
236
+ cursorTitle: 'Cursor',
237
+ cursorOpenLogin: '打开 Cursor 登录页面',
238
+ cursorWaiting: '等待 Cursor 登录…',
239
+ cursorConnected: '已连接',
240
+ cursorManageTitle: '管理 Cursor',
241
+ cursorManageSignIn: '登录后可查看此 Cursor 账号可用的模型。',
242
+ cursorAccountsHint: 'Cursor 使用一个已连接账号。可在此选择模型选择器中显示的模型。',
243
+ cursorManageHint: '在此选择模型是否显示。刷新可从 Cursor 获取当前模型;保存更改后更新模型选择器。',
244
+ cursorFilterModels: '筛选模型',
245
+ cursorModelsLoading: '正在加载 Cursor 模型…',
246
+ cursorModelsError: '无法加载 Cursor 模型:{message}',
247
+ cursorModelsCount: '可用模型:{count} 个',
248
+ cursorIncluded: '套餐内用量',
249
+ cursorModels: 'Cursor 模型',
250
+ cursorOtherModels: '其他模型',
251
+ cursorIncludedRequests: '套餐内请求',
252
+ modelDefaultsTitle: '默认推理档',
253
+ modelDefaultsHint: '切换到该模型时,模型选择器会预选此档位;没有推理档的模型始终跟随服务商默认。',
254
+ modelDefaultsFollowProvider: '跟随服务商',
255
+ modelDefaultsNoLevels: '{count} 个模型未声明推理档,始终跟随服务商默认。',
256
+ modelDefaultsLoading: '加载模型中…',
257
+ modelDefaultsLoadFailed: '模型加载失败:{message}',
258
+ modelDefaultsRetry: '重试',
259
+ modelDefaultsRefresh: '刷新模型列表(全部订阅)',
260
+ modelDefaultsSaving: '保存中…',
261
+ modelDefaultsSaveFailedNamed: '{model} 保存失败:{message}',
262
+ modelDefaultsSummary: '{total} 个模型 · {configured} 个已覆盖',
263
+ modelDefaultsSummaryNone: '{total} 个模型 · 全部跟随服务商',
264
+ modelDefaultsSummaryEmpty: '没有模型声明推理档',
265
+ modelDefaultsFilterPlaceholder: '筛选模型',
266
+ modelDefaultsFilterEmpty: '没有匹配「{query}」的模型。',
267
+ generating: '正在生成图片…',
268
+ image: '图片',
269
+ viewImage: '查看图片',
270
+ viewImageNamed: '查看 {name}',
271
+ imageLoading: '加载中…',
272
+ imageLoadFailed: '重试',
273
+ imagePreview: '图片预览',
274
+ imageClose: '关闭',
275
+ generatingVideo: '正在生成视频…',
276
+ videoLoading: '视频加载中…',
277
+ videoLoadFailed: '视频加载失败:{message}',
278
+ usageBadgeTitle: '服务商用量',
279
+ usageBadgeDisplay: '状态栏额度显示',
280
+ usageBadgeDisplayRecent: '仅显示当前/最近使用的用量服务商',
281
+ usageBadgeDisplayHidden: '不显示',
282
+ usageBadgeDisplayHint: '自动保存到当前浏览器。状态栏一次显示一家服务商;没有额度来源的模型沿用本视图最近选择的服务商,没有记录则隐藏。关闭不影响本页的额度详情。',
283
+ usageBadgeDisplaySaveFailed: '显示设置保存失败,请检查浏览器存储权限。',
284
+ usageBadgeCurrent: '当前',
285
+ usageBadgeModelCount: '{count} 个模型配额',
286
+ usageBadgeModelUnavailable: '当前模型暂无配额数据',
287
+ usageBadgeMoreWindows: '更多配额窗口({count})',
288
+ speed: '速度',
289
+ speedStandard: '标准',
290
+ speedStandardDescription: '默认速度',
291
+ speedFast: '快速',
292
+ speedFastDescription: '约 1.5 倍速度,消耗更多用量',
293
+ commandFast: '切换 Codex 速度档(标准/快速)',
294
+ commandFastUnavailable: '当前模型不支持快速档;/fast 仅对目录声明了 fast tier 的 Codex 模型可用',
295
+ };
@@ -0,0 +1,3 @@
1
+ import type { CSSProperties } from 'react';
2
+ /** Shared visual language for OAuth, Cursor, and built-in provider cards. */
3
+ export declare const subscriptionCardStyles: Record<string, CSSProperties>;
@@ -0,0 +1,53 @@
1
+ /** Shared visual language for OAuth, Cursor, and built-in provider cards. */
2
+ export const subscriptionCardStyles = {
3
+ card: {
4
+ border: '1px solid var(--dsw-alias-border-l2)', borderRadius: 12,
5
+ padding: '12px 14px', display: 'flex', flexDirection: 'column', gap: 6,
6
+ color: 'var(--dsw-alias-label-primary)',
7
+ },
8
+ header: { display: 'flex', alignItems: 'center', gap: 8 },
9
+ dot: { width: 8, height: 8, borderRadius: '50%', flexShrink: 0 },
10
+ name: { fontWeight: 500, fontSize: 14, lineHeight: '22px', color: 'var(--dsw-alias-label-primary)' },
11
+ status: { margin: 0, fontSize: 12, lineHeight: '18px', color: 'var(--dsw-alias-label-tertiary)' },
12
+ error: { margin: 0, fontSize: 12, lineHeight: '18px', color: 'var(--dsw-alias-state-error-primary)' },
13
+ actions: { display: 'flex', gap: 8, marginTop: 4, alignItems: 'center', flexWrap: 'wrap' },
14
+ button: {
15
+ boxSizing: 'border-box', display: 'inline-flex', alignItems: 'center', justifyContent: 'center',
16
+ height: 28, padding: '0 10px', borderRadius: 14,
17
+ border: '1px solid var(--dsw-alias-border-l2)', background: 'transparent',
18
+ color: 'var(--dsw-alias-label-primary)', font: 'inherit', fontSize: 12, lineHeight: '18px',
19
+ cursor: 'pointer',
20
+ },
21
+ account: {
22
+ display: 'flex', flexDirection: 'column', gap: 6,
23
+ border: '1px solid var(--dsw-alias-border-l2)', borderRadius: 8,
24
+ padding: '8px 10px', marginTop: 4,
25
+ },
26
+ accountHeader: { display: 'flex', alignItems: 'center', gap: 8 },
27
+ accountName: { fontSize: 13, lineHeight: '20px', color: 'var(--dsw-alias-label-primary)', userSelect: 'all' },
28
+ defaultStar: { color: 'var(--dsw-alias-state-warn-label)' },
29
+ usage: {
30
+ display: 'flex', flexDirection: 'column', gap: 6, marginTop: 4,
31
+ borderTop: '1px solid var(--dsw-alias-border-l2)', paddingTop: 8,
32
+ },
33
+ usageHeader: { display: 'flex', alignItems: 'center', gap: 8 },
34
+ usageTitle: { fontSize: 12, lineHeight: '18px', fontWeight: 500, color: 'var(--dsw-alias-label-secondary)' },
35
+ usagePlan: { fontSize: 12, lineHeight: '18px', color: 'var(--dsw-alias-label-tertiary)' },
36
+ usageRefresh: {
37
+ boxSizing: 'border-box', display: 'inline-flex', alignItems: 'center', justifyContent: 'center',
38
+ height: 22, padding: '0 8px', borderRadius: 11, marginLeft: 'auto',
39
+ border: '1px solid var(--dsw-alias-border-l2)', background: 'transparent',
40
+ color: 'var(--dsw-alias-label-secondary)', font: 'inherit', fontSize: 12, lineHeight: '18px',
41
+ cursor: 'pointer',
42
+ },
43
+ usageRow: { display: 'flex', flexDirection: 'column', gap: 3 },
44
+ usageMeta: {
45
+ display: 'flex', justifyContent: 'space-between', gap: 8,
46
+ fontSize: 12, lineHeight: '18px', color: 'var(--dsw-alias-label-tertiary)',
47
+ },
48
+ usageTrack: {
49
+ height: 6, borderRadius: 3, overflow: 'hidden',
50
+ background: 'var(--dsw-alias-bg-layer-1)', border: '1px solid var(--dsw-alias-border-l2)',
51
+ },
52
+ usageFill: { height: '100%', borderRadius: 3 },
53
+ };
@@ -0,0 +1,14 @@
1
+ import type { ConnectionHandle } from '@deepseek-ai/dsh-api-remotes/client';
2
+ /** Business error returned by a `subscriptions-auth` endpoint (error branch message). */
3
+ export declare class SubscriptionsAuthError extends Error {
4
+ }
5
+ /**
6
+ * Call one `subscriptions-auth` endpoint and unwrap the business result.
7
+ * Shared by the settings section, the composer Speed toggle, the usage
8
+ * badge, and the image/video toolviews.
9
+ * @param rpc - Connection RPC caller.
10
+ * @param endpoint - endpoint name (`status`, `usage`, `image`, ...).
11
+ * @param payload - endpoint-owned request payload.
12
+ * @returns the success value, cast by the caller to the endpoint's shape.
13
+ */
14
+ export declare function callSubscriptionsAuth<T>(rpc: ConnectionHandle['rpc'], endpoint: string, payload: unknown): Promise<T>;