@kaitranntt/ccs 8.9.0-dev.1 → 8.9.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/cliproxy/binary/install-lifecycle-lock.d.ts +2 -0
  2. package/dist/cliproxy/binary/install-lifecycle-lock.d.ts.map +1 -0
  3. package/dist/cliproxy/binary/install-lifecycle-lock.js +63 -0
  4. package/dist/cliproxy/binary/install-lifecycle-lock.js.map +1 -0
  5. package/dist/cliproxy/binary/installer.d.ts +13 -1
  6. package/dist/cliproxy/binary/installer.d.ts.map +1 -1
  7. package/dist/cliproxy/binary/installer.js +81 -42
  8. package/dist/cliproxy/binary/installer.js.map +1 -1
  9. package/dist/cliproxy/binary/lifecycle.d.ts +6 -1
  10. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  11. package/dist/cliproxy/binary/lifecycle.js +13 -10
  12. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  13. package/dist/cliproxy/binary-manager.d.ts +2 -0
  14. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  15. package/dist/cliproxy/binary-manager.js +31 -29
  16. package/dist/cliproxy/binary-manager.js.map +1 -1
  17. package/dist/cliproxy/services/binary-service.d.ts.map +1 -1
  18. package/dist/cliproxy/services/binary-service.js +24 -20
  19. package/dist/cliproxy/services/binary-service.js.map +1 -1
  20. package/dist/cliproxy/types/binary-types.d.ts +1 -0
  21. package/dist/cliproxy/types/binary-types.d.ts.map +1 -1
  22. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts +5 -0
  23. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
  24. package/dist/web-server/services/cliproxy-dashboard-install-service.js +53 -36
  25. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
  26. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export declare function withInstallLifecycleLock<T>(lockTarget: string, operation: () => Promise<T>): Promise<T>;
2
+ //# sourceMappingURL=install-lifecycle-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-lifecycle-lock.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/install-lifecycle-lock.ts"],"names":[],"mappings":"AAOA,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.withInstallLifecycleLock = void 0;
27
+ const async_hooks_1 = require("async_hooks");
28
+ const fs = __importStar(require("fs"));
29
+ const path = __importStar(require("path"));
30
+ const lockfile = __importStar(require("proper-lockfile"));
31
+ const heldInstallLocks = new async_hooks_1.AsyncLocalStorage();
32
+ async function withInstallLifecycleLock(lockTarget, operation) {
33
+ const resolvedTarget = path.resolve(lockTarget);
34
+ const held = heldInstallLocks.getStore();
35
+ if (held?.has(resolvedTarget))
36
+ return operation();
37
+ fs.mkdirSync(resolvedTarget, { recursive: true });
38
+ const release = await lockfile.lock(resolvedTarget, {
39
+ stale: 10 * 60 * 1000,
40
+ retries: { retries: 60, factor: 1, minTimeout: 250, maxTimeout: 250 },
41
+ });
42
+ const nextHeld = new Set(held);
43
+ nextHeld.add(resolvedTarget);
44
+ let operationError;
45
+ try {
46
+ return await heldInstallLocks.run(nextHeld, operation);
47
+ }
48
+ catch (error) {
49
+ operationError = error;
50
+ throw error;
51
+ }
52
+ finally {
53
+ try {
54
+ await release();
55
+ }
56
+ catch (error) {
57
+ if (!operationError)
58
+ throw error;
59
+ }
60
+ }
61
+ }
62
+ exports.withInstallLifecycleLock = withInstallLifecycleLock;
63
+ //# sourceMappingURL=install-lifecycle-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-lifecycle-lock.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/install-lifecycle-lock.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAgD;AAChD,uCAAyB;AACzB,2CAA6B;AAC7B,0DAA4C;AAE5C,MAAM,gBAAgB,GAAG,IAAI,+BAAiB,EAAe,CAAC;AAEvD,KAAK,UAAU,wBAAwB,CAC5C,UAAkB,EAClB,SAA2B;IAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IACzC,IAAI,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,EAAE,CAAC;IAElD,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;QAClD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACrB,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;KACtE,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7B,IAAI,cAAuB,CAAC;IAE5B,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,cAAc;gBAAE,MAAM,KAAK,CAAC;QACnC,CAAC;IACH,CAAC;AACH,CAAC;AA7BD,4DA6BC"}
@@ -2,12 +2,23 @@
2
2
  * Binary Installer
3
3
  * Handles downloading, verifying, and extracting binary.
4
4
  */
5
+ /// <reference types="node" />
6
+ import * as fs from 'fs';
5
7
  import { BinaryManagerConfig } from '../types';
6
8
  import { detectPlatform } from '../binary/platform-detector';
9
+ import { downloadWithRetry } from './downloader';
10
+ import { verifyChecksum } from './verifier';
11
+ import { extractArchive } from './extractor';
12
+ interface DownloadAndInstallDeps {
13
+ downloadWithRetryFn?: typeof downloadWithRetry;
14
+ verifyChecksumFn?: typeof verifyChecksum;
15
+ extractArchiveFn?: typeof extractArchive;
16
+ renameSyncFn?: typeof fs.renameSync;
17
+ }
7
18
  /**
8
19
  * Download and install the binary
9
20
  */
10
- export declare function downloadAndInstall(config: BinaryManagerConfig, verbose?: boolean): Promise<void>;
21
+ export declare function downloadAndInstall(config: BinaryManagerConfig, verbose?: boolean, deps?: DownloadAndInstallDeps): Promise<void>;
11
22
  import type { CLIProxyBackend } from '../types';
12
23
  /** Delete binary (for cleanup or reinstall) */
