ccjk 14.1.2 → 14.1.5

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 (75) hide show
  1. package/dist/chunks/api-cli.mjs +5 -5
  2. package/dist/chunks/api-config-selector.mjs +18 -5
  3. package/dist/chunks/api-providers.mjs +24 -9
  4. package/dist/chunks/auto-updater.mjs +13 -13
  5. package/dist/chunks/boost.mjs +1 -1
  6. package/dist/chunks/ccjk-all.mjs +4 -4
  7. package/dist/chunks/ccjk-config.mjs +78 -1
  8. package/dist/chunks/ccjk-mcp.mjs +4 -4
  9. package/dist/chunks/ccjk-setup.mjs +4 -4
  10. package/dist/chunks/ccr.mjs +11 -11
  11. package/dist/chunks/check-updates.mjs +3 -3
  12. package/dist/chunks/claude-code-incremental-manager.mjs +8 -6
  13. package/dist/chunks/claude-config.mjs +73 -0
  14. package/dist/chunks/claude-wrapper.mjs +1 -1
  15. package/dist/chunks/cli-hook.mjs +76 -1
  16. package/dist/chunks/code-type-resolver.mjs +14 -13
  17. package/dist/chunks/codex-config-switch.mjs +2 -2
  18. package/dist/chunks/codex-provider-manager.mjs +2 -2
  19. package/dist/chunks/codex.mjs +3 -3
  20. package/dist/chunks/config-switch.mjs +5 -5
  21. package/dist/chunks/config.mjs +531 -158
  22. package/dist/chunks/config2.mjs +22 -20
  23. package/dist/chunks/config3.mjs +6 -6
  24. package/dist/chunks/constants.mjs +20 -13
  25. package/dist/chunks/doctor.mjs +1 -1
  26. package/dist/chunks/features.mjs +59 -4
  27. package/dist/chunks/fs-operations.mjs +2 -14
  28. package/dist/chunks/index.mjs +1 -1
  29. package/dist/chunks/index10.mjs +115 -100
  30. package/dist/chunks/init.mjs +121 -53
  31. package/dist/chunks/installer.mjs +28 -21
  32. package/dist/chunks/mcp-cli.mjs +6 -6
  33. package/dist/chunks/mcp.mjs +6 -6
  34. package/dist/chunks/package.mjs +1 -1
  35. package/dist/chunks/platform.mjs +3 -3
  36. package/dist/chunks/prompts.mjs +9 -7
  37. package/dist/chunks/quick-actions.mjs +1 -1
  38. package/dist/chunks/quick-provider.mjs +23 -31
  39. package/dist/chunks/quick-setup.mjs +3 -4
  40. package/dist/chunks/simple-config.mjs +57 -16
  41. package/dist/chunks/slash-commands.mjs +1 -1
  42. package/dist/chunks/smart-guide.mjs +23 -10
  43. package/dist/chunks/status.mjs +28 -24
  44. package/dist/chunks/update.mjs +19 -18
  45. package/dist/chunks/upgrade.mjs +88 -5
  46. package/dist/chunks/version-checker.mjs +2 -2
  47. package/dist/chunks/zero-config.mjs +121 -16
  48. package/dist/cli.mjs +50 -27
  49. package/dist/i18n/locales/en/configuration.json +5 -3
  50. package/dist/i18n/locales/en/language.json +1 -1
  51. package/dist/i18n/locales/en/menu.json +8 -7
  52. package/dist/i18n/locales/en/multi-config.json +1 -1
  53. package/dist/i18n/locales/zh-CN/configuration.json +5 -3
  54. package/dist/i18n/locales/zh-CN/language.json +1 -1
  55. package/dist/i18n/locales/zh-CN/menu.json +8 -7
  56. package/dist/i18n/locales/zh-CN/multi-config.json +1 -1
  57. package/dist/index.d.mts +13 -11
  58. package/dist/index.d.ts +13 -11
  59. package/dist/index.mjs +7 -7
  60. package/dist/shared/{ccjk.B6VCKdyy.mjs → ccjk.BXTrU9TN.mjs} +31 -68
  61. package/dist/shared/{ccjk.DScm_NnL.mjs → ccjk.Ccrqt7u2.mjs} +30 -1
  62. package/dist/shared/{ccjk.CVjfbEIj.mjs → ccjk.DZtwozOG.mjs} +1 -1
  63. package/dist/shared/{ccjk.D6wx-rxT.mjs → ccjk.Dxgd2vjc.mjs} +3 -3
  64. package/dist/shared/{ccjk.BO45TPXJ.mjs → ccjk.K8c6VnM2.mjs} +2 -2
  65. package/dist/shared/{ccjk.BJENIVf7.mjs → ccjk.MpkxXQJL.mjs} +179 -19
  66. package/dist/shared/{ccjk.Dh6Be-ef.mjs → ccjk.ygJzcD-n.mjs} +28 -24
  67. package/package.json +1 -30
  68. package/dist/chunks/auto-fix.mjs +0 -253
  69. package/dist/chunks/auto-init.mjs +0 -311
  70. package/dist/chunks/auto-upgrade.mjs +0 -152
  71. package/dist/chunks/migrator.mjs +0 -178
  72. package/dist/shared/ccjk.DDq2hqA5.mjs +0 -158
  73. package/dist/shared/ccjk.KPLeMP-o.mjs +0 -79
  74. package/templates/common/workflow/essential/en/agents/planner.md +0 -116
  75. package/templates/common/workflow/essential/zh-CN/agents/planner.md +0 -116
