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.
- package/dist/chunks/api-cli.mjs +5 -5
- package/dist/chunks/api-config-selector.mjs +18 -5
- package/dist/chunks/api-providers.mjs +24 -9
- package/dist/chunks/auto-updater.mjs +13 -13
- package/dist/chunks/boost.mjs +1 -1
- package/dist/chunks/ccjk-all.mjs +4 -4
- package/dist/chunks/ccjk-config.mjs +78 -1
- package/dist/chunks/ccjk-mcp.mjs +4 -4
- package/dist/chunks/ccjk-setup.mjs +4 -4
- package/dist/chunks/ccr.mjs +11 -11
- package/dist/chunks/check-updates.mjs +3 -3
- package/dist/chunks/claude-code-incremental-manager.mjs +8 -6
- package/dist/chunks/claude-config.mjs +73 -0
- package/dist/chunks/claude-wrapper.mjs +1 -1
- package/dist/chunks/cli-hook.mjs +76 -1
- package/dist/chunks/code-type-resolver.mjs +14 -13
- package/dist/chunks/codex-config-switch.mjs +2 -2
- package/dist/chunks/codex-provider-manager.mjs +2 -2
- package/dist/chunks/codex.mjs +3 -3
- package/dist/chunks/config-switch.mjs +5 -5
- package/dist/chunks/config.mjs +531 -158
- package/dist/chunks/config2.mjs +22 -20
- package/dist/chunks/config3.mjs +6 -6
- package/dist/chunks/constants.mjs +20 -13
- package/dist/chunks/doctor.mjs +1 -1
- package/dist/chunks/features.mjs +59 -4
- package/dist/chunks/fs-operations.mjs +2 -14
- package/dist/chunks/index.mjs +1 -1
- package/dist/chunks/index10.mjs +115 -100
- package/dist/chunks/init.mjs +121 -53
- package/dist/chunks/installer.mjs +28 -21
- package/dist/chunks/mcp-cli.mjs +6 -6
- package/dist/chunks/mcp.mjs +6 -6
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/platform.mjs +3 -3
- package/dist/chunks/prompts.mjs +9 -7
- package/dist/chunks/quick-actions.mjs +1 -1
- package/dist/chunks/quick-provider.mjs +23 -31
- package/dist/chunks/quick-setup.mjs +3 -4
- package/dist/chunks/simple-config.mjs +57 -16
- package/dist/chunks/slash-commands.mjs +1 -1
- package/dist/chunks/smart-guide.mjs +23 -10
- package/dist/chunks/status.mjs +28 -24
- package/dist/chunks/update.mjs +19 -18
- package/dist/chunks/upgrade.mjs +88 -5
- package/dist/chunks/version-checker.mjs +2 -2
- package/dist/chunks/zero-config.mjs +121 -16
- package/dist/cli.mjs +50 -27
- package/dist/i18n/locales/en/configuration.json +5 -3
- package/dist/i18n/locales/en/language.json +1 -1
- package/dist/i18n/locales/en/menu.json +8 -7
- package/dist/i18n/locales/en/multi-config.json +1 -1
- package/dist/i18n/locales/zh-CN/configuration.json +5 -3
- package/dist/i18n/locales/zh-CN/language.json +1 -1
- package/dist/i18n/locales/zh-CN/menu.json +8 -7
- package/dist/i18n/locales/zh-CN/multi-config.json +1 -1
- package/dist/index.d.mts +13 -11
- package/dist/index.d.ts +13 -11
- package/dist/index.mjs +7 -7
- package/dist/shared/{ccjk.B6VCKdyy.mjs → ccjk.BXTrU9TN.mjs} +31 -68
- package/dist/shared/{ccjk.DScm_NnL.mjs → ccjk.Ccrqt7u2.mjs} +30 -1
- package/dist/shared/{ccjk.CVjfbEIj.mjs → ccjk.DZtwozOG.mjs} +1 -1
- package/dist/shared/{ccjk.D6wx-rxT.mjs → ccjk.Dxgd2vjc.mjs} +3 -3
- package/dist/shared/{ccjk.BO45TPXJ.mjs → ccjk.K8c6VnM2.mjs} +2 -2
- package/dist/shared/{ccjk.BJENIVf7.mjs → ccjk.MpkxXQJL.mjs} +179 -19
- package/dist/shared/{ccjk.Dh6Be-ef.mjs → ccjk.ygJzcD-n.mjs} +28 -24
- package/package.json +1 -30
- package/dist/chunks/auto-fix.mjs +0 -253
- package/dist/chunks/auto-init.mjs +0 -311
- package/dist/chunks/auto-upgrade.mjs +0 -152
- package/dist/chunks/migrator.mjs +0 -178
- package/dist/shared/ccjk.DDq2hqA5.mjs +0 -158
- package/dist/shared/ccjk.KPLeMP-o.mjs +0 -79
- package/templates/common/workflow/essential/en/agents/planner.md +0 -116
- package/templates/common/workflow/essential/zh-CN/agents/planner.md +0 -116
package/dist/chunks/index10.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as buildMyclaudeProviderPresentation } from './config.mjs';
|
|
2
2
|
import a from './index5.mjs';
|
|
3
3
|
import { i as inquirer } from './index6.mjs';
|
|
4
4
|
import { CLOUD_ENDPOINTS, CCJK_CONFIG_DIR, SUPPORTED_LANGS, LANG_LABELS, CODE_TOOL_BANNERS, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
|
|
@@ -27,12 +27,12 @@ import { configSwitchCommand } from './config-switch.mjs';
|
|
|
27
27
|
import process__default from 'node:process';
|
|
28
28
|
import { readFile, writeFileAtomic, ensureDir, exists, readJsonFile } from './fs-operations.mjs';
|
|
29
29
|
import { workspaceDiagnostics, doctor } from './doctor.mjs';
|
|
30
|
-
import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.
|
|
30
|
+
import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.DZtwozOG.mjs';
|
|
31
31
|
import { notificationCommand } from './notification.mjs';
|
|
32
32
|
import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
|
|
33
33
|
import { uninstall } from './uninstall.mjs';
|
|
34
34
|
import { update } from './update.mjs';
|
|
35
|
-
import { g as getRuntimeCapabilityDescriptor } from '../shared/ccjk.
|
|
35
|
+
import { g as getRuntimeCapabilityDescriptor } from '../shared/ccjk.K8c6VnM2.mjs';
|
|
36
36
|
import { c as checkSuperpowersInstalled, g as getSuperpowersSkills, u as updateSuperpowers, a as uninstallSuperpowers, i as installSuperpowers, b as installSuperpowersViaGit } from '../shared/ccjk.Bq8TqZG_.mjs';
|
|
37
37
|
|
|
38
38
|
const execAsync = promisify(exec);
|
|
@@ -3007,9 +3007,9 @@ const LANGUAGE_SELECTION_MESSAGES = {
|
|
|
3007
3007
|
selectLanguage: "Select CCJK display language / \u9009\u62E9 CCJK \u663E\u793A\u8BED\u8A00"
|
|
3008
3008
|
};
|
|
3009
3009
|
const TOOL_LABELS = {
|
|
3010
|
-
"
|
|
3011
|
-
en: "
|
|
3012
|
-
zh: "
|
|
3010
|
+
"clavue": {
|
|
3011
|
+
en: "clavue",
|
|
3012
|
+
zh: "clavue"
|
|
3013
3013
|
},
|
|
3014
3014
|
"claude-code": {
|
|
3015
3015
|
en: "Claude Code",
|
|
@@ -3030,7 +3030,7 @@ function resolveOnboardingCodeTool(value) {
|
|
|
3030
3030
|
if (isPrimaryOnboardingTool(value)) {
|
|
3031
3031
|
return value;
|
|
3032
3032
|
}
|
|
3033
|
-
return "
|
|
3033
|
+
return "clavue";
|
|
3034
3034
|
}
|
|
3035
3035
|
function getToolLabel(tool, lang) {
|
|
3036
3036
|
return lang === "zh-CN" ? TOOL_LABELS[tool].zh : TOOL_LABELS[tool].en;
|
|
@@ -3087,8 +3087,8 @@ async function selectOnboardingCodeTool(lang, options = {}) {
|
|
|
3087
3087
|
message: isZh ? "\u9009\u62E9\u4EE3\u7801\u5DE5\u5177" : "Choose your code tool",
|
|
3088
3088
|
choices: addNumbersToChoices([
|
|
3089
3089
|
{
|
|
3090
|
-
name: `${getToolLabel("
|
|
3091
|
-
value: "
|
|
3090
|
+
name: `${getToolLabel("clavue", lang)} - ${isZh ? "Provider-first \u63A7\u5236\u4E2D\u5FC3\uFF08\u9ED8\u8BA4\u63A8\u8350\uFF09" : "Provider-first control center (recommended default)"}`,
|
|
3091
|
+
value: "clavue"
|
|
3092
3092
|
},
|
|
3093
3093
|
{
|
|
3094
3094
|
name: `${getToolLabel("claude-code", lang)} - ${isZh ? "Claude \u5BB6\u65CF\u7ECF\u5178\u63A7\u5236\u4E2D\u5FC3" : "Classic Claude-family control center"}`,
|
|
@@ -3164,7 +3164,7 @@ async function runOnboardingWizard(options = {}) {
|
|
|
3164
3164
|
console.log("");
|
|
3165
3165
|
}
|
|
3166
3166
|
|
|
3167
|
-
const NON_CODEX_TOOLS = ["claude-code", "
|
|
3167
|
+
const NON_CODEX_TOOLS = ["claude-code", "clavue", "aider", "continue", "cline", "cursor"];
|
|
3168
3168
|
const CLAUDE_FAMILY_SLASH_RULE = (descriptor) => descriptor.native.slashCommands && descriptor.configBackend === "claude-family";
|
|
3169
3169
|
const MENU_ITEM_CAPABILITY_RULES = {
|
|
3170
3170
|
"diagnostics": (descriptor) => descriptor.managedByCcjk.doctor,
|
|
@@ -3247,10 +3247,10 @@ const quickActionsItems = [
|
|
|
3247
3247
|
label: "menu:oneClick.update",
|
|
3248
3248
|
description: "menu:oneClick.updateDesc",
|
|
3249
3249
|
category: "quick",
|
|
3250
|
-
level: "
|
|
3250
|
+
level: "intermediate",
|
|
3251
3251
|
action: "command",
|
|
3252
3252
|
icon: "\u{1F504}",
|
|
3253
|
-
shortcut: "
|
|
3253
|
+
shortcut: "+",
|
|
3254
3254
|
supportedTools: NON_CODEX_TOOLS
|
|
3255
3255
|
},
|
|
3256
3256
|
{
|
|
@@ -3258,21 +3258,10 @@ const quickActionsItems = [
|
|
|
3258
3258
|
label: "menu:oneClick.notify",
|
|
3259
3259
|
description: "menu:oneClick.notifyDesc",
|
|
3260
3260
|
category: "quick",
|
|
3261
|
-
level: "
|
|
3261
|
+
level: "intermediate",
|
|
3262
3262
|
action: "command",
|
|
3263
3263
|
icon: "\u{1F4F1}",
|
|
3264
|
-
shortcut: "
|
|
3265
|
-
supportedTools: NON_CODEX_TOOLS
|
|
3266
|
-
},
|
|
3267
|
-
{
|
|
3268
|
-
id: "switch-code-tool",
|
|
3269
|
-
label: "menuOptions.switchCodeTool",
|
|
3270
|
-
description: "menuDescriptions.switchCodeTool",
|
|
3271
|
-
category: "quick",
|
|
3272
|
-
level: "basic",
|
|
3273
|
-
action: "command",
|
|
3274
|
-
icon: "\u{1F504}",
|
|
3275
|
-
shortcut: "s",
|
|
3264
|
+
shortcut: "n",
|
|
3276
3265
|
supportedTools: NON_CODEX_TOOLS
|
|
3277
3266
|
}
|
|
3278
3267
|
];
|
|
@@ -3285,7 +3274,7 @@ const configItems = [
|
|
|
3285
3274
|
level: "basic",
|
|
3286
3275
|
action: "command",
|
|
3287
3276
|
icon: "\u{1F50C}",
|
|
3288
|
-
shortcut: "
|
|
3277
|
+
shortcut: "4"
|
|
3289
3278
|
},
|
|
3290
3279
|
{
|
|
3291
3280
|
id: "model-config",
|
|
@@ -3295,7 +3284,7 @@ const configItems = [
|
|
|
3295
3284
|
level: "basic",
|
|
3296
3285
|
action: "command",
|
|
3297
3286
|
icon: "\u{1F916}",
|
|
3298
|
-
shortcut: "
|
|
3287
|
+
shortcut: "5"
|
|
3299
3288
|
},
|
|
3300
3289
|
{
|
|
3301
3290
|
id: "memory-config",
|
|
@@ -3305,17 +3294,17 @@ const configItems = [
|
|
|
3305
3294
|
level: "basic",
|
|
3306
3295
|
action: "command",
|
|
3307
3296
|
icon: "\u{1F9E0}",
|
|
3308
|
-
shortcut: "
|
|
3297
|
+
shortcut: "6"
|
|
3309
3298
|
},
|
|
3310
3299
|
{
|
|
3311
3300
|
id: "permission-config",
|
|
3312
3301
|
label: "menu:configCenter.permission",
|
|
3313
3302
|
description: "menu:configCenter.permissionDesc",
|
|
3314
3303
|
category: "config",
|
|
3315
|
-
level: "
|
|
3304
|
+
level: "basic",
|
|
3316
3305
|
action: "command",
|
|
3317
3306
|
icon: "\u{1F6E1}\uFE0F",
|
|
3318
|
-
shortcut: "
|
|
3307
|
+
shortcut: "7",
|
|
3319
3308
|
supportedTools: NON_CODEX_TOOLS
|
|
3320
3309
|
},
|
|
3321
3310
|
{
|
|
@@ -3564,7 +3553,7 @@ const levelDefinitions = {
|
|
|
3564
3553
|
basic: {
|
|
3565
3554
|
name: "Basic",
|
|
3566
3555
|
description: "Essential features for getting started",
|
|
3567
|
-
maxItems:
|
|
3556
|
+
maxItems: 8,
|
|
3568
3557
|
icon: "\u{1F331}",
|
|
3569
3558
|
categories: ["quick", "config"],
|
|
3570
3559
|
features: [
|
|
@@ -3572,10 +3561,11 @@ const levelDefinitions = {
|
|
|
3572
3561
|
// #1 Core feature - one-click API setup
|
|
3573
3562
|
"One-click setup",
|
|
3574
3563
|
"Diagnostics",
|
|
3575
|
-
"Update all",
|
|
3576
|
-
"Notifications",
|
|
3577
3564
|
"MCP config",
|
|
3578
3565
|
"Model config",
|
|
3566
|
+
"Memory management",
|
|
3567
|
+
"One-click permissions",
|
|
3568
|
+
"Switch code tool",
|
|
3579
3569
|
"Doctor"
|
|
3580
3570
|
]
|
|
3581
3571
|
},
|
|
@@ -3811,14 +3801,14 @@ function getToolModeMeta(codeTool) {
|
|
|
3811
3801
|
config: t("menu:toolMode.claude.config", "Primary config: ~/.claude/settings.json"),
|
|
3812
3802
|
menuTitle: t("menu:toolMode.claude.menuTitle", "Claude Control Center")
|
|
3813
3803
|
};
|
|
3814
|
-
case "
|
|
3804
|
+
case "clavue":
|
|
3815
3805
|
return {
|
|
3816
3806
|
icon: "\u25C9",
|
|
3817
|
-
title: t("menu:toolMode.
|
|
3818
|
-
summary: t("menu:toolMode.
|
|
3819
|
-
focus: t("menu:toolMode.
|
|
3820
|
-
config: t("menu:toolMode.
|
|
3821
|
-
menuTitle: t("menu:toolMode.
|
|
3807
|
+
title: t("menu:toolMode.clavue.title", "Clavue Workspace"),
|
|
3808
|
+
summary: t("menu:toolMode.clavue.summary", "Provider-first control center with explicit runtime status at startup."),
|
|
3809
|
+
focus: t("menu:toolMode.clavue.focus", "Provider profiles, routing state, model slots, and Claude-family compatible configuration."),
|
|
3810
|
+
config: t("menu:toolMode.clavue.config", "Primary config: ~/.clavue/.clavue.json (runtime) + ~/.ccjk/config.toml (reusable profiles)"),
|
|
3811
|
+
menuTitle: t("menu:toolMode.clavue.menuTitle", "Clavue Control Center")
|
|
3822
3812
|
};
|
|
3823
3813
|
case "codex":
|
|
3824
3814
|
return {
|
|
@@ -4115,6 +4105,36 @@ function printSeparator() {
|
|
|
4115
4105
|
${a.dim("\u2500".repeat(50))}
|
|
4116
4106
|
`);
|
|
4117
4107
|
}
|
|
4108
|
+
async function runSimpleNumericMenu(options) {
|
|
4109
|
+
console.log(a.green(options.title));
|
|
4110
|
+
{
|
|
4111
|
+
console.log(options.subtitle);
|
|
4112
|
+
}
|
|
4113
|
+
for (const item of options.items) {
|
|
4114
|
+
const description = item.description ? ` ${a.gray(`- ${item.description}`)}` : "";
|
|
4115
|
+
console.log(` ${a.green(`${item.key}.`)} ${item.label}${description}`);
|
|
4116
|
+
}
|
|
4117
|
+
console.log(` ${a.green("0.")} ${options.backLabel || i18n.t("common:back")}`);
|
|
4118
|
+
console.log("");
|
|
4119
|
+
const validChoices = ["0", ...options.items.map((item) => item.key)];
|
|
4120
|
+
const { choice } = await inquirer.prompt({
|
|
4121
|
+
type: "input",
|
|
4122
|
+
name: "choice",
|
|
4123
|
+
message: i18n.t("common:enterChoice"),
|
|
4124
|
+
validate: (value) => validChoices.includes(value) || i18n.t("common:invalidChoice")
|
|
4125
|
+
});
|
|
4126
|
+
if (!choice || choice === "0") {
|
|
4127
|
+
return;
|
|
4128
|
+
}
|
|
4129
|
+
const selectedItem = options.items.find((item) => item.key === choice);
|
|
4130
|
+
if (!selectedItem) {
|
|
4131
|
+
return;
|
|
4132
|
+
}
|
|
4133
|
+
await selectedItem.action();
|
|
4134
|
+
if (options.showSeparatorAfterAction ?? true) {
|
|
4135
|
+
printSeparator();
|
|
4136
|
+
}
|
|
4137
|
+
}
|
|
4118
4138
|
function getCurrentCodeTool() {
|
|
4119
4139
|
const config = readZcfConfig();
|
|
4120
4140
|
if (config?.codeToolType && isCodeToolType(config.codeToolType)) {
|
|
@@ -4220,7 +4240,7 @@ function attachHandlers(items, codeTool) {
|
|
|
4220
4240
|
}
|
|
4221
4241
|
};
|
|
4222
4242
|
case "permission-config":
|
|
4223
|
-
return { ...item, handler: async () => await (await import('./
|
|
4243
|
+
return { ...item, handler: async () => await (await import('./features.mjs')).configureMergedPermissionsFeature() };
|
|
4224
4244
|
case "config-switch":
|
|
4225
4245
|
return {
|
|
4226
4246
|
...item,
|
|
@@ -4373,11 +4393,15 @@ function flattenSections(itemsBySection) {
|
|
|
4373
4393
|
return itemsBySection.flatMap((section) => section.items);
|
|
4374
4394
|
}
|
|
4375
4395
|
function getProgressiveFooterCommands(codeTool) {
|
|
4376
|
-
if (codeTool === "
|
|
4396
|
+
if (codeTool === "clavue") {
|
|
4377
4397
|
return [
|
|
4378
4398
|
{
|
|
4379
4399
|
key: "s",
|
|
4380
4400
|
label: i18n.t("menu:menuOptions.switchCodeTool")
|
|
4401
|
+
},
|
|
4402
|
+
{
|
|
4403
|
+
key: "+",
|
|
4404
|
+
label: i18n.t("menu:menuOptions.checkUpdates", "Check Updates")
|
|
4381
4405
|
}
|
|
4382
4406
|
];
|
|
4383
4407
|
}
|
|
@@ -4403,7 +4427,7 @@ function getProgressiveFooterCommands(codeTool) {
|
|
|
4403
4427
|
function buildMyclaudeRuntimeSummary(syncResult) {
|
|
4404
4428
|
if (!syncResult?.activeProfile) {
|
|
4405
4429
|
return {
|
|
4406
|
-
runtimeLabel: "
|
|
4430
|
+
runtimeLabel: "clavue / no active provider synced"
|
|
4407
4431
|
};
|
|
4408
4432
|
}
|
|
4409
4433
|
const profile = syncResult.activeProfile;
|
|
@@ -4419,16 +4443,16 @@ function buildMyclaudeRuntimeSummary(syncResult) {
|
|
|
4419
4443
|
opusModel ? `opus ${opusModel}` : void 0
|
|
4420
4444
|
].filter(Boolean);
|
|
4421
4445
|
return {
|
|
4422
|
-
runtimeLabel: "
|
|
4446
|
+
runtimeLabel: "clavue",
|
|
4423
4447
|
profileLabel: `${profile.name} (${syncResult.activeProfileId || profile.id})`,
|
|
4424
4448
|
...presentation,
|
|
4425
4449
|
modelLabel: modelParts.join(" \xB7 ") || void 0
|
|
4426
4450
|
};
|
|
4427
4451
|
}
|
|
4428
4452
|
function getMenuShellConfig(codeTool) {
|
|
4429
|
-
if (codeTool === "codex" || codeTool === "
|
|
4453
|
+
if (codeTool === "codex" || codeTool === "clavue") {
|
|
4430
4454
|
return {
|
|
4431
|
-
allowMore: codeTool !== "
|
|
4455
|
+
allowMore: codeTool !== "clavue",
|
|
4432
4456
|
footerCommands: getProgressiveFooterCommands(codeTool),
|
|
4433
4457
|
menuTitle: getToolModeMenuTitle(codeTool),
|
|
4434
4458
|
showHero: true
|
|
@@ -4442,10 +4466,10 @@ function getMenuShellConfig(codeTool) {
|
|
|
4442
4466
|
};
|
|
4443
4467
|
}
|
|
4444
4468
|
async function showProgressiveMenu(codeTool, runtimeSyncResult) {
|
|
4445
|
-
if (codeTool !== "codex" && codeTool !== "
|
|
4446
|
-
const rawItems2 = getItemsForLevel(menuState.level,
|
|
4469
|
+
if (codeTool !== "codex" && codeTool !== "clavue") {
|
|
4470
|
+
const rawItems2 = getItemsForLevel(menuState.level, codeTool);
|
|
4447
4471
|
const items2 = attachHandlers(rawItems2, "claude-code");
|
|
4448
|
-
const sections2 = createAllSections(menuState.level,
|
|
4472
|
+
const sections2 = createAllSections(menuState.level, codeTool);
|
|
4449
4473
|
const maxItems2 = levelDefinitions[menuState.level].maxItems;
|
|
4450
4474
|
const filteredSections2 = filterSectionsByItemLimit(sections2, maxItems2);
|
|
4451
4475
|
const visibleItemCount2 = getVisibleItemCount(filteredSections2);
|
|
@@ -4531,7 +4555,7 @@ async function showProgressiveMenu(codeTool, runtimeSyncResult) {
|
|
|
4531
4555
|
const menuShell = getMenuShellConfig(codeTool);
|
|
4532
4556
|
const allowedCommands = ["0", "q", ...menuShell.allowMore ? ["m"] : [], ...menuShell.footerCommands.map((command) => command.key)];
|
|
4533
4557
|
if (menuShell.showHero) {
|
|
4534
|
-
console.log(renderToolModeHero(codeTool, 76, codeTool === "
|
|
4558
|
+
console.log(renderToolModeHero(codeTool, 76, codeTool === "clavue" ? buildMyclaudeRuntimeSummary(runtimeSyncResult) : void 0));
|
|
4535
4559
|
console.log("");
|
|
4536
4560
|
}
|
|
4537
4561
|
const menuOutput = renderMenu(
|
|
@@ -4564,7 +4588,7 @@ async function showProgressiveMenu(codeTool, runtimeSyncResult) {
|
|
|
4564
4588
|
printSeparator();
|
|
4565
4589
|
return "continue";
|
|
4566
4590
|
}
|
|
4567
|
-
if (codeTool === "codex" && input.normalized === "s") {
|
|
4591
|
+
if ((codeTool === "codex" || codeTool === "clavue") && input.normalized === "s") {
|
|
4568
4592
|
const switched = await handleCodeToolSwitch(codeTool);
|
|
4569
4593
|
if (switched) {
|
|
4570
4594
|
return "switch";
|
|
@@ -4572,6 +4596,11 @@ async function showProgressiveMenu(codeTool, runtimeSyncResult) {
|
|
|
4572
4596
|
printSeparator();
|
|
4573
4597
|
return "continue";
|
|
4574
4598
|
}
|
|
4599
|
+
if (codeTool === "clavue" && input.normalized === "+") {
|
|
4600
|
+
await checkUpdates();
|
|
4601
|
+
printSeparator();
|
|
4602
|
+
return "continue";
|
|
4603
|
+
}
|
|
4575
4604
|
if (codeTool === "codex" && input.normalized === "+") {
|
|
4576
4605
|
await runCodexUpdate();
|
|
4577
4606
|
printSeparator();
|
|
@@ -4703,7 +4732,7 @@ async function showMoreFeaturesMenu() {
|
|
|
4703
4732
|
await (await import('./config3.mjs')).configCommand("set", ["memory"], {});
|
|
4704
4733
|
break;
|
|
4705
4734
|
case "8":
|
|
4706
|
-
await (await import('./
|
|
4735
|
+
await (await import('./features.mjs')).configureMergedPermissionsFeature();
|
|
4707
4736
|
break;
|
|
4708
4737
|
case "9":
|
|
4709
4738
|
await configSwitchCommand({ codeType: codeTool });
|
|
@@ -5032,50 +5061,36 @@ async function showMarketplaceMenu() {
|
|
|
5032
5061
|
printSeparator();
|
|
5033
5062
|
}
|
|
5034
5063
|
async function showHooksSyncMenu() {
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
|
|
5064
|
+
await runSimpleNumericMenu({
|
|
5065
|
+
title: i18n.t("menu:hooksSync.title"),
|
|
5066
|
+
subtitle: " -------- Hooks Cloud Sync --------",
|
|
5067
|
+
items: [
|
|
5068
|
+
{
|
|
5069
|
+
key: "1",
|
|
5070
|
+
label: i18n.t("menu:hooksSync.viewStatus"),
|
|
5071
|
+
description: i18n.t("menu:hooksSync.viewStatusDesc"),
|
|
5072
|
+
action: async () => hooksSync({ action: "list" })
|
|
5073
|
+
},
|
|
5074
|
+
{
|
|
5075
|
+
key: "2",
|
|
5076
|
+
label: i18n.t("menu:hooksSync.syncNow"),
|
|
5077
|
+
description: i18n.t("menu:hooksSync.syncNowDesc"),
|
|
5078
|
+
action: async () => hooksSync({ action: "sync" })
|
|
5079
|
+
},
|
|
5080
|
+
{
|
|
5081
|
+
key: "3",
|
|
5082
|
+
label: i18n.t("menu:hooksSync.configure"),
|
|
5083
|
+
description: i18n.t("menu:hooksSync.configureDesc"),
|
|
5084
|
+
action: async () => hooksSync({})
|
|
5085
|
+
},
|
|
5086
|
+
{
|
|
5087
|
+
key: "4",
|
|
5088
|
+
label: i18n.t("menu:hooksSync.browseTemplates"),
|
|
5089
|
+
description: i18n.t("menu:hooksSync.browseTemplatesDesc"),
|
|
5090
|
+
action: async () => hooksSync({ action: "templates" })
|
|
5091
|
+
}
|
|
5092
|
+
]
|
|
5060
5093
|
});
|
|
5061
|
-
if (!choice || choice === "0") {
|
|
5062
|
-
return;
|
|
5063
|
-
}
|
|
5064
|
-
switch (choice) {
|
|
5065
|
-
case "1":
|
|
5066
|
-
await hooksSync({ action: "list" });
|
|
5067
|
-
break;
|
|
5068
|
-
case "2":
|
|
5069
|
-
await hooksSync({ action: "sync" });
|
|
5070
|
-
break;
|
|
5071
|
-
case "3":
|
|
5072
|
-
await hooksSync({});
|
|
5073
|
-
break;
|
|
5074
|
-
case "4":
|
|
5075
|
-
await hooksSync({ action: "templates" });
|
|
5076
|
-
break;
|
|
5077
|
-
}
|
|
5078
|
-
printSeparator();
|
|
5079
5094
|
}
|
|
5080
5095
|
async function showQuickActionsMenu() {
|
|
5081
5096
|
const lang = i18n.language;
|
|
@@ -5262,7 +5277,7 @@ async function showOutputStylesMenu() {
|
|
|
5262
5277
|
async function handleCodeToolSwitch(current) {
|
|
5263
5278
|
const CODE_TOOL_LABELS = {
|
|
5264
5279
|
"claude-code": "Claude Code",
|
|
5265
|
-
"
|
|
5280
|
+
"clavue": "clavue",
|
|
5266
5281
|
"codex": "Codex",
|
|
5267
5282
|
"aider": "Aider",
|
|
5268
5283
|
"continue": "Continue",
|
|
@@ -5307,7 +5322,7 @@ async function showMainMenu(options = {}) {
|
|
|
5307
5322
|
if (await isFirstTimeUser()) {
|
|
5308
5323
|
await runOnboardingWizard({ preferredCodeTool: options.codeType });
|
|
5309
5324
|
}
|
|
5310
|
-
let
|
|
5325
|
+
let clavueRuntimeSyncResult = null;
|
|
5311
5326
|
try {
|
|
5312
5327
|
const previousType = getCurrentCodeTool();
|
|
5313
5328
|
const resolvedType = await resolveStartupCodeType({
|
|
@@ -5328,11 +5343,11 @@ async function showMainMenu(options = {}) {
|
|
|
5328
5343
|
while (!exitMenu) {
|
|
5329
5344
|
const codeTool = getCurrentCodeTool();
|
|
5330
5345
|
displayBannerWithInfo(CODE_TOOL_BANNERS[codeTool] || "CCJK");
|
|
5331
|
-
if (codeTool === "
|
|
5332
|
-
const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.
|
|
5333
|
-
|
|
5346
|
+
if (codeTool === "clavue") {
|
|
5347
|
+
const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.H; });
|
|
5348
|
+
clavueRuntimeSyncResult = syncMyclaudeProviderProfilesFromCurrentClaudeConfig();
|
|
5334
5349
|
}
|
|
5335
|
-
const result = await showProgressiveMenu(codeTool,
|
|
5350
|
+
const result = await showProgressiveMenu(codeTool, clavueRuntimeSyncResult);
|
|
5336
5351
|
if (result === "exit") {
|
|
5337
5352
|
exitMenu = true;
|
|
5338
5353
|
} else if (result === "switch") {
|