opencode-antigravity-autopilot 2.1.0 → 2.1.3
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/manager.d.ts +1 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +56 -4
- package/dist/manager.js.map +1 -1
- package/dist/plugin-tools.d.ts.map +1 -1
- package/dist/plugin-tools.js +11 -2
- package/dist/plugin-tools.js.map +1 -1
- package/dist/plugin.d.ts +25 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +177 -35
- package/dist/plugin.js.map +1 -1
- package/dist/quota/ApiQuotaPoller.d.ts.map +1 -1
- package/dist/quota/ApiQuotaPoller.js +14 -9
- package/dist/quota/ApiQuotaPoller.js.map +1 -1
- package/dist/quota/QuotaCacheUpdater.d.ts +11 -6
- package/dist/quota/QuotaCacheUpdater.d.ts.map +1 -1
- package/dist/quota/QuotaCacheUpdater.js +98 -71
- package/dist/quota/QuotaCacheUpdater.js.map +1 -1
- package/dist/rotation/HardLimitDetector.d.ts +1 -0
- package/dist/rotation/HardLimitDetector.d.ts.map +1 -1
- package/dist/rotation/HardLimitDetector.js +85 -5
- package/dist/rotation/HardLimitDetector.js.map +1 -1
- package/dist/rotation/ModelSelector.d.ts +1 -0
- package/dist/rotation/ModelSelector.d.ts.map +1 -1
- package/dist/rotation/ModelSelector.js +19 -0
- package/dist/rotation/ModelSelector.js.map +1 -1
- package/dist/rotation/QuotaTracker.d.ts +1 -0
- package/dist/rotation/QuotaTracker.d.ts.map +1 -1
- package/dist/rotation/QuotaTracker.js +39 -3
- package/dist/rotation/QuotaTracker.js.map +1 -1
- package/dist/rotation/reproduce_crash.d.ts +2 -0
- package/dist/rotation/reproduce_crash.d.ts.map +1 -0
- package/dist/rotation/reproduce_crash.js +10 -0
- package/dist/rotation/reproduce_crash.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +147 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +2 -2
|
@@ -76,15 +76,20 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
76
76
|
}
|
|
77
77
|
return ar;
|
|
78
78
|
};
|
|
79
|
+
import fs from 'fs';
|
|
80
|
+
var LOG_FILE = '/tmp/autopilot.log';
|
|
81
|
+
function logToFile(message) {
|
|
82
|
+
var timestamp = new Date().toISOString();
|
|
83
|
+
fs.appendFileSync(LOG_FILE, "[".concat(timestamp, "] ").concat(message, "\n"));
|
|
84
|
+
}
|
|
79
85
|
var ANTIGRAVITY_CLIENT_ID = '1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com';
|
|
80
86
|
var ANTIGRAVITY_CLIENT_SECRET = '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';
|
|
81
87
|
var GOOGLE_TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
82
88
|
var CLOUDCODE_BASE_URL = 'https://cloudcode-pa.googleapis.com';
|
|
83
89
|
var CLOUDCODE_METADATA = {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
ideName: 'vscode',
|
|
90
|
+
ideType: 'ANTIGRAVITY',
|
|
91
|
+
platform: 'PLATFORM_UNSPECIFIED',
|
|
92
|
+
pluginType: 'GEMINI',
|
|
88
93
|
};
|
|
89
94
|
var AuthenticationError = (function (_super) {
|
|
90
95
|
__extends(AuthenticationError, _super);
|
|
@@ -128,7 +133,7 @@ var ApiQuotaPoller = (function () {
|
|
|
128
133
|
case 2:
|
|
129
134
|
response = _a.sent();
|
|
130
135
|
if (!response.ok) {
|
|
131
|
-
|
|
136
|
+
logToFile("Token refresh failed: ".concat(response.status));
|
|
132
137
|
if (response.status === 401 || response.status === 403) {
|
|
133
138
|
throw new AuthenticationError("Token refresh failed (".concat(response.status, ")"));
|
|
134
139
|
}
|
|
@@ -140,7 +145,7 @@ var ApiQuotaPoller = (function () {
|
|
|
140
145
|
return [2, data.access_token];
|
|
141
146
|
case 4:
|
|
142
147
|
e_1 = _a.sent();
|
|
143
|
-
|
|
148
|
+
logToFile("Token refresh error: ".concat(e_1.message));
|
|
144
149
|
throw e_1;
|
|
145
150
|
case 5:
|
|
146
151
|
clearTimeout(timeout);
|
|
@@ -174,7 +179,7 @@ var ApiQuotaPoller = (function () {
|
|
|
174
179
|
case 2:
|
|
175
180
|
response = _a.sent();
|
|
176
181
|
if (!response.ok) {
|
|
177
|
-
|
|
182
|
+
logToFile("loadCodeAssist failed: ".concat(response.status));
|
|
178
183
|
throw new Error("loadCodeAssist failed (".concat(response.status, ")"));
|
|
179
184
|
}
|
|
180
185
|
return [4, response.json()];
|
|
@@ -221,7 +226,7 @@ var ApiQuotaPoller = (function () {
|
|
|
221
226
|
case 2:
|
|
222
227
|
response = _a.sent();
|
|
223
228
|
if (!response.ok) {
|
|
224
|
-
|
|
229
|
+
logToFile("fetchAvailableModels failed: ".concat(response.status));
|
|
225
230
|
throw new Error("fetchModels failed (".concat(response.status, ")"));
|
|
226
231
|
}
|
|
227
232
|
return [4, response.json()];
|
|
@@ -296,7 +301,7 @@ var ApiQuotaPoller = (function () {
|
|
|
296
301
|
if (error_1 instanceof AuthenticationError) {
|
|
297
302
|
throw error_1;
|
|
298
303
|
}
|
|
299
|
-
|
|
304
|
+
logToFile("Failed to check quota via API: ".concat(error_1));
|
|
300
305
|
return [2, []];
|
|
301
306
|
case 6: return [2];
|
|
302
307
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiQuotaPoller.js","sourceRoot":"","sources":["../../src/quota/ApiQuotaPoller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ApiQuotaPoller.js","sourceRoot":"","sources":["../../src/quota/ApiQuotaPoller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,IAAM,QAAQ,GAAG,oBAAoB,CAAC;AACtC,SAAS,SAAS,CAAC,OAAe;IAChC,IAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAI,SAAS,eAAK,OAAO,OAAI,CAAC,CAAC;AAC7D,CAAC;AAiDD,IAAM,qBAAqB,GAAG,2EAA2E,CAAC;AAC1G,IAAM,yBAAyB,GAAG,qCAAqC,CAAC;AACxE,IAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAC/D,IAAM,kBAAkB,GAAG,qCAAqC,CAAC;AACjE,IAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,sBAAsB;IAChC,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEF;IAAyC,uCAAK;IAC5C,6BAAY,OAAe;QACzB,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QACf,KAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;;IACpC,CAAC;IACH,0BAAC;AAAD,CAAC,AALD,CAAyC,KAAK,GAK7C;;AAID;IACE;QACE,IAAI,CAAC,CAAC,IAAI,YAAY,cAAc,CAAC,EAAE,CAAC;YAEtC,OAAO,IAAI,cAAc,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEa,2CAAkB,GAAhC,UAAiC,YAAoB;;;;;;wBAC7C,MAAM,GAAG,IAAI,eAAe,CAAC;4BACjC,SAAS,EAAE,qBAAqB;4BAChC,aAAa,EAAE,yBAAyB;4BACxC,aAAa,EAAE,YAAY;4BAC3B,UAAU,EAAE,eAAe;yBAC5B,CAAC,CAAC;wBAEG,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;wBACnC,OAAO,GAAG,UAAU,CAAC,cAAM,OAAA,UAAU,CAAC,KAAK,EAAE,EAAlB,CAAkB,EAAE,KAAK,CAAC,CAAC;;;;wBAGzC,WAAM,KAAK,CAAC,gBAAgB,EAAE;gCAC7C,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;gCAChE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;gCACvB,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B,CAAC,EAAA;;wBALI,QAAQ,GAAG,SAKf;wBAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;4BACjB,SAAS,CAAC,gCAAyB,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;4BACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gCACvD,MAAM,IAAI,mBAAmB,CAAC,gCAAyB,QAAQ,CAAC,MAAM,MAAG,CAAC,CAAC;4BAC7E,CAAC;4BACD,MAAM,IAAI,KAAK,CAAC,gCAAyB,QAAQ,CAAC,MAAM,MAAG,CAAC,CAAC;wBAC/D,CAAC;wBAEa,WAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAA7B,IAAI,GAAG,CAAC,SAAqB,CAAkB;wBACrD,WAAO,IAAI,CAAC,YAAY,EAAC;;;wBAEzB,SAAS,CAAC,+BAAwB,GAAC,CAAC,OAAO,CAAE,CAAC,CAAC;wBAC/C,MAAM,GAAC,CAAC;;wBAER,YAAY,CAAC,OAAO,CAAC,CAAC;;;;;;KAEzB;IAEa,uCAAc,GAA5B,UAA6B,WAAmB;;;;;;wBACxC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;wBACnC,OAAO,GAAG,UAAU,CAAC,cAAM,OAAA,UAAU,CAAC,KAAK,EAAE,EAAlB,CAAkB,EAAE,KAAK,CAAC,CAAC;;;;wBAGzC,WAAM,KAAK,CAAC,UAAG,kBAAkB,+BAA4B,EAAE;gCAC9E,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE;oCACP,aAAa,EAAE,iBAAU,WAAW,CAAE;oCACtC,cAAc,EAAE,kBAAkB;oCAClC,YAAY,EAAE,aAAa;iCAC5B;gCACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;gCACtD,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B,CAAC,EAAA;;wBATI,QAAQ,GAAG,SASf;wBAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;4BACjB,SAAS,CAAC,iCAA0B,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;4BACvD,MAAM,IAAI,KAAK,CAAC,iCAA0B,QAAQ,CAAC,MAAM,MAAG,CAAC,CAAC;wBAChE,CAAC;wBACO,WAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAA7B,WAAO,CAAC,SAAqB,CAA2B,EAAC;;wBAEzD,YAAY,CAAC,OAAO,CAAC,CAAC;;;;;;KAEzB;IAEO,yCAAgB,GAAxB,UAAyB,uBAAgC;QACvD,IAAI,CAAC,uBAAuB;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE,CAAC;YAChD,IAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEa,6CAAoB,GAAlC,UACE,WAAmB,EACnB,SAAkB;;;;;;wBAEZ,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;wBACnC,OAAO,GAAG,UAAU,CAAC,cAAM,OAAA,UAAU,CAAC,KAAK,EAAE,EAAlB,CAAkB,EAAE,KAAK,CAAC,CAAC;;;;wBAGzC,WAAM,KAAK,CAAC,UAAG,kBAAkB,qCAAkC,EAAE;gCACpF,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE;oCACP,aAAa,EAAE,iBAAU,WAAW,CAAE;oCACtC,cAAc,EAAE,kBAAkB;oCAClC,YAAY,EAAE,aAAa;iCAC5B;gCACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gCAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B,CAAC,EAAA;;wBATI,QAAQ,GAAG,SASf;wBAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;4BACjB,SAAS,CAAC,uCAAgC,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;4BAC7D,MAAM,IAAI,KAAK,CAAC,8BAAuB,QAAQ,CAAC,MAAM,MAAG,CAAC,CAAC;wBAC7D,CAAC;wBACO,WAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAA7B,WAAO,CAAC,SAAqB,CAA2B,EAAC;;wBAEzD,YAAY,CAAC,OAAO,CAAC,CAAC;;;;;;KAEzB;IAEK,mCAAU,GAAhB,UAAiB,OAA0B;;;;;;;;;wBAEnB,WAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAA;;wBAAjE,WAAW,GAAG,SAAmD;wBACnE,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;6BAE1D,CAAC,SAAS,EAAV,cAAU;wBACO,WAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAA;;wBAAnD,UAAU,GAAG,SAAsC;wBACzD,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;;4BAGlD,WAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAA;;wBAAvE,aAAa,GAAG,SAAuD;wBAC7E,IAAI,CAAC,aAAa,CAAC,MAAM;4BAAE,WAAO,EAAE,EAAC;wBAE/B,MAAM,GAAqB,EAAE,CAAC;;4BAEpC,KAA+B,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA,4CAAE,CAAC;gCAA3D,KAAA,mBAAgB,EAAf,QAAQ,QAAA,EAAE,IAAI,QAAA;gCAClB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gCACjC,IAAI,CAAC,SAAS;oCAAE,SAAS;gCAEnB,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC;gCACrC,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gCAGvC,IACE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;oCAC9B,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;oCAC9B,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;oCACjC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACzC,CAAC;oCACD,SAAS;gCACX,CAAC;gCAEK,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAA,SAAS,CAAC,iBAAiB,mCAAI,CAAC,CAAC,CAAC,CAAC;gCAErF,MAAM,CAAC,IAAI,CAAC;oCACV,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ;oCAC7B,WAAW,EAAE,KAAK;oCAClB,iBAAiB,mBAAA;oCACjB,WAAW,EAAE,iBAAiB,IAAI,CAAC;oCACnC,SAAS,EAAE,SAAS,CAAC,SAAS;iCAC/B,CAAC,CAAC;4BACL,CAAC;;;;;;;;;wBAED,WAAO,MAAM,EAAC;;;wBAEd,IAAI,OAAK,YAAY,mBAAmB,EAAE,CAAC;4BACzC,MAAM,OAAK,CAAC;wBACd,CAAC;wBACD,SAAS,CAAC,yCAAkC,OAAK,CAAE,CAAC,CAAC;wBACrD,WAAO,EAAE,EAAC;;;;;KAEb;IAEK,2CAAkB,GAAxB,UAAyB,OAA0B,EAAE,SAAiB;;;;;4BACrD,WAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;;wBAAvC,MAAM,GAAG,SAA8B;wBAGzC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAApD,CAAoD,CAAC,CAAC;wBAGnF,IAAI,CAAC,KAAK,EAAE,CAAC;4BACL,qBAAmB,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;4BACvE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC;gCACnB,OAAA,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,kBAAgB,CAAC;oCAChD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,kBAAgB,CAAC;4BADtD,CACsD,CACvD,CAAC;wBACJ,CAAC;wBAED,IAAI,CAAC,KAAK;4BAAE,WAAO,IAAI,EAAC;wBAExB,WAAO;gCACL,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gCAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;gCAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;6BACnB,EAAC;;;;KACH;IAEK,qCAAY,GAAlB,UAAmB,OAA0B;;;;;;4BAC5B,WAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;;wBAAvC,MAAM,GAAG,SAA8B;wBACvC,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;;4BAE9C,KAAoB,WAAA,SAAA,MAAM,CAAA,gFAAE,CAAC;gCAAlB,KAAK;gCACd,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;oCACxB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oCAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;oCAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;iCACnB,CAAC,CAAC;gCAGH,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE;oCAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oCAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;oCAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;iCACnB,CAAC,CAAC;4BACL,CAAC;;;;;;;;;wBAED,WAAO,QAAQ,EAAC;;;;KACjB;IACH,qBAAC;AAAD,CAAC,AAhND,IAgNC"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { QuotaManager } from '../manager';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
export declare function writeQuotaToCache(quota: {
|
|
3
|
+
remainingFraction: number;
|
|
4
|
+
model?: string;
|
|
5
|
+
}): Promise<void>;
|
|
4
6
|
export declare class QuotaCacheUpdater {
|
|
5
7
|
private manager;
|
|
6
|
-
private
|
|
7
|
-
private
|
|
8
|
-
|
|
8
|
+
private idleTimeoutId;
|
|
9
|
+
private idlePollIntervalMs;
|
|
10
|
+
private lastQueryTime;
|
|
11
|
+
constructor(manager: QuotaManager, idlePollIntervalMs?: number);
|
|
9
12
|
updateCache(): Promise<void>;
|
|
13
|
+
onQueryCompleted(): Promise<void>;
|
|
10
14
|
start(): void;
|
|
15
|
+
private resetIdleTimer;
|
|
11
16
|
stop(): void;
|
|
12
17
|
}
|
|
13
|
-
export declare function startQuotaCacheService(
|
|
18
|
+
export declare function startQuotaCacheService(idlePollIntervalMs?: number): Promise<QuotaCacheUpdater>;
|
|
14
19
|
//# sourceMappingURL=QuotaCacheUpdater.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaCacheUpdater.d.ts","sourceRoot":"","sources":["../../src/quota/QuotaCacheUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"QuotaCacheUpdater.d.ts","sourceRoot":"","sources":["../../src/quota/QuotaCacheUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B1C,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3G;AAID,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAU;gBAEnB,OAAO,EAAE,YAAY,EAAE,kBAAkB,GAAE,MAAsC;IAWvF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B5B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,cAAc;IAatB,IAAI,IAAI,IAAI;CAOb;AAED,wBAAsB,sBAAsB,CAAC,kBAAkB,GAAE,MAAsC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQnI"}
|
|
@@ -38,6 +38,11 @@ import { QuotaManager } from '../manager';
|
|
|
38
38
|
import fs from 'fs';
|
|
39
39
|
import path from 'path';
|
|
40
40
|
import os from 'os';
|
|
41
|
+
var LOG_FILE = '/tmp/autopilot.log';
|
|
42
|
+
function logToFile(message) {
|
|
43
|
+
var timestamp = new Date().toISOString();
|
|
44
|
+
fs.appendFileSync(LOG_FILE, "[".concat(timestamp, "] [QuotaCacheUpdater] ").concat(message, "\n"));
|
|
45
|
+
}
|
|
41
46
|
function getQuotaCachePath() {
|
|
42
47
|
var xdgConfigHome = process.env.XDG_CONFIG_HOME;
|
|
43
48
|
if (xdgConfigHome) {
|
|
@@ -48,109 +53,131 @@ function getQuotaCachePath() {
|
|
|
48
53
|
}
|
|
49
54
|
export function writeQuotaToCache(quota) {
|
|
50
55
|
return __awaiter(this, void 0, void 0, function () {
|
|
51
|
-
var cache, cachePath, cacheDir
|
|
56
|
+
var cache, cachePath, cacheDir;
|
|
52
57
|
return __generator(this, function (_a) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
cacheDir
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
_a.sent();
|
|
69
|
-
return [3, 3];
|
|
70
|
-
case 2:
|
|
71
|
-
error_1 = _a.sent();
|
|
72
|
-
console.warn('Failed to write quota cache', error_1);
|
|
73
|
-
return [3, 3];
|
|
74
|
-
case 3: return [2];
|
|
58
|
+
try {
|
|
59
|
+
cache = {
|
|
60
|
+
percentage: Math.round(quota.remainingFraction * 100),
|
|
61
|
+
model: quota.model || 'unknown',
|
|
62
|
+
timestamp: Date.now(),
|
|
63
|
+
};
|
|
64
|
+
cachePath = getQuotaCachePath();
|
|
65
|
+
cacheDir = path.dirname(cachePath);
|
|
66
|
+
if (!fs.existsSync(cacheDir)) {
|
|
67
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
logToFile("Failed to write quota cache: ".concat(error));
|
|
75
73
|
}
|
|
74
|
+
return [2];
|
|
76
75
|
});
|
|
77
76
|
});
|
|
78
77
|
}
|
|
78
|
+
var DEFAULT_IDLE_POLL_INTERVAL_MS = 5 * 60 * 1000;
|
|
79
79
|
var QuotaCacheUpdater = (function () {
|
|
80
|
-
function QuotaCacheUpdater(manager,
|
|
81
|
-
if (
|
|
80
|
+
function QuotaCacheUpdater(manager, idlePollIntervalMs) {
|
|
81
|
+
if (idlePollIntervalMs === void 0) { idlePollIntervalMs = DEFAULT_IDLE_POLL_INTERVAL_MS; }
|
|
82
82
|
if (!(this instanceof QuotaCacheUpdater)) {
|
|
83
|
-
return new QuotaCacheUpdater(manager,
|
|
83
|
+
return new QuotaCacheUpdater(manager, idlePollIntervalMs);
|
|
84
84
|
}
|
|
85
|
-
this.
|
|
85
|
+
this.idleTimeoutId = null;
|
|
86
86
|
this.manager = manager;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this.updateIntervalMs = updateIntervalMs;
|
|
92
|
-
}
|
|
93
|
-
this.updateCache = this.updateCache.bind(this);
|
|
94
|
-
this.start = this.start.bind(this);
|
|
95
|
-
this.stop = this.stop.bind(this);
|
|
87
|
+
this.idlePollIntervalMs = idlePollIntervalMs;
|
|
88
|
+
this.lastQueryTime = 0;
|
|
96
89
|
}
|
|
97
90
|
QuotaCacheUpdater.prototype.updateCache = function () {
|
|
98
91
|
return __awaiter(this, void 0, void 0, function () {
|
|
99
|
-
var
|
|
100
|
-
var _this = this;
|
|
92
|
+
var quota, cache, cachePath, cacheDir, error_1;
|
|
101
93
|
return __generator(this, function (_a) {
|
|
102
94
|
switch (_a.label) {
|
|
103
95
|
case 0:
|
|
104
|
-
|
|
105
|
-
_a.label = 1;
|
|
106
|
-
case 1:
|
|
107
|
-
_a.trys.push([1, 5, 6, 7]);
|
|
96
|
+
_a.trys.push([0, 2, , 3]);
|
|
108
97
|
return [4, this.manager.getQuotaViaApi()];
|
|
109
|
-
case
|
|
98
|
+
case 1:
|
|
110
99
|
quota = _a.sent();
|
|
111
|
-
if (!quota)
|
|
112
|
-
|
|
113
|
-
case 3:
|
|
114
|
-
_a.sent();
|
|
115
|
-
_a.label = 4;
|
|
116
|
-
case 4: return [3, 7];
|
|
117
|
-
case 5:
|
|
118
|
-
error_2 = _a.sent();
|
|
119
|
-
console.warn('Failed to update quota cache (poller)', error_2);
|
|
120
|
-
return [3, 7];
|
|
121
|
-
case 6:
|
|
122
|
-
if (this.intervalId !== null) {
|
|
123
|
-
this.intervalId = setTimeout(function () {
|
|
124
|
-
_this.updateCache();
|
|
125
|
-
}, interval);
|
|
100
|
+
if (!quota) {
|
|
101
|
+
return [2];
|
|
126
102
|
}
|
|
127
|
-
|
|
128
|
-
|
|
103
|
+
cache = {
|
|
104
|
+
percentage: Math.round(quota.remainingFraction * 100),
|
|
105
|
+
model: quota.model || 'unknown',
|
|
106
|
+
timestamp: Date.now(),
|
|
107
|
+
};
|
|
108
|
+
cachePath = getQuotaCachePath();
|
|
109
|
+
cacheDir = path.dirname(cachePath);
|
|
110
|
+
if (!fs.existsSync(cacheDir)) {
|
|
111
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
|
|
114
|
+
logToFile("Cache updated: ".concat(cache.percentage, "% remaining for ").concat(cache.model));
|
|
115
|
+
return [3, 3];
|
|
116
|
+
case 2:
|
|
117
|
+
error_1 = _a.sent();
|
|
118
|
+
logToFile("Failed to update quota cache: ".concat(error_1));
|
|
119
|
+
return [3, 3];
|
|
120
|
+
case 3: return [2];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
QuotaCacheUpdater.prototype.onQueryCompleted = function () {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
127
|
+
return __generator(this, function (_a) {
|
|
128
|
+
switch (_a.label) {
|
|
129
|
+
case 0:
|
|
130
|
+
this.lastQueryTime = Date.now();
|
|
131
|
+
return [4, this.updateCache()];
|
|
132
|
+
case 1:
|
|
133
|
+
_a.sent();
|
|
134
|
+
this.resetIdleTimer();
|
|
135
|
+
return [2];
|
|
129
136
|
}
|
|
130
137
|
});
|
|
131
138
|
});
|
|
132
139
|
};
|
|
133
140
|
QuotaCacheUpdater.prototype.start = function () {
|
|
141
|
+
logToFile('Starting QuotaCacheUpdater');
|
|
142
|
+
this.lastQueryTime = Date.now();
|
|
143
|
+
this.updateCache();
|
|
144
|
+
this.resetIdleTimer();
|
|
145
|
+
};
|
|
146
|
+
QuotaCacheUpdater.prototype.resetIdleTimer = function () {
|
|
134
147
|
var _this = this;
|
|
135
|
-
if (this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
148
|
+
if (this.idleTimeoutId) {
|
|
149
|
+
clearTimeout(this.idleTimeoutId);
|
|
150
|
+
}
|
|
151
|
+
this.idleTimeoutId = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
152
|
+
var timeSinceLastQuery;
|
|
153
|
+
return __generator(this, function (_a) {
|
|
154
|
+
switch (_a.label) {
|
|
155
|
+
case 0:
|
|
156
|
+
timeSinceLastQuery = Date.now() - this.lastQueryTime;
|
|
157
|
+
logToFile("Idle poll triggered. Time since last query: ".concat(Math.round(timeSinceLastQuery / 1000), "s"));
|
|
158
|
+
return [4, this.updateCache()];
|
|
159
|
+
case 1:
|
|
160
|
+
_a.sent();
|
|
161
|
+
this.resetIdleTimer();
|
|
162
|
+
return [2];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}); }, this.idlePollIntervalMs);
|
|
140
166
|
};
|
|
141
167
|
QuotaCacheUpdater.prototype.stop = function () {
|
|
142
|
-
if (this.
|
|
143
|
-
clearTimeout(this.
|
|
144
|
-
this.
|
|
168
|
+
if (this.idleTimeoutId) {
|
|
169
|
+
clearTimeout(this.idleTimeoutId);
|
|
170
|
+
this.idleTimeoutId = null;
|
|
145
171
|
}
|
|
172
|
+
logToFile('QuotaCacheUpdater stopped');
|
|
146
173
|
};
|
|
147
174
|
return QuotaCacheUpdater;
|
|
148
175
|
}());
|
|
149
176
|
export { QuotaCacheUpdater };
|
|
150
177
|
export function startQuotaCacheService() {
|
|
151
|
-
return __awaiter(this, arguments, void 0, function (
|
|
178
|
+
return __awaiter(this, arguments, void 0, function (idlePollIntervalMs) {
|
|
152
179
|
var manager, updater;
|
|
153
|
-
if (
|
|
180
|
+
if (idlePollIntervalMs === void 0) { idlePollIntervalMs = DEFAULT_IDLE_POLL_INTERVAL_MS; }
|
|
154
181
|
return __generator(this, function (_a) {
|
|
155
182
|
switch (_a.label) {
|
|
156
183
|
case 0:
|
|
@@ -158,7 +185,7 @@ export function startQuotaCacheService() {
|
|
|
158
185
|
return [4, manager.initialize()];
|
|
159
186
|
case 1:
|
|
160
187
|
_a.sent();
|
|
161
|
-
updater = new QuotaCacheUpdater(manager,
|
|
188
|
+
updater = new QuotaCacheUpdater(manager, idlePollIntervalMs);
|
|
162
189
|
updater.start();
|
|
163
190
|
return [2, updater];
|
|
164
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuotaCacheUpdater.js","sourceRoot":"","sources":["../../src/quota/QuotaCacheUpdater.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"QuotaCacheUpdater.js","sourceRoot":"","sources":["../../src/quota/QuotaCacheUpdater.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class HardLimitDetector {
|
|
|
13
13
|
private quotaTracker;
|
|
14
14
|
private modelSelector;
|
|
15
15
|
private quotaThreshold;
|
|
16
|
+
private logger;
|
|
16
17
|
constructor(config?: PluginConfig);
|
|
17
18
|
checkHardLimit(currentModel: string): Promise<HardLimitCheckResult>;
|
|
18
19
|
updateAllQuotas(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HardLimitDetector.d.ts","sourceRoot":"","sources":["../../src/rotation/HardLimitDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAa,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"HardLimitDetector.d.ts","sourceRoot":"","sources":["../../src/rotation/HardLimitDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAa,MAAM,UAAU,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,CAAC,EAAE,YAAY;IAiC3B,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0HnE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtC,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAS/D,eAAe,IAAI,YAAY;IAIzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAKrC"}
|
|
@@ -66,8 +66,10 @@ import { AccountRotator } from '../auth/AccountRotator';
|
|
|
66
66
|
import { ApiQuotaPoller } from '../quota/ApiQuotaPoller';
|
|
67
67
|
import { QuotaTracker } from '../rotation/QuotaTracker';
|
|
68
68
|
import { ModelSelector } from '../rotation/ModelSelector';
|
|
69
|
+
import { getLogger } from '../utils/logger';
|
|
69
70
|
var HardLimitDetector = (function () {
|
|
70
71
|
function HardLimitDetector(config) {
|
|
72
|
+
this.logger = getLogger();
|
|
71
73
|
if (!(this instanceof HardLimitDetector)) {
|
|
72
74
|
return new HardLimitDetector(config);
|
|
73
75
|
}
|
|
@@ -76,9 +78,15 @@ var HardLimitDetector = (function () {
|
|
|
76
78
|
var activeIndex = this.tokenReader.getActiveIndex();
|
|
77
79
|
this.rotator = new AccountRotator(accounts, activeIndex);
|
|
78
80
|
this.apiPoller = new ApiQuotaPoller();
|
|
79
|
-
this.quotaThreshold = (config === null || config === void 0 ? void 0 : config.quotaThreshold) || 0.
|
|
81
|
+
this.quotaThreshold = (config === null || config === void 0 ? void 0 : config.quotaThreshold) || 0.02;
|
|
80
82
|
this.quotaTracker = new QuotaTracker(this.quotaThreshold);
|
|
81
83
|
this.modelSelector = null;
|
|
84
|
+
this.logger.info('HardLimitDetector', 'Initialized', {
|
|
85
|
+
quotaThreshold: this.quotaThreshold,
|
|
86
|
+
thresholdPercentage: "".concat((this.quotaThreshold * 100).toFixed(1), "%"),
|
|
87
|
+
accountsCount: accounts.length,
|
|
88
|
+
activeIndex: activeIndex,
|
|
89
|
+
});
|
|
82
90
|
if (config === null || config === void 0 ? void 0 : config.preferredModels) {
|
|
83
91
|
var strategy = {
|
|
84
92
|
preferredModels: config.preferredModels,
|
|
@@ -90,33 +98,54 @@ var HardLimitDetector = (function () {
|
|
|
90
98
|
}
|
|
91
99
|
HardLimitDetector.prototype.checkHardLimit = function (currentModel) {
|
|
92
100
|
return __awaiter(this, void 0, void 0, function () {
|
|
93
|
-
var account, quota, nextModel, nextModel;
|
|
101
|
+
var account, quota, quotaPercentage, nextModel, nextModel;
|
|
94
102
|
var _a, _b;
|
|
95
103
|
return __generator(this, function (_c) {
|
|
96
104
|
switch (_c.label) {
|
|
97
105
|
case 0:
|
|
106
|
+
this.logger.debug('HardLimitDetector', 'Starting hard limit check', { currentModel: currentModel });
|
|
98
107
|
account = this.rotator.getCurrentAccount();
|
|
99
108
|
if (!account) {
|
|
109
|
+
this.logger.warn('HardLimitDetector', 'No active account found');
|
|
100
110
|
return [2, {
|
|
101
111
|
isExhausted: false,
|
|
102
112
|
shouldRotate: false,
|
|
103
113
|
message: 'No active account found',
|
|
104
114
|
}];
|
|
105
115
|
}
|
|
116
|
+
this.logger.debug('HardLimitDetector', 'Fetching quota from API', {
|
|
117
|
+
model: currentModel,
|
|
118
|
+
accountEmail: account.email,
|
|
119
|
+
});
|
|
106
120
|
return [4, this.apiPoller.checkQuotaForModel(account, currentModel)];
|
|
107
121
|
case 1:
|
|
108
122
|
quota = _c.sent();
|
|
109
123
|
if (!quota) {
|
|
124
|
+
this.logger.error('HardLimitDetector', 'Failed to fetch quota information', { currentModel: currentModel });
|
|
110
125
|
return [2, {
|
|
111
126
|
isExhausted: false,
|
|
112
127
|
shouldRotate: false,
|
|
113
128
|
message: 'Could not fetch quota information',
|
|
114
129
|
}];
|
|
115
130
|
}
|
|
131
|
+
quotaPercentage = (quota.remainingFraction * 100).toFixed(1);
|
|
132
|
+
this.logger.info('HardLimitDetector', 'Quota fetched successfully', {
|
|
133
|
+
model: currentModel,
|
|
134
|
+
remainingFraction: quota.remainingFraction,
|
|
135
|
+
quotaPercentage: "".concat(quotaPercentage, "%"),
|
|
136
|
+
resetTime: quota.resetTime,
|
|
137
|
+
});
|
|
116
138
|
this.quotaTracker.updateQuota(currentModel, quota);
|
|
117
139
|
if (quota.remainingFraction <= 0) {
|
|
140
|
+
this.logger.warn('HardLimitDetector', 'Model quota exhausted (0%)', {
|
|
141
|
+
model: currentModel,
|
|
142
|
+
resetTime: quota.resetTime,
|
|
143
|
+
});
|
|
118
144
|
nextModel = (_a = this.modelSelector) === null || _a === void 0 ? void 0 : _a.selectModel();
|
|
119
145
|
if (!nextModel) {
|
|
146
|
+
this.logger.info('HardLimitDetector', 'No alternative model available, rotating account', {
|
|
147
|
+
currentModel: currentModel,
|
|
148
|
+
});
|
|
120
149
|
this.rotator.markCurrentExhausted(undefined, quota.resetTime);
|
|
121
150
|
return [2, {
|
|
122
151
|
isExhausted: true,
|
|
@@ -124,6 +153,11 @@ var HardLimitDetector = (function () {
|
|
|
124
153
|
message: "Model ".concat(currentModel, " exhausted (0% quota). Rotated to next account."),
|
|
125
154
|
}];
|
|
126
155
|
}
|
|
156
|
+
this.logger.info('HardLimitDetector', 'Switching to alternative model (exhausted)', {
|
|
157
|
+
fromModel: currentModel,
|
|
158
|
+
toModel: nextModel,
|
|
159
|
+
reason: 'Model exhausted',
|
|
160
|
+
});
|
|
127
161
|
return [2, {
|
|
128
162
|
isExhausted: true,
|
|
129
163
|
shouldRotate: true,
|
|
@@ -132,20 +166,48 @@ var HardLimitDetector = (function () {
|
|
|
132
166
|
}];
|
|
133
167
|
}
|
|
134
168
|
if (quota.remainingFraction < this.quotaThreshold) {
|
|
169
|
+
this.logger.warn('HardLimitDetector', 'Model below threshold', {
|
|
170
|
+
model: currentModel,
|
|
171
|
+
remainingFraction: quota.remainingFraction,
|
|
172
|
+
quotaPercentage: "".concat(quotaPercentage, "%"),
|
|
173
|
+
threshold: this.quotaThreshold,
|
|
174
|
+
thresholdPercentage: "".concat((this.quotaThreshold * 100).toFixed(1), "%"),
|
|
175
|
+
});
|
|
135
176
|
nextModel = (_b = this.modelSelector) === null || _b === void 0 ? void 0 : _b.selectModel();
|
|
136
177
|
if (nextModel && nextModel !== currentModel) {
|
|
178
|
+
this.logger.info('HardLimitDetector', 'Triggering model switch (below threshold)', {
|
|
179
|
+
fromModel: currentModel,
|
|
180
|
+
toModel: nextModel,
|
|
181
|
+
currentQuota: "".concat(quotaPercentage, "%"),
|
|
182
|
+
threshold: "".concat((this.quotaThreshold * 100).toFixed(1), "%"),
|
|
183
|
+
reason: 'Below threshold',
|
|
184
|
+
});
|
|
137
185
|
return [2, {
|
|
138
186
|
isExhausted: false,
|
|
139
187
|
shouldRotate: true,
|
|
140
188
|
nextModel: nextModel,
|
|
141
|
-
message: "Model ".concat(currentModel, " below threshold (").concat(
|
|
189
|
+
message: "Model ".concat(currentModel, " below threshold (").concat(quotaPercentage, "%). Switching to ").concat(nextModel, "."),
|
|
142
190
|
}];
|
|
143
191
|
}
|
|
192
|
+
else {
|
|
193
|
+
this.logger.warn('HardLimitDetector', 'Below threshold but no alternative model', {
|
|
194
|
+
model: currentModel,
|
|
195
|
+
quotaPercentage: "".concat(quotaPercentage, "%"),
|
|
196
|
+
nextModel: nextModel,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.logger.debug('HardLimitDetector', 'Model quota healthy', {
|
|
202
|
+
model: currentModel,
|
|
203
|
+
quotaPercentage: "".concat(quotaPercentage, "%"),
|
|
204
|
+
threshold: "".concat((this.quotaThreshold * 100).toFixed(1), "%"),
|
|
205
|
+
});
|
|
144
206
|
}
|
|
145
207
|
return [2, {
|
|
146
208
|
isExhausted: false,
|
|
147
209
|
shouldRotate: false,
|
|
148
|
-
message: "Model ".concat(currentModel, " has ").concat(
|
|
210
|
+
message: "Model ".concat(currentModel, " has ").concat(quotaPercentage, "% quota remaining."),
|
|
149
211
|
}];
|
|
150
212
|
}
|
|
151
213
|
});
|
|
@@ -158,16 +220,28 @@ var HardLimitDetector = (function () {
|
|
|
158
220
|
return __generator(this, function (_e) {
|
|
159
221
|
switch (_e.label) {
|
|
160
222
|
case 0:
|
|
223
|
+
this.logger.debug('HardLimitDetector', 'Updating all quotas');
|
|
161
224
|
account = this.rotator.getCurrentAccount();
|
|
162
|
-
if (!account)
|
|
225
|
+
if (!account) {
|
|
226
|
+
this.logger.warn('HardLimitDetector', 'Cannot update quotas: no account available');
|
|
163
227
|
return [2];
|
|
228
|
+
}
|
|
164
229
|
return [4, this.apiPoller.getAllQuotas(account)];
|
|
165
230
|
case 1:
|
|
166
231
|
quotas = _e.sent();
|
|
232
|
+
this.logger.info('HardLimitDetector', 'Fetched all quotas', {
|
|
233
|
+
accountEmail: account.email,
|
|
234
|
+
modelsCount: quotas.size,
|
|
235
|
+
});
|
|
167
236
|
try {
|
|
168
237
|
for (_a = __values(quotas.entries()), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
169
238
|
_c = __read(_b.value, 2), model = _c[0], quota = _c[1];
|
|
170
239
|
this.quotaTracker.updateQuota(model, quota);
|
|
240
|
+
this.logger.debug('HardLimitDetector', 'Updated quota for model', {
|
|
241
|
+
model: model,
|
|
242
|
+
remainingFraction: quota.remainingFraction,
|
|
243
|
+
quotaPercentage: "".concat((quota.remainingFraction * 100).toFixed(1), "%"),
|
|
244
|
+
});
|
|
171
245
|
}
|
|
172
246
|
}
|
|
173
247
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -183,6 +257,11 @@ var HardLimitDetector = (function () {
|
|
|
183
257
|
});
|
|
184
258
|
};
|
|
185
259
|
HardLimitDetector.prototype.setModelRotationStrategy = function (strategy) {
|
|
260
|
+
this.logger.info('HardLimitDetector', 'Setting model rotation strategy', {
|
|
261
|
+
preferredModels: strategy.preferredModels,
|
|
262
|
+
fallbackModels: strategy.fallbackModels,
|
|
263
|
+
quotaThreshold: strategy.quotaThreshold,
|
|
264
|
+
});
|
|
186
265
|
this.modelSelector = new ModelSelector(this.quotaTracker, strategy);
|
|
187
266
|
};
|
|
188
267
|
HardLimitDetector.prototype.getQuotaTracker = function () {
|
|
@@ -191,6 +270,7 @@ var HardLimitDetector = (function () {
|
|
|
191
270
|
HardLimitDetector.prototype.rotateAccount = function () {
|
|
192
271
|
return __awaiter(this, void 0, void 0, function () {
|
|
193
272
|
return __generator(this, function (_a) {
|
|
273
|
+
this.logger.info('HardLimitDetector', 'Manually rotating account');
|
|
194
274
|
this.rotator.markCurrentExhausted();
|
|
195
275
|
this.quotaTracker.clearAll();
|
|
196
276
|
return [2];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HardLimitDetector.js","sourceRoot":"","sources":["../../src/rotation/HardLimitDetector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"HardLimitDetector.js","sourceRoot":"","sources":["../../src/rotation/HardLimitDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { ModelRotationStrategy } from '../types';
|
|
|
3
3
|
export declare class ModelSelector {
|
|
4
4
|
private quotaTracker;
|
|
5
5
|
private strategy;
|
|
6
|
+
private logger;
|
|
6
7
|
constructor(quotaTracker: QuotaTracker, strategy: ModelRotationStrategy);
|
|
7
8
|
selectModel(): string | null;
|
|
8
9
|
updateStrategy(strategy: Partial<ModelRotationStrategy>): void;
|