ccman 2.1.6 → 3.0.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 (172) hide show
  1. package/README.md +103 -227
  2. package/dist/commands/claudecode/add.d.ts +3 -0
  3. package/dist/commands/claudecode/add.d.ts.map +1 -0
  4. package/dist/commands/claudecode/add.js +129 -0
  5. package/dist/commands/claudecode/add.js.map +1 -0
  6. package/dist/commands/claudecode/clone.d.ts +3 -0
  7. package/dist/commands/claudecode/clone.d.ts.map +1 -0
  8. package/dist/commands/claudecode/clone.js +71 -0
  9. package/dist/commands/claudecode/clone.js.map +1 -0
  10. package/dist/commands/claudecode/current.d.ts +3 -0
  11. package/dist/commands/claudecode/current.d.ts.map +1 -0
  12. package/dist/commands/claudecode/current.js +32 -0
  13. package/dist/commands/claudecode/current.js.map +1 -0
  14. package/dist/commands/claudecode/edit.d.ts +3 -0
  15. package/dist/commands/claudecode/edit.d.ts.map +1 -0
  16. package/dist/commands/claudecode/edit.js +94 -0
  17. package/dist/commands/claudecode/edit.js.map +1 -0
  18. package/dist/commands/claudecode/index.d.ts +6 -0
  19. package/dist/commands/claudecode/index.d.ts.map +1 -0
  20. package/dist/commands/claudecode/index.js +20 -0
  21. package/dist/commands/claudecode/index.js.map +1 -0
  22. package/dist/commands/claudecode/list.d.ts +3 -0
  23. package/dist/commands/claudecode/list.d.ts.map +1 -0
  24. package/dist/commands/claudecode/list.js +45 -0
  25. package/dist/commands/claudecode/list.js.map +1 -0
  26. package/dist/commands/claudecode/remove.d.ts +3 -0
  27. package/dist/commands/claudecode/remove.d.ts.map +1 -0
  28. package/dist/commands/claudecode/remove.js +75 -0
  29. package/dist/commands/claudecode/remove.js.map +1 -0
  30. package/dist/commands/claudecode/use.d.ts +3 -0
  31. package/dist/commands/claudecode/use.d.ts.map +1 -0
  32. package/dist/commands/claudecode/use.js +66 -0
  33. package/dist/commands/claudecode/use.js.map +1 -0
  34. package/dist/commands/codex/add.d.ts +3 -0
  35. package/dist/commands/codex/add.d.ts.map +1 -0
  36. package/dist/commands/codex/add.js +130 -0
  37. package/dist/commands/codex/add.js.map +1 -0
  38. package/dist/commands/codex/clone.d.ts +3 -0
  39. package/dist/commands/codex/clone.d.ts.map +1 -0
  40. package/dist/commands/codex/clone.js +71 -0
  41. package/dist/commands/codex/clone.js.map +1 -0
  42. package/dist/commands/codex/current.d.ts +3 -0
  43. package/dist/commands/codex/current.d.ts.map +1 -0
  44. package/dist/commands/codex/current.js +32 -0
  45. package/dist/commands/codex/current.js.map +1 -0
  46. package/dist/commands/codex/edit.d.ts +3 -0
  47. package/dist/commands/codex/edit.d.ts.map +1 -0
  48. package/dist/commands/codex/edit.js +94 -0
  49. package/dist/commands/codex/edit.js.map +1 -0
  50. package/dist/commands/codex/index.d.ts +6 -0
  51. package/dist/commands/codex/index.d.ts.map +1 -0
  52. package/dist/commands/codex/index.js +20 -0
  53. package/dist/commands/codex/index.js.map +1 -0
  54. package/dist/commands/codex/list.d.ts +3 -0
  55. package/dist/commands/codex/list.d.ts.map +1 -0
  56. package/dist/commands/codex/list.js +45 -0
  57. package/dist/commands/codex/list.js.map +1 -0
  58. package/dist/commands/codex/remove.d.ts +3 -0
  59. package/dist/commands/codex/remove.d.ts.map +1 -0
  60. package/dist/commands/codex/remove.js +75 -0
  61. package/dist/commands/codex/remove.js.map +1 -0
  62. package/dist/commands/codex/use.d.ts +3 -0
  63. package/dist/commands/codex/use.d.ts.map +1 -0
  64. package/dist/commands/codex/use.js +66 -0
  65. package/dist/commands/codex/use.js.map +1 -0
  66. package/dist/index.d.ts +2 -4
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +53 -19
  69. package/dist/index.js.map +1 -1
  70. package/dist/interactive.d.ts +36 -0
  71. package/dist/interactive.d.ts.map +1 -0
  72. package/dist/interactive.js +509 -0
  73. package/dist/interactive.js.map +1 -0
  74. package/dist/utils/file-check.d.ts +5 -0
  75. package/dist/utils/file-check.d.ts.map +1 -0
  76. package/dist/utils/file-check.js +14 -0
  77. package/dist/utils/file-check.js.map +1 -0
  78. package/dist/utils/logo.d.ts +2 -0
  79. package/dist/utils/logo.d.ts.map +1 -0
  80. package/dist/utils/logo.js +13 -0
  81. package/dist/utils/logo.js.map +1 -0
  82. package/package.json +28 -61
  83. package/LICENSE +0 -21
  84. package/README_en.md +0 -294
  85. package/dist/cli.d.ts +0 -3
  86. package/dist/cli.d.ts.map +0 -1
  87. package/dist/cli.js +0 -948
  88. package/dist/cli.js.map +0 -1
  89. package/dist/commands/lang.d.ts +0 -3
  90. package/dist/commands/lang.d.ts.map +0 -1
  91. package/dist/commands/lang.js +0 -99
  92. package/dist/commands/lang.js.map +0 -1
  93. package/dist/config/default-providers.d.ts +0 -34
  94. package/dist/config/default-providers.d.ts.map +0 -1
  95. package/dist/config/default-providers.js +0 -96
  96. package/dist/config/default-providers.js.map +0 -1
  97. package/dist/config/static-env.d.ts +0 -14
  98. package/dist/config/static-env.d.ts.map +0 -1
  99. package/dist/config/static-env.js +0 -17
  100. package/dist/config/static-env.js.map +0 -1
  101. package/dist/core/CCMConfigManager.d.ts +0 -64
  102. package/dist/core/CCMConfigManager.d.ts.map +0 -1
  103. package/dist/core/CCMConfigManager.js +0 -267
  104. package/dist/core/CCMConfigManager.js.map +0 -1
  105. package/dist/core/ClaudeConfigManager.d.ts +0 -39
  106. package/dist/core/ClaudeConfigManager.d.ts.map +0 -1
  107. package/dist/core/ClaudeConfigManager.js +0 -161
  108. package/dist/core/ClaudeConfigManager.js.map +0 -1
  109. package/dist/core/EnvironmentManager.d.ts +0 -27
  110. package/dist/core/EnvironmentManager.d.ts.map +0 -1
  111. package/dist/core/EnvironmentManager.js +0 -46
  112. package/dist/core/EnvironmentManager.js.map +0 -1
  113. package/dist/i18n/LanguageManager.d.ts +0 -43
  114. package/dist/i18n/LanguageManager.d.ts.map +0 -1
  115. package/dist/i18n/LanguageManager.js +0 -157
  116. package/dist/i18n/LanguageManager.js.map +0 -1
  117. package/dist/i18n/messages.d.ts +0 -95
  118. package/dist/i18n/messages.d.ts.map +0 -1
  119. package/dist/i18n/messages.js +0 -206
  120. package/dist/i18n/messages.js.map +0 -1
  121. package/dist/providers/ProviderManager.d.ts +0 -63
  122. package/dist/providers/ProviderManager.d.ts.map +0 -1
  123. package/dist/providers/ProviderManager.js +0 -350
  124. package/dist/providers/ProviderManager.js.map +0 -1
  125. package/dist/setup/checker.d.ts +0 -33
  126. package/dist/setup/checker.d.ts.map +0 -1
  127. package/dist/setup/checker.js +0 -169
  128. package/dist/setup/checker.js.map +0 -1
  129. package/dist/setup/installer.d.ts +0 -17
  130. package/dist/setup/installer.d.ts.map +0 -1
  131. package/dist/setup/installer.js +0 -108
  132. package/dist/setup/installer.js.map +0 -1
  133. package/dist/setup/planner.d.ts +0 -22
  134. package/dist/setup/planner.d.ts.map +0 -1
  135. package/dist/setup/planner.js +0 -213
  136. package/dist/setup/planner.js.map +0 -1
  137. package/dist/setup/strategies/base.d.ts +0 -26
  138. package/dist/setup/strategies/base.d.ts.map +0 -1
  139. package/dist/setup/strategies/base.js +0 -32
  140. package/dist/setup/strategies/base.js.map +0 -1
  141. package/dist/setup/strategies/node.d.ts +0 -9
  142. package/dist/setup/strategies/node.d.ts.map +0 -1
  143. package/dist/setup/strategies/node.js +0 -141
  144. package/dist/setup/strategies/node.js.map +0 -1
  145. package/dist/setup/strategies/nvm.d.ts +0 -9
  146. package/dist/setup/strategies/nvm.d.ts.map +0 -1
  147. package/dist/setup/strategies/nvm.js +0 -106
  148. package/dist/setup/strategies/nvm.js.map +0 -1
  149. package/dist/setup/strategies/volta.d.ts +0 -9
  150. package/dist/setup/strategies/volta.d.ts.map +0 -1
  151. package/dist/setup/strategies/volta.js +0 -111
  152. package/dist/setup/strategies/volta.js.map +0 -1
  153. package/dist/setup/types.d.ts +0 -95
  154. package/dist/setup/types.d.ts.map +0 -1
  155. package/dist/setup/types.js +0 -6
  156. package/dist/setup/types.js.map +0 -1
  157. package/dist/types/index.d.ts +0 -95
  158. package/dist/types/index.d.ts.map +0 -1
  159. package/dist/types/index.js +0 -7
  160. package/dist/types/index.js.map +0 -1
  161. package/dist/utils/command.d.ts +0 -33
  162. package/dist/utils/command.d.ts.map +0 -1
  163. package/dist/utils/command.js +0 -73
  164. package/dist/utils/command.js.map +0 -1
  165. package/dist/utils/env-config.d.ts +0 -27
  166. package/dist/utils/env-config.d.ts.map +0 -1
  167. package/dist/utils/env-config.js +0 -83
  168. package/dist/utils/env-config.js.map +0 -1
  169. package/dist/utils/version.d.ts +0 -5
  170. package/dist/utils/version.d.ts.map +0 -1
  171. package/dist/utils/version.js +0 -53
  172. package/dist/utils/version.js.map +0 -1
