@kaitranntt/ccs 7.7.1 → 7.8.0-dev.2
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/profile-reader.js +3 -3
- package/dist/api/services/profile-reader.js.map +1 -1
- package/dist/api/services/profile-writer.js +1 -1
- package/dist/api/services/profile-writer.js.map +1 -1
- package/dist/auth/profile-registry.d.ts +11 -0
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +30 -0
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +12 -0
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +2 -0
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
- package/dist/cliproxy/auth/kiro-import.d.ts +23 -0
- package/dist/cliproxy/auth/kiro-import.d.ts.map +1 -0
- package/dist/cliproxy/auth/kiro-import.js +140 -0
- package/dist/cliproxy/auth/kiro-import.js.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +10 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-process.js +25 -4
- package/dist/cliproxy/auth/oauth-process.js.map +1 -1
- package/dist/cliproxy/auth-token-manager.d.ts +82 -0
- package/dist/cliproxy/auth-token-manager.d.ts.map +1 -0
- package/dist/cliproxy/auth-token-manager.js +187 -0
- package/dist/cliproxy/auth-token-manager.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +21 -0
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +64 -7
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/cliproxy/config-generator.d.ts +13 -4
- package/dist/cliproxy/config-generator.d.ts.map +1 -1
- package/dist/cliproxy/config-generator.js +37 -15
- package/dist/cliproxy/config-generator.js.map +1 -1
- package/dist/cliproxy/index.d.ts +1 -0
- package/dist/cliproxy/index.d.ts.map +1 -1
- package/dist/cliproxy/index.js +12 -1
- package/dist/cliproxy/index.js.map +1 -1
- package/dist/cliproxy/model-config.d.ts.map +1 -1
- package/dist/cliproxy/model-config.js +4 -3
- package/dist/cliproxy/model-config.js.map +1 -1
- package/dist/cliproxy/proxy-detector.d.ts +2 -0
- package/dist/cliproxy/proxy-detector.d.ts.map +1 -1
- package/dist/cliproxy/proxy-detector.js +7 -2
- package/dist/cliproxy/proxy-detector.js.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.d.ts +12 -2
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.js +51 -8
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
- package/dist/cliproxy/services/variant-service.d.ts +10 -0
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-service.js +63 -6
- package/dist/cliproxy/services/variant-service.js.map +1 -1
- package/dist/cliproxy/services/variant-settings.d.ts +6 -2
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +36 -8
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/session-tracker.d.ts +30 -8
- package/dist/cliproxy/session-tracker.d.ts.map +1 -1
- package/dist/cliproxy/session-tracker.js +150 -41
- 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 +8 -3
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +1 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/tokens-command.d.ts +19 -0
- package/dist/commands/tokens-command.d.ts.map +1 -0
- package/dist/commands/tokens-command.js +173 -0
- package/dist/commands/tokens-command.js.map +1 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +4 -26
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +18 -1
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +2 -1
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/management/checks/config-check.d.ts +12 -1
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +97 -41
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/management/checks/profile-check.d.ts +5 -1
- package/dist/management/checks/profile-check.d.ts.map +1 -1
- package/dist/management/checks/profile-check.js +56 -25
- package/dist/management/checks/profile-check.js.map +1 -1
- package/dist/management/recovery-manager.d.ts +0 -12
- package/dist/management/recovery-manager.d.ts.map +1 -1
- package/dist/management/recovery-manager.js +0 -92
- package/dist/management/recovery-manager.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/ui/assets/{accounts-BMhHiKKx.js → accounts-BskeFX4q.js} +1 -1
- package/dist/ui/assets/{api-OCBlXCQa.js → api-DDfDv6io.js} +1 -1
- package/dist/ui/assets/auth-section-CJ-rbTvw.js +1 -0
- package/dist/ui/assets/{card-CLsl42We.js → card-Bq2myX0t.js} +1 -1
- package/dist/ui/assets/cliproxy-VwDQtVjR.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-Cry9Abs2.js +1 -0
- package/dist/ui/assets/{confirm-dialog-BtYM09Tb.js → confirm-dialog-Co6NQQJE.js} +1 -1
- package/dist/ui/assets/{copilot-7MWkGdns.js → copilot-O4-5AJN-.js} +3 -3
- package/dist/ui/assets/{globalenv-section-Co6qbs3V.js → globalenv-section-Y-8L73rf.js} +1 -1
- package/dist/ui/assets/{health-Bh1b5210.js → health-Bz25ui1F.js} +1 -1
- package/dist/ui/assets/icons-CMYcel9O.js +1 -0
- package/dist/ui/assets/{index-B_TRzkFq.js → index-B6iHZf0L.js} +1 -1
- package/dist/ui/assets/{index-CApIIy9d.js → index-BDZarTrS.js} +14 -14
- package/dist/ui/assets/{index-C8KcL2cj.js → index-BnkiBb9j.js} +1 -1
- package/dist/ui/assets/index-CytnH70K.css +1 -0
- package/dist/ui/assets/{index-CXVq9xuH.js → index-O_YI97iE.js} +1 -1
- package/dist/ui/assets/{shared-Ckt5nAjF.js → shared-BWVvIk4j.js} +1 -1
- package/dist/ui/assets/{switch-BCFPnHGe.js → switch-BVhPwalx.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/config-manager.d.ts +7 -0
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +66 -12
- package/dist/utils/config-manager.js.map +1 -1
- package/dist/utils/port-utils.d.ts +8 -0
- package/dist/utils/port-utils.d.ts.map +1 -1
- package/dist/utils/port-utils.js +21 -1
- 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 +3 -2
- package/dist/web-server/file-watcher.js.map +1 -1
- package/dist/web-server/health/config-checks.d.ts +3 -2
- package/dist/web-server/health/config-checks.d.ts.map +1 -1
- package/dist/web-server/health/config-checks.js +40 -2
- package/dist/web-server/health/config-checks.js.map +1 -1
- package/dist/web-server/health/profile-checks.d.ts +2 -1
- package/dist/web-server/health/profile-checks.d.ts.map +1 -1
- package/dist/web-server/health/profile-checks.js +33 -1
- 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 +14 -0
- 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 +11 -30
- package/dist/web-server/overview-routes.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts +3 -2
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +43 -46
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +47 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts +2 -7
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +4 -26
- 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 +161 -13
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/routes/variant-routes.d.ts +2 -0
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
- package/dist/web-server/routes/variant-routes.js +44 -98
- package/dist/web-server/routes/variant-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/cliproxy-C09j9zae.js +0 -3
- package/dist/ui/assets/cliproxy-control-panel-CM6pDYK8.js +0 -1
- package/dist/ui/assets/icons-B9mnOvwW.js +0 -1
- package/dist/ui/assets/index-CK2sRZzn.css +0 -1
|
@@ -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 = void 0;
|
|
41
|
+
exports.getRunningProxyVersion = exports.getProxyStatus = exports.stopProxy = exports.cleanupOrphanedSessions = exports.hasActiveSessions = exports.getSessionCount = exports.unregisterSession = exports.registerSession = exports.getExistingProxy = exports.deleteSessionLockForPort = exports.getSessionLockPath = void 0;
|
|
42
42
|
const fs = __importStar(require("fs"));
|
|
43
43
|
const path = __importStar(require("path"));
|
|
44
44
|
const crypto = __importStar(require("crypto"));
|
|
@@ -49,13 +49,21 @@ 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
|
-
|
|
52
|
+
/** Get path to session lock file for specific port */
|
|
53
|
+
function getSessionLockPathForPort(port) {
|
|
54
|
+
if (port === config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
55
|
+
return path.join((0, config_generator_1.getCliproxyDir)(), 'sessions.json');
|
|
56
|
+
}
|
|
57
|
+
return path.join((0, config_generator_1.getCliproxyDir)(), `sessions-${port}.json`);
|
|
55
58
|
}
|
|
56
|
-
/**
|
|
57
|
-
function
|
|
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);
|
|
62
|
+
}
|
|
63
|
+
exports.getSessionLockPath = _getSessionLockPath;
|
|
64
|
+
/** Read session lock file for specific port (returns null if not exists or invalid) */
|
|
65
|
+
function readSessionLockForPort(port) {
|
|
66
|
+
const lockPath = getSessionLockPathForPort(port);
|
|
59
67
|
try {
|
|
60
68
|
if (!fs.existsSync(lockPath)) {
|
|
61
69
|
return null;
|
|
@@ -74,18 +82,22 @@ function readSessionLock() {
|
|
|
74
82
|
return null;
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
|
-
/**
|
|
78
|
-
function
|
|
79
|
-
|
|
85
|
+
/** Read session lock file (default port, returns null if not exists or invalid) */
|
|
86
|
+
function readSessionLock() {
|
|
87
|
+
return readSessionLockForPort(config_generator_2.CLIPROXY_DEFAULT_PORT);
|
|
88
|
+
}
|
|
89
|
+
/** Write session lock file for specific port */
|
|
90
|
+
function writeSessionLockForPort(lock) {
|
|
91
|
+
const lockPath = getSessionLockPathForPort(lock.port);
|
|
80
92
|
const dir = path.dirname(lockPath);
|
|
81
93
|
if (!fs.existsSync(dir)) {
|
|
82
94
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
83
95
|
}
|
|
84
96
|
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2), { mode: 0o600 });
|
|
85
97
|
}
|
|
86
|
-
/** Delete session lock file */
|
|
87
|
-
function
|
|
88
|
-
const lockPath =
|
|
98
|
+
/** Delete session lock file for specific port */
|
|
99
|
+
function deleteSessionLockForPort(port) {
|
|
100
|
+
const lockPath = getSessionLockPathForPort(port);
|
|
89
101
|
try {
|
|
90
102
|
if (fs.existsSync(lockPath)) {
|
|
91
103
|
fs.unlinkSync(lockPath);
|
|
@@ -95,6 +107,11 @@ function deleteSessionLock() {
|
|
|
95
107
|
// Ignore errors on cleanup
|
|
96
108
|
}
|
|
97
109
|
}
|
|
110
|
+
exports.deleteSessionLockForPort = deleteSessionLockForPort;
|
|
111
|
+
/** Delete session lock file (default port) */
|
|
112
|
+
function deleteSessionLock() {
|
|
113
|
+
deleteSessionLockForPort(config_generator_2.CLIPROXY_DEFAULT_PORT);
|
|
114
|
+
}
|
|
98
115
|
/** Check if a PID is still running */
|
|
99
116
|
function isProcessRunning(pid) {
|
|
100
117
|
try {
|
|
@@ -102,16 +119,38 @@ function isProcessRunning(pid) {
|
|
|
102
119
|
process.kill(pid, 0);
|
|
103
120
|
return true;
|
|
104
121
|
}
|
|
105
|
-
catch {
|
|
122
|
+
catch (err) {
|
|
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
|
|
106
129
|
return false;
|
|
107
130
|
}
|
|
108
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Wait for a process to exit within a timeout.
|
|
134
|
+
* @param pid Process ID to wait for
|
|
135
|
+
* @param timeoutMs Maximum time to wait in milliseconds
|
|
136
|
+
* @returns true if process exited, false if timeout
|
|
137
|
+
*/
|
|
138
|
+
async function waitForProcessExit(pid, timeoutMs) {
|
|
139
|
+
const start = Date.now();
|
|
140
|
+
while (Date.now() - start < timeoutMs) {
|
|
141
|
+
if (!isProcessRunning(pid)) {
|
|
142
|
+
return true; // Process exited
|
|
143
|
+
}
|
|
144
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
145
|
+
}
|
|
146
|
+
return false; // Timeout
|
|
147
|
+
}
|
|
109
148
|
/**
|
|
110
149
|
* Check if there's an existing proxy running that we can reuse.
|
|
111
150
|
* Returns the existing lock if proxy is healthy, null otherwise.
|
|
112
151
|
*/
|
|
113
152
|
function getExistingProxy(port) {
|
|
114
|
-
const lock =
|
|
153
|
+
const lock = readSessionLockForPort(port);
|
|
115
154
|
if (!lock) {
|
|
116
155
|
return null;
|
|
117
156
|
}
|
|
@@ -122,7 +161,7 @@ function getExistingProxy(port) {
|
|
|
122
161
|
// Verify proxy process is still running
|
|
123
162
|
if (!isProcessRunning(lock.pid)) {
|
|
124
163
|
// Proxy crashed - clean up stale lock
|
|
125
|
-
|
|
164
|
+
deleteSessionLockForPort(port);
|
|
126
165
|
return null;
|
|
127
166
|
}
|
|
128
167
|
return lock;
|
|
@@ -131,15 +170,18 @@ exports.getExistingProxy = getExistingProxy;
|
|
|
131
170
|
/**
|
|
132
171
|
* Register a new session with the proxy.
|
|
133
172
|
* Call this when starting a new CCS session that will use an existing proxy.
|
|
173
|
+
* @param port Port the proxy is running on
|
|
174
|
+
* @param proxyPid PID of the proxy process
|
|
175
|
+
* @param version Optional CLIProxy version (stored when spawning new proxy)
|
|
134
176
|
* @returns Session ID for this session
|
|
135
177
|
*/
|
|
136
|
-
function registerSession(port, proxyPid) {
|
|
178
|
+
function registerSession(port, proxyPid, version) {
|
|
137
179
|
const sessionId = generateSessionId();
|
|
138
|
-
const existingLock =
|
|
180
|
+
const existingLock = readSessionLockForPort(port);
|
|
139
181
|
if (existingLock && existingLock.port === port && existingLock.pid === proxyPid) {
|
|
140
182
|
// Add to existing sessions
|
|
141
183
|
existingLock.sessions.push(sessionId);
|
|
142
|
-
|
|
184
|
+
writeSessionLockForPort(existingLock);
|
|
143
185
|
}
|
|
144
186
|
else {
|
|
145
187
|
// Create new lock (first session for this proxy)
|
|
@@ -148,17 +190,38 @@ function registerSession(port, proxyPid) {
|
|
|
148
190
|
pid: proxyPid,
|
|
149
191
|
sessions: [sessionId],
|
|
150
192
|
startedAt: new Date().toISOString(),
|
|
193
|
+
version,
|
|
151
194
|
};
|
|
152
|
-
|
|
195
|
+
writeSessionLockForPort(newLock);
|
|
153
196
|
}
|
|
154
197
|
return sessionId;
|
|
155
198
|
}
|
|
156
199
|
exports.registerSession = registerSession;
|
|
157
200
|
/**
|
|
158
201
|
* Unregister a session from the proxy.
|
|
202
|
+
* @param sessionId Session ID to unregister
|
|
203
|
+
* @param port Port to unregister from (optional, searches default port if not provided)
|
|
159
204
|
* @returns true if this was the last session (proxy should be killed)
|
|
160
205
|
*/
|
|
161
|
-
function unregisterSession(sessionId) {
|
|
206
|
+
function unregisterSession(sessionId, port) {
|
|
207
|
+
// If port provided, use port-specific lookup
|
|
208
|
+
if (port !== undefined) {
|
|
209
|
+
const lock = readSessionLockForPort(port);
|
|
210
|
+
if (!lock) {
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
const index = lock.sessions.indexOf(sessionId);
|
|
214
|
+
if (index !== -1) {
|
|
215
|
+
lock.sessions.splice(index, 1);
|
|
216
|
+
}
|
|
217
|
+
if (lock.sessions.length === 0) {
|
|
218
|
+
deleteSessionLockForPort(port);
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
writeSessionLockForPort(lock);
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
// Fallback: search default port (backward compat)
|
|
162
225
|
const lock = readSessionLock();
|
|
163
226
|
if (!lock) {
|
|
164
227
|
// No lock file - assume we're the only session
|
|
@@ -176,15 +239,16 @@ function unregisterSession(sessionId) {
|
|
|
176
239
|
return true;
|
|
177
240
|
}
|
|
178
241
|
// Other sessions still active - keep proxy running
|
|
179
|
-
|
|
242
|
+
writeSessionLockForPort(lock);
|
|
180
243
|
return false;
|
|
181
244
|
}
|
|
182
245
|
exports.unregisterSession = unregisterSession;
|
|
183
246
|
/**
|
|
184
247
|
* Get current session count for the proxy.
|
|
248
|
+
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
185
249
|
*/
|
|
186
|
-
function getSessionCount() {
|
|
187
|
-
const lock =
|
|
250
|
+
function getSessionCount(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
251
|
+
const lock = readSessionLockForPort(port);
|
|
188
252
|
if (!lock) {
|
|
189
253
|
return 0;
|
|
190
254
|
}
|
|
@@ -194,15 +258,16 @@ exports.getSessionCount = getSessionCount;
|
|
|
194
258
|
/**
|
|
195
259
|
* Check if proxy has any active sessions.
|
|
196
260
|
* Used to determine if a "zombie" proxy should be killed.
|
|
261
|
+
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
197
262
|
*/
|
|
198
|
-
function hasActiveSessions() {
|
|
199
|
-
const lock =
|
|
263
|
+
function hasActiveSessions(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
264
|
+
const lock = readSessionLockForPort(port);
|
|
200
265
|
if (!lock) {
|
|
201
266
|
return false;
|
|
202
267
|
}
|
|
203
268
|
// Verify proxy is still running
|
|
204
269
|
if (!isProcessRunning(lock.pid)) {
|
|
205
|
-
|
|
270
|
+
deleteSessionLockForPort(port);
|
|
206
271
|
return false;
|
|
207
272
|
}
|
|
208
273
|
return lock.sessions.length > 0;
|
|
@@ -213,42 +278,55 @@ exports.hasActiveSessions = hasActiveSessions;
|
|
|
213
278
|
* Called on startup to ensure clean state.
|
|
214
279
|
*/
|
|
215
280
|
function cleanupOrphanedSessions(port) {
|
|
216
|
-
const lock =
|
|
281
|
+
const lock = readSessionLockForPort(port);
|
|
217
282
|
if (!lock) {
|
|
218
283
|
return;
|
|
219
284
|
}
|
|
220
|
-
// If port doesn't match, this
|
|
285
|
+
// If port doesn't match, this shouldn't happen with port-specific files
|
|
221
286
|
if (lock.port !== port) {
|
|
222
287
|
return;
|
|
223
288
|
}
|
|
224
289
|
// If proxy is dead, clean up lock
|
|
225
290
|
if (!isProcessRunning(lock.pid)) {
|
|
226
|
-
|
|
291
|
+
deleteSessionLockForPort(port);
|
|
227
292
|
}
|
|
228
293
|
}
|
|
229
294
|
exports.cleanupOrphanedSessions = cleanupOrphanedSessions;
|
|
230
295
|
/**
|
|
231
296
|
* Stop the CLIProxy process and clean up session lock.
|
|
232
297
|
* Falls back to port-based detection if no session lock exists.
|
|
298
|
+
* @param port Port to stop (defaults to CLIPROXY_DEFAULT_PORT)
|
|
233
299
|
* @returns Object with success status and details
|
|
234
300
|
*/
|
|
235
|
-
async function stopProxy() {
|
|
236
|
-
const lock =
|
|
301
|
+
async function stopProxy(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
302
|
+
const lock = readSessionLockForPort(port);
|
|
237
303
|
if (!lock) {
|
|
238
304
|
// No session lock - try to find process by port (legacy/untracked proxy)
|
|
239
|
-
const portProcess = await (0, port_utils_1.getPortProcess)(
|
|
305
|
+
const portProcess = await (0, port_utils_1.getPortProcess)(port);
|
|
240
306
|
if (!portProcess) {
|
|
241
307
|
return { stopped: false, error: 'No active CLIProxy session found' };
|
|
242
308
|
}
|
|
243
309
|
if (!(0, port_utils_1.isCLIProxyProcess)(portProcess)) {
|
|
244
310
|
return {
|
|
245
311
|
stopped: false,
|
|
246
|
-
error: `Port ${
|
|
312
|
+
error: `Port ${port} is in use by ${portProcess.processName}, not CLIProxy`,
|
|
247
313
|
};
|
|
248
314
|
}
|
|
249
315
|
// Found CLIProxy running without session lock - kill it
|
|
250
316
|
try {
|
|
251
317
|
process.kill(portProcess.pid, 'SIGTERM');
|
|
318
|
+
// Wait for graceful shutdown
|
|
319
|
+
const exited = await waitForProcessExit(portProcess.pid, 3000);
|
|
320
|
+
if (!exited) {
|
|
321
|
+
// Escalate to SIGKILL
|
|
322
|
+
try {
|
|
323
|
+
process.kill(portProcess.pid, 'SIGKILL');
|
|
324
|
+
await waitForProcessExit(portProcess.pid, 1000);
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
// Process may have exited between check and kill
|
|
328
|
+
}
|
|
329
|
+
}
|
|
252
330
|
return { stopped: true, pid: portProcess.pid, sessionCount: 0 };
|
|
253
331
|
}
|
|
254
332
|
catch (err) {
|
|
@@ -261,7 +339,7 @@ async function stopProxy() {
|
|
|
261
339
|
}
|
|
262
340
|
// Check if proxy is running
|
|
263
341
|
if (!isProcessRunning(lock.pid)) {
|
|
264
|
-
|
|
342
|
+
deleteSessionLockForPort(port);
|
|
265
343
|
return { stopped: false, error: 'CLIProxy was not running (cleaned up stale lock)' };
|
|
266
344
|
}
|
|
267
345
|
const sessionCount = lock.sessions.length;
|
|
@@ -269,15 +347,27 @@ async function stopProxy() {
|
|
|
269
347
|
try {
|
|
270
348
|
// Kill the proxy process
|
|
271
349
|
process.kill(pid, 'SIGTERM');
|
|
350
|
+
// Wait for graceful shutdown
|
|
351
|
+
const exited = await waitForProcessExit(pid, 3000);
|
|
352
|
+
if (!exited) {
|
|
353
|
+
// Escalate to SIGKILL
|
|
354
|
+
try {
|
|
355
|
+
process.kill(pid, 'SIGKILL');
|
|
356
|
+
await waitForProcessExit(pid, 1000);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
// Process may have exited between check and kill
|
|
360
|
+
}
|
|
361
|
+
}
|
|
272
362
|
// Clean up session lock
|
|
273
|
-
|
|
363
|
+
deleteSessionLockForPort(port);
|
|
274
364
|
return { stopped: true, pid, sessionCount };
|
|
275
365
|
}
|
|
276
366
|
catch (err) {
|
|
277
367
|
const error = err;
|
|
278
368
|
if (error.code === 'ESRCH') {
|
|
279
369
|
// Process already gone
|
|
280
|
-
|
|
370
|
+
deleteSessionLockForPort(port);
|
|
281
371
|
return { stopped: false, error: 'CLIProxy process already terminated' };
|
|
282
372
|
}
|
|
283
373
|
return { stopped: false, pid, error: `Failed to stop: ${error.message}` };
|
|
@@ -285,16 +375,16 @@ async function stopProxy() {
|
|
|
285
375
|
}
|
|
286
376
|
exports.stopProxy = stopProxy;
|
|
287
377
|
/**
|
|
288
|
-
* Get proxy status information.
|
|
378
|
+
* Get proxy status information for specific port.
|
|
289
379
|
*/
|
|
290
|
-
function getProxyStatus() {
|
|
291
|
-
const lock =
|
|
380
|
+
function getProxyStatus(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
381
|
+
const lock = readSessionLockForPort(port);
|
|
292
382
|
if (!lock) {
|
|
293
383
|
return { running: false };
|
|
294
384
|
}
|
|
295
385
|
// Verify proxy is still running
|
|
296
386
|
if (!isProcessRunning(lock.pid)) {
|
|
297
|
-
|
|
387
|
+
deleteSessionLockForPort(port);
|
|
298
388
|
return { running: false };
|
|
299
389
|
}
|
|
300
390
|
return {
|
|
@@ -303,7 +393,26 @@ function getProxyStatus() {
|
|
|
303
393
|
pid: lock.pid,
|
|
304
394
|
sessionCount: lock.sessions.length,
|
|
305
395
|
startedAt: lock.startedAt,
|
|
396
|
+
version: lock.version,
|
|
306
397
|
};
|
|
307
398
|
}
|
|
308
399
|
exports.getProxyStatus = getProxyStatus;
|
|
400
|
+
/**
|
|
401
|
+
* Get the version of the running proxy from session lock.
|
|
402
|
+
* @param port Port to check (defaults to CLIPROXY_DEFAULT_PORT)
|
|
403
|
+
* @returns Version string if available, null otherwise
|
|
404
|
+
*/
|
|
405
|
+
function getRunningProxyVersion(port = config_generator_2.CLIPROXY_DEFAULT_PORT) {
|
|
406
|
+
const lock = readSessionLockForPort(port);
|
|
407
|
+
if (!lock) {
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
// Verify proxy is still running
|
|
411
|
+
if (!isProcessRunning(lock.pid)) {
|
|
412
|
+
deleteSessionLockForPort(port);
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
return lock.version ?? null;
|
|
416
|
+
}
|
|
417
|
+
exports.getRunningProxyVersion = getRunningProxyVersion;
|
|
309
418
|
//# sourceMappingURL=session-tracker.js.map
|
|
@@ -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;
|
|
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 auth_token_manager_1 = require("./auth-token-manager");
|
|
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 ${(0, auth_token_manager_1.getEffectiveManagementSecret)()}` };
|
|
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, effective API key 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 ${(0, auth_token_manager_1.getEffectiveApiKey)()}` };
|
|
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 ${(0, auth_token_manager_1.getEffectiveManagementSecret)()}` };
|
|
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 ${(0, auth_token_manager_1.getEffectiveManagementSecret)()}` };
|
|
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":";AAAA;;;;;GAKG;;;AAEH,6DAAwF;AACxF,mEAA2F;AAqF3F;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAa;IACpD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAE3E,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;QAChC,6CAA6C;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,qCAAa,EAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAE1D,2FAA2F;QAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAA,yCAAiB,EAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,IAAA,iDAA4B,GAAE,EAAE,EAAE,CAAC;QAE9F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,iFAAiF;QACjF,MAAM,eAAe,GAA2B,EAAE,CAAC;QACnD,MAAM,kBAAkB,GAA2B,EAAE,CAAC;QACtD,MAAM,YAAY,GAAsC,EAAE,CAAC;QAC3D,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,cAAc,IAAI,CAAC,CAAC;gBAChE,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACxB,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;wBACrE,eAAe,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC;wBAEvD,mDAAmD;wBACnD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;4BACtB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gCACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;gCAE1C,yCAAyC;gCACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oCAC1B,YAAY,CAAC,MAAM,CAAC,GAAG;wCACrB,MAAM;wCACN,YAAY,EAAE,CAAC;wCACf,YAAY,EAAE,CAAC;wCACf,WAAW,EAAE,CAAC;qCACf,CAAC;gCACJ,CAAC;gCAED,uBAAuB;gCACvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oCAClB,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;oCACpC,iBAAiB,EAAE,CAAC;gCACtB,CAAC;qCAAM,CAAC;oCACN,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;oCACpC,iBAAiB,EAAE,CAAC;gCACtB,CAAC;gCAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,CAAC;gCAChD,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC;gCAC3C,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;gCAEnD,6BAA6B;gCAC7B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,CAAC;gCACrD,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC;4BACzD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,OAAO;YACL,aAAa,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC;YACzC,YAAY,EAAE,iBAAiB;YAC/B,YAAY,EAAE,iBAAiB;YAC/B,MAAM,EAAE;gBACN,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC;aAChC;YACD,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,kBAAkB,EAAE,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC;YACrE,UAAU,EAAE,CAAC,EAAE,uCAAuC;YACtD,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AA3GD,gDA2GC;AAuBD;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,IAAa;IACrD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;QAChC,6CAA6C;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,qCAAa,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEhD,mFAAmF;QACnF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAA,yCAAiB,EAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,IAAA,uCAAkB,GAAE,EAAE,EAAE,CAAC;QAEpF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;QAE1D,iCAAiC;QACjC,MAAM,UAAU,GAAoC,EAAE,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;YACD,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,kDAAkD;QAClD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,UAAU;YACV,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAtDD,kDAsDC;AAmBD;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAAC,IAAa;IACxD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;QAChC,6CAA6C;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,qCAAa,EAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;QAEvE,2FAA2F;QAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAA,yCAAiB,EAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,IAAA,iDAA4B,GAAE,EAAE,EAAE,CAAC;QAE9F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAlCD,wDAkCC;AAED;;;;;GAKG;AACI,KAAK,UAAU,4BAA4B,CAChD,IAAY,EACZ,IAAa;IAEb,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;QAChC,6CAA6C;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,qCAAa,EACvB,MAAM,EACN,qCAAqC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;QAEF,2FAA2F;QAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC7B,CAAC,CAAC,IAAA,yCAAiB,EAAC,MAAM,CAAC;YAC3B,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAA,iDAA4B,GAAE,EAAE,EAAE,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAvCD,oEAuCC;AAED;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAa;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAE3E,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAA,sCAAc,GAAE,CAAC;QAChC,6CAA6C;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,qCAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAvBD,8CAuBC"}
|
|
@@ -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;AAujBH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDzE"}
|
|
@@ -231,7 +231,8 @@ 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
|
-
|
|
234
|
+
const portInfo = result.variant?.port ? `Port: ${result.variant.port}\n` : '';
|
|
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));
|
|
235
236
|
console.log('');
|
|
236
237
|
console.log((0, ui_1.header)('Usage'));
|
|
237
238
|
console.log(` ${(0, ui_1.color)(`ccs ${name} "your prompt"`, 'command')}`);
|
|
@@ -267,9 +268,10 @@ async function handleList() {
|
|
|
267
268
|
console.log((0, ui_1.subheader)('Custom Variants'));
|
|
268
269
|
const rows = variantNames.map((name) => {
|
|
269
270
|
const variant = variants[name];
|
|
270
|
-
|
|
271
|
+
const portStr = variant.port ? String(variant.port) : '-';
|
|
272
|
+
return [name, variant.provider, portStr, variant.settings || '-'];
|
|
271
273
|
});
|
|
272
|
-
console.log((0, ui_1.table)(rows, { head: ['Variant', 'Provider', 'Settings'], colWidths: [15, 12,
|
|
274
|
+
console.log((0, ui_1.table)(rows, { head: ['Variant', 'Provider', 'Port', 'Settings'], colWidths: [15, 12, 8, 30] }));
|
|
273
275
|
console.log('');
|
|
274
276
|
console.log((0, ui_1.dim)(`Total: ${variantNames.length} custom variant(s)`));
|
|
275
277
|
console.log('');
|
|
@@ -315,6 +317,9 @@ async function handleRemove(args) {
|
|
|
315
317
|
console.log('');
|
|
316
318
|
console.log(`Variant '${(0, ui_1.color)(name, 'command')}' will be removed.`);
|
|
317
319
|
console.log(` Provider: ${variant.provider}`);
|
|
320
|
+
if (variant.port) {
|
|
321
|
+
console.log(` Port: ${variant.port}`);
|
|
322
|
+
}
|
|
318
323
|
console.log(` Settings: ${variant.settings || '-'}`);
|
|
319
324
|
console.log('');
|
|
320
325
|
const confirmed = parsedArgs.yes || (await prompt_1.InteractivePrompt.confirm('Delete this variant?', { default: false }));
|