opencode-kimi-rotator 1.0.1 ā 1.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.
- package/README.md +396 -49
- package/bin/cli.js +340 -8
- package/dist/accounts.d.ts +8 -1
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +77 -8
- package/dist/accounts.js.map +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +45 -10
- package/dist/plugin.js.map +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +5 -5
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/package.json +16 -5
- package/src/plugin.ts +67 -24
package/bin/cli.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { KimiAccountManager } from '../dist/accounts.js';
|
|
4
|
+
import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'crypto';
|
|
5
|
+
import { promises as fs } from 'fs';
|
|
6
|
+
import { Buffer } from 'buffer';
|
|
4
7
|
|
|
5
8
|
const args = process.argv.slice(2);
|
|
6
9
|
const command = args[0];
|
|
7
10
|
|
|
11
|
+
const ENCRYPTION_ALGORITHM = 'aes-256-gcm';
|
|
12
|
+
const SALT_LENGTH = 32;
|
|
13
|
+
const IV_LENGTH = 16;
|
|
14
|
+
const AUTH_TAG_LENGTH = 16;
|
|
15
|
+
const KEY_LENGTH = 32;
|
|
16
|
+
|
|
8
17
|
async function main() {
|
|
9
18
|
const manager = new KimiAccountManager();
|
|
10
19
|
await manager.init();
|
|
@@ -29,6 +38,24 @@ async function main() {
|
|
|
29
38
|
case 'set-strategy':
|
|
30
39
|
await setStrategy(manager, args.slice(1));
|
|
31
40
|
break;
|
|
41
|
+
case 'stats':
|
|
42
|
+
await showStats(manager);
|
|
43
|
+
break;
|
|
44
|
+
case 'refresh-health':
|
|
45
|
+
await refreshHealth(manager);
|
|
46
|
+
break;
|
|
47
|
+
case 'set-auto-refresh':
|
|
48
|
+
await setAutoRefresh(manager, args.slice(1));
|
|
49
|
+
break;
|
|
50
|
+
case 'set-cooldown':
|
|
51
|
+
await setCooldown(manager, args.slice(1));
|
|
52
|
+
break;
|
|
53
|
+
case 'export-keys':
|
|
54
|
+
await exportKeys(manager, args.slice(1));
|
|
55
|
+
break;
|
|
56
|
+
case 'import-keys':
|
|
57
|
+
await importKeys(manager, args.slice(1));
|
|
58
|
+
break;
|
|
32
59
|
case 'help':
|
|
33
60
|
default:
|
|
34
61
|
showHelp();
|
|
@@ -132,7 +159,9 @@ async function listKeys(manager) {
|
|
|
132
159
|
const fullConfig = await storage.loadConfig();
|
|
133
160
|
const activeIndex = fullConfig.activeIndex;
|
|
134
161
|
|
|
135
|
-
console.log(
|
|
162
|
+
console.log(
|
|
163
|
+
`\nKimi API Keys (${accounts.length} total, strategy: ${fullConfig.rotationStrategy}):\n`
|
|
164
|
+
);
|
|
136
165
|
|
|
137
166
|
accounts.forEach((account, index) => {
|
|
138
167
|
const isActive = index === activeIndex;
|
|
@@ -223,19 +252,318 @@ async function setStrategy(manager, args) {
|
|
|
223
252
|
console.log(`ā Rotation strategy set to: ${strategy}`);
|
|
224
253
|
}
|
|
225
254
|
|
|
255
|
+
async function showStats(manager) {
|
|
256
|
+
const accounts = await manager.listKeys();
|
|
257
|
+
|
|
258
|
+
if (accounts.length === 0) {
|
|
259
|
+
console.log('No Kimi API keys configured.');
|
|
260
|
+
console.log('Run: opencode-kimi add-key <your-api-key>');
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
console.log('\nš Usage Statistics\n');
|
|
265
|
+
|
|
266
|
+
let totalRequests = 0;
|
|
267
|
+
let totalSuccessful = 0;
|
|
268
|
+
let totalResponseTimes = [];
|
|
269
|
+
const today = new Date().toISOString().split('T')[0];
|
|
270
|
+
const last7Days = getLast7Days();
|
|
271
|
+
|
|
272
|
+
accounts.forEach((account, index) => {
|
|
273
|
+
console.log(`[${index}] ${account.name}`);
|
|
274
|
+
console.log(` Total Requests: ${account.totalRequests}`);
|
|
275
|
+
console.log(` Successful: ${account.successfulRequests}`);
|
|
276
|
+
console.log(` Failed: ${account.totalRequests - account.successfulRequests}`);
|
|
277
|
+
|
|
278
|
+
if (account.totalRequests > 0) {
|
|
279
|
+
const successRate = ((account.successfulRequests / account.totalRequests) * 100).toFixed(1);
|
|
280
|
+
console.log(` Success Rate: ${successRate}%`);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (account.responseTimes && account.responseTimes.length > 0) {
|
|
284
|
+
const avg = average(account.responseTimes);
|
|
285
|
+
const min = Math.min(...account.responseTimes);
|
|
286
|
+
const max = Math.max(...account.responseTimes);
|
|
287
|
+
console.log(` Avg Response Time: ${avg}ms`);
|
|
288
|
+
console.log(` Response Time Range: ${min}ms - ${max}ms`);
|
|
289
|
+
totalResponseTimes.push(...account.responseTimes);
|
|
290
|
+
} else {
|
|
291
|
+
console.log(` Avg Response Time: N/A`);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const todayCount = account.dailyRequests?.[today] || 0;
|
|
295
|
+
console.log(` Requests Today: ${todayCount}`);
|
|
296
|
+
|
|
297
|
+
const weeklyTotal = last7Days.reduce(
|
|
298
|
+
(sum, day) => sum + (account.dailyRequests?.[day] || 0),
|
|
299
|
+
0
|
|
300
|
+
);
|
|
301
|
+
console.log(` Requests Last 7 Days: ${weeklyTotal}`);
|
|
302
|
+
|
|
303
|
+
console.log();
|
|
304
|
+
|
|
305
|
+
totalRequests += account.totalRequests;
|
|
306
|
+
totalSuccessful += account.successfulRequests;
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
console.log('ā'.repeat(50));
|
|
310
|
+
console.log('š Aggregate Statistics');
|
|
311
|
+
console.log(` Total Requests (All Keys): ${totalRequests}`);
|
|
312
|
+
console.log(` Total Successful: ${totalSuccessful}`);
|
|
313
|
+
if (totalRequests > 0) {
|
|
314
|
+
const overallRate = ((totalSuccessful / totalRequests) * 100).toFixed(1);
|
|
315
|
+
console.log(` Overall Success Rate: ${overallRate}%`);
|
|
316
|
+
}
|
|
317
|
+
if (totalResponseTimes.length > 0) {
|
|
318
|
+
const overallAvg = average(totalResponseTimes);
|
|
319
|
+
console.log(` Overall Avg Response Time: ${overallAvg}ms`);
|
|
320
|
+
}
|
|
321
|
+
console.log();
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function getLast7Days() {
|
|
325
|
+
const days = [];
|
|
326
|
+
for (let i = 0; i < 7; i++) {
|
|
327
|
+
const d = new Date();
|
|
328
|
+
d.setDate(d.getDate() - i);
|
|
329
|
+
days.push(d.toISOString().split('T')[0]);
|
|
330
|
+
}
|
|
331
|
+
return days;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
function average(arr) {
|
|
335
|
+
if (arr.length === 0) return 0;
|
|
336
|
+
return Math.round(arr.reduce((a, b) => a + b, 0) / arr.length);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
async function refreshHealth(manager) {
|
|
340
|
+
const result = await manager.refreshHealthScores();
|
|
341
|
+
|
|
342
|
+
if (result.refreshed === 0) {
|
|
343
|
+
console.log('No keys needed health refresh.');
|
|
344
|
+
console.log('Keys must be below 100% health and past the cooldown period.');
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
console.log(`ā Refreshed health for ${result.refreshed} key(s):`);
|
|
349
|
+
result.details.forEach((detail) => {
|
|
350
|
+
console.log(` ${detail}`);
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
async function setAutoRefresh(manager, args) {
|
|
355
|
+
const enabled = args[0];
|
|
356
|
+
|
|
357
|
+
if (enabled !== 'true' && enabled !== 'false') {
|
|
358
|
+
console.error('Usage: opencode-kimi set-auto-refresh <true|false>');
|
|
359
|
+
console.error('');
|
|
360
|
+
console.error('When enabled, health scores will automatically refresh');
|
|
361
|
+
console.error('after the cooldown period when keys are rate limited.');
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
await manager.setAutoRefreshHealth(enabled === 'true');
|
|
366
|
+
console.log(`ā Auto-refresh health: ${enabled}`);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
async function setCooldown(manager, args) {
|
|
370
|
+
const minutes = parseInt(args[0], 10);
|
|
371
|
+
|
|
372
|
+
if (isNaN(minutes) || minutes < 1 || minutes > 1440) {
|
|
373
|
+
console.error('Usage: opencode-kimi set-cooldown <minutes>');
|
|
374
|
+
console.error('');
|
|
375
|
+
console.error('Set the cooldown period (in minutes) before health scores');
|
|
376
|
+
console.error('can be refreshed after a rate limit. Range: 1-1440');
|
|
377
|
+
console.error('');
|
|
378
|
+
console.error('Examples:');
|
|
379
|
+
console.error(' opencode-kimi set-cooldown 30 # 30 minutes (default)');
|
|
380
|
+
console.error(' opencode-kimi set-cooldown 60 # 1 hour');
|
|
381
|
+
console.error(' opencode-kimi set-cooldown 180 # 3 hours');
|
|
382
|
+
process.exit(1);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
await manager.setHealthRefreshCooldown(minutes);
|
|
386
|
+
console.log(`ā Health refresh cooldown: ${minutes} minutes`);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
async function exportKeys(manager, args) {
|
|
390
|
+
const filePath = args[0] || 'kimi-keys-backup.json.enc';
|
|
391
|
+
|
|
392
|
+
const accounts = await manager.listKeys();
|
|
393
|
+
if (accounts.length === 0) {
|
|
394
|
+
console.log('No keys to export.');
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const { KimiStorage } = await import('../dist/storage.js');
|
|
399
|
+
const storage = new KimiStorage();
|
|
400
|
+
const config = await storage.loadConfig();
|
|
401
|
+
|
|
402
|
+
const exportData = {
|
|
403
|
+
version: 1,
|
|
404
|
+
exportedAt: new Date().toISOString(),
|
|
405
|
+
accounts: config.accounts,
|
|
406
|
+
rotationStrategy: config.rotationStrategy,
|
|
407
|
+
autoRefreshHealth: config.autoRefreshHealth,
|
|
408
|
+
healthRefreshCooldownMinutes: config.healthRefreshCooldownMinutes,
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
const password = await promptPassword('Enter encryption password: ');
|
|
412
|
+
const confirmPassword = await promptPassword('Confirm encryption password: ');
|
|
413
|
+
|
|
414
|
+
if (password !== confirmPassword) {
|
|
415
|
+
console.error('Error: Passwords do not match');
|
|
416
|
+
process.exit(1);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
if (password.length < 8) {
|
|
420
|
+
console.error('Error: Password must be at least 8 characters');
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const encrypted = encryptData(JSON.stringify(exportData), password);
|
|
425
|
+
await fs.writeFile(filePath, encrypted, 'utf-8');
|
|
426
|
+
|
|
427
|
+
console.log(`ā Exported ${accounts.length} key(s) to: ${filePath}`);
|
|
428
|
+
console.log(' Keep this file and your password safe!');
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
async function importKeys(manager, args) {
|
|
432
|
+
const filePath = args[0];
|
|
433
|
+
|
|
434
|
+
if (!filePath) {
|
|
435
|
+
console.error('Usage: opencode-kimi import-keys <file>');
|
|
436
|
+
console.error('');
|
|
437
|
+
console.error('Import keys from an encrypted backup file.');
|
|
438
|
+
console.error('Keys will be merged with existing keys (duplicates skipped).');
|
|
439
|
+
process.exit(1);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
let encryptedData;
|
|
443
|
+
try {
|
|
444
|
+
encryptedData = await fs.readFile(filePath, 'utf-8');
|
|
445
|
+
} catch {
|
|
446
|
+
console.error(`Error: Cannot read file: ${filePath}`);
|
|
447
|
+
process.exit(1);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
const password = await promptPassword('Enter decryption password: ');
|
|
451
|
+
|
|
452
|
+
let decrypted;
|
|
453
|
+
try {
|
|
454
|
+
decrypted = decryptData(encryptedData, password);
|
|
455
|
+
} catch {
|
|
456
|
+
console.error('Error: Failed to decrypt file. Wrong password?');
|
|
457
|
+
process.exit(1);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
let importData;
|
|
461
|
+
try {
|
|
462
|
+
importData = JSON.parse(decrypted);
|
|
463
|
+
} catch {
|
|
464
|
+
console.error('Error: Invalid backup file format');
|
|
465
|
+
process.exit(1);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
if (!importData.accounts || !Array.isArray(importData.accounts)) {
|
|
469
|
+
console.error('Error: Invalid backup file format');
|
|
470
|
+
process.exit(1);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
const existingKeys = await manager.listKeys();
|
|
474
|
+
const existingKeySet = new Set(existingKeys.map((a) => a.key));
|
|
475
|
+
|
|
476
|
+
let imported = 0;
|
|
477
|
+
let skipped = 0;
|
|
478
|
+
|
|
479
|
+
for (const account of importData.accounts) {
|
|
480
|
+
if (existingKeySet.has(account.key)) {
|
|
481
|
+
skipped++;
|
|
482
|
+
continue;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
try {
|
|
486
|
+
await manager.addKey(account.key, account.name);
|
|
487
|
+
imported++;
|
|
488
|
+
} catch (error) {
|
|
489
|
+
console.error(`Error importing key "${account.name}": ${error.message}`);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
console.log(`ā Import complete:`);
|
|
494
|
+
console.log(` Imported: ${imported} key(s)`);
|
|
495
|
+
console.log(` Skipped (duplicates): ${skipped} key(s)`);
|
|
496
|
+
|
|
497
|
+
if (imported > 0 && importData.rotationStrategy) {
|
|
498
|
+
await manager.setRotationStrategy(importData.rotationStrategy);
|
|
499
|
+
console.log(` Restored rotation strategy: ${importData.rotationStrategy}`);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
function encryptData(data, password) {
|
|
504
|
+
const salt = randomBytes(SALT_LENGTH);
|
|
505
|
+
const iv = randomBytes(IV_LENGTH);
|
|
506
|
+
const key = scryptSync(password, salt, KEY_LENGTH);
|
|
507
|
+
|
|
508
|
+
const cipher = createCipheriv(ENCRYPTION_ALGORITHM, key, iv);
|
|
509
|
+
const encrypted = Buffer.concat([cipher.update(data, 'utf-8'), cipher.final()]);
|
|
510
|
+
const authTag = cipher.getAuthTag();
|
|
511
|
+
|
|
512
|
+
const result = Buffer.concat([salt, iv, authTag, encrypted]);
|
|
513
|
+
return result.toString('base64');
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
function decryptData(encryptedData, password) {
|
|
517
|
+
const data = Buffer.from(encryptedData, 'base64');
|
|
518
|
+
|
|
519
|
+
const salt = data.subarray(0, SALT_LENGTH);
|
|
520
|
+
const iv = data.subarray(SALT_LENGTH, SALT_LENGTH + IV_LENGTH);
|
|
521
|
+
const authTag = data.subarray(SALT_LENGTH + IV_LENGTH, SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);
|
|
522
|
+
const encrypted = data.subarray(SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);
|
|
523
|
+
|
|
524
|
+
const key = scryptSync(password, salt, KEY_LENGTH);
|
|
525
|
+
|
|
526
|
+
const decipher = createDecipheriv(ENCRYPTION_ALGORITHM, key, iv);
|
|
527
|
+
decipher.setAuthTag(authTag);
|
|
528
|
+
|
|
529
|
+
const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
|
|
530
|
+
return decrypted.toString('utf-8');
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
async function promptPassword(prompt) {
|
|
534
|
+
const { createInterface } = await import('readline');
|
|
535
|
+
const rl = createInterface({
|
|
536
|
+
input: process.stdin,
|
|
537
|
+
output: process.stdout,
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
return new Promise((resolve) => {
|
|
541
|
+
rl.question(prompt, (answer) => {
|
|
542
|
+
rl.close();
|
|
543
|
+
resolve(answer);
|
|
544
|
+
});
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
|
|
226
548
|
function showHelp() {
|
|
227
549
|
console.log('Kimi API Key Rotator for OpenCode');
|
|
228
550
|
console.log('');
|
|
229
551
|
console.log('Usage: opencode-kimi <command> [options]');
|
|
230
552
|
console.log('');
|
|
231
553
|
console.log('Commands:');
|
|
232
|
-
console.log(' add-key <key> [name]
|
|
233
|
-
console.log(' list-keys
|
|
234
|
-
console.log(' remove-key <index>
|
|
235
|
-
console.log(' rotate
|
|
236
|
-
console.log(' use-key <index>
|
|
237
|
-
console.log(' set-strategy <strategy>
|
|
238
|
-
console.log('
|
|
554
|
+
console.log(' add-key <key> [name] Add a new Kimi API key');
|
|
555
|
+
console.log(' list-keys List all configured keys');
|
|
556
|
+
console.log(' remove-key <index> Remove a key by index');
|
|
557
|
+
console.log(' rotate Manually rotate to next key');
|
|
558
|
+
console.log(' use-key <index> Switch to a specific key');
|
|
559
|
+
console.log(' set-strategy <strategy> Set rotation strategy');
|
|
560
|
+
console.log(' stats Show usage statistics');
|
|
561
|
+
console.log(' refresh-health Manually refresh health scores');
|
|
562
|
+
console.log(' set-auto-refresh <true|false> Enable/disable auto-refresh');
|
|
563
|
+
console.log(' set-cooldown <minutes> Set health refresh cooldown');
|
|
564
|
+
console.log(' export-keys [file] Export keys to encrypted file');
|
|
565
|
+
console.log(' import-keys <file> Import keys from encrypted file');
|
|
566
|
+
console.log(' help Show this help message');
|
|
239
567
|
console.log('');
|
|
240
568
|
console.log('Strategies:');
|
|
241
569
|
console.log(' round-robin - Cycle through keys sequentially');
|
|
@@ -247,6 +575,10 @@ function showHelp() {
|
|
|
247
575
|
console.log(' opencode-kimi list-keys');
|
|
248
576
|
console.log(' opencode-kimi rotate');
|
|
249
577
|
console.log(' opencode-kimi use-key 1');
|
|
578
|
+
console.log(' opencode-kimi stats');
|
|
579
|
+
console.log(' opencode-kimi refresh-health');
|
|
580
|
+
console.log(' opencode-kimi export-keys backup.json.enc');
|
|
581
|
+
console.log(' opencode-kimi import-keys backup.json.enc');
|
|
250
582
|
}
|
|
251
583
|
|
|
252
584
|
function maskKey(key) {
|
package/dist/accounts.d.ts
CHANGED
|
@@ -13,8 +13,9 @@ export declare class KimiAccountManager {
|
|
|
13
13
|
init(): Promise<void>;
|
|
14
14
|
getNextAccount(forceRotation?: boolean): Promise<RotationResult | null>;
|
|
15
15
|
markAccountUsed(index: number): Promise<void>;
|
|
16
|
-
markAccountSuccess(index: number): Promise<void>;
|
|
16
|
+
markAccountSuccess(index: number, responseTime?: number, date?: string): Promise<void>;
|
|
17
17
|
markAccountRateLimited(index: number, retryAfterMs: number): Promise<void>;
|
|
18
|
+
markAccountBillingLimited(index: number): Promise<void>;
|
|
18
19
|
markAccountFailure(index: number): Promise<void>;
|
|
19
20
|
getActiveKey(): Promise<string | null>;
|
|
20
21
|
setRotationStrategy(strategy: RotationStrategy): Promise<void>;
|
|
@@ -23,6 +24,12 @@ export declare class KimiAccountManager {
|
|
|
23
24
|
listKeys(): Promise<KimiAccount[]>;
|
|
24
25
|
rotateToNext(): Promise<RotationResult | null>;
|
|
25
26
|
setActiveIndex(index: number): Promise<void>;
|
|
27
|
+
setAutoRefreshHealth(enabled: boolean): Promise<void>;
|
|
28
|
+
setHealthRefreshCooldown(minutes: number): Promise<void>;
|
|
29
|
+
refreshHealthScores(): Promise<{
|
|
30
|
+
refreshed: number;
|
|
31
|
+
details: string[];
|
|
32
|
+
}>;
|
|
26
33
|
private roundRobinRotation;
|
|
27
34
|
private stickyRotation;
|
|
28
35
|
private healthBasedRotation;
|
package/dist/accounts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAE7D,KAAK,gBAAgB,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;AAElE,UAAU,cAAc;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,WAAW,CAAM;;IAMnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,cAAc,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAwBrE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAE7D,KAAK,gBAAgB,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;AAElE,UAAU,cAAc;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,WAAW,CAAM;;IAMnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,cAAc,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAwBrE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BtF,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1E,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKtC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIxD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIlC,YAAY,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI9C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,mBAAmB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YAgChE,kBAAkB;YAsBlB,cAAc;YAoCd,mBAAmB;IAuDjC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,aAAa;YAKP,UAAU;CAOzB"}
|
package/dist/accounts.js
CHANGED
|
@@ -35,14 +35,27 @@ export class KimiAccountManager {
|
|
|
35
35
|
totalRequests: (await this.getAccount(index)).totalRequests + 1,
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
|
-
async markAccountSuccess(index) {
|
|
38
|
+
async markAccountSuccess(index, responseTime, date) {
|
|
39
39
|
const account = await this.getAccount(index);
|
|
40
40
|
const newHealthScore = Math.min(100, account.healthScore + 2);
|
|
41
|
-
|
|
41
|
+
const updates = {
|
|
42
42
|
healthScore: newHealthScore,
|
|
43
43
|
successfulRequests: account.successfulRequests + 1,
|
|
44
44
|
consecutiveFailures: 0,
|
|
45
|
-
}
|
|
45
|
+
};
|
|
46
|
+
if (responseTime !== undefined) {
|
|
47
|
+
const responseTimes = [...account.responseTimes, responseTime];
|
|
48
|
+
if (responseTimes.length > 100) {
|
|
49
|
+
responseTimes.shift();
|
|
50
|
+
}
|
|
51
|
+
updates.responseTimes = responseTimes;
|
|
52
|
+
}
|
|
53
|
+
if (date) {
|
|
54
|
+
const dailyRequests = { ...account.dailyRequests };
|
|
55
|
+
dailyRequests[date] = (dailyRequests[date] || 0) + 1;
|
|
56
|
+
updates.dailyRequests = dailyRequests;
|
|
57
|
+
}
|
|
58
|
+
await this.storage.updateAccount(index, updates);
|
|
46
59
|
}
|
|
47
60
|
async markAccountRateLimited(index, retryAfterMs) {
|
|
48
61
|
const account = await this.getAccount(index);
|
|
@@ -53,6 +66,20 @@ export class KimiAccountManager {
|
|
|
53
66
|
consecutiveFailures: account.consecutiveFailures + 1,
|
|
54
67
|
});
|
|
55
68
|
}
|
|
69
|
+
async markAccountBillingLimited(index) {
|
|
70
|
+
const account = await this.getAccount(index);
|
|
71
|
+
const newHealthScore = Math.max(0, account.healthScore - 30);
|
|
72
|
+
// Set cooldown until end of current day (midnight) + 24 hours
|
|
73
|
+
// This ensures the key won't be tried again for at least 24 hours
|
|
74
|
+
const now = new Date();
|
|
75
|
+
const endOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 0, 0);
|
|
76
|
+
const cooldownUntil = endOfDay.getTime();
|
|
77
|
+
await this.storage.updateAccount(index, {
|
|
78
|
+
healthScore: newHealthScore,
|
|
79
|
+
billingLimitResetTime: cooldownUntil,
|
|
80
|
+
consecutiveFailures: account.consecutiveFailures + 1,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
56
83
|
async markAccountFailure(index) {
|
|
57
84
|
const account = await this.getAccount(index);
|
|
58
85
|
const newHealthScore = Math.max(0, account.healthScore - 20);
|
|
@@ -85,6 +112,45 @@ export class KimiAccountManager {
|
|
|
85
112
|
async setActiveIndex(index) {
|
|
86
113
|
return this.storage.setActiveIndex(index);
|
|
87
114
|
}
|
|
115
|
+
async setAutoRefreshHealth(enabled) {
|
|
116
|
+
const config = await this.storage.loadConfig();
|
|
117
|
+
config.autoRefreshHealth = enabled;
|
|
118
|
+
await this.storage.saveConfig(config);
|
|
119
|
+
}
|
|
120
|
+
async setHealthRefreshCooldown(minutes) {
|
|
121
|
+
if (minutes < 1 || minutes > 1440) {
|
|
122
|
+
throw new Error('Cooldown must be between 1 and 1440 minutes (24 hours)');
|
|
123
|
+
}
|
|
124
|
+
const config = await this.storage.loadConfig();
|
|
125
|
+
config.healthRefreshCooldownMinutes = minutes;
|
|
126
|
+
await this.storage.saveConfig(config);
|
|
127
|
+
}
|
|
128
|
+
async refreshHealthScores() {
|
|
129
|
+
const config = await this.storage.loadConfig();
|
|
130
|
+
const now = Date.now();
|
|
131
|
+
const cooldownMs = config.healthRefreshCooldownMinutes * 60 * 1000;
|
|
132
|
+
let refreshed = 0;
|
|
133
|
+
const details = [];
|
|
134
|
+
for (let i = 0; i < config.accounts.length; i++) {
|
|
135
|
+
const account = config.accounts[i];
|
|
136
|
+
const timeSinceRateLimit = now - account.rateLimitResetTime;
|
|
137
|
+
const shouldRefresh = config.autoRefreshHealth &&
|
|
138
|
+
account.healthScore < 100 &&
|
|
139
|
+
timeSinceRateLimit >= cooldownMs &&
|
|
140
|
+
account.rateLimitResetTime <= now;
|
|
141
|
+
if (shouldRefresh) {
|
|
142
|
+
const oldScore = account.healthScore;
|
|
143
|
+
const newScore = Math.min(100, oldScore + 10);
|
|
144
|
+
await this.storage.updateAccount(i, {
|
|
145
|
+
healthScore: newScore,
|
|
146
|
+
consecutiveFailures: 0,
|
|
147
|
+
});
|
|
148
|
+
refreshed++;
|
|
149
|
+
details.push(`${account.name}: ${oldScore}% ā ${newScore}%`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { refreshed, details };
|
|
153
|
+
}
|
|
88
154
|
async roundRobinRotation(config) {
|
|
89
155
|
const availableIndices = this.getAvailableIndices(config);
|
|
90
156
|
if (availableIndices.length === 0) {
|
|
@@ -93,7 +159,7 @@ export class KimiAccountManager {
|
|
|
93
159
|
return { account, index: soonestIndex, reason: 'all-rate-limited' };
|
|
94
160
|
}
|
|
95
161
|
const currentIndex = config.activeIndex;
|
|
96
|
-
|
|
162
|
+
const nextIndex = availableIndices.find((idx) => idx > currentIndex) ?? availableIndices[0];
|
|
97
163
|
await this.storage.setActiveIndex(nextIndex);
|
|
98
164
|
await this.markAccountUsed(nextIndex);
|
|
99
165
|
return {
|
|
@@ -113,7 +179,7 @@ export class KimiAccountManager {
|
|
|
113
179
|
reason: 'sticky',
|
|
114
180
|
};
|
|
115
181
|
}
|
|
116
|
-
const availableIndices = this.getAvailableIndices(config).filter(idx => idx !== currentIndex);
|
|
182
|
+
const availableIndices = this.getAvailableIndices(config).filter((idx) => idx !== currentIndex);
|
|
117
183
|
if (availableIndices.length === 0) {
|
|
118
184
|
const soonestIndex = this.getSoonestAvailableIndex(config);
|
|
119
185
|
const account = config.accounts[soonestIndex];
|
|
@@ -132,7 +198,9 @@ export class KimiAccountManager {
|
|
|
132
198
|
async healthBasedRotation(config, forceRotation) {
|
|
133
199
|
const currentIndex = config.activeIndex;
|
|
134
200
|
const currentAccount = config.accounts[currentIndex];
|
|
135
|
-
if (!forceRotation &&
|
|
201
|
+
if (!forceRotation &&
|
|
202
|
+
!this.isRateLimited(currentAccount) &&
|
|
203
|
+
currentAccount.healthScore > this.minHealthScore) {
|
|
136
204
|
await this.markAccountUsed(currentIndex);
|
|
137
205
|
return {
|
|
138
206
|
account: currentAccount,
|
|
@@ -192,12 +260,13 @@ export class KimiAccountManager {
|
|
|
192
260
|
return soonestIndex;
|
|
193
261
|
}
|
|
194
262
|
isRateLimited(account) {
|
|
195
|
-
|
|
263
|
+
const now = Date.now();
|
|
264
|
+
return account.rateLimitResetTime > now || account.billingLimitResetTime > now;
|
|
196
265
|
}
|
|
197
266
|
async getAccount(index) {
|
|
198
267
|
const accounts = await this.storage.listAccounts();
|
|
199
268
|
if (index < 0 || index >= accounts.length) {
|
|
200
|
-
throw new Error(`Invalid account index: ${index}`);
|
|
269
|
+
throw new Error(`Invalid account index: ${String(index)}`);
|
|
201
270
|
}
|
|
202
271
|
return accounts[index];
|
|
203
272
|
}
|
package/dist/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts
CHANGED
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAyE9C,eAAO,MAAM,iBAAiB,EAAE,MA4I/B,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,CAAC"}
|