dsh-keys-manager 0.0.0 → 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
package/lib/store.d.ts ADDED
@@ -0,0 +1,62 @@
1
+ import type { KeyRecord, ProviderRecord, StateDocument } from './domain.js';
2
+ export declare const STATE_VERSION: 1;
3
+ export declare const STATE_DIRNAME = "keys-manager";
4
+ export declare const STATE_FILENAME = "state.json";
5
+ /** State document plus a non-fatal load diagnostic. */
6
+ export type LoadedState = StateDocument & {
7
+ loadError?: string;
8
+ readOnly?: boolean;
9
+ };
10
+ /** Resolve the durable state directory for the current Harness home. */
11
+ export declare function stateDirectory(env?: NodeJS.ProcessEnv, home?: string): string;
12
+ /** Resolve the complete state file path. */
13
+ export declare function statePath(env?: NodeJS.ProcessEnv, home?: string): string;
14
+ /** Fresh, empty state. */
15
+ export declare function emptyState(): StateDocument;
16
+ /** Sanitize a whole document, dropping anything the current schema cannot express. */
17
+ export declare function sanitizeState(raw: unknown): StateDocument;
18
+ /** Read a state file; only parse corruption is preserved and reset. */
19
+ export declare function readStateFile(file: string): LoadedState;
20
+ export interface KeysManagerStoreOptions {
21
+ warn?: (message: string) => void;
22
+ }
23
+ /** Durable store with a debounced atomic writer. */
24
+ export declare class KeysManagerStore {
25
+ readonly file: string;
26
+ state: StateDocument;
27
+ loadError: string | undefined;
28
+ readonly readOnly: boolean;
29
+ private readonly warn;
30
+ private dirty;
31
+ private timer;
32
+ private writeChain;
33
+ private closed;
34
+ constructor(file: string, options?: KeysManagerStoreOptions);
35
+ get settings(): import("./domain.js").ManagerSettings;
36
+ get providers(): Record<string, ProviderRecord>;
37
+ provider(id: string): ProviderRecord | undefined;
38
+ key(providerId: string, keyId: string): KeyRecord | undefined;
39
+ bind(sessionId: string, providerId: string, keyId: string, now?: number): void;
40
+ binding(sessionId: string, providerId: string): {
41
+ keyId: string;
42
+ boundAt: number;
43
+ } | undefined;
44
+ clearBindings(predicate?: (key: string, binding: {
45
+ keyId: string;
46
+ boundAt: number;
47
+ }) => boolean): void;
48
+ /** Drop session bindings older than the TTL; safe to call periodically. */
49
+ pruneBindings(now?: number): boolean;
50
+ /** Mark state dirty and schedule a write. */
51
+ touch(): void;
52
+ /** Persist pending changes now, serialized after any in-flight write. */
53
+ flush(): Promise<void>;
54
+ /** Stop the timer and persist once. */
55
+ close(): Promise<void>;
56
+ }
57
+ /**
58
+ * Synchronous bootstrap used by a Host plugin before its first request:
59
+ * ensure the directory exists and, when the file is absent, write an empty
60
+ * state once. The regular debounced writer owns later updates.
61
+ */
62
+ export declare function ensureStateFile(file: string): void;
package/lib/store.js ADDED
@@ -0,0 +1,432 @@
1
+ /**
2
+ * Durable, secret-free state for the Keys Manager.
3
+ *
4
+ * The file at `<DSH_HOME>/keys-manager/state.json` holds provider/key
5
+ * metadata only: aliases, refs, health, counters, and session bindings. API
6
+ * key literals live in the Harness credential store under each key's
7
+ * `ref`, and OAuth account grant payloads live there too, behind the
8
+ * account row's `oauth.grantRef`. The shape is deliberately additive so
9
+ * `kind: 'oauth'` rows sit beside `kind: 'api-key'` without a migration
10
+ * that rewrites existing rows.
11
+ */
12
+ import { mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
13
+ import { chmod, mkdir, rename, writeFile } from 'node:fs/promises';
14
+ import { dirname, join } from 'node:path';
15
+ import { homedir } from 'node:os';
16
+ import { normalizeCursor, normalizeSettings } from './core.js';
17
+ export const STATE_VERSION = 1;
18
+ export const STATE_DIRNAME = 'keys-manager';
19
+ export const STATE_FILENAME = 'state.json';
20
+ const BINDING_TTL_MS = 30 * 24 * 60 * 60 * 1000;
21
+ /** Resolve the durable state directory for the current Harness home. */
22
+ export function stateDirectory(env = process.env, home = homedir()) {
23
+ const dshHome = typeof env.DSH_HOME === 'string' && env.DSH_HOME.length > 0 ? env.DSH_HOME : join(home, '.dsh');
24
+ return join(dshHome, STATE_DIRNAME);
25
+ }
26
+ /** Resolve the complete state file path. */
27
+ export function statePath(env = process.env, home = homedir()) {
28
+ return join(stateDirectory(env, home), STATE_FILENAME);
29
+ }
30
+ /** Fresh, empty state. */
31
+ export function emptyState() {
32
+ return {
33
+ version: STATE_VERSION,
34
+ settings: normalizeSettings(undefined),
35
+ providers: {},
36
+ sessionBindings: {},
37
+ };
38
+ }
39
+ function numberOr(value, fallback) {
40
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
41
+ }
42
+ function integerOr(value, fallback) {
43
+ return typeof value === 'number' && Number.isInteger(value) && value >= 0 ? value : fallback;
44
+ }
45
+ /**
46
+ * Normalize one persisted OAuth account payload to the typed shape.
47
+ *
48
+ * Only the reference + metadata fields survive, so a stray token payload can
49
+ * never reach the state document. Legacy placeholder objects (pre-account
50
+ * builds) lack the required `provider`/`grantRef` pair and normalize to
51
+ * null, which keeps those rows loadable unchanged.
52
+ */
53
+ function sanitizeOAuthAccount(raw) {
54
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
55
+ return null;
56
+ const source = raw;
57
+ if (typeof source.provider !== 'string' || source.provider.length === 0)
58
+ return null;
59
+ if (typeof source.grantRef !== 'string' || source.grantRef.length === 0)
60
+ return null;
61
+ const account = { provider: source.provider, grantRef: source.grantRef };
62
+ if (typeof source.email === 'string')
63
+ account.email = source.email;
64
+ if (typeof source.accountId === 'string')
65
+ account.accountId = source.accountId;
66
+ if (typeof source.expiresAt === 'number' && Number.isFinite(source.expiresAt))
67
+ account.expiresAt = source.expiresAt;
68
+ return account;
69
+ }
70
+ /** Strip any accidental secret-looking field from a key record. */
71
+ function sanitizeKey(raw) {
72
+ if (raw === null || typeof raw !== 'object')
73
+ return undefined;
74
+ const source = raw;
75
+ if (typeof source.id !== 'string' || source.id.length === 0)
76
+ return undefined;
77
+ if (typeof source.ref !== 'string' || source.ref.length === 0)
78
+ return undefined;
79
+ const kind = source.kind === 'oauth' ? 'oauth' : 'api-key';
80
+ return {
81
+ id: source.id,
82
+ alias: typeof source.alias === 'string' && source.alias.length > 0 ? source.alias.slice(0, 80) : 'Key',
83
+ ref: source.ref,
84
+ kind,
85
+ enabled: source.enabled !== false,
86
+ createdAt: numberOr(source.createdAt, Date.now()),
87
+ lastUsedAt: numberOr(source.lastUsedAt, 0),
88
+ cooldownUntil: numberOr(source.cooldownUntil, 0),
89
+ lastFailureAt: numberOr(source.lastFailureAt, 0),
90
+ lastFailureCode: typeof source.lastFailureCode === 'string' ? source.lastFailureCode : '',
91
+ failureLevel: integerOr(source.failureLevel, 0),
92
+ consecutiveFailures: integerOr(source.consecutiveFailures, 0),
93
+ totalUses: integerOr(source.totalUses, 0),
94
+ totalFailures: integerOr(source.totalFailures, 0),
95
+ // The flag carries two meanings, split by row kind:
96
+ // - api-key rows cache a transient credential read failure. The credential
97
+ // may be healthy again, so re-probe on the next selection instead of
98
+ // carrying a permanent marker across restarts.
99
+ // - oauth rows persist the demotion marker. A demoted row no longer
100
+ // serves the provider and the projection is gone, so a restarted process
101
+ // cannot re-identify an owner; dropping the marker would resurrect the
102
+ // row as active/healthy once its cooldown expires.
103
+ valueMissing: kind === 'oauth' ? source.valueMissing === true : false,
104
+ importedFrom: typeof source.importedFrom === 'string' ? source.importedFrom : null,
105
+ oauth: sanitizeOAuthAccount(source.oauth),
106
+ };
107
+ }
108
+ function sanitizeModels(raw) {
109
+ if (!Array.isArray(raw))
110
+ return [];
111
+ const models = [];
112
+ for (const entry of raw) {
113
+ if (entry === null || typeof entry !== 'object')
114
+ continue;
115
+ const source = entry;
116
+ if (typeof source.id !== 'string' || source.id.length === 0)
117
+ continue;
118
+ const model = { id: source.id };
119
+ if (typeof source.name === 'string')
120
+ model.name = source.name;
121
+ if (typeof source.contextWindow === 'number')
122
+ model.contextWindow = source.contextWindow;
123
+ if (typeof source.maxTokens === 'number')
124
+ model.maxTokens = source.maxTokens;
125
+ if (Array.isArray(source.input)) {
126
+ model.input = source.input.filter((value) => value === 'text' || value === 'image');
127
+ }
128
+ if (source.reasoningEfforts !== null && typeof source.reasoningEfforts === 'object') {
129
+ model.reasoningEfforts = source.reasoningEfforts;
130
+ }
131
+ if (source.compat !== null && typeof source.compat === 'object') {
132
+ model.compat = source.compat;
133
+ }
134
+ models.push(model);
135
+ }
136
+ return models;
137
+ }
138
+ /** Validate one persisted provider record. */
139
+ function sanitizeProvider(raw) {
140
+ if (raw === null || typeof raw !== 'object')
141
+ return undefined;
142
+ const source = raw;
143
+ if (typeof source.provider !== 'string' || source.provider.length === 0)
144
+ return undefined;
145
+ const settingsPath = Array.isArray(source.settingsPath)
146
+ ? source.settingsPath.filter((part) => typeof part === 'string')
147
+ : [];
148
+ const keys = Array.isArray(source.keys) ? source.keys.map(sanitizeKey).filter((key) => key !== undefined) : [];
149
+ return {
150
+ provider: source.provider,
151
+ displayName: typeof source.displayName === 'string' && source.displayName.length > 0 ? source.displayName : source.provider,
152
+ source: source.source === 'extra' ? 'extra' : 'dsh',
153
+ settingsNs: typeof source.settingsNs === 'string' ? source.settingsNs : 'llm-pi-ai',
154
+ settingsPath,
155
+ adapter: source.adapter === 'deepseek' ? 'deepseek' : 'pi-ai',
156
+ brokerRef: typeof source.brokerRef === 'string' ? source.brokerRef : '',
157
+ originalApiKeyEnv: typeof source.originalApiKeyEnv === 'string' && source.originalApiKeyEnv.length > 0 ? source.originalApiKeyEnv : null,
158
+ createdProfile: source.createdProfile === true,
159
+ hadProfile: source.hadProfile === true,
160
+ extraId: typeof source.extraId === 'string' ? source.extraId : null,
161
+ api: typeof source.api === 'string' ? source.api : null,
162
+ baseURL: typeof source.baseURL === 'string' ? source.baseURL : null,
163
+ models: sanitizeModels(source.models),
164
+ adoptedAt: numberOr(source.adoptedAt, Date.now()),
165
+ cursor: normalizeCursor(typeof source.cursor === 'number' ? source.cursor : 0, keys.length),
166
+ keys,
167
+ };
168
+ }
169
+ /** Sanitize a whole document, dropping anything the current schema cannot express. */
170
+ export function sanitizeState(raw) {
171
+ const state = emptyState();
172
+ if (raw === null || typeof raw !== 'object')
173
+ return state;
174
+ const source = raw;
175
+ state.settings = normalizeSettings(source.settings);
176
+ if (source.providers !== null && typeof source.providers === 'object' && !Array.isArray(source.providers)) {
177
+ for (const [id, provider] of Object.entries(source.providers)) {
178
+ const clean = sanitizeProvider(provider);
179
+ if (clean !== undefined && clean.provider === id)
180
+ state.providers[id] = clean;
181
+ }
182
+ }
183
+ if (source.sessionBindings !== null && typeof source.sessionBindings === 'object' && !Array.isArray(source.sessionBindings)) {
184
+ const now = Date.now();
185
+ for (const [key, binding] of Object.entries(source.sessionBindings)) {
186
+ if (binding === null || typeof binding !== 'object')
187
+ continue;
188
+ const record = binding;
189
+ const keyId = typeof record.keyId === 'string' ? record.keyId : '';
190
+ const boundAt = numberOr(record.boundAt, 0);
191
+ if (keyId.length === 0 || now - boundAt > BINDING_TTL_MS)
192
+ continue;
193
+ state.sessionBindings[key] = { keyId, boundAt };
194
+ }
195
+ }
196
+ return state;
197
+ }
198
+ /** Read a state file; only parse corruption is preserved and reset. */
199
+ export function readStateFile(file) {
200
+ let stats;
201
+ try {
202
+ stats = statSync(file);
203
+ }
204
+ catch (error) {
205
+ if (error.code === 'ENOENT')
206
+ return emptyState();
207
+ return {
208
+ ...emptyState(),
209
+ readOnly: true,
210
+ loadError: `Could not inspect ${file}: ${error instanceof Error ? error.message : String(error)}`,
211
+ };
212
+ }
213
+ if (!stats.isFile()) {
214
+ return {
215
+ ...emptyState(),
216
+ readOnly: true,
217
+ loadError: `${file} is not a regular file; refusing to overwrite it.`,
218
+ };
219
+ }
220
+ let text;
221
+ try {
222
+ text = readFileSync(file, 'utf8');
223
+ }
224
+ catch (error) {
225
+ // A read failure is not corruption. Keep the file untouched and refuse to
226
+ // overwrite it; the manager starts read-only/in-memory.
227
+ return {
228
+ ...emptyState(),
229
+ readOnly: true,
230
+ loadError: `Could not read ${file}: ${error instanceof Error ? error.message : String(error)}`,
231
+ };
232
+ }
233
+ let parsed;
234
+ try {
235
+ parsed = JSON.parse(text);
236
+ }
237
+ catch (error) {
238
+ const stamp = new Date().toISOString().replace(/[:.]/g, '-');
239
+ const backup = `${file}.corrupt-${stamp}`;
240
+ let preserved = false;
241
+ try {
242
+ renameSync(file, backup);
243
+ preserved = true;
244
+ }
245
+ catch {
246
+ // Keep the original bytes if the backup could not be created.
247
+ }
248
+ return {
249
+ ...emptyState(),
250
+ readOnly: !preserved,
251
+ loadError: preserved
252
+ ? `State file was corrupt; preserved at ${backup} (${error instanceof Error ? error.message : String(error)})`
253
+ : `State file was corrupt and could not be backed up; refusing to overwrite it (${error instanceof Error ? error.message : String(error)})`,
254
+ };
255
+ }
256
+ const version = parsed !== null && typeof parsed === 'object' ? parsed.version : undefined;
257
+ if (version !== undefined && version !== STATE_VERSION) {
258
+ return {
259
+ ...emptyState(),
260
+ readOnly: true,
261
+ loadError: `Unsupported state schema version ${String(version)}; refusing to overwrite ${file}.`,
262
+ };
263
+ }
264
+ return sanitizeState(parsed);
265
+ }
266
+ /** Durable store with a debounced atomic writer. */
267
+ export class KeysManagerStore {
268
+ file;
269
+ state;
270
+ loadError;
271
+ readOnly;
272
+ warn;
273
+ dirty = false;
274
+ timer;
275
+ writeChain = Promise.resolve();
276
+ closed = false;
277
+ constructor(file, options = {}) {
278
+ this.file = file;
279
+ this.warn = options.warn ?? (() => { });
280
+ const loaded = readStateFile(file);
281
+ this.loadError = loaded.loadError;
282
+ this.readOnly = loaded.readOnly === true;
283
+ const { loadError: _loadError, readOnly: _readOnly, ...state } = loaded;
284
+ this.state = state;
285
+ }
286
+ get settings() {
287
+ return this.state.settings;
288
+ }
289
+ get providers() {
290
+ return this.state.providers;
291
+ }
292
+ provider(id) {
293
+ return this.state.providers[id];
294
+ }
295
+ key(providerId, keyId) {
296
+ return this.state.providers[providerId]?.keys.find(key => key.id === keyId);
297
+ }
298
+ bind(sessionId, providerId, keyId, now = Date.now()) {
299
+ if (sessionId.length === 0)
300
+ return;
301
+ this.state.sessionBindings[`${sessionId}\u0000${providerId}`] = { keyId, boundAt: now };
302
+ this.touch();
303
+ }
304
+ binding(sessionId, providerId) {
305
+ if (sessionId.length === 0)
306
+ return undefined;
307
+ return this.state.sessionBindings[`${sessionId}\u0000${providerId}`];
308
+ }
309
+ clearBindings(predicate) {
310
+ let changed = false;
311
+ for (const key of Object.keys(this.state.sessionBindings)) {
312
+ const binding = this.state.sessionBindings[key];
313
+ if (predicate === undefined || predicate(key, binding)) {
314
+ delete this.state.sessionBindings[key];
315
+ changed = true;
316
+ }
317
+ }
318
+ if (changed)
319
+ this.touch();
320
+ }
321
+ /** Drop session bindings older than the TTL; safe to call periodically. */
322
+ pruneBindings(now = Date.now()) {
323
+ let changed = false;
324
+ for (const [key, binding] of Object.entries(this.state.sessionBindings)) {
325
+ if (now - binding.boundAt > BINDING_TTL_MS) {
326
+ delete this.state.sessionBindings[key];
327
+ changed = true;
328
+ }
329
+ }
330
+ if (changed)
331
+ this.touch();
332
+ return changed;
333
+ }
334
+ /** Mark state dirty and schedule a write. */
335
+ touch() {
336
+ if (this.closed || this.readOnly)
337
+ return;
338
+ this.dirty = true;
339
+ if (this.timer !== undefined)
340
+ return;
341
+ this.timer = setTimeout(() => {
342
+ this.timer = undefined;
343
+ void this.flush().catch(error => {
344
+ this.warn(`keys-manager: failed to persist state: ${error instanceof Error ? error.message : String(error)}`);
345
+ });
346
+ }, 150);
347
+ this.timer.unref?.();
348
+ }
349
+ /** Persist pending changes now, serialized after any in-flight write. */
350
+ flush() {
351
+ if (this.timer !== undefined) {
352
+ clearTimeout(this.timer);
353
+ this.timer = undefined;
354
+ }
355
+ if (this.readOnly) {
356
+ this.dirty = false;
357
+ return this.writeChain;
358
+ }
359
+ if (!this.dirty)
360
+ return this.writeChain;
361
+ this.dirty = false;
362
+ // Sanitize at the write boundary too: whatever a caller put into memory,
363
+ // only the typed, secret-free schema may reach the state document.
364
+ const snapshot = JSON.stringify(sanitizeState(this.state), null, 2);
365
+ const file = this.file;
366
+ const attempt = this.writeChain.then(async () => {
367
+ try {
368
+ await mkdir(dirname(file), { recursive: true, mode: 0o700 });
369
+ const temp = `${file}.${process.pid}.${Date.now()}.tmp`;
370
+ await writeFile(temp, snapshot, { mode: 0o600 });
371
+ await rename(temp, file);
372
+ try {
373
+ await chmod(file, 0o600);
374
+ }
375
+ catch {
376
+ // Non-POSIX platforms have no mode to tighten.
377
+ }
378
+ }
379
+ catch (error) {
380
+ // Keep the latest snapshot pending and let an explicit flush retry it.
381
+ this.dirty = true;
382
+ throw error;
383
+ }
384
+ });
385
+ // The internal chain must stay usable after a rejected attempt; callers
386
+ // that care about the result receive `attempt` itself.
387
+ this.writeChain = attempt.catch(() => { });
388
+ return attempt;
389
+ }
390
+ /** Stop the timer and persist once. */
391
+ async close() {
392
+ this.closed = true;
393
+ if (this.readOnly)
394
+ return;
395
+ if (this.timer !== undefined) {
396
+ clearTimeout(this.timer);
397
+ this.timer = undefined;
398
+ }
399
+ this.dirty = true;
400
+ try {
401
+ await this.flush();
402
+ }
403
+ catch (error) {
404
+ this.warn(`keys-manager: failed to persist state on close: ${error instanceof Error ? error.message : String(error)}`);
405
+ }
406
+ }
407
+ }
408
+ /**
409
+ * Synchronous bootstrap used by a Host plugin before its first request:
410
+ * ensure the directory exists and, when the file is absent, write an empty
411
+ * state once. The regular debounced writer owns later updates.
412
+ */
413
+ export function ensureStateFile(file) {
414
+ try {
415
+ statSync(file);
416
+ return;
417
+ }
418
+ catch (error) {
419
+ if (error.code !== 'ENOENT')
420
+ return;
421
+ }
422
+ try {
423
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
424
+ const temp = `${file}.${process.pid}.tmp`;
425
+ writeFileSync(temp, JSON.stringify(emptyState(), null, 2), { mode: 0o600 });
426
+ renameSync(temp, file);
427
+ }
428
+ catch {
429
+ // A read-only home still serves in-memory state.
430
+ }
431
+ }
432
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/locale/en.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "meta": {
3
+ "title": "Keys Manager",
4
+ "description": "Multiple API keys per provider with sticky sessions, round-robin selection, retry failover, cooldown recovery, and searchable extra providers."
5
+ },
6
+ "addAccount": "Add account",
7
+ "adoptAccountTitle": "Sign in with an OAuth account to use this provider.",
8
+ "accountIdentity": "Account",
9
+ "accountProjected": "Serving provider",
10
+ "accountReauth": "Re-authenticate",
11
+ "accountActivate": "Set active",
12
+ "keyStatusEmpty": "No keys",
13
+ "noKeysAccount": "No accounts yet. Add an account to make this provider usable.",
14
+ "loginTitle": "Account sign-in",
15
+ "loginPending": "Waiting for authorization…",
16
+ "loginBrowserOpen": "Open in browser",
17
+ "loginPromptTitle": "Complete sign-in",
18
+ "loginPromptSubmit": "Submit",
19
+ "loginFailed": "Login failed",
20
+ "loginFlowEnded": "This sign-in session has ended. Close the dialog and start again.",
21
+ "loginReady": "Signed in.",
22
+ "deleteAccountTitle": "Delete account “{alias}”?",
23
+ "deleteAccountBody": "This removes the account’s stored OAuth grant from the credential store. If it is the active account, the provider route stops serving it and falls back to its API-key pool; the provider stays managed.",
24
+ "deleteAccountBodyNoKeys": "This removes the account’s stored OAuth grant from the credential store. This route has no API-key pool, so it stops serving requests until an account is signed in again."
25
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "meta": {
3
+ "title": "密钥管理",
4
+ "description": "为同一个 Provider 配置多个 API Key,支持单会话固定、Round Robin、重试切换、冷却恢复,并提供可搜索的扩展 Provider。"
5
+ },
6
+ "addAccount": "添加账户",
7
+ "adoptAccountTitle": "使用 OAuth 账户登录后即可使用该 Provider。",
8
+ "accountIdentity": "账户",
9
+ "accountProjected": "服务中",
10
+ "accountReauth": "重新认证",
11
+ "accountActivate": "设为当前",
12
+ "keyStatusEmpty": "暂无密钥",
13
+ "noKeysAccount": "还没有账户。添加一个账户后即可使用该 Provider。",
14
+ "loginTitle": "账户登录",
15
+ "loginPending": "等待授权…",
16
+ "loginBrowserOpen": "在浏览器中打开",
17
+ "loginPromptTitle": "完成登录",
18
+ "loginPromptSubmit": "提交",
19
+ "loginFailed": "登录失败",
20
+ "loginFlowEnded": "本次登录流程已结束,请关闭窗口后重新开始。",
21
+ "loginReady": "登录成功。",
22
+ "deleteAccountTitle": "删除账户“{alias}”?",
23
+ "deleteAccountBody": "这会从凭证库中删除该账户保存的 OAuth 授权。如果它是当前账户,该 Provider 路由将停用它并回落到 API-key 池;Provider 仍保持接管状态。",
24
+ "deleteAccountBodyNoKeys": "这会从凭证库中删除该账户保存的 OAuth 授权。该路由没有 API-key 池,删除后将停止服务,直到重新登录账户。"
25
+ }