@@ -1,350 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProviderManager = void 0;
4
- const CCMConfigManager_1 = require("../core/CCMConfigManager");
5
- const ClaudeConfigManager_1 = require("../core/ClaudeConfigManager");
6
- const env_config_1 = require("../utils/env-config");
7
- /**
8
- * 供应商管理器
9
- * 核心业务逻辑:管理多个供应商配置并切换Claude配置
10
- */
11
- class ProviderManager {
12
- constructor() {
13
- this.ccmConfig = new CCMConfigManager_1.CCMConfigManager();
14
- // ClaudeConfigManager 将在 init() 中根据 CCM 配置初始化
15
- this.claudeConfig = new ClaudeConfigManager_1.ClaudeConfigManager();
16
- }
17
- /**
18
- * 初始化
19
- */
20
- async init() {
21
- await this.ccmConfig.init();
22
- // 获取 CCM 配置中的 Claude 配置路径
23
- const config = await this.ccmConfig.readConfig();
24
- this.claudeConfig = new ClaudeConfigManager_1.ClaudeConfigManager(config.claudeConfigPath);
25
- await this.claudeConfig.ensureClaudeConfigDir();
26
- }
27
- /**
28
- * 生成供应商唯一ID
29
- * 基于名称生成,确保唯一性
30
- */
31
- async generateProviderId(name) {
32
- // 基础ID:转换为小写,替换空格和特殊字符
33
- const baseId = name
34
- .toLowerCase()
35
- .replace(/[^a-z0-9]/g, '-') // 替换非字母数字字符为连字符
36
- .replace(/-+/g, '-') // 合并多个连字符
37
- .replace(/^-|-$/g, ''); // 移除首尾连字符
38
- // 检查ID是否已存在
39
- const config = await this.ccmConfig.readConfig();
40
- let finalId = baseId;
41
- let counter = 1;
42
- while (config.providers[finalId]) {
43
- finalId = `${baseId}-${counter}`;
44
- counter++;
45
- }
46
- return finalId;
47
- }
48
- /**
49
- * 添加新的供应商配置
50
- */
51
- async addProvider(options) {
52
- try {
53
- // 自动生成唯一ID
54
- const providerId = await this.generateProviderId(options.name);
55
- // 设置默认描述为供应商名称
56
- const description = options.description || options.name;
57
- // 创建供应商配置
58
- const providerConfig = {
59
- name: options.name,
60
- description: description,
61
- config: {
62
- env: {
63
- ANTHROPIC_AUTH_TOKEN: options.apiKey,
64
- ANTHROPIC_BASE_URL: options.baseUrl,
65
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1,
66
- CLAUDE_CODE_MAX_OUTPUT_TOKENS: 32000
67
- },
68
- permissions: {
69
- allow: [],
70
- deny: []
71
- }
72
- },
73
- metadata: {
74
- createdAt: new Date().toISOString(),
75
- updatedAt: new Date().toISOString(),
76
- usageCount: 0
77
- }
78
- };
79
- // 保存供应商配置
80
- await this.ccmConfig.writeProviderConfig(providerId, providerConfig);
81
- // 更新主配置
82
- const config = await this.ccmConfig.readConfig();
83
- config.providers[providerId] = {
84
- name: options.name,
85
- configFile: `${providerId}.json`,
86
- lastUsed: new Date().toISOString()
87
- };
88
- // 如果这是第一个供应商,设为当前并更新Claude配置
89
- if (Object.keys(config.providers).length === 1) {
90
- config.currentProvider = providerId;
91
- // 更新Claude配置,首次可能需要备份
92
- await this.claudeConfig.writeClaudeConfig(providerConfig.config);
93
- // 增加使用次数
94
- providerConfig.metadata.usageCount++;
95
- await this.ccmConfig.writeProviderConfig(providerId, providerConfig);
96
- }
97
- await this.ccmConfig.writeConfig(config);
98
- return {
99
- success: true,
100
- message: `Successfully added provider '${options.name}' (ID: ${providerId})`,
101
- data: { providerId } // 返回生成的ID
102
- };
103
- }
104
- catch (error) {
105
- return {
106
- success: false,
107
- message: `Failed to add provider: ${error}`,
108
- error: error instanceof Error ? error.message : String(error)
109
- };
110
- }
111
- }
112
- /**
113
- * 删除供应商配置
114
- */
115
- async removeProvider(providerId) {
116
- try {
117
- const config = await this.ccmConfig.readConfig();
118
- if (!config.providers[providerId]) {
119
- return {
120
- success: false,
121
- message: `Provider '${providerId}' not found`
122
- };
123
- }
124
- // 删除供应商配置文件
125
- await this.ccmConfig.deleteProviderConfig(providerId);
126
- // 从主配置中移除
127
- delete config.providers[providerId];
128
- // 如果删除的是当前供应商,重置当前供应商
129
- if (config.currentProvider === providerId) {
130
- const remainingProviders = Object.keys(config.providers);
131
- config.currentProvider = remainingProviders.length > 0 ? remainingProviders[0] : '';
132
- }
133
- await this.ccmConfig.writeConfig(config);
134
- return {
135
- success: true,
136
- message: `Successfully removed provider '${providerId}'`
137
- };
138
- }
139
- catch (error) {
140
- return {
141
- success: false,
142
- message: `Failed to remove provider: ${error}`,
143
- error: error instanceof Error ? error.message : String(error)
144
- };
145
- }
146
- }
147
- /**
148
- * 切换到指定供应商
149
- */
150
- async useProvider(providerId) {
151
- try {
152
- const config = await this.ccmConfig.readConfig();
153
- if (!config.providers[providerId]) {
154
- return {
155
- success: false,
156
- message: `Provider '${providerId}' not found`
157
- };
158
- }
159
- // 读取供应商配置
160
- const providerConfig = await this.ccmConfig.readProviderConfig(providerId);
161
- if (!providerConfig) {
162
- return {
163
- success: false,
164
- message: `Provider config file for '${providerId}' not found`
165
- };
166
- }
167
- // 更新Claude配置(不需要备份,因为都是CCM管理的配置之间切换)
168
- await this.claudeConfig.writeClaudeConfig(providerConfig.config, true);
169
- // 更新CCM配置
170
- config.currentProvider = providerId;
171
- config.providers[providerId].lastUsed = new Date().toISOString();
172
- await this.ccmConfig.writeConfig(config);
173
- // 增加使用次数
174
- providerConfig.metadata.usageCount++;
175
- await this.ccmConfig.writeProviderConfig(providerId, providerConfig);
176
- return {
177
- success: true,
178
- message: `Successfully switched to provider '${config.providers[providerId].name}'`
179
- };
180
- }
181
- catch (error) {
182
- return {
183
- success: false,
184
- message: `Failed to switch provider: ${error}`,
185
- error: error instanceof Error ? error.message : String(error)
186
- };
187
- }
188
- }
189
- /**
190
- * 获取当前供应商
191
- */
192
- async getCurrentProvider() {
193
- try {
194
- const config = await this.ccmConfig.readConfig();
195
- if (!config.currentProvider) {
196
- return null;
197
- }
198
- const providerConfig = await this.ccmConfig.readProviderConfig(config.currentProvider);
199
- if (!providerConfig) {
200
- return null;
201
- }
202
- return {
203
- id: config.currentProvider,
204
- config: providerConfig
205
- };
206
- }
207
- catch (error) {
208
- return null;
209
- }
210
- }
211
- /**
212
- * 列出所有供应商
213
- */
214
- async listProviders() {
215
- try {
216
- const config = await this.ccmConfig.readConfig();
217
- const providers = [];
218
- for (const [providerId, providerInfo] of Object.entries(config.providers)) {
219
- const providerConfig = await this.ccmConfig.readProviderConfig(providerId);
220
- if (providerConfig) {
221
- const info = providerInfo;
222
- providers.push({
223
- id: providerId,
224
- name: providerConfig.name,
225
- description: providerConfig.description,
226
- baseUrl: providerConfig.config.env.ANTHROPIC_BASE_URL,
227
- isCurrent: config.currentProvider === providerId,
228
- lastUsed: info.lastUsed,
229
- usageCount: providerConfig.metadata.usageCount
230
- });
231
- }
232
- }
233
- return providers.sort((a, b) => {
234
- // 先按是否为当前排序,再按最后使用时间排序
235
- if (a.isCurrent && !b.isCurrent)
236
- return -1;
237
- if (!a.isCurrent && b.isCurrent)
238
- return 1;
239
- const aTime = new Date(a.lastUsed || '').getTime();
240
- const bTime = new Date(b.lastUsed || '').getTime();
241
- return bTime - aTime;
242
- });
243
- }
244
- catch (error) {
245
- return [];
246
- }
247
- }
248
- /**
249
- * 更新供应商配置
250
- */
251
- async updateProvider(providerId, updates) {
252
- try {
253
- const providerConfig = await this.ccmConfig.readProviderConfig(providerId);
254
- if (!providerConfig) {
255
- return {
256
- success: false,
257
- message: `Provider '${providerId}' not found`
258
- };
259
- }
260
- // 更新配置
261
- if (updates.name) {
262
- providerConfig.name = updates.name;
263
- }
264
- if (updates.description) {
265
- providerConfig.description = updates.description;
266
- }
267
- if (updates.baseUrl) {
268
- providerConfig.config.env.ANTHROPIC_BASE_URL = updates.baseUrl;
269
- }
270
- if (updates.apiKey) {
271
- providerConfig.config.env.ANTHROPIC_AUTH_TOKEN = updates.apiKey;
272
- }
273
- await this.ccmConfig.writeProviderConfig(providerId, providerConfig);
274
- // 如果更新的是当前供应商,同步更新Claude配置
275
- const config = await this.ccmConfig.readConfig();
276
- if (config.currentProvider === providerId) {
277
- await this.claudeConfig.writeClaudeConfig(providerConfig.config, true);
278
- }
279
- // 更新主配置中的名称
280
- if (updates.name) {
281
- config.providers[providerId].name = updates.name;
282
- await this.ccmConfig.writeConfig(config);
283
- }
284
- return {
285
- success: true,
286
- message: `Successfully updated provider '${providerId}'`
287
- };
288
- }
289
- catch (error) {
290
- return {
291
- success: false,
292
- message: `Failed to update provider: ${error}`,
293
- error: error instanceof Error ? error.message : String(error)
294
- };
295
- }
296
- }
297
- /**
298
- * 清除所有配置
299
- */
300
- async clearAll() {
301
- try {
302
- await this.ccmConfig.clearAll();
303
- return {
304
- success: true,
305
- message: 'Successfully cleared all CCM configurations'
306
- };
307
- }
308
- catch (error) {
309
- return {
310
- success: false,
311
- message: `Failed to clear configurations: ${error}`,
312
- error: error instanceof Error ? error.message : String(error)
313
- };
314
- }
315
- }
316
- /**
317
- * 获取统计信息
318
- */
319
- async getStats() {
320
- try {
321
- const config = await this.ccmConfig.readConfig();
322
- const currentProvider = config.currentProvider ?
323
- (config.providers[config.currentProvider]?.name || config.currentProvider) : null;
324
- // 从静态配置获取环境信息
325
- const environment = env_config_1.envConfig.getCurrentEnvironment();
326
- return {
327
- totalProviders: Object.keys(config.providers).length,
328
- currentProvider,
329
- claudeConfigPath: this.claudeConfig.getClaudeConfigPath(),
330
- ccmConfigPath: this.ccmConfig.getConfigDir(),
331
- ccmConfigFile: `${this.ccmConfig.getConfigDir()}/config.json`,
332
- providersDir: this.ccmConfig.getProvidersDir(),
333
- environment
334
- };
335
- }
336
- catch (error) {
337
- return {
338
- totalProviders: 0,
339
- currentProvider: null,
340
- claudeConfigPath: this.claudeConfig.getClaudeConfigPath(),
341
- ccmConfigPath: this.ccmConfig.getConfigDir(),
342
- ccmConfigFile: `${this.ccmConfig.getConfigDir()}/config.json`,
343
- providersDir: this.ccmConfig.getProvidersDir(),
344
- environment: 'unknown'
345
- };
346
- }
347
- }
348
- }
349
- exports.ProviderManager = ProviderManager;
350
- //# sourceMappingURL=ProviderManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProviderManager.js","sourceRoot":"","sources":["../../src/providers/ProviderManager.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { EnvironmentCheckResult, ClaudeCodeRequirements } from './types';
2
- /**
3
- * 环境检查器类
4
- */
5
- export declare class EnvironmentChecker {
6
- private requirements;
7
- constructor();
8
- /**
9
- * 执行完整的环境检查
10
- */
11
- check(): Promise<EnvironmentCheckResult>;
12
- /**
13
- * 检查 Claude Code
14
- */
15
- private checkClaudeCode;
16
- /**
17
- * 检查 Node.js
18
- */
19
- private checkNode;
20
- /**
21
- * 检查 npm
22
- */
23
- private checkNpm;
24
- /**
25
- * 检查版本管理器
26
- */
27
- private checkVersionManagers;
28
- /**
29
- * 获取 Claude Code 要求(供外部使用)
30
- */
31
- getRequirements(): ClaudeCodeRequirements;
32
- }
33
- //# sourceMappingURL=checker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/setup/checker.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,sBAAsB,EAItB,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAyB;;IAW7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,sBAAsB,CAAC;IA8D9C;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,SAAS;IA0BvB;;OAEG;YACW,QAAQ;IAQtB;;OAEG;YACW,oBAAoB;IAOlC;;OAEG;IACH,eAAe,IAAI,sBAAsB;CAG1C"}
@@ -1,169 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.EnvironmentChecker = void 0;
37
- /**
38
- * 环境检查器
39
- */
40
- const semver = __importStar(require("semver"));
41
- const command_1 = require("../utils/command");
42
- /**
43
- * 环境检查器类
44
- */
45
- class EnvironmentChecker {
46
- constructor() {
47
- // TODO: 从官方文档获取实际要求
48
- // 临时使用假设的要求
49
- this.requirements = {
50
- nodeVersion: '>=18.0.0',
51
- requiredTools: ['node', 'npm']
52
- };
53
- }
54
- /**
55
- * 执行完整的环境检查
56
- */
57
- async check() {
58
- const issues = [];
59
- const suggestions = [];
60
- // 检查 Claude Code
61
- const claudeCode = await this.checkClaudeCode();
62
- // 检查 Node.js(总是检查,即使 Claude Code 已安装)
63
- const node = await this.checkNode();
64
- // 检查 npm
65
- const npm = await this.checkNpm();
66
- // 检查版本管理器
67
- const versionManagers = await this.checkVersionManagers();
68
- // 获取平台信息
69
- const platform = process.platform;
70
- // 分析检查结果,生成问题和建议
71
- let status = 'ready';
72
- if (!claudeCode.installed) {
73
- status = 'needs-setup';
74
- issues.push('Claude Code 未安装');
75
- suggestions.push('运行 "ccman setup" 安装 Claude Code');
76
- }
77
- if (!node.installed) {
78
- status = 'error';
79
- issues.push('Node.js 未安装');
80
- suggestions.push('需要先安装 Node.js (推荐使用 volta 或 nvm)');
81
- }
82
- else if (!node.versionValid) {
83
- status = node.installed && claudeCode.installed ? 'warning' : 'error';
84
- issues.push(`Node.js 版本不满足要求 (当前: ${node.version}, 需要: ${this.requirements.nodeVersion})`);
85
- suggestions.push('升级 Node.js 到推荐版本');
86
- }
87
- if (!npm.installed) {
88
- status = 'error';
89
- issues.push('npm 未找到');
90
- suggestions.push('重新安装 Node.js 或修复 npm');
91
- }
92
- // 如果所有检查都通过
93
- if (claudeCode.installed && node.versionValid && npm.installed) {
94
- status = 'ready';
95
- }
96
- return {
97
- status,
98
- claudeCode,
99
- node,
100
- npm,
101
- versionManagers,
102
- requirements: this.requirements,
103
- platform,
104
- issues,
105
- suggestions
106
- };
107
- }
108
- /**
109
- * 检查 Claude Code
110
- */
111
- async checkClaudeCode() {
112
- const installed = await (0, command_1.commandExists)('claude');
113
- const version = installed ? await (0, command_1.getCommandVersion)('claude') : null;
114
- const path = installed ? await (0, command_1.getCommandPath)('claude') : null;
115
- return { installed, version, path };
116
- }
117
- /**
118
- * 检查 Node.js
119
- */
120
- async checkNode() {
121
- const installed = await (0, command_1.commandExists)('node');
122
- const version = installed ? await (0, command_1.getCommandVersion)('node') : null;
123
- const path = installed ? await (0, command_1.getCommandPath)('node') : null;
124
- let versionValid = false;
125
- if (installed && version) {
126
- try {
127
- // 清理版本号格式 (v20.11.0 → 20.11.0)
128
- const cleanVersion = version.replace(/^v/, '');
129
- versionValid = semver.satisfies(cleanVersion, this.requirements.nodeVersion);
130
- }
131
- catch (error) {
132
- // 版本格式无效
133
- versionValid = false;
134
- }
135
- }
136
- return {
137
- installed,
138
- version,
139
- path,
140
- versionValid,
141
- requiredVersion: this.requirements.nodeVersion
142
- };
143
- }
144
- /**
145
- * 检查 npm
146
- */
147
- async checkNpm() {
148
- const installed = await (0, command_1.commandExists)('npm');
149
- const version = installed ? await (0, command_1.getCommandVersion)('npm') : null;
150
- const path = installed ? await (0, command_1.getCommandPath)('npm') : null;
151
- return { installed, version, path };
152
- }
153
- /**
154
- * 检查版本管理器
155
- */
156
- async checkVersionManagers() {
157
- const volta = await (0, command_1.commandExists)('volta');
158
- const nvm = await (0, command_1.commandExists)('nvm');
159
- return { volta, nvm };
160
- }
161
- /**
162
- * 获取 Claude Code 要求(供外部使用)
163
- */
164
- getRequirements() {
165
- return this.requirements;
166
- }
167
- }
168
- exports.EnvironmentChecker = EnvironmentChecker;
169
- //# sourceMappingURL=checker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/setup/checker.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { InstallStep, InstallationResult, InstallerOptions } from './types';
2
- /**
3
- * 安装执行器类
4
- */
5
- export declare class Installer {
6
- private options;
7
- constructor(options?: InstallerOptions);
8
- /**
9
- * 执行安装步骤
10
- */
11
- executeSteps(steps: InstallStep[]): Promise<InstallationResult>;
12
- /**
13
- * 设置选项
14
- */
15
- setOptions(options: InstallerOptions): void;
16
- }
17
- //# sourceMappingURL=installer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/setup/installer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5E;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,GAAE,gBAAqB;IAO1C;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuFrE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAG5C"}