ccjk 10.1.0 → 10.3.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.
Files changed (115) hide show
  1. package/README.md +28 -0
  2. package/dist/chunks/agent-teams.mjs +1 -1
  3. package/dist/chunks/agent.mjs +1 -1
  4. package/dist/chunks/api-providers.mjs +1 -1
  5. package/dist/chunks/api.mjs +3 -3
  6. package/dist/chunks/auto-bootstrap.mjs +1 -1
  7. package/dist/chunks/auto-updater.mjs +1 -1
  8. package/dist/{shared/ccjk.Br91zBIG.mjs → chunks/banner.mjs} +52 -3
  9. package/dist/chunks/boost.mjs +2 -2
  10. package/dist/chunks/ccjk-agents.mjs +1 -1
  11. package/dist/chunks/ccjk-all.mjs +1 -1
  12. package/dist/chunks/ccjk-config.mjs +1 -1
  13. package/dist/chunks/ccjk-hooks.mjs +1 -1
  14. package/dist/chunks/ccjk-mcp.mjs +2 -2
  15. package/dist/chunks/ccjk-setup.mjs +1 -1
  16. package/dist/chunks/ccjk-skills.mjs +1 -1
  17. package/dist/chunks/ccr.mjs +11 -10
  18. package/dist/chunks/ccu.mjs +1 -1
  19. package/dist/chunks/check-updates.mjs +4 -3
  20. package/dist/chunks/claude-code-config-manager.mjs +8 -7
  21. package/dist/chunks/claude-code-incremental-manager.mjs +3 -2
  22. package/dist/chunks/claude-config.mjs +3 -3
  23. package/dist/chunks/claude-wrapper.mjs +2 -2
  24. package/dist/chunks/codex-config-switch.mjs +3 -2
  25. package/dist/chunks/codex-provider-manager.mjs +3 -2
  26. package/dist/chunks/codex-uninstaller.mjs +2 -2
  27. package/dist/chunks/codex.mjs +5 -5
  28. package/dist/chunks/commands.mjs +88 -391
  29. package/dist/chunks/commands2.mjs +391 -88
  30. package/dist/chunks/completion.mjs +1 -1
  31. package/dist/chunks/config-consolidator.mjs +2 -2
  32. package/dist/chunks/config-switch.mjs +4 -3
  33. package/dist/chunks/config.mjs +6 -98
  34. package/dist/chunks/config2.mjs +411 -400
  35. package/dist/chunks/config3.mjs +401 -410
  36. package/dist/chunks/constants.mjs +1 -1
  37. package/dist/chunks/context.mjs +283 -1
  38. package/dist/chunks/dashboard.mjs +365 -0
  39. package/dist/chunks/doctor.mjs +4 -4
  40. package/dist/chunks/features.mjs +12 -11
  41. package/dist/chunks/fs-operations.mjs +1 -1
  42. package/dist/chunks/health-alerts.mjs +304 -0
  43. package/dist/chunks/health-check.mjs +532 -0
  44. package/dist/chunks/index.mjs +10 -177
  45. package/dist/chunks/index2.mjs +168 -1162
  46. package/dist/chunks/index3.mjs +1076 -910
  47. package/dist/chunks/index4.mjs +947 -137
  48. package/dist/chunks/index5.mjs +167 -635
  49. package/dist/chunks/index6.mjs +663 -0
  50. package/dist/chunks/init.mjs +19 -19
  51. package/dist/chunks/installer.mjs +649 -147
  52. package/dist/chunks/installer2.mjs +147 -649
  53. package/dist/chunks/interview.mjs +2 -2
  54. package/dist/chunks/marketplace.mjs +1 -1
  55. package/dist/chunks/mcp.mjs +5 -4
  56. package/dist/chunks/menu.mjs +22 -9
  57. package/dist/chunks/metrics-display.mjs +152 -0
  58. package/dist/chunks/migrator.mjs +1 -1
  59. package/dist/chunks/monitor.mjs +2 -2
  60. package/dist/chunks/notification.mjs +1 -1
  61. package/dist/chunks/onboarding.mjs +2 -2
  62. package/dist/chunks/package.mjs +1 -1
  63. package/dist/chunks/permission-manager.mjs +2 -2
  64. package/dist/chunks/permissions.mjs +1 -1
  65. package/dist/chunks/persistence-manager.mjs +781 -0
  66. package/dist/chunks/persistence.mjs +667 -0
  67. package/dist/chunks/platform.mjs +1 -1
  68. package/dist/chunks/plugin.mjs +1 -1
  69. package/dist/chunks/prompts.mjs +1 -1
  70. package/dist/chunks/providers.mjs +1 -1
  71. package/dist/chunks/quick-actions.mjs +321 -0
  72. package/dist/chunks/quick-provider.mjs +2 -0
  73. package/dist/chunks/quick-setup.mjs +9 -8
  74. package/dist/chunks/silent-updater.mjs +1 -1
  75. package/dist/chunks/simple-config.mjs +3 -8
  76. package/dist/chunks/skill.mjs +1 -1
  77. package/dist/chunks/skills-sync.mjs +1 -1
  78. package/dist/chunks/skills.mjs +1 -1
  79. package/dist/chunks/slash-commands.mjs +208 -0
  80. package/dist/chunks/smart-defaults.mjs +1 -1
  81. package/dist/chunks/startup.mjs +1 -1
  82. package/dist/chunks/stats.mjs +1 -1
  83. package/dist/chunks/status.mjs +31 -2
  84. package/dist/chunks/team.mjs +1 -1
  85. package/dist/chunks/thinking.mjs +2 -2
  86. package/dist/chunks/uninstall.mjs +5 -5
  87. package/dist/chunks/update.mjs +8 -7
  88. package/dist/chunks/upgrade-manager.mjs +2 -2
  89. package/dist/chunks/version-checker.mjs +3 -3
  90. package/dist/chunks/vim.mjs +1 -1
  91. package/dist/chunks/zero-config.mjs +359 -0
  92. package/dist/cli.mjs +212 -21
  93. package/dist/i18n/locales/en/cli.json +14 -1
  94. package/dist/i18n/locales/en/common.json +27 -0
  95. package/dist/i18n/locales/en/configuration.json +33 -0
  96. package/dist/i18n/locales/en/context.json +54 -1
  97. package/dist/i18n/locales/en/dashboard.json +78 -0
  98. package/dist/i18n/locales/en/persistence.json +127 -0
  99. package/dist/i18n/locales/en/quick-actions.json +78 -0
  100. package/dist/i18n/locales/zh-CN/cli.json +14 -1
  101. package/dist/i18n/locales/zh-CN/common.json +27 -0
  102. package/dist/i18n/locales/zh-CN/configuration.json +33 -0
  103. package/dist/i18n/locales/zh-CN/context.json +54 -1
  104. package/dist/i18n/locales/zh-CN/dashboard.json +78 -0
  105. package/dist/i18n/locales/zh-CN/persistence.json +127 -0
  106. package/dist/i18n/locales/zh-CN/quick-actions.json +78 -0
  107. package/dist/index.mjs +3 -2
  108. package/dist/shared/{ccjk.DE91nClQ.mjs → ccjk.BKoi8-Hy.mjs} +1 -1
  109. package/dist/shared/ccjk.BiCrMV5O.mjs +94 -0
  110. package/dist/shared/{ccjk.Dpw86UX0.mjs → ccjk.CxtuJxaS.mjs} +1 -1
  111. package/dist/shared/{ccjk.ClzTOz9n.mjs → ccjk.DB2UYcq0.mjs} +5 -5
  112. package/dist/shared/{ccjk.CmsW23FN.mjs → ccjk.DVBW2wxp.mjs} +4 -3
  113. package/dist/shared/{ccjk.Bndhan7G.mjs → ccjk.DfwJOEok.mjs} +1 -1
  114. package/dist/shared/{ccjk.DvIrK0wz.mjs → ccjk.DrMygfCF.mjs} +1 -1
  115. package/package.json +19 -19
