@kaitranntt/ccs 7.52.2-dev.4 → 7.52.2-dev.6

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 (89) hide show
  1. package/README.md +4 -0
  2. package/dist/api/services/index.d.ts +3 -1
  3. package/dist/api/services/index.d.ts.map +1 -1
  4. package/dist/api/services/index.js +10 -1
  5. package/dist/api/services/index.js.map +1 -1
  6. package/dist/api/services/profile-lifecycle-service.d.ts +24 -0
  7. package/dist/api/services/profile-lifecycle-service.d.ts.map +1 -0
  8. package/dist/api/services/profile-lifecycle-service.js +364 -0
  9. package/dist/api/services/profile-lifecycle-service.js.map +1 -0
  10. package/dist/api/services/profile-lifecycle-validation.d.ts +11 -0
  11. package/dist/api/services/profile-lifecycle-validation.d.ts.map +1 -0
  12. package/dist/api/services/profile-lifecycle-validation.js +87 -0
  13. package/dist/api/services/profile-lifecycle-validation.js.map +1 -0
  14. package/dist/api/services/profile-types.d.ts +66 -0
  15. package/dist/api/services/profile-types.d.ts.map +1 -1
  16. package/dist/cliproxy/auth/gemini-token-refresh.d.ts.map +1 -1
  17. package/dist/cliproxy/auth/gemini-token-refresh.js +42 -14
  18. package/dist/cliproxy/auth/gemini-token-refresh.js.map +1 -1
  19. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  20. package/dist/cliproxy/binary-manager.js +13 -14
  21. package/dist/cliproxy/binary-manager.js.map +1 -1
  22. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  23. package/dist/cliproxy/quota-fetcher-codex.js +199 -63
  24. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  25. package/dist/cliproxy/quota-fetcher.d.ts +12 -0
  26. package/dist/cliproxy/quota-fetcher.d.ts.map +1 -1
  27. package/dist/cliproxy/quota-fetcher.js +328 -260
  28. package/dist/cliproxy/quota-fetcher.js.map +1 -1
  29. package/dist/cliproxy/quota-types.d.ts +18 -4
  30. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  31. package/dist/commands/api-command.d.ts.map +1 -1
  32. package/dist/commands/api-command.js +275 -1
  33. package/dist/commands/api-command.js.map +1 -1
  34. package/dist/commands/help-command.d.ts.map +1 -1
  35. package/dist/commands/help-command.js +4 -0
  36. package/dist/commands/help-command.js.map +1 -1
  37. package/dist/ui/assets/accounts-C19R3bH_.js +1 -0
  38. package/dist/ui/assets/{alert-dialog-QYUhRzXK.js → alert-dialog-HJSnKjIs.js} +1 -1
  39. package/dist/ui/assets/api-DSqH5CNY.js +4 -0
  40. package/dist/ui/assets/auth-section-CYKSK386.js +1 -0
  41. package/dist/ui/assets/backups-section-DG3ZbzbF.js +1 -0
  42. package/dist/ui/assets/{checkbox-DGiQ22i1.js → checkbox-Du_1Cq1z.js} +1 -1
  43. package/dist/ui/assets/cliproxy-CrhOC0jn.js +3 -0
  44. package/dist/ui/assets/cliproxy-control-panel-DLzDKBdd.js +1 -0
  45. package/dist/ui/assets/{confirm-dialog-DDdeYI2H.js → confirm-dialog-D5ln-pf7.js} +1 -1
  46. package/dist/ui/assets/{copilot-DFaXcekY.js → copilot-Bhp7sQwN.js} +2 -2
  47. package/dist/ui/assets/{cursor-DepYQY1w.js → cursor-Dfn3jHV4.js} +1 -1
  48. package/dist/ui/assets/{droid-CTtRivEr.js → droid-Vjl6_n7D.js} +1 -1
  49. package/dist/ui/assets/globalenv-section-CcmKdM4g.js +1 -0
  50. package/dist/ui/assets/{health-D6oasd62.js → health-3zy8jvwf.js} +1 -1
  51. package/dist/ui/assets/{icons-BYZM_9Gm.js → icons-D2eEmpHv.js} +1 -1
  52. package/dist/ui/assets/index-BusjPRWX.css +1 -0
  53. package/dist/ui/assets/index-CP_OIR4n.js +1 -0
  54. package/dist/ui/assets/index-DbxzdeHz.js +1 -0
  55. package/dist/ui/assets/index-f_yPeQQQ.js +1 -0
  56. package/dist/ui/assets/{index-Diuv26bz.js → index-iOpyYqld.js} +1 -1
  57. package/dist/ui/assets/index-uTmtgDew.js +47 -0
  58. package/dist/ui/assets/proxy-status-widget-1lHBE3f2.js +1 -0
  59. package/dist/ui/assets/{separator-CSt5QZvu.js → separator-CsVbirkY.js} +1 -1
  60. package/dist/ui/assets/shared-DGq6uQfx.js +8 -0
  61. package/dist/ui/assets/{switch-CTrO47Q-.js → switch-BR0F3O9R.js} +1 -1
  62. package/dist/ui/assets/{updates-BBghSoYr.js → updates-ZSQz4CLF.js} +1 -1
  63. package/dist/ui/index.html +3 -3
  64. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +12 -0
  65. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  66. package/dist/web-server/routes/cliproxy-stats-routes.js +22 -9
  67. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  68. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  69. package/dist/web-server/routes/profile-routes.js +206 -9
  70. package/dist/web-server/routes/profile-routes.js.map +1 -1
  71. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts +21 -0
  72. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -0
  73. package/dist/web-server/services/cliproxy-dashboard-install-service.js +51 -0
  74. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -0
  75. package/package.json +1 -1
  76. package/dist/ui/assets/accounts-IsT_BiCd.js +0 -1
  77. package/dist/ui/assets/api-BYUVLPig.js +0 -1
  78. package/dist/ui/assets/auth-section-CqMQGbDM.js +0 -1
  79. package/dist/ui/assets/backups-section-htDdMLh5.js +0 -1
  80. package/dist/ui/assets/cliproxy-BpQHL05v.js +0 -3
  81. package/dist/ui/assets/cliproxy-control-panel-CCdMLyj2.js +0 -1
  82. package/dist/ui/assets/globalenv-section-CljFwX-s.js +0 -1
  83. package/dist/ui/assets/index-CGPdFYiT.js +0 -1
  84. package/dist/ui/assets/index-CK9IG4x4.js +0 -1
  85. package/dist/ui/assets/index-CeXOFv5d.js +0 -1
  86. package/dist/ui/assets/index-CmZS09IA.js +0 -47
  87. package/dist/ui/assets/index-WBo504Wu.css +0 -1
  88. package/dist/ui/assets/proxy-status-widget-exblPwy_.js +0 -1
  89. package/dist/ui/assets/shared-CbdTTMNS.js +0 -8
