@kaitranntt/ccs 7.32.0 → 7.33.0-dev.2
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/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher-codex.js +2 -0
- package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
- package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher-gemini-cli.js +186 -66
- package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -1
- package/dist/cliproxy/quota-response-cache.d.ts +46 -0
- package/dist/cliproxy/quota-response-cache.d.ts.map +1 -0
- package/dist/cliproxy/quota-response-cache.js +98 -0
- package/dist/cliproxy/quota-response-cache.js.map +1 -0
- package/dist/cliproxy/quota-types.d.ts +4 -0
- package/dist/cliproxy/quota-types.d.ts.map +1 -1
- package/dist/commands/update-command.js +25 -1
- package/dist/commands/update-command.js.map +1 -1
- package/dist/glmt/glmt-proxy.d.ts +25 -0
- package/dist/glmt/glmt-proxy.d.ts.map +1 -1
- package/dist/glmt/glmt-proxy.js +144 -6
- package/dist/glmt/glmt-proxy.js.map +1 -1
- package/dist/ui/assets/{accounts-DQY71EYY.js → accounts-Dfin4YcT.js} +1 -1
- package/dist/ui/assets/{alert-dialog-CVrrJC8l.js → alert-dialog-_EqubtAG.js} +1 -1
- package/dist/ui/assets/{api-CpuoY3aR.js → api-DSDQ9L-i.js} +1 -1
- package/dist/ui/assets/{auth-section-BpEbDun8.js → auth-section-q7grWXY1.js} +1 -1
- package/dist/ui/assets/{backups-section-BChXLCtC.js → backups-section-CZh0CP9N.js} +1 -1
- package/dist/ui/assets/cliproxy-1l8mu9aj.js +3 -0
- package/dist/ui/assets/{cliproxy-control-panel-hsyX9Nl5.js → cliproxy-control-panel-CQ329FdM.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-JJpTtfbO.js → confirm-dialog-zLeEkNMe.js} +1 -1
- package/dist/ui/assets/{copilot-B5Ss07qb.js → copilot-MUDbtrPI.js} +3 -3
- package/dist/ui/assets/{globalenv-section-B-UaCRmZ.js → globalenv-section-C1sHrOB5.js} +1 -1
- package/dist/ui/assets/{health-Ch9F170P.js → health-B4IBzQ8F.js} +1 -1
- package/dist/ui/assets/{icons-n7yU6ZH4.js → icons-B_4flurP.js} +1 -1
- package/dist/ui/assets/{index-BykY0chY.js → index-BIUioTXg.js} +1 -1
- package/dist/ui/assets/index-CGnWrAo3.css +1 -0
- package/dist/ui/assets/{index-DFQIWTzm.js → index-Cp2GmGBh.js} +1 -1
- package/dist/ui/assets/{index-DvWGY7VA.js → index-FaX034nA.js} +1 -1
- package/dist/ui/assets/index-Ycx3NWG-.js +47 -0
- package/dist/ui/assets/{index-DPSwJ7BG.js → index-gqIAueXL.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-hL1Gig4z.js → proxy-status-widget-BfcAANMk.js} +1 -1
- package/dist/ui/assets/{shared-Bgenu-le.js → shared-mKUZMG4p.js} +1 -1
- package/dist/ui/assets/{switch-CK4U15SX.js → switch-Bgrlji6l.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +87 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/cliproxy-DNT9Kq_Q.js +0 -3
- package/dist/ui/assets/index-WzrICGKd.css +0 -1
- package/dist/ui/assets/index-mPHSZRQ2.js +0 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-fetcher-codex.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAWxE,+CAA+C;AAC/C,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,iCAAiC;AACjC,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AAED,iCAAiC;AACjC,UAAU,oBAAoB;IAC5B,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,6BAA6B;AAC7B,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,iBAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkDlE;AAED;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,CAmD/E;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"quota-fetcher-codex.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAWxE,+CAA+C;AAC/C,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,iCAAiC;AACjC,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,sBAAsB,CAAC,EAAE,oBAAoB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AAED,iCAAiC;AACjC,UAAU,oBAAoB;IAC5B,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,6BAA6B;AAC7B,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,iBAAS,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkDlE;AAED;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,CAmD/E;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CAsJ3B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,EAAE,CAAC,CAezD;AAGD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -174,6 +174,7 @@ async function fetchCodexQuota(accountId, verbose = false) {
|
|
|
174
174
|
lastUpdated: Date.now(),
|
|
175
175
|
error,
|
|
176
176
|
accountId,
|
|
177
|
+
needsReauth: true,
|
|
177
178
|
};
|
|
178
179
|
}
|
|
179
180
|
if (!authData.accountId) {
|
|
@@ -213,6 +214,7 @@ async function fetchCodexQuota(accountId, verbose = false) {
|
|
|
213
214
|
lastUpdated: Date.now(),
|
|
214
215
|
error: 'Token expired or invalid',
|
|
215
216
|
accountId,
|
|
217
|
+
needsReauth: true,
|
|
216
218
|
};
|
|
217
219
|
}
|
|
218
220
|
if (response.status === 403) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-fetcher-codex.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-codex.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4CAA8B;AAC9B,gDAAkC;AAClC,yDAAgD;AAChD,uDAAsE;AACtE,6CAA6D;AAG7D,mCAAmC;AACnC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,GAAG,6DAA6D,CAAC;AAoCjF;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,QAAQ,GAAG,CAAC,IAAA,6BAAU,GAAE,EAAE,IAAA,8BAAY,GAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,SAAS,WAAW,OAAO,CAAC;IAEjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAEjC,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;oBAClD,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;oBACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;iBAChC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClD,OAAO;4BACL,WAAW,EAAE,IAAI,CAAC,YAAY;4BAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;4BAClD,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;4BACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"quota-fetcher-codex.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-codex.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4CAA8B;AAC9B,gDAAkC;AAClC,yDAAgD;AAChD,uDAAsE;AACtE,6CAA6D;AAG7D,mCAAmC;AACnC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,GAAG,6DAA6D,CAAC;AAoCjF;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,QAAQ,GAAG,CAAC,IAAA,6BAAU,GAAE,EAAE,IAAA,8BAAY,GAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,SAAS,WAAW,OAAO,CAAC;IAEjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAEjC,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;oBAClD,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;oBACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;iBAChC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClD,OAAO;4BACL,WAAW,EAAE,IAAI,CAAC,YAAY;4BAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;4BAClD,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;4BACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAuPQ,8CAAiB;AArP1B;;;GAGG;AACH,SAAS,sBAAsB,CAAC,OAA2B;IACzD,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,6CAA6C;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAC1D,MAAM,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAE1F,gCAAgC;IAChC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,UAAuC,EAAQ,EAAE;QACjF,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,sCAAsC;QACtC,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,MAAM,iBAAiB,GACrB,UAAU,CAAC,mBAAmB,IAAI,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC;QAEzE,+CAA+C;QAC/C,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK;YACL,WAAW;YACX,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC;YAChD,iBAAiB;YACjB,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,8BAA8B;IAC9B,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;QAC1E,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;IAClF,CAAC;IAED,qCAAqC;IACrC,IAAI,mBAAmB,EAAE,CAAC;QACxB,SAAS,CACP,uBAAuB,EACvB,mBAAmB,CAAC,cAAc,IAAI,mBAAmB,CAAC,aAAa,CACxE,CAAC;QACF,SAAS,CACP,yBAAyB,EACzB,mBAAmB,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,eAAe,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AA8L2B,wDAAsB;AA5LlD;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,OAAO,GAAG,KAAK;IAEf,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,gCAAgC,SAAS,KAAK,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,uCAAuC,CAAC;QACtD,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,8DAA8D,CAAC;QAC7E,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;YACT,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,yCAAyC,CAAC;QACxD,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,cAAc,aAAa,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,QAAQ,CAAC,WAAW,EAAE;gBAC/C,oBAAoB,EAAE,QAAQ,CAAC,SAAS;gBACxC,YAAY,EAAE,UAAU;aACzB;SACF,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEvE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,0BAA0B;gBACjC,SAAS;gBACT,WAAW,EAAE,IAAI;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,sEAAsE;gBAC7E,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,gCAAgC;gBACvC,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,cAAc,QAAQ,CAAC,MAAM,EAAE;gBACtC,SAAS;aACV,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;QAC3D,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE7C,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;QACpD,IAAI,QAAQ,GAAoC,IAAI,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,UAAU,KAAK,MAAM;gBAAE,QAAQ,GAAG,MAAM,CAAC;iBACxC,IAAI,UAAU,KAAK,MAAM;gBAAE,QAAQ,GAAG,MAAM,CAAC;iBAC7C,IAAI,UAAU,KAAK,MAAM;gBAAE,QAAQ,GAAG,MAAM,CAAC;QACpD,CAAC;QAED,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO;YACP,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,SAAS;SACV,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,MAAM,QAAQ,GACZ,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAC/C,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,GAAG,YAAY,KAAK;gBACpB,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,eAAe,CAAC;QAExB,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK,EAAE,QAAQ;YACf,SAAS;SACV,CAAC;IACJ,CAAC;AACH,CAAC;AAzJD,0CAyJC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CACvC,OAAO,GAAG,KAAK;IAEf,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;KAClD,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAjBD,kDAiBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-fetcher-gemini-cli.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"quota-fetcher-gemini-cli.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAsC3E,mCAAmC;AACnC,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAOD;;;;GAIG;AACH,iBAAS,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtE;AA+JD;;;GAGG;AACH,iBAAS,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,eAAe,EAAE,CA4ElF;AA2HD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,oBAAoB,CAAC,CAyE/B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,EAAE,CAAC,CAe7D;AAGD,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -35,6 +35,7 @@ const path = __importStar(require("node:path"));
|
|
|
35
35
|
const config_generator_1 = require("./config-generator");
|
|
36
36
|
const account_manager_1 = require("./account-manager");
|
|
37
37
|
const auth_utils_1 = require("./auth-utils");
|
|
38
|
+
const gemini_token_refresh_1 = require("./auth/gemini-token-refresh");
|
|
38
39
|
/** Google Cloud Code API endpoints */
|
|
39
40
|
const GEMINI_CLI_API_BASE = 'https://cloudcode-pa.googleapis.com';
|
|
40
41
|
const GEMINI_CLI_API_VERSION = 'v1internal';
|
|
@@ -69,59 +70,132 @@ function resolveGeminiCliProjectId(accountField) {
|
|
|
69
70
|
return lastMatch;
|
|
70
71
|
}
|
|
71
72
|
exports.resolveGeminiCliProjectId = resolveGeminiCliProjectId;
|
|
73
|
+
/**
|
|
74
|
+
* Extract access token from Gemini auth file data
|
|
75
|
+
* Handles both flat (access_token) and nested (token.access_token) structures
|
|
76
|
+
*/
|
|
77
|
+
function extractAccessToken(data) {
|
|
78
|
+
// Flat structure: { access_token: "..." }
|
|
79
|
+
if (typeof data.access_token === 'string') {
|
|
80
|
+
return data.access_token;
|
|
81
|
+
}
|
|
82
|
+
// Nested structure: { token: { access_token: "..." } }
|
|
83
|
+
if (data.token && typeof data.token === 'object') {
|
|
84
|
+
const token = data.token;
|
|
85
|
+
if (typeof token.access_token === 'string') {
|
|
86
|
+
return token.access_token;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Extract expiry from Gemini auth file data
|
|
93
|
+
* Handles both flat (expired) and nested (token.expiry) structures
|
|
94
|
+
*/
|
|
95
|
+
function extractExpiry(data) {
|
|
96
|
+
// Flat structure: { expired: "..." }
|
|
97
|
+
if (typeof data.expired === 'string') {
|
|
98
|
+
return data.expired;
|
|
99
|
+
}
|
|
100
|
+
// Nested structure: { token: { expiry: "..." } }
|
|
101
|
+
if (data.token && typeof data.token === 'object') {
|
|
102
|
+
const token = data.token;
|
|
103
|
+
if (typeof token.expiry === 'string') {
|
|
104
|
+
return token.expiry;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if file matches Gemini CLI auth file patterns
|
|
111
|
+
* Patterns: gemini-*.json OR *-gen-lang-client-*.json OR email@domain.com-*.json with type=gemini
|
|
112
|
+
*/
|
|
113
|
+
function isGeminiAuthFile(filename) {
|
|
114
|
+
if (!filename.endsWith('.json'))
|
|
115
|
+
return false;
|
|
116
|
+
// Legacy pattern: gemini-email.json
|
|
117
|
+
if (filename.startsWith('gemini-'))
|
|
118
|
+
return true;
|
|
119
|
+
// New pattern: email-gen-lang-client-projectId.json
|
|
120
|
+
if (filename.includes('-gen-lang-client-'))
|
|
121
|
+
return true;
|
|
122
|
+
// Check if contains @ (email pattern) - will verify type inside
|
|
123
|
+
if (filename.includes('@'))
|
|
124
|
+
return true;
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
72
127
|
/**
|
|
73
128
|
* Read auth data from Gemini CLI auth file
|
|
129
|
+
* Supports multiple file naming conventions and JSON structures
|
|
74
130
|
*/
|
|
75
131
|
function readGeminiCliAuthData(accountId) {
|
|
76
132
|
const authDirs = [(0, config_generator_1.getAuthDir)(), (0, account_manager_1.getPausedDir)()];
|
|
77
133
|
const sanitizedId = (0, auth_utils_1.sanitizeEmail)(accountId);
|
|
78
|
-
const
|
|
134
|
+
const expectedFiles = [
|
|
135
|
+
`gemini-${sanitizedId}.json`, // Legacy format
|
|
136
|
+
`${accountId}-gen-lang-client-`, // New format prefix (partial match)
|
|
137
|
+
];
|
|
79
138
|
for (const authDir of authDirs) {
|
|
80
139
|
if (!fs.existsSync(authDir))
|
|
81
140
|
continue;
|
|
82
|
-
|
|
83
|
-
|
|
141
|
+
// Try exact legacy match first
|
|
142
|
+
const legacyPath = path.join(authDir, expectedFiles[0]);
|
|
143
|
+
if (fs.existsSync(legacyPath)) {
|
|
84
144
|
try {
|
|
85
|
-
const content = fs.readFileSync(
|
|
145
|
+
const content = fs.readFileSync(legacyPath, 'utf-8');
|
|
86
146
|
const data = JSON.parse(content);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
147
|
+
const accessToken = extractAccessToken(data);
|
|
148
|
+
if (accessToken) {
|
|
149
|
+
const projectId = typeof data.project_id === 'string'
|
|
150
|
+
? data.project_id
|
|
151
|
+
: resolveGeminiCliProjectId(String(data.account || ''));
|
|
152
|
+
const expiry = extractExpiry(data);
|
|
153
|
+
return {
|
|
154
|
+
accessToken,
|
|
155
|
+
projectId,
|
|
156
|
+
isExpired: (0, auth_utils_1.isTokenExpired)(expiry ?? undefined),
|
|
157
|
+
expiresAt: expiry,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
98
160
|
}
|
|
99
161
|
catch {
|
|
100
|
-
|
|
162
|
+
// Continue to fallback
|
|
101
163
|
}
|
|
102
164
|
}
|
|
103
|
-
//
|
|
165
|
+
// Scan directory for matching files
|
|
104
166
|
const files = fs.readdirSync(authDir);
|
|
105
167
|
for (const file of files) {
|
|
106
|
-
if (
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
168
|
+
if (!isGeminiAuthFile(file))
|
|
169
|
+
continue;
|
|
170
|
+
const candidatePath = path.join(authDir, file);
|
|
171
|
+
try {
|
|
172
|
+
const content = fs.readFileSync(candidatePath, 'utf-8');
|
|
173
|
+
const data = JSON.parse(content);
|
|
174
|
+
// Check if this file matches our account
|
|
175
|
+
const fileEmail = typeof data.email === 'string' ? data.email : null;
|
|
176
|
+
const fileType = typeof data.type === 'string' ? data.type : null;
|
|
177
|
+
const matchesEmail = fileEmail === accountId;
|
|
178
|
+
const matchesFilename = file.startsWith(`${accountId}-`) || file.includes(sanitizedId);
|
|
179
|
+
const isGeminiType = fileType === 'gemini' || fileType === 'gemini-cli';
|
|
180
|
+
// Must match account AND be gemini type (or legacy gemini- prefix)
|
|
181
|
+
if ((matchesEmail || matchesFilename) && (isGeminiType || file.startsWith('gemini-'))) {
|
|
182
|
+
const accessToken = extractAccessToken(data);
|
|
183
|
+
if (accessToken) {
|
|
184
|
+
const projectId = typeof data.project_id === 'string'
|
|
185
|
+
? data.project_id
|
|
186
|
+
: resolveGeminiCliProjectId(String(data.account || ''));
|
|
187
|
+
const expiry = extractExpiry(data);
|
|
114
188
|
return {
|
|
115
|
-
accessToken
|
|
189
|
+
accessToken,
|
|
116
190
|
projectId,
|
|
117
|
-
isExpired: (0, auth_utils_1.isTokenExpired)(
|
|
118
|
-
expiresAt:
|
|
191
|
+
isExpired: (0, auth_utils_1.isTokenExpired)(expiry ?? undefined),
|
|
192
|
+
expiresAt: expiry,
|
|
119
193
|
};
|
|
120
194
|
}
|
|
121
195
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
continue;
|
|
125
199
|
}
|
|
126
200
|
}
|
|
127
201
|
}
|
|
@@ -213,42 +287,10 @@ function buildGeminiCliBuckets(rawBuckets) {
|
|
|
213
287
|
}
|
|
214
288
|
exports.buildGeminiCliBuckets = buildGeminiCliBuckets;
|
|
215
289
|
/**
|
|
216
|
-
* Fetch quota
|
|
217
|
-
*
|
|
218
|
-
* @param accountId - Account identifier (email)
|
|
219
|
-
* @param verbose - Show detailed diagnostics
|
|
220
|
-
* @returns Quota result with buckets and percentages
|
|
290
|
+
* Internal helper: Fetch quota with validated auth data
|
|
291
|
+
* Extracted to support auto-refresh retry logic
|
|
221
292
|
*/
|
|
222
|
-
async function
|
|
223
|
-
if (verbose)
|
|
224
|
-
console.error(`[i] Fetching Gemini CLI quota for ${accountId}...`);
|
|
225
|
-
const authData = readGeminiCliAuthData(accountId);
|
|
226
|
-
if (!authData) {
|
|
227
|
-
const error = 'Auth file not found for Gemini account';
|
|
228
|
-
if (verbose)
|
|
229
|
-
console.error(`[!] Error: ${error}`);
|
|
230
|
-
return {
|
|
231
|
-
success: false,
|
|
232
|
-
buckets: [],
|
|
233
|
-
projectId: null,
|
|
234
|
-
lastUpdated: Date.now(),
|
|
235
|
-
error,
|
|
236
|
-
accountId,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
if (authData.isExpired) {
|
|
240
|
-
const error = 'Token expired - re-authenticate with ccs cliproxy auth gemini';
|
|
241
|
-
if (verbose)
|
|
242
|
-
console.error(`[!] Error: ${error}`);
|
|
243
|
-
return {
|
|
244
|
-
success: false,
|
|
245
|
-
buckets: [],
|
|
246
|
-
projectId: null,
|
|
247
|
-
lastUpdated: Date.now(),
|
|
248
|
-
error,
|
|
249
|
-
accountId,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
293
|
+
async function fetchWithAuthData(authData, accountId, verbose) {
|
|
252
294
|
if (!authData.projectId) {
|
|
253
295
|
const error = 'Cannot resolve project ID from auth file';
|
|
254
296
|
if (verbose)
|
|
@@ -286,6 +328,7 @@ async function fetchGeminiCliQuota(accountId, verbose = false) {
|
|
|
286
328
|
lastUpdated: Date.now(),
|
|
287
329
|
error: 'Token expired or invalid',
|
|
288
330
|
accountId,
|
|
331
|
+
needsReauth: true,
|
|
289
332
|
};
|
|
290
333
|
}
|
|
291
334
|
if (response.status === 403) {
|
|
@@ -350,6 +393,83 @@ async function fetchGeminiCliQuota(accountId, verbose = false) {
|
|
|
350
393
|
};
|
|
351
394
|
}
|
|
352
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* Fetch quota for a single Gemini CLI account
|
|
398
|
+
*
|
|
399
|
+
* @param accountId - Account identifier (email)
|
|
400
|
+
* @param verbose - Show detailed diagnostics
|
|
401
|
+
* @returns Quota result with buckets and percentages
|
|
402
|
+
*/
|
|
403
|
+
async function fetchGeminiCliQuota(accountId, verbose = false) {
|
|
404
|
+
if (verbose)
|
|
405
|
+
console.error(`[i] Fetching Gemini CLI quota for ${accountId}...`);
|
|
406
|
+
let authData = readGeminiCliAuthData(accountId);
|
|
407
|
+
if (!authData) {
|
|
408
|
+
const error = 'Auth file not found for Gemini account';
|
|
409
|
+
if (verbose)
|
|
410
|
+
console.error(`[!] Error: ${error}`);
|
|
411
|
+
return {
|
|
412
|
+
success: false,
|
|
413
|
+
buckets: [],
|
|
414
|
+
projectId: null,
|
|
415
|
+
lastUpdated: Date.now(),
|
|
416
|
+
error,
|
|
417
|
+
accountId,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
// Proactive refresh: refresh if expired OR expiring within 5 minutes
|
|
421
|
+
const REFRESH_LEAD_TIME_MS = 5 * 60 * 1000;
|
|
422
|
+
const shouldRefresh = authData.isExpired ||
|
|
423
|
+
!authData.expiresAt ||
|
|
424
|
+
new Date(authData.expiresAt).getTime() - Date.now() < REFRESH_LEAD_TIME_MS;
|
|
425
|
+
if (shouldRefresh) {
|
|
426
|
+
if (verbose)
|
|
427
|
+
console.error(authData.isExpired
|
|
428
|
+
? '[i] Token expired, refreshing...'
|
|
429
|
+
: '[i] Token expiring soon, proactive refresh...');
|
|
430
|
+
const refreshResult = await (0, gemini_token_refresh_1.refreshGeminiToken)();
|
|
431
|
+
if (refreshResult.success) {
|
|
432
|
+
if (verbose)
|
|
433
|
+
console.error('[i] Token refreshed successfully');
|
|
434
|
+
// Re-read auth data after successful refresh
|
|
435
|
+
const refreshedAuthData = readGeminiCliAuthData(accountId);
|
|
436
|
+
if (refreshedAuthData) {
|
|
437
|
+
authData = refreshedAuthData;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
else if (authData.isExpired) {
|
|
441
|
+
// Only fail if token is actually expired (not just expiring soon)
|
|
442
|
+
const error = refreshResult.error || 'Token refresh failed';
|
|
443
|
+
if (verbose)
|
|
444
|
+
console.error(`[!] Refresh failed: ${error}`);
|
|
445
|
+
return {
|
|
446
|
+
success: false,
|
|
447
|
+
buckets: [],
|
|
448
|
+
projectId: null,
|
|
449
|
+
lastUpdated: Date.now(),
|
|
450
|
+
error,
|
|
451
|
+
accountId,
|
|
452
|
+
needsReauth: true,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
// If proactive refresh fails but token isn't expired yet, continue with existing token
|
|
456
|
+
}
|
|
457
|
+
// First attempt with current token
|
|
458
|
+
const result = await fetchWithAuthData(authData, accountId, verbose);
|
|
459
|
+
// If 401 error and we haven't refreshed yet, try refresh and retry
|
|
460
|
+
if (result.needsReauth && result.error?.includes('expired')) {
|
|
461
|
+
if (verbose)
|
|
462
|
+
console.error('[i] Got 401, attempting refresh and retry...');
|
|
463
|
+
const refreshResult = await (0, gemini_token_refresh_1.refreshGeminiToken)();
|
|
464
|
+
if (refreshResult.success) {
|
|
465
|
+
const refreshedAuthData = readGeminiCliAuthData(accountId);
|
|
466
|
+
if (refreshedAuthData) {
|
|
467
|
+
return await fetchWithAuthData(refreshedAuthData, accountId, verbose);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return result;
|
|
472
|
+
}
|
|
353
473
|
exports.fetchGeminiCliQuota = fetchGeminiCliQuota;
|
|
354
474
|
/**
|
|
355
475
|
* Fetch quota for all Gemini CLI accounts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-fetcher-gemini-cli.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-gemini-cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4CAA8B;AAC9B,gDAAkC;AAClC,yDAAgD;AAChD,uDAAsE;AACtE,6CAA6D;AAG7D,sCAAsC;AACtC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAClE,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C;;;GAGG;AACH,MAAM,iBAAiB,GAMnB;IACF,qBAAqB,EAAE;QACrB,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,uBAAuB,CAAC;KAChF;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;KACnD;CACF,CAAC;AAEF,qDAAqD;AACrD,MAAM,sBAAsB,GAAG,CAAC,kBAAkB,CAAC,CAAC;AA6BpD;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,YAAoB;IACrD,MAAM,KAAK,GAAG,eAAe,CAAC;IAC9B,IAAI,KAA6B,CAAC;IAClC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAsVQ,8DAAyB;AApVlC;;GAEG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,MAAM,QAAQ,GAAG,CAAC,IAAA,6BAAU,GAAE,EAAE,IAAA,8BAAY,GAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,UAAU,WAAW,OAAO,CAAC;IAElD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAEjC,wCAAwC;gBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;gBAE1D,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,SAAS;oBACT,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;oBACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;iBAChC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;wBACxC,MAAM,SAAS,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;wBAE1D,OAAO;4BACL,WAAW,EAAE,IAAI,CAAC,YAAY;4BAC9B,SAAS;4BACT,SAAS,EAAE,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC;4BACvC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;yBAChC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,UAAgC;IAC7D,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EASpB,CAAC;IAEJ,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,sBAAsB;QACtB,IAAI,iBAAiB,CAAC,OAAO,CAAC;YAAE,SAAS;QAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAChE,0CAA0C;QAC1C,MAAM,oBAAoB,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAEhE,4BAA4B;QAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,cAAc,CAAC;QAE7C,mCAAmC;QACnC,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,6DAA6D;YAC7D,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;YACrF,wCAAwC;YACxC,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;YACjC,CAAC;YACD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBACf,KAAK;gBACL,SAAS;gBACT,iBAAiB;gBACjB,SAAS;gBACT,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC1D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,YAAY,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QAC5C,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAmLmC,sDAAqB;AAjLzD;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,OAAO,GAAG,KAAK;IAEf,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,KAAK,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,wCAAwC,CAAC;QACvD,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,+DAA+D,CAAC;QAC9E,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,0CAA0C,CAAC;QACzD,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,mBAAmB,IAAI,sBAAsB,oBAAoB,CAAC;IACjF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,QAAQ,CAAC,WAAW,EAAE;gBAC/C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;SACtD,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAE5E,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,0BAA0B;gBACjC,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,yCAAyC;gBAChD,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,gCAAgC;gBACvC,SAAS;aACV,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,cAAc,QAAQ,CAAC,MAAM,EAAE;gBACtC,SAAS;aACV,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,iCAAiC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO;YACP,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,SAAS;SACV,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,MAAM,QAAQ,GACZ,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAC/C,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,GAAG,YAAY,KAAK;gBACpB,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,eAAe,CAAC;QAExB,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK,EAAE,QAAQ;YACf,SAAS;SACV,CAAC;IACJ,CAAC;AACH,CAAC;AA9ID,kDA8IC;AAED;;;;;GAKG;AACI,KAAK,UAAU,uBAAuB,CAC3C,OAAO,GAAG,KAAK;IAEf,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;KACtD,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAjBD,0DAiBC"}
|
|
1
|
+
{"version":3,"file":"quota-fetcher-gemini-cli.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-gemini-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Quota Cache
|
|
3
|
+
*
|
|
4
|
+
* Reduces external API calls by caching quota results with TTL.
|
|
5
|
+
* Uses a simple Map-based cache with automatic expiration.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get cached quota result if still valid
|
|
9
|
+
* @param provider - Provider name (codex, gemini, agy)
|
|
10
|
+
* @param accountId - Account identifier
|
|
11
|
+
* @param ttlMs - Time-to-live in milliseconds (default: 2 minutes)
|
|
12
|
+
* @returns Cached result or null if expired/missing
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCachedQuota<T>(provider: string, accountId: string, ttlMs?: number): T | null;
|
|
15
|
+
/**
|
|
16
|
+
* Store quota result in cache
|
|
17
|
+
* @param provider - Provider name (codex, gemini, agy)
|
|
18
|
+
* @param accountId - Account identifier
|
|
19
|
+
* @param data - Quota result to cache
|
|
20
|
+
*/
|
|
21
|
+
export declare function setCachedQuota<T>(provider: string, accountId: string, data: T): void;
|
|
22
|
+
/**
|
|
23
|
+
* Invalidate cache for a specific account
|
|
24
|
+
* @param provider - Provider name
|
|
25
|
+
* @param accountId - Account identifier
|
|
26
|
+
*/
|
|
27
|
+
export declare function invalidateQuotaCache(provider: string, accountId: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Invalidate all cache entries for a provider
|
|
30
|
+
* @param provider - Provider name to clear
|
|
31
|
+
*/
|
|
32
|
+
export declare function invalidateProviderCache(provider: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Clear entire quota cache
|
|
35
|
+
*/
|
|
36
|
+
export declare function clearQuotaCache(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get cache statistics for debugging
|
|
39
|
+
*/
|
|
40
|
+
export declare function getQuotaCacheStats(): {
|
|
41
|
+
size: number;
|
|
42
|
+
entries: string[];
|
|
43
|
+
};
|
|
44
|
+
/** Export cache TTL for consumers */
|
|
45
|
+
export declare const QUOTA_CACHE_TTL_MS: number;
|
|
46
|
+
//# sourceMappingURL=quota-response-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-response-cache.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-response-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAA6B,GACnC,CAAC,GAAG,IAAI,CAgBV;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAG9E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO9D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAKxE;AAED,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,QAAuB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-Memory Quota Cache
|
|
4
|
+
*
|
|
5
|
+
* Reduces external API calls by caching quota results with TTL.
|
|
6
|
+
* Uses a simple Map-based cache with automatic expiration.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.QUOTA_CACHE_TTL_MS = exports.getQuotaCacheStats = exports.clearQuotaCache = exports.invalidateProviderCache = exports.invalidateQuotaCache = exports.setCachedQuota = exports.getCachedQuota = void 0;
|
|
10
|
+
/** Default TTL for quota cache entries (2 minutes) */
|
|
11
|
+
const DEFAULT_CACHE_TTL_MS = 2 * 60 * 1000;
|
|
12
|
+
/** In-memory cache store */
|
|
13
|
+
const quotaCache = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Generate cache key for provider/account combination
|
|
16
|
+
*/
|
|
17
|
+
function getCacheKey(provider, accountId) {
|
|
18
|
+
return `${provider}:${accountId}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get cached quota result if still valid
|
|
22
|
+
* @param provider - Provider name (codex, gemini, agy)
|
|
23
|
+
* @param accountId - Account identifier
|
|
24
|
+
* @param ttlMs - Time-to-live in milliseconds (default: 2 minutes)
|
|
25
|
+
* @returns Cached result or null if expired/missing
|
|
26
|
+
*/
|
|
27
|
+
function getCachedQuota(provider, accountId, ttlMs = DEFAULT_CACHE_TTL_MS) {
|
|
28
|
+
const key = getCacheKey(provider, accountId);
|
|
29
|
+
const entry = quotaCache.get(key);
|
|
30
|
+
if (!entry) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
// Check if cache is still valid
|
|
34
|
+
if (Date.now() - entry.cachedAt < ttlMs) {
|
|
35
|
+
return entry.data;
|
|
36
|
+
}
|
|
37
|
+
// Cache expired - remove entry
|
|
38
|
+
quotaCache.delete(key);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
exports.getCachedQuota = getCachedQuota;
|
|
42
|
+
/**
|
|
43
|
+
* Store quota result in cache
|
|
44
|
+
* @param provider - Provider name (codex, gemini, agy)
|
|
45
|
+
* @param accountId - Account identifier
|
|
46
|
+
* @param data - Quota result to cache
|
|
47
|
+
*/
|
|
48
|
+
function setCachedQuota(provider, accountId, data) {
|
|
49
|
+
const key = getCacheKey(provider, accountId);
|
|
50
|
+
quotaCache.set(key, {
|
|
51
|
+
data,
|
|
52
|
+
cachedAt: Date.now(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
exports.setCachedQuota = setCachedQuota;
|
|
56
|
+
/**
|
|
57
|
+
* Invalidate cache for a specific account
|
|
58
|
+
* @param provider - Provider name
|
|
59
|
+
* @param accountId - Account identifier
|
|
60
|
+
*/
|
|
61
|
+
function invalidateQuotaCache(provider, accountId) {
|
|
62
|
+
const key = getCacheKey(provider, accountId);
|
|
63
|
+
quotaCache.delete(key);
|
|
64
|
+
}
|
|
65
|
+
exports.invalidateQuotaCache = invalidateQuotaCache;
|
|
66
|
+
/**
|
|
67
|
+
* Invalidate all cache entries for a provider
|
|
68
|
+
* @param provider - Provider name to clear
|
|
69
|
+
*/
|
|
70
|
+
function invalidateProviderCache(provider) {
|
|
71
|
+
const prefix = `${provider}:`;
|
|
72
|
+
for (const key of quotaCache.keys()) {
|
|
73
|
+
if (key.startsWith(prefix)) {
|
|
74
|
+
quotaCache.delete(key);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.invalidateProviderCache = invalidateProviderCache;
|
|
79
|
+
/**
|
|
80
|
+
* Clear entire quota cache
|
|
81
|
+
*/
|
|
82
|
+
function clearQuotaCache() {
|
|
83
|
+
quotaCache.clear();
|
|
84
|
+
}
|
|
85
|
+
exports.clearQuotaCache = clearQuotaCache;
|
|
86
|
+
/**
|
|
87
|
+
* Get cache statistics for debugging
|
|
88
|
+
*/
|
|
89
|
+
function getQuotaCacheStats() {
|
|
90
|
+
return {
|
|
91
|
+
size: quotaCache.size,
|
|
92
|
+
entries: Array.from(quotaCache.keys()),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
exports.getQuotaCacheStats = getQuotaCacheStats;
|
|
96
|
+
/** Export cache TTL for consumers */
|
|
97
|
+
exports.QUOTA_CACHE_TTL_MS = DEFAULT_CACHE_TTL_MS;
|
|
98
|
+
//# sourceMappingURL=quota-response-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-response-cache.js","sourceRoot":"","sources":["../../src/cliproxy/quota-response-cache.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,sDAAsD;AACtD,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAQ3C,4BAA4B;AAC5B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE1D;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB,EAAE,SAAiB;IACtD,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,QAAgB,EAChB,SAAiB,EACjB,QAAgB,oBAAoB;IAEpC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAA8B,CAAC;IAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,+BAA+B;IAC/B,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AApBD,wCAoBC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAI,QAAgB,EAAE,SAAiB,EAAE,IAAO;IAC5E,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE;QAClB,IAAI;QACJ,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAND,wCAMC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAgB,EAAE,SAAiB;IACtE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAHD,oDAGC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAPD,0DAOC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAFD,0CAEC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACvC,CAAC;AACJ,CAAC;AALD,gDAKC;AAED,qCAAqC;AACxB,QAAA,kBAAkB,GAAG,oBAAoB,CAAC"}
|
|
@@ -38,6 +38,8 @@ export interface CodexQuotaResult {
|
|
|
38
38
|
error?: string;
|
|
39
39
|
/** Account ID (email) this quota belongs to */
|
|
40
40
|
accountId?: string;
|
|
41
|
+
/** True if token is expired and needs re-authentication */
|
|
42
|
+
needsReauth?: boolean;
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
45
|
* Gemini CLI quota bucket (grouped by model series and token type)
|
|
@@ -74,5 +76,7 @@ export interface GeminiCliQuotaResult {
|
|
|
74
76
|
error?: string;
|
|
75
77
|
/** Account ID (email) this quota belongs to */
|
|
76
78
|
accountId?: string;
|
|
79
|
+
/** True if token is expired and needs re-authentication */
|
|
80
|
+
needsReauth?: boolean;
|
|
77
81
|
}
|
|
78
82
|
//# sourceMappingURL=quota-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-types.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAGvD,YAAY,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"quota-types.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAGvD,YAAY,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|