ccman 2.1.5 → 2.1.7

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 (55) hide show
  1. package/dist/cli.js +219 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config/static-env.d.ts +1 -1
  4. package/dist/config/static-env.js +1 -1
  5. package/dist/core/ClaudeConfigManager.d.ts +3 -6
  6. package/dist/core/ClaudeConfigManager.d.ts.map +1 -1
  7. package/dist/core/ClaudeConfigManager.js +16 -19
  8. package/dist/core/ClaudeConfigManager.js.map +1 -1
  9. package/dist/core/EnvironmentManager.d.ts +27 -0
  10. package/dist/core/EnvironmentManager.d.ts.map +1 -0
  11. package/dist/core/EnvironmentManager.js +46 -0
  12. package/dist/core/EnvironmentManager.js.map +1 -0
  13. package/dist/i18n/messages.d.ts +30 -0
  14. package/dist/i18n/messages.d.ts.map +1 -1
  15. package/dist/i18n/messages.js +62 -0
  16. package/dist/i18n/messages.js.map +1 -1
  17. package/dist/providers/ProviderManager.js +3 -3
  18. package/dist/providers/ProviderManager.js.map +1 -1
  19. package/dist/setup/checker.d.ts +33 -0
  20. package/dist/setup/checker.d.ts.map +1 -0
  21. package/dist/setup/checker.js +169 -0
  22. package/dist/setup/checker.js.map +1 -0
  23. package/dist/setup/installer.d.ts +17 -0
  24. package/dist/setup/installer.d.ts.map +1 -0
  25. package/dist/setup/installer.js +108 -0
  26. package/dist/setup/installer.js.map +1 -0
  27. package/dist/setup/planner.d.ts +22 -0
  28. package/dist/setup/planner.d.ts.map +1 -0
  29. package/dist/setup/planner.js +213 -0
  30. package/dist/setup/planner.js.map +1 -0
  31. package/dist/setup/strategies/base.d.ts +26 -0
  32. package/dist/setup/strategies/base.d.ts.map +1 -0
  33. package/dist/setup/strategies/base.js +32 -0
  34. package/dist/setup/strategies/base.js.map +1 -0
  35. package/dist/setup/strategies/node.d.ts +9 -0
  36. package/dist/setup/strategies/node.d.ts.map +1 -0
  37. package/dist/setup/strategies/node.js +141 -0
  38. package/dist/setup/strategies/node.js.map +1 -0
  39. package/dist/setup/strategies/nvm.d.ts +9 -0
  40. package/dist/setup/strategies/nvm.d.ts.map +1 -0
  41. package/dist/setup/strategies/nvm.js +106 -0
  42. package/dist/setup/strategies/nvm.js.map +1 -0
  43. package/dist/setup/strategies/volta.d.ts +9 -0
  44. package/dist/setup/strategies/volta.d.ts.map +1 -0
  45. package/dist/setup/strategies/volta.js +111 -0
  46. package/dist/setup/strategies/volta.js.map +1 -0
  47. package/dist/setup/types.d.ts +95 -0
  48. package/dist/setup/types.d.ts.map +1 -0
  49. package/dist/setup/types.js +6 -0
  50. package/dist/setup/types.js.map +1 -0
  51. package/dist/utils/command.d.ts +33 -0
  52. package/dist/utils/command.d.ts.map +1 -0
  53. package/dist/utils/command.js +73 -0
  54. package/dist/utils/command.js.map +1 -0
  55. package/package.json +5 -2
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VoltaStrategy = void 0;
4
+ /**
5
+ * Volta 安装策略
6
+ */
7
+ const base_1 = require("./base");
8
+ class VoltaStrategy extends base_1.InstallStrategy {
9
+ async getOptions() {
10
+ const options = [];
11
+ const tools = await this.checkPlatformTools();
12
+ // macOS / Linux
13
+ if (this.platform === 'darwin' || this.platform === 'linux') {
14
+ // 选项1: 官方脚本(优先推荐)
15
+ options.push({
16
+ id: 'volta-script',
17
+ name: '使用官方脚本安装 Volta(推荐)',
18
+ description: '简单快速,一键安装',
19
+ priority: 1,
20
+ steps: [
21
+ {
22
+ name: 'install-volta',
23
+ description: '下载并安装 Volta',
24
+ command: 'curl https://get.volta.sh | bash'
25
+ },
26
+ {
27
+ name: 'reload-shell',
28
+ description: '重新加载 shell 配置',
29
+ command: 'source ~/.bashrc || source ~/.zshrc',
30
+ optional: true
31
+ }
32
+ ]
33
+ });
34
+ // 选项2: Homebrew(如果已安装)
35
+ if (tools.brew) {
36
+ options.push({
37
+ id: 'volta-brew',
38
+ name: '使用 Homebrew 安装 Volta',
39
+ description: '如果你更喜欢使用 Homebrew',
40
+ priority: 2,
41
+ steps: [
42
+ {
43
+ name: 'install-volta',
44
+ description: '通过 Homebrew 安装 Volta',
45
+ command: 'brew install volta'
46
+ }
47
+ ]
48
+ });
49
+ }
50
+ }
51
+ // Windows
52
+ if (this.platform === 'win32') {
53
+ // 选项1: 官方安装器(优先)
54
+ options.push({
55
+ id: 'volta-installer',
56
+ name: '下载 Volta 官方安装器(推荐)',
57
+ description: '访问官网下载 .msi 安装器',
58
+ priority: 1,
59
+ steps: [
60
+ {
61
+ name: 'download-volta',
62
+ description: '访问 https://github.com/volta-cli/volta/releases',
63
+ command: 'open https://github.com/volta-cli/volta/releases',
64
+ manual: true
65
+ },
66
+ {
67
+ name: 'install-volta',
68
+ description: '下载并运行 volta-x.x.x-windows-x86_64.msi',
69
+ command: 'manual',
70
+ manual: true
71
+ }
72
+ ]
73
+ });
74
+ // 选项2: Chocolatey(如果已安装)
75
+ if (tools.choco) {
76
+ options.push({
77
+ id: 'volta-choco',
78
+ name: '使用 Chocolatey 安装 Volta',
79
+ description: '通过 Chocolatey 包管理器',
80
+ priority: 2,
81
+ steps: [
82
+ {
83
+ name: 'install-volta',
84
+ description: '通过 Chocolatey 安装 Volta',
85
+ command: 'choco install volta'
86
+ }
87
+ ]
88
+ });
89
+ }
90
+ // 选项3: Scoop(如果已安装)
91
+ if (tools.scoop) {
92
+ options.push({
93
+ id: 'volta-scoop',
94
+ name: '使用 Scoop 安装 Volta',
95
+ description: '通过 Scoop 包管理器',
96
+ priority: 3,
97
+ steps: [
98
+ {
99
+ name: 'install-volta',
100
+ description: '通过 Scoop 安装 Volta',
101
+ command: 'scoop install volta'
102
+ }
103
+ ]
104
+ });
105
+ }
106
+ }
107
+ return options;
108
+ }
109
+ }
110
+ exports.VoltaStrategy = VoltaStrategy;
111
+ //# sourceMappingURL=volta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volta.js","sourceRoot":"","sources":["../../../src/setup/strategies/volta.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iCAAyC;AAGzC,MAAa,aAAc,SAAQ,sBAAe;IAChD,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE9C,gBAAgB;QAChB,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC5D,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE,aAAa;wBAC1B,OAAO,EAAE,kCAAkC;qBAC5C;oBACD;wBACE,IAAI,EAAE,cAAc;wBACpB,WAAW,EAAE,eAAe;wBAC5B,OAAO,EAAE,qCAAqC;wBAC9C,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,YAAY;oBAChB,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,mBAAmB;oBAChC,QAAQ,EAAE,CAAC;oBACX,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,sBAAsB;4BACnC,OAAO,EAAE,oBAAoB;yBAC9B;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,UAAU;QACV,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9B,iBAAiB;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,iBAAiB;gBAC9B,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,gBAAgB;wBACtB,WAAW,EAAE,gDAAgD;wBAC7D,OAAO,EAAE,kDAAkD;wBAC3D,MAAM,EAAE,IAAI;qBACb;oBACD;wBACE,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE,sCAAsC;wBACnD,OAAO,EAAE,QAAQ;wBACjB,MAAM,EAAE,IAAI;qBACb;iBACF;aACF,CAAC,CAAC;YAEH,yBAAyB;YACzB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,wBAAwB;oBAC9B,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,CAAC;oBACX,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,wBAAwB;4BACrC,OAAO,EAAE,qBAAqB;yBAC/B;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;YAED,oBAAoB;YACpB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,eAAe;oBAC5B,QAAQ,EAAE,CAAC;oBACX,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,mBAAmB;4BAChC,OAAO,EAAE,qBAAqB;yBAC/B;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA3GD,sCA2GC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Setup 模块类型定义
3
+ */
4
+ export type Platform = 'darwin' | 'linux' | 'win32';
5
+ /**
6
+ * 工具信息
7
+ */
8
+ export interface ToolInfo {
9
+ installed: boolean;
10
+ version: string | null;
11
+ path?: string | null;
12
+ }
13
+ /**
14
+ * Node.js 信息
15
+ */
16
+ export interface NodeInfo extends ToolInfo {
17
+ versionValid?: boolean;
18
+ requiredVersion?: string;
19
+ }
20
+ /**
21
+ * 版本管理器信息
22
+ */
23
+ export interface VersionManagerInfo {
24
+ volta: boolean;
25
+ nvm: boolean;
26
+ }
27
+ /**
28
+ * Claude Code 依赖要求
29
+ */
30
+ export interface ClaudeCodeRequirements {
31
+ nodeVersion: string;
32
+ requiredTools: string[];
33
+ }
34
+ /**
35
+ * 环境检查结果
36
+ */
37
+ export interface EnvironmentCheckResult {
38
+ status: 'ready' | 'needs-setup' | 'warning' | 'error';
39
+ claudeCode: ToolInfo;
40
+ node: NodeInfo;
41
+ npm: ToolInfo;
42
+ versionManagers: VersionManagerInfo;
43
+ requirements: ClaudeCodeRequirements;
44
+ platform: Platform;
45
+ issues: string[];
46
+ suggestions: string[];
47
+ }
48
+ /**
49
+ * 安装步骤
50
+ */
51
+ export interface InstallStep {
52
+ name: string;
53
+ description: string;
54
+ command: string;
55
+ manual?: boolean;
56
+ optional?: boolean;
57
+ }
58
+ /**
59
+ * 安装选项
60
+ */
61
+ export interface InstallOption {
62
+ id: string;
63
+ name: string;
64
+ description: string;
65
+ priority: number;
66
+ steps: InstallStep[];
67
+ reason?: string;
68
+ }
69
+ /**
70
+ * 安装计划
71
+ */
72
+ export interface InstallationPlan {
73
+ needsNode: boolean;
74
+ needsClaudeCode: boolean;
75
+ nodeOptions: InstallOption[];
76
+ claudeCodeSteps: InstallStep[];
77
+ selectedNodeOption?: InstallOption;
78
+ }
79
+ /**
80
+ * 安装结果
81
+ */
82
+ export interface InstallationResult {
83
+ success: boolean;
84
+ message: string;
85
+ stepsExecuted: string[];
86
+ stepsFailed: string[];
87
+ }
88
+ /**
89
+ * 安装执行选项
90
+ */
91
+ export interface InstallerOptions {
92
+ dryRun?: boolean;
93
+ auto?: boolean;
94
+ }
95
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/setup/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,UAAU,EAAE,QAAQ,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,eAAe,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,sBAAsB,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,aAAa,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Setup 模块类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/setup/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * 命令执行结果
3
+ */
4
+ export interface CommandResult {
5
+ stdout: string;
6
+ stderr: string;
7
+ code: number;
8
+ }
9
+ /**
10
+ * 命令执行选项
11
+ */
12
+ export interface CommandOptions {
13
+ timeout?: number;
14
+ cwd?: string;
15
+ env?: Record<string, string>;
16
+ }
17
+ /**
18
+ * 执行命令
19
+ */
20
+ export declare function executeCommand(cmd: string, options?: CommandOptions): Promise<CommandResult>;
21
+ /**
22
+ * 检查命令是否存在
23
+ */
24
+ export declare function commandExists(cmd: string): Promise<boolean>;
25
+ /**
26
+ * 获取命令版本
27
+ */
28
+ export declare function getCommandVersion(cmd: string): Promise<string | null>;
29
+ /**
30
+ * 获取命令路径
31
+ */
32
+ export declare function getCommandPath(cmd: string): Promise<string | null>;
33
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/utils/command.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOjE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxE"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeCommand = executeCommand;
4
+ exports.commandExists = commandExists;
5
+ exports.getCommandVersion = getCommandVersion;
6
+ exports.getCommandPath = getCommandPath;
7
+ /**
8
+ * 命令执行工具函数
9
+ */
10
+ const child_process_1 = require("child_process");
11
+ const util_1 = require("util");
12
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
13
+ /**
14
+ * 执行命令
15
+ */
16
+ async function executeCommand(cmd, options) {
17
+ try {
18
+ const { stdout, stderr } = await execAsync(cmd, {
19
+ timeout: options?.timeout || 30000,
20
+ cwd: options?.cwd,
21
+ env: { ...process.env, ...options?.env }
22
+ });
23
+ return {
24
+ stdout: stdout.trim(),
25
+ stderr: stderr.trim(),
26
+ code: 0
27
+ };
28
+ }
29
+ catch (error) {
30
+ return {
31
+ stdout: error.stdout?.trim() || '',
32
+ stderr: error.stderr?.trim() || error.message,
33
+ code: error.code || 1
34
+ };
35
+ }
36
+ }
37
+ /**
38
+ * 检查命令是否存在
39
+ */
40
+ async function commandExists(cmd) {
41
+ const checkCmd = process.platform === 'win32'
42
+ ? `where ${cmd}`
43
+ : `command -v ${cmd}`;
44
+ const result = await executeCommand(checkCmd);
45
+ return result.code === 0;
46
+ }
47
+ /**
48
+ * 获取命令版本
49
+ */
50
+ async function getCommandVersion(cmd) {
51
+ const result = await executeCommand(`${cmd} --version`);
52
+ if (result.code !== 0) {
53
+ return null;
54
+ }
55
+ // 提取版本号(匹配常见格式 x.y.z)
56
+ const versionMatch = result.stdout.match(/\d+\.\d+\.\d+/);
57
+ return versionMatch ? versionMatch[0] : result.stdout.split('\n')[0];
58
+ }
59
+ /**
60
+ * 获取命令路径
61
+ */
62
+ async function getCommandPath(cmd) {
63
+ const checkCmd = process.platform === 'win32'
64
+ ? `where ${cmd}`
65
+ : `which ${cmd}`;
66
+ const result = await executeCommand(checkCmd);
67
+ if (result.code !== 0) {
68
+ return null;
69
+ }
70
+ // Windows 的 where 可能返回多个路径,取第一个
71
+ return result.stdout.split('\n')[0].trim();
72
+ }
73
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/utils/command.ts"],"names":[],"mappings":";;AA6BA,wCAuBC;AAKD,sCAOC;AAKD,8CAUC;AAKD,wCAaC;AAjGD;;GAEG;AACH,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAoBlC;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,OAAwB;IAExB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK;YAClC,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;SACzC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO;YAC7C,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3C,CAAC,CAAC,SAAS,GAAG,EAAE;QAChB,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC3C,CAAC,CAAC,SAAS,GAAG,EAAE;QAChB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;IAEnB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccman",
3
- "version": "2.1.5",
3
+ "version": "2.1.7",
4
4
  "description": "Claude Code Manager - A TypeScript tool to manage Claude Code API configurations",
5
5
  "main": "dist/index.js",
6
6
  "packageManager": "pnpm@7.33.7",
@@ -60,13 +60,16 @@
60
60
  "chalk": "^4.1.2",
61
61
  "commander": "^11.0.0",
62
62
  "fs-extra": "^11.0.0",
63
- "inquirer": "^8.2.6"
63
+ "inquirer": "^8.2.6",
64
+ "semver": "^7.7.2"
64
65
  },
65
66
  "devDependencies": {
67
+ "@esbuild/darwin-arm64": "^0.25.10",
66
68
  "@types/fs-extra": "^11.0.0",
67
69
  "@types/inquirer": "^9.0.0",
68
70
  "@types/jest": "^29.0.0",
69
71
  "@types/node": "^20.0.0",
72
+ "@types/semver": "^7.7.1",
70
73
  "@typescript-eslint/eslint-plugin": "^6.0.0",
71
74
  "@typescript-eslint/parser": "^6.0.0",
72
75
  "eslint": "^8.0.0",