speccore 8.3.225 → 8.3.226

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 (47) hide show
  1. package/dist/commands/analyze.d.ts.map +1 -1
  2. package/dist/commands/analyze.js +9 -8
  3. package/dist/commands/analyze.js.map +1 -1
  4. package/dist/commands/doc2spec.d.ts.map +1 -1
  5. package/dist/commands/doc2spec.js +47 -3
  6. package/dist/commands/doc2spec.js.map +1 -1
  7. package/dist/commands/init.js +1 -1
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/iteration/create.js +2 -2
  10. package/dist/commands/iteration/split.d.ts.map +1 -1
  11. package/dist/commands/iteration/split.js +4 -3
  12. package/dist/commands/iteration/split.js.map +1 -1
  13. package/dist/commands/synthesize.d.ts.map +1 -1
  14. package/dist/commands/synthesize.js +7 -5
  15. package/dist/commands/synthesize.js.map +1 -1
  16. package/dist/commands/units.d.ts.map +1 -1
  17. package/dist/commands/units.js +4 -3
  18. package/dist/commands/units.js.map +1 -1
  19. package/dist/core/analyze-context-guard.js +1 -1
  20. package/dist/core/analyze-engine.d.ts.map +1 -1
  21. package/dist/core/analyze-engine.js +4 -2
  22. package/dist/core/analyze-engine.js.map +1 -1
  23. package/dist/core/feature-metadata.d.ts.map +1 -1
  24. package/dist/core/feature-metadata.js +4 -3
  25. package/dist/core/feature-metadata.js.map +1 -1
  26. package/dist/core/feature-source.d.ts +12 -0
  27. package/dist/core/feature-source.d.ts.map +1 -0
  28. package/dist/core/feature-source.js +52 -0
  29. package/dist/core/feature-source.js.map +1 -0
  30. package/dist/core/handoff-generator.d.ts.map +1 -1
  31. package/dist/core/handoff-generator.js +3 -1
  32. package/dist/core/handoff-generator.js.map +1 -1
  33. package/dist/core/module-analyzer.d.ts.map +1 -1
  34. package/dist/core/module-analyzer.js +5 -4
  35. package/dist/core/module-analyzer.js.map +1 -1
  36. package/dist/core/requirement-clarifier.d.ts +1 -1
  37. package/dist/core/requirement-clarifier.d.ts.map +1 -1
  38. package/dist/core/requirement-clarifier.js +3 -2
  39. package/dist/core/requirement-clarifier.js.map +1 -1
  40. package/dist/core/semantic-locator.d.ts.map +1 -1
  41. package/dist/core/semantic-locator.js +2 -1
  42. package/dist/core/semantic-locator.js.map +1 -1
  43. package/dist/core/spec-merger.d.ts +1 -1
  44. package/dist/core/spec-merger.d.ts.map +1 -1
  45. package/dist/core/spec-merger.js +13 -11
  46. package/dist/core/spec-merger.js.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,7 @@ const cleanup_1 = require("./cleanup");
62
62
  const logger_1 = require("../utils/logger");
63
63
  const context_1 = require("../core/context");
64
64
  const task_paths_1 = require("../core/task-paths");
65
+ const feature_source_1 = require("../core/feature-source");
65
66
  const analyze_engine_1 = require("../core/analyze-engine");
66
67
  const fs_extra_2 = require("fs-extra");
67
68
  const prompt_builder_1 = require("../core/prompt-builder");
@@ -510,7 +511,7 @@ async function analyzeCommand(options) {
510
511
  if (!reqModules.includes(moduleName)) {
511
512
  logger_1.logger.warn(`⚠️ 需求文档中未找到功能模块 "${moduleName}"`);
512
513
  logger_1.logger.info(` 需求中已有的模块: ${reqModules.slice(0, 10).join(', ')}${reqModules.length > 10 ? '...' : ''}`);
513
- logger_1.logger.info(` 建议: 先确认模块名称是否正确,或在 010-requirements/features/ 中创建 ${moduleName}/README.md`);
514
+ logger_1.logger.info(` 建议: 先确认模块名称是否正确,或在 010-requirements/features/ 中创建 ${moduleName}/SOURCE.md`);
514
515
  }
515
516
  }
516
517
  logger_1.logger.info(` 涉及端: ${result.involvedPlatforms.join(', ') || '待确定'}`);