package/dist/cli.mjs CHANGED
@@ -202,25 +202,25 @@ const COMMANDS = [
202
202
  const actionStr = action;
203
203
  const argsArr = args;
204
204
  if (actionStr === "install") {
205
- const { installAgentBrowser } = await import('./chunks/installer.mjs');
205
+ const { installAgentBrowser } = await import('./chunks/installer2.mjs');
206
206
  await installAgentBrowser(options);
207
207
  } else if (actionStr === "uninstall") {
208
- const { uninstallAgentBrowser } = await import('./chunks/installer.mjs');
208
+ const { uninstallAgentBrowser } = await import('./chunks/installer2.mjs');
209
209
  await uninstallAgentBrowser(options);
210
210
  } else if (actionStr === "status") {
211
- const { agentBrowserStatus } = await import('./chunks/commands.mjs');
211
+ const { agentBrowserStatus } = await import('./chunks/commands2.mjs');
212
212
  await agentBrowserStatus(options);
213
213
  } else if (actionStr === "start") {
214
- const { startBrowserSession } = await import('./chunks/commands.mjs');
214
+ const { startBrowserSession } = await import('./chunks/commands2.mjs');
215
215
  await startBrowserSession(argsArr[0], options);
216
216
  } else if (actionStr === "stop") {
217
- const { stopBrowserSession } = await import('./chunks/commands.mjs');
217
+ const { stopBrowserSession } = await import('./chunks/commands2.mjs');
218
218
  await stopBrowserSession(options);
219
219
  } else if (actionStr === "config") {
220
- const { configureBrowser } = await import('./chunks/commands.mjs');
220
+ const { configureBrowser } = await import('./chunks/commands2.mjs');
221
221
  await configureBrowser(options);
222
222
  } else {
223
- const { agentBrowserHelp } = await import('./chunks/commands.mjs');
223
+ const { agentBrowserHelp } = await import('./chunks/commands2.mjs');
224
224
  agentBrowserHelp(options);
225
225
  }
226
226
  };
