opencode-kimi-rotator 1.2.9 → 1.2.10
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/dist/plugin.bundle.js +38 -28
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +38 -30
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/plugin.ts +42 -29
package/dist/plugin.bundle.js
CHANGED
|
@@ -6246,6 +6246,8 @@ var HARD_BILLING_LIMIT_PATTERNS = [
|
|
|
6246
6246
|
"from=quota-upgrade"
|
|
6247
6247
|
];
|
|
6248
6248
|
var MEMBERSHIP_VERIFICATION_PATTERNS = [
|
|
6249
|
+
"we're unable to verify your membership benefits at this time",
|
|
6250
|
+
"unable to verify your membership benefits at this time",
|
|
6249
6251
|
"unable to verify your membership benefits",
|
|
6250
6252
|
"please ensure your membership is active"
|
|
6251
6253
|
];
|
|
@@ -6258,6 +6260,18 @@ function debugLog(message, data) {
|
|
|
6258
6260
|
console.log(`[KimiRotator Debug] ${message}`, data ?? "");
|
|
6259
6261
|
}
|
|
6260
6262
|
}
|
|
6263
|
+
function normalizeResponseText(text) {
|
|
6264
|
+
return text.toLowerCase().replace(/[’]/g, "'").replace(/\s+/g, " ").trim();
|
|
6265
|
+
}
|
|
6266
|
+
async function readResponseText(response) {
|
|
6267
|
+
try {
|
|
6268
|
+
const clonedResponse = response.clone();
|
|
6269
|
+
return await clonedResponse.text();
|
|
6270
|
+
} catch (error) {
|
|
6271
|
+
debugLog("Error reading response body:", error);
|
|
6272
|
+
return null;
|
|
6273
|
+
}
|
|
6274
|
+
}
|
|
6261
6275
|
async function getAccountManager() {
|
|
6262
6276
|
if (!accountManager) {
|
|
6263
6277
|
accountManager = new KimiAccountManager();
|
|
@@ -6362,37 +6376,25 @@ var KimiRotatorPlugin = async ({ client }) => {
|
|
|
6362
6376
|
const attemptInput = input instanceof Request ? input.clone() : input;
|
|
6363
6377
|
const response = await originalFetch(attemptInput, { ...init, headers });
|
|
6364
6378
|
const responseTime = Date.now() - requestStartTime;
|
|
6365
|
-
if (response.
|
|
6366
|
-
const retryAfter = response.headers.get("retry-after");
|
|
6367
|
-
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1e3 : 6e4;
|
|
6368
|
-
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
6369
|
-
await showToast(`\u26A0\uFE0F Key ${String(position)} rate limited`, "warning");
|
|
6370
|
-
if (attempt < maxAttempts - 1) {
|
|
6371
|
-
lastResponse = response;
|
|
6372
|
-
continue;
|
|
6373
|
-
}
|
|
6374
|
-
} else if (response.ok) {
|
|
6379
|
+
if (response.ok) {
|
|
6375
6380
|
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
6376
6381
|
return response;
|
|
6377
|
-
}
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
try {
|
|
6383
|
-
const bodyText = await clonedResponse.text();
|
|
6384
|
-
const bodyLower = bodyText.toLowerCase();
|
|
6382
|
+
}
|
|
6383
|
+
if (response.status >= 400 && response.status < 500) {
|
|
6384
|
+
const bodyText = await readResponseText(response);
|
|
6385
|
+
if (bodyText !== null) {
|
|
6386
|
+
const bodyNormalized = normalizeResponseText(bodyText);
|
|
6385
6387
|
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
6386
6388
|
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, " ")
|
|
6387
6389
|
});
|
|
6388
6390
|
const isBillingLimit = BILLING_LIMIT_PATTERNS.some(
|
|
6389
|
-
(pattern) =>
|
|
6391
|
+
(pattern) => bodyNormalized.includes(pattern)
|
|
6390
6392
|
);
|
|
6391
6393
|
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some(
|
|
6392
|
-
(pattern) =>
|
|
6394
|
+
(pattern) => bodyNormalized.includes(pattern)
|
|
6393
6395
|
);
|
|
6394
6396
|
const isMembershipVerificationFailure = MEMBERSHIP_VERIFICATION_PATTERNS.some(
|
|
6395
|
-
(pattern) =>
|
|
6397
|
+
(pattern) => bodyNormalized.includes(pattern)
|
|
6396
6398
|
);
|
|
6397
6399
|
if (isMembershipVerificationFailure && accountManager) {
|
|
6398
6400
|
await accountManager.markAccountMembershipVerificationFailed(
|
|
@@ -6452,15 +6454,23 @@ var KimiRotatorPlugin = async ({ client }) => {
|
|
|
6452
6454
|
}
|
|
6453
6455
|
return response;
|
|
6454
6456
|
}
|
|
6455
|
-
debugLog(`HTTP ${response.status} but not billing limit for key ${String(position)}`);
|
|
6456
|
-
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
6457
|
-
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6458
|
-
return response;
|
|
6459
|
-
} catch (error) {
|
|
6460
|
-
debugLog("Error reading response body:", error);
|
|
6461
|
-
return response;
|
|
6462
6457
|
}
|
|
6458
|
+
}
|
|
6459
|
+
if (response.status === 429) {
|
|
6460
|
+
const retryAfter = response.headers.get("retry-after");
|
|
6461
|
+
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1e3 : 6e4;
|
|
6462
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
6463
|
+
await showToast(`\u26A0\uFE0F Key ${String(position)} rate limited`, "warning");
|
|
6464
|
+
if (attempt < maxAttempts - 1) {
|
|
6465
|
+
lastResponse = response;
|
|
6466
|
+
continue;
|
|
6467
|
+
}
|
|
6468
|
+
} else if (response.status >= 500) {
|
|
6469
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6470
|
+
return response;
|
|
6463
6471
|
} else {
|
|
6472
|
+
debugLog(`HTTP ${response.status} not matched for retry on key ${String(position)}`);
|
|
6473
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
6464
6474
|
await accountManager.markAccountFailure(requestAccountIndex);
|
|
6465
6475
|
return response;
|
|
6466
6476
|
}
|
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;AA6I9C,eAAO,MAAM,iBAAiB,EAAE,MAyO/B,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -13,6 +13,8 @@ const HARD_BILLING_LIMIT_PATTERNS = [
|
|
|
13
13
|
'from=quota-upgrade',
|
|
14
14
|
];
|
|
15
15
|
const MEMBERSHIP_VERIFICATION_PATTERNS = [
|
|
16
|
+
"we're unable to verify your membership benefits at this time",
|
|
17
|
+
'unable to verify your membership benefits at this time',
|
|
16
18
|
'unable to verify your membership benefits',
|
|
17
19
|
'please ensure your membership is active',
|
|
18
20
|
];
|
|
@@ -25,6 +27,19 @@ function debugLog(message, data) {
|
|
|
25
27
|
console.log(`[KimiRotator Debug] ${message}`, data ?? '');
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
function normalizeResponseText(text) {
|
|
31
|
+
return text.toLowerCase().replace(/[’]/g, "'").replace(/\s+/g, ' ').trim();
|
|
32
|
+
}
|
|
33
|
+
async function readResponseText(response) {
|
|
34
|
+
try {
|
|
35
|
+
const clonedResponse = response.clone();
|
|
36
|
+
return await clonedResponse.text();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
debugLog('Error reading response body:', error);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
28
43
|
async function getAccountManager() {
|
|
29
44
|
if (!accountManager) {
|
|
30
45
|
accountManager = new KimiAccountManager();
|
|
@@ -135,35 +150,20 @@ export const KimiRotatorPlugin = async ({ client }) => {
|
|
|
135
150
|
const attemptInput = input instanceof Request ? input.clone() : input;
|
|
136
151
|
const response = await originalFetch(attemptInput, { ...init, headers });
|
|
137
152
|
const responseTime = Date.now() - requestStartTime;
|
|
138
|
-
if (response.
|
|
139
|
-
const retryAfter = response.headers.get('retry-after');
|
|
140
|
-
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
141
|
-
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
142
|
-
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
143
|
-
if (attempt < maxAttempts - 1) {
|
|
144
|
-
lastResponse = response;
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
else if (response.ok) {
|
|
153
|
+
if (response.ok) {
|
|
149
154
|
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
150
155
|
return response;
|
|
151
156
|
}
|
|
152
|
-
|
|
153
|
-
await
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
else if (response.status === 400 || response.status === 403) {
|
|
157
|
-
const clonedResponse = response.clone();
|
|
158
|
-
try {
|
|
159
|
-
const bodyText = await clonedResponse.text();
|
|
160
|
-
const bodyLower = bodyText.toLowerCase();
|
|
157
|
+
if (response.status >= 400 && response.status < 500) {
|
|
158
|
+
const bodyText = await readResponseText(response);
|
|
159
|
+
if (bodyText !== null) {
|
|
160
|
+
const bodyNormalized = normalizeResponseText(bodyText);
|
|
161
161
|
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
162
162
|
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, ' '),
|
|
163
163
|
});
|
|
164
|
-
const isBillingLimit = BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
165
|
-
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
166
|
-
const isMembershipVerificationFailure = MEMBERSHIP_VERIFICATION_PATTERNS.some((pattern) =>
|
|
164
|
+
const isBillingLimit = BILLING_LIMIT_PATTERNS.some((pattern) => bodyNormalized.includes(pattern));
|
|
165
|
+
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some((pattern) => bodyNormalized.includes(pattern));
|
|
166
|
+
const isMembershipVerificationFailure = MEMBERSHIP_VERIFICATION_PATTERNS.some((pattern) => bodyNormalized.includes(pattern));
|
|
167
167
|
if (isMembershipVerificationFailure && accountManager) {
|
|
168
168
|
await accountManager.markAccountMembershipVerificationFailed(requestAccountIndex, MEMBERSHIP_VERIFICATION_COOLDOWN_MS);
|
|
169
169
|
await showToast(`🚫 Key ${String(position)} membership verification failed - skipped for 24h`, 'warning');
|
|
@@ -206,17 +206,25 @@ export const KimiRotatorPlugin = async ({ client }) => {
|
|
|
206
206
|
}
|
|
207
207
|
return response;
|
|
208
208
|
}
|
|
209
|
-
debugLog(`HTTP ${response.status} but not billing limit for key ${String(position)}`);
|
|
210
|
-
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
211
|
-
await accountManager.markAccountFailure(requestAccountIndex);
|
|
212
|
-
return response;
|
|
213
209
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
210
|
+
}
|
|
211
|
+
if (response.status === 429) {
|
|
212
|
+
const retryAfter = response.headers.get('retry-after');
|
|
213
|
+
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
214
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
215
|
+
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
216
|
+
if (attempt < maxAttempts - 1) {
|
|
217
|
+
lastResponse = response;
|
|
218
|
+
continue;
|
|
217
219
|
}
|
|
218
220
|
}
|
|
221
|
+
else if (response.status >= 500) {
|
|
222
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
223
|
+
return response;
|
|
224
|
+
}
|
|
219
225
|
else {
|
|
226
|
+
debugLog(`HTTP ${response.status} not matched for retry on key ${String(position)}`);
|
|
227
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
220
228
|
await accountManager.markAccountFailure(requestAccountIndex);
|
|
221
229
|
return response;
|
|
222
230
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-kimi-rotator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
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",
|
package/src/plugin.ts
CHANGED
|
@@ -23,6 +23,8 @@ const HARD_BILLING_LIMIT_PATTERNS = [
|
|
|
23
23
|
];
|
|
24
24
|
|
|
25
25
|
const MEMBERSHIP_VERIFICATION_PATTERNS = [
|
|
26
|
+
"we're unable to verify your membership benefits at this time",
|
|
27
|
+
'unable to verify your membership benefits at this time',
|
|
26
28
|
'unable to verify your membership benefits',
|
|
27
29
|
'please ensure your membership is active',
|
|
28
30
|
];
|
|
@@ -40,6 +42,20 @@ function debugLog(message: string, data?: unknown) {
|
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
|
|
45
|
+
function normalizeResponseText(text: string): string {
|
|
46
|
+
return text.toLowerCase().replace(/[’]/g, "'").replace(/\s+/g, ' ').trim();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async function readResponseText(response: Response): Promise<string | null> {
|
|
50
|
+
try {
|
|
51
|
+
const clonedResponse = response.clone();
|
|
52
|
+
return await clonedResponse.text();
|
|
53
|
+
} catch (error) {
|
|
54
|
+
debugLog('Error reading response body:', error);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
43
59
|
async function getAccountManager(): Promise<KimiAccountManager> {
|
|
44
60
|
if (!accountManager) {
|
|
45
61
|
accountManager = new KimiAccountManager();
|
|
@@ -183,40 +199,28 @@ export const KimiRotatorPlugin: Plugin = async ({ client }) => {
|
|
|
183
199
|
const response = await originalFetch(attemptInput, { ...init, headers });
|
|
184
200
|
const responseTime = Date.now() - requestStartTime;
|
|
185
201
|
|
|
186
|
-
if (response.
|
|
187
|
-
const retryAfter = response.headers.get('retry-after');
|
|
188
|
-
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
189
|
-
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
190
|
-
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
191
|
-
|
|
192
|
-
if (attempt < maxAttempts - 1) {
|
|
193
|
-
lastResponse = response;
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
} else if (response.ok) {
|
|
202
|
+
if (response.ok) {
|
|
197
203
|
await accountManager.markAccountSuccess(requestAccountIndex, responseTime, today);
|
|
198
204
|
return response;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const bodyText = await clonedResponse.text();
|
|
206
|
-
const bodyLower = bodyText.toLowerCase();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
if (response.status >= 400 && response.status < 500) {
|
|
208
|
+
const bodyText = await readResponseText(response);
|
|
209
|
+
if (bodyText !== null) {
|
|
210
|
+
const bodyNormalized = normalizeResponseText(bodyText);
|
|
207
211
|
|
|
208
212
|
debugLog(`HTTP ${response.status} for key ${String(position)}`, {
|
|
209
213
|
bodyPreview: bodyText.substring(0, 200).replace(/\s+/g, ' '),
|
|
210
214
|
});
|
|
211
215
|
|
|
212
216
|
const isBillingLimit = BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
213
|
-
|
|
217
|
+
bodyNormalized.includes(pattern)
|
|
214
218
|
);
|
|
215
219
|
const isHardBillingLimit = HARD_BILLING_LIMIT_PATTERNS.some((pattern) =>
|
|
216
|
-
|
|
220
|
+
bodyNormalized.includes(pattern)
|
|
217
221
|
);
|
|
218
222
|
const isMembershipVerificationFailure = MEMBERSHIP_VERIFICATION_PATTERNS.some(
|
|
219
|
-
(pattern) =>
|
|
223
|
+
(pattern) => bodyNormalized.includes(pattern)
|
|
220
224
|
);
|
|
221
225
|
|
|
222
226
|
if (isMembershipVerificationFailure && accountManager) {
|
|
@@ -283,16 +287,25 @@ export const KimiRotatorPlugin: Plugin = async ({ client }) => {
|
|
|
283
287
|
|
|
284
288
|
return response;
|
|
285
289
|
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (response.status === 429) {
|
|
294
|
+
const retryAfter = response.headers.get('retry-after');
|
|
295
|
+
const retryAfterMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 60000;
|
|
296
|
+
await accountManager.markAccountRateLimited(requestAccountIndex, retryAfterMs);
|
|
297
|
+
await showToast(`⚠️ Key ${String(position)} rate limited`, 'warning');
|
|
286
298
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
return response;
|
|
291
|
-
} catch (error) {
|
|
292
|
-
debugLog('Error reading response body:', error);
|
|
293
|
-
return response;
|
|
299
|
+
if (attempt < maxAttempts - 1) {
|
|
300
|
+
lastResponse = response;
|
|
301
|
+
continue;
|
|
294
302
|
}
|
|
303
|
+
} else if (response.status >= 500) {
|
|
304
|
+
await accountManager.markAccountFailure(requestAccountIndex);
|
|
305
|
+
return response;
|
|
295
306
|
} else {
|
|
307
|
+
debugLog(`HTTP ${response.status} not matched for retry on key ${String(position)}`);
|
|
308
|
+
await accountManager.resetBillingLimitHits(requestAccountIndex);
|
|
296
309
|
await accountManager.markAccountFailure(requestAccountIndex);
|
|
297
310
|
return response;
|
|
298
311
|
}
|