@@ -48,4 +48,70 @@ export interface UpdateApiProfileTargetResult {
48
48
  target?: TargetType;
49
49
  error?: string;
50
50
  }
51
+ /** Validation severity for profile lifecycle checks */
52
+ export type ProfileValidationLevel = 'error' | 'warning';
53
+ /** Field-level validation issue emitted by lifecycle operations */
54
+ export interface ProfileValidationIssue {
55
+ level: ProfileValidationLevel;
56
+ code: string;
57
+ message: string;
58
+ field?: string;
59
+ hint?: string;
60
+ }
61
+ /** Validation summary for settings payload */
62
+ export interface ProfileValidationSummary {
63
+ valid: boolean;
64
+ issues: ProfileValidationIssue[];
65
+ }
66
+ /** Orphan settings file candidate discovered on disk */
67
+ export interface ApiProfileOrphanCandidate {
68
+ name: string;
69
+ settingsPath: string;
70
+ validation: ProfileValidationSummary;
71
+ }
72
+ /** Discovery result for orphan settings files */
73
+ export interface DiscoverApiProfileOrphansResult {
74
+ orphans: ApiProfileOrphanCandidate[];
75
+ }
76
+ /** Registration result for orphan settings files */
77
+ export interface RegisterApiProfileOrphansResult {
78
+ registered: string[];
79
+ skipped: Array<{
80
+ name: string;
81
+ reason: string;
82
+ }>;
83
+ }
84
+ /** Copy result for API profile duplication */
85
+ export interface CopyApiProfileResult {
86
+ success: boolean;
87
+ name?: string;
88
+ settingsPath?: string;
89
+ warnings?: string[];
90
+ error?: string;
91
+ }
92
+ /** Portable export bundle schema */
93
+ export interface ApiProfileExportBundle {
94
+ schemaVersion: 1;
95
+ exportedAt: string;
96
+ profile: {
97
+ name: string;
98
+ target: TargetType;
99
+ };
100
+ settings: Record<string, unknown>;
101
+ }
102
+ /** Export operation result */
103
+ export interface ExportApiProfileResult {
104
+ success: boolean;
105
+ bundle?: ApiProfileExportBundle;
106
+ redacted?: boolean;
107
+ error?: string;
108
+ }
109
+ /** Import operation result */
110
+ export interface ImportApiProfileResult {
111
+ success: boolean;
112
+ name?: string;
113
+ warnings?: string[];
114
+ validation?: ProfileValidationSummary;
115
+ error?: string;
116
+ }
51
117
  //# sourceMappingURL=profile-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-token-refresh.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/gemini-token-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkEH;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAyLD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAUrE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CA4DD;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,UAAQ,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAwBD"}
