ccman 2.0.1 → 2.1.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.
- package/dist/config/static-env.d.ts +1 -1
- package/dist/config/static-env.js +1 -1
- package/dist/core/CCMConfigManager.d.ts +12 -0
- package/dist/core/CCMConfigManager.d.ts.map +1 -1
- package/dist/core/CCMConfigManager.js +77 -13
- package/dist/core/CCMConfigManager.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/release-temp/package.json +1 -1
- package/src/core/CCMConfigManager.ts +88 -14
- package/src/types/index.ts +1 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const STATIC_ENV: {
|
|
7
7
|
readonly NODE_ENV: "production";
|
|
8
|
-
readonly BUILD_TIME: "2025-09-
|
|
8
|
+
readonly BUILD_TIME: "2025-09-14T03:21:20.373Z";
|
|
9
9
|
readonly CCM_CONFIG_DIR: "~/.ccman";
|
|
10
10
|
readonly CLAUDE_CONFIG_PATH: "~/.claude/settings.json";
|
|
11
11
|
};
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.CLAUDE_CONFIG_PATH = exports.CCM_CONFIG_DIR = exports.STATIC_ENV = void 0;
|
|
9
9
|
exports.STATIC_ENV = {
|
|
10
10
|
NODE_ENV: 'production',
|
|
11
|
-
BUILD_TIME: '2025-09-
|
|
11
|
+
BUILD_TIME: '2025-09-14T03:21:20.373Z',
|
|
12
12
|
CCM_CONFIG_DIR: '~/.ccman',
|
|
13
13
|
CLAUDE_CONFIG_PATH: '~/.claude/settings.json'
|
|
14
14
|
};
|
|
@@ -20,6 +20,18 @@ export declare class CCMConfigManager {
|
|
|
20
20
|
* 写入主配置
|
|
21
21
|
*/
|
|
22
22
|
writeConfig(config: CCMConfig): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* 检查是否需要迁移配置
|
|
25
|
+
*/
|
|
26
|
+
private needsMigration;
|
|
27
|
+
/**
|
|
28
|
+
* 执行配置迁移
|
|
29
|
+
*/
|
|
30
|
+
private performMigration;
|
|
31
|
+
/**
|
|
32
|
+
* 配置迁移和兼容性处理
|
|
33
|
+
*/
|
|
34
|
+
private migrateConfig;
|
|
23
35
|
/**
|
|
24
36
|
* 读取供应商配置
|
|
25
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CCMConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/CCMConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAIrD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;;IAS7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"CCMConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/CCMConfigManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAIrD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;;IAS7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAuBtC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnD;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;YACW,gBAAgB;IAiC9B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAe5E;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpF;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B"}
|
|
@@ -58,6 +58,7 @@ class CCMConfigManager {
|
|
|
58
58
|
if (!await fs.pathExists(this.configPath)) {
|
|
59
59
|
// 使用编译时确定的Claude配置路径
|
|
60
60
|
const defaultConfig = {
|
|
61
|
+
version: (0, version_1.getPackageVersion)(),
|
|
61
62
|
currentProvider: '',
|
|
62
63
|
claudeConfigPath: env_config_1.envConfig.getClaudeConfigPath(),
|
|
63
64
|
providers: {},
|
|
@@ -84,18 +85,13 @@ class CCMConfigManager {
|
|
|
84
85
|
}
|
|
85
86
|
const content = await fs.readFile(this.configPath, 'utf8');
|
|
86
87
|
const config = JSON.parse(content);
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
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));
|
|
90
93
|
}
|
|
91
|
-
|
|
92
|
-
if (!config.settings) {
|
|
93
|
-
config.settings = {
|
|
94
|
-
language: null,
|
|
95
|
-
firstRun: true
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return config;
|
|
94
|
+
return migratedConfig;
|
|
99
95
|
}
|
|
100
96
|
catch (error) {
|
|
101
97
|
throw new Error(`Failed to read CCM config: ${error}`);
|
|
@@ -106,13 +102,81 @@ class CCMConfigManager {
|
|
|
106
102
|
*/
|
|
107
103
|
async writeConfig(config) {
|
|
108
104
|
try {
|
|
109
|
-
|
|
110
|
-
await
|
|
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));
|
|
111
112
|
}
|
|
112
113
|
catch (error) {
|
|
113
114
|
throw new Error(`Failed to write CCM config: ${error}`);
|
|
114
115
|
}
|
|
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
|
+
}
|
|
116
180
|
/**
|
|
117
181
|
* 读取供应商配置
|
|
118
182
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CCMConfigManager.js","sourceRoot":"","sources":["../../src/core/CCMConfigManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAE7B,8CAAqD;AACrD,oDAAgD;AAEhD;;;GAGG;AACH,MAAa,gBAAgB;IAK3B;QACE,eAAe;QACf,IAAI,CAAC,SAAS,GAAG,sBAAS,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,qBAAqB;YACrB,MAAM,aAAa,GAAc;gBAC/B,eAAe,EAAE,EAAE;gBACnB,gBAAgB,EAAE,sBAAS,CAAC,mBAAmB,EAAE;gBACjD,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,IAAI;iBACf;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAA,2BAAiB,GAAE;oBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;aACF,CAAC;YAEF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,
|
|
1
|
+
{"version":3,"file":"CCMConfigManager.js","sourceRoot":"","sources":["../../src/core/CCMConfigManager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE;QACH,oBAAoB,EAAE,MAAM,CAAC;QAC7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,wCAAwC,CAAC,EAAE,MAAM,CAAC;KACnD,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE;QACT,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE;QACH,oBAAoB,EAAE,MAAM,CAAC;QAC7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,wCAAwC,CAAC,EAAE,MAAM,CAAC;KACnD,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE;QACT,CAAC,UAAU,EAAE,MAAM,GAAG;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
package/package.json
CHANGED
|
@@ -30,6 +30,7 @@ export class CCMConfigManager {
|
|
|
30
30
|
if (!await fs.pathExists(this.configPath)) {
|
|
31
31
|
// 使用编译时确定的Claude配置路径
|
|
32
32
|
const defaultConfig: CCMConfig = {
|
|
33
|
+
version: getPackageVersion(),
|
|
33
34
|
currentProvider: '',
|
|
34
35
|
claudeConfigPath: envConfig.getClaudeConfigPath(),
|
|
35
36
|
providers: {},
|
|
@@ -60,20 +61,15 @@ export class CCMConfigManager {
|
|
|
60
61
|
const content = await fs.readFile(this.configPath, 'utf8');
|
|
61
62
|
const config = JSON.parse(content);
|
|
62
63
|
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (!config.settings) {
|
|
70
|
-
config.settings = {
|
|
71
|
-
language: null,
|
|
72
|
-
firstRun: true
|
|
73
|
-
};
|
|
64
|
+
// 迁移旧版本配置
|
|
65
|
+
const migratedConfig = await this.migrateConfig(config);
|
|
66
|
+
|
|
67
|
+
// 如果配置被迁移了,立即保存新格式
|
|
68
|
+
if (this.needsMigration(config)) {
|
|
69
|
+
await fs.writeFile(this.configPath, JSON.stringify(migratedConfig, null, 2));
|
|
74
70
|
}
|
|
75
71
|
|
|
76
|
-
return
|
|
72
|
+
return migratedConfig;
|
|
77
73
|
} catch (error) {
|
|
78
74
|
throw new Error(`Failed to read CCM config: ${error}`);
|
|
79
75
|
}
|
|
@@ -84,13 +80,91 @@ export class CCMConfigManager {
|
|
|
84
80
|
*/
|
|
85
81
|
async writeConfig(config: CCMConfig): Promise<void> {
|
|
86
82
|
try {
|
|
87
|
-
|
|
88
|
-
await
|
|
83
|
+
// 确保配置结构完整,兼容旧版本
|
|
84
|
+
const migratedConfig = await this.migrateConfig(config);
|
|
85
|
+
|
|
86
|
+
// 更新版本信息和时间戳
|
|
87
|
+
migratedConfig.version = getPackageVersion();
|
|
88
|
+
migratedConfig.metadata.version = getPackageVersion();
|
|
89
|
+
migratedConfig.metadata.updatedAt = new Date().toISOString();
|
|
90
|
+
|
|
91
|
+
await fs.writeFile(this.configPath, JSON.stringify(migratedConfig, null, 2));
|
|
89
92
|
} catch (error) {
|
|
90
93
|
throw new Error(`Failed to write CCM config: ${error}`);
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
|
|
97
|
+
/**
|
|
98
|
+
* 检查是否需要迁移配置
|
|
99
|
+
*/
|
|
100
|
+
private needsMigration(config: any): boolean {
|
|
101
|
+
// 只检查metadata字段,因为version字段是新添加的
|
|
102
|
+
return !config.metadata;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* 执行配置迁移
|
|
107
|
+
*/
|
|
108
|
+
private async performMigration(config: any): Promise<CCMConfig> {
|
|
109
|
+
console.log('🔄 Migrating configuration from older version...');
|
|
110
|
+
|
|
111
|
+
// 备份旧配置
|
|
112
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
113
|
+
const backupPath = `${this.configPath}.backup-v1-${timestamp}`;
|
|
114
|
+
|
|
115
|
+
if (await fs.pathExists(this.configPath)) {
|
|
116
|
+
await fs.copy(this.configPath, backupPath);
|
|
117
|
+
console.log(`📦 Old config backed up to: ${backupPath}`);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 迁移到新格式
|
|
121
|
+
const migratedConfig: CCMConfig = {
|
|
122
|
+
version: getPackageVersion(),
|
|
123
|
+
currentProvider: config.currentProvider || '',
|
|
124
|
+
claudeConfigPath: config.claudeConfigPath || envConfig.getClaudeConfigPath(),
|
|
125
|
+
providers: config.providers || {},
|
|
126
|
+
settings: {
|
|
127
|
+
language: config.settings?.language || null,
|
|
128
|
+
firstRun: config.settings?.firstRun ?? true
|
|
129
|
+
},
|
|
130
|
+
metadata: {
|
|
131
|
+
version: getPackageVersion(),
|
|
132
|
+
createdAt: new Date().toISOString(),
|
|
133
|
+
updatedAt: new Date().toISOString()
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
console.log('✅ Configuration migration completed');
|
|
138
|
+
return migratedConfig;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 配置迁移和兼容性处理
|
|
143
|
+
*/
|
|
144
|
+
private async migrateConfig(config: any): Promise<CCMConfig> {
|
|
145
|
+
// 检查是否需要迁移
|
|
146
|
+
if (this.needsMigration(config)) {
|
|
147
|
+
return await this.performMigration(config);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// 确保所有必需字段存在
|
|
151
|
+
return {
|
|
152
|
+
version: config.version || getPackageVersion(),
|
|
153
|
+
currentProvider: config.currentProvider || '',
|
|
154
|
+
claudeConfigPath: config.claudeConfigPath || envConfig.getClaudeConfigPath(),
|
|
155
|
+
providers: config.providers || {},
|
|
156
|
+
settings: {
|
|
157
|
+
language: config.settings?.language || null,
|
|
158
|
+
firstRun: config.settings?.firstRun ?? true
|
|
159
|
+
},
|
|
160
|
+
metadata: {
|
|
161
|
+
version: config.metadata?.version || getPackageVersion(),
|
|
162
|
+
createdAt: config.metadata?.createdAt || new Date().toISOString(),
|
|
163
|
+
updatedAt: config.metadata?.updatedAt || new Date().toISOString()
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
94
168
|
/**
|
|
95
169
|
* 读取供应商配置
|
|
96
170
|
*/
|