@kaitranntt/ccs 4.4.0 → 5.0.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/README.md +98 -7
- package/VERSION +1 -1
- package/config/base-agy.settings.json +10 -0
- package/config/base-codex.settings.json +10 -0
- package/config/base-gemini.settings.json +10 -0
- package/dist/auth/auth-commands.d.ts +52 -0
- package/dist/auth/auth-commands.d.ts.map +1 -0
- package/dist/auth/auth-commands.js +479 -0
- package/dist/auth/auth-commands.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +68 -0
- package/dist/auth/profile-detector.d.ts.map +1 -0
- package/dist/auth/profile-detector.js +209 -0
- package/dist/auth/profile-detector.js.map +1 -0
- package/dist/auth/profile-registry.d.ts +60 -0
- package/dist/auth/profile-registry.d.ts.map +1 -0
- package/dist/auth/profile-registry.js +188 -0
- package/dist/auth/profile-registry.js.map +1 -0
- package/dist/ccs.d.ts +10 -0
- package/dist/ccs.d.ts.map +1 -0
- package/dist/ccs.js +320 -0
- package/dist/ccs.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +95 -0
- package/dist/cliproxy/auth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth-handler.js +443 -0
- package/dist/cliproxy/auth-handler.js.map +1 -0
- package/dist/cliproxy/base-config-loader.d.ts +42 -0
- package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
- package/dist/cliproxy/base-config-loader.js +123 -0
- package/dist/cliproxy/base-config-loader.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +104 -0
- package/dist/cliproxy/binary-manager.d.ts.map +1 -0
- package/dist/cliproxy/binary-manager.js +567 -0
- package/dist/cliproxy/binary-manager.js.map +1 -0
- package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
- package/dist/cliproxy/cliproxy-executor.js +297 -0
- package/dist/cliproxy/cliproxy-executor.js.map +1 -0
- package/dist/cliproxy/config-generator.d.ts +89 -0
- package/dist/cliproxy/config-generator.d.ts.map +1 -0
- package/dist/cliproxy/config-generator.js +263 -0
- package/dist/cliproxy/config-generator.js.map +1 -0
- package/dist/cliproxy/index.d.ts +13 -0
- package/dist/cliproxy/index.d.ts.map +1 -0
- package/dist/cliproxy/index.js +62 -0
- package/dist/cliproxy/index.js.map +1 -0
- package/dist/cliproxy/platform-detector.d.ts +48 -0
- package/dist/cliproxy/platform-detector.d.ts.map +1 -0
- package/dist/cliproxy/platform-detector.js +118 -0
- package/dist/cliproxy/platform-detector.js.map +1 -0
- package/dist/cliproxy/types.d.ts +169 -0
- package/dist/cliproxy/types.d.ts.map +1 -0
- package/dist/cliproxy/types.js +7 -0
- package/dist/cliproxy/types.js.map +1 -0
- package/dist/commands/doctor-command.d.ts +10 -0
- package/dist/commands/doctor-command.d.ts.map +1 -0
- package/dist/commands/doctor-command.js +44 -0
- package/dist/commands/doctor-command.js.map +1 -0
- package/dist/commands/help-command.d.ts +5 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +104 -0
- package/dist/commands/help-command.js.map +1 -0
- package/dist/commands/install-command.d.ts +14 -0
- package/dist/commands/install-command.d.ts.map +1 -0
- package/dist/commands/install-command.js +39 -0
- package/dist/commands/install-command.js.map +1 -0
- package/dist/commands/shell-completion-command.d.ts +10 -0
- package/dist/commands/shell-completion-command.d.ts.map +1 -0
- package/dist/commands/shell-completion-command.js +85 -0
- package/dist/commands/shell-completion-command.js.map +1 -0
- package/dist/commands/sync-command.d.ts +10 -0
- package/dist/commands/sync-command.d.ts.map +1 -0
- package/dist/commands/sync-command.js +59 -0
- package/dist/commands/sync-command.js.map +1 -0
- package/dist/commands/update-command.d.ts +12 -0
- package/dist/commands/update-command.d.ts.map +1 -0
- package/dist/commands/update-command.js +295 -0
- package/dist/commands/update-command.js.map +1 -0
- package/dist/commands/version-command.d.ts +10 -0
- package/dist/commands/version-command.d.ts.map +1 -0
- package/dist/commands/version-command.js +100 -0
- package/dist/commands/version-command.js.map +1 -0
- package/dist/delegation/delegation-handler.d.ts +60 -0
- package/dist/delegation/delegation-handler.d.ts.map +1 -0
- package/dist/delegation/delegation-handler.js +174 -0
- package/dist/delegation/delegation-handler.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +114 -0
- package/dist/delegation/headless-executor.d.ts.map +1 -0
- package/dist/delegation/headless-executor.js +562 -0
- package/dist/delegation/headless-executor.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +108 -0
- package/dist/delegation/result-formatter.d.ts.map +1 -0
- package/dist/delegation/result-formatter.js +391 -0
- package/dist/delegation/result-formatter.js.map +1 -0
- package/dist/delegation/session-manager.d.ts +58 -0
- package/dist/delegation/session-manager.d.ts.map +1 -0
- package/dist/delegation/session-manager.js +153 -0
- package/dist/delegation/session-manager.js.map +1 -0
- package/dist/delegation/settings-parser.d.ts +31 -0
- package/dist/delegation/settings-parser.d.ts.map +1 -0
- package/dist/delegation/settings-parser.js +107 -0
- package/dist/delegation/settings-parser.js.map +1 -0
- package/dist/glmt/delta-accumulator.d.ts +210 -0
- package/dist/glmt/delta-accumulator.d.ts.map +1 -0
- package/dist/glmt/delta-accumulator.js +351 -0
- package/dist/glmt/delta-accumulator.js.map +1 -0
- package/dist/glmt/glmt-proxy.d.ts +72 -0
- package/dist/glmt/glmt-proxy.d.ts.map +1 -0
- package/dist/glmt/glmt-proxy.js +427 -0
- package/dist/glmt/glmt-proxy.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +265 -0
- package/dist/glmt/glmt-transformer.d.ts.map +1 -0
- package/dist/glmt/glmt-transformer.js +832 -0
- package/dist/glmt/glmt-transformer.js.map +1 -0
- package/dist/glmt/locale-enforcer.d.ts +38 -0
- package/dist/glmt/locale-enforcer.d.ts.map +1 -0
- package/dist/glmt/locale-enforcer.js +69 -0
- package/dist/glmt/locale-enforcer.js.map +1 -0
- package/dist/glmt/reasoning-enforcer.d.ts +52 -0
- package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
- package/dist/glmt/reasoning-enforcer.js +151 -0
- package/dist/glmt/reasoning-enforcer.js.map +1 -0
- package/dist/glmt/sse-parser.d.ts +47 -0
- package/dist/glmt/sse-parser.d.ts.map +1 -0
- package/dist/glmt/sse-parser.js +93 -0
- package/dist/glmt/sse-parser.js.map +1 -0
- package/dist/management/doctor.d.ts +104 -0
- package/dist/management/doctor.d.ts.map +1 -0
- package/dist/management/doctor.js +673 -0
- package/dist/management/doctor.js.map +1 -0
- package/dist/management/instance-manager.d.ts +57 -0
- package/dist/management/instance-manager.d.ts.map +1 -0
- package/dist/management/instance-manager.js +195 -0
- package/dist/management/instance-manager.js.map +1 -0
- package/dist/management/recovery-manager.d.ts +39 -0
- package/dist/management/recovery-manager.d.ts.map +1 -0
- package/dist/management/recovery-manager.js +141 -0
- package/dist/management/recovery-manager.js.map +1 -0
- package/dist/management/shared-manager.d.ts +47 -0
- package/dist/management/shared-manager.d.ts.map +1 -0
- package/dist/management/shared-manager.js +388 -0
- package/dist/management/shared-manager.js.map +1 -0
- package/dist/types/cli.d.ts +50 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +16 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +51 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +26 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/delegation.d.ts +61 -0
- package/dist/types/delegation.d.ts.map +1 -0
- package/dist/types/delegation.js +6 -0
- package/dist/types/delegation.js.map +1 -0
- package/dist/types/glmt.d.ts +95 -0
- package/dist/types/glmt.d.ts.map +1 -0
- package/dist/types/glmt.js +7 -0
- package/dist/types/glmt.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/utils.d.ts +36 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +22 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/utils/claude-detector.d.ts +14 -0
- package/dist/utils/claude-detector.d.ts.map +1 -0
- package/dist/utils/claude-detector.js +112 -0
- package/dist/utils/claude-detector.js.map +1 -0
- package/dist/utils/claude-dir-installer.d.ts +46 -0
- package/dist/utils/claude-dir-installer.d.ts.map +1 -0
- package/dist/utils/claude-dir-installer.js +289 -0
- package/dist/utils/claude-dir-installer.js.map +1 -0
- package/dist/utils/claude-symlink-manager.d.ts +61 -0
- package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
- package/dist/utils/claude-symlink-manager.js +291 -0
- package/dist/utils/claude-symlink-manager.js.map +1 -0
- package/dist/utils/config-manager.d.ts +32 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +143 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +39 -0
- package/dist/utils/delegation-validator.d.ts.map +1 -0
- package/dist/utils/delegation-validator.js +161 -0
- package/dist/utils/delegation-validator.js.map +1 -0
- package/dist/utils/error-codes.d.ts +36 -0
- package/dist/utils/error-codes.d.ts.map +1 -0
- package/dist/utils/error-codes.js +63 -0
- package/dist/utils/error-codes.js.map +1 -0
- package/dist/utils/error-manager.d.ts +59 -0
- package/dist/utils/error-manager.d.ts.map +1 -0
- package/dist/utils/error-manager.js +228 -0
- package/dist/utils/error-manager.js.map +1 -0
- package/dist/utils/helpers.d.ts +27 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +150 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/package-manager-detector.d.ts +14 -0
- package/dist/utils/package-manager-detector.d.ts.map +1 -0
- package/dist/utils/package-manager-detector.js +162 -0
- package/dist/utils/package-manager-detector.js.map +1 -0
- package/dist/utils/progress-indicator.d.ts +52 -0
- package/dist/utils/progress-indicator.d.ts.map +1 -0
- package/dist/utils/progress-indicator.js +102 -0
- package/dist/utils/progress-indicator.js.map +1 -0
- package/dist/utils/prompt.d.ts +29 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +116 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/shell-completion.d.ts +52 -0
- package/dist/utils/shell-completion.d.ts.map +1 -0
- package/dist/utils/shell-completion.js +231 -0
- package/dist/utils/shell-completion.js.map +1 -0
- package/dist/utils/shell-executor.d.ts +15 -0
- package/dist/utils/shell-executor.d.ts.map +1 -0
- package/dist/utils/shell-executor.js +57 -0
- package/dist/utils/shell-executor.js.map +1 -0
- package/dist/utils/update-checker.d.ts +48 -0
- package/dist/utils/update-checker.d.ts.map +1 -0
- package/dist/utils/update-checker.js +241 -0
- package/dist/utils/update-checker.js.map +1 -0
- package/lib/ccs +21 -1907
- package/lib/ccs.ps1 +26 -1800
- package/lib/error-codes.ps1 +2 -1
- package/lib/prompt.ps1 +2 -2
- package/package.json +31 -11
- package/scripts/add-shebang.js +39 -0
- package/scripts/bump-version.sh +25 -37
- package/scripts/dev-install.sh +32 -11
- package/scripts/postinstall.js +29 -29
- package/bin/auth/auth-commands.js +0 -499
- package/bin/auth/profile-detector.js +0 -204
- package/bin/auth/profile-registry.js +0 -225
- package/bin/ccs.js +0 -1034
- package/bin/delegation/README.md +0 -191
- package/bin/delegation/delegation-handler.js +0 -212
- package/bin/delegation/headless-executor.js +0 -618
- package/bin/delegation/result-formatter.js +0 -485
- package/bin/delegation/session-manager.js +0 -157
- package/bin/delegation/settings-parser.js +0 -109
- package/bin/glmt/delta-accumulator.js +0 -276
- package/bin/glmt/glmt-proxy.js +0 -495
- package/bin/glmt/glmt-transformer.js +0 -999
- package/bin/glmt/locale-enforcer.js +0 -72
- package/bin/glmt/reasoning-enforcer.js +0 -173
- package/bin/glmt/sse-parser.js +0 -96
- package/bin/management/doctor.js +0 -721
- package/bin/management/instance-manager.js +0 -202
- package/bin/management/recovery-manager.js +0 -135
- package/bin/management/shared-manager.js +0 -402
- package/bin/utils/claude-detector.js +0 -73
- package/bin/utils/claude-dir-installer.js +0 -283
- package/bin/utils/claude-symlink-manager.js +0 -289
- package/bin/utils/config-manager.js +0 -103
- package/bin/utils/delegation-validator.js +0 -154
- package/bin/utils/error-codes.js +0 -59
- package/bin/utils/error-manager.js +0 -165
- package/bin/utils/helpers.js +0 -136
- package/bin/utils/progress-indicator.js +0 -111
- package/bin/utils/prompt.js +0 -134
- package/bin/utils/shell-completion.js +0 -256
- package/bin/utils/update-checker.js +0 -243
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Progress Indicator (no external dependencies)
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - ASCII-only spinner frames (cross-platform compatible)
|
|
6
|
+
* - TTY detection (no spinners in pipes/logs)
|
|
7
|
+
* - Elapsed time display
|
|
8
|
+
* - CI environment detection
|
|
9
|
+
*/
|
|
10
|
+
interface ProgressOptions {
|
|
11
|
+
frames?: string[];
|
|
12
|
+
interval?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class ProgressIndicator {
|
|
15
|
+
private message;
|
|
16
|
+
private frames;
|
|
17
|
+
private frameIndex;
|
|
18
|
+
private interval;
|
|
19
|
+
private startTime;
|
|
20
|
+
private isTTY;
|
|
21
|
+
/**
|
|
22
|
+
* Create a progress indicator
|
|
23
|
+
* @param message - Message to display
|
|
24
|
+
* @param options - Options
|
|
25
|
+
*/
|
|
26
|
+
constructor(message: string, options?: ProgressOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Start the spinner
|
|
29
|
+
*/
|
|
30
|
+
start(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Stop spinner with success message
|
|
33
|
+
* @param message - Optional success message (defaults to original message)
|
|
34
|
+
*/
|
|
35
|
+
succeed(message?: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Stop spinner with failure message
|
|
38
|
+
* @param message - Optional failure message (defaults to original message)
|
|
39
|
+
*/
|
|
40
|
+
fail(message?: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Update spinner message (while running)
|
|
43
|
+
* @param newMessage - New message to display
|
|
44
|
+
*/
|
|
45
|
+
update(newMessage: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Stop the spinner without showing success/failure
|
|
48
|
+
*/
|
|
49
|
+
stop(): void;
|
|
50
|
+
}
|
|
51
|
+
export default ProgressIndicator;
|
|
52
|
+
//# sourceMappingURL=progress-indicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-indicator.d.ts","sourceRoot":"","sources":["../../src/utils/progress-indicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;IAEvB;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAY1D;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAc/B;;;OAGG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAa5B;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,IAAI,IAAI,IAAI;CAWb;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple Progress Indicator (no external dependencies)
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - ASCII-only spinner frames (cross-platform compatible)
|
|
7
|
+
* - TTY detection (no spinners in pipes/logs)
|
|
8
|
+
* - Elapsed time display
|
|
9
|
+
* - CI environment detection
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProgressIndicator = void 0;
|
|
13
|
+
class ProgressIndicator {
|
|
14
|
+
/**
|
|
15
|
+
* Create a progress indicator
|
|
16
|
+
* @param message - Message to display
|
|
17
|
+
* @param options - Options
|
|
18
|
+
*/
|
|
19
|
+
constructor(message, options = {}) {
|
|
20
|
+
this.message = message;
|
|
21
|
+
// ASCII-only frames for cross-platform compatibility
|
|
22
|
+
this.frames = options.frames || ['|', '/', '-', '\\'];
|
|
23
|
+
this.frameIndex = 0;
|
|
24
|
+
this.interval = null;
|
|
25
|
+
this.startTime = Date.now();
|
|
26
|
+
// TTY detection: only animate if stderr is TTY and not in CI
|
|
27
|
+
this.isTTY = process.stderr.isTTY === true && !process.env.CI && !process.env.NO_COLOR;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Start the spinner
|
|
31
|
+
*/
|
|
32
|
+
start() {
|
|
33
|
+
if (!this.isTTY) {
|
|
34
|
+
// Non-TTY: just print message once
|
|
35
|
+
process.stderr.write(`[i] ${this.message}...\n`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// TTY: animate spinner
|
|
39
|
+
this.interval = setInterval(() => {
|
|
40
|
+
const frame = this.frames[this.frameIndex];
|
|
41
|
+
const elapsed = ((Date.now() - this.startTime) / 1000).toFixed(1);
|
|
42
|
+
process.stderr.write(`\r[${frame}] ${this.message}... (${elapsed}s)`);
|
|
43
|
+
this.frameIndex = (this.frameIndex + 1) % this.frames.length;
|
|
44
|
+
}, 80); // 12.5fps for smooth animation
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Stop spinner with success message
|
|
48
|
+
* @param message - Optional success message (defaults to original message)
|
|
49
|
+
*/
|
|
50
|
+
succeed(message) {
|
|
51
|
+
this.stop();
|
|
52
|
+
const finalMessage = message || this.message;
|
|
53
|
+
const elapsed = ((Date.now() - this.startTime) / 1000).toFixed(1);
|
|
54
|
+
if (this.isTTY) {
|
|
55
|
+
// Clear spinner line and show success
|
|
56
|
+
process.stderr.write(`\r[OK] ${finalMessage} (${elapsed}s)\n`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Non-TTY: just show completion
|
|
60
|
+
process.stderr.write(`[OK] ${finalMessage}\n`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stop spinner with failure message
|
|
65
|
+
* @param message - Optional failure message (defaults to original message)
|
|
66
|
+
*/
|
|
67
|
+
fail(message) {
|
|
68
|
+
this.stop();
|
|
69
|
+
const finalMessage = message || this.message;
|
|
70
|
+
if (this.isTTY) {
|
|
71
|
+
// Clear spinner line and show failure
|
|
72
|
+
process.stderr.write(`\r[X] ${finalMessage}\n`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Non-TTY: just show failure
|
|
76
|
+
process.stderr.write(`[X] ${finalMessage}\n`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Update spinner message (while running)
|
|
81
|
+
* @param newMessage - New message to display
|
|
82
|
+
*/
|
|
83
|
+
update(newMessage) {
|
|
84
|
+
this.message = newMessage;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Stop the spinner without showing success/failure
|
|
88
|
+
*/
|
|
89
|
+
stop() {
|
|
90
|
+
if (this.interval) {
|
|
91
|
+
clearInterval(this.interval);
|
|
92
|
+
this.interval = null;
|
|
93
|
+
if (this.isTTY) {
|
|
94
|
+
// Clear the spinner line
|
|
95
|
+
process.stderr.write('\r\x1b[K');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.ProgressIndicator = ProgressIndicator;
|
|
101
|
+
exports.default = ProgressIndicator;
|
|
102
|
+
//# sourceMappingURL=progress-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-indicator.js","sourceRoot":"","sources":["../../src/utils/progress-indicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive Prompt Utilities (NO external dependencies)
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - TTY detection (auto-confirm in non-TTY)
|
|
6
|
+
* - --yes flag support for automation
|
|
7
|
+
* - --no-input flag support for CI
|
|
8
|
+
* - Safe defaults (N for destructive actions)
|
|
9
|
+
* - Input validation with retry
|
|
10
|
+
*/
|
|
11
|
+
interface ConfirmOptions {
|
|
12
|
+
default?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface InputOptions {
|
|
15
|
+
default?: string;
|
|
16
|
+
validate?: (value: string) => string | null;
|
|
17
|
+
}
|
|
18
|
+
export declare class InteractivePrompt {
|
|
19
|
+
/**
|
|
20
|
+
* Ask for confirmation
|
|
21
|
+
*/
|
|
22
|
+
static confirm(message: string, options?: ConfirmOptions): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Get text input from user
|
|
25
|
+
*/
|
|
26
|
+
static input(message: string, options?: InputOptions): Promise<string>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6DrF;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAuCjF"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.InteractivePrompt = void 0;
|
|
27
|
+
const readline = __importStar(require("readline"));
|
|
28
|
+
class InteractivePrompt {
|
|
29
|
+
/**
|
|
30
|
+
* Ask for confirmation
|
|
31
|
+
*/
|
|
32
|
+
static async confirm(message, options = {}) {
|
|
33
|
+
const { default: defaultValue = false } = options;
|
|
34
|
+
// Check for --yes flag (automation) - always returns true
|
|
35
|
+
if (process.env.CCS_YES === '1' ||
|
|
36
|
+
process.argv.includes('--yes') ||
|
|
37
|
+
process.argv.includes('-y')) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
// Check for --no-input flag (CI)
|
|
41
|
+
if (process.env.CCS_NO_INPUT === '1' || process.argv.includes('--no-input')) {
|
|
42
|
+
throw new Error('Interactive input required but --no-input specified');
|
|
43
|
+
}
|
|
44
|
+
// Non-TTY: use default
|
|
45
|
+
if (!process.stdin.isTTY) {
|
|
46
|
+
return defaultValue;
|
|
47
|
+
}
|
|
48
|
+
// Interactive prompt
|
|
49
|
+
const rl = readline.createInterface({
|
|
50
|
+
input: process.stdin,
|
|
51
|
+
output: process.stderr,
|
|
52
|
+
terminal: true,
|
|
53
|
+
});
|
|
54
|
+
const promptText = defaultValue ? `${message} [Y/n]: ` : `${message} [y/N]: `;
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
rl.question(promptText, (answer) => {
|
|
57
|
+
rl.close();
|
|
58
|
+
const normalized = answer.trim().toLowerCase();
|
|
59
|
+
// Empty answer: use default
|
|
60
|
+
if (normalized === '') {
|
|
61
|
+
resolve(defaultValue);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Valid answers
|
|
65
|
+
if (normalized === 'y' || normalized === 'yes') {
|
|
66
|
+
resolve(true);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (normalized === 'n' || normalized === 'no') {
|
|
70
|
+
resolve(false);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Invalid input: retry
|
|
74
|
+
console.error('[!] Please answer y or n');
|
|
75
|
+
resolve(InteractivePrompt.confirm(message, options));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get text input from user
|
|
81
|
+
*/
|
|
82
|
+
static async input(message, options = {}) {
|
|
83
|
+
const { default: defaultValue = '', validate = null } = options;
|
|
84
|
+
// Non-TTY: use default or error
|
|
85
|
+
if (!process.stdin.isTTY) {
|
|
86
|
+
if (defaultValue) {
|
|
87
|
+
return defaultValue;
|
|
88
|
+
}
|
|
89
|
+
throw new Error('Interactive input required but stdin is not a TTY');
|
|
90
|
+
}
|
|
91
|
+
const rl = readline.createInterface({
|
|
92
|
+
input: process.stdin,
|
|
93
|
+
output: process.stderr,
|
|
94
|
+
terminal: true,
|
|
95
|
+
});
|
|
96
|
+
const promptText = defaultValue ? `${message} [${defaultValue}]: ` : `${message}: `;
|
|
97
|
+
return new Promise((resolve) => {
|
|
98
|
+
rl.question(promptText, (answer) => {
|
|
99
|
+
rl.close();
|
|
100
|
+
const value = answer.trim() || defaultValue;
|
|
101
|
+
// Validate input if validator provided
|
|
102
|
+
if (validate) {
|
|
103
|
+
const error = validate(value);
|
|
104
|
+
if (error) {
|
|
105
|
+
console.error(`[!] ${error}`);
|
|
106
|
+
resolve(InteractivePrompt.input(message, options));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
resolve(value);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.InteractivePrompt = InteractivePrompt;
|
|
116
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
type ShellType = 'bash' | 'zsh' | 'fish' | 'powershell' | null;
|
|
2
|
+
interface InstallResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
alreadyInstalled?: boolean;
|
|
5
|
+
message?: string;
|
|
6
|
+
reload?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Shell Completion Installer
|
|
10
|
+
* Auto-configures shell completion for bash, zsh, fish, PowerShell
|
|
11
|
+
*/
|
|
12
|
+
export declare class ShellCompletionInstaller {
|
|
13
|
+
private homeDir;
|
|
14
|
+
private ccsDir;
|
|
15
|
+
private completionDir;
|
|
16
|
+
private scriptsDir;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Detect current shell
|
|
20
|
+
*/
|
|
21
|
+
detectShell(): ShellType;
|
|
22
|
+
/**
|
|
23
|
+
* Ensure completion files are in ~/.ccs/completions/
|
|
24
|
+
*/
|
|
25
|
+
ensureCompletionFiles(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Safely create directory, checking for file conflicts
|
|
28
|
+
*/
|
|
29
|
+
private ensureDirectory;
|
|
30
|
+
/**
|
|
31
|
+
* Install bash completion
|
|
32
|
+
*/
|
|
33
|
+
private installBash;
|
|
34
|
+
/**
|
|
35
|
+
* Install zsh completion
|
|
36
|
+
*/
|
|
37
|
+
private installZsh;
|
|
38
|
+
/**
|
|
39
|
+
* Install fish completion
|
|
40
|
+
*/
|
|
41
|
+
private installFish;
|
|
42
|
+
/**
|
|
43
|
+
* Install PowerShell completion
|
|
44
|
+
*/
|
|
45
|
+
private installPowerShell;
|
|
46
|
+
/**
|
|
47
|
+
* Install for detected or specified shell
|
|
48
|
+
*/
|
|
49
|
+
install(shell?: ShellType): InstallResult;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=shell-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-completion.d.ts","sourceRoot":"","sources":["../../src/utils/shell-completion.ts"],"names":[],"mappings":"AAKA,KAAK,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;AAE/D,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;;IAS3B;;OAEG;IACH,WAAW,IAAI,SAAS;IAWxB;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAiB7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,WAAW;IA8BnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAsClB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,OAAO,CAAC,KAAK,GAAE,SAAgB,GAAG,aAAa;CA0BhD"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ShellCompletionInstaller = void 0;
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
const os = __importStar(require("os"));
|
|
30
|
+
/**
|
|
31
|
+
* Shell Completion Installer
|
|
32
|
+
* Auto-configures shell completion for bash, zsh, fish, PowerShell
|
|
33
|
+
*/
|
|
34
|
+
class ShellCompletionInstaller {
|
|
35
|
+
constructor() {
|
|
36
|
+
this.homeDir = os.homedir();
|
|
37
|
+
this.ccsDir = path.join(this.homeDir, '.ccs');
|
|
38
|
+
this.completionDir = path.join(this.ccsDir, 'completions');
|
|
39
|
+
this.scriptsDir = path.join(__dirname, '../../scripts/completion');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Detect current shell
|
|
43
|
+
*/
|
|
44
|
+
detectShell() {
|
|
45
|
+
const shell = process.env.SHELL || '';
|
|
46
|
+
if (shell.includes('bash'))
|
|
47
|
+
return 'bash';
|
|
48
|
+
if (shell.includes('zsh'))
|
|
49
|
+
return 'zsh';
|
|
50
|
+
if (shell.includes('fish'))
|
|
51
|
+
return 'fish';
|
|
52
|
+
if (process.platform === 'win32')
|
|
53
|
+
return 'powershell';
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Ensure completion files are in ~/.ccs/completions/
|
|
58
|
+
*/
|
|
59
|
+
ensureCompletionFiles() {
|
|
60
|
+
if (!fs.existsSync(this.completionDir)) {
|
|
61
|
+
fs.mkdirSync(this.completionDir, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
// Copy completion scripts
|
|
64
|
+
const files = ['ccs.bash', 'ccs.zsh', 'ccs.fish', 'ccs.ps1'];
|
|
65
|
+
files.forEach((file) => {
|
|
66
|
+
const src = path.join(this.scriptsDir, file);
|
|
67
|
+
const dest = path.join(this.completionDir, file);
|
|
68
|
+
if (fs.existsSync(src)) {
|
|
69
|
+
fs.copyFileSync(src, dest);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Safely create directory, checking for file conflicts
|
|
75
|
+
*/
|
|
76
|
+
ensureDirectory(dirPath) {
|
|
77
|
+
if (fs.existsSync(dirPath)) {
|
|
78
|
+
const stat = fs.statSync(dirPath);
|
|
79
|
+
if (!stat.isDirectory()) {
|
|
80
|
+
throw new Error(`Cannot create directory: ${dirPath} exists but is a file.\n` +
|
|
81
|
+
`Please remove or rename this file and try again.`);
|
|
82
|
+
}
|
|
83
|
+
// Directory exists, nothing to do
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Check parent directories recursively
|
|
87
|
+
const parentDir = path.dirname(dirPath);
|
|
88
|
+
if (parentDir !== dirPath) {
|
|
89
|
+
this.ensureDirectory(parentDir);
|
|
90
|
+
}
|
|
91
|
+
// Create the directory
|
|
92
|
+
fs.mkdirSync(dirPath);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Install bash completion
|
|
96
|
+
*/
|
|
97
|
+
installBash() {
|
|
98
|
+
const rcFile = path.join(this.homeDir, '.bashrc');
|
|
99
|
+
const completionPath = path.join(this.completionDir, 'ccs.bash');
|
|
100
|
+
if (!fs.existsSync(completionPath)) {
|
|
101
|
+
throw new Error('Completion file not found. Please reinstall CCS.');
|
|
102
|
+
}
|
|
103
|
+
const marker = '# CCS shell completion';
|
|
104
|
+
const sourceCmd = `source "${completionPath}"`;
|
|
105
|
+
const block = `\n${marker}\n${sourceCmd}\n`;
|
|
106
|
+
// Check if already installed
|
|
107
|
+
if (fs.existsSync(rcFile)) {
|
|
108
|
+
const content = fs.readFileSync(rcFile, 'utf8');
|
|
109
|
+
if (content.includes(marker)) {
|
|
110
|
+
return { success: true, alreadyInstalled: true };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Append to .bashrc
|
|
114
|
+
fs.appendFileSync(rcFile, block);
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
message: `Added to ${rcFile}`,
|
|
118
|
+
reload: 'source ~/.bashrc',
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Install zsh completion
|
|
123
|
+
*/
|
|
124
|
+
installZsh() {
|
|
125
|
+
const rcFile = path.join(this.homeDir, '.zshrc');
|
|
126
|
+
const completionPath = path.join(this.completionDir, 'ccs.zsh');
|
|
127
|
+
const zshCompDir = path.join(this.homeDir, '.zsh', 'completion');
|
|
128
|
+
if (!fs.existsSync(completionPath)) {
|
|
129
|
+
throw new Error('Completion file not found. Please reinstall CCS.');
|
|
130
|
+
}
|
|
131
|
+
// Create zsh completion directory (with file conflict checking)
|
|
132
|
+
this.ensureDirectory(zshCompDir);
|
|
133
|
+
// Copy to zsh completion directory
|
|
134
|
+
const destFile = path.join(zshCompDir, '_ccs');
|
|
135
|
+
fs.copyFileSync(completionPath, destFile);
|
|
136
|
+
const marker = '# CCS shell completion';
|
|
137
|
+
const setupCmds = ['fpath=(~/.zsh/completion $fpath)', 'autoload -Uz compinit && compinit'];
|
|
138
|
+
const block = `\n${marker}\n${setupCmds.join('\n')}\n`;
|
|
139
|
+
// Check if already installed
|
|
140
|
+
if (fs.existsSync(rcFile)) {
|
|
141
|
+
const content = fs.readFileSync(rcFile, 'utf8');
|
|
142
|
+
if (content.includes(marker)) {
|
|
143
|
+
return { success: true, alreadyInstalled: true };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Append to .zshrc
|
|
147
|
+
fs.appendFileSync(rcFile, block);
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
message: `Added to ${rcFile}`,
|
|
151
|
+
reload: 'source ~/.zshrc',
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Install fish completion
|
|
156
|
+
*/
|
|
157
|
+
installFish() {
|
|
158
|
+
const completionPath = path.join(this.completionDir, 'ccs.fish');
|
|
159
|
+
const fishCompDir = path.join(this.homeDir, '.config', 'fish', 'completions');
|
|
160
|
+
if (!fs.existsSync(completionPath)) {
|
|
161
|
+
throw new Error('Completion file not found. Please reinstall CCS.');
|
|
162
|
+
}
|
|
163
|
+
// Create fish completion directory (with file conflict checking)
|
|
164
|
+
this.ensureDirectory(fishCompDir);
|
|
165
|
+
// Copy to fish completion directory (fish auto-loads from here)
|
|
166
|
+
const destFile = path.join(fishCompDir, 'ccs.fish');
|
|
167
|
+
fs.copyFileSync(completionPath, destFile);
|
|
168
|
+
return {
|
|
169
|
+
success: true,
|
|
170
|
+
message: `Installed to ${destFile}`,
|
|
171
|
+
reload: 'Fish auto-loads completions (no reload needed)',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Install PowerShell completion
|
|
176
|
+
*/
|
|
177
|
+
installPowerShell() {
|
|
178
|
+
const profilePath = process.env.PROFILE ||
|
|
179
|
+
path.join(this.homeDir, 'Documents', 'PowerShell', 'Microsoft.PowerShell_profile.ps1');
|
|
180
|
+
const completionPath = path.join(this.completionDir, 'ccs.ps1');
|
|
181
|
+
if (!fs.existsSync(completionPath)) {
|
|
182
|
+
throw new Error('Completion file not found. Please reinstall CCS.');
|
|
183
|
+
}
|
|
184
|
+
const marker = '# CCS shell completion';
|
|
185
|
+
const sourceCmd = `. "${completionPath.replace(/\\/g, '\\\\')}"`;
|
|
186
|
+
const block = `\n${marker}\n${sourceCmd}\n`;
|
|
187
|
+
// Create profile directory if needed (with file conflict checking)
|
|
188
|
+
const profileDir = path.dirname(profilePath);
|
|
189
|
+
this.ensureDirectory(profileDir);
|
|
190
|
+
// Check if already installed
|
|
191
|
+
if (fs.existsSync(profilePath)) {
|
|
192
|
+
const content = fs.readFileSync(profilePath, 'utf8');
|
|
193
|
+
if (content.includes(marker)) {
|
|
194
|
+
return { success: true, alreadyInstalled: true };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Append to PowerShell profile
|
|
198
|
+
fs.appendFileSync(profilePath, block);
|
|
199
|
+
return {
|
|
200
|
+
success: true,
|
|
201
|
+
message: `Added to ${profilePath}`,
|
|
202
|
+
reload: '. $PROFILE',
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Install for detected or specified shell
|
|
207
|
+
*/
|
|
208
|
+
install(shell = null) {
|
|
209
|
+
const targetShell = shell || this.detectShell();
|
|
210
|
+
if (!targetShell) {
|
|
211
|
+
throw new Error('Could not detect shell. Please specify: --bash, --zsh, --fish, or --powershell');
|
|
212
|
+
}
|
|
213
|
+
// Ensure completion files exist
|
|
214
|
+
this.ensureCompletionFiles();
|
|
215
|
+
// Install for target shell
|
|
216
|
+
switch (targetShell) {
|
|
217
|
+
case 'bash':
|
|
218
|
+
return this.installBash();
|
|
219
|
+
case 'zsh':
|
|
220
|
+
return this.installZsh();
|
|
221
|
+
case 'fish':
|
|
222
|
+
return this.installFish();
|
|
223
|
+
case 'powershell':
|
|
224
|
+
return this.installPowerShell();
|
|
225
|
+
default:
|
|
226
|
+
throw new Error(`Unsupported shell: ${targetShell}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.ShellCompletionInstaller = ShellCompletionInstaller;
|
|
231
|
+
//# sourceMappingURL=shell-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-completion.js","sourceRoot":"","sources":["../../src/utils/shell-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Executor Utilities
|
|
3
|
+
*
|
|
4
|
+
* Cross-platform shell execution utilities for CCS.
|
|
5
|
+
*/
|
|
6
|
+
/// <reference types="node" />
|
|
7
|
+
/**
|
|
8
|
+
* Escape arguments for shell execution (Windows compatibility)
|
|
9
|
+
*/
|
|
10
|
+
export declare function escapeShellArg(arg: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Execute Claude CLI with unified spawn logic
|
|
13
|
+
*/
|
|
14
|
+
export declare function execClaude(claudeCli: string, args: string[], envVars?: NodeJS.ProcessEnv | null): void;
|
|
15
|
+
//# sourceMappingURL=shell-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-executor.d.ts","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAKH;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,MAAM,CAAC,UAAU,GAAG,IAAW,GACvC,IAAI,CAmCN"}
|