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.
Files changed (39) hide show
  1. package/dist/manager.d.ts +1 -0
  2. package/dist/manager.d.ts.map +1 -1
  3. package/dist/manager.js +56 -4
  4. package/dist/manager.js.map +1 -1
  5. package/dist/plugin-tools.d.ts.map +1 -1
  6. package/dist/plugin-tools.js +11 -2
  7. package/dist/plugin-tools.js.map +1 -1
  8. package/dist/plugin.d.ts +25 -14
  9. package/dist/plugin.d.ts.map +1 -1
  10. package/dist/plugin.js +177 -35
  11. package/dist/plugin.js.map +1 -1
  12. package/dist/quota/ApiQuotaPoller.d.ts.map +1 -1
  13. package/dist/quota/ApiQuotaPoller.js +14 -9
  14. package/dist/quota/ApiQuotaPoller.js.map +1 -1
  15. package/dist/quota/QuotaCacheUpdater.d.ts +11 -6
  16. package/dist/quota/QuotaCacheUpdater.d.ts.map +1 -1
  17. package/dist/quota/QuotaCacheUpdater.js +98 -71
  18. package/dist/quota/QuotaCacheUpdater.js.map +1 -1
  19. package/dist/rotation/HardLimitDetector.d.ts +1 -0
  20. package/dist/rotation/HardLimitDetector.d.ts.map +1 -1
  21. package/dist/rotation/HardLimitDetector.js +85 -5
  22. package/dist/rotation/HardLimitDetector.js.map +1 -1
  23. package/dist/rotation/ModelSelector.d.ts +1 -0
  24. package/dist/rotation/ModelSelector.d.ts.map +1 -1
  25. package/dist/rotation/ModelSelector.js +19 -0
  26. package/dist/rotation/ModelSelector.js.map +1 -1
  27. package/dist/rotation/QuotaTracker.d.ts +1 -0
  28. package/dist/rotation/QuotaTracker.d.ts.map +1 -1
  29. package/dist/rotation/QuotaTracker.js +39 -3
  30. package/dist/rotation/QuotaTracker.js.map +1 -1
  31. package/dist/rotation/reproduce_crash.d.ts +2 -0
  32. package/dist/rotation/reproduce_crash.d.ts.map +1 -0
  33. package/dist/rotation/reproduce_crash.js +10 -0
  34. package/dist/rotation/reproduce_crash.js.map +1 -0
  35. package/dist/utils/logger.d.ts +39 -0
  36. package/dist/utils/logger.d.ts.map +1 -0
  37. package/dist/utils/logger.js +147 -0
  38. package/dist/utils/logger.js.map +1 -0
  39. 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
- clientName: 'code-oss',
85
- versionString: '1.95.2',
86
- extensionVersion: '1.11.13',
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
- console.warn("refreshAccessToken: Failed ".concat(response.status));
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
- console.warn('refreshAccessToken: Error', e_1.message);
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
- console.warn("loadCodeAssist: Failed ".concat(response.status));
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
- console.warn("fetchAvailableModels: Failed ".concat(response.status));
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
- console.warn('Failed to check quota via API:', error_1);
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":"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"}
1
+ {"version":3,"file":"ApiQuotaPoller.js","sourceRoot":"","sources":["../../src/quota/ApiQuotaPoller.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
1
  import { QuotaManager } from '../manager';
2
- import { QuotaInfo } from '../types';
3
- export declare function writeQuotaToCache(quota: QuotaInfo): Promise<void>;
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 intervalId;
7
- private updateIntervalMs;
8
- constructor(manager: QuotaManager, updateIntervalMs?: number);
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(updateIntervalMs?: number): Promise<QuotaCacheUpdater>;
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;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAoBrC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBvE;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,OAAO,EAAE,YAAY,EAAE,gBAAgB,GAAE,MAAe;IAmB9D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBlC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI;CAMb;AAED,wBAAsB,sBAAsB,CAAC,gBAAgB,GAAE,MAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQ1G"}
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, error_1;
56
+ var cache, cachePath, cacheDir;
52
57
  return __generator(this, function (_a) {
53
- switch (_a.label) {
54
- case 0:
55
- _a.trys.push([0, 2, , 3]);
56
- cache = {
57
- percentage: Math.round(quota.remainingFraction * 100),
58
- model: quota.model || 'unknown',
59
- timestamp: Date.now(),
60
- };
61
- cachePath = getQuotaCachePath();
62
- cacheDir = path.dirname(cachePath);
63
- if (!fs.existsSync(cacheDir)) {
64
- fs.mkdirSync(cacheDir, { recursive: true });
65
- }
66
- return [4, fs.promises.writeFile(cachePath, JSON.stringify(cache, null, 2), 'utf-8')];
67
- case 1:
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, updateIntervalMs) {
81
- if (updateIntervalMs === void 0) { updateIntervalMs = 300000; }
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, updateIntervalMs);
83
+ return new QuotaCacheUpdater(manager, idlePollIntervalMs);
84
84
  }
85
- this.intervalId = null;
85
+ this.idleTimeoutId = null;
86
86
  this.manager = manager;
87
- if (!updateIntervalMs || isNaN(updateIntervalMs) || updateIntervalMs < 300000) {
88
- this.updateIntervalMs = 300000;
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 interval, quota, error_2;
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
- interval = this.updateIntervalMs;
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 2:
98
+ case 1:
110
99
  quota = _a.sent();
111
- if (!quota) return [3, 4];
112
- return [4, writeQuotaToCache(quota)];
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
- return [7];
128
- case 7: return [2];
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.intervalId)
136
- return;
137
- this.intervalId = setTimeout(function () {
138
- _this.updateCache();
139
- }, 100);
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.intervalId) {
143
- clearTimeout(this.intervalId);
144
- this.intervalId = null;
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 (updateIntervalMs) {
178
+ return __awaiter(this, arguments, void 0, function (idlePollIntervalMs) {
152
179
  var manager, updater;
153
- if (updateIntervalMs === void 0) { updateIntervalMs = 300000; }
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, updateIntervalMs);
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":"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"}
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;AAE1E,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;gBAEpB,MAAM,CAAC,EAAE,YAAY;IA0B3B,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+DnE,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC,wBAAwB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAI/D,eAAe,IAAI,YAAY;IAIzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
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.2;
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((quota.remainingFraction * 100).toFixed(1), "%). Switching to ").concat(nextModel, "."),
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((quota.remainingFraction * 100).toFixed(1), "% quota remaining."),
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":"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"}
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;