speccore 5.4.1 → 5.4.3

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 (111) hide show
  1. package/README.en.md +5 -4
  2. package/README.md +6 -5
  3. package/package.json +1 -1
  4. package/dist/commands/audit.d.ts +0 -10
  5. package/dist/commands/audit.d.ts.map +0 -1
  6. package/dist/commands/audit.js +0 -278
  7. package/dist/commands/audit.js.map +0 -1
  8. package/dist/commands/baseline.d.ts +0 -13
  9. package/dist/commands/baseline.d.ts.map +0 -1
  10. package/dist/commands/baseline.js +0 -227
  11. package/dist/commands/baseline.js.map +0 -1
  12. package/dist/commands/bugfix.d.ts +0 -13
  13. package/dist/commands/bugfix.d.ts.map +0 -1
  14. package/dist/commands/bugfix.js +0 -181
  15. package/dist/commands/bugfix.js.map +0 -1
  16. package/dist/commands/change.d.ts +0 -14
  17. package/dist/commands/change.d.ts.map +0 -1
  18. package/dist/commands/change.js +0 -208
  19. package/dist/commands/change.js.map +0 -1
  20. package/dist/commands/context.d.ts +0 -8
  21. package/dist/commands/context.d.ts.map +0 -1
  22. package/dist/commands/context.js +0 -180
  23. package/dist/commands/context.js.map +0 -1
  24. package/dist/commands/dashboard.d.ts +0 -9
  25. package/dist/commands/dashboard.d.ts.map +0 -1
  26. package/dist/commands/dashboard.js +0 -209
  27. package/dist/commands/dashboard.js.map +0 -1
  28. package/dist/commands/demo.d.ts +0 -10
  29. package/dist/commands/demo.d.ts.map +0 -1
  30. package/dist/commands/demo.js +0 -151
  31. package/dist/commands/demo.js.map +0 -1
  32. package/dist/commands/global-status.d.ts +0 -9
  33. package/dist/commands/global-status.d.ts.map +0 -1
  34. package/dist/commands/global-status.js +0 -135
  35. package/dist/commands/global-status.js.map +0 -1
  36. package/dist/commands/goal.d.ts +0 -15
  37. package/dist/commands/goal.d.ts.map +0 -1
  38. package/dist/commands/goal.js +0 -232
  39. package/dist/commands/goal.js.map +0 -1
  40. package/dist/commands/handover.d.ts +0 -11
  41. package/dist/commands/handover.d.ts.map +0 -1
  42. package/dist/commands/handover.js +0 -169
  43. package/dist/commands/handover.js.map +0 -1
  44. package/dist/commands/help.d.ts +0 -10
  45. package/dist/commands/help.d.ts.map +0 -1
  46. package/dist/commands/help.js +0 -93
  47. package/dist/commands/help.js.map +0 -1
  48. package/dist/commands/history.d.ts +0 -9
  49. package/dist/commands/history.d.ts.map +0 -1
  50. package/dist/commands/history.js +0 -87
  51. package/dist/commands/history.js.map +0 -1
  52. package/dist/commands/impact.d.ts +0 -12
  53. package/dist/commands/impact.d.ts.map +0 -1
  54. package/dist/commands/impact.js +0 -238
  55. package/dist/commands/impact.js.map +0 -1
  56. package/dist/commands/index-update.d.ts +0 -8
  57. package/dist/commands/index-update.d.ts.map +0 -1
  58. package/dist/commands/index-update.js +0 -180
  59. package/dist/commands/index-update.js.map +0 -1
  60. package/dist/commands/iteration-from-global.d.ts +0 -11
  61. package/dist/commands/iteration-from-global.d.ts.map +0 -1
  62. package/dist/commands/iteration-from-global.js +0 -294
  63. package/dist/commands/iteration-from-global.js.map +0 -1
  64. package/dist/commands/new-task.d.ts +0 -15
  65. package/dist/commands/new-task.d.ts.map +0 -1
  66. package/dist/commands/new-task.js +0 -208
  67. package/dist/commands/new-task.js.map +0 -1
  68. package/dist/commands/platform-add.d.ts +0 -12
  69. package/dist/commands/platform-add.d.ts.map +0 -1
  70. package/dist/commands/platform-add.js +0 -111
  71. package/dist/commands/platform-add.js.map +0 -1
  72. package/dist/commands/rename.d.ts +0 -14
  73. package/dist/commands/rename.d.ts.map +0 -1
  74. package/dist/commands/rename.js +0 -298
  75. package/dist/commands/rename.js.map +0 -1
  76. package/dist/commands/research.d.ts +0 -14
  77. package/dist/commands/research.d.ts.map +0 -1
  78. package/dist/commands/research.js +0 -181
  79. package/dist/commands/research.js.map +0 -1
  80. package/dist/commands/retro.d.ts +0 -10
  81. package/dist/commands/retro.d.ts.map +0 -1
  82. package/dist/commands/retro.js +0 -130
  83. package/dist/commands/retro.js.map +0 -1
  84. package/dist/commands/spec.d.ts +0 -8
  85. package/dist/commands/spec.d.ts.map +0 -1
  86. package/dist/commands/spec.js +0 -155
  87. package/dist/commands/spec.js.map +0 -1
  88. package/dist/commands/sync-global.d.ts +0 -13
  89. package/dist/commands/sync-global.d.ts.map +0 -1
  90. package/dist/commands/sync-global.js +0 -218
  91. package/dist/commands/sync-global.js.map +0 -1
  92. package/dist/commands/sync.d.ts +0 -13
  93. package/dist/commands/sync.d.ts.map +0 -1
  94. package/dist/commands/sync.js +0 -216
  95. package/dist/commands/sync.js.map +0 -1
  96. package/dist/commands/template-add.d.ts +0 -12
  97. package/dist/commands/template-add.d.ts.map +0 -1
  98. package/dist/commands/template-add.js +0 -65
  99. package/dist/commands/template-add.js.map +0 -1
  100. package/dist/commands/welcome.d.ts +0 -9
  101. package/dist/commands/welcome.d.ts.map +0 -1
  102. package/dist/commands/welcome.js +0 -166
  103. package/dist/commands/welcome.js.map +0 -1
  104. package/dist/core/global-layer.d.ts +0 -124
  105. package/dist/core/global-layer.d.ts.map +0 -1
  106. package/dist/core/global-layer.js +0 -456
  107. package/dist/core/global-layer.js.map +0 -1
  108. package/dist/core/intent-recognition.d.ts +0 -48
  109. package/dist/core/intent-recognition.d.ts.map +0 -1
  110. package/dist/core/intent-recognition.js +0 -524
  111. package/dist/core/intent-recognition.js.map +0 -1
