ccman 3.3.14 → 3.3.15-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +72 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var init_package = __esm({
|
|
|
15
15
|
"../core/package.json"() {
|
|
16
16
|
package_default = {
|
|
17
17
|
name: "@ccman/core",
|
|
18
|
-
version: "3.3.
|
|
18
|
+
version: "3.3.15-beta.0",
|
|
19
19
|
type: "module",
|
|
20
20
|
description: "Core business logic for ccman - Manage Codex, Claude Code, Gemini CLI, OpenCode, OpenClaw, and MCP configurations",
|
|
21
21
|
main: "./dist/index.js",
|
|
@@ -1219,6 +1219,40 @@ function loadExistingJSON(filePath) {
|
|
|
1219
1219
|
return null;
|
|
1220
1220
|
}
|
|
1221
1221
|
}
|
|
1222
|
+
function isRecord(value) {
|
|
1223
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1224
|
+
}
|
|
1225
|
+
function forcePrimaryModelReasoning(models) {
|
|
1226
|
+
if (!Array.isArray(models))
|
|
1227
|
+
return models;
|
|
1228
|
+
return models.map((item) => {
|
|
1229
|
+
if (!isRecord(item))
|
|
1230
|
+
return item;
|
|
1231
|
+
const modelId = typeof item.id === "string" ? item.id : "";
|
|
1232
|
+
const modelName = typeof item.name === "string" ? item.name : "";
|
|
1233
|
+
if (modelId !== PRIMARY_MODEL_ID && modelName !== PRIMARY_MODEL_ID) {
|
|
1234
|
+
return item;
|
|
1235
|
+
}
|
|
1236
|
+
return {
|
|
1237
|
+
...item,
|
|
1238
|
+
reasoning: true
|
|
1239
|
+
};
|
|
1240
|
+
});
|
|
1241
|
+
}
|
|
1242
|
+
function forceProviderPrimaryReasoning(providers, providerName) {
|
|
1243
|
+
if (!providers)
|
|
1244
|
+
return providers;
|
|
1245
|
+
const providerConfig = providers[providerName];
|
|
1246
|
+
if (!isRecord(providerConfig))
|
|
1247
|
+
return providers;
|
|
1248
|
+
return {
|
|
1249
|
+
...providers,
|
|
1250
|
+
[providerName]: {
|
|
1251
|
+
...providerConfig,
|
|
1252
|
+
models: forcePrimaryModelReasoning(providerConfig.models)
|
|
1253
|
+
}
|
|
1254
|
+
};
|
|
1255
|
+
}
|
|
1222
1256
|
function writeOpenClawConfig(provider) {
|
|
1223
1257
|
const configPath = getOpenClawConfigPath();
|
|
1224
1258
|
const modelsPath = getOpenClawModelsPath();
|
|
@@ -1258,15 +1292,21 @@ function writeOpenClawConfig(provider) {
|
|
|
1258
1292
|
}
|
|
1259
1293
|
}
|
|
1260
1294
|
};
|
|
1295
|
+
if (isRecord(finalOpenClawConfig.models)) {
|
|
1296
|
+
finalOpenClawConfig.models = {
|
|
1297
|
+
...finalOpenClawConfig.models,
|
|
1298
|
+
providers: forceProviderPrimaryReasoning(finalOpenClawConfig.models.providers, providerName)
|
|
1299
|
+
};
|
|
1300
|
+
}
|
|
1261
1301
|
const mergedProviders = deepMerge(existingModelsConfig.providers || {}, nextModelsConfig.providers || {});
|
|
1262
1302
|
const finalModelsConfig = {
|
|
1263
1303
|
...existingModelsConfig,
|
|
1264
|
-
providers: mergedProviders
|
|
1304
|
+
providers: forceProviderPrimaryReasoning(mergedProviders, providerName)
|
|
1265
1305
|
};
|
|
1266
1306
|
writeJSON(configPath, finalOpenClawConfig);
|
|
1267
1307
|
writeJSON(modelsPath, finalModelsConfig);
|
|
1268
1308
|
}
|
|
1269
|
-
var DEFAULT_PROVIDER_NAME, __filename5, __dirname5, OPENCLAW_CONFIG_TEMPLATE, OPENCLAW_MODELS_TEMPLATE;
|
|
1309
|
+
var DEFAULT_PROVIDER_NAME, PRIMARY_MODEL_ID, __filename5, __dirname5, OPENCLAW_CONFIG_TEMPLATE, OPENCLAW_MODELS_TEMPLATE;
|
|
1270
1310
|
var init_openclaw2 = __esm({
|
|
1271
1311
|
"../core/dist/writers/openclaw.js"() {
|
|
1272
1312
|
"use strict";
|
|
@@ -1274,6 +1314,7 @@ var init_openclaw2 = __esm({
|
|
|
1274
1314
|
init_file();
|
|
1275
1315
|
init_template();
|
|
1276
1316
|
DEFAULT_PROVIDER_NAME = "gmn";
|
|
1317
|
+
PRIMARY_MODEL_ID = "gpt-5.3-codex";
|
|
1277
1318
|
__filename5 = fileURLToPath5(import.meta.url);
|
|
1278
1319
|
__dirname5 = path8.dirname(__filename5);
|
|
1279
1320
|
OPENCLAW_CONFIG_TEMPLATE = {
|
|
@@ -7097,7 +7138,7 @@ function importCommand(program2) {
|
|
|
7097
7138
|
init_dist2();
|
|
7098
7139
|
import chalk54 from "chalk";
|
|
7099
7140
|
import inquirer38 from "inquirer";
|
|
7100
|
-
var
|
|
7141
|
+
var DEFAULT_PROVIDER_NAME2 = "gmn";
|
|
7101
7142
|
var VALID_PLATFORMS = ["codex", "opencode", "openclaw"];
|
|
7102
7143
|
var DEFAULT_PLATFORMS = ["codex", "opencode"];
|
|
7103
7144
|
var GMN_OPENAI_BASE_URL = "https://gmn.chuangzuoli.com";
|
|
@@ -7218,18 +7259,40 @@ async function resolvePlatforms(platformArg) {
|
|
|
7218
7259
|
}
|
|
7219
7260
|
return promptPlatforms();
|
|
7220
7261
|
}
|
|
7221
|
-
|
|
7262
|
+
function resolveProviderName2(providerNameArg) {
|
|
7263
|
+
if (providerNameArg === void 0) {
|
|
7264
|
+
return DEFAULT_PROVIDER_NAME2;
|
|
7265
|
+
}
|
|
7266
|
+
const providerName = providerNameArg.trim();
|
|
7267
|
+
if (!providerName) {
|
|
7268
|
+
throw new Error("\u670D\u52A1\u5546\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A");
|
|
7269
|
+
}
|
|
7270
|
+
if (providerName.toLowerCase() === DEFAULT_PROVIDER_NAME2) {
|
|
7271
|
+
return DEFAULT_PROVIDER_NAME2;
|
|
7272
|
+
}
|
|
7273
|
+
return providerName;
|
|
7274
|
+
}
|
|
7275
|
+
function findPreferredProvider(providers, targetName) {
|
|
7276
|
+
const exact = providers.find((p) => p.name.trim() === targetName);
|
|
7277
|
+
if (exact) return exact;
|
|
7278
|
+
const lowerTarget = targetName.toLowerCase();
|
|
7279
|
+
return providers.find((p) => p.name.trim().toLowerCase() === lowerTarget);
|
|
7280
|
+
}
|
|
7281
|
+
async function gmnCommand(apiKey, platformArg, providerNameArg) {
|
|
7222
7282
|
printBanner();
|
|
7223
7283
|
let platforms;
|
|
7284
|
+
let providerName;
|
|
7224
7285
|
try {
|
|
7225
7286
|
console.log(chalk54.cyan(`
|
|
7226
7287
|
${renderStep(1, TOTAL_STEPS, "\u9009\u62E9\u8981\u914D\u7F6E\u7684\u5DE5\u5177")}`));
|
|
7227
7288
|
platforms = await resolvePlatforms(platformArg);
|
|
7289
|
+
providerName = resolveProviderName2(providerNameArg);
|
|
7228
7290
|
} catch (error) {
|
|
7229
7291
|
console.error(chalk54.red(`\u274C ${error.message}`));
|
|
7230
7292
|
process.exit(1);
|
|
7231
7293
|
}
|
|
7232
7294
|
console.log(chalk54.gray(`\u5DF2\u9009\u62E9: ${platforms.join(", ")}`));
|
|
7295
|
+
console.log(chalk54.gray(`\u670D\u52A1\u5546\u540D\u79F0: ${providerName}`));
|
|
7233
7296
|
printKeyNotice();
|
|
7234
7297
|
let resolvedApiKey = apiKey?.trim();
|
|
7235
7298
|
console.log(chalk54.cyan(`
|
|
@@ -7274,8 +7337,8 @@ ${renderStep(3, TOTAL_STEPS, "\u5F00\u59CB\u5199\u5165\u914D\u7F6E")}`));
|
|
|
7274
7337
|
try {
|
|
7275
7338
|
console.log(chalk54.gray(`\u2192 \u914D\u7F6E ${name}...`));
|
|
7276
7339
|
const baseUrl = platformBaseUrls[platform];
|
|
7277
|
-
const existing = manager.
|
|
7278
|
-
const provider = existing ? manager.edit(existing.id, { baseUrl, apiKey: resolvedApiKey }) : manager.add({ name:
|
|
7340
|
+
const existing = findPreferredProvider(manager.list(), providerName);
|
|
7341
|
+
const provider = existing ? manager.edit(existing.id, { name: providerName, baseUrl, apiKey: resolvedApiKey }) : manager.add({ name: providerName, baseUrl, apiKey: resolvedApiKey });
|
|
7279
7342
|
manager.switch(provider.id);
|
|
7280
7343
|
completed += 1;
|
|
7281
7344
|
console.log(chalk54.green(`\u2705 ${name}`));
|
|
@@ -7381,8 +7444,8 @@ sync.action(async () => {
|
|
|
7381
7444
|
});
|
|
7382
7445
|
exportCommand(program);
|
|
7383
7446
|
importCommand(program);
|
|
7384
|
-
program.command("gmn [apiKey]").description("\u914D\u7F6E GMN \u5230 Codex\u3001OpenCode\u3001OpenClaw").option("-p, --platform <platforms>", "\u6307\u5B9A\u5E73\u53F0 (codex,opencode,openclaw,all)").action(async (apiKey, options) => {
|
|
7385
|
-
await gmnCommand(apiKey, options.platform);
|
|
7447
|
+
program.command("gmn [apiKey]").description("\u914D\u7F6E GMN \u5230 Codex\u3001OpenCode\u3001OpenClaw").option("-p, --platform <platforms>", "\u6307\u5B9A\u5E73\u53F0 (codex,opencode,openclaw,all)").option("-n, --name <providerName>", "\u6307\u5B9A\u670D\u52A1\u5546\u540D\u79F0\uFF08\u9ED8\u8BA4: gmn\uFF09").action(async (apiKey, options) => {
|
|
7448
|
+
await gmnCommand(apiKey, options.platform, options.name);
|
|
7386
7449
|
});
|
|
7387
7450
|
(async () => {
|
|
7388
7451
|
if (!process.argv.slice(2).length) {
|
package/package.json
CHANGED