ccman 3.0.21 → 3.0.23
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/index.js +581 -556
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39,7 +39,7 @@ var init_package = __esm({
|
|
|
39
39
|
"../core/package.json"() {
|
|
40
40
|
package_default = {
|
|
41
41
|
name: "@ccman/core",
|
|
42
|
-
version: "3.0.
|
|
42
|
+
version: "3.0.23",
|
|
43
43
|
type: "module",
|
|
44
44
|
description: "Core business logic for ccman",
|
|
45
45
|
main: "./dist/index.js",
|
|
@@ -2672,6 +2672,13 @@ function saveSyncConfig(syncConfig) {
|
|
|
2672
2672
|
config.sync = syncConfig;
|
|
2673
2673
|
saveConfig(config);
|
|
2674
2674
|
}
|
|
2675
|
+
function updateLastSyncTime() {
|
|
2676
|
+
const config = loadConfig();
|
|
2677
|
+
if (config.sync) {
|
|
2678
|
+
config.sync.lastSync = Date.now();
|
|
2679
|
+
saveConfig(config);
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2675
2682
|
var fs4;
|
|
2676
2683
|
var init_config = __esm({
|
|
2677
2684
|
"../core/dist/config.js"() {
|
|
@@ -15951,12 +15958,12 @@ function createWebDAVClient(config) {
|
|
|
15951
15958
|
return client;
|
|
15952
15959
|
}
|
|
15953
15960
|
async function testWebDAVConnection(config) {
|
|
15961
|
+
const remoteDir = normalizePath(config.remoteDir || "/");
|
|
15954
15962
|
try {
|
|
15955
15963
|
const client = createWebDAVClient(config);
|
|
15956
|
-
await client.
|
|
15964
|
+
await client.getDirectoryContents(remoteDir);
|
|
15957
15965
|
return true;
|
|
15958
15966
|
} catch (error) {
|
|
15959
|
-
console.error("WebDAV \u8FDE\u63A5\u5931\u8D25:", error.message);
|
|
15960
15967
|
return false;
|
|
15961
15968
|
}
|
|
15962
15969
|
}
|
|
@@ -16051,67 +16058,6 @@ var init_webdav_client = __esm({
|
|
|
16051
16058
|
}
|
|
16052
16059
|
});
|
|
16053
16060
|
|
|
16054
|
-
// ../core/dist/sync/merge.js
|
|
16055
|
-
function backupConfig(configPath, keepCount = 3) {
|
|
16056
|
-
if (!import_fs.default.existsSync(configPath)) {
|
|
16057
|
-
throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728: ${configPath}`);
|
|
16058
|
-
}
|
|
16059
|
-
const timestamp = Date.now();
|
|
16060
|
-
const backupPath = `${configPath}.backup.${timestamp}`;
|
|
16061
|
-
import_fs.default.copyFileSync(configPath, backupPath);
|
|
16062
|
-
cleanupOldBackups(configPath, keepCount);
|
|
16063
|
-
return backupPath;
|
|
16064
|
-
}
|
|
16065
|
-
function cleanupOldBackups(configPath, keepCount) {
|
|
16066
|
-
const dir = import_path17.default.dirname(configPath);
|
|
16067
|
-
const basename2 = import_path17.default.basename(configPath);
|
|
16068
|
-
const backupPrefix = `${basename2}.backup.`;
|
|
16069
|
-
try {
|
|
16070
|
-
const files = import_fs.default.readdirSync(dir);
|
|
16071
|
-
const backups = files.filter((f3) => f3.startsWith(backupPrefix)).map((f3) => {
|
|
16072
|
-
const timestampStr = f3.substring(backupPrefix.length);
|
|
16073
|
-
const timestamp = parseInt(timestampStr, 10);
|
|
16074
|
-
if (isNaN(timestamp)) {
|
|
16075
|
-
return null;
|
|
16076
|
-
}
|
|
16077
|
-
return {
|
|
16078
|
-
name: f3,
|
|
16079
|
-
path: import_path17.default.join(dir, f3),
|
|
16080
|
-
timestamp
|
|
16081
|
-
};
|
|
16082
|
-
}).filter((backup) => backup !== null).sort((a, b) => b.timestamp - a.timestamp);
|
|
16083
|
-
const toDelete = backups.slice(keepCount);
|
|
16084
|
-
for (const backup of toDelete) {
|
|
16085
|
-
try {
|
|
16086
|
-
import_fs.default.unlinkSync(backup.path);
|
|
16087
|
-
} catch (error) {
|
|
16088
|
-
console.warn(`\u65E0\u6CD5\u5220\u9664\u65E7\u5907\u4EFD\u6587\u4EF6 ${backup.name}: ${error.message}`);
|
|
16089
|
-
}
|
|
16090
|
-
}
|
|
16091
|
-
} catch (error) {
|
|
16092
|
-
console.warn(`\u6E05\u7406\u65E7\u5907\u4EFD\u65F6\u51FA\u9519: ${error.message}`);
|
|
16093
|
-
}
|
|
16094
|
-
}
|
|
16095
|
-
var import_fs, import_path17;
|
|
16096
|
-
var init_merge2 = __esm({
|
|
16097
|
-
"../core/dist/sync/merge.js"() {
|
|
16098
|
-
"use strict";
|
|
16099
|
-
import_fs = __toESM(require("fs"), 1);
|
|
16100
|
-
import_path17 = __toESM(require("path"), 1);
|
|
16101
|
-
}
|
|
16102
|
-
});
|
|
16103
|
-
|
|
16104
|
-
// ../core/dist/sync/sync.js
|
|
16105
|
-
var init_sync = __esm({
|
|
16106
|
-
"../core/dist/sync/sync.js"() {
|
|
16107
|
-
"use strict";
|
|
16108
|
-
init_webdav_client();
|
|
16109
|
-
init_merge2();
|
|
16110
|
-
init_paths();
|
|
16111
|
-
init_file();
|
|
16112
|
-
}
|
|
16113
|
-
});
|
|
16114
|
-
|
|
16115
16061
|
// ../core/dist/sync/crypto.js
|
|
16116
16062
|
function deriveKey(password, salt) {
|
|
16117
16063
|
return crypto.pbkdf2Sync(password, salt, PBKDF2_ITERATIONS, KEY_LENGTH, "sha256");
|
|
@@ -16146,24 +16092,14 @@ function decryptApiKey(encryptedApiKey, password) {
|
|
|
16146
16092
|
}
|
|
16147
16093
|
function encryptProviders(providers, password) {
|
|
16148
16094
|
return providers.map((provider) => ({
|
|
16149
|
-
|
|
16150
|
-
|
|
16151
|
-
baseUrl: provider.baseUrl,
|
|
16152
|
-
encryptedApiKey: encryptApiKey(provider.apiKey, password),
|
|
16153
|
-
createdAt: provider.createdAt,
|
|
16154
|
-
lastModified: provider.lastModified,
|
|
16155
|
-
lastUsedAt: provider.lastUsedAt
|
|
16095
|
+
...provider,
|
|
16096
|
+
apiKey: encryptApiKey(provider.apiKey, password)
|
|
16156
16097
|
}));
|
|
16157
16098
|
}
|
|
16158
16099
|
function decryptProviders(encryptedProviders, password) {
|
|
16159
16100
|
return encryptedProviders.map((provider) => ({
|
|
16160
|
-
|
|
16161
|
-
|
|
16162
|
-
baseUrl: provider.baseUrl,
|
|
16163
|
-
apiKey: decryptApiKey(provider.encryptedApiKey, password),
|
|
16164
|
-
createdAt: provider.createdAt,
|
|
16165
|
-
lastModified: provider.lastModified,
|
|
16166
|
-
lastUsedAt: provider.lastUsedAt
|
|
16101
|
+
...provider,
|
|
16102
|
+
apiKey: decryptApiKey(provider.apiKey, password)
|
|
16167
16103
|
}));
|
|
16168
16104
|
}
|
|
16169
16105
|
var crypto, ALGORITHM, KEY_LENGTH, IV_LENGTH, SALT_LENGTH, TAG_LENGTH, PBKDF2_ITERATIONS;
|
|
@@ -16181,15 +16117,6 @@ var init_crypto2 = __esm({
|
|
|
16181
16117
|
});
|
|
16182
16118
|
|
|
16183
16119
|
// ../core/dist/sync/merge-advanced.js
|
|
16184
|
-
function ensureLastModified(provider) {
|
|
16185
|
-
if (provider.lastModified === void 0) {
|
|
16186
|
-
return {
|
|
16187
|
-
...provider,
|
|
16188
|
-
lastModified: provider.createdAt
|
|
16189
|
-
};
|
|
16190
|
-
}
|
|
16191
|
-
return provider;
|
|
16192
|
-
}
|
|
16193
16120
|
function isSameConfig(a, b) {
|
|
16194
16121
|
return a.baseUrl === b.baseUrl && a.apiKey === b.apiKey;
|
|
16195
16122
|
}
|
|
@@ -16214,49 +16141,26 @@ function resolveNameConflict(existingProviders, newProvider) {
|
|
|
16214
16141
|
};
|
|
16215
16142
|
}
|
|
16216
16143
|
function mergeProviders(local, remote) {
|
|
16217
|
-
const localProviders = local.map(ensureLastModified);
|
|
16218
|
-
const remoteProviders = remote.map(ensureLastModified);
|
|
16219
16144
|
const mergedMap = /* @__PURE__ */ new Map();
|
|
16220
16145
|
let hasChanges = false;
|
|
16221
|
-
for (const localProvider of
|
|
16146
|
+
for (const localProvider of local) {
|
|
16222
16147
|
mergedMap.set(localProvider.id, localProvider);
|
|
16223
16148
|
}
|
|
16224
|
-
for (const remoteProvider of
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
|
|
16229
|
-
|
|
16149
|
+
for (const remoteProvider of remote) {
|
|
16150
|
+
const existingLocal = Array.from(mergedMap.values()).find((p) => isSameConfig(p, remoteProvider));
|
|
16151
|
+
if (existingLocal) {
|
|
16152
|
+
mergedMap.delete(existingLocal.id);
|
|
16153
|
+
mergedMap.set(remoteProvider.id, remoteProvider);
|
|
16154
|
+
if (!isProviderEqual(existingLocal, remoteProvider)) {
|
|
16230
16155
|
hasChanges = true;
|
|
16231
|
-
|
|
16232
|
-
console.log(`provider ${remoteProvider.id} \u672C\u5730\u66F4\u65B0\uFF0C\u4F7F\u7528\u672C\u5730\u7248\u672C`);
|
|
16233
|
-
hasChanges = true;
|
|
16234
|
-
} else {
|
|
16235
|
-
if (!isProviderEqual(localProvider, remoteProvider)) {
|
|
16236
|
-
console.log(`provider ${remoteProvider.id} \u65F6\u95F4\u6233\u76F8\u540C\u4F46\u5185\u5BB9\u4E0D\u540C\uFF0C\u4F7F\u7528\u8FDC\u7A0B\u7248\u672C`);
|
|
16237
|
-
mergedMap.set(remoteProvider.id, remoteProvider);
|
|
16238
|
-
hasChanges = true;
|
|
16239
|
-
}
|
|
16156
|
+
console.log(`\u76F8\u540C\u914D\u7F6E (${remoteProvider.baseUrl})\uFF0C\u4F7F\u7528\u4E91\u7AEF\u6570\u636E`);
|
|
16240
16157
|
}
|
|
16241
16158
|
} else {
|
|
16242
|
-
const
|
|
16243
|
-
|
|
16244
|
-
|
|
16245
|
-
|
|
16246
|
-
|
|
16247
|
-
mergedMap.set(remoteProvider.id, remoteProvider);
|
|
16248
|
-
hasChanges = true;
|
|
16249
|
-
} else {
|
|
16250
|
-
console.log(`\u76F8\u540C\u914D\u7F6E (${remoteProvider.baseUrl})\uFF0C\u672C\u5730\u66F4\u65B0\uFF0C\u4FDD\u7559 ${existingWithSameConfig.id}`);
|
|
16251
|
-
hasChanges = true;
|
|
16252
|
-
}
|
|
16253
|
-
} else {
|
|
16254
|
-
console.log(`\u65B0 provider ${remoteProvider.id}\uFF0C\u6DFB\u52A0\u5230\u5408\u5E76\u5217\u8868`);
|
|
16255
|
-
const existingProviders = Array.from(mergedMap.values());
|
|
16256
|
-
const resolvedProvider = resolveNameConflict(existingProviders, remoteProvider);
|
|
16257
|
-
mergedMap.set(resolvedProvider.id, resolvedProvider);
|
|
16258
|
-
hasChanges = true;
|
|
16259
|
-
}
|
|
16159
|
+
const existingProviders = Array.from(mergedMap.values());
|
|
16160
|
+
const resolvedProvider = resolveNameConflict(existingProviders, remoteProvider);
|
|
16161
|
+
mergedMap.set(resolvedProvider.id, resolvedProvider);
|
|
16162
|
+
hasChanges = true;
|
|
16163
|
+
console.log(`\u65B0 provider ${resolvedProvider.name}\uFF0C\u6DFB\u52A0\u5230\u5408\u5E76\u5217\u8868`);
|
|
16260
16164
|
}
|
|
16261
16165
|
}
|
|
16262
16166
|
const merged = Array.from(mergedMap.values());
|
|
@@ -16265,12 +16169,99 @@ function mergeProviders(local, remote) {
|
|
|
16265
16169
|
hasChanges
|
|
16266
16170
|
};
|
|
16267
16171
|
}
|
|
16172
|
+
function resolvePresetNameConflict(existingPresets, newPreset) {
|
|
16173
|
+
const existingNames = new Set(existingPresets.map((p) => p.name));
|
|
16174
|
+
if (!existingNames.has(newPreset.name)) {
|
|
16175
|
+
return newPreset;
|
|
16176
|
+
}
|
|
16177
|
+
let suffix = 2;
|
|
16178
|
+
let newName = `${newPreset.name}_${suffix}`;
|
|
16179
|
+
while (existingNames.has(newName)) {
|
|
16180
|
+
suffix++;
|
|
16181
|
+
newName = `${newPreset.name}_${suffix}`;
|
|
16182
|
+
}
|
|
16183
|
+
console.log(`preset name \u51B2\u7A81\uFF1A\u5C06 "${newPreset.name}" \u91CD\u547D\u540D\u4E3A "${newName}"`);
|
|
16184
|
+
return {
|
|
16185
|
+
...newPreset,
|
|
16186
|
+
name: newName
|
|
16187
|
+
};
|
|
16188
|
+
}
|
|
16189
|
+
function mergePresets(local, remote) {
|
|
16190
|
+
const localPresets = local || [];
|
|
16191
|
+
const remotePresets = remote || [];
|
|
16192
|
+
const mergedMap = /* @__PURE__ */ new Map();
|
|
16193
|
+
for (const preset of localPresets) {
|
|
16194
|
+
mergedMap.set(preset.baseUrl, preset);
|
|
16195
|
+
}
|
|
16196
|
+
for (const remotePreset of remotePresets) {
|
|
16197
|
+
const existingLocal = mergedMap.get(remotePreset.baseUrl);
|
|
16198
|
+
if (existingLocal) {
|
|
16199
|
+
mergedMap.set(remotePreset.baseUrl, remotePreset);
|
|
16200
|
+
console.log(`preset ${remotePreset.name} (${remotePreset.baseUrl})\uFF0C\u4F7F\u7528\u4E91\u7AEF\u6570\u636E`);
|
|
16201
|
+
} else {
|
|
16202
|
+
const existingPresets = Array.from(mergedMap.values());
|
|
16203
|
+
const resolvedPreset = resolvePresetNameConflict(existingPresets, remotePreset);
|
|
16204
|
+
mergedMap.set(resolvedPreset.baseUrl, resolvedPreset);
|
|
16205
|
+
}
|
|
16206
|
+
}
|
|
16207
|
+
return Array.from(mergedMap.values());
|
|
16208
|
+
}
|
|
16268
16209
|
var init_merge_advanced = __esm({
|
|
16269
16210
|
"../core/dist/sync/merge-advanced.js"() {
|
|
16270
16211
|
"use strict";
|
|
16271
16212
|
}
|
|
16272
16213
|
});
|
|
16273
16214
|
|
|
16215
|
+
// ../core/dist/sync/merge.js
|
|
16216
|
+
function backupConfig(configPath, keepCount = 3) {
|
|
16217
|
+
if (!import_fs.default.existsSync(configPath)) {
|
|
16218
|
+
throw new Error(`\u914D\u7F6E\u6587\u4EF6\u4E0D\u5B58\u5728: ${configPath}`);
|
|
16219
|
+
}
|
|
16220
|
+
const timestamp = Date.now();
|
|
16221
|
+
const backupPath = `${configPath}.backup.${timestamp}`;
|
|
16222
|
+
import_fs.default.copyFileSync(configPath, backupPath);
|
|
16223
|
+
cleanupOldBackups(configPath, keepCount);
|
|
16224
|
+
return backupPath;
|
|
16225
|
+
}
|
|
16226
|
+
function cleanupOldBackups(configPath, keepCount) {
|
|
16227
|
+
const dir = import_path17.default.dirname(configPath);
|
|
16228
|
+
const basename2 = import_path17.default.basename(configPath);
|
|
16229
|
+
const backupPrefix = `${basename2}.backup.`;
|
|
16230
|
+
try {
|
|
16231
|
+
const files = import_fs.default.readdirSync(dir);
|
|
16232
|
+
const backups = files.filter((f3) => f3.startsWith(backupPrefix)).map((f3) => {
|
|
16233
|
+
const timestampStr = f3.substring(backupPrefix.length);
|
|
16234
|
+
const timestamp = parseInt(timestampStr, 10);
|
|
16235
|
+
if (isNaN(timestamp)) {
|
|
16236
|
+
return null;
|
|
16237
|
+
}
|
|
16238
|
+
return {
|
|
16239
|
+
name: f3,
|
|
16240
|
+
path: import_path17.default.join(dir, f3),
|
|
16241
|
+
timestamp
|
|
16242
|
+
};
|
|
16243
|
+
}).filter((backup) => backup !== null).sort((a, b) => b.timestamp - a.timestamp);
|
|
16244
|
+
const toDelete = backups.slice(keepCount);
|
|
16245
|
+
for (const backup of toDelete) {
|
|
16246
|
+
try {
|
|
16247
|
+
import_fs.default.unlinkSync(backup.path);
|
|
16248
|
+
} catch (error) {
|
|
16249
|
+
console.warn(`\u65E0\u6CD5\u5220\u9664\u65E7\u5907\u4EFD\u6587\u4EF6 ${backup.name}: ${error.message}`);
|
|
16250
|
+
}
|
|
16251
|
+
}
|
|
16252
|
+
} catch (error) {
|
|
16253
|
+
console.warn(`\u6E05\u7406\u65E7\u5907\u4EFD\u65F6\u51FA\u9519: ${error.message}`);
|
|
16254
|
+
}
|
|
16255
|
+
}
|
|
16256
|
+
var import_fs, import_path17;
|
|
16257
|
+
var init_merge2 = __esm({
|
|
16258
|
+
"../core/dist/sync/merge.js"() {
|
|
16259
|
+
"use strict";
|
|
16260
|
+
import_fs = __toESM(require("fs"), 1);
|
|
16261
|
+
import_path17 = __toESM(require("path"), 1);
|
|
16262
|
+
}
|
|
16263
|
+
});
|
|
16264
|
+
|
|
16274
16265
|
// ../core/dist/sync/sync-v2.js
|
|
16275
16266
|
async function uploadToCloud(config, password) {
|
|
16276
16267
|
const ccmanDir2 = getCcmanDir();
|
|
@@ -16281,17 +16272,22 @@ async function uploadToCloud(config, password) {
|
|
|
16281
16272
|
const encryptedCodexProviders = encryptProviders(codexConfig.providers, password);
|
|
16282
16273
|
const encryptedClaudeProviders = encryptProviders(claudeConfig.providers, password);
|
|
16283
16274
|
const encryptedCodexConfig = {
|
|
16284
|
-
|
|
16275
|
+
...codexConfig,
|
|
16276
|
+
// 保留所有字段
|
|
16285
16277
|
providers: encryptedCodexProviders
|
|
16278
|
+
// 只替换 providers(加密后的)
|
|
16286
16279
|
};
|
|
16287
16280
|
const encryptedClaudeConfig = {
|
|
16288
|
-
|
|
16281
|
+
...claudeConfig,
|
|
16282
|
+
// 保留所有字段
|
|
16289
16283
|
providers: encryptedClaudeProviders
|
|
16284
|
+
// 只替换 providers(加密后的)
|
|
16290
16285
|
};
|
|
16291
16286
|
const codexJson = JSON.stringify(encryptedCodexConfig, null, 2);
|
|
16292
16287
|
const claudeJson = JSON.stringify(encryptedClaudeConfig, null, 2);
|
|
16293
16288
|
await uploadToWebDAV(config, CODEX_REMOTE_PATH, codexJson);
|
|
16294
16289
|
await uploadToWebDAV(config, CLAUDE_REMOTE_PATH, claudeJson);
|
|
16290
|
+
updateLastSyncTime();
|
|
16295
16291
|
console.log("\u2705 \u914D\u7F6E\u5DF2\u4E0A\u4F20\u5230\u4E91\u7AEF");
|
|
16296
16292
|
}
|
|
16297
16293
|
async function downloadFromCloud(config, password) {
|
|
@@ -16331,28 +16327,27 @@ async function downloadFromCloud(config, password) {
|
|
|
16331
16327
|
throw new Error(`\u5907\u4EFD\u5931\u8D25: ${error.message}`);
|
|
16332
16328
|
}
|
|
16333
16329
|
try {
|
|
16334
|
-
const currentCodexConfig = readJSON(codexConfigPath);
|
|
16335
|
-
const currentClaudeConfig = readJSON(claudeConfigPath);
|
|
16336
16330
|
if (remoteCodexConfig && decryptedCodexProviders) {
|
|
16337
16331
|
const newCodexConfig = {
|
|
16338
|
-
|
|
16339
|
-
|
|
16340
|
-
|
|
16341
|
-
//
|
|
16332
|
+
...remoteCodexConfig,
|
|
16333
|
+
// 使用云端配置的所有字段
|
|
16334
|
+
providers: decryptedCodexProviders
|
|
16335
|
+
// 只替换 providers(解密后的)
|
|
16342
16336
|
};
|
|
16343
16337
|
writeJSON(codexConfigPath, newCodexConfig);
|
|
16344
16338
|
applyCurrentProvider("codex", newCodexConfig);
|
|
16345
16339
|
}
|
|
16346
16340
|
if (remoteClaudeConfig && decryptedClaudeProviders) {
|
|
16347
16341
|
const newClaudeConfig = {
|
|
16348
|
-
|
|
16349
|
-
|
|
16350
|
-
|
|
16351
|
-
//
|
|
16342
|
+
...remoteClaudeConfig,
|
|
16343
|
+
// 使用云端配置的所有字段
|
|
16344
|
+
providers: decryptedClaudeProviders
|
|
16345
|
+
// 只替换 providers(解密后的)
|
|
16352
16346
|
};
|
|
16353
16347
|
writeJSON(claudeConfigPath, newClaudeConfig);
|
|
16354
16348
|
applyCurrentProvider("claude", newClaudeConfig);
|
|
16355
16349
|
}
|
|
16350
|
+
updateLastSyncTime();
|
|
16356
16351
|
console.log("\u2705 \u914D\u7F6E\u5DF2\u4ECE\u4E91\u7AEF\u4E0B\u8F7D\u5E76\u5E94\u7528");
|
|
16357
16352
|
return backupPaths;
|
|
16358
16353
|
} catch (error) {
|
|
@@ -16418,16 +16413,24 @@ async function mergeSync(config, password) {
|
|
|
16418
16413
|
} catch (error) {
|
|
16419
16414
|
throw new Error(`\u5907\u4EFD\u5931\u8D25: ${error.message}`);
|
|
16420
16415
|
}
|
|
16416
|
+
const mergedCodexPresets = mergePresets(localCodexConfig.presets, remoteCodexConfig?.presets);
|
|
16417
|
+
const mergedClaudePresets = mergePresets(localClaudeConfig.presets, remoteClaudeConfig?.presets);
|
|
16421
16418
|
try {
|
|
16422
16419
|
const mergedCodexConfig = {
|
|
16423
|
-
|
|
16420
|
+
...localCodexConfig,
|
|
16421
|
+
// 保留本地配置的所有字段
|
|
16424
16422
|
providers: codexMergeResult.merged,
|
|
16425
|
-
|
|
16423
|
+
// 替换为合并后的 providers
|
|
16424
|
+
presets: mergedCodexPresets
|
|
16425
|
+
// 替换为合并后的 presets
|
|
16426
16426
|
};
|
|
16427
16427
|
const mergedClaudeConfig = {
|
|
16428
|
-
|
|
16428
|
+
...localClaudeConfig,
|
|
16429
|
+
// 保留本地配置的所有字段
|
|
16429
16430
|
providers: claudeMergeResult.merged,
|
|
16430
|
-
|
|
16431
|
+
// 替换为合并后的 providers
|
|
16432
|
+
presets: mergedClaudePresets
|
|
16433
|
+
// 替换为合并后的 presets
|
|
16431
16434
|
};
|
|
16432
16435
|
writeJSON(codexConfigPath, mergedCodexConfig);
|
|
16433
16436
|
writeJSON(claudeConfigPath, mergedClaudeConfig);
|
|
@@ -16436,17 +16439,22 @@ async function mergeSync(config, password) {
|
|
|
16436
16439
|
const encryptedCodexProviders = encryptProviders(codexMergeResult.merged, password);
|
|
16437
16440
|
const encryptedClaudeProviders = encryptProviders(claudeMergeResult.merged, password);
|
|
16438
16441
|
const encryptedCodexConfig = {
|
|
16439
|
-
|
|
16442
|
+
...mergedCodexConfig,
|
|
16443
|
+
// 保留合并后配置的所有字段
|
|
16440
16444
|
providers: encryptedCodexProviders
|
|
16445
|
+
// 只替换 providers(加密后的)
|
|
16441
16446
|
};
|
|
16442
16447
|
const encryptedClaudeConfig = {
|
|
16443
|
-
|
|
16448
|
+
...mergedClaudeConfig,
|
|
16449
|
+
// 保留合并后配置的所有字段
|
|
16444
16450
|
providers: encryptedClaudeProviders
|
|
16451
|
+
// 只替换 providers(加密后的)
|
|
16445
16452
|
};
|
|
16446
16453
|
const codexJson2 = JSON.stringify(encryptedCodexConfig, null, 2);
|
|
16447
16454
|
const claudeJson2 = JSON.stringify(encryptedClaudeConfig, null, 2);
|
|
16448
16455
|
await uploadToWebDAV(config, CODEX_REMOTE_PATH, codexJson2);
|
|
16449
16456
|
await uploadToWebDAV(config, CLAUDE_REMOTE_PATH, claudeJson2);
|
|
16457
|
+
updateLastSyncTime();
|
|
16450
16458
|
console.log("\u2705 \u914D\u7F6E\u5DF2\u5408\u5E76\u5E76\u540C\u6B65\u5230\u4E91\u7AEF");
|
|
16451
16459
|
return {
|
|
16452
16460
|
hasChanges: true,
|
|
@@ -16482,6 +16490,7 @@ var init_sync_v2 = __esm({
|
|
|
16482
16490
|
"use strict";
|
|
16483
16491
|
import_fs2 = __toESM(require("fs"), 1);
|
|
16484
16492
|
import_path18 = __toESM(require("path"), 1);
|
|
16493
|
+
init_config();
|
|
16485
16494
|
init_webdav_client();
|
|
16486
16495
|
init_crypto2();
|
|
16487
16496
|
init_merge_advanced();
|
|
@@ -16650,7 +16659,6 @@ var init_dist4 = __esm({
|
|
|
16650
16659
|
init_migrate();
|
|
16651
16660
|
init_paths();
|
|
16652
16661
|
init_config();
|
|
16653
|
-
init_sync();
|
|
16654
16662
|
init_webdav_client();
|
|
16655
16663
|
init_sync_v2();
|
|
16656
16664
|
init_crypto2();
|
|
@@ -16661,45 +16669,12 @@ var init_dist4 = __esm({
|
|
|
16661
16669
|
});
|
|
16662
16670
|
|
|
16663
16671
|
// src/utils/sync-config.ts
|
|
16664
|
-
function getMachineId() {
|
|
16665
|
-
return import_crypto4.default.createHash("sha256").update(import_os.default.hostname() + import_os.default.userInfo().username).digest();
|
|
16666
|
-
}
|
|
16667
|
-
function encrypt(text) {
|
|
16668
|
-
const key = getMachineId();
|
|
16669
|
-
const iv = import_crypto4.default.randomBytes(16);
|
|
16670
|
-
const cipher = import_crypto4.default.createCipheriv("aes-256-cbc", key, iv);
|
|
16671
|
-
let encrypted = cipher.update(text, "utf8", "hex");
|
|
16672
|
-
encrypted += cipher.final("hex");
|
|
16673
|
-
return iv.toString("hex") + ":" + encrypted;
|
|
16674
|
-
}
|
|
16675
|
-
function decrypt(encrypted) {
|
|
16676
|
-
const parts = encrypted.split(":");
|
|
16677
|
-
const iv = Buffer.from(parts[0], "hex");
|
|
16678
|
-
const encryptedText = parts[1];
|
|
16679
|
-
const key = getMachineId();
|
|
16680
|
-
const decipher = import_crypto4.default.createDecipheriv("aes-256-cbc", key, iv);
|
|
16681
|
-
let decrypted = decipher.update(encryptedText, "hex", "utf8");
|
|
16682
|
-
decrypted += decipher.final("utf8");
|
|
16683
|
-
return decrypted;
|
|
16684
|
-
}
|
|
16685
16672
|
function loadSyncConfig() {
|
|
16686
16673
|
try {
|
|
16687
16674
|
const config = getSyncConfig();
|
|
16688
16675
|
if (!config) {
|
|
16689
16676
|
return null;
|
|
16690
16677
|
}
|
|
16691
|
-
if (config.password && config.password.includes(":")) {
|
|
16692
|
-
try {
|
|
16693
|
-
config.password = decrypt(config.password);
|
|
16694
|
-
} catch {
|
|
16695
|
-
}
|
|
16696
|
-
}
|
|
16697
|
-
if (config.syncPassword && config.syncPassword.includes(":")) {
|
|
16698
|
-
try {
|
|
16699
|
-
config.syncPassword = decrypt(config.syncPassword);
|
|
16700
|
-
} catch {
|
|
16701
|
-
}
|
|
16702
|
-
}
|
|
16703
16678
|
return config;
|
|
16704
16679
|
} catch (error) {
|
|
16705
16680
|
throw new Error(`\u8BFB\u53D6\u540C\u6B65\u914D\u7F6E\u5931\u8D25: ${error.message}`);
|
|
@@ -16708,15 +16683,9 @@ function loadSyncConfig() {
|
|
|
16708
16683
|
function saveSyncConfig2(config) {
|
|
16709
16684
|
try {
|
|
16710
16685
|
const configToSave = { ...config };
|
|
16711
|
-
if (configToSave.
|
|
16712
|
-
configToSave.password = encrypt(configToSave.password);
|
|
16713
|
-
}
|
|
16714
|
-
if (configToSave.syncPassword && configToSave.rememberSyncPassword) {
|
|
16715
|
-
configToSave.syncPassword = encrypt(configToSave.syncPassword);
|
|
16716
|
-
} else {
|
|
16686
|
+
if (!configToSave.rememberSyncPassword) {
|
|
16717
16687
|
delete configToSave.syncPassword;
|
|
16718
16688
|
}
|
|
16719
|
-
configToSave.lastSync = Date.now();
|
|
16720
16689
|
saveSyncConfig(configToSave);
|
|
16721
16690
|
} catch (error) {
|
|
16722
16691
|
throw new Error(`\u4FDD\u5B58\u540C\u6B65\u914D\u7F6E\u5931\u8D25: ${error.message}`);
|
|
@@ -16725,12 +16694,9 @@ function saveSyncConfig2(config) {
|
|
|
16725
16694
|
function getSyncConfigPath() {
|
|
16726
16695
|
return getConfigPath();
|
|
16727
16696
|
}
|
|
16728
|
-
var import_crypto4, import_os;
|
|
16729
16697
|
var init_sync_config = __esm({
|
|
16730
16698
|
"src/utils/sync-config.ts"() {
|
|
16731
16699
|
"use strict";
|
|
16732
|
-
import_crypto4 = __toESM(require("crypto"));
|
|
16733
|
-
import_os = __toESM(require("os"));
|
|
16734
16700
|
init_dist4();
|
|
16735
16701
|
}
|
|
16736
16702
|
});
|
|
@@ -16835,8 +16801,7 @@ function configCommand(program2) {
|
|
|
16835
16801
|
hasChanges = true;
|
|
16836
16802
|
}
|
|
16837
16803
|
} else if (!existingConfig) {
|
|
16838
|
-
|
|
16839
|
-
process.exit(1);
|
|
16804
|
+
throw new Error("WebDAV \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A");
|
|
16840
16805
|
}
|
|
16841
16806
|
if (trimmedAnswers.username) {
|
|
16842
16807
|
if (trimmedAnswers.username !== existingConfig?.username) {
|
|
@@ -16844,8 +16809,7 @@ function configCommand(program2) {
|
|
|
16844
16809
|
hasChanges = true;
|
|
16845
16810
|
}
|
|
16846
16811
|
} else if (!existingConfig) {
|
|
16847
|
-
|
|
16848
|
-
process.exit(1);
|
|
16812
|
+
throw new Error("\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A");
|
|
16849
16813
|
}
|
|
16850
16814
|
if (trimmedAnswers.password) {
|
|
16851
16815
|
if (trimmedAnswers.password !== existingConfig?.password) {
|
|
@@ -16853,8 +16817,7 @@ function configCommand(program2) {
|
|
|
16853
16817
|
hasChanges = true;
|
|
16854
16818
|
}
|
|
16855
16819
|
} else if (!existingConfig) {
|
|
16856
|
-
|
|
16857
|
-
process.exit(1);
|
|
16820
|
+
throw new Error("\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A");
|
|
16858
16821
|
}
|
|
16859
16822
|
if (trimmedAnswers.authType !== existingConfig?.authType) {
|
|
16860
16823
|
newConfig.authType = trimmedAnswers.authType;
|
|
@@ -16874,8 +16837,7 @@ function configCommand(program2) {
|
|
|
16874
16837
|
hasChanges = true;
|
|
16875
16838
|
}
|
|
16876
16839
|
} else if (!existingConfig) {
|
|
16877
|
-
|
|
16878
|
-
process.exit(1);
|
|
16840
|
+
throw new Error("\u540C\u6B65\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A");
|
|
16879
16841
|
}
|
|
16880
16842
|
if (trimmedAnswers.rememberSyncPassword !== existingConfig?.rememberSyncPassword) {
|
|
16881
16843
|
newConfig.rememberSyncPassword = trimmedAnswers.rememberSyncPassword;
|
|
@@ -16902,13 +16864,30 @@ function configCommand(program2) {
|
|
|
16902
16864
|
}
|
|
16903
16865
|
]);
|
|
16904
16866
|
if (testNow) {
|
|
16905
|
-
console.log(import_chalk3.default.
|
|
16867
|
+
console.log(import_chalk3.default.bold("\n\u{1F50D} \u6D4B\u8BD5 WebDAV \u8FDE\u63A5...\n"));
|
|
16868
|
+
const success = await testWebDAVConnection(newConfig);
|
|
16869
|
+
if (success) {
|
|
16870
|
+
console.log(import_chalk3.default.green("\u2705 \u8FDE\u63A5\u6210\u529F"));
|
|
16871
|
+
console.log();
|
|
16872
|
+
console.log(" ", import_chalk3.default.gray("URL:"), newConfig.webdavUrl);
|
|
16873
|
+
console.log(" ", import_chalk3.default.gray("\u7528\u6237:"), newConfig.username);
|
|
16874
|
+
console.log(" ", import_chalk3.default.gray("\u8FDC\u7A0B\u76EE\u5F55:"), newConfig.remoteDir || "/");
|
|
16875
|
+
console.log(" ", import_chalk3.default.gray("\u8BA4\u8BC1\u7C7B\u578B:"), newConfig.authType === "password" ? "Basic Auth" : "Digest Auth");
|
|
16876
|
+
console.log();
|
|
16877
|
+
} else {
|
|
16878
|
+
console.log(import_chalk3.default.red("\u274C \u8FDE\u63A5\u5931\u8D25"));
|
|
16879
|
+
console.log();
|
|
16880
|
+
console.log(import_chalk3.default.yellow("\u8BF7\u68C0\u67E5:"));
|
|
16881
|
+
console.log(" 1. WebDAV \u670D\u52A1\u5668\u5730\u5740\u662F\u5426\u6B63\u786E");
|
|
16882
|
+
console.log(" 2. \u7528\u6237\u540D\u548C\u5BC6\u7801\u662F\u5426\u6B63\u786E");
|
|
16883
|
+
console.log(" 3. \u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u6B63\u5E38");
|
|
16884
|
+
console.log();
|
|
16885
|
+
}
|
|
16906
16886
|
}
|
|
16907
16887
|
} catch (error) {
|
|
16908
16888
|
console.error(import_chalk3.default.red(`
|
|
16909
16889
|
\u274C ${error.message}
|
|
16910
16890
|
`));
|
|
16911
|
-
process.exit(1);
|
|
16912
16891
|
}
|
|
16913
16892
|
});
|
|
16914
16893
|
}
|
|
@@ -16919,6 +16898,42 @@ var init_config2 = __esm({
|
|
|
16919
16898
|
import_chalk3 = __toESM(require("chalk"));
|
|
16920
16899
|
import_inquirer = __toESM(require("inquirer"));
|
|
16921
16900
|
init_sync_config();
|
|
16901
|
+
init_dist4();
|
|
16902
|
+
}
|
|
16903
|
+
});
|
|
16904
|
+
|
|
16905
|
+
// src/commands/sync/helpers.ts
|
|
16906
|
+
async function ensureConfigExists() {
|
|
16907
|
+
const config = loadSyncConfig();
|
|
16908
|
+
if (config) {
|
|
16909
|
+
return config;
|
|
16910
|
+
}
|
|
16911
|
+
console.log(import_chalk4.default.yellow("\n\u26A0\uFE0F \u672A\u627E\u5230 WebDAV \u914D\u7F6E\n"));
|
|
16912
|
+
const { shouldConfig } = await import_inquirer2.default.prompt([
|
|
16913
|
+
{
|
|
16914
|
+
type: "confirm",
|
|
16915
|
+
name: "shouldConfig",
|
|
16916
|
+
message: "\u662F\u5426\u73B0\u5728\u914D\u7F6E WebDAV?",
|
|
16917
|
+
default: true
|
|
16918
|
+
}
|
|
16919
|
+
]);
|
|
16920
|
+
if (!shouldConfig) {
|
|
16921
|
+
return null;
|
|
16922
|
+
}
|
|
16923
|
+
const { configCommand: configCommand2 } = await Promise.resolve().then(() => (init_config2(), config_exports));
|
|
16924
|
+
const cmd = new import_commander.Command();
|
|
16925
|
+
configCommand2(cmd);
|
|
16926
|
+
await cmd.parseAsync(["node", "ccman", "config"]);
|
|
16927
|
+
return loadSyncConfig();
|
|
16928
|
+
}
|
|
16929
|
+
var import_inquirer2, import_chalk4, import_commander;
|
|
16930
|
+
var init_helpers = __esm({
|
|
16931
|
+
"src/commands/sync/helpers.ts"() {
|
|
16932
|
+
"use strict";
|
|
16933
|
+
import_inquirer2 = __toESM(require("inquirer"));
|
|
16934
|
+
import_chalk4 = __toESM(require("chalk"));
|
|
16935
|
+
import_commander = require("commander");
|
|
16936
|
+
init_sync_config();
|
|
16922
16937
|
}
|
|
16923
16938
|
});
|
|
16924
16939
|
|
|
@@ -16930,47 +16945,44 @@ __export(test_exports, {
|
|
|
16930
16945
|
function testCommand(program2) {
|
|
16931
16946
|
program2.command("test").description("\u6D4B\u8BD5 WebDAV \u8FDE\u63A5").action(async () => {
|
|
16932
16947
|
try {
|
|
16933
|
-
const config =
|
|
16948
|
+
const config = await ensureConfigExists();
|
|
16934
16949
|
if (!config) {
|
|
16935
|
-
console.log(
|
|
16936
|
-
|
|
16937
|
-
process.exit(1);
|
|
16950
|
+
console.log(import_chalk5.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
16951
|
+
return;
|
|
16938
16952
|
}
|
|
16939
|
-
console.log(
|
|
16953
|
+
console.log(import_chalk5.default.bold("\n\u{1F50D} \u6D4B\u8BD5 WebDAV \u8FDE\u63A5...\n"));
|
|
16940
16954
|
const success = await testWebDAVConnection(config);
|
|
16941
16955
|
if (success) {
|
|
16942
|
-
console.log(
|
|
16956
|
+
console.log(import_chalk5.default.green("\u2705 \u8FDE\u63A5\u6210\u529F"));
|
|
16943
16957
|
console.log();
|
|
16944
|
-
console.log(" ",
|
|
16945
|
-
console.log(" ",
|
|
16946
|
-
console.log(" ",
|
|
16947
|
-
console.log(" ",
|
|
16958
|
+
console.log(" ", import_chalk5.default.gray("URL:"), config.webdavUrl);
|
|
16959
|
+
console.log(" ", import_chalk5.default.gray("\u7528\u6237:"), config.username);
|
|
16960
|
+
console.log(" ", import_chalk5.default.gray("\u8FDC\u7A0B\u76EE\u5F55:"), config.remoteDir);
|
|
16961
|
+
console.log(" ", import_chalk5.default.gray("\u8BA4\u8BC1\u7C7B\u578B:"), config.authType === "password" ? "Basic Auth" : "Digest Auth");
|
|
16948
16962
|
console.log();
|
|
16949
16963
|
} else {
|
|
16950
|
-
console.log(
|
|
16964
|
+
console.log(import_chalk5.default.red("\u274C \u8FDE\u63A5\u5931\u8D25"));
|
|
16951
16965
|
console.log();
|
|
16952
|
-
console.log(
|
|
16966
|
+
console.log(import_chalk5.default.yellow("\u8BF7\u68C0\u67E5:"));
|
|
16953
16967
|
console.log(" 1. WebDAV \u670D\u52A1\u5668\u5730\u5740\u662F\u5426\u6B63\u786E");
|
|
16954
16968
|
console.log(" 2. \u7528\u6237\u540D\u548C\u5BC6\u7801\u662F\u5426\u6B63\u786E");
|
|
16955
16969
|
console.log(" 3. \u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u6B63\u5E38");
|
|
16956
16970
|
console.log();
|
|
16957
|
-
process.exit(1);
|
|
16958
16971
|
}
|
|
16959
16972
|
} catch (error) {
|
|
16960
|
-
console.error(
|
|
16973
|
+
console.error(import_chalk5.default.red(`
|
|
16961
16974
|
\u274C ${error.message}
|
|
16962
16975
|
`));
|
|
16963
|
-
process.exit(1);
|
|
16964
16976
|
}
|
|
16965
16977
|
});
|
|
16966
16978
|
}
|
|
16967
|
-
var
|
|
16979
|
+
var import_chalk5;
|
|
16968
16980
|
var init_test = __esm({
|
|
16969
16981
|
"src/commands/sync/test.ts"() {
|
|
16970
16982
|
"use strict";
|
|
16971
|
-
|
|
16983
|
+
import_chalk5 = __toESM(require("chalk"));
|
|
16972
16984
|
init_dist4();
|
|
16973
|
-
|
|
16985
|
+
init_helpers();
|
|
16974
16986
|
}
|
|
16975
16987
|
});
|
|
16976
16988
|
|
|
@@ -16982,15 +16994,14 @@ __export(upload_exports, {
|
|
|
16982
16994
|
function uploadCommand(program2) {
|
|
16983
16995
|
program2.command("upload").description("\u4E0A\u4F20\u672C\u5730\u914D\u7F6E\u5230\u4E91\u7AEF").action(async () => {
|
|
16984
16996
|
try {
|
|
16985
|
-
const config =
|
|
16997
|
+
const config = await ensureConfigExists();
|
|
16986
16998
|
if (!config) {
|
|
16987
|
-
console.log(
|
|
16988
|
-
|
|
16989
|
-
process.exit(1);
|
|
16999
|
+
console.log(import_chalk6.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
17000
|
+
return;
|
|
16990
17001
|
}
|
|
16991
17002
|
let syncPassword = config.syncPassword;
|
|
16992
17003
|
if (!syncPassword) {
|
|
16993
|
-
const { password } = await
|
|
17004
|
+
const { password } = await import_inquirer3.default.prompt([
|
|
16994
17005
|
{
|
|
16995
17006
|
type: "password",
|
|
16996
17007
|
name: "password",
|
|
@@ -17005,14 +17016,14 @@ function uploadCommand(program2) {
|
|
|
17005
17016
|
const claudeManager = createClaudeManager();
|
|
17006
17017
|
const codexProviders = codexManager.list();
|
|
17007
17018
|
const claudeProviders = claudeManager.list();
|
|
17008
|
-
console.log(
|
|
17019
|
+
console.log(import_chalk6.default.bold("\n\u{1F4E4} \u4E0A\u4F20\u914D\u7F6E\u5230\u4E91\u7AEF\n"));
|
|
17009
17020
|
console.log("\u914D\u7F6E\u4FE1\u606F:");
|
|
17010
|
-
console.log(` Codex \u670D\u52A1\u5546: ${
|
|
17011
|
-
console.log(` Claude \u670D\u52A1\u5546: ${
|
|
17021
|
+
console.log(` Codex \u670D\u52A1\u5546: ${import_chalk6.default.cyan(codexProviders.length)} \u4E2A`);
|
|
17022
|
+
console.log(` Claude \u670D\u52A1\u5546: ${import_chalk6.default.cyan(claudeProviders.length)} \u4E2A`);
|
|
17012
17023
|
console.log();
|
|
17013
|
-
console.log(
|
|
17024
|
+
console.log(import_chalk6.default.yellow("\u26A0\uFE0F \u4E91\u7AEF\u73B0\u6709\u914D\u7F6E\u5C06\u88AB\u8986\u76D6"));
|
|
17014
17025
|
console.log();
|
|
17015
|
-
const { confirm } = await
|
|
17026
|
+
const { confirm } = await import_inquirer3.default.prompt([
|
|
17016
17027
|
{
|
|
17017
17028
|
type: "confirm",
|
|
17018
17029
|
name: "confirm",
|
|
@@ -17021,37 +17032,36 @@ function uploadCommand(program2) {
|
|
|
17021
17032
|
}
|
|
17022
17033
|
]);
|
|
17023
17034
|
if (!confirm) {
|
|
17024
|
-
console.log(
|
|
17035
|
+
console.log(import_chalk6.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
|
|
17025
17036
|
return;
|
|
17026
17037
|
}
|
|
17027
17038
|
console.log();
|
|
17028
|
-
console.log(
|
|
17029
|
-
console.log(
|
|
17039
|
+
console.log(import_chalk6.default.gray("\u{1F510} \u52A0\u5BC6 API Key..."));
|
|
17040
|
+
console.log(import_chalk6.default.gray("\u{1F4E4} \u4E0A\u4F20\u5230 WebDAV..."));
|
|
17030
17041
|
await uploadToCloud(config, syncPassword);
|
|
17031
17042
|
console.log();
|
|
17032
|
-
console.log(
|
|
17043
|
+
console.log(import_chalk6.default.green("\u2705 \u4E0A\u4F20\u6210\u529F"));
|
|
17033
17044
|
console.log();
|
|
17034
|
-
console.log(
|
|
17035
|
-
console.log(
|
|
17036
|
-
console.log(
|
|
17045
|
+
console.log(import_chalk6.default.gray("\u8FDC\u7A0B\u6587\u4EF6:"));
|
|
17046
|
+
console.log(import_chalk6.default.gray(` ${config.webdavUrl}${config.remoteDir}/.ccman/codex.json`));
|
|
17047
|
+
console.log(import_chalk6.default.gray(` ${config.webdavUrl}${config.remoteDir}/.ccman/claude.json`));
|
|
17037
17048
|
console.log();
|
|
17038
|
-
console.log(
|
|
17049
|
+
console.log(import_chalk6.default.blue("\u{1F4A1} \u5176\u4ED6\u8BBE\u5907\u53EF\u901A\u8FC7 'ccman sync download' \u83B7\u53D6\u914D\u7F6E\n"));
|
|
17039
17050
|
} catch (error) {
|
|
17040
|
-
console.error(
|
|
17051
|
+
console.error(import_chalk6.default.red(`
|
|
17041
17052
|
\u274C ${error.message}
|
|
17042
17053
|
`));
|
|
17043
|
-
process.exit(1);
|
|
17044
17054
|
}
|
|
17045
17055
|
});
|
|
17046
17056
|
}
|
|
17047
|
-
var
|
|
17057
|
+
var import_chalk6, import_inquirer3;
|
|
17048
17058
|
var init_upload = __esm({
|
|
17049
17059
|
"src/commands/sync/upload.ts"() {
|
|
17050
17060
|
"use strict";
|
|
17051
|
-
|
|
17052
|
-
|
|
17061
|
+
import_chalk6 = __toESM(require("chalk"));
|
|
17062
|
+
import_inquirer3 = __toESM(require("inquirer"));
|
|
17053
17063
|
init_dist4();
|
|
17054
|
-
|
|
17064
|
+
init_helpers();
|
|
17055
17065
|
}
|
|
17056
17066
|
});
|
|
17057
17067
|
|
|
@@ -17063,15 +17073,14 @@ __export(download_exports, {
|
|
|
17063
17073
|
function downloadCommand(program2) {
|
|
17064
17074
|
program2.command("download").description("\u4ECE\u4E91\u7AEF\u4E0B\u8F7D\u914D\u7F6E\u5230\u672C\u5730").action(async () => {
|
|
17065
17075
|
try {
|
|
17066
|
-
const config =
|
|
17076
|
+
const config = await ensureConfigExists();
|
|
17067
17077
|
if (!config) {
|
|
17068
|
-
console.log(
|
|
17069
|
-
|
|
17070
|
-
process.exit(1);
|
|
17078
|
+
console.log(import_chalk7.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
17079
|
+
return;
|
|
17071
17080
|
}
|
|
17072
17081
|
let syncPassword = config.syncPassword;
|
|
17073
17082
|
if (!syncPassword) {
|
|
17074
|
-
const { password } = await
|
|
17083
|
+
const { password } = await import_inquirer4.default.prompt([
|
|
17075
17084
|
{
|
|
17076
17085
|
type: "password",
|
|
17077
17086
|
name: "password",
|
|
@@ -17082,10 +17091,10 @@ function downloadCommand(program2) {
|
|
|
17082
17091
|
]);
|
|
17083
17092
|
syncPassword = password;
|
|
17084
17093
|
}
|
|
17085
|
-
console.log(
|
|
17086
|
-
console.log(
|
|
17094
|
+
console.log(import_chalk7.default.bold("\n\u{1F4E5} \u4ECE\u4E91\u7AEF\u4E0B\u8F7D\u914D\u7F6E\n"));
|
|
17095
|
+
console.log(import_chalk7.default.yellow("\u26A0\uFE0F \u5C06\u8986\u76D6\u672C\u5730\u914D\u7F6E\uFF08\u81EA\u52A8\u5907\u4EFD\uFF09"));
|
|
17087
17096
|
console.log();
|
|
17088
|
-
const { confirm } = await
|
|
17097
|
+
const { confirm } = await import_inquirer4.default.prompt([
|
|
17089
17098
|
{
|
|
17090
17099
|
type: "confirm",
|
|
17091
17100
|
name: "confirm",
|
|
@@ -17094,41 +17103,40 @@ function downloadCommand(program2) {
|
|
|
17094
17103
|
}
|
|
17095
17104
|
]);
|
|
17096
17105
|
if (!confirm) {
|
|
17097
|
-
console.log(
|
|
17106
|
+
console.log(import_chalk7.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
|
|
17098
17107
|
return;
|
|
17099
17108
|
}
|
|
17100
17109
|
console.log();
|
|
17101
|
-
console.log(
|
|
17102
|
-
console.log(
|
|
17103
|
-
console.log(
|
|
17110
|
+
console.log(import_chalk7.default.gray("\u{1F4BE} \u5907\u4EFD\u672C\u5730\u914D\u7F6E..."));
|
|
17111
|
+
console.log(import_chalk7.default.gray("\u{1F4E5} \u4E0B\u8F7D\u8FDC\u7A0B\u914D\u7F6E..."));
|
|
17112
|
+
console.log(import_chalk7.default.gray("\u{1F513} \u89E3\u5BC6 API Key..."));
|
|
17104
17113
|
const backupPaths = await downloadFromCloud(config, syncPassword);
|
|
17105
17114
|
console.log();
|
|
17106
|
-
console.log(
|
|
17115
|
+
console.log(import_chalk7.default.green("\u2705 \u4E0B\u8F7D\u6210\u529F"));
|
|
17107
17116
|
console.log();
|
|
17108
17117
|
if (backupPaths.length > 0) {
|
|
17109
|
-
console.log(
|
|
17118
|
+
console.log(import_chalk7.default.gray("\u672C\u5730\u5907\u4EFD:"));
|
|
17110
17119
|
backupPaths.forEach((path12) => {
|
|
17111
|
-
console.log(
|
|
17120
|
+
console.log(import_chalk7.default.gray(` ${path12}`));
|
|
17112
17121
|
});
|
|
17113
17122
|
console.log();
|
|
17114
17123
|
}
|
|
17115
|
-
console.log(
|
|
17124
|
+
console.log(import_chalk7.default.blue("\u{1F4A1} \u914D\u7F6E\u5DF2\u66F4\u65B0\uFF0C\u91CD\u65B0\u52A0\u8F7D\u751F\u6548\n"));
|
|
17116
17125
|
} catch (error) {
|
|
17117
|
-
console.error(
|
|
17126
|
+
console.error(import_chalk7.default.red(`
|
|
17118
17127
|
\u274C ${error.message}
|
|
17119
17128
|
`));
|
|
17120
|
-
process.exit(1);
|
|
17121
17129
|
}
|
|
17122
17130
|
});
|
|
17123
17131
|
}
|
|
17124
|
-
var
|
|
17132
|
+
var import_chalk7, import_inquirer4;
|
|
17125
17133
|
var init_download = __esm({
|
|
17126
17134
|
"src/commands/sync/download.ts"() {
|
|
17127
17135
|
"use strict";
|
|
17128
|
-
|
|
17129
|
-
|
|
17136
|
+
import_chalk7 = __toESM(require("chalk"));
|
|
17137
|
+
import_inquirer4 = __toESM(require("inquirer"));
|
|
17130
17138
|
init_dist4();
|
|
17131
|
-
|
|
17139
|
+
init_helpers();
|
|
17132
17140
|
}
|
|
17133
17141
|
});
|
|
17134
17142
|
|
|
@@ -17140,15 +17148,14 @@ __export(merge_exports, {
|
|
|
17140
17148
|
function mergeCommand(program2) {
|
|
17141
17149
|
program2.command("merge").description("\u667A\u80FD\u5408\u5E76\u672C\u5730\u548C\u4E91\u7AEF\u914D\u7F6E").action(async () => {
|
|
17142
17150
|
try {
|
|
17143
|
-
const config =
|
|
17151
|
+
const config = await ensureConfigExists();
|
|
17144
17152
|
if (!config) {
|
|
17145
|
-
console.log(
|
|
17146
|
-
|
|
17147
|
-
process.exit(1);
|
|
17153
|
+
console.log(import_chalk8.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
17154
|
+
return;
|
|
17148
17155
|
}
|
|
17149
17156
|
let syncPassword = config.syncPassword;
|
|
17150
17157
|
if (!syncPassword) {
|
|
17151
|
-
const { password } = await
|
|
17158
|
+
const { password } = await import_inquirer5.default.prompt([
|
|
17152
17159
|
{
|
|
17153
17160
|
type: "password",
|
|
17154
17161
|
name: "password",
|
|
@@ -17159,45 +17166,44 @@ function mergeCommand(program2) {
|
|
|
17159
17166
|
]);
|
|
17160
17167
|
syncPassword = password;
|
|
17161
17168
|
}
|
|
17162
|
-
console.log(
|
|
17163
|
-
console.log(
|
|
17169
|
+
console.log(import_chalk8.default.bold("\n\u{1F504} \u667A\u80FD\u5408\u5E76\u914D\u7F6E\n"));
|
|
17170
|
+
console.log(import_chalk8.default.gray("\u5206\u6790\u672C\u5730\u548C\u4E91\u7AEF\u914D\u7F6E..."));
|
|
17164
17171
|
const result = await mergeSync(config, syncPassword);
|
|
17165
17172
|
if (!result.hasChanges) {
|
|
17166
17173
|
console.log();
|
|
17167
|
-
console.log(
|
|
17174
|
+
console.log(import_chalk8.default.blue("\u2139\uFE0F \u914D\u7F6E\u5DF2\u540C\u6B65\uFF0C\u65E0\u9700\u64CD\u4F5C\n"));
|
|
17168
17175
|
return;
|
|
17169
17176
|
}
|
|
17170
17177
|
console.log();
|
|
17171
|
-
console.log(
|
|
17178
|
+
console.log(import_chalk8.default.green("\u2705 \u914D\u7F6E\u5DF2\u667A\u80FD\u5408\u5E76\u5E76\u540C\u6B65"));
|
|
17172
17179
|
console.log();
|
|
17173
17180
|
if (result.backupPaths.length > 0) {
|
|
17174
|
-
console.log(
|
|
17181
|
+
console.log(import_chalk8.default.gray("\u5907\u4EFD:"));
|
|
17175
17182
|
result.backupPaths.forEach((path12) => {
|
|
17176
|
-
console.log(
|
|
17183
|
+
console.log(import_chalk8.default.gray(` ${path12}`));
|
|
17177
17184
|
});
|
|
17178
17185
|
console.log();
|
|
17179
17186
|
}
|
|
17180
|
-
console.log(
|
|
17181
|
-
console.log(
|
|
17182
|
-
console.log(
|
|
17183
|
-
console.log(
|
|
17187
|
+
console.log(import_chalk8.default.blue("\u5408\u5E76\u89C4\u5219:"));
|
|
17188
|
+
console.log(import_chalk8.default.gray(" \u2022 \u76F8\u540C ID\uFF1A\u4FDD\u7559\u6700\u65B0\u4FEE\u6539"));
|
|
17189
|
+
console.log(import_chalk8.default.gray(" \u2022 \u76F8\u540C\u914D\u7F6E\uFF08URL+Key\uFF09\uFF1A\u4FDD\u7559\u6700\u65B0\u4FEE\u6539"));
|
|
17190
|
+
console.log(import_chalk8.default.gray(" \u2022 \u4E0D\u540C\u914D\u7F6E\uFF1A\u5168\u90E8\u4FDD\u7559\uFF0C\u81EA\u52A8\u5904\u7406 name \u51B2\u7A81"));
|
|
17184
17191
|
console.log();
|
|
17185
17192
|
} catch (error) {
|
|
17186
|
-
console.error(
|
|
17193
|
+
console.error(import_chalk8.default.red(`
|
|
17187
17194
|
\u274C ${error.message}
|
|
17188
17195
|
`));
|
|
17189
|
-
process.exit(1);
|
|
17190
17196
|
}
|
|
17191
17197
|
});
|
|
17192
17198
|
}
|
|
17193
|
-
var
|
|
17199
|
+
var import_chalk8, import_inquirer5;
|
|
17194
17200
|
var init_merge3 = __esm({
|
|
17195
17201
|
"src/commands/sync/merge.ts"() {
|
|
17196
17202
|
"use strict";
|
|
17197
|
-
|
|
17198
|
-
|
|
17203
|
+
import_chalk8 = __toESM(require("chalk"));
|
|
17204
|
+
import_inquirer5 = __toESM(require("inquirer"));
|
|
17199
17205
|
init_dist4();
|
|
17200
|
-
|
|
17206
|
+
init_helpers();
|
|
17201
17207
|
}
|
|
17202
17208
|
});
|
|
17203
17209
|
|
|
@@ -17210,50 +17216,49 @@ function statusCommand(program2) {
|
|
|
17210
17216
|
program2.command("status").description("\u67E5\u770B\u540C\u6B65\u72B6\u6001").action(async () => {
|
|
17211
17217
|
try {
|
|
17212
17218
|
const config = loadSyncConfig();
|
|
17213
|
-
console.log(
|
|
17219
|
+
console.log(import_chalk9.default.bold("\n\u{1F4CA} \u540C\u6B65\u72B6\u6001\n"));
|
|
17214
17220
|
if (!config) {
|
|
17215
|
-
console.log(
|
|
17221
|
+
console.log(import_chalk9.default.yellow("\u26A0\uFE0F \u672A\u914D\u7F6E WebDAV \u540C\u6B65"));
|
|
17216
17222
|
console.log();
|
|
17217
|
-
console.log(
|
|
17223
|
+
console.log(import_chalk9.default.blue("\u{1F4A1} \u5F00\u59CB\u914D\u7F6E: ccman sync config\n"));
|
|
17218
17224
|
return;
|
|
17219
17225
|
}
|
|
17220
|
-
console.log(
|
|
17221
|
-
console.log(` URL: ${
|
|
17222
|
-
console.log(` \u7528\u6237: ${
|
|
17223
|
-
console.log(` \u8FDC\u7A0B\u76EE\u5F55: ${
|
|
17224
|
-
console.log(` \u8BA4\u8BC1: ${
|
|
17225
|
-
console.log(` \u540C\u6B65\u5BC6\u7801: ${config.syncPassword ?
|
|
17226
|
+
console.log(import_chalk9.default.bold("WebDAV \u914D\u7F6E:"));
|
|
17227
|
+
console.log(` URL: ${import_chalk9.default.gray(config.webdavUrl)}`);
|
|
17228
|
+
console.log(` \u7528\u6237: ${import_chalk9.default.gray(config.username)}`);
|
|
17229
|
+
console.log(` \u8FDC\u7A0B\u76EE\u5F55: ${import_chalk9.default.gray(config.remoteDir)}`);
|
|
17230
|
+
console.log(` \u8BA4\u8BC1: ${import_chalk9.default.gray(config.authType === "password" ? "Basic Auth" : "Digest Auth")}`);
|
|
17231
|
+
console.log(` \u540C\u6B65\u5BC6\u7801: ${config.syncPassword ? import_chalk9.default.green("\u2713 \u5DF2\u4FDD\u5B58") : import_chalk9.default.yellow("\u2717 \u672A\u4FDD\u5B58")}`);
|
|
17226
17232
|
console.log();
|
|
17227
17233
|
const codexManager = createCodexManager();
|
|
17228
17234
|
const claudeManager = createClaudeManager();
|
|
17229
17235
|
const codexProviders = codexManager.list();
|
|
17230
17236
|
const claudeProviders = claudeManager.list();
|
|
17231
|
-
console.log(
|
|
17232
|
-
console.log(` Codex: ${
|
|
17233
|
-
console.log(` Claude: ${
|
|
17237
|
+
console.log(import_chalk9.default.bold("\u672C\u5730\u914D\u7F6E:"));
|
|
17238
|
+
console.log(` Codex: ${import_chalk9.default.cyan(codexProviders.length)} \u4E2A\u670D\u52A1\u5546`);
|
|
17239
|
+
console.log(` Claude: ${import_chalk9.default.cyan(claudeProviders.length)} \u4E2A\u670D\u52A1\u5546`);
|
|
17234
17240
|
if (config.lastSync) {
|
|
17235
17241
|
const date = new Date(config.lastSync).toLocaleString("zh-CN");
|
|
17236
|
-
console.log(` \u6700\u540E\u540C\u6B65: ${
|
|
17242
|
+
console.log(` \u6700\u540E\u540C\u6B65: ${import_chalk9.default.gray(date)}`);
|
|
17237
17243
|
}
|
|
17238
17244
|
console.log();
|
|
17239
|
-
console.log(
|
|
17240
|
-
console.log(
|
|
17241
|
-
console.log(
|
|
17242
|
-
console.log(
|
|
17245
|
+
console.log(import_chalk9.default.bold("\u540C\u6B65\u5EFA\u8BAE:"));
|
|
17246
|
+
console.log(import_chalk9.default.blue(" \u{1F4A1} \u4E0A\u4F20\u5230\u4E91\u7AEF: ccman sync upload"));
|
|
17247
|
+
console.log(import_chalk9.default.blue(" \u{1F4A1} \u4ECE\u4E91\u7AEF\u4E0B\u8F7D: ccman sync download"));
|
|
17248
|
+
console.log(import_chalk9.default.blue(" \u{1F4A1} \u667A\u80FD\u5408\u5E76: ccman sync merge"));
|
|
17243
17249
|
console.log();
|
|
17244
17250
|
} catch (error) {
|
|
17245
|
-
console.error(
|
|
17251
|
+
console.error(import_chalk9.default.red(`
|
|
17246
17252
|
\u274C ${error.message}
|
|
17247
17253
|
`));
|
|
17248
|
-
process.exit(1);
|
|
17249
17254
|
}
|
|
17250
17255
|
});
|
|
17251
17256
|
}
|
|
17252
|
-
var
|
|
17257
|
+
var import_chalk9;
|
|
17253
17258
|
var init_status = __esm({
|
|
17254
17259
|
"src/commands/sync/status.ts"() {
|
|
17255
17260
|
"use strict";
|
|
17256
|
-
|
|
17261
|
+
import_chalk9 = __toESM(require("chalk"));
|
|
17257
17262
|
init_dist4();
|
|
17258
17263
|
init_sync_config();
|
|
17259
17264
|
}
|
|
@@ -17276,7 +17281,7 @@ function createSyncCommands(program2) {
|
|
|
17276
17281
|
async function startSyncMenu() {
|
|
17277
17282
|
while (true) {
|
|
17278
17283
|
console.log();
|
|
17279
|
-
const { action } = await
|
|
17284
|
+
const { action } = await import_inquirer6.default.prompt([
|
|
17280
17285
|
{
|
|
17281
17286
|
type: "list",
|
|
17282
17287
|
name: "action",
|
|
@@ -17288,7 +17293,7 @@ async function startSyncMenu() {
|
|
|
17288
17293
|
{ name: "\u{1F4E5} \u4ECE\u4E91\u7AEF\u4E0B\u8F7D", value: "download" },
|
|
17289
17294
|
{ name: "\u{1F504} \u667A\u80FD\u5408\u5E76", value: "merge" },
|
|
17290
17295
|
{ name: "\u{1F4CA} \u67E5\u770B\u540C\u6B65\u72B6\u6001", value: "status" },
|
|
17291
|
-
{ name: "\u2B05\uFE0F \u8FD4\u56DE\
|
|
17296
|
+
{ name: "\u2B05\uFE0F \u8FD4\u56DE\u4E0A\u4E00\u7EA7", value: "back" }
|
|
17292
17297
|
]
|
|
17293
17298
|
}
|
|
17294
17299
|
]);
|
|
@@ -17299,53 +17304,53 @@ async function startSyncMenu() {
|
|
|
17299
17304
|
switch (action) {
|
|
17300
17305
|
case "config": {
|
|
17301
17306
|
const { configCommand: configCommand2 } = await Promise.resolve().then(() => (init_config2(), config_exports));
|
|
17302
|
-
const cmd = new
|
|
17307
|
+
const cmd = new import_commander2.Command();
|
|
17303
17308
|
configCommand2(cmd);
|
|
17304
17309
|
await cmd.parseAsync(["node", "ccman", "config"]);
|
|
17305
17310
|
break;
|
|
17306
17311
|
}
|
|
17307
17312
|
case "test": {
|
|
17308
17313
|
const { testCommand: testCommand2 } = await Promise.resolve().then(() => (init_test(), test_exports));
|
|
17309
|
-
const cmd = new
|
|
17314
|
+
const cmd = new import_commander2.Command();
|
|
17310
17315
|
testCommand2(cmd);
|
|
17311
17316
|
await cmd.parseAsync(["node", "ccman", "test"]);
|
|
17312
17317
|
break;
|
|
17313
17318
|
}
|
|
17314
17319
|
case "upload": {
|
|
17315
17320
|
const { uploadCommand: uploadCommand2 } = await Promise.resolve().then(() => (init_upload(), upload_exports));
|
|
17316
|
-
const cmd = new
|
|
17321
|
+
const cmd = new import_commander2.Command();
|
|
17317
17322
|
uploadCommand2(cmd);
|
|
17318
17323
|
await cmd.parseAsync(["node", "ccman", "upload"]);
|
|
17319
17324
|
break;
|
|
17320
17325
|
}
|
|
17321
17326
|
case "download": {
|
|
17322
17327
|
const { downloadCommand: downloadCommand2 } = await Promise.resolve().then(() => (init_download(), download_exports));
|
|
17323
|
-
const cmd = new
|
|
17328
|
+
const cmd = new import_commander2.Command();
|
|
17324
17329
|
downloadCommand2(cmd);
|
|
17325
17330
|
await cmd.parseAsync(["node", "ccman", "download"]);
|
|
17326
17331
|
break;
|
|
17327
17332
|
}
|
|
17328
17333
|
case "merge": {
|
|
17329
17334
|
const { mergeCommand: mergeCommand2 } = await Promise.resolve().then(() => (init_merge3(), merge_exports));
|
|
17330
|
-
const cmd = new
|
|
17335
|
+
const cmd = new import_commander2.Command();
|
|
17331
17336
|
mergeCommand2(cmd);
|
|
17332
17337
|
await cmd.parseAsync(["node", "ccman", "merge"]);
|
|
17333
17338
|
break;
|
|
17334
17339
|
}
|
|
17335
17340
|
case "status": {
|
|
17336
17341
|
const { statusCommand: statusCommand2 } = await Promise.resolve().then(() => (init_status(), status_exports));
|
|
17337
|
-
const cmd = new
|
|
17342
|
+
const cmd = new import_commander2.Command();
|
|
17338
17343
|
statusCommand2(cmd);
|
|
17339
17344
|
await cmd.parseAsync(["node", "ccman", "status"]);
|
|
17340
17345
|
break;
|
|
17341
17346
|
}
|
|
17342
17347
|
}
|
|
17343
17348
|
} catch (error) {
|
|
17344
|
-
console.error(
|
|
17349
|
+
console.error(import_chalk10.default.red(`
|
|
17345
17350
|
\u274C ${error.message}
|
|
17346
17351
|
`));
|
|
17347
17352
|
}
|
|
17348
|
-
await
|
|
17353
|
+
await import_inquirer6.default.prompt([
|
|
17349
17354
|
{
|
|
17350
17355
|
type: "input",
|
|
17351
17356
|
name: "continue",
|
|
@@ -17354,13 +17359,13 @@ async function startSyncMenu() {
|
|
|
17354
17359
|
]);
|
|
17355
17360
|
}
|
|
17356
17361
|
}
|
|
17357
|
-
var
|
|
17358
|
-
var
|
|
17362
|
+
var import_commander2, import_inquirer6, import_chalk10;
|
|
17363
|
+
var init_sync = __esm({
|
|
17359
17364
|
"src/commands/sync/index.ts"() {
|
|
17360
17365
|
"use strict";
|
|
17361
|
-
|
|
17362
|
-
|
|
17363
|
-
|
|
17366
|
+
import_commander2 = require("commander");
|
|
17367
|
+
import_inquirer6 = __toESM(require("inquirer"));
|
|
17368
|
+
import_chalk10 = __toESM(require("chalk"));
|
|
17364
17369
|
init_config2();
|
|
17365
17370
|
init_test();
|
|
17366
17371
|
init_upload();
|
|
@@ -17371,8 +17376,8 @@ var init_sync2 = __esm({
|
|
|
17371
17376
|
});
|
|
17372
17377
|
|
|
17373
17378
|
// src/index.ts
|
|
17374
|
-
var
|
|
17375
|
-
var
|
|
17379
|
+
var import_commander3 = require("commander");
|
|
17380
|
+
var import_chalk28 = __toESM(require("chalk"));
|
|
17376
17381
|
|
|
17377
17382
|
// src/utils/logo.ts
|
|
17378
17383
|
var import_chalk = __toESM(require("chalk"));
|
|
@@ -17396,13 +17401,13 @@ function printLogo() {
|
|
|
17396
17401
|
}
|
|
17397
17402
|
|
|
17398
17403
|
// src/commands/codex/add.ts
|
|
17399
|
-
var
|
|
17400
|
-
var
|
|
17404
|
+
var import_chalk12 = __toESM(require("chalk"));
|
|
17405
|
+
var import_inquirer8 = __toESM(require("inquirer"));
|
|
17401
17406
|
init_dist4();
|
|
17402
17407
|
|
|
17403
17408
|
// src/interactive.ts
|
|
17404
|
-
var
|
|
17405
|
-
var
|
|
17409
|
+
var import_inquirer7 = __toESM(require("inquirer"));
|
|
17410
|
+
var import_chalk11 = __toESM(require("chalk"));
|
|
17406
17411
|
init_dist4();
|
|
17407
17412
|
|
|
17408
17413
|
// src/utils/format.ts
|
|
@@ -17428,7 +17433,7 @@ function formatProviderTable(providers, currentId) {
|
|
|
17428
17433
|
|
|
17429
17434
|
// src/interactive.ts
|
|
17430
17435
|
async function promptProviderForm(defaults2) {
|
|
17431
|
-
const answers = await
|
|
17436
|
+
const answers = await import_inquirer7.default.prompt([
|
|
17432
17437
|
{
|
|
17433
17438
|
type: "input",
|
|
17434
17439
|
name: "name",
|
|
@@ -17473,7 +17478,7 @@ async function promptProviderForm(defaults2) {
|
|
|
17473
17478
|
async function startMainMenu() {
|
|
17474
17479
|
while (true) {
|
|
17475
17480
|
console.log();
|
|
17476
|
-
const { choice } = await
|
|
17481
|
+
const { choice } = await import_inquirer7.default.prompt([
|
|
17477
17482
|
{
|
|
17478
17483
|
type: "list",
|
|
17479
17484
|
name: "choice",
|
|
@@ -17488,7 +17493,7 @@ async function startMainMenu() {
|
|
|
17488
17493
|
}
|
|
17489
17494
|
]);
|
|
17490
17495
|
if (choice === "exit") {
|
|
17491
|
-
console.log(
|
|
17496
|
+
console.log(import_chalk11.default.gray("\n\u{1F44B} \u518D\u89C1!\n"));
|
|
17492
17497
|
break;
|
|
17493
17498
|
}
|
|
17494
17499
|
if (choice === "claude") {
|
|
@@ -17496,7 +17501,7 @@ async function startMainMenu() {
|
|
|
17496
17501
|
} else if (choice === "codex") {
|
|
17497
17502
|
await startCodexMenu();
|
|
17498
17503
|
} else if (choice === "sync") {
|
|
17499
|
-
const { startSyncMenu: startSyncMenu2 } = await Promise.resolve().then(() => (
|
|
17504
|
+
const { startSyncMenu: startSyncMenu2 } = await Promise.resolve().then(() => (init_sync(), sync_exports));
|
|
17500
17505
|
await startSyncMenu2();
|
|
17501
17506
|
} else if (choice === "presets") {
|
|
17502
17507
|
await showPresetsMenu();
|
|
@@ -17514,7 +17519,7 @@ async function showToolMenu(tool) {
|
|
|
17514
17519
|
const toolEmoji = tool === "claude" ? "\u{1F537}" : "\u{1F536}";
|
|
17515
17520
|
while (true) {
|
|
17516
17521
|
console.log();
|
|
17517
|
-
const { action } = await
|
|
17522
|
+
const { action } = await import_inquirer7.default.prompt([
|
|
17518
17523
|
{
|
|
17519
17524
|
type: "list",
|
|
17520
17525
|
name: "action",
|
|
@@ -17559,11 +17564,11 @@ async function showToolMenu(tool) {
|
|
|
17559
17564
|
break;
|
|
17560
17565
|
}
|
|
17561
17566
|
} catch (error) {
|
|
17562
|
-
console.error(
|
|
17567
|
+
console.error(import_chalk11.default.red(`
|
|
17563
17568
|
\u274C ${error.message}
|
|
17564
17569
|
`));
|
|
17565
17570
|
}
|
|
17566
|
-
await
|
|
17571
|
+
await import_inquirer7.default.prompt([
|
|
17567
17572
|
{
|
|
17568
17573
|
type: "input",
|
|
17569
17574
|
name: "continue",
|
|
@@ -17573,16 +17578,16 @@ async function showToolMenu(tool) {
|
|
|
17573
17578
|
}
|
|
17574
17579
|
}
|
|
17575
17580
|
async function showPresetsMenu() {
|
|
17576
|
-
console.log(
|
|
17581
|
+
console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u9884\u7F6E\u670D\u52A1\u5546\u7BA1\u7406\u529F\u80FD\u5373\u5C06\u63A8\u51FA\n"));
|
|
17577
17582
|
}
|
|
17578
17583
|
async function handleAdd(tool) {
|
|
17579
17584
|
const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
|
|
17580
17585
|
const toolName = tool === "claude" ? "Claude" : "Codex";
|
|
17581
17586
|
const presets = manager.listPresets();
|
|
17582
|
-
console.log(
|
|
17587
|
+
console.log(import_chalk11.default.bold(`
|
|
17583
17588
|
\u{1F4DD} \u6DFB\u52A0 ${toolName} \u670D\u52A1\u5546
|
|
17584
17589
|
`));
|
|
17585
|
-
const { usePreset } = await
|
|
17590
|
+
const { usePreset } = await import_inquirer7.default.prompt([
|
|
17586
17591
|
{
|
|
17587
17592
|
type: "list",
|
|
17588
17593
|
name: "usePreset",
|
|
@@ -17597,7 +17602,7 @@ async function handleAdd(tool) {
|
|
|
17597
17602
|
let baseUrl;
|
|
17598
17603
|
let apiKey;
|
|
17599
17604
|
if (usePreset) {
|
|
17600
|
-
const { presetName } = await
|
|
17605
|
+
const { presetName } = await import_inquirer7.default.prompt([
|
|
17601
17606
|
{
|
|
17602
17607
|
type: "list",
|
|
17603
17608
|
name: "presetName",
|
|
@@ -17609,7 +17614,7 @@ async function handleAdd(tool) {
|
|
|
17609
17614
|
}
|
|
17610
17615
|
]);
|
|
17611
17616
|
const preset = presets.find((p) => p.name === presetName);
|
|
17612
|
-
console.log(
|
|
17617
|
+
console.log(import_chalk11.default.blue(`
|
|
17613
17618
|
\u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
|
|
17614
17619
|
`));
|
|
17615
17620
|
const input = await promptProviderForm({
|
|
@@ -17621,7 +17626,7 @@ async function handleAdd(tool) {
|
|
|
17621
17626
|
baseUrl = input.baseUrl;
|
|
17622
17627
|
apiKey = input.apiKey;
|
|
17623
17628
|
} else {
|
|
17624
|
-
const answers = await
|
|
17629
|
+
const answers = await import_inquirer7.default.prompt([
|
|
17625
17630
|
{
|
|
17626
17631
|
type: "input",
|
|
17627
17632
|
name: "name",
|
|
@@ -17654,12 +17659,12 @@ async function handleAdd(tool) {
|
|
|
17654
17659
|
}
|
|
17655
17660
|
const provider = manager.add({ name, baseUrl, apiKey });
|
|
17656
17661
|
console.log();
|
|
17657
|
-
console.log(
|
|
17662
|
+
console.log(import_chalk11.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
|
|
17658
17663
|
console.log();
|
|
17659
|
-
console.log(` ${
|
|
17660
|
-
console.log(` ${
|
|
17664
|
+
console.log(` ${import_chalk11.default.bold(provider.name)} ${import_chalk11.default.blue(`[${toolName}]`)}`);
|
|
17665
|
+
console.log(` ${import_chalk11.default.gray(provider.baseUrl)}`);
|
|
17661
17666
|
console.log();
|
|
17662
|
-
const { switchNow } = await
|
|
17667
|
+
const { switchNow } = await import_inquirer7.default.prompt([
|
|
17663
17668
|
{
|
|
17664
17669
|
type: "confirm",
|
|
17665
17670
|
name: "switchNow",
|
|
@@ -17669,9 +17674,9 @@ async function handleAdd(tool) {
|
|
|
17669
17674
|
]);
|
|
17670
17675
|
if (switchNow) {
|
|
17671
17676
|
manager.switch(provider.id);
|
|
17672
|
-
console.log(
|
|
17677
|
+
console.log(import_chalk11.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546\n"));
|
|
17673
17678
|
} else {
|
|
17674
|
-
console.log(
|
|
17679
|
+
console.log(import_chalk11.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk11.default.white(` ccman ${tool === "codex" ? "cx" : "cc"} use "${provider.name}"
|
|
17675
17680
|
`));
|
|
17676
17681
|
}
|
|
17677
17682
|
}
|
|
@@ -17680,23 +17685,23 @@ async function handleSwitch(tool) {
|
|
|
17680
17685
|
const providers = manager.list();
|
|
17681
17686
|
const current = manager.getCurrent();
|
|
17682
17687
|
if (providers.length === 0) {
|
|
17683
|
-
console.log(
|
|
17688
|
+
console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
|
|
17684
17689
|
return;
|
|
17685
17690
|
}
|
|
17686
|
-
const { providerId } = await
|
|
17691
|
+
const { providerId } = await import_inquirer7.default.prompt([
|
|
17687
17692
|
{
|
|
17688
17693
|
type: "list",
|
|
17689
17694
|
name: "providerId",
|
|
17690
17695
|
message: "\u9009\u62E9\u8981\u5207\u6362\u7684\u670D\u52A1\u5546:",
|
|
17691
17696
|
choices: providers.map((p) => ({
|
|
17692
|
-
name: `${p.name}${current?.id === p.id ?
|
|
17697
|
+
name: `${p.name}${current?.id === p.id ? import_chalk11.default.green(" (\u5F53\u524D)") : ""}`,
|
|
17693
17698
|
value: p.id
|
|
17694
17699
|
}))
|
|
17695
17700
|
}
|
|
17696
17701
|
]);
|
|
17697
17702
|
manager.switch(providerId);
|
|
17698
17703
|
const provider = providers.find((p) => p.id === providerId);
|
|
17699
|
-
console.log(
|
|
17704
|
+
console.log(import_chalk11.default.green(`
|
|
17700
17705
|
\u2705 \u5DF2\u5207\u6362\u5230: ${provider.name}
|
|
17701
17706
|
`));
|
|
17702
17707
|
}
|
|
@@ -17706,12 +17711,12 @@ async function handleList(tool) {
|
|
|
17706
17711
|
const current = manager.getCurrent();
|
|
17707
17712
|
const toolName = tool === "claude" ? "Claude" : "Codex";
|
|
17708
17713
|
if (providers.length === 0) {
|
|
17709
|
-
console.log(
|
|
17714
|
+
console.log(import_chalk11.default.yellow(`
|
|
17710
17715
|
\u26A0\uFE0F \u6682\u65E0 ${toolName} \u670D\u52A1\u5546
|
|
17711
17716
|
`));
|
|
17712
17717
|
return;
|
|
17713
17718
|
}
|
|
17714
|
-
console.log(
|
|
17719
|
+
console.log(import_chalk11.default.bold(`
|
|
17715
17720
|
\u{1F4CB} ${toolName} \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
|
|
17716
17721
|
console.log(formatProviderTable(providers, current?.id, toolName));
|
|
17717
17722
|
}
|
|
@@ -17720,19 +17725,19 @@ async function handleCurrent(tool) {
|
|
|
17720
17725
|
const current = manager.getCurrent();
|
|
17721
17726
|
const toolName = tool === "claude" ? "Claude" : "Codex";
|
|
17722
17727
|
if (!current) {
|
|
17723
|
-
console.log(
|
|
17728
|
+
console.log(import_chalk11.default.yellow(`
|
|
17724
17729
|
\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 ${toolName} \u670D\u52A1\u5546
|
|
17725
17730
|
`));
|
|
17726
17731
|
return;
|
|
17727
17732
|
}
|
|
17728
|
-
console.log(
|
|
17733
|
+
console.log(import_chalk11.default.bold(`
|
|
17729
17734
|
\u{1F441}\uFE0F \u5F53\u524D ${toolName} \u670D\u52A1\u5546
|
|
17730
17735
|
`));
|
|
17731
|
-
console.log(` ${
|
|
17732
|
-
console.log(` ${
|
|
17736
|
+
console.log(` ${import_chalk11.default.green.bold(current.name)}`);
|
|
17737
|
+
console.log(` ${import_chalk11.default.gray(current.baseUrl)}`);
|
|
17733
17738
|
if (current.lastUsedAt) {
|
|
17734
17739
|
const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
|
|
17735
|
-
console.log(` ${
|
|
17740
|
+
console.log(` ${import_chalk11.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
|
|
17736
17741
|
}
|
|
17737
17742
|
console.log();
|
|
17738
17743
|
}
|
|
@@ -17740,10 +17745,10 @@ async function handleEdit(tool) {
|
|
|
17740
17745
|
const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
|
|
17741
17746
|
const providers = manager.list();
|
|
17742
17747
|
if (providers.length === 0) {
|
|
17743
|
-
console.log(
|
|
17748
|
+
console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
|
|
17744
17749
|
return;
|
|
17745
17750
|
}
|
|
17746
|
-
const { providerId } = await
|
|
17751
|
+
const { providerId } = await import_inquirer7.default.prompt([
|
|
17747
17752
|
{
|
|
17748
17753
|
type: "list",
|
|
17749
17754
|
name: "providerId",
|
|
@@ -17755,7 +17760,7 @@ async function handleEdit(tool) {
|
|
|
17755
17760
|
}
|
|
17756
17761
|
]);
|
|
17757
17762
|
const provider = providers.find((p) => p.id === providerId);
|
|
17758
|
-
const answers = await
|
|
17763
|
+
const answers = await import_inquirer7.default.prompt([
|
|
17759
17764
|
{
|
|
17760
17765
|
type: "input",
|
|
17761
17766
|
name: "name",
|
|
@@ -17788,16 +17793,16 @@ async function handleEdit(tool) {
|
|
|
17788
17793
|
baseUrl: answers.baseUrl,
|
|
17789
17794
|
apiKey: answers.apiKey || void 0
|
|
17790
17795
|
});
|
|
17791
|
-
console.log(
|
|
17796
|
+
console.log(import_chalk11.default.green("\n\u2705 \u7F16\u8F91\u6210\u529F\n"));
|
|
17792
17797
|
}
|
|
17793
17798
|
async function handleClone(tool) {
|
|
17794
17799
|
const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
|
|
17795
17800
|
const providers = manager.list();
|
|
17796
17801
|
if (providers.length === 0) {
|
|
17797
|
-
console.log(
|
|
17802
|
+
console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
|
|
17798
17803
|
return;
|
|
17799
17804
|
}
|
|
17800
|
-
const { providerId } = await
|
|
17805
|
+
const { providerId } = await import_inquirer7.default.prompt([
|
|
17801
17806
|
{
|
|
17802
17807
|
type: "list",
|
|
17803
17808
|
name: "providerId",
|
|
@@ -17809,7 +17814,7 @@ async function handleClone(tool) {
|
|
|
17809
17814
|
}
|
|
17810
17815
|
]);
|
|
17811
17816
|
const provider = providers.find((p) => p.id === providerId);
|
|
17812
|
-
const answers = await
|
|
17817
|
+
const answers = await import_inquirer7.default.prompt([
|
|
17813
17818
|
{
|
|
17814
17819
|
type: "input",
|
|
17815
17820
|
name: "name",
|
|
@@ -17830,19 +17835,19 @@ async function handleClone(tool) {
|
|
|
17830
17835
|
baseUrl: provider.baseUrl,
|
|
17831
17836
|
apiKey: answers.apiKey
|
|
17832
17837
|
});
|
|
17833
|
-
console.log(
|
|
17834
|
-
console.log(` ${
|
|
17835
|
-
console.log(` ${
|
|
17838
|
+
console.log(import_chalk11.default.green("\n\u2705 \u514B\u9686\u6210\u529F\n"));
|
|
17839
|
+
console.log(` ${import_chalk11.default.bold(newProvider.name)}`);
|
|
17840
|
+
console.log(` ${import_chalk11.default.gray(newProvider.baseUrl)}`);
|
|
17836
17841
|
console.log();
|
|
17837
17842
|
}
|
|
17838
17843
|
async function handleRemove(tool) {
|
|
17839
17844
|
const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
|
|
17840
17845
|
const providers = manager.list();
|
|
17841
17846
|
if (providers.length === 0) {
|
|
17842
|
-
console.log(
|
|
17847
|
+
console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
|
|
17843
17848
|
return;
|
|
17844
17849
|
}
|
|
17845
|
-
const { providerId } = await
|
|
17850
|
+
const { providerId } = await import_inquirer7.default.prompt([
|
|
17846
17851
|
{
|
|
17847
17852
|
type: "list",
|
|
17848
17853
|
name: "providerId",
|
|
@@ -17854,7 +17859,7 @@ async function handleRemove(tool) {
|
|
|
17854
17859
|
}
|
|
17855
17860
|
]);
|
|
17856
17861
|
const provider = providers.find((p) => p.id === providerId);
|
|
17857
|
-
const { confirm } = await
|
|
17862
|
+
const { confirm } = await import_inquirer7.default.prompt([
|
|
17858
17863
|
{
|
|
17859
17864
|
type: "confirm",
|
|
17860
17865
|
name: "confirm",
|
|
@@ -17864,11 +17869,11 @@ async function handleRemove(tool) {
|
|
|
17864
17869
|
]);
|
|
17865
17870
|
if (confirm) {
|
|
17866
17871
|
manager.remove(providerId);
|
|
17867
|
-
console.log(
|
|
17872
|
+
console.log(import_chalk11.default.green(`
|
|
17868
17873
|
\u2705 \u5DF2\u5220\u9664: ${provider.name}
|
|
17869
17874
|
`));
|
|
17870
17875
|
} else {
|
|
17871
|
-
console.log(
|
|
17876
|
+
console.log(import_chalk11.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
|
|
17872
17877
|
}
|
|
17873
17878
|
}
|
|
17874
17879
|
|
|
@@ -17877,8 +17882,8 @@ function addCommand(program2) {
|
|
|
17877
17882
|
program2.command("add").description("\u6DFB\u52A0\u65B0\u7684 Codex \u670D\u52A1\u5546(\u4EA4\u4E92\u5F0F)").action(async () => {
|
|
17878
17883
|
try {
|
|
17879
17884
|
const manager = createCodexManager();
|
|
17880
|
-
console.log(
|
|
17881
|
-
const { usePreset } = await
|
|
17885
|
+
console.log(import_chalk12.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Codex \u670D\u52A1\u5546\n"));
|
|
17886
|
+
const { usePreset } = await import_inquirer8.default.prompt([
|
|
17882
17887
|
{
|
|
17883
17888
|
type: "list",
|
|
17884
17889
|
name: "usePreset",
|
|
@@ -17893,7 +17898,7 @@ function addCommand(program2) {
|
|
|
17893
17898
|
let baseUrl;
|
|
17894
17899
|
let apiKey;
|
|
17895
17900
|
if (usePreset) {
|
|
17896
|
-
const { presetName } = await
|
|
17901
|
+
const { presetName } = await import_inquirer8.default.prompt([
|
|
17897
17902
|
{
|
|
17898
17903
|
type: "list",
|
|
17899
17904
|
name: "presetName",
|
|
@@ -17905,7 +17910,7 @@ function addCommand(program2) {
|
|
|
17905
17910
|
}
|
|
17906
17911
|
]);
|
|
17907
17912
|
const preset = CODEX_PRESETS.find((p) => p.name === presetName);
|
|
17908
|
-
console.log(
|
|
17913
|
+
console.log(import_chalk12.default.blue(`
|
|
17909
17914
|
\u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
|
|
17910
17915
|
`));
|
|
17911
17916
|
const input = await promptProviderForm({
|
|
@@ -17917,7 +17922,7 @@ function addCommand(program2) {
|
|
|
17917
17922
|
baseUrl = input.baseUrl;
|
|
17918
17923
|
apiKey = input.apiKey;
|
|
17919
17924
|
} else {
|
|
17920
|
-
const answers = await
|
|
17925
|
+
const answers = await import_inquirer8.default.prompt([
|
|
17921
17926
|
{
|
|
17922
17927
|
type: "input",
|
|
17923
17928
|
name: "name",
|
|
@@ -17956,12 +17961,12 @@ function addCommand(program2) {
|
|
|
17956
17961
|
}
|
|
17957
17962
|
const provider = manager.add({ name, baseUrl, apiKey });
|
|
17958
17963
|
console.log();
|
|
17959
|
-
console.log(
|
|
17964
|
+
console.log(import_chalk12.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
|
|
17960
17965
|
console.log();
|
|
17961
|
-
console.log(` ${
|
|
17962
|
-
console.log(` ${
|
|
17966
|
+
console.log(` ${import_chalk12.default.bold(provider.name)} ${import_chalk12.default.blue("[Codex]")}`);
|
|
17967
|
+
console.log(` ${import_chalk12.default.gray(provider.baseUrl)}`);
|
|
17963
17968
|
console.log();
|
|
17964
|
-
const { switchNow } = await
|
|
17969
|
+
const { switchNow } = await import_inquirer8.default.prompt([
|
|
17965
17970
|
{
|
|
17966
17971
|
type: "confirm",
|
|
17967
17972
|
name: "switchNow",
|
|
@@ -17971,16 +17976,16 @@ function addCommand(program2) {
|
|
|
17971
17976
|
]);
|
|
17972
17977
|
if (switchNow) {
|
|
17973
17978
|
manager.switch(provider.id);
|
|
17974
|
-
console.log(
|
|
17979
|
+
console.log(import_chalk12.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
|
|
17975
17980
|
console.log();
|
|
17976
|
-
console.log(
|
|
17977
|
-
console.log(
|
|
17978
|
-
console.log(
|
|
17981
|
+
console.log(import_chalk12.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
|
|
17982
|
+
console.log(import_chalk12.default.gray(` - ${getCodexConfigPath()}`));
|
|
17983
|
+
console.log(import_chalk12.default.gray(` - ${getCodexAuthPath()}`));
|
|
17979
17984
|
} else {
|
|
17980
|
-
console.log(
|
|
17985
|
+
console.log(import_chalk12.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk12.default.white(` ccman cx use "${provider.name}"`));
|
|
17981
17986
|
}
|
|
17982
17987
|
} catch (error) {
|
|
17983
|
-
console.error(
|
|
17988
|
+
console.error(import_chalk12.default.red(`
|
|
17984
17989
|
\u274C ${error.message}
|
|
17985
17990
|
`));
|
|
17986
17991
|
process.exit(1);
|
|
@@ -17989,7 +17994,7 @@ function addCommand(program2) {
|
|
|
17989
17994
|
}
|
|
17990
17995
|
|
|
17991
17996
|
// src/commands/codex/list.ts
|
|
17992
|
-
var
|
|
17997
|
+
var import_chalk13 = __toESM(require("chalk"));
|
|
17993
17998
|
init_dist4();
|
|
17994
17999
|
function listCommand(program2) {
|
|
17995
18000
|
program2.command("list").alias("ls").description("\u5217\u51FA\u6240\u6709 Codex \u670D\u52A1\u5546").action(async () => {
|
|
@@ -17998,15 +18003,15 @@ function listCommand(program2) {
|
|
|
17998
18003
|
const providers = manager.list();
|
|
17999
18004
|
const current = manager.getCurrent();
|
|
18000
18005
|
if (providers.length === 0) {
|
|
18001
|
-
console.log(
|
|
18002
|
-
console.log(
|
|
18006
|
+
console.log(import_chalk13.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
|
|
18007
|
+
console.log(import_chalk13.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk13.default.white(" ccman cx add\n"));
|
|
18003
18008
|
return;
|
|
18004
18009
|
}
|
|
18005
|
-
console.log(
|
|
18010
|
+
console.log(import_chalk13.default.bold(`
|
|
18006
18011
|
\u{1F4CB} Codex \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
|
|
18007
18012
|
console.log(formatProviderTable(providers, current?.id, "Codex"));
|
|
18008
18013
|
} catch (error) {
|
|
18009
|
-
console.error(
|
|
18014
|
+
console.error(import_chalk13.default.red(`
|
|
18010
18015
|
\u274C ${error.message}
|
|
18011
18016
|
`));
|
|
18012
18017
|
process.exit(1);
|
|
@@ -18015,8 +18020,8 @@ function listCommand(program2) {
|
|
|
18015
18020
|
}
|
|
18016
18021
|
|
|
18017
18022
|
// src/commands/codex/use.ts
|
|
18018
|
-
var
|
|
18019
|
-
var
|
|
18023
|
+
var import_chalk14 = __toESM(require("chalk"));
|
|
18024
|
+
var import_inquirer9 = __toESM(require("inquirer"));
|
|
18020
18025
|
init_dist4();
|
|
18021
18026
|
function useCommand(program2) {
|
|
18022
18027
|
program2.command("use [name]").description("\u5207\u6362 Codex \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18024,8 +18029,8 @@ function useCommand(program2) {
|
|
|
18024
18029
|
const manager = createCodexManager();
|
|
18025
18030
|
const providers = manager.list();
|
|
18026
18031
|
if (providers.length === 0) {
|
|
18027
|
-
console.log(
|
|
18028
|
-
console.log(
|
|
18032
|
+
console.log(import_chalk14.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
|
|
18033
|
+
console.log(import_chalk14.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk14.default.white(" ccman cx add\n"));
|
|
18029
18034
|
return;
|
|
18030
18035
|
}
|
|
18031
18036
|
let targetId;
|
|
@@ -18036,7 +18041,7 @@ function useCommand(program2) {
|
|
|
18036
18041
|
}
|
|
18037
18042
|
targetId = provider2.id;
|
|
18038
18043
|
} else {
|
|
18039
|
-
const { selectedId } = await
|
|
18044
|
+
const { selectedId } = await import_inquirer9.default.prompt([
|
|
18040
18045
|
{
|
|
18041
18046
|
type: "list",
|
|
18042
18047
|
name: "selectedId",
|
|
@@ -18052,23 +18057,23 @@ function useCommand(program2) {
|
|
|
18052
18057
|
manager.switch(targetId);
|
|
18053
18058
|
const provider = manager.get(targetId);
|
|
18054
18059
|
console.log();
|
|
18055
|
-
console.log(
|
|
18060
|
+
console.log(import_chalk14.default.green("\u2705 \u5207\u6362\u6210\u529F"));
|
|
18056
18061
|
console.log();
|
|
18057
|
-
console.log(` ${
|
|
18058
|
-
console.log(` ${
|
|
18062
|
+
console.log(` ${import_chalk14.default.bold(provider.name)} ${import_chalk14.default.blue("[Codex]")}`);
|
|
18063
|
+
console.log(` ${import_chalk14.default.gray(`URL: ${provider.baseUrl}`)}`);
|
|
18059
18064
|
console.log();
|
|
18060
|
-
console.log(
|
|
18061
|
-
console.log(
|
|
18062
|
-
console.log(
|
|
18065
|
+
console.log(import_chalk14.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
|
|
18066
|
+
console.log(import_chalk14.default.gray(` - ${getCodexConfigPath()}`));
|
|
18067
|
+
console.log(import_chalk14.default.gray(` - ${getCodexAuthPath()}`));
|
|
18063
18068
|
console.log();
|
|
18064
18069
|
} catch (error) {
|
|
18065
18070
|
if (error instanceof ProviderNotFoundError) {
|
|
18066
|
-
console.error(
|
|
18071
|
+
console.error(import_chalk14.default.red(`
|
|
18067
18072
|
\u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728: ${error.message}
|
|
18068
18073
|
`));
|
|
18069
|
-
console.log(
|
|
18074
|
+
console.log(import_chalk14.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk14.default.white(" ccman cx list\n"));
|
|
18070
18075
|
} else {
|
|
18071
|
-
console.error(
|
|
18076
|
+
console.error(import_chalk14.default.red(`
|
|
18072
18077
|
\u274C ${error.message}
|
|
18073
18078
|
`));
|
|
18074
18079
|
}
|
|
@@ -18078,7 +18083,7 @@ function useCommand(program2) {
|
|
|
18078
18083
|
}
|
|
18079
18084
|
|
|
18080
18085
|
// src/commands/codex/current.ts
|
|
18081
|
-
var
|
|
18086
|
+
var import_chalk15 = __toESM(require("chalk"));
|
|
18082
18087
|
init_dist4();
|
|
18083
18088
|
function currentCommand(program2) {
|
|
18084
18089
|
program2.command("current").description("\u663E\u793A\u5F53\u524D\u4F7F\u7528\u7684 Codex \u670D\u52A1\u5546").action(async () => {
|
|
@@ -18086,21 +18091,21 @@ function currentCommand(program2) {
|
|
|
18086
18091
|
const manager = createCodexManager();
|
|
18087
18092
|
const current = manager.getCurrent();
|
|
18088
18093
|
if (!current) {
|
|
18089
|
-
console.log(
|
|
18090
|
-
console.log(
|
|
18094
|
+
console.log(import_chalk15.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Codex \u670D\u52A1\u5546\n"));
|
|
18095
|
+
console.log(import_chalk15.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk15.default.white(" ccman cx use\n"));
|
|
18091
18096
|
return;
|
|
18092
18097
|
}
|
|
18093
|
-
console.log(
|
|
18094
|
-
console.log(` ${
|
|
18095
|
-
console.log(` ${
|
|
18096
|
-
console.log(` ${
|
|
18098
|
+
console.log(import_chalk15.default.bold("\n\u{1F4CD} \u5F53\u524D Codex \u670D\u52A1\u5546\n"));
|
|
18099
|
+
console.log(` ${import_chalk15.default.green.bold(current.name)}`);
|
|
18100
|
+
console.log(` ${import_chalk15.default.gray(`ID: ${current.id}`)}`);
|
|
18101
|
+
console.log(` ${import_chalk15.default.gray(`URL: ${current.baseUrl}`)}`);
|
|
18097
18102
|
if (current.lastUsedAt) {
|
|
18098
18103
|
const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
|
|
18099
|
-
console.log(` ${
|
|
18104
|
+
console.log(` ${import_chalk15.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
|
|
18100
18105
|
}
|
|
18101
18106
|
console.log();
|
|
18102
18107
|
} catch (error) {
|
|
18103
|
-
console.error(
|
|
18108
|
+
console.error(import_chalk15.default.red(`
|
|
18104
18109
|
\u274C ${error.message}
|
|
18105
18110
|
`));
|
|
18106
18111
|
process.exit(1);
|
|
@@ -18109,8 +18114,8 @@ function currentCommand(program2) {
|
|
|
18109
18114
|
}
|
|
18110
18115
|
|
|
18111
18116
|
// src/commands/codex/remove.ts
|
|
18112
|
-
var
|
|
18113
|
-
var
|
|
18117
|
+
var import_chalk16 = __toESM(require("chalk"));
|
|
18118
|
+
var import_inquirer10 = __toESM(require("inquirer"));
|
|
18114
18119
|
init_dist4();
|
|
18115
18120
|
function removeCommand(program2) {
|
|
18116
18121
|
program2.command("remove [name]").alias("rm").description("\u5220\u9664 Codex \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18118,7 +18123,7 @@ function removeCommand(program2) {
|
|
|
18118
18123
|
const manager = createCodexManager();
|
|
18119
18124
|
const providers = manager.list();
|
|
18120
18125
|
if (providers.length === 0) {
|
|
18121
|
-
console.log(
|
|
18126
|
+
console.log(import_chalk16.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
|
|
18122
18127
|
return;
|
|
18123
18128
|
}
|
|
18124
18129
|
let targetId;
|
|
@@ -18131,7 +18136,7 @@ function removeCommand(program2) {
|
|
|
18131
18136
|
targetId = provider.id;
|
|
18132
18137
|
targetName = provider.name;
|
|
18133
18138
|
} else {
|
|
18134
|
-
const { selectedId } = await
|
|
18139
|
+
const { selectedId } = await import_inquirer10.default.prompt([
|
|
18135
18140
|
{
|
|
18136
18141
|
type: "list",
|
|
18137
18142
|
name: "selectedId",
|
|
@@ -18146,7 +18151,7 @@ function removeCommand(program2) {
|
|
|
18146
18151
|
targetId = selectedId;
|
|
18147
18152
|
targetName = provider.name;
|
|
18148
18153
|
}
|
|
18149
|
-
const { confirmed } = await
|
|
18154
|
+
const { confirmed } = await import_inquirer10.default.prompt([
|
|
18150
18155
|
{
|
|
18151
18156
|
type: "confirm",
|
|
18152
18157
|
name: "confirmed",
|
|
@@ -18155,21 +18160,21 @@ function removeCommand(program2) {
|
|
|
18155
18160
|
}
|
|
18156
18161
|
]);
|
|
18157
18162
|
if (!confirmed) {
|
|
18158
|
-
console.log(
|
|
18163
|
+
console.log(import_chalk16.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
18159
18164
|
return;
|
|
18160
18165
|
}
|
|
18161
18166
|
manager.remove(targetId);
|
|
18162
18167
|
console.log();
|
|
18163
|
-
console.log(
|
|
18168
|
+
console.log(import_chalk16.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
|
|
18164
18169
|
console.log();
|
|
18165
18170
|
} catch (error) {
|
|
18166
18171
|
if (error instanceof ProviderNotFoundError) {
|
|
18167
|
-
console.error(
|
|
18172
|
+
console.error(import_chalk16.default.red(`
|
|
18168
18173
|
\u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728
|
|
18169
18174
|
`));
|
|
18170
|
-
console.log(
|
|
18175
|
+
console.log(import_chalk16.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk16.default.white(" ccman cx list\n"));
|
|
18171
18176
|
} else {
|
|
18172
|
-
console.error(
|
|
18177
|
+
console.error(import_chalk16.default.red(`
|
|
18173
18178
|
\u274C ${error.message}
|
|
18174
18179
|
`));
|
|
18175
18180
|
}
|
|
@@ -18179,8 +18184,8 @@ function removeCommand(program2) {
|
|
|
18179
18184
|
}
|
|
18180
18185
|
|
|
18181
18186
|
// src/commands/codex/edit.ts
|
|
18182
|
-
var
|
|
18183
|
-
var
|
|
18187
|
+
var import_chalk17 = __toESM(require("chalk"));
|
|
18188
|
+
var import_inquirer11 = __toESM(require("inquirer"));
|
|
18184
18189
|
init_dist4();
|
|
18185
18190
|
function editCommand(program2) {
|
|
18186
18191
|
program2.command("edit [name]").description("\u7F16\u8F91 Codex \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18188,7 +18193,7 @@ function editCommand(program2) {
|
|
|
18188
18193
|
const manager = createCodexManager();
|
|
18189
18194
|
const providers = manager.list();
|
|
18190
18195
|
if (providers.length === 0) {
|
|
18191
|
-
console.log(
|
|
18196
|
+
console.log(import_chalk17.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
|
|
18192
18197
|
return;
|
|
18193
18198
|
}
|
|
18194
18199
|
let targetId;
|
|
@@ -18199,7 +18204,7 @@ function editCommand(program2) {
|
|
|
18199
18204
|
}
|
|
18200
18205
|
targetId = provider2.id;
|
|
18201
18206
|
} else {
|
|
18202
|
-
const { selectedId } = await
|
|
18207
|
+
const { selectedId } = await import_inquirer11.default.prompt([
|
|
18203
18208
|
{
|
|
18204
18209
|
type: "list",
|
|
18205
18210
|
name: "selectedId",
|
|
@@ -18213,9 +18218,9 @@ function editCommand(program2) {
|
|
|
18213
18218
|
targetId = selectedId;
|
|
18214
18219
|
}
|
|
18215
18220
|
const provider = manager.get(targetId);
|
|
18216
|
-
console.log(
|
|
18217
|
-
console.log(
|
|
18218
|
-
const answers = await
|
|
18221
|
+
console.log(import_chalk17.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
|
|
18222
|
+
console.log(import_chalk17.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
|
|
18223
|
+
const answers = await import_inquirer11.default.prompt([
|
|
18219
18224
|
{
|
|
18220
18225
|
type: "input",
|
|
18221
18226
|
name: "name",
|
|
@@ -18246,19 +18251,19 @@ function editCommand(program2) {
|
|
|
18246
18251
|
if (answers.baseUrl && answers.baseUrl !== provider.baseUrl) updates.baseUrl = answers.baseUrl;
|
|
18247
18252
|
if (answers.apiKey) updates.apiKey = answers.apiKey;
|
|
18248
18253
|
if (Object.keys(updates).length === 0) {
|
|
18249
|
-
console.log(
|
|
18254
|
+
console.log(import_chalk17.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
|
|
18250
18255
|
return;
|
|
18251
18256
|
}
|
|
18252
18257
|
const updated = manager.edit(targetId, updates);
|
|
18253
18258
|
console.log();
|
|
18254
|
-
console.log(
|
|
18259
|
+
console.log(import_chalk17.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
|
|
18255
18260
|
console.log();
|
|
18256
|
-
console.log(` ${
|
|
18257
|
-
console.log(` ${
|
|
18258
|
-
console.log(` ${
|
|
18261
|
+
console.log(` ${import_chalk17.default.bold(updated.name)} ${import_chalk17.default.blue("[Codex]")}`);
|
|
18262
|
+
console.log(` ${import_chalk17.default.gray(`ID: ${updated.id}`)}`);
|
|
18263
|
+
console.log(` ${import_chalk17.default.gray(`URL: ${updated.baseUrl}`)}`);
|
|
18259
18264
|
console.log();
|
|
18260
18265
|
} catch (error) {
|
|
18261
|
-
console.error(
|
|
18266
|
+
console.error(import_chalk17.default.red(`
|
|
18262
18267
|
\u274C ${error.message}
|
|
18263
18268
|
`));
|
|
18264
18269
|
process.exit(1);
|
|
@@ -18267,8 +18272,8 @@ function editCommand(program2) {
|
|
|
18267
18272
|
}
|
|
18268
18273
|
|
|
18269
18274
|
// src/commands/codex/clone.ts
|
|
18270
|
-
var
|
|
18271
|
-
var
|
|
18275
|
+
var import_chalk18 = __toESM(require("chalk"));
|
|
18276
|
+
var import_inquirer12 = __toESM(require("inquirer"));
|
|
18272
18277
|
init_dist4();
|
|
18273
18278
|
function cloneCommand(program2) {
|
|
18274
18279
|
program2.command("clone [source-name] [new-name]").description("\u514B\u9686 Codex \u670D\u52A1\u5546").action(async (sourceName, newName) => {
|
|
@@ -18276,7 +18281,7 @@ function cloneCommand(program2) {
|
|
|
18276
18281
|
const manager = createCodexManager();
|
|
18277
18282
|
const providers = manager.list();
|
|
18278
18283
|
if (providers.length === 0) {
|
|
18279
|
-
console.log(
|
|
18284
|
+
console.log(import_chalk18.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
|
|
18280
18285
|
return;
|
|
18281
18286
|
}
|
|
18282
18287
|
let sourceId;
|
|
@@ -18287,7 +18292,7 @@ function cloneCommand(program2) {
|
|
|
18287
18292
|
}
|
|
18288
18293
|
sourceId = provider.id;
|
|
18289
18294
|
} else {
|
|
18290
|
-
const { selectedId } = await
|
|
18295
|
+
const { selectedId } = await import_inquirer12.default.prompt([
|
|
18291
18296
|
{
|
|
18292
18297
|
type: "list",
|
|
18293
18298
|
name: "selectedId",
|
|
@@ -18305,7 +18310,7 @@ function cloneCommand(program2) {
|
|
|
18305
18310
|
if (newName) {
|
|
18306
18311
|
cloned = manager.clone(sourceId, newName);
|
|
18307
18312
|
} else {
|
|
18308
|
-
console.log(
|
|
18313
|
+
console.log(import_chalk18.default.blue(`
|
|
18309
18314
|
\u514B\u9686\u81EA: ${source.name}
|
|
18310
18315
|
`));
|
|
18311
18316
|
const input = await promptProviderForm({
|
|
@@ -18316,14 +18321,14 @@ function cloneCommand(program2) {
|
|
|
18316
18321
|
cloned = manager.add(input);
|
|
18317
18322
|
}
|
|
18318
18323
|
console.log();
|
|
18319
|
-
console.log(
|
|
18324
|
+
console.log(import_chalk18.default.green("\u2705 \u514B\u9686\u6210\u529F"));
|
|
18320
18325
|
console.log();
|
|
18321
|
-
console.log(` ${
|
|
18322
|
-
console.log(` ${
|
|
18323
|
-
console.log(` ${
|
|
18326
|
+
console.log(` ${import_chalk18.default.bold(cloned.name)} ${import_chalk18.default.blue("[Codex]")}`);
|
|
18327
|
+
console.log(` ${import_chalk18.default.gray(`ID: ${cloned.id}`)}`);
|
|
18328
|
+
console.log(` ${import_chalk18.default.gray(`URL: ${cloned.baseUrl}`)}`);
|
|
18324
18329
|
console.log();
|
|
18325
18330
|
} catch (error) {
|
|
18326
|
-
console.error(
|
|
18331
|
+
console.error(import_chalk18.default.red(`
|
|
18327
18332
|
\u274C ${error.message}
|
|
18328
18333
|
`));
|
|
18329
18334
|
process.exit(1);
|
|
@@ -18343,15 +18348,15 @@ function createCodexCommands(program2) {
|
|
|
18343
18348
|
}
|
|
18344
18349
|
|
|
18345
18350
|
// src/commands/claude/add.ts
|
|
18346
|
-
var
|
|
18347
|
-
var
|
|
18351
|
+
var import_chalk19 = __toESM(require("chalk"));
|
|
18352
|
+
var import_inquirer13 = __toESM(require("inquirer"));
|
|
18348
18353
|
init_dist4();
|
|
18349
18354
|
function addCommand2(program2) {
|
|
18350
18355
|
program2.command("add").description("\u6DFB\u52A0\u65B0\u7684 Claude Code \u670D\u52A1\u5546(\u4EA4\u4E92\u5F0F)").action(async () => {
|
|
18351
18356
|
try {
|
|
18352
18357
|
const manager = createClaudeManager();
|
|
18353
|
-
console.log(
|
|
18354
|
-
const { usePreset } = await
|
|
18358
|
+
console.log(import_chalk19.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18359
|
+
const { usePreset } = await import_inquirer13.default.prompt([
|
|
18355
18360
|
{
|
|
18356
18361
|
type: "list",
|
|
18357
18362
|
name: "usePreset",
|
|
@@ -18366,7 +18371,7 @@ function addCommand2(program2) {
|
|
|
18366
18371
|
let baseUrl;
|
|
18367
18372
|
let apiKey;
|
|
18368
18373
|
if (usePreset) {
|
|
18369
|
-
const { presetName } = await
|
|
18374
|
+
const { presetName } = await import_inquirer13.default.prompt([
|
|
18370
18375
|
{
|
|
18371
18376
|
type: "list",
|
|
18372
18377
|
name: "presetName",
|
|
@@ -18378,7 +18383,7 @@ function addCommand2(program2) {
|
|
|
18378
18383
|
}
|
|
18379
18384
|
]);
|
|
18380
18385
|
const preset = CC_PRESETS.find((p) => p.name === presetName);
|
|
18381
|
-
console.log(
|
|
18386
|
+
console.log(import_chalk19.default.blue(`
|
|
18382
18387
|
\u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
|
|
18383
18388
|
`));
|
|
18384
18389
|
const input = await promptProviderForm({
|
|
@@ -18390,7 +18395,7 @@ function addCommand2(program2) {
|
|
|
18390
18395
|
baseUrl = input.baseUrl;
|
|
18391
18396
|
apiKey = input.apiKey;
|
|
18392
18397
|
} else {
|
|
18393
|
-
const answers = await
|
|
18398
|
+
const answers = await import_inquirer13.default.prompt([
|
|
18394
18399
|
{
|
|
18395
18400
|
type: "input",
|
|
18396
18401
|
name: "name",
|
|
@@ -18429,12 +18434,12 @@ function addCommand2(program2) {
|
|
|
18429
18434
|
}
|
|
18430
18435
|
const provider = manager.add({ name, baseUrl, apiKey });
|
|
18431
18436
|
console.log();
|
|
18432
|
-
console.log(
|
|
18437
|
+
console.log(import_chalk19.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
|
|
18433
18438
|
console.log();
|
|
18434
|
-
console.log(` ${
|
|
18435
|
-
console.log(` ${
|
|
18439
|
+
console.log(` ${import_chalk19.default.bold(provider.name)} ${import_chalk19.default.blue("[Claude Code]")}`);
|
|
18440
|
+
console.log(` ${import_chalk19.default.gray(provider.baseUrl)}`);
|
|
18436
18441
|
console.log();
|
|
18437
|
-
const { switchNow } = await
|
|
18442
|
+
const { switchNow } = await import_inquirer13.default.prompt([
|
|
18438
18443
|
{
|
|
18439
18444
|
type: "confirm",
|
|
18440
18445
|
name: "switchNow",
|
|
@@ -18444,15 +18449,15 @@ function addCommand2(program2) {
|
|
|
18444
18449
|
]);
|
|
18445
18450
|
if (switchNow) {
|
|
18446
18451
|
manager.switch(provider.id);
|
|
18447
|
-
console.log(
|
|
18452
|
+
console.log(import_chalk19.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
|
|
18448
18453
|
console.log();
|
|
18449
|
-
console.log(
|
|
18450
|
-
console.log(
|
|
18454
|
+
console.log(import_chalk19.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
|
|
18455
|
+
console.log(import_chalk19.default.gray(` - ${getClaudeConfigPath()}`));
|
|
18451
18456
|
} else {
|
|
18452
|
-
console.log(
|
|
18457
|
+
console.log(import_chalk19.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk19.default.white(` ccman cc use "${provider.name}"`));
|
|
18453
18458
|
}
|
|
18454
18459
|
} catch (error) {
|
|
18455
|
-
console.error(
|
|
18460
|
+
console.error(import_chalk19.default.red(`
|
|
18456
18461
|
\u274C ${error.message}
|
|
18457
18462
|
`));
|
|
18458
18463
|
process.exit(1);
|
|
@@ -18461,7 +18466,7 @@ function addCommand2(program2) {
|
|
|
18461
18466
|
}
|
|
18462
18467
|
|
|
18463
18468
|
// src/commands/claude/list.ts
|
|
18464
|
-
var
|
|
18469
|
+
var import_chalk20 = __toESM(require("chalk"));
|
|
18465
18470
|
init_dist4();
|
|
18466
18471
|
function listCommand2(program2) {
|
|
18467
18472
|
program2.command("list").alias("ls").description("\u5217\u51FA\u6240\u6709 Claude Code \u670D\u52A1\u5546").action(async () => {
|
|
@@ -18470,15 +18475,15 @@ function listCommand2(program2) {
|
|
|
18470
18475
|
const providers = manager.list();
|
|
18471
18476
|
const current = manager.getCurrent();
|
|
18472
18477
|
if (providers.length === 0) {
|
|
18473
|
-
console.log(
|
|
18474
|
-
console.log(
|
|
18478
|
+
console.log(import_chalk20.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18479
|
+
console.log(import_chalk20.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk20.default.white(" ccman cc add\n"));
|
|
18475
18480
|
return;
|
|
18476
18481
|
}
|
|
18477
|
-
console.log(
|
|
18482
|
+
console.log(import_chalk20.default.bold(`
|
|
18478
18483
|
\u{1F4CB} Claude Code \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
|
|
18479
18484
|
console.log(formatProviderTable(providers, current?.id, "Claude Code"));
|
|
18480
18485
|
} catch (error) {
|
|
18481
|
-
console.error(
|
|
18486
|
+
console.error(import_chalk20.default.red(`
|
|
18482
18487
|
\u274C ${error.message}
|
|
18483
18488
|
`));
|
|
18484
18489
|
process.exit(1);
|
|
@@ -18487,8 +18492,8 @@ function listCommand2(program2) {
|
|
|
18487
18492
|
}
|
|
18488
18493
|
|
|
18489
18494
|
// src/commands/claude/use.ts
|
|
18490
|
-
var
|
|
18491
|
-
var
|
|
18495
|
+
var import_chalk21 = __toESM(require("chalk"));
|
|
18496
|
+
var import_inquirer14 = __toESM(require("inquirer"));
|
|
18492
18497
|
init_dist4();
|
|
18493
18498
|
function useCommand2(program2) {
|
|
18494
18499
|
program2.command("use [name]").description("\u5207\u6362 Claude Code \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18496,8 +18501,8 @@ function useCommand2(program2) {
|
|
|
18496
18501
|
const manager = createClaudeManager();
|
|
18497
18502
|
const providers = manager.list();
|
|
18498
18503
|
if (providers.length === 0) {
|
|
18499
|
-
console.log(
|
|
18500
|
-
console.log(
|
|
18504
|
+
console.log(import_chalk21.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18505
|
+
console.log(import_chalk21.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk21.default.white(" ccman cc add\n"));
|
|
18501
18506
|
return;
|
|
18502
18507
|
}
|
|
18503
18508
|
let targetId;
|
|
@@ -18508,7 +18513,7 @@ function useCommand2(program2) {
|
|
|
18508
18513
|
}
|
|
18509
18514
|
targetId = provider2.id;
|
|
18510
18515
|
} else {
|
|
18511
|
-
const { selectedId } = await
|
|
18516
|
+
const { selectedId } = await import_inquirer14.default.prompt([
|
|
18512
18517
|
{
|
|
18513
18518
|
type: "list",
|
|
18514
18519
|
name: "selectedId",
|
|
@@ -18524,22 +18529,22 @@ function useCommand2(program2) {
|
|
|
18524
18529
|
manager.switch(targetId);
|
|
18525
18530
|
const provider = manager.get(targetId);
|
|
18526
18531
|
console.log();
|
|
18527
|
-
console.log(
|
|
18532
|
+
console.log(import_chalk21.default.green("\u2705 \u5207\u6362\u6210\u529F"));
|
|
18528
18533
|
console.log();
|
|
18529
|
-
console.log(` ${
|
|
18530
|
-
console.log(` ${
|
|
18534
|
+
console.log(` ${import_chalk21.default.bold(provider.name)} ${import_chalk21.default.blue("[Claude Code]")}`);
|
|
18535
|
+
console.log(` ${import_chalk21.default.gray(`URL: ${provider.baseUrl}`)}`);
|
|
18531
18536
|
console.log();
|
|
18532
|
-
console.log(
|
|
18533
|
-
console.log(
|
|
18537
|
+
console.log(import_chalk21.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
|
|
18538
|
+
console.log(import_chalk21.default.gray(` - ${getClaudeConfigPath()}`));
|
|
18534
18539
|
console.log();
|
|
18535
18540
|
} catch (error) {
|
|
18536
18541
|
if (error instanceof ProviderNotFoundError) {
|
|
18537
|
-
console.error(
|
|
18542
|
+
console.error(import_chalk21.default.red(`
|
|
18538
18543
|
\u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728: ${error.message}
|
|
18539
18544
|
`));
|
|
18540
|
-
console.log(
|
|
18545
|
+
console.log(import_chalk21.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk21.default.white(" ccman cc list\n"));
|
|
18541
18546
|
} else {
|
|
18542
|
-
console.error(
|
|
18547
|
+
console.error(import_chalk21.default.red(`
|
|
18543
18548
|
\u274C ${error.message}
|
|
18544
18549
|
`));
|
|
18545
18550
|
}
|
|
@@ -18549,7 +18554,7 @@ function useCommand2(program2) {
|
|
|
18549
18554
|
}
|
|
18550
18555
|
|
|
18551
18556
|
// src/commands/claude/current.ts
|
|
18552
|
-
var
|
|
18557
|
+
var import_chalk22 = __toESM(require("chalk"));
|
|
18553
18558
|
init_dist4();
|
|
18554
18559
|
function currentCommand2(program2) {
|
|
18555
18560
|
program2.command("current").description("\u663E\u793A\u5F53\u524D\u4F7F\u7528\u7684 Claude Code \u670D\u52A1\u5546").action(async () => {
|
|
@@ -18557,21 +18562,21 @@ function currentCommand2(program2) {
|
|
|
18557
18562
|
const manager = createClaudeManager();
|
|
18558
18563
|
const current = manager.getCurrent();
|
|
18559
18564
|
if (!current) {
|
|
18560
|
-
console.log(
|
|
18561
|
-
console.log(
|
|
18565
|
+
console.log(import_chalk22.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Claude Code \u670D\u52A1\u5546\n"));
|
|
18566
|
+
console.log(import_chalk22.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk22.default.white(" ccman cc use\n"));
|
|
18562
18567
|
return;
|
|
18563
18568
|
}
|
|
18564
|
-
console.log(
|
|
18565
|
-
console.log(` ${
|
|
18566
|
-
console.log(` ${
|
|
18567
|
-
console.log(` ${
|
|
18569
|
+
console.log(import_chalk22.default.bold("\n\u{1F4CD} \u5F53\u524D Claude Code \u670D\u52A1\u5546\n"));
|
|
18570
|
+
console.log(` ${import_chalk22.default.green.bold(current.name)}`);
|
|
18571
|
+
console.log(` ${import_chalk22.default.gray(`ID: ${current.id}`)}`);
|
|
18572
|
+
console.log(` ${import_chalk22.default.gray(`URL: ${current.baseUrl}`)}`);
|
|
18568
18573
|
if (current.lastUsedAt) {
|
|
18569
18574
|
const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
|
|
18570
|
-
console.log(` ${
|
|
18575
|
+
console.log(` ${import_chalk22.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
|
|
18571
18576
|
}
|
|
18572
18577
|
console.log();
|
|
18573
18578
|
} catch (error) {
|
|
18574
|
-
console.error(
|
|
18579
|
+
console.error(import_chalk22.default.red(`
|
|
18575
18580
|
\u274C ${error.message}
|
|
18576
18581
|
`));
|
|
18577
18582
|
process.exit(1);
|
|
@@ -18580,8 +18585,8 @@ function currentCommand2(program2) {
|
|
|
18580
18585
|
}
|
|
18581
18586
|
|
|
18582
18587
|
// src/commands/claude/remove.ts
|
|
18583
|
-
var
|
|
18584
|
-
var
|
|
18588
|
+
var import_chalk23 = __toESM(require("chalk"));
|
|
18589
|
+
var import_inquirer15 = __toESM(require("inquirer"));
|
|
18585
18590
|
init_dist4();
|
|
18586
18591
|
function removeCommand2(program2) {
|
|
18587
18592
|
program2.command("remove [name]").alias("rm").description("\u5220\u9664 Claude Code \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18589,7 +18594,7 @@ function removeCommand2(program2) {
|
|
|
18589
18594
|
const manager = createClaudeManager();
|
|
18590
18595
|
const providers = manager.list();
|
|
18591
18596
|
if (providers.length === 0) {
|
|
18592
|
-
console.log(
|
|
18597
|
+
console.log(import_chalk23.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18593
18598
|
return;
|
|
18594
18599
|
}
|
|
18595
18600
|
let targetId;
|
|
@@ -18602,7 +18607,7 @@ function removeCommand2(program2) {
|
|
|
18602
18607
|
targetId = provider.id;
|
|
18603
18608
|
targetName = provider.name;
|
|
18604
18609
|
} else {
|
|
18605
|
-
const { selectedId } = await
|
|
18610
|
+
const { selectedId } = await import_inquirer15.default.prompt([
|
|
18606
18611
|
{
|
|
18607
18612
|
type: "list",
|
|
18608
18613
|
name: "selectedId",
|
|
@@ -18617,7 +18622,7 @@ function removeCommand2(program2) {
|
|
|
18617
18622
|
targetId = selectedId;
|
|
18618
18623
|
targetName = provider.name;
|
|
18619
18624
|
}
|
|
18620
|
-
const { confirmed } = await
|
|
18625
|
+
const { confirmed } = await import_inquirer15.default.prompt([
|
|
18621
18626
|
{
|
|
18622
18627
|
type: "confirm",
|
|
18623
18628
|
name: "confirmed",
|
|
@@ -18626,21 +18631,21 @@ function removeCommand2(program2) {
|
|
|
18626
18631
|
}
|
|
18627
18632
|
]);
|
|
18628
18633
|
if (!confirmed) {
|
|
18629
|
-
console.log(
|
|
18634
|
+
console.log(import_chalk23.default.gray("\n\u5DF2\u53D6\u6D88\n"));
|
|
18630
18635
|
return;
|
|
18631
18636
|
}
|
|
18632
18637
|
manager.remove(targetId);
|
|
18633
18638
|
console.log();
|
|
18634
|
-
console.log(
|
|
18639
|
+
console.log(import_chalk23.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
|
|
18635
18640
|
console.log();
|
|
18636
18641
|
} catch (error) {
|
|
18637
18642
|
if (error instanceof ProviderNotFoundError) {
|
|
18638
|
-
console.error(
|
|
18643
|
+
console.error(import_chalk23.default.red(`
|
|
18639
18644
|
\u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728
|
|
18640
18645
|
`));
|
|
18641
|
-
console.log(
|
|
18646
|
+
console.log(import_chalk23.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk23.default.white(" ccman cc list\n"));
|
|
18642
18647
|
} else {
|
|
18643
|
-
console.error(
|
|
18648
|
+
console.error(import_chalk23.default.red(`
|
|
18644
18649
|
\u274C ${error.message}
|
|
18645
18650
|
`));
|
|
18646
18651
|
}
|
|
@@ -18650,8 +18655,8 @@ function removeCommand2(program2) {
|
|
|
18650
18655
|
}
|
|
18651
18656
|
|
|
18652
18657
|
// src/commands/claude/edit.ts
|
|
18653
|
-
var
|
|
18654
|
-
var
|
|
18658
|
+
var import_chalk24 = __toESM(require("chalk"));
|
|
18659
|
+
var import_inquirer16 = __toESM(require("inquirer"));
|
|
18655
18660
|
init_dist4();
|
|
18656
18661
|
function editCommand2(program2) {
|
|
18657
18662
|
program2.command("edit [name]").description("\u7F16\u8F91 Claude Code \u670D\u52A1\u5546").action(async (name) => {
|
|
@@ -18659,7 +18664,7 @@ function editCommand2(program2) {
|
|
|
18659
18664
|
const manager = createClaudeManager();
|
|
18660
18665
|
const providers = manager.list();
|
|
18661
18666
|
if (providers.length === 0) {
|
|
18662
|
-
console.log(
|
|
18667
|
+
console.log(import_chalk24.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18663
18668
|
return;
|
|
18664
18669
|
}
|
|
18665
18670
|
let targetId;
|
|
@@ -18670,7 +18675,7 @@ function editCommand2(program2) {
|
|
|
18670
18675
|
}
|
|
18671
18676
|
targetId = provider2.id;
|
|
18672
18677
|
} else {
|
|
18673
|
-
const { selectedId } = await
|
|
18678
|
+
const { selectedId } = await import_inquirer16.default.prompt([
|
|
18674
18679
|
{
|
|
18675
18680
|
type: "list",
|
|
18676
18681
|
name: "selectedId",
|
|
@@ -18684,9 +18689,9 @@ function editCommand2(program2) {
|
|
|
18684
18689
|
targetId = selectedId;
|
|
18685
18690
|
}
|
|
18686
18691
|
const provider = manager.get(targetId);
|
|
18687
|
-
console.log(
|
|
18688
|
-
console.log(
|
|
18689
|
-
const answers = await
|
|
18692
|
+
console.log(import_chalk24.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
|
|
18693
|
+
console.log(import_chalk24.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
|
|
18694
|
+
const answers = await import_inquirer16.default.prompt([
|
|
18690
18695
|
{
|
|
18691
18696
|
type: "input",
|
|
18692
18697
|
name: "name",
|
|
@@ -18717,19 +18722,19 @@ function editCommand2(program2) {
|
|
|
18717
18722
|
if (answers.baseUrl && answers.baseUrl !== provider.baseUrl) updates.baseUrl = answers.baseUrl;
|
|
18718
18723
|
if (answers.apiKey) updates.apiKey = answers.apiKey;
|
|
18719
18724
|
if (Object.keys(updates).length === 0) {
|
|
18720
|
-
console.log(
|
|
18725
|
+
console.log(import_chalk24.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
|
|
18721
18726
|
return;
|
|
18722
18727
|
}
|
|
18723
18728
|
const updated = manager.edit(targetId, updates);
|
|
18724
18729
|
console.log();
|
|
18725
|
-
console.log(
|
|
18730
|
+
console.log(import_chalk24.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
|
|
18726
18731
|
console.log();
|
|
18727
|
-
console.log(` ${
|
|
18728
|
-
console.log(` ${
|
|
18729
|
-
console.log(` ${
|
|
18732
|
+
console.log(` ${import_chalk24.default.bold(updated.name)} ${import_chalk24.default.blue("[Claude Code]")}`);
|
|
18733
|
+
console.log(` ${import_chalk24.default.gray(`ID: ${updated.id}`)}`);
|
|
18734
|
+
console.log(` ${import_chalk24.default.gray(`URL: ${updated.baseUrl}`)}`);
|
|
18730
18735
|
console.log();
|
|
18731
18736
|
} catch (error) {
|
|
18732
|
-
console.error(
|
|
18737
|
+
console.error(import_chalk24.default.red(`
|
|
18733
18738
|
\u274C ${error.message}
|
|
18734
18739
|
`));
|
|
18735
18740
|
process.exit(1);
|
|
@@ -18738,8 +18743,8 @@ function editCommand2(program2) {
|
|
|
18738
18743
|
}
|
|
18739
18744
|
|
|
18740
18745
|
// src/commands/claude/clone.ts
|
|
18741
|
-
var
|
|
18742
|
-
var
|
|
18746
|
+
var import_chalk25 = __toESM(require("chalk"));
|
|
18747
|
+
var import_inquirer17 = __toESM(require("inquirer"));
|
|
18743
18748
|
init_dist4();
|
|
18744
18749
|
function cloneCommand2(program2) {
|
|
18745
18750
|
program2.command("clone [source-name] [new-name]").description("\u514B\u9686 Claude Code \u670D\u52A1\u5546").action(async (sourceName, newName) => {
|
|
@@ -18747,7 +18752,7 @@ function cloneCommand2(program2) {
|
|
|
18747
18752
|
const manager = createClaudeManager();
|
|
18748
18753
|
const providers = manager.list();
|
|
18749
18754
|
if (providers.length === 0) {
|
|
18750
|
-
console.log(
|
|
18755
|
+
console.log(import_chalk25.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
|
|
18751
18756
|
return;
|
|
18752
18757
|
}
|
|
18753
18758
|
let sourceId;
|
|
@@ -18758,7 +18763,7 @@ function cloneCommand2(program2) {
|
|
|
18758
18763
|
}
|
|
18759
18764
|
sourceId = provider.id;
|
|
18760
18765
|
} else {
|
|
18761
|
-
const { selectedId } = await
|
|
18766
|
+
const { selectedId } = await import_inquirer17.default.prompt([
|
|
18762
18767
|
{
|
|
18763
18768
|
type: "list",
|
|
18764
18769
|
name: "selectedId",
|
|
@@ -18776,7 +18781,7 @@ function cloneCommand2(program2) {
|
|
|
18776
18781
|
if (newName) {
|
|
18777
18782
|
cloned = manager.clone(sourceId, newName);
|
|
18778
18783
|
} else {
|
|
18779
|
-
console.log(
|
|
18784
|
+
console.log(import_chalk25.default.blue(`
|
|
18780
18785
|
\u514B\u9686\u81EA: ${source.name}
|
|
18781
18786
|
`));
|
|
18782
18787
|
const input = await promptProviderForm({
|
|
@@ -18787,14 +18792,14 @@ function cloneCommand2(program2) {
|
|
|
18787
18792
|
cloned = manager.add(input);
|
|
18788
18793
|
}
|
|
18789
18794
|
console.log();
|
|
18790
|
-
console.log(
|
|
18795
|
+
console.log(import_chalk25.default.green("\u2705 \u514B\u9686\u6210\u529F"));
|
|
18791
18796
|
console.log();
|
|
18792
|
-
console.log(` ${
|
|
18793
|
-
console.log(` ${
|
|
18794
|
-
console.log(` ${
|
|
18797
|
+
console.log(` ${import_chalk25.default.bold(cloned.name)} ${import_chalk25.default.blue("[Claude Code]")}`);
|
|
18798
|
+
console.log(` ${import_chalk25.default.gray(`ID: ${cloned.id}`)}`);
|
|
18799
|
+
console.log(` ${import_chalk25.default.gray(`URL: ${cloned.baseUrl}`)}`);
|
|
18795
18800
|
console.log();
|
|
18796
18801
|
} catch (error) {
|
|
18797
|
-
console.error(
|
|
18802
|
+
console.error(import_chalk25.default.red(`
|
|
18798
18803
|
\u274C ${error.message}
|
|
18799
18804
|
`));
|
|
18800
18805
|
process.exit(1);
|
|
@@ -18814,43 +18819,43 @@ function createClaudeCommands(program2) {
|
|
|
18814
18819
|
}
|
|
18815
18820
|
|
|
18816
18821
|
// src/index.ts
|
|
18817
|
-
|
|
18822
|
+
init_sync();
|
|
18818
18823
|
|
|
18819
18824
|
// src/commands/export.ts
|
|
18820
|
-
var
|
|
18825
|
+
var import_chalk26 = __toESM(require("chalk"));
|
|
18821
18826
|
var import_path19 = __toESM(require("path"));
|
|
18822
18827
|
init_dist4();
|
|
18823
18828
|
function exportCommand(program2) {
|
|
18824
18829
|
program2.command("export <\u76EE\u6807\u76EE\u5F55>").description("\u5BFC\u51FA\u914D\u7F6E\u5230\u672C\u5730\u76EE\u5F55\uFF08\u5305\u542B API Key\uFF09").action(async (targetDir) => {
|
|
18825
18830
|
try {
|
|
18826
|
-
console.log(
|
|
18831
|
+
console.log(import_chalk26.default.bold("\n\u{1F4E6} \u5BFC\u51FA\u914D\u7F6E\n"));
|
|
18827
18832
|
const validation = validateExport();
|
|
18828
18833
|
if (!validation.valid) {
|
|
18829
|
-
console.log(
|
|
18834
|
+
console.log(import_chalk26.default.red(`\u274C ${validation.message}
|
|
18830
18835
|
`));
|
|
18831
18836
|
process.exit(1);
|
|
18832
18837
|
}
|
|
18833
18838
|
const resolvedPath = targetDir.startsWith("~") ? import_path19.default.join(process.env.HOME || "", targetDir.slice(1)) : import_path19.default.resolve(targetDir);
|
|
18834
18839
|
console.log("\u5BFC\u51FA\u6587\u4EF6:");
|
|
18835
|
-
console.log(` ${
|
|
18836
|
-
console.log(` ${
|
|
18840
|
+
console.log(` ${import_chalk26.default.cyan("codex.json")} - Codex \u914D\u7F6E`);
|
|
18841
|
+
console.log(` ${import_chalk26.default.cyan("claude.json")} - Claude \u914D\u7F6E`);
|
|
18837
18842
|
console.log();
|
|
18838
|
-
console.log(`\u76EE\u6807\u76EE\u5F55: ${
|
|
18843
|
+
console.log(`\u76EE\u6807\u76EE\u5F55: ${import_chalk26.default.cyan(resolvedPath)}`);
|
|
18839
18844
|
console.log();
|
|
18840
|
-
console.log(
|
|
18845
|
+
console.log(import_chalk26.default.yellow("\u26A0\uFE0F \u5BFC\u51FA\u6587\u4EF6\u5305\u542B API Key\uFF0C\u8BF7\u59A5\u5584\u4FDD\u7BA1"));
|
|
18841
18846
|
console.log();
|
|
18842
18847
|
const result = exportConfig(resolvedPath);
|
|
18843
|
-
console.log(
|
|
18848
|
+
console.log(import_chalk26.default.green("\u2705 \u5BFC\u51FA\u6210\u529F"));
|
|
18844
18849
|
console.log();
|
|
18845
18850
|
console.log("\u5DF2\u5BFC\u51FA\u6587\u4EF6:");
|
|
18846
18851
|
for (const file of result.exportedFiles) {
|
|
18847
|
-
console.log(` ${
|
|
18852
|
+
console.log(` ${import_chalk26.default.cyan("\u2713")} ${file}`);
|
|
18848
18853
|
}
|
|
18849
18854
|
console.log();
|
|
18850
|
-
console.log(
|
|
18855
|
+
console.log(import_chalk26.default.blue(`\u{1F4A1} \u5BFC\u5165\u547D\u4EE4: ccman import ${resolvedPath}
|
|
18851
18856
|
`));
|
|
18852
18857
|
} catch (error) {
|
|
18853
|
-
console.error(
|
|
18858
|
+
console.error(import_chalk26.default.red(`
|
|
18854
18859
|
\u274C ${error.message}
|
|
18855
18860
|
`));
|
|
18856
18861
|
process.exit(1);
|
|
@@ -18859,32 +18864,32 @@ function exportCommand(program2) {
|
|
|
18859
18864
|
}
|
|
18860
18865
|
|
|
18861
18866
|
// src/commands/import.ts
|
|
18862
|
-
var
|
|
18863
|
-
var
|
|
18867
|
+
var import_chalk27 = __toESM(require("chalk"));
|
|
18868
|
+
var import_inquirer18 = __toESM(require("inquirer"));
|
|
18864
18869
|
var import_path20 = __toESM(require("path"));
|
|
18865
18870
|
init_dist4();
|
|
18866
18871
|
function importCommand(program2) {
|
|
18867
18872
|
program2.command("import <\u6E90\u76EE\u5F55>").description("\u4ECE\u672C\u5730\u76EE\u5F55\u5BFC\u5165\u914D\u7F6E\uFF08\u4F1A\u8986\u76D6\u5F53\u524D\u914D\u7F6E\uFF09").action(async (sourceDir) => {
|
|
18868
18873
|
try {
|
|
18869
18874
|
const resolvedPath = sourceDir.startsWith("~") ? import_path20.default.join(process.env.HOME || "", sourceDir.slice(1)) : import_path20.default.resolve(sourceDir);
|
|
18870
|
-
console.log(
|
|
18875
|
+
console.log(import_chalk27.default.bold("\n\u{1F4E5} \u5BFC\u5165\u914D\u7F6E\n"));
|
|
18871
18876
|
const validation = validateImportDir(resolvedPath);
|
|
18872
18877
|
if (!validation.valid) {
|
|
18873
|
-
console.log(
|
|
18878
|
+
console.log(import_chalk27.default.red(`\u274C ${validation.message}
|
|
18874
18879
|
`));
|
|
18875
18880
|
process.exit(1);
|
|
18876
18881
|
}
|
|
18877
|
-
console.log(
|
|
18878
|
-
console.log(`\u6E90\u76EE\u5F55: ${
|
|
18882
|
+
console.log(import_chalk27.default.yellow("\u26A0\uFE0F \u8B66\u544A\uFF1A\u5BFC\u5165\u5C06\u8986\u76D6\u5F53\u524D\u914D\u7F6E\n"));
|
|
18883
|
+
console.log(`\u6E90\u76EE\u5F55: ${import_chalk27.default.cyan(resolvedPath)}`);
|
|
18879
18884
|
console.log();
|
|
18880
18885
|
console.log("\u627E\u5230\u914D\u7F6E\u6587\u4EF6:");
|
|
18881
18886
|
for (const file of validation.foundFiles) {
|
|
18882
|
-
console.log(` ${
|
|
18887
|
+
console.log(` ${import_chalk27.default.cyan("\u2713")} ${file}`);
|
|
18883
18888
|
}
|
|
18884
18889
|
console.log();
|
|
18885
|
-
console.log(
|
|
18890
|
+
console.log(import_chalk27.default.gray("\u5F53\u524D\u914D\u7F6E\u5C06\u88AB\u8986\u76D6\uFF08\u81EA\u52A8\u5907\u4EFD\uFF09"));
|
|
18886
18891
|
console.log();
|
|
18887
|
-
const { confirmFirst } = await
|
|
18892
|
+
const { confirmFirst } = await import_inquirer18.default.prompt([
|
|
18888
18893
|
{
|
|
18889
18894
|
type: "confirm",
|
|
18890
18895
|
name: "confirmFirst",
|
|
@@ -18893,13 +18898,13 @@ function importCommand(program2) {
|
|
|
18893
18898
|
}
|
|
18894
18899
|
]);
|
|
18895
18900
|
if (!confirmFirst) {
|
|
18896
|
-
console.log(
|
|
18901
|
+
console.log(import_chalk27.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
|
|
18897
18902
|
return;
|
|
18898
18903
|
}
|
|
18899
18904
|
console.log();
|
|
18900
|
-
console.log(
|
|
18905
|
+
console.log(import_chalk27.default.red.bold("\u26A0\uFE0F \u6700\u540E\u786E\u8BA4\uFF1A\u6B64\u64CD\u4F5C\u5C06\u8986\u76D6\u6240\u6709\u5F53\u524D\u914D\u7F6E\uFF01"));
|
|
18901
18906
|
console.log();
|
|
18902
|
-
const { confirmSecond } = await
|
|
18907
|
+
const { confirmSecond } = await import_inquirer18.default.prompt([
|
|
18903
18908
|
{
|
|
18904
18909
|
type: "confirm",
|
|
18905
18910
|
name: "confirmSecond",
|
|
@@ -18908,31 +18913,31 @@ function importCommand(program2) {
|
|
|
18908
18913
|
}
|
|
18909
18914
|
]);
|
|
18910
18915
|
if (!confirmSecond) {
|
|
18911
|
-
console.log(
|
|
18916
|
+
console.log(import_chalk27.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
|
|
18912
18917
|
return;
|
|
18913
18918
|
}
|
|
18914
18919
|
console.log();
|
|
18915
|
-
console.log(
|
|
18916
|
-
console.log(
|
|
18920
|
+
console.log(import_chalk27.default.gray("\u{1F4BE} \u5907\u4EFD\u5F53\u524D\u914D\u7F6E..."));
|
|
18921
|
+
console.log(import_chalk27.default.gray("\u{1F4E5} \u5BFC\u5165\u65B0\u914D\u7F6E..."));
|
|
18917
18922
|
const result = importConfig(resolvedPath);
|
|
18918
18923
|
console.log();
|
|
18919
|
-
console.log(
|
|
18924
|
+
console.log(import_chalk27.default.green("\u2705 \u5BFC\u5165\u6210\u529F"));
|
|
18920
18925
|
console.log();
|
|
18921
18926
|
if (result.backupPaths.length > 0) {
|
|
18922
18927
|
console.log("\u5907\u4EFD\u6587\u4EF6:");
|
|
18923
18928
|
for (const backupPath of result.backupPaths) {
|
|
18924
|
-
console.log(` ${
|
|
18929
|
+
console.log(` ${import_chalk27.default.gray(backupPath)}`);
|
|
18925
18930
|
}
|
|
18926
18931
|
console.log();
|
|
18927
18932
|
}
|
|
18928
18933
|
console.log("\u5DF2\u5BFC\u5165\u6587\u4EF6:");
|
|
18929
18934
|
for (const file of result.importedFiles) {
|
|
18930
|
-
console.log(` ${
|
|
18935
|
+
console.log(` ${import_chalk27.default.cyan("\u2713")} ${file}`);
|
|
18931
18936
|
}
|
|
18932
18937
|
console.log();
|
|
18933
|
-
console.log(
|
|
18938
|
+
console.log(import_chalk27.default.blue("\u{1F4A1} \u8BF7\u4F7F\u7528 'ccman cx use' \u6216 'ccman cc use' \u5207\u6362\u670D\u52A1\u5546\n"));
|
|
18934
18939
|
} catch (error) {
|
|
18935
|
-
console.error(
|
|
18940
|
+
console.error(import_chalk27.default.red(`
|
|
18936
18941
|
\u274C ${error.message}
|
|
18937
18942
|
`));
|
|
18938
18943
|
process.exit(1);
|
|
@@ -18943,19 +18948,39 @@ function importCommand(program2) {
|
|
|
18943
18948
|
// src/index.ts
|
|
18944
18949
|
init_dist4();
|
|
18945
18950
|
if (process.env.NODE_ENV === "development") {
|
|
18946
|
-
console.log(
|
|
18947
|
-
console.log(
|
|
18948
|
-
console.log(
|
|
18949
|
-
console.log(
|
|
18951
|
+
console.log(import_chalk28.default.gray("\n[\u5F00\u53D1\u6A21\u5F0F] \u914D\u7F6E\u76EE\u5F55:"));
|
|
18952
|
+
console.log(import_chalk28.default.gray(` ccman: ${getCcmanDir()}`));
|
|
18953
|
+
console.log(import_chalk28.default.gray(` codex: ${getCodexDir()}`));
|
|
18954
|
+
console.log(import_chalk28.default.gray(` claude: ${getClaudeDir()}`));
|
|
18950
18955
|
console.log();
|
|
18951
18956
|
}
|
|
18952
|
-
var program = new
|
|
18957
|
+
var program = new import_commander3.Command();
|
|
18953
18958
|
program.name("ccman").description("Codex/Claude Code API \u670D\u52A1\u5546\u914D\u7F6E\u7BA1\u7406\u5DE5\u5177").version(VERSION).showHelpAfterError(false).exitOverride((err) => {
|
|
18954
18959
|
if (err.code === "commander.helpDisplayed" || err.code === "commander.version") {
|
|
18955
18960
|
process.exit(0);
|
|
18956
18961
|
}
|
|
18957
18962
|
throw err;
|
|
18958
18963
|
});
|
|
18964
|
+
program.on("command:*", (operands) => {
|
|
18965
|
+
const unknownCommand = operands[0];
|
|
18966
|
+
console.error(import_chalk28.default.red(`
|
|
18967
|
+
\u274C \u672A\u77E5\u547D\u4EE4: ${unknownCommand}
|
|
18968
|
+
`));
|
|
18969
|
+
const availableCommands = ["cx", "cc", "sync", "export", "import"];
|
|
18970
|
+
const suggestions = availableCommands.filter(
|
|
18971
|
+
(cmd) => cmd.includes(unknownCommand) || unknownCommand.includes(cmd)
|
|
18972
|
+
);
|
|
18973
|
+
if (suggestions.length > 0) {
|
|
18974
|
+
console.log(import_chalk28.default.yellow("\u{1F4A1} \u4F60\u662F\u4E0D\u662F\u60F3\u8F93\u5165:"));
|
|
18975
|
+
suggestions.forEach((cmd) => {
|
|
18976
|
+
console.log(import_chalk28.default.cyan(` ccman ${cmd}`));
|
|
18977
|
+
});
|
|
18978
|
+
console.log();
|
|
18979
|
+
}
|
|
18980
|
+
console.log(import_chalk28.default.gray("\u67E5\u770B\u6240\u6709\u53EF\u7528\u547D\u4EE4: ") + import_chalk28.default.cyan("ccman --help"));
|
|
18981
|
+
console.log();
|
|
18982
|
+
process.exit(1);
|
|
18983
|
+
});
|
|
18959
18984
|
var cx = program.command("cx").description("\u7BA1\u7406 Codex \u670D\u52A1\u5546");
|
|
18960
18985
|
createCodexCommands(cx);
|
|
18961
18986
|
cx.action(async () => {
|