@shgroup/opencode-serenity-plugin 0.3.4 → 0.4.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 +98 -78
- package/dist/activation.d.ts.map +1 -1
- package/dist/activation.js +26 -1
- package/dist/activation.js.map +1 -1
- package/dist/config-schema.d.ts +2 -1
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +1 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/git/cc-git-tool.d.ts +19 -0
- package/dist/git/cc-git-tool.d.ts.map +1 -0
- package/dist/git/cc-git-tool.js +170 -0
- package/dist/git/cc-git-tool.js.map +1 -0
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +2 -0
- package/dist/git/index.js.map +1 -0
- package/dist/hooks/compacting.d.ts.map +1 -1
- package/dist/hooks/compacting.js +38 -1
- package/dist/hooks/compacting.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/init/init-wizard.d.ts +19 -13
- package/dist/init/init-wizard.d.ts.map +1 -1
- package/dist/init/init-wizard.js +247 -123
- package/dist/init/init-wizard.js.map +1 -1
- package/dist/skills/template-loader.d.ts +3 -1
- package/dist/skills/template-loader.d.ts.map +1 -1
- package/dist/skills/template-loader.js +6 -5
- package/dist/skills/template-loader.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +6 -0
- package/dist/state.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
package/dist/init/init-wizard.js
CHANGED
|
@@ -1,49 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* init-wizard.ts — D1 Init 向导 Phase 1
|
|
3
3
|
*
|
|
4
|
-
* CLI 交互式创建认知容器 (CCC)
|
|
4
|
+
* CLI 交互式创建认知容器 (CCC) 的目录骨架、git 初始化并复制标准技能模板。
|
|
5
|
+
*
|
|
6
|
+
* 设计文档:docs/ccc-init-flow-design.md(home-serenity 仓)
|
|
5
7
|
*
|
|
6
8
|
* 流程:
|
|
7
|
-
* 1.
|
|
8
|
-
* 2.
|
|
9
|
-
* 3.
|
|
10
|
-
* 4.
|
|
11
|
-
* 5.
|
|
12
|
-
* 6.
|
|
9
|
+
* 1. 交互问答 4 题(prefix / description / remote / scope)
|
|
10
|
+
* 2. git init → add → commit(Phase 1 写骨架前)
|
|
11
|
+
* 3. 创建目录骨架(.serenity, opencode.json, AGENT_SESSIONS/, docs/)
|
|
12
|
+
* 4. 复制 3 个标准技能模板到 .opencode/skills/
|
|
13
|
+
* 5. git remote add → push(如果提供了 remote)
|
|
14
|
+
* 6. 写入 Phase 2 Agent prompt
|
|
15
|
+
* 7. 输出完成信息
|
|
13
16
|
*/
|
|
14
17
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
18
|
+
import { execFileSync } from 'node:child_process';
|
|
15
19
|
import { join, basename } from 'node:path';
|
|
16
20
|
import { createInterface } from 'node:readline';
|
|
17
21
|
import { stdin, stdout } from 'node:process';
|
|
18
22
|
import { getTemplatesDir, installTemplate, defaultPlaceholders, } from '../skills/template-loader.js';
|
|
23
|
+
import { isValidPrefix, buildCccName } from '../util/init.js';
|
|
19
24
|
// ── 默认值 ──
|
|
25
|
+
/** Phase 1 预装的 3 个标准技能(设计决策 D20) */
|
|
20
26
|
const STANDARD_SKILLS = [
|
|
21
27
|
'compass',
|
|
22
28
|
'session',
|
|
23
29
|
'sqc',
|
|
24
|
-
'exploration',
|
|
25
|
-
'quality-review',
|
|
26
|
-
'landscape',
|
|
27
|
-
'git',
|
|
28
30
|
];
|
|
29
|
-
/** 从目录名推断 prefix */
|
|
31
|
+
/** 从目录名推断 prefix(kebab-case,取第一部分) */
|
|
30
32
|
function inferPrefix(dirName) {
|
|
31
|
-
// 取第一个词(小写,非字母开头的去掉)
|
|
32
33
|
const cleaned = dirName.replace(/[^a-zA-Z0-9-]/g, '');
|
|
33
34
|
const first = cleaned.split(/[-_]/)[0];
|
|
34
35
|
if (!first)
|
|
35
36
|
return 'my';
|
|
36
37
|
return first.toLowerCase().slice(0, 8);
|
|
37
38
|
}
|
|
38
|
-
/** 从 prefix 推断中文名 */
|
|
39
|
-
function inferName(prefix) {
|
|
40
|
-
const names = {
|
|
41
|
-
home: '宁静号',
|
|
42
|
-
tg: '天工宁静号',
|
|
43
|
-
pg: '盘古宁静号',
|
|
44
|
-
};
|
|
45
|
-
return names[prefix] ?? `${prefix.toUpperCase()} 宁静号`;
|
|
46
|
-
}
|
|
47
39
|
// ── 交互式问答 ──
|
|
48
40
|
async function askQuestion(prompt, defaultValue) {
|
|
49
41
|
const rl = createInterface({ input: stdin, output: stdout });
|
|
@@ -58,61 +50,118 @@ async function askQuestion(prompt, defaultValue) {
|
|
|
58
50
|
});
|
|
59
51
|
}
|
|
60
52
|
async function collectInfo(prefill) {
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
process.stdout.write('\n Welcome to Serenity CCC initialization!\n');
|
|
54
|
+
process.stdout.write(" Let's set up your new cognitive container.\n\n");
|
|
55
|
+
const prefix = await askQuestion(' What would you like to name it?\n'
|
|
56
|
+
+ ' (lowercase letters, numbers, dashes — e.g. "home", "work-project")\n'
|
|
57
|
+
+ ' > ', prefill);
|
|
58
|
+
const description = await askQuestion('\n What does it manage, in one sentence?\n'
|
|
59
|
+
+ ' (e.g. "Manages home network, NAS, and smart home")\n'
|
|
60
|
+
+ ' > ');
|
|
61
|
+
const remote = await askQuestion('\n [Optional] Git remote URL for version control?\n'
|
|
62
|
+
+ ' (e.g. git@github.com:user/my-serenity.git — repo must be empty)\n'
|
|
63
|
+
+ ' > ');
|
|
64
|
+
const scope = await askQuestion('\n How many people will use this CCC?\n'
|
|
65
|
+
+ ' solo = just you\n'
|
|
66
|
+
+ ' team = multiple people\n'
|
|
67
|
+
+ ' > ', 'solo');
|
|
68
|
+
process.stdout.write('\n');
|
|
63
69
|
return {
|
|
64
70
|
prefix: prefix || prefill,
|
|
65
|
-
description: description || 'A cognitive container (CCC)',
|
|
71
|
+
description: description || 'A concrete cognitive container (CCC)',
|
|
72
|
+
remote: remote || '',
|
|
73
|
+
scope: scope || 'solo',
|
|
66
74
|
};
|
|
67
75
|
}
|
|
68
|
-
function buildSkeleton(prefix) {
|
|
76
|
+
function buildSkeleton(prefix, description, scope, remote) {
|
|
77
|
+
const cccName = buildCccName(prefix);
|
|
69
78
|
const skillDir = join('.opencode', 'skills');
|
|
70
|
-
const rootSkill =
|
|
79
|
+
const rootSkill = cccName;
|
|
71
80
|
return [
|
|
72
81
|
// 目录
|
|
73
82
|
{ path: join('AGENT_SESSIONS'), content: '', isDir: true },
|
|
74
83
|
{ path: join('docs'), content: '', isDir: true },
|
|
75
|
-
{ path: join('.opencode', 'scripts'), content: '', isDir: true },
|
|
76
|
-
{ path: join('.opencode', 'references'), content: '', isDir: true },
|
|
77
84
|
// .serenity
|
|
78
|
-
{ path: '.serenity', content: `${
|
|
79
|
-
// .gitignore
|
|
85
|
+
{ path: '.serenity', content: `${cccName}\n` },
|
|
86
|
+
// .gitignore — CCC 自己的文件全部纳入
|
|
80
87
|
{
|
|
81
88
|
path: '.gitignore',
|
|
82
89
|
content: [
|
|
83
|
-
'#
|
|
90
|
+
'# CCC .gitignore — 默认全纳入版本控制',
|
|
84
91
|
'# 用户可在此追加专属的排除规则',
|
|
85
92
|
'',
|
|
86
|
-
|
|
87
|
-
'# 通过根 .gitignore 排除它们,避免意外提交',
|
|
88
|
-
].join('\n') + '\n',
|
|
93
|
+
].join('\n'),
|
|
89
94
|
},
|
|
90
|
-
// opencode.json
|
|
95
|
+
// opencode.json — write 全开(配合 P3 权限二分)
|
|
91
96
|
{
|
|
92
97
|
path: 'opencode.json',
|
|
93
98
|
content: JSON.stringify({
|
|
94
|
-
|
|
95
|
-
permission: {
|
|
99
|
+
permissions: {
|
|
96
100
|
read: 'allow',
|
|
97
101
|
edit: 'allow',
|
|
102
|
+
write: 'allow',
|
|
98
103
|
},
|
|
104
|
+
description,
|
|
99
105
|
}, null, 2) + '\n',
|
|
100
106
|
},
|
|
101
|
-
// 根 skill 骨架(等待 Phase 2
|
|
107
|
+
// 根 skill 骨架(等待 Phase 2 Agent 完善)
|
|
108
|
+
// 格式对齐 docs/ccc-init-flow-design.md §7.3
|
|
102
109
|
{
|
|
103
110
|
path: join(skillDir, rootSkill, 'SKILL.md'),
|
|
104
111
|
content: [
|
|
105
|
-
|
|
112
|
+
'---',
|
|
113
|
+
`name: ${cccName}`,
|
|
114
|
+
`description: ${description}`,
|
|
115
|
+
'---',
|
|
116
|
+
'',
|
|
117
|
+
`# Skill: ${cccName}`,
|
|
118
|
+
'',
|
|
119
|
+
`> 我是这个 CCC 的根入口文件。Agent 进入此目录时优先加载我。`,
|
|
120
|
+
'',
|
|
121
|
+
'## 用途',
|
|
122
|
+
'',
|
|
123
|
+
description,
|
|
124
|
+
'',
|
|
125
|
+
'## 触发条件/何时加载',
|
|
126
|
+
'',
|
|
127
|
+
`- Agent 进入此 CCC 后最先加载`,
|
|
128
|
+
'- 需要 MSM 工具查询、路径解析、技能路由时',
|
|
129
|
+
'',
|
|
130
|
+
'## 系统身份',
|
|
131
|
+
'',
|
|
132
|
+
'| 属性 | 值 |',
|
|
133
|
+
'|------|-----|',
|
|
134
|
+
`| CCC 名称 | ${cccName} |`,
|
|
135
|
+
`| 规模 | ${scope} |`,
|
|
136
|
+
`| Git 远程 | ${remote || '(not configured)'} |`,
|
|
137
|
+
'',
|
|
138
|
+
'## 技能清单',
|
|
139
|
+
'',
|
|
140
|
+
'| Skill | 定位 | 何时加载 |',
|
|
141
|
+
'|-------|------|---------|',
|
|
142
|
+
`| ${cccName} | 根入口技能 | 进入 CCC 后最先加载 |`,
|
|
143
|
+
'| compass | 方向判断 | 开始新工作前 |',
|
|
144
|
+
'| session | 会话追踪 | 多步工作前 |',
|
|
145
|
+
'| sqc | 品质循环 | 定期扫描 |',
|
|
146
|
+
'',
|
|
147
|
+
'---',
|
|
148
|
+
'',
|
|
149
|
+
'<!-- Phase 2 Agent: 以下内容由你补充。',
|
|
150
|
+
` 加载 scripts/generate-root-skill.prompt.md 获取访谈问题。 -->`,
|
|
151
|
+
'',
|
|
152
|
+
'## 任务路由表',
|
|
153
|
+
'',
|
|
154
|
+
'<!-- Agent: 根据访谈结果填写 -->',
|
|
106
155
|
'',
|
|
107
|
-
'
|
|
108
|
-
'> 运行 `npx tsx ` + resolve + ` 根据引导完成初始化。',
|
|
156
|
+
'## 协作协议',
|
|
109
157
|
'',
|
|
110
|
-
'
|
|
158
|
+
'<!-- Agent: 根据访谈结果填写 -->',
|
|
111
159
|
'',
|
|
112
|
-
|
|
113
|
-
'
|
|
114
|
-
'
|
|
115
|
-
|
|
160
|
+
'## 相关技能',
|
|
161
|
+
'',
|
|
162
|
+
'<!-- Agent: 根据访谈结果填写 -->',
|
|
163
|
+
'',
|
|
164
|
+
].join('\n'),
|
|
116
165
|
},
|
|
117
166
|
// 根 skill 目录结构
|
|
118
167
|
{ path: join(skillDir, rootSkill, 'references'), content: '', isDir: true },
|
|
@@ -122,108 +171,157 @@ function buildSkeleton(prefix) {
|
|
|
122
171
|
path: join(skillDir, rootSkill, 'scripts', 'generate-root-skill.prompt.md'),
|
|
123
172
|
content: generatePhase2Prompt(prefix),
|
|
124
173
|
},
|
|
125
|
-
// 根 skill
|
|
174
|
+
// 根 skill 注册表骨架(3 个 MSM 预设 — 设计文档 §4.3)
|
|
126
175
|
{
|
|
127
176
|
path: join(skillDir, rootSkill, 'references', 'mech-registry.json'),
|
|
128
177
|
content: JSON.stringify({
|
|
129
178
|
version: 1,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
179
|
+
description: `${cccName} MSM registry`,
|
|
180
|
+
entries: [
|
|
181
|
+
{
|
|
182
|
+
name: 'compass-tool',
|
|
183
|
+
path: '.opencode/skills/compass/scripts/compass-tool.ts',
|
|
184
|
+
skill: 'compass',
|
|
185
|
+
category: 'mech',
|
|
186
|
+
description: '方向判断工具。validate: 信号报告格式校验;judge: 3 通道条件评估与决策矩阵。',
|
|
187
|
+
usage: 'npx tsx .opencode/skills/compass/scripts/compass-tool.ts <validate|judge> [args...]',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'session-tool',
|
|
191
|
+
path: '.opencode/skills/session/scripts/session-tool.ts',
|
|
192
|
+
skill: 'session',
|
|
193
|
+
category: 'mech',
|
|
194
|
+
description: '会话索引重建工具(ACC session 补充)。为历史会话分配 S### 编号并重命名目录。',
|
|
195
|
+
usage: 'npx tsx .opencode/skills/session/scripts/session-tool.ts reindex',
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: 'sqc-tool',
|
|
199
|
+
path: '.opencode/skills/sqc/scripts/sqc-tool.ts',
|
|
200
|
+
skill: 'sqc',
|
|
201
|
+
category: 'semi-mech',
|
|
202
|
+
description: 'SQC 品质循环工具。check: 品质检查;report: 验证报告;pipeline: 5 阶段流水线编排。',
|
|
203
|
+
usage: 'npx tsx .opencode/skills/sqc/scripts/sqc-tool.ts <check|report|pipeline> [args...]',
|
|
204
|
+
},
|
|
205
|
+
],
|
|
133
206
|
}, null, 2) + '\n',
|
|
134
207
|
},
|
|
135
208
|
];
|
|
136
209
|
}
|
|
137
210
|
// ── Phase 2 Agent Prompt ──
|
|
211
|
+
// 对齐 docs/ccc-init-flow-design.md §7.2
|
|
138
212
|
function generatePhase2Prompt(prefix) {
|
|
213
|
+
const cccName = buildCccName(prefix);
|
|
139
214
|
return [
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
'This CCC has been initialized with all standard meta-skills.',
|
|
143
|
-
'Now you need to complete the root skill SKILL.md.',
|
|
144
|
-
'',
|
|
145
|
-
'## Interview Questions',
|
|
215
|
+
`You are now in **Phase 2 initialization** of the CCC "${cccName}".`,
|
|
216
|
+
`This is a forced interview — your response replaces whatever the user originally typed.`,
|
|
146
217
|
'',
|
|
147
|
-
|
|
148
|
-
`.opencode/skills/${prefix}-serenity/SKILL.md`,
|
|
218
|
+
`## Your Task`,
|
|
149
219
|
'',
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
220
|
+
`Interview the user with the following 4 questions, then write the completed root SKILL.md at \`.opencode/skills/${cccName}/SKILL.md\`.`,
|
|
221
|
+
``,
|
|
222
|
+
`### Question 1 — Sub-projects / modules`,
|
|
223
|
+
`"What sub-projects, repos, or modules does this CCC manage?"`,
|
|
224
|
+
`→ Fill the **Task Route Table** section in SKILL.md with a task → skill/script mapping.`,
|
|
155
225
|
'',
|
|
156
|
-
|
|
226
|
+
`### Question 2 — Collaboration style`,
|
|
227
|
+
`"Structured (formal docs/SOP) or flexible (ad-hoc communication)?"`,
|
|
228
|
+
`→ Fill the **Collaboration Protocols** section (Neat conventions, naming rules, session tracking).`,
|
|
157
229
|
'',
|
|
158
|
-
|
|
230
|
+
`### Question 3 — Language preference`,
|
|
231
|
+
`"Precise, conversational, or technical?"`,
|
|
232
|
+
`→ Adjust SKILL.md language style and EAP trigger thresholds accordingly.`,
|
|
159
233
|
'',
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
'- Task route table (basic routes)',
|
|
164
|
-
'- Collaboration protocols (Neat + naming + session conventions)',
|
|
165
|
-
'- EAP checklist',
|
|
234
|
+
`### Question 4 — Remote services / devices`,
|
|
235
|
+
`"Any servers, APIs, or devices this CCC manages?"`,
|
|
236
|
+
`→ Add relevant skills to the **Related Skills** section; suggest \`install-skill\` if domain skills are needed.`,
|
|
166
237
|
'',
|
|
167
|
-
'##
|
|
238
|
+
'## After the Interview',
|
|
168
239
|
'',
|
|
169
|
-
'
|
|
170
|
-
'
|
|
171
|
-
'-
|
|
172
|
-
'- **msm_list / msm_exec / msm_admin**: standard MSM management',
|
|
240
|
+
'1. Remove the `<!-- Phase 2 Agent:` marker comment from SKILL.md',
|
|
241
|
+
'2. Commit: `cc-git commit "feat: complete Phase 2 root skill configuration"`',
|
|
242
|
+
'3. Push: `cc-git push`',
|
|
173
243
|
'',
|
|
174
|
-
'##
|
|
244
|
+
'## Available tools',
|
|
245
|
+
'- **cc-fs**: file operations within CCC root',
|
|
246
|
+
'- **cc-git**: git status/commit/push/log',
|
|
247
|
+
'- **session**: session lifecycle management',
|
|
248
|
+
'- **3 pre-installed skills**: compass, session, sqc',
|
|
175
249
|
'',
|
|
176
|
-
'- All 9 standard skills are already installed',
|
|
177
|
-
'- The AGENT_SESSIONS/ directory exists and session is ready',
|
|
178
|
-
'- Guide the user through the 5 questions, then write the SKILL.md',
|
|
179
|
-
'- The SKILL.md should be fully usable — no placeholder text',
|
|
180
250
|
].join('\n') + '\n';
|
|
181
251
|
}
|
|
252
|
+
// ── Git 初始化 helper ──
|
|
253
|
+
function execGit(args, cwd) {
|
|
254
|
+
try {
|
|
255
|
+
const stdout = execFileSync('git', args, {
|
|
256
|
+
cwd,
|
|
257
|
+
encoding: 'utf8',
|
|
258
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
259
|
+
});
|
|
260
|
+
return stdout.trimEnd();
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
const stderr = err.stderr?.toString() || '';
|
|
264
|
+
const stdout = err.stdout?.toString() || '';
|
|
265
|
+
throw new Error(`git ${args[0]} failed: ${stderr || stdout || err.message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
182
268
|
// ── 主入口 ──
|
|
183
269
|
export async function initWizard(opts) {
|
|
184
270
|
const { targetPath, pluginRoot, force } = opts;
|
|
185
271
|
const targetDirName = basename(targetPath);
|
|
186
|
-
|
|
272
|
+
const emptyResult = () => ({
|
|
273
|
+
success: false,
|
|
274
|
+
prefix: '',
|
|
275
|
+
cccName: '',
|
|
276
|
+
message: '',
|
|
277
|
+
createdDirs: [],
|
|
278
|
+
installedSkills: [],
|
|
279
|
+
gitPushed: false,
|
|
280
|
+
});
|
|
281
|
+
// 检查目标目录 — 已存在 CCC 则拒绝(除非 --force)
|
|
187
282
|
if (existsSync(targetPath)) {
|
|
188
|
-
const
|
|
189
|
-
if (
|
|
283
|
+
const hasSerenity = existsSync(join(targetPath, '.serenity'));
|
|
284
|
+
if (hasSerenity && !force) {
|
|
190
285
|
return {
|
|
191
|
-
|
|
192
|
-
prefix: '',
|
|
193
|
-
name: '',
|
|
286
|
+
...emptyResult(),
|
|
194
287
|
message: `Target already contains a CCC: ${targetPath}. Use --force to overwrite.`,
|
|
195
|
-
createdDirs: [],
|
|
196
|
-
installedSkills: [],
|
|
197
288
|
};
|
|
198
289
|
}
|
|
199
290
|
}
|
|
200
|
-
// Phase 1:
|
|
291
|
+
// Phase 1: 收集基本信息(交互或非交互)
|
|
201
292
|
const prefill = opts.prefix ?? inferPrefix(targetDirName);
|
|
202
293
|
let prefix;
|
|
203
294
|
let description;
|
|
295
|
+
let remote;
|
|
296
|
+
let scope;
|
|
204
297
|
if (opts.nonInteractive) {
|
|
205
298
|
prefix = prefill;
|
|
206
|
-
description = opts.description ?? '
|
|
299
|
+
description = opts.description ?? 'A concrete cognitive container (CCC)';
|
|
300
|
+
remote = opts.remote ?? '';
|
|
301
|
+
scope = opts.scope ?? 'solo';
|
|
207
302
|
}
|
|
208
303
|
else {
|
|
209
304
|
const info = await collectInfo(prefill);
|
|
210
305
|
prefix = info.prefix;
|
|
211
306
|
description = info.description;
|
|
307
|
+
remote = info.remote;
|
|
308
|
+
scope = info.scope;
|
|
212
309
|
}
|
|
213
|
-
// 验证 prefix
|
|
214
|
-
if (
|
|
310
|
+
// 验证 prefix — 统一使用 isValidPrefix(与 RR7 init / path.ts 一致)
|
|
311
|
+
if (!isValidPrefix(prefix)) {
|
|
215
312
|
return {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
313
|
+
...emptyResult(),
|
|
314
|
+
prefix,
|
|
315
|
+
message: `Invalid prefix "${prefix}": must be kebab-case (lowercase a-z, 0-9, dashes; no leading or trailing dash)`,
|
|
219
316
|
};
|
|
220
317
|
}
|
|
221
|
-
const
|
|
318
|
+
const cccName = buildCccName(prefix);
|
|
222
319
|
const ph = defaultPlaceholders(prefix);
|
|
223
|
-
// Phase 1a:
|
|
224
|
-
const createdDirs = [];
|
|
225
|
-
const skeleton = buildSkeleton(prefix);
|
|
320
|
+
// Phase 1a: 创建目标目录
|
|
226
321
|
mkdirSync(targetPath, { recursive: true });
|
|
322
|
+
// Phase 1b: 写入目录骨架(git init 之前先写文件,否则 git add -A 为空)
|
|
323
|
+
const createdDirs = [];
|
|
324
|
+
const skeleton = buildSkeleton(prefix, description, scope, remote);
|
|
227
325
|
for (const item of skeleton) {
|
|
228
326
|
const fullPath = join(targetPath, item.path);
|
|
229
327
|
if (item.isDir) {
|
|
@@ -235,15 +333,18 @@ export async function initWizard(opts) {
|
|
|
235
333
|
else {
|
|
236
334
|
if (existsSync(fullPath) && !force)
|
|
237
335
|
continue;
|
|
238
|
-
const
|
|
239
|
-
if (
|
|
240
|
-
|
|
336
|
+
const lastSep = fullPath.lastIndexOf('/');
|
|
337
|
+
if (lastSep >= 0) {
|
|
338
|
+
const parentDir = fullPath.slice(0, lastSep);
|
|
339
|
+
if (!existsSync(parentDir)) {
|
|
340
|
+
mkdirSync(parentDir, { recursive: true });
|
|
341
|
+
}
|
|
241
342
|
}
|
|
242
343
|
writeFileSync(fullPath, item.content, 'utf8');
|
|
243
344
|
createdDirs.push(item.path);
|
|
244
345
|
}
|
|
245
346
|
}
|
|
246
|
-
// Phase
|
|
347
|
+
// Phase 1c: 复制标准技能模板
|
|
247
348
|
const templatesDir = getTemplatesDir(pluginRoot);
|
|
248
349
|
const installedSkills = [];
|
|
249
350
|
let templatesMissing = false;
|
|
@@ -256,42 +357,65 @@ export async function initWizard(opts) {
|
|
|
256
357
|
prefix,
|
|
257
358
|
placeholders: ph,
|
|
258
359
|
dryRun: false,
|
|
360
|
+
noPrefix: true,
|
|
259
361
|
});
|
|
260
362
|
if (result.changed) {
|
|
261
363
|
installedSkills.push(skillName);
|
|
262
364
|
}
|
|
263
365
|
}
|
|
264
366
|
catch {
|
|
265
|
-
// 模板缺失是允许的 — 用户可后续 install-skill
|
|
266
367
|
templatesMissing = true;
|
|
267
368
|
}
|
|
268
369
|
}
|
|
269
|
-
// Phase
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
370
|
+
// Phase 1d: git init + add + commit + remote + push
|
|
371
|
+
let gitPushed = false;
|
|
372
|
+
let gitError;
|
|
373
|
+
try {
|
|
374
|
+
execGit(['init', '-b', 'main'], targetPath);
|
|
375
|
+
execGit(['add', '-A'], targetPath);
|
|
376
|
+
execGit(['commit', '-m', `chore: init ${cccName} CCC`], targetPath);
|
|
377
|
+
if (remote) {
|
|
378
|
+
execGit(['remote', 'add', 'origin', remote], targetPath);
|
|
379
|
+
try {
|
|
380
|
+
execGit(['push', '-u', 'origin', 'main'], targetPath);
|
|
381
|
+
gitPushed = true;
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
gitError = `Git push failed: ${err.message}. CCC created locally but not pushed.`;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
catch (err) {
|
|
389
|
+
gitError = `Git init failed: ${err.message}`;
|
|
273
390
|
}
|
|
274
|
-
// 输出
|
|
391
|
+
// ── 输出 ──
|
|
275
392
|
const skillSummary = installedSkills.length > 0
|
|
276
393
|
? `Pre-installed ${installedSkills.length} skill(s): ${installedSkills.join(', ')}`
|
|
277
394
|
: 'No templates were copied (templates may not exist yet)';
|
|
395
|
+
const message = [
|
|
396
|
+
`CCC "${cccName}" created at ${targetPath}`,
|
|
397
|
+
` prefix: ${prefix}`,
|
|
398
|
+
` description: ${description}`,
|
|
399
|
+
remote ? ` remote: ${remote}` : '',
|
|
400
|
+
` ${skillSummary}`,
|
|
401
|
+
gitPushed ? '' : ` ⚠ Git: ${gitError || 'not pushed (no remote provided)'}`,
|
|
402
|
+
'',
|
|
403
|
+
'Next steps (two-phase init):',
|
|
404
|
+
` Phase 1 ✅ — CCC skeleton created.`,
|
|
405
|
+
` Phase 2 ⏳ — Restart OpenCode and open ${targetPath}.`,
|
|
406
|
+
` Type anything — your first message will be intercepted`,
|
|
407
|
+
` and the Agent will guide you through a 4-question interview`,
|
|
408
|
+
` to complete the root skill configuration.`,
|
|
409
|
+
templatesMissing ? ' (Some skill templates not found — run `opencode-serenity-plugin install-skill <name>` to add them later)' : '',
|
|
410
|
+
].filter(Boolean).join('\n');
|
|
278
411
|
return {
|
|
279
412
|
success: true,
|
|
280
413
|
prefix,
|
|
281
|
-
|
|
282
|
-
message
|
|
283
|
-
`CCC "${name}" created at ${targetPath}`,
|
|
284
|
-
` prefix: ${prefix}`,
|
|
285
|
-
` description: ${description}`,
|
|
286
|
-
` ${skillSummary}`,
|
|
287
|
-
'',
|
|
288
|
-
`Next steps:`,
|
|
289
|
-
` 1. Open ${targetPath} in OpenCode`,
|
|
290
|
-
` 2. Agent will guide you through Phase 2 to complete the root skill`,
|
|
291
|
-
templatesMissing ? ' (Some skill templates not found — run `opencode-serenity-plugin install-skill <name>` to add them later)' : '',
|
|
292
|
-
].filter(Boolean).join('\n'),
|
|
414
|
+
cccName,
|
|
415
|
+
message,
|
|
293
416
|
createdDirs,
|
|
294
417
|
installedSkills,
|
|
418
|
+
gitPushed,
|
|
295
419
|
};
|
|
296
420
|
}
|
|
297
421
|
//# sourceMappingURL=init-wizard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-wizard.js","sourceRoot":"","sources":["../../src/init/init-wizard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-wizard.js","sourceRoot":"","sources":["../../src/init/init-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiC9D,YAAY;AAEZ,oCAAoC;AACpC,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,KAAK;CACG,CAAC;AAEX,sCAAsC;AACtC,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,cAAc;AAEd,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,YAAqB;IAC9D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,YAAY;YAC7B,CAAC,CAAC,GAAG,MAAM,KAAK,YAAY,KAAK;YACjC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;QAClB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AASD,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,qCAAqC;UACnC,0EAA0E;UAC1E,MAAM,EACR,OAAO,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,WAAW,CACnC,6CAA6C;UAC3C,0DAA0D;UAC1D,MAAM,CACT,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,sDAAsD;UACpD,uEAAuE;UACvE,MAAM,CACT,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,0CAA0C;UACxC,wBAAwB;UACxB,+BAA+B;UAC/B,MAAM,EACR,MAAM,CACP,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,OAAO;QACL,MAAM,EAAE,MAAM,IAAI,OAAO;QACzB,WAAW,EAAE,WAAW,IAAI,sCAAsC;QAClE,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,KAAK,EAAE,KAAK,IAAI,MAAM;KACvB,CAAC;AACJ,CAAC;AAUD,SAAS,aAAa,CACpB,MAAc,EACd,WAAmB,EACnB,KAAa,EACb,MAAc;IAEd,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC;IAE1B,OAAO;QACL,KAAK;QACL,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1D,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAChD,YAAY;QACZ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE;QAC9C,6BAA6B;QAC7B;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,8BAA8B;gBAC9B,kBAAkB;gBAClB,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD,uCAAuC;QACvC;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,WAAW,EAAE;oBACX,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;iBACf;gBACD,WAAW;aACZ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;QACD,kCAAkC;QAClC,yCAAyC;QACzC;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;YAC3C,OAAO,EAAE;gBACP,KAAK;gBACL,SAAS,OAAO,EAAE;gBAClB,gBAAgB,WAAW,EAAE;gBAC7B,KAAK;gBACL,EAAE;gBACF,YAAY,OAAO,EAAE;gBACrB,EAAE;gBACF,sCAAsC;gBACtC,EAAE;gBACF,OAAO;gBACP,EAAE;gBACF,WAAW;gBACX,EAAE;gBACF,cAAc;gBACd,EAAE;gBACF,uBAAuB;gBACvB,0BAA0B;gBAC1B,EAAE;gBACF,SAAS;gBACT,EAAE;gBACF,YAAY;gBACZ,gBAAgB;gBAChB,cAAc,OAAO,IAAI;gBACzB,UAAU,KAAK,IAAI;gBACnB,cAAc,MAAM,IAAI,kBAAkB,IAAI;gBAC9C,EAAE;gBACF,SAAS;gBACT,EAAE;gBACF,uBAAuB;gBACvB,4BAA4B;gBAC5B,KAAK,OAAO,2BAA2B;gBACvC,6BAA6B;gBAC7B,4BAA4B;gBAC5B,uBAAuB;gBACvB,EAAE;gBACF,KAAK;gBACL,EAAE;gBACF,+BAA+B;gBAC/B,2DAA2D;gBAC3D,EAAE;gBACF,UAAU;gBACV,EAAE;gBACF,0BAA0B;gBAC1B,EAAE;gBACF,SAAS;gBACT,EAAE;gBACF,0BAA0B;gBAC1B,EAAE;gBACF,SAAS;gBACT,EAAE;gBACF,0BAA0B;gBAC1B,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD,eAAe;QACf,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3E,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QACxE,uBAAuB;QACvB;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,+BAA+B,CAAC;YAC3E,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC;SACtC;QACD,wCAAwC;QACxC;YACE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,CAAC;YACnE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;gBACtB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,GAAG,OAAO,eAAe;gBACtC,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,kDAAkD;wBACxD,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,iDAAiD;wBAC9D,KAAK,EAAE,qFAAqF;qBAC7F;oBACD;wBACE,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,kDAAkD;wBACxD,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,iDAAiD;wBAC9D,KAAK,EAAE,kEAAkE;qBAC1E;oBACD;wBACE,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,0CAA0C;wBAChD,KAAK,EAAE,KAAK;wBACZ,QAAQ,EAAE,WAAW;wBACrB,WAAW,EAAE,0DAA0D;wBACvE,KAAK,EAAE,oFAAoF;qBAC5F;iBACF;aACF,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;SACnB;KACF,CAAC;AACJ,CAAC;AAED,6BAA6B;AAC7B,uCAAuC;AAEvC,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO;QACL,yDAAyD,OAAO,IAAI;QACpE,yFAAyF;QACzF,EAAE;QACF,cAAc;QACd,EAAE;QACF,mHAAmH,OAAO,cAAc;QACxI,EAAE;QACF,yCAAyC;QACzC,8DAA8D;QAC9D,yFAAyF;QACzF,EAAE;QACF,sCAAsC;QACtC,oEAAoE;QACpE,oGAAoG;QACpG,EAAE;QACF,sCAAsC;QACtC,0CAA0C;QAC1C,0EAA0E;QAC1E,EAAE;QACF,4CAA4C;QAC5C,mDAAmD;QACnD,iHAAiH;QACjH,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,kEAAkE;QAClE,8EAA8E;QAC9E,wBAAwB;QACxB,EAAE;QACF,oBAAoB;QACpB,8CAA8C;QAC9C,0CAA0C;QAC1C,6CAA6C;QAC7C,qDAAqD;QACrD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,uBAAuB;AAEvB,SAAS,OAAO,CAAC,IAAc,EAAE,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YACvC,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,YAAY;AAEZ,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAiB;IAChD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,GAAe,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,mCAAmC;IACnC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9D,IAAI,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO;gBACL,GAAG,WAAW,EAAE;gBAChB,OAAO,EAAE,kCAAkC,UAAU,6BAA6B;aACnF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;IAE1D,IAAI,MAAc,CAAC;IACnB,IAAI,WAAmB,CAAC;IACxB,IAAI,MAAc,CAAC;IACnB,IAAI,KAAa,CAAC;IAElB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,GAAG,OAAO,CAAC;QACjB,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,sCAAsC,CAAC;QACzE,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3B,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,WAAW,EAAE;YAChB,MAAM;YACN,OAAO,EAAE,mBAAmB,MAAM,iFAAiF;SACpH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,GAAiB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAErD,mBAAmB;IACnB,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,qDAAqD;IACrD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC7B,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,UAAU;gBACxB,MAAM;gBACN,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAA4B,CAAC;IAEjC,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC;gBACH,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;gBACtD,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,QAAQ,GAAG,oBAAoB,GAAG,CAAC,OAAO,uCAAuC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,QAAQ,GAAG,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,WAAW;IACX,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,iBAAiB,eAAe,CAAC,MAAM,cAAc,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnF,CAAC,CAAC,wDAAwD,CAAC;IAE7D,MAAM,OAAO,GAAG;QACd,QAAQ,OAAO,gBAAgB,UAAU,EAAE;QAC3C,aAAa,MAAM,EAAE;QACrB,kBAAkB,WAAW,EAAE;QAC/B,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;QACnC,KAAK,YAAY,EAAE;QACnB,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,QAAQ,IAAI,iCAAiC,EAAE;QAC5E,EAAE;QACF,8BAA8B;QAC9B,sCAAsC;QACtC,4CAA4C,UAAU,GAAG;QACzD,6DAA6D;QAC7D,kEAAkE;QAClE,gDAAgD;QAChD,gBAAgB,CAAC,CAAC,CAAC,4GAA4G,CAAC,CAAC,CAAC,EAAE;KACrI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM;QACN,OAAO;QACP,OAAO;QACP,WAAW;QACX,eAAe;QACf,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -54,10 +54,12 @@ export interface InstallTemplateOptions {
|
|
|
54
54
|
name: string;
|
|
55
55
|
/** 目标 serenity 根路径(cwdRoot) */
|
|
56
56
|
serenityRoot: string;
|
|
57
|
-
/**
|
|
57
|
+
/** 实例前缀(用于占位符替换) */
|
|
58
58
|
prefix: string;
|
|
59
59
|
/** 占位符(可选,不传则用默认值) */
|
|
60
60
|
placeholders?: Placeholders;
|
|
61
|
+
/** 不添加 prefix 前缀到目标目录名(标准技能用此 flag) */
|
|
62
|
+
noPrefix?: boolean;
|
|
61
63
|
/** dry-run 模式 */
|
|
62
64
|
dryRun?: boolean;
|
|
63
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../src/skills/template-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB;IACnB,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW;IACX,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAOhE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CASrE;AAkBD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,YAAY,GACzB,aAAa,CA0Cf;AA0BD,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../src/skills/template-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB;IACnB,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW;IACX,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAOhE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CASrE;AAkBD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,YAAY,GACzB,aAAa,CA0Cf;AA0BD,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,qBAAqB,CA+CnF"}
|
|
@@ -129,17 +129,18 @@ function parseManifest(raw, fallbackName) {
|
|
|
129
129
|
* 输出到 <serenityRoot>/.opencode/skills/<prefix>-<name>/
|
|
130
130
|
*/
|
|
131
131
|
export function installTemplate(opts) {
|
|
132
|
-
const { templateDir, name, serenityRoot, prefix, dryRun } = opts;
|
|
132
|
+
const { templateDir, name, serenityRoot, prefix, dryRun, noPrefix } = opts;
|
|
133
133
|
const ph = opts.placeholders ?? defaultPlaceholders(prefix);
|
|
134
134
|
// 加载模板
|
|
135
135
|
const { files } = loadTemplate(templateDir, name, ph);
|
|
136
|
-
// 目标路径
|
|
137
|
-
const
|
|
136
|
+
// 目标路径 — 标准技能不添加 prefix(noPrefix),领域技能添加
|
|
137
|
+
const skillDirName = noPrefix ? name : `${prefix}-${name}`;
|
|
138
|
+
const targetDir = join(serenityRoot, '.opencode', 'skills', skillDirName);
|
|
138
139
|
const createdFiles = [];
|
|
139
140
|
if (dryRun) {
|
|
140
141
|
return {
|
|
141
142
|
changed: true,
|
|
142
|
-
skillDirName
|
|
143
|
+
skillDirName,
|
|
143
144
|
createdFiles: Object.keys(files),
|
|
144
145
|
};
|
|
145
146
|
}
|
|
@@ -164,7 +165,7 @@ export function installTemplate(opts) {
|
|
|
164
165
|
}
|
|
165
166
|
return {
|
|
166
167
|
changed: hasChanges,
|
|
167
|
-
skillDirName
|
|
168
|
+
skillDirName,
|
|
168
169
|
createdFiles,
|
|
169
170
|
};
|
|
170
171
|
}
|