ccjk 15.18.0 → 15.19.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/dist/commands/menu.js +50 -18
- package/dist/commands/menu.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/menu.js
CHANGED
|
@@ -11,7 +11,7 @@ import { mcpCommand } from './mcp.js';
|
|
|
11
11
|
import { doctorCommand } from './doctor.js';
|
|
12
12
|
import { gitInstallCommand } from './git-install.js';
|
|
13
13
|
import { profileUseCommand } from './profile.js';
|
|
14
|
-
import { permsCommand } from './perms.js';
|
|
14
|
+
import { permsCommand, permsCleanCommand, permsShowCommand } from './perms.js';
|
|
15
15
|
import { rollbackCommand } from './rollback.js';
|
|
16
16
|
import { statusLineInstallCommand } from './statusline.js';
|
|
17
17
|
import { installCommand, updateCommand, versionCommand } from './version.js';
|
|
@@ -21,42 +21,66 @@ import { envPermCommand } from './env-perm.js';
|
|
|
21
21
|
import { statusCommand } from './status.js';
|
|
22
22
|
import { collectStatus, renderBanner, renderStatusBar } from '../core/banner.js';
|
|
23
23
|
import { displayWidth, padToWidth, recommendedPageSize, recommendedSepWidth, softClear } from '../core/term.js';
|
|
24
|
+
/**
|
|
25
|
+
* 主菜单。
|
|
26
|
+
*
|
|
27
|
+
* 布局原则(参考 ZCF 的线性工作流):
|
|
28
|
+
* 1. "开始使用"块走新用户最常见路径:配 API → 设权限 → 编辑/切换
|
|
29
|
+
* — 权限档位是第 3 项(紧挨 API 配置),因为"装完就立刻想减少授权弹窗"是高频诉求
|
|
30
|
+
* 2. "对话能力"块是装完后的深度配置
|
|
31
|
+
* 3. "增强"块是可选工具(statusline / mcp / slash 命令)
|
|
32
|
+
* 4. "工具与维护"块合并所有低频管理动作,走二级菜单避免主菜单膨胀
|
|
33
|
+
*
|
|
34
|
+
* 同一类功能(perms 有 3 条:切档 / 查看 / 清理)走二级菜单。
|
|
35
|
+
*/
|
|
24
36
|
const GROUPS = [
|
|
25
37
|
{
|
|
26
|
-
title: '
|
|
38
|
+
title: '开始使用',
|
|
27
39
|
items: [
|
|
28
40
|
{ label: '一键粘贴配置(quick)', hint: '粘贴中转厂商发来的一段配置,自动识别', run: () => quickMenuCommand() },
|
|
29
41
|
{ label: '逐步配置 API(init)', hint: '选 provider → 填 URL/Key → 起 profile', run: () => initCommand() },
|
|
42
|
+
{ label: '权限档位(一键减少授权)', hint: 'safe / standard / yolo,同步三个工具 →', run: () => permsSubMenu() },
|
|
30
43
|
{ label: '编辑当前 Profile', hint: '改 key / URL / model,不用重新走 init', run: () => editCommand() },
|
|
31
44
|
{ label: '切换 Profile', hint: '在已配过的多个 API 之间一键切换', run: () => profileUseCommand(undefined) },
|
|
32
|
-
{ label: '权限档位', hint: 'safe / standard / yolo(同步三个工具)', run: () => permsCommand(undefined) },
|
|
33
|
-
{ label: '查看当前设置', hint: 'profile / perms / mode / 工具版本 一览', run: () => statusCommand() },
|
|
34
45
|
],
|
|
35
46
|
},
|
|
36
47
|
{
|
|
37
|
-
title: '
|
|
48
|
+
title: '对话能力',
|
|
38
49
|
items: [
|
|
39
|
-
{ label: '运行工作流', hint: '一组命令一键跑(starter / dev-ready / ...)', run: () => workflowRunCommand(undefined) },
|
|
40
50
|
{ label: '切换对话模式', hint: 'code / chat / fast / deep(thinking + effort)', run: () => modeUseCommand(undefined) },
|
|
51
|
+
{ label: '运行工作流', hint: '一组命令一键跑(starter / dev-ready / ...)', run: () => workflowRunCommand(undefined) },
|
|
41
52
|
],
|
|
42
53
|
},
|
|
43
54
|
{
|
|
44
|
-
title: '
|
|
55
|
+
title: '增强',
|
|
45
56
|
items: [
|
|
46
|
-
{ label: '
|
|
47
|
-
{ label: '
|
|
48
|
-
{ label: '
|
|
57
|
+
{ label: '状态栏', hint: '显示模型 / 用量 / 速率', run: () => statusLineInstallCommand() },
|
|
58
|
+
{ label: 'MCP 服务', hint: 'context7 / serena / playwright ...', run: () => mcpCommand() },
|
|
59
|
+
{ label: 'Git 命令模板', hint: '/ccjk:git-commit 等 slash 命令', run: () => gitInstallCommand() },
|
|
49
60
|
],
|
|
50
61
|
},
|
|
51
62
|
{
|
|
52
|
-
title: '
|
|
63
|
+
title: '工具与维护',
|
|
53
64
|
items: [
|
|
54
|
-
{ label: '
|
|
55
|
-
{ label: '更新与检测', hint: '体检 / 版本 / 安装 / 升级 /
|
|
65
|
+
{ label: '查看当前设置', hint: 'profile / perms / mode / 工具版本 一览', run: () => statusCommand() },
|
|
66
|
+
{ label: '更新与检测', hint: '体检 / 版本 / 安装 / 升级 / 检测 →', run: () => maintenanceSubMenu() },
|
|
56
67
|
{ label: '从备份还原', hint: '回滚 settings.json / config.toml', run: () => rollbackCommand() },
|
|
57
68
|
],
|
|
58
69
|
},
|
|
59
70
|
];
|
|
71
|
+
/**
|
|
72
|
+
* 权限子菜单。把"档位切换 / 查看 / 清理 / 环境变量"四个命令合到一起,
|
|
73
|
+
* 主菜单只露一级入口,降低视觉负担。
|
|
74
|
+
*/
|
|
75
|
+
async function permsSubMenu() {
|
|
76
|
+
const SUB_ITEMS = [
|
|
77
|
+
{ label: '切换档位(safe/standard/yolo)', hint: '同步作用于 Clavue / Claude Code / Codex', run: () => permsCommand(undefined) },
|
|
78
|
+
{ label: '查看当前权限', hint: '三个工具的 allow/deny 明细', run: () => permsShowCommand() },
|
|
79
|
+
{ label: '清理冗余规则', hint: '去重 / 去掉被覆盖的 allow 条目', run: () => permsCleanCommand() },
|
|
80
|
+
{ label: '环境变量与手动编辑', hint: '推荐 env / 打开 settings.json 手改', run: () => envPermCommand() },
|
|
81
|
+
];
|
|
82
|
+
await runSubMenu('权限与授权', SUB_ITEMS);
|
|
83
|
+
}
|
|
60
84
|
/**
|
|
61
85
|
* 维护与诊断的二级菜单。把 5 个低频维护动作合并到一个入口,避免主菜单太长。
|
|
62
86
|
* 选完跑完直接 return,外层 menuCommand 的循环会回到主菜单。
|
|
@@ -69,13 +93,19 @@ async function maintenanceSubMenu() {
|
|
|
69
93
|
{ label: '更新代码工具', hint: '升级到最新版', run: () => updateCommand(undefined) },
|
|
70
94
|
{ label: '检测已安装的工具', hint: '看哪些已装哪些没装', run: async () => detectCommand() },
|
|
71
95
|
];
|
|
96
|
+
await runSubMenu('维护与诊断', SUB_ITEMS);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 统一的二级菜单渲染 + 选择循环。提出来避免 permsSubMenu / maintenanceSubMenu 各写一份。
|
|
100
|
+
*/
|
|
101
|
+
async function runSubMenu(title, items) {
|
|
72
102
|
const choice = await select({
|
|
73
|
-
message: ansis.bold(
|
|
103
|
+
message: ansis.bold(title),
|
|
74
104
|
pageSize: recommendedPageSize(),
|
|
75
105
|
loop: false,
|
|
76
106
|
choices: [
|
|
77
|
-
...
|
|
78
|
-
name: `${padToWidth(it.label,
|
|
107
|
+
...items.map((it, i) => ({
|
|
108
|
+
name: `${padToWidth(it.label, 28)} ${ansis.dim(it.hint ?? '')}`,
|
|
79
109
|
value: i,
|
|
80
110
|
short: it.label,
|
|
81
111
|
})),
|
|
@@ -85,7 +115,7 @@ async function maintenanceSubMenu() {
|
|
|
85
115
|
});
|
|
86
116
|
if (choice < 0)
|
|
87
117
|
return;
|
|
88
|
-
const sub =
|
|
118
|
+
const sub = items[choice];
|
|
89
119
|
if (!sub)
|
|
90
120
|
return;
|
|
91
121
|
await sub.run();
|
|
@@ -126,6 +156,8 @@ export async function menuCommand() {
|
|
|
126
156
|
let idx = 0;
|
|
127
157
|
const flat = [];
|
|
128
158
|
const SEP_WIDTH = recommendedSepWidth();
|
|
159
|
+
// label 宽度取所有项的视觉最大值,保底 20,避免窄屏炸列
|
|
160
|
+
const LABEL_W = Math.max(20, ...GROUPS.flatMap(g => g.items.map(it => displayWidth(it.label))));
|
|
129
161
|
for (const g of GROUPS) {
|
|
130
162
|
// 按视觉宽度算横杠数:── 标题 ─...─ 总宽度对齐
|
|
131
163
|
const titlePart = `── ${g.title} `;
|
|
@@ -135,7 +167,7 @@ export async function menuCommand() {
|
|
|
135
167
|
choices.push(new Separator(ansis.dim(sep)));
|
|
136
168
|
for (const item of g.items) {
|
|
137
169
|
const hint = item.hint ? ` ${ansis.dim(item.hint)}` : '';
|
|
138
|
-
const padded = padToWidth(item.label,
|
|
170
|
+
const padded = padToWidth(item.label, LABEL_W);
|
|
139
171
|
choices.push({ name: `${padded}${hint}`, value: idx, short: item.label });
|
|
140
172
|
flat.push(item);
|
|
141
173
|
idx++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"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"}
|