@kaitranntt/ccs 7.4.0 → 7.5.0-dev.1
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/api/services/provider-presets.js +3 -3
- package/dist/api/services/provider-presets.js.map +1 -1
- package/dist/cliproxy/binary/downloader.d.ts +18 -5
- package/dist/cliproxy/binary/downloader.d.ts.map +1 -1
- package/dist/cliproxy/binary/downloader.js +231 -42
- package/dist/cliproxy/binary/downloader.js.map +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +7 -5
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/cliproxy/proxy-detector.d.ts.map +1 -1
- package/dist/cliproxy/proxy-detector.js +13 -2
- package/dist/cliproxy/proxy-detector.js.map +1 -1
- package/dist/commands/api-command.js +1 -1
- package/dist/commands/api-command.js.map +1 -1
- package/dist/ui/assets/{accounts-Dh-YyrMr.js → accounts-CtHoujzN.js} +1 -1
- package/dist/ui/assets/{api-BD--YxEC.js → api-BgRcDdEY.js} +1 -1
- package/dist/ui/assets/{card-BNt5BoxV.js → card-B-B2DgVt.js} +1 -1
- package/dist/ui/assets/{cliproxy-BXPMccU3.js → cliproxy-DSIqB4Kc.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-6MX1omhU.js → cliproxy-control-panel-BQdbegqA.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-ByFWLgbj.js → confirm-dialog-cDuBPIIs.js} +1 -1
- package/dist/ui/assets/{copilot-CqEqznro.js → copilot-6gXCaKKj.js} +2 -2
- package/dist/ui/assets/{globalenv-section-Clm7KhAu.js → globalenv-section-CRSV4042.js} +1 -1
- package/dist/ui/assets/{health-D-af7vZZ.js → health-xBbBsgEt.js} +1 -1
- package/dist/ui/assets/{index-CH-ASapz.js → index-BlJMdTol.js} +1 -1
- package/dist/ui/assets/{index-BeD4Y42W.js → index-CzA8ALA7.js} +1 -1
- package/dist/ui/assets/{index-DMC5M6N6.js → index-DtFSv99a.js} +3 -3
- package/dist/ui/assets/{index-CUmWQu6j.js → index-_cwEsFjm.js} +1 -1
- package/dist/ui/assets/{shared-CcXAytUi.js → shared-DjYeuzbT.js} +1 -1
- package/dist/ui/assets/{switch-DWo2CKz6.js → switch-DrBe8HmQ.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/web-server/model-pricing.d.ts.map +1 -1
- package/dist/web-server/model-pricing.js +6 -0
- package/dist/web-server/model-pricing.js.map +1 -1
- package/package.json +1 -1
|
@@ -30,10 +30,10 @@ exports.PROVIDER_PRESETS = [
|
|
|
30
30
|
{
|
|
31
31
|
id: 'glm',
|
|
32
32
|
name: 'GLM',
|
|
33
|
-
description: 'Claude via Z.AI
|
|
33
|
+
description: 'Claude via Z.AI',
|
|
34
34
|
baseUrl: 'https://api.z.ai/api/anthropic',
|
|
35
35
|
defaultProfileName: 'glm',
|
|
36
|
-
defaultModel: 'glm-4.
|
|
36
|
+
defaultModel: 'glm-4.7',
|
|
37
37
|
apiKeyPlaceholder: 'ghp_...',
|
|
38
38
|
apiKeyHint: 'Get your API key from Z.AI',
|
|
39
39
|
category: 'alternative',
|
|
@@ -44,7 +44,7 @@ exports.PROVIDER_PRESETS = [
|
|
|
44
44
|
description: 'GLM with Thinking mode support',
|
|
45
45
|
baseUrl: 'https://api.z.ai/api/coding/paas/v4/chat/completions',
|
|
46
46
|
defaultProfileName: 'glmt',
|
|
47
|
-
defaultModel: 'glm-4.
|
|
47
|
+
defaultModel: 'glm-4.7',
|
|
48
48
|
apiKeyPlaceholder: 'ghp_...',
|
|
49
49
|
apiKeyHint: 'Same API key as GLM',
|
|
50
50
|
category: 'alternative',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-presets.js","sourceRoot":"","sources":["../../../src/api/services/provider-presets.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoBU,QAAA,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,gBAAgB,GAAqB;IAChD,cAAc;IACd;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,2BAAmB;QAC5B,kBAAkB,EAAE,YAAY;QAChC,YAAY,EAAE,2BAA2B;QACzC,iBAAiB,EAAE,WAAW;QAC9B,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,aAAa;KACxB;IACD,wBAAwB;IACxB;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-presets.js","sourceRoot":"","sources":["../../../src/api/services/provider-presets.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoBU,QAAA,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;;GAIG;AACU,QAAA,gBAAgB,GAAqB;IAChD,cAAc;IACd;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,2BAAmB;QAC5B,kBAAkB,EAAE,YAAY;QAChC,YAAY,EAAE,2BAA2B;QACzC,iBAAiB,EAAE,WAAW;QAC9B,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,aAAa;KACxB;IACD,wBAAwB;IACxB;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,gCAAgC;QACzC,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,4BAA4B;QACxC,QAAQ,EAAE,aAAa;KACxB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,sDAAsD;QAC/D,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,qBAAqB;QACjC,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;YACR,qBAAqB,EAAE,KAAK;YAC5B,oBAAoB,EAAE,OAAO;YAC7B,mBAAmB,EAAE,OAAO;YAC5B,gBAAgB,EAAE,MAAM;YACxB,mBAAmB,EAAE,OAAO;YAC5B,cAAc,EAAE,SAAS;SAC1B;QACD,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,8BAA8B;QACvC,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,wBAAwB;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,mCAAmC;QAC/C,QAAQ,EAAE,aAAa;QACvB,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,6DAA6D;QACtE,kBAAkB,EAAE,SAAS;QAC7B,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,oBAAoB;QACvC,UAAU,EAAE,4DAA4D;QACxE,QAAQ,EAAE,aAAa;KACxB;CACF,CAAC;AAEF,uBAAuB;AACvB,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAFD,sCAEC;AAED,yBAAyB;AACzB,SAAgB,YAAY;IAC1B,OAAO,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC;AAFD,oCAEC;AAED,kCAAkC;AAClC,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO,aAAa,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AACzC,CAAC;AAFD,0CAEC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Binary Downloader
|
|
3
3
|
* Handles downloading files with retry logic, progress tracking, and redirect following.
|
|
4
|
+
* Robust handling for transient network errors (socket hang up, ECONNRESET, etc.)
|
|
4
5
|
*/
|
|
5
6
|
import { DownloadResult, ProgressCallback } from '../types';
|
|
6
7
|
/** Default configuration for downloader */
|
|
@@ -9,21 +10,33 @@ export interface DownloaderConfig {
|
|
|
9
10
|
maxRetries: number;
|
|
10
11
|
/** Enable verbose logging */
|
|
11
12
|
verbose: boolean;
|
|
13
|
+
/** Timeout in milliseconds (default: 120000 for large files) */
|
|
14
|
+
timeout?: number;
|
|
12
15
|
}
|
|
16
|
+
/** Error types for categorized handling */
|
|
17
|
+
export type NetworkErrorType = 'socket' | 'timeout' | 'http' | 'redirect' | 'unknown';
|
|
18
|
+
/** Categorize error for appropriate retry/reporting */
|
|
19
|
+
export declare function categorizeError(error: Error): NetworkErrorType;
|
|
20
|
+
/** Get user-friendly error message */
|
|
21
|
+
export declare function getErrorMessage(error: Error, attempt: number, maxAttempts: number): string;
|
|
22
|
+
/** Check if error is retryable */
|
|
23
|
+
export declare function isRetryableError(error: Error): boolean;
|
|
13
24
|
/**
|
|
14
25
|
* Download file from URL with progress tracking
|
|
26
|
+
* @param timeout Timeout in ms (default 120000 for large files)
|
|
15
27
|
*/
|
|
16
|
-
export declare function downloadFile(url: string, destPath: string, onProgress?: ProgressCallback, verbose?: boolean): Promise<void>;
|
|
28
|
+
export declare function downloadFile(url: string, destPath: string, onProgress?: ProgressCallback, verbose?: boolean, timeout?: number): Promise<void>;
|
|
17
29
|
/**
|
|
18
30
|
* Download file with retry logic and exponential backoff
|
|
31
|
+
* Uses smarter backoff for socket errors (longer delays)
|
|
19
32
|
*/
|
|
20
33
|
export declare function downloadWithRetry(url: string, destPath: string, config?: Partial<DownloaderConfig>): Promise<DownloadResult>;
|
|
21
34
|
/**
|
|
22
|
-
* Fetch text content from URL
|
|
35
|
+
* Fetch text content from URL with retry logic
|
|
23
36
|
*/
|
|
24
|
-
export declare function fetchText(url: string, verbose?: boolean): Promise<string>;
|
|
37
|
+
export declare function fetchText(url: string, verbose?: boolean, maxRetries?: number): Promise<string>;
|
|
25
38
|
/**
|
|
26
|
-
* Fetch JSON from URL (for GitHub API)
|
|
39
|
+
* Fetch JSON from URL (for GitHub API) with retry logic
|
|
27
40
|
*/
|
|
28
|
-
export declare function fetchJson(url: string, verbose?: boolean): Promise<Record<string, unknown>>;
|
|
41
|
+
export declare function fetchJson(url: string, verbose?: boolean, maxRetries?: number): Promise<Record<string, unknown>>;
|
|
29
42
|
//# sourceMappingURL=downloader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/downloader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/downloader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5D,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtF,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,CAe9D;AAED,sCAAsC;AACtC,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB1F;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAYtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,UAAQ,EACf,OAAO,SAAS,GACf,OAAO,CAAC,IAAI,CAAC,CAuFf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,cAAc,CAAC,CAsDzB;AAmED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB7F;AAyED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,UAAQ,EACf,UAAU,SAAI,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuBlC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Binary Downloader
|
|
4
4
|
* Handles downloading files with retry logic, progress tracking, and redirect following.
|
|
5
|
+
* Robust handling for transient network errors (socket hang up, ECONNRESET, etc.)
|
|
5
6
|
*/
|
|
6
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -27,35 +28,98 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
28
|
return result;
|
|
28
29
|
};
|
|
29
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.fetchJson = exports.fetchText = exports.downloadWithRetry = exports.downloadFile = void 0;
|
|
31
|
+
exports.fetchJson = exports.fetchText = exports.downloadWithRetry = exports.downloadFile = exports.isRetryableError = exports.getErrorMessage = exports.categorizeError = void 0;
|
|
31
32
|
const fs = __importStar(require("fs"));
|
|
32
33
|
const https = __importStar(require("https"));
|
|
33
34
|
const http = __importStar(require("http"));
|
|
34
35
|
const DEFAULT_CONFIG = {
|
|
35
|
-
maxRetries:
|
|
36
|
+
maxRetries: 5,
|
|
36
37
|
verbose: false,
|
|
38
|
+
timeout: 120000, // 2 minutes for large binaries
|
|
37
39
|
};
|
|
40
|
+
/** Categorize error for appropriate retry/reporting */
|
|
41
|
+
function categorizeError(error) {
|
|
42
|
+
const msg = error.message.toLowerCase();
|
|
43
|
+
if (msg.includes('socket hang up') || msg.includes('econnreset') || msg.includes('epipe')) {
|
|
44
|
+
return 'socket';
|
|
45
|
+
}
|
|
46
|
+
if (msg.includes('timeout') || msg.includes('etimedout')) {
|
|
47
|
+
return 'timeout';
|
|
48
|
+
}
|
|
49
|
+
if (msg.includes('http ')) {
|
|
50
|
+
return 'http';
|
|
51
|
+
}
|
|
52
|
+
if (msg.includes('redirect')) {
|
|
53
|
+
return 'redirect';
|
|
54
|
+
}
|
|
55
|
+
return 'unknown';
|
|
56
|
+
}
|
|
57
|
+
exports.categorizeError = categorizeError;
|
|
58
|
+
/** Get user-friendly error message */
|
|
59
|
+
function getErrorMessage(error, attempt, maxAttempts) {
|
|
60
|
+
const type = categorizeError(error);
|
|
61
|
+
const prefix = `[Attempt ${attempt}/${maxAttempts}]`;
|
|
62
|
+
switch (type) {
|
|
63
|
+
case 'socket':
|
|
64
|
+
return `${prefix} Connection dropped (socket hang up) - retrying with fresh connection...`;
|
|
65
|
+
case 'timeout':
|
|
66
|
+
return `${prefix} Download timed out - retrying with extended timeout...`;
|
|
67
|
+
case 'http':
|
|
68
|
+
return `${prefix} Server error: ${error.message}`;
|
|
69
|
+
case 'redirect':
|
|
70
|
+
return `${prefix} Redirect failed: ${error.message}`;
|
|
71
|
+
default:
|
|
72
|
+
return `${prefix} Network error: ${error.message}`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.getErrorMessage = getErrorMessage;
|
|
76
|
+
/** Check if error is retryable */
|
|
77
|
+
function isRetryableError(error) {
|
|
78
|
+
const type = categorizeError(error);
|
|
79
|
+
// Retry socket errors, timeouts, and unknown errors
|
|
80
|
+
if (type === 'socket' || type === 'timeout' || type === 'unknown') {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (type === 'http') {
|
|
84
|
+
const msg = error.message;
|
|
85
|
+
// Retry 5xx server errors and 429 rate limit (HTTP 5xx matches 500, 502, 503, 504, etc.)
|
|
86
|
+
return msg.includes('HTTP 5') || msg.includes('HTTP 429');
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
exports.isRetryableError = isRetryableError;
|
|
38
91
|
/**
|
|
39
92
|
* Download file from URL with progress tracking
|
|
93
|
+
* @param timeout Timeout in ms (default 120000 for large files)
|
|
40
94
|
*/
|
|
41
|
-
function downloadFile(url, destPath, onProgress, verbose = false) {
|
|
95
|
+
function downloadFile(url, destPath, onProgress, verbose = false, timeout = 120000) {
|
|
42
96
|
return new Promise((resolve, reject) => {
|
|
97
|
+
let resolved = false;
|
|
98
|
+
const cleanup = (err) => {
|
|
99
|
+
if (resolved)
|
|
100
|
+
return;
|
|
101
|
+
resolved = true;
|
|
102
|
+
fs.unlink(destPath, () => { }); // Cleanup partial file
|
|
103
|
+
reject(err || new Error('Download aborted'));
|
|
104
|
+
};
|
|
43
105
|
const handleResponse = (res) => {
|
|
44
106
|
// Handle redirects (GitHub releases use 302)
|
|
45
107
|
if (res.statusCode === 301 || res.statusCode === 302) {
|
|
46
108
|
const redirectUrl = res.headers.location;
|
|
47
109
|
if (!redirectUrl) {
|
|
48
|
-
|
|
110
|
+
cleanup(new Error('Redirect without location header'));
|
|
49
111
|
return;
|
|
50
112
|
}
|
|
51
113
|
if (verbose) {
|
|
52
114
|
console.error(`[cliproxy] Following redirect: ${redirectUrl}`);
|
|
53
115
|
}
|
|
54
|
-
downloadFile(redirectUrl, destPath, onProgress, verbose)
|
|
116
|
+
downloadFile(redirectUrl, destPath, onProgress, verbose, timeout)
|
|
117
|
+
.then(resolve)
|
|
118
|
+
.catch(reject);
|
|
55
119
|
return;
|
|
56
120
|
}
|
|
57
121
|
if (res.statusCode !== 200) {
|
|
58
|
-
|
|
122
|
+
cleanup(new Error(`HTTP ${res.statusCode}: ${res.statusMessage}`));
|
|
59
123
|
return;
|
|
60
124
|
}
|
|
61
125
|
const totalBytes = parseInt(res.headers['content-length'] || '0', 10);
|
|
@@ -73,49 +137,83 @@ function downloadFile(url, destPath, onProgress, verbose = false) {
|
|
|
73
137
|
});
|
|
74
138
|
res.pipe(fileStream);
|
|
75
139
|
fileStream.on('finish', () => {
|
|
140
|
+
if (resolved)
|
|
141
|
+
return;
|
|
142
|
+
resolved = true;
|
|
76
143
|
fileStream.close();
|
|
77
144
|
resolve();
|
|
78
145
|
});
|
|
79
|
-
fileStream.on('error',
|
|
80
|
-
|
|
81
|
-
reject(err);
|
|
82
|
-
});
|
|
83
|
-
res.on('error', (err) => {
|
|
84
|
-
fs.unlink(destPath, () => { });
|
|
85
|
-
reject(err);
|
|
86
|
-
});
|
|
146
|
+
fileStream.on('error', cleanup);
|
|
147
|
+
res.on('error', cleanup);
|
|
87
148
|
};
|
|
88
149
|
const protocol = url.startsWith('https') ? https : http;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
150
|
+
// Use agent: false to prevent connection pooling (allows process to exit)
|
|
151
|
+
const options = {
|
|
152
|
+
headers: {
|
|
153
|
+
'User-Agent': 'CCS-CLIProxyPlus-Downloader/1.0',
|
|
154
|
+
},
|
|
155
|
+
agent: false, // Disable connection pooling for clean exit
|
|
156
|
+
};
|
|
157
|
+
const req = protocol.get(url, options, handleResponse);
|
|
158
|
+
req.on('error', (err) => {
|
|
159
|
+
if (!resolved) {
|
|
160
|
+
cleanup(err);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
req.setTimeout(timeout, () => {
|
|
92
164
|
req.destroy();
|
|
93
|
-
|
|
165
|
+
if (!resolved) {
|
|
166
|
+
cleanup(new Error(`Download timeout (${timeout / 1000}s)`));
|
|
167
|
+
}
|
|
94
168
|
});
|
|
95
169
|
});
|
|
96
170
|
}
|
|
97
171
|
exports.downloadFile = downloadFile;
|
|
98
172
|
/**
|
|
99
173
|
* Download file with retry logic and exponential backoff
|
|
174
|
+
* Uses smarter backoff for socket errors (longer delays)
|
|
100
175
|
*/
|
|
101
176
|
async function downloadWithRetry(url, destPath, config = {}) {
|
|
102
|
-
const { maxRetries, verbose } = { ...DEFAULT_CONFIG, ...config };
|
|
103
|
-
let lastError =
|
|
177
|
+
const { maxRetries, verbose, timeout } = { ...DEFAULT_CONFIG, ...config };
|
|
178
|
+
let lastError = null;
|
|
104
179
|
let retries = 0;
|
|
180
|
+
let currentTimeout = timeout || 120000;
|
|
105
181
|
while (retries < maxRetries) {
|
|
106
182
|
try {
|
|
107
|
-
await downloadFile(url, destPath, undefined, verbose);
|
|
183
|
+
await downloadFile(url, destPath, undefined, verbose, currentTimeout);
|
|
108
184
|
return { success: true, filePath: destPath, retries };
|
|
109
185
|
}
|
|
110
186
|
catch (error) {
|
|
111
187
|
const err = error;
|
|
112
|
-
lastError = err
|
|
188
|
+
lastError = err;
|
|
113
189
|
retries++;
|
|
190
|
+
// Check if error is retryable
|
|
191
|
+
if (!isRetryableError(err)) {
|
|
192
|
+
if (verbose) {
|
|
193
|
+
console.error(`[cliproxy] Non-retryable error: ${err.message}`);
|
|
194
|
+
}
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
114
197
|
if (retries < maxRetries) {
|
|
115
|
-
|
|
116
|
-
|
|
198
|
+
const errorType = categorizeError(err);
|
|
199
|
+
// Socket errors: longer backoff (2s, 4s, 8s, 16s, 32s)
|
|
200
|
+
// Timeout errors: increase timeout and use standard backoff
|
|
201
|
+
// Other errors: standard exponential backoff (1s, 2s, 4s...)
|
|
202
|
+
let delay;
|
|
203
|
+
if (errorType === 'socket') {
|
|
204
|
+
delay = Math.pow(2, retries) * 1000; // 2s, 4s, 8s, 16s, 32s
|
|
205
|
+
}
|
|
206
|
+
else if (errorType === 'timeout') {
|
|
207
|
+
delay = Math.pow(2, retries - 1) * 1000;
|
|
208
|
+
currentTimeout = Math.min(currentTimeout * 1.5, 300000); // Increase timeout up to 5 min
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
delay = Math.pow(2, retries - 1) * 1000;
|
|
212
|
+
}
|
|
213
|
+
// Log with user-friendly message
|
|
214
|
+
console.error(`[cliproxy] ${getErrorMessage(err, retries, maxRetries)}`);
|
|
117
215
|
if (verbose) {
|
|
118
|
-
console.error(`[cliproxy]
|
|
216
|
+
console.error(`[cliproxy] Waiting ${delay}ms before retry...`);
|
|
119
217
|
}
|
|
120
218
|
await sleep(delay);
|
|
121
219
|
}
|
|
@@ -123,16 +221,17 @@ async function downloadWithRetry(url, destPath, config = {}) {
|
|
|
123
221
|
}
|
|
124
222
|
return {
|
|
125
223
|
success: false,
|
|
126
|
-
error: `Download failed after ${retries} attempts: ${lastError}`,
|
|
224
|
+
error: `Download failed after ${retries} attempts: ${lastError?.message || 'Unknown error'}`,
|
|
127
225
|
retries,
|
|
128
226
|
};
|
|
129
227
|
}
|
|
130
228
|
exports.downloadWithRetry = downloadWithRetry;
|
|
131
229
|
/**
|
|
132
|
-
* Fetch text content from URL
|
|
230
|
+
* Fetch text content from URL (single attempt)
|
|
133
231
|
*/
|
|
134
|
-
function
|
|
232
|
+
function fetchTextOnce(url, verbose = false, timeout = 30000) {
|
|
135
233
|
return new Promise((resolve, reject) => {
|
|
234
|
+
let resolved = false;
|
|
136
235
|
const handleResponse = (res) => {
|
|
137
236
|
// Handle redirects
|
|
138
237
|
if (res.statusCode === 301 || res.statusCode === 302) {
|
|
@@ -141,7 +240,7 @@ function fetchText(url, verbose = false) {
|
|
|
141
240
|
reject(new Error('Redirect without location header'));
|
|
142
241
|
return;
|
|
143
242
|
}
|
|
144
|
-
|
|
243
|
+
fetchTextOnce(redirectUrl, verbose, timeout).then(resolve).catch(reject);
|
|
145
244
|
return;
|
|
146
245
|
}
|
|
147
246
|
if (res.statusCode !== 200) {
|
|
@@ -150,29 +249,79 @@ function fetchText(url, verbose = false) {
|
|
|
150
249
|
}
|
|
151
250
|
let data = '';
|
|
152
251
|
res.on('data', (chunk) => (data += chunk));
|
|
153
|
-
res.on('end', () =>
|
|
154
|
-
|
|
252
|
+
res.on('end', () => {
|
|
253
|
+
if (!resolved) {
|
|
254
|
+
resolved = true;
|
|
255
|
+
resolve(data);
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
res.on('error', (err) => {
|
|
259
|
+
if (!resolved) {
|
|
260
|
+
resolved = true;
|
|
261
|
+
reject(err);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
155
264
|
};
|
|
156
265
|
const protocol = url.startsWith('https') ? https : http;
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
266
|
+
const options = {
|
|
267
|
+
headers: {
|
|
268
|
+
'User-Agent': 'CCS-CLIProxyPlus-Downloader/1.0',
|
|
269
|
+
},
|
|
270
|
+
agent: false, // Disable connection pooling for clean exit
|
|
271
|
+
};
|
|
272
|
+
const req = protocol.get(url, options, handleResponse);
|
|
273
|
+
req.on('error', (err) => {
|
|
274
|
+
if (!resolved) {
|
|
275
|
+
resolved = true;
|
|
276
|
+
reject(err);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
req.setTimeout(timeout, () => {
|
|
160
280
|
req.destroy();
|
|
161
|
-
|
|
281
|
+
if (!resolved) {
|
|
282
|
+
resolved = true;
|
|
283
|
+
reject(new Error(`Request timeout (${timeout / 1000}s)`));
|
|
284
|
+
}
|
|
162
285
|
});
|
|
163
286
|
});
|
|
164
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* Fetch text content from URL with retry logic
|
|
290
|
+
*/
|
|
291
|
+
async function fetchText(url, verbose = false, maxRetries = 3) {
|
|
292
|
+
let lastError = null;
|
|
293
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
294
|
+
try {
|
|
295
|
+
return await fetchTextOnce(url, verbose);
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
const err = error;
|
|
299
|
+
lastError = err;
|
|
300
|
+
if (!isRetryableError(err) || attempt === maxRetries) {
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
const delay = Math.pow(2, attempt - 1) * 1000;
|
|
304
|
+
if (verbose) {
|
|
305
|
+
console.error(`[cliproxy] fetchText retry ${attempt}/${maxRetries}: ${err.message}`);
|
|
306
|
+
}
|
|
307
|
+
await sleep(delay);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
throw lastError || new Error('fetchText failed');
|
|
311
|
+
}
|
|
165
312
|
exports.fetchText = fetchText;
|
|
166
313
|
/**
|
|
167
|
-
* Fetch JSON from URL (for GitHub API)
|
|
314
|
+
* Fetch JSON from URL (single attempt, for GitHub API)
|
|
168
315
|
*/
|
|
169
|
-
function
|
|
316
|
+
function fetchJsonOnce(url, verbose = false, timeout = 15000) {
|
|
170
317
|
return new Promise((resolve, reject) => {
|
|
318
|
+
let resolved = false;
|
|
171
319
|
const options = {
|
|
172
320
|
headers: {
|
|
173
321
|
'User-Agent': 'CCS-CLIProxyPlus-Updater/1.0',
|
|
174
322
|
Accept: 'application/vnd.github.v3+json',
|
|
175
323
|
},
|
|
324
|
+
agent: false, // Disable connection pooling for clean exit
|
|
176
325
|
};
|
|
177
326
|
const handleResponse = (res) => {
|
|
178
327
|
if (res.statusCode === 301 || res.statusCode === 302) {
|
|
@@ -181,7 +330,7 @@ function fetchJson(url, verbose = false) {
|
|
|
181
330
|
reject(new Error('Redirect without location header'));
|
|
182
331
|
return;
|
|
183
332
|
}
|
|
184
|
-
|
|
333
|
+
fetchJsonOnce(redirectUrl, verbose, timeout).then(resolve).catch(reject);
|
|
185
334
|
return;
|
|
186
335
|
}
|
|
187
336
|
if (res.statusCode !== 200) {
|
|
@@ -191,6 +340,9 @@ function fetchJson(url, verbose = false) {
|
|
|
191
340
|
let data = '';
|
|
192
341
|
res.on('data', (chunk) => (data += chunk));
|
|
193
342
|
res.on('end', () => {
|
|
343
|
+
if (resolved)
|
|
344
|
+
return;
|
|
345
|
+
resolved = true;
|
|
194
346
|
try {
|
|
195
347
|
resolve(JSON.parse(data));
|
|
196
348
|
}
|
|
@@ -198,16 +350,53 @@ function fetchJson(url, verbose = false) {
|
|
|
198
350
|
reject(new Error('Invalid JSON from GitHub API'));
|
|
199
351
|
}
|
|
200
352
|
});
|
|
201
|
-
res.on('error',
|
|
353
|
+
res.on('error', (err) => {
|
|
354
|
+
if (!resolved) {
|
|
355
|
+
resolved = true;
|
|
356
|
+
reject(err);
|
|
357
|
+
}
|
|
358
|
+
});
|
|
202
359
|
};
|
|
203
360
|
const req = https.get(url, options, handleResponse);
|
|
204
|
-
req.on('error',
|
|
205
|
-
|
|
361
|
+
req.on('error', (err) => {
|
|
362
|
+
if (!resolved) {
|
|
363
|
+
resolved = true;
|
|
364
|
+
reject(err);
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
req.setTimeout(timeout, () => {
|
|
206
368
|
req.destroy();
|
|
207
|
-
|
|
369
|
+
if (!resolved) {
|
|
370
|
+
resolved = true;
|
|
371
|
+
reject(new Error(`GitHub API timeout (${timeout / 1000}s)`));
|
|
372
|
+
}
|
|
208
373
|
});
|
|
209
374
|
});
|
|
210
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Fetch JSON from URL (for GitHub API) with retry logic
|
|
378
|
+
*/
|
|
379
|
+
async function fetchJson(url, verbose = false, maxRetries = 3) {
|
|
380
|
+
let lastError = null;
|
|
381
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
382
|
+
try {
|
|
383
|
+
return await fetchJsonOnce(url, verbose);
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
const err = error;
|
|
387
|
+
lastError = err;
|
|
388
|
+
if (!isRetryableError(err) || attempt === maxRetries) {
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
const delay = Math.pow(2, attempt - 1) * 1000;
|
|
392
|
+
if (verbose) {
|
|
393
|
+
console.error(`[cliproxy] GitHub API retry ${attempt}/${maxRetries}: ${err.message}`);
|
|
394
|
+
}
|
|
395
|
+
await sleep(delay);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
throw lastError || new Error('fetchJson failed');
|
|
399
|
+
}
|
|
211
400
|
exports.fetchJson = fetchJson;
|
|
212
401
|
/**
|
|
213
402
|
* Sleep helper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloader.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/downloader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"downloader.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/downloader.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;AAmBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAyE3D;;;;;;;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,
|
|
1
|
+
{"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAyE3D;;;;;;;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,CAqiBf;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"}
|
|
@@ -380,14 +380,16 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
380
380
|
if (proxyStatus.running && proxyStatus.verified) {
|
|
381
381
|
// Healthy proxy found - join it
|
|
382
382
|
if (proxyStatus.pid) {
|
|
383
|
-
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid) ?? undefined;
|
|
383
|
+
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid, verbose) ?? undefined;
|
|
384
384
|
}
|
|
385
385
|
if (sessionId) {
|
|
386
386
|
console.log((0, ui_1.info)(`Joined existing CLIProxy on port ${cfg.port} (${proxyStatus.method})`));
|
|
387
387
|
}
|
|
388
388
|
else {
|
|
389
|
-
// Failed to register session
|
|
390
|
-
|
|
389
|
+
// Failed to register session - proxy is running but we can't track it
|
|
390
|
+
// This happens when port-process detection fails (permissions, platform issues)
|
|
391
|
+
console.log((0, ui_1.info)(`Using existing CLIProxy on port ${cfg.port} (session tracking unavailable)`));
|
|
392
|
+
log(`PID=${proxyStatus.pid ?? 'unknown'}, session registration skipped`);
|
|
391
393
|
}
|
|
392
394
|
return; // Exit lock early, skip spawning
|
|
393
395
|
}
|
|
@@ -397,7 +399,7 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
397
399
|
const becameHealthy = await (0, proxy_detector_1.waitForProxyHealthy)(cfg.port, cfg.timeout);
|
|
398
400
|
if (becameHealthy) {
|
|
399
401
|
if (proxyStatus.pid) {
|
|
400
|
-
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid) ?? undefined;
|
|
402
|
+
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid, verbose) ?? undefined;
|
|
401
403
|
}
|
|
402
404
|
console.log((0, ui_1.info)(`Joined CLIProxy after startup wait`));
|
|
403
405
|
return; // Exit lock early
|
|
@@ -414,7 +416,7 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
414
416
|
// Last resort: try HTTP health check (handles Windows PID-XXXXX case)
|
|
415
417
|
const isActuallyOurs = await (0, proxy_detector_1.waitForProxyHealthy)(cfg.port, 1000);
|
|
416
418
|
if (isActuallyOurs) {
|
|
417
|
-
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.blocker.pid) ?? undefined;
|
|
419
|
+
sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.blocker.pid, verbose) ?? undefined;
|
|
418
420
|
console.log((0, ui_1.info)(`Reclaimed CLIProxy with unrecognized process name`));
|
|
419
421
|
return;
|
|
420
422
|
}
|