speccore 7.5.1 → 8.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AAmIA,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;AAuBD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+xBzF"}
1
+ {"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"AAoIA,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;AAuBD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+xBzF"}
@@ -46,6 +46,7 @@ const readline_1 = require("readline");
46
46
  const prompt_builder_1 = require("../../core/prompt-builder");
47
47
  const index_guard_1 = require("../../core/index-guard");
48
48
  const spec_paths_1 = require("../../core/spec-paths");
49
+ const spec_skeleton_1 = require("../../core/spec-skeleton");
49
50
  const questions_1 = require("../../core/questions");
50
51
  const pipeline_engine_1 = require("../../core/pipeline-engine");
51
52
  /**
@@ -1464,6 +1465,10 @@ ${isBk ? apiList : pageList}
1464
1465
  await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'RISK.md'), generateRiskTemplate(section, riskMaterial));
1465
1466
  await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'DEPS.md'), generateDepsTemplate(section, depsMaterial));
1466
1467
  await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'MONITOR.md'), generateMonitorTemplate(section, monitorMaterial));
1468
+ // v8.0.0+: 预创建 REQ.md 和 TECH.md 骨架文件
1469
+ // AI 用 Write 覆盖这些文件,不再自行创建路径(消除路径错误)
1470
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'REQ.md'), `${spec_skeleton_1.SKELETON_MARKER}\n# ${section.name} — ${platformLabel}\n\n> 本文件由 CLI 预创建,请用 Write 工具覆盖为专业需求规格。\n\n## 功能描述\n<!-- AI-FILL: 本端的需求描述 -->\n\n## 验收标准\n<!-- AI-FILL: Given/When/Then 格式 -->\n\n## 业务规则\n<!-- AI-FILL -->\n\n## 边界条件\n<!-- AI-FILL -->\n\n## 异常场景\n<!-- AI-FILL -->\n`);
1471
+ await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'TECH.md'), `${spec_skeleton_1.SKELETON_MARKER}\n# ${section.name} — ${platformLabel} 技术方案\n\n> 本文件由 CLI 预创建,请用 Write 工具覆盖为专业技术方案。\n\n## 接口定义\n<!-- AI-FILL: 请求/响应结构体 -->\n\n## 数据模型\n<!-- AI-FILL: 字段/类型/约束 -->\n\n## 核心逻辑\n<!-- AI-FILL -->\n\n## 依赖说明\n<!-- AI-FILL -->\n`);
1467
1472
  const adr = generateAdr(section);
1468
1473
  if (adr) {
1469
1474
  await (0, fs_extra_1.writeFile)((0, path_1.join)(subtaskDir, 'ADR.md'), adr);
@@ -3728,9 +3733,9 @@ async function buildContentFillingPrompt(iteration, iterationDir, sections, allP
3728
3733
  }
3729
3734
  p += `## 填充规则\n\n`;
3730
3735
  p += `1. 先 Read 子任务目录下的 TASK.md(已有基本信息)和 .meta/feature(功能单元名)\n`;
3731
- p += `2. REQ.md: 基于上方提供的「功能单元相关上下文」,撰写本子任务的需求规格(验收标准、业务规则、边界条件)\n`;
3732
- p += `3. TECH.md: 基于上下文中的接口定义和数据模型,细化本子任务的技术方案\n`;
3733
- p += `4. Write 工具直接写入对应路径\n`;
3736
+ p += `2. REQ.md 和 TECH.md 已由 CLI 预创建(含骨架标记),请用 Write 工具直接覆盖为专业内容\n`;
3737
+ p += `3. REQ.md: 基于上方提供的「功能单元相关上下文」,撰写本子任务的需求规格(验收标准、业务规则、边界条件)\n`;
3738
+ p += `4. TECH.md: 基于上下文中的接口定义和数据模型,细化本子任务的技术方案\n`;
3734
3739
  p += `5. 同一功能模块的各端子任务要保持 API 契约一致(前后端接口签名必须匹配)\n`;
3735
3740
  p += `6. 禁止产出垃圾内容——每个文件必须有实质性专业内容\n`;
3736
3741
  p += `7. REQ.md 必须包含:功能描述、验收标准(Given/When/Then)、业务规则、边界条件、异常场景\n`;
@@ -3739,7 +3744,7 @@ async function buildContentFillingPrompt(iteration, iterationDir, sections, allP
3739
3744
  p += `- 不要创建新目录 — 目录已由 CLI 创建\n`;
3740
3745
  p += `- 不要修改 .meta/ 下的文件\n`;
3741
3746
  p += `- 不要修改 TASK.md(已由 CLI 生成)\n`;
3742
- p += `- 只写 REQ.md 和 TECH.md\n`;
3747
+ p += `- 只覆盖已存在的 REQ.md 和 TECH.md,不要创建新文件\n`;
3743
3748
  p += '\n' + (0, questions_1.buildAutoModeInstruction)('split', iteration) + '\n';
3744
3749
  return p;
3745
3750
  }