@kaitranntt/ccs 8.3.0 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cliproxy/binary/platform-detector.d.ts.map +1 -1
  2. package/dist/cliproxy/binary/platform-detector.js +34 -1
  3. package/dist/cliproxy/binary/platform-detector.js.map +1 -1
  4. package/dist/cliproxy/binary/types.d.ts +3 -0
  5. package/dist/cliproxy/binary/types.d.ts.map +1 -1
  6. package/dist/cliproxy/binary/types.js +7 -2
  7. package/dist/cliproxy/binary/types.js.map +1 -1
  8. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -1
  9. package/dist/cliproxy/binary/version-cache.js +4 -0
  10. package/dist/cliproxy/binary/version-cache.js.map +1 -1
  11. package/dist/commands/bar/bar-paths.d.ts +32 -0
  12. package/dist/commands/bar/bar-paths.d.ts.map +1 -0
  13. package/dist/commands/bar/bar-paths.js +62 -0
  14. package/dist/commands/bar/bar-paths.js.map +1 -0
  15. package/dist/commands/bar/bar-server-probe.d.ts +27 -0
  16. package/dist/commands/bar/bar-server-probe.d.ts.map +1 -0
  17. package/dist/commands/bar/bar-server-probe.js +94 -0
  18. package/dist/commands/bar/bar-server-probe.js.map +1 -0
  19. package/dist/commands/bar/help-subcommand.d.ts.map +1 -1
  20. package/dist/commands/bar/help-subcommand.js +8 -2
  21. package/dist/commands/bar/help-subcommand.js.map +1 -1
  22. package/dist/commands/bar/index.d.ts +5 -1
  23. package/dist/commands/bar/index.d.ts.map +1 -1
  24. package/dist/commands/bar/index.js +18 -3
  25. package/dist/commands/bar/index.js.map +1 -1
  26. package/dist/commands/bar/install-subcommand.d.ts +8 -0
  27. package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
  28. package/dist/commands/bar/install-subcommand.js +24 -0
  29. package/dist/commands/bar/install-subcommand.js.map +1 -1
  30. package/dist/commands/bar/launch-subcommand.d.ts +36 -34
  31. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
  32. package/dist/commands/bar/launch-subcommand.js +142 -121
  33. package/dist/commands/bar/launch-subcommand.js.map +1 -1
  34. package/dist/commands/bar/serve-subcommand.d.ts +47 -0
  35. package/dist/commands/bar/serve-subcommand.d.ts.map +1 -0
  36. package/dist/commands/bar/serve-subcommand.js +192 -0
  37. package/dist/commands/bar/serve-subcommand.js.map +1 -0
  38. package/dist/commands/bar/status-subcommand.d.ts +32 -0
  39. package/dist/commands/bar/status-subcommand.d.ts.map +1 -0
  40. package/dist/commands/bar/status-subcommand.js +128 -0
  41. package/dist/commands/bar/status-subcommand.js.map +1 -0
  42. package/dist/commands/bar/stop-subcommand.d.ts +24 -0
  43. package/dist/commands/bar/stop-subcommand.d.ts.map +1 -0
  44. package/dist/commands/bar/stop-subcommand.js +107 -0
  45. package/dist/commands/bar/stop-subcommand.js.map +1 -0
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"launch-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/launch-subcommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `ccs bar serve` — long-lived server host for CCS Bar.
3
+ *
4
+ * Reuse-or-start: probe candidate ports first. If a live server exists,
5
+ * write bar.json pointing at it and exit 0 (no double-start). Otherwise
6
+ * pick a free port, call startServer(), write bar.json + server.pid,
7
+ * then stay alive until SIGINT/SIGTERM.
8
+ *
9
+ * This is the process that `ccs bar launch` spawns detached. The Swift
10
+ * app also spawns it directly via launch.json.
11
+ *
12
+ * Accepts: --port N (honours a port the launcher pre-selected via getPort).
13
+ */
14
+ import type { DashboardInfo } from './bar-server-probe';
15
+ export interface ServeDeps {
16
+ /** Probe candidate ports for a running CCS server. Never throws. */
17
+ findRunningServer: () => Promise<DashboardInfo | null>;
18
+ /**
19
+ * Start the CCS web-server on the given port.
20
+ * Returns { port, baseUrl } of the bound server.
21
+ * The returned server keeps the process event loop alive while listening.
22
+ */
23
+ startServer: (opts: {
24
+ port: number;
25
+ host: string;
26
+ }) => Promise<DashboardInfo>;
27
+ /**
28
+ * Find a free port from the candidate list.
29
+ * Returns one of the candidates or another free port.
30
+ */
31
+ getPort: (opts: {
32
+ port: number[];
33
+ host: string;
34
+ }) => Promise<number>;
35
+ /** Returns ~/.ccs dir (respects CCS_HOME). */
36
+ getCcsDir: () => string;
37
+ /** Write a file, creating parent dirs as needed. */
38
+ writeFile: (filePath: string, content: string) => void;
39
+ /** Remove a file if it exists (for cleanup on exit). */
40
+ removeFile: (filePath: string) => void;
41
+ /** Register process signal handlers. */
42
+ onSignal: (signal: 'SIGINT' | 'SIGTERM', handler: () => void) => void;
43
+ /** Exit the process. */
44
+ exit: (code: number) => never;
45
+ }
46
+ export declare function handleBarServe(args: string[], deps?: Partial<ServeDeps>): Promise<void>;
47
+ //# sourceMappingURL=serve-subcommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/serve-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACvD;;;;OAIG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,8CAA8C;IAC9C,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,oDAAoD;IACpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,wDAAwD;IACxD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,wCAAwC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtE,wBAAwB;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CAC/B;AA8DD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGjG"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * `ccs bar serve` — long-lived server host for CCS Bar.
4
+ *
5
+ * Reuse-or-start: probe candidate ports first. If a live server exists,
6
+ * write bar.json pointing at it and exit 0 (no double-start). Otherwise
7
+ * pick a free port, call startServer(), write bar.json + server.pid,
8
+ * then stay alive until SIGINT/SIGTERM.
9
+ *
10
+ * This is the process that `ccs bar launch` spawns detached. The Swift
11
+ * app also spawns it directly via launch.json.
12
+ *
13
+ * Accepts: --port N (honours a port the launcher pre-selected via getPort).
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleBarServe = void 0;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const config_loader_facade_1 = require("../../config/config-loader-facade");
43
+ const bar_paths_1 = require("./bar-paths");
44
+ const bar_server_probe_1 = require("./bar-server-probe");
45
+ // ---------------------------------------------------------------------------
46
+ // Default implementations
47
+ // ---------------------------------------------------------------------------
48
+ async function defaultStartServer(opts) {
49
+ const { startServer } = await Promise.resolve().then(() => __importStar(require('../../web-server')));
50
+ const { server } = await startServer({ port: opts.port, host: opts.host });
51
+ const addr = server.address();
52
+ const resolvedPort = addr && typeof addr === 'object' ? addr.port : opts.port;
53
+ const baseUrl = `http://127.0.0.1:${resolvedPort}`;
54
+ return { port: resolvedPort, baseUrl };
55
+ }
56
+ async function defaultGetPort(opts) {
57
+ const getPort = (await Promise.resolve().then(() => __importStar(require('get-port')))).default;
58
+ return getPort(opts);
59
+ }
60
+ function defaultWriteFile(filePath, content) {
61
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
62
+ fs.writeFileSync(filePath, content);
63
+ }
64
+ function defaultRemoveFile(filePath) {
65
+ try {
66
+ fs.unlinkSync(filePath);
67
+ }
68
+ catch {
69
+ /* ignore — file may already be gone */
70
+ }
71
+ }
72
+ function defaultOnSignal(signal, handler) {
73
+ process.on(signal, handler);
74
+ }
75
+ function defaultExit(code) {
76
+ process.exit(code);
77
+ }
78
+ function defaultGetCcsDir() {
79
+ return (0, config_loader_facade_1.getCcsDir)();
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // Argument parsing helpers
83
+ // ---------------------------------------------------------------------------
84
+ function parsePortArg(args) {
85
+ const idx = args.indexOf('--port');
86
+ if (idx !== -1 && idx + 1 < args.length) {
87
+ const n = parseInt(args[idx + 1], 10);
88
+ return Number.isFinite(n) && n > 0 && n < 65536 ? n : null;
89
+ }
90
+ return null;
91
+ }
92
+ // ---------------------------------------------------------------------------
93
+ // Implementation
94
+ // ---------------------------------------------------------------------------
95
+ async function handleBarServe(args, deps = {}) {
96
+ const ccsDir = (deps.getCcsDir ?? defaultGetCcsDir)();
97
+ const findRunningServer = deps.findRunningServer ?? (() => (0, bar_server_probe_1.defaultFindRunningServer)(ccsDir));
98
+ const startServerFn = deps.startServer ?? defaultStartServer;
99
+ const getPortFn = deps.getPort ?? defaultGetPort;
100
+ const writeFile = deps.writeFile ?? defaultWriteFile;
101
+ const removeFile = deps.removeFile ?? defaultRemoveFile;
102
+ const onSignal = deps.onSignal ?? defaultOnSignal;
103
+ const exit = deps.exit ?? defaultExit;
104
+ const barJsonPath = (0, bar_paths_1.getBarJsonPath)(ccsDir);
105
+ const serverPidPath = (0, bar_paths_1.getServerPidPath)(ccsDir);
106
+ // 1. Reuse-or-start: probe candidate ports first.
107
+ let running = null;
108
+ try {
109
+ running = await findRunningServer();
110
+ }
111
+ catch {
112
+ /* probe errors count as null */
113
+ }
114
+ if (running !== null) {
115
+ // A live server is already running — write bar.json and exit cleanly.
116
+ const barJson = {
117
+ baseUrl: running.baseUrl,
118
+ port: running.port,
119
+ authMode: 'loopback',
120
+ };
121
+ try {
122
+ writeFile(barJsonPath, JSON.stringify(barJson, null, 2));
123
+ }
124
+ catch (err) {
125
+ const msg = err instanceof Error ? err.message : String(err);
126
+ console.error(`[X] Failed to write bar.json: ${msg}`);
127
+ exit(1);
128
+ }
129
+ console.log(`[OK] CCS server already running at ${running.baseUrl} — reusing.`);
130
+ exit(0);
131
+ }
132
+ // 2. No live server found — start one.
133
+ // Honor --port N from the launcher (it pre-selected via getPort to avoid races).
134
+ const requestedPort = parsePortArg(args);
135
+ let port;
136
+ if (requestedPort !== null) {
137
+ port = requestedPort;
138
+ }
139
+ else {
140
+ port = await getPortFn({ port: [3000, 3001, 3002, 8000, 8080], host: '127.0.0.1' });
141
+ }
142
+ // TypeScript cannot infer that exit(1) is `never` when it is injected as a dep,
143
+ // so we use a definite-assignment assertion on dashboardInfo.
144
+ let dashboardInfo;
145
+ try {
146
+ dashboardInfo = await startServerFn({ port, host: '127.0.0.1' });
147
+ }
148
+ catch (err) {
149
+ const msg = err instanceof Error ? err.message : String(err);
150
+ console.error(`[X] Failed to start CCS server: ${msg}`);
151
+ exit(1);
152
+ }
153
+ // 3. Write bar.json and server.pid.
154
+ const barJson = {
155
+ baseUrl: dashboardInfo.baseUrl,
156
+ port: dashboardInfo.port,
157
+ authMode: 'loopback',
158
+ };
159
+ try {
160
+ writeFile(barJsonPath, JSON.stringify(barJson, null, 2));
161
+ }
162
+ catch (err) {
163
+ const msg = err instanceof Error ? err.message : String(err);
164
+ console.error(`[X] Failed to write bar.json: ${msg}`);
165
+ exit(1);
166
+ }
167
+ try {
168
+ writeFile(serverPidPath, String(process.pid));
169
+ }
170
+ catch (err) {
171
+ // Non-fatal — stop/status will just degrade gracefully.
172
+ const msg = err instanceof Error ? err.message : String(err);
173
+ console.error(`[!] Failed to write server.pid: ${msg}`);
174
+ }
175
+ console.log(`[OK] CCS Bar server started at ${dashboardInfo.baseUrl}`);
176
+ console.log(`[i] PID ${process.pid} — stop with \`ccs bar stop\``);
177
+ // 4. Clean shutdown on SIGINT / SIGTERM.
178
+ const shutdown = () => {
179
+ removeFile(serverPidPath);
180
+ // bar.json is intentionally left in place on clean shutdown so
181
+ // the Swift app self-heal poll can detect the server is gone via
182
+ // the liveness check, not a stale discovery file.
183
+ console.log('\n[OK] CCS Bar server stopped.');
184
+ exit(0);
185
+ };
186
+ onSignal('SIGINT', shutdown);
187
+ onSignal('SIGTERM', shutdown);
188
+ // 5. Stay alive — the startServer() HTTP server keeps the Node/Bun event loop
189
+ // alive while listening. Nothing else needed here.
190
+ }
191
+ exports.handleBarServe = handleBarServe;
192
+ //# sourceMappingURL=serve-subcommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/serve-subcommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `ccs bar status` — report whether the CCS Bar server is running.
3
+ *
4
+ * Checks server.pid for the PID, then verifies the process is alive and
5
+ * the server is reachable at GET /api/bar/summary. ASCII output only.
6
+ */
7
+ export interface StatusDeps {
8
+ /** Returns ~/.ccs dir (respects CCS_HOME). */
9
+ getCcsDir: () => string;
10
+ /**
11
+ * Read the server.pid file. Returns the raw string content, or null when
12
+ * absent or unreadable.
13
+ */
14
+ readPidFile: (pidPath: string) => string | null;
15
+ /**
16
+ * Check whether a process is alive.
17
+ * Uses kill(pid, 0) semantics: no error = alive, ESRCH = gone.
18
+ * Returns true when alive, false otherwise.
19
+ */
20
+ isProcessAlive: (pid: number) => boolean;
21
+ /**
22
+ * Probe whether the server is reachable at GET {baseUrl}/api/bar/summary.
23
+ * Returns true on HTTP 200, false otherwise. Never throws.
24
+ */
25
+ probeServer: (baseUrl: string) => Promise<boolean>;
26
+ /**
27
+ * Read bar.json and return the baseUrl field, or null when absent/malformed.
28
+ */
29
+ readBarJsonBaseUrl: (barJsonPath: string) => string | null;
30
+ }
31
+ export declare function handleBarStatus(_args: string[], deps?: Partial<StatusDeps>): Promise<void>;
32
+ //# sourceMappingURL=status-subcommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/status-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAChD;;;;OAIG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD;;OAEG;IACH,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5D;AA2DD,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM,GAC7B,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /**
3
+ * `ccs bar status` — report whether the CCS Bar server is running.
4
+ *
5
+ * Checks server.pid for the PID, then verifies the process is alive and
6
+ * the server is reachable at GET /api/bar/summary. ASCII output only.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.handleBarStatus = void 0;
33
+ const fs = __importStar(require("fs"));
34
+ const config_loader_facade_1 = require("../../config/config-loader-facade");
35
+ const bar_paths_1 = require("./bar-paths");
36
+ // ---------------------------------------------------------------------------
37
+ // Default implementations
38
+ // ---------------------------------------------------------------------------
39
+ function defaultGetCcsDir() {
40
+ return (0, config_loader_facade_1.getCcsDir)();
41
+ }
42
+ function defaultReadPidFile(pidPath) {
43
+ try {
44
+ return fs.readFileSync(pidPath, 'utf8').trim();
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ function defaultIsProcessAlive(pid) {
51
+ try {
52
+ // kill(pid, 0) is a POSIX trick: sends no signal but checks if the
53
+ // process exists and is accessible. Throws ESRCH when gone.
54
+ process.kill(pid, 0);
55
+ return true;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ async function defaultProbeServer(baseUrl) {
62
+ try {
63
+ const { request } = await Promise.resolve().then(() => __importStar(require('undici')));
64
+ const { statusCode, body } = await request(`${baseUrl}/api/bar/summary`, {
65
+ method: 'GET',
66
+ headersTimeout: 2000,
67
+ bodyTimeout: 2000,
68
+ });
69
+ // Drain body to release the socket.
70
+ await body.text();
71
+ return statusCode === 200;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ function defaultReadBarJsonBaseUrl(barJsonPath) {
78
+ try {
79
+ const raw = fs.readFileSync(barJsonPath, 'utf8');
80
+ const parsed = JSON.parse(raw);
81
+ return typeof parsed.baseUrl === 'string' ? parsed.baseUrl : null;
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }
87
+ // ---------------------------------------------------------------------------
88
+ // Implementation
89
+ // ---------------------------------------------------------------------------
90
+ async function handleBarStatus(_args, deps = {}) {
91
+ const ccsDir = (deps.getCcsDir ?? defaultGetCcsDir)();
92
+ const readPidFile = deps.readPidFile ?? defaultReadPidFile;
93
+ const isProcessAlive = deps.isProcessAlive ?? defaultIsProcessAlive;
94
+ const probeServer = deps.probeServer ?? defaultProbeServer;
95
+ const readBarJsonBaseUrl = deps.readBarJsonBaseUrl ?? defaultReadBarJsonBaseUrl;
96
+ const pidPath = (0, bar_paths_1.getServerPidPath)(ccsDir);
97
+ const barJsonPath = (0, bar_paths_1.getBarJsonPath)(ccsDir);
98
+ // 1. Check PID file.
99
+ const pidRaw = readPidFile(pidPath);
100
+ if (pidRaw === null) {
101
+ console.log('[i] CCS Bar server: stopped (no server.pid)');
102
+ return;
103
+ }
104
+ const pid = parseInt(pidRaw, 10);
105
+ if (!Number.isFinite(pid) || pid <= 0) {
106
+ console.log(`[!] CCS Bar server: server.pid is invalid ("${pidRaw}")`);
107
+ return;
108
+ }
109
+ // 2. Check process liveness.
110
+ const alive = isProcessAlive(pid);
111
+ if (!alive) {
112
+ console.log(`[!] CCS Bar server: PID ${pid} is no longer running (stale server.pid)`);
113
+ console.log('[i] Run `ccs bar stop` to clean up, then `ccs bar` to restart.');
114
+ return;
115
+ }
116
+ // 3. Probe HTTP reachability.
117
+ const baseUrl = readBarJsonBaseUrl(barJsonPath) ?? 'http://127.0.0.1:3000';
118
+ const reachable = await probeServer(baseUrl);
119
+ if (reachable) {
120
+ console.log(`[OK] CCS Bar server: running (PID ${pid}, ${baseUrl})`);
121
+ }
122
+ else {
123
+ console.log(`[!] CCS Bar server: PID ${pid} alive but HTTP probe failed at ${baseUrl}`);
124
+ console.log('[i] The server may still be starting up. Try again in a moment.');
125
+ }
126
+ }
127
+ exports.handleBarStatus = handleBarStatus;
128
+ //# sourceMappingURL=status-subcommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/status-subcommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `ccs bar stop` — stop the detached CCS Bar server.
3
+ *
4
+ * Reads ~/.ccs/bar/server.pid, sends SIGTERM, then removes pid + bar.json.
5
+ * ASCII output only. Non-fatal if the server is already gone.
6
+ */
7
+ export interface StopDeps {
8
+ /** Returns ~/.ccs dir (respects CCS_HOME). */
9
+ getCcsDir: () => string;
10
+ /**
11
+ * Read the server.pid file. Returns the raw string content, or null when
12
+ * the file is absent or unreadable.
13
+ */
14
+ readPidFile: (pidPath: string) => string | null;
15
+ /**
16
+ * Send SIGTERM to the given PID.
17
+ * Throws if the signal cannot be delivered (e.g. ESRCH — no such process).
18
+ */
19
+ killProcess: (pid: number, signal: 'SIGTERM') => void;
20
+ /** Remove a file, ignoring errors if absent. */
21
+ removeFile: (filePath: string) => void;
22
+ }
23
+ export declare function handleBarStop(_args: string[], deps?: Partial<StopDeps>): Promise<void>;
24
+ //# sourceMappingURL=stop-subcommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/stop-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,QAAQ;IACvB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAChD;;;OAGG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACtD,gDAAgD;IAChD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAkCD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,OAAO,CAAC,QAAQ,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ChG"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * `ccs bar stop` — stop the detached CCS Bar server.
4
+ *
5
+ * Reads ~/.ccs/bar/server.pid, sends SIGTERM, then removes pid + bar.json.
6
+ * ASCII output only. Non-fatal if the server is already gone.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.handleBarStop = void 0;
33
+ const fs = __importStar(require("fs"));
34
+ const config_loader_facade_1 = require("../../config/config-loader-facade");
35
+ const bar_paths_1 = require("./bar-paths");
36
+ // ---------------------------------------------------------------------------
37
+ // Default implementations
38
+ // ---------------------------------------------------------------------------
39
+ function defaultGetCcsDir() {
40
+ return (0, config_loader_facade_1.getCcsDir)();
41
+ }
42
+ function defaultReadPidFile(pidPath) {
43
+ try {
44
+ return fs.readFileSync(pidPath, 'utf8').trim();
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ function defaultKillProcess(pid, signal) {
51
+ process.kill(pid, signal);
52
+ }
53
+ function defaultRemoveFile(filePath) {
54
+ try {
55
+ fs.unlinkSync(filePath);
56
+ }
57
+ catch {
58
+ /* ignore — file may already be gone */
59
+ }
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // Implementation
63
+ // ---------------------------------------------------------------------------
64
+ async function handleBarStop(_args, deps = {}) {
65
+ const ccsDir = (deps.getCcsDir ?? defaultGetCcsDir)();
66
+ const readPidFile = deps.readPidFile ?? defaultReadPidFile;
67
+ const killProcess = deps.killProcess ?? defaultKillProcess;
68
+ const removeFile = deps.removeFile ?? defaultRemoveFile;
69
+ const pidPath = (0, bar_paths_1.getServerPidPath)(ccsDir);
70
+ const barJsonPath = (0, bar_paths_1.getBarJsonPath)(ccsDir);
71
+ // 1. Read the PID file.
72
+ const pidRaw = readPidFile(pidPath);
73
+ if (pidRaw === null) {
74
+ console.log('[i] CCS Bar server is not running (no server.pid found).');
75
+ return;
76
+ }
77
+ const pid = parseInt(pidRaw, 10);
78
+ if (!Number.isFinite(pid) || pid <= 0) {
79
+ console.error(`[X] server.pid contains an invalid PID: "${pidRaw}"`);
80
+ // Clean up the corrupted file so subsequent runs start fresh.
81
+ removeFile(pidPath);
82
+ return;
83
+ }
84
+ // 2. Send SIGTERM.
85
+ try {
86
+ killProcess(pid, 'SIGTERM');
87
+ console.log(`[OK] Sent SIGTERM to CCS Bar server (PID ${pid}).`);
88
+ }
89
+ catch (err) {
90
+ const code = err.code;
91
+ if (code === 'ESRCH') {
92
+ // Process no longer exists — stale PID file, clean up silently.
93
+ console.log(`[i] Server PID ${pid} is no longer running. Cleaning up stale files.`);
94
+ }
95
+ else {
96
+ const msg = err instanceof Error ? err.message : String(err);
97
+ console.error(`[X] Failed to stop server (PID ${pid}): ${msg}`);
98
+ // Still remove the pid file so the user is not blocked.
99
+ }
100
+ }
101
+ // 3. Remove pid + bar.json regardless of kill result.
102
+ removeFile(pidPath);
103
+ removeFile(barJsonPath);
104
+ console.log('[i] Removed server.pid and bar.json.');
105
+ }
106
+ exports.handleBarStop = handleBarStop;
107
+ //# sourceMappingURL=stop-subcommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/stop-subcommand.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "8.3.0",
3
+ "version": "8.4.0",
4
4
  "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",