speccore 8.3.340 → 8.3.345

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 (246) hide show
  1. package/.agents/skills/speccore-router/SKILL.md +0 -2
  2. package/README.en.md +3 -11
  3. package/README.md +3 -13
  4. package/dist/cli.js +1 -187
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/analyze.d.ts.map +1 -1
  7. package/dist/commands/analyze.js +583 -502
  8. package/dist/commands/analyze.js.map +1 -1
  9. package/dist/commands/ask.d.ts +1 -0
  10. package/dist/commands/ask.d.ts.map +1 -1
  11. package/dist/commands/ask.js +5 -18
  12. package/dist/commands/ask.js.map +1 -1
  13. package/dist/commands/completion.d.ts.map +1 -1
  14. package/dist/commands/completion.js +9 -7
  15. package/dist/commands/completion.js.map +1 -1
  16. package/dist/commands/doctor.js +3 -3
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/done.js +1 -5
  19. package/dist/commands/done.js.map +1 -1
  20. package/dist/commands/execute.js +2 -2
  21. package/dist/commands/execute.js.map +1 -1
  22. package/dist/commands/help.js +5 -54
  23. package/dist/commands/help.js.map +1 -1
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +3 -31
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/iteration/taskify.d.ts.map +1 -1
  28. package/dist/commands/iteration/taskify.js +5 -147
  29. package/dist/commands/iteration/taskify.js.map +1 -1
  30. package/dist/commands/pr.d.ts.map +1 -1
  31. package/dist/commands/pr.js +3 -5
  32. package/dist/commands/pr.js.map +1 -1
  33. package/dist/commands/search.js +1 -1
  34. package/dist/commands/search.js.map +1 -1
  35. package/dist/commands/update-env-configs.d.ts.map +1 -1
  36. package/dist/commands/update-env-configs.js +2 -1
  37. package/dist/commands/update-env-configs.js.map +1 -1
  38. package/dist/commands/update.d.ts +4 -0
  39. package/dist/commands/update.d.ts.map +1 -1
  40. package/dist/commands/update.js +41 -1
  41. package/dist/commands/update.js.map +1 -1
  42. package/dist/commands/welcome.d.ts.map +1 -1
  43. package/dist/commands/welcome.js +37 -36
  44. package/dist/commands/welcome.js.map +1 -1
  45. package/dist/core/analyze-engine.js +3 -3
  46. package/dist/core/analyze-engine.js.map +1 -1
  47. package/dist/core/arbitration/l3-human-arbiter.js +1 -1
  48. package/dist/core/arbitration/l3-human-arbiter.js.map +1 -1
  49. package/dist/core/arbitration/verdict-generator.js +1 -1
  50. package/dist/core/arbitration/verdict-generator.js.map +1 -1
  51. package/dist/core/ask-engine.d.ts.map +1 -1
  52. package/dist/core/ask-engine.js +16 -42
  53. package/dist/core/ask-engine.js.map +1 -1
  54. package/dist/core/code-graph/reporter.d.ts.map +1 -1
  55. package/dist/core/code-graph/reporter.js +3 -12
  56. package/dist/core/code-graph/reporter.js.map +1 -1
  57. package/dist/core/code-graph/requirement-linker.js +1 -1
  58. package/dist/core/code-graph/requirement-linker.js.map +1 -1
  59. package/dist/core/code-scanner.js +1 -1
  60. package/dist/core/code-scanner.js.map +1 -1
  61. package/dist/core/deploy/engine.d.ts.map +1 -1
  62. package/dist/core/deploy/engine.js +58 -44
  63. package/dist/core/deploy/engine.js.map +1 -1
  64. package/dist/core/environment-config.d.ts +2 -0
  65. package/dist/core/environment-config.d.ts.map +1 -1
  66. package/dist/core/environment-config.js +6 -1
  67. package/dist/core/environment-config.js.map +1 -1
  68. package/dist/core/error-diagnosis.js +2 -2
  69. package/dist/core/error-diagnosis.js.map +1 -1
  70. package/dist/core/function-map.d.ts +49 -0
  71. package/dist/core/function-map.d.ts.map +1 -0
  72. package/dist/core/function-map.js +280 -0
  73. package/dist/core/function-map.js.map +1 -0
  74. package/dist/core/git-integration.d.ts +6 -0
  75. package/dist/core/git-integration.d.ts.map +1 -1
  76. package/dist/core/git-integration.js +11 -0
  77. package/dist/core/git-integration.js.map +1 -1
  78. package/dist/core/global-knowledge.js +1 -1
  79. package/dist/core/index-guard.d.ts.map +1 -1
  80. package/dist/core/index-guard.js +4 -26
  81. package/dist/core/index-guard.js.map +1 -1
  82. package/dist/core/intent-recognition.d.ts +1 -1
  83. package/dist/core/intent-recognition.d.ts.map +1 -1
  84. package/dist/core/intent-recognition.js +5 -63
  85. package/dist/core/intent-recognition.js.map +1 -1
  86. package/dist/core/page-bundle.d.ts +25 -0
  87. package/dist/core/page-bundle.d.ts.map +1 -0
  88. package/dist/core/page-bundle.js +144 -0
  89. package/dist/core/page-bundle.js.map +1 -0
  90. package/dist/core/prompt-builder.d.ts +9 -0
  91. package/dist/core/prompt-builder.d.ts.map +1 -1
  92. package/dist/core/prompt-builder.js +135 -3
  93. package/dist/core/prompt-builder.js.map +1 -1
  94. package/dist/core/prompt-plugins/analyze-graph-plugin.js +1 -1
  95. package/dist/core/prompt-plugins/analyze-graph-plugin.js.map +1 -1
  96. package/dist/core/structured-extractor.d.ts +6 -0
  97. package/dist/core/structured-extractor.d.ts.map +1 -1
  98. package/dist/core/structured-extractor.js +6 -0
  99. package/dist/core/structured-extractor.js.map +1 -1
  100. package/dist/core/unified-config.d.ts.map +1 -1
  101. package/dist/core/unified-config.js +29 -19
  102. package/dist/core/unified-config.js.map +1 -1
  103. package/dist/core/usage-analytics.js +1 -1
  104. package/dist/core/usage-analytics.js.map +1 -1
  105. package/package.json +1 -1
  106. package/templates/html/speccore-ask-guide.html +1 -1
  107. package/templates/html/speccore-ask-pipeline.html +1 -1
  108. package/templates/html/speccore-ask-result.html +1 -1
  109. package/templates/html/speccore-help.html +2 -2
  110. package/templates/speccore-yml-example.yml +24 -24
  111. package/dist/commands/audit.d.ts +0 -12
  112. package/dist/commands/audit.d.ts.map +0 -1
  113. package/dist/commands/audit.js +0 -540
  114. package/dist/commands/audit.js.map +0 -1
  115. package/dist/commands/backup.d.ts +0 -18
  116. package/dist/commands/backup.d.ts.map +0 -1
  117. package/dist/commands/backup.js +0 -102
  118. package/dist/commands/backup.js.map +0 -1
  119. package/dist/commands/baseline.d.ts +0 -13
  120. package/dist/commands/baseline.d.ts.map +0 -1
  121. package/dist/commands/baseline.js +0 -227
  122. package/dist/commands/baseline.js.map +0 -1
  123. package/dist/commands/chain.d.ts +0 -55
  124. package/dist/commands/chain.d.ts.map +0 -1
  125. package/dist/commands/chain.js +0 -501
  126. package/dist/commands/chain.js.map +0 -1
  127. package/dist/commands/clarify.d.ts +0 -17
  128. package/dist/commands/clarify.d.ts.map +0 -1
  129. package/dist/commands/clarify.js +0 -351
  130. package/dist/commands/clarify.js.map +0 -1
  131. package/dist/commands/code-index.d.ts +0 -21
  132. package/dist/commands/code-index.d.ts.map +0 -1
  133. package/dist/commands/code-index.js +0 -193
  134. package/dist/commands/code-index.js.map +0 -1
  135. package/dist/commands/context.d.ts +0 -10
  136. package/dist/commands/context.d.ts.map +0 -1
  137. package/dist/commands/context.js +0 -213
  138. package/dist/commands/context.js.map +0 -1
  139. package/dist/commands/current.d.ts +0 -10
  140. package/dist/commands/current.d.ts.map +0 -1
  141. package/dist/commands/current.js +0 -53
  142. package/dist/commands/current.js.map +0 -1
  143. package/dist/commands/dev.d.ts +0 -18
  144. package/dist/commands/dev.d.ts.map +0 -1
  145. package/dist/commands/dev.js +0 -854
  146. package/dist/commands/dev.js.map +0 -1
  147. package/dist/commands/diff.d.ts +0 -10
  148. package/dist/commands/diff.d.ts.map +0 -1
  149. package/dist/commands/diff.js +0 -160
  150. package/dist/commands/diff.js.map +0 -1
  151. package/dist/commands/global-status.d.ts +0 -9
  152. package/dist/commands/global-status.d.ts.map +0 -1
  153. package/dist/commands/global-status.js +0 -135
  154. package/dist/commands/global-status.js.map +0 -1
  155. package/dist/commands/graph.d.ts +0 -25
  156. package/dist/commands/graph.d.ts.map +0 -1
  157. package/dist/commands/graph.js +0 -523
  158. package/dist/commands/graph.js.map +0 -1
  159. package/dist/commands/handover.d.ts +0 -11
  160. package/dist/commands/handover.d.ts.map +0 -1
  161. package/dist/commands/handover.js +0 -170
  162. package/dist/commands/handover.js.map +0 -1
  163. package/dist/commands/health.d.ts +0 -7
  164. package/dist/commands/health.d.ts.map +0 -1
  165. package/dist/commands/health.js +0 -80
  166. package/dist/commands/health.js.map +0 -1
  167. package/dist/commands/history.d.ts +0 -9
  168. package/dist/commands/history.d.ts.map +0 -1
  169. package/dist/commands/history.js +0 -117
  170. package/dist/commands/history.js.map +0 -1
  171. package/dist/commands/impact.d.ts +0 -12
  172. package/dist/commands/impact.d.ts.map +0 -1
  173. package/dist/commands/impact.js +0 -238
  174. package/dist/commands/impact.js.map +0 -1
  175. package/dist/commands/import.d.ts +0 -19
  176. package/dist/commands/import.d.ts.map +0 -1
  177. package/dist/commands/import.js +0 -673
  178. package/dist/commands/import.js.map +0 -1
  179. package/dist/commands/knowledge.d.ts +0 -6
  180. package/dist/commands/knowledge.d.ts.map +0 -1
  181. package/dist/commands/knowledge.js +0 -94
  182. package/dist/commands/knowledge.js.map +0 -1
  183. package/dist/commands/lifecycle.d.ts +0 -9
  184. package/dist/commands/lifecycle.d.ts.map +0 -1
  185. package/dist/commands/lifecycle.js +0 -288
  186. package/dist/commands/lifecycle.js.map +0 -1
  187. package/dist/commands/merge-check.d.ts +0 -10
  188. package/dist/commands/merge-check.d.ts.map +0 -1
  189. package/dist/commands/merge-check.js +0 -183
  190. package/dist/commands/merge-check.js.map +0 -1
  191. package/dist/commands/notify.d.ts +0 -13
  192. package/dist/commands/notify.d.ts.map +0 -1
  193. package/dist/commands/notify.js +0 -63
  194. package/dist/commands/notify.js.map +0 -1
  195. package/dist/commands/rag-index.d.ts +0 -19
  196. package/dist/commands/rag-index.d.ts.map +0 -1
  197. package/dist/commands/rag-index.js +0 -286
  198. package/dist/commands/rag-index.js.map +0 -1
  199. package/dist/commands/recommend.d.ts +0 -13
  200. package/dist/commands/recommend.d.ts.map +0 -1
  201. package/dist/commands/recommend.js +0 -37
  202. package/dist/commands/recommend.js.map +0 -1
  203. package/dist/commands/refresh.d.ts +0 -21
  204. package/dist/commands/refresh.d.ts.map +0 -1
  205. package/dist/commands/refresh.js +0 -211
  206. package/dist/commands/refresh.js.map +0 -1
  207. package/dist/commands/rollback.d.ts +0 -8
  208. package/dist/commands/rollback.d.ts.map +0 -1
  209. package/dist/commands/rollback.js +0 -113
  210. package/dist/commands/rollback.js.map +0 -1
  211. package/dist/commands/status.d.ts +0 -7
  212. package/dist/commands/status.d.ts.map +0 -1
  213. package/dist/commands/status.js +0 -262
  214. package/dist/commands/status.js.map +0 -1
  215. package/dist/commands/trace.d.ts +0 -12
  216. package/dist/commands/trace.d.ts.map +0 -1
  217. package/dist/commands/trace.js +0 -163
  218. package/dist/commands/trace.js.map +0 -1
  219. package/dist/commands/tracker.d.ts +0 -2
  220. package/dist/commands/tracker.d.ts.map +0 -1
  221. package/dist/commands/tracker.js +0 -28
  222. package/dist/commands/tracker.js.map +0 -1
  223. package/dist/commands/verdict.d.ts +0 -16
  224. package/dist/commands/verdict.d.ts.map +0 -1
  225. package/dist/commands/verdict.js +0 -189
  226. package/dist/commands/verdict.js.map +0 -1
  227. package/dist/commands/workspace.d.ts +0 -20
  228. package/dist/commands/workspace.d.ts.map +0 -1
  229. package/dist/commands/workspace.js +0 -142
  230. package/dist/commands/workspace.js.map +0 -1
  231. package/dist/core/constraint-set.d.ts +0 -67
  232. package/dist/core/constraint-set.d.ts.map +0 -1
  233. package/dist/core/constraint-set.js +0 -151
  234. package/dist/core/constraint-set.js.map +0 -1
  235. package/dist/core/smart-recommend.d.ts +0 -16
  236. package/dist/core/smart-recommend.d.ts.map +0 -1
  237. package/dist/core/smart-recommend.js +0 -149
  238. package/dist/core/smart-recommend.js.map +0 -1
  239. package/dist/core/task-type-registry.d.ts +0 -110
  240. package/dist/core/task-type-registry.d.ts.map +0 -1
  241. package/dist/core/task-type-registry.js +0 -334
  242. package/dist/core/task-type-registry.js.map +0 -1
  243. package/dist/utils/mermaid-render.d.ts +0 -39
  244. package/dist/utils/mermaid-render.d.ts.map +0 -1
  245. package/dist/utils/mermaid-render.js +0 -284
  246. package/dist/utils/mermaid-render.js.map +0 -1
