opencode-kimi-rotator 1.2.4 → 1.2.5
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 +26 -1
- package/bin/cli.js +36 -0
- package/dist/accounts.d.ts +6 -0
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +39 -2
- package/dist/accounts.js.map +1 -1
- package/dist/plugin.bundle.js +114 -20
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +60 -19
- package/dist/plugin.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/src/plugin.ts +80 -23
package/README.md
CHANGED
|
@@ -392,13 +392,23 @@ When a key is rate limited (HTTP 429):
|
|
|
392
392
|
|
|
393
393
|
### Billing Cycle Limit Handling
|
|
394
394
|
|
|
395
|
-
When a key hits
|
|
395
|
+
When a key hits a billing or usage limit, the plugin detects multiple error patterns:
|
|
396
|
+
|
|
397
|
+
- "You've reached your usage limit for this billing cycle"
|
|
398
|
+
- "billing limit"
|
|
399
|
+
- "usage limit exceeded"
|
|
400
|
+
- "quota exceeded"
|
|
401
|
+
- "insufficient credits"
|
|
402
|
+
- "payment required"
|
|
403
|
+
|
|
404
|
+
When any of these patterns are detected in HTTP 400/403 responses:
|
|
396
405
|
|
|
397
406
|
1. Health score decreases by 30 points
|
|
398
407
|
2. Key is put on a 24-hour cooldown (until midnight of the next day)
|
|
399
408
|
3. Next request automatically uses next available key
|
|
400
409
|
4. A toast notification shows how many hours until the key is available
|
|
401
410
|
5. The key won't be retried until the cooldown expires
|
|
411
|
+
6. Non-billing-limit HTTP 400/403 errors are marked as regular failures
|
|
402
412
|
|
|
403
413
|
### Data Storage
|
|
404
414
|
|
|
@@ -542,6 +552,21 @@ rm ~/.config/opencode/kimi-accounts.json
|
|
|
542
552
|
opencode-kimi add-key your-new-api-key
|
|
543
553
|
```
|
|
544
554
|
|
|
555
|
+
### Debug Mode
|
|
556
|
+
|
|
557
|
+
Enable debug logging to troubleshoot issues:
|
|
558
|
+
|
|
559
|
+
```bash
|
|
560
|
+
export KIMI_ROTATOR_DEBUG=true
|
|
561
|
+
opencode run "Hello" --model=anthropic/kimi-for-coding
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
Debug output includes:
|
|
565
|
+
|
|
566
|
+
- HTTP response body snippets for error responses
|
|
567
|
+
- Billing limit detection details
|
|
568
|
+
- Response parsing errors
|
|
569
|
+
|
|
545
570
|
---
|
|
546
571
|
|
|
547
572
|
## Plugin Compatibility
|
package/bin/cli.js
CHANGED
|
@@ -56,6 +56,9 @@ async function main() {
|
|
|
56
56
|
case 'import-keys':
|
|
57
57
|
await importKeys(manager, args.slice(1));
|
|
58
58
|
break;
|
|
59
|
+
case 'clear-limits':
|
|
60
|
+
await clearLimits(manager, args.slice(1));
|
|
61
|
+
break;
|
|
59
62
|
case 'help':
|
|
60
63
|
default:
|
|
61
64
|
showHelp();
|
|
@@ -545,6 +548,38 @@ async function promptPassword(prompt) {
|
|
|
545
548
|
});
|
|
546
549
|
}
|
|
547
550
|
|
|
551
|
+
async function clearLimits(manager, args) {
|
|
552
|
+
const index = parseInt(args[0], 10);
|
|
553
|
+
|
|
554
|
+
if (isNaN(index)) {
|
|
555
|
+
console.error('Usage: opencode-kimi clear-limits <index>');
|
|
556
|
+
console.error('');
|
|
557
|
+
console.error('Clear billing and rate limits for a specific key.');
|
|
558
|
+
console.error('Use "all" to clear limits for all keys.');
|
|
559
|
+
process.exit(1);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
if (args[0] === 'all') {
|
|
563
|
+
const accounts = await manager.listKeys();
|
|
564
|
+
let cleared = 0;
|
|
565
|
+
for (let i = 0; i < accounts.length; i++) {
|
|
566
|
+
await manager.clearAccountLimits(i);
|
|
567
|
+
cleared++;
|
|
568
|
+
}
|
|
569
|
+
console.log(`✓ Cleared limits for all ${cleared} key(s)`);
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
const accounts = await manager.listKeys();
|
|
574
|
+
if (index < 0 || index >= accounts.length) {
|
|
575
|
+
console.error(`Invalid index. Valid range: 0-${accounts.length - 1}`);
|
|
576
|
+
process.exit(1);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
await manager.clearAccountLimits(index);
|
|
580
|
+
console.log(`✓ Cleared limits for key: ${accounts[index].name} (index ${index})`);
|
|
581
|
+
}
|
|
582
|
+
|
|
548
583
|
function showHelp() {
|
|
549
584
|
console.log('Kimi API Key Rotator for OpenCode');
|
|
550
585
|
console.log('');
|
|
@@ -561,6 +596,7 @@ function showHelp() {
|
|
|
561
596
|
console.log(' refresh-health Manually refresh health scores');
|
|
562
597
|
console.log(' set-auto-refresh <true|false> Enable/disable auto-refresh');
|
|
563
598
|
console.log(' set-cooldown <minutes> Set health refresh cooldown');
|
|
599
|
+
console.log(' clear-limits <index|all> Clear billing/rate limits for key(s)');
|
|
564
600
|
console.log(' export-keys [file] Export keys to encrypted file');
|
|
565
601
|
console.log(' import-keys <file> Import keys from encrypted file');
|
|
566
602
|
console.log(' help Show this help message');
|
package/dist/accounts.d.ts
CHANGED
|
@@ -24,7 +24,13 @@ export declare class KimiAccountManager {
|
|
|
24
24
|
markAccountUsed(index: number): Promise<void>;
|
|
25
25
|
markAccountSuccess(index: number, responseTime?: number, date?: string): Promise<void>;
|
|
26
26
|
markAccountRateLimited(index: number, retryAfterMs: number): Promise<void>;
|
|
27
|
+
recordBillingLimitHit(index: number): Promise<{
|
|
28
|
+
isConfirmed: boolean;
|
|
29
|
+
hitsNeeded: number;
|
|
30
|
+
}>;
|
|
27
31
|
markAccountBillingLimited(index: number): Promise<void>;
|
|
32
|
+
resetBillingLimitHits(index: number): Promise<void>;
|
|
33
|
+
clearAccountLimits(index: number): Promise<void>;
|
|
28
34
|
markAccountFailure(index: number): Promise<void>;
|
|
29
35
|
getActiveKey(): Promise<string | null>;
|
|
30
36
|
setRotationStrategy(strategy: RotationStrategy): Promise<void>;
|
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;IAI3B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiBzD;;;OAGG;IACG,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;
|
|
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;IAI3B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiBzD;;;OAGG;IACG,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;IA4BtF,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1E,qBAAqB,CACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA4BlD,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevD,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,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;YAmBlB,cAAc;YAoCd,mBAAmB;IAuDjC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,aAAa;YAOP,UAAU;CAOzB"}
|
package/dist/accounts.js
CHANGED
|
@@ -63,6 +63,7 @@ export class KimiAccountManager {
|
|
|
63
63
|
healthScore: newHealthScore,
|
|
64
64
|
successfulRequests: account.successfulRequests + 1,
|
|
65
65
|
consecutiveFailures: 0,
|
|
66
|
+
consecutiveBillingLimitHits: 0,
|
|
66
67
|
};
|
|
67
68
|
if (responseTime !== undefined) {
|
|
68
69
|
const responseTimes = [...account.responseTimes, responseTime];
|
|
@@ -87,20 +88,56 @@ export class KimiAccountManager {
|
|
|
87
88
|
consecutiveFailures: account.consecutiveFailures + 1,
|
|
88
89
|
});
|
|
89
90
|
}
|
|
91
|
+
async recordBillingLimitHit(index) {
|
|
92
|
+
const account = await this.getAccount(index);
|
|
93
|
+
const newHits = (account.consecutiveBillingLimitHits || 0) + 1;
|
|
94
|
+
const REQUIRED_HITS = 2;
|
|
95
|
+
if (newHits >= REQUIRED_HITS) {
|
|
96
|
+
const newHealthScore = Math.max(0, account.healthScore - 30);
|
|
97
|
+
const now = new Date();
|
|
98
|
+
const endOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 0, 0);
|
|
99
|
+
const cooldownUntil = endOfDay.getTime();
|
|
100
|
+
await this.storage.updateAccount(index, {
|
|
101
|
+
healthScore: newHealthScore,
|
|
102
|
+
billingLimitResetTime: cooldownUntil,
|
|
103
|
+
consecutiveBillingLimitHits: newHits,
|
|
104
|
+
consecutiveFailures: account.consecutiveFailures + 1,
|
|
105
|
+
});
|
|
106
|
+
return { isConfirmed: true, hitsNeeded: 0 };
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
await this.storage.updateAccount(index, {
|
|
110
|
+
consecutiveBillingLimitHits: newHits,
|
|
111
|
+
});
|
|
112
|
+
return { isConfirmed: false, hitsNeeded: REQUIRED_HITS - newHits };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
90
115
|
async markAccountBillingLimited(index) {
|
|
91
116
|
const account = await this.getAccount(index);
|
|
92
117
|
const newHealthScore = Math.max(0, account.healthScore - 30);
|
|
93
|
-
// Set cooldown until end of current day (midnight) + 24 hours
|
|
94
|
-
// This ensures the key won't be tried again for at least 24 hours
|
|
95
118
|
const now = new Date();
|
|
96
119
|
const endOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 0, 0);
|
|
97
120
|
const cooldownUntil = endOfDay.getTime();
|
|
98
121
|
await this.storage.updateAccount(index, {
|
|
99
122
|
healthScore: newHealthScore,
|
|
100
123
|
billingLimitResetTime: cooldownUntil,
|
|
124
|
+
consecutiveBillingLimitHits: 2,
|
|
101
125
|
consecutiveFailures: account.consecutiveFailures + 1,
|
|
102
126
|
});
|
|
103
127
|
}
|
|
128
|
+
async resetBillingLimitHits(index) {
|
|
129
|
+
await this.storage.updateAccount(index, {
|
|
130
|
+
consecutiveBillingLimitHits: 0,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async clearAccountLimits(index) {
|
|
134
|
+
await this.storage.updateAccount(index, {
|
|
135
|
+
billingLimitResetTime: 0,
|
|
136
|
+
rateLimitResetTime: 0,
|
|
137
|
+
consecutiveFailures: 0,
|
|
138
|
+
consecutiveBillingLimitHits: 0,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
104
141
|
async markAccountFailure(index) {
|
|
105
142
|
const account = await this.getAccount(index);
|
|
106
143
|
const newHealthScore = Math.max(0, account.healthScore - 20);
|
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.bundle.js
CHANGED
|
@@ -5668,6 +5668,7 @@ var KimiAccountSchema = external_exports.object({
|
|
|
5668
5668
|
billingLimitResetTime: external_exports.number().default(0),
|
|
5669
5669
|
healthScore: external_exports.number().min(0).max(100).default(100),
|
|
5670
5670
|
consecutiveFailures: external_exports.number().default(0),
|
|
5671
|
+
consecutiveBillingLimitHits: external_exports.number().default(0),
|
|
5671
5672
|
totalRequests: external_exports.number().default(0),
|
|
5672
5673
|
successfulRequests: external_exports.number().default(0),
|
|
5673
5674
|
responseTimes: external_exports.array(external_exports.number()).default([]),
|
|
@@ -5686,6 +5687,7 @@ var DEFAULT_ACCOUNT = {
|
|
|
5686
5687
|
billingLimitResetTime: 0,
|
|
5687
5688
|
healthScore: 100,
|
|
5688
5689
|
consecutiveFailures: 0,
|
|
5690
|
+
consecutiveBillingLimitHits: 0,
|
|
5689
5691
|
totalRequests: 0,
|
|
5690
5692
|
successfulRequests: 0,
|
|
5691
5693
|
responseTimes: [],
|
|
@@ -5944,7 +5946,8 @@ var KimiAccountManager = class {
|
|
|
5944
5946
|
const updates = {
|
|
5945
5947
|
healthScore: newHealthScore,
|
|
5946
5948
|
successfulRequests: account.successfulRequests + 1,
|
|
5947
|
-
consecutiveFailures: 0
|
|
5949
|
+
consecutiveFailures: 0,
|
|
5950
|
+
consecutiveBillingLimitHits: 0
|
|
5948
5951
|
};
|
|
5949
5952
|
if (responseTime !== void 0) {
|
|
5950
5953
|
const responseTimes = [...account.responseTimes, responseTime];
|
|
@@ -5969,6 +5972,29 @@ var KimiAccountManager = class {
|
|
|
5969
5972
|
consecutiveFailures: account.consecutiveFailures + 1
|
|
5970
5973
|
});
|
|
5971
5974
|
}
|
|
5975
|
+
async recordBillingLimitHit(index) {
|
|
5976
|
+
const account = await this.getAccount(index);
|
|
5977
|
+
const newHits = (account.consecutiveBillingLimitHits || 0) + 1;
|
|
5978
|
+
const REQUIRED_HITS = 2;
|
|
5979
|
+
if (newHits >= REQUIRED_HITS) {
|
|
5980
|
+
const newHealthScore = Math.max(0, account.healthScore - 30);
|
|
5981
|
+
const now = /* @__PURE__ */ new Date();
|
|
5982
|
+
const endOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 0, 0);
|
|
5983
|
+
const cooldownUntil = endOfDay.getTime();
|
|
5984
|
+
await this.storage.updateAccount(index, {
|
|
5985
|
+
healthScore: newHealthScore,
|
|
5986
|
+
billingLimitResetTime: cooldownUntil,
|
|
5987
|
+
consecutiveBillingLimitHits: newHits,
|
|
5988
|
+
consecutiveFailures: account.consecutiveFailures + 1
|
|
5989
|
+
});
|
|
5990
|
+
return { isConfirmed: true, hitsNeeded: 0 };
|
|
5991
|
+
} else {
|
|
5992
|
+
await this.storage.updateAccount(index, {
|
|
5993
|
+
consecutiveBillingLimitHits: newHits
|
|
5994
|
+
});
|
|
5995
|
+
return { isConfirmed: false, hitsNeeded: REQUIRED_HITS - newHits };
|
|
5996
|
+
}
|
|
5997
|
+
}
|
|
5972
5998
|
async markAccountBillingLimited(index) {
|
|
5973
5999
|
const account = await this.getAccount(index);
|
|
5974
6000
|
const newHealthScore = Math.max(0, account.healthScore - 30);
|
|
@@ -5978,9 +6004,23 @@ var KimiAccountManager = class {
|
|
|
5978
6004
|
await this.storage.updateAccount(index, {
|
|
5979
6005
|
healthScore: newHealthScore,
|
|
5980
6006
|
billingLimitResetTime: cooldownUntil,
|
|
6007
|
+
consecutiveBillingLimitHits: 2,
|
|
5981
6008
|
consecutiveFailures: account.consecutiveFailures + 1
|
|
5982
6009
|
});
|
|
5983
6010
|
}
|
|
6011
|
+
async resetBillingLimitHits(index) {
|
|
6012
|
+
await this.storage.updateAccount(index, {
|
|
6013
|
+
consecutiveBillingLimitHits: 0
|
|
6014
|
+
});
|
|
6015
|
+
}
|
|
6016
|
+
async clearAccountLimits(index) {
|
|
6017
|
+
await this.storage.updateAccount(index, {
|
|
6018
|
+
billingLimitResetTime: 0,
|
|
6019
|
+
rateLimitResetTime: 0,
|
|
6020
|
+
consecutiveFailures: 0,
|
|
6021
|
+
consecutiveBillingLimitHits: 0
|
|
6022
|
+
});
|
|
6023
|
+
}
|
|
5984
6024
|
async markAccountFailure(index) {
|
|
5985
6025
|
const account = await this.getAccount(index);
|
|
5986
6026
|
const newHealthScore = Math.max(0, account.healthScore - 20);
|
|
@@ -6171,9 +6211,27 @@ var KimiAccountManager = class {
|
|
|
6171
6211
|
};
|
|
6172
6212
|
|
|
6173
6213
|
// src/plugin.ts
|
|
6214
|
+
var BILLING_LIMIT_PATTERNS = [
|
|
6215
|
+
"you've reached your usage limit for this billing cycle",
|
|
6216
|
+
"billing limit",
|
|
6217
|
+
"usage limit exceeded",
|
|
6218
|
+
"quota exceeded",
|
|
6219
|
+
"insufficient credits",
|
|
6220
|
+
"payment required"
|
|
6221
|
+
];
|
|
6222
|
+
var HARD_BILLING_LIMIT_PATTERNS = [
|
|
6223
|
+
"you've reached your usage limit for this billing cycle",
|
|
6224
|
+
"your quota will be refreshed in the next cycle",
|
|
6225
|
+
"from=quota-upgrade"
|
|
6226
|
+
];
|
|
6227
|
+
var DEBUG_MODE = process.env.KIMI_ROTATOR_DEBUG === "true";
|
|
6174
6228
|
var accountManager = null;
|
|
6175
|
-
var currentAccountIndex = 0;
|
|
6176
6229
|
var originalFetch = null;
|
|
6230
|
+
function debugLog(message, data) {
|
|
6231
|
+
if (DEBUG_MODE) {
|
|
6232
|
+
console.log(`[KimiRotator Debug] ${message}`, data ?? "");
|
|
6233
|
+
}
|
|
6234
|
+
}
|
|
6177
6235
|
async function getAccountManager() {
|
|
6178
6236
|
if (!accountManager) {
|
|
6179
6237
|
accountManager = new KimiAccountManager();
|
|
@@ -6187,7 +6245,6 @@ async function getAuth() {
|
|
|
6187
6245
|
if (!result) {
|
|
6188
6246
|
return null;
|
|
6189
6247
|
}
|
|
6190
|
-
currentAccountIndex = result.index;
|
|
6191
6248
|
return {
|
|
6192
6249
|
type: "api",
|
|
6193
6250
|
key: result.account.key
|
|
@@ -6239,9 +6296,9 @@ var KimiRotatorPlugin = async ({ client }) => {
|
|
|
6239
6296
|
}
|
|
6240
6297
|
const nextAccount = await accountManager.getNextAccount();
|
|
6241
6298
|
if (nextAccount) {
|
|
6242
|
-
|
|
6299
|
+
const requestAccountIndex = nextAccount.index;
|
|
6243
6300
|
const keyLabel = nextAccount.account.key.substring(0, 18) + "...";
|
|
6244
|
-
const position =
|
|
6301
|
+
const position = requestAccountIndex + 1;
|
|
6245
6302
|
const allKeysNow = await accountManager.listKeys();
|
|
6246
6303
|
const total = allKeysNow.length;
|
|
6247
6304
|
await showToast(`\u{1F504} Using key: ${keyLabel} (${String(position)}/${String(total)})`, "info");
|
|
@@ -6259,33 +6316,70 @@ var KimiRotatorPlugin = async ({ client }) => {
|
|
|
6259
6316
|
if (response.status === 429) {
|
|
6260
6317
|
const retryAfter = response.headers.get("retry-after");
|
|
6261
6318
|
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1e3 : 6e4;
|
|
6262
|
-
await accountManager.markAccountRateLimited(
|
|
6319
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
6263
6320
|
await showToast(`\u26A0\uFE0F Key ${String(position)} rate limited`, "warning");
|
|
6264
6321
|
} else if (response.ok) {
|
|
6265
|
-
await accountManager.markAccountSuccess(
|
|
6322
|
+
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
6266
6323
|
} else if (response.status >= 500) {
|
|
6267
|
-
await accountManager.markAccountFailure(
|
|
6324
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6268
6325
|
} else if (response.status === 400 || response.status === 403) {
|
|
6269
6326
|
const clonedResponse = response.clone();
|
|
6270
6327
|
try {
|
|
6271
6328
|
const bodyText = await clonedResponse.text();
|
|
6272
|
-
|
|
6273
|
-
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
|
|
6277
|
-
|
|
6278
|
-
|
|
6279
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
6329
|
+
const bodyLower = bodyText.toLowerCase();
|
|
6330
|
+
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
6331
|
+
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, " ")
|
|
6332
|
+
});
|
|
6333
|
+
const isBillingLimit = BILLING_LIMIT_PATTERNS.some(
|
|
6334
|
+
(pattern) => bodyLower.includes(pattern)
|
|
6335
|
+
);
|
|
6336
|
+
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some(
|
|
6337
|
+
(pattern) => bodyLower.includes(pattern)
|
|
6338
|
+
);
|
|
6339
|
+
if (isBillingLimit && accountManager) {
|
|
6340
|
+
if (isHardBillingLimit) {
|
|
6341
|
+
await accountManager.markAccountBillingLimited(requestAccountIndex);
|
|
6342
|
+
const resetTime = /* @__PURE__ */ new Date();
|
|
6343
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
6344
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
6345
|
+
const hoursUntilReset = Math.ceil(
|
|
6346
|
+
(resetTime.getTime() - Date.now()) / (1e3 * 60 * 60)
|
|
6347
|
+
);
|
|
6348
|
+
await showToast(
|
|
6349
|
+
`\u{1F6AB} Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`,
|
|
6350
|
+
"warning"
|
|
6351
|
+
);
|
|
6352
|
+
} else {
|
|
6353
|
+
const result2 = await accountManager.recordBillingLimitHit(requestAccountIndex);
|
|
6354
|
+
if (result2.isConfirmed) {
|
|
6355
|
+
const resetTime = /* @__PURE__ */ new Date();
|
|
6356
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
6357
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
6358
|
+
const hoursUntilReset = Math.ceil(
|
|
6359
|
+
(resetTime.getTime() - Date.now()) / (1e3 * 60 * 60)
|
|
6360
|
+
);
|
|
6361
|
+
await showToast(
|
|
6362
|
+
`\u{1F6AB} Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`,
|
|
6363
|
+
"warning"
|
|
6364
|
+
);
|
|
6365
|
+
} else {
|
|
6366
|
+
debugLog(
|
|
6367
|
+
`Billing limit hit ${2 - result2.hitsNeeded}/2 for key ${String(position)} - not confirmed yet`
|
|
6368
|
+
);
|
|
6369
|
+
}
|
|
6370
|
+
}
|
|
6371
|
+
} else if (accountManager) {
|
|
6372
|
+
debugLog(`HTTP ${response.status} but not billing limit for key ${String(position)}`);
|
|
6373
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
6374
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6282
6375
|
}
|
|
6283
|
-
} catch {
|
|
6376
|
+
} catch (error) {
|
|
6377
|
+
debugLog("Error reading response body:", error);
|
|
6284
6378
|
}
|
|
6285
6379
|
}
|
|
6286
6380
|
return response;
|
|
6287
6381
|
} catch (error) {
|
|
6288
|
-
await accountManager.markAccountFailure(
|
|
6382
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6289
6383
|
throw error;
|
|
6290
6384
|
}
|
|
6291
6385
|
}
|
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;AA+F9C,eAAO,MAAM,iBAAiB,EAAE,MAkL/B,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { KimiAccountManager } from './accounts.js';
|
|
2
|
+
const BILLING_LIMIT_PATTERNS = [
|
|
3
|
+
"you've reached your usage limit for this billing cycle",
|
|
4
|
+
'billing limit',
|
|
5
|
+
'usage limit exceeded',
|
|
6
|
+
'quota exceeded',
|
|
7
|
+
'insufficient credits',
|
|
8
|
+
'payment required',
|
|
9
|
+
];
|
|
10
|
+
const HARD_BILLING_LIMIT_PATTERNS = [
|
|
11
|
+
"you've reached your usage limit for this billing cycle",
|
|
12
|
+
'your quota will be refreshed in the next cycle',
|
|
13
|
+
'from=quota-upgrade',
|
|
14
|
+
];
|
|
15
|
+
const DEBUG_MODE = process.env.KIMI_ROTATOR_DEBUG === 'true';
|
|
2
16
|
let accountManager = null;
|
|
3
|
-
let currentAccountIndex = 0;
|
|
4
17
|
let originalFetch = null;
|
|
18
|
+
function debugLog(message, data) {
|
|
19
|
+
if (DEBUG_MODE) {
|
|
20
|
+
console.log(`[KimiRotator Debug] ${message}`, data ?? '');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
5
23
|
async function getAccountManager() {
|
|
6
24
|
if (!accountManager) {
|
|
7
25
|
accountManager = new KimiAccountManager();
|
|
@@ -17,7 +35,6 @@ async function getAuth() {
|
|
|
17
35
|
if (!result) {
|
|
18
36
|
return null;
|
|
19
37
|
}
|
|
20
|
-
currentAccountIndex = result.index;
|
|
21
38
|
return {
|
|
22
39
|
type: 'api',
|
|
23
40
|
key: result.account.key,
|
|
@@ -73,9 +90,9 @@ export const KimiRotatorPlugin = async ({ client }) => {
|
|
|
73
90
|
}
|
|
74
91
|
const nextAccount = await accountManager.getNextAccount();
|
|
75
92
|
if (nextAccount) {
|
|
76
|
-
|
|
93
|
+
const requestAccountIndex = nextAccount.index;
|
|
77
94
|
const keyLabel = nextAccount.account.key.substring(0, 18) + '...';
|
|
78
|
-
const position =
|
|
95
|
+
const position = requestAccountIndex + 1;
|
|
79
96
|
const allKeysNow = await accountManager.listKeys();
|
|
80
97
|
const total = allKeysNow.length;
|
|
81
98
|
await showToast(`🔄 Using key: ${keyLabel} (${String(position)}/${String(total)})`, 'info');
|
|
@@ -93,38 +110,62 @@ export const KimiRotatorPlugin = async ({ client }) => {
|
|
|
93
110
|
if (response.status === 429) {
|
|
94
111
|
const retryAfter = response.headers.get('retry-after');
|
|
95
112
|
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
96
|
-
await accountManager.markAccountRateLimited(
|
|
113
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
97
114
|
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
98
115
|
}
|
|
99
116
|
else if (response.ok) {
|
|
100
|
-
await accountManager.markAccountSuccess(
|
|
117
|
+
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
101
118
|
}
|
|
102
119
|
else if (response.status >= 500) {
|
|
103
|
-
await accountManager.markAccountFailure(
|
|
120
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
104
121
|
}
|
|
105
122
|
else if (response.status === 400 || response.status === 403) {
|
|
106
|
-
// Check for billing limit error in response body
|
|
107
|
-
// We need to clone the response to read the body without consuming it
|
|
108
123
|
const clonedResponse = response.clone();
|
|
109
124
|
try {
|
|
110
125
|
const bodyText = await clonedResponse.text();
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
126
|
+
const bodyLower = bodyText.toLowerCase();
|
|
127
|
+
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
128
|
+
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, ' '),
|
|
129
|
+
});
|
|
130
|
+
const isBillingLimit = BILLING_LIMIT_PATTERNS.some((pattern) => bodyLower.includes(pattern));
|
|
131
|
+
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some((pattern) => bodyLower.includes(pattern));
|
|
132
|
+
if (isBillingLimit && accountManager) {
|
|
133
|
+
if (isHardBillingLimit) {
|
|
134
|
+
await accountManager.markAccountBillingLimited(requestAccountIndex);
|
|
135
|
+
const resetTime = new Date();
|
|
136
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
137
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
138
|
+
const hoursUntilReset = Math.ceil((resetTime.getTime() - Date.now()) / (1000 * 60 * 60));
|
|
139
|
+
await showToast(`🚫 Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`, 'warning');
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const result = await accountManager.recordBillingLimitHit(requestAccountIndex);
|
|
143
|
+
if (result.isConfirmed) {
|
|
144
|
+
const resetTime = new Date();
|
|
145
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
146
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
147
|
+
const hoursUntilReset = Math.ceil((resetTime.getTime() - Date.now()) / (1000 * 60 * 60));
|
|
148
|
+
await showToast(`🚫 Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`, 'warning');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
debugLog(`Billing limit hit ${2 - result.hitsNeeded}/2 for key ${String(position)} - not confirmed yet`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if (accountManager) {
|
|
156
|
+
debugLog(`HTTP ${response.status} but not billing limit for key ${String(position)}`);
|
|
157
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
158
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
118
159
|
}
|
|
119
160
|
}
|
|
120
|
-
catch {
|
|
121
|
-
|
|
161
|
+
catch (error) {
|
|
162
|
+
debugLog('Error reading response body:', error);
|
|
122
163
|
}
|
|
123
164
|
}
|
|
124
165
|
return response;
|
|
125
166
|
}
|
|
126
167
|
catch (error) {
|
|
127
|
-
await accountManager.markAccountFailure(
|
|
168
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
128
169
|
throw error;
|
|
129
170
|
}
|
|
130
171
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQnD,IAAI,cAAc,GAA8B,IAAI,CAAC;AACrD,IAAI,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const KimiAccountSchema: z.ZodObject<{
|
|
|
8
8
|
billingLimitResetTime: z.ZodDefault<z.ZodNumber>;
|
|
9
9
|
healthScore: z.ZodDefault<z.ZodNumber>;
|
|
10
10
|
consecutiveFailures: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
consecutiveBillingLimitHits: z.ZodDefault<z.ZodNumber>;
|
|
11
12
|
totalRequests: z.ZodDefault<z.ZodNumber>;
|
|
12
13
|
successfulRequests: z.ZodDefault<z.ZodNumber>;
|
|
13
14
|
responseTimes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -20,6 +21,7 @@ export declare const KimiAccountSchema: z.ZodObject<{
|
|
|
20
21
|
billingLimitResetTime: number;
|
|
21
22
|
healthScore: number;
|
|
22
23
|
consecutiveFailures: number;
|
|
24
|
+
consecutiveBillingLimitHits: number;
|
|
23
25
|
totalRequests: number;
|
|
24
26
|
successfulRequests: number;
|
|
25
27
|
responseTimes: number[];
|
|
@@ -34,6 +36,7 @@ export declare const KimiAccountSchema: z.ZodObject<{
|
|
|
34
36
|
billingLimitResetTime?: number | undefined;
|
|
35
37
|
healthScore?: number | undefined;
|
|
36
38
|
consecutiveFailures?: number | undefined;
|
|
39
|
+
consecutiveBillingLimitHits?: number | undefined;
|
|
37
40
|
totalRequests?: number | undefined;
|
|
38
41
|
successfulRequests?: number | undefined;
|
|
39
42
|
responseTimes?: number[] | undefined;
|
|
@@ -50,6 +53,7 @@ export declare const KimiAccountsConfigSchema: z.ZodObject<{
|
|
|
50
53
|
billingLimitResetTime: z.ZodDefault<z.ZodNumber>;
|
|
51
54
|
healthScore: z.ZodDefault<z.ZodNumber>;
|
|
52
55
|
consecutiveFailures: z.ZodDefault<z.ZodNumber>;
|
|
56
|
+
consecutiveBillingLimitHits: z.ZodDefault<z.ZodNumber>;
|
|
53
57
|
totalRequests: z.ZodDefault<z.ZodNumber>;
|
|
54
58
|
successfulRequests: z.ZodDefault<z.ZodNumber>;
|
|
55
59
|
responseTimes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -62,6 +66,7 @@ export declare const KimiAccountsConfigSchema: z.ZodObject<{
|
|
|
62
66
|
billingLimitResetTime: number;
|
|
63
67
|
healthScore: number;
|
|
64
68
|
consecutiveFailures: number;
|
|
69
|
+
consecutiveBillingLimitHits: number;
|
|
65
70
|
totalRequests: number;
|
|
66
71
|
successfulRequests: number;
|
|
67
72
|
responseTimes: number[];
|
|
@@ -76,6 +81,7 @@ export declare const KimiAccountsConfigSchema: z.ZodObject<{
|
|
|
76
81
|
billingLimitResetTime?: number | undefined;
|
|
77
82
|
healthScore?: number | undefined;
|
|
78
83
|
consecutiveFailures?: number | undefined;
|
|
84
|
+
consecutiveBillingLimitHits?: number | undefined;
|
|
79
85
|
totalRequests?: number | undefined;
|
|
80
86
|
successfulRequests?: number | undefined;
|
|
81
87
|
responseTimes?: number[] | undefined;
|
|
@@ -95,6 +101,7 @@ export declare const KimiAccountsConfigSchema: z.ZodObject<{
|
|
|
95
101
|
billingLimitResetTime: number;
|
|
96
102
|
healthScore: number;
|
|
97
103
|
consecutiveFailures: number;
|
|
104
|
+
consecutiveBillingLimitHits: number;
|
|
98
105
|
totalRequests: number;
|
|
99
106
|
successfulRequests: number;
|
|
100
107
|
responseTimes: number[];
|
|
@@ -115,6 +122,7 @@ export declare const KimiAccountsConfigSchema: z.ZodObject<{
|
|
|
115
122
|
billingLimitResetTime?: number | undefined;
|
|
116
123
|
healthScore?: number | undefined;
|
|
117
124
|
consecutiveFailures?: number | undefined;
|
|
125
|
+
consecutiveBillingLimitHits?: number | undefined;
|
|
118
126
|
totalRequests?: number | undefined;
|
|
119
127
|
successfulRequests?: number | undefined;
|
|
120
128
|
responseTimes?: number[] | undefined;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAU7E,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAM/D,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -8,6 +8,7 @@ export const KimiAccountSchema = z.object({
|
|
|
8
8
|
billingLimitResetTime: z.number().default(0),
|
|
9
9
|
healthScore: z.number().min(0).max(100).default(100),
|
|
10
10
|
consecutiveFailures: z.number().default(0),
|
|
11
|
+
consecutiveBillingLimitHits: z.number().default(0),
|
|
11
12
|
totalRequests: z.number().default(0),
|
|
12
13
|
successfulRequests: z.number().default(0),
|
|
13
14
|
responseTimes: z.array(z.number()).default([]),
|
|
@@ -26,6 +27,7 @@ export const DEFAULT_ACCOUNT = {
|
|
|
26
27
|
billingLimitResetTime: 0,
|
|
27
28
|
healthScore: 100,
|
|
28
29
|
consecutiveFailures: 0,
|
|
30
|
+
consecutiveBillingLimitHits: 0,
|
|
29
31
|
totalRequests: 0,
|
|
30
32
|
successfulRequests: 0,
|
|
31
33
|
responseTimes: [],
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3F,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,eAAe,GAAsD;IAChF,kBAAkB,EAAE,CAAC;IACrB,qBAAqB,EAAE,CAAC;IACxB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,CAAC;IACtB,aAAa,EAAE,CAAC;IAChB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAyC;IAClE,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,cAAc;IAChC,iBAAiB,EAAE,IAAI;IACvB,4BAA4B,EAAE,EAAE;CACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACpD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3F,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,eAAe,GAAsD;IAChF,kBAAkB,EAAE,CAAC;IACrB,qBAAqB,EAAE,CAAC;IACxB,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,CAAC;IACtB,2BAA2B,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC;IAChB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAyC;IAClE,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,cAAc;IAChC,iBAAiB,EAAE,IAAI;IACvB,4BAA4B,EAAE,EAAE;CACjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-kimi-rotator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "Kimi API Key Rotator for OpenCode - Automatically rotate between multiple Kimi API keys to handle rate limits",
|
|
5
5
|
"main": "./dist/plugin.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -74,4 +74,4 @@
|
|
|
74
74
|
"publishConfig": {
|
|
75
75
|
"access": "public"
|
|
76
76
|
}
|
|
77
|
-
}
|
|
77
|
+
}
|
package/src/plugin.ts
CHANGED
|
@@ -7,10 +7,32 @@ interface OpenCodeAuth {
|
|
|
7
7
|
key: string;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
const BILLING_LIMIT_PATTERNS = [
|
|
11
|
+
"you've reached your usage limit for this billing cycle",
|
|
12
|
+
'billing limit',
|
|
13
|
+
'usage limit exceeded',
|
|
14
|
+
'quota exceeded',
|
|
15
|
+
'insufficient credits',
|
|
16
|
+
'payment required',
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const HARD_BILLING_LIMIT_PATTERNS = [
|
|
20
|
+
"you've reached your usage limit for this billing cycle",
|
|
21
|
+
'your quota will be refreshed in the next cycle',
|
|
22
|
+
'from=quota-upgrade',
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const DEBUG_MODE = process.env.KIMI_ROTATOR_DEBUG === 'true';
|
|
26
|
+
|
|
10
27
|
let accountManager: KimiAccountManager | null = null;
|
|
11
|
-
let currentAccountIndex = 0;
|
|
12
28
|
let originalFetch: typeof globalThis.fetch | null = null;
|
|
13
29
|
|
|
30
|
+
function debugLog(message: string, data?: unknown) {
|
|
31
|
+
if (DEBUG_MODE) {
|
|
32
|
+
console.log(`[KimiRotator Debug] ${message}`, data ?? '');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
14
36
|
async function getAccountManager(): Promise<KimiAccountManager> {
|
|
15
37
|
if (!accountManager) {
|
|
16
38
|
accountManager = new KimiAccountManager();
|
|
@@ -29,8 +51,6 @@ async function getAuth(): Promise<OpenCodeAuth | null> {
|
|
|
29
51
|
return null;
|
|
30
52
|
}
|
|
31
53
|
|
|
32
|
-
currentAccountIndex = result.index;
|
|
33
|
-
|
|
34
54
|
return {
|
|
35
55
|
type: 'api',
|
|
36
56
|
key: result.account.key,
|
|
@@ -102,9 +122,9 @@ export const KimiRotatorPlugin: Plugin = async ({ client }) => {
|
|
|
102
122
|
}
|
|
103
123
|
const nextAccount = await accountManager.getNextAccount();
|
|
104
124
|
if (nextAccount) {
|
|
105
|
-
|
|
125
|
+
const requestAccountIndex = nextAccount.index;
|
|
106
126
|
const keyLabel = nextAccount.account.key.substring(0, 18) + '...';
|
|
107
|
-
const position =
|
|
127
|
+
const position = requestAccountIndex + 1;
|
|
108
128
|
const allKeysNow = await accountManager.listKeys();
|
|
109
129
|
const total = allKeysNow.length;
|
|
110
130
|
|
|
@@ -128,37 +148,74 @@ export const KimiRotatorPlugin: Plugin = async ({ client }) => {
|
|
|
128
148
|
if (response.status === 429) {
|
|
129
149
|
const retryAfter = response.headers.get('retry-after');
|
|
130
150
|
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
131
|
-
await accountManager.markAccountRateLimited(
|
|
151
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
132
152
|
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
133
153
|
} else if (response.ok) {
|
|
134
|
-
await accountManager.markAccountSuccess(
|
|
154
|
+
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
135
155
|
} else if (response.status >= 500) {
|
|
136
|
-
await accountManager.markAccountFailure(
|
|
156
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
137
157
|
} else if (response.status === 400 || response.status === 403) {
|
|
138
|
-
// Check for billing limit error in response body
|
|
139
|
-
// We need to clone the response to read the body without consuming it
|
|
140
158
|
const clonedResponse = response.clone();
|
|
141
159
|
try {
|
|
142
160
|
const bodyText = await clonedResponse.text();
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
161
|
+
const bodyLower = bodyText.toLowerCase();
|
|
162
|
+
|
|
163
|
+
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
164
|
+
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, ' '),
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const isBillingLimit = BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
168
|
+
bodyLower.includes(pattern)
|
|
169
|
+
);
|
|
170
|
+
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
171
|
+
bodyLower.includes(pattern)
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
if (isBillingLimit && accountManager) {
|
|
175
|
+
if (isHardBillingLimit) {
|
|
176
|
+
await accountManager.markAccountBillingLimited(requestAccountIndex);
|
|
177
|
+
const resetTime = new Date();
|
|
178
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
179
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
180
|
+
const hoursUntilReset = Math.ceil(
|
|
181
|
+
(resetTime.getTime() - Date.now()) / (1000 * 60 * 60)
|
|
182
|
+
);
|
|
183
|
+
await showToast(
|
|
184
|
+
`🚫 Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`,
|
|
185
|
+
'warning'
|
|
186
|
+
);
|
|
187
|
+
} else {
|
|
188
|
+
const result = await accountManager.recordBillingLimitHit(requestAccountIndex);
|
|
189
|
+
if (result.isConfirmed) {
|
|
190
|
+
const resetTime = new Date();
|
|
191
|
+
resetTime.setDate(resetTime.getDate() + 1);
|
|
192
|
+
resetTime.setHours(0, 0, 0, 0);
|
|
193
|
+
const hoursUntilReset = Math.ceil(
|
|
194
|
+
(resetTime.getTime() - Date.now()) / (1000 * 60 * 60)
|
|
195
|
+
);
|
|
196
|
+
await showToast(
|
|
197
|
+
`🚫 Key ${String(position)} billing limit reached - cooldown for ${String(hoursUntilReset)}h`,
|
|
198
|
+
'warning'
|
|
199
|
+
);
|
|
200
|
+
} else {
|
|
201
|
+
debugLog(
|
|
202
|
+
`Billing limit hit ${2 - result.hitsNeeded}/2 for key ${String(position)} - not confirmed yet`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
} else if (accountManager) {
|
|
207
|
+
debugLog(`HTTP ${response.status} but not billing limit for key ${String(position)}`);
|
|
208
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
209
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
153
210
|
}
|
|
154
|
-
} catch {
|
|
155
|
-
|
|
211
|
+
} catch (error) {
|
|
212
|
+
debugLog('Error reading response body:', error);
|
|
156
213
|
}
|
|
157
214
|
}
|
|
158
215
|
|
|
159
216
|
return response;
|
|
160
217
|
} catch (error: unknown) {
|
|
161
|
-
await accountManager.markAccountFailure(
|
|
218
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
162
219
|
throw error;
|
|
163
220
|
}
|
|
164
221
|
}
|