@kaitranntt/ccs 5.20.0-dev.3 → 6.0.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERSION +1 -1
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
- package/dist/cliproxy/cliproxy-executor.js +129 -75
- package/dist/cliproxy/cliproxy-executor.js.map +1 -1
- package/dist/cliproxy/session-tracker.d.ts +54 -0
- package/dist/cliproxy/session-tracker.d.ts.map +1 -0
- package/dist/cliproxy/session-tracker.js +228 -0
- package/dist/cliproxy/session-tracker.js.map +1 -0
- package/package.json +1 -1
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6.0.0-dev.1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cliproxy-executor.d.ts","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgBH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA4E3D;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,OAAO,CAAC,IAAI,CAAC,CAoaf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAepE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,GAAE,MAA8B,EACzC,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -52,6 +52,7 @@ const account_manager_1 = require("./account-manager");
|
|
|
52
52
|
const platform_commands_1 = require("../utils/platform-commands");
|
|
53
53
|
const port_utils_1 = require("../utils/port-utils");
|
|
54
54
|
const websearch_manager_2 = require("../utils/websearch-manager");
|
|
55
|
+
const session_tracker_1 = require("./session-tracker");
|
|
55
56
|
/** Default executor configuration */
|
|
56
57
|
const DEFAULT_CONFIG = {
|
|
57
58
|
port: config_generator_1.CLIPROXY_DEFAULT_PORT,
|
|
@@ -278,76 +279,104 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
278
279
|
log(`Generating config for ${provider}`);
|
|
279
280
|
const configPath = (0, config_generator_1.generateConfig)(provider, cfg.port);
|
|
280
281
|
log(`Config written: ${configPath}`);
|
|
281
|
-
// 6a. Pre-flight check:
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
282
|
+
// 6a. Pre-flight check: handle existing proxy or port conflicts
|
|
283
|
+
// Clean up orphaned sessions first (from crashed proxies)
|
|
284
|
+
(0, session_tracker_1.cleanupOrphanedSessions)(cfg.port);
|
|
285
|
+
// Check if there's an existing healthy proxy we can reuse
|
|
286
|
+
const existingProxy = (0, session_tracker_1.getExistingProxy)(cfg.port);
|
|
287
|
+
let proxy = null;
|
|
288
|
+
let sessionId;
|
|
289
|
+
let isReusingProxy = false;
|
|
290
|
+
if (existingProxy) {
|
|
291
|
+
// Reuse existing proxy - another CCS session started it
|
|
292
|
+
log(`Reusing existing CLIProxy on port ${cfg.port} (PID ${existingProxy.pid})`);
|
|
293
|
+
sessionId = (0, session_tracker_1.registerSession)(cfg.port, existingProxy.pid);
|
|
294
|
+
isReusingProxy = true;
|
|
295
|
+
console.log((0, ui_1.info)(`Joined existing CLIProxy (${existingProxy.sessions.length + 1} sessions active)`));
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// No existing proxy - check if port is free
|
|
299
|
+
const portProcess = await (0, port_utils_1.getPortProcess)(cfg.port);
|
|
300
|
+
if (portProcess) {
|
|
301
|
+
if ((0, port_utils_1.isCLIProxyProcess)(portProcess)) {
|
|
302
|
+
// CLIProxy on port but no session lock - likely orphaned/zombie
|
|
303
|
+
// Only kill if no active sessions registered
|
|
304
|
+
if (!(0, session_tracker_1.hasActiveSessions)()) {
|
|
305
|
+
log(`Found zombie CLIProxy on port ${cfg.port} (PID ${portProcess.pid}), killing...`);
|
|
306
|
+
const killed = (0, platform_commands_1.killProcessOnPort)(cfg.port, verbose);
|
|
307
|
+
if (killed) {
|
|
308
|
+
console.log((0, ui_1.info)(`Cleaned up zombie CLIProxy process`));
|
|
309
|
+
// Wait a bit for port to be released
|
|
310
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
// Active sessions exist but getExistingProxy returned null - something's wrong
|
|
315
|
+
// Try to connect anyway
|
|
316
|
+
log(`CLIProxy on port ${cfg.port} has active sessions, attempting to join...`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
// Non-CLIProxy process blocking the port - warn user
|
|
321
|
+
console.error('');
|
|
322
|
+
console.error((0, ui_1.warn)(`Port ${cfg.port} is blocked by ${portProcess.processName} (PID ${portProcess.pid})`));
|
|
323
|
+
console.error('');
|
|
324
|
+
console.error('To fix this, close the blocking application or run:');
|
|
325
|
+
console.error(` ${(0, platform_commands_1.getPortCheckCommand)(cfg.port)}`);
|
|
326
|
+
console.error('');
|
|
327
|
+
throw new Error(`Port ${cfg.port} is in use by another application`);
|
|
292
328
|
}
|
|
293
329
|
}
|
|
294
|
-
|
|
295
|
-
|
|
330
|
+
// 6b. Spawn CLIProxyAPI binary (only if not reusing existing proxy)
|
|
331
|
+
const proxyArgs = ['--config', configPath];
|
|
332
|
+
log(`Spawning: ${binaryPath} ${proxyArgs.join(' ')}`);
|
|
333
|
+
proxy = (0, child_process_1.spawn)(binaryPath, proxyArgs, {
|
|
334
|
+
stdio: ['ignore', verbose ? 'pipe' : 'ignore', verbose ? 'pipe' : 'ignore'],
|
|
335
|
+
detached: false,
|
|
336
|
+
});
|
|
337
|
+
// Forward proxy output in verbose mode
|
|
338
|
+
if (verbose) {
|
|
339
|
+
proxy.stdout?.on('data', (data) => {
|
|
340
|
+
process.stderr.write(`[cliproxy-out] ${data.toString()}`);
|
|
341
|
+
});
|
|
342
|
+
proxy.stderr?.on('data', (data) => {
|
|
343
|
+
process.stderr.write(`[cliproxy-err] ${data.toString()}`);
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
// Handle proxy errors
|
|
347
|
+
proxy.on('error', (error) => {
|
|
348
|
+
console.error((0, ui_1.fail)(`CLIProxy spawn error: ${error.message}`));
|
|
349
|
+
});
|
|
350
|
+
// 7. Wait for proxy readiness via TCP polling
|
|
351
|
+
const readySpinner = new progress_indicator_1.ProgressIndicator(`Waiting for CLIProxy on port ${cfg.port}`);
|
|
352
|
+
readySpinner.start();
|
|
353
|
+
try {
|
|
354
|
+
await waitForProxyReady(cfg.port, cfg.timeout, cfg.pollInterval);
|
|
355
|
+
readySpinner.succeed(`CLIProxy ready on port ${cfg.port}`);
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
readySpinner.fail('CLIProxy startup failed');
|
|
359
|
+
proxy.kill('SIGTERM');
|
|
360
|
+
const err = error;
|
|
296
361
|
console.error('');
|
|
297
|
-
console.error((0, ui_1.
|
|
362
|
+
console.error((0, ui_1.fail)('CLIProxy failed to start'));
|
|
298
363
|
console.error('');
|
|
299
|
-
console.error('
|
|
300
|
-
console.error(` ${
|
|
364
|
+
console.error('Possible causes:');
|
|
365
|
+
console.error(` 1. Port ${cfg.port} already in use`);
|
|
366
|
+
console.error(' 2. Binary crashed on startup');
|
|
367
|
+
console.error(' 3. Invalid configuration');
|
|
301
368
|
console.error('');
|
|
302
|
-
|
|
369
|
+
console.error('Troubleshooting:');
|
|
370
|
+
console.error(` - Check port: ${(0, platform_commands_1.getPortCheckCommand)(cfg.port)}`);
|
|
371
|
+
console.error(' - Run with --verbose for detailed logs');
|
|
372
|
+
console.error(` - View config: ${(0, platform_commands_1.getCatCommand)(configPath)}`);
|
|
373
|
+
console.error(' - Try: ccs doctor --fix');
|
|
374
|
+
console.error('');
|
|
375
|
+
throw new Error(`CLIProxy startup failed: ${err.message}`);
|
|
303
376
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
log(`Spawning: ${binaryPath} ${proxyArgs.join(' ')}`);
|
|
308
|
-
const proxy = (0, child_process_1.spawn)(binaryPath, proxyArgs, {
|
|
309
|
-
stdio: ['ignore', verbose ? 'pipe' : 'ignore', verbose ? 'pipe' : 'ignore'],
|
|
310
|
-
detached: false,
|
|
311
|
-
});
|
|
312
|
-
// Forward proxy output in verbose mode
|
|
313
|
-
if (verbose) {
|
|
314
|
-
proxy.stdout?.on('data', (data) => {
|
|
315
|
-
process.stderr.write(`[cliproxy-out] ${data.toString()}`);
|
|
316
|
-
});
|
|
317
|
-
proxy.stderr?.on('data', (data) => {
|
|
318
|
-
process.stderr.write(`[cliproxy-err] ${data.toString()}`);
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
// Handle proxy errors
|
|
322
|
-
proxy.on('error', (error) => {
|
|
323
|
-
console.error((0, ui_1.fail)(`CLIProxy spawn error: ${error.message}`));
|
|
324
|
-
});
|
|
325
|
-
// 7. Wait for proxy readiness via TCP polling
|
|
326
|
-
const readySpinner = new progress_indicator_1.ProgressIndicator(`Waiting for CLIProxy on port ${cfg.port}`);
|
|
327
|
-
readySpinner.start();
|
|
328
|
-
try {
|
|
329
|
-
await waitForProxyReady(cfg.port, cfg.timeout, cfg.pollInterval);
|
|
330
|
-
readySpinner.succeed(`CLIProxy ready on port ${cfg.port}`);
|
|
331
|
-
}
|
|
332
|
-
catch (error) {
|
|
333
|
-
readySpinner.fail('CLIProxy startup failed');
|
|
334
|
-
proxy.kill('SIGTERM');
|
|
335
|
-
const err = error;
|
|
336
|
-
console.error('');
|
|
337
|
-
console.error((0, ui_1.fail)('CLIProxy failed to start'));
|
|
338
|
-
console.error('');
|
|
339
|
-
console.error('Possible causes:');
|
|
340
|
-
console.error(` 1. Port ${cfg.port} already in use`);
|
|
341
|
-
console.error(' 2. Binary crashed on startup');
|
|
342
|
-
console.error(' 3. Invalid configuration');
|
|
343
|
-
console.error('');
|
|
344
|
-
console.error('Troubleshooting:');
|
|
345
|
-
console.error(` - Check port: ${(0, platform_commands_1.getPortCheckCommand)(cfg.port)}`);
|
|
346
|
-
console.error(' - Run with --verbose for detailed logs');
|
|
347
|
-
console.error(` - View config: ${(0, platform_commands_1.getCatCommand)(configPath)}`);
|
|
348
|
-
console.error(' - Try: ccs doctor --fix');
|
|
349
|
-
console.error('');
|
|
350
|
-
throw new Error(`CLIProxy startup failed: ${err.message}`);
|
|
377
|
+
// Register this session with the new proxy
|
|
378
|
+
sessionId = (0, session_tracker_1.registerSession)(cfg.port, proxy.pid);
|
|
379
|
+
log(`Registered session ${sessionId} with new proxy (PID ${proxy.pid})`);
|
|
351
380
|
}
|
|
352
381
|
// 7. Execute Claude CLI with proxied environment
|
|
353
382
|
// Uses custom settings path (for variants), user settings, or bundled defaults
|
|
@@ -398,10 +427,25 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
398
427
|
env,
|
|
399
428
|
});
|
|
400
429
|
}
|
|
401
|
-
// 8. Cleanup:
|
|
430
|
+
// 8. Cleanup: unregister session when Claude exits, kill proxy only if last session
|
|
402
431
|
claude.on('exit', (code, signal) => {
|
|
403
432
|
log(`Claude exited: code=${code}, signal=${signal}`);
|
|
404
|
-
|
|
433
|
+
// Unregister this session - returns true if we were the last session
|
|
434
|
+
const shouldKillProxy = (0, session_tracker_1.unregisterSession)(sessionId);
|
|
435
|
+
log(`Session ${sessionId} unregistered, shouldKillProxy=${shouldKillProxy}`);
|
|
436
|
+
if (shouldKillProxy && proxy) {
|
|
437
|
+
// We were the last session and we own the proxy - kill it
|
|
438
|
+
log('Last session, killing proxy');
|
|
439
|
+
proxy.kill('SIGTERM');
|
|
440
|
+
}
|
|
441
|
+
else if (shouldKillProxy && isReusingProxy) {
|
|
442
|
+
// We were the last session but don't own the proxy process
|
|
443
|
+
// The proxy will be cleaned up as zombie on next session start
|
|
444
|
+
log('Last session but reusing proxy, proxy will be cleaned up later');
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
log(`Other sessions still active, keeping proxy running`);
|
|
448
|
+
}
|
|
405
449
|
if (signal) {
|
|
406
450
|
process.kill(process.pid, signal);
|
|
407
451
|
}
|
|
@@ -411,24 +455,34 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
411
455
|
});
|
|
412
456
|
claude.on('error', (error) => {
|
|
413
457
|
console.error((0, ui_1.fail)(`Claude CLI error: ${error}`));
|
|
414
|
-
proxy
|
|
458
|
+
// Unregister and conditionally kill proxy
|
|
459
|
+
const shouldKillProxy = (0, session_tracker_1.unregisterSession)(sessionId);
|
|
460
|
+
if (shouldKillProxy && proxy) {
|
|
461
|
+
proxy.kill('SIGTERM');
|
|
462
|
+
}
|
|
415
463
|
process.exit(1);
|
|
416
464
|
});
|
|
417
465
|
// Handle parent process termination (SIGTERM, SIGINT)
|
|
418
466
|
const cleanup = () => {
|
|
419
467
|
log('Parent signal received, cleaning up');
|
|
420
|
-
proxy
|
|
468
|
+
// Unregister and conditionally kill proxy
|
|
469
|
+
const shouldKillProxy = (0, session_tracker_1.unregisterSession)(sessionId);
|
|
470
|
+
if (shouldKillProxy && proxy) {
|
|
471
|
+
proxy.kill('SIGTERM');
|
|
472
|
+
}
|
|
421
473
|
claude.kill('SIGTERM');
|
|
422
474
|
};
|
|
423
475
|
process.once('SIGTERM', cleanup);
|
|
424
476
|
process.once('SIGINT', cleanup);
|
|
425
|
-
// Handle proxy crash
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
477
|
+
// Handle proxy crash (only if we own the proxy)
|
|
478
|
+
if (proxy) {
|
|
479
|
+
proxy.on('exit', (code, signal) => {
|
|
480
|
+
if (code !== 0 && code !== null) {
|
|
481
|
+
log(`Proxy exited unexpectedly: code=${code}, signal=${signal}`);
|
|
482
|
+
// Don't kill Claude - it may have already exited
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
}
|
|
432
486
|
}
|
|
433
487
|
exports.execClaudeWithCLIProxy = execClaudeWithCLIProxy;
|
|
434
488
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-executor.js","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cliproxy-executor.js","sourceRoot":"","sources":["../../src/cliproxy/cliproxy-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Tracker for CLIProxy Multi-Instance Support
|
|
3
|
+
*
|
|
4
|
+
* Manages reference counting for shared CLIProxy instances.
|
|
5
|
+
* Multiple CCS sessions can share a single proxy on the same port.
|
|
6
|
+
* Proxy only terminates when ALL sessions exit (count reaches 0).
|
|
7
|
+
*
|
|
8
|
+
* Lock file format: ~/.ccs/cliproxy/sessions.json
|
|
9
|
+
* {
|
|
10
|
+
* "port": 8317,
|
|
11
|
+
* "pid": 12345, // CLIProxy process PID
|
|
12
|
+
* "sessions": ["abc123", "def456"], // Active session IDs
|
|
13
|
+
* "startedAt": "2024-01-01T00:00:00Z"
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
/** Session lock file structure */
|
|
17
|
+
interface SessionLock {
|
|
18
|
+
port: number;
|
|
19
|
+
pid: number;
|
|
20
|
+
sessions: string[];
|
|
21
|
+
startedAt: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if there's an existing proxy running that we can reuse.
|
|
25
|
+
* Returns the existing lock if proxy is healthy, null otherwise.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getExistingProxy(port: number): SessionLock | null;
|
|
28
|
+
/**
|
|
29
|
+
* Register a new session with the proxy.
|
|
30
|
+
* Call this when starting a new CCS session that will use an existing proxy.
|
|
31
|
+
* @returns Session ID for this session
|
|
32
|
+
*/
|
|
33
|
+
export declare function registerSession(port: number, proxyPid: number): string;
|
|
34
|
+
/**
|
|
35
|
+
* Unregister a session from the proxy.
|
|
36
|
+
* @returns true if this was the last session (proxy should be killed)
|
|
37
|
+
*/
|
|
38
|
+
export declare function unregisterSession(sessionId: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Get current session count for the proxy.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getSessionCount(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Check if proxy has any active sessions.
|
|
45
|
+
* Used to determine if a "zombie" proxy should be killed.
|
|
46
|
+
*/
|
|
47
|
+
export declare function hasActiveSessions(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Clean up orphaned sessions (when proxy crashes).
|
|
50
|
+
* Called on startup to ensure clean state.
|
|
51
|
+
*/
|
|
52
|
+
export declare function cleanupOrphanedSessions(port: number): void;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=session-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session Tracker for CLIProxy Multi-Instance Support
|
|
4
|
+
*
|
|
5
|
+
* Manages reference counting for shared CLIProxy instances.
|
|
6
|
+
* Multiple CCS sessions can share a single proxy on the same port.
|
|
7
|
+
* Proxy only terminates when ALL sessions exit (count reaches 0).
|
|
8
|
+
*
|
|
9
|
+
* Lock file format: ~/.ccs/cliproxy/sessions.json
|
|
10
|
+
* {
|
|
11
|
+
* "port": 8317,
|
|
12
|
+
* "pid": 12345, // CLIProxy process PID
|
|
13
|
+
* "sessions": ["abc123", "def456"], // Active session IDs
|
|
14
|
+
* "startedAt": "2024-01-01T00:00:00Z"
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.cleanupOrphanedSessions = exports.hasActiveSessions = exports.getSessionCount = exports.unregisterSession = exports.registerSession = exports.getExistingProxy = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const crypto = __importStar(require("crypto"));
|
|
45
|
+
const config_generator_1 = require("./config-generator");
|
|
46
|
+
/** Generate unique session ID */
|
|
47
|
+
function generateSessionId() {
|
|
48
|
+
return crypto.randomBytes(8).toString('hex');
|
|
49
|
+
}
|
|
50
|
+
/** Get path to session lock file */
|
|
51
|
+
function getSessionLockPath() {
|
|
52
|
+
return path.join((0, config_generator_1.getCliproxyDir)(), 'sessions.json');
|
|
53
|
+
}
|
|
54
|
+
/** Read session lock file (returns null if not exists or invalid) */
|
|
55
|
+
function readSessionLock() {
|
|
56
|
+
const lockPath = getSessionLockPath();
|
|
57
|
+
try {
|
|
58
|
+
if (!fs.existsSync(lockPath)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const content = fs.readFileSync(lockPath, 'utf-8');
|
|
62
|
+
const lock = JSON.parse(content);
|
|
63
|
+
// Validate structure
|
|
64
|
+
if (typeof lock.port !== 'number' ||
|
|
65
|
+
typeof lock.pid !== 'number' ||
|
|
66
|
+
!Array.isArray(lock.sessions)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return lock;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Write session lock file */
|
|
76
|
+
function writeSessionLock(lock) {
|
|
77
|
+
const lockPath = getSessionLockPath();
|
|
78
|
+
const dir = path.dirname(lockPath);
|
|
79
|
+
if (!fs.existsSync(dir)) {
|
|
80
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
81
|
+
}
|
|
82
|
+
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2), { mode: 0o600 });
|
|
83
|
+
}
|
|
84
|
+
/** Delete session lock file */
|
|
85
|
+
function deleteSessionLock() {
|
|
86
|
+
const lockPath = getSessionLockPath();
|
|
87
|
+
try {
|
|
88
|
+
if (fs.existsSync(lockPath)) {
|
|
89
|
+
fs.unlinkSync(lockPath);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Ignore errors on cleanup
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Check if a PID is still running */
|
|
97
|
+
function isProcessRunning(pid) {
|
|
98
|
+
try {
|
|
99
|
+
// Sending signal 0 checks if process exists without killing it
|
|
100
|
+
process.kill(pid, 0);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if there's an existing proxy running that we can reuse.
|
|
109
|
+
* Returns the existing lock if proxy is healthy, null otherwise.
|
|
110
|
+
*/
|
|
111
|
+
function getExistingProxy(port) {
|
|
112
|
+
const lock = readSessionLock();
|
|
113
|
+
if (!lock) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
// Verify port matches
|
|
117
|
+
if (lock.port !== port) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
// Verify proxy process is still running
|
|
121
|
+
if (!isProcessRunning(lock.pid)) {
|
|
122
|
+
// Proxy crashed - clean up stale lock
|
|
123
|
+
deleteSessionLock();
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return lock;
|
|
127
|
+
}
|
|
128
|
+
exports.getExistingProxy = getExistingProxy;
|
|
129
|
+
/**
|
|
130
|
+
* Register a new session with the proxy.
|
|
131
|
+
* Call this when starting a new CCS session that will use an existing proxy.
|
|
132
|
+
* @returns Session ID for this session
|
|
133
|
+
*/
|
|
134
|
+
function registerSession(port, proxyPid) {
|
|
135
|
+
const sessionId = generateSessionId();
|
|
136
|
+
const existingLock = readSessionLock();
|
|
137
|
+
if (existingLock && existingLock.port === port && existingLock.pid === proxyPid) {
|
|
138
|
+
// Add to existing sessions
|
|
139
|
+
existingLock.sessions.push(sessionId);
|
|
140
|
+
writeSessionLock(existingLock);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Create new lock (first session for this proxy)
|
|
144
|
+
const newLock = {
|
|
145
|
+
port,
|
|
146
|
+
pid: proxyPid,
|
|
147
|
+
sessions: [sessionId],
|
|
148
|
+
startedAt: new Date().toISOString(),
|
|
149
|
+
};
|
|
150
|
+
writeSessionLock(newLock);
|
|
151
|
+
}
|
|
152
|
+
return sessionId;
|
|
153
|
+
}
|
|
154
|
+
exports.registerSession = registerSession;
|
|
155
|
+
/**
|
|
156
|
+
* Unregister a session from the proxy.
|
|
157
|
+
* @returns true if this was the last session (proxy should be killed)
|
|
158
|
+
*/
|
|
159
|
+
function unregisterSession(sessionId) {
|
|
160
|
+
const lock = readSessionLock();
|
|
161
|
+
if (!lock) {
|
|
162
|
+
// No lock file - assume we're the only session
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
// Remove this session from the list
|
|
166
|
+
const index = lock.sessions.indexOf(sessionId);
|
|
167
|
+
if (index !== -1) {
|
|
168
|
+
lock.sessions.splice(index, 1);
|
|
169
|
+
}
|
|
170
|
+
// Check if any sessions remain
|
|
171
|
+
if (lock.sessions.length === 0) {
|
|
172
|
+
// Last session - clean up lock file
|
|
173
|
+
deleteSessionLock();
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
// Other sessions still active - keep proxy running
|
|
177
|
+
writeSessionLock(lock);
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
exports.unregisterSession = unregisterSession;
|
|
181
|
+
/**
|
|
182
|
+
* Get current session count for the proxy.
|
|
183
|
+
*/
|
|
184
|
+
function getSessionCount() {
|
|
185
|
+
const lock = readSessionLock();
|
|
186
|
+
if (!lock) {
|
|
187
|
+
return 0;
|
|
188
|
+
}
|
|
189
|
+
return lock.sessions.length;
|
|
190
|
+
}
|
|
191
|
+
exports.getSessionCount = getSessionCount;
|
|
192
|
+
/**
|
|
193
|
+
* Check if proxy has any active sessions.
|
|
194
|
+
* Used to determine if a "zombie" proxy should be killed.
|
|
195
|
+
*/
|
|
196
|
+
function hasActiveSessions() {
|
|
197
|
+
const lock = readSessionLock();
|
|
198
|
+
if (!lock) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
// Verify proxy is still running
|
|
202
|
+
if (!isProcessRunning(lock.pid)) {
|
|
203
|
+
deleteSessionLock();
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
return lock.sessions.length > 0;
|
|
207
|
+
}
|
|
208
|
+
exports.hasActiveSessions = hasActiveSessions;
|
|
209
|
+
/**
|
|
210
|
+
* Clean up orphaned sessions (when proxy crashes).
|
|
211
|
+
* Called on startup to ensure clean state.
|
|
212
|
+
*/
|
|
213
|
+
function cleanupOrphanedSessions(port) {
|
|
214
|
+
const lock = readSessionLock();
|
|
215
|
+
if (!lock) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// If port doesn't match, this lock is for a different proxy
|
|
219
|
+
if (lock.port !== port) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// If proxy is dead, clean up lock
|
|
223
|
+
if (!isProcessRunning(lock.pid)) {
|
|
224
|
+
deleteSessionLock();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.cleanupOrphanedSessions = cleanupOrphanedSessions;
|
|
228
|
+
//# sourceMappingURL=session-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/cliproxy/session-tracker.ts"],"names":[],"mappings":"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"}
|