@@ -304,25 +304,25 @@ const COMMANDS = [
304
304
  const argsArr = args;
305
305
  const configOptions = { global: !!options.global, json: options.format === "json" };
306
306
  if (!actionStr || actionStr === "list") {
307
- const { listConfig } = await import('./chunks/config2.mjs');
307
+ const { listConfig } = await import('./chunks/config3.mjs');
308
308
  await listConfig(configOptions);
309
309
  } else if (actionStr === "get") {
310
- const { getConfig } = await import('./chunks/config2.mjs');
310
+ const { getConfig } = await import('./chunks/config3.mjs');
311
311
  await getConfig(argsArr[0] || "", configOptions);
312
312
  } else if (actionStr === "set") {
313
- const { setConfig } = await import('./chunks/config2.mjs');
313
+ const { setConfig } = await import('./chunks/config3.mjs');
314
314
  await setConfig(argsArr[0] || "", argsArr[1] || "", configOptions);
315
315
  } else if (actionStr === "unset") {
316
- const { unsetConfig } = await import('./chunks/config2.mjs');
316
+ const { unsetConfig } = await import('./chunks/config3.mjs');
317
317
  await unsetConfig(argsArr[0] || "", configOptions);
318
318
  } else if (actionStr === "reset") {
319
- const { resetConfig } = await import('./chunks/config2.mjs');
319
+ const { resetConfig } = await import('./chunks/config3.mjs');
320
320
  await resetConfig(configOptions);
321
321
  } else if (actionStr === "edit") {
322
- const { editConfig } = await import('./chunks/config2.mjs');
322
+ const { editConfig } = await import('./chunks/config3.mjs');
323
323
  await editConfig(configOptions);
324
324
  } else if (actionStr === "validate") {
325
- const { validateConfig } = await import('./chunks/config2.mjs');
325
+ const { validateConfig } = await import('./chunks/config3.mjs');
326
326
  await validateConfig(configOptions);
327
327
  } else {
328
328
  console.error(`Unknown config action: ${actionStr}`);
@@ -382,6 +382,27 @@ const COMMANDS = [
382
382
  };
383
383
  }
384
384
  },
