ccman 3.3.28 → 3.3.30

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 CHANGED
@@ -326,6 +326,12 @@ function removeDeprecatedKeys(config) {
326
326
  if ("network_access" in config) {
327
327
  delete config.network_access;
328
328
  }
329
+ if ("profile" in config) {
330
+ delete config.profile;
331
+ }
332
+ if ("profiles" in config) {
333
+ delete config.profiles;
334
+ }
329
335
  }
330
336
  function loadExistingCodexConfig(configPath) {
331
337
  if (!fileExists(configPath)) {
@@ -354,7 +360,7 @@ function writeCodexConfigOverwrite(provider) {
354
360
  removeDeprecatedKeys(nextConfig);
355
361
  const providerKey = resolveCodexProviderKey(provider);
356
362
  nextConfig.model_provider = providerKey;
357
- nextConfig.model = provider.model || nextConfig.model || "gpt-5.4";
363
+ nextConfig.model = provider.model || nextConfig.model || "gpt-5.5";
358
364
  nextConfig.model_providers = {
359
365
  [providerKey]: buildManagedProvider(provider, providerKey)
360
366
  };
@@ -372,7 +378,7 @@ function writeCodexConfigMerge(provider) {
372
378
  const providerKey = resolveCodexProviderKey(provider);
373
379
  removeDeprecatedKeys(nextConfig);
374
380
  nextConfig.model_provider = providerKey;
375
- nextConfig.model = provider.model || nextConfig.model || "gpt-5.4";
381
+ nextConfig.model = provider.model || nextConfig.model || "gpt-5.5";
376
382
  const existingProviders = nextConfig.model_providers && typeof nextConfig.model_providers === "object" && !Array.isArray(nextConfig.model_providers) ? { ...nextConfig.model_providers } : {};
377
383
  const lowerProviderKey = providerKey.toLowerCase();
378
384
  for (const key of Object.keys(existingProviders)) {
@@ -417,8 +423,8 @@ var init_codex = __esm({
417
423
  __filename = fileURLToPath2(import.meta.url);
418
424
  __dirname = path3.dirname(__filename);
419
425
  CODEX_DEFAULT_CONFIG = {
420
- model: "gpt-5.4",
421
- review_model: "gpt-5.4",
426
+ model: "gpt-5.5",
427
+ review_model: "gpt-5.5",
422
428
  model_reasoning_effort: "xhigh",
423
429
  plan_mode_reasoning_effort: "xhigh",
424
430
  model_reasoning_summary: "auto",
@@ -428,7 +434,6 @@ var init_codex = __esm({
428
434
  sandbox_mode: "danger-full-access",
429
435
  windows_wsl_setup_acknowledged: true,
430
436
  approval_policy: "never",
431
- profile: "auto-max",
432
437
  file_opener: "vscode",
433
438
  web_search: "cached",
434
439
  suppress_unstable_features_warning: true,
@@ -455,16 +460,6 @@ var init_codex = __esm({
455
460
  fast_mode: true,
456
461
  personality: true
457
462
  },
458
- profiles: {
459
- "auto-max": {
460
- approval_policy: "never",
461
- sandbox_mode: "workspace-write"
462
- },
463
- review: {
464
- approval_policy: "on-request",
465
- sandbox_mode: "workspace-write"
466
- }
467
- },
468
463
  notice: {
469
464
  hide_gpt5_1_migration_prompt: true
470
465
  }
@@ -546,6 +541,7 @@ var init_claude = __esm({
546
541
  __filename2 = fileURLToPath3(import.meta.url);
547
542
  __dirname2 = path4.dirname(__filename2);
548
543
  CLAUDE_CONFIG_TEMPLATE = {
544
+ model: "sonnet",
549
545
  env: {
550
546
  ANTHROPIC_AUTH_TOKEN: "{{apiKey}}",
551
547
  ANTHROPIC_BASE_URL: "{{baseUrl}}",
@@ -1012,12 +1008,16 @@ function writeGeminiConfig(provider, options = {}) {
1012
1008
  ...existingEnv,
1013
1009
  ...templateEnv
1014
1010
  };
1011
+ const existingGeminiModel = existingEnv.GEMINI_MODEL;
1015
1012
  if (!templateEnv.GOOGLE_GEMINI_BASE_URL) {
1016
1013
  delete env.GOOGLE_GEMINI_BASE_URL;
1017
1014
  }
1018
1015
  if (!templateEnv.GEMINI_API_KEY) {
1019
1016
  delete env.GEMINI_API_KEY;
1020
1017
  }
1018
+ if (options.mode !== "overwrite" && existingGeminiModel) {
1019
+ env.GEMINI_MODEL = existingGeminiModel;
1020
+ }
1021
1021
  let modelMeta = null;
1022
1022
  if (provider.model && provider.model.trim().length > 0) {
1023
1023
  try {
@@ -1037,7 +1037,7 @@ function writeGeminiConfig(provider, options = {}) {
1037
1037
  }
1038
1038
  }
1039
1039
  }
1040
- if (!env.GEMINI_MODEL && modelMeta.defaultModel) {
1040
+ if (modelMeta.defaultModel && (!existingGeminiModel || options.mode === "overwrite")) {
1041
1041
  env.GEMINI_MODEL = modelMeta.defaultModel;
1042
1042
  }
1043
1043
  }
@@ -1065,7 +1065,8 @@ var init_gemini2 = __esm({
1065
1065
  GEMINI_ENV_TEMPLATE = [
1066
1066
  "# Managed by ccman",
1067
1067
  "GOOGLE_GEMINI_BASE_URL={{baseUrl}}",
1068
- "GEMINI_API_KEY={{apiKey}}"
1068
+ "GEMINI_API_KEY={{apiKey}}",
1069
+ "GEMINI_MODEL=gemini-3.5-flash"
1069
1070
  ].join("\n");
1070
1071
  }
1071
1072
  });
@@ -1145,17 +1146,6 @@ function enforceModelStoreFalse(models) {
1145
1146
  high: {},
1146
1147
  xhigh: {}
1147
1148
  }
1148
- },
1149
- [OPENCODE_SECONDARY_MODEL_KEY]: {
1150
- options: {
1151
- store: false
1152
- },
1153
- variants: {
1154
- low: {},
1155
- medium: {},
1156
- high: {},
1157
- xhigh: {}
1158
- }
1159
1149
  }
1160
1150
  });
1161
1151
  }
@@ -1195,7 +1185,7 @@ function writeOpenCodeConfig(provider, options = {}) {
1195
1185
  };
1196
1186
  writeJSON(configPath, nextConfig);
1197
1187
  }
1198
- var OPENCODE_SCHEMA, OPENCODE_PROVIDER_KEY, OPENCODE_MODEL, OPENCODE_MODEL_KEY, OPENCODE_SECONDARY_MODEL_KEY, __filename4, __dirname4, DEFAULT_MODELS, OPENCODE_CONFIG_TEMPLATE;
1188
+ var OPENCODE_SCHEMA, OPENCODE_PROVIDER_KEY, OPENCODE_MODEL, OPENCODE_MODEL_KEY, __filename4, __dirname4, DEFAULT_MODELS, OPENCODE_CONFIG_TEMPLATE;
1199
1189
  var init_opencode2 = __esm({
1200
1190
  "../core/dist/writers/opencode.js"() {
1201
1191
  "use strict";
@@ -1204,26 +1194,13 @@ var init_opencode2 = __esm({
1204
1194
  init_template();
1205
1195
  OPENCODE_SCHEMA = "https://opencode.ai/config.json";
1206
1196
  OPENCODE_PROVIDER_KEY = "openai";
1207
- OPENCODE_MODEL = "openai/gpt-5.4";
1208
- OPENCODE_MODEL_KEY = "gpt-5.4";
1209
- OPENCODE_SECONDARY_MODEL_KEY = "gpt-5.3-codex";
1197
+ OPENCODE_MODEL = "openai/gpt-5.5";
1198
+ OPENCODE_MODEL_KEY = "gpt-5.5";
1210
1199
  __filename4 = fileURLToPath5(import.meta.url);
1211
1200
  __dirname4 = path7.dirname(__filename4);
1212
1201
  DEFAULT_MODELS = {
1213
1202
  [OPENCODE_MODEL_KEY]: {
1214
- name: "GPT-5.4",
1215
- options: {
1216
- store: false
1217
- },
1218
- variants: {
1219
- low: {},
1220
- medium: {},
1221
- high: {},
1222
- xhigh: {}
1223
- }
1224
- },
1225
- [OPENCODE_SECONDARY_MODEL_KEY]: {
1226
- name: "GPT-5.3 Codex",
1203
+ name: "GPT-5.5",
1227
1204
  options: {
1228
1205
  store: false
1229
1206
  },
@@ -1376,10 +1353,10 @@ function writeOpenClawConfig(provider, options = {}) {
1376
1353
  defaults: {
1377
1354
  ...nextOpenClawConfig.agents?.defaults || {},
1378
1355
  workspace: homeDir,
1379
- imageModel: nextOpenClawConfig.agents?.defaults?.imageModel || `${providerName}/gpt-5.4`,
1356
+ imageModel: nextOpenClawConfig.agents?.defaults?.imageModel || `${providerName}/gpt-5.5`,
1380
1357
  model: {
1381
1358
  ...nextOpenClawConfig.agents?.defaults?.model || {},
1382
- primary: nextOpenClawConfig.agents?.defaults?.model?.primary || `${providerName}/gpt-5.4`
1359
+ primary: nextOpenClawConfig.agents?.defaults?.model?.primary || `${providerName}/gpt-5.5`
1383
1360
  }
1384
1361
  }
1385
1362
  }
@@ -1397,8 +1374,8 @@ function writeOpenClawConfig(provider, options = {}) {
1397
1374
  const mergedAgents = deepMerge(nextOpenClawConfig.agents || {}, existingOpenClawConfig.agents || {});
1398
1375
  const mergedDefaults = mergedAgents.defaults || {};
1399
1376
  const mergedModel = mergedDefaults.model || {};
1400
- const templatePrimary = nextOpenClawConfig.agents?.defaults?.model?.primary || `${providerName}/gpt-5.4`;
1401
- const templateImageModel = nextOpenClawConfig.agents?.defaults?.imageModel || `${providerName}/gpt-5.4`;
1377
+ const templatePrimary = nextOpenClawConfig.agents?.defaults?.model?.primary || `${providerName}/gpt-5.5`;
1378
+ const templateImageModel = nextOpenClawConfig.agents?.defaults?.imageModel || `${providerName}/gpt-5.5`;
1402
1379
  const workspace = typeof mergedDefaults.workspace === "string" && mergedDefaults.workspace.trim() ? mergedDefaults.workspace : homeDir;
1403
1380
  const finalOpenClawConfig = {
1404
1381
  ...existingOpenClawConfig,
@@ -1425,7 +1402,7 @@ function writeOpenClawConfig(provider, options = {}) {
1425
1402
  writeJSON(configPath, finalOpenClawConfig);
1426
1403
  writeJSON(modelsPath, finalModelsConfig);
1427
1404
  }
1428
- var DEFAULT_PROVIDER_NAME, PRIMARY_MODEL_ID, SECONDARY_MODEL_ID, PRIMARY_MODEL_INPUTS, SECONDARY_MODEL_INPUTS, __filename5, __dirname5, OPENCLAW_CONFIG_TEMPLATE, OPENCLAW_MODELS_TEMPLATE;
1405
+ var DEFAULT_PROVIDER_NAME, PRIMARY_MODEL_ID, PRIMARY_MODEL_INPUTS, __filename5, __dirname5, OPENCLAW_CONFIG_TEMPLATE, OPENCLAW_MODELS_TEMPLATE;
1429
1406
  var init_openclaw2 = __esm({
1430
1407
  "../core/dist/writers/openclaw.js"() {
1431
1408
  "use strict";
@@ -1433,10 +1410,8 @@ var init_openclaw2 = __esm({
1433
1410
  init_file();
1434
1411
  init_template();
1435
1412
  DEFAULT_PROVIDER_NAME = "gmn";
1436
- PRIMARY_MODEL_ID = "gpt-5.4";
1437
- SECONDARY_MODEL_ID = "gpt-5.3-codex";
1413
+ PRIMARY_MODEL_ID = "gpt-5.5";
1438
1414
  PRIMARY_MODEL_INPUTS = ["text", "image"];
1439
- SECONDARY_MODEL_INPUTS = ["text", "image"];
1440
1415
  __filename5 = fileURLToPath6(import.meta.url);
1441
1416
  __dirname5 = path8.dirname(__filename5);
1442
1417
  OPENCLAW_CONFIG_TEMPLATE = {
@@ -1454,24 +1429,14 @@ var init_openclaw2 = __esm({
1454
1429
  authHeader: true,
1455
1430
  models: [
1456
1431
  {
1457
- id: "gpt-5.4",
1458
- name: "gpt-5.4",
1432
+ id: "gpt-5.5",
1433
+ name: "gpt-5.5",
1459
1434
  api: "openai-responses",
1460
1435
  reasoning: true,
1461
1436
  input: PRIMARY_MODEL_INPUTS,
1462
1437
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1463
1438
  contextWindow: 105e4,
1464
1439
  maxTokens: 128e3
1465
- },
1466
- {
1467
- id: SECONDARY_MODEL_ID,
1468
- name: SECONDARY_MODEL_ID,
1469
- api: "openai-responses",
1470
- reasoning: false,
1471
- input: SECONDARY_MODEL_INPUTS,
1472
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1473
- contextWindow: 4e5,
1474
- maxTokens: 128e3
1475
1440
  }
1476
1441
  ]
1477
1442
  }
@@ -1480,9 +1445,9 @@ var init_openclaw2 = __esm({
1480
1445
  agents: {
1481
1446
  defaults: {
1482
1447
  workspace: "",
1483
- imageModel: "{{providerName}}/gpt-5.4",
1448
+ imageModel: "{{providerName}}/gpt-5.5",
1484
1449
  model: {
1485
- primary: "{{providerName}}/gpt-5.4"
1450
+ primary: "{{providerName}}/gpt-5.5"
1486
1451
  },
1487
1452
  thinkingDefault: "xhigh"
1488
1453
  }
@@ -1501,24 +1466,14 @@ var init_openclaw2 = __esm({
1501
1466
  },
1502
1467
  models: [
1503
1468
  {
1504
- id: "gpt-5.4",
1505
- name: "gpt-5.4",
1469
+ id: "gpt-5.5",
1470
+ name: "gpt-5.5",
1506
1471
  api: "openai-responses",
1507
1472
  reasoning: true,
1508
1473
  input: PRIMARY_MODEL_INPUTS,
1509
1474
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1510
1475
  contextWindow: 105e4,
1511
1476
  maxTokens: 128e3
1512
- },
1513
- {
1514
- id: SECONDARY_MODEL_ID,
1515
- name: SECONDARY_MODEL_ID,
1516
- api: "openai-responses",
1517
- reasoning: false,
1518
- input: SECONDARY_MODEL_INPUTS,
1519
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1520
- contextWindow: 4e5,
1521
- maxTokens: 128e3
1522
1477
  }
1523
1478
  ]
1524
1479
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "model": "sonnet",
2
3
  "env": {
3
4
  "ANTHROPIC_AUTH_TOKEN": "{{apiKey}}",
4
5
  "ANTHROPIC_BASE_URL": "{{baseUrl}}",
@@ -11,4 +12,3 @@
11
12
  },
12
13
  "alwaysThinkingEnabled": true
13
14
  }
14
-
@@ -1,5 +1,5 @@
1
- model = "gpt-5.4"
2
- review_model = "gpt-5.4"
1
+ model = "gpt-5.5"
2
+ review_model = "gpt-5.5"
3
3
  model_reasoning_effort = "xhigh"
4
4
  plan_mode_reasoning_effort = "xhigh"
5
5
  model_reasoning_summary = "auto"
@@ -9,7 +9,6 @@ disable_response_storage = true
9
9
  sandbox_mode = "danger-full-access"
10
10
  windows_wsl_setup_acknowledged = true
11
11
  approval_policy = "never"
12
- profile = "auto-max"
13
12
  file_opener = "vscode"
14
13
  model_provider = "gmn"
15
14
  web_search = "cached"
@@ -38,14 +37,6 @@ shell_snapshot = true
38
37
  fast_mode = true
39
38
  personality = true
40
39
 
41
- [profiles.auto-max]
42
- approval_policy = "never"
43
- sandbox_mode = "workspace-write"
44
-
45
- [profiles.review]
46
- approval_policy = "on-request"
47
- sandbox_mode = "workspace-write"
48
-
49
40
  [notice]
50
41
  hide_gpt5_1_migration_prompt = true
51
42
 
@@ -10,24 +10,14 @@
10
10
  },
11
11
  "models": [
12
12
  {
13
- "id": "gpt-5.4",
14
- "name": "gpt-5.4",
13
+ "id": "gpt-5.5",
14
+ "name": "gpt-5.5",
15
15
  "api": "openai-responses",
16
16
  "reasoning": true,
17
17
  "input": ["text", "image"],
18
18
  "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
19
19
  "contextWindow": 1050000,
20
20
  "maxTokens": 128000
21
- },
22
- {
23
- "id": "gpt-5.3-codex",
24
- "name": "gpt-5.3-codex",
25
- "api": "openai-responses",
26
- "reasoning": false,
27
- "input": ["text", "image"],
28
- "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
29
- "contextWindow": 400000,
30
- "maxTokens": 128000
31
21
  }
32
22
  ]
33
23
  }
@@ -12,24 +12,14 @@
12
12
  "authHeader": true,
13
13
  "models": [
14
14
  {
15
- "id": "gpt-5.4",
16
- "name": "gpt-5.4",
15
+ "id": "gpt-5.5",
16
+ "name": "gpt-5.5",
17
17
  "api": "openai-responses",
18
18
  "reasoning": true,
19
19
  "input": ["text", "image"],
20
20
  "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
21
21
  "contextWindow": 1050000,
22
22
  "maxTokens": 128000
23
- },
24
- {
25
- "id": "gpt-5.3-codex",
26
- "name": "gpt-5.3-codex",
27
- "api": "openai-responses",
28
- "reasoning": false,
29
- "input": ["text", "image"],
30
- "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
31
- "contextWindow": 400000,
32
- "maxTokens": 128000
33
23
  }
34
24
  ]
35
25
  }
@@ -38,9 +28,9 @@
38
28
  "agents": {
39
29
  "defaults": {
40
30
  "workspace": "",
41
- "imageModel": "{{providerName}}/gpt-5.4",
31
+ "imageModel": "{{providerName}}/gpt-5.5",
42
32
  "model": {
43
- "primary": "{{providerName}}/gpt-5.4"
33
+ "primary": "{{providerName}}/gpt-5.5"
44
34
  },
45
35
  "thinkingDefault": "xhigh"
46
36
  }
@@ -6,20 +6,8 @@
6
6
  "apiKey": "{{apiKey}}"
7
7
  },
8
8
  "models": {
9
- "gpt-5.3-codex": {
10
- "name": "GPT-5.3 Codex",
11
- "options": {
12
- "store": false
13
- },
14
- "variants": {
15
- "low": {},
16
- "medium": {},
17
- "high": {},
18
- "xhigh": {}
19
- }
20
- },
21
- "gpt-5.4": {
22
- "name": "GPT-5.4",
9
+ "gpt-5.5": {
10
+ "name": "GPT-5.5",
23
11
  "options": {
24
12
  "store": false
25
13
  },
@@ -46,5 +34,5 @@
46
34
  }
47
35
  },
48
36
  "$schema": "https://opencode.ai/config.json",
49
- "model": "openai/gpt-5.4"
37
+ "model": "openai/gpt-5.5"
50
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccman",
3
- "version": "3.3.28",
3
+ "version": "3.3.30",
4
4
  "type": "module",
5
5
  "description": "Manage Codex, Claude Code, Gemini CLI, OpenCode, OpenClaw, and MCP API service provider configurations",
6
6
  "main": "./dist/index.js",