speccore 8.3.221 → 8.3.223
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +29 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +491 -238
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/change.js +1 -0
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/doc2spec.d.ts.map +1 -1
- package/dist/commands/doc2spec.js +205 -95
- package/dist/commands/doc2spec.js.map +1 -1
- package/dist/commands/execute.js +4 -4
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +29 -182
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +67 -11
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/req-doc.d.ts.map +1 -1
- package/dist/commands/req-doc.js +122 -14
- package/dist/commands/req-doc.js.map +1 -1
- package/dist/commands/retro.d.ts +1 -1
- package/dist/commands/retro.d.ts.map +1 -1
- package/dist/commands/retro.js +87 -8
- package/dist/commands/retro.js.map +1 -1
- package/dist/commands/run.d.ts +1 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +182 -14
- package/dist/commands/run.js.map +1 -1
- package/dist/core/agent-adapter.d.ts.map +1 -1
- package/dist/core/agent-adapter.js +13 -6
- package/dist/core/agent-adapter.js.map +1 -1
- package/dist/core/context-budget.d.ts +3 -2
- package/dist/core/context-budget.d.ts.map +1 -1
- package/dist/core/context-budget.js +16 -3
- package/dist/core/context-budget.js.map +1 -1
- package/dist/core/dispatch-loop.d.ts +81 -0
- package/dist/core/dispatch-loop.d.ts.map +1 -0
- package/dist/core/dispatch-loop.js +152 -0
- package/dist/core/dispatch-loop.js.map +1 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +20 -0
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/requirement-clarifier.d.ts.map +1 -1
- package/dist/core/requirement-clarifier.js +36 -0
- package/dist/core/requirement-clarifier.js.map +1 -1
- package/dist/core/state.d.ts +3 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +19 -1
- package/dist/core/state.js.map +1 -1
- package/dist/core/unit-context-assembler.d.ts +5 -0
- package/dist/core/unit-context-assembler.d.ts.map +1 -1
- package/dist/core/unit-context-assembler.js +225 -9
- package/dist/core/unit-context-assembler.js.map +1 -1
- package/package.json +2 -2
package/dist/commands/retro.js
CHANGED
|
@@ -45,6 +45,7 @@ const fs_extra_1 = require("fs-extra");
|
|
|
45
45
|
const logger_1 = require("../utils/logger");
|
|
46
46
|
const context_1 = require("../core/context");
|
|
47
47
|
const issue_tracker_1 = require("../core/issue-tracker");
|
|
48
|
+
const task_paths_1 = require("../core/task-paths");
|
|
48
49
|
/**
|
|
49
50
|
* 解析任务目录基础路径:优先 030-tasks/,扫描任务目录
|
|
50
51
|
*/
|
|
@@ -52,16 +53,79 @@ async function resolveTaskBase(iterDir) {
|
|
|
52
53
|
const tasksDir = (0, path_1.join)(iterDir, '030-tasks');
|
|
53
54
|
return (await (0, fs_extra_1.pathExists)(tasksDir)) ? tasksDir : iterDir;
|
|
54
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* v8.3.223+: 递归查找新结构子任务路径(030-tasks/{type}/Task-XXX/{端}/{subtaskId}/)。
|
|
58
|
+
* 修复:旧逻辑用扁平 join(taskBase, taskId) 生成 RETRO.md,对子任务 ID 会在
|
|
59
|
+
* 030-tasks 根下 ensureDir 创建游离垃圾目录(仅含 RETRO.md,无任务产物),
|
|
60
|
+
* 后续被 scanTasks/run 误判为待办任务。
|
|
61
|
+
*/
|
|
62
|
+
async function findNestedSubtaskDir(tasksRoot, taskId) {
|
|
63
|
+
if (!(await (0, fs_extra_1.pathExists)(tasksRoot)))
|
|
64
|
+
return null;
|
|
65
|
+
for (const type of task_paths_1.TASK_TYPES) {
|
|
66
|
+
const typeDir = (0, path_1.join)(tasksRoot, type);
|
|
67
|
+
if (!(await (0, fs_extra_1.pathExists)(typeDir)))
|
|
68
|
+
continue;
|
|
69
|
+
const parents = await (0, fs_extra_1.readdir)(typeDir, { withFileTypes: true });
|
|
70
|
+
for (const p of parents) {
|
|
71
|
+
if (!p.isDirectory() || !p.name.startsWith('Task-'))
|
|
72
|
+
continue;
|
|
73
|
+
const parentPath = (0, path_1.join)(typeDir, p.name);
|
|
74
|
+
const platformDirs = await (0, fs_extra_1.readdir)(parentPath, { withFileTypes: true }).catch(() => []);
|
|
75
|
+
for (const pd of platformDirs) {
|
|
76
|
+
if (!pd.isDirectory() || pd.name.startsWith('.') || pd.name.startsWith('_') || pd.name.startsWith('0'))
|
|
77
|
+
continue;
|
|
78
|
+
const sub = (0, path_1.join)(parentPath, pd.name, taskId);
|
|
79
|
+
if (await (0, fs_extra_1.pathExists)(sub))
|
|
80
|
+
return sub;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* v8.3.223+: 解析 RETRO 目标任务目录——新结构优先(嵌套子任务 → 类型父任务 → 旧扁平)。
|
|
88
|
+
* 返回 null 表示任务不存在,调用方不应写入 RETRO.md。
|
|
89
|
+
*/
|
|
90
|
+
async function resolveRetroTaskDir(taskBase, taskId) {
|
|
91
|
+
const nested = await findNestedSubtaskDir(taskBase, taskId);
|
|
92
|
+
if (nested)
|
|
93
|
+
return nested;
|
|
94
|
+
const found = await (0, task_paths_1.findTaskDir)(taskBase, taskId);
|
|
95
|
+
if (found) {
|
|
96
|
+
// 旧扁平路径可能是历史 bug 产生的游离目录(仅 RETRO.md)——校验任务产物后决定是否可用
|
|
97
|
+
const flat = (0, path_1.join)(taskBase, taskId);
|
|
98
|
+
if (found !== flat)
|
|
99
|
+
return found;
|
|
100
|
+
try {
|
|
101
|
+
const names = (await (0, fs_extra_1.readdir)(found)).map((n) => n.toLowerCase());
|
|
102
|
+
const hasArtifacts = names.includes('.meta') || names.includes('task.md')
|
|
103
|
+
|| names.includes('00-specs') || names.includes('_shared');
|
|
104
|
+
if (hasArtifacts)
|
|
105
|
+
return found;
|
|
106
|
+
}
|
|
107
|
+
catch { /* ignore */ }
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
55
112
|
async function retroCommand(options) {
|
|
56
113
|
const iteration = await (0, context_1.getDefaultIteration)(options.iteration);
|
|
57
114
|
const iterDir = iteration ? await (0, context_1.getIterationDir)(iteration) : '';
|
|
58
115
|
// 确定要生成回顾的任务列表
|
|
59
116
|
let taskIds = [];
|
|
117
|
+
// v8.3.223+: 记录 scanTasks 返回的真实目录路径(TASK.md 内 ID 可能与目录名不一致)
|
|
118
|
+
const taskPathMap = new Map();
|
|
60
119
|
if (options.all && iterDir) {
|
|
61
120
|
try {
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
121
|
+
// v8.3.223+: 复用 scanTasks(支持新旧布局,且过滤无任务产物的游离目录)
|
|
122
|
+
const { scanTasks } = await Promise.resolve().then(() => __importStar(require('../core/state')));
|
|
123
|
+
const tasks = await scanTasks(iteration);
|
|
124
|
+
taskIds = tasks.map(t => t.id);
|
|
125
|
+
for (const t of tasks) {
|
|
126
|
+
if (t.path)
|
|
127
|
+
taskPathMap.set(t.id, t.path);
|
|
128
|
+
}
|
|
65
129
|
}
|
|
66
130
|
catch { }
|
|
67
131
|
}
|
|
@@ -98,7 +162,9 @@ async function retroCommand(options) {
|
|
|
98
162
|
}
|
|
99
163
|
// 逐个生成报告
|
|
100
164
|
for (const taskId of taskIds) {
|
|
101
|
-
const report = await generateReport(taskId, iterDir);
|
|
165
|
+
const report = await generateReport(taskId, iterDir, taskPathMap.get(taskId));
|
|
166
|
+
if (!report)
|
|
167
|
+
continue;
|
|
102
168
|
if (!process.stdout.isTTY) {
|
|
103
169
|
const html = renderRetroHtml(report);
|
|
104
170
|
const outPath = options.output || (0, path_1.join)(process.cwd(), 'outputs', `speccore-retro-${taskId}.html`);
|
|
@@ -122,10 +188,19 @@ async function retroCommand(options) {
|
|
|
122
188
|
}
|
|
123
189
|
logger_1.logger.info(`\n📊 共生成 ${taskIds.length} 份回顾报告`);
|
|
124
190
|
}
|
|
125
|
-
async function generateReport(taskId, iterDir) {
|
|
191
|
+
async function generateReport(taskId, iterDir, taskDirHint) {
|
|
126
192
|
const taskBase = await resolveTaskBase(iterDir);
|
|
127
|
-
|
|
193
|
+
// v8.3.223+: 优先使用 scanTasks 记录的真实目录;否则新结构优先解析。
|
|
194
|
+
// 解析不到说明任务目录不存在——不 fallback 到扁平 join,防止在 030-tasks 根下制造游离目录。
|
|
195
|
+
const taskDir = (taskDirHint && await (0, fs_extra_1.pathExists)(taskDirHint))
|
|
196
|
+
? taskDirHint
|
|
197
|
+
: await resolveRetroTaskDir(taskBase, taskId);
|
|
128
198
|
const now = new Date().toISOString().split('T')[0];
|
|
199
|
+
// v8.3.223+: 任务目录不存在时直接跳过(旧逻辑 ensureDir 会在 030-tasks 根下制造游离目录)
|
|
200
|
+
if (!taskDir) {
|
|
201
|
+
logger_1.logger.warn(`⏭️ 任务目录不存在,跳过 RETRO.md: ${taskId}`);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
129
204
|
let filesChanged = 0;
|
|
130
205
|
let validationPassed = false;
|
|
131
206
|
if (await (0, fs_extra_1.pathExists)(taskDir)) {
|
|
@@ -235,8 +310,9 @@ async function generateReport(taskId, iterDir) {
|
|
|
235
310
|
verifyResult,
|
|
236
311
|
};
|
|
237
312
|
// 持久化 RETRO.md 到任务目录
|
|
238
|
-
|
|
239
|
-
|
|
313
|
+
// v8.3.223+: 任务目录不存在时不落盘(旧逻辑 ensureDir 无条件创建目录,
|
|
314
|
+
// 对子任务 ID 会在 030-tasks 根下制造仅含 RETRO.md 的游离垃圾目录)
|
|
315
|
+
if (iterDir && await (0, fs_extra_1.pathExists)(iterDir) && await (0, fs_extra_1.pathExists)(taskDir)) {
|
|
240
316
|
const retroMd = [
|
|
241
317
|
`# 任务回顾 · ${taskId}`,
|
|
242
318
|
'',
|
|
@@ -273,6 +349,9 @@ async function generateReport(taskId, iterDir) {
|
|
|
273
349
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'RETRO.md'), retroMd);
|
|
274
350
|
logger_1.logger.info(`📄 已生成: ${(0, path_1.join)(taskDir, 'RETRO.md')}`);
|
|
275
351
|
}
|
|
352
|
+
else {
|
|
353
|
+
logger_1.logger.warn(`⏭️ 任务目录不存在,跳过 RETRO.md: ${taskId}`);
|
|
354
|
+
}
|
|
276
355
|
return report;
|
|
277
356
|
}
|
|
278
357
|
function renderRetroHtml(report) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retro.js","sourceRoot":"","sources":["../../src/commands/retro.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"retro.js","sourceRoot":"","sources":["../../src/commands/retro.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAqCD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
|
package/dist/commands/run.js
CHANGED
|
@@ -143,6 +143,107 @@ async function autoPipeline(options) {
|
|
|
143
143
|
}
|
|
144
144
|
const iterDir = `Iteration-${iteration}`;
|
|
145
145
|
logger_1.logger.info(`\n🤖 Auto-pipeline: ${iteration}\n`);
|
|
146
|
+
// v8.3.223+: 检测需求文档是否已导入(converted/、sources/ 下的文档或 REQUIREMENT.md 有实质内容)
|
|
147
|
+
const hasRequirementDocs = async () => {
|
|
148
|
+
const reqDir = (0, path_1.join)(iterDir, '010-requirements');
|
|
149
|
+
const reqMd = (0, path_1.join)(reqDir, 'REQUIREMENT.md');
|
|
150
|
+
if (await (0, fs_extra_1.pathExists)(reqMd)) {
|
|
151
|
+
try {
|
|
152
|
+
const content = await (0, fs_extra_1.readFile)(reqMd, 'utf-8');
|
|
153
|
+
if (content.replace(/\s/g, '').length > 100)
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch { /* ignore */ }
|
|
157
|
+
}
|
|
158
|
+
for (const d of ['converted', 'sources']) {
|
|
159
|
+
const dir = (0, path_1.join)(reqDir, d);
|
|
160
|
+
if (await (0, fs_extra_1.pathExists)(dir)) {
|
|
161
|
+
const entries = await (0, fs_extra_1.readdir)(dir).catch(() => []);
|
|
162
|
+
if (entries.some((e) => /\.(md|docx|doc|pdf)$/i.test(e.name)))
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
};
|
|
168
|
+
// v8.3.223+: 阶段前置依赖表——上游依赖未满足时阻断流水线,防止下游空跑产出垃圾产物。
|
|
169
|
+
// 历史教训:`--from taskify` 跳过 split-units 后,features/ 为空仍按需求文档粒度拆分,
|
|
170
|
+
// AI 把骨架「📋 质量标准」标题当功能单元,产出 Task-NNN-requirement-md 垃圾任务。
|
|
171
|
+
// hard=true 缺失时硬阻断(🛑 + 补救命令);hard=false 缺失时警告继续。--no-dep-check 可全部跳过。
|
|
172
|
+
const PRECONDITIONS = {
|
|
173
|
+
'split-units': {
|
|
174
|
+
desc: '存在可切分的需求文档(converted/、sources/ 或 REQUIREMENT.md 有实质内容)',
|
|
175
|
+
impact: '无需求文档则切分功能单元无从谈起,下游 analyze 拿不到输入',
|
|
176
|
+
remedy: `先导入需求: speccore doc2spec -I ${iteration}(或 speccore run --from doc2spec -I ${iteration})`,
|
|
177
|
+
bypassNote: '需求已由手动方式准备',
|
|
178
|
+
hard: true,
|
|
179
|
+
check: hasRequirementDocs,
|
|
180
|
+
},
|
|
181
|
+
analyze: {
|
|
182
|
+
desc: '存在需求文档(converted/、sources/ 或 REQUIREMENT.md 有实质内容)',
|
|
183
|
+
impact: '无需求文档 analyze 无输入,会产出空 Spec 骨架',
|
|
184
|
+
remedy: `先导入需求: speccore doc2spec -I ${iteration}`,
|
|
185
|
+
bypassNote: '需求已由手动方式准备',
|
|
186
|
+
hard: true,
|
|
187
|
+
check: hasRequirementDocs,
|
|
188
|
+
},
|
|
189
|
+
taskify: {
|
|
190
|
+
desc: '功能单元已切分(010-requirements/features/ 下存在功能单元目录)',
|
|
191
|
+
impact: '未切分将按需求文档粒度拆分,任务粒度过粗;AI 易把骨架引导标题(质量标准/写作要求)误当功能单元,产出垃圾任务',
|
|
192
|
+
remedy: `先切分功能单元: speccore doc2spec --split -I ${iteration}(或 speccore run --from split-units -I ${iteration})`,
|
|
193
|
+
bypassNote: '确认按需求文档粒度拆分(小型项目)',
|
|
194
|
+
hard: true,
|
|
195
|
+
check: async () => await hasFeatureDirs(iterDir),
|
|
196
|
+
},
|
|
197
|
+
plan: {
|
|
198
|
+
desc: '开发任务已拆分(030-tasks 下存在真实任务)',
|
|
199
|
+
impact: '无任务无法生成执行计划,后续 execute 空转假成功',
|
|
200
|
+
remedy: `先拆分任务: speccore iteration taskify -I ${iteration} --force(或 speccore run --from taskify -I ${iteration})`,
|
|
201
|
+
bypassNote: '任务目录由手动创建',
|
|
202
|
+
hard: true,
|
|
203
|
+
check: async () => {
|
|
204
|
+
try {
|
|
205
|
+
const { scanTasks } = await Promise.resolve().then(() => __importStar(require('../core/state')));
|
|
206
|
+
return (await scanTasks(iteration)).length > 0;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
execute: {
|
|
214
|
+
desc: '开发任务已拆分(030-tasks 下存在真实任务)',
|
|
215
|
+
impact: '无任务 execute 0 秒空转假成功,用户误以为代码已开发',
|
|
216
|
+
remedy: `先拆分任务: speccore iteration taskify -I ${iteration} --force(或 speccore run --from taskify -I ${iteration})`,
|
|
217
|
+
bypassNote: '任务目录由手动创建',
|
|
218
|
+
hard: true,
|
|
219
|
+
check: async () => {
|
|
220
|
+
try {
|
|
221
|
+
const { scanTasks } = await Promise.resolve().then(() => __importStar(require('../core/state')));
|
|
222
|
+
return (await scanTasks(iteration)).length > 0;
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
verify: {
|
|
230
|
+
desc: '存在已完成的开发任务(代码已生成)',
|
|
231
|
+
impact: '无任务产物 verify 没有验证对象',
|
|
232
|
+
remedy: `先执行开发: speccore run --from execute -I ${iteration}`,
|
|
233
|
+
bypassNote: '跳过验证',
|
|
234
|
+
hard: false,
|
|
235
|
+
check: async () => {
|
|
236
|
+
try {
|
|
237
|
+
const { scanTasks } = await Promise.resolve().then(() => __importStar(require('../core/state')));
|
|
238
|
+
const tasks = await scanTasks(iteration);
|
|
239
|
+
return tasks.length > 0 && tasks.some(t => t.status === 'completed');
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
};
|
|
146
247
|
// v8.3.190+: 读取 optional_steps(off 跳过)+ pipelines(命名流水线)配置
|
|
147
248
|
let optionalSteps = {};
|
|
148
249
|
let pipelinesConfig = {};
|
|
@@ -272,6 +373,12 @@ async function autoPipeline(options) {
|
|
|
272
373
|
endIdx = sorted[sorted.length - 1];
|
|
273
374
|
logger_1.logger.info(`🎯 自动步骤: ${stepKeys.join(' → ')}\n`);
|
|
274
375
|
}
|
|
376
|
+
// v8.3.223+: 提示被跳过的上游阶段(--from 起点之前的阶段不会执行,依赖需已满足)
|
|
377
|
+
if (startIdx > 0) {
|
|
378
|
+
const skipped = PIPELINE_PHASES.slice(0, startIdx).map(p => p.key);
|
|
379
|
+
logger_1.logger.warn(`⏭️ 从 ${PIPELINE_PHASES[startIdx].key} 开始,上游阶段已跳过: ${skipped.join(' → ')}`);
|
|
380
|
+
logger_1.logger.warn(` 每个阶段执行前会校验前置依赖,缺失时硬阻断(--no-dep-check 可强制跳过检查)\n`);
|
|
381
|
+
}
|
|
275
382
|
// ── 逐步执行 ──
|
|
276
383
|
let pausedGate = null;
|
|
277
384
|
let prevLayer = '';
|
|
@@ -284,6 +391,30 @@ async function autoPipeline(options) {
|
|
|
284
391
|
? '\n────────── 🏗️ 准备层(初始化 + 需求入口)──────────'
|
|
285
392
|
: '\n────────── 🚀 主流程(分析→拆分→执行→验证→部署→归档→导出)──────────');
|
|
286
393
|
}
|
|
394
|
+
// v8.3.223+: 阶段前置依赖校验——上游依赖未满足时阻断流水线。
|
|
395
|
+
// 解决「--from taskify 跳过 split-units 仍继续拆分」类问题:依赖缺失必须停下并给补救命令。
|
|
396
|
+
// 注意:必须在 review 闸口软停之前——依赖不满足时应第一时间硬阻断,
|
|
397
|
+
// 而不是让用户先在闸口确认、之后才被告知依赖缺失。
|
|
398
|
+
if (!options.noDepCheck) {
|
|
399
|
+
const pre = PRECONDITIONS[phase.key];
|
|
400
|
+
if (pre) {
|
|
401
|
+
const preOk = await pre.check();
|
|
402
|
+
if (!preOk) {
|
|
403
|
+
if (pre.hard) {
|
|
404
|
+
logger_1.logger.error(`\n🛑 [SPECCORE_GATE] 阶段前置依赖未满足: ${phase.key}`);
|
|
405
|
+
logger_1.logger.error(` 缺少: ${pre.desc}`);
|
|
406
|
+
logger_1.logger.error(` 影响: ${pre.impact}`);
|
|
407
|
+
logger_1.logger.error(` 补救: ${pre.remedy}`);
|
|
408
|
+
logger_1.logger.error(` 继续: 补齐依赖后重新执行 speccore run --from ${phase.key} -I ${iteration}`);
|
|
409
|
+
logger_1.logger.error(` 绕过: 如确需跳过检查(${pre.bypassNote}),加 --no-dep-check 显式继续\n`);
|
|
410
|
+
process.exitCode = 1;
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
logger_1.logger.warn(` ⚠️ 前置依赖建议: ${pre.desc}`);
|
|
414
|
+
logger_1.logger.warn(` ${pre.remedy}(软依赖,继续执行...)`);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
287
418
|
// v8.3.184+: review 闸口软停(功能开发质量底线)
|
|
288
419
|
const gate = GATES[phase.key];
|
|
289
420
|
if (gate) {
|
|
@@ -352,12 +483,17 @@ async function autoPipeline(options) {
|
|
|
352
483
|
// v8.3.191+: 切分功能单元(结构化,独立于澄清)
|
|
353
484
|
// 已切分(features/ 非空)则跳过;否则对 converted/ 和 REQUIREMENT.md 文档切分
|
|
354
485
|
const featuresDir = (0, path_1.join)(iterDir, '010-requirements', 'features');
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
486
|
+
// v8.3.222+: 统计 features/ 一级子目录(功能单元)数,排除 . / _ 开头系统目录
|
|
487
|
+
const countFeatureDirs = async () => {
|
|
488
|
+
try {
|
|
489
|
+
const entries = await (0, fs_extra_1.readdir)(featuresDir, { withFileTypes: true });
|
|
490
|
+
return entries.filter((e) => e.isDirectory() && !e.name.startsWith('.') && !e.name.startsWith('_')).length;
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
return 0;
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
let hasFeatures = (await countFeatureDirs()) > 0;
|
|
361
497
|
if (hasFeatures) {
|
|
362
498
|
logger_1.logger.info(' ✅ 功能单元已切分,跳过');
|
|
363
499
|
phaseStatus = 'skipped';
|
|
@@ -381,23 +517,49 @@ async function autoPipeline(options) {
|
|
|
381
517
|
phaseMessage = '无需求文档可切分';
|
|
382
518
|
break;
|
|
383
519
|
}
|
|
520
|
+
// v8.3.222+: 切分前统计需求文档的功能单元候选(## 二级标题数),用于切分后覆盖验证
|
|
521
|
+
let candidateUnits = 0;
|
|
522
|
+
for (const doc of docsToSplit) {
|
|
523
|
+
try {
|
|
524
|
+
const c = await (0, fs_extra_1.readFile)(doc, 'utf-8');
|
|
525
|
+
const h2 = c.split('\n').filter(l => /^##\s+.+/.test(l));
|
|
526
|
+
candidateUnits += h2.length;
|
|
527
|
+
}
|
|
528
|
+
catch { /* ignore */ }
|
|
529
|
+
}
|
|
384
530
|
const { splitDocumentToUnits } = await Promise.resolve().then(() => __importStar(require('./doc2spec')));
|
|
385
|
-
let written = 0;
|
|
386
531
|
for (const doc of docsToSplit) {
|
|
387
532
|
try {
|
|
388
533
|
await splitDocumentToUnits(iterDir, doc, '', (0, path_1.basename)(doc));
|
|
389
|
-
written++;
|
|
390
534
|
}
|
|
391
535
|
catch (e) {
|
|
392
536
|
logger_1.logger.warn(` ⚠️ 切分失败: ${(0, path_1.basename)(doc)} — ${e?.message || e}`);
|
|
393
537
|
}
|
|
394
538
|
}
|
|
395
|
-
|
|
539
|
+
// v8.3.222+: 切分结果验证——以「实际产出的功能单元目录数」为准,而非「调用次数」。
|
|
540
|
+
// 修复「切分完成 4/4 但 features/ 一个单元都没产出」的假完成。
|
|
541
|
+
const producedUnits = await countFeatureDirs();
|
|
542
|
+
logger_1.logger.info(` 🔪 切分功能单元: 实际产出 ${producedUnits} 个功能单元(${docsToSplit.length} 个需求文档,${candidateUnits} 个候选章节)`);
|
|
543
|
+
if (producedUnits === 0) {
|
|
544
|
+
logger_1.logger.error(`\n🛑 [SPECCORE_GATE] 切分功能单元失败——features/ 未产出任何功能单元`);
|
|
545
|
+
logger_1.logger.error(' 需求文档可能不含可识别的功能单元章节(## 二级标题),或切分逻辑未生效。');
|
|
546
|
+
logger_1.logger.error(` 涉及文档: ${docsToSplit.map(d => (0, path_1.basename)(d)).join(', ')}`);
|
|
547
|
+
logger_1.logger.error(' 功能单元应体现为需求文档的「## 章节」(如 ## 会议室管理、## 预订管理)。');
|
|
548
|
+
process.exitCode = 1;
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
// v8.3.222+: 覆盖验证——产出数明显少于候选章节数时警告(可能漏切),不阻断(AI 语义合并是合理的)
|
|
552
|
+
if (candidateUnits > 0 && producedUnits < Math.floor(candidateUnits * 0.5)) {
|
|
553
|
+
logger_1.logger.warn(` ⚠️ 功能单元产出 ${producedUnits} 个,候选章节 ${candidateUnits} 个,可能漏切(部分 ## 章节被合并或未识别)`);
|
|
554
|
+
logger_1.logger.warn(` 如需完整拆分,可检查 features/ 是否覆盖所有功能章节,或手动补切。`);
|
|
555
|
+
}
|
|
396
556
|
break;
|
|
397
557
|
}
|
|
398
558
|
case 'analyze': {
|
|
399
559
|
const analysis = (0, path_1.join)(iterDir, '020-specs', 'ANALYSIS.md');
|
|
400
|
-
|
|
560
|
+
// v8.3.223+: 修复复制粘贴 bug——techSpec 原指向 ANALYSIS.md,
|
|
561
|
+
// 与 analysis 同文件导致技术方案校验形同虚设,应指向 TECH.md
|
|
562
|
+
const techSpec = (0, path_1.join)(iterDir, '020-specs', 'TECH.md');
|
|
401
563
|
let needsAnalysis = !(await (0, fs_extra_1.pathExists)(analysis));
|
|
402
564
|
let needsSpecs = false;
|
|
403
565
|
if (!needsAnalysis) {
|
|
@@ -533,10 +695,14 @@ async function autoPipeline(options) {
|
|
|
533
695
|
process.exitCode = 1;
|
|
534
696
|
return;
|
|
535
697
|
}
|
|
698
|
+
// v8.3.223+: 功能单元切分校验已提升到阶段级前置依赖检查(PRECONDITIONS.taskify,硬阻断),
|
|
699
|
+
// 此处不再重复 warn——只有 --no-dep-check 逃生舱时才可能走到这且 features/ 为空。
|
|
700
|
+
// v8.3.223+: 改用 scanTasks 判断任务是否已拆分——游离目录(无 .meta/TASK.md)
|
|
701
|
+
// 不再误判为已拆分(旧逻辑只看 030-tasks 根下 Task- 前缀目录,垃圾目录导致 taskify 假跳过)
|
|
536
702
|
let hasTasks = false;
|
|
537
703
|
try {
|
|
538
|
-
const
|
|
539
|
-
hasTasks =
|
|
704
|
+
const { scanTasks } = await Promise.resolve().then(() => __importStar(require('../core/state')));
|
|
705
|
+
hasTasks = (await scanTasks(iteration)).length > 0;
|
|
540
706
|
}
|
|
541
707
|
catch { }
|
|
542
708
|
if (!hasTasks) {
|
|
@@ -580,7 +746,8 @@ async function autoPipeline(options) {
|
|
|
580
746
|
logger_1.logger.info(' ✅ 执行计划已存在,跳过');
|
|
581
747
|
}
|
|
582
748
|
else {
|
|
583
|
-
|
|
749
|
+
// v8.3.223+: plan 命令无 --force 选项,此前调用必然报 unknown option 失败
|
|
750
|
+
(0, child_process_1.execSync)(`speccore plan -i ${iteration}`, { stdio: 'inherit' });
|
|
584
751
|
}
|
|
585
752
|
break;
|
|
586
753
|
}
|
|
@@ -597,7 +764,8 @@ async function autoPipeline(options) {
|
|
|
597
764
|
logger_1.logger.info(' ✅ 所有任务已完成,跳过 execute');
|
|
598
765
|
}
|
|
599
766
|
else {
|
|
600
|
-
|
|
767
|
+
// v8.3.223+: --auto 仅执行第一个待执行任务,必须加 --all 覆盖全部 pending
|
|
768
|
+
(0, child_process_1.execSync)(`speccore execute --auto --all -i ${iteration}`, { stdio: 'inherit' });
|
|
601
769
|
}
|
|
602
770
|
break;
|
|
603
771
|
}
|