speccore 5.27.33 → 5.30.2

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.
Files changed (68) hide show
  1. package/.agents/skills/spec-analyze/SKILL.md +45 -0
  2. package/.agents/skills/spec-ask/SKILL.md +152 -0
  3. package/.agents/skills/spec-change/SKILL.md +21 -0
  4. package/.agents/skills/spec-dev/SKILL.md +30 -0
  5. package/.agents/skills/spec-doc2spec/SKILL.md +35 -0
  6. package/.agents/skills/spec-execute/SKILL.md +55 -0
  7. package/.agents/skills/spec-plan/SKILL.md +32 -0
  8. package/.agents/skills/spec-spec2doc/SKILL.md +35 -0
  9. package/.agents/skills/spec-split/SKILL.md +42 -0
  10. package/.agents/skills/speccore-router/SKILL.md +297 -0
  11. package/dist/cli.js +16 -0
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/analyze.d.ts +2 -0
  14. package/dist/commands/analyze.d.ts.map +1 -1
  15. package/dist/commands/analyze.js +29 -0
  16. package/dist/commands/analyze.js.map +1 -1
  17. package/dist/commands/ask.d.ts.map +1 -1
  18. package/dist/commands/ask.js +22 -11
  19. package/dist/commands/ask.js.map +1 -1
  20. package/dist/commands/doc2spec.d.ts +2 -0
  21. package/dist/commands/doc2spec.d.ts.map +1 -1
  22. package/dist/commands/doc2spec.js +31 -0
  23. package/dist/commands/doc2spec.js.map +1 -1
  24. package/dist/commands/done.d.ts +2 -0
  25. package/dist/commands/done.d.ts.map +1 -1
  26. package/dist/commands/done.js +14 -0
  27. package/dist/commands/done.js.map +1 -1
  28. package/dist/commands/execute.d.ts +2 -0
  29. package/dist/commands/execute.d.ts.map +1 -1
  30. package/dist/commands/execute.js +128 -0
  31. package/dist/commands/execute.js.map +1 -1
  32. package/dist/commands/init.js +283 -85
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/iteration/split.d.ts +3 -0
  35. package/dist/commands/iteration/split.d.ts.map +1 -1
  36. package/dist/commands/iteration/split.js +43 -0
  37. package/dist/commands/iteration/split.js.map +1 -1
  38. package/dist/commands/plan.d.ts +2 -0
  39. package/dist/commands/plan.d.ts.map +1 -1
  40. package/dist/commands/plan.js +22 -0
  41. package/dist/commands/plan.js.map +1 -1
  42. package/dist/commands/pr.d.ts +2 -0
  43. package/dist/commands/pr.d.ts.map +1 -1
  44. package/dist/commands/pr.js +14 -0
  45. package/dist/commands/pr.js.map +1 -1
  46. package/dist/commands/spec2doc.d.ts +2 -0
  47. package/dist/commands/spec2doc.d.ts.map +1 -1
  48. package/dist/commands/spec2doc.js +40 -0
  49. package/dist/commands/spec2doc.js.map +1 -1
  50. package/dist/commands/welcome.js +1 -1
  51. package/dist/commands/welcome.js.map +1 -1
  52. package/dist/core/ask-engine.d.ts +1 -1
  53. package/dist/core/ask-engine.d.ts.map +1 -1
  54. package/dist/core/ask-engine.js +98 -7
  55. package/dist/core/ask-engine.js.map +1 -1
  56. package/dist/core/doc-validator.d.ts +35 -0
  57. package/dist/core/doc-validator.d.ts.map +1 -0
  58. package/dist/core/doc-validator.js +398 -0
  59. package/dist/core/doc-validator.js.map +1 -0
  60. package/dist/core/intent-recognition.d.ts +1 -1
  61. package/dist/core/intent-recognition.d.ts.map +1 -1
  62. package/dist/core/intent-recognition.js +22 -9
  63. package/dist/core/intent-recognition.js.map +1 -1
  64. package/dist/core/prompt-builder.d.ts +90 -0
  65. package/dist/core/prompt-builder.d.ts.map +1 -0
  66. package/dist/core/prompt-builder.js +500 -0
  67. package/dist/core/prompt-builder.js.map +1 -0
  68. package/package.json +3 -2
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPrompt = buildPrompt;
4
+ exports.formatPrompt = formatPrompt;
5
+ exports.parseAiResponse = parseAiResponse;
6
+ exports.outputNeedsInfo = outputNeedsInfo;
7
+ /**
8
+ * prompt-builder — 统一的 Spec → AI Prompt 构建引擎
9
+ *
10
+ * CLI 不自己生成内容,而是读取 Spec 上下文,构建结构化 Prompt 输出到 stdout。
11
+ * Skill/宿主 AI 捕获 stdout,解析 Prompt,调用 AI 生成内容后,由 CLI --apply 写回。
12
+ *
13
+ * 架构: CLI(确定性) → stdout(Prompt) → AI(生成) → CLI(确定性写入)
14
+ */
15
+ const fs_extra_1 = require("fs-extra");
16
+ const path_1 = require("path");
17
+ // ═══════════════════════════════════════════════════════════
18
+ // 上下文加载
19
+ // ═══════════════════════════════════════════════════════════
20
+ /**
21
+ * 从 CONSTITUTION.md 解析技术栈
22
+ */
23
+ async function loadTechStack(cwd) {
24
+ const constitutionPath = (0, path_1.join)(cwd, '.speccore', 'CONSTITUTION.md');
25
+ if (!await (0, fs_extra_1.pathExists)(constitutionPath))
26
+ return {};
27
+ const content = await (0, fs_extra_1.readFile)(constitutionPath, 'utf-8');
28
+ const stack = {};
29
+ // 解析技术栈章节
30
+ const techSection = content.match(/##\s*技术栈[\s\S]*?(?=## |$)/i);
31
+ if (techSection) {
32
+ const section = techSection[0];
33
+ const langMatch = section.match(/语言[::]\s*(.+)/i);
34
+ if (langMatch)
35
+ stack.language = langMatch[1].trim();
36
+ const frameworkMatch = section.match(/框架[::]\s*(.+)/i);
37
+ if (frameworkMatch)
38
+ stack.framework = frameworkMatch[1].trim();
39
+ const dbMatch = section.match(/数据库[::]\s*(.+)/i);
40
+ if (dbMatch)
41
+ stack.database = dbMatch[1].trim();
42
+ const cacheMatch = section.match(/缓存[::]\s*(.+)/i);
43
+ if (cacheMatch)
44
+ stack.cache = cacheMatch[1].trim();
45
+ }
46
+ return stack;
47
+ }
48
+ /**
49
+ * 从 REQ.md 解析 API 定义
50
+ */
51
+ async function loadApiSpecs(cwd, taskDir) {
52
+ const reqPath = (0, path_1.join)(cwd, taskDir, 'REQ.md');
53
+ if (!await (0, fs_extra_1.pathExists)(reqPath))
54
+ return [];
55
+ const content = await (0, fs_extra_1.readFile)(reqPath, 'utf-8');
56
+ const apis = [];
57
+ // 解析 API 表格: | 方法 | 路径 | 说明 |
58
+ const tableRegex = /\|.*方法.*\|.*路径.*\|.*说明.*\|.*/i;
59
+ const tableMatch = content.match(tableRegex);
60
+ if (tableMatch) {
61
+ const startIdx = content.indexOf(tableMatch[0]);
62
+ const afterTable = content.substring(startIdx);
63
+ const lines = afterTable.split('\n');
64
+ for (let i = 2; i < lines.length; i++) { // 跳过表头和分隔线
65
+ const line = lines[i].trim();
66
+ if (!line.startsWith('|'))
67
+ break;
68
+ const cols = line.split('|').map(c => c.trim()).filter(Boolean);
69
+ if (cols.length >= 3) {
70
+ apis.push({
71
+ method: cols[0],
72
+ path: cols[1],
73
+ description: cols[2] || '',
74
+ });
75
+ }
76
+ }
77
+ }
78
+ return apis;
79
+ }
80
+ /**
81
+ * 从 REQ.md 解析数据模型
82
+ */
83
+ async function loadDataModels(cwd, taskDir) {
84
+ const reqPath = (0, path_1.join)(cwd, taskDir, 'REQ.md');
85
+ if (!await (0, fs_extra_1.pathExists)(reqPath))
86
+ return [];
87
+ const content = await (0, fs_extra_1.readFile)(reqPath, 'utf-8');
88
+ const models = [];
89
+ // 查找所有数据模型表格
90
+ const modelSection = content.match(/(?:数据模型|实体|Entity|Model)[\s\S]*?(?=## |\n##|$)/i);
91
+ if (modelSection) {
92
+ const section = modelSection[0];
93
+ // 解析字段表格: | 字段 | 类型 | 说明 |
94
+ const fieldTableRegex = /\|.*字段.*\|.*类型.*\|.*说明.*\|/gi;
95
+ let match;
96
+ let currentModel = null;
97
+ const lines = section.split('\n');
98
+ for (let i = 0; i < lines.length; i++) {
99
+ // 检测模型名称(### 标题 或 **粗体**)
100
+ const headingMatch = lines[i].match(/^#{2,4}\s*(.+)/);
101
+ const boldMatch = lines[i].match(/\*\*(.+?)\*\*/);
102
+ if (headingMatch || boldMatch) {
103
+ const name = (headingMatch || boldMatch)[1];
104
+ if (currentModel && currentModel.fields.length > 0) {
105
+ models.push(currentModel);
106
+ }
107
+ currentModel = { name, fields: [] };
108
+ }
109
+ // 解析字段行
110
+ if (currentModel && lines[i].startsWith('|') && !lines[i].includes('---') && !lines[i].includes('字段')) {
111
+ const cols = lines[i].split('|').map(c => c.trim()).filter(Boolean);
112
+ if (cols.length >= 3) {
113
+ currentModel.fields.push({
114
+ name: cols[0],
115
+ type: cols[1],
116
+ description: cols[2] || '',
117
+ });
118
+ }
119
+ }
120
+ }
121
+ if (currentModel && currentModel.fields.length > 0) {
122
+ models.push(currentModel);
123
+ }
124
+ }
125
+ return models;
126
+ }
127
+ /**
128
+ * 从 CONSTITUTION.md + REQ.md 提取业务规则
129
+ */
130
+ async function loadBusinessRules(cwd, taskDir) {
131
+ const rules = [];
132
+ // 从 CONSTITUTION 读取命名规范等
133
+ const constitutionPath = (0, path_1.join)(cwd, '.speccore', 'CONSTITUTION.md');
134
+ if (await (0, fs_extra_1.pathExists)(constitutionPath)) {
135
+ const content = await (0, fs_extra_1.readFile)(constitutionPath, 'utf-8');
136
+ const namingSection = content.match(/##\s*命名规范[\s\S]*?(?=## |$)/i);
137
+ if (namingSection) {
138
+ const lines = namingSection[0].split('\n');
139
+ for (const line of lines) {
140
+ if (line.match(/^[-*]\s+(.+)/)) {
141
+ rules.push({ rule: RegExp.$1.trim() });
142
+ }
143
+ }
144
+ }
145
+ }
146
+ if (taskDir) {
147
+ const reqPath = (0, path_1.join)(cwd, taskDir, 'REQ.md');
148
+ if (await (0, fs_extra_1.pathExists)(reqPath)) {
149
+ const content = await (0, fs_extra_1.readFile)(reqPath, 'utf-8');
150
+ const ruleSection = content.match(/(?:业务规则|约束条件|Constraint)[\s\S]*?(?=## |\n##|$)/i);
151
+ if (ruleSection) {
152
+ const lines = ruleSection[0].split('\n');
153
+ for (const line of lines) {
154
+ if (line.match(/^[-*]\s+(.+)/)) {
155
+ rules.push({ rule: RegExp.$1.trim() });
156
+ }
157
+ }
158
+ }
159
+ }
160
+ }
161
+ return rules;
162
+ }
163
+ // ═══════════════════════════════════════════════════════════
164
+ // Prompt 构建
165
+ // ═══════════════════════════════════════════════════════════
166
+ /**
167
+ * 获取命令对应的指令模板
168
+ */
169
+ function getInstruction(command, context) {
170
+ switch (command) {
171
+ case 'execute':
172
+ return [
173
+ `请根据以下 Spec 规范,为 "${context.taskName || '当前任务'}" 生成完整的代码实现。`,
174
+ '',
175
+ '要求:',
176
+ `1. 严格遵循上面的技术栈选型`,
177
+ `2. 实现所有 ${context.apiCount} 个 API 接口`,
178
+ `3. 创建所有 ${context.modelCount} 个数据模型的 DDL`,
179
+ '4. 遵循 CONSTITUTION 中定义的命名规范和异常码体系',
180
+ '5. 代码必须能直接编译通过',
181
+ '6. 包含必要的 import 语句和注解',
182
+ ].join('\n');
183
+ case 'analyze':
184
+ return [
185
+ '请分析以下需求文档,输出结构化分析结果。',
186
+ '1. 需求完整性评估(API 覆盖率、数据模型完整性)',
187
+ '2. 技术方案建议(架构、选型、依赖)',
188
+ '3. 风险识别(技术难点、依赖风险、性能瓶颈)',
189
+ '4. 工作量估算(按 API 数量估算人天)',
190
+ '请按 Markdown 格式输出,包含上述 4 个章节。',
191
+ ].join('\n');
192
+ case 'split':
193
+ return [
194
+ '请根据以下需求分析结果,拆分开发任务。',
195
+ '1. 按端(app/h5/miniapp/admin)分组',
196
+ '2. 每个 API 3~8 个接口为一个 Task',
197
+ '3. 标注 Task 间的依赖关系',
198
+ '4. 给出建议的负责人分配',
199
+ '请按 Markdown 表格格式输出 Task 列表。',
200
+ ].join('\n');
201
+ case 'plan':
202
+ return [
203
+ '请根据以下 Task 列表和人员配置,生成执行计划。',
204
+ '1. 拓扑排序确定执行顺序',
205
+ '2. 识别可并行的 Task 批次',
206
+ '3. 分配负责人',
207
+ '4. 估算每个 Task 的工作量和里程碑',
208
+ '请按 Markdown 表格格式输出执行计划。',
209
+ ].join('\n');
210
+ }
211
+ }
212
+ /**
213
+ * 构建完整的 SpecCore Prompt
214
+ */
215
+ async function buildPrompt(command, options) {
216
+ const cwd = options.cwd || process.cwd();
217
+ const techStack = await loadTechStack(cwd);
218
+ const taskDir = options.taskDir || '';
219
+ const apiSpecs = await loadApiSpecs(cwd, taskDir);
220
+ const dataModels = await loadDataModels(cwd, taskDir);
221
+ const businessRules = await loadBusinessRules(cwd, taskDir);
222
+ const context = {
223
+ taskName: options.task,
224
+ apiCount: apiSpecs.length,
225
+ modelCount: dataModels.length,
226
+ };
227
+ return {
228
+ marker: '[SPECCORE_PROMPT]',
229
+ version: '1.0',
230
+ command,
231
+ iteration: options.iteration || '',
232
+ task: options.task,
233
+ platform: options.platform,
234
+ techStack,
235
+ apiSpecs,
236
+ dataModels,
237
+ businessRules,
238
+ instruction: getInstruction(command, context),
239
+ outputHint: command === 'execute'
240
+ ? '请返回格式: {"files": [{"path": "相对路径", "content": "代码内容"}]}'
241
+ : '请返回 Markdown 格式的分析结果',
242
+ };
243
+ }
244
+ // ═══════════════════════════════════════════════════════════
245
+ // Prompt 序列化
246
+ // ═══════════════════════════════════════════════════════════
247
+ /**
248
+ * 将 Prompt 序列化为 AI 可读的文本(输出到 stdout)
249
+ */
250
+ function formatPrompt(prompt) {
251
+ const lines = [];
252
+ lines.push('[SPECCORE_PROMPT]');
253
+ lines.push('');
254
+ lines.push(`# 任务: ${prompt.command} — ${prompt.task || prompt.iteration}`);
255
+ lines.push('');
256
+ // 技术栈
257
+ if (Object.keys(prompt.techStack).length > 0) {
258
+ lines.push('## 技术栈');
259
+ if (prompt.techStack.language)
260
+ lines.push(`- 语言: ${prompt.techStack.language}`);
261
+ if (prompt.techStack.framework)
262
+ lines.push(`- 框架: ${prompt.techStack.framework}`);
263
+ if (prompt.techStack.database)
264
+ lines.push(`- 数据库: ${prompt.techStack.database}`);
265
+ if (prompt.techStack.cache)
266
+ lines.push(`- 缓存: ${prompt.techStack.cache}`);
267
+ if (prompt.techStack.frontend)
268
+ lines.push(`- 前端: ${prompt.techStack.frontend}`);
269
+ lines.push('');
270
+ }
271
+ // API 定义
272
+ if (prompt.apiSpecs.length > 0) {
273
+ lines.push('## API 接口定义');
274
+ lines.push('| 方法 | 路径 | 说明 |');
275
+ lines.push('| :--- | :--- | :--- |');
276
+ for (const api of prompt.apiSpecs) {
277
+ lines.push(`| ${api.method} | ${api.path} | ${api.description} |`);
278
+ }
279
+ lines.push('');
280
+ }
281
+ // 数据模型
282
+ if (prompt.dataModels.length > 0) {
283
+ lines.push('## 数据模型');
284
+ for (const model of prompt.dataModels) {
285
+ lines.push(`### ${model.name}${model.table ? ` (${model.table})` : ''}`);
286
+ if (model.fields.length > 0) {
287
+ lines.push('| 字段 | 类型 | 说明 |');
288
+ lines.push('| :--- | :--- | :--- |');
289
+ for (const field of model.fields) {
290
+ lines.push(`| ${field.name} | ${field.type} | ${field.description} |`);
291
+ }
292
+ }
293
+ lines.push('');
294
+ }
295
+ }
296
+ // 业务规则
297
+ if (prompt.businessRules.length > 0) {
298
+ lines.push('## 业务规则和约束');
299
+ for (const rule of prompt.businessRules) {
300
+ lines.push(`- ${rule.rule}`);
301
+ }
302
+ lines.push('');
303
+ }
304
+ // 输出格式提示
305
+ lines.push(`## 输出格式要求`);
306
+ lines.push(prompt.outputHint);
307
+ lines.push('');
308
+ // 执行指令
309
+ lines.push('## 执行指令');
310
+ lines.push(prompt.instruction);
311
+ lines.push('');
312
+ // 尾标记
313
+ lines.push('[/SPECCORE_PROMPT]');
314
+ return lines.join('\n');
315
+ }
316
+ /**
317
+ * 解析 AI 返回的 JSON 文件列表
318
+ */
319
+ function parseAiResponse(response) {
320
+ // 尝试从响应中提取 JSON
321
+ const jsonMatch = response.match(/\{[\s\S]*"files"[\s\S]*\}/);
322
+ if (!jsonMatch)
323
+ return null;
324
+ try {
325
+ const parsed = JSON.parse(jsonMatch[0]);
326
+ if (parsed.files && Array.isArray(parsed.files)) {
327
+ return parsed;
328
+ }
329
+ }
330
+ catch {
331
+ // 非 JSON 响应,当作原始代码处理
332
+ }
333
+ return null;
334
+ }
335
+ /** 命令参数表 */
336
+ const COMMAND_PARAMS = {
337
+ execute: [
338
+ { name: '-t, --task', required: true, desc: '任务编号', example: 'Task-001' },
339
+ { name: '-i, --iteration', required: true, desc: '迭代名', example: 'Q1' },
340
+ { name: '--all', required: false, desc: '执行全部待开发任务', example: '--all' },
341
+ { name: '--platform', required: false, desc: '指定平台端', example: 'app/h5/miniapp/admin' },
342
+ { name: '--force', required: false, desc: '跳过确认直接执行', example: '--force' },
343
+ { name: '--resume', required: false, desc: '断点续跑', example: '--resume' },
344
+ ],
345
+ analyze: [
346
+ { name: '-I, --iteration', required: true, desc: '迭代名', example: 'Q1' },
347
+ { name: '--task', required: false, desc: '分析特定任务', example: 'Task-001' },
348
+ { name: '--scope', required: false, desc: '分析范围', example: 'global/iteration/task' },
349
+ { name: '--depth', required: false, desc: '分析深度', example: 'quick/normal/deep' },
350
+ ],
351
+ split: [
352
+ { name: '-I, --iteration', required: true, desc: '迭代名', example: 'Q1' },
353
+ { name: '--owner', required: false, desc: '指定负责人', example: '张三' },
354
+ { name: '--dry-run', required: false, desc: '预览模式不创建', example: '--dry-run' },
355
+ ],
356
+ plan: [
357
+ { name: '-I, --iteration', required: true, desc: '迭代名', example: 'Q1' },
358
+ { name: '--owner', required: false, desc: '指定负责人', example: '张三' },
359
+ ],
360
+ doc2spec: [
361
+ { name: '-f, --file', required: true, desc: '源文件路径', example: 'PRD.docx' },
362
+ { name: '--iter', required: true, desc: '目标迭代', example: 'Q1' },
363
+ { name: '--platform', required: false, desc: '平台标识', example: 'app' },
364
+ ],
365
+ spec2doc: [
366
+ { name: '-i, --iteration', required: true, desc: '迭代名', example: 'Q1' },
367
+ { name: '-o, --output', required: true, desc: '输出文件名', example: '需求文档.docx' },
368
+ { name: '-f, --format', required: false, desc: '导出格式', example: 'docx/pdf/html' },
369
+ { name: '--all', required: false, desc: '全量导出', example: '--all' },
370
+ ],
371
+ pr: [
372
+ { name: '--task', required: true, desc: '任务编号', example: 'Task-001' },
373
+ { name: '-i, --iteration', required: false, desc: '迭代名', example: 'Q1' },
374
+ { name: '--title', required: false, desc: 'PR 标题', example: '"feat: 用户认证"' },
375
+ ],
376
+ done: [
377
+ { name: '--task', required: false, desc: '任务编号', example: 'Task-001' },
378
+ { name: '--all', required: false, desc: '全部归档', example: '--all' },
379
+ { name: '-i, --iteration', required: false, desc: '迭代名', example: 'Q1' },
380
+ ],
381
+ };
382
+ /** 命令别名和描述 */
383
+ const COMMAND_DESC = {
384
+ execute: { desc: '执行开发任务:读取 Spec → AI 生成代码 → 写入文件', aliases: ['ex'] },
385
+ analyze: { desc: '需求分析:读取需求文档 → AI 分析 → 写入 ANALYSIS.md', aliases: ['al'] },
386
+ split: { desc: '任务拆分:读取分析 → AI 拆分 → 创建 Task 目录', aliases: ['sp'] },
387
+ plan: { desc: '生成执行计划:读取 Task → AI 排程 → 写入 plan.json', aliases: ['pl'] },
388
+ doc2spec: { desc: '导入文档:Word/PDF → Pandoc 转换 + AI 验证 → Spec MD', aliases: ['d2s'] },
389
+ spec2doc: { desc: '导出文档:Spec MD → AI 排版 → Word/PDF/HTML', aliases: ['s2d'] },
390
+ pr: { desc: '创建 Pull Request:AI 生成描述 → 提交代码', aliases: [] },
391
+ done: { desc: '任务归档:验证 → 回顾 → 同步全局', aliases: ['dn'] },
392
+ };
393
+ /**
394
+ * 输出缺参数请求到 stdout,退出码 11。
395
+ * 重格式:包含命令说明、参数表、可用选项、使用示例、推荐命令。
396
+ */
397
+ function outputNeedsInfo(req) {
398
+ const params = COMMAND_PARAMS[req.command] || [];
399
+ const cmdInfo = COMMAND_DESC[req.command] || { desc: req.command, aliases: [] };
400
+ const lines = [];
401
+ lines.push('[SPECCORE_NEEDS_INFO]');
402
+ lines.push('');
403
+ lines.push(`## ⚠️ 命令 \`${req.command}\` 缺少必要参数`);
404
+ lines.push('');
405
+ lines.push(`**说明**: ${cmdInfo.desc}`);
406
+ if (cmdInfo.aliases.length > 0)
407
+ lines.push(`**别名**: ${cmdInfo.aliases.join(', ')}`);
408
+ lines.push('');
409
+ lines.push('---');
410
+ lines.push('');
411
+ lines.push('### 📋 全部参数');
412
+ lines.push('');
413
+ lines.push('| 参数 | 必填 | 说明 | 示例 |');
414
+ lines.push('| :--- | :--- | :--- | :--- |');
415
+ for (const p of params) {
416
+ const isMissing = req.missing.some(m => p.name.includes(m));
417
+ const icon = p.required ? '🔴 必填' : '🟢 可选';
418
+ const marker = isMissing ? '**← 缺失**' : '';
419
+ lines.push(`| \`${p.name}\` | ${icon} | ${p.desc} ${marker} | \`${p.example}\` |`);
420
+ }
421
+ lines.push('');
422
+ // 已提供的参数
423
+ if (Object.keys(req.provided).length > 0) {
424
+ lines.push('### ✅ 已提供');
425
+ lines.push('| 参数 | 值 |');
426
+ lines.push('| :--- | :--- |');
427
+ for (const [k, v] of Object.entries(req.provided)) {
428
+ lines.push(`| ${k} | ${v} |`);
429
+ }
430
+ lines.push('');
431
+ }
432
+ // 可用选项
433
+ if (req.availableOptions) {
434
+ const opts = req.availableOptions;
435
+ if (opts.tasks && opts.tasks.length > 0) {
436
+ lines.push('### 📦 可用的 Task');
437
+ for (const t of opts.tasks)
438
+ lines.push(`- \`${t}\``);
439
+ lines.push('');
440
+ }
441
+ if (opts.iterations && opts.iterations.length > 0) {
442
+ lines.push('### 📅 可用的迭代');
443
+ for (const i of opts.iterations)
444
+ lines.push(`- \`${i}\``);
445
+ lines.push('');
446
+ }
447
+ if (opts.platforms && opts.platforms.length > 0) {
448
+ lines.push('### 📱 可用的平台');
449
+ for (const p of opts.platforms)
450
+ lines.push(`- \`${p}\``);
451
+ lines.push('');
452
+ }
453
+ }
454
+ // 使用示例
455
+ const examples = generateExamples(req.command, req);
456
+ if (examples.length > 0) {
457
+ lines.push('### 💡 使用示例');
458
+ for (const e of examples)
459
+ lines.push(e);
460
+ lines.push('');
461
+ }
462
+ // 推荐命令
463
+ if (req.availableOptions?.tasks && req.availableOptions.tasks.length > 0 && req.availableOptions.iterations) {
464
+ const t = req.availableOptions.tasks[0];
465
+ const i = req.availableOptions.iterations[0] || 'Q1';
466
+ lines.push(`### 🚀 推荐命令(可直接使用)`);
467
+ lines.push(`\`\`\``);
468
+ lines.push(`speccore ${req.command} --prompt -t ${t} -i ${i}`);
469
+ lines.push(`\`\`\``);
470
+ lines.push('');
471
+ }
472
+ lines.push('[/SPECCORE_NEEDS_INFO]');
473
+ process.stdout.write(lines.join('\n'));
474
+ process.exitCode = 11;
475
+ }
476
+ function generateExamples(command, req) {
477
+ const iter = req.provided.iteration || 'Q1';
478
+ const task = req.availableOptions?.tasks?.[0] || 'Task-001';
479
+ switch (command) {
480
+ case 'execute':
481
+ return [
482
+ `- 执行单个任务: \`speccore execute --prompt -t ${task}\``,
483
+ `- 执行全部: \`speccore execute --all --force\``,
484
+ `- 断点续跑: \`speccore execute --resume\``,
485
+ ];
486
+ case 'analyze':
487
+ return [
488
+ `- 分析迭代: \`speccore analyze --prompt -I ${iter}\``,
489
+ `- 分析特定任务: \`speccore analyze --prompt -I ${iter} --task ${task}\``,
490
+ ];
491
+ case 'split':
492
+ return [
493
+ `- 拆分任务: \`speccore iteration split --prompt -I ${iter}\``,
494
+ `- 指定负责人: \`speccore iteration split --prompt -I ${iter} --owner 张三\``,
495
+ ];
496
+ default:
497
+ return [`\`speccore ${command} --prompt ${req.missing.map(m => `<${m}>`).join(' ')}\``];
498
+ }
499
+ }
500
+ //# sourceMappingURL=prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "5.27.33",
3
+ "version": "5.30.2",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,7 +29,8 @@
29
29
  },
30
30
  "files": [
31
31
  "dist",
32
- "bin"
32
+ "bin",
33
+ ".agents"
33
34
  ],
34
35
  "dependencies": {
35
36
  "commander": "^11.1.0",