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.
- package/README.md +28 -0
- package/dist/chunks/agent-teams.mjs +1 -1
- package/dist/chunks/agent.mjs +1 -1
- package/dist/chunks/api-providers.mjs +1 -1
- package/dist/chunks/api.mjs +3 -3
- package/dist/chunks/auto-bootstrap.mjs +1 -1
- package/dist/chunks/auto-updater.mjs +1 -1
- package/dist/{shared/ccjk.Br91zBIG.mjs → chunks/banner.mjs} +52 -3
- package/dist/chunks/boost.mjs +2 -2
- package/dist/chunks/ccjk-agents.mjs +1 -1
- package/dist/chunks/ccjk-all.mjs +1 -1
- package/dist/chunks/ccjk-config.mjs +1 -1
- package/dist/chunks/ccjk-hooks.mjs +1 -1
- package/dist/chunks/ccjk-mcp.mjs +2 -2
- package/dist/chunks/ccjk-setup.mjs +1 -1
- package/dist/chunks/ccjk-skills.mjs +1 -1
- package/dist/chunks/ccr.mjs +11 -10
- package/dist/chunks/ccu.mjs +1 -1
- package/dist/chunks/check-updates.mjs +4 -3
- package/dist/chunks/claude-code-config-manager.mjs +8 -7
- package/dist/chunks/claude-code-incremental-manager.mjs +3 -2
- package/dist/chunks/claude-config.mjs +3 -3
- package/dist/chunks/claude-wrapper.mjs +2 -2
- package/dist/chunks/codex-config-switch.mjs +3 -2
- package/dist/chunks/codex-provider-manager.mjs +3 -2
- package/dist/chunks/codex-uninstaller.mjs +2 -2
- package/dist/chunks/codex.mjs +5 -5
- package/dist/chunks/commands.mjs +88 -391
- package/dist/chunks/commands2.mjs +391 -88
- package/dist/chunks/completion.mjs +1 -1
- package/dist/chunks/config-consolidator.mjs +2 -2
- package/dist/chunks/config-switch.mjs +4 -3
- package/dist/chunks/config.mjs +6 -98
- package/dist/chunks/config2.mjs +411 -400
- package/dist/chunks/config3.mjs +401 -410
- package/dist/chunks/constants.mjs +1 -1
- package/dist/chunks/context.mjs +283 -1
- package/dist/chunks/dashboard.mjs +365 -0
- package/dist/chunks/doctor.mjs +4 -4
- package/dist/chunks/features.mjs +12 -11
- package/dist/chunks/fs-operations.mjs +1 -1
- package/dist/chunks/health-alerts.mjs +304 -0
- package/dist/chunks/health-check.mjs +532 -0
- package/dist/chunks/index.mjs +10 -177
- package/dist/chunks/index2.mjs +168 -1162
- package/dist/chunks/index3.mjs +1076 -910
- package/dist/chunks/index4.mjs +947 -137
- package/dist/chunks/index5.mjs +167 -635
- package/dist/chunks/index6.mjs +663 -0
- package/dist/chunks/init.mjs +19 -19
- package/dist/chunks/installer.mjs +649 -147
- package/dist/chunks/installer2.mjs +147 -649
- package/dist/chunks/interview.mjs +2 -2
- package/dist/chunks/marketplace.mjs +1 -1
- package/dist/chunks/mcp.mjs +5 -4
- package/dist/chunks/menu.mjs +22 -9
- package/dist/chunks/metrics-display.mjs +152 -0
- package/dist/chunks/migrator.mjs +1 -1
- package/dist/chunks/monitor.mjs +2 -2
- package/dist/chunks/notification.mjs +1 -1
- package/dist/chunks/onboarding.mjs +2 -2
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/permission-manager.mjs +2 -2
- package/dist/chunks/permissions.mjs +1 -1
- package/dist/chunks/persistence-manager.mjs +781 -0
- package/dist/chunks/persistence.mjs +667 -0
- package/dist/chunks/platform.mjs +1 -1
- package/dist/chunks/plugin.mjs +1 -1
- package/dist/chunks/prompts.mjs +1 -1
- package/dist/chunks/providers.mjs +1 -1
- package/dist/chunks/quick-actions.mjs +321 -0
- package/dist/chunks/quick-provider.mjs +2 -0
- package/dist/chunks/quick-setup.mjs +9 -8
- package/dist/chunks/silent-updater.mjs +1 -1
- package/dist/chunks/simple-config.mjs +3 -8
- package/dist/chunks/skill.mjs +1 -1
- package/dist/chunks/skills-sync.mjs +1 -1
- package/dist/chunks/skills.mjs +1 -1
- package/dist/chunks/slash-commands.mjs +208 -0
- package/dist/chunks/smart-defaults.mjs +1 -1
- package/dist/chunks/startup.mjs +1 -1
- package/dist/chunks/stats.mjs +1 -1
- package/dist/chunks/status.mjs +31 -2
- package/dist/chunks/team.mjs +1 -1
- package/dist/chunks/thinking.mjs +2 -2
- package/dist/chunks/uninstall.mjs +5 -5
- package/dist/chunks/update.mjs +8 -7
- package/dist/chunks/upgrade-manager.mjs +2 -2
- package/dist/chunks/version-checker.mjs +3 -3
- package/dist/chunks/vim.mjs +1 -1
- package/dist/chunks/zero-config.mjs +359 -0
- package/dist/cli.mjs +212 -21
- package/dist/i18n/locales/en/cli.json +14 -1
- package/dist/i18n/locales/en/common.json +27 -0
- package/dist/i18n/locales/en/configuration.json +33 -0
- package/dist/i18n/locales/en/context.json +54 -1
- package/dist/i18n/locales/en/dashboard.json +78 -0
- package/dist/i18n/locales/en/persistence.json +127 -0
- package/dist/i18n/locales/en/quick-actions.json +78 -0
- package/dist/i18n/locales/zh-CN/cli.json +14 -1
- package/dist/i18n/locales/zh-CN/common.json +27 -0
- package/dist/i18n/locales/zh-CN/configuration.json +33 -0
- package/dist/i18n/locales/zh-CN/context.json +54 -1
- package/dist/i18n/locales/zh-CN/dashboard.json +78 -0
- package/dist/i18n/locales/zh-CN/persistence.json +127 -0
- package/dist/i18n/locales/zh-CN/quick-actions.json +78 -0
- package/dist/index.mjs +3 -2
- package/dist/shared/{ccjk.DE91nClQ.mjs → ccjk.BKoi8-Hy.mjs} +1 -1
- package/dist/shared/ccjk.BiCrMV5O.mjs +94 -0
- package/dist/shared/{ccjk.Dpw86UX0.mjs → ccjk.CxtuJxaS.mjs} +1 -1
- package/dist/shared/{ccjk.ClzTOz9n.mjs → ccjk.DB2UYcq0.mjs} +5 -5
- package/dist/shared/{ccjk.CmsW23FN.mjs → ccjk.DVBW2wxp.mjs} +4 -3
- package/dist/shared/{ccjk.Bndhan7G.mjs → ccjk.DfwJOEok.mjs} +1 -1
- package/dist/shared/{ccjk.DvIrK0wz.mjs → ccjk.DrMygfCF.mjs} +1 -1
- 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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
220
|
+
const { configureBrowser } = await import('./chunks/commands2.mjs');
|
|
221
221
|
await configureBrowser(options);
|
|
222
222
|
} else {
|
|
223
|
-
const { agentBrowserHelp } = await import('./chunks/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
+
}
|