speccore 8.3.247 → 8.3.249
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/.agents/skills/spec-once/SKILL.md +5 -4
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +72 -57
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +21 -1
- package/dist/commands/iteration/split.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAqLD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAorCzF"}
|
|
@@ -235,13 +235,33 @@ async function preSplitGate(iterationDir) {
|
|
|
235
235
|
level: 'block',
|
|
236
236
|
});
|
|
237
237
|
// v8.3.221+: 检查全局 ANALYSIS.md(阻塞级——功能分析,骨架说明 analyze 未落盘)
|
|
238
|
+
// v8.3.248+: 模块级回退——v8.3.238 后 analyze 指示 AI 把 ANALYSIS.md 写在 {feature}/overview/ 下
|
|
239
|
+
// (全局 overview 只留索引类文档),若仍硬性要求全局文件,新流程将永远阻塞无法拆分。
|
|
240
|
+
// 全局缺失/骨架时,任一功能模块的 overview/ANALYSIS.md 非骨架即视为分析已落盘。
|
|
238
241
|
const analysisGatePath = (0, path_1.join)(specDir, spec_paths_1.GLOBAL_SPECS_DIR, 'ANALYSIS.md');
|
|
239
|
-
|
|
242
|
+
let analysisGateExists = await (0, fs_extra_1.pathExists)(analysisGatePath);
|
|
240
243
|
let analysisGateIsSkeleton = false;
|
|
241
244
|
if (analysisGateExists) {
|
|
242
245
|
const ac = await (0, fs_extra_1.readFile)(analysisGatePath, 'utf-8');
|
|
243
246
|
analysisGateIsSkeleton = ac.includes('<!-- SPEC-SKELETON -->') || ac.trim().length < 100;
|
|
244
247
|
}
|
|
248
|
+
if (!analysisGateExists || analysisGateIsSkeleton) {
|
|
249
|
+
try {
|
|
250
|
+
const fList = await (0, spec_paths_1.parseFeatureList)(iterationDir);
|
|
251
|
+
for (const f of fList) {
|
|
252
|
+
const fAnalysisPath = (0, path_1.join)(specDir, f, 'overview', 'ANALYSIS.md');
|
|
253
|
+
if (!(await (0, fs_extra_1.pathExists)(fAnalysisPath)))
|
|
254
|
+
continue;
|
|
255
|
+
const c = await (0, fs_extra_1.readFile)(fAnalysisPath, 'utf-8');
|
|
256
|
+
if (!c.includes('<!-- SPEC-SKELETON -->') && c.trim().length >= 100) {
|
|
257
|
+
analysisGateExists = true;
|
|
258
|
+
analysisGateIsSkeleton = false;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch { /* 回退失败保持原判定 */ }
|
|
264
|
+
}
|
|
245
265
|
items.push({
|
|
246
266
|
path: analysisGatePath,
|
|
247
267
|
name: 'ANALYSIS.md',
|