speccore 7.3.1 → 7.4.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.
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.writeQuestions = writeQuestions;
4
4
  exports.appendQuestions = appendQuestions;
5
+ exports.extractQuestionsFromText = extractQuestionsFromText;
6
+ exports.collectQuestionFiles = collectQuestionFiles;
5
7
  exports.isAutoMode = isAutoMode;
6
8
  exports.buildAutoModeInstruction = buildAutoModeInstruction;
7
9
  /**
@@ -75,6 +77,54 @@ async function appendQuestions(existingFilePath, questions) {
75
77
  await (0, fs_extra_1.writeFile)(existingFilePath, existing + addition, 'utf-8');
76
78
  logger_1.logger.info(` 📝 追加 ${questions.length} 项疑问 → ${existingFilePath}`);
77
79
  }
80
+ /**
81
+ * 从 AI 输出文本中提取疑问条目
82
+ *
83
+ * 匹配格式:
84
+ * ## 疑问 N — 分类标签
85
+ * - **问题**: ...
86
+ * - **判断**: ...
87
+ * - **建议**: ...
88
+ */
89
+ function extractQuestionsFromText(text) {
90
+ const questions = [];
91
+ // 匹配 "## 疑问 N — 分类" 或 "## 疑问 N - 分类"
92
+ const questionBlocks = text.split(/(?=^## \s*疑问\s+\d+)/m);
93
+ for (const block of questionBlocks) {
94
+ if (!block.match(/^## \s*疑问\s+\d+/))
95
+ continue;
96
+ // 提取分类标签
97
+ const categoryMatch = block.match(/^## \s*疑问\s+\d+\s*[—\-–]\s*(.+)$/m);
98
+ const category = categoryMatch ? categoryMatch[1].trim() : '未分类';
99
+ // 提取问题/判断/建议
100
+ const questionMatch = block.match(/\*\*问题\*\*[::]\s*(.+)/);
101
+ const decisionMatch = block.match(/\*\*判断\*\*[::]\s*(.+)/);
102
+ const suggestionMatch = block.match(/\*\*建议\*\*[::]\s*(.+)/);
103
+ if (questionMatch && decisionMatch) {
104
+ questions.push({
105
+ category,
106
+ question: questionMatch[1].trim(),
107
+ decision: decisionMatch[1].trim(),
108
+ suggestion: suggestionMatch ? suggestionMatch[1].trim() : undefined,
109
+ });
110
+ }
111
+ }
112
+ return questions;
113
+ }
114
+ /**
115
+ * 收集 .speccore/questions/ 目录下所有疑问清单文件
116
+ * 返回按时间排序的文件路径列表
117
+ */
118
+ async function collectQuestionFiles() {
119
+ const questionsDir = (0, path_1.join)('.speccore', 'questions');
120
+ if (!(await (0, fs_extra_1.pathExists)(questionsDir)))
121
+ return [];
122
+ const files = await (0, fs_extra_1.readdir)(questionsDir);
123
+ return files
124
+ .filter(f => f.endsWith('.md'))
125
+ .sort()
126
+ .map(f => (0, path_1.join)(questionsDir, f));
127
+ }
78
128
  /**
79
129
  * 判断是否为自动模式(非交互模式)
80
130
  * 统一判断: 没有 --interactive 或 --strict 标记时为自动模式
@@ -1 +1 @@
1
- {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/core/questions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/core/questions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "7.3.1",
3
+ "version": "7.4.0",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",