ccjk 14.1.5 → 14.1.7

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.
Files changed (70) hide show
  1. package/dist/chunks/agent-teams.mjs +15 -8
  2. package/dist/chunks/api-cli.mjs +1 -1
  3. package/dist/chunks/api-config-selector.mjs +4 -3
  4. package/dist/chunks/auto-updater.mjs +3 -3
  5. package/dist/chunks/boost.mjs +1 -1
  6. package/dist/chunks/ccjk-all.mjs +1 -1
  7. package/dist/chunks/ccjk-config.mjs +104 -14
  8. package/dist/chunks/ccjk-mcp.mjs +2 -2
  9. package/dist/chunks/ccjk-setup.mjs +1 -1
  10. package/dist/chunks/ccr.mjs +12 -7
  11. package/dist/chunks/check-updates.mjs +1 -1
  12. package/dist/chunks/claude-code-incremental-manager.mjs +8 -10
  13. package/dist/chunks/claude-config.mjs +9 -8
  14. package/dist/chunks/code-type-resolver.mjs +1 -1
  15. package/dist/chunks/codex-config-switch.mjs +3 -3
  16. package/dist/chunks/codex-provider-manager.mjs +2 -1
  17. package/dist/chunks/codex.mjs +102 -3
  18. package/dist/chunks/completion.mjs +4 -3
  19. package/dist/chunks/config-switch.mjs +2 -2
  20. package/dist/chunks/config.mjs +203 -11
  21. package/dist/chunks/config2.mjs +5 -4
  22. package/dist/chunks/config3.mjs +41 -29
  23. package/dist/chunks/constants.mjs +6 -2
  24. package/dist/chunks/doctor.mjs +238 -71
  25. package/dist/chunks/features.mjs +29 -13
  26. package/dist/chunks/index10.mjs +8 -7
  27. package/dist/chunks/init.mjs +26 -81
  28. package/dist/chunks/installer.mjs +3 -7
  29. package/dist/chunks/mcp-cli.mjs +4 -4
  30. package/dist/chunks/mcp.mjs +21 -16
  31. package/dist/chunks/package.mjs +1 -1
  32. package/dist/chunks/permission-manager.mjs +132 -14
  33. package/dist/chunks/permissions.mjs +1 -1
  34. package/dist/chunks/platform.mjs +1 -1
  35. package/dist/chunks/powershell.mjs +1 -1
  36. package/dist/chunks/providers.mjs +5 -2
  37. package/dist/chunks/quick-provider.mjs +51 -12
  38. package/dist/chunks/quick-setup.mjs +7 -3
  39. package/dist/chunks/rollback.mjs +38 -0
  40. package/dist/chunks/simple-config.mjs +15 -1
  41. package/dist/chunks/slash-commands.mjs +1 -1
  42. package/dist/chunks/smart-guide.mjs +1 -1
  43. package/dist/chunks/snapshot.mjs +58 -0
  44. package/dist/chunks/status.mjs +1 -1
  45. package/dist/chunks/uninstall.mjs +1 -1
  46. package/dist/chunks/update.mjs +7 -5
  47. package/dist/chunks/zero-config.mjs +433 -44
  48. package/dist/cli.mjs +138 -36
  49. package/dist/index.d.mts +28 -4
  50. package/dist/index.d.ts +28 -4
  51. package/dist/index.mjs +4 -4
  52. package/dist/shared/{ccjk.ygJzcD-n.mjs → ccjk.4iw1XCF3.mjs} +5 -220
  53. package/dist/shared/ccjk.B2U7DsPy.mjs +31 -0
  54. package/dist/shared/{ccjk.MpkxXQJL.mjs → ccjk.B8oqkakg.mjs} +5 -160
  55. package/dist/shared/ccjk.BzPbSEP2.mjs +115 -0
  56. package/dist/shared/ccjk.DFRPtmK_.mjs +75 -0
  57. package/dist/shared/ccjk.Di1IYU3u.mjs +63 -0
  58. package/dist/shared/ccjk.DqlzNDEQ.mjs +255 -0
  59. package/dist/shared/{ccjk.SPoXMvZD.mjs → ccjk.DsZsc4LR.mjs} +52 -14
  60. package/dist/shared/ccjk.Hwoicrh8.mjs +170 -0
  61. package/dist/shared/ccjk.Nwf9bR70.mjs +225 -0
  62. package/dist/shared/{ccjk.DZtwozOG.mjs → ccjk.QNhw2Y_5.mjs} +1 -1
  63. package/dist/shared/{ccjk.BXTrU9TN.mjs → ccjk.kAZkKbGW.mjs} +9 -4
  64. package/dist/shared/{ccjk.K8c6VnM2.mjs → ccjk.lG3ccFjm.mjs} +79 -1
  65. package/dist/templates/claude-code/common/settings.json +4 -1
  66. package/package.json +1 -1
  67. package/templates/claude-code/common/settings.json +4 -1
  68. package/templates/common/workflow/essential/en/goal.md +147 -0
  69. package/templates/common/workflow/essential/zh-CN/goal.md +146 -0
  70. package/dist/shared/ccjk.Ccrqt7u2.mjs +0 -99
