ccman 2.1.7 → 3.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 +103 -227
- package/package.json +27 -61
- package/LICENSE +0 -21
- package/README_en.md +0 -294
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -948
- package/dist/cli.js.map +0 -1
- package/dist/commands/lang.d.ts +0 -3
- package/dist/commands/lang.d.ts.map +0 -1
- package/dist/commands/lang.js +0 -99
- package/dist/commands/lang.js.map +0 -1
- package/dist/config/default-providers.d.ts +0 -34
- package/dist/config/default-providers.d.ts.map +0 -1
- package/dist/config/default-providers.js +0 -96
- package/dist/config/default-providers.js.map +0 -1
- package/dist/config/static-env.d.ts +0 -14
- package/dist/config/static-env.d.ts.map +0 -1
- package/dist/config/static-env.js +0 -17
- package/dist/config/static-env.js.map +0 -1
- package/dist/core/CCMConfigManager.d.ts +0 -64
- package/dist/core/CCMConfigManager.d.ts.map +0 -1
- package/dist/core/CCMConfigManager.js +0 -267
- package/dist/core/CCMConfigManager.js.map +0 -1
- package/dist/core/ClaudeConfigManager.d.ts +0 -36
- package/dist/core/ClaudeConfigManager.d.ts.map +0 -1
- package/dist/core/ClaudeConfigManager.js +0 -158
- package/dist/core/ClaudeConfigManager.js.map +0 -1
- package/dist/core/EnvironmentManager.d.ts +0 -27
- package/dist/core/EnvironmentManager.d.ts.map +0 -1
- package/dist/core/EnvironmentManager.js +0 -46
- package/dist/core/EnvironmentManager.js.map +0 -1
- package/dist/i18n/LanguageManager.d.ts +0 -43
- package/dist/i18n/LanguageManager.d.ts.map +0 -1
- package/dist/i18n/LanguageManager.js +0 -157
- package/dist/i18n/LanguageManager.js.map +0 -1
- package/dist/i18n/messages.d.ts +0 -95
- package/dist/i18n/messages.d.ts.map +0 -1
- package/dist/i18n/messages.js +0 -206
- package/dist/i18n/messages.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -21
- package/dist/index.js.map +0 -1
- package/dist/providers/ProviderManager.d.ts +0 -63
- package/dist/providers/ProviderManager.d.ts.map +0 -1
- package/dist/providers/ProviderManager.js +0 -350
- package/dist/providers/ProviderManager.js.map +0 -1
- package/dist/setup/checker.d.ts +0 -33
- package/dist/setup/checker.d.ts.map +0 -1
- package/dist/setup/checker.js +0 -169
- package/dist/setup/checker.js.map +0 -1
- package/dist/setup/installer.d.ts +0 -17
- package/dist/setup/installer.d.ts.map +0 -1
- package/dist/setup/installer.js +0 -108
- package/dist/setup/installer.js.map +0 -1
- package/dist/setup/planner.d.ts +0 -22
- package/dist/setup/planner.d.ts.map +0 -1
- package/dist/setup/planner.js +0 -213
- package/dist/setup/planner.js.map +0 -1
- package/dist/setup/strategies/base.d.ts +0 -26
- package/dist/setup/strategies/base.d.ts.map +0 -1
- package/dist/setup/strategies/base.js +0 -32
- package/dist/setup/strategies/base.js.map +0 -1
- package/dist/setup/strategies/node.d.ts +0 -9
- package/dist/setup/strategies/node.d.ts.map +0 -1
- package/dist/setup/strategies/node.js +0 -141
- package/dist/setup/strategies/node.js.map +0 -1
- package/dist/setup/strategies/nvm.d.ts +0 -9
- package/dist/setup/strategies/nvm.d.ts.map +0 -1
- package/dist/setup/strategies/nvm.js +0 -106
- package/dist/setup/strategies/nvm.js.map +0 -1
- package/dist/setup/strategies/volta.d.ts +0 -9
- package/dist/setup/strategies/volta.d.ts.map +0 -1
- package/dist/setup/strategies/volta.js +0 -111
- package/dist/setup/strategies/volta.js.map +0 -1
- package/dist/setup/types.d.ts +0 -95
- package/dist/setup/types.d.ts.map +0 -1
- package/dist/setup/types.js +0 -6
- package/dist/setup/types.js.map +0 -1
- package/dist/types/index.d.ts +0 -95
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -7
- package/dist/types/index.js.map +0 -1
- package/dist/utils/command.d.ts +0 -33
- package/dist/utils/command.d.ts.map +0 -1
- package/dist/utils/command.js +0 -73
- package/dist/utils/command.js.map +0 -1
- package/dist/utils/env-config.d.ts +0 -27
- package/dist/utils/env-config.d.ts.map +0 -1
- package/dist/utils/env-config.js +0 -83
- package/dist/utils/env-config.js.map +0 -1
- package/dist/utils/version.d.ts +0 -5
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -53
- package/dist/utils/version.js.map +0 -1
|
@@ -1,267 +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.CCMConfigManager = void 0;
|
|
37
|
-
const fs = __importStar(require("fs-extra"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const version_1 = require("../utils/version");
|
|
40
|
-
const env_config_1 = require("../utils/env-config");
|
|
41
|
-
/**
|
|
42
|
-
* CCM配置管理器
|
|
43
|
-
* 负责管理 ~/.ccman/ 目录下的配置文件
|
|
44
|
-
*/
|
|
45
|
-
class CCMConfigManager {
|
|
46
|
-
constructor() {
|
|
47
|
-
// 使用编译时生成的静态配置
|
|
48
|
-
this.configDir = env_config_1.envConfig.getCCMConfigDir();
|
|
49
|
-
this.configPath = path.join(this.configDir, 'config.json');
|
|
50
|
-
this.providersDir = path.join(this.configDir, 'providers');
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* 初始化配置目录和文件
|
|
54
|
-
*/
|
|
55
|
-
async init() {
|
|
56
|
-
await fs.ensureDir(this.configDir);
|
|
57
|
-
await fs.ensureDir(this.providersDir);
|
|
58
|
-
if (!await fs.pathExists(this.configPath)) {
|
|
59
|
-
// 使用编译时确定的Claude配置路径
|
|
60
|
-
const defaultConfig = {
|
|
61
|
-
version: (0, version_1.getPackageVersion)(),
|
|
62
|
-
currentProvider: '',
|
|
63
|
-
claudeConfigPath: env_config_1.envConfig.getClaudeConfigPath(),
|
|
64
|
-
providers: {},
|
|
65
|
-
settings: {
|
|
66
|
-
language: null,
|
|
67
|
-
firstRun: true
|
|
68
|
-
},
|
|
69
|
-
metadata: {
|
|
70
|
-
version: (0, version_1.getPackageVersion)(),
|
|
71
|
-
createdAt: new Date().toISOString(),
|
|
72
|
-
updatedAt: new Date().toISOString()
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
await fs.writeFile(this.configPath, JSON.stringify(defaultConfig, null, 2));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* 读取主配置
|
|
80
|
-
*/
|
|
81
|
-
async readConfig() {
|
|
82
|
-
try {
|
|
83
|
-
if (!await fs.pathExists(this.configPath)) {
|
|
84
|
-
await this.init();
|
|
85
|
-
}
|
|
86
|
-
const content = await fs.readFile(this.configPath, 'utf8');
|
|
87
|
-
const config = JSON.parse(content);
|
|
88
|
-
// 迁移旧版本配置
|
|
89
|
-
const migratedConfig = await this.migrateConfig(config);
|
|
90
|
-
// 如果配置被迁移了,立即保存新格式
|
|
91
|
-
if (this.needsMigration(config)) {
|
|
92
|
-
await fs.writeFile(this.configPath, JSON.stringify(migratedConfig, null, 2));
|
|
93
|
-
}
|
|
94
|
-
return migratedConfig;
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
throw new Error(`Failed to read CCM config: ${error}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 写入主配置
|
|
102
|
-
*/
|
|
103
|
-
async writeConfig(config) {
|
|
104
|
-
try {
|
|
105
|
-
// 确保配置结构完整,兼容旧版本
|
|
106
|
-
const migratedConfig = await this.migrateConfig(config);
|
|
107
|
-
// 更新版本信息和时间戳
|
|
108
|
-
migratedConfig.version = (0, version_1.getPackageVersion)();
|
|
109
|
-
migratedConfig.metadata.version = (0, version_1.getPackageVersion)();
|
|
110
|
-
migratedConfig.metadata.updatedAt = new Date().toISOString();
|
|
111
|
-
await fs.writeFile(this.configPath, JSON.stringify(migratedConfig, null, 2));
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
throw new Error(`Failed to write CCM config: ${error}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* 检查是否需要迁移配置
|
|
119
|
-
*/
|
|
120
|
-
needsMigration(config) {
|
|
121
|
-
// 只检查metadata字段,因为version字段是新添加的
|
|
122
|
-
return !config.metadata;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* 执行配置迁移
|
|
126
|
-
*/
|
|
127
|
-
async performMigration(config) {
|
|
128
|
-
console.log('🔄 Migrating configuration from older version...');
|
|
129
|
-
// 备份旧配置
|
|
130
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
131
|
-
const backupPath = `${this.configPath}.backup-v1-${timestamp}`;
|
|
132
|
-
if (await fs.pathExists(this.configPath)) {
|
|
133
|
-
await fs.copy(this.configPath, backupPath);
|
|
134
|
-
console.log(`📦 Old config backed up to: ${backupPath}`);
|
|
135
|
-
}
|
|
136
|
-
// 迁移到新格式
|
|
137
|
-
const migratedConfig = {
|
|
138
|
-
version: (0, version_1.getPackageVersion)(),
|
|
139
|
-
currentProvider: config.currentProvider || '',
|
|
140
|
-
claudeConfigPath: config.claudeConfigPath || env_config_1.envConfig.getClaudeConfigPath(),
|
|
141
|
-
providers: config.providers || {},
|
|
142
|
-
settings: {
|
|
143
|
-
language: config.settings?.language || null,
|
|
144
|
-
firstRun: config.settings?.firstRun ?? true
|
|
145
|
-
},
|
|
146
|
-
metadata: {
|
|
147
|
-
version: (0, version_1.getPackageVersion)(),
|
|
148
|
-
createdAt: new Date().toISOString(),
|
|
149
|
-
updatedAt: new Date().toISOString()
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
console.log('✅ Configuration migration completed');
|
|
153
|
-
return migratedConfig;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* 配置迁移和兼容性处理
|
|
157
|
-
*/
|
|
158
|
-
async migrateConfig(config) {
|
|
159
|
-
// 检查是否需要迁移
|
|
160
|
-
if (this.needsMigration(config)) {
|
|
161
|
-
return await this.performMigration(config);
|
|
162
|
-
}
|
|
163
|
-
// 确保所有必需字段存在
|
|
164
|
-
return {
|
|
165
|
-
version: config.version || (0, version_1.getPackageVersion)(),
|
|
166
|
-
currentProvider: config.currentProvider || '',
|
|
167
|
-
claudeConfigPath: config.claudeConfigPath || env_config_1.envConfig.getClaudeConfigPath(),
|
|
168
|
-
providers: config.providers || {},
|
|
169
|
-
settings: {
|
|
170
|
-
language: config.settings?.language || null,
|
|
171
|
-
firstRun: config.settings?.firstRun ?? true
|
|
172
|
-
},
|
|
173
|
-
metadata: {
|
|
174
|
-
version: config.metadata?.version || (0, version_1.getPackageVersion)(),
|
|
175
|
-
createdAt: config.metadata?.createdAt || new Date().toISOString(),
|
|
176
|
-
updatedAt: config.metadata?.updatedAt || new Date().toISOString()
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* 读取供应商配置
|
|
182
|
-
*/
|
|
183
|
-
async readProviderConfig(providerId) {
|
|
184
|
-
try {
|
|
185
|
-
const providerPath = path.join(this.providersDir, `${providerId}.json`);
|
|
186
|
-
if (!await fs.pathExists(providerPath)) {
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
const content = await fs.readFile(providerPath, 'utf8');
|
|
190
|
-
return JSON.parse(content);
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
throw new Error(`Failed to read provider config: ${error}`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* 写入供应商配置
|
|
198
|
-
*/
|
|
199
|
-
async writeProviderConfig(providerId, config) {
|
|
200
|
-
try {
|
|
201
|
-
const providerPath = path.join(this.providersDir, `${providerId}.json`);
|
|
202
|
-
config.metadata.updatedAt = new Date().toISOString();
|
|
203
|
-
await fs.writeFile(providerPath, JSON.stringify(config, null, 2));
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
throw new Error(`Failed to write provider config: ${error}`);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* 删除供应商配置
|
|
211
|
-
*/
|
|
212
|
-
async deleteProviderConfig(providerId) {
|
|
213
|
-
try {
|
|
214
|
-
const providerPath = path.join(this.providersDir, `${providerId}.json`);
|
|
215
|
-
if (await fs.pathExists(providerPath)) {
|
|
216
|
-
await fs.remove(providerPath);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
catch (error) {
|
|
220
|
-
throw new Error(`Failed to delete provider config: ${error}`);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* 列出所有供应商配置文件
|
|
225
|
-
*/
|
|
226
|
-
async listProviderFiles() {
|
|
227
|
-
try {
|
|
228
|
-
if (!await fs.pathExists(this.providersDir)) {
|
|
229
|
-
return [];
|
|
230
|
-
}
|
|
231
|
-
const files = await fs.readdir(this.providersDir);
|
|
232
|
-
return files
|
|
233
|
-
.filter((file) => file.endsWith('.json'))
|
|
234
|
-
.map((file) => file.replace('.json', ''));
|
|
235
|
-
}
|
|
236
|
-
catch (error) {
|
|
237
|
-
throw new Error(`Failed to list provider files: ${error}`);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* 清除所有配置
|
|
242
|
-
*/
|
|
243
|
-
async clearAll() {
|
|
244
|
-
try {
|
|
245
|
-
if (await fs.pathExists(this.configDir)) {
|
|
246
|
-
await fs.remove(this.configDir);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
throw new Error(`Failed to clear all configs: ${error}`);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* 获取配置目录路径
|
|
255
|
-
*/
|
|
256
|
-
getConfigDir() {
|
|
257
|
-
return this.configDir;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* 获取供应商配置目录路径
|
|
261
|
-
*/
|
|
262
|
-
getProvidersDir() {
|
|
263
|
-
return this.providersDir;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
exports.CCMConfigManager = CCMConfigManager;
|
|
267
|
-
//# sourceMappingURL=CCMConfigManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CCMConfigManager.js","sourceRoot":"","sources":["../../src/core/CCMConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ClaudeSettings } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Claude配置管理器
|
|
4
|
-
* 负责直接修改 ~/.claude/settings.json
|
|
5
|
-
*/
|
|
6
|
-
export declare class ClaudeConfigManager {
|
|
7
|
-
private claudeConfigPath;
|
|
8
|
-
constructor(claudeConfigPath?: string);
|
|
9
|
-
/**
|
|
10
|
-
* 读取Claude配置
|
|
11
|
-
*/
|
|
12
|
-
readClaudeConfig(): Promise<ClaudeSettings | null>;
|
|
13
|
-
/**
|
|
14
|
-
* 选择性写入Claude配置
|
|
15
|
-
* 只覆盖指定的key,保留其他用户配置
|
|
16
|
-
*/
|
|
17
|
-
writeClaudeConfig(config: ClaudeSettings): Promise<string | null>;
|
|
18
|
-
/**
|
|
19
|
-
* 备份当前Claude配置到固定位置
|
|
20
|
-
* 首次使用 ccman 时备份用户原有配置
|
|
21
|
-
*/
|
|
22
|
-
backupClaudeConfig(): Promise<string>;
|
|
23
|
-
/**
|
|
24
|
-
* 恢复Claude配置
|
|
25
|
-
*/
|
|
26
|
-
restoreClaudeConfig(backupPath: string): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* 确保Claude配置目录存在(不存在则创建)
|
|
29
|
-
*/
|
|
30
|
-
ensureClaudeConfigDir(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* 获取Claude配置路径
|
|
33
|
-
*/
|
|
34
|
-
getClaudeConfigPath(): string;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=ClaudeConfigManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,gBAAgB,CAAC,EAAE,MAAM;IAKrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAaxD;;;OAGG;IACG,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmDvE;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAe3C;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5C;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAG9B"}
|
|
@@ -1,158 +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.ClaudeConfigManager = void 0;
|
|
37
|
-
const fs = __importStar(require("fs-extra"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const env_config_1 = require("../utils/env-config");
|
|
40
|
-
/**
|
|
41
|
-
* Claude配置管理器
|
|
42
|
-
* 负责直接修改 ~/.claude/settings.json
|
|
43
|
-
*/
|
|
44
|
-
class ClaudeConfigManager {
|
|
45
|
-
constructor(claudeConfigPath) {
|
|
46
|
-
// 优先使用传入参数,否则使用编译时确定的路径
|
|
47
|
-
this.claudeConfigPath = claudeConfigPath || env_config_1.envConfig.getClaudeConfigPath();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 读取Claude配置
|
|
51
|
-
*/
|
|
52
|
-
async readClaudeConfig() {
|
|
53
|
-
try {
|
|
54
|
-
if (!await fs.pathExists(this.claudeConfigPath)) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const content = await fs.readFile(this.claudeConfigPath, 'utf8');
|
|
58
|
-
return JSON.parse(content);
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
throw new Error(`Failed to read Claude config: ${error}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* 选择性写入Claude配置
|
|
66
|
-
* 只覆盖指定的key,保留其他用户配置
|
|
67
|
-
*/
|
|
68
|
-
async writeClaudeConfig(config) {
|
|
69
|
-
try {
|
|
70
|
-
await fs.ensureDir(path.dirname(this.claudeConfigPath));
|
|
71
|
-
let existingConfig = {};
|
|
72
|
-
let backupPath = null;
|
|
73
|
-
// 首次使用检查:如果备份文件不存在,说明是首次使用
|
|
74
|
-
const backupFilePath = path.join(path.dirname(this.claudeConfigPath), 'settings.ccman.backup.json');
|
|
75
|
-
if (!await fs.pathExists(backupFilePath)) {
|
|
76
|
-
// 首次使用 ccman
|
|
77
|
-
if (await fs.pathExists(this.claudeConfigPath)) {
|
|
78
|
-
// settings.json 存在,完整备份以保护用户原有配置
|
|
79
|
-
backupPath = await this.backupClaudeConfig();
|
|
80
|
-
}
|
|
81
|
-
// 如果 settings.json 不存在,不需要备份(没有用户内容需要保护)
|
|
82
|
-
}
|
|
83
|
-
// 如果文件已存在,读取现有配置
|
|
84
|
-
if (await fs.pathExists(this.claudeConfigPath)) {
|
|
85
|
-
const content = await fs.readFile(this.claudeConfigPath, 'utf8');
|
|
86
|
-
existingConfig = JSON.parse(content);
|
|
87
|
-
}
|
|
88
|
-
// 选择性覆盖只有CCM管理的key
|
|
89
|
-
const mergedConfig = {
|
|
90
|
-
...existingConfig, // 保留现有配置
|
|
91
|
-
env: {
|
|
92
|
-
...existingConfig.env, // 保留现有env配置
|
|
93
|
-
// 只覆盖CCM管理的环境变量
|
|
94
|
-
ANTHROPIC_AUTH_TOKEN: config.env.ANTHROPIC_AUTH_TOKEN,
|
|
95
|
-
ANTHROPIC_BASE_URL: config.env.ANTHROPIC_BASE_URL,
|
|
96
|
-
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: config.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC,
|
|
97
|
-
CLAUDE_CODE_MAX_OUTPUT_TOKENS: config.env.CLAUDE_CODE_MAX_OUTPUT_TOKENS
|
|
98
|
-
},
|
|
99
|
-
permissions: {
|
|
100
|
-
...existingConfig.permissions, // 保留现有permissions配置
|
|
101
|
-
// 覆盖CCM管理的权限设置
|
|
102
|
-
allow: config.permissions.allow,
|
|
103
|
-
deny: config.permissions.deny
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
await fs.writeFile(this.claudeConfigPath, JSON.stringify(mergedConfig, null, 2), 'utf8');
|
|
107
|
-
return backupPath;
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
throw new Error(`Failed to write Claude config: ${error}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* 备份当前Claude配置到固定位置
|
|
115
|
-
* 首次使用 ccman 时备份用户原有配置
|
|
116
|
-
*/
|
|
117
|
-
async backupClaudeConfig() {
|
|
118
|
-
try {
|
|
119
|
-
const backupPath = path.join(path.dirname(this.claudeConfigPath), 'settings.ccman.backup.json');
|
|
120
|
-
if (await fs.pathExists(this.claudeConfigPath)) {
|
|
121
|
-
await fs.copy(this.claudeConfigPath, backupPath);
|
|
122
|
-
return backupPath;
|
|
123
|
-
}
|
|
124
|
-
return '';
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
throw new Error(`Failed to backup Claude config: ${error}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* 恢复Claude配置
|
|
132
|
-
*/
|
|
133
|
-
async restoreClaudeConfig(backupPath) {
|
|
134
|
-
try {
|
|
135
|
-
if (await fs.pathExists(backupPath)) {
|
|
136
|
-
await fs.copy(backupPath, this.claudeConfigPath);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
throw new Error(`Failed to restore Claude config: ${error}`);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* 确保Claude配置目录存在(不存在则创建)
|
|
145
|
-
*/
|
|
146
|
-
async ensureClaudeConfigDir() {
|
|
147
|
-
const claudeDir = path.dirname(this.claudeConfigPath);
|
|
148
|
-
await fs.ensureDir(claudeDir);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* 获取Claude配置路径
|
|
152
|
-
*/
|
|
153
|
-
getClaudeConfigPath() {
|
|
154
|
-
return this.claudeConfigPath;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.ClaudeConfigManager = ClaudeConfigManager;
|
|
158
|
-
//# sourceMappingURL=ClaudeConfigManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeConfigManager.js","sourceRoot":"","sources":["../../src/core/ClaudeConfigManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAE7B,oDAAgD;AAEhD;;;GAGG;AACH,MAAa,mBAAmB;IAG9B,YAAY,gBAAyB;QACnC,wBAAwB;QACxB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,sBAAS,CAAC,mBAAmB,EAAE,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAsB;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAExD,IAAI,cAAc,GAAQ,EAAE,CAAC;YAC7B,IAAI,UAAU,GAAkB,IAAI,CAAC;YAErC,2BAA2B;YAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC,CAAC;YAEpG,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACzC,aAAa;gBACb,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC/C,iCAAiC;oBACjC,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC/C,CAAC;gBACD,yCAAyC;YAC3C,CAAC;YAED,iBAAiB;YACjB,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBACjE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YAED,mBAAmB;YACnB,MAAM,YAAY,GAAG;gBACnB,GAAG,cAAc,EAAE,SAAS;gBAC5B,GAAG,EAAE;oBACH,GAAG,cAAc,CAAC,GAAG,EAAE,YAAY;oBACnC,gBAAgB;oBAChB,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB;oBACrD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB;oBACjD,wCAAwC,EAAE,MAAM,CAAC,GAAG,CAAC,wCAAwC;oBAC7F,6BAA6B,EAAE,MAAM,CAAC,GAAG,CAAC,6BAA6B;iBACxE;gBACD,WAAW,EAAE;oBACX,GAAG,cAAc,CAAC,WAAW,EAAE,oBAAoB;oBACnD,eAAe;oBACf,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;oBAC/B,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACzF,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC,CAAC;YAEhG,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC/C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;gBACjD,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,IAAI,CAAC;YACH,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AA7HD,kDA6HC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { EnvironmentCheckResult, InstallationPlan } from '../setup/types';
|
|
2
|
-
/**
|
|
3
|
-
* 环境管理器类
|
|
4
|
-
*/
|
|
5
|
-
export declare class EnvironmentManager {
|
|
6
|
-
private checker;
|
|
7
|
-
private planner;
|
|
8
|
-
constructor();
|
|
9
|
-
/**
|
|
10
|
-
* 检查环境状态
|
|
11
|
-
*/
|
|
12
|
-
checkEnvironment(): Promise<EnvironmentCheckResult>;
|
|
13
|
-
/**
|
|
14
|
-
* 生成安装计划
|
|
15
|
-
*/
|
|
16
|
-
generateInstallPlan(checkResult: EnvironmentCheckResult): Promise<InstallationPlan>;
|
|
17
|
-
/**
|
|
18
|
-
* 快速验证 Claude Code 是否可用
|
|
19
|
-
* 用于在关键操作前进行检查
|
|
20
|
-
*/
|
|
21
|
-
verifyClaudeCode(): Promise<boolean>;
|
|
22
|
-
/**
|
|
23
|
-
* 获取环境要求
|
|
24
|
-
*/
|
|
25
|
-
getRequirements(): import("../setup/types").ClaudeCodeRequirements;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=EnvironmentManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentManager.d.ts","sourceRoot":"","sources":["../../src/core/EnvironmentManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAsB;;IAOrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAIzD;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzF;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1C;;OAEG;IACH,eAAe;CAGhB"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EnvironmentManager = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* 环境管理器
|
|
6
|
-
* 负责检查和管理 Claude Code 运行环境
|
|
7
|
-
*/
|
|
8
|
-
const checker_1 = require("../setup/checker");
|
|
9
|
-
const planner_1 = require("../setup/planner");
|
|
10
|
-
/**
|
|
11
|
-
* 环境管理器类
|
|
12
|
-
*/
|
|
13
|
-
class EnvironmentManager {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.checker = new checker_1.EnvironmentChecker();
|
|
16
|
-
this.planner = new planner_1.InstallationPlanner();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* 检查环境状态
|
|
20
|
-
*/
|
|
21
|
-
async checkEnvironment() {
|
|
22
|
-
return await this.checker.check();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 生成安装计划
|
|
26
|
-
*/
|
|
27
|
-
async generateInstallPlan(checkResult) {
|
|
28
|
-
return await this.planner.generatePlan(checkResult);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* 快速验证 Claude Code 是否可用
|
|
32
|
-
* 用于在关键操作前进行检查
|
|
33
|
-
*/
|
|
34
|
-
async verifyClaudeCode() {
|
|
35
|
-
const result = await this.checkEnvironment();
|
|
36
|
-
return result.status === 'ready';
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* 获取环境要求
|
|
40
|
-
*/
|
|
41
|
-
getRequirements() {
|
|
42
|
-
return this.checker.getRequirements();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.EnvironmentManager = EnvironmentManager;
|
|
46
|
-
//# sourceMappingURL=EnvironmentManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentManager.js","sourceRoot":"","sources":["../../src/core/EnvironmentManager.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,8CAAsD;AACtD,8CAAuD;AAGvD;;GAEG;AACH,MAAa,kBAAkB;IAI7B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAmB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,WAAmC;QAC3D,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACF;AAtCD,gDAsCC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { MessageBundle } from './messages';
|
|
2
|
-
import { LanguageStats } from '../types';
|
|
3
|
-
export declare class LanguageManager {
|
|
4
|
-
private configManager;
|
|
5
|
-
constructor();
|
|
6
|
-
/**
|
|
7
|
-
* 检测系统是否为英文环境
|
|
8
|
-
*/
|
|
9
|
-
private shouldUseEnglish;
|
|
10
|
-
/**
|
|
11
|
-
* 检查是否为首次运行
|
|
12
|
-
*/
|
|
13
|
-
isFirstRun(): Promise<boolean>;
|
|
14
|
-
/**
|
|
15
|
-
* 获取当前语言设置
|
|
16
|
-
*/
|
|
17
|
-
getCurrentLanguage(): Promise<'zh' | 'en'>;
|
|
18
|
-
/**
|
|
19
|
-
* 获取当前语言的消息包
|
|
20
|
-
*/
|
|
21
|
-
getMessages(): Promise<MessageBundle>;
|
|
22
|
-
/**
|
|
23
|
-
* 首次运行语言选择向导
|
|
24
|
-
*/
|
|
25
|
-
promptLanguageChoice(): Promise<'zh' | 'en' | 'auto'>;
|
|
26
|
-
/**
|
|
27
|
-
* 设置语言
|
|
28
|
-
*/
|
|
29
|
-
setLanguage(language: 'zh' | 'en' | 'auto'): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* 重置语言设置(恢复首次运行状态)
|
|
32
|
-
*/
|
|
33
|
-
resetLanguage(): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* 获取语言统计信息
|
|
36
|
-
*/
|
|
37
|
-
getLanguageStats(): Promise<LanguageStats>;
|
|
38
|
-
/**
|
|
39
|
-
* 处理首次运行流程
|
|
40
|
-
*/
|
|
41
|
-
handleFirstRun(): Promise<void>;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=LanguageManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageManager.d.ts","sourceRoot":"","sources":["../../src/i18n/LanguageManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoC,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAmB;;IAMxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAWpC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAuBhD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAK3C;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IA8B3D;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBpC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAWhD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC"}
|