1
+ {"version":3,"file":"gemini-token-refresh.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/gemini-token-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsEH;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AA+ND;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAUrE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAkED;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,UAAQ,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAwBD"}
@@ -40,21 +40,15 @@ const os = __importStar(require("os"));
40
40
  const config_generator_1 = require("../config-generator");
41
41
  const account_manager_1 = require("../account-manager");
42
42
  const token_manager_1 = require("./token-manager");
43
- /**
44
- * Gemini OAuth credentials - PUBLIC from official Gemini CLI source code
45
- * These are not secrets - they're public OAuth client credentials that Google
46
- * distributes with their official applications. See:
47
- * https://github.com/google/generative-ai-python (Gemini CLI source)
48
- *
49
- * GitHub secret scanning may flag these, but they are intentionally hardcoded
50
- * as they're required for OAuth token refresh and are publicly documented.
51
- */
52
- const GEMINI_CLIENT_ID = '681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com';
53
- const GEMINI_CLIENT_SECRET = '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';
54
43
  /** Google OAuth token endpoint */
55
44
  const GOOGLE_TOKEN_URL = 'https://oauth2.googleapis.com/token';
56
45
  /** Refresh tokens 5 minutes before expiry */
57
46
  const REFRESH_LEAD_TIME_MS = 5 * 60 * 1000;
47
+ const GEMINI_CLIENT_ID_ENV_KEYS = ['CCS_GEMINI_OAUTH_CLIENT_ID', 'OPENCLAW_GEMINI_OAUTH_CLIENT_ID'];
48
+ const GEMINI_CLIENT_SECRET_ENV_KEYS = [
49
+ 'CCS_GEMINI_OAUTH_CLIENT_SECRET',
50
+ 'OPENCLAW_GEMINI_OAUTH_CLIENT_SECRET',
51
+ ];
58
52
  /**
59
53
  * Get path to Gemini OAuth credentials file
60
54
  */
@@ -71,6 +65,9 @@ function mapCliproxyToGeminiCreds(cliproxy) {
71
65
  refresh_token: cliproxy.token.refresh_token,
72
66
  expiry_date: cliproxy.token.expiry,
73
67
  token_type: 'Bearer',
68
+ client_id: cliproxy.token.client_id,
69
+ client_secret: cliproxy.token.client_secret,
70
+ token_uri: cliproxy.token.token_uri,
74
71
  };
75
72
  }
