@kaitranntt/ccs 7.7.0-dev.5 → 7.7.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/auth/profile-registry.d.ts +0 -11
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +0 -30
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +0 -12
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +3 -5
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/cliproxy/config-generator.d.ts +4 -13
- package/dist/cliproxy/config-generator.d.ts.map +1 -1
- package/dist/cliproxy/config-generator.js +15 -37
- package/dist/cliproxy/config-generator.js.map +1 -1
- package/dist/cliproxy/index.d.ts +0 -1
- package/dist/cliproxy/index.d.ts.map +1 -1
- package/dist/cliproxy/index.js +1 -12
- package/dist/cliproxy/index.js.map +1 -1
- package/dist/cliproxy/model-config.d.ts.map +1 -1
- package/dist/cliproxy/model-config.js +3 -4
- package/dist/cliproxy/model-config.js.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.d.ts +2 -12
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.js +6 -49
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
- package/dist/cliproxy/services/variant-service.d.ts +0 -10
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-service.js +6 -63
- package/dist/cliproxy/services/variant-service.js.map +1 -1
- package/dist/cliproxy/services/variant-settings.d.ts +2 -6
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +8 -36
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/session-tracker.d.ts +7 -17
- package/dist/cliproxy/session-tracker.d.ts.map +1 -1
- package/dist/cliproxy/session-tracker.js +40 -86
- package/dist/cliproxy/session-tracker.js.map +1 -1
- package/dist/cliproxy/stats-fetcher.js +6 -6
- package/dist/cliproxy/stats-fetcher.js.map +1 -1
- package/dist/commands/cliproxy-command.d.ts.map +1 -1
- package/dist/commands/cliproxy-command.js +3 -8
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +26 -4
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +1 -18
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +1 -2
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/management/checks/config-check.d.ts +1 -12
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +41 -97
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/management/checks/profile-check.d.ts +1 -5
- package/dist/management/checks/profile-check.d.ts.map +1 -1
- package/dist/management/checks/profile-check.js +25 -56
- package/dist/management/checks/profile-check.js.map +1 -1
- package/dist/management/recovery-manager.d.ts +12 -0
- package/dist/management/recovery-manager.d.ts.map +1 -1
- package/dist/management/recovery-manager.js +92 -0
- package/dist/management/recovery-manager.js.map +1 -1
- package/dist/types/config.d.ts +0 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/ui/assets/{accounts-SAhf2aVn.js → accounts-BMhHiKKx.js} +1 -1
- package/dist/ui/assets/{api-DgjYmgeK.js → api-OCBlXCQa.js} +1 -1
- package/dist/ui/assets/{card-BrSGmssG.js → card-CLsl42We.js} +1 -1
- package/dist/ui/assets/cliproxy-C09j9zae.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-CM6pDYK8.js +1 -0
- package/dist/ui/assets/{confirm-dialog-B0FsZkP6.js → confirm-dialog-BtYM09Tb.js} +1 -1
- package/dist/ui/assets/{copilot-Bccuuvux.js → copilot-7MWkGdns.js} +2 -2
- package/dist/ui/assets/{globalenv-section-Bli-EFPP.js → globalenv-section-Co6qbs3V.js} +1 -1
- package/dist/ui/assets/{health-mnF1gWAc.js → health-Bh1b5210.js} +1 -1
- package/dist/ui/assets/icons-B9mnOvwW.js +1 -0
- package/dist/ui/assets/{index-B38yaYR3.js → index-B_TRzkFq.js} +1 -1
- package/dist/ui/assets/{index-Buv2h9oP.js → index-C8KcL2cj.js} +1 -1
- package/dist/ui/assets/{index-t5yDkLoB.js → index-CApIIy9d.js} +12 -12
- package/dist/ui/assets/index-CK2sRZzn.css +1 -0
- package/dist/ui/assets/{index-mn6heIpP.js → index-CXVq9xuH.js} +1 -1
- package/dist/ui/assets/{shared-B9w3h6Sd.js → shared-Ckt5nAjF.js} +1 -1
- package/dist/ui/assets/{switch-CRxPpAN8.js → switch-BCFPnHGe.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/port-utils.d.ts +2 -0
- package/dist/utils/port-utils.d.ts.map +1 -1
- package/dist/utils/port-utils.js +5 -10
- package/dist/utils/port-utils.js.map +1 -1
- package/dist/web-server/file-watcher.d.ts.map +1 -1
- package/dist/web-server/file-watcher.js +2 -3
- package/dist/web-server/file-watcher.js.map +1 -1
- package/dist/web-server/health/config-checks.d.ts +2 -3
- package/dist/web-server/health/config-checks.d.ts.map +1 -1
- package/dist/web-server/health/config-checks.js +2 -40
- package/dist/web-server/health/config-checks.js.map +1 -1
- package/dist/web-server/health/profile-checks.d.ts +1 -2
- package/dist/web-server/health/profile-checks.d.ts.map +1 -1
- package/dist/web-server/health/profile-checks.js +1 -33
- package/dist/web-server/health/profile-checks.js.map +1 -1
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +0 -14
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/overview-routes.d.ts.map +1 -1
- package/dist/web-server/overview-routes.js +29 -10
- package/dist/web-server/overview-routes.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts +2 -3
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +46 -43
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts +6 -0
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +24 -1
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +13 -161
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/routes/variant-routes.d.ts +0 -2
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
- package/dist/web-server/routes/variant-routes.js +98 -44
- package/dist/web-server/routes/variant-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/cliproxy/auth-token-manager.d.ts +0 -82
- package/dist/cliproxy/auth-token-manager.d.ts.map +0 -1
- package/dist/cliproxy/auth-token-manager.js +0 -187
- package/dist/cliproxy/auth-token-manager.js.map +0 -1
- package/dist/commands/tokens-command.d.ts +0 -19
- package/dist/commands/tokens-command.d.ts.map +0 -1
- package/dist/commands/tokens-command.js +0 -173
- package/dist/commands/tokens-command.js.map +0 -1
- package/dist/ui/assets/auth-section-c488oSia.js +0 -1
- package/dist/ui/assets/cliproxy-DagVtdBM.js +0 -3
- package/dist/ui/assets/cliproxy-control-panel-CqFvwaNM.js +0 -1
- package/dist/ui/assets/icons-DBie6Tez.js +0 -1
- package/dist/ui/assets/index-CytnH70K.css +0 -1
|
@@ -20,12 +20,6 @@ interface SessionLock {
|
|
|
20
20
|
sessions: string[];
|
|
21
21
|
startedAt: string;
|
|
22
22
|
}
|
|
23
|
-
/** Get path to session lock file (default port) - kept for future use */
|
|
24
|
-
declare function _getSessionLockPath(): string;
|
|
25
|
-
export { _getSessionLockPath as getSessionLockPath };
|
|
26
|
-
export { deleteSessionLockForPort };
|
|
27
|
-
/** Delete session lock file for specific port */
|
|
28
|
-
declare function deleteSessionLockForPort(port: number): void;
|
|
29
23
|
/**
|
|
30
24
|
* Check if there's an existing proxy running that we can reuse.
|
|
31
25
|
* Returns the existing lock if proxy is healthy, null otherwise.
|
|
@@ -39,22 +33,18 @@ export declare function getExistingProxy(port: number): SessionLock | null;
|
|
|
39
33
|
export declare function registerSession(port: number, proxyPid: number): string;
|
|
40
34
|
/**
|
|
41
35
|
* Unregister a session from the proxy.
|
|
42
|
-
* @param sessionId Session ID to unregister
|
|
43
|
-
* @param port Port to unregister from (optional, searches default port if not provided)
|
|
44
36
|
* @returns true if this was the last session (proxy should be killed)
|
|
45
37
|
*/
|
|
46
|
-
export declare function unregisterSession(sessionId: string
|
|
38
|
+
export declare function unregisterSession(sessionId: string): boolean;
|
|
47
39
|
/**
|
|
48
40
|
* Get current session count for the proxy.
|
|
49
|
-
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
50
41
|
*/
|
|
51
|
-
export declare function getSessionCount(
|
|
42
|
+
export declare function getSessionCount(): number;
|
|
52
43
|
/**
|
|
53
44
|
* Check if proxy has any active sessions.
|
|
54
45
|
* Used to determine if a "zombie" proxy should be killed.
|
|
55
|
-
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
56
46
|
*/
|
|
57
|
-
export declare function hasActiveSessions(
|
|
47
|
+
export declare function hasActiveSessions(): boolean;
|
|
58
48
|
/**
|
|
59
49
|
* Clean up orphaned sessions (when proxy crashes).
|
|
60
50
|
* Called on startup to ensure clean state.
|
|
@@ -63,23 +53,23 @@ export declare function cleanupOrphanedSessions(port: number): void;
|
|
|
63
53
|
/**
|
|
64
54
|
* Stop the CLIProxy process and clean up session lock.
|
|
65
55
|
* Falls back to port-based detection if no session lock exists.
|
|
66
|
-
* @param port Port to stop (defaults to CLIPROXY_DEFAULT_PORT)
|
|
67
56
|
* @returns Object with success status and details
|
|
68
57
|
*/
|
|
69
|
-
export declare function stopProxy(
|
|
58
|
+
export declare function stopProxy(): Promise<{
|
|
70
59
|
stopped: boolean;
|
|
71
60
|
pid?: number;
|
|
72
61
|
sessionCount?: number;
|
|
73
62
|
error?: string;
|
|
74
63
|
}>;
|
|
75
64
|
/**
|
|
76
|
-
* Get proxy status information
|
|
65
|
+
* Get proxy status information.
|
|
77
66
|
*/
|
|
78
|
-
export declare function getProxyStatus(
|
|
67
|
+
export declare function getProxyStatus(): {
|
|
79
68
|
running: boolean;
|
|
80
69
|
port?: number;
|
|
81
70
|
pid?: number;
|
|
82
71
|
sessionCount?: number;
|
|
83
72
|
startedAt?: string;
|
|
84
73
|
};
|
|
74
|
+
export {};
|
|
85
75
|
//# sourceMappingURL=session-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,kCAAkC;AAClC,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,kCAAkC;AAClC,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAmBjE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBtE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAuB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAe1D;AAED;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAyDD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAoBA"}
|
|
@@ -38,7 +38,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
38
38
|
return result;
|
|
39
39
|
};
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.getProxyStatus = exports.stopProxy = exports.cleanupOrphanedSessions = exports.hasActiveSessions = exports.getSessionCount = exports.unregisterSession = exports.registerSession = exports.getExistingProxy =
|
|
41
|
+
exports.getProxyStatus = exports.stopProxy = exports.cleanupOrphanedSessions = exports.hasActiveSessions = exports.getSessionCount = exports.unregisterSession = exports.registerSession = exports.getExistingProxy = void 0;
|
|
42
42
|
const fs = __importStar(require("fs"));
|
|
43
43
|
const path = __importStar(require("path"));
|
|
44
44
|
const crypto = __importStar(require("crypto"));
|
|
@@ -49,21 +49,13 @@ const config_generator_2 = require("./config-generator");
|
|
|
49
49
|
function generateSessionId() {
|
|
50
50
|
return crypto.randomBytes(8).toString('hex');
|
|
51
51
|
}
|
|
52
|
-
/** Get path to session lock file
|
|
53
|
-
function
|
|
54
|
-
|
|
55
|
-
return path.join((0, config_generator_1.getCliproxyDir)(), 'sessions.json');
|
|
56
|
-
}
|
|
57
|
-
return path.join((0, config_generator_1.getCliproxyDir)(), `sessions-${port}.json`);
|
|
58
|
-
}
|
|
59
|
-
/** Get path to session lock file (default port) - kept for future use */
|
|
60
|
-
function _getSessionLockPath() {
|
|
61
|
-
return getSessionLockPathForPort(config_generator_2.CLIPROXY_DEFAULT_PORT);
|
|
52
|
+
/** Get path to session lock file */
|
|
53
|
+
function getSessionLockPath() {
|
|
54
|
+
return path.join((0, config_generator_1.getCliproxyDir)(), 'sessions.json');
|
|
62
55
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const lockPath = getSessionLockPathForPort(port);
|
|
56
|
+
/** Read session lock file (returns null if not exists or invalid) */
|
|
57
|
+
function readSessionLock() {
|
|
58
|
+
const lockPath = getSessionLockPath();
|
|
67
59
|
try {
|
|
68
60
|
if (!fs.existsSync(lockPath)) {
|
|
69
61
|
return null;
|
|
@@ -82,22 +74,18 @@ function readSessionLockForPort(port) {
|
|
|
82
74
|
return null;
|
|
83
75
|
}
|
|
84
76
|
}
|
|
85
|
-
/**
|
|
86
|
-
function
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
/** Write session lock file for specific port */
|
|
90
|
-
function writeSessionLockForPort(lock) {
|
|
91
|
-
const lockPath = getSessionLockPathForPort(lock.port);
|
|
77
|
+
/** Write session lock file */
|
|
78
|
+
function writeSessionLock(lock) {
|
|
79
|
+
const lockPath = getSessionLockPath();
|
|
92
80
|
const dir = path.dirname(lockPath);
|
|
93
81
|
if (!fs.existsSync(dir)) {
|
|
94
82
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
95
83
|
}
|
|
96
84
|
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2), { mode: 0o600 });
|
|
97
85
|
}
|
|
98
|
-
/** Delete session lock file
|
|
99
|
-
function
|
|
100
|
-
const lockPath =
|
|
86
|
+
/** Delete session lock file */
|
|
87
|
+
function deleteSessionLock() {
|
|
88
|
+
const lockPath = getSessionLockPath();
|
|
101
89
|
try {
|
|
102
90
|
if (fs.existsSync(lockPath)) {
|
|
103
91
|
fs.unlinkSync(lockPath);
|
|
@@ -107,11 +95,6 @@ function deleteSessionLockForPort(port) {
|
|
|
107
95
|
// Ignore errors on cleanup
|
|
108
96
|
}
|
|
109
97
|
}
|
|
110
|
-
exports.deleteSessionLockForPort = deleteSessionLockForPort;
|
|
111
|
-
/** Delete session lock file (default port) */
|
|
112
|
-
function deleteSessionLock() {
|
|
113
|
-
deleteSessionLockForPort(config_generator_2.CLIPROXY_DEFAULT_PORT);
|
|
114
|
-
}
|
|
115
98
|
/** Check if a PID is still running */
|
|
116
99
|
function isProcessRunning(pid) {
|
|
117
100
|
try {
|
|
@@ -119,13 +102,7 @@ function isProcessRunning(pid) {
|
|
|
119
102
|
process.kill(pid, 0);
|
|
120
103
|
return true;
|
|
121
104
|
}
|
|
122
|
-
catch
|
|
123
|
-
const e = err;
|
|
124
|
-
// EPERM means process exists but we don't have permission to signal it
|
|
125
|
-
if (e.code === 'EPERM') {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
// ESRCH means no such process
|
|
105
|
+
catch {
|
|
129
106
|
return false;
|
|
130
107
|
}
|
|
131
108
|
}
|
|
@@ -134,7 +111,7 @@ function isProcessRunning(pid) {
|
|
|
134
111
|
* Returns the existing lock if proxy is healthy, null otherwise.
|
|
135
112
|
*/
|
|
136
113
|
function getExistingProxy(port) {
|
|
137
|
-
const lock =
|
|
114
|
+
const lock = readSessionLock();
|
|
138
115
|
if (!lock) {
|
|
139
116
|
return null;
|
|
140
117
|
}
|
|
@@ -145,7 +122,7 @@ function getExistingProxy(port) {
|
|
|
145
122
|
// Verify proxy process is still running
|
|
146
123
|
if (!isProcessRunning(lock.pid)) {
|
|
147
124
|
// Proxy crashed - clean up stale lock
|
|
148
|
-
|
|
125
|
+
deleteSessionLock();
|
|
149
126
|
return null;
|
|
150
127
|
}
|
|
151
128
|
return lock;
|
|
@@ -158,11 +135,11 @@ exports.getExistingProxy = getExistingProxy;
|
|
|
158
135
|
*/
|
|
159
136
|
function registerSession(port, proxyPid) {
|
|
160
137
|
const sessionId = generateSessionId();
|
|
161
|
-
const existingLock =
|
|
138
|
+
const existingLock = readSessionLock();
|
|
162
139
|
if (existingLock && existingLock.port === port && existingLock.pid === proxyPid) {
|
|
163
140
|
// Add to existing sessions
|
|
164
141
|
existingLock.sessions.push(sessionId);
|
|
165
|
-
|
|
142
|
+
writeSessionLock(existingLock);
|
|
166
143
|
}
|
|
167
144
|
else {
|
|
168
145
|
// Create new lock (first session for this proxy)
|
|
@@ -172,36 +149,16 @@ function registerSession(port, proxyPid) {
|
|
|
172
149
|
sessions: [sessionId],
|
|
173
150
|
startedAt: new Date().toISOString(),
|
|
174
151
|
};
|
|
175
|
-
|
|
152
|
+
writeSessionLock(newLock);
|
|
176
153
|
}
|
|
177
154
|
return sessionId;
|
|
178
155
|
}
|
|
179
156
|
exports.registerSession = registerSession;
|
|
180
157
|
/**
|
|
181
158
|
* Unregister a session from the proxy.
|
|
182
|
-
* @param sessionId Session ID to unregister
|
|
183
|
-
* @param port Port to unregister from (optional, searches default port if not provided)
|
|
184
159
|
* @returns true if this was the last session (proxy should be killed)
|
|
185
160
|
*/
|
|
186
|
-
function unregisterSession(sessionId
|
|
187
|
-
// If port provided, use port-specific lookup
|
|
188
|
-
if (port !== undefined) {
|
|
189
|
-
const lock = readSessionLockForPort(port);
|
|
190
|
-
if (!lock) {
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
const index = lock.sessions.indexOf(sessionId);
|
|
194
|
-
if (index !== -1) {
|
|
195
|
-
lock.sessions.splice(index, 1);
|
|
196
|
-
}
|
|
197
|
-
if (lock.sessions.length === 0) {
|
|
198
|
-
deleteSessionLockForPort(port);
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
writeSessionLockForPort(lock);
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
// Fallback: search default port (backward compat)
|
|
161
|
+
function unregisterSession(sessionId) {
|
|
205
162
|
const lock = readSessionLock();
|
|
206
163
|
if (!lock) {
|
|
207
164
|
// No lock file - assume we're the only session
|
|
@@ -219,16 +176,15 @@ function unregisterSession(sessionId, port) {
|
|
|
219
176
|
return true;
|
|
220
177
|
}
|
|
221
178
|
// Other sessions still active - keep proxy running
|
|
222
|
-
|
|
179
|
+
writeSessionLock(lock);
|
|
223
180
|
return false;
|
|
224
181
|
}
|
|
225
182
|
exports.unregisterSession = unregisterSession;
|
|
226
183
|
/**
|
|
227
184
|
* Get current session count for the proxy.
|
|
228
|
-
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
229
185
|
*/
|
|
230
|
-
function getSessionCount(
|
|
231
|
-
const lock =
|
|
186
|
+
function getSessionCount() {
|
|
187
|
+
const lock = readSessionLock();
|
|
232
188
|
if (!lock) {
|
|
233
189
|
return 0;
|
|
234
190
|
}
|
|
@@ -238,16 +194,15 @@ exports.getSessionCount = getSessionCount;
|
|
|
238
194
|
/**
|
|
239
195
|
* Check if proxy has any active sessions.
|
|
240
196
|
* Used to determine if a "zombie" proxy should be killed.
|
|
241
|
-
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
242
197
|
*/
|
|
243
|
-
function hasActiveSessions(
|
|
244
|
-
const lock =
|
|
198
|
+
function hasActiveSessions() {
|
|
199
|
+
const lock = readSessionLock();
|
|
245
200
|
if (!lock) {
|
|
246
201
|
return false;
|
|
247
202
|
}
|
|
248
203
|
// Verify proxy is still running
|
|
249
204
|
if (!isProcessRunning(lock.pid)) {
|
|
250
|
-
|
|
205
|
+
deleteSessionLock();
|
|
251
206
|
return false;
|
|
252
207
|
}
|
|
253
208
|
return lock.sessions.length > 0;
|
|
@@ -258,38 +213,37 @@ exports.hasActiveSessions = hasActiveSessions;
|
|
|
258
213
|
* Called on startup to ensure clean state.
|
|
259
214
|
*/
|
|
260
215
|
function cleanupOrphanedSessions(port) {
|
|
261
|
-
const lock =
|
|
216
|
+
const lock = readSessionLock();
|
|
262
217
|
if (!lock) {
|
|
263
218
|
return;
|
|
264
219
|
}
|
|
265
|
-
// If port doesn't match, this
|
|
220
|
+
// If port doesn't match, this lock is for a different proxy
|
|
266
221
|
if (lock.port !== port) {
|
|
267
222
|
return;
|
|
268
223
|
}
|
|
269
224
|
// If proxy is dead, clean up lock
|
|
270
225
|
if (!isProcessRunning(lock.pid)) {
|
|
271
|
-
|
|
226
|
+
deleteSessionLock();
|
|
272
227
|
}
|
|
273
228
|
}
|
|
274
229
|
exports.cleanupOrphanedSessions = cleanupOrphanedSessions;
|
|
275
230
|
/**
|
|
276
231
|
* Stop the CLIProxy process and clean up session lock.
|
|
277
232
|
* Falls back to port-based detection if no session lock exists.
|
|
278
|
-
* @param port Port to stop (defaults to CLIPROXY_DEFAULT_PORT)
|
|
279
233
|
* @returns Object with success status and details
|
|
280
234
|
*/
|
|
281
|
-
async function stopProxy(
|
|
282
|
-
const lock =
|
|
235
|
+
async function stopProxy() {
|
|
236
|
+
const lock = readSessionLock();
|
|
283
237
|
if (!lock) {
|
|
284
238
|
// No session lock - try to find process by port (legacy/untracked proxy)
|
|
285
|
-
const portProcess = await (0, port_utils_1.getPortProcess)(
|
|
239
|
+
const portProcess = await (0, port_utils_1.getPortProcess)(config_generator_2.CLIPROXY_DEFAULT_PORT);
|
|
286
240
|
if (!portProcess) {
|
|
287
241
|
return { stopped: false, error: 'No active CLIProxy session found' };
|
|
288
242
|
}
|
|
289
243
|
if (!(0, port_utils_1.isCLIProxyProcess)(portProcess)) {
|
|
290
244
|
return {
|
|
291
245
|
stopped: false,
|
|
292
|
-
error: `Port ${
|
|
246
|
+
error: `Port ${config_generator_2.CLIPROXY_DEFAULT_PORT} is in use by ${portProcess.processName}, not CLIProxy`,
|
|
293
247
|
};
|
|
294
248
|
}
|
|
295
249
|
// Found CLIProxy running without session lock - kill it
|
|
@@ -307,7 +261,7 @@ async function stopProxy(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
|
307
261
|
}
|
|
308
262
|
// Check if proxy is running
|
|
309
263
|
if (!isProcessRunning(lock.pid)) {
|
|
310
|
-
|
|
264
|
+
deleteSessionLock();
|
|
311
265
|
return { stopped: false, error: 'CLIProxy was not running (cleaned up stale lock)' };
|
|
312
266
|
}
|
|
313
267
|
const sessionCount = lock.sessions.length;
|
|
@@ -316,14 +270,14 @@ async function stopProxy(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
|
316
270
|
// Kill the proxy process
|
|
317
271
|
process.kill(pid, 'SIGTERM');
|
|
318
272
|
// Clean up session lock
|
|
319
|
-
|
|
273
|
+
deleteSessionLock();
|
|
320
274
|
return { stopped: true, pid, sessionCount };
|
|
321
275
|
}
|
|
322
276
|
catch (err) {
|
|
323
277
|
const error = err;
|
|
324
278
|
if (error.code === 'ESRCH') {
|
|
325
279
|
// Process already gone
|
|
326
|
-
|
|
280
|
+
deleteSessionLock();
|
|
327
281
|
return { stopped: false, error: 'CLIProxy process already terminated' };
|
|
328
282
|
}
|
|
329
283
|
return { stopped: false, pid, error: `Failed to stop: ${error.message}` };
|
|
@@ -331,16 +285,16 @@ async function stopProxy(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
|
331
285
|
}
|
|
332
286
|
exports.stopProxy = stopProxy;
|
|
333
287
|
/**
|
|
334
|
-
* Get proxy status information
|
|
288
|
+
* Get proxy status information.
|
|
335
289
|
*/
|
|
336
|
-
function getProxyStatus(
|
|
337
|
-
const lock =
|
|
290
|
+
function getProxyStatus() {
|
|
291
|
+
const lock = readSessionLock();
|
|
338
292
|
if (!lock) {
|
|
339
293
|
return { running: false };
|
|
340
294
|
}
|
|
341
295
|
// Verify proxy is still running
|
|
342
296
|
if (!isProcessRunning(lock.pid)) {
|
|
343
|
-
|
|
297
|
+
deleteSessionLock();
|
|
344
298
|
return { running: false };
|
|
345
299
|
}
|
|
346
300
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AACjC,yDAAoD;AACpD,oDAAwE;AACxE,yDAA2D;AAU3D,iCAAiC;AACjC,SAAS,iBAAiB;IACxB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.isCliproxyRunning = exports.fetchCliproxyErrorLogContent = exports.fetchCliproxyErrorLogs = exports.fetchCliproxyModels = exports.fetchCliproxyStats = void 0;
|
|
10
|
-
const
|
|
10
|
+
const config_generator_1 = require("./config-generator");
|
|
11
11
|
const proxy_target_resolver_1 = require("./proxy-target-resolver");
|
|
12
12
|
/**
|
|
13
13
|
* Fetch usage statistics from CLIProxyAPI management API
|
|
@@ -28,7 +28,7 @@ async function fetchCliproxyStats(port) {
|
|
|
28
28
|
// For management endpoints, use CCS control panel secret for local, remote auth for remote
|
|
29
29
|
const headers = target.isRemote
|
|
30
30
|
? (0, proxy_target_resolver_1.buildProxyHeaders)(target)
|
|
31
|
-
: { Accept: 'application/json', Authorization: `Bearer ${
|
|
31
|
+
: { Accept: 'application/json', Authorization: `Bearer ${config_generator_1.CCS_CONTROL_PANEL_SECRET}` };
|
|
32
32
|
const response = await fetch(url, {
|
|
33
33
|
signal: controller.signal,
|
|
34
34
|
headers,
|
|
@@ -127,10 +127,10 @@ async function fetchCliproxyModels(port) {
|
|
|
127
127
|
target.port = port;
|
|
128
128
|
}
|
|
129
129
|
const url = (0, proxy_target_resolver_1.buildProxyUrl)(target, '/v1/models');
|
|
130
|
-
// For /v1 endpoints: use remote auth token for remote,
|
|
130
|
+
// For /v1 endpoints: use remote auth token for remote, ccs-internal-managed for local
|
|
131
131
|
const headers = target.isRemote
|
|
132
132
|
? (0, proxy_target_resolver_1.buildProxyHeaders)(target)
|
|
133
|
-
: { Accept: 'application/json', Authorization:
|
|
133
|
+
: { Accept: 'application/json', Authorization: 'Bearer ccs-internal-managed' };
|
|
134
134
|
const response = await fetch(url, {
|
|
135
135
|
signal: controller.signal,
|
|
136
136
|
headers,
|
|
@@ -183,7 +183,7 @@ async function fetchCliproxyErrorLogs(port) {
|
|
|
183
183
|
// For management endpoints, use CCS control panel secret for local, remote auth for remote
|
|
184
184
|
const headers = target.isRemote
|
|
185
185
|
? (0, proxy_target_resolver_1.buildProxyHeaders)(target)
|
|
186
|
-
: { Accept: 'application/json', Authorization: `Bearer ${
|
|
186
|
+
: { Accept: 'application/json', Authorization: `Bearer ${config_generator_1.CCS_CONTROL_PANEL_SECRET}` };
|
|
187
187
|
const response = await fetch(url, {
|
|
188
188
|
signal: controller.signal,
|
|
189
189
|
headers,
|
|
@@ -220,7 +220,7 @@ async function fetchCliproxyErrorLogContent(name, port) {
|
|
|
220
220
|
// For management endpoints, use CCS control panel secret for local, remote auth for remote
|
|
221
221
|
const headers = target.isRemote
|
|
222
222
|
? (0, proxy_target_resolver_1.buildProxyHeaders)(target)
|
|
223
|
-
: { Authorization: `Bearer ${
|
|
223
|
+
: { Authorization: `Bearer ${config_generator_1.CCS_CONTROL_PANEL_SECRET}` };
|
|
224
224
|
const response = await fetch(url, {
|
|
225
225
|
signal: controller.signal,
|
|
226
226
|
headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-fetcher.js","sourceRoot":"","sources":["../../src/cliproxy/stats-fetcher.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"stats-fetcher.js","sourceRoot":"","sources":["../../src/cliproxy/stats-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-command.d.ts","sourceRoot":"","sources":["../../src/commands/cliproxy-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"cliproxy-command.d.ts","sourceRoot":"","sources":["../../src/commands/cliproxy-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAkjBH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDzE"}
|
|
@@ -231,8 +231,7 @@ async function handleCreate(args) {
|
|
|
231
231
|
const settingsDisplay = (0, unified_config_loader_1.isUnifiedMode)()
|
|
232
232
|
? '~/.ccs/config.yaml'
|
|
233
233
|
: `~/.ccs/${path.basename(result.settingsPath || '')}`;
|
|
234
|
-
|
|
235
|
-
console.log((0, ui_1.infoBox)(`Variant: ${name}\nProvider: ${provider}\nModel: ${model}\n${portInfo}${account ? `Account: ${account}\n` : ''}${(0, unified_config_loader_1.isUnifiedMode)() ? 'Config' : 'Settings'}: ${settingsDisplay}`, configType));
|
|
234
|
+
console.log((0, ui_1.infoBox)(`Variant: ${name}\nProvider: ${provider}\nModel: ${model}\n${account ? `Account: ${account}\n` : ''}${(0, unified_config_loader_1.isUnifiedMode)() ? 'Config' : 'Settings'}: ${settingsDisplay}`, configType));
|
|
236
235
|
console.log('');
|
|
237
236
|
console.log((0, ui_1.header)('Usage'));
|
|
238
237
|
console.log(` ${(0, ui_1.color)(`ccs ${name} "your prompt"`, 'command')}`);
|
|
@@ -268,10 +267,9 @@ async function handleList() {
|
|
|
268
267
|
console.log((0, ui_1.subheader)('Custom Variants'));
|
|
269
268
|
const rows = variantNames.map((name) => {
|
|
270
269
|
const variant = variants[name];
|
|
271
|
-
|
|
272
|
-
return [name, variant.provider, portStr, variant.settings || '-'];
|
|
270
|
+
return [name, variant.provider, variant.settings || '-'];
|
|
273
271
|
});
|
|
274
|
-
console.log((0, ui_1.table)(rows, { head: ['Variant', 'Provider', '
|
|
272
|
+
console.log((0, ui_1.table)(rows, { head: ['Variant', 'Provider', 'Settings'], colWidths: [15, 12, 35] }));
|
|
275
273
|
console.log('');
|
|
276
274
|
console.log((0, ui_1.dim)(`Total: ${variantNames.length} custom variant(s)`));
|
|
277
275
|
console.log('');
|
|
@@ -317,9 +315,6 @@ async function handleRemove(args) {
|
|
|
317
315
|
console.log('');
|
|
318
316
|
console.log(`Variant '${(0, ui_1.color)(name, 'command')}' will be removed.`);
|
|
319
317
|
console.log(` Provider: ${variant.provider}`);
|
|
320
|
-
if (variant.port) {
|
|
321
|
-
console.log(` Port: ${variant.port}`);
|
|
322
|
-
}
|
|
323
318
|
console.log(` Settings: ${variant.settings || '-'}`);
|
|
324
319
|
console.log('');
|
|
325
320
|
const confirmed = parsedArgs.yes || (await prompt_1.InteractivePrompt.confirm('Delete this variant?', { default: false }));
|