@accelerator-mzq/forge 1.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.
Files changed (663) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-THIRD-PARTY.md +50 -0
  3. package/README.md +159 -0
  4. package/dist/cli/commands/ack.d.ts +7 -0
  5. package/dist/cli/commands/ack.d.ts.map +1 -0
  6. package/dist/cli/commands/ack.js +223 -0
  7. package/dist/cli/commands/ack.js.map +1 -0
  8. package/dist/cli/commands/archive.d.ts +44 -0
  9. package/dist/cli/commands/archive.d.ts.map +1 -0
  10. package/dist/cli/commands/archive.js +689 -0
  11. package/dist/cli/commands/archive.js.map +1 -0
  12. package/dist/cli/commands/backlog.d.ts +3 -0
  13. package/dist/cli/commands/backlog.d.ts.map +1 -0
  14. package/dist/cli/commands/backlog.js +55 -0
  15. package/dist/cli/commands/backlog.js.map +1 -0
  16. package/dist/cli/commands/config.d.ts +3 -0
  17. package/dist/cli/commands/config.d.ts.map +1 -0
  18. package/dist/cli/commands/config.js +107 -0
  19. package/dist/cli/commands/config.js.map +1 -0
  20. package/dist/cli/commands/evidence.d.ts +7 -0
  21. package/dist/cli/commands/evidence.d.ts.map +1 -0
  22. package/dist/cli/commands/evidence.js +662 -0
  23. package/dist/cli/commands/evidence.js.map +1 -0
  24. package/dist/cli/commands/finding.d.ts +3 -0
  25. package/dist/cli/commands/finding.d.ts.map +1 -0
  26. package/dist/cli/commands/finding.js +93 -0
  27. package/dist/cli/commands/finding.js.map +1 -0
  28. package/dist/cli/commands/init.d.ts +3 -0
  29. package/dist/cli/commands/init.d.ts.map +1 -0
  30. package/dist/cli/commands/init.js +126 -0
  31. package/dist/cli/commands/init.js.map +1 -0
  32. package/dist/cli/commands/legacy-bridge.d.ts +11 -0
  33. package/dist/cli/commands/legacy-bridge.d.ts.map +1 -0
  34. package/dist/cli/commands/legacy-bridge.js +586 -0
  35. package/dist/cli/commands/legacy-bridge.js.map +1 -0
  36. package/dist/cli/commands/migrate.d.ts +3 -0
  37. package/dist/cli/commands/migrate.d.ts.map +1 -0
  38. package/dist/cli/commands/migrate.js +34 -0
  39. package/dist/cli/commands/migrate.js.map +1 -0
  40. package/dist/cli/commands/monitor.d.ts +3 -0
  41. package/dist/cli/commands/monitor.d.ts.map +1 -0
  42. package/dist/cli/commands/monitor.js +113 -0
  43. package/dist/cli/commands/monitor.js.map +1 -0
  44. package/dist/cli/commands/preflight.d.ts +7 -0
  45. package/dist/cli/commands/preflight.d.ts.map +1 -0
  46. package/dist/cli/commands/preflight.js +63 -0
  47. package/dist/cli/commands/preflight.js.map +1 -0
  48. package/dist/cli/commands/scope.d.ts +3 -0
  49. package/dist/cli/commands/scope.d.ts.map +1 -0
  50. package/dist/cli/commands/scope.js +32 -0
  51. package/dist/cli/commands/scope.js.map +1 -0
  52. package/dist/cli/commands/stage-extensions.d.ts +45 -0
  53. package/dist/cli/commands/stage-extensions.d.ts.map +1 -0
  54. package/dist/cli/commands/stage-extensions.js +590 -0
  55. package/dist/cli/commands/stage-extensions.js.map +1 -0
  56. package/dist/cli/commands/update.d.ts +3 -0
  57. package/dist/cli/commands/update.d.ts.map +1 -0
  58. package/dist/cli/commands/update.js +98 -0
  59. package/dist/cli/commands/update.js.map +1 -0
  60. package/dist/cli/commands/upgrade.d.ts +3 -0
  61. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  62. package/dist/cli/commands/upgrade.js +277 -0
  63. package/dist/cli/commands/upgrade.js.map +1 -0
  64. package/dist/cli/commands/validate.d.ts +3 -0
  65. package/dist/cli/commands/validate.d.ts.map +1 -0
  66. package/dist/cli/commands/validate.js +66 -0
  67. package/dist/cli/commands/validate.js.map +1 -0
  68. package/dist/cli/index.d.ts +3 -0
  69. package/dist/cli/index.d.ts.map +1 -0
  70. package/dist/cli/index.js +69 -0
  71. package/dist/cli/index.js.map +1 -0
  72. package/dist/core/ack-log.d.ts +107 -0
  73. package/dist/core/ack-log.d.ts.map +1 -0
  74. package/dist/core/ack-log.js +197 -0
  75. package/dist/core/ack-log.js.map +1 -0
  76. package/dist/core/archive/ack-log-consistency.d.ts +15 -0
  77. package/dist/core/archive/ack-log-consistency.d.ts.map +1 -0
  78. package/dist/core/archive/ack-log-consistency.js +164 -0
  79. package/dist/core/archive/ack-log-consistency.js.map +1 -0
  80. package/dist/core/archive/fence.d.ts +66 -0
  81. package/dist/core/archive/fence.d.ts.map +1 -0
  82. package/dist/core/archive/fence.js +218 -0
  83. package/dist/core/archive/fence.js.map +1 -0
  84. package/dist/core/archive/index.d.ts +4 -0
  85. package/dist/core/archive/index.d.ts.map +1 -0
  86. package/dist/core/archive/index.js +6 -0
  87. package/dist/core/archive/index.js.map +1 -0
  88. package/dist/core/archive/legacy-exemption.d.ts +14 -0
  89. package/dist/core/archive/legacy-exemption.d.ts.map +1 -0
  90. package/dist/core/archive/legacy-exemption.js +82 -0
  91. package/dist/core/archive/legacy-exemption.js.map +1 -0
  92. package/dist/core/archive/lock.d.ts +46 -0
  93. package/dist/core/archive/lock.d.ts.map +1 -0
  94. package/dist/core/archive/lock.js +98 -0
  95. package/dist/core/archive/lock.js.map +1 -0
  96. package/dist/core/archive/pause-decisions-fence.d.ts +13 -0
  97. package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -0
  98. package/dist/core/archive/pause-decisions-fence.js +384 -0
  99. package/dist/core/archive/pause-decisions-fence.js.map +1 -0
  100. package/dist/core/archive/process-evidence-fence.d.ts +110 -0
  101. package/dist/core/archive/process-evidence-fence.d.ts.map +1 -0
  102. package/dist/core/archive/process-evidence-fence.js +449 -0
  103. package/dist/core/archive/process-evidence-fence.js.map +1 -0
  104. package/dist/core/archive/process-evidence-rerun.d.ts +9 -0
  105. package/dist/core/archive/process-evidence-rerun.d.ts.map +1 -0
  106. package/dist/core/archive/process-evidence-rerun.js +238 -0
  107. package/dist/core/archive/process-evidence-rerun.js.map +1 -0
  108. package/dist/core/archive/recover-prompt.d.ts +10 -0
  109. package/dist/core/archive/recover-prompt.d.ts.map +1 -0
  110. package/dist/core/archive/recover-prompt.js +29 -0
  111. package/dist/core/archive/recover-prompt.js.map +1 -0
  112. package/dist/core/archive/recover.d.ts +83 -0
  113. package/dist/core/archive/recover.d.ts.map +1 -0
  114. package/dist/core/archive/recover.js +219 -0
  115. package/dist/core/archive/recover.js.map +1 -0
  116. package/dist/core/archive/resume-summary.d.ts +22 -0
  117. package/dist/core/archive/resume-summary.d.ts.map +1 -0
  118. package/dist/core/archive/resume-summary.js +82 -0
  119. package/dist/core/archive/resume-summary.js.map +1 -0
  120. package/dist/core/archive/summary-builder.d.ts +28 -0
  121. package/dist/core/archive/summary-builder.d.ts.map +1 -0
  122. package/dist/core/archive/summary-builder.js +287 -0
  123. package/dist/core/archive/summary-builder.js.map +1 -0
  124. package/dist/core/archive/summary-render.d.ts +8 -0
  125. package/dist/core/archive/summary-render.d.ts.map +1 -0
  126. package/dist/core/archive/summary-render.js +64 -0
  127. package/dist/core/archive/summary-render.js.map +1 -0
  128. package/dist/core/archive/three-level-fence.d.ts +10 -0
  129. package/dist/core/archive/three-level-fence.d.ts.map +1 -0
  130. package/dist/core/archive/three-level-fence.js +93 -0
  131. package/dist/core/archive/three-level-fence.js.map +1 -0
  132. package/dist/core/archive/transaction.d.ts +41 -0
  133. package/dist/core/archive/transaction.d.ts.map +1 -0
  134. package/dist/core/archive/transaction.js +184 -0
  135. package/dist/core/archive/transaction.js.map +1 -0
  136. package/dist/core/archive/verify-findings-fence.d.ts +11 -0
  137. package/dist/core/archive/verify-findings-fence.d.ts.map +1 -0
  138. package/dist/core/archive/verify-findings-fence.js +80 -0
  139. package/dist/core/archive/verify-findings-fence.js.map +1 -0
  140. package/dist/core/archive/version-retrograde-fence.d.ts +10 -0
  141. package/dist/core/archive/version-retrograde-fence.d.ts.map +1 -0
  142. package/dist/core/archive/version-retrograde-fence.js +103 -0
  143. package/dist/core/archive/version-retrograde-fence.js.map +1 -0
  144. package/dist/core/artifact-graph/builder.d.ts +16 -0
  145. package/dist/core/artifact-graph/builder.d.ts.map +1 -0
  146. package/dist/core/artifact-graph/builder.js +32 -0
  147. package/dist/core/artifact-graph/builder.js.map +1 -0
  148. package/dist/core/artifact-graph/index.d.ts +3 -0
  149. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  150. package/dist/core/artifact-graph/index.js +4 -0
  151. package/dist/core/artifact-graph/index.js.map +1 -0
  152. package/dist/core/artifact-graph/types.d.ts +14 -0
  153. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  154. package/dist/core/artifact-graph/types.js +2 -0
  155. package/dist/core/artifact-graph/types.js.map +1 -0
  156. package/dist/core/backlog/assets/backlog-readme.md +11 -0
  157. package/dist/core/backlog/index.d.ts +20 -0
  158. package/dist/core/backlog/index.d.ts.map +1 -0
  159. package/dist/core/backlog/index.js +60 -0
  160. package/dist/core/backlog/index.js.map +1 -0
  161. package/dist/core/backlog/render.d.ts +51 -0
  162. package/dist/core/backlog/render.d.ts.map +1 -0
  163. package/dist/core/backlog/render.js +196 -0
  164. package/dist/core/backlog/render.js.map +1 -0
  165. package/dist/core/bootstrap/index.d.ts +2 -0
  166. package/dist/core/bootstrap/index.d.ts.map +1 -0
  167. package/dist/core/bootstrap/index.js +5 -0
  168. package/dist/core/bootstrap/index.js.map +1 -0
  169. package/dist/core/canonical-json.d.ts +11 -0
  170. package/dist/core/canonical-json.d.ts.map +1 -0
  171. package/dist/core/canonical-json.js +43 -0
  172. package/dist/core/canonical-json.js.map +1 -0
  173. package/dist/core/git/utils.d.ts +27 -0
  174. package/dist/core/git/utils.d.ts.map +1 -0
  175. package/dist/core/git/utils.js +53 -0
  176. package/dist/core/git/utils.js.map +1 -0
  177. package/dist/core/harness-adapters/claude.d.ts +13 -0
  178. package/dist/core/harness-adapters/claude.d.ts.map +1 -0
  179. package/dist/core/harness-adapters/claude.js +53 -0
  180. package/dist/core/harness-adapters/claude.js.map +1 -0
  181. package/dist/core/harness-adapters/codex.d.ts +14 -0
  182. package/dist/core/harness-adapters/codex.d.ts.map +1 -0
  183. package/dist/core/harness-adapters/codex.js +60 -0
  184. package/dist/core/harness-adapters/codex.js.map +1 -0
  185. package/dist/core/harness-adapters/detector.d.ts +15 -0
  186. package/dist/core/harness-adapters/detector.d.ts.map +1 -0
  187. package/dist/core/harness-adapters/detector.js +45 -0
  188. package/dist/core/harness-adapters/detector.js.map +1 -0
  189. package/dist/core/harness-adapters/hash-compare.d.ts +21 -0
  190. package/dist/core/harness-adapters/hash-compare.d.ts.map +1 -0
  191. package/dist/core/harness-adapters/hash-compare.js +49 -0
  192. package/dist/core/harness-adapters/hash-compare.js.map +1 -0
  193. package/dist/core/harness-adapters/index.d.ts +8 -0
  194. package/dist/core/harness-adapters/index.d.ts.map +1 -0
  195. package/dist/core/harness-adapters/index.js +8 -0
  196. package/dist/core/harness-adapters/index.js.map +1 -0
  197. package/dist/core/harness-adapters/interface.d.ts +52 -0
  198. package/dist/core/harness-adapters/interface.d.ts.map +1 -0
  199. package/dist/core/harness-adapters/interface.js +3 -0
  200. package/dist/core/harness-adapters/interface.js.map +1 -0
  201. package/dist/core/harness-adapters/legacy-detector.d.ts +14 -0
  202. package/dist/core/harness-adapters/legacy-detector.d.ts.map +1 -0
  203. package/dist/core/harness-adapters/legacy-detector.js +83 -0
  204. package/dist/core/harness-adapters/legacy-detector.js.map +1 -0
  205. package/dist/core/harness-adapters/transaction.d.ts +12 -0
  206. package/dist/core/harness-adapters/transaction.d.ts.map +1 -0
  207. package/dist/core/harness-adapters/transaction.js +113 -0
  208. package/dist/core/harness-adapters/transaction.js.map +1 -0
  209. package/dist/core/harness-adapters/types.d.ts +45 -0
  210. package/dist/core/harness-adapters/types.d.ts.map +1 -0
  211. package/dist/core/harness-adapters/types.js +3 -0
  212. package/dist/core/harness-adapters/types.js.map +1 -0
  213. package/dist/core/hash/content.d.ts +10 -0
  214. package/dist/core/hash/content.d.ts.map +1 -0
  215. package/dist/core/hash/content.js +131 -0
  216. package/dist/core/hash/content.js.map +1 -0
  217. package/dist/core/hash/diff.d.ts +26 -0
  218. package/dist/core/hash/diff.d.ts.map +1 -0
  219. package/dist/core/hash/diff.js +40 -0
  220. package/dist/core/hash/diff.js.map +1 -0
  221. package/dist/core/hash/index.d.ts +6 -0
  222. package/dist/core/hash/index.d.ts.map +1 -0
  223. package/dist/core/hash/index.js +7 -0
  224. package/dist/core/hash/index.js.map +1 -0
  225. package/dist/core/hash/log.d.ts +7 -0
  226. package/dist/core/hash/log.d.ts.map +1 -0
  227. package/dist/core/hash/log.js +14 -0
  228. package/dist/core/hash/log.js.map +1 -0
  229. package/dist/core/hash/tasks.d.ts +9 -0
  230. package/dist/core/hash/tasks.d.ts.map +1 -0
  231. package/dist/core/hash/tasks.js +20 -0
  232. package/dist/core/hash/tasks.js.map +1 -0
  233. package/dist/core/legacy-bridge/ack.d.ts +30 -0
  234. package/dist/core/legacy-bridge/ack.d.ts.map +1 -0
  235. package/dist/core/legacy-bridge/ack.js +133 -0
  236. package/dist/core/legacy-bridge/ack.js.map +1 -0
  237. package/dist/core/legacy-bridge/anchors.d.ts +15 -0
  238. package/dist/core/legacy-bridge/anchors.d.ts.map +1 -0
  239. package/dist/core/legacy-bridge/anchors.js +119 -0
  240. package/dist/core/legacy-bridge/anchors.js.map +1 -0
  241. package/dist/core/legacy-bridge/budget.d.ts +39 -0
  242. package/dist/core/legacy-bridge/budget.d.ts.map +1 -0
  243. package/dist/core/legacy-bridge/budget.js +83 -0
  244. package/dist/core/legacy-bridge/budget.js.map +1 -0
  245. package/dist/core/legacy-bridge/conflict.d.ts +44 -0
  246. package/dist/core/legacy-bridge/conflict.d.ts.map +1 -0
  247. package/dist/core/legacy-bridge/conflict.js +105 -0
  248. package/dist/core/legacy-bridge/conflict.js.map +1 -0
  249. package/dist/core/legacy-bridge/diff-report.d.ts +14 -0
  250. package/dist/core/legacy-bridge/diff-report.d.ts.map +1 -0
  251. package/dist/core/legacy-bridge/diff-report.js +105 -0
  252. package/dist/core/legacy-bridge/diff-report.js.map +1 -0
  253. package/dist/core/legacy-bridge/encoding.d.ts +42 -0
  254. package/dist/core/legacy-bridge/encoding.d.ts.map +1 -0
  255. package/dist/core/legacy-bridge/encoding.js +104 -0
  256. package/dist/core/legacy-bridge/encoding.js.map +1 -0
  257. package/dist/core/legacy-bridge/excel.d.ts +32 -0
  258. package/dist/core/legacy-bridge/excel.d.ts.map +1 -0
  259. package/dist/core/legacy-bridge/excel.js +124 -0
  260. package/dist/core/legacy-bridge/excel.js.map +1 -0
  261. package/dist/core/legacy-bridge/hash-anchor.d.ts +23 -0
  262. package/dist/core/legacy-bridge/hash-anchor.d.ts.map +1 -0
  263. package/dist/core/legacy-bridge/hash-anchor.js +55 -0
  264. package/dist/core/legacy-bridge/hash-anchor.js.map +1 -0
  265. package/dist/core/legacy-bridge/indexer.d.ts +28 -0
  266. package/dist/core/legacy-bridge/indexer.d.ts.map +1 -0
  267. package/dist/core/legacy-bridge/indexer.js +145 -0
  268. package/dist/core/legacy-bridge/indexer.js.map +1 -0
  269. package/dist/core/legacy-bridge/mapper.d.ts +40 -0
  270. package/dist/core/legacy-bridge/mapper.d.ts.map +1 -0
  271. package/dist/core/legacy-bridge/mapper.js +241 -0
  272. package/dist/core/legacy-bridge/mapper.js.map +1 -0
  273. package/dist/core/legacy-bridge/quality-judge.d.ts +65 -0
  274. package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -0
  275. package/dist/core/legacy-bridge/quality-judge.js +277 -0
  276. package/dist/core/legacy-bridge/quality-judge.js.map +1 -0
  277. package/dist/core/legacy-bridge/redact.d.ts +28 -0
  278. package/dist/core/legacy-bridge/redact.d.ts.map +1 -0
  279. package/dist/core/legacy-bridge/redact.js +121 -0
  280. package/dist/core/legacy-bridge/redact.js.map +1 -0
  281. package/dist/core/legacy-bridge/regenerator.d.ts +50 -0
  282. package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -0
  283. package/dist/core/legacy-bridge/regenerator.js +193 -0
  284. package/dist/core/legacy-bridge/regenerator.js.map +1 -0
  285. package/dist/core/legacy-bridge/resolve.d.ts +28 -0
  286. package/dist/core/legacy-bridge/resolve.d.ts.map +1 -0
  287. package/dist/core/legacy-bridge/resolve.js +75 -0
  288. package/dist/core/legacy-bridge/resolve.js.map +1 -0
  289. package/dist/core/legacy-bridge/sync-check.d.ts +47 -0
  290. package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -0
  291. package/dist/core/legacy-bridge/sync-check.js +198 -0
  292. package/dist/core/legacy-bridge/sync-check.js.map +1 -0
  293. package/dist/core/legacy-bridge/types.d.ts +114 -0
  294. package/dist/core/legacy-bridge/types.d.ts.map +1 -0
  295. package/dist/core/legacy-bridge/types.js +4 -0
  296. package/dist/core/legacy-bridge/types.js.map +1 -0
  297. package/dist/core/markers/index.d.ts +3 -0
  298. package/dist/core/markers/index.d.ts.map +1 -0
  299. package/dist/core/markers/index.js +3 -0
  300. package/dist/core/markers/index.js.map +1 -0
  301. package/dist/core/markers/parse.d.ts +12 -0
  302. package/dist/core/markers/parse.d.ts.map +1 -0
  303. package/dist/core/markers/parse.js +31 -0
  304. package/dist/core/markers/parse.js.map +1 -0
  305. package/dist/core/markers/types.d.ts +142 -0
  306. package/dist/core/markers/types.d.ts.map +1 -0
  307. package/dist/core/markers/types.js +3 -0
  308. package/dist/core/markers/types.js.map +1 -0
  309. package/dist/core/migrate/ack.d.ts +13 -0
  310. package/dist/core/migrate/ack.d.ts.map +1 -0
  311. package/dist/core/migrate/ack.js +62 -0
  312. package/dist/core/migrate/ack.js.map +1 -0
  313. package/dist/core/migrate/archive-detect.d.ts +19 -0
  314. package/dist/core/migrate/archive-detect.d.ts.map +1 -0
  315. package/dist/core/migrate/archive-detect.js +89 -0
  316. package/dist/core/migrate/archive-detect.js.map +1 -0
  317. package/dist/core/migrate/budget.d.ts +7 -0
  318. package/dist/core/migrate/budget.d.ts.map +1 -0
  319. package/dist/core/migrate/budget.js +25 -0
  320. package/dist/core/migrate/budget.js.map +1 -0
  321. package/dist/core/migrate/conflict.d.ts +49 -0
  322. package/dist/core/migrate/conflict.d.ts.map +1 -0
  323. package/dist/core/migrate/conflict.js +99 -0
  324. package/dist/core/migrate/conflict.js.map +1 -0
  325. package/dist/core/migrate/index.d.ts +7 -0
  326. package/dist/core/migrate/index.d.ts.map +1 -0
  327. package/dist/core/migrate/index.js +389 -0
  328. package/dist/core/migrate/index.js.map +1 -0
  329. package/dist/core/migrate/markdown-aware.d.ts +27 -0
  330. package/dist/core/migrate/markdown-aware.d.ts.map +1 -0
  331. package/dist/core/migrate/markdown-aware.js +112 -0
  332. package/dist/core/migrate/markdown-aware.js.map +1 -0
  333. package/dist/core/migrate/quality.d.ts +66 -0
  334. package/dist/core/migrate/quality.d.ts.map +1 -0
  335. package/dist/core/migrate/quality.js +302 -0
  336. package/dist/core/migrate/quality.js.map +1 -0
  337. package/dist/core/migrate/regenerate.d.ts +24 -0
  338. package/dist/core/migrate/regenerate.d.ts.map +1 -0
  339. package/dist/core/migrate/regenerate.js +145 -0
  340. package/dist/core/migrate/regenerate.js.map +1 -0
  341. package/dist/core/migrate/report.d.ts +36 -0
  342. package/dist/core/migrate/report.d.ts.map +1 -0
  343. package/dist/core/migrate/report.js +154 -0
  344. package/dist/core/migrate/report.js.map +1 -0
  345. package/dist/core/migrate/sources/index.d.ts +4 -0
  346. package/dist/core/migrate/sources/index.d.ts.map +1 -0
  347. package/dist/core/migrate/sources/index.js +17 -0
  348. package/dist/core/migrate/sources/index.js.map +1 -0
  349. package/dist/core/migrate/sources/openspec.d.ts +14 -0
  350. package/dist/core/migrate/sources/openspec.d.ts.map +1 -0
  351. package/dist/core/migrate/sources/openspec.js +453 -0
  352. package/dist/core/migrate/sources/openspec.js.map +1 -0
  353. package/dist/core/migrate/sources/superpowers.d.ts +12 -0
  354. package/dist/core/migrate/sources/superpowers.d.ts.map +1 -0
  355. package/dist/core/migrate/sources/superpowers.js +310 -0
  356. package/dist/core/migrate/sources/superpowers.js.map +1 -0
  357. package/dist/core/migrate/types.d.ts +183 -0
  358. package/dist/core/migrate/types.d.ts.map +1 -0
  359. package/dist/core/migrate/types.js +5 -0
  360. package/dist/core/migrate/types.js.map +1 -0
  361. package/dist/core/migrate/utils.d.ts +2 -0
  362. package/dist/core/migrate/utils.d.ts.map +1 -0
  363. package/dist/core/migrate/utils.js +28 -0
  364. package/dist/core/migrate/utils.js.map +1 -0
  365. package/dist/core/monitor/artifact-observer.d.ts +9 -0
  366. package/dist/core/monitor/artifact-observer.d.ts.map +1 -0
  367. package/dist/core/monitor/artifact-observer.js +180 -0
  368. package/dist/core/monitor/artifact-observer.js.map +1 -0
  369. package/dist/core/monitor/config.d.ts +16 -0
  370. package/dist/core/monitor/config.d.ts.map +1 -0
  371. package/dist/core/monitor/config.js +48 -0
  372. package/dist/core/monitor/config.js.map +1 -0
  373. package/dist/core/monitor/divergence-map.d.ts +5 -0
  374. package/dist/core/monitor/divergence-map.d.ts.map +1 -0
  375. package/dist/core/monitor/divergence-map.js +92 -0
  376. package/dist/core/monitor/divergence-map.js.map +1 -0
  377. package/dist/core/monitor/exit-handler.d.ts +6 -0
  378. package/dist/core/monitor/exit-handler.d.ts.map +1 -0
  379. package/dist/core/monitor/exit-handler.js +27 -0
  380. package/dist/core/monitor/exit-handler.js.map +1 -0
  381. package/dist/core/monitor/health-verdict.d.ts +9 -0
  382. package/dist/core/monitor/health-verdict.d.ts.map +1 -0
  383. package/dist/core/monitor/health-verdict.js +55 -0
  384. package/dist/core/monitor/health-verdict.js.map +1 -0
  385. package/dist/core/monitor/report-renderer.d.ts +4 -0
  386. package/dist/core/monitor/report-renderer.d.ts.map +1 -0
  387. package/dist/core/monitor/report-renderer.js +82 -0
  388. package/dist/core/monitor/report-renderer.js.map +1 -0
  389. package/dist/core/monitor/trace-store.d.ts +39 -0
  390. package/dist/core/monitor/trace-store.d.ts.map +1 -0
  391. package/dist/core/monitor/trace-store.js +130 -0
  392. package/dist/core/monitor/trace-store.js.map +1 -0
  393. package/dist/core/monitor/types.d.ts +63 -0
  394. package/dist/core/monitor/types.d.ts.map +1 -0
  395. package/dist/core/monitor/types.js +26 -0
  396. package/dist/core/monitor/types.js.map +1 -0
  397. package/dist/core/parse/design.d.ts +14 -0
  398. package/dist/core/parse/design.d.ts.map +1 -0
  399. package/dist/core/parse/design.js +17 -0
  400. package/dist/core/parse/design.js.map +1 -0
  401. package/dist/core/parse/fenced-yaml.d.ts +18 -0
  402. package/dist/core/parse/fenced-yaml.d.ts.map +1 -0
  403. package/dist/core/parse/fenced-yaml.js +45 -0
  404. package/dist/core/parse/fenced-yaml.js.map +1 -0
  405. package/dist/core/parse/index.d.ts +7 -0
  406. package/dist/core/parse/index.d.ts.map +1 -0
  407. package/dist/core/parse/index.js +8 -0
  408. package/dist/core/parse/index.js.map +1 -0
  409. package/dist/core/parse/markdown.d.ts +30 -0
  410. package/dist/core/parse/markdown.d.ts.map +1 -0
  411. package/dist/core/parse/markdown.js +66 -0
  412. package/dist/core/parse/markdown.js.map +1 -0
  413. package/dist/core/parse/proposal.d.ts +18 -0
  414. package/dist/core/parse/proposal.d.ts.map +1 -0
  415. package/dist/core/parse/proposal.js +22 -0
  416. package/dist/core/parse/proposal.js.map +1 -0
  417. package/dist/core/parse/specs.d.ts +25 -0
  418. package/dist/core/parse/specs.d.ts.map +1 -0
  419. package/dist/core/parse/specs.js +58 -0
  420. package/dist/core/parse/specs.js.map +1 -0
  421. package/dist/core/parse/tasks.d.ts +33 -0
  422. package/dist/core/parse/tasks.d.ts.map +1 -0
  423. package/dist/core/parse/tasks.js +82 -0
  424. package/dist/core/parse/tasks.js.map +1 -0
  425. package/dist/core/parse/yaml.d.ts +13 -0
  426. package/dist/core/parse/yaml.d.ts.map +1 -0
  427. package/dist/core/parse/yaml.js +39 -0
  428. package/dist/core/parse/yaml.js.map +1 -0
  429. package/dist/core/process-evidence-freeze-warnings.d.ts +24 -0
  430. package/dist/core/process-evidence-freeze-warnings.d.ts.map +1 -0
  431. package/dist/core/process-evidence-freeze-warnings.js +153 -0
  432. package/dist/core/process-evidence-freeze-warnings.js.map +1 -0
  433. package/dist/core/schema/index.d.ts +5 -0
  434. package/dist/core/schema/index.d.ts.map +1 -0
  435. package/dist/core/schema/index.js +6 -0
  436. package/dist/core/schema/index.js.map +1 -0
  437. package/dist/core/schema/model-tiers-config.d.ts +41 -0
  438. package/dist/core/schema/model-tiers-config.d.ts.map +1 -0
  439. package/dist/core/schema/model-tiers-config.js +85 -0
  440. package/dist/core/schema/model-tiers-config.js.map +1 -0
  441. package/dist/core/schema/process-verification-config.d.ts +18 -0
  442. package/dist/core/schema/process-verification-config.d.ts.map +1 -0
  443. package/dist/core/schema/process-verification-config.js +74 -0
  444. package/dist/core/schema/process-verification-config.js.map +1 -0
  445. package/dist/core/schema/stage-extensions-config.d.ts +28 -0
  446. package/dist/core/schema/stage-extensions-config.d.ts.map +1 -0
  447. package/dist/core/schema/stage-extensions-config.js +228 -0
  448. package/dist/core/schema/stage-extensions-config.js.map +1 -0
  449. package/dist/core/schema/types.d.ts +262 -0
  450. package/dist/core/schema/types.d.ts.map +1 -0
  451. package/dist/core/schema/types.js +51 -0
  452. package/dist/core/schema/types.js.map +1 -0
  453. package/dist/core/schema/writing-plans-config.d.ts +11 -0
  454. package/dist/core/schema/writing-plans-config.d.ts.map +1 -0
  455. package/dist/core/schema/writing-plans-config.js +40 -0
  456. package/dist/core/schema/writing-plans-config.js.map +1 -0
  457. package/dist/core/schemas/archive-summary.d.ts +131 -0
  458. package/dist/core/schemas/archive-summary.d.ts.map +1 -0
  459. package/dist/core/schemas/archive-summary.js +31 -0
  460. package/dist/core/schemas/archive-summary.js.map +1 -0
  461. package/dist/core/schemas/process-evidence.d.ts +156 -0
  462. package/dist/core/schemas/process-evidence.d.ts.map +1 -0
  463. package/dist/core/schemas/process-evidence.js +12 -0
  464. package/dist/core/schemas/process-evidence.js.map +1 -0
  465. package/dist/core/schemas/scope-entries.d.ts +68 -0
  466. package/dist/core/schemas/scope-entries.d.ts.map +1 -0
  467. package/dist/core/schemas/scope-entries.js +47 -0
  468. package/dist/core/schemas/scope-entries.js.map +1 -0
  469. package/dist/core/schemas/severity.d.ts +58 -0
  470. package/dist/core/schemas/severity.d.ts.map +1 -0
  471. package/dist/core/schemas/severity.js +26 -0
  472. package/dist/core/schemas/severity.js.map +1 -0
  473. package/dist/core/scope/aggregator.d.ts +49 -0
  474. package/dist/core/scope/aggregator.d.ts.map +1 -0
  475. package/dist/core/scope/aggregator.js +141 -0
  476. package/dist/core/scope/aggregator.js.map +1 -0
  477. package/dist/core/scope/index.d.ts +2 -0
  478. package/dist/core/scope/index.d.ts.map +1 -0
  479. package/dist/core/scope/index.js +2 -0
  480. package/dist/core/scope/index.js.map +1 -0
  481. package/dist/core/specs-sync/apply.d.ts +8 -0
  482. package/dist/core/specs-sync/apply.d.ts.map +1 -0
  483. package/dist/core/specs-sync/apply.js +26 -0
  484. package/dist/core/specs-sync/apply.js.map +1 -0
  485. package/dist/core/specs-sync/deltas.d.ts +15 -0
  486. package/dist/core/specs-sync/deltas.d.ts.map +1 -0
  487. package/dist/core/specs-sync/deltas.js +27 -0
  488. package/dist/core/specs-sync/deltas.js.map +1 -0
  489. package/dist/core/specs-sync/index.d.ts +3 -0
  490. package/dist/core/specs-sync/index.d.ts.map +1 -0
  491. package/dist/core/specs-sync/index.js +4 -0
  492. package/dist/core/specs-sync/index.js.map +1 -0
  493. package/dist/core/stage-extensions/convergence-judge.d.ts +35 -0
  494. package/dist/core/stage-extensions/convergence-judge.d.ts.map +1 -0
  495. package/dist/core/stage-extensions/convergence-judge.js +47 -0
  496. package/dist/core/stage-extensions/convergence-judge.js.map +1 -0
  497. package/dist/core/stage-extensions/index.d.ts +13 -0
  498. package/dist/core/stage-extensions/index.d.ts.map +1 -0
  499. package/dist/core/stage-extensions/index.js +11 -0
  500. package/dist/core/stage-extensions/index.js.map +1 -0
  501. package/dist/core/stage-extensions/output-watcher.d.ts +93 -0
  502. package/dist/core/stage-extensions/output-watcher.d.ts.map +1 -0
  503. package/dist/core/stage-extensions/output-watcher.js +163 -0
  504. package/dist/core/stage-extensions/output-watcher.js.map +1 -0
  505. package/dist/core/stage-extensions/severity-mapper.d.ts +21 -0
  506. package/dist/core/stage-extensions/severity-mapper.d.ts.map +1 -0
  507. package/dist/core/stage-extensions/severity-mapper.js +26 -0
  508. package/dist/core/stage-extensions/severity-mapper.js.map +1 -0
  509. package/dist/core/stage-extensions/state-machine.d.ts +43 -0
  510. package/dist/core/stage-extensions/state-machine.d.ts.map +1 -0
  511. package/dist/core/stage-extensions/state-machine.js +19 -0
  512. package/dist/core/stage-extensions/state-machine.js.map +1 -0
  513. package/dist/core/stage-extensions/thread-map.d.ts +60 -0
  514. package/dist/core/stage-extensions/thread-map.d.ts.map +1 -0
  515. package/dist/core/stage-extensions/thread-map.js +107 -0
  516. package/dist/core/stage-extensions/thread-map.js.map +1 -0
  517. package/dist/core/stage-extensions/trend-analyzer.d.ts +29 -0
  518. package/dist/core/stage-extensions/trend-analyzer.d.ts.map +1 -0
  519. package/dist/core/stage-extensions/trend-analyzer.js +60 -0
  520. package/dist/core/stage-extensions/trend-analyzer.js.map +1 -0
  521. package/dist/core/stage-extensions/types.d.ts +39 -0
  522. package/dist/core/stage-extensions/types.d.ts.map +1 -0
  523. package/dist/core/stage-extensions/types.js +5 -0
  524. package/dist/core/stage-extensions/types.js.map +1 -0
  525. package/dist/core/staging-lock.d.ts +36 -0
  526. package/dist/core/staging-lock.d.ts.map +1 -0
  527. package/dist/core/staging-lock.js +122 -0
  528. package/dist/core/staging-lock.js.map +1 -0
  529. package/dist/core/templates/commands/ack-confirm.md +32 -0
  530. package/dist/core/templates/commands/apply.md +220 -0
  531. package/dist/core/templates/commands/archive.md +178 -0
  532. package/dist/core/templates/commands/brainstorm.md +58 -0
  533. package/dist/core/templates/commands/codex-adversarial.md +95 -0
  534. package/dist/core/templates/commands/explore.md +29 -0
  535. package/dist/core/templates/commands/index.d.ts +12 -0
  536. package/dist/core/templates/commands/index.d.ts.map +1 -0
  537. package/dist/core/templates/commands/index.js +26 -0
  538. package/dist/core/templates/commands/index.js.map +1 -0
  539. package/dist/core/templates/commands/propose.md +90 -0
  540. package/dist/core/templates/commands/review.md +105 -0
  541. package/dist/core/templates/commands/upgrade.md +58 -0
  542. package/dist/core/templates/commands/verify.md +186 -0
  543. package/dist/core/templates/index.d.ts +3 -0
  544. package/dist/core/templates/index.d.ts.map +1 -0
  545. package/dist/core/templates/index.js +5 -0
  546. package/dist/core/templates/index.js.map +1 -0
  547. package/dist/core/templates/skills/_shared/scope-category-guidance.md +40 -0
  548. package/dist/core/templates/skills/brainstorming.md +161 -0
  549. package/dist/core/templates/skills/dispatching-parallel-agents.md +209 -0
  550. package/dist/core/templates/skills/exploring.md +476 -0
  551. package/dist/core/templates/skills/finishing-a-development-branch.md +251 -0
  552. package/dist/core/templates/skills/index.d.ts +17 -0
  553. package/dist/core/templates/skills/index.d.ts.map +1 -0
  554. package/dist/core/templates/skills/index.js +53 -0
  555. package/dist/core/templates/skills/index.js.map +1 -0
  556. package/dist/core/templates/skills/process-evidence.md +146 -0
  557. package/dist/core/templates/skills/receiving-code-review.md +294 -0
  558. package/dist/core/templates/skills/requesting-code-review.md +108 -0
  559. package/dist/core/templates/skills/subagent-driven-development.md +405 -0
  560. package/dist/core/templates/skills/subagent-driven-discipline/references/codex-tools.md +72 -0
  561. package/dist/core/templates/skills/subagent-driven-discipline/references/opencode-tools.md +104 -0
  562. package/dist/core/templates/skills/subagent-driven-discipline.md +725 -0
  563. package/dist/core/templates/skills/systematic-debugging.md +297 -0
  564. package/dist/core/templates/skills/test-driven-development.md +402 -0
  565. package/dist/core/templates/skills/using-forge.md +163 -0
  566. package/dist/core/templates/skills/using-git-worktrees.md +229 -0
  567. package/dist/core/templates/skills/verification-before-completion.md +175 -0
  568. package/dist/core/templates/skills/verifying-three-dimensions.md +245 -0
  569. package/dist/core/templates/skills/writing-plans.md +259 -0
  570. package/dist/core/templates/skills/writing-skills.md +214 -0
  571. package/dist/core/test-reporters/index.d.ts +41 -0
  572. package/dist/core/test-reporters/index.d.ts.map +1 -0
  573. package/dist/core/test-reporters/index.js +39 -0
  574. package/dist/core/test-reporters/index.js.map +1 -0
  575. package/dist/core/test-reporters/junit.d.ts +8 -0
  576. package/dist/core/test-reporters/junit.d.ts.map +1 -0
  577. package/dist/core/test-reporters/junit.js +94 -0
  578. package/dist/core/test-reporters/junit.js.map +1 -0
  579. package/dist/core/test-reporters/tap.d.ts +18 -0
  580. package/dist/core/test-reporters/tap.d.ts.map +1 -0
  581. package/dist/core/test-reporters/tap.js +73 -0
  582. package/dist/core/test-reporters/tap.js.map +1 -0
  583. package/dist/core/test-reporters/vitest-json.d.ts +8 -0
  584. package/dist/core/test-reporters/vitest-json.d.ts.map +1 -0
  585. package/dist/core/test-reporters/vitest-json.js +56 -0
  586. package/dist/core/test-reporters/vitest-json.js.map +1 -0
  587. package/dist/core/upgrade/resign-markers.d.ts +14 -0
  588. package/dist/core/upgrade/resign-markers.d.ts.map +1 -0
  589. package/dist/core/upgrade/resign-markers.js +245 -0
  590. package/dist/core/upgrade/resign-markers.js.map +1 -0
  591. package/dist/core/validate/archive-summary-schema.d.ts +8 -0
  592. package/dist/core/validate/archive-summary-schema.d.ts.map +1 -0
  593. package/dist/core/validate/archive-summary-schema.js +186 -0
  594. package/dist/core/validate/archive-summary-schema.js.map +1 -0
  595. package/dist/core/validate/auto-findings.d.ts +36 -0
  596. package/dist/core/validate/auto-findings.d.ts.map +1 -0
  597. package/dist/core/validate/auto-findings.js +38 -0
  598. package/dist/core/validate/auto-findings.js.map +1 -0
  599. package/dist/core/validate/candidate-validators.d.ts +22 -0
  600. package/dist/core/validate/candidate-validators.d.ts.map +1 -0
  601. package/dist/core/validate/candidate-validators.js +46 -0
  602. package/dist/core/validate/candidate-validators.js.map +1 -0
  603. package/dist/core/validate/change.d.ts +3 -0
  604. package/dist/core/validate/change.d.ts.map +1 -0
  605. package/dist/core/validate/change.js +205 -0
  606. package/dist/core/validate/change.js.map +1 -0
  607. package/dist/core/validate/coverage-gap.d.ts +37 -0
  608. package/dist/core/validate/coverage-gap.d.ts.map +1 -0
  609. package/dist/core/validate/coverage-gap.js +181 -0
  610. package/dist/core/validate/coverage-gap.js.map +1 -0
  611. package/dist/core/validate/finding-hash.d.ts +14 -0
  612. package/dist/core/validate/finding-hash.d.ts.map +1 -0
  613. package/dist/core/validate/finding-hash.js +29 -0
  614. package/dist/core/validate/finding-hash.js.map +1 -0
  615. package/dist/core/validate/index.d.ts +15 -0
  616. package/dist/core/validate/index.d.ts.map +1 -0
  617. package/dist/core/validate/index.js +19 -0
  618. package/dist/core/validate/index.js.map +1 -0
  619. package/dist/core/validate/marker-integrity.d.ts +28 -0
  620. package/dist/core/validate/marker-integrity.d.ts.map +1 -0
  621. package/dist/core/validate/marker-integrity.js +170 -0
  622. package/dist/core/validate/marker-integrity.js.map +1 -0
  623. package/dist/core/validate/marker-schema.d.ts +10 -0
  624. package/dist/core/validate/marker-schema.d.ts.map +1 -0
  625. package/dist/core/validate/marker-schema.js +661 -0
  626. package/dist/core/validate/marker-schema.js.map +1 -0
  627. package/dist/core/validate/orphan-tmp.d.ts +13 -0
  628. package/dist/core/validate/orphan-tmp.d.ts.map +1 -0
  629. package/dist/core/validate/orphan-tmp.js +49 -0
  630. package/dist/core/validate/orphan-tmp.js.map +1 -0
  631. package/dist/core/validate/proposal.d.ts +4 -0
  632. package/dist/core/validate/proposal.d.ts.map +1 -0
  633. package/dist/core/validate/proposal.js +40 -0
  634. package/dist/core/validate/proposal.js.map +1 -0
  635. package/dist/core/validate/scope-entries.d.ts +23 -0
  636. package/dist/core/validate/scope-entries.d.ts.map +1 -0
  637. package/dist/core/validate/scope-entries.js +108 -0
  638. package/dist/core/validate/scope-entries.js.map +1 -0
  639. package/dist/core/validate/specs.d.ts +4 -0
  640. package/dist/core/validate/specs.d.ts.map +1 -0
  641. package/dist/core/validate/specs.js +74 -0
  642. package/dist/core/validate/specs.js.map +1 -0
  643. package/dist/core/validate/tasks.d.ts +4 -0
  644. package/dist/core/validate/tasks.d.ts.map +1 -0
  645. package/dist/core/validate/tasks.js +48 -0
  646. package/dist/core/validate/tasks.js.map +1 -0
  647. package/dist/core/validate/test-failure-stub.d.ts +23 -0
  648. package/dist/core/validate/test-failure-stub.d.ts.map +1 -0
  649. package/dist/core/validate/test-failure-stub.js +21 -0
  650. package/dist/core/validate/test-failure-stub.js.map +1 -0
  651. package/dist/core/validate/types.d.ts +33 -0
  652. package/dist/core/validate/types.d.ts.map +1 -0
  653. package/dist/core/validate/types.js +20 -0
  654. package/dist/core/validate/types.js.map +1 -0
  655. package/dist/core/worktree.d.ts +52 -0
  656. package/dist/core/worktree.d.ts.map +1 -0
  657. package/dist/core/worktree.js +145 -0
  658. package/dist/core/worktree.js.map +1 -0
  659. package/dist/index.d.ts +12 -0
  660. package/dist/index.d.ts.map +1 -0
  661. package/dist/index.js +14 -0
  662. package/dist/index.js.map +1 -0
  663. package/package.json +82 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 msc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,50 @@