385
+ {
386
+ name: "zero-config [preset]",
387
+ description: "Apply zero-config permission presets (max, dev, safe)",
388
+ aliases: ["zc"],
389
+ tier: "extended",
390
+ options: [
391
+ { flags: "--preset, -p <preset>", description: "Preset to apply (max, dev, safe)" },
392
+ { flags: "--list, -l", description: "List available presets" },
393
+ { flags: "--skip-backup", description: "Skip backup before applying" }
394
+ ],
395
+ loader: async () => {
396
+ const { zeroConfig } = await import('./chunks/zero-config.mjs');
397
+ return async (options, preset) => {
398
+ await zeroConfig({
399
+ preset: preset || options.preset,
400
+ list: options.list,
401
+ skipBackup: options.skipBackup
402
+ });
403
+ };
404
+ }
405
+ },
385
406
  {
386
407
  name: "vim",
387
408
  description: "Vim mode configuration and keybindings",
@@ -468,7 +489,7 @@ const COMMANDS = [
468
489
  ],
469
490
  loader: async () => {
470
491
  return async (options, action, args) => {
471
- const { initI18n } = await import('./chunks/index.mjs');
492
+ const { initI18n } = await import('./chunks/index2.mjs');
472
493
  await initI18n(options.lang || "zh-CN");
473
494
  const actionStr = action;
474
495
  const argsArr = args;
@@ -693,7 +714,18 @@ const COMMANDS = [
693
714
  aliases: ["ctx"],
694
715
  tier: "extended",
695
716
  options: [
696
- { flags: "--verbose, -v", description: "Verbose output" }
717
+ { flags: "--verbose, -v", description: "Verbose output" },
718
+ { flags: "--show", description: "Show context layers" },
719
+ { flags: "--layers <layers>", description: "Specific layers to show" },
720
+ { flags: "--task <task>", description: "Preview context for task" },
721
+ { flags: "--clear", description: "Clear context cache" },
722
+ { flags: "--health", description: "Run database health check" },
723
+ { flags: "--alerts", description: "Show current health alerts" },
724
+ { flags: "--alert-history", description: "Show alert history" },
725
+ { flags: "--checkpoint", description: "Checkpoint WAL file" },
726
+ { flags: "--vacuum", description: "Vacuum database" },
727
+ { flags: "--backup", description: "Create database backup" },
728
+ { flags: "--recover", description: "Attempt database recovery" }
697
729
  ],
698
730
  loader: async () => {
699
731
  const { contextCommand } = await import('./chunks/context.mjs');
@@ -790,7 +822,7 @@ const COMMANDS = [
790
822
  return async (options, action, args) => {
791
823
  const actionStr = action;
792
824
  const argsArr = args || [];
793
- const { getPostmortemManager } = await import('./chunks/index2.mjs');
825
+ const { getPostmortemManager } = await import('./chunks/index3.mjs');
794
826
  const manager = getPostmortemManager(process__default.cwd());
795
827
  if (actionStr === "init") {
796
828
  const ora = (await import('ora')).default;
@@ -1030,7 +1062,7 @@ ${ansis.yellow("By Status:")}`);
1030
1062
  { flags: "--json", description: "Output in JSON format" }
1031
1063
  ],
1032
1064
  loader: async () => {
1033
- const { configCommand } = await import('./chunks/config2.mjs');
1065
+ const { configCommand } = await import('./chunks/config3.mjs');
1034
1066
  return async (options, action, key, value) => {
1035
1067
  const args = [];
1036
1068
  if (key !== void 0)
@@ -1150,6 +1182,21 @@ ${ansis.yellow("By Status:")}`);
1150
1182
  };
1151
1183
  }
1152
1184
  },
1185
+ {
1186
+ name: "ccjk:persistence",
1187
+ description: "Manage context persistence and storage tiers",
1188
+ aliases: ["ccjk-persistence", "persistence"],
1189
+ tier: "extended",
1190
+ options: [
1191
+ { flags: "--lang, -l <lang>", description: "Display language (zh-CN, en)" }
1192
+ ],
1193
+ loader: async () => {
1194
+ return async (options) => {
1195
+ const { persistenceManager } = await import('./chunks/persistence-manager.mjs');
1196
+ await persistenceManager();
1197
+ };
1198
+ }
1199
+ },
1153
1200
  {
1154
1201
  name: "ccjk:hooks",
1155
1202
  description: "Auto-recommend and configure CCJK hooks based on project analysis",
@@ -1390,6 +1437,79 @@ ${ansis.yellow("By Status:")}`);
1390
1437
  };
1391
1438
  }
1392
1439
  },
1440
+ {
1441
+ name: "dashboard",
1442
+ description: "Brain Dashboard - context compression and persistence monitoring",
1443
+ aliases: ["dash", "db"],
1444
+ tier: "core",
1445
+ options: [
1446
+ { flags: "--json", description: "Output as JSON" },
1447
+ { flags: "--compact", description: "Compact output" }
1448
+ ],
1449
+ loader: async () => {
1450
+ const { dashboardCommand } = await import('./chunks/dashboard.mjs');
1451
+ return async (options) => {
1452
+ await dashboardCommand({
1453
+ json: options.json,
1454
+ compact: options.compact
1455
+ });
1456
+ };
1457
+ }
1458
+ },
1459
+ {
1460
+ name: "morning",
1461
+ description: "Morning health check + stats summary",
1462
+ tier: "core",
1463
+ options: [
1464
+ { flags: "--json", description: "Output as JSON" },
1465
+ { flags: "--silent", description: "Silent mode" }
1466
+ ],
1467
+ loader: async () => {
1468
+ const { morningCommand } = await import('./chunks/quick-actions.mjs');
1469
+ return async (options) => {
1470
+ await morningCommand({
1471
+ json: options.json,
1472
+ silent: options.silent
1473
+ });
1474
+ };
1475
+ }
1476
+ },
1477
+ {
1478
+ name: "review",
1479
+ description: "Daily review - contexts used, tokens saved",
1480
+ tier: "core",
1481
+ options: [
1482
+ { flags: "--json", description: "Output as JSON" },
1483
+ { flags: "--silent", description: "Silent mode" }
1484
+ ],
1485
+ loader: async () => {
1486
+ const { reviewCommand } = await import('./chunks/quick-actions.mjs');
1487
+ return async (options) => {
1488
+ await reviewCommand({
1489
+ json: options.json,
1490
+ silent: options.silent
1491
+ });
1492
+ };
1493
+ }
1494
+ },
1495
+ {
1496
+ name: "cleanup",
1497
+ description: "Weekly cleanup - old contexts, VACUUM",
1498
+ tier: "core",
1499
+ options: [
1500
+ { flags: "--json", description: "Output as JSON" },
1501
+ { flags: "--silent", description: "Silent mode" }
1502
+ ],
1503
+ loader: async () => {
1504
+ const { cleanupCommand } = await import('./chunks/quick-actions.mjs');
1505
+ return async (options) => {
1506
+ await cleanupCommand({
1507
+ json: options.json,
1508
+ silent: options.silent
1509
+ });
1510
+ };
1511
+ }
1512
+ },
1393
1513
  {
1394
1514
  name: "boost",
1395
1515
  description: "One-click optimization - auto-apply all recommendations",
@@ -1421,7 +1541,7 @@ ${ansis.yellow("By Status:")}`);
1421
1541
  { flags: "--lang, -l <lang>", description: "Display language (zh-CN, en)" }
1422
1542
  ],
1423
1543
  loader: async () => {
1424
- const { addCommand } = await import('./chunks/index3.mjs');
1544
+ const { addCommand } = await import('./chunks/index4.mjs');
1425
1545
  return async (options, source) => {
1426
1546
  await addCommand(source, {
1427
1547
  type: options.type,
@@ -1439,7 +1559,7 @@ let currentLang = "en";
1439
1559
  async function initI18nLazy(lang) {
1440
1560
  if (i18nInitialized && lang === currentLang)
1441
1561
  return;
1442
- const { initI18n, changeLanguage } = await import('./chunks/index.mjs');
1562
+ const { initI18n, changeLanguage } = await import('./chunks/index2.mjs');
1443
1563
  if (!i18nInitialized) {
1444
1564
  await initI18n(lang || "en");
1445
1565
  i18nInitialized = true;
@@ -1499,6 +1619,7 @@ async function setupCommandsLazy(cli) {
1499
1619
  if (cmd.name !== "claude") {
1500
1620
  command.option("--lang, -l <lang>", "Display language (zh-CN, en)");
1501
1621
  command.option("--all-lang, -g <lang>", "Set all language parameters");
1622
+ command.option("--no-banner", "Skip command discovery banner");
1502
1623
  } else {
1503
1624
  command.allowUnknownOptions();
1504
1625
  }
@@ -1729,6 +1850,65 @@ function customizeHelpLazy(_sections, version) {
1729
1850
  });
1730
1851
  return newSections;
1731
1852
  }
1853
+ async function runHealthAlertsCheck() {
1854
+ try {
1855
+ const args = process__default.argv.slice(2);
1856
+ if (args.includes("--silent")) {
1857
+ return;
1858
+ }
1859
+ const shouldCheck = args.length === 0 || args[0] === "status" || args[0] === "doctor";
1860
+ if (!shouldCheck) {
1861
+ return;
1862
+ }
1863
+ const { join } = await import('pathe');
1864
+ const dbPath = join(
1865
+ process__default.env.HOME || process__default.env.USERPROFILE || ".",
1866
+ ".ccjk",
1867
+ "context",
1868
+ "contexts.db"
1869
+ );
1870
+ const { runStartupHealthCheck } = await import('./chunks/health-alerts.mjs');
1871
+ await runStartupHealthCheck(dbPath, { silent: false });
1872
+ } catch {
1873
+ }
1874
+ }
1875
+ async function showCommandDiscoveryBanner() {
1876
+ try {
1877
+ const args = process__default.argv.slice(2);
1878
+ if (args.includes("--no-banner")) {
1879
+ return;
1880
+ }
1881
+ if (args.length > 0 && !args[0].startsWith("-")) {
1882
+ return;
1883
+ }
1884
+ const { join } = await import('pathe');
1885
+ const { existsSync, writeFileSync } = await import('node:fs');
1886
+ const markerPath = join(
1887
+ process__default.env.HOME || process__default.env.USERPROFILE || ".",
1888
+ ".ccjk",
1889
+ ".banner-shown"
1890
+ );
1891
+ const isFirstRun = !existsSync(markerPath);
1892
+ const showHelp = args.includes("--help") || args.includes("-h");
1893
+ if (isFirstRun || showHelp) {
1894
+ const envLang = process__default.env.CCJK_LANG;
1895
+ if (envLang) {
1896
+ await initI18nLazy(envLang);
1897
+ }
1898
+ const { displayCommandDiscovery } = await import('./chunks/banner.mjs');
1899
+ displayCommandDiscovery();
1900
+ if (isFirstRun) {
1901
+ try {
1902
+ const { ensureDir } = await import('./chunks/fs-operations.mjs');
1903
+ await ensureDir(join(process__default.env.HOME || process__default.env.USERPROFILE || ".", ".ccjk"));
1904
+ writeFileSync(markerPath, (/* @__PURE__ */ new Date()).toISOString());
1905
+ } catch {
1906
+ }
1907
+ }
1908
+ }
1909
+ } catch {
1910
+ }
1911
+ }
1732
1912
  async function runLazyCli() {
1733
1913
  const spinner = await showStartupSpinner();
1734
1914
  try {
@@ -1743,10 +1923,21 @@ async function runLazyCli() {
1743
1923
  spinner?.stop();
1744
1924
  return;
1745
1925
  }
1926
+ const args = process__default.argv.slice(2);
1927
+ if (args.length > 0 && args[0].startsWith("/")) {
1928
+ spinner?.stop();
1929
+ const { executeSlashCommand } = await import('./chunks/slash-commands.mjs');
1930
+ const slashHandled = await executeSlashCommand(args.join(" "));
1931
+ if (slashHandled) {
1932
+ return;
1933
+ }
1934
+ }
1746
1935
  const cac = (await import('cac')).default;
1747
1936
  const cli = cac("ccjk");
1748
1937
  await setupCommandsLazy(cli);
1749
1938
  spinner?.stop();
1939
+ await runHealthAlertsCheck();
1940
+ await showCommandDiscoveryBanner();
1750
1941
  cli.parse();
1751
1942
  } catch (error) {
1752
1943
  spinner?.stop();
@@ -1822,7 +2013,7 @@ function bootstrapCloudServices() {
1822
2013
  await autoBootstrap();
1823
2014
  const { autoUpgrade } = await import('./chunks/silent-updater.mjs');
1824
2015
  await autoUpgrade();
1825
- const { activateSuperpowers } = await import('./chunks/index4.mjs');
2016
+ const { activateSuperpowers } = await import('./chunks/index5.mjs');
1826
2017
  await activateSuperpowers("zh-CN");
1827
2018
  const { setupBrainHook } = await import('./chunks/cli-hook.mjs');
1828
2019
  await setupBrainHook({
@@ -135,5 +135,18 @@
135
135
  "commands.ccjkSetup.args.verbose": "Enable verbose output",
136
136
  "commands.ccjkSetup.args.backup": "Create backup before setup",
137
137
  "commands.ccjkSetup.args.rollbackOnError": "Auto-rollback on failure",
138
- "commands.ccjkSetup.args.lang": "Display language"
138
+ "commands.ccjkSetup.args.lang": "Display language",
139
+ "commandDiscovery.title": "🧠 CCJK Commands (ccjk 命令)",
140
+ "commandDiscovery.claudeCodeTitle": "🤖 Claude Code Commands",
141
+ "commandDiscovery.status": "Brain Dashboard",
142
+ "commandDiscovery.health": "Health Check",
143
+ "commandDiscovery.search": "Search Contexts",
144
+ "commandDiscovery.compress": "Compression Stats",
145
+ "commandDiscovery.tasks": "Task Manager",
146
+ "commandDiscovery.backup": "Create Backup",
147
+ "commandDiscovery.optimize": "Optimize DB",
148
+ "commandDiscovery.help": "Show all commands",
149
+ "commandDiscovery.clear": "Clear conversation",
150
+ "commandDiscovery.reset": "Reset session",
151
+ "commandDiscovery.footer": "Type 'ccjk --help' for full command list"
139
152
  }
@@ -37,5 +37,32 @@
37
37
  "body": "Conversation is getting long ({{toolCalls}} tool calls, {{messageCount}} messages)",
38
38
  "suggestion": "Recommend running /compact to clean up context and avoid \"prompt is too long\" errors",
39
39
  "command": "Run: /compact"
40
+ },
41
+ "slashCommands": {
42
+ "title": "💡 Quick Commands",
43
+ "ccjkCommands": "🧠 CCJK Commands",
44
+ "claudeCodeCommands": "🤖 Claude Code Commands",
45
+ "helpTip": "Type /help for full command list",
46
+ "unknownCommand": "Unknown command: /{command}",
47
+ "typeHelp": "Type /help to see all available commands",
48
+ "categories": {
49
+ "brain": "🧠 Brain System",
50
+ "context": "📦 Context Management",
51
+ "system": "⚙️ System Tools"
52
+ },
53
+ "commands": {
54
+ "status": "Show Brain Dashboard with health score",
55
+ "health": "Run comprehensive health check",
56
+ "search": "Search contexts using FTS5 full-text search",
57
+ "compress": "Show compression statistics and metrics",
58
+ "tasks": "Open task manager (Brain system)",
59
+ "backup": "Create configuration backup",
60
+ "optimize": "Run VACUUM + checkpoint on context database",
61
+ "help": "Show all CCJK slash commands"
62
+ },
63
+ "usage": {
64
+ "search": "Usage: /search <query>",
65
+ "searchExample": "Example: /search \"authentication logic\""
66
+ }
40
67
  }
41
68
  }
@@ -103,6 +103,39 @@
103
103
  "validationErrors": "Configuration validation errors",
104
104
  "configUpToDate": "Configuration is up to date"
105
105
  },
106
+ "zeroConfig": {
107
+ "title": "Zero-Config Permission Presets",
108
+ "selectPreset": "Select permission preset",
109
+ "confirmApply": "Confirm applying this preset?",
110
+ "presetApplied": "Permission preset applied",
111
+ "backedUpTo": "Backed up to",
112
+ "configFile": "Config file",
113
+ "presetNotFound": "Error: Preset not found",
114
+ "useListToSee": "Use --list to see available presets",
115
+ "availablePresets": "Available Permission Presets",
116
+ "presetDetails": "Preset Details",
117
+ "permissionsToAdd": "Permissions to be added",
118
+ "total": "Total",
119
+ "items": "items",
120
+ "commands": "commands",
121
+ "operations": "operations",
122
+ "allPermissionsExist": "All permissions already exist",
123
+ "usage": "Usage: npx ccjk zc --preset=<id>",
124
+ "presets": {
125
+ "max": {
126
+ "name": "Maximum Permissions",
127
+ "description": "All common commands, file operations, and MCP servers"
128
+ },
129
+ "dev": {
130
+ "name": "Developer Preset",
131
+ "description": "Build tools, git, package managers, and file operations"
132
+ },
133
+ "safe": {
134
+ "name": "Safe Preset",
135
+ "description": "Read-only commands, no file modifications"
136
+ }
137
+ }
138
+ },
106
139
  "fields": {
107
140
  "language": {
108
141
  "label": "Response Language",
@@ -28,5 +28,58 @@
28
28
  "helpStatusDesc": "Show current wrapper status",
29
29
  "helpInstallDesc": "Install shell hook for transparent wrapping",
30
30
  "helpUninstallDesc": "Uninstall shell hook",
31
- "helpExamples": "Examples:"
31
+ "helpExamples": "Examples:",
32
+ "healthAlertsTitle": "Database Health Alerts",
33
+ "healthCheckFailed": "Health check failed",
34
+ "corruptionDetected": "Database corruption detected",
35
+ "corruptionAction": "Run: ccjk context recover",
36
+ "walSizeLarge": "WAL file is {{size}}MB (threshold: {{threshold}}MB)",
37
+ "walSizeInfo": "WAL file is {{size}}MB",
38
+ "walAction": "Run: ccjk context checkpoint",
39
+ "walActionSoon": "Consider checkpointing soon",
40
+ "diskUtilizationLow": "Disk utilization is {{percent}}% (threshold: {{threshold}}%)",
41
+ "diskAction": "Run: ccjk context vacuum",
42
+ "noBackups": "No backups found",
43
+ "backupOld": "Latest backup is {{days}} days old (threshold: {{threshold}} days)",
44
+ "backupInfo": "Latest backup is {{days}} days old",
45
+ "backupAction": "Run: ccjk context backup",
46
+ "backupActionSoon": "Consider creating a new backup",
47
+ "performanceSlow": "Query performance is slow ({{time}}ms)",
48
+ "performanceAction": "Check database indexes",
49
+ "alertCritical": "CRITICAL",
50
+ "alertWarning": "WARNING",
51
+ "alertInfo": "INFO",
52
+ "alertHistoryTitle": "Alert History",
53
+ "alertHistoryEmpty": "No alert history",
54
+ "alertResolved": "Resolved",
55
+ "alertUnresolved": "Unresolved",
56
+ "alertSummaryTitle": "Alert Summary",
57
+ "alertSummaryTotal": "Total Alerts",
58
+ "alertSummaryCritical": "Critical",
59
+ "alertSummaryWarning": "Warnings",
60
+ "alertSummaryInfo": "Info",
61
+ "alertSummaryUnresolved": "Unresolved",
62
+ "alertSummaryLastCheck": "Last Check",
63
+ "metricsTitle": "Compression Metrics",
64
+ "metricsOverall": "Overall",
65
+ "metricsSession": "Session (24h)",
66
+ "metricsWeekly": "Weekly (7d)",
67
+ "metricsMonthly": "Monthly (30d)",
68
+ "metricsTotalCompressions": "Total Compressions",
69
+ "metricsTokensSaved": "Tokens Saved",
70
+ "metricsAvgCompression": "Avg Compression",
71
+ "metricsAvgTime": "Avg Time",
72
+ "metricsCostSavings": "Cost Savings",
73
+ "metricsCompressions": "Compressions",
74
+ "metricsCompressed": "Compressed",
75
+ "metricsReduction": "reduction",
76
+ "metricsRecentCompressions": "Recent Compressions",
77
+ "metricsOriginal": "Original",
78
+ "metricsCompressedTokens": "Compressed",
79
+ "metricsRatio": "Ratio",
80
+ "metricsTime": "Time",
81
+ "metricsStrategy": "Strategy",
82
+ "metricsAlgorithm": "Algorithm",
83
+ "metricsNoData": "No compression metrics available",
84
+ "metricsCostNote": "Cost based on $0.015 per 1K tokens (Claude Opus pricing)"
32
85
  }
@@ -0,0 +1,78 @@
1
+ {
2
+ "title": "Brain Dashboard",
3
+ "subtitle": "Context compression and persistence monitoring",
4
+ "compression": {
5
+ "title": "Compression Metrics",
6
+ "sessionSavings": "Session savings",
7
+ "weeklySavings": "Weekly savings",
8
+ "monthlySavings": "Monthly savings",
9
+ "compressionRatio": "Compression ratio",
10
+ "noData": "No compression data yet"
11
+ },
12
+ "persistence": {
13
+ "title": "Persistence Stats",
14
+ "totalContexts": "Stored contexts",
15
+ "databaseSize": "Database size",
16
+ "lastBackup": "Last backup",
17
+ "neverBackedUp": "Never"
18
+ },
19
+ "health": {
20
+ "title": "Health Status",
21
+ "databaseIntegrity": "Database integrity",
22
+ "walStatus": "WAL status",
23
+ "diskUtilization": "Disk utilization",
24
+ "healthy": "Healthy",
25
+ "warning": "Warning",
26
+ "critical": "Critical",
27
+ "notInitialized": "Database not initialized",
28
+ "willBeCreated": "Will be created on first use",
29
+ "tooLarge": "Database too large",
30
+ "sizeWarning": "Database size warning",
31
+ "currentSize": "Current size",
32
+ "recommendVacuum": "Recommend running VACUUM",
33
+ "considerCleaning": "Consider cleaning old data",
34
+ "walNormal": "WAL normal",
35
+ "walTooLarge": "WAL too large, checkpoint needed",
36
+ "walWarning": "WAL size warning, checkpoint recommended",
37
+ "size": "Size"
38
+ },
39
+ "tiers": {
40
+ "title": "Tier Distribution",
41
+ "hot": "L0 (Hot)",
42
+ "warm": "L1 (Warm)",
43
+ "cold": "L2 (Cold)",
44
+ "cacheHitRate": "Cache hit rate",
45
+ "noData": "No tier data yet"
46
+ },
47
+ "recommendations": {
48
+ "title": "Recommendations",
49
+ "cleanDatabase": "Clean database",
50
+ "cleanDatabaseDesc": "Database too large, run VACUUM to reclaim space",
51
+ "runCheckpoint": "Run checkpoint",
52
+ "runCheckpointDesc": "WAL file too large, run checkpoint to merge into main database",
53
+ "backupDatabase": "Backup database",
54
+ "backupDatabaseDesc": "Recommend regular database backups",
55
+ "optimizeCompression": "Optimize compression",
56
+ "optimizeCompressionDesc": "Low compression ratio, consider adjusting strategy"
57
+ },
58
+ "commands": {
59
+ "vacuum": "ccjk brain vacuum",
60
+ "checkpoint": "ccjk brain checkpoint",
61
+ "backup": "ccjk brain backup",
62
+ "config": "ccjk brain config"
63
+ },
64
+ "units": {
65
+ "tokens": "tokens",
66
+ "bytes": "bytes",
67
+ "kb": "KB",
68
+ "mb": "MB",
69
+ "gb": "GB"
70
+ },
71
+ "time": {
72
+ "justNow": "just now",
73
+ "minutesAgo": "m ago",
74
+ "hoursAgo": "h ago",
75
+ "daysAgo": "d ago",
76
+ "never": "Never"
77
+ }
78
+ }