@@ -550,7 +551,7 @@ async function analyzeCommand(options) {
550
551
  spinner.start();
551
552
  const result = await (0, analyze_engine_1.analyzeSingleFeature)(iterDir, featureName);
552
553
  if (!result) {
553
- spinner.fail(`未找到功能模块: 010-requirements/features/${featureName}/README.md`);
554
+ spinner.fail(`未找到功能模块: 010-requirements/features/${featureName}/SOURCE.md(旧项目为 README.md)`);
554
555
  return;
555
556
  }
556
557
  spinner.stop(`✅ 局部分析完成: 020-specs/features/${featureName}.md`);
@@ -969,14 +970,14 @@ async function analyzeCommand(options) {
969
970
  const reqRoot = (0, path_1.join)(reqDir, 'REQUIREMENT.md');
970
971
  if (await (0, fs_extra_1.pathExists)(reqRoot))
971
972
  requirements.push(reqRoot);
972
- // 收集 features/*/README.md
973
+ // 收集 features/*/SOURCE.md(v8.3.226+ 语义名,兼容旧 README.md)
973
974
  const featuresDir = (0, path_1.join)(reqDir, 'features');
974
975
  if (await (0, fs_extra_1.pathExists)(featuresDir)) {
975
976
  try {
976
977
  const featureEntries = await (0, fs_extra_2.readdir)(featuresDir, { withFileTypes: true });
977
978
  for (const fe of featureEntries) {
978
979
  if (fe.isDirectory() && !fe.name.startsWith('.')) {
979
- const readmePath = (0, path_1.join)(featuresDir, fe.name, 'README.md');
980
+ const readmePath = await (0, feature_source_1.resolveUnitSourcePath)((0, path_1.join)(featuresDir, fe.name));
980
981
  if (await (0, fs_extra_1.pathExists)(readmePath))
981
982
  requirements.push(readmePath);
982
983
  }
@@ -5457,7 +5458,7 @@ status: "clarified"
5457
5458
  prompt += `3. 读取迭代需求文档(按功能模块组织):\n`;
5458
5459
  prompt += ` a. 先读 010-requirements/INDEX.md — 获取功能模块清单\n`;
5459
5460
  prompt += ` b. **按功能模块逐一读取**:每个功能模块独立分析,不要跨模块混淆\n`;
5460
- prompt += ` - 读取该模块对应的 010-requirements/converted/*.md 或 features/{模块}/README.md\n`;
5461
+ prompt += ` - 读取该模块对应的 010-requirements/converted/*.md 或 features/{模块}/SOURCE.md(旧项目为 README.md)\n`;
5461
5462
  prompt += ` - 读取该模块涉及的原型文件(HTML/图片/链接)\n`;
5462
5463
  prompt += ` c. **文档长度自适应**:如果单个需求文档超过 5000 字,先快速扫描目录和章节标题,标记关键章节,再深入阅读\n`;
5463
5464
  prompt += `4. **按功能模块逐一撰写文档(重要)**:\n`;
@@ -5510,7 +5511,7 @@ status: "clarified"
5510
5511
  prompt += ` - 「来源」:该功能模块在需求文档中的具体位置,用 Markdown 链接格式\n`;
5511
5512
  prompt += ` - 格式:[文档名](相对路径#章节锚点),如 [PRD v2.0](../010-requirements/sources/PRD-v2.0.md#3-2-会议室管理)\n`;
5512
5513
  prompt += ` - 如果模块来自 converted 文档:[xxx需求](../010-requirements/converted/xxx.md#相关章节)\n`;
5513
- prompt += ` - 如果来自 features 目录:[xxx功能](../010-requirements/features/xxx/README.md)\n`;
5514
+ prompt += ` - 如果来自 features 目录:[xxx功能](../010-requirements/features/xxx/SOURCE.md)\n`;
5514
5515
  prompt += ` - 目的是让阅读者能直接点击跳转到原始需求位置\n`;
5515
5516
  prompt += ` - 示例:| M-01 | 会议室档案管理 | room-service, admin-web | 扩展:增加设备管理 | [PRD v2.0](../010-requirements/sources/PRD-v2.0.md#2-1) | 会议室 CRUD、设备管理 |\n`;
5516
5517
  prompt += ` - split 命令将读取「涉及端」列来决定创建哪些端的子任务目录\n`;
@@ -6121,7 +6122,7 @@ async function buildClarifyPhasePrompt(iteration) {
6121
6122
  prompt += `1. \`010-requirements/INDEX.md\` — 需求全貌\n`;
6122
6123
  prompt += `2. \`010-requirements/sources/*.md\` — 原始需求(主要依据)\n`;
6123
6124
  prompt += `3. \`010-requirements/converted/*.md\` — 已转换文档\n`;
6124
- prompt += `4. \`010-requirements/features/*/README.md\` — 功能级补充\n`;
6125
+ prompt += `4. \`010-requirements/features/*/SOURCE.md\`(旧项目为 README.md) — 功能级补充\n`;
6125
6126
  prompt += `5. \`010-requirements/prototypes/\` — 原型文件\n\n`;
6126
6127
  // v8.3.160+ 修复:列出实际扫描到的源文档清单,明确每份文档独立澄清
6127
6128
  if (docPaths.length > 0) {
@@ -6395,7 +6396,7 @@ async function extractIterationUnits(iterDir) {
6395
6396
  const entries = await (0, fs_extra_2.readdir)(featuresDir, { withFileTypes: true });
6396
6397
  const dirs = entries.filter(e => e.isDirectory() && !e.name.startsWith('.') && !e.name.startsWith('_'));
6397
6398
  for (const dir of dirs) {
6398
- const readmePath = (0, path_1.join)(featuresDir, dir.name, 'README.md');
6399
+ const readmePath = await (0, feature_source_1.resolveUnitSourcePath)((0, path_1.join)(featuresDir, dir.name));
6399
6400
  let content = '';
6400
6401
  if (await (0, fs_extra_1.pathExists)(readmePath)) {
6401
6402
  content = (await (0, fs_extra_2.readFile)(readmePath, 'utf-8')).slice(0, 500);