@@ -1,501 +0,0 @@
1
- "use strict";
2
- /**
3
- * chain — TaskChain 无人值守任务链(v8.3.307+)
4
- *
5
- * 场景:用户在迭代中提前写好一组异质任务 spec(编码 / 写文档 / 写脚本 /
6
- * 数据处理等),任务间可能有关联(依赖)也可能毫不相关。chain 命令按拓扑
7
- * 顺序逐个推进,每轮输出一个自包含执行 prompt(含重新加载的约束集),
8
- * 宿主 AI 执行后再次调用 chain 校验并推进下一任务——无人值守、断点续跑。
9
- *
10
- * 闭环方式(与 dispatch-loop「方式 Y」一致):
11
- *
12
- * speccore chain run → 推进状态机 → 输出下一任务的 prompt(exitCode 10)
13
- * → 宿主 AI 执行该任务并落盘 → 再次 speccore chain run → 校验任务状态
14
- * → 通过则标记 done 并推进下一任务 → …… → 全部完成 → 汇总报告(exitCode 0)
15
- *
16
- * 状态文件:<projectRoot>/.speccore/local/chain-state.json(按迭代分节)
17
- * - 任务完成后校验其 .meta/status,手动修复过的任务可恢复为完成
18
- * - 每任务开始/完成/失败均发送通知(notification.ts)
19
- *
20
- * 约束集注入:每个任务执行前,chain 重新加载该任务声明的约束集 +
21
- * 类型默认约束(constraint-set.ts),保证「同类任务每次执行都读一遍
22
- * 共同前提约束」,记忆不随会话漂移。
23
- */
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.chainCommand = chainCommand;
26
- exports.registerChainCommand = registerChainCommand;
27
- const path_1 = require("path");
28
- const fs_extra_1 = require("fs-extra");
29
- const logger_1 = require("../utils/logger");
30
- const context_1 = require("../core/context");
31
- const state_1 = require("../core/state");
32
- const notification_1 = require("../core/notification");
33
- const task_type_registry_1 = require("../core/task-type-registry");
34
- const constraint_set_1 = require("../core/constraint-set");
35
- const task_utils_1 = require("../utils/task-utils");
36
- // ═══════════════════════════════════════════════════════════
37
- // 状态文件读写
38
- // ═══════════════════════════════════════════════════════════
39
- async function getStateFilePath() {
40
- const fp = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'local', 'chain-state.json');
41
- await (0, fs_extra_1.ensureDir)((0, path_1.dirname)(fp));
42
- return fp;
43
- }
44
- async function loadStateFile() {
45
- try {
46
- const fp = await getStateFilePath();
47
- if (!(await (0, fs_extra_1.pathExists)(fp)))
48
- return { version: 1, iterations: {} };
49
- const raw = await (0, fs_extra_1.readFile)(fp, 'utf-8');
50
- const parsed = JSON.parse(raw);
51
- if (parsed && parsed.version === 1 && typeof parsed.iterations === 'object' && parsed.iterations) {
52
- return parsed;
53
- }
54
- }
55
- catch (e) {
56
- logger_1.logger.debug(`[chain] 状态文件读取失败,使用空状态: ${e.message}`);
57
- }
58
- return { version: 1, iterations: {} };
59
- }
60
- async function saveStateFile(state) {
61
- try {
62
- const fp = await getStateFilePath();
63
- await (0, fs_extra_1.writeFile)(fp, JSON.stringify(state, null, 2));
64
- }
65
- catch (e) {
66
- logger_1.logger.warn(`[chain] 状态文件写入失败: ${e.message}`);
67
- }
68
- }
69
- // ═══════════════════════════════════════════════════════════
70
- // 任务校验 + Prompt 构建
71
- // ═══════════════════════════════════════════════════════════
72
- /** 校验任务是否已完成(.meta/status = done/completed) */
73
- async function isTaskCompleted(task, iteration) {
74
- try {
75
- const iterDir = await (0, context_1.getIterationDir)(iteration);
76
- const statusPath = (0, path_1.join)(iterDir, '030-tasks', ...task.path
77
- ? [task.path.replace((0, path_1.join)(iterDir, '030-tasks'), '').replace(/^\//, '')]
78
- : [task.type, task.id], '.meta', 'status');
79
- if (await (0, fs_extra_1.pathExists)(statusPath)) {
80
- const status = (await (0, fs_extra_1.readFile)(statusPath, 'utf-8')).trim();
81
- return ['done', 'completed'].includes(status);
82
- }
83
- // 无 status 文件时回退 scanTasks 的解析结果
84
- return task.status === 'completed';
85
- }
86
- catch {
87
- return task.status === 'completed';
88
- }
89
- }
90
- /** 读取任务 spec 中声明的约束集 + 「需要写代码」标记(v8.3.308) */
91
- async function readSpecDeclarations(task, iteration) {
92
- try {
93
- const iterDir = await (0, context_1.getIterationDir)(iteration);
94
- const taskDir = task.path
95
- ? (0, path_1.join)(iterDir, '030-tasks', task.path.replace((0, path_1.join)(iterDir, '030-tasks'), '').replace(/^\//, ''))
96
- : (0, path_1.join)(iterDir, '030-tasks', task.type, task.id);
97
- const specFiles = ['00-specs/REQ.md', 'REQ.md', 'TASK.md'];
98
- for (const f of specFiles) {
99
- const p = (0, path_1.join)(taskDir, f);
100
- if (await (0, fs_extra_1.pathExists)(p)) {
101
- const content = await (0, fs_extra_1.readFile)(p, 'utf-8');
102
- return { constraints: (0, constraint_set_1.parseDeclaredConstraints)(content), needsCode: (0, task_type_registry_1.parseSpecCodeDeclaration)(content) };
103
- }
104
- }
105
- }
106
- catch { /* 忽略 */ }
107
- return { constraints: [], needsCode: false };
108
- }
109
- /**
110
- * v8.3.310+: 列出模块任务的子任务目录(第三层:含 TASK.md 或 .meta 的序号目录)。
111
- * scanTasks 只扫两层,第三层子任务不会被误认为独立任务——模块任务与单任务天然隔离。
112
- * feature 任务的 {端}/ 子目录不含 TASK.md/.meta(子任务在更深层),不会被误判。
113
- */
114
- async function listModuleSubtasks(task, iteration) {
115
- const iterDir = await (0, context_1.getIterationDir)(iteration);
116
- const taskDir = task.path || (0, path_1.join)(iterDir, '030-tasks', task.type, task.id);
117
- const RESERVED = new Set(['.meta', '00-specs', '_shared']);
118
- try {
119
- const entries = await (0, fs_extra_1.readdir)(taskDir, { withFileTypes: true });
120
- const subs = [];
121
- for (const e of entries) {
122
- if (!e.isDirectory() || RESERVED.has(e.name) || e.name.startsWith('.'))
123
- continue;
124
- const dir = (0, path_1.join)(taskDir, e.name);
125
- const hasArtifacts = (await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, 'TASK.md'))) || (await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, '.meta')));
126
- if (hasArtifacts)
127
- subs.push({ name: e.name, dir });
128
- }
129
- subs.sort((a, b) => a.name.localeCompare(b.name));
130
- return subs;
131
- }
132
- catch {
133
- return [];
134
- }
135
- }
136
- /** v8.3.310+: 是否为模块任务(--group 聚合创建,.meta/module-group = true) */
137
- async function isModuleTask(task, iteration) {
138
- try {
139
- const iterDir = await (0, context_1.getIterationDir)(iteration);
140
- const taskDir = task.path || (0, path_1.join)(iterDir, '030-tasks', task.type, task.id);
141
- const flag = (0, path_1.join)(taskDir, '.meta', 'module-group');
142
- if (await (0, fs_extra_1.pathExists)(flag)) {
143
- return (await (0, fs_extra_1.readFile)(flag, 'utf-8')).trim() === 'true';
144
- }
145
- }
146
- catch { /* 无标记按普通任务 */ }
147
- return false;
148
- }
149
- /** v8.3.310+: 子任务是否完成(子任务目录 .meta/status = done/completed) */
150
- async function isSubtaskDone(dir) {
151
- try {
152
- const statusPath = (0, path_1.join)(dir, '.meta', 'status');
153
- if (await (0, fs_extra_1.pathExists)(statusPath)) {
154
- const status = (await (0, fs_extra_1.readFile)(statusPath, 'utf-8')).trim();
155
- return ['done', 'completed'].includes(status);
156
- }
157
- }
158
- catch { /* 无状态文件按未完成 */ }
159
- return false;
160
- }
161
- /**
162
- * v8.3.310+: 构建模块子任务执行 prompt——模块公共约束(00-specs/CONSTRAINTS.md,
163
- * 每次执行前重新读取,修改即生效)+ 模块/子任务 spec 声明 + 全局约束集。
164
- */
165
- async function buildSubtaskPrompt(task, sub, iteration, attempt, lastError) {
166
- const def = await (0, task_type_registry_1.resolveTaskTypeDefinition)(task.type);
167
- const iterDir = await (0, context_1.getIterationDir)(iteration);
168
- const taskDir = task.path || (0, path_1.join)(iterDir, '030-tasks', task.type, task.id);
169
- // 约束来源:子任务 TASK.md 声明 ∪ 模块 00-specs/REQ.md 声明(按序去重)
170
- const declared = [];
171
- let needsCode = false;
172
- for (const p of [(0, path_1.join)(sub.dir, 'TASK.md'), (0, path_1.join)(taskDir, '00-specs', 'REQ.md')]) {
173
- if (await (0, fs_extra_1.pathExists)(p)) {
174
- const content = await (0, fs_extra_1.readFile)(p, 'utf-8');
175
- for (const c of (0, constraint_set_1.parseDeclaredConstraints)(content)) {
176
- if (c && !declared.includes(c))
177
- declared.push(c);
178
- }
179
- if ((0, task_type_registry_1.parseSpecCodeDeclaration)(content))
180
- needsCode = true;
181
- }
182
- }
183
- const effectiveDeclared = needsCode && !declared.includes('coding-standards')
184
- ? [...declared, 'coding-standards']
185
- : declared;
186
- const { items, missing } = await (0, constraint_set_1.loadConstraintSet)({ taskType: task.type, declared: effectiveDeclared });
187
- // 模块公共约束 spec(组内共享前提,落模块目录的公共位置)
188
- const moduleConstraintsPath = (0, path_1.join)(taskDir, '00-specs', 'CONSTRAINTS.md');
189
- let moduleConstraints = '';
190
- if (await (0, fs_extra_1.pathExists)(moduleConstraintsPath)) {
191
- moduleConstraints = (await (0, fs_extra_1.readFile)(moduleConstraintsPath, 'utf-8')).slice(0, 3000);
192
- }
193
- const subPathRel = sub.dir.replace(iterDir, '').replace(/^\//, '');
194
- const wantsCode = def.needsBranch || needsCode;
195
- const lines = [
196
- `# TaskChain 模块子任务: ${task.id}/${sub.name} — ${task.name || task.id}`,
197
- '',
198
- `- 任务类型: ${def.label}(${task.type}${def.builtin ? '' : ',自定义类型'})`,
199
- `- 所属模块: ${task.id}(${task.name || ''})`,
200
- `- 产出目录: ${def.outputDir}`,
201
- `- 验收方式: ${def.acceptance}`,
202
- `- 子任务目录: ${subPathRel}`,
203
- `- 执行形态: ${wantsCode ? '代码类(需创建 git 分支,产出写源码路径)' : '非代码类(不创建分支、不写源码,直接落盘产出目录)'}`,
204
- '',
205
- '## 执行要求',
206
- '',
207
- '1. 先读取子任务目录下的 TASK.md(本子任务的专属说明)',
208
- '2. 按任务类型产出对应交付物到产出目录',
209
- `3. 完成后将子任务目录 ${subPathRel} 下的 .meta/status 更新为 done`,
210
- '',
211
- ];
212
- if (moduleConstraints) {
213
- lines.push('## 📐 模块公共约束(组内共享前提,每次执行前重新读取)', '', moduleConstraints, '');
214
- }
215
- // 约束集注入(每次执行前重新加载)
216
- if (items.length > 0) {
217
- lines.push((0, constraint_set_1.formatConstraints)(items), '');
218
- }
219
- if (missing.length > 0) {
220
- lines.push(`> ⚠️ 声明的约束集文件缺失: ${missing.map(m => `${m}.md`).join(', ')}(.speccore/GLOBAL/CONSTRAINTS/)`, '');
221
- }
222
- if (attempt > 1) {
223
- lines.push(`## ⚠️ 第 ${attempt} 次尝试`, '');
224
- lines.push(`上次未通过验收。失败原因: ${lastError || '未记录'}`, '');
225
- lines.push('请修复问题后重新交付。', '');
226
- }
227
- return lines.join('\n');
228
- }
229
- /** 构建任务执行 prompt(含约束集注入 + 代码形态判定) */
230
- async function buildTaskPrompt(task, iteration, attempt, lastError) {
231
- // v8.3.308: resolveTaskTypeDefinition 支持用户自定义类型(内置 → 自定义定义文件 → 通用回退)
232
- const def = await (0, task_type_registry_1.resolveTaskTypeDefinition)(task.type);
233
- const { constraints: declared, needsCode } = await readSpecDeclarations(task, iteration);
234
- // spec 显式声明写代码 → 叠加编码约束(覆盖类型的默认无分支形态)
235
- const effectiveDeclared = needsCode && !declared.includes('coding-standards')
236
- ? [...declared, 'coding-standards']
237
- : declared;
238
- const { items, missing } = await (0, constraint_set_1.loadConstraintSet)({ taskType: task.type, declared: effectiveDeclared });
239
- const iterDir = await (0, context_1.getIterationDir)(iteration);
240
- const taskPathRel = task.path
241
- ? task.path.replace((0, path_1.join)(iterDir, '030-tasks'), '030-tasks').replace(/^\//, '')
242
- : `030-tasks/${task.type}/${task.id}`;
243
- // 代码形态判定:类型需要分支 OR spec 显式声明写代码
244
- const wantsCode = def.needsBranch || needsCode;
245
- const lines = [
246
- `# TaskChain 任务: ${task.id} — ${task.name || task.id}`,
247
- '',
248
- `- 任务类型: ${def.label}(${task.type}${def.builtin ? '' : ',自定义类型'})`,
249
- `- 产出目录: ${def.outputDir}`,
250
- `- 验收方式: ${def.acceptance}`,
251
- `- 任务目录: ${taskPathRel}`,
252
- `- 执行形态: ${wantsCode ? '代码类(需创建 git 分支,产出写源码路径)' : '非代码类(不创建分支、不写源码,直接落盘产出目录)'}`,
253
- '',
254
- '## 执行要求',
255
- '',
256
- '1. 先读取任务目录下的 spec 文档(REQ.md/TECH.md/TASK.md,存在即读)',
257
- '2. 按任务类型产出对应交付物到产出目录',
258
- '3. 完成后将任务目录下 .meta/status 更新为 done',
259
- '',
260
- ];
261
- // 约束集注入(每次执行前重新加载)
262
- if (items.length > 0) {
263
- lines.push((0, constraint_set_1.formatConstraints)(items), '');
264
- }
265
- if (missing.length > 0) {
266
- lines.push(`> ⚠️ 声明的约束集文件缺失: ${missing.map(m => `${m}.md`).join(', ')}(.speccore/GLOBAL/CONSTRAINTS/)`, '');
267
- }
268
- if (attempt > 1) {
269
- lines.push(`## ⚠️ 第 ${attempt} 次尝试`, '');
270
- lines.push(`上次未通过验收。失败原因: ${lastError || '未记录'}`, '');
271
- lines.push('请修复问题后重新交付。', '');
272
- }
273
- return lines.join('\n');
274
- }
275
- // ═══════════════════════════════════════════════════════════
276
- // 核心命令
277
- // ═══════════════════════════════════════════════════════════
278
- async function chainCommand(options) {
279
- const iteration = await (0, context_1.getDefaultIteration)(options.iteration);
280
- if (!iteration) {
281
- logger_1.logger.error('No active iteration found. Please specify --iteration.');
282
- return;
283
- }
284
- // ── --constraints: 列出可用约束集 ──
285
- if (options.constraints) {
286
- const names = await (0, constraint_set_1.listConstraintSets)();
287
- logger_1.logger.info('');
288
- logger_1.logger.info(`📐 已安装约束集(${names.length} 个,位于 .speccore/GLOBAL/CONSTRAINTS/):`);
289
- for (const name of names)
290
- logger_1.logger.info(` - ${name}`);
291
- if (names.length === 0) {
292
- logger_1.logger.info(' (无。运行 speccore init 生成内置约束集,或手动创建 {约束名}.md)');
293
- }
294
- return;
295
- }
296
- const stateFile = await loadStateFile();
297
- const iterState = stateFile.iterations[iteration] || (stateFile.iterations[iteration] = {});
298
- // ── --reset: 重置链状态 ──
299
- if (options.reset) {
300
- delete stateFile.iterations[iteration];
301
- await saveStateFile(stateFile);
302
- logger_1.logger.success(`✅ 链状态已重置(${iteration})`);
303
- return;
304
- }
305
- // ── 扫描任务 + 过滤 + 拓扑排序 ──
306
- let tasks = await (0, state_1.scanTasks)(iteration);
307
- if (tasks.length === 0) {
308
- logger_1.logger.warn('No tasks found in iteration');
309
- return;
310
- }
311
- if (options.type) {
312
- const types = options.type.split(',').map(t => t.trim()).filter(Boolean);
313
- const before = tasks.length;
314
- tasks = tasks.filter(t => types.includes(t.type));
315
- if (tasks.length < before)
316
- logger_1.logger.info(`🎯 类型筛选「${options.type}」: ${before} → ${tasks.length} 个任务`);
317
- }
318
- const sorted = (0, state_1.topologicalSort)(tasks);
319
- // ── --status: 查看链状态 ──
320
- if (options.status) {
321
- const doneCount = sorted.filter(t => iterState[t.id]?.status === 'done' || t.status === 'completed').length;
322
- const failedCount = sorted.filter(t => iterState[t.id]?.status === 'failed').length;
323
- const total = sorted.length;
324
- logger_1.logger.info('');
325
- logger_1.logger.info(`⛓️ TaskChain 状态 — ${iteration}(${doneCount}/${total} 完成,${failedCount} 失败)`);
326
- logger_1.logger.info('');
327
- for (const t of sorted) {
328
- const st = iterState[t.id]?.status || t.status;
329
- const icon = st === 'done' || t.status === 'completed' ? '✅' : st === 'failed' ? '❌' : '⏳';
330
- // v8.3.308: 自定义类型也解析出 label
331
- const label = (await (0, task_type_registry_1.resolveTaskTypeDefinition)(t.type)).label;
332
- logger_1.logger.info(` ${icon} ${t.id} [${label}] ${t.name || ''}`);
333
- }
334
- return;
335
- }
336
- // ── 推进循环:逐个校验任务状态,找到第一个未完成的任务 ──
337
- const done = [];
338
- const failed = [];
339
- const failedErrors = {};
340
- const now = new Date().toISOString();
341
- const limit = options.limit && options.limit > 0 ? options.limit : 0;
342
- let advancedCount = 0;
343
- for (const task of sorted) {
344
- // v8.3.308: 开放类型——任何类型(含用户自定义)都走 chain;
345
- // 未知类型按通用非代码定义执行(不建分支、不写源码),spec code: true 才切代码形态
346
- const st = iterState[task.id];
347
- // ── v8.3.310+: 模块任务(--group 聚合)——展开子任务序列,逐个推进 ──
348
- if (await isModuleTask(task, iteration)) {
349
- const subs = await listModuleSubtasks(task, iteration);
350
- const pending = [];
351
- for (const s of subs) {
352
- if (!(await isSubtaskDone(s.dir)))
353
- pending.push(s);
354
- }
355
- const iterDir2 = await (0, context_1.getIterationDir)(iteration);
356
- const taskDir2 = task.path || (0, path_1.join)(iterDir2, '030-tasks', task.type, task.id);
357
- if (subs.length > 0 && pending.length === 0) {
358
- // 全部子任务完成 → 模块完成(同步 .meta/status 供其他命令识别)
359
- try {
360
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir2, '.meta', 'status'), 'done');
361
- }
362
- catch { /* 忽略 */ }
363
- iterState[task.id] = { status: 'done', attempt: st?.attempt ?? 1, updatedAt: now };
364
- done.push(task.id);
365
- logger_1.logger.info(`[chain] 模块任务 ${task.id} 全部子任务完成(${subs.length}/${subs.length})`);
366
- continue;
367
- }
368
- // 尝试上限 = 子任务数 × 2(每个子任务最多 2 次推进尝试)
369
- const prevAttempt = st?.attempt ?? 0;
370
- const maxAttempts = Math.max(subs.length * 2, 2);
371
- if (prevAttempt >= maxAttempts) {
372
- iterState[task.id] = { status: 'failed', attempt: prevAttempt, lastError: `模块子任务未全部完成(${pending.length}/${subs.length} 待完成)`, updatedAt: now };
373
- failed.push(task.id);
374
- failedErrors[task.id] = `模块子任务未全部完成(${pending.length}/${subs.length} 待完成)`;
375
- continue;
376
- }
377
- const nextAttempt = prevAttempt + 1;
378
- iterState[task.id] = { attempt: nextAttempt, lastError: undefined, updatedAt: now };
379
- await saveStateFile(stateFile);
380
- const sub = pending[0];
381
- const prompt = await buildSubtaskPrompt(task, sub, iteration, nextAttempt, prevAttempt > 0 ? `上次执行后仍有 ${pending.length}/${subs.length} 个子任务未完成` : undefined);
382
- const def2 = await (0, task_type_registry_1.resolveTaskTypeDefinition)(task.type);
383
- await (0, notification_1.sendNotification)(process.cwd(), {
384
- type: 'task_status_changed',
385
- title: `TaskChain 开始执行 ${task.id}/${sub.name}`,
386
- message: `${def2.label} — ${sub.name}(模块 ${task.name || task.id},第 ${nextAttempt} 次推进)`,
387
- iteration,
388
- task: task.id,
389
- }).catch(() => { });
390
- logger_1.logger.info(`[chain] 模块 ${task.id} 下一子任务: ${sub.name}(第 ${nextAttempt}/${maxAttempts} 次推进,${pending.length}/${subs.length} 待完成)`);
391
- process.stdout.write(prompt);
392
- process.exitCode = 10;
393
- return;
394
- }
395
- // 已标记失败:校验是否已手动修复
396
- if (st?.status === 'failed') {
397
- const completed = await isTaskCompleted(task, iteration);
398
- if (completed) {
399
- iterState[task.id] = { status: 'done', attempt: st.attempt, updatedAt: now };
400
- done.push(task.id);
401
- logger_1.logger.info(`[chain] 任务 ${task.id} 已修复,恢复为完成`);
402
- }
403
- else {
404
- failed.push(task.id);
405
- failedErrors[task.id] = st.lastError || '任务未完成';
406
- }
407
- continue;
408
- }
409
- // 校验任务完成状态
410
- const completed = await isTaskCompleted(task, iteration);
411
- if (completed) {
412
- iterState[task.id] = { status: 'done', attempt: st?.attempt ?? 1, updatedAt: now };
413
- done.push(task.id);
414
- continue;
415
- }
416
- // 尝试次数限制(最多 2 次尝试)
417
- const prevAttempt = st?.attempt ?? 0;
418
- if (prevAttempt >= 2) {
419
- iterState[task.id] = { status: 'failed', attempt: prevAttempt, lastError: '任务未完成(重试超限)', updatedAt: now };
420
- failed.push(task.id);
421
- failedErrors[task.id] = '任务未完成(重试超限)';
422
- continue;
423
- }
424
- // 产出下一个任务的 prompt
425
- const nextAttempt = prevAttempt + 1;
426
- iterState[task.id] = { attempt: nextAttempt, lastError: undefined, updatedAt: now };
427
- await saveStateFile(stateFile);
428
- const prompt = await buildTaskPrompt(task, iteration, nextAttempt, prevAttempt > 0 ? '上次执行未将 .meta/status 更新为 done' : undefined);
429
- // 开始执行通知
430
- const def = await (0, task_type_registry_1.resolveTaskTypeDefinition)(task.type);
431
- await (0, notification_1.sendNotification)(process.cwd(), {
432
- type: 'task_status_changed',
433
- title: `TaskChain 开始执行 ${task.id}`,
434
- message: `${def.label} — ${task.name || ''}(第 ${nextAttempt} 次尝试)`,
435
- iteration,
436
- task: task.id,
437
- }).catch(() => { });
438
- logger_1.logger.info(`[chain] 下一任务: ${task.id}(第 ${nextAttempt}/2 次尝试)`);
439
- process.stdout.write(prompt);
440
- process.exitCode = 10;
441
- return;
442
- }
443
- await saveStateFile(stateFile);
444
- // ── 全部完成:汇总报告 + 通知 ──
445
- const summary = {
446
- iteration,
447
- done: done.length,
448
- failed: failed.length,
449
- total: done.length + failed.length,
450
- };
451
- logger_1.logger.info('');
452
- logger_1.logger.info('╔══════════════════════════════════════════════╗');
453
- logger_1.logger.info('║ 🎉 TaskChain 任务链完成 ║');
454
- logger_1.logger.info('╚══════════════════════════════════════════════╝');
455
- logger_1.logger.info(` 迭代: ${iteration}`);
456
- logger_1.logger.info(` 完成: ${summary.done} / ${summary.total}${summary.failed > 0 ? `(${summary.failed} 失败)` : ''}`);
457
- if (summary.failed > 0) {
458
- logger_1.logger.info('');
459
- logger_1.logger.warn(' 失败任务:');
460
- for (const id of Object.keys(failedErrors)) {
461
- logger_1.logger.warn(` ❌ ${id}: ${failedErrors[id]}`);
462
- }
463
- }
464
- await (0, notification_1.sendNotification)(process.cwd(), {
465
- type: 'task_status_changed',
466
- title: `TaskChain 执行完成(${iteration})`,
467
- message: `完成 ${summary.done}/${summary.total}${summary.failed > 0 ? `,失败 ${summary.failed}` : ''}`,
468
- iteration,
469
- }).catch(() => { });
470
- }
471
- /**
472
- * chain 子命令注册(由 cli.ts 调用)
473
- */
474
- function registerChainCommand(program) {
475
- const chainCmd = program
476
- .command('chain')
477
- .alias('ch')
478
- .description('TaskChain 无人值守任务链:拓扑调度 + 约束集注入 + 断点续跑');
479
- chainCmd
480
- .command('run')
481
- .description('推进任务链:输出下一任务 prompt(宿主 AI 执行后重复调用直至完成)')
482
- .option('-i, --iteration <iteration>', '目标迭代')
483
- .option('--type <types>', '只执行指定类型(逗号分隔: feature,bugfix,refactor,research,doc,script,data)')
484
- .option('--limit <n>', '本轮最多推进的任务数')
485
- .action((opts) => chainCommand({ ...opts }));
486
- chainCmd
487
- .command('status')
488
- .description('查看任务链状态')
489
- .option('-i, --iteration <iteration>', '目标迭代')
490
- .action((opts) => chainCommand({ ...opts, status: true }));
491
- chainCmd
492
- .command('reset')
493
- .description('重置任务链状态')
494
- .option('-i, --iteration <iteration>', '目标迭代')
495
- .action((opts) => chainCommand({ ...opts, reset: true }));
496
- chainCmd
497
- .command('constraints')
498
- .description('列出已安装的约束集')
499
- .action((opts) => chainCommand({ ...opts, constraints: true }));
500
- }
501
- //# sourceMappingURL=chain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/commands/chain.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export interface ClarifyOptions {
2
- input?: string;
3
- from?: string;
4
- to?: string;
5
- prompt?: boolean;
6
- apply?: string;
7
- check?: string;
8
- force?: boolean;
9
- extractUnits?: boolean;
10
- unit?: string;
11
- consolidate?: boolean;
12
- resumeUnits?: boolean;
13
- local?: boolean;
14
- promote?: string;
15
- }
16
- export declare function clarifyCommand(options: ClarifyOptions): Promise<void>;
17
- //# sourceMappingURL=clarify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clarify.d.ts","sourceRoot":"","sources":["../../src/commands/clarify.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8S3E"}