ccjk 15.7.0 → 15.9.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 +54 -0
- package/dist/cli.js +54 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/menu.js +81 -32
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/mode.js +143 -0
- package/dist/commands/mode.js.map +1 -0
- package/dist/commands/profile.js +20 -2
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/workflow.js +145 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/core/banner.js +6 -0
- package/dist/core/banner.js.map +1 -1
- package/dist/core/modes.js +128 -0
- package/dist/core/modes.js.map +1 -0
- package/dist/core/workflows.js +80 -0
- package/dist/core/workflows.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,8 @@ npm install -g ccjk
|
|
|
19
19
|
| 场景 | 命令 |
|
|
20
20
|
|---|---|
|
|
21
21
|
| 第一次配 API key | `ccjk init` |
|
|
22
|
+
| 装机后想一键配置好 | `ccjk workflow run starter` |
|
|
23
|
+
| 写代码 / 闲聊切换思考强度 | `ccjk mode use code` / `ccjk mode use chat` |
|
|
22
24
|
| 多个 API key 之间切换(GLM/Kimi/Anthropic/...) | `ccjk use` |
|
|
23
25
|
| 不想每次都点确认权限 | `ccjk perms standard` |
|
|
24
26
|
| 看不到当前模型/用量 | `ccjk statusline-install` |
|
|
@@ -31,6 +33,17 @@ npm install -g ccjk
|
|
|
31
33
|
|
|
32
34
|
## 命令一览
|
|
33
35
|
|
|
36
|
+
### 快速开始
|
|
37
|
+
|
|
38
|
+
| 命令 | 用途 |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `ccjk workflow ls` | 列出可用工作流(starter / team-import / reset-soft / dev-ready) |
|
|
41
|
+
| `ccjk workflow run [id]` | **跑工作流**:按顺序执行多个 ccjk 命令(每步单独确认) |
|
|
42
|
+
| `ccjk mode ls` | 列出可用对话模式(code / chat / fast / deep) |
|
|
43
|
+
| `ccjk mode use [name]` | **切换对话模式**:thinking / effort 一键档位(同步 Claude+Codex) |
|
|
44
|
+
| `ccjk mode show [name]` | 查看模式详情(不带参=当前) |
|
|
45
|
+
| `ccjk mode add [name]` | 新建自定义模式(基于内置模式复制+改) |
|
|
46
|
+
|
|
34
47
|
### 配置 API(init / use / profile)
|
|
35
48
|
|
|
36
49
|
| 命令 | 用途 |
|
|
@@ -93,6 +106,47 @@ npm install -g ccjk
|
|
|
93
106
|
|
|
94
107
|
## 详解
|
|
95
108
|
|
|
109
|
+
### Workflow:快速工作流
|
|
110
|
+
|
|
111
|
+
把多个 ccjk 命令串起来一键跑,省去你按顺序敲。每步都会单独问你"执行 / 跳过 / 中止",不会偷偷做事。
|
|
112
|
+
|
|
113
|
+
| 工作流 | 步骤 |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `starter` | 配 API → perms standard → statusline-install → 装常用 MCP(可选) |
|
|
116
|
+
| `team-import` | 导入 profile 包 → 切到该 profile → perms standard → doctor --fix |
|
|
117
|
+
| `reset-soft` | 卸 statusline → 切到 perms safe |
|
|
118
|
+
| `dev-ready` | 切 code 对话模式 → perms standard → 装 git slash 命令 → doctor --fix |
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
ccjk workflow # 列出全部
|
|
122
|
+
ccjk workflow run starter # 直接跑 starter
|
|
123
|
+
ccjk workflow run # 交互选
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
工作流定义存在代码里,未来会支持 `~/.ccjk/workflows/<id>.json` 加载用户自定义(数据结构已就位)。
|
|
127
|
+
|
|
128
|
+
### Mode:对话模式
|
|
129
|
+
|
|
130
|
+
把 Claude/Clavue 的 `thinking` 设置和 Codex 的 `model_reasoning_effort` 抽象成一个统一档位,一键同步两个工具。
|
|
131
|
+
|
|
132
|
+
| 模式 | Claude thinking | Codex effort | 适用 |
|
|
133
|
+
|---|---|---|---|
|
|
134
|
+
| `code` | on, budget 16k | high | 写代码、调 bug、重构 |
|
|
135
|
+
| `chat` | off | medium | 答疑、解释概念、随便聊 |
|
|
136
|
+
| `fast` | off | low | 简单查询、小修改、想立刻拿到结果 |
|
|
137
|
+
| `deep` | on, budget 32k | high | 架构设计、复杂 debug、多角度推理 |
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
ccjk mode ls # 列出全部模式(标记当前)
|
|
141
|
+
ccjk mode use code # 切到 code 模式(同步 Claude + Codex)
|
|
142
|
+
ccjk mode show # 看当前模式详情
|
|
143
|
+
ccjk mode add fast2 --base fast --thinking off --effort low # 自定义模式
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
写到工具的**原生字段**(`thinking`、`model_reasoning_effort`),卸载 ccjk 后配置依然有效。需要重启 Claude Code / Codex 才能生效。
|
|
147
|
+
|
|
148
|
+
自定义模式存在 `~/.ccjk/modes/<id>.json`,可手动编辑。同名时覆盖内置。
|
|
149
|
+
|
|
96
150
|
### Profile:多 API 切换
|
|
97
151
|
|
|
98
152
|
`ccjk init` 配完 API 默认会问"保存为 profile?"。之后 `ccjk use` 可以在多个 profile 之间一键切换:
|
package/dist/cli.js
CHANGED
|
@@ -16,6 +16,8 @@ import { permsCommand, permsShowCommand } from './commands/perms.js';
|
|
|
16
16
|
import { rollbackCommand } from './commands/rollback.js';
|
|
17
17
|
import { statusLineCommand, statusLineInstallCommand, statusLineUninstallCommand, } from './commands/statusline.js';
|
|
18
18
|
import { installCommand, updateCommand, versionCommand } from './commands/version.js';
|
|
19
|
+
import { modeAddCommand, modeListCommand, modeShowCommand, modeUseCommand, } from './commands/mode.js';
|
|
20
|
+
import { workflowListCommand, workflowRunCommand } from './commands/workflow.js';
|
|
19
21
|
const pkgPath = join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
|
|
20
22
|
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
21
23
|
const program = new Command();
|
|
@@ -145,6 +147,48 @@ program
|
|
|
145
147
|
.command('detect')
|
|
146
148
|
.description('检测已安装的代码工具')
|
|
147
149
|
.action(detectCommand);
|
|
150
|
+
const mode = program
|
|
151
|
+
.command('mode')
|
|
152
|
+
.description('对话模式:thinking/effort 一键档位(code/chat/fast/deep ...)');
|
|
153
|
+
mode
|
|
154
|
+
.command('ls', { isDefault: true })
|
|
155
|
+
.description('列出所有模式(标记当前)')
|
|
156
|
+
.action(modeListCommand);
|
|
157
|
+
mode
|
|
158
|
+
.command('use [name]')
|
|
159
|
+
.description('切换对话模式(同时作用于 Claude/Clavue + Codex)')
|
|
160
|
+
.option('--tools <list>', '逗号分隔指定工具')
|
|
161
|
+
.option('-y, --yes', '跳过确认')
|
|
162
|
+
.action((name, opts) => modeUseCommand(name, opts));
|
|
163
|
+
mode
|
|
164
|
+
.command('show [name]')
|
|
165
|
+
.description('查看模式详情(不带参看当前)')
|
|
166
|
+
.action((name) => modeShowCommand(name));
|
|
167
|
+
mode
|
|
168
|
+
.command('add [name]')
|
|
169
|
+
.description('新建自定义模式(基于内置模式复制 + 改)')
|
|
170
|
+
.option('--base <id>', '基于哪个模式复制(默认空白)')
|
|
171
|
+
.option('--thinking <on|off>', 'Claude 是否启用 thinking')
|
|
172
|
+
.option('--budget <tokens>', 'thinking budget tokens')
|
|
173
|
+
.option('--effort <low|medium|high>', 'Codex reasoning effort')
|
|
174
|
+
.action((name, opts) => modeAddCommand(name, {
|
|
175
|
+
...(opts.base ? { base: opts.base } : {}),
|
|
176
|
+
...(opts.thinking ? { thinking: opts.thinking } : {}),
|
|
177
|
+
...(opts.budget ? { budget: Number(opts.budget) } : {}),
|
|
178
|
+
...(opts.effort ? { effort: opts.effort } : {}),
|
|
179
|
+
}));
|
|
180
|
+
const workflow = program
|
|
181
|
+
.command('workflow')
|
|
182
|
+
.description('快速工作流:按顺序跑多个 ccjk 命令(starter / team-import / dev-ready ...)');
|
|
183
|
+
workflow
|
|
184
|
+
.command('ls', { isDefault: true })
|
|
185
|
+
.description('列出可用工作流')
|
|
186
|
+
.action(workflowListCommand);
|
|
187
|
+
workflow
|
|
188
|
+
.command('run [id]')
|
|
189
|
+
.description('执行工作流(不带参=交互选择)')
|
|
190
|
+
.option('-y, --yes', '跳过启动确认(每步仍单独确认)')
|
|
191
|
+
.action((id, opts) => workflowRunCommand(id, opts));
|
|
148
192
|
program
|
|
149
193
|
.command('tools')
|
|
150
194
|
.description('查看 Clavue / Claude Code / Codex 的本地版本(加 --check-updates 查最新)')
|
|
@@ -176,7 +220,17 @@ program
|
|
|
176
220
|
.description('交互菜单(默认命令)')
|
|
177
221
|
.action(menuCommand);
|
|
178
222
|
program.parseAsync(process.argv).catch((err) => {
|
|
223
|
+
// inquirer 9+ 在 Ctrl+C 时抛 ExitPromptError,安静退出不报红
|
|
224
|
+
if (err && (err.name === 'ExitPromptError' || /User force closed/i.test(err.message))) {
|
|
225
|
+
console.log();
|
|
226
|
+
process.exit(0);
|
|
227
|
+
}
|
|
179
228
|
console.error(ansis.red(`\n✗ ${err.message}\n`));
|
|
180
229
|
process.exit(1);
|
|
181
230
|
});
|
|
231
|
+
// SIGINT 兜底(极少数情况下 inquirer 没接住)
|
|
232
|
+
process.on('SIGINT', () => {
|
|
233
|
+
console.log();
|
|
234
|
+
process.exit(0);
|
|
235
|
+
});
|
|
182
236
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,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,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/menu.js
CHANGED
|
@@ -13,8 +13,17 @@ import { permsCommand } from './perms.js';
|
|
|
13
13
|
import { rollbackCommand } from './rollback.js';
|
|
14
14
|
import { statusLineInstallCommand } from './statusline.js';
|
|
15
15
|
import { installCommand, updateCommand, versionCommand } from './version.js';
|
|
16
|
+
import { modeUseCommand } from './mode.js';
|
|
17
|
+
import { workflowRunCommand } from './workflow.js';
|
|
16
18
|
import { collectStatus, renderBanner, renderStatusBar } from '../core/banner.js';
|
|
17
19
|
const GROUPS = [
|
|
20
|
+
{
|
|
21
|
+
title: '快速开始',
|
|
22
|
+
items: [
|
|
23
|
+
{ label: '运行工作流', hint: '一连串命令一键跑(starter / dev-ready ...)', run: () => workflowRunCommand(undefined) },
|
|
24
|
+
{ label: '切换对话模式', hint: 'code / chat / fast / deep', run: () => modeUseCommand(undefined) },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
18
27
|
{
|
|
19
28
|
title: '配置 API',
|
|
20
29
|
items: [
|
|
@@ -73,39 +82,79 @@ function getVersion() {
|
|
|
73
82
|
}
|
|
74
83
|
}
|
|
75
84
|
export async function menuCommand() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
85
|
+
// 循环:执行完一个动作回到菜单首页,直到用户主动选"退出"。
|
|
86
|
+
// banner 只在第一次进入时打印,避免重复刷屏。
|
|
87
|
+
let firstRound = true;
|
|
88
|
+
while (true) {
|
|
89
|
+
if (firstRound) {
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(renderBanner(getVersion()));
|
|
92
|
+
console.log();
|
|
93
|
+
firstRound = false;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// 第二次以后只清屏不重打 banner(保留品牌但不嘈杂)
|
|
97
|
+
// 用 ANSI 清屏 + 重置光标。终端不支持就降级成空行分隔。
|
|
98
|
+
if (process.stdout.isTTY)
|
|
99
|
+
process.stdout.write('\x1Bc');
|
|
100
|
+
console.log();
|
|
101
|
+
}
|
|
102
|
+
// 状态实时刷新——用户可能刚改了 profile / perms,状态条要跟上
|
|
103
|
+
const status = await collectStatus();
|
|
104
|
+
const statusLines = renderStatusBar(status);
|
|
105
|
+
for (const l of statusLines)
|
|
106
|
+
console.log(l);
|
|
107
|
+
console.log();
|
|
108
|
+
const choices = [];
|
|
109
|
+
let idx = 0;
|
|
110
|
+
const flat = [];
|
|
111
|
+
for (const g of GROUPS) {
|
|
112
|
+
choices.push(new inquirer.Separator(ansis.dim(`── ${g.title} ───────────────────────────`)));
|
|
113
|
+
for (const item of g.items) {
|
|
114
|
+
const hint = item.hint ? ` ${ansis.dim(item.hint)}` : '';
|
|
115
|
+
const padded = padToVisibleWidth(item.label, 20);
|
|
116
|
+
choices.push({ name: `${padded}${hint}`, value: idx, short: item.label });
|
|
117
|
+
flat.push(item);
|
|
118
|
+
idx++;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
choices.push(new inquirer.Separator(ansis.dim('──────────────────────────────────────────')));
|
|
122
|
+
choices.push({ name: ansis.gray('退出 ccjk'), value: -1, short: '退出' });
|
|
123
|
+
const { choice } = await inquirer.prompt([{
|
|
124
|
+
type: 'list',
|
|
125
|
+
name: 'choice',
|
|
126
|
+
message: ansis.bold('选择操作'),
|
|
127
|
+
choices,
|
|
128
|
+
pageSize: 22,
|
|
129
|
+
loop: false,
|
|
130
|
+
}]);
|
|
131
|
+
if (choice < 0) {
|
|
132
|
+
console.log();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const item = flat[choice];
|
|
136
|
+
try {
|
|
137
|
+
await item.run();
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
// 子命令出错不该让整个 ccjk 崩。打印后回菜单。
|
|
141
|
+
console.log(ansis.red(`\n✗ ${item.label} 执行失败: ${e.message}\n`));
|
|
142
|
+
}
|
|
143
|
+
// 给用户一秒看输出。回车回菜单,q 直接退出。
|
|
144
|
+
const { next } = await inquirer.prompt([{
|
|
145
|
+
type: 'list',
|
|
146
|
+
name: 'next',
|
|
147
|
+
message: ansis.dim('完成。'),
|
|
148
|
+
default: 'menu',
|
|
149
|
+
choices: [
|
|
150
|
+
{ name: '回菜单', value: 'menu' },
|
|
151
|
+
{ name: ansis.gray('退出 ccjk'), value: 'quit' },
|
|
152
|
+
],
|
|
153
|
+
}]);
|
|
154
|
+
if (next === 'quit') {
|
|
155
|
+
console.log();
|
|
156
|
+
return;
|
|
95
157
|
}
|
|
96
158
|
}
|
|
97
|
-
choices.push(new inquirer.Separator(ansis.dim('──────────────────────────────────────────')));
|
|
98
|
-
choices.push({ name: ansis.gray('退出'), value: -1, short: '退出' });
|
|
99
|
-
const { choice } = await inquirer.prompt([{
|
|
100
|
-
type: 'list',
|
|
101
|
-
name: 'choice',
|
|
102
|
-
message: ansis.bold('选择操作'),
|
|
103
|
-
choices,
|
|
104
|
-
pageSize: 20,
|
|
105
|
-
loop: false,
|
|
106
|
-
}]);
|
|
107
|
-
if (choice < 0)
|
|
108
|
-
return;
|
|
109
|
-
await flat[choice].run();
|
|
110
159
|
}
|
|
111
160
|
//# sourceMappingURL=menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import ansis from 'ansis';
|
|
3
|
+
import { TOOLS } from '../core/tools.js';
|
|
4
|
+
import { readSettings, writeSettings } from '../core/settings.js';
|
|
5
|
+
import { readTomlFile, writeTomlFile } from '../core/toml.js';
|
|
6
|
+
import { applyModeToClaudeSettings, applyModeToCodexConfig, BUILTIN_MODES, listModes, readMode, readModeState, writeMode, writeModeState, } from '../core/modes.js';
|
|
7
|
+
export async function modeListCommand() {
|
|
8
|
+
const modes = await listModes();
|
|
9
|
+
const state = await readModeState();
|
|
10
|
+
console.log(ansis.bold(`\n对话模式(${modes.length}):\n`));
|
|
11
|
+
for (const m of modes) {
|
|
12
|
+
const isCurrent = state.current === m.id;
|
|
13
|
+
const mark = isCurrent ? ansis.green('●') : ' ';
|
|
14
|
+
const name = isCurrent ? ansis.green.bold(m.id.padEnd(10)) : m.id.padEnd(10);
|
|
15
|
+
const builtin = BUILTIN_MODES[m.id] ? ansis.dim('(内置)') : ansis.cyan('(自定义)');
|
|
16
|
+
console.log(` ${mark} ${name} ${m.name.padEnd(8)} ${builtin}`);
|
|
17
|
+
console.log(` ${ansis.dim(m.description)}`);
|
|
18
|
+
}
|
|
19
|
+
console.log();
|
|
20
|
+
if (state.current)
|
|
21
|
+
console.log(ansis.dim(` 当前:${state.current}\n`));
|
|
22
|
+
else
|
|
23
|
+
console.log(ansis.dim(' 当前:未设置 — 用 `ccjk mode use <name>` 应用一个\n'));
|
|
24
|
+
}
|
|
25
|
+
export async function modeUseCommand(name, opts = {}) {
|
|
26
|
+
const target = name ? await resolveOrFail(name) : await pickMode();
|
|
27
|
+
if (!target)
|
|
28
|
+
return;
|
|
29
|
+
const tools = parseTools(opts.tools);
|
|
30
|
+
console.log(ansis.bold(`\n切换到对话模式: ${target.id}(${target.name})`));
|
|
31
|
+
console.log(ansis.dim(` ${target.description}`));
|
|
32
|
+
console.log(ansis.dim(` 目标工具: ${tools.join(', ')}`));
|
|
33
|
+
const claudeDesc = `thinking ${target.claude.thinkingEnabled ? `on (${target.claude.thinkingBudget ?? '默认'})` : 'off'}`;
|
|
34
|
+
console.log(ansis.dim(` Claude/Clavue: ${claudeDesc}`));
|
|
35
|
+
console.log(ansis.dim(` Codex: model_reasoning_effort = ${target.codex.effort}\n`));
|
|
36
|
+
if (!opts.yes) {
|
|
37
|
+
const { ok } = await inquirer.prompt([{
|
|
38
|
+
type: 'confirm', name: 'ok', message: '确认应用?', default: true,
|
|
39
|
+
}]);
|
|
40
|
+
if (!ok) {
|
|
41
|
+
console.log(ansis.gray('已取消。'));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const results = [];
|
|
46
|
+
for (const t of tools) {
|
|
47
|
+
if (t === 'codex') {
|
|
48
|
+
const meta = TOOLS.codex;
|
|
49
|
+
const doc = await readTomlFile(meta.settingsFile);
|
|
50
|
+
applyModeToCodexConfig(doc, target);
|
|
51
|
+
const backup = await writeTomlFile(meta.settingsFile, doc);
|
|
52
|
+
const tail = backup ? ansis.dim(` · 备份 ${backup.split('/').pop()}`) : '';
|
|
53
|
+
results.push(`Codex: effort=${target.codex.effort}${tail}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const meta = TOOLS[t];
|
|
57
|
+
const settings = await readSettings(meta.settingsFile);
|
|
58
|
+
applyModeToClaudeSettings(settings, target);
|
|
59
|
+
const backup = await writeSettings(meta.settingsFile, settings);
|
|
60
|
+
const tail = backup ? ansis.dim(` · 备份 ${backup.split('/').pop()}`) : '';
|
|
61
|
+
results.push(`${meta.displayName}: thinking=${target.claude.thinkingEnabled}${tail}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
await writeModeState({ current: target.id });
|
|
65
|
+
console.log(ansis.green('\n✔ 对话模式已切换'));
|
|
66
|
+
for (const r of results)
|
|
67
|
+
console.log(` ${r}`);
|
|
68
|
+
console.log(ansis.yellow(' 提示: 重启 Claude Code / Codex 才能生效\n'));
|
|
69
|
+
}
|
|
70
|
+
export async function modeShowCommand(name) {
|
|
71
|
+
if (!name) {
|
|
72
|
+
const state = await readModeState();
|
|
73
|
+
if (!state.current) {
|
|
74
|
+
console.log(ansis.gray('\n还没设置过对话模式。'));
|
|
75
|
+
console.log(ansis.dim(' 运行 `ccjk mode use`(或菜单"切换对话模式")来选一个。\n'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
name = state.current;
|
|
79
|
+
}
|
|
80
|
+
const m = await readMode(name);
|
|
81
|
+
if (!m)
|
|
82
|
+
throw new Error(`mode "${name}" 不存在`);
|
|
83
|
+
console.log(ansis.bold(`\nMode: ${m.id}\n`));
|
|
84
|
+
console.log(` name ${m.name}`);
|
|
85
|
+
console.log(` description ${m.description}`);
|
|
86
|
+
console.log(` claude thinking=${m.claude.thinkingEnabled}, budget=${m.claude.thinkingBudget ?? '(未设)'}`);
|
|
87
|
+
console.log(` codex effort=${m.codex.effort}\n`);
|
|
88
|
+
}
|
|
89
|
+
export async function modeAddCommand(name, opts = {}) {
|
|
90
|
+
if (!name) {
|
|
91
|
+
const { v } = await inquirer.prompt([{
|
|
92
|
+
type: 'input', name: 'v', message: '新模式名称(字母数字 _ -)',
|
|
93
|
+
validate: (s) => /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,31}$/.test(s.trim()) || '名称非法',
|
|
94
|
+
}]);
|
|
95
|
+
name = v.trim();
|
|
96
|
+
}
|
|
97
|
+
const base = opts.base ? await readMode(opts.base) : null;
|
|
98
|
+
const def = base ? { ...base, id: name, name, description: `${base.name} 的副本` } : {
|
|
99
|
+
id: name,
|
|
100
|
+
name,
|
|
101
|
+
description: '自定义模式',
|
|
102
|
+
claude: { thinkingEnabled: opts.thinking !== 'off', ...(opts.budget !== undefined ? { thinkingBudget: opts.budget } : {}) },
|
|
103
|
+
codex: { effort: opts.effort ?? 'medium' },
|
|
104
|
+
};
|
|
105
|
+
await writeMode(def);
|
|
106
|
+
console.log(ansis.green(`\n✔ 模式 "${name}" 已保存`));
|
|
107
|
+
console.log(ansis.dim(` 存储在 ~/.ccjk/modes/${name}.json,可手动编辑细节\n`));
|
|
108
|
+
}
|
|
109
|
+
async function resolveOrFail(id) {
|
|
110
|
+
const m = await readMode(id);
|
|
111
|
+
if (!m) {
|
|
112
|
+
const all = await listModes();
|
|
113
|
+
throw new Error(`mode "${id}" 不存在。可选: ${all.map(x => x.id).join(', ')}`);
|
|
114
|
+
}
|
|
115
|
+
return m;
|
|
116
|
+
}
|
|
117
|
+
async function pickMode() {
|
|
118
|
+
const modes = await listModes();
|
|
119
|
+
const state = await readModeState();
|
|
120
|
+
const { id } = await inquirer.prompt([{
|
|
121
|
+
type: 'list',
|
|
122
|
+
name: 'id',
|
|
123
|
+
message: '选择对话模式',
|
|
124
|
+
default: state.current,
|
|
125
|
+
choices: modes.map(m => ({
|
|
126
|
+
name: `${m.id.padEnd(10)} ${ansis.dim(m.description)}${state.current === m.id ? ansis.green(' (当前)') : ''}`,
|
|
127
|
+
value: m.id,
|
|
128
|
+
})),
|
|
129
|
+
}]);
|
|
130
|
+
return modes.find(m => m.id === id);
|
|
131
|
+
}
|
|
132
|
+
function parseTools(raw) {
|
|
133
|
+
if (!raw)
|
|
134
|
+
return ['clavue', 'claude-code', 'codex'];
|
|
135
|
+
const valid = ['clavue', 'claude-code', 'codex'];
|
|
136
|
+
const items = raw.split(',').map(s => s.trim()).filter(Boolean);
|
|
137
|
+
for (const t of items) {
|
|
138
|
+
if (!valid.includes(t))
|
|
139
|
+
throw new Error(`未知工具 "${t}"`);
|
|
140
|
+
}
|
|
141
|
+
return items;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/commands/mode.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/profile.js
CHANGED
|
@@ -7,7 +7,8 @@ export async function profileListCommand() {
|
|
|
7
7
|
const profiles = await listProfiles();
|
|
8
8
|
const state = await readState();
|
|
9
9
|
if (profiles.length === 0) {
|
|
10
|
-
console.log(ansis.gray('\n还没有 profile
|
|
10
|
+
console.log(ansis.gray('\n还没有 profile。'));
|
|
11
|
+
console.log(ansis.dim(' 运行 `ccjk init`(或菜单"配置 API")来配置第一个。\n'));
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
14
|
console.log(ansis.bold(`\n已保存的 Profile(${profiles.length}):\n`));
|
|
@@ -26,7 +27,24 @@ export async function profileListCommand() {
|
|
|
26
27
|
export async function profileUseCommand(name, opts = {}) {
|
|
27
28
|
const profiles = await listProfiles();
|
|
28
29
|
if (profiles.length === 0) {
|
|
29
|
-
|
|
30
|
+
// 没 profile 时不走死路,引导用户去 init(init 完会自动存为 profile)
|
|
31
|
+
console.log(ansis.yellow('\n还没有 profile。'));
|
|
32
|
+
if (opts.yes) {
|
|
33
|
+
console.log(ansis.gray(' 跳过(--yes 模式下不进入 init)\n'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const { go } = await inquirer.prompt([{
|
|
37
|
+
type: 'confirm',
|
|
38
|
+
name: 'go',
|
|
39
|
+
message: '现在去配置一个?(会自动保存为 profile)',
|
|
40
|
+
default: true,
|
|
41
|
+
}]);
|
|
42
|
+
if (!go) {
|
|
43
|
+
console.log(ansis.gray('已取消。\n'));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const { initCommand } = await import('./init.js');
|
|
47
|
+
await initCommand();
|
|
30
48
|
return;
|
|
31
49
|
}
|
|
32
50
|
const target = name ? findOrExit(profiles, name) : await pickProfile(profiles);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import ansis from 'ansis';
|
|
3
|
+
import { listWorkflows, readWorkflow } from '../core/workflows.js';
|
|
4
|
+
import { initCommand } from './init.js';
|
|
5
|
+
import { profileUseCommand } from './profile.js';
|
|
6
|
+
import { permsCommand } from './perms.js';
|
|
7
|
+
import { mcpCommand } from './mcp.js';
|
|
8
|
+
import { statusLineInstallCommand, statusLineUninstallCommand } from './statusline.js';
|
|
9
|
+
import { doctorCommand } from './doctor.js';
|
|
10
|
+
import { profileImportCommand } from './profile-pack.js';
|
|
11
|
+
import { gitInstallCommand } from './git-install.js';
|
|
12
|
+
import { modeUseCommand } from './mode.js';
|
|
13
|
+
export async function workflowListCommand() {
|
|
14
|
+
const wfs = await listWorkflows();
|
|
15
|
+
console.log(ansis.bold(`\n可用工作流(${wfs.length}):\n`));
|
|
16
|
+
for (const w of wfs) {
|
|
17
|
+
console.log(` ${ansis.cyan(w.id.padEnd(14))} ${w.name}`);
|
|
18
|
+
console.log(` ${ansis.dim(w.description)}`);
|
|
19
|
+
console.log(` ${ansis.dim('步骤:')}${w.steps.map(s => s.label).join(' → ')}`);
|
|
20
|
+
console.log();
|
|
21
|
+
}
|
|
22
|
+
console.log(ansis.dim(' 运行:ccjk workflow run <id>\n'));
|
|
23
|
+
}
|
|
24
|
+
export async function workflowRunCommand(id, opts = {}) {
|
|
25
|
+
const target = id ? await resolveOrFail(id) : await pickWorkflow();
|
|
26
|
+
if (!target)
|
|
27
|
+
return;
|
|
28
|
+
console.log(ansis.bold(`\n工作流: ${target.id}(${target.name})`));
|
|
29
|
+
console.log(ansis.dim(` ${target.description}\n`));
|
|
30
|
+
console.log(ansis.bold('步骤:'));
|
|
31
|
+
for (let i = 0; i < target.steps.length; i++) {
|
|
32
|
+
const s = target.steps[i];
|
|
33
|
+
const opt = s.optional ? ansis.dim(' (可选)') : '';
|
|
34
|
+
console.log(` ${i + 1}. ${s.label}${opt}`);
|
|
35
|
+
}
|
|
36
|
+
console.log();
|
|
37
|
+
if (!opts.yes) {
|
|
38
|
+
const { ok } = await inquirer.prompt([{
|
|
39
|
+
type: 'confirm',
|
|
40
|
+
name: 'ok',
|
|
41
|
+
message: '开始执行?(每步会单独确认)',
|
|
42
|
+
default: true,
|
|
43
|
+
}]);
|
|
44
|
+
if (!ok) {
|
|
45
|
+
console.log(ansis.gray('已取消。\n'));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
let executed = 0;
|
|
50
|
+
let skipped = 0;
|
|
51
|
+
for (let i = 0; i < target.steps.length; i++) {
|
|
52
|
+
const step = target.steps[i];
|
|
53
|
+
const total = target.steps.length;
|
|
54
|
+
console.log(ansis.bold.cyan(`\n━━━ [${i + 1}/${total}] ${step.label} ━━━`));
|
|
55
|
+
if (step.optional) {
|
|
56
|
+
const { run } = await inquirer.prompt([{
|
|
57
|
+
type: 'confirm', name: 'run', message: '执行这一步?', default: false,
|
|
58
|
+
}]);
|
|
59
|
+
if (!run) {
|
|
60
|
+
console.log(ansis.gray(' 跳过'));
|
|
61
|
+
skipped++;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
await runStep(step.action);
|
|
67
|
+
executed++;
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.log(ansis.red(`\n✗ 步骤失败: ${e.message}`));
|
|
71
|
+
const { cont } = await inquirer.prompt([{
|
|
72
|
+
type: 'list',
|
|
73
|
+
name: 'cont',
|
|
74
|
+
message: '继续后续步骤?',
|
|
75
|
+
choices: [
|
|
76
|
+
{ name: '继续(跳过这一步)', value: true },
|
|
77
|
+
{ name: '中止工作流', value: false },
|
|
78
|
+
],
|
|
79
|
+
}]);
|
|
80
|
+
if (!cont) {
|
|
81
|
+
console.log(ansis.gray('\n工作流已中止。已执行 ' + executed + ' 步。\n'));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
skipped++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log();
|
|
88
|
+
console.log(ansis.green(`✔ 工作流 "${target.id}" 完成`));
|
|
89
|
+
console.log(ansis.dim(` 执行 ${executed} 步,跳过 ${skipped} 步\n`));
|
|
90
|
+
}
|
|
91
|
+
async function runStep(action) {
|
|
92
|
+
switch (action.type) {
|
|
93
|
+
case 'init':
|
|
94
|
+
return initCommand();
|
|
95
|
+
case 'use':
|
|
96
|
+
return profileUseCommand(action.profile);
|
|
97
|
+
case 'perms':
|
|
98
|
+
return permsCommand(action.tier);
|
|
99
|
+
case 'mcp':
|
|
100
|
+
return mcpCommand({ ...(action.services ? { services: action.services } : {}) });
|
|
101
|
+
case 'statusline-install':
|
|
102
|
+
return statusLineInstallCommand();
|
|
103
|
+
case 'statusline-uninstall':
|
|
104
|
+
return statusLineUninstallCommand();
|
|
105
|
+
case 'doctor-fix':
|
|
106
|
+
return doctorCommand({ fix: true });
|
|
107
|
+
case 'profile-import': {
|
|
108
|
+
if (!action.file) {
|
|
109
|
+
const { f } = await inquirer.prompt([{
|
|
110
|
+
type: 'input', name: 'f', message: 'profile 包文件路径',
|
|
111
|
+
validate: (s) => s.trim().length > 0 || '不能为空',
|
|
112
|
+
}]);
|
|
113
|
+
return profileImportCommand(f.trim());
|
|
114
|
+
}
|
|
115
|
+
return profileImportCommand(action.file);
|
|
116
|
+
}
|
|
117
|
+
case 'git-install':
|
|
118
|
+
return gitInstallCommand({});
|
|
119
|
+
case 'mode-use':
|
|
120
|
+
return modeUseCommand(action.mode);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function resolveOrFail(id) {
|
|
124
|
+
const w = await readWorkflow(id);
|
|
125
|
+
if (!w) {
|
|
126
|
+
const all = await listWorkflows();
|
|
127
|
+
throw new Error(`workflow "${id}" 不存在。可选: ${all.map(x => x.id).join(', ')}`);
|
|
128
|
+
}
|
|
129
|
+
return w;
|
|
130
|
+
}
|
|
131
|
+
async function pickWorkflow() {
|
|
132
|
+
const wfs = await listWorkflows();
|
|
133
|
+
const { id } = await inquirer.prompt([{
|
|
134
|
+
type: 'list',
|
|
135
|
+
name: 'id',
|
|
136
|
+
message: '选择要运行的工作流',
|
|
137
|
+
pageSize: Math.min(15, wfs.length + 2),
|
|
138
|
+
choices: wfs.map((w) => ({
|
|
139
|
+
name: `${w.id.padEnd(14)} ${ansis.dim(w.description)}`,
|
|
140
|
+
value: w.id,
|
|
141
|
+
})),
|
|
142
|
+
}]);
|
|
143
|
+
return wfs.find((w) => w.id === id);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/core/banner.js
CHANGED
|
@@ -7,6 +7,7 @@ import { listProfiles, readState } from './profiles.js';
|
|
|
7
7
|
import { readSettings } from './settings.js';
|
|
8
8
|
import { detectClaudeTier } from './perms.js';
|
|
9
9
|
import { expandHome } from './paths.js';
|
|
10
|
+
import { readModeState } from './modes.js';
|
|
10
11
|
/**
|
|
11
12
|
* 渲染启动横幅。简洁优先:
|
|
12
13
|
* - 不闪烁、不动画
|
|
@@ -47,6 +48,7 @@ export function renderBanner(version) {
|
|
|
47
48
|
export async function collectStatus() {
|
|
48
49
|
const profiles = await listProfiles().catch(() => []);
|
|
49
50
|
const state = await readState().catch(() => ({}));
|
|
51
|
+
const modeState = await readModeState().catch(() => ({}));
|
|
50
52
|
// 读 Claude/Clavue settings 决定 perms 档位 + statusline 是否装了
|
|
51
53
|
let permsTier;
|
|
52
54
|
let statuslineInstalled = false;
|
|
@@ -75,6 +77,7 @@ export async function collectStatus() {
|
|
|
75
77
|
...(state.current ? { profileName: state.current } : {}),
|
|
76
78
|
profileCount: profiles.length,
|
|
77
79
|
...(permsTier ? { permsTier } : {}),
|
|
80
|
+
...(modeState.current ? { modeName: modeState.current } : {}),
|
|
78
81
|
statuslineInstalled,
|
|
79
82
|
toolsInstalled,
|
|
80
83
|
};
|
|
@@ -94,6 +97,9 @@ export function renderStatusBar(s) {
|
|
|
94
97
|
const c = s.permsTier === 'safe' ? ansis.green : s.permsTier === 'standard' ? ansis.cyan : ansis.yellow;
|
|
95
98
|
pieces.push(`${ansis.dim('perms')} ${c(s.permsTier)}`);
|
|
96
99
|
}
|
|
100
|
+
if (s.modeName) {
|
|
101
|
+
pieces.push(`${ansis.dim('mode')} ${ansis.magenta(s.modeName)}`);
|
|
102
|
+
}
|
|
97
103
|
pieces.push(`${ansis.dim('statusline')} ${s.statuslineInstalled ? ansis.green('●') : ansis.gray('○')}`);
|
|
98
104
|
out.push(` ${pieces.join(' · ')}`);
|
|
99
105
|
// 右边:工具版本一行
|
package/dist/core/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/core/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/core/banner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { mkdir, readFile, readdir, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { setTomlValue } from './toml.js';
|
|
6
|
+
/**
|
|
7
|
+
* 内置模式。复制粘贴就能让用户写自己的。
|
|
8
|
+
*/
|
|
9
|
+
export const BUILTIN_MODES = {
|
|
10
|
+
code: {
|
|
11
|
+
id: 'code',
|
|
12
|
+
name: '写代码',
|
|
13
|
+
description: '深度思考开启 / 高强度推理 — 适合写代码、调 bug、重构',
|
|
14
|
+
claude: { thinkingEnabled: true, thinkingBudget: 16384 },
|
|
15
|
+
codex: { effort: 'high' },
|
|
16
|
+
},
|
|
17
|
+
chat: {
|
|
18
|
+
id: 'chat',
|
|
19
|
+
name: '日常对话',
|
|
20
|
+
description: '思考关闭 / 中等推理 — 答疑、解释概念、随便聊',
|
|
21
|
+
claude: { thinkingEnabled: false },
|
|
22
|
+
codex: { effort: 'medium' },
|
|
23
|
+
},
|
|
24
|
+
fast: {
|
|
25
|
+
id: 'fast',
|
|
26
|
+
name: '快速响应',
|
|
27
|
+
description: '思考关闭 / 低推理 — 简单查询、小修改、想要立刻拿到结果',
|
|
28
|
+
claude: { thinkingEnabled: false },
|
|
29
|
+
codex: { effort: 'low' },
|
|
30
|
+
},
|
|
31
|
+
deep: {
|
|
32
|
+
id: 'deep',
|
|
33
|
+
name: '深度思考',
|
|
34
|
+
description: '深度思考开启 / 大 budget — 架构设计、复杂 debug、需要多角度推理',
|
|
35
|
+
claude: { thinkingEnabled: true, thinkingBudget: 32768 },
|
|
36
|
+
codex: { effort: 'high' },
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const MODES_DIR = join(homedir(), '.ccjk', 'modes');
|
|
40
|
+
export const MODE_STATE_FILE = join(homedir(), '.ccjk', 'mode-state.json');
|
|
41
|
+
const NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,31}$/;
|
|
42
|
+
export function validateModeName(name) {
|
|
43
|
+
if (!NAME_RE.test(name)) {
|
|
44
|
+
throw new Error(`mode 名称非法: "${name}"(仅允许字母数字 _ - ,1-32 字符)`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 读取所有可用 modes:内置 + 用户自定义(用户同名优先)。
|
|
49
|
+
* 这样用户可以"覆盖"内置的 code 模式而不破坏其它用户的 ccjk。
|
|
50
|
+
*/
|
|
51
|
+
export async function listModes(dir = MODES_DIR) {
|
|
52
|
+
const out = new Map();
|
|
53
|
+
for (const m of Object.values(BUILTIN_MODES))
|
|
54
|
+
out.set(m.id, m);
|
|
55
|
+
if (existsSync(dir)) {
|
|
56
|
+
const files = await readdir(dir);
|
|
57
|
+
for (const f of files) {
|
|
58
|
+
if (!f.endsWith('.json'))
|
|
59
|
+
continue;
|
|
60
|
+
try {
|
|
61
|
+
const raw = await readFile(join(dir, f), 'utf-8');
|
|
62
|
+
const def = JSON.parse(raw);
|
|
63
|
+
validateModeName(def.id);
|
|
64
|
+
out.set(def.id, def);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// 跳过损坏文件
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return [...out.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
72
|
+
}
|
|
73
|
+
export async function readMode(id, dir = MODES_DIR) {
|
|
74
|
+
validateModeName(id);
|
|
75
|
+
if (existsSync(join(dir, `${id}.json`))) {
|
|
76
|
+
const raw = await readFile(join(dir, `${id}.json`), 'utf-8');
|
|
77
|
+
return JSON.parse(raw);
|
|
78
|
+
}
|
|
79
|
+
return BUILTIN_MODES[id] ?? null;
|
|
80
|
+
}
|
|
81
|
+
export async function writeMode(mode, dir = MODES_DIR) {
|
|
82
|
+
validateModeName(mode.id);
|
|
83
|
+
await mkdir(dir, { recursive: true });
|
|
84
|
+
await writeFile(join(dir, `${mode.id}.json`), `${JSON.stringify(mode, null, 2)}\n`, 'utf-8');
|
|
85
|
+
}
|
|
86
|
+
export async function removeMode(id, dir = MODES_DIR) {
|
|
87
|
+
validateModeName(id);
|
|
88
|
+
const p = join(dir, `${id}.json`);
|
|
89
|
+
if (!existsSync(p))
|
|
90
|
+
return false;
|
|
91
|
+
await unlink(p);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
export async function readModeState(file = MODE_STATE_FILE) {
|
|
95
|
+
if (!existsSync(file))
|
|
96
|
+
return {};
|
|
97
|
+
try {
|
|
98
|
+
return JSON.parse(await readFile(file, 'utf-8'));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function writeModeState(state, file = MODE_STATE_FILE) {
|
|
105
|
+
await mkdir(join(file, '..'), { recursive: true });
|
|
106
|
+
await writeFile(file, `${JSON.stringify(state, null, 2)}\n`, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 应用 mode 到 Claude/Clavue settings.json(in-place 修改)。
|
|
110
|
+
* 写到 settings.thinking 而不是 env,因为 thinking 是 Claude Code 原生支持的字段。
|
|
111
|
+
*/
|
|
112
|
+
export function applyModeToClaudeSettings(settings, mode) {
|
|
113
|
+
const obj = settings;
|
|
114
|
+
const thinking = {
|
|
115
|
+
enabled: mode.claude.thinkingEnabled,
|
|
116
|
+
};
|
|
117
|
+
if (mode.claude.thinkingBudget !== undefined) {
|
|
118
|
+
thinking.budgetTokens = mode.claude.thinkingBudget;
|
|
119
|
+
}
|
|
120
|
+
obj.thinking = thinking;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 应用 mode 到 Codex config.toml。
|
|
124
|
+
*/
|
|
125
|
+
export function applyModeToCodexConfig(doc, mode) {
|
|
126
|
+
setTomlValue(doc, 'model_reasoning_effort', mode.codex.effort);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/core/modes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA2BzC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAmC;IAC3D,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,iCAAiC;QAC9C,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACxD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KAC1B;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2BAA2B;QACxC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;QAClC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC5B;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;QAC7C,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;QAClC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;KACzB;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;QACxD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAE3E,MAAM,OAAO,GAAG,kCAAkC,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,yBAAyB,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAG,GAAG,SAAS;IAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;gBAC9C,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,CAAC;gBACL,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAU,EAAE,GAAG,GAAG,SAAS;IACxD,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IACD,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAoB,EAAE,GAAG,GAAG,SAAS;IACnE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAU,EAAE,GAAG,GAAG,SAAS;IAC1D,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAI,GAAG,eAAe;IACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAc,CAAC;IAAC,CAAC;IACtE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAgB,EAAE,IAAI,GAAG,eAAe;IAC3E,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAwB,EAAE,IAAoB;IACtF,MAAM,GAAG,GAAG,QAAmC,CAAC;IAChD,MAAM,QAAQ,GAA4B;QACxC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;KACrC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC7C,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACrD,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,IAAoB;IACvE,YAAY,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
export const BUILTIN_WORKFLOWS = {
|
|
6
|
+
'starter': {
|
|
7
|
+
id: 'starter',
|
|
8
|
+
name: '新机首配',
|
|
9
|
+
description: '装机后跑一遍:配 API → 设权限档位 → 装状态栏',
|
|
10
|
+
steps: [
|
|
11
|
+
{ label: '配置 API(init)', action: { type: 'init' } },
|
|
12
|
+
{ label: '设权限档位 standard', action: { type: 'perms', tier: 'standard' } },
|
|
13
|
+
{ label: '安装状态栏', action: { type: 'statusline-install' } },
|
|
14
|
+
{ label: '装常用 MCP(可选)', action: { type: 'mcp' }, optional: true },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
'team-import': {
|
|
18
|
+
id: 'team-import',
|
|
19
|
+
name: '团队配置导入',
|
|
20
|
+
description: '从 profile 包导入 → 切到合适档位 → 体检自动修',
|
|
21
|
+
steps: [
|
|
22
|
+
{ label: '导入 profile 包', action: { type: 'profile-import' } },
|
|
23
|
+
{ label: '切换到导入的 profile', action: { type: 'use' } },
|
|
24
|
+
{ label: '设权限档位 standard', action: { type: 'perms', tier: 'standard' } },
|
|
25
|
+
{ label: '体检 + 自动修', action: { type: 'doctor-fix' } },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
'reset-soft': {
|
|
29
|
+
id: 'reset-soft',
|
|
30
|
+
name: '回到低打扰状态',
|
|
31
|
+
description: '卸状态栏 + 切到 safe 档位 — 适合让步给同事用你的机器',
|
|
32
|
+
steps: [
|
|
33
|
+
{ label: '卸载状态栏', action: { type: 'statusline-uninstall' } },
|
|
34
|
+
{ label: '切到 safe 权限档位', action: { type: 'perms', tier: 'safe' } },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
'dev-ready': {
|
|
38
|
+
id: 'dev-ready',
|
|
39
|
+
name: '日常开发就绪',
|
|
40
|
+
description: '切 code 模式 + perms standard + 装 git 模板 + 体检',
|
|
41
|
+
steps: [
|
|
42
|
+
{ label: '切到 code 对话模式', action: { type: 'mode-use', mode: 'code' } },
|
|
43
|
+
{ label: '设权限档位 standard', action: { type: 'perms', tier: 'standard' } },
|
|
44
|
+
{ label: '装 git slash 命令', action: { type: 'git-install' } },
|
|
45
|
+
{ label: '体检 + 自动修', action: { type: 'doctor-fix' } },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
export const WORKFLOWS_DIR = join(homedir(), '.ccjk', 'workflows');
|
|
50
|
+
export async function listWorkflows(dir = WORKFLOWS_DIR) {
|
|
51
|
+
const out = new Map();
|
|
52
|
+
for (const w of Object.values(BUILTIN_WORKFLOWS))
|
|
53
|
+
out.set(w.id, w);
|
|
54
|
+
if (existsSync(dir)) {
|
|
55
|
+
const files = await readdir(dir);
|
|
56
|
+
for (const f of files) {
|
|
57
|
+
if (!f.endsWith('.json'))
|
|
58
|
+
continue;
|
|
59
|
+
try {
|
|
60
|
+
const raw = await readFile(join(dir, f), 'utf-8');
|
|
61
|
+
const def = JSON.parse(raw);
|
|
62
|
+
out.set(def.id, def);
|
|
63
|
+
}
|
|
64
|
+
catch { /* 跳过损坏 */ }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return [...out.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
68
|
+
}
|
|
69
|
+
export async function readWorkflow(id, dir = WORKFLOWS_DIR) {
|
|
70
|
+
if (existsSync(join(dir, `${id}.json`))) {
|
|
71
|
+
const raw = await readFile(join(dir, `${id}.json`), 'utf-8');
|
|
72
|
+
return JSON.parse(raw);
|
|
73
|
+
}
|
|
74
|
+
return BUILTIN_WORKFLOWS[id] ?? null;
|
|
75
|
+
}
|
|
76
|
+
export async function writeWorkflow(w, dir = WORKFLOWS_DIR) {
|
|
77
|
+
await mkdir(dir, { recursive: true });
|
|
78
|
+
await writeFile(join(dir, `${w.id}.json`), `${JSON.stringify(w, null, 2)}\n`, 'utf-8');
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/core/workflows.ts"],"names":[],"mappings":"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"}
|