76
73
  /**
@@ -87,6 +84,32 @@ function isValidCliproxyToken(data) {
87
84
  const token = obj.token;
88
85
  return typeof token.access_token === 'string';
89
86
  }
87
+ function getFirstEnvValue(keys) {
88
+ for (const key of keys) {
89
+ const value = process.env[key]?.trim();
90
+ if (value) {
91
+ return value;
92
+ }
93
+ }
94
+ return undefined;
95
+ }
96
+ function resolveGeminiRefreshCredentials(creds) {
97
+ const clientId = creds.client_id?.trim() || getFirstEnvValue(GEMINI_CLIENT_ID_ENV_KEYS);
98
+ const clientSecret = creds.client_secret?.trim() || getFirstEnvValue(GEMINI_CLIENT_SECRET_ENV_KEYS);
99
+ if (!clientId || !clientSecret) {
100
+ return {
101
+ error: 'Gemini token refresh unavailable: missing OAuth client credentials in the token file. ' +
102
+ 'Re-authenticate with CLIProxy or set CCS_GEMINI_OAUTH_CLIENT_ID and CCS_GEMINI_OAUTH_CLIENT_SECRET.',
103
+ };
104
+ }
105
+ return {
106
+ credentials: {
107
+ clientId,
108
+ clientSecret,
109
+ tokenUrl: creds.token_uri?.trim() || GOOGLE_TOKEN_URL,
110
+ },
111
+ };
112
+ }
90
113
  /**
91
114
  * Read Gemini token from CLIProxy auth directory
92
115
  * Returns credentials with source path, or null if no valid token found
@@ -263,10 +286,15 @@ async function refreshGeminiToken(accountId) {
263
286
  return { success: false, error: 'No refresh token available' };
264
287
  }
265
288
  const { creds, sourcePath } = result;
289
+ const resolvedCredentials = resolveGeminiRefreshCredentials(creds);
290
+ if (!resolvedCredentials.credentials) {
291
+ return { success: false, error: resolvedCredentials.error };
292
+ }
293
+ const { clientId, clientSecret, tokenUrl } = resolvedCredentials.credentials;
266
294
  const controller = new AbortController();
267
295
  const timeoutId = setTimeout(() => controller.abort(), 10000);
268
296
  try {
269
- const response = await fetch(GOOGLE_TOKEN_URL, {
297
+ const response = await fetch(tokenUrl, {
270
298
  method: 'POST',
271
299
  signal: controller.signal,
272
300
  headers: {
@@ -275,8 +303,8 @@ async function refreshGeminiToken(accountId) {
275
303
  body: new URLSearchParams({
276
304
  grant_type: 'refresh_token',
277
305
  refresh_token: creds.refresh_token, // Already validated above
278
- client_id: GEMINI_CLIENT_ID,
279
- client_secret: GEMINI_CLIENT_SECRET,
306
+ client_id: clientId,
307
+ client_secret: clientSecret,
280
308
  }).toString(),
281
309
  });
282
310
  clearTimeout(timeoutId);
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-token-refresh.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/gemini-token-refresh.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,0DAAyD;AACzD,wDAA4E;AAC5E,mDAAyD;AAEzD;;;;;;;;GAQG;AAEH,MAAM,gBAAgB,GAAG,0EAA0E,CAAC;AAEpG,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AAEnE,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAE/D,6CAA6C;AAC7C,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAuC3C;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAFD,gDAEC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAA6B;IAC7D,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;QACzC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;QAC3C,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAClC,UAAU,EAAE,QAAQ;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAgC,CAAC;IACnD,OAAO,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,SAAkB;IACjD,MAAM,OAAO,GAAG,IAAA,qCAAkB,EAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,mBAAmB,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,mBAAmB,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,2CAA2C;QAC3C,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,cAAc,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;QAClD,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;QAClD,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAA,sCAAsB,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAC7E,SAAS,GAAG,QAAQ,CAAC;wBACrB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE1C,wDAAwD;QACxD,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC;gBACrC,UAAU,EAAE,SAAS;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,SAAkB;IACzC,4DAA4D;IAC5D,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,uEAAuE;IACvE,0DAA0D;IAC1D,IAAI,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB;YAC9C,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,SAAiB,EAAE,KAAuB;IAC1E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG;YACd,GAAG,QAAQ;YACX,KAAK,EAAE;gBACL,GAAG,QAAQ,CAAC,KAAK;gBACjB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,MAAM,EAAE,KAAK,CAAC,WAAW;aAC1B;SACF,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAuB,EAAE,UAAkB;IACnE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,sEAAsE;IACtE,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,kDAAkD;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,SAAkB;IAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,gCAAgC;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxD,OAAO,SAAS,GAAG,oBAAoB,CAAC;AAC1C,CAAC;AAVD,8DAUC;AAED;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,SAAkB;IAKzD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,IAAI,eAAe,CAAC;gBACxB,UAAU,EAAE,eAAe;gBAC3B,aAAa,EAAE,KAAK,CAAC,aAAuB,EAAE,0BAA0B;gBACxE,SAAS,EAAE,gBAAgB;gBAC3B,aAAa,EAAE,oBAAoB;aACpC,CAAC,CAAC,QAAQ,EAAE;SACd,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAE7D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,QAAQ,CAAC,MAAM,EAAE;aACjF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;QAClE,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QAChE,MAAM,YAAY,GAAqB;YACrC,GAAG,KAAK;YACR,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,SAAS;SACvB,CAAC;QACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,UAAU,EAAE,EAAE,CAAC;QACxF,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACzF,CAAC;AACH,CAAC;AAhED,gDAgEC;AAED;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB,CAC1C,OAAO,GAAG,KAAK,EACf,SAAkB;IAMlB,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AACxE,CAAC;AA/BD,wDA+BC"}
1
+ {"version":3,"file":"gemini-token-refresh.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/gemini-token-refresh.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,0DAAyD;AACzD,wDAA4E;AAC5E,mDAAyD;AAEzD,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAE/D,6CAA6C;AAC7C,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3C,MAAM,yBAAyB,GAAG,CAAC,4BAA4B,EAAE,iCAAiC,CAAC,CAAC;AACpG,MAAM,6BAA6B,GAAG;IACpC,gCAAgC;IAChC,qCAAqC;CACtC,CAAC;AAmDF;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAFD,gDAEC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,QAA6B;IAC7D,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;QACzC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;QAC3C,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAClC,UAAU,EAAE,QAAQ;QACpB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;QACnC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;QAC3C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAgC,CAAC;IACnD,OAAO,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAuB;IAI9D,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACxF,MAAM,YAAY,GAChB,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;IAEjF,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EACH,wFAAwF;gBACxF,qGAAqG;SACxG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE;YACX,QAAQ;YACR,YAAY;YACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,gBAAgB;SACtD;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,SAAkB;IACjD,MAAM,OAAO,GAAG,IAAA,qCAAkB,EAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,mBAAmB,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,mBAAmB,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,2CAA2C;QAC3C,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,cAAc,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;QAClD,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;QAClD,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAA,sCAAsB,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAC7E,SAAS,GAAG,QAAQ,CAAC;wBACrB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE1C,wDAAwD;QACxD,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC;gBACrC,UAAU,EAAE,SAAS;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,SAAkB;IACzC,4DAA4D;IAC5D,MAAM,cAAc,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,uEAAuE;IACvE,0DAA0D;IAC1D,IAAI,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB;YAC9C,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,SAAiB,EAAE,KAAuB;IAC1E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG;YACd,GAAG,QAAQ;YACX,KAAK,EAAE;gBACL,GAAG,QAAQ,CAAC,KAAK;gBACjB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,MAAM,EAAE,KAAK,CAAC,WAAW;aAC1B;SACF,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAuB,EAAE,UAAkB;IACnE,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,sEAAsE;IACtE,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,kDAAkD;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,SAAkB;IAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,gCAAgC;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxD,OAAO,SAAS,GAAG,oBAAoB,CAAC;AAC1C,CAAC;AAVD,8DAUC;AAED;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,SAAkB;IAKzD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,cAAc,EAAE,mCAAmC;aACpD;YACD,IAAI,EAAE,IAAI,eAAe,CAAC;gBACxB,UAAU,EAAE,eAAe;gBAC3B,aAAa,EAAE,KAAK,CAAC,aAAuB,EAAE,0BAA0B;gBACxE,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,YAAY;aAC5B,CAAC,CAAC,QAAQ,EAAE;SACd,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAE7D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,QAAQ,CAAC,MAAM,EAAE;aACjF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;QAClE,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QAChE,MAAM,YAAY,GAAqB;YACrC,GAAG,KAAK;YACR,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,SAAS;SACvB,CAAC;QACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,UAAU,EAAE,EAAE,CAAC;QACxF,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACzF,CAAC;AACH,CAAC;AAtED,gDAsEC;AAED;;;;;GAKG;AACI,KAAK,UAAU,sBAAsB,CAC1C,OAAO,GAAG,KAAK,EACf,SAAkB;IAMlB,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AACxE,CAAC;AA/BD,wDA+BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqC/C;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAMhF,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IASnD,yCAAyC;IACzC,aAAa,IAAI,MAAM;IAIvB,6BAA6B;IAC7B,iBAAiB,IAAI,OAAO;IAI5B,mCAAmC;IAC7B,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,YAAY,IAAI,IAAI;CAGrB;AAED,kDAAkD;AAClD,wBAAsB,oBAAoB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAGtE;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAGjE;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAM7E;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,2CAA2C;AAC3C,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAqBpC;AAGD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAK1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqC/C;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAMhF,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IASnD,yCAAyC;IACzC,aAAa,IAAI,MAAM;IAIvB,6BAA6B;IAC7B,iBAAiB,IAAI,OAAO;IAI5B,mCAAmC;IAC7B,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,YAAY,IAAI,IAAI;CAGrB;AAED,kDAAkD;AAClD,wBAAsB,oBAAoB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAGtE;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAGjE;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAM7E;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,2CAA2C;AAC3C,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAqBpC;AAGD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -151,22 +151,21 @@ exports.getInstalledCliproxyVersion = getInstalledCliproxyVersion;
151
151
  async function installCliproxyVersion(version, verbose = false, backend) {
152
152
  const effectiveBackend = backend ?? getConfiguredBackend();
153
153
  const manager = new BinaryManager({ version, verbose, forceVersion: true }, effectiveBackend);
154
- // Check if proxy is running and stop it first
155
- if ((0, proxy_lifecycle_service_1.isProxyRunning)()) {
156
- if (verbose)
157
- console.log((0, ui_1.info)('Stopping running CLIProxy before update...'));
158
- const result = await (0, proxy_lifecycle_service_1.stopProxy)();
159
- if (result.stopped) {
160
- // Wait for port to be fully released
161
- const portFree = await (0, port_utils_1.waitForPortFree)(config_generator_1.CLIPROXY_DEFAULT_PORT, 5000);
162
- if (!portFree && verbose) {
163
- console.log((0, ui_1.warn)('Port did not free up in time, proceeding anyway...'));
164
- }
165
- }
166
- else if (verbose && result.error) {
167
- console.log((0, ui_1.warn)(`Could not stop proxy: ${result.error}`));
154
+ // Always attempt a best-effort stop first so we also catch untracked proxies
155
+ // that are running without a session lock.
156
+ if (verbose)
157
+ console.log((0, ui_1.info)('Stopping running CLIProxy before update...'));
158
+ const result = await (0, proxy_lifecycle_service_1.stopProxy)();
159
+ if (result.stopped) {
160
+ // Wait for port to be fully released
161
+ const portFree = await (0, port_utils_1.waitForPortFree)(config_generator_1.CLIPROXY_DEFAULT_PORT, 5000);
162
+ if (!portFree && verbose) {
163
+ console.log((0, ui_1.warn)('Port did not free up in time, proceeding anyway...'));
168
164
  }
169
165
  }
166
+ else if (verbose && result.error && result.error !== 'No active CLIProxy session found') {
167
+ console.log((0, ui_1.warn)(`Could not stop proxy: ${result.error}`));
168
+ }
170
169
  if (manager.isBinaryInstalled()) {
171
170
  const label = effectiveBackend === 'plus' ? 'CLIProxy Plus' : 'CLIProxy';
172
171
  if (verbose)
@@ -1 +1 @@
1
- {"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
@@ -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,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAa/F,+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;AA2BD,iBAAS,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAM1E;AAQD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA8D7F;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,CAsL3B;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,2BAA2B,EAAE,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,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAc/F,+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;AAiCD,iBAAS,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAM1E;AAQD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CA8D7F;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;AA6ND;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,gBAAgB,CAAC,CA4I3B;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,2BAA2B,EAAE,CAAC"}
@@ -39,6 +39,7 @@ const auth_utils_1 = require("./auth-utils");
39
39
  const CODEX_API_BASE = 'https://chatgpt.com/backend-api';
40
40
  const CODEX_QUOTA_TIMEOUT_MS = 12000;
41
41
  const CODEX_QUOTA_MAX_ATTEMPTS = 2;
42
+ const CODEX_ERROR_DETAIL_MAX_LENGTH = 240;
42
43
  /**
43
44
  * User agent matching Codex CLI for API compatibility.
44
45
  * Update when Codex CLI releases new versions to maintain compatibility.
@@ -234,6 +235,180 @@ function buildCodexQuotaWindows(payload) {
234
235
  return windows;
235
236
  }
236
237
  exports.buildCodexQuotaWindows = buildCodexQuotaWindows;
238
+ function buildCodexFailureResult(accountId, options) {
239
+ return {
240
+ success: false,
241
+ windows: [],
242
+ planType: null,
243
+ lastUpdated: Date.now(),
244
+ accountId,
245
+ error: options.error,
246
+ httpStatus: options.httpStatus,
247
+ errorCode: options.errorCode,
248
+ errorDetail: options.errorDetail,
249
+ actionHint: options.actionHint,
250
+ retryable: options.retryable,
251
+ needsReauth: options.needsReauth,
252
+ isForbidden: options.isForbidden,
253
+ };
254
+ }
255
+ function sanitizeCodexErrorDetail(bodyText) {
256
+ const trimmed = bodyText.trim();
257
+ if (!trimmed) {
258
+ return undefined;
259
+ }
260
+ if (/^<!doctype html/i.test(trimmed) || /^<html/i.test(trimmed) || /^<[^>]+>/.test(trimmed)) {
261
+ return '[HTML error response omitted]';
262
+ }
263
+ let sanitized = trimmed
264
+ .replace(/"(access[_-]?token|refresh[_-]?token|authorization|cookie|set-cookie|api[_-]?key|session[_-]?token|token)"\s*:\s*"[^"]*"/gi, '"$1":"[redacted]"')
265
+ .replace(/Bearer\s+[A-Za-z0-9._-]+/g, 'Bearer [redacted]')
266
+ .replace(/\s+/g, ' ');
267
+ if (sanitized.length > CODEX_ERROR_DETAIL_MAX_LENGTH) {
268
+ sanitized = `${sanitized.slice(0, CODEX_ERROR_DETAIL_MAX_LENGTH - 14)}...[truncated]`;
269
+ }
270
+ return sanitized;
271
+ }
272
+ function parseCodexErrorBody(bodyText) {
273
+ const trimmed = bodyText.trim();
274
+ if (!trimmed) {
275
+ return {};
276
+ }
277
+ const sanitizedDetail = sanitizeCodexErrorDetail(trimmed);
278
+ try {
279
+ const parsed = JSON.parse(trimmed);
280
+ const topLevelMessage = typeof parsed.message === 'string'
281
+ ? parsed.message
282
+ : typeof parsed.detail === 'string'
283
+ ? parsed.detail
284
+ : undefined;
285
+ const topLevelCode = typeof parsed.code === 'string' ? parsed.code : undefined;
286
+ if (parsed.error && typeof parsed.error === 'object') {
287
+ const error = parsed.error;
288
+ const errorCode = typeof error.code === 'string' ? error.code : topLevelCode;
289
+ const errorMessage = typeof error.message === 'string'
290
+ ? error.message
291
+ : typeof error.error === 'string'
292
+ ? error.error
293
+ : topLevelMessage;
294
+ return {
295
+ errorCode,
296
+ errorDetail: sanitizedDetail,
297
+ message: errorMessage,
298
+ };
299
+ }
300
+ if (parsed.detail && typeof parsed.detail === 'object') {
301
+ const detail = parsed.detail;
302
+ return {
303
+ errorCode: typeof detail.code === 'string'
304
+ ? detail.code
305
+ : typeof detail.type === 'string'
306
+ ? detail.type
307
+ : topLevelCode,
308
+ errorDetail: sanitizedDetail,
309
+ message: typeof detail.message === 'string'
310
+ ? detail.message
311
+ : typeof detail.error === 'string'
312
+ ? detail.error
313
+ : topLevelMessage,
314
+ };
315
+ }
316
+ return {
317
+ errorCode: topLevelCode,
318
+ errorDetail: sanitizedDetail,
319
+ message: topLevelMessage,
320
+ };
321
+ }
322
+ catch {
323
+ return {
324
+ errorDetail: sanitizedDetail,
325
+ message: trimmed,
326
+ };
327
+ }
328
+ }
329
+ function buildCodexHttpFailureResult(accountId, status, bodyText) {
330
+ const parsed = parseCodexErrorBody(bodyText);
331
+ if (status === 401) {
332
+ return buildCodexFailureResult(accountId, {
333
+ error: 'Token expired or invalid',
334
+ httpStatus: 401,
335
+ errorCode: parsed.errorCode || 'reauth_required',
336
+ errorDetail: parsed.errorDetail,
337
+ actionHint: 'Run ccs cliproxy auth codex to re-authenticate this account.',
338
+ needsReauth: true,
339
+ retryable: false,
340
+ });
341
+ }
342
+ if (status === 402) {
343
+ if (parsed.errorCode === 'deactivated_workspace') {
344
+ return buildCodexFailureResult(accountId, {
345
+ error: 'Workspace deactivated (HTTP 402)',
346
+ httpStatus: 402,
347
+ errorCode: parsed.errorCode,
348
+ errorDetail: parsed.errorDetail,
349
+ actionHint: 'Remove and re-add this account from an active ChatGPT workspace before retrying.',
350
+ retryable: false,
351
+ });
352
+ }
353
+ return buildCodexFailureResult(accountId, {
354
+ error: parsed.message || 'Payment or workspace access required (HTTP 402)',
355
+ httpStatus: 402,
356
+ errorCode: parsed.errorCode || 'payment_required',
357
+ errorDetail: parsed.errorDetail,
358
+ actionHint: 'Confirm the ChatGPT workspace/subscription is active, then retry.',
359
+ retryable: false,
360
+ });
361
+ }
362
+ if (status === 403) {
363
+ return buildCodexFailureResult(accountId, {
364
+ error: 'Quota API access forbidden (HTTP 403)',
365
+ httpStatus: 403,
366
+ errorCode: parsed.errorCode || 'quota_api_forbidden',
367
+ errorDetail: parsed.errorDetail,
368
+ actionHint: 'This account cannot access the Codex quota endpoint.',
369
+ isForbidden: true,
370
+ retryable: false,
371
+ });
372
+ }
373
+ if (status === 404) {
374
+ return buildCodexFailureResult(accountId, {
375
+ error: 'Codex quota endpoint not found (HTTP 404)',
376
+ httpStatus: 404,
377
+ errorCode: parsed.errorCode || 'quota_endpoint_not_found',
378
+ errorDetail: parsed.errorDetail,
379
+ actionHint: 'The upstream Codex quota endpoint changed or is unavailable.',
380
+ retryable: false,
381
+ });
382
+ }
383
+ if (status === 429) {
384
+ return buildCodexFailureResult(accountId, {
385
+ error: 'Rate limited - try again later',
386
+ httpStatus: 429,
387
+ errorCode: parsed.errorCode || 'rate_limited',
388
+ errorDetail: parsed.errorDetail,
389
+ actionHint: 'Retry after a short delay.',
390
+ retryable: true,
391
+ });
392
+ }
393
+ if (status >= 500) {
394
+ return buildCodexFailureResult(accountId, {
395
+ error: `Codex quota service unavailable (HTTP ${status})`,
396
+ httpStatus: status,
397
+ errorCode: parsed.errorCode || 'provider_unavailable',
398
+ errorDetail: parsed.errorDetail,
399
+ actionHint: 'Retry later. This looks like a temporary upstream problem.',
400
+ retryable: true,
401
+ });
402
+ }
403
+ return buildCodexFailureResult(accountId, {
404
+ error: parsed.message || `Codex quota request failed (HTTP ${status})`,
405
+ httpStatus: status,
406
+ errorCode: parsed.errorCode || 'unknown_upstream_error',
407
+ errorDetail: parsed.errorDetail,
408
+ actionHint: 'Inspect the upstream response details and retry if appropriate.',
409
+ retryable: false,
410
+ });
411
+ }
237
412
  /**
238
413
  * Fetch quota for a single Codex account
239
414
  *
@@ -249,41 +424,35 @@ async function fetchCodexQuota(accountId, verbose = false) {
249
424
  const error = 'Auth file not found for Codex account';
250
425
  if (verbose)
251
426
  console.error(`[!] Error: ${error}`);
252
- return {
253
- success: false,
254
- windows: [],
255
- planType: null,
256
- lastUpdated: Date.now(),
427
+ return buildCodexFailureResult(accountId, {
257
428
  error,
258
- accountId,
259
- };
429
+ errorCode: 'auth_file_missing',
430
+ actionHint: 'Remove the stale account or authenticate again with ccs cliproxy auth codex.',
431
+ retryable: false,
432
+ });
260
433
  }
261
434
  if (authData.isExpired) {
262
435
  const error = 'Token expired - re-authenticate with ccs cliproxy auth codex';
263
436
  if (verbose)
264
437
  console.error(`[!] Error: ${error}`);
265
- return {
266
- success: false,
267
- windows: [],
268
- planType: null,
269
- lastUpdated: Date.now(),
438
+ return buildCodexFailureResult(accountId, {
270
439
  error,
271
- accountId,
440
+ errorCode: 'token_expired',
441
+ actionHint: 'Run ccs cliproxy auth codex to refresh the token for this account.',
272
442
  needsReauth: true,
273
- };
443
+ retryable: false,
444
+ });
274
445
  }
275
446
  if (!authData.accountId) {
276
447
  const error = 'Missing ChatGPT-Account-Id in auth file';
277
448
  if (verbose)
278
449
  console.error(`[!] Error: ${error}`);
279
- return {
280
- success: false,
281
- windows: [],
282
- planType: null,
283
- lastUpdated: Date.now(),
450
+ return buildCodexFailureResult(accountId, {
284
451
  error,
285
- accountId,
286
- };
452
+ errorCode: 'missing_account_id',
453
+ actionHint: 'Remove and re-add this Codex account to refresh workspace metadata.',
454
+ retryable: false,
455
+ });
287
456
  }
288
457
  const url = `${CODEX_API_BASE}/wham/usage`;
289
458
  let lastErrorMsg = 'Unknown error';
@@ -303,49 +472,9 @@ async function fetchCodexQuota(accountId, verbose = false) {
303
472
  clearTimeout(timeoutId);
304
473
  if (verbose)
305
474
  console.error(`[i] Codex API status: ${response.status} (attempt ${attempt})`);
306
- if (response.status === 401) {
307
- return {
308
- success: false,
309
- windows: [],
310
- planType: null,
311
- lastUpdated: Date.now(),
312
- error: 'Token expired or invalid',
313
- accountId,
314
- needsReauth: true,
315
- };
316
- }
317
- if (response.status === 403) {
318
- // 403 = account lacks API access (not same as quota exhausted)
319
- // Keep success=false with isForbidden flag for UI to show distinct "403" badge
320
- return {
321
- success: false,
322
- windows: [],
323
- planType: null,
324
- lastUpdated: Date.now(),
325
- error: '403 Forbidden - No quota API access',
326
- accountId,
327
- isForbidden: true,
328
- };
329
- }
330
- if (response.status === 429) {
331
- return {
332
- success: false,
333
- windows: [],
334
- planType: null,
335
- lastUpdated: Date.now(),
336
- error: 'Rate limited - try again later',
337
- accountId,
338
- };
339
- }
340
475
  if (!response.ok) {
341
- return {
342
- success: false,
343
- windows: [],
344
- planType: null,
345
- lastUpdated: Date.now(),
346
- error: `API error: ${response.status}`,
347
- accountId,
348
- };
476
+ const bodyText = await response.text();
477
+ return buildCodexHttpFailureResult(accountId, response.status, bodyText);
349
478
  }
350
479
  const data = (await response.json());
351
480
  const windows = buildCodexQuotaWindows(data);
@@ -400,6 +529,11 @@ async function fetchCodexQuota(accountId, verbose = false) {
400
529
  lastUpdated: Date.now(),
401
530
  error: lastErrorMsg,
402
531
  accountId,
532
+ errorCode: isAbortError ? 'network_timeout' : 'network_error',
533
+ actionHint: isAbortError
534
+ ? 'Retry later. The Codex quota endpoint timed out.'
535
+ : 'Retry later or inspect network connectivity.',
536
+ retryable: true,
403
537
  };
404
538
  }
405
539
  }
@@ -410,6 +544,8 @@ async function fetchCodexQuota(accountId, verbose = false) {
410
544
  lastUpdated: Date.now(),
411
545
  error: lastErrorMsg,
412
546
  accountId,
547
+ errorCode: 'unknown_error',
548
+ retryable: true,
413
549
  };
414
550
  }
415
551
  exports.fetchCodexQuota = fetchCodexQuota;