@@ -1,27 +1,32 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import a from './index5.mjs';
3
- import { SETTINGS_FILE } from './constants.mjs';
4
3
  import { ensureI18nInitialized, i18n } from './index2.mjs';
4
+ import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
5
5
  import { writeJsonConfig } from './json-config.mjs';
6
6
  import '../shared/ccjk.BAGoDD49.mjs';
7
- import 'node:os';
8
- import '../shared/ccjk.bQ7Dh1g4.mjs';
9
7
  import 'node:process';
10
8
  import 'node:url';
11
- import '../shared/ccjk.RyizuzOI.mjs';
9
+ import '../shared/ccjk.bQ7Dh1g4.mjs';
10
+ import './constants.mjs';
11
+ import 'node:os';
12
+ import './ccjk-config.mjs';
13
+ import '../shared/ccjk.BBtCGd_g.mjs';
14
+ import './index3.mjs';
12
15
  import './fs-operations.mjs';
13
16
  import 'node:crypto';
14
17
  import 'node:fs/promises';
18
+ import '../shared/ccjk.RyizuzOI.mjs';
15
19
 
16
20
  const ENV_KEY = "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS";
17
21
  function t(key, opts) {
18
22
  return i18n.t(`agent-teams:${key}`, opts);
19
23
  }
20
24
  function readSettings() {
21
- if (!existsSync(SETTINGS_FILE))
25
+ const target = resolveClaudeFamilySettingsTarget();
26
+ if (!existsSync(target.settingsFile))
22
27
  return {};
23
28
  try {
24
- return JSON.parse(readFileSync(SETTINGS_FILE, "utf-8"));
29
+ return JSON.parse(readFileSync(target.settingsFile, "utf-8"));
25
30
  } catch {
26
31
  return {};
27
32
  }
@@ -39,7 +44,8 @@ function setAgentTeams(enabled) {
39
44
  } else {
40
45
  delete settings.env[ENV_KEY];
41
46
  }
42
- writeJsonConfig(SETTINGS_FILE, settings);
47
+ normalizeClaudeFamilySettings(settings);
48
+ writeJsonConfig(resolveClaudeFamilySettingsTarget().settingsFile, settings);
43
49
  }
