speccore 5.23.2 → 5.24.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.
Files changed (34) hide show
  1. package/dist/commands/analyze.d.ts.map +1 -1
  2. package/dist/commands/analyze.js +54 -1
  3. package/dist/commands/analyze.js.map +1 -1
  4. package/dist/commands/execute.js +10 -3
  5. package/dist/commands/execute.js.map +1 -1
  6. package/dist/commands/init.js +10 -0
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/iteration/create.js +17 -0
  9. package/dist/commands/iteration/create.js.map +1 -1
  10. package/dist/commands/iteration/split.d.ts.map +1 -1
  11. package/dist/commands/iteration/split.js +214 -7
  12. package/dist/commands/iteration/split.js.map +1 -1
  13. package/dist/commands/status-panel.js +8 -1
  14. package/dist/commands/status-panel.js.map +1 -1
  15. package/dist/core/ai-context-generator.d.ts +26 -0
  16. package/dist/core/ai-context-generator.d.ts.map +1 -0
  17. package/dist/core/ai-context-generator.js +199 -0
  18. package/dist/core/ai-context-generator.js.map +1 -0
  19. package/dist/core/analyze-engine.d.ts.map +1 -1
  20. package/dist/core/analyze-engine.js +116 -139
  21. package/dist/core/analyze-engine.js.map +1 -1
  22. package/dist/core/git-integration.d.ts +3 -1
  23. package/dist/core/git-integration.d.ts.map +1 -1
  24. package/dist/core/git-integration.js +58 -5
  25. package/dist/core/git-integration.js.map +1 -1
  26. package/dist/core/name-validator.d.ts +23 -0
  27. package/dist/core/name-validator.d.ts.map +1 -0
  28. package/dist/core/name-validator.js +110 -0
  29. package/dist/core/name-validator.js.map +1 -0
  30. package/dist/core/short-id.d.ts +15 -0
  31. package/dist/core/short-id.d.ts.map +1 -0
  32. package/dist/core/short-id.js +45 -0
  33. package/dist/core/short-id.js.map +1 -0
  34. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"git-integration.js","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-integration.js","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 扫描所有期次名称(去期次-NNN-前缀,返回原始 name 部分)