13
24
  export declare function deleteBinary(binPath: string, verbose?: boolean, backend?: CLIProxyBackend): void;
@@ -22,4 +33,5 @@ export declare function getBinaryInfo(binPath: string, version: string, backend?
22
33
  platform: ReturnType<typeof detectPlatform>;
23
34
  checksum: string;
24
35
  } | null>;
36
+ export {};
25
37
  //# sourceMappingURL=installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,cAAc,EAKf,MAAM,6BAA6B,CAAC;AAQrC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,UAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAkFf;AAED,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAgB9F;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAGhF;AAED,6BAA6B;AAC7B,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAErF;AAED,mCAAmC;AACnC,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAAC,CAQR"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,cAAc,EAKf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7C,UAAU,sBAAsB;IAC9B,mBAAmB,CAAC,EAAE,OAAO,iBAAiB,CAAC;IAC/C,gBAAgB,CAAC,EAAE,OAAO,cAAc,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,cAAc,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;CACrC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,UAAQ,EACf,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAkHf;AAED,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAmB9F;AAED,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAGhF;AAED,6BAA6B;AAC7B,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAErF;AAED,mCAAmC;AACnC,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAAC,CAQR"}
@@ -30,83 +30,122 @@ Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.getBinaryInfo = exports.isBinaryInstalled = exports.getBinaryPath = exports.deleteBinary = exports.downloadAndInstall = void 0;
31
31
  const fs = __importStar(require("fs"));
32
32
  const path = __importStar(require("path"));
33
+ const lockfile = __importStar(require("proper-lockfile"));
33
34
  const platform_detector_1 = require("../binary/platform-detector");
34
35
  const downloader_1 = require("./downloader");
35
36
  const verifier_1 = require("./verifier");
36
37
  const extractor_1 = require("./extractor");
37
- const version_cache_1 = require("./version-cache");
38
38
  const progress_indicator_1 = require("../../utils/progress-indicator");
39
39
  const ui_1 = require("../../utils/ui");
40
+ const error_types_1 = require("../../errors/error-types");
40
41
  /**
41
42
  * Download and install the binary
42
43
  */