1
+ # Third-Party Licenses
2
+
3
+ Forge 包含来自以下开源项目的代码或文本(均为 MIT,允许复制再分发):
4
+
5
+ ## superpowers (https://github.com/obra/superpowers) — MIT
6
+
7
+ Forge 的 `src/core/templates/skills/` 下 12 个 skill markdown 文本(下表)均改自 superpowers 仓库 `skills/<name>/SKILL.md`,做了 namespace 改名(`superpowers:` → `forge:`)和产物路径改写(`docs/superpowers/specs|plans/` → `forge/drafts|changes/<id>/`)。原文行文、红旗清单、反模式表、流程图保持原样以保留原作者 tuning。
8
+
9
+ | Forge 文件 | superpowers 源文件 |
10
+ | ----------------------------------- | ------------------------------------------------ |
11
+ | `using-forge.md` | `skills/using-superpowers/SKILL.md` |
12
+ | `brainstorming.md` | `skills/brainstorming/SKILL.md` |
13
+ | `writing-plans.md` | `skills/writing-plans/SKILL.md` |
14
+ | `subagent-driven-development.md` | `skills/subagent-driven-development/SKILL.md` |
15
+ | `test-driven-development.md` | `skills/test-driven-development/SKILL.md` |
16
+ | `requesting-code-review.md` | `skills/requesting-code-review/SKILL.md` |
17
+ | `receiving-code-review.md` | `skills/receiving-code-review/SKILL.md` |
18
+ | `verification-before-completion.md` | `skills/verification-before-completion/SKILL.md` |
19
+ | `systematic-debugging.md` | `skills/systematic-debugging/SKILL.md` |
20
+ | `dispatching-parallel-agents.md` | `skills/dispatching-parallel-agents/SKILL.md` |
21
+ | `using-git-worktrees.md` | `skills/using-git-worktrees/SKILL.md` |
22
+ | `finishing-a-development-branch.md` | `skills/finishing-a-development-branch/SKILL.md` |
23
+
24
+ ```
25
+ MIT License
26
+
27
+ Copyright (c) 2025 Jesse Vincent and superpowers contributors
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining a copy
30
+ of this software and associated documentation files (the "Software"), to deal
31
+ in the Software without restriction, including without limitation the rights
32
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
33
+ copies of the Software, and to permit persons to whom the Software is
34
+ furnished to do so, subject to the following conditions:
35
+
36
+ The above copyright notice and this permission notice shall be included in all
37
+ copies or substantial portions of the Software.
38
+
39
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
42
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
43
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
44
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
45
+ SOFTWARE.
46
+ ```
47
+
48
+ ## OpenSpec (https://github.com/Fission-AI/OpenSpec) — MIT
49
+
50
+ Forge 的产物结构(proposal/specs/design/tasks)、归档机制、`forge/config.yaml` 配置注入设计借鉴自 OpenSpec。Forge 未直接复制 OpenSpec 代码,仅参考其设计模式,因此本节仅作设计致谢,无具体文件 attribution。
package/README.md ADDED
@@ -0,0 +1,159 @@
1
+ # Forge
2
+
3
+ [![CI](https://github.com/Accelerator-mzq/forge/actions/workflows/ci.yml/badge.svg)](https://github.com/Accelerator-mzq/forge/actions/workflows/ci.yml)
4
+ [![version](https://img.shields.io/github/package-json/v/Accelerator-mzq/forge)](https://github.com/Accelerator-mzq/forge/releases)
5
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
+
7
+ > **v1.1** 三 harness AI 工作流 plugin。融合 [OpenSpec](https://github.com/Fission-AI/OpenSpec) 产物驱动工作流 + [superpowers](https://github.com/obra/superpowers) 行为塑造 skill,**外加 v1.0 反向加固协议(三级 severity / 三维 verify / 三级 fence / ack 两步)防 AI 在 spec 阶段偷懒**。
8
+
9
+ ```bash
10
+ # Tier 1 — Claude Code(全功能,推荐)
11
+ /plugin marketplace add Accelerator-mzq/forge
12
+ /plugin install forge@accelerator-mzq-forge
13
+ ```
14
+
15
+ OpenCode + Codex 见 [`docs/installation.md`](docs/installation.md)。
16
+
17
+ ## TL;DR(5 分钟跑通)
18
+
19
+ ```bash
20
+ # 1. 装 plugin(Tier 1 Claude Code)
21
+ mkdir my-todo-app && cd my-todo-app && git init && touch .gitignore
22
+ claude # 启动 Claude Code 会话
23
+
24
+ # 在 Claude Code 会话里:
25
+ /plugin marketplace add Accelerator-mzq/forge
26
+ /plugin install forge@accelerator-mzq-forge
27
+ /exit && claude # 重启,SessionStart hook 注入 skill + slash 命令
28
+ ```
29
+
30
+ 主流程 6 步(每步对应一个 marker 产出):
31
+
32
+ ```
33
+ 我想做个 todo list 应用 # → forge/drafts/<date>-todo-list.md(brainstorm)
34
+ /forge:propose add-todo --from-draft <date>-todo-list
35
+ # → forge/changes/add-todo/{proposal,specs/,design,tasks}.md
36
+ /forge:apply # → tasks.md 末尾 applied_commits YAML
37
+ /forge:review # → forge/changes/add-todo/.review-passed
38
+ /forge:verify # → forge/changes/add-todo/.verify-passed
39
+ /forge:archive # → forge/changes/archive/<date>-add-todo/
40
+ ```
41
+
42
+ 完整端到端演练 + Bug fix 快速路径见 [`docs/getting-started.md`](docs/getting-started.md)(含 [Bug fix 快速路径](docs/getting-started.md#bug-fix-快速路径) C1/C2 决策表)。
43
+
44
+ ## 核心交付 — v1.0+ 协议体系
45
+
46
+ forge 不只是把 superpowers skill 搬到三 harness。v1.0 **fusion completion** 加了 9 块反向加固协议(plan-9a..9j),防 AI 在 spec / verify / archive 三阶段偷懒。
47
+
48
+ ### 1. 主流程 6 步 + 9 slash 命令
49
+
50
+ `/forge:brainstorm` → `/forge:propose` → `/forge:apply` → `/forge:review` → `/forge:verify` → `/forge:archive`。
51
+
52
+ 横切命令:`/forge:explore`(非线性思考空间)、`/forge:ack-confirm`(WARNING 两步 ack)、`/forge:upgrade`(legacy 清理 + marker 重签)。
53
+
54
+ 每步产强校验 marker,后续阶段读 marker 的 `tasks_hash` / `content_hash` / `git.diff_hash` 验证未漂移(`src/core/markers/types.ts`)。
55
+
56
+ ### 2. 反向加固协议(forge 区别于上游的核心增量)
57
+
58
+ - **三级 severity + critical_candidate**:CRITICAL automated(测试 fail / hash mismatch / coverage_gap 等)**不可 ack 降级**,JCS SHA256 `finding_hash` 兜底重算拒签(`src/core/schemas/severity.ts`,plan-9a)
59
+ - **ack 两步协议**:WARNING 必须走 `forge ack propose` + `/forge:ack-confirm` 两步,AI 自 ack 不存在;archive fence 校验 `.ack-log.jsonl` 一致性(`src/cli/commands/ack.ts`)
60
+ - **三维 verify**:Completeness(spec 覆盖度 grep)+ Correctness(`file:line` 映射)+ Coherence(design 决策追溯),取代 v0.4 "测试 pass" 二值判定(`skills/verifying-three-dimensions/SKILL.md`,plan-9d)
61
+ - **三级 archive fence**:critical 硬墙(必修)/ warning ack(必两步确认)/ suggestion soft(聚合到 `archive_summary.handoff_to_backlog`)(`src/core/archive/three-level-fence.ts`,plan-9e1)
62
+
63
+ ### 3. 横切协议(主流程外的工具)
64
+
65
+ - **Fluid Pause**:apply 中段 subagent 报告非 CRITICAL issue → 主代理弹四选项(扩 scope / 加 task / out-of-scope / Other)等用户决策;CRITICAL 仍走强 fence 拒签(`commands/apply.md` §"Fluid Pause Decision Point",plan-9c)
66
+ - **exploring**:`/forge:explore` 非线性思考空间,**禁止直接写 artifact**,只给 `file:section` 具体 capture offer 等用户明确确认(`skills/exploring/SKILL.md`,plan-9f)
67
+ - **process_evidence**:14 不变量 + worktree 重跑 + reporter parser;`forge evidence record-tdd/verify/review` + `freeze` 凝固到 marker(`skills/process-evidence/SKILL.md`,plan-9g)
68
+ - **Out-of-Scope / Future Work / Non-Goals YAML 块** + `forge scope scan-archived-followups` 跨 change backlog 聚合(plan-9b)
69
+
70
+ ### 5. Stage Extensions Framework(plan-stage-extensions-framework)
71
+
72
+ - **`stage_extensions` framework**:forge core 通用 stage-level extension runner,在 5 个 stage 挂钩调用外部工具(codex review / adversarial / 自定义 extension),多轮收敛协议由 AI 主代理驱动;CLI runner 永远 exit 0(loose,不阻塞主流程)
73
+ - **codex review 预置 extension**:code-review mode(JSON 输出)+ adversarial mode(Markdown 输出),severity 四级映射(critical/high/medium/low → BLOCKER/MAJOR/MINOR/NIT),block 桶非空 = 未收敛,三选项 AskUserQuestion(auto_fix / manual_fix / give_up)
74
+ - **thread map + 趋势分析**:同 stage 复用 codex thread context;`analyze-trend` 机械计算收敛趋势,辅助用户决策是否继续轮次
75
+ - v1 Tier 1 Claude Code only;Tier 2/3 接口预留(`scripts/codex-review-helper.mjs` harness-agnostic)
76
+
77
+ 文档:[`docs/stage-extensions.md`](docs/stage-extensions.md) + [`docs/codex-review.md`](docs/codex-review.md)
78
+
79
+ ### 4. 实施纪律(plan-9h)
80
+
81
+ - **`forge preflight branch-check`**:防 main/master 分支误改(exit 2 + 要求 `--allow-protected-branch` 显式绕过)
82
+ - **Critical Plan Review**:主代理 dispatch subagent 前对 4 件套跑完整性/顺序/清晰度/scope 四维度检查,**不允许 vague pass-through**(`commands/apply.md:24-41`)
83
+ - **Main Agent STOP Triggers**:5 触发表防"绕过失败 task / 修改 task 描述让它能过 / 重试 ≥3 次不停下"(`.claude/skills/subagent-driven-development/SKILL.md`)
84
+
85
+ ## 安装(三 harness)
86
+
87
+ | Harness | 状态 | 入口 |
88
+ | --------------- | ---------------------------------------------------------------------- | ------------------------------------------------------ |
89
+ | **Claude Code** | Tier 1 ENABLE(全功能 — skill auto-trigger + 9 slash 命令 + CLI helper) | [`docs/claude-install.md`](docs/claude-install.md) |
90
+ | **OpenCode** | Tier 2 PARTIAL_SHIP(skills + skill-driven CLI;commands 不支持) | [`docs/opencode-install.md`](docs/opencode-install.md) |
91
+ | **Codex** | Tier 3 PARTIAL_SHIP(同 OpenCode) | [`docs/codex-install.md`](docs/codex-install.md) |
92
+
93
+ 总览 + 选哪个 tier 见 [`docs/installation.md`](docs/installation.md)。
94
+
95
+ ## CLI 命令(14 个顶层子命令)
96
+
97
+ 按业务分组,详见 [`docs/cli-reference.md`](docs/cli-reference.md):
98
+
99
+ **主流程**:`forge init`(v0.3 deprecated,v1.2 移除)/ `validate` / `archive`
100
+
101
+ **反向加固协议(v1.0+)**:`ack propose/confirm/reject`(plan-9a)/ `evidence record-tdd/verify/review` + `freeze`(plan-9g)/ `scope scan-archived-followups`(plan-9b)/ `finding hash`(plan-9d)/ `preflight branch-check`(plan-9h)
102
+
103
+ **Stage Extensions**:`stage-extensions run`(单轮 codex review 执行器)/ `stage-extensions analyze-trend`(收敛趋势分析)(plan-stage-extensions-framework)
104
+
105
+ **迁移与升级**:`migrate openspec/superpowers`(v0.4)/ `legacy-bridge`(v0.2 brownfield)/ `upgrade` + `--resign-markers`(plan-9j marker 重签)
106
+
107
+ **杂项**:`config` / `update`
108
+
109
+ ## 迁移与升级
110
+
111
+ **从已有项目搬过来**(v0.4+):
112
+
113
+ ```bash
114
+ forge migrate openspec # 默认 --regenerate(LLM 补缺件,估价 ≥ $5 需 ack)
115
+ forge migrate superpowers # design+plan 配对成 forge change
116
+ ```
117
+
118
+ 加 `--no-regenerate` 跳过 LLM,失败件标 `[needs-fix]` 后续手补 / 重跑。详见 [`docs/migration/from-openspec.md`](docs/migration/from-openspec.md) + [`from-superpowers.md`](docs/migration/from-superpowers.md)。
119
+
120
+ **升级既有 forge 项目**(v0.x → v1.1):
121
+
122
+ ```bash
123
+ forge upgrade # 5 阶段事务(SCAN→SHOW DIFF→ASK→STASH→VERIFY→COMMIT)
124
+ forge upgrade --recover # 24h 内还原
125
+ forge upgrade --resign-markers <changeId> # plan-9j v1.0+ marker 重签(legacy 13 不变量精确豁免)
126
+ ```
127
+
128
+ 详见 [`docs/migration/v0.2-to-v0.3.md`](docs/migration/v0.2-to-v0.3.md);v0.3 → v1.1 路径待补单独文档。
129
+
130
+ ## 状态 + 文档导航
131
+
132
+ **v1.2.0** released 2026-05-15(`CHANGELOG.md:11`):
133
+
134
+ - 本地 5 命令(`typecheck` / `lint` / `format:check` / `build` / `test`)全 0
135
+ - **1115 tests pass**(`CHANGELOG.md:23`)
136
+ - 自动化 skill eval(`pnpm eval`,`forge-eval/scenarios/` 双轨 baseline)
137
+ - 16 skill + 9 slash 命令 + 14 CLI 子命令
138
+
139
+ **v1.0 fusion completion** 经 Codex CLI(gpt-5.4-codex)累计 5+ 轮对抗性 review(跨 10 sub-plan)+ Opus subagent 多轮自检,共修 200+ 条问题;**v1.1 polish leftover** 经 Codex 七轮 review 累计 32 finding 全处置(0 严重 / 0 阻塞 / 0 Major)。
140
+
141
+ **文档导航**:
142
+
143
+ - [`docs/getting-started.md`](docs/getting-started.md) — v1.1 端到端工作流 + Bug fix 快速路径
144
+ - [`docs/cli-reference.md`](docs/cli-reference.md) — 14 CLI 子命令完整参数 + 退出码
145
+ - [`docs/installation.md`](docs/installation.md) — 三 harness 安装总览
146
+ - [`docs/stage-extensions.md`](docs/stage-extensions.md) — stage-extensions framework 协议文档 + config schema + troubleshooting
147
+ - [`docs/codex-review.md`](docs/codex-review.md) — codex review 预置 extension 用户指南
148
+ - [`docs/migration/`](docs/migration/) — OpenSpec / superpowers 迁移 + 版本升级
149
+ - [`docs/specs/2026-05-10-v1.0-fusion-completion-design.md`](docs/specs/2026-05-10-v1.0-fusion-completion-design.md) — v1.0 fusion 21 决策权威 spec
150
+ - [`docs/plans/`](docs/plans/) — plan-9a..9j + plan-9z + plan-v1.1 累积 ~20 份 plan 文件
151
+
152
+ ## 许可
153
+
154
+ MIT。复制了 superpowers 的 16 个 skill 文本(MIT 许可),attribution 见 [`LICENSE-THIRD-PARTY.md`](LICENSE-THIRD-PARTY.md)。
155
+
156
+ ## 致谢
157
+
158
+ - [OpenSpec](https://github.com/Fission-AI/OpenSpec) — 产物驱动工作流的设计灵感(`/opsx:propose` `/opsx:apply` `/opsx:verify` 等 12 个 workflow 协议直接借鉴)
159
+ - [superpowers](https://github.com/obra/superpowers) — 行为塑造 skill 体系的源头(16 skill 文本 + plugin 形态经 MIT 许可移植 + 命名空间 `superpowers:` → `forge:`)
@@ -0,0 +1,7 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * buildAckCommand — 构建含三个子命令的 ack 命令组
4
+ * 模式与 archive.ts 的 buildXxxCommand() 一致
5
+ */
6
+ export declare function buildAckCommand(): Command;
7
+ //# sourceMappingURL=ack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ack.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ack.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CA0QzC"}
@@ -0,0 +1,223 @@
1
+ // forge ack 子命令 — §4 两步 user 确认协议
2
+ // 提供三个子命令:
3
+ // forge ack propose <changeId> --finding <id> --action <type> — AI 写 pending YAML
4
+ // forge ack confirm <changeId> <findingId> — User 确认,转为正式 ack 日志
5
+ // forge ack reject <changeId> <findingId> --rationale <text> — User 拒绝,删 pending
6
+ import { Command } from 'commander';
7
+ import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
8
+ import { execFileSync } from 'node:child_process';
9
+ import { resolve, dirname } from 'node:path';
10
+ import { stringify as stringifyYaml, parse as parseYaml } from 'yaml';
11
+ import { appendAckLog, getPendingPath, listPending } from '../../core/ack-log.js';
12
+ // ──────────────────────────────────────────────────────────────────────────────
13
+ // 内部 helper
14
+ // ──────────────────────────────────────────────────────────────────────────────
15
+ /**
16
+ * getGitHead — 获取当前 git HEAD 提交 SHA
17
+ * 与 archive.ts 中的模式一致:execFileSync + try/catch,非 git 返回 null
18
+ * @param cwd 工作目录
19
+ */
20
+ function getGitHead(cwd) {
21
+ try {
22
+ return execFileSync('git', ['rev-parse', 'HEAD'], {
23
+ cwd,
24
+ encoding: 'utf8',
25
+ stdio: ['ignore', 'pipe', 'ignore'],
26
+ }).trim();
27
+ }
28
+ catch {
29
+ // 非 git 工作树或 git 不可用时静默返回 null
30
+ return null;
31
+ }
32
+ }
33
+ // ──────────────────────────────────────────────────────────────────────────────
34
+ // buildAckCommand — 导出顶层 ack 命令组
35
+ // ──────────────────────────────────────────────────────────────────────────────
36
+ /**
37
+ * buildAckCommand — 构建含三个子命令的 ack 命令组
38
+ * 模式与 archive.ts 的 buildXxxCommand() 一致
39
+ */
40
+ export function buildAckCommand() {
41
+ const ack = new Command('ack').description('两步 user 确认协议:AI propose → User confirm/reject');
42
+ // ──────────────────────────────────────────────────────────────────────────
43
+ // 子命令 1: forge ack propose
44
+ // ──────────────────────────────────────────────────────────────────────────
45
+ ack
46
+ .command('propose')
47
+ .description('AI 写 pending ack 文件(需 user confirm 才生效)')
48
+ .argument('<changeId>', 'change 目录 ID,如 add-login')
49
+ .requiredOption('--finding <id>', 'finding ID(数字字符串)')
50
+ .requiredOption('--action <type>', 'ack 类型,如 ack-warning / ack-critical / resign-c-simcode')
51
+ .option('--rationale <text>', 'AI 给出的 rationale(可选)')
52
+ .option('--target-severity <sev>', 'resign-c-simcode action 专用 — 目标 severity (WARNING / SUGGESTION)')
53
+ .action(async (changeId, opts) => {
54
+ // CI 模式检测:默认拒绝,防止 CI 自动绕过 user review
55
+ if (process.env['CI'] === 'true') {
56
+ process.stderr.write('forge ack propose: CI mode rejected (set ack.allow_ci_mode=true to override)\n');
57
+ process.exit(2);
58
+ }
59
+ // --target-severity 对 downgrade 和 resign-c-simcode action 有意义,其他 action 时提示忽略(继续执行)
60
+ if (opts.targetSeverity &&
61
+ opts.action !== 'downgrade' &&
62
+ opts.action !== 'resign-c-simcode') {
63
+ process.stderr.write('Warning: --target-severity only applies to action=downgrade or resign-c-simcode, ignored.\n');
64
+ }
65
+ // 计算 changeRoot:相对于当前工作目录
66
+ const changeRoot = resolve(process.cwd(), 'forge', 'changes', changeId);
67
+ // 生成时间戳和 pending 文件路径
68
+ const timestamp = new Date().toISOString();
69
+ const pendingPath = getPendingPath(changeRoot, opts.finding, timestamp);
70
+ // 构建 pending payload(YAML 格式,供 confirm/reject 读取)
71
+ const payload = {
72
+ kind: 'ack-propose',
73
+ timestamp,
74
+ change_id: changeId,
75
+ finding_id: opts.finding,
76
+ action: opts.action,
77
+ rationale: opts.rationale ?? null,
78
+ target_severity: opts.targetSeverity ?? null,
79
+ proposed_by: 'ai-agent',
80
+ };
81
+ // 确保父目录存在(类似 ack-log.ts 中 mkdir recursive 模式)
82
+ await mkdir(dirname(pendingPath), { recursive: true });
83
+ // 写 YAML pending 文件
84
+ await writeFile(pendingPath, stringifyYaml(payload), 'utf8');
85
+ // 输出操作提示(stderr,不污染 stdout 管道)
86
+ process.stderr.write(`AI proposed ack written to: ${pendingPath}\n`);
87
+ process.stderr.write(`User must confirm via /forge:ack-confirm ${changeId} ${opts.finding}\n`);
88
+ process.stderr.write(`This pending file blocks archive until confirmed or rejected.\n`);
89
+ // exit 1:有意义的信号 — AI 已写 pending,但需要 user 操作
90
+ process.exit(1);
91
+ });
92
+ // ──────────────────────────────────────────────────────────────────────────
93
+ // 子命令 2: forge ack confirm
94
+ // ──────────────────────────────────────────────────────────────────────────
95
+ ack
96
+ .command('confirm')
97
+ .description('User 确认 AI 提议的 ack,写入 ack-log.jsonl 并删除 pending 文件')
98
+ .argument('<changeId>', 'change 目录 ID')
99
+ .argument('<findingId>', 'finding ID(数字字符串)')
100
+ .option('--target-severity <sev>', '仅 resign-c-simcode action 必填;confirm 时 user 指定目标 severity 并写回 marker')
101
+ .action(async (changeId, findingId, opts) => {
102
+ const changeRoot = resolve(process.cwd(), 'forge', 'changes', changeId);
103
+ // 查找 pending 文件(按时间戳升序,取最新)
104
+ const pending = await listPending(changeRoot, findingId);
105
+ if (pending.length === 0) {
106
+ process.stderr.write(`No pending ack for change ${changeId} finding ${findingId}\n`);
107
+ process.exit(2);
108
+ }
109
+ // 多 pending 警告:同一 finding 存在多个 pending 时,提醒用户旧文件未清理
110
+ if (pending.length > 1) {
111
+ process.stderr.write(`Warning: ${pending.length} pending found, consuming latest; ${pending.length - 1} older pending(s) remain.\n`);
112
+ }
113
+ // 取最新的 pending(数组升序,最后一项 = 最新)
114
+ const latest = pending[pending.length - 1];
115
+ // 读取并解析 pending YAML
116
+ // YAML 损坏时 exit 2,避免与 propose 的 exit 1 语义混淆
117
+ const rawYaml = await readFile(latest.path, 'utf8');
118
+ let payload;
119
+ try {
120
+ payload = parseYaml(rawYaml);
121
+ }
122
+ catch (e) {
123
+ process.stderr.write(`Malformed pending YAML at ${latest.path}: ${e instanceof Error ? e.message : String(e)}\n`);
124
+ process.exit(2);
125
+ }
126
+ // 构建正式 AckEntry(写入 ack-log.jsonl)
127
+ // Windows 兼容:process.env.USER 常为 undefined,用 USERNAME 做 fallback
128
+ // target_severity 优先级:confirm --target-severity option > pending file 中的值
129
+ const resolvedTargetSeverity = opts.targetSeverity ?? payload.target_severity ?? null;
130
+ // v9 round 2 修(plan-9j code quality reviewer I-2):invalid 枚举值 fail-closed,避免 silent inconsistency
131
+ // 非 null 且非合法枚举值(WARNING / SUGGESTION)→ exit 2 拒绝,而非静默把顶层设 undefined
132
+ if (resolvedTargetSeverity !== null &&
133
+ resolvedTargetSeverity !== 'WARNING' &&
134
+ resolvedTargetSeverity !== 'SUGGESTION') {
135
+ process.stderr.write(`forge ack confirm: invalid --target-severity "${resolvedTargetSeverity}" (must be WARNING or SUGGESTION)\n`);
136
+ process.exit(2);
137
+ }
138
+ const ackEntry = {
139
+ schema: 'forge-ack-log/v1',
140
+ kind: 'ack',
141
+ timestamp: new Date().toISOString(),
142
+ action: payload.action,
143
+ change_id: changeId,
144
+ finding_id: findingId,
145
+ user: process.env['USER'] ?? process.env['USERNAME'] ?? 'unknown',
146
+ rationale: payload.rationale ?? null,
147
+ git_head: getGitHead(changeRoot),
148
+ finding_hash: null,
149
+ target_severity: resolvedTargetSeverity === 'WARNING' || resolvedTargetSeverity === 'SUGGESTION'
150
+ ? resolvedTargetSeverity
151
+ : undefined,
152
+ extra: {
153
+ proposed_at: payload.timestamp,
154
+ // 保留 propose-time 原值用于审计;顶层 target_severity 已含 confirm-time --target-severity override 解析后值,reader 优先用顶层
155
+ target_severity: payload.target_severity ?? null,
156
+ },
157
+ };
158
+ // 追加到 ack 日志
159
+ await appendAckLog(changeRoot, ackEntry);
160
+ // 删除 pending 文件(confirm 消费后不再需要)
161
+ await unlink(latest.path);
162
+ process.exit(0);
163
+ });
164
+ // ──────────────────────────────────────────────────────────────────────────
165
+ // 子命令 3: forge ack reject
166
+ // ──────────────────────────────────────────────────────────────────────────
167
+ ack
168
+ .command('reject')
169
+ .description('User 拒绝 AI 提议的 ack,写入 reject 日志并删除 pending 文件')
170
+ .argument('<changeId>', 'change 目录 ID')
171
+ .argument('<findingId>', 'finding ID(数字字符串)')
172
+ .requiredOption('--rationale <text>', '拒绝理由(必填)')
173
+ .action(async (changeId, findingId, opts) => {
174
+ const changeRoot = resolve(process.cwd(), 'forge', 'changes', changeId);
175
+ // 查找 pending 文件
176
+ const pending = await listPending(changeRoot, findingId);
177
+ if (pending.length === 0) {
178
+ process.stderr.write(`No pending ack for change ${changeId} finding ${findingId}\n`);
179
+ process.exit(2);
180
+ }
181
+ // 多 pending 警告:同一 finding 存在多个 pending 时,提醒用户旧文件未清理
182
+ if (pending.length > 1) {
183
+ process.stderr.write(`Warning: ${pending.length} pending found, consuming latest; ${pending.length - 1} older pending(s) remain.\n`);
184
+ }
185
+ // 取最新 pending
186
+ const latest = pending[pending.length - 1];
187
+ // 读取 pending YAML(获取原 timestamp 等信息)
188
+ // YAML 损坏时 exit 2,避免与 propose 的 exit 1 语义混淆
189
+ const rawYaml = await readFile(latest.path, 'utf8');
190
+ let payload;
191
+ try {
192
+ payload = parseYaml(rawYaml);
193
+ }
194
+ catch (e) {
195
+ process.stderr.write(`Malformed pending YAML at ${latest.path}: ${e instanceof Error ? e.message : String(e)}\n`);
196
+ process.exit(2);
197
+ }
198
+ // 构建 reject AckEntry
199
+ const rejectEntry = {
200
+ schema: 'forge-ack-log/v1',
201
+ kind: 'ack',
202
+ timestamp: new Date().toISOString(),
203
+ action: 'reject',
204
+ change_id: changeId,
205
+ finding_id: findingId,
206
+ user: process.env['USER'] ?? process.env['USERNAME'] ?? 'unknown',
207
+ rationale: opts.rationale,
208
+ git_head: getGitHead(changeRoot),
209
+ finding_hash: null,
210
+ extra: {
211
+ proposed_at: payload.timestamp,
212
+ target_severity: payload.target_severity ?? null,
213
+ },
214
+ };
215
+ // 追加到 ack 日志
216
+ await appendAckLog(changeRoot, rejectEntry);
217
+ // 删除 pending 文件
218
+ await unlink(latest.path);
219
+ process.exit(0);
220
+ });
221
+ return ack;
222
+ }
223
+ //# sourceMappingURL=ack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ack.js","sourceRoot":"","sources":["../../../src/cli/commands/ack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { Command } from 'commander';
2
+ export declare function buildArchiveCommand(): Command;
3
+ /**
4
+ * preflight 结果 union — caller 在 try 块内根据 kind 手动 release + exit,
5
+ * 与 archive.ts 现有"business-rule fail 处理"convention 一致(line 154 / 160 等)。
6
+ *
7
+ * kind 'ok':可继续 archive(graceful skip 或 全过)
8
+ * kind 'ack-missing' / 'critical-pending':caller 应 await release + exit 2
9
+ */
10
+ export type PreflightResult = {
11
+ kind: 'ok';
12
+ } | {
13
+ kind: 'ack-missing';
14
+ message: string;
15
+ } | {
16
+ kind: 'critical-pending';
17
+ criticalCount: number;
18
+ message: string;
19
+ };
20
+ /**
21
+ * Plan 7 §2.5:archive preflight — enforce_sync=true 时阻塞 critical 差异。
22
+ *
23
+ * Graceful skip 路径(全部返 {kind:'ok'}):
24
+ * 1. forge/config.yaml 不存在
25
+ * 2. legacy-anchors.yaml 不存在
26
+ * 3. legacy_bridge.allow_llm_calls != true
27
+ * 4. legacy_bridge.enforce_sync != true
28
+ *
29
+ * 走 LLM 路径时:
30
+ * - ack 不就绪 → 返 {kind:'ack-missing'}
31
+ * - 含 critical pending → sync-state 已写后返 {kind:'critical-pending'}
32
+ * - 全过 → 返 {kind:'ok'}
33
+ *
34
+ * **不再调 process.exit / console.error**:caller(archive 命令)负责打印消息 +
35
+ * release archive.lock + exit,避免本函数内 process.exit 跳过 caller finally
36
+ * 导致 archive.lock 文件残留。
37
+ */
38
+ export declare function runArchivePreflight(forgeRoot: string, changeId: string): Promise<PreflightResult>;
39
+ /**
40
+ * Plan 7 §2.5:post-archive hook — 不阻塞,仅在 enforce_sync=false 时跑(产报告)。
41
+ * enforce_sync=true 已由 preflight 跑过;graceful skip 路径同 preflight。
42
+ */
43
+ export declare function runArchivePostHook(forgeRoot: string, changeId: string): Promise<void>;
44
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,mBAAmB,IAAI,OAAO,CAihB7C;AAkBD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAwF1B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE3F"}