speccore 5.87.1 → 5.88.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,18 +1,22 @@
1
1
  "use strict";
2
2
  /**
3
- * 统一 Task 路径管理 — 所有 Task 现在位于 030-tasks/ 子目录下
3
+ * 统一 Task 路径管理 — 所有 Task 位于 030-tasks/{type}/ 子目录下
4
4
  *
5
5
  * 旧: Iteration-001/Task-001/
6
- * 新: Iteration-001/030-tasks/Task-001/
6
+ * 中: Iteration-001/030-tasks/Task-001/
7
+ * 新: Iteration-001/030-tasks/feature/Task-001-slug/
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.TASKS_DIR = void 0;
10
+ exports.TASK_TYPES = exports.TASKS_DIR = void 0;
10
11
  exports.getTaskPath = getTaskPath;
11
12
  exports.getTasksRoot = getTasksRoot;
12
13
  exports.getTaskRelativePath = getTaskRelativePath;
14
+ exports.findTaskDir = findTaskDir;
13
15
  const path_1 = require("path");
16
+ const fs_extra_1 = require("fs-extra");
14
17
  exports.TASKS_DIR = '030-tasks';
15
- /** 获取指定迭代中某个 Task 的完整目录路径 */
18
+ exports.TASK_TYPES = ['feature', 'bugfix', 'refactor', 'research'];
19
+ /** 获取指定迭代中某个 Task 的完整目录路径(新布局:含类型子目录) */
16
20
  function getTaskPath(iteration, taskId) {
17
21
  return (0, path_1.join)(process.cwd(), `Iteration-${iteration}`, exports.TASKS_DIR, taskId);
18
22
  }
@@ -20,8 +24,34 @@ function getTaskPath(iteration, taskId) {
20
24
  function getTasksRoot(iteration) {
21
25
  return (0, path_1.join)(process.cwd(), `Iteration-${iteration}`, exports.TASKS_DIR);
22
26
  }
23
- /** 获取 Task 在迭代目录中的相对路径 (030-tasks/Task-NNN) */
27
+ /** 获取 Task 在迭代目录中的相对路径 */
24
28
  function getTaskRelativePath(taskId) {
25
29
  return `${exports.TASKS_DIR}/${taskId}`;
26
30
  }
31
+ /**
32
+ * 在 030-tasks/ 下递归查找 Task 目录(兼容新旧布局)
33
+ * 新布局: 030-tasks/feature/Task-001-slug/
34
+ * 旧布局: 030-tasks/Task-001/
35
+ */
36
+ async function findTaskDir(tasksRoot, taskId) {
37
+ if (!(await (0, fs_extra_1.pathExists)(tasksRoot)))
38
+ return null;
39
+ // 先查旧布局: 030-tasks/Task-NNN/
40
+ const legacyPath = (0, path_1.join)(tasksRoot, taskId);
41
+ if (await (0, fs_extra_1.pathExists)(legacyPath))
42
+ return legacyPath;
43
+ // 查新布局: 030-tasks/{type}/Task-NNN*/
44
+ for (const type of exports.TASK_TYPES) {
45
+ const typeDir = (0, path_1.join)(tasksRoot, type);
46
+ if (await (0, fs_extra_1.pathExists)(typeDir)) {
47
+ const entries = await (0, fs_extra_1.readdir)(typeDir, { withFileTypes: true });
48
+ for (const e of entries) {
49
+ if (e.isDirectory() && e.name.startsWith(taskId)) {
50
+ return (0, path_1.join)(typeDir, e.name);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ return null;
56
+ }
27
57
  //# sourceMappingURL=task-paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-paths.js","sourceRoot":"","sources":["../../src/core/task-paths.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAOH,kCAEC;AAGD,oCAEC;AAGD,kDAEC;AAjBD,+BAA4B;AAEf,QAAA,SAAS,GAAG,WAAW,CAAC;AAErC,6BAA6B;AAC7B,SAAgB,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,iBAAS,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,8BAA8B;AAC9B,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,iBAAS,CAAC,CAAC;AAClE,CAAC;AAED,+CAA+C;AAC/C,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO,GAAG,iBAAS,IAAI,MAAM,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"task-paths.js","sourceRoot":"","sources":["../../src/core/task-paths.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AASH,kCAEC;AAGD,oCAEC;AAGD,kDAEC;AAOD,kCAoBC;AA9CD,+BAA4B;AAC5B,uCAA+C;AAElC,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,UAAU,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAEjF,yCAAyC;AACzC,SAAgB,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,iBAAS,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,8BAA8B;AAC9B,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,iBAAS,CAAC,CAAC;AAClE,CAAC;AAED,0BAA0B;AAC1B,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO,GAAG,iBAAS,IAAI,MAAM,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IACjE,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,6BAA6B;IAC7B,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAA,qBAAU,EAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAEpD,oCAAoC;IACpC,KAAK,MAAM,IAAI,IAAI,kBAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,IAAA,qBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjD,OAAO,IAAA,WAAI,EAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "5.87.1",
3
+ "version": "5.88.0",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",