43
- async function downloadAndInstall(config, verbose = false) {
44
+ async function downloadAndInstall(config, verbose = false, deps = {}) {
44
45
  const backend = config.backend ?? platform_detector_1.DEFAULT_BACKEND;
45
46
  const platform = (0, platform_detector_1.detectPlatform)(config.version, backend);
46
47
  const downloadUrl = (0, platform_detector_1.getDownloadUrl)(config.version, backend);
47
48
  const checksumsUrl = (0, platform_detector_1.getChecksumsUrl)(config.version, backend);
48
49
  const backendLabel = backend === 'plus' ? 'CLIProxy Plus' : 'CLIProxy';
50
+ const downloadWithRetryFn = deps.downloadWithRetryFn ?? downloader_1.downloadWithRetry;
51
+ const verifyChecksumFn = deps.verifyChecksumFn ?? verifier_1.verifyChecksum;
52
+ const extractArchiveFn = deps.extractArchiveFn ?? extractor_1.extractArchive;
53
+ const renameSyncFn = deps.renameSyncFn ?? fs.renameSync;
49
54
  fs.mkdirSync(config.binPath, { recursive: true });
50
- // Delete existing binary before install to prevent mismatched binaries.
51
- // Abort if binary is currently running (ETXTBSY) — cannot replace in-use binary.
52
- // Happens in Docker when dashboard tries to update while bootstrap's instance is active.
53
- const existingBinary = path.join(config.binPath, (0, platform_detector_1.getExecutableName)(backend));
54
- if (fs.existsSync(existingBinary)) {
55
- try {
56
- fs.unlinkSync(existingBinary);
57
- if (verbose)
58
- console.error(`[cliproxy] Removed existing binary: ${existingBinary}`);
59
- }
60
- catch (error) {
61
- const code = error instanceof Error && 'code' in error ? error.code : '';
62
- // ETXTBSY: Linux-specific error when unlinking a running executable.
63
- // EBUSY on Windows may mean something different (mount point, etc.),
64
- // so only treat ETXTBSY as "binary in use" to avoid misleading messages.
65
- if (code === 'ETXTBSY') {
66
- if (verbose)
67
- console.error(`[cliproxy] Binary is running, cannot replace: ${existingBinary}`);
68
- throw new Error('CLIProxy binary is currently running and cannot be replaced. Restart the container to apply the update.');
69
- }
70
- throw error;
71
- }
72
- }
73
- const archivePath = path.join(config.binPath, `cliproxy-archive.${platform.extension}`);
55
+ const releaseLock = await lockfile.lock(config.binPath, {
56
+ stale: 10 * 60 * 1000,
57
+ retries: { retries: 60, factor: 1, minTimeout: 250, maxTimeout: 250 },
58
+ });
59
+ let stagingPath;
74
60
  const spinner = new progress_indicator_1.ProgressIndicator(`Downloading ${backendLabel} v${config.version}`);
75
- spinner.start();
61
+ let installError;
76
62
  try {
77
- const result = await (0, downloader_1.downloadWithRetry)(downloadUrl, archivePath, {
63
+ for (const entry of fs.readdirSync(config.binPath)) {
64
+ if (entry.startsWith('.cliproxy-install-')) {
65
+ fs.rmSync(path.join(config.binPath, entry), { recursive: true, force: true });
66
+ }
67
+ }
68
+ stagingPath = fs.mkdtempSync(path.join(config.binPath, '.cliproxy-install-'));
69
+ const archivePath = path.join(stagingPath, `cliproxy-archive.${platform.extension}`);
70
+ const stagedBinary = path.join(stagingPath, (0, platform_detector_1.getExecutableName)(backend));
71
+ const stagedVersion = path.join(stagingPath, '.version');
72
+ const installedBinary = path.join(config.binPath, (0, platform_detector_1.getExecutableName)(backend));
73
+ const installedVersion = path.join(config.binPath, '.version');
74
+ const backupBinary = path.join(stagingPath, '.previous-binary');
75
+ const hadInstalledBinary = fs.existsSync(installedBinary);
76
+ spinner.start();
77
+ const result = await downloadWithRetryFn(downloadUrl, archivePath, {
78
78
  maxRetries: config.maxRetries,
79
79
  verbose,
80
80
  });
81
81
  if (!result.success) {
82
82
  spinner.fail('Download failed');
83
- throw new Error(result.error || 'Download failed after retries');
83
+ throw new error_types_1.NetworkError(result.error || 'Download failed after retries', downloadUrl);
84
84
  }
85
85
  spinner.update('Verifying checksum');
86
- const checksumResult = await (0, verifier_1.verifyChecksum)(archivePath, platform.binaryName, checksumsUrl, verbose);
86
+ const checksumResult = await verifyChecksumFn(archivePath, platform.binaryName, checksumsUrl, verbose);
87
87
  if (!checksumResult.valid) {
88
88
  spinner.fail('Checksum mismatch');
89
- fs.unlinkSync(archivePath);
90
- throw new Error(`Checksum mismatch for ${platform.binaryName}\nExpected: ${checksumResult.expected}\n` +
91
- `Actual: ${checksumResult.actual}\n\nManual download: ${downloadUrl}`);
89
+ throw new error_types_1.BinaryError(`Checksum mismatch for ${platform.binaryName}\nExpected: ${checksumResult.expected}\n` +
90
+ `Actual: ${checksumResult.actual}\n\nManual download: ${downloadUrl}`, stagedBinary);
92
91
  }
93
92
  spinner.update('Extracting binary');
94
- await (0, extractor_1.extractArchive)(archivePath, config.binPath, platform.extension, verbose, backend);
95
- spinner.succeed(`${backendLabel} ready`);
96
- fs.unlinkSync(archivePath);
97
- const binaryPath = path.join(config.binPath, (0, platform_detector_1.getExecutableName)(backend));
98
- if (platform.os !== 'windows' && fs.existsSync(binaryPath)) {
99
- fs.chmodSync(binaryPath, 0o755);
93
+ await extractArchiveFn(archivePath, stagingPath, platform.extension, verbose, backend);
94
+ if (!fs.existsSync(stagedBinary) || !fs.statSync(stagedBinary).isFile()) {
95
+ throw new error_types_1.BinaryError(`Extracted archive did not contain ${(0, platform_detector_1.getExecutableName)(backend)}`, stagedBinary);
96
+ }
97
+ if (platform.os !== 'windows') {
98
+ fs.chmodSync(stagedBinary, 0o755);
100
99
  if (verbose)
101
- console.error(`[cliproxy] Set executable permissions: ${binaryPath}`);
100
+ console.error(`[cliproxy] Set executable permissions: ${stagedBinary}`);
102
101
  }
103
- (0, version_cache_1.writeInstalledVersion)(config.binPath, config.version);
102
+ fs.writeFileSync(stagedVersion, config.version, 'utf8');
103
+ if (hadInstalledBinary) {
104
+ fs.copyFileSync(installedBinary, backupBinary);
105
+ if (platform.os !== 'windows')
106
+ fs.chmodSync(backupBinary, 0o755);
107
+ }
108
+ renameSyncFn(stagedBinary, installedBinary);
109
+ try {
110
+ renameSyncFn(stagedVersion, installedVersion);
111
+ }
112
+ catch (error) {
113
+ if (hadInstalledBinary) {
114
+ renameSyncFn(backupBinary, installedBinary);
115
+ }
116
+ else {
117
+ fs.unlinkSync(installedBinary);
118
+ }
119
+ throw error;
120
+ }
121
+ spinner.succeed(`${backendLabel} ready`);
104
122
  console.log((0, ui_1.ok)(`${backendLabel} v${config.version} installed successfully`));
105
123
  }
106
124
  catch (error) {
125
+ installError = error;
107
126
  spinner.fail('Installation failed');
108
127
  throw error;
109
128
  }
129
+ finally {
130
+ let cleanupError;
131
+ try {
132
+ if (stagingPath)
133
+ fs.rmSync(stagingPath, { recursive: true, force: true });
134
+ }
135
+ catch (error) {
136
+ cleanupError = error;
137
+ }
138
+ finally {
139
+ try {
140
+ await releaseLock();
141
+ }
142
+ catch (error) {
143
+ cleanupError ?? (cleanupError = error);
144
+ }
145
+ }
146
+ if (!installError && cleanupError)
147
+ throw cleanupError;
148
+ }
110
149
  }
111
150
  exports.downloadAndInstall = downloadAndInstall;
112
151
  /** Delete binary (for cleanup or reinstall) */
@@ -122,7 +161,7 @@ function deleteBinary(binPath, verbose = false, backend) {
122
161
  catch (error) {
123
162
  const code = error instanceof Error && 'code' in error ? error.code : '';
124
163
  if (code === 'ETXTBSY') {
125
- throw new Error('CLIProxy binary is currently running and cannot be deleted.');
164
+ throw new error_types_1.BinaryError('CLIProxy binary is currently running and cannot be deleted.', binaryPath);
126
165
  }
127
166
  throw error;
128
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/installer.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,14 @@
3
3
  * Handles ensuring binary availability and auto-updates.
4
4
  */
5
5
  import { BinaryManagerConfig } from '../types';
6
+ import { downloadAndInstall } from './installer';
6
7
  /**
7
8
  * Ensure binary is available (download if missing, update if outdated)
8
9
  * @returns Path to executable binary
9
10
  */
10
- export declare function ensureBinary(config: BinaryManagerConfig): Promise<string>;
11
+ interface EnsureBinaryDeps {
12
+ downloadAndInstallFn?: typeof downloadAndInstall;
13
+ }
14
+ export declare function ensureBinary(config: BinaryManagerConfig, deps?: EnsureBinaryDeps): Promise<string>;
15
+ export {};
11
16
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAmB,MAAM,UAAU,CAAC;AA+FhE;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D/E"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAmB,MAAM,UAAU,CAAC;AAOhE,OAAO,EAAE,kBAAkB,EAAiB,MAAM,aAAa,CAAC;AAyFhE;;;GAGG;AACH,UAAU,gBAAgB;IACxB,oBAAoB,CAAC,EAAE,OAAO,kBAAkB,CAAC;CAClD;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAoEjB"}
@@ -34,6 +34,7 @@ const installer_1 = require("./installer");
34
34
  const ui_1 = require("../../utils/ui");
35
35
  const stats_fetcher_1 = require("../services/stats-fetcher");
36
36
  const port_manager_1 = require("../config/port-manager");
37
+ const error_types_1 = require("../../errors/error-types");
37
38
  const platform_detector_1 = require("../binary/platform-detector");
38
39
  /** Log helper */
39
40
  function log(message, verbose) {
@@ -97,24 +98,26 @@ async function handleAutoUpdate(config, verbose) {
97
98
  else {
98
99
  console.log((0, ui_1.info)(updateMsg));
99
100
  console.log((0, ui_1.info)(`Updating ${backendLabel}...`));
100
- (0, installer_1.deleteBinary)(config.binPath, verbose, backend);
101
+ // The installer stages and validates the replacement before atomically swapping it.
101
102
  config.version = targetVersion;
102
103
  await (0, installer_1.downloadAndInstall)(config, verbose);
103
104
  }
104
105
  }
105
- /**
106
- * Ensure binary is available (download if missing, update if outdated)
107
- * @returns Path to executable binary
108
- */
109
- async function ensureBinary(config) {
106
+ async function ensureBinary(config, deps = {}) {
110
107
  const verbose = config.verbose;
111
108
  const backend = config.backend ?? platform_detector_1.DEFAULT_BACKEND;
112
109
  const binaryPath = (0, installer_1.getBinaryPath)(config.binPath, backend);
110
+ const downloadAndInstallFn = deps.downloadAndInstallFn ?? installer_1.downloadAndInstall;
113
111
  // Binary exists - check for updates unless forceVersion
114
112
  if (fs.existsSync(binaryPath)) {
115
113
  log(`Binary exists: ${binaryPath}`, verbose);
114
+ if (config.replaceExisting) {
115
+ log(`Force version mode: installing specified version ${config.version}`, verbose);
116
+ await downloadAndInstallFn(config, verbose);
117
+ return binaryPath;
118
+ }
116
119
  if (config.forceVersion) {
117
- log('Force version mode: skipping auto-update', verbose);
120
+ log(`Pinned version mode: using installed version ${config.version}`, verbose);
118
121
  return binaryPath;
119
122
  }
120
123
  if (config.skipAutoUpdate) {
@@ -132,8 +135,8 @@ async function ensureBinary(config) {
132
135
  }
133
136
  // Binary missing
134
137
  if (!config.allowInstall) {
135
- throw new Error(`${getBackendLabel(backend)} binary is not installed locally. ` +
136
- 'Run "ccs cliproxy install" when you have network access.');
138
+ throw new error_types_1.BinaryError(`${getBackendLabel(backend)} binary is not installed locally. ` +
139
+ 'Run "ccs cliproxy install" when you have network access.', binaryPath);
137
140
  }
138
141
  // Only log download intent when a download will actually happen
139
142
  log('Binary not found, downloading...', verbose);
@@ -156,7 +159,7 @@ async function ensureBinary(config) {
156
159
  else {
157
160
  log(`Force version mode: using specified version ${config.version}`, verbose);
158
161
  }
159
- await (0, installer_1.downloadAndInstall)(config, verbose);
162
+ await downloadAndInstallFn(config, verbose);
160
163
  return binaryPath;
161
164
  }
162
165
  exports.ensureBinary = ensureBinary;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cliproxy/binary/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export declare function getStoredConfiguredBackend(): CLIProxyBackend;
27
27
  * community fork instead of degrading to original.
28
28
  */
29
29
  export declare function getConfiguredBackend(options?: ResolveLocalBackendOptions): CLIProxyBackend;
30
+ export declare function withCliproxyInstallLifecycleLock<T>(backend: CLIProxyBackend, operation: () => Promise<T>): Promise<T>;
30
31
  /**
31
32
  * Binary Manager class for CLIProxyAPI binary lifecycle
32
33
  */
@@ -67,6 +68,7 @@ interface InstallCliproxyVersionDeps {
67
68
  formatInfo?: typeof info;
68
69
  formatWarn?: typeof warn;
69
70
  getInstalledVersion?: typeof getInstalledCliproxyVersion;
71
+ withInstallLifecycleLockFn?: typeof withCliproxyInstallLifecycleLock;
70
72
  }
71
73
  /** Install a specific version of CLIProxyAPI */
72
74
  export declare function installCliproxyVersion(version: string, verbose?: boolean, backend?: CLIProxyBackend, deps?: InstallCliproxyVersionDeps): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/binary-manager.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
29
  return result;
30
30
  };
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.migrateVersionPin = 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 = exports.getConfiguredBackend = exports.getStoredConfiguredBackend = exports.resolveLocalBackend = exports.syncPlusFallbackStateIfNeeded = exports.getPlusBackendUnavailableMessage = exports.CLIPROXY_PLUS_TRACKING_URL = exports.CLIPROXY_PLUS_FORK_URL = exports.CLIPROXY_PLUS_FALLBACK_TRACKING_URL = exports.CLIPROXY_DELETED_PLUS_REPO = void 0;
32
+ exports.migrateVersionPin = 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 = exports.withCliproxyInstallLifecycleLock = exports.getConfiguredBackend = exports.getStoredConfiguredBackend = exports.resolveLocalBackend = exports.syncPlusFallbackStateIfNeeded = exports.getPlusBackendUnavailableMessage = exports.CLIPROXY_PLUS_TRACKING_URL = exports.CLIPROXY_PLUS_FORK_URL = exports.CLIPROXY_PLUS_FALLBACK_TRACKING_URL = exports.CLIPROXY_DELETED_PLUS_REPO = void 0;
33
33
  const fs = __importStar(require("fs"));
34
34
  const path = __importStar(require("path"));
35
35
  const ui_1 = require("../utils/ui");
@@ -47,6 +47,7 @@ Object.defineProperty(exports, "getVersionPinPath", { enumerable: true, get: fun
47
47
  Object.defineProperty(exports, "migrateVersionPin", { enumerable: true, get: function () { return binary_1.migrateVersionPin; } });
48
48
  const version_cache_1 = require("./binary/version-cache");
49
49
  const config_loader_facade_1 = require("../config/config-loader-facade");
50
+ const install_lifecycle_lock_1 = require("./binary/install-lifecycle-lock");
50
51
  exports.CLIPROXY_DELETED_PLUS_REPO = 'router-for-me/CLIProxyAPIPlus';
51
52
  exports.CLIPROXY_PLUS_FALLBACK_TRACKING_URL = 'https://github.com/kaitranntt/ccs/issues/1062';
52
53
  exports.CLIPROXY_PLUS_FORK_URL = 'https://github.com/kaitranntt/CLIProxyAPIPlus';
@@ -153,6 +154,11 @@ function getBackendBinDir(backend = platform_detector_1.DEFAULT_BACKEND) {
153
154
  const baseDir = (0, config_generator_1.getBinDir)();
154
155
  return `${baseDir}/${backend}`;
155
156
  }
157
+ async function withCliproxyInstallLifecycleLock(backend, operation) {
158
+ const lockTarget = path.join((0, config_generator_1.getBinDir)(), `.install-lifecycle-${backend}`);
159
+ return (0, install_lifecycle_lock_1.withInstallLifecycleLock)(lockTarget, operation);
160
+ }
161
+ exports.withCliproxyInstallLifecycleLock = withCliproxyInstallLifecycleLock;
156
162
  /** Default configuration (uses backend from config.yaml or defaults to `DEFAULT_BACKEND`) */
157
163
  function createDefaultConfig(backend = platform_detector_1.DEFAULT_BACKEND) {
158
164
  const backendConfig = platform_detector_1.BACKEND_CONFIG[backend];
@@ -163,6 +169,7 @@ function createDefaultConfig(backend = platform_detector_1.DEFAULT_BACKEND) {
163
169
  maxRetries: 3,
164
170
  verbose: false,
165
171
  forceVersion: false,
172
+ replaceExisting: false,
166
173
  skipAutoUpdate: false,
167
174
  allowInstall: true,
168
175
  backend, // Pass backend for installer to use correct download URL
@@ -254,39 +261,34 @@ exports.getInstalledCliproxyVersion = getInstalledCliproxyVersion;
254
261
  async function installCliproxyVersion(version, verbose = false, backend, deps = {}) {
255
262
  const configuredBackend = backend ?? getConfiguredOrDefaultBackend();
256
263
  const effectiveBackend = resolveLocalBackend(configuredBackend, { notifyOnPlus: true });
257
- const manager = deps.createManager?.({ version, verbose, forceVersion: true }, effectiveBackend) ??
258
- new BinaryManager({ version, verbose, forceVersion: true }, effectiveBackend);
264
+ const manager = deps.createManager?.({ version, verbose, forceVersion: true, replaceExisting: true }, effectiveBackend) ??
265
+ new BinaryManager({ version, verbose, forceVersion: true, replaceExisting: true }, effectiveBackend);
259
266
  const stopProxyFn = deps.stopProxyFn ?? proxy_lifecycle_service_1.stopProxy;
260
267
  const waitForPortFreeFn = deps.waitForPortFreeFn ?? port_utils_1.waitForPortFree;
261
268
  const formatInfo = deps.formatInfo ?? ui_1.info;
262
269
  const formatWarn = deps.formatWarn ?? ui_1.warn;
263
- const getInstalledVersion = deps.getInstalledVersion ?? getInstalledCliproxyVersion;
264
- // Always attempt a best-effort stop first so we also catch untracked proxies
265
- // that are running without a session lock.
266
- if (verbose)
267
- console.log(formatInfo('Stopping running CLIProxy before update...'));
268
- const result = await stopProxyFn();
269
- if (result.stopped) {
270
- const stoppedPort = result.port ?? (0, port_manager_1.resolveLifecyclePort)();
271
- // Wait for port to be fully released
272
- const portFree = await waitForPortFreeFn(stoppedPort, 5000);
273
- if (!portFree && verbose) {
274
- console.log(formatWarn('Port did not free up in time, proceeding anyway...'));
275
- }
276
- }
277
- else if (verbose && result.error && result.error !== 'No active CLIProxy session found') {
278
- console.log(formatWarn(`Could not stop proxy: ${result.error}`));
279
- }
280
- if (manager.isBinaryInstalled()) {
281
- const label = effectiveBackend === 'plus' ? 'CLIProxy Plus' : 'CLIProxy';
270
+ const withLifecycleLock = deps.withInstallLifecycleLockFn ?? withCliproxyInstallLifecycleLock;
271
+ await withLifecycleLock(effectiveBackend, async () => {
272
+ // Always attempt a best-effort stop first so we also catch untracked proxies
273
+ // that are running without a session lock.
282
274
  if (verbose)
283
- console.log(formatInfo(`Removing existing ${label} v${getInstalledVersion(effectiveBackend)}`));
284
- manager.deleteBinary();
285
- }
286
- await manager.ensureBinary();
287
- if (verbose) {
288
- console.log(formatInfo('New version will be active on next CLIProxy command'));
289
- }
275
+ console.log(formatInfo('Stopping running CLIProxy before update...'));
276
+ const result = await stopProxyFn();
277
+ if (result.stopped) {
278
+ const stoppedPort = result.port ?? (0, port_manager_1.resolveLifecyclePort)();
279
+ const portFree = await waitForPortFreeFn(stoppedPort, 5000);
280
+ if (!portFree && verbose) {
281
+ console.log(formatWarn('Port did not free up in time, proceeding anyway...'));
282
+ }
283
+ }
284
+ else if (verbose && result.error && result.error !== 'No active CLIProxy session found') {
285
+ console.log(formatWarn(`Could not stop proxy: ${result.error}`));
286
+ }
287
+ await manager.ensureBinary();
288
+ if (verbose) {
289
+ console.log(formatInfo('New version will be active on next CLIProxy command'));
290
+ }
291
+ });
290
292
  }
291
293
  exports.installCliproxyVersion = installCliproxyVersion;
292
294
  /** Fetch the latest CLIProxyAPI version from GitHub API */
@@ -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":"binary-service.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/binary-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,2BAA2B;AAC3B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,kBAAkB,CAa7E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyBhG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAiCxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAK3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAKxD"}
1
+ {"version":3,"file":"binary-service.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/services/binary-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,2BAA2B;AAC3B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,kBAAkB,CAa7E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyBhG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAmCxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAK3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAKxD"}
@@ -102,13 +102,15 @@ async function installVersion(version, verbose = false, backend) {
102
102
  const configuredBackend = backend ?? (0, config_loader_facade_1.loadOrCreateUnifiedConfig)().cliproxy?.backend ?? platform_detector_1.DEFAULT_BACKEND;
103
103
  const effectiveBackend = (0, binary_manager_1.resolveLocalBackend)(configuredBackend, { notifyOnPlus: true });
104
104
  try {
105
- await (0, binary_manager_1.installCliproxyVersion)(version, verbose, effectiveBackend);
106
- (0, binary_manager_1.savePinnedVersion)(version, effectiveBackend);
107
- return {
108
- success: true,
109
- version,
110
- wasPinned: true,
111
- };
105
+ return await (0, binary_manager_1.withCliproxyInstallLifecycleLock)(effectiveBackend, async () => {
106
+ await (0, binary_manager_1.installCliproxyVersion)(version, verbose, effectiveBackend);
107
+ (0, binary_manager_1.savePinnedVersion)(version, effectiveBackend);
108
+ return {
109
+ success: true,
110
+ version,
111
+ wasPinned: true,
112
+ };
113
+ });
112
114
  }
113
115
  catch (error) {
114
116
  return {
@@ -126,23 +128,25 @@ async function installLatest(verbose = false, backend) {
126
128
  const configuredBackend = backend ?? (0, config_loader_facade_1.loadOrCreateUnifiedConfig)().cliproxy?.backend ?? platform_detector_1.DEFAULT_BACKEND;
127
129
  const effectiveBackend = (0, binary_manager_1.resolveLocalBackend)(configuredBackend, { notifyOnPlus: true });
128
130
  try {
129
- const latestVersion = await (0, binary_manager_1.fetchLatestCliproxyVersion)(effectiveBackend);
130
- const currentVersion = (0, binary_manager_1.getInstalledCliproxyVersion)(effectiveBackend);
131
- const wasPinned = (0, binary_manager_1.isVersionPinned)(effectiveBackend);
132
- if ((0, binary_manager_1.isCLIProxyInstalled)(effectiveBackend) && latestVersion === currentVersion && !wasPinned) {
131
+ return await (0, binary_manager_1.withCliproxyInstallLifecycleLock)(effectiveBackend, async () => {
132
+ const latestVersion = await (0, binary_manager_1.fetchLatestCliproxyVersion)(effectiveBackend);
133
+ const currentVersion = (0, binary_manager_1.getInstalledCliproxyVersion)(effectiveBackend);
134
+ const wasPinned = (0, binary_manager_1.isVersionPinned)(effectiveBackend);
135
+ if ((0, binary_manager_1.isCLIProxyInstalled)(effectiveBackend) && latestVersion === currentVersion && !wasPinned) {
136
+ return {
137
+ success: true,
138
+ version: latestVersion,
139
+ error: `Already running latest version: v${latestVersion}`,
140
+ };
141
+ }
142
+ await (0, binary_manager_1.installCliproxyVersion)(latestVersion, verbose, effectiveBackend);
143
+ (0, binary_manager_1.clearPinnedVersion)(effectiveBackend);
133
144
  return {
134
145
  success: true,
135
146
  version: latestVersion,
136
- error: `Already running latest version: v${latestVersion}`,
147
+ wasPinned,
137
148
  };
138
- }
139
- await (0, binary_manager_1.installCliproxyVersion)(latestVersion, verbose, effectiveBackend);
140
- (0, binary_manager_1.clearPinnedVersion)(effectiveBackend);
141
- return {
142
- success: true,
143
- version: latestVersion,
144
- wasPinned,
145
- };
149
+ });
146
150
  }
147
151
  catch (error) {
148
152
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"binary-service.js","sourceRoot":"","sources":["../../../src/cliproxy/services/binary-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-service.js","sourceRoot":"","sources":["../../../src/cliproxy/services/binary-service.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface BinaryManagerConfig {
12
12
  maxRetries: number;
13
13
  verbose: boolean;
14
14
  forceVersion: boolean;
15
+ replaceExisting?: boolean;
15
16
  skipAutoUpdate: boolean;
16
17
  allowInstall: boolean;
17
18
  backend?: CLIProxyBackend;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/types/binary-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjC;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"binary-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/types/binary-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjC;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1,5 +1,7 @@
1
+ import { withCliproxyInstallLifecycleLock } from '../../cliproxy/binary-manager';
1
2
  import { type ServiceStartResult } from '../../cliproxy/service-manager';
2
3
  import type { CLIProxyBackend } from '../../cliproxy/types';
4
+ import { restartCliproxyViaSupervisord } from '../../docker/supervisord-lifecycle';
3
5
  interface ProxyStatusLike {
4
6
  running: boolean;
5
7
  }
@@ -8,6 +10,9 @@ interface InstallDashboardCliproxyVersionDeps {
8
10
  isCliproxyRunning: () => Promise<boolean>;
9
11
  installCliproxyVersion: (version: string, verbose?: boolean, backend?: CLIProxyBackend) => Promise<void>;
10
12
  ensureCliproxyService: () => Promise<ServiceStartResult>;
13
+ isRunningUnderSupervisord?: () => boolean;
14
+ restartCliproxyViaSupervisord?: typeof restartCliproxyViaSupervisord;
15
+ withInstallLifecycleLock?: typeof withCliproxyInstallLifecycleLock;
11
16
  }
12
17
  export interface DashboardCliproxyInstallResult {
13
18
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-dashboard-install-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mCAAmC;IAC3C,cAAc,EAAE,MAAM,eAAe,CAAC;IACtC,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,sBAAsB,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qBAAqB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1D;AASD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE,mCAAiD,GACtD,OAAO,CAAC,8BAA8B,CAAC,CA+CzC"}
1
+ {"version":3,"file":"cliproxy-dashboard-install-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gCAAgC,EACjC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAGhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAEL,6BAA6B,EAC9B,MAAM,oCAAoC,CAAC;AAE5C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mCAAmC;IAC3C,cAAc,EAAE,MAAM,eAAe,CAAC;IACtC,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,sBAAsB,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qBAAqB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzD,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1C,6BAA6B,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACrE,wBAAwB,CAAC,EAAE,OAAO,gCAAgC,CAAC;CACpE;AASD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4BD,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE,mCAAiD,GACtD,OAAO,CAAC,8BAA8B,CAAC,CAoDzC"}
@@ -6,6 +6,7 @@ const port_manager_1 = require("../../cliproxy/config/port-manager");
6
6
  const service_manager_1 = require("../../cliproxy/service-manager");
7
7
  const session_tracker_1 = require("../../cliproxy/session-tracker");
8
8
  const stats_fetcher_1 = require("../../cliproxy/services/stats-fetcher");
9
+ const error_types_1 = require("../../errors/error-types");
9
10
  const supervisord_lifecycle_1 = require("../../docker/supervisord-lifecycle");
10
11
  const defaultDeps = {
11
12
  getProxyStatus: () => (0, session_tracker_1.getProxyStatus)((0, port_manager_1.resolveLifecyclePort)()),
@@ -20,48 +21,64 @@ async function wasProxyRunning(deps) {
20
21
  }
21
22
  return deps.isCliproxyRunning();
22
23
  }
24
+ async function restoreProxyService(deps) {
25
+ const underSupervisord = deps.isRunningUnderSupervisord?.() ?? (0, supervisord_lifecycle_1.isRunningUnderSupervisord)();
26
+ if (underSupervisord) {
27
+ const restart = deps.restartCliproxyViaSupervisord?.() ?? (0, supervisord_lifecycle_1.restartCliproxyViaSupervisord)();
28
+ return {
29
+ started: restart.success,
30
+ alreadyRunning: false,
31
+ port: restart.port ?? (0, port_manager_1.resolveLifecyclePort)(),
32
+ error: restart.error,
33
+ };
34
+ }
35
+ return deps.ensureCliproxyService();
36
+ }
23
37
  async function installDashboardCliproxyVersion(version, backend, deps = defaultDeps) {
24
38
  const effectiveBackend = (0, binary_manager_1.resolveLocalBackend)(backend, { notifyOnPlus: true });
25
39
  const backendLabel = effectiveBackend === 'plus' ? 'CLIProxy Plus' : 'CLIProxy';
26
- const shouldRestoreService = await wasProxyRunning(deps);
27
- // The installer owns the stop-and-replace lifecycle, including best-effort
28
- // shutdown for tracked and untracked proxies before swapping the binary.
29
- await deps.installCliproxyVersion(version, true, effectiveBackend);
30
- if (!shouldRestoreService) {
40
+ const withLifecycleLock = deps.withInstallLifecycleLock ?? binary_manager_1.withCliproxyInstallLifecycleLock;
41
+ return withLifecycleLock(effectiveBackend, async () => {
42
+ const shouldRestoreService = await wasProxyRunning(deps);
43
+ // The installer owns the stop-and-replace lifecycle, including best-effort
44
+ // shutdown for tracked and untracked proxies before swapping the binary.
45
+ try {
46
+ await deps.installCliproxyVersion(version, true, effectiveBackend);
47
+ }
48
+ catch (error) {
49
+ if (shouldRestoreService) {
50
+ const restoreResult = await restoreProxyService(deps);
51
+ if (!restoreResult.started && !restoreResult.alreadyRunning) {
52
+ const installMessage = error instanceof Error ? error.message : String(error);
53
+ throw new error_types_1.ProxyError(`${installMessage}; previous ${backendLabel} service also failed to restart: ${restoreResult.error ?? 'unknown restart error'}`, restoreResult.port);
54
+ }
55
+ }
56
+ throw error;
57
+ }
58
+ if (!shouldRestoreService) {
59
+ return {
60
+ success: true,
61
+ restarted: false,
62
+ message: `Successfully installed ${backendLabel} v${version}`,
63
+ };
64
+ }
65
+ // In Docker, supervisord owns process lifecycle — delegate restart to it
66
+ const startResult = await restoreProxyService(deps);
67
+ if (!startResult.started && !startResult.alreadyRunning) {
68
+ return {
69
+ success: false,
70
+ restarted: false,
71
+ error: startResult.error || `Installed ${backendLabel} v${version}, but restart failed`,
72
+ message: `Installed ${backendLabel} v${version}, but failed to restart it`,
73
+ };
74
+ }
31
75
  return {
32
76
  success: true,
33
- restarted: false,
34
- message: `Successfully installed ${backendLabel} v${version}`,
77
+ restarted: true,
78
+ port: startResult.port,
79
+ message: `Successfully installed ${backendLabel} v${version} and restarted it on port ${startResult.port}`,
35
80
  };
36
- }
37
- // In Docker, supervisord owns process lifecycle — delegate restart to it
38
- if ((0, supervisord_lifecycle_1.isRunningUnderSupervisord)()) {
39
- const result = (0, supervisord_lifecycle_1.restartCliproxyViaSupervisord)();
40
- return {
41
- success: result.success,
42
- restarted: result.success,
43
- port: result.port,
44
- error: result.error,
45
- message: result.success
46
- ? `Successfully installed ${backendLabel} v${version} and restarted it on port ${result.port}`
47
- : `Installed ${backendLabel} v${version}, but restart failed`,
48
- };
49
- }
50
- const startResult = await deps.ensureCliproxyService();
51
- if (!startResult.started && !startResult.alreadyRunning) {
52
- return {
53
- success: false,
54
- restarted: false,
55
- error: startResult.error || `Installed ${backendLabel} v${version}, but restart failed`,
56
- message: `Installed ${backendLabel} v${version}, but failed to restart it`,
57
- };
58
- }
59
- return {
60
- success: true,
61
- restarted: true,
62
- port: startResult.port,
63
- message: `Successfully installed ${backendLabel} v${version} and restarted it on port ${startResult.port}`,
64
- };
81
+ });
65
82
  }
66
83
  exports.installDashboardCliproxyVersion = installDashboardCliproxyVersion;
67
84
  //# sourceMappingURL=cliproxy-dashboard-install-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cliproxy-dashboard-install-service.js","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":";;;AAAA,kEAA4F;AAC5F,qEAA0E;AAC1E,oEAAgG;AAChG,oEAAyF;AACzF,yEAA0E;AAE1E,8EAG4C;AAiB5C,MAAM,WAAW,GAAwC;IACvD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAA,gCAAqB,EAAC,IAAA,mCAAoB,GAAE,CAAC;IACnE,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAA,iCAAiB,EAAC,IAAA,mCAAoB,GAAE,CAAC;IAClE,sBAAsB,EAAtB,uCAAsB;IACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAA,uCAAqB,EAAC,IAAA,mCAAoB,GAAE,CAAC;CAC3E,CAAC;AAUF,KAAK,UAAU,eAAe,CAAC,IAAyC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,OAAe,EACf,OAAwB,EACxB,OAA4C,WAAW;IAEvD,MAAM,gBAAgB,GAAG,IAAA,oCAAmB,EAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;IAChF,MAAM,oBAAoB,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzD,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAEnE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,0BAA0B,YAAY,KAAK,OAAO,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,IAAA,iDAAyB,GAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,qDAA6B,GAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,OAAO;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACrB,CAAC,CAAC,0BAA0B,YAAY,KAAK,OAAO,6BAA6B,MAAM,CAAC,IAAI,EAAE;gBAC9F,CAAC,CAAC,aAAa,YAAY,KAAK,OAAO,sBAAsB;SAChE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,aAAa,YAAY,KAAK,OAAO,sBAAsB;YACvF,OAAO,EAAE,aAAa,YAAY,KAAK,OAAO,4BAA4B;SAC3E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,0BAA0B,YAAY,KAAK,OAAO,6BAA6B,WAAW,CAAC,IAAI,EAAE;KAC3G,CAAC;AACJ,CAAC;AAnDD,0EAmDC"}
1
+ {"version":3,"file":"cliproxy-dashboard-install-service.js","sourceRoot":"","sources":["../../../src/web-server/services/cliproxy-dashboard-install-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "8.9.0-dev.1",
3
+ "version": "8.9.0-dev.3",
4
4
  "description": "Claude Codex Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",