@kaitranntt/ccs 7.13.1-dev.3 → 7.13.1-dev.5
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/README.md +8 -0
- package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
- package/dist/cliproxy/binary/lifecycle.js +47 -6
- package/dist/cliproxy/binary/lifecycle.js.map +1 -1
- package/dist/cliproxy/binary/types.d.ts +13 -0
- package/dist/cliproxy/binary/types.d.ts.map +1 -1
- package/dist/cliproxy/binary/types.js +3 -1
- package/dist/cliproxy/binary/types.js.map +1 -1
- package/dist/cliproxy/binary/version-cache.d.ts +13 -1
- package/dist/cliproxy/binary/version-cache.d.ts.map +1 -1
- package/dist/cliproxy/binary/version-cache.js +46 -1
- package/dist/cliproxy/binary/version-cache.js.map +1 -1
- package/dist/cliproxy/binary/version-checker.d.ts +6 -1
- package/dist/cliproxy/binary/version-checker.d.ts.map +1 -1
- package/dist/cliproxy/binary/version-checker.js +37 -1
- package/dist/cliproxy/binary/version-checker.js.map +1 -1
- package/dist/cliproxy/binary-manager.d.ts +3 -0
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +36 -1
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +28 -0
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/cliproxy/platform-detector.d.ts +6 -0
- package/dist/cliproxy/platform-detector.d.ts.map +1 -1
- package/dist/cliproxy/platform-detector.js +7 -1
- package/dist/cliproxy/platform-detector.js.map +1 -1
- package/dist/cliproxy/quota-fetcher.d.ts +44 -0
- package/dist/cliproxy/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher.js +91 -1
- package/dist/cliproxy/quota-fetcher.js.map +1 -1
- package/dist/commands/cliproxy-command.d.ts.map +1 -1
- package/dist/commands/cliproxy-command.js +93 -0
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +1 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/ui/assets/{accounts-DKm_BUkJ.js → accounts-wkvC_Z1E.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BBbNIyvF.js → alert-dialog--nlDi-Dj.js} +1 -1
- package/dist/ui/assets/{api-p6k8BwWO.js → api-DeyefOLW.js} +1 -1
- package/dist/ui/assets/auth-section-BQXfw1cb.js +1 -0
- package/dist/ui/assets/{card-D6fGkasO.js → card-P5vPGo2D.js} +1 -1
- package/dist/ui/assets/cliproxy-CcMLaKpF.js +3 -0
- package/dist/ui/assets/{cliproxy-control-panel-D7gdCCO7.js → cliproxy-control-panel-Dbs8NAQa.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-D55Qga4b.js → confirm-dialog-BM75Bkww.js} +1 -1
- package/dist/ui/assets/{copilot-fwj1xk6l.js → copilot-BwylIlO5.js} +3 -3
- package/dist/ui/assets/{globalenv-section-DMSdqrn_.js → globalenv-section-Cgpz_NQ0.js} +1 -1
- package/dist/ui/assets/{health-65nETbIF.js → health-DWUjYWDI.js} +1 -1
- package/dist/ui/assets/icons-U9n5DGj9.js +1 -0
- package/dist/ui/assets/index-1g-Hy9VA.css +1 -0
- package/dist/ui/assets/{index-Dc8X9bLV.js → index-4Wd5fx72.js} +1 -1
- package/dist/ui/assets/{index-BrijlHVl.js → index-CIWe-99u.js} +1 -1
- package/dist/ui/assets/{index-8HAJX3-Y.js → index-D8MFq-UJ.js} +17 -17
- package/dist/ui/assets/{index-CwDi6WPm.js → index-f_AuSs01.js} +1 -1
- package/dist/ui/assets/{radix-ui-uXQB-q0u.js → radix-ui-CBgg0XeO.js} +1 -1
- package/dist/ui/assets/{shared-CMWj9K3T.js → shared-I-pAdvVQ.js} +1 -1
- package/dist/ui/assets/{switch-D_o-N1Sa.js → switch-DHwS-NMF.js} +1 -1
- package/dist/ui/assets/{tanstack-Coed0rqz.js → tanstack-CxYN0q6L.js} +1 -1
- package/dist/ui/index.html +5 -5
- package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -1
- package/dist/web-server/health/cliproxy-checks.js +14 -0
- package/dist/web-server/health/cliproxy-checks.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +88 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/auth-section-B4wvcy8z.js +0 -1
- package/dist/ui/assets/cliproxy-DuWY_mzK.js +0 -3
- package/dist/ui/assets/icons-CwFZAiDB.js +0 -1
- package/dist/ui/assets/index-oS2cgEFl.css +0 -1
package/README.md
CHANGED
|
@@ -187,6 +187,14 @@ ccs sync
|
|
|
187
187
|
|
|
188
188
|
Re-creates symlinks for shared commands, skills, and settings.
|
|
189
189
|
|
|
190
|
+
### Antigravity Quota Management
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
ccs cliproxy doctor # Check quota status for all agy accounts
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Auto-Failover**: When an Antigravity account runs out of quota, CCS automatically switches to another account with remaining capacity. Shared GCP project accounts are excluded (pooled quota).
|
|
197
|
+
|
|
190
198
|
<br>
|
|
191
199
|
|
|
192
200
|
## Configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AA+E/C;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C/E"}
|
|
@@ -34,18 +34,55 @@ const installer_1 = require("./installer");
|
|
|
34
34
|
const ui_1 = require("../../utils/ui");
|
|
35
35
|
const stats_fetcher_1 = require("../stats-fetcher");
|
|
36
36
|
const config_generator_1 = require("../config-generator");
|
|
37
|
+
const platform_detector_1 = require("../platform-detector");
|
|
37
38
|
/** Log helper */
|
|
38
39
|
function log(message, verbose) {
|
|
39
40
|
if (verbose)
|
|
40
41
|
console.error(`[cliproxy] ${message}`);
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if version is above max stable (known unstable)
|
|
45
|
+
*/
|
|
46
|
+
function isAboveMaxStable(version) {
|
|
47
|
+
return (0, version_checker_1.isNewerVersion)(version, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Clamp version to max stable if newer versions are unstable
|
|
51
|
+
* Returns max stable version if input is empty/invalid
|
|
52
|
+
*/
|
|
53
|
+
function clampToMaxStable(version, verbose) {
|
|
54
|
+
if (!version) {
|
|
55
|
+
log(`Empty version, using max stable ${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`, verbose);
|
|
56
|
+
return platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
|
|
57
|
+
}
|
|
58
|
+
if (isAboveMaxStable(version)) {
|
|
59
|
+
log(`Clamping ${version} to max stable ${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`, verbose);
|
|
60
|
+
return platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
|
|
61
|
+
}
|
|
62
|
+
return version;
|
|
63
|
+
}
|
|
42
64
|
/** Handle auto-update when binary exists */
|
|
43
65
|
async function handleAutoUpdate(config, verbose) {
|
|
44
66
|
const updateResult = await (0, version_checker_1.checkForUpdates)(config.binPath, config.version, verbose);
|
|
67
|
+
const currentVersion = updateResult.currentVersion;
|
|
68
|
+
const latestVersion = updateResult.latestVersion;
|
|
69
|
+
// Check if user is on known unstable version - inform but don't force downgrade
|
|
70
|
+
if (isAboveMaxStable(currentVersion)) {
|
|
71
|
+
console.log((0, ui_1.warn)(`CLIProxy Plus v${currentVersion} has known stability issues. ` +
|
|
72
|
+
`Stable version: v${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`));
|
|
73
|
+
console.log((0, ui_1.info)('Run "ccs cliproxy install 80" to downgrade, or wait for upstream fix'));
|
|
74
|
+
}
|
|
45
75
|
if (!updateResult.hasUpdate)
|
|
46
76
|
return;
|
|
77
|
+
// Clamp to max stable version
|
|
78
|
+
const targetVersion = clampToMaxStable(latestVersion, verbose);
|
|
79
|
+
if (!(0, version_checker_1.isNewerVersion)(targetVersion, currentVersion)) {
|
|
80
|
+
log(`Already at max stable version ${currentVersion}`, verbose);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
47
83
|
const proxyRunning = await (0, stats_fetcher_1.isCliproxyRunning)(config_generator_1.CLIPROXY_DEFAULT_PORT);
|
|
48
|
-
const
|
|
84
|
+
const latestNote = isAboveMaxStable(latestVersion) ? ` (latest v${latestVersion} unstable)` : '';
|
|
85
|
+
const updateMsg = `CLIProxy Plus update: v${currentVersion} -> v${targetVersion}${latestNote}`;
|
|
49
86
|
if (proxyRunning) {
|
|
50
87
|
console.log((0, ui_1.info)(updateMsg));
|
|
51
88
|
console.log((0, ui_1.info)('Run "ccs cliproxy stop" then restart to apply update'));
|
|
@@ -55,7 +92,7 @@ async function handleAutoUpdate(config, verbose) {
|
|
|
55
92
|
console.log((0, ui_1.info)(updateMsg));
|
|
56
93
|
console.log((0, ui_1.info)('Updating CLIProxy Plus...'));
|
|
57
94
|
(0, installer_1.deleteBinary)(config.binPath, verbose);
|
|
58
|
-
config.version =
|
|
95
|
+
config.version = targetVersion;
|
|
59
96
|
await (0, installer_1.downloadAndInstall)(config, verbose);
|
|
60
97
|
}
|
|
61
98
|
}
|
|
@@ -87,13 +124,17 @@ async function ensureBinary(config) {
|
|
|
87
124
|
if (!config.forceVersion) {
|
|
88
125
|
try {
|
|
89
126
|
const latestVersion = await (0, version_checker_1.fetchLatestVersion)(verbose);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
config.version
|
|
127
|
+
const targetVersion = clampToMaxStable(latestVersion, verbose);
|
|
128
|
+
if (targetVersion && (0, version_checker_1.isNewerVersion)(targetVersion, config.version)) {
|
|
129
|
+
log(`Using version: ${targetVersion} (instead of ${config.version})`, verbose);
|
|
130
|
+
config.version = targetVersion;
|
|
93
131
|
}
|
|
94
132
|
}
|
|
95
133
|
catch {
|
|
96
|
-
|
|
134
|
+
// API failed - use fallback but still clamp to max stable
|
|
135
|
+
const fallbackVersion = clampToMaxStable(config.version, verbose);
|
|
136
|
+
config.version = fallbackVersion;
|
|
137
|
+
log(`Using fallback version: ${fallbackVersion}`, verbose);
|
|
97
138
|
}
|
|
98
139
|
}
|
|
99
140
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,uDAAwF;AACxF,2CAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,4 +21,17 @@ export declare const VERSION_CACHE_DURATION_MS: number;
|
|
|
21
21
|
export declare const VERSION_PIN_FILE = ".version-pin";
|
|
22
22
|
/** GitHub API URL for latest release (CLIProxyAPIPlus fork with Kiro + Copilot support) */
|
|
23
23
|
export declare const GITHUB_API_LATEST_RELEASE = "https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases/latest";
|
|
24
|
+
/** GitHub API URL for all releases */
|
|
25
|
+
export declare const GITHUB_API_ALL_RELEASES = "https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases";
|
|
26
|
+
/** Version list cache structure */
|
|
27
|
+
export interface VersionListCache {
|
|
28
|
+
versions: string[];
|
|
29
|
+
latestStable: string;
|
|
30
|
+
latest: string;
|
|
31
|
+
checkedAt: number;
|
|
32
|
+
}
|
|
33
|
+
/** Version list result from API */
|
|
34
|
+
export interface VersionListResult extends VersionListCache {
|
|
35
|
+
fromCache: boolean;
|
|
36
|
+
}
|
|
24
37
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,+EACwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,+EACwC,CAAC;AAE/E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,wEACmC,CAAC;AAExE,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
* Types specific to binary management operations.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.GITHUB_API_LATEST_RELEASE = exports.VERSION_PIN_FILE = exports.VERSION_CACHE_DURATION_MS = void 0;
|
|
7
|
+
exports.GITHUB_API_ALL_RELEASES = exports.GITHUB_API_LATEST_RELEASE = exports.VERSION_PIN_FILE = exports.VERSION_CACHE_DURATION_MS = void 0;
|
|
8
8
|
/** Cache duration for version check (1 hour in milliseconds) */
|
|
9
9
|
exports.VERSION_CACHE_DURATION_MS = 60 * 60 * 1000;
|
|
10
10
|
/** Version pin file name - stores user's explicit version choice */
|
|
11
11
|
exports.VERSION_PIN_FILE = '.version-pin';
|
|
12
12
|
/** GitHub API URL for latest release (CLIProxyAPIPlus fork with Kiro + Copilot support) */
|
|
13
13
|
exports.GITHUB_API_LATEST_RELEASE = 'https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases/latest';
|
|
14
|
+
/** GitHub API URL for all releases */
|
|
15
|
+
exports.GITHUB_API_ALL_RELEASES = 'https://api.github.com/repos/router-for-me/CLIProxyAPIPlus/releases';
|
|
14
16
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiBH,gEAAgE;AACnD,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,oEAAoE;AACvD,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C,2FAA2F;AAC9E,QAAA,yBAAyB,GACpC,4EAA4E,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiBH,gEAAgE;AACnD,QAAA,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,oEAAoE;AACvD,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C,2FAA2F;AAC9E,QAAA,yBAAyB,GACpC,4EAA4E,CAAC;AAE/E,sCAAsC;AACzB,QAAA,uBAAuB,GAClC,qEAAqE,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Version Cache Manager
|
|
3
3
|
* Handles reading/writing version cache to avoid excessive GitHub API calls.
|
|
4
4
|
*/
|
|
5
|
-
import { VersionCache } from './types';
|
|
5
|
+
import { VersionCache, VersionListCache } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Get path to version cache file
|
|
8
8
|
*/
|
|
@@ -43,4 +43,16 @@ export declare function clearPinnedVersion(): void;
|
|
|
43
43
|
* Check if a version is currently pinned
|
|
44
44
|
*/
|
|
45
45
|
export declare function isVersionPinned(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Get path to version list cache file
|
|
48
|
+
*/
|
|
49
|
+
export declare function getVersionListCachePath(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Read version list cache if still valid
|
|
52
|
+
*/
|
|
53
|
+
export declare function readVersionListCache(): VersionListCache | null;
|
|
54
|
+
/**
|
|
55
|
+
* Write version list to cache
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeVersionListCache(cache: VersionListCache): void;
|
|
46
58
|
//# sourceMappingURL=version-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-cache.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,
|
|
1
|
+
{"version":3,"file":"version-cache.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,YAAY,EAGZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAoBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAavD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAO5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,GAAG,IAAI,CAmB9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CASnE"}
|
|
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
27
|
return result;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.writeInstalledVersion = exports.readInstalledVersion = exports.writeVersionCache = exports.readVersionCache = exports.getVersionPinPath = exports.getVersionCachePath = void 0;
|
|
30
|
+
exports.writeVersionListCache = exports.readVersionListCache = exports.getVersionListCachePath = exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.writeInstalledVersion = exports.readInstalledVersion = exports.writeVersionCache = exports.readVersionCache = exports.getVersionPinPath = exports.getVersionCachePath = void 0;
|
|
31
31
|
const fs = __importStar(require("fs"));
|
|
32
32
|
const path = __importStar(require("path"));
|
|
33
33
|
const config_generator_1 = require("../config-generator");
|
|
@@ -168,4 +168,49 @@ function isVersionPinned() {
|
|
|
168
168
|
return getPinnedVersion() !== null;
|
|
169
169
|
}
|
|
170
170
|
exports.isVersionPinned = isVersionPinned;
|
|
171
|
+
// ==================== Version List Cache ====================
|
|
172
|
+
const VERSION_LIST_CACHE_FILE = '.version-list-cache.json';
|
|
173
|
+
/**
|
|
174
|
+
* Get path to version list cache file
|
|
175
|
+
*/
|
|
176
|
+
function getVersionListCachePath() {
|
|
177
|
+
return path.join((0, config_generator_1.getCliproxyDir)(), VERSION_LIST_CACHE_FILE);
|
|
178
|
+
}
|
|
179
|
+
exports.getVersionListCachePath = getVersionListCachePath;
|
|
180
|
+
/**
|
|
181
|
+
* Read version list cache if still valid
|
|
182
|
+
*/
|
|
183
|
+
function readVersionListCache() {
|
|
184
|
+
const cachePath = getVersionListCachePath();
|
|
185
|
+
if (!fs.existsSync(cachePath)) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const content = fs.readFileSync(cachePath, 'utf8');
|
|
190
|
+
const cache = JSON.parse(content);
|
|
191
|
+
// Check if cache is still valid (1 hour)
|
|
192
|
+
if (Date.now() - cache.checkedAt < types_1.VERSION_CACHE_DURATION_MS) {
|
|
193
|
+
return cache;
|
|
194
|
+
}
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.readVersionListCache = readVersionListCache;
|
|
202
|
+
/**
|
|
203
|
+
* Write version list to cache
|
|
204
|
+
*/
|
|
205
|
+
function writeVersionListCache(cache) {
|
|
206
|
+
const cachePath = getVersionListCachePath();
|
|
207
|
+
try {
|
|
208
|
+
fs.mkdirSync(path.dirname(cachePath), { recursive: true });
|
|
209
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache), 'utf8');
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Silent fail - caching is optional
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.writeVersionListCache = writeVersionListCache;
|
|
171
216
|
//# sourceMappingURL=version-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,0DAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"version-cache.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Version Checker
|
|
3
3
|
* Handles checking GitHub API for latest version and comparing semver.
|
|
4
4
|
*/
|
|
5
|
-
import { UpdateCheckResult } from './types';
|
|
5
|
+
import { UpdateCheckResult, VersionListResult } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Compare semver versions (true if latest > current)
|
|
8
8
|
* Handles CLIProxyAPIPlus versioning: strips -0 suffix before comparison
|
|
@@ -17,4 +17,9 @@ export declare function fetchLatestVersion(verbose?: boolean): Promise<string>;
|
|
|
17
17
|
* Uses cache to avoid hitting GitHub API on every run
|
|
18
18
|
*/
|
|
19
19
|
export declare function checkForUpdates(binPath: string, configVersion: string, verbose?: boolean): Promise<UpdateCheckResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch all available versions from GitHub releases
|
|
22
|
+
* Caches result for 1 hour to avoid rate limiting
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchAllVersions(verbose?: boolean): Promise<VersionListResult>;
|
|
20
25
|
//# sourceMappingURL=version-checker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EACL,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,CAAC,CA8B5B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoClF"}
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* Handles checking GitHub API for latest version and comparing semver.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.checkForUpdates = exports.fetchLatestVersion = exports.isNewerVersion = void 0;
|
|
7
|
+
exports.fetchAllVersions = exports.checkForUpdates = exports.fetchLatestVersion = exports.isNewerVersion = void 0;
|
|
8
8
|
const downloader_1 = require("./downloader");
|
|
9
9
|
const version_cache_1 = require("./version-cache");
|
|
10
10
|
const types_1 = require("./types");
|
|
11
|
+
const platform_detector_1 = require("../platform-detector");
|
|
11
12
|
/**
|
|
12
13
|
* Compare semver versions (true if latest > current)
|
|
13
14
|
* Handles CLIProxyAPIPlus versioning: strips -0 suffix before comparison
|
|
@@ -78,4 +79,39 @@ async function checkForUpdates(binPath, configVersion, verbose = false) {
|
|
|
78
79
|
};
|
|
79
80
|
}
|
|
80
81
|
exports.checkForUpdates = checkForUpdates;
|
|
82
|
+
/**
|
|
83
|
+
* Fetch all available versions from GitHub releases
|
|
84
|
+
* Caches result for 1 hour to avoid rate limiting
|
|
85
|
+
*/
|
|
86
|
+
async function fetchAllVersions(verbose = false) {
|
|
87
|
+
// Try cache first
|
|
88
|
+
const cache = (0, version_cache_1.readVersionListCache)();
|
|
89
|
+
if (cache) {
|
|
90
|
+
if (verbose) {
|
|
91
|
+
console.error(`[cliproxy] Using cached version list (${cache.versions.length} versions)`);
|
|
92
|
+
}
|
|
93
|
+
return { ...cache, fromCache: true };
|
|
94
|
+
}
|
|
95
|
+
// Fetch from GitHub API
|
|
96
|
+
const response = await (0, downloader_1.fetchJson)(types_1.GITHUB_API_ALL_RELEASES, verbose);
|
|
97
|
+
// Extract and normalize versions
|
|
98
|
+
const releases = response;
|
|
99
|
+
const versions = releases
|
|
100
|
+
.map((r) => r.tag_name.replace(/^v/, ''))
|
|
101
|
+
.filter((v) => /^\d+\.\d+\.\d+(-\d+)?$/.test(v)); // Valid semver only
|
|
102
|
+
const latest = versions[0] || '';
|
|
103
|
+
// Find latest stable (not newer than max stable)
|
|
104
|
+
const latestStable = versions.find((v) => !isNewerVersion(v, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION)) ||
|
|
105
|
+
platform_detector_1.CLIPROXY_MAX_STABLE_VERSION;
|
|
106
|
+
const result = {
|
|
107
|
+
versions,
|
|
108
|
+
latestStable,
|
|
109
|
+
latest,
|
|
110
|
+
fromCache: false,
|
|
111
|
+
checkedAt: Date.now(),
|
|
112
|
+
};
|
|
113
|
+
(0, version_cache_1.writeVersionListCache)(result);
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
exports.fetchAllVersions = fetchAllVersions;
|
|
81
117
|
//# sourceMappingURL=version-checker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/version-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,9 @@ export interface CliproxyUpdateCheckResult {
|
|
|
44
44
|
latestVersion: string;
|
|
45
45
|
fromCache: boolean;
|
|
46
46
|
checkedAt: number;
|
|
47
|
+
isStable: boolean;
|
|
48
|
+
maxStableVersion: string;
|
|
49
|
+
stabilityMessage?: string;
|
|
47
50
|
}
|
|
48
51
|
/** Check for CLIProxyAPI binary updates */
|
|
49
52
|
export declare function checkCliproxyUpdate(): Promise<CliproxyUpdateCheckResult>;
|
|
@@ -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;AAI1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAYlB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAInD,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,CAW3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5F;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlE;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;
|
|
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;AAI1D,OAAO,EACL,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAYlB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD,2EAA2E;IACrE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,2EAA2E;IACrE,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAInD,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,CAW3E;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,2DAA2D;AAC3D,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,gDAAgD;AAChD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B5F;AAED,2DAA2D;AAC3D,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlE;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,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,2CAA2C;AAC3C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAgB9E;AAGD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -5,6 +5,29 @@
|
|
|
5
5
|
* Facade pattern wrapper for modular binary management.
|
|
6
6
|
* Pattern: Mirrors npm install behavior (fast check, download only when needed)
|
|
7
7
|
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
8
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
32
|
exports.isVersionPinned = exports.clearPinnedVersion = exports.savePinnedVersion = exports.getPinnedVersion = exports.getVersionPinPath = exports.checkCliproxyUpdate = exports.fetchLatestCliproxyVersion = exports.installCliproxyVersion = exports.getInstalledCliproxyVersion = exports.getCLIProxyPath = exports.isCLIProxyInstalled = exports.ensureCLIProxyBinary = exports.BinaryManager = void 0;
|
|
10
33
|
const ui_1 = require("../utils/ui");
|
|
@@ -128,7 +151,19 @@ async function fetchLatestCliproxyVersion() {
|
|
|
128
151
|
exports.fetchLatestCliproxyVersion = fetchLatestCliproxyVersion;
|
|
129
152
|
/** Check for CLIProxyAPI binary updates */
|
|
130
153
|
async function checkCliproxyUpdate() {
|
|
131
|
-
|
|
154
|
+
const result = await new BinaryManager().checkForUpdates();
|
|
155
|
+
// Import isNewerVersion for stability check
|
|
156
|
+
const { isNewerVersion } = await Promise.resolve().then(() => __importStar(require('./binary/version-checker')));
|
|
157
|
+
const isStable = !isNewerVersion(result.currentVersion, platform_detector_1.CLIPROXY_MAX_STABLE_VERSION);
|
|
158
|
+
const stabilityMessage = isStable
|
|
159
|
+
? undefined
|
|
160
|
+
: `v${result.currentVersion} has known stability issues. Max stable: v${platform_detector_1.CLIPROXY_MAX_STABLE_VERSION}`;
|
|
161
|
+
return {
|
|
162
|
+
...result,
|
|
163
|
+
isStable,
|
|
164
|
+
maxStableVersion: platform_detector_1.CLIPROXY_MAX_STABLE_VERSION,
|
|
165
|
+
stabilityMessage,
|
|
166
|
+
};
|
|
132
167
|
}
|
|
133
168
|
exports.checkCliproxyUpdate = checkCliproxyUpdate;
|
|
134
169
|
exports.default = BinaryManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-manager.js","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
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":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA+E3D;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,OAAO,CAAC,IAAI,CAAC,CAurBf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAepE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,GAAE,MAA8B,EACzC,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -57,6 +57,7 @@ const session_tracker_1 = require("./session-tracker");
|
|
|
57
57
|
const proxy_detector_1 = require("./proxy-detector");
|
|
58
58
|
const startup_lock_1 = require("./startup-lock");
|
|
59
59
|
const unified_config_loader_1 = require("../config/unified-config-loader");
|
|
60
|
+
const quota_fetcher_1 = require("./quota-fetcher");
|
|
60
61
|
/** Default executor configuration */
|
|
61
62
|
const DEFAULT_CONFIG = {
|
|
62
63
|
port: config_generator_1.CLIPROXY_DEFAULT_PORT,
|
|
@@ -415,6 +416,33 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
415
416
|
log('Token was refreshed proactively');
|
|
416
417
|
}
|
|
417
418
|
}
|
|
419
|
+
// 3b. Preflight quota check - auto-switch to account with quota before launch
|
|
420
|
+
// Only for agy (Antigravity) which has quota tracking
|
|
421
|
+
if (provider === 'agy') {
|
|
422
|
+
const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
423
|
+
if (defaultAccount) {
|
|
424
|
+
log(`Checking quota for ${defaultAccount.email || defaultAccount.id}`);
|
|
425
|
+
const quota = await (0, quota_fetcher_1.fetchAccountQuota)(provider, defaultAccount.id);
|
|
426
|
+
// Check if current account is exhausted (no model with >5% quota)
|
|
427
|
+
const hasQuota = quota.success && quota.models.some((m) => m.percentage > 5);
|
|
428
|
+
if (!hasQuota && quota.success) {
|
|
429
|
+
// Current account exhausted, try to find alternative
|
|
430
|
+
log('Current account quota exhausted, searching for alternatives...');
|
|
431
|
+
const alternative = await (0, quota_fetcher_1.findAvailableAccount)(provider, defaultAccount.id);
|
|
432
|
+
if (alternative) {
|
|
433
|
+
// Auto-switch to account with remaining quota
|
|
434
|
+
(0, account_manager_1.setDefaultAccount)(provider, alternative.account.id);
|
|
435
|
+
(0, account_manager_1.touchAccount)(provider, alternative.account.id);
|
|
436
|
+
console.log((0, ui_1.info)(`Auto-switched to ${alternative.account.email || alternative.account.id} (current account quota exhausted)`));
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
// No alternatives available - warn but continue
|
|
440
|
+
console.log((0, ui_1.warn)('All accounts appear quota-exhausted'));
|
|
441
|
+
console.log(` Run: ccs cliproxy doctor`);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
418
446
|
// 4. First-run model configuration (interactive)
|
|
419
447
|
// For supported providers, prompt user to select model on first run
|
|
420
448
|
// Pass customSettingsPath for CLIProxy variants
|