44
50
  function getTeammateMode() {
45
51
  const settings = readSettings();
@@ -48,7 +54,8 @@ function getTeammateMode() {
48
54
  function setTeammateMode(mode) {
49
55
  const settings = readSettings();
50
56
  settings.teammateMode = mode;
51
- writeJsonConfig(SETTINGS_FILE, settings);
57
+ normalizeClaudeFamilySettings(settings);
58
+ writeJsonConfig(resolveClaudeFamilySettingsTarget().settingsFile, settings);
52
59
  }
53
60
  async function agentTeamsCommand(options) {
54
61
  ensureI18nInitialized();
@@ -30,7 +30,7 @@ import './index3.mjs';
30
30
  import './fs-operations.mjs';
31
31
  import 'node:fs/promises';
32
32
  import './json-config.mjs';
33
- import '../shared/ccjk.Ccrqt7u2.mjs';
33
+ import '../shared/ccjk.Di1IYU3u.mjs';
34
34
  import './platform.mjs';
35
35
  import './main.mjs';
36
36
  import 'module';
@@ -30,14 +30,15 @@ import './fs-operations.mjs';
30
30
  import 'node:fs/promises';
31
31
  import './json-config.mjs';
32
32
  import '../shared/ccjk.RyizuzOI.mjs';
33
- import '../shared/ccjk.Ccrqt7u2.mjs';
33
+ import '../shared/ccjk.Di1IYU3u.mjs';
34
34
  import './platform.mjs';
35
35
  import './main.mjs';
36
36
  import 'module';
37
37
  import 'node:child_process';
38
38
  import 'node:stream';
39
39
  import '../shared/ccjk.DKXs7Fbm.mjs';
40
- import '../shared/ccjk.ygJzcD-n.mjs';
40
+ import '../shared/ccjk.Nwf9bR70.mjs';
41
+ import '../shared/ccjk.4iw1XCF3.mjs';
41
42
  import '../shared/ccjk.BFQ7yr5S.mjs';
42
43
  import '../shared/ccjk.DZ2LLOa-.mjs';
43
44
  import '../shared/ccjk.DeWpAShp.mjs';
@@ -48,7 +49,7 @@ async function syncClavueProviderStateIfNeeded(codeTool, activeProfileId) {
48
49
  if (codeTool !== "clavue") {
49
50
  return;
50
51
  }
51
- const { syncMyclaudeProviderProfilesFromClaudeConfig } = await import('./config.mjs').then(function (n) { return n.H; });
52
+ const { syncMyclaudeProviderProfilesFromClaudeConfig } = await import('./config.mjs').then(function (n) { return n.J; });
52
53
  const config = ClaudeCodeConfigManager.readConfig();
53
54
  syncMyclaudeProviderProfilesFromClaudeConfig(
54
55
  activeProfileId === void 0 || !config ? config : { ...config, currentProfileId: activeProfileId }
@@ -325,9 +325,9 @@ async function updateMyclaude(force = false, skipPrompt = false) {
325
325
  const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: "clavue" })).start();
326
326
  try {
327
327
  await execWithSudoIfNeeded("npm", ["update", "-g", "clavue"]);
328
- const installResult = await q("clavue", ["install", "--force"]);
329
- if (installResult.exitCode !== 0) {
330
- throw new Error(installResult.stderr || `Command failed with exit code ${installResult.exitCode}`);
328
+ const verifyResult = await q("clavue", ["--version"]);
329
+ if (verifyResult.exitCode !== 0) {
330
+ throw new Error(verifyResult.stderr || `Command failed with exit code ${verifyResult.exitCode}`);
331
331
  }
332
332
  updateSpinner.succeed(format(i18n.t("updater:updateSuccess"), { tool: "clavue" }));
333
333
  return true;
@@ -342,7 +342,7 @@ async function runCcjkCommand(args) {
342
342
  const sub = args[0];
343
343
  try {
344
344
  if (sub === "init") {
345
- const { init } = await import('./init.mjs').then(function (n) { return n.e; });
345
+ const { init } = await import('./init.mjs').then(function (n) { return n.c; });
346
346
  await init({ skipBanner: true, skipPrompt: true });
347
347
  return { success: true, message: "Initialization complete" };
348
348
  }
@@ -43,7 +43,7 @@ import './index3.mjs';
43
43
  import './fs-operations.mjs';
44
44
  import 'node:fs/promises';
45
45
  import './json-config.mjs';
46
- import '../shared/ccjk.Ccrqt7u2.mjs';
46
+ import '../shared/ccjk.Di1IYU3u.mjs';
47
47
  import './platform.mjs';
48
48
  import './main.mjs';
49
49
  import 'module';
@@ -23,6 +23,87 @@ function sanitizePreferredLang(lang) {
23
23
  function sanitizeCodeToolType(codeTool) {
24
24
  return isCodeToolType(codeTool) ? codeTool : DEFAULT_CODE_TOOL_TYPE;
25
25
  }
26
+ function normalizeTomlConfig(config) {
27
+ const legacyConfig = config;
28
+ const rawGeneral = config?.general || {};
29
+ const preferredLang = sanitizePreferredLang(rawGeneral.preferredLang ?? legacyConfig?.preferredLang);
30
+ const defaultConfig = createDefaultTomlConfig(preferredLang);
31
+ const codeToolType = sanitizeCodeToolType(rawGeneral.currentTool ?? legacyConfig?.codeToolType);
32
+ const rawClaudeCode = config?.claudeCode || {};
33
+ const rawCodex = config?.codex || {};
34
+ const rawStorage = config?.storage || {};
35
+ const rawAdaptation = config?.adaptation || {};
36
+ const defaultAdaptation = defaultConfig.adaptation;
37
+ const hasLegacyToolType = typeof legacyConfig?.codeToolType === "string";
38
+ const templateLang = rawGeneral.templateLang ?? legacyConfig?.templateLang;
39
+ return {
40
+ version: typeof config?.version === "string" ? config.version : defaultConfig.version,
41
+ lastUpdated: typeof config?.lastUpdated === "string" ? config.lastUpdated : (/* @__PURE__ */ new Date()).toISOString(),
42
+ general: {
43
+ preferredLang,
44
+ templateLang: templateLang ? sanitizePreferredLang(templateLang) : defaultConfig.general.templateLang,
45
+ aiOutputLang: rawGeneral.aiOutputLang ?? legacyConfig?.aiOutputLang ?? defaultConfig.general.aiOutputLang,
46
+ currentTool: codeToolType
47
+ },
48
+ claudeCode: {
49
+ enabled: typeof rawClaudeCode.enabled === "boolean" ? rawClaudeCode.enabled : hasLegacyToolType ? codeToolType === "claude-code" : defaultConfig.claudeCode.enabled,
50
+ outputStyles: Array.isArray(rawClaudeCode.outputStyles) ? rawClaudeCode.outputStyles : Array.isArray(legacyConfig?.outputStyles) ? legacyConfig.outputStyles : defaultConfig.claudeCode.outputStyles,
51
+ defaultOutputStyle: typeof rawClaudeCode.defaultOutputStyle === "string" ? rawClaudeCode.defaultOutputStyle : typeof legacyConfig?.defaultOutputStyle === "string" ? legacyConfig.defaultOutputStyle : defaultConfig.claudeCode.defaultOutputStyle,
52
+ installType: rawClaudeCode.installType === "local" || rawClaudeCode.installType === "global" ? rawClaudeCode.installType : defaultConfig.claudeCode.installType,
53
+ installMethod: rawClaudeCode.installMethod,
54
+ currentProfile: typeof rawClaudeCode.currentProfile === "string" ? rawClaudeCode.currentProfile : defaultConfig.claudeCode.currentProfile,
55
+ profiles: rawClaudeCode.profiles && typeof rawClaudeCode.profiles === "object" ? rawClaudeCode.profiles : defaultConfig.claudeCode.profiles,
56
+ version: rawClaudeCode.version
57
+ },
58
+ codex: {
59
+ enabled: typeof rawCodex.enabled === "boolean" ? rawCodex.enabled : hasLegacyToolType ? codeToolType === "codex" : defaultConfig.codex.enabled,
60
+ systemPromptStyle: typeof rawCodex.systemPromptStyle === "string" ? rawCodex.systemPromptStyle : typeof legacyConfig?.systemPromptStyle === "string" ? legacyConfig.systemPromptStyle : defaultConfig.codex.systemPromptStyle,
61
+ installMethod: rawCodex.installMethod,
62
+ envKeyMigrated: rawCodex.envKeyMigrated,
63
+ goalsFeatureEnabled: rawCodex.goalsFeatureEnabled ?? defaultConfig.codex.goalsFeatureEnabled
64
+ },
65
+ storage: {
66
+ ...defaultConfig.storage,
67
+ ...rawStorage,
68
+ memory: {
69
+ ...defaultConfig.storage?.memory || {},
70
+ ...rawStorage.memory || {}
71
+ }
72
+ },
73
+ adaptation: {
74
+ ...defaultAdaptation,
75
+ ...rawAdaptation,
76
+ runtimeProfile: {
77
+ ...defaultAdaptation.runtimeProfile,
78
+ ...rawAdaptation.runtimeProfile
79
+ },
80
+ archetypeProfile: {
81
+ ...defaultAdaptation.archetypeProfile,
82
+ ...rawAdaptation.archetypeProfile
83
+ },
84
+ capabilityProfile: {
85
+ ...defaultAdaptation.capabilityProfile,
86
+ ...rawAdaptation.capabilityProfile
87
+ },
88
+ policyProfile: {
89
+ ...defaultAdaptation.policyProfile,
90
+ ...rawAdaptation.policyProfile
91
+ },
92
+ contextProfile: {
93
+ ...defaultAdaptation.contextProfile,
94
+ ...rawAdaptation.contextProfile
95
+ },
96
+ profileSelection: {
97
+ ...defaultAdaptation.profileSelection,
98
+ ...rawAdaptation.profileSelection
99
+ },
100
+ uiProfile: {
101
+ ...defaultAdaptation.uiProfile,
102
+ ...rawAdaptation.uiProfile
103
+ }
104
+ }
105
+ };
106
+ }
26
107
  function readTomlConfig(configPath) {
27
108
  try {
28
109
  if (!exists(configPath)) {
@@ -30,7 +111,7 @@ function readTomlConfig(configPath) {
30
111
  }
31
112
  const content = readFile(configPath);
32
113
  const parsed = parse(content);
33
- return parsed;
114
+ return normalizeTomlConfig(parsed);
34
115
  } catch {
35
116
  return null;
36
117
  }
@@ -65,7 +146,8 @@ function createDefaultTomlConfig(preferredLang = "en", claudeCodeInstallType = "
65
146
  },
66
147
  codex: {
67
148
  enabled: false,
68
- systemPromptStyle: "senior-architect"
149
+ systemPromptStyle: "senior-architect",
150
+ goalsFeatureEnabled: true
69
151
  },
70
152
  storage: {
71
153
  memory: {}
@@ -139,7 +221,8 @@ function migrateFromJsonConfig(jsonConfig) {
139
221
  },
140
222
  codex: {
141
223
  enabled: jsonConfig.codeToolType === "codex",
142
- systemPromptStyle: jsonConfig.systemPromptStyle || defaultConfig.codex.systemPromptStyle
224
+ systemPromptStyle: jsonConfig.systemPromptStyle || defaultConfig.codex.systemPromptStyle,
225
+ goalsFeatureEnabled: true
143
226
  },
144
227
  storage: {
145
228
  memory: {}
@@ -148,9 +231,9 @@ function migrateFromJsonConfig(jsonConfig) {
148
231
  };
149
232
  return tomlConfig;
150
233
  }
151
- function updateTomlConfig(configPath, updates) {
234
+ function buildUpdatedTomlConfig(configPath, updates) {
152
235
  const existingConfig = readTomlConfig(configPath) || createDefaultTomlConfig();
153
- const updatedConfig = {
236
+ return {
154
237
  version: updates.version || existingConfig.version,
155
238
  lastUpdated: (/* @__PURE__ */ new Date()).toISOString(),
156
239
  general: {
@@ -206,19 +289,26 @@ function updateTomlConfig(configPath, updates) {
206
289
  } : existingConfig.adaptation?.uiProfile
207
290
  }
208
291
  };
292
+ }
293
+ function stringifyTomlConfig(config) {
294
+ return stringify(config);
295
+ }
296
+ function updateTomlConfig(configPath, updates) {
297
+ const updatedConfig = buildUpdatedTomlConfig(configPath, updates);
209
298
  writeTomlConfig(configPath, updatedConfig);
210
299
  return updatedConfig;
211
300
  }
212
301
  function convertTomlToLegacyConfig(tomlConfig) {
302
+ const normalizedConfig = normalizeTomlConfig(tomlConfig);
213
303
  return {
214
- version: tomlConfig.version,
215
- preferredLang: tomlConfig.general.preferredLang,
216
- templateLang: tomlConfig.general.templateLang,
217
- aiOutputLang: tomlConfig.general.aiOutputLang,
218
- outputStyles: tomlConfig.claudeCode.outputStyles,
219
- defaultOutputStyle: tomlConfig.claudeCode.defaultOutputStyle,
220
- codeToolType: tomlConfig.general.currentTool,
221
- lastUpdated: tomlConfig.lastUpdated
304
+ version: normalizedConfig.version,
305
+ preferredLang: normalizedConfig.general.preferredLang,
306
+ templateLang: normalizedConfig.general.templateLang,
307
+ aiOutputLang: normalizedConfig.general.aiOutputLang,
308
+ outputStyles: normalizedConfig.claudeCode.outputStyles,
309
+ defaultOutputStyle: normalizedConfig.claudeCode.defaultOutputStyle,
310
+ codeToolType: normalizedConfig.general.currentTool,
311
+ lastUpdated: normalizedConfig.lastUpdated
222
312
  };
223
313
  }
224
314
  function convertLegacyToTomlConfig(legacyConfig) {
@@ -352,4 +442,4 @@ function readDefaultTomlConfig() {
352
442
  return readTomlConfig(ZCF_CONFIG_FILE);
353
443
  }
354
444
 
355
- export { createDefaultTomlConfig, migrateFromJsonConfig, migrateZcfConfigIfNeeded, readDefaultTomlConfig, readTomlConfig, readZcfConfig, readZcfConfigAsync, updateTomlConfig, updateZcfConfig, writeTomlConfig, writeZcfConfig };
445
+ export { buildUpdatedTomlConfig, createDefaultTomlConfig, migrateFromJsonConfig, migrateZcfConfigIfNeeded, readDefaultTomlConfig, readTomlConfig, readZcfConfig, readZcfConfigAsync, stringifyTomlConfig, updateTomlConfig, updateZcfConfig, writeTomlConfig, writeZcfConfig };
@@ -6,7 +6,7 @@ import { i as inquirer } from './index6.mjs';
6
6
  import { CLAUDE_DIR } from './constants.mjs';
7
7
  import { ensureI18nInitialized, i18n } from './index2.mjs';
8
8
  import { d as backupMcpConfig, r as readMcpConfig, m as mergeMcpServers, w as writeMcpConfig } from './config.mjs';
9
- import { h as commandExists } from './platform.mjs';
9
+ import { c as commandExists } from './platform.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:fs';
12
12
  import './index9.mjs';
@@ -33,7 +33,7 @@ import './index3.mjs';
33
33
  import './fs-operations.mjs';
34
34
  import 'node:fs/promises';
35
35
  import './json-config.mjs';
36
- import '../shared/ccjk.Ccrqt7u2.mjs';
36
+ import '../shared/ccjk.Di1IYU3u.mjs';
37
37
  import './main.mjs';
38
38
  import 'module';
39
39
  import 'node:child_process';
@@ -40,7 +40,7 @@ import './index3.mjs';
40
40
  import './fs-operations.mjs';
41
41
  import 'node:fs/promises';
42
42
  import './json-config.mjs';
43
- import '../shared/ccjk.Ccrqt7u2.mjs';
43
+ import '../shared/ccjk.Di1IYU3u.mjs';
44
44
  import './platform.mjs';
45
45
  import './main.mjs';
46
46
  import 'module';
@@ -33,7 +33,7 @@ import './index3.mjs';
33
33
  import './fs-operations.mjs';
34
34
  import 'node:fs/promises';
35
35
  import './json-config.mjs';
36
- import '../shared/ccjk.Ccrqt7u2.mjs';
36
+ import '../shared/ccjk.Di1IYU3u.mjs';
37
37
  import './platform.mjs';
38
38
  import './main.mjs';
39
39
  import 'module';
@@ -49,7 +49,8 @@ import '../shared/ccjk.DZ2LLOa-.mjs';
49
49
  import '../shared/ccjk.DKXs7Fbm.mjs';
50
50
  import './code-type-resolver.mjs';
51
51
  import './features.mjs';
52
- import '../shared/ccjk.ygJzcD-n.mjs';
52
+ import '../shared/ccjk.Nwf9bR70.mjs';
53
+ import '../shared/ccjk.4iw1XCF3.mjs';
53
54
  import '../shared/ccjk.BI-hdI7P.mjs';
54
55
  import './simple-config.mjs';
55
56
  import '../shared/ccjk.DbigonEQ.mjs';
@@ -59,20 +60,24 @@ import './smart-guide.mjs';
59
60
  import './ccu.mjs';
60
61
  import './init.mjs';
61
62
  import './config2.mjs';
63
+ import '../shared/ccjk.DFRPtmK_.mjs';
62
64
  import './auto-updater.mjs';
63
65
  import './version-checker.mjs';
64
- import '../shared/ccjk.MpkxXQJL.mjs';
66
+ import '../shared/ccjk.Hwoicrh8.mjs';
65
67
  import './installer.mjs';
68
+ import '../shared/ccjk.B8oqkakg.mjs';
66
69
  import '../shared/ccjk.Bq8TqZG_.mjs';
70
+ import '../shared/ccjk.B2U7DsPy.mjs';
67
71
  import './commands.mjs';
68
72
  import './check-updates.mjs';
69
73
  import './config-switch.mjs';
70
74
  import './doctor.mjs';
71
75
  import './api-providers.mjs';
72
- import '../shared/ccjk.SPoXMvZD.mjs';
76
+ import '../shared/ccjk.DsZsc4LR.mjs';
77
+ import '../shared/ccjk.DqlzNDEQ.mjs';
73
78
  import '../shared/ccjk.J8YiPsOw.mjs';
74
- import '../shared/ccjk.DZtwozOG.mjs';
75
- import '../shared/ccjk.BXTrU9TN.mjs';
79
+ import '../shared/ccjk.QNhw2Y_5.mjs';
80
+ import '../shared/ccjk.kAZkKbGW.mjs';
76
81
  import './notification.mjs';
77
82
  import '../shared/ccjk.BBizCO6_.mjs';
78
83
  import '../shared/ccjk.D0g2ABGg.mjs';
@@ -82,7 +87,7 @@ import './uninstall.mjs';
82
87
  import '../shared/ccjk.D75wivnp.mjs';
83
88
  import 'globby';
84
89
  import './update.mjs';
85
- import '../shared/ccjk.K8c6VnM2.mjs';
90
+ import '../shared/ccjk.lG3ccFjm.mjs';
86
91
 
87
92
  async function ccr(options = {}) {
88
93
  try {
@@ -42,7 +42,7 @@ import '../shared/ccjk.DZ2LLOa-.mjs';
42
42
  import './version-checker.mjs';
43
43
  import '../shared/ccjk.CxpGa6MC.mjs';
44
44
  import './config.mjs';
45
- import '../shared/ccjk.Ccrqt7u2.mjs';
45
+ import '../shared/ccjk.Di1IYU3u.mjs';
46
46
  import '../shared/ccjk.BFQ7yr5S.mjs';
47
47
  import './prompts.mjs';
48
48
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -2,10 +2,11 @@ import a from './index5.mjs';
2
2
  import { i as inquirer } from './index6.mjs';
3
3
  import { ensureI18nInitialized, i18n } from './index2.mjs';
4
4
  import { C as ClaudeCodeConfigManager } from './config.mjs';
5
+ import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
5
6
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
6
7
  import { readZcfConfig } from './ccjk-config.mjs';
7
8
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
8
- import { v as validateApiKey } from '../shared/ccjk.ygJzcD-n.mjs';
9
+ import { v as validateApiKey } from '../shared/ccjk.Nwf9bR70.mjs';
9
10
  import '../shared/ccjk.BAGoDD49.mjs';
10
11
  import 'node:readline';
11
12
  import 'stream';
@@ -27,10 +28,10 @@ import 'node:url';
27
28
  import '../shared/ccjk.bQ7Dh1g4.mjs';
28
29
  import '../shared/ccjk.RyizuzOI.mjs';
29
30
  import './constants.mjs';
31
+ import '../shared/ccjk.Di1IYU3u.mjs';
30
32
  import './fs-operations.mjs';
31
33
  import 'node:fs/promises';
32
34
  import './json-config.mjs';
33
- import '../shared/ccjk.Ccrqt7u2.mjs';
34
35
  import './platform.mjs';
35
36
  import './main.mjs';
36
37
  import 'module';
@@ -39,6 +40,7 @@ import 'node:stream';
39
40
  import '../shared/ccjk.BBtCGd_g.mjs';
40
41
  import './index3.mjs';
41
42
  import '../shared/ccjk.DeWpAShp.mjs';
43
+ import '../shared/ccjk.4iw1XCF3.mjs';
42
44
 
43
45
  function getAuthTypeLabel(authType) {
44
46
  ensureI18nInitialized();
@@ -58,7 +60,7 @@ async function syncMyclaudeProfilesIfNeeded() {
58
60
  if (zcfConfig?.codeToolType !== "clavue") {
59
61
  return;
60
62
  }
61
- const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.H; });
63
+ const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.J; });
62
64
  syncMyclaudeProviderProfilesFromCurrentClaudeConfig();
63
65
  }
64
66
  async function configureIncrementalManagement() {
@@ -123,13 +125,9 @@ async function addProfileDirect() {
123
125
  await syncMyclaudeProfilesIfNeeded();
124
126
  }
125
127
  function getProviderDefaultModels(provider) {
126
- const defaults = provider?.claudeCode?.defaultModels || [];
127
- return {
128
- primaryModel: defaults[0],
129
- haikuModel: defaults[1] || defaults[0],
130
- sonnetModel: defaults[2] || defaults[0],
131
- opusModel: defaults[3]
132
- };
128
+ return resolveClaudeFamilyModelSlots({
129
+ defaultModels: provider?.claudeCode?.defaultModels
130
+ });
133
131
  }
134
132
  async function handleAddProfile() {
135
133
  console.log(a.green(`
@@ -1,13 +1,17 @@
1
- import { SETTINGS_FILE, CLAUDE_DIR } from './constants.mjs';
1
+ import { SETTINGS_FILE } from './constants.mjs';
2
+ import { n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
2
3
  import { exists, ensureDir } from './fs-operations.mjs';
3
4
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
4
- import { l as deepMerge } from './config.mjs';
5
+ import { q as deepMerge } from './config.mjs';
6
+ import { d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
5
7
  import 'node:os';
6
8
  import './index2.mjs';
7
9
  import 'node:fs';
8
10
  import 'node:process';
9
11
  import 'node:url';
10
- import '../shared/ccjk.bQ7Dh1g4.mjs';
12
+ import './ccjk-config.mjs';
13
+ import '../shared/ccjk.BBtCGd_g.mjs';
14
+ import './index3.mjs';
11
15
  import 'node:crypto';
12
16
  import 'node:fs/promises';
13
17
  import '../shared/ccjk.RyizuzOI.mjs';
@@ -26,10 +30,6 @@ import 'child_process';
26
30
  import 'node:path';
27
31
  import 'buffer';
28
32
  import 'string_decoder';
29
- import './ccjk-config.mjs';
30
- import '../shared/ccjk.BBtCGd_g.mjs';
31
- import './index3.mjs';
32
- import '../shared/ccjk.Ccrqt7u2.mjs';
33
33
  import './platform.mjs';
34
34
  import './main.mjs';
35
35
  import 'module';
@@ -49,7 +49,8 @@ function readClaudeConfig(configPath = SETTINGS_FILE) {
49
49
  }
50
50
  function writeClaudeConfig(config, options = {}, configPath = SETTINGS_FILE) {
51
51
  try {
52
- ensureDir(CLAUDE_DIR);
52
+ ensureDir(dirname(configPath));
53
+ normalizeClaudeFamilySettings(config);
53
54
  writeJsonConfig(configPath, config, {
54
55
  atomic: options.atomic !== false,
55
56
  pretty: true,
@@ -5,7 +5,7 @@ import { homedir } from 'node:os';
5
5
  import { CCJK_CONFIG_DIR, CODE_TOOL_INFO, CODE_TOOL_ALIASES, DEFAULT_CODE_TOOL_TYPE, isCodeToolType } from './constants.mjs';
6
6
  import { writeJsonConfig } from './json-config.mjs';
7
7
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
8
- import { g as getPlatform, h as commandExists } from './platform.mjs';
8
+ import { g as getPlatform, c as commandExists } from './platform.mjs';
9
9
  import process__default from 'node:process';
10
10
  import { i18n } from './index2.mjs';
11
11
  import { readZcfConfigAsync, updateZcfConfig } from './ccjk-config.mjs';
@@ -40,7 +40,7 @@ import 'node:stream';
40
40
  import './ccjk-config.mjs';
41
41
  import './index3.mjs';
42
42
  import './config.mjs';
43
- import '../shared/ccjk.Ccrqt7u2.mjs';
43
+ import '../shared/ccjk.Di1IYU3u.mjs';
44
44
  import './platform.mjs';
45
45
  import './prompts.mjs';
46
46
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -193,7 +193,7 @@ async function handleAddProvider() {
193
193
  defaultValue: true
194
194
  });
195
195
  if (setAsDefault) {
196
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.q; });
196
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.u; });
197
197
  const switched = await switchToProvider(provider.id);
198
198
  if (switched) {
199
199
  console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: provider.name })));
@@ -388,7 +388,7 @@ ${i18n.t("codex:copyingProvider", { name: provider.name })}`));
388
388
  defaultValue: false
389
389
  });
390
390
  if (setAsDefault) {
391
- const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.q; });
391
+ const { switchToProvider } = await import('./codex.mjs').then(function (n) { return n.u; });
392
392
  const switched = await switchToProvider(copiedProvider.id);
393
393
  if (switched) {
394
394
  console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: copiedProvider.name })));
@@ -37,7 +37,7 @@ import './fs-operations.mjs';
37
37
  import 'node:fs/promises';
38
38
  import './json-config.mjs';
39
39
  import './config.mjs';
40
- import '../shared/ccjk.Ccrqt7u2.mjs';
40
+ import '../shared/ccjk.Di1IYU3u.mjs';
41
41
  import './platform.mjs';
42
42
  import '../shared/ccjk.BFQ7yr5S.mjs';
43
43
  import './prompts.mjs';
@@ -64,6 +64,7 @@ async function addProviderToExisting(provider, apiKey, allowOverwrite = false) {
64
64
  providers: [provider],
65
65
  mcpServices: [],
66
66
  managed: true,
67
+ features: { goals: true },
67
68
  otherConfig: []
68
69
  };
69
70
  } else if (existingProviderIndex !== -1) {