@@ -1,5 +1,8 @@
1
1
  import { i as inquirer } from './index6.mjs';
2
- import { checkForUpdates, performUpgrade } from './auto-upgrade.mjs';
2
+ import { execSync } from 'node:child_process';
3
+ import { readFileSync } from 'node:fs';
4
+ import { homedir } from 'node:os';
5
+ import { join } from 'node:path';
3
6
  import 'node:readline';
4
7
  import '../shared/ccjk.BAGoDD49.mjs';
5
8
  import 'stream';
@@ -11,13 +14,93 @@ import 'node:util';
11
14
  import 'tty';
12
15
  import 'fs';
13
16
  import 'child_process';
14
- import 'node:path';
15
- import 'node:os';
16
17
  import 'node:crypto';
17
18
  import 'buffer';
18
19
  import 'string_decoder';
19
- import 'node:child_process';
20
- import 'node:fs';
20
+
21
+ function getCurrentVersion() {
22
+ try {
23
+ const packagePath = join(__dirname, "../../package.json");
24
+ const pkg = JSON.parse(readFileSync(packagePath, "utf-8"));
25
+ return pkg.version;
26
+ } catch {
27
+ return "0.0.0";
28
+ }
29
+ }
30
+ async function getLatestVersion() {
31
+ try {
32
+ const result = execSync("npm view @cometx/ccjk version", {
33
+ encoding: "utf-8",
34
+ timeout: 3e3,
35
+ stdio: ["pipe", "pipe", "ignore"]
36
+ // 忽略 stderr
37
+ });
38
+ return result.trim();
39
+ } catch {
40
+ return getCurrentVersion();
41
+ }
42
+ }
43
+ function compareVersions(v1, v2) {
44
+ const parts1 = v1.split(".").map(Number);
45
+ const parts2 = v2.split(".").map(Number);
46
+ for (let i = 0; i < 3; i++) {
47
+ const p1 = parts1[i] || 0;
48
+ const p2 = parts2[i] || 0;
49
+ if (p1 > p2)
50
+ return 1;
51
+ if (p1 < p2)
52
+ return -1;
53
+ }
54
+ return 0;
55
+ }
56
+ function detectUpdateType(current, latest) {
57
+ const c = current.split(".").map(Number);
58
+ const l = latest.split(".").map(Number);
59
+ if (l[0] > c[0])
60
+ return "major";
61
+ if (l[1] > c[1])
62
+ return "minor";
63
+ if (l[2] > c[2])
64
+ return "patch";
65
+ return null;
66
+ }
67
+ async function checkForUpdates() {
68
+ const current = getCurrentVersion();
69
+ const latest = await getLatestVersion();
70
+ const hasUpdate = compareVersions(latest, current) > 0;
71
+ const updateType = hasUpdate ? detectUpdateType(current, latest) : null;
72
+ return {
73
+ current,
74
+ latest,
75
+ hasUpdate,
76
+ updateType
77
+ };
78
+ }
79
+ join(homedir(), ".claude", ".upgrade-state.json");
80
+ async function performUpgrade() {
81
+ try {
82
+ console.log("\u{1F680} Upgrading CCJK...");
83
+ let packageManager = "npm";
84
+ try {
85
+ execSync("pnpm --version", { stdio: "ignore" });
86
+ packageManager = "pnpm";
87
+ } catch {
88
+ try {
89
+ execSync("yarn --version", { stdio: "ignore" });
90
+ packageManager = "yarn";
91
+ } catch {
92
+ }
93
+ }
94
+ const command = packageManager === "yarn" ? "yarn global add @cometx/ccjk@latest" : `${packageManager} add -g @cometx/ccjk@latest`;
95
+ console.log(` Running: ${command}`);
96
+ execSync(command, { stdio: "inherit" });
97
+ console.log("\n\u2705 Upgrade completed!");
98
+ return true;
99
+ } catch (error) {
100
+ console.error("\u274C Upgrade failed:", error);
101
+ return false;
102
+ }
103
+ }
21
104
 