3
+ */
4
+ export declare function getAllIterationNames(): Promise<string[]>;
5
+ /**
6
+ * 扫描所有任务名称(全项目范围)
7
+ * 任务名称存储在内容文件的第一行 # 标题中
8
+ */
9
+ export declare function getAllTaskNames(): Promise<string[]>;
10
+ /**
11
+ * 检查期次名称是否重复
12
+ * @returns 冲突的期次列表
13
+ */
14
+ export declare function checkIterationNameConflict(name: string, excludeName?: string): Promise<string[]>;
15
+ /**
16
+ * 检查任务名称是否重复(全项目范围)
17
+ * @returns 冲突的任务列表(含所属期次)
18
+ */
19
+ export declare function checkTaskNameConflict(name: string, excludeName?: string): Promise<{
20
+ name: string;
21
+ iteration: string;
22
+ }[]>;
23
+ //# sourceMappingURL=name-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-validator.d.ts","sourceRoot":"","sources":["../../src/core/name-validator.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW9D;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBzD;AAsBD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGtG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAoB9H"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllIterationNames = getAllIterationNames;
4
+ exports.getAllTaskNames = getAllTaskNames;
5
+ exports.checkIterationNameConflict = checkIterationNameConflict;
6
+ exports.checkTaskNameConflict = checkTaskNameConflict;
7
+ /**
8
+ * name-validator — 全局名称唯一性校验
9
+ * 期次名称全项目唯一,任务名称全项目唯一
10
+ */
11
+ const fs_extra_1 = require("fs-extra");
12
+ const path_1 = require("path");
13
+ /**
14
+ * 扫描所有期次名称(去期次-NNN-前缀,返回原始 name 部分)
15
+ */
16
+ async function getAllIterationNames() {
17
+ const cwd = process.cwd();
18
+ const entries = await (0, fs_extra_1.readdir)(cwd, { withFileTypes: true });
19
+ return entries
20
+ .filter(e => e.isDirectory() && e.name.startsWith('期次-'))
21
+ .map(e => {
22
+ // 期次-001-MyName → MyName
23
+ const parts = e.name.split('-');
24
+ return parts.slice(2).join('-');
25
+ })
26
+ .filter(n => n.length > 0);
27
+ }
28
+ /**
29
+ * 扫描所有任务名称(全项目范围)
30
+ * 任务名称存储在内容文件的第一行 # 标题中
31
+ */
32
+ async function getAllTaskNames() {
33
+ const cwd = process.cwd();
34
+ const iterations = await (0, fs_extra_1.readdir)(cwd, { withFileTypes: true });
35
+ const allTasks = [];
36
+ for (const iter of iterations) {
37
+ if (!iter.isDirectory() || !iter.name.startsWith('期次-'))
38
+ continue;
39
+ const iterPath = (0, path_1.join)(cwd, iter.name);
40
+ try {
41
+ const entries = await (0, fs_extra_1.readdir)(iterPath, { withFileTypes: true });
42
+ for (const entry of entries) {
43
+ if (!entry.isDirectory() || !entry.name.startsWith('Task-'))
44
+ continue;
45
+ const name = await readTaskName((0, path_1.join)(iterPath, entry.name));
46
+ if (name.length > 0)
47
+ allTasks.push(name);
48
+ }
49
+ }
50
+ catch { /* 跳过 */ }
51
+ }
52
+ return allTasks;
53
+ }
54
+ /**
55
+ * 从任务目录的内容文件中读取任务名称(第一行 # 标题)
56
+ */
57
+ async function readTaskName(taskDir) {
58
+ // 尝试多个可能的文件
59
+ const files = ['backend/TASK.md', 'backend/REQ.md', 'frontend/TASK.md', 'frontend/REQ.md'];
60
+ for (const f of files) {
61
+ const filePath = (0, path_1.join)(taskDir, f);
62
+ if (await (0, fs_extra_1.pathExists)(filePath)) {
63
+ try {
64
+ const content = await (0, fs_extra_1.readFile)(filePath, 'utf-8');
65
+ const firstLine = content.split('\n')[0].trim();
66
+ const match = firstLine.match(/^#\s+(.+)/);
67
+ if (match)
68
+ return match[1].trim();
69
+ }
70
+ catch { /* skip bad file */ }
71
+ }
72
+ }
73
+ return '';
74
+ }
75
+ /**
76
+ * 检查期次名称是否重复
77
+ * @returns 冲突的期次列表
78
+ */
79
+ async function checkIterationNameConflict(name, excludeName) {
80
+ const existing = await getAllIterationNames();
81
+ return existing.filter(n => n === name && n !== excludeName);
82
+ }
83
+ /**
84
+ * 检查任务名称是否重复(全项目范围)
85
+ * @returns 冲突的任务列表(含所属期次)
86
+ */
87
+ async function checkTaskNameConflict(name, excludeName) {
88
+ const cwd = process.cwd();
89
+ const iterations = await (0, fs_extra_1.readdir)(cwd, { withFileTypes: true });
90
+ const conflicts = [];
91
+ for (const iter of iterations) {
92
+ if (!iter.isDirectory() || !iter.name.startsWith('期次-'))
93
+ continue;
94
+ const iterPath = (0, path_1.join)(cwd, iter.name);
95
+ try {
96
+ const entries = await (0, fs_extra_1.readdir)(iterPath, { withFileTypes: true });
97
+ for (const entry of entries) {
98
+ if (!entry.isDirectory() || !entry.name.startsWith('Task-'))
99
+ continue;
100
+ const taskName = await readTaskName((0, path_1.join)(iterPath, entry.name));
101
+ if (taskName === name && taskName !== excludeName) {
102
+ conflicts.push({ name: taskName, iteration: iter.name });
103
+ }
104
+ }
105
+ }
106
+ catch { /* skip */ }
107
+ }
108
+ return conflicts;
109
+ }
110
+ //# sourceMappingURL=name-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-validator.js","sourceRoot":"","sources":["../../src/core/name-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 生成6位短ID (time-based + crypto random)
3
+ * 格式: 4位时间戳(base36) + 2位随机
4
+ * 例如: "k8x3a1", "m9f2b7"
5
+ */
6
+ export declare function shortId(): string;
7
+ /**
8
+ * 生成期次ID: 期次-{shortId}-{name}
9
+ */
10
+ export declare function iterationId(name: string): string;
11
+ /**
12
+ * 生成任务ID: Task-{shortId}
13
+ */
14
+ export declare function taskId(): string;
15
+ //# sourceMappingURL=short-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"short-id.d.ts","sourceRoot":"","sources":["../../src/core/short-id.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shortId = shortId;
4
+ exports.iterationId = iterationId;
5
+ exports.taskId = taskId;
6
+ /**
7
+ * short-id — 永不重复的短ID生成器
8
+ * 6位字符 0-9a-z,36^6 = 21 亿种组合
9
+ */
10
+ const crypto_1 = require("crypto");
11
+ const CHARS = '0123456789abcdefghijklmnopqrstuvwxyz';
12
+ /**
13
+ * 生成6位短ID (time-based + crypto random)
14
+ * 格式: 4位时间戳(base36) + 2位随机
15
+ * 例如: "k8x3a1", "m9f2b7"
16
+ */
17
+ function shortId() {
18
+ // 时间戳部分 (base36, 4位): 提供时间排序 + 粗粒度唯一性
19
+ const now = Date.now();
20
+ let ts = '';
21
+ let n = now;
22
+ for (let i = 0; i < 4; i++) {
23
+ ts = CHARS[n % 36] + ts;
24
+ n = Math.floor(n / 36);
25
+ }
26
+ // 随机部分 (crypto强随机, 2位): 保证同一毫秒内不碰撞
27
+ const bytes = (0, crypto_1.randomBytes)(1);
28
+ const r1 = CHARS[bytes[0] % 36];
29
+ const r2 = CHARS[(bytes[0] >> 4) % 36];
30
+ return ts + r1 + r2;
31
+ }
32
+ /**
33
+ * 生成期次ID: 期次-{shortId}-{name}
34
+ */
35
+ function iterationId(name) {
36
+ const cleanName = name.replace(/^期次-/, '').replace(/[\/\\]/g, '-');
37
+ return `期次-${shortId()}-${cleanName}`;
38
+ }
39
+ /**
40
+ * 生成任务ID: Task-{shortId}
41
+ */
42
+ function taskId() {
43
+ return `Task-${shortId()}`;
44
+ }
45
+ //# sourceMappingURL=short-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"short-id.js","sourceRoot":"","sources":["../../src/core/short-id.ts"],"names":[],"mappings":";;AAaA,0BAeC;AAKD,kCAGC;AAKD,wBAEC;AA3CD;;;GAGG;AACH,mCAAqC;AAErC,MAAM,KAAK,GAAG,sCAAsC,CAAC;AAErD;;;;GAIG;AACH,SAAgB,OAAO;IACrB,sCAAsC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,mCAAmC;IACnC,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAEvC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnE,OAAO,MAAM,OAAO,EAAE,IAAI,SAAS,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM;IACpB,OAAO,QAAQ,OAAO,EAAE,EAAE,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "5.23.2",
3
+ "version": "5.24.0",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",