@@ -1,456 +0,0 @@
1
- "use strict";
2
- /**
3
- * GLOBAL 全量层管理核心模块
4
- * 负责管理 GLOBAL/ 目录下的全量需求索引、项目映射、期次关联
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.readGlobalIndex = readGlobalIndex;
8
- exports.getNextReqId = getNextReqId;
9
- exports.bumpGlobalVersion = bumpGlobalVersion;
10
- exports.appendReqToIndex = appendReqToIndex;
11
- exports.updateReqInIndex = updateReqInIndex;
12
- exports.upsertProjectInIndex = upsertProjectInIndex;
13
- exports.appendIterationLink = appendIterationLink;
14
- exports.updateIndexVersion = updateIndexVersion;
15
- exports.ensureProjectDir = ensureProjectDir;
16
- exports.writeProjectRequirements = writeProjectRequirements;
17
- exports.writeProjectMetadata = writeProjectMetadata;
18
- exports.readRequirementDetail = readRequirementDetail;
19
- exports.diffRequirements = diffRequirements;
20
- exports.listProjectDirs = listProjectDirs;
21
- exports.getGlobalDir = getGlobalDir;
22
- exports.getIndexPath = getIndexPath;
23
- exports.getProjectReqPath = getProjectReqPath;
24
- exports.getProjectMetaPath = getProjectMetaPath;
25
- const fs_extra_1 = require("fs-extra");
26
- const path_1 = require("path");
27
- // ============================================================
28
- // 路径工具
29
- // ============================================================
30
- function getGlobalDir() {
31
- return (0, path_1.join)(process.cwd(), '.speccore', 'GLOBAL');
32
- }
33
- function getIndexPath() {
34
- return (0, path_1.join)(getGlobalDir(), 'INDEX.md');
35
- }
36
- function getProjectReqPath(project) {
37
- return (0, path_1.join)(getGlobalDir(), 'PROJECTS', project, 'REQUIREMENT.md');
38
- }
39
- function getProjectMetaPath(project) {
40
- return (0, path_1.join)(getGlobalDir(), 'PROJECTS', project, 'METADATA.md');
41
- }
42
- // ============================================================
43
- // INDEX.md 读写
44
- // ============================================================
45
- /**
46
- * 解析 GLOBAL/INDEX.md
47
- */
48
- async function readGlobalIndex() {
49
- const indexPath = getIndexPath();
50
- if (!(await (0, fs_extra_1.pathExists)(indexPath))) {
51
- return { reqs: [], projects: [], iterations: [], version: 'v1.0', lastUpdated: '' };
52
- }
53
- const content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
54
- const index = { reqs: [], projects: [], iterations: [], version: 'v1.0', lastUpdated: '' };
55
- // 解析需求索引表
56
- const reqTableMatch = content.match(/\| 需求 ID \|[\s\S]*?(?=\n\n---|$)/);
57
- if (reqTableMatch) {
58
- const lines = reqTableMatch[0].split('\n');
59
- for (const line of lines) {
60
- const cols = line.split('|').map((c) => c.trim());
61
- if (line.includes(':---'))
62
- continue;
63
- if (cols.length >= 9 && cols[1] && cols[1].match(/^REQ-\d+$/)) {
64
- index.reqs.push({
65
- id: cols[1],
66
- project: cols[2],
67
- name: cols[3],
68
- status: cols[4],
69
- version: cols[5],
70
- iteration: cols[6] === '-' ? '' : cols[6],
71
- task: cols[7] === '-' ? '' : cols[7],
72
- filePath: cols[8],
73
- });
74
- }
75
- }
76
- }
77
- // 解析项目列表
78
- const projTableMatch = content.match(/\| 项目名称 \|[\s\S]*?(?=\n\n---|$)/);
79
- if (projTableMatch) {
80
- const lines = projTableMatch[0].split('\n');
81
- for (const line of lines) {
82
- const cols = line.split('|').map((c) => c.trim());
83
- // Skip separator lines (all colons and dashes)
84
- if (line.includes(':---'))
85
- continue;
86
- if (cols.length >= 8 && cols[1] && cols[1] !== '_暂无项目_' && cols[1] !== '项目名称') {
87
- index.projects.push({
88
- name: cols[1],
89
- type: cols[2],
90
- reqCount: parseInt(cols[3]) || 0,
91
- implemented: parseInt(cols[4]) || 0,
92
- inProgress: parseInt(cols[5]) || 0,
93
- pending: parseInt(cols[6]) || 0,
94
- lastImport: cols[7],
95
- });
96
- }
97
- }
98
- }
99
- // 解析期次关联
100
- const iterTableMatch = content.match(/\| 期次名称 \|[\s\S]*?(?=\n\n---|$)/);
101
- if (iterTableMatch) {
102
- const lines = iterTableMatch[0].split('\n');
103
- for (const line of lines) {
104
- const cols = line.split('|').map((c) => c.trim());
105
- if (line.includes(':---'))
106
- continue;
107
- if (cols.length >= 5 && cols[1] && cols[1] !== '_暂无期次_' && cols[1] !== '期次名称') {
108
- index.iterations.push({
109
- name: cols[1],
110
- reqs: cols[2].split(',').map((r) => r.trim()),
111
- status: cols[3],
112
- createdAt: cols[4],
113
- });
114
- }
115
- }
116
- }
117
- // 解析版本信息
118
- const verMatch = content.match(/\| v(\d+\.\d+) \| ([^|]+) \|/);
119
- if (verMatch) {
120
- index.version = `v${verMatch[1]}`;
121
- index.lastUpdated = verMatch[2].trim();
122
- }
123
- return index;
124
- }
125
- /**
126
- * 获取下一个需求编号
127
- */
128
- function getNextReqId(index) {
129
- let maxNum = 0;
130
- for (const req of index.reqs) {
131
- const match = req.id.match(/REQ-(\d+)/);
132
- if (match) {
133
- maxNum = Math.max(maxNum, parseInt(match[1], 10));
134
- }
135
- }
136
- return `REQ-${String(maxNum + 1).padStart(3, '0')}`;
137
- }
138
- /**
139
- * 递增全局版本号
140
- */
141
- function bumpGlobalVersion(currentVersion) {
142
- const match = currentVersion.match(/v(\d+)\.(\d+)/);
143
- if (match) {
144
- const major = parseInt(match[1]);
145
- const minor = parseInt(match[2]);
146
- return `v${major}.${minor + 1}`;
147
- }
148
- return 'v1.1';
149
- }
150
- /**
151
- * 追加需求条目到 INDEX.md 的需求索引表
152
- */
153
- async function appendReqToIndex(entry) {
154
- const indexPath = getIndexPath();
155
- let content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
156
- const newLine = `| ${entry.id} | ${entry.project} | ${entry.name} | ${entry.status} | ${entry.version} | ${entry.iteration || '-'} | ${entry.task || '-'} | \`${entry.filePath}\` |`;
157
- // 如果存在占位行,替换第一条占位行
158
- if (content.includes('_暂无需求_')) {
159
- content = content.replace('| _暂无需求_ | - | - | - | - | - | - | - |', newLine);
160
- }
161
- else {
162
- // 在需求索引表最后一行后追加(就在分隔线前)
163
- const insertPoint = content.lastIndexOf('| _暂无需求_');
164
- if (insertPoint === -1) {
165
- // 找到表格最后一行数据
166
- const tableEnd = content.indexOf('\n\n---', content.indexOf('| 需求 ID |'));
167
- if (tableEnd > 0) {
168
- content = content.slice(0, tableEnd) + '\n' + newLine + content.slice(tableEnd);
169
- }
170
- }
171
- }
172
- await (0, fs_extra_1.writeFile)(indexPath, content);
173
- }
174
- /**
175
- * 更新 INDEX.md 中需求条目的状态、版本等信息
176
- */
177
- async function updateReqInIndex(reqId, updates) {
178
- const indexPath = getIndexPath();
179
- let content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
180
- const lines = content.split('\n');
181
- const newLines = [];
182
- for (const line of lines) {
183
- if (line.includes(`| ${reqId} |`)) {
184
- const cols = line.split('|').map((c) => c.trim());
185
- // cols[0]是空, cols[1]是需求ID, cols[2]是项目, cols[3]是名称
186
- // cols[4]是状态, cols[5]是版本, cols[6]是关联期次, cols[7]是关联Task, cols[8]是文件路径
187
- if (cols.length >= 9 && cols[1] === reqId) {
188
- if (updates.status)
189
- cols[4] = updates.status;
190
- if (updates.version)
191
- cols[5] = updates.version;
192
- if (updates.iteration !== undefined)
193
- cols[6] = updates.iteration || '-';
194
- if (updates.task !== undefined)
195
- cols[7] = updates.task || '-';
196
- if (updates.name)
197
- cols[3] = updates.name;
198
- newLines.push(`| ${cols[1]} | ${cols[2]} | ${cols[3]} | ${cols[4]} | ${cols[5]} | ${cols[6]} | ${cols[7]} | ${cols[8]} |`);
199
- continue;
200
- }
201
- }
202
- newLines.push(line);
203
- }
204
- await (0, fs_extra_1.writeFile)(indexPath, newLines.join('\n'));
205
- }
206
- /**
207
- * 追加项目条目到 INDEX.md
208
- */
209
- async function upsertProjectInIndex(project) {
210
- const indexPath = getIndexPath();
211
- let content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
212
- const newLine = `| ${project.name} | ${project.type} | ${project.reqCount} | ${project.implemented} | ${project.inProgress} | ${project.pending} | ${project.lastImport} |`;
213
- // 只在项目列表表格区域内查找
214
- const projSectionStart = content.indexOf('## 项目列表');
215
- const projSectionEnd = content.indexOf('\n---', projSectionStart);
216
- const projSection = projSectionStart >= 0
217
- ? content.substring(projSectionStart, projSectionEnd > projSectionStart ? projSectionEnd : undefined)
218
- : '';
219
- // 检查项目列表区是否已有该项目(同时匹配名称和类型,避免与需求表混淆)
220
- const hasProjectLine = projSection.split('\n').some((line) => line.trim().startsWith(`| ${project.name} |`) && line.includes(`| ${project.type} |`));
221
- if (hasProjectLine) {
222
- // 更新已有项目条目
223
- const lines = content.split('\n');
224
- const newLines = [];
225
- for (const line of lines) {
226
- if (line.trim().startsWith(`| ${project.name} |`) && line.includes(`| ${project.type} |`)) {
227
- newLines.push(newLine);
228
- }
229
- else {
230
- newLines.push(line);
231
- }
232
- }
233
- content = newLines.join('\n');
234
- }
235
- else if (content.includes('_暂无项目_')) {
236
- // 替换占位行
237
- content = content.replace(/\| _暂无项目_ \| - \| - \| - \| - \| - \| - \|/, newLine);
238
- }
239
- else {
240
- // 在项目表格最后一行后追加
241
- const lastRowEnd = projSectionEnd > 0 ? projSectionEnd : content.length;
242
- content = content.slice(0, lastRowEnd) + '\n' + newLine + content.slice(lastRowEnd);
243
- }
244
- await (0, fs_extra_1.writeFile)(indexPath, content);
245
- }
246
- /**
247
- * 追加期次关联到 INDEX.md
248
- */
249
- async function appendIterationLink(link) {
250
- const indexPath = getIndexPath();
251
- let content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
252
- const reqsStr = link.reqs.join(',');
253
- const newLine = `| ${link.name} | ${reqsStr} | ${link.status} | ${link.createdAt} |`;
254
- if (content.includes('_暂无期次_')) {
255
- content = content.replace(/\| _暂无期次_ \| - \| - \| - \|/, newLine);
256
- }
257
- else {
258
- // 在期次关联表格后面追加
259
- const iterSectionStart = content.indexOf('## 期次关联');
260
- const iterSectionEnd = content.indexOf('\n---', iterSectionStart);
261
- const insertPos = iterSectionEnd > iterSectionStart ? iterSectionEnd : content.length;
262
- content = content.slice(0, insertPos) + '\n' + newLine + content.slice(insertPos);
263
- }
264
- await (0, fs_extra_1.writeFile)(indexPath, content);
265
- }
266
- /**
267
- * 更新 INDEX.md 版本信息
268
- */
269
- async function updateIndexVersion(version) {
270
- const indexPath = getIndexPath();
271
- let content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
272
- const today = new Date().toISOString().split('T')[0];
273
- // 更新最后的版本行
274
- const newVerLine = `| ${version} | ${today} | 自动更新 |`;
275
- const lines = content.split('\n');
276
- const newLines = [];
277
- let foundVersion = false;
278
- for (const line of lines) {
279
- if (line.match(/^\| v\d+\.\d+ \|/) && !foundVersion) {
280
- newLines.push(newVerLine);
281
- foundVersion = true;
282
- }
283
- else {
284
- newLines.push(line);
285
- }
286
- }
287
- await (0, fs_extra_1.writeFile)(indexPath, newLines.join('\n'));
288
- }
289
- // ============================================================
290
- // 项目管理
291
- // ============================================================
292
- /**
293
- * 确保项目目录存在
294
- */
295
- async function ensureProjectDir(project) {
296
- const projDir = (0, path_1.join)(getGlobalDir(), 'PROJECTS', project);
297
- await (0, fs_extra_1.ensureDir)(projDir);
298
- }
299
- /**
300
- * 写入项目需求文档
301
- */
302
- async function writeProjectRequirements(project, projectType, requirements, techStack = '') {
303
- const reqPath = getProjectReqPath(project);
304
- const today = new Date().toISOString().split('T')[0];
305
- const entries = [];
306
- let content = `# ${project} - 需求文档
307
-
308
- > 本文件仅包含本项目需求。跨项目引用请通过 \`GLOBAL/INDEX.md\` 映射。
309
- > 最后更新:${today}
310
-
311
- ---
312
-
313
- ## 项目信息
314
-
315
- | 属性 | 值 |
316
- | :--- | :--- |
317
- | 项目名称 | ${project} |
318
- | 项目类型 | ${projectType} |
319
- | 技术栈 | ${techStack || '待补充'} |
320
- | 负责人 | 待补充 |
321
-
322
- ---
323
-
324
- ## 需求列表
325
-
326
- `;
327
- for (const req of requirements) {
328
- const reqId = req.id;
329
- content += `### ${reqId}:${req.name}
330
-
331
- > **元数据(Metadata)**
332
- > | 字段 | 值 |
333
- > | :--- | :--- |
334
- > | 来源 | \`speccore import\` \\| 项目:${project} \\| 导入时间:${today} |
335
- > | 当前版本 | v1.0 |
336
- > | 状态 | 📦 已有实现 |
337
- > | 最后修改 | ${today} \\| 修改人:SpecCore |
338
- > | 关联期次 | - |
339
- > | 关联 Task | - |
340
-
341
- **需求描述**
342
- ${req.description || '从代码分析提取的需求描述'}
343
-
344
- **验收标准**
345
- - [ ] 功能验收
346
- - [ ] 性能验收
347
- - [ ] 安全验收
348
-
349
- **📝 变更历史(Changelog)**
350
- | 版本 | 日期 | 变更内容 | 变更来源 | 修改人 |
351
- | :--- | :--- | :--- | :--- | :--- |
352
- | v1.0 | ${today} | 初始创建:从 ${project} 代码导入 | \`speccore import\` | SpecCore |
353
-
354
- `;
355
- entries.push({
356
- id: reqId,
357
- project,
358
- name: req.name,
359
- status: '📦 已有实现',
360
- version: 'v1.0',
361
- iteration: '',
362
- task: '',
363
- filePath: `PROJECTS/${project}/REQUIREMENT.md`,
364
- });
365
- }
366
- await (0, fs_extra_1.writeFile)(reqPath, content);
367
- return entries;
368
- }
369
- /**
370
- * 写入项目元数据
371
- */
372
- async function writeProjectMetadata(project, projectType, techStack = '', repoUrl = '') {
373
- const metaPath = getProjectMetaPath(project);
374
- const today = new Date().toISOString().split('T')[0];
375
- const content = `# ${project} - 元数据
376
-
377
- | 属性 | 值 |
378
- | :--- | :--- |
379
- | 项目名称 | ${project} |
380
- | 项目类型 | ${projectType} |
381
- | 技术栈 | ${techStack || '待补充'} |
382
- | 版本 | 1.0.0 |
383
- | 负责人 | 待补充 |
384
- | 代码仓库 | ${repoUrl || '待补充'} |
385
- | 最后扫描 | ${today} |
386
-
387
- ## 依赖关系
388
-
389
- | 依赖项目 | 依赖方式 | 说明 |
390
- | :--- | :--- | :--- |
391
- | _待填写_ | - | - |
392
- `;
393
- await (0, fs_extra_1.writeFile)(metaPath, content);
394
- }
395
- // ============================================================
396
- // 需求查找与变更同步
397
- // ============================================================
398
- /**
399
- * 从指定项目中读取指定需求 ID 的详细内容
400
- */
401
- async function readRequirementDetail(project, reqId) {
402
- const reqPath = getProjectReqPath(project);
403
- if (!(await (0, fs_extra_1.pathExists)(reqPath))) {
404
- return '';
405
- }
406
- const content = await (0, fs_extra_1.readFile)(reqPath, 'utf-8');
407
- // 提取需求段落(从 ### REQ-XXX 开始到下一个 ### 或文件结尾)
408
- const regex = new RegExp(`### ${reqId}[::][^]*?(?=\\n### |$)`, 'm');
409
- const match = content.match(regex);
410
- return match ? match[0] : '';
411
- }
412
- /**
413
- * 对比两个需求描述并返回变更清单
414
- */
415
- function diffRequirements(sourceTitle, sourceContent, targetContent) {
416
- const changes = [];
417
- if (!targetContent) {
418
- changes.push({
419
- reqId: '',
420
- reqName: sourceTitle,
421
- project: '',
422
- changeType: '新增',
423
- changeDesc: '全量层中不存在该需求,将新增',
424
- });
425
- }
426
- else {
427
- // 简单对比:长度差异、关键词检查
428
- if (sourceContent.length !== targetContent.length) {
429
- const diff = Math.abs(sourceContent.length - targetContent.length);
430
- if (diff > 50) {
431
- changes.push({
432
- reqId: '',
433
- reqName: sourceTitle,
434
- project: '',
435
- changeType: '修改',
436
- changeDesc: `内容长度差异 ${diff} 字符`,
437
- });
438
- }
439
- }
440
- }
441
- return changes;
442
- }
443
- /**
444
- * 获取所有已导入项目的列表
445
- */
446
- async function listProjectDirs() {
447
- const projectsDir = (0, path_1.join)(getGlobalDir(), 'PROJECTS');
448
- if (!(await (0, fs_extra_1.pathExists)(projectsDir))) {
449
- return [];
450
- }
451
- const entries = await (0, fs_extra_1.readdir)(projectsDir, { withFileTypes: true });
452
- return entries
453
- .filter((e) => e.isDirectory() && e.name !== '_template')
454
- .map((e) => e.name);
455
- }
456
- //# sourceMappingURL=global-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-layer.js","sourceRoot":"","sources":["../../src/core/global-layer.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * 意图识别引擎
3
- * 基于 SpecCore v4.0 的自然语言意图识别引擎
4
- * 支持 31 种意图类型、200+ 关键词匹配、置信度计算、上下文感知增强
5
- */
6
- /** 意图类型 */
7
- export type IntentType = 'change' | 'execute' | 'create' | 'review' | 'plan' | 'reference' | 'archive' | 'query_progress' | 'handover' | 'health' | 'config' | 'help' | 'demo' | 'welcome' | 'init' | 'import' | 'bugfix' | 'research' | 'sync' | 'retro' | 'template_add' | 'import_to_global' | 'iteration_from_global' | 'sync_to_global' | 'global_status' | 'history' | 'impact' | 'baseline' | 'dashboard' | 'audit' | 'rename' | 'new_task' | 'platform_add' | 'index_update' | 'context';
8
- /** 意图匹配结果 */
9
- export interface IntentResult {
10
- intent: IntentType;
11
- command: string;
12
- confidence: number;
13
- priority: number;
14
- matchedTriggers: string[];
15
- extractedParams: Record<string, string>;
16
- contextAware: boolean;
17
- }
18
- /** 命令映射条目 */
19
- export interface CommandMapping {
20
- id: string;
21
- intent: IntentType;
22
- priority: number;
23
- triggers: string[];
24
- patterns: string[];
25
- description: string;
26
- args?: string;
27
- }
28
- /**
29
- * 从用户自然语言输入中识别意图
30
- */
31
- export declare function recognizeIntent(input: string): Promise<IntentResult[]>;
32
- /**
33
- * 根据置信度分级获取行为建议
34
- */
35
- export declare function getConfidenceLevel(confidence: number): 'high' | 'medium' | 'low';
36
- /**
37
- * 获取所有命令映射(用于 help 命令)
38
- */
39
- export declare function getAllCommandMappings(): CommandMapping[];
40
- /**
41
- * 根据命令 ID 获取映射
42
- */
43
- export declare function getCommandMapping(commandId: string): CommandMapping | undefined;
44
- /**
45
- * 根据意图类型获取相关命令
46
- */
47
- export declare function getCommandsByIntent(intent: IntentType): CommandMapping[];
48
- //# sourceMappingURL=intent-recognition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intent-recognition.d.ts","sourceRoot":"","sources":["../../src/core/intent-recognition.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,WAAW;AACX,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,WAAW,GACX,SAAS,GACT,gBAAgB,GAChB,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,MAAM,GACN,OAAO,GACP,cAAc,GACd,kBAAkB,GAClB,uBAAuB,GACvB,gBAAgB,GAChB,eAAe,GACf,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,OAAO,GACP,QAAQ,GACR,UAAU,GACV,cAAc,GACd,cAAc,GACd,SAAS,CAAC;AAEd,aAAa;AACb,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmYD;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgF5E;AA+CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAIhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,EAAE,CAExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,CAExE"}