22
105
  async function upgrade() {
23
106
  console.log("\u{1F50D} Checking for updates...\n");
@@ -865,8 +865,8 @@ async function checkCometixLineVersion() {
865
865
  };
866
866
  }
867
867
  async function checkMyclaudeVersion() {
868
- const currentVersion = await getInstalledVersion("myclaude");
869
- const latestVersion = await getLatestVersion("myclaude-code");
868
+ const currentVersion = await getInstalledVersion("clavue");
869
+ const latestVersion = await getLatestVersion("clavue");
870
870
  return {
871
871
  installed: currentVersion !== null,
872
872
  currentVersion,
@@ -1,10 +1,11 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import a from './index5.mjs';
3
3
  import { i as inquirer } from './index6.mjs';
4
- import { SETTINGS_FILE, CLAUDE_DIR } from './constants.mjs';
4
+ import { ZCF_CONFIG_FILE } from './constants.mjs';
5
5
  import { i18n } from './index2.mjs';
6
+ import { updateTomlConfig } from './ccjk-config.mjs';
6
7
  import { ensureDir, writeFileAtomic } from './fs-operations.mjs';
7
- import { m as mergeAndCleanPermissions } from '../shared/ccjk.DScm_NnL.mjs';
8
+ import { r as resolveClaudeFamilySettingsTarget, m as mergeAndCleanPermissions } from '../shared/ccjk.Ccrqt7u2.mjs';
8
9
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
9
10
  import '../shared/ccjk.BAGoDD49.mjs';
10
11
  import 'node:readline';
@@ -24,6 +25,10 @@ import 'buffer';
24
25
  import 'string_decoder';
25
26
  import '../shared/ccjk.bQ7Dh1g4.mjs';
26
27
  import 'node:url';
28
+ import '../shared/ccjk.BBtCGd_g.mjs';
29
+ import './index3.mjs';
30
+ import './json-config.mjs';
31
+ import '../shared/ccjk.RyizuzOI.mjs';
27
32
  import 'node:fs/promises';
28
33
 
29
34
  const MAX_PRESET = {
@@ -224,30 +229,99 @@ const SAFE_PRESET = {
224
229
  ]
225
230
  };
226
231
  const PRESETS = [MAX_PRESET, DEV_PRESET, SAFE_PRESET];
227
- function loadCurrentSettings() {
228
- if (!existsSync(SETTINGS_FILE)) {
232
+ function getArchetypeProfile(archetype = "pc-dev") {
233
+ switch (archetype) {
234
+ case "app-dev":
235
+ return {
236
+ id: "app-dev",
237
+ name: "Application Development",
238
+ goal: "Plan, build, verify, and ship application features with a product-focused workflow"
239
+ };
240
+ case "text-studio":
241
+ return {
242
+ id: "text-studio",
243
+ name: "Text Studio",
244
+ goal: "Research, draft, edit, and review text-heavy work with a documentation-first workflow"
245
+ };
246
+ case "service-ops":
247
+ return {
248
+ id: "service-ops",
249
+ name: "Service Operations",
250
+ goal: "Inspect, operate, and maintain services safely with verification and controlled changes"
251
+ };
252
+ case "research":
253
+ return {
254
+ id: "research",
255
+ name: "Research and Analysis",
256
+ goal: "Investigate code, docs, and technical options before applying targeted changes"
257
+ };
258
+ case "automation":
259
+ return {
260
+ id: "automation",
261
+ name: "Automation and Scripting",
262
+ goal: "Automate repetitive development and operations tasks with reliable execution flows"
263
+ };
264
+ case "custom":
265
+ return {
266
+ id: "custom",
267
+ name: "Custom Workflow",
268
+ goal: "Adapt CCJK to a custom working style and toolchain combination"
269
+ };
270
+ case "pc-dev":
271
+ default:
272
+ return {
273
+ id: "pc-dev",
274
+ name: "PC Software Development",
275
+ goal: "Build, debug, test, and ship software efficiently"
276
+ };
277
+ }
278
+ }
279
+ function getCapabilityProfile(archetype = "pc-dev") {
280
+ return {
281
+ coding: archetype !== "text-studio" && archetype !== "research",
282
+ planning: true,
283
+ taskTracking: true,
284
+ memory: true,
285
+ browserAutomation: false,
286
+ research: true,
287
+ documentAuthoring: archetype === "text-studio" || archetype === "research",
288
+ serviceOps: archetype === "service-ops",
289
+ multiAgent: archetype !== "custom"
290
+ };
291
+ }
292
+ function getOperatorMode(archetype = "pc-dev") {
293
+ if (archetype === "research" || archetype === "text-studio") {
294
+ return "planning-first";
295
+ }
296
+ if (archetype === "custom") {
297
+ return "conversational";
298
+ }
299
+ return "execution-first";
300
+ }
301
+ function loadCurrentSettings(target = resolveClaudeFamilySettingsTarget()) {
302
+ if (!existsSync(target.settingsFile)) {
229
303
  return {};
230
304
  }
231
305
  try {
232
- const content = readFileSync(SETTINGS_FILE, "utf-8");
306
+ const content = readFileSync(target.settingsFile, "utf-8");
233
307
  return JSON.parse(content);
234
308
  } catch {
235
309
  return {};
236
310
  }
237
311
  }
238
- function saveSettings(settings) {
239
- ensureDir(CLAUDE_DIR);
240
- writeFileAtomic(SETTINGS_FILE, JSON.stringify(settings, null, 2));
312
+ function saveSettings(settings, target = resolveClaudeFamilySettingsTarget()) {
313
+ ensureDir(target.configDir);
314
+ writeFileAtomic(target.settingsFile, JSON.stringify(settings, null, 2));
241
315
  }
242
- function backupSettings() {
243
- if (!existsSync(SETTINGS_FILE)) {
316
+ function backupSettings(target = resolveClaudeFamilySettingsTarget()) {
317
+ if (!existsSync(target.settingsFile)) {
244
318
  return null;
245
319
  }
246
320
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, -5);
247
- const backupDir = `${CLAUDE_DIR}/backup`;
321
+ const backupDir = `${target.configDir}/backup`;
248
322
  ensureDir(backupDir);
249
323
  const backupPath = `${backupDir}/settings-${timestamp}.json`;
250
- const content = readFileSync(SETTINGS_FILE, "utf-8");
324
+ const content = readFileSync(target.settingsFile, "utf-8");
251
325
  writeFileAtomic(backupPath, content);
252
326
  return backupPath;
253
327
  }
@@ -268,6 +342,35 @@ function applyPreset(preset, currentSettings) {
268
342
  }
269
343
  return newSettings;
270
344
  }
345
+ function applyAdaptationPreset(preset, archetype = "pc-dev") {
346
+ const safetyLevel = preset.id === "safe" ? "safe" : preset.id === "max" ? "max" : "dev";
347
+ updateTomlConfig(ZCF_CONFIG_FILE, {
348
+ adaptation: {
349
+ archetypeProfile: getArchetypeProfile(archetype),
350
+ capabilityProfile: getCapabilityProfile(archetype),
351
+ policyProfile: {
352
+ permissionPreset: safetyLevel,
353
+ verificationMode: safetyLevel === "safe" ? "manual" : "required",
354
+ destructiveActionPolicy: safetyLevel === "max" ? "confirm" : "confirm",
355
+ workflowFallbackMode: "graceful"
356
+ },
357
+ contextProfile: {
358
+ memoryMode: archetype === "custom" ? "session-only" : "project-aware",
359
+ compressionMode: "runtime-native",
360
+ instructionLayering: "runtime-first"
361
+ },
362
+ profileSelection: {
363
+ workflowPack: archetype === "service-ops" ? "service-operations" : "desktop-engineering",
364
+ toolPack: archetype === "text-studio" ? "document-authoring" : "typescript-node-react"
365
+ },
366
+ uiProfile: {
367
+ language: i18n.language === "zh-CN" ? "zh-CN" : "en",
368
+ outputStyle: "concise",
369
+ operatorMode: getOperatorMode(archetype)
370
+ }
371
+ }
372
+ });
373
+ }
271
374
  function showPresetDiff(preset, currentSettings) {
272
375
  const isZh = i18n.language === "zh-CN";
273
376
  const currentPermissions = new Set(currentSettings.permissions?.allow || []);
@@ -301,6 +404,7 @@ function showPresetDiff(preset, currentSettings) {
301
404
  }
302
405
  async function zeroConfig(options = {}) {
303
406
  const isZh = i18n.language === "zh-CN";
407
+ const target = resolveClaudeFamilySettingsTarget();
304
408
  if (options.list) {
305
409
  console.log("");
306
410
  console.log(a.bold.cyan(isZh ? "\u{1F4E6} \u53EF\u7528\u7684\u6743\u9650\u9884\u8BBE" : "\u{1F4E6} Available Permission Presets"));
@@ -343,7 +447,7 @@ async function zeroConfig(options = {}) {
343
447
  return;
344
448
  }
345
449
  }
346
- const currentSettings = loadCurrentSettings();
450
+ const currentSettings = loadCurrentSettings(target);
347
451
  showPresetDiff(selectedPreset, currentSettings);
348
452
  if (!options.preset) {
349
453
  const { confirm } = await inquirer.prompt({
@@ -358,16 +462,17 @@ async function zeroConfig(options = {}) {
358
462
  }
359
463
  }
360
464
  if (!options.skipBackup) {
361
- const backupPath = backupSettings();
465
+ const backupPath = backupSettings(target);
362
466
  if (backupPath) {
363
467
  console.log(a.gray(`\u2714 ${isZh ? "\u5DF2\u5907\u4EFD\u5230" : "Backed up to"}: ${backupPath}`));
364
468
  }
365
469
  }
366
470
  const newSettings = applyPreset(selectedPreset, currentSettings);
367
- saveSettings(newSettings);
471
+ saveSettings(newSettings, target);
472
+ applyAdaptationPreset(selectedPreset, options.archetype);
368
473
  console.log("");
369
474
  console.log(a.green(`\u2705 ${isZh ? "\u6743\u9650\u9884\u8BBE\u5DF2\u5E94\u7528" : "Permission preset applied"}: ${selectedPreset.name}`));
370
- console.log(a.gray(` ${isZh ? "\u914D\u7F6E\u6587\u4EF6" : "Config file"}: ${SETTINGS_FILE}`));
475
+ console.log(a.gray(` ${isZh ? "\u914D\u7F6E\u6587\u4EF6" : "Config file"}: ${target.settingsFile}`));
371
476
  console.log("");
372
477
  }
373
478
 
package/dist/cli.mjs CHANGED
@@ -2453,6 +2453,45 @@ function extractLanguageOptions(options) {
2453
2453
  skipPrompt: typeof obj.skipPrompt === "boolean" ? obj.skipPrompt : void 0
2454
2454
  };
2455
2455
  }
2456
+ function classifyStartupPath(args) {
2457
+ const positionalArgs = [];
2458
+ for (let index = 0; index < args.length; index += 1) {
2459
+ const arg = args[index];
2460
+ if (!arg)
2461
+ continue;
2462
+ if (arg === "-l" || arg === "--lang" || arg === "-g" || arg === "--all-lang" || arg === "-T" || arg === "--code-type") {
2463
+ index += 1;
2464
+ continue;
2465
+ }
2466
+ if (arg.startsWith("--lang=") || arg.startsWith("--all-lang=") || arg.startsWith("--code-type=")) {
2467
+ continue;
2468
+ }
2469
+ positionalArgs.push(arg);
2470
+ }
2471
+ const firstToken = positionalArgs[0];
2472
+ if (!firstToken) {
2473
+ return { args, kind: "interactive" };
2474
+ }
2475
+ if (firstToken === "-h" || firstToken === "--help" || firstToken === "help") {
2476
+ return { args, kind: "help" };
2477
+ }
2478
+ if (firstToken === "-v" || firstToken === "--version") {
2479
+ return { args, kind: "version" };
2480
+ }
2481
+ if (firstToken.startsWith("/")) {
2482
+ return { args, kind: "slash" };
2483
+ }
2484
+ if (firstToken.startsWith("-")) {
2485
+ return { args, kind: "plain-args" };
2486
+ }
2487
+ if (shouldBootstrapCloudServicesForArgs(args)) {
2488
+ return { args, kind: "command" };
2489
+ }
2490
+ if (positionalArgs.length === 1) {
2491
+ return { args, kind: "quick-provider" };
2492
+ }
2493
+ return { args, kind: "plain-args" };
2494
+ }
2456
2495
  async function setupCommandsLazy(cli) {
2457
2496
  const envLang = process__default.env.CCJK_LANG;
2458
2497
  if (envLang) {
@@ -2500,38 +2539,22 @@ ${cmd.deprecationMessage}
2500
2539
  }
2501
2540
  async function runLazyCli() {
2502
2541
  const spinner = await showStartupSpinner();
2542
+ const startupPath = classifyStartupPath(process__default.argv.slice(2));
2503
2543
  try {
2504
- try {
2505
- const { runMigration } = await import('./chunks/migrator.mjs');
2506
- runMigration();
2507
- } catch {
2508
- }
2509
- bootstrapCloudServices();
2510
- try {
2511
- const { autoInitBrainHooks } = await import('./chunks/auto-init.mjs');
2512
- await autoInitBrainHooks();
2513
- } catch {
2514
- }
2515
- try {
2516
- const { runAutoFixOnStartup } = await import('./chunks/auto-fix.mjs');
2517
- await runAutoFixOnStartup();
2518
- } catch {
2544
+ if (startupPath.kind === "command") {
2545
+ bootstrapCloudServices();
2519
2546
  }
2520
- try {
2521
- const { autoCheckUpdates } = await import('./chunks/auto-upgrade.mjs');
2522
- autoCheckUpdates(true);
2523
- } catch {
2524
- }
2525
- const handled = await tryQuickProviderLaunch();
2526
- if (handled) {
2527
- spinner?.stop();
2528
- return;
2547
+ if (startupPath.kind === "quick-provider") {
2548
+ const handled = await tryQuickProviderLaunch();
2549
+ if (handled) {
2550
+ spinner?.stop();
2551
+ return;
2552
+ }
2529
2553
  }
2530
- const args = process__default.argv.slice(2);
2531
- if (args.length > 0 && args[0].startsWith("/")) {
2554
+ if (startupPath.kind === "slash") {
2532
2555
  spinner?.stop();
2533
2556
  const { executeSlashCommand } = await import('./chunks/slash-commands.mjs');
2534
- const slashHandled = await executeSlashCommand(args.join(" "));
2557
+ const slashHandled = await executeSlashCommand(startupPath.args.join(" "));
2535
2558
  if (slashHandled) {
2536
2559
  return;
2537
2560
  }
@@ -90,16 +90,18 @@
90
90
  "guidanceStep1": "1. Open {{runtime}} and use slash commands:",
91
91
  "guidanceStep1Detail": "/ccjk:feat - Feature Dev /ccjk:git-commit - Smart Commit",
92
92
  "guidanceStep1Detail2": "/ccjk:init-project - Init Project /commands - View installed",
93
- "guidanceStep1MyclaudeDetail": "/ccjk:feat - Feature Dev /ccjk:init-project - Init Project",
94
- "guidanceStep1MyclaudeDetail2": "/commit - Smart Commit /workflow - Plan Feature",
93
+ "guidanceStep1MyclaudeDetail": "/ccjk:feat - Feature Dev /ccjk:git-commit - Smart Commit",
94
+ "guidanceStep1MyclaudeDetail2": "/ccjk:init-project - Init Project /commands - View installed",
95
95
  "guidanceStep2": "2. Example:",
96
96
  "guidanceStep2Example": "/ccjk:feat implement user login feature",
97
97
  "guidanceStep3": "3. View all features:",
98
98
  "guidanceStep3Command": "npx ccjk features",
99
99
  "guidanceStep3Myclaude": "3. View installed commands:",
100
100
  "guidanceStep3MyclaudeCommand": "/commands",
101
- "guidanceStep4": "4. Having issues? Run:",
101
+ "guidanceStep4": "4. Verify setup health:",
102
102
  "guidanceStep4Command": "npx ccjk doctor",
103
+ "guidanceStep5": "5. Keep CCJK updated:",
104
+ "guidanceStep5Command": "npx ccjk update",
103
105
  "migration": {
104
106
  "title": "Configuration Migration",
105
107
  "migrationNeeded": "Configuration migration needed for Claude Code CLI 2.0-2.1 support",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "selectScriptLang": "Select CCJK display language",
3
- "selectConfigLang": "Select Claude Code configuration language",
3
+ "selectConfigLang": "Select {{runtime}} configuration language",
4
4
  "selectAiOutputLang": "Select AI output language",
5
5
  "aiOutputLangHint": "AI will respond to you in this language",
6
6
  "enterCustomLanguage": "Enter custom language (e.g., Japanese, French, etc.)",
@@ -49,6 +49,7 @@
49
49
  "codexPreset": "Efficiency Center",
50
50
  "codexCheckUpdates": "Update Codex",
51
51
  "codexUninstall": "Uninstall Codex",
52
+ "checkUpdates": "Check Updates",
52
53
  "mcpMarket": "MCP Market",
53
54
  "marketplace": "Marketplace",
54
55
  "hooksSync": "Hooks Sync",
@@ -85,15 +86,15 @@
85
86
  },
86
87
  "configCenter": {
87
88
  "api": "API Configuration",
88
- "apiDesc": "One-click API key setup (Anthropic/OpenRouter/Custom)",
89
+ "apiDesc": "Configure official login, CCR, or Clavue provider profiles",
89
90
  "mcp": "MCP Configuration",
90
91
  "mcpDesc": "Configure Model Context Protocol services",
91
92
  "model": "Model Configuration",
92
93
  "modelDesc": "Select and configure AI models",
93
94
  "memory": "Memory Configuration",
94
95
  "memoryDesc": "Manage project memory sync and AI response preferences",
95
- "permission": "Permission Configuration",
96
- "permissionDesc": "Manage tool and file permissions",
96
+ "permission": "One-Click Permissions",
97
+ "permissionDesc": "Apply recommended env and permission presets to the active runtime",
97
98
  "configSwitch": "Config Switch",
98
99
  "configSwitchDesc": "Switch between configuration profiles",
99
100
  "context": "Context Configuration",
@@ -144,12 +145,12 @@
144
145
  "config": "Primary config: ~/.claude/settings.json",
145
146
  "menuTitle": "Claude Control Center"
146
147
  },
147
- "myclaude": {
148
- "title": "myclaude Workspace",
148
+ "clavue": {
149
+ "title": "Clavue Workspace",
149
150
  "summary": "Provider-first control center with explicit runtime status at startup.",
150
151
  "focus": "Provider profiles, routing state, model slots, and Claude-family compatible configuration.",
151
- "config": "Primary config: ~/.claude.json (runtime) + ~/.ccjk/config.toml (reusable profiles)",
152
- "menuTitle": "myclaude Control Center"
152
+ "config": "Primary config: ~/.clavue/.clavue.json (runtime) + ~/.ccjk/config.toml (reusable profiles)",
153
+ "menuTitle": "Clavue Control Center"
153
154
  },
154
155
  "codex": {
155
156
  "title": "Codex Workspace",
@@ -14,7 +14,7 @@
14
14
  "failedToSwitchToCcr": "Failed to switch to CCR proxy: {error}",
15
15
  "successfullySwitchedToProfile": "Successfully switched to profile: {{name}}",
16
16
  "failedToSwitchToProfile": "Failed to switch to profile: {{error}}",
17
- "incrementalManagementTitle": "📋 Claude Code Configuration Management",
17
+ "incrementalManagementTitle": "📋 {{runtime}} Configuration Management",
18
18
  "currentProfileCount": "Current profile count: {{count}}",
19
19
  "currentDefaultProfile": "Current default profile: {{profile}}",
20
20
  "addProfile": "Add Profile",
@@ -88,16 +88,18 @@
88
88
  "guidanceStep1": "1. 打开 {{runtime}},使用斜杠命令:",
89
89
  "guidanceStep1Detail": "/ccjk:feat - 功能开发 /ccjk:git-commit - 智能提交",
90
90
  "guidanceStep1Detail2": "/ccjk:init-project - 初始化项目 /commands - 查看已安装",
91
- "guidanceStep1MyclaudeDetail": "/ccjk:feat - 功能开发 /ccjk:init-project - 初始化项目",
92
- "guidanceStep1MyclaudeDetail2": "/commit - 智能提交 /workflow - 规划功能",
91
+ "guidanceStep1MyclaudeDetail": "/ccjk:feat - 功能开发 /ccjk:git-commit - 智能提交",
92
+ "guidanceStep1MyclaudeDetail2": "/ccjk:init-project - 初始化项目 /commands - 查看已安装",
93
93
  "guidanceStep2": "2. 示例:",
94
94
  "guidanceStep2Example": "/ccjk:feat 实现用户登录功能",
95
95
  "guidanceStep3": "3. 查看所有功能:",
96
96
  "guidanceStep3Command": "npx ccjk features",
97
97
  "guidanceStep3Myclaude": "3. 查看已安装命令:",
98
98
  "guidanceStep3MyclaudeCommand": "/commands",
99
- "guidanceStep4": "4. 遇到问题?运行:",
99
+ "guidanceStep4": "4. 运行健康检查:",
100
100
  "guidanceStep4Command": "npx ccjk doctor",
101
+ "guidanceStep5": "5. 更新 CCJK:",
102
+ "guidanceStep5Command": "npx ccjk update",
101
103
  "migration": {
102
104
  "title": "配置迁移",
103
105
  "migrationNeeded": "需要迁移配置以支持 Claude Code CLI 2.0-2.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "selectScriptLang": "选择CCJK显示语言",
3
- "selectConfigLang": "选择 Claude Code 配置语言",
3
+ "selectConfigLang": "选择 {{runtime}} 配置语言",
4
4
  "selectAiOutputLang": "选择 AI 输出语言",
5
5
  "aiOutputLangHint": "AI 将使用此语言回复你的问题",
6
6
  "enterCustomLanguage": "请输入自定义语言(例如:Japanese, French 等)",
@@ -49,6 +49,7 @@
49
49
  "codexPreset": "效率中心",
50
50
  "codexCheckUpdates": "更新 Codex",
51
51
  "codexUninstall": "卸载 Codex",
52
+ "checkUpdates": "检查更新",
52
53
  "mcpMarket": "MCP 市场",
53
54
  "marketplace": "扩展市场",
54
55
  "hooksSync": "Hooks 同步",
@@ -85,15 +86,15 @@
85
86
  },
86
87
  "configCenter": {
87
88
  "api": "API 配置",
88
- "apiDesc": "一键配置 API 密钥(Anthropic/OpenRouter/自定义)",
89
+ "apiDesc": "配置官方登录、CCR Clavue Provider 档案",
89
90
  "mcp": "MCP 配置",
90
91
  "mcpDesc": "配置 Model Context Protocol 服务",
91
92
  "model": "模型配置",
92
93
  "modelDesc": "选择和配置 AI 模型",
93
94
  "memory": "记忆配置",
94
95
  "memoryDesc": "管理项目记忆同步与 AI 回复偏好",
95
- "permission": "权限配置",
96
- "permissionDesc": "管理工具和文件权限",
96
+ "permission": "一键权限",
97
+ "permissionDesc": "向当前运行时应用推荐环境变量和权限预设",
97
98
  "configSwitch": "配置切换",
98
99
  "configSwitchDesc": "在配置文件之间切换",
99
100
  "context": "上下文配置",
@@ -158,12 +159,12 @@
158
159
  "config": "使用当前激活工具的配置档案。",
159
160
  "menuTitle": "CCJK 控制中心"
160
161
  },
161
- "myclaude": {
162
- "title": "myclaude 工作台",
162
+ "clavue": {
163
+ "title": "Clavue 工作台",
163
164
  "summary": "面向 Provider 的控制中心,启动时应明确展示当前运行态。",
164
165
  "focus": "Provider 档案、路由状态、模型槽位与 Claude 家族兼容配置。",
165
- "config": "主配置文件:~/.claude.json(运行态) + ~/.ccjk/config.toml(可复用档案)",
166
- "menuTitle": "myclaude 控制中心"
166
+ "config": "主配置文件:~/.clavue/.clavue.json(运行态) + ~/.ccjk/config.toml(可复用档案)",
167
+ "menuTitle": "Clavue 控制中心"
167
168
  }
168
169
  },
169
170
  "menu": {
@@ -14,7 +14,7 @@
14
14
  "failedToSwitchToCcr": "切换到 CCR 代理失败:{error}",
15
15
  "successfullySwitchedToProfile": "成功切换到配置文件:{{name}}",
16
16
  "failedToSwitchToProfile": "切换到配置文件失败:{{error}}",
17
- "incrementalManagementTitle": "📋 Claude Code 配置管理",
17
+ "incrementalManagementTitle": "📋 {{runtime}} 配置管理",
18
18
  "currentProfileCount": "当前配置数量:{{count}}",
19
19
  "currentDefaultProfile": "当前默认配置:{{profile}}",
20
20
  "addProfile": "添加配置",