forgecraft-mcp 1.4.0 → 1.7.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 (418) hide show
  1. package/LICENSE +67 -0
  2. package/README.md +527 -525
  3. package/dist/analyzers/anchors/anchor-loader.d.ts +47 -0
  4. package/dist/analyzers/anchors/anchor-loader.d.ts.map +1 -0
  5. package/dist/analyzers/anchors/anchor-loader.js +113 -0
  6. package/dist/analyzers/anchors/anchor-loader.js.map +1 -0
  7. package/dist/analyzers/anti-pattern.d.ts.map +1 -1
  8. package/dist/analyzers/anti-pattern.js +38 -26
  9. package/dist/analyzers/anti-pattern.js.map +1 -1
  10. package/dist/analyzers/completeness-helpers.d.ts +5 -0
  11. package/dist/analyzers/completeness-helpers.d.ts.map +1 -1
  12. package/dist/analyzers/completeness-helpers.js +17 -0
  13. package/dist/analyzers/completeness-helpers.js.map +1 -1
  14. package/dist/analyzers/completeness.d.ts.map +1 -1
  15. package/dist/analyzers/completeness.js +4 -4
  16. package/dist/analyzers/completeness.js.map +1 -1
  17. package/dist/analyzers/gs-scorer.d.ts +3 -1
  18. package/dist/analyzers/gs-scorer.d.ts.map +1 -1
  19. package/dist/analyzers/gs-scorer.js +5 -2
  20. package/dist/analyzers/gs-scorer.js.map +1 -1
  21. package/dist/analyzers/package-json.d.ts.map +1 -1
  22. package/dist/analyzers/package-json.js +194 -34
  23. package/dist/analyzers/package-json.js.map +1 -1
  24. package/dist/analyzers/scorers/composable-scorer.d.ts +4 -2
  25. package/dist/analyzers/scorers/composable-scorer.d.ts.map +1 -1
  26. package/dist/analyzers/scorers/composable-scorer.js +50 -2
  27. package/dist/analyzers/scorers/composable-scorer.js.map +1 -1
  28. package/dist/analyzers/scorers/executable-scorer.d.ts +3 -2
  29. package/dist/analyzers/scorers/executable-scorer.d.ts.map +1 -1
  30. package/dist/analyzers/scorers/executable-scorer.js +64 -4
  31. package/dist/analyzers/scorers/executable-scorer.js.map +1 -1
  32. package/dist/analyzers/scorers/scorer-utils.d.ts +5 -3
  33. package/dist/analyzers/scorers/scorer-utils.d.ts.map +1 -1
  34. package/dist/analyzers/scorers/scorer-utils.js +34 -9
  35. package/dist/analyzers/scorers/scorer-utils.js.map +1 -1
  36. package/dist/analyzers/scorers/self-describing-scorer.d.ts +7 -4
  37. package/dist/analyzers/scorers/self-describing-scorer.d.ts.map +1 -1
  38. package/dist/analyzers/scorers/self-describing-scorer.js +17 -18
  39. package/dist/analyzers/scorers/self-describing-scorer.js.map +1 -1
  40. package/dist/cli/help.js +51 -51
  41. package/dist/disciplines/catalog.d.ts +16 -0
  42. package/dist/disciplines/catalog.d.ts.map +1 -0
  43. package/dist/disciplines/catalog.js +196 -0
  44. package/dist/disciplines/catalog.js.map +1 -0
  45. package/dist/disciplines/runner.d.ts +13 -0
  46. package/dist/disciplines/runner.d.ts.map +1 -0
  47. package/dist/disciplines/runner.js +35 -0
  48. package/dist/disciplines/runner.js.map +1 -0
  49. package/dist/registry/composer.d.ts.map +1 -1
  50. package/dist/registry/composer.js +9 -4
  51. package/dist/registry/composer.js.map +1 -1
  52. package/dist/registry/loader-tag.d.ts.map +1 -1
  53. package/dist/registry/loader-tag.js +1 -0
  54. package/dist/registry/loader-tag.js.map +1 -1
  55. package/dist/registry/remote-gates.js +1 -1
  56. package/dist/registry/remote-gates.js.map +1 -1
  57. package/dist/registry/renderer-skeletons.js +92 -92
  58. package/dist/registry/sentinel-renderer.js +299 -20
  59. package/dist/registry/sentinel-renderer.js.map +1 -1
  60. package/dist/sentinel/detect.d.ts +41 -0
  61. package/dist/sentinel/detect.d.ts.map +1 -0
  62. package/dist/sentinel/detect.js +122 -0
  63. package/dist/sentinel/detect.js.map +1 -0
  64. package/dist/sentinel/write.d.ts +54 -0
  65. package/dist/sentinel/write.d.ts.map +1 -0
  66. package/dist/sentinel/write.js +75 -0
  67. package/dist/sentinel/write.js.map +1 -0
  68. package/dist/shared/cnt-health.d.ts +16 -0
  69. package/dist/shared/cnt-health.d.ts.map +1 -1
  70. package/dist/shared/cnt-health.js +55 -8
  71. package/dist/shared/cnt-health.js.map +1 -1
  72. package/dist/shared/config.d.ts +14 -0
  73. package/dist/shared/config.d.ts.map +1 -1
  74. package/dist/shared/config.js +45 -0
  75. package/dist/shared/config.js.map +1 -1
  76. package/dist/shared/gs-score-logger.js +6 -6
  77. package/dist/shared/hook-installer.d.ts +58 -0
  78. package/dist/shared/hook-installer.d.ts.map +1 -0
  79. package/dist/shared/hook-installer.js +316 -0
  80. package/dist/shared/hook-installer.js.map +1 -0
  81. package/dist/shared/project-gates-helpers.d.ts +9 -0
  82. package/dist/shared/project-gates-helpers.d.ts.map +1 -1
  83. package/dist/shared/project-gates-helpers.js +35 -0
  84. package/dist/shared/project-gates-helpers.js.map +1 -1
  85. package/dist/shared/types/config.d.ts +7 -1
  86. package/dist/shared/types/config.d.ts.map +1 -1
  87. package/dist/shared/types/gates.d.ts +34 -0
  88. package/dist/shared/types/gates.d.ts.map +1 -1
  89. package/dist/shared/types/project.d.ts +68 -2
  90. package/dist/shared/types/project.d.ts.map +1 -1
  91. package/dist/shared/types/project.js +1 -0
  92. package/dist/shared/types/project.js.map +1 -1
  93. package/dist/shared/types/templates.d.ts +8 -1
  94. package/dist/shared/types/templates.d.ts.map +1 -1
  95. package/dist/shared/types/verify.d.ts +51 -1
  96. package/dist/shared/types/verify.d.ts.map +1 -1
  97. package/dist/shared/types/verify.js +37 -1
  98. package/dist/shared/types/verify.js.map +1 -1
  99. package/dist/tools/add-hook.d.ts.map +1 -1
  100. package/dist/tools/add-hook.js +8 -1
  101. package/dist/tools/add-hook.js.map +1 -1
  102. package/dist/tools/add-module.js +123 -123
  103. package/dist/tools/advice-registry.d.ts.map +1 -1
  104. package/dist/tools/advice-registry.js +108 -18
  105. package/dist/tools/advice-registry.js.map +1 -1
  106. package/dist/tools/advise-session-advisor.d.ts +16 -0
  107. package/dist/tools/advise-session-advisor.d.ts.map +1 -0
  108. package/dist/tools/advise-session-advisor.js +89 -0
  109. package/dist/tools/advise-session-advisor.js.map +1 -0
  110. package/dist/tools/advise-session-signals.d.ts +21 -0
  111. package/dist/tools/advise-session-signals.d.ts.map +1 -0
  112. package/dist/tools/advise-session-signals.js +113 -0
  113. package/dist/tools/advise-session-signals.js.map +1 -0
  114. package/dist/tools/advise-session.d.ts +22 -0
  115. package/dist/tools/advise-session.d.ts.map +1 -0
  116. package/dist/tools/advise-session.js +31 -0
  117. package/dist/tools/advise-session.js.map +1 -0
  118. package/dist/tools/analyze-harness.d.ts +18 -0
  119. package/dist/tools/analyze-harness.d.ts.map +1 -0
  120. package/dist/tools/analyze-harness.js +298 -0
  121. package/dist/tools/analyze-harness.js.map +1 -0
  122. package/dist/tools/audit.d.ts.map +1 -1
  123. package/dist/tools/audit.js +19 -0
  124. package/dist/tools/audit.js.map +1 -1
  125. package/dist/tools/change-request.d.ts +53 -0
  126. package/dist/tools/change-request.d.ts.map +1 -0
  127. package/dist/tools/change-request.js +395 -0
  128. package/dist/tools/change-request.js.map +1 -0
  129. package/dist/tools/check-cascade-contracts.d.ts +13 -0
  130. package/dist/tools/check-cascade-contracts.d.ts.map +1 -1
  131. package/dist/tools/check-cascade-contracts.js +73 -2
  132. package/dist/tools/check-cascade-contracts.js.map +1 -1
  133. package/dist/tools/check-cascade-report.js +64 -64
  134. package/dist/tools/check-cascade-steps.d.ts +3 -0
  135. package/dist/tools/check-cascade-steps.d.ts.map +1 -1
  136. package/dist/tools/check-cascade-steps.js +104 -15
  137. package/dist/tools/check-cascade-steps.js.map +1 -1
  138. package/dist/tools/check-cascade.d.ts +4 -3
  139. package/dist/tools/check-cascade.d.ts.map +1 -1
  140. package/dist/tools/check-cascade.js +30 -12
  141. package/dist/tools/check-cascade.js.map +1 -1
  142. package/dist/tools/check-derivation-chain.d.ts +37 -0
  143. package/dist/tools/check-derivation-chain.d.ts.map +1 -0
  144. package/dist/tools/check-derivation-chain.js +418 -0
  145. package/dist/tools/check-derivation-chain.js.map +1 -0
  146. package/dist/tools/check-spec-consistency.d.ts +25 -0
  147. package/dist/tools/check-spec-consistency.d.ts.map +1 -0
  148. package/dist/tools/check-spec-consistency.js +339 -0
  149. package/dist/tools/check-spec-consistency.js.map +1 -0
  150. package/dist/tools/check-t4.d.ts +54 -0
  151. package/dist/tools/check-t4.d.ts.map +1 -0
  152. package/dist/tools/check-t4.js +305 -0
  153. package/dist/tools/check-t4.js.map +1 -0
  154. package/dist/tools/close-cycle.d.ts +11 -0
  155. package/dist/tools/close-cycle.d.ts.map +1 -1
  156. package/dist/tools/close-cycle.js +364 -4
  157. package/dist/tools/close-cycle.js.map +1 -1
  158. package/dist/tools/cnt-add-routing.d.ts +31 -0
  159. package/dist/tools/cnt-add-routing.d.ts.map +1 -0
  160. package/dist/tools/cnt-add-routing.js +99 -0
  161. package/dist/tools/cnt-add-routing.js.map +1 -0
  162. package/dist/tools/configure-mcp.d.ts.map +1 -1
  163. package/dist/tools/configure-mcp.js +52 -2
  164. package/dist/tools/configure-mcp.js.map +1 -1
  165. package/dist/tools/consolidate-status.d.ts +31 -0
  166. package/dist/tools/consolidate-status.d.ts.map +1 -1
  167. package/dist/tools/consolidate-status.js +105 -0
  168. package/dist/tools/consolidate-status.js.map +1 -1
  169. package/dist/tools/executable-gates.d.ts +52 -0
  170. package/dist/tools/executable-gates.d.ts.map +1 -0
  171. package/dist/tools/executable-gates.js +333 -0
  172. package/dist/tools/executable-gates.js.map +1 -0
  173. package/dist/tools/extract-adrs-from-spec.d.ts +33 -0
  174. package/dist/tools/extract-adrs-from-spec.d.ts.map +1 -0
  175. package/dist/tools/extract-adrs-from-spec.js +410 -0
  176. package/dist/tools/extract-adrs-from-spec.js.map +1 -0
  177. package/dist/tools/extract-adrs-history.d.ts +47 -0
  178. package/dist/tools/extract-adrs-history.d.ts.map +1 -0
  179. package/dist/tools/extract-adrs-history.js +265 -0
  180. package/dist/tools/extract-adrs-history.js.map +1 -0
  181. package/dist/tools/forgecraft-dispatch-extended.d.ts.map +1 -1
  182. package/dist/tools/forgecraft-dispatch-extended.js +137 -0
  183. package/dist/tools/forgecraft-dispatch-extended.js.map +1 -1
  184. package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
  185. package/dist/tools/forgecraft-dispatch.js +16 -0
  186. package/dist/tools/forgecraft-dispatch.js.map +1 -1
  187. package/dist/tools/forgecraft-schema-params.d.ts +174 -2
  188. package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
  189. package/dist/tools/forgecraft-schema-params.js +197 -0
  190. package/dist/tools/forgecraft-schema-params.js.map +1 -1
  191. package/dist/tools/forgecraft-schema.d.ts +179 -7
  192. package/dist/tools/forgecraft-schema.d.ts.map +1 -1
  193. package/dist/tools/forgecraft-schema.js +37 -0
  194. package/dist/tools/forgecraft-schema.js.map +1 -1
  195. package/dist/tools/generate-adr.js +6 -6
  196. package/dist/tools/generate-adr.js.map +1 -1
  197. package/dist/tools/generate-decision.d.ts +77 -0
  198. package/dist/tools/generate-decision.d.ts.map +1 -0
  199. package/dist/tools/generate-decision.js +162 -0
  200. package/dist/tools/generate-decision.js.map +1 -0
  201. package/dist/tools/generate-env-probe.d.ts +49 -0
  202. package/dist/tools/generate-env-probe.d.ts.map +1 -0
  203. package/dist/tools/generate-env-probe.js +365 -0
  204. package/dist/tools/generate-env-probe.js.map +1 -0
  205. package/dist/tools/generate-harness.d.ts +53 -0
  206. package/dist/tools/generate-harness.d.ts.map +1 -0
  207. package/dist/tools/generate-harness.js +395 -0
  208. package/dist/tools/generate-harness.js.map +1 -0
  209. package/dist/tools/generate-roadmap.d.ts +1 -1
  210. package/dist/tools/generate-roadmap.d.ts.map +1 -1
  211. package/dist/tools/generate-roadmap.js +38 -4
  212. package/dist/tools/generate-roadmap.js.map +1 -1
  213. package/dist/tools/generate-session-prompt.d.ts +3 -3
  214. package/dist/tools/generate-session-prompt.d.ts.map +1 -1
  215. package/dist/tools/generate-session-prompt.js +9 -1
  216. package/dist/tools/generate-session-prompt.js.map +1 -1
  217. package/dist/tools/generate-slo-probe.d.ts +53 -0
  218. package/dist/tools/generate-slo-probe.d.ts.map +1 -0
  219. package/dist/tools/generate-slo-probe.js +366 -0
  220. package/dist/tools/generate-slo-probe.js.map +1 -0
  221. package/dist/tools/layer-status-gates.d.ts +24 -0
  222. package/dist/tools/layer-status-gates.d.ts.map +1 -0
  223. package/dist/tools/layer-status-gates.js +151 -0
  224. package/dist/tools/layer-status-gates.js.map +1 -0
  225. package/dist/tools/layer-status.d.ts +126 -0
  226. package/dist/tools/layer-status.d.ts.map +1 -0
  227. package/dist/tools/layer-status.js +647 -0
  228. package/dist/tools/layer-status.js.map +1 -0
  229. package/dist/tools/list.d.ts.map +1 -1
  230. package/dist/tools/list.js +9 -5
  231. package/dist/tools/list.js.map +1 -1
  232. package/dist/tools/postcondition-coverage.d.ts +57 -0
  233. package/dist/tools/postcondition-coverage.d.ts.map +1 -0
  234. package/dist/tools/postcondition-coverage.js +256 -0
  235. package/dist/tools/postcondition-coverage.js.map +1 -0
  236. package/dist/tools/probe-runners.d.ts +21 -0
  237. package/dist/tools/probe-runners.d.ts.map +1 -0
  238. package/dist/tools/probe-runners.js +246 -0
  239. package/dist/tools/probe-runners.js.map +1 -0
  240. package/dist/tools/probe-templates.d.ts +27 -0
  241. package/dist/tools/probe-templates.d.ts.map +1 -0
  242. package/dist/tools/probe-templates.js +279 -0
  243. package/dist/tools/probe-templates.js.map +1 -0
  244. package/dist/tools/propose-session.d.ts +28 -0
  245. package/dist/tools/propose-session.d.ts.map +1 -0
  246. package/dist/tools/propose-session.js +333 -0
  247. package/dist/tools/propose-session.js.map +1 -0
  248. package/dist/tools/refresh-output.js +14 -14
  249. package/dist/tools/review-stubs.d.ts +29 -0
  250. package/dist/tools/review-stubs.d.ts.map +1 -0
  251. package/dist/tools/review-stubs.js +173 -0
  252. package/dist/tools/review-stubs.js.map +1 -0
  253. package/dist/tools/roadmap-builder.d.ts +49 -1
  254. package/dist/tools/roadmap-builder.d.ts.map +1 -1
  255. package/dist/tools/roadmap-builder.js +210 -5
  256. package/dist/tools/roadmap-builder.js.map +1 -1
  257. package/dist/tools/run-env-probe.d.ts +57 -0
  258. package/dist/tools/run-env-probe.d.ts.map +1 -0
  259. package/dist/tools/run-env-probe.js +270 -0
  260. package/dist/tools/run-env-probe.js.map +1 -0
  261. package/dist/tools/run-harness.d.ts +52 -0
  262. package/dist/tools/run-harness.d.ts.map +1 -0
  263. package/dist/tools/run-harness.js +279 -0
  264. package/dist/tools/run-harness.js.map +1 -0
  265. package/dist/tools/run-slo-probe.d.ts +50 -0
  266. package/dist/tools/run-slo-probe.d.ts.map +1 -0
  267. package/dist/tools/run-slo-probe.js +281 -0
  268. package/dist/tools/run-slo-probe.js.map +1 -0
  269. package/dist/tools/scaffold-spec-stubs.js +115 -115
  270. package/dist/tools/scaffold-templates.js +62 -62
  271. package/dist/tools/scaffold-writer.d.ts.map +1 -1
  272. package/dist/tools/scaffold-writer.js +9 -0
  273. package/dist/tools/scaffold-writer.js.map +1 -1
  274. package/dist/tools/score-rubric.d.ts +19 -0
  275. package/dist/tools/score-rubric.d.ts.map +1 -0
  276. package/dist/tools/score-rubric.js +411 -0
  277. package/dist/tools/score-rubric.js.map +1 -0
  278. package/dist/tools/session-prompt-builders.d.ts +20 -0
  279. package/dist/tools/session-prompt-builders.d.ts.map +1 -1
  280. package/dist/tools/session-prompt-builders.js +78 -5
  281. package/dist/tools/session-prompt-builders.js.map +1 -1
  282. package/dist/tools/session-prompt-sections.d.ts +4 -2
  283. package/dist/tools/session-prompt-sections.d.ts.map +1 -1
  284. package/dist/tools/session-prompt-sections.js +22 -10
  285. package/dist/tools/session-prompt-sections.js.map +1 -1
  286. package/dist/tools/setup-artifact-writers.d.ts +69 -4
  287. package/dist/tools/setup-artifact-writers.d.ts.map +1 -1
  288. package/dist/tools/setup-artifact-writers.js +681 -5
  289. package/dist/tools/setup-artifact-writers.js.map +1 -1
  290. package/dist/tools/setup-cnt-builders.d.ts.map +1 -1
  291. package/dist/tools/setup-cnt-builders.js +162 -34
  292. package/dist/tools/setup-cnt-builders.js.map +1 -1
  293. package/dist/tools/setup-monitoring.d.ts +41 -0
  294. package/dist/tools/setup-monitoring.d.ts.map +1 -0
  295. package/dist/tools/setup-monitoring.js +364 -0
  296. package/dist/tools/setup-monitoring.js.map +1 -0
  297. package/dist/tools/setup-phase1.d.ts.map +1 -1
  298. package/dist/tools/setup-phase1.js +14 -1
  299. package/dist/tools/setup-phase1.js.map +1 -1
  300. package/dist/tools/setup-phase2.d.ts +14 -0
  301. package/dist/tools/setup-phase2.d.ts.map +1 -1
  302. package/dist/tools/setup-phase2.js +130 -3
  303. package/dist/tools/setup-phase2.js.map +1 -1
  304. package/dist/tools/setup-project.d.ts +8 -0
  305. package/dist/tools/setup-project.d.ts.map +1 -1
  306. package/dist/tools/setup-project.js +52 -2
  307. package/dist/tools/setup-project.js.map +1 -1
  308. package/dist/tools/spec-parser-tags.d.ts.map +1 -1
  309. package/dist/tools/spec-parser-tags.js +1 -0
  310. package/dist/tools/spec-parser-tags.js.map +1 -1
  311. package/dist/tools/verify-formatter.d.ts.map +1 -1
  312. package/dist/tools/verify-formatter.js +15 -1
  313. package/dist/tools/verify-formatter.js.map +1 -1
  314. package/dist/tools/verify.d.ts.map +1 -1
  315. package/dist/tools/verify.js +3 -0
  316. package/dist/tools/verify.js.map +1 -1
  317. package/package.json +98 -89
  318. package/templates/analytics/instructions.yaml +37 -37
  319. package/templates/analytics/mcp-servers.yaml +11 -11
  320. package/templates/analytics/structure.yaml +25 -25
  321. package/templates/api/harness/uc-template.hurl +20 -0
  322. package/templates/api/instructions.yaml +231 -231
  323. package/templates/api/mcp-servers.yaml +22 -22
  324. package/templates/api/nfr.yaml +23 -23
  325. package/templates/api/review.yaml +103 -103
  326. package/templates/api/structure.yaml +34 -34
  327. package/templates/api/verification.yaml +132 -132
  328. package/templates/cli/instructions.yaml +31 -31
  329. package/templates/cli/mcp-servers.yaml +11 -11
  330. package/templates/cli/review.yaml +53 -53
  331. package/templates/cli/structure.yaml +16 -16
  332. package/templates/data-lineage/instructions.yaml +28 -28
  333. package/templates/data-lineage/mcp-servers.yaml +22 -22
  334. package/templates/data-pipeline/instructions.yaml +84 -84
  335. package/templates/data-pipeline/mcp-servers.yaml +13 -13
  336. package/templates/data-pipeline/nfr.yaml +39 -39
  337. package/templates/data-pipeline/structure.yaml +23 -23
  338. package/templates/docs-manifest.yaml +227 -0
  339. package/templates/fintech/hooks.yaml +55 -55
  340. package/templates/fintech/instructions.yaml +112 -112
  341. package/templates/fintech/mcp-servers.yaml +13 -13
  342. package/templates/fintech/nfr.yaml +46 -46
  343. package/templates/fintech/playbook.yaml +210 -210
  344. package/templates/fintech/verification.yaml +239 -239
  345. package/templates/game/harness/uc-template.sim.ts +29 -0
  346. package/templates/game/instructions.yaml +289 -289
  347. package/templates/game/mcp-servers.yaml +38 -38
  348. package/templates/game/nfr.yaml +64 -64
  349. package/templates/game/playbook.yaml +214 -214
  350. package/templates/game/review.yaml +97 -97
  351. package/templates/game/structure.yaml +67 -67
  352. package/templates/game/verification.yaml +174 -174
  353. package/templates/healthcare/instructions.yaml +42 -42
  354. package/templates/healthcare/mcp-servers.yaml +13 -13
  355. package/templates/healthcare/nfr.yaml +47 -47
  356. package/templates/hipaa/instructions.yaml +41 -41
  357. package/templates/hipaa/mcp-servers.yaml +13 -13
  358. package/templates/infra/instructions.yaml +104 -104
  359. package/templates/infra/mcp-servers.yaml +20 -20
  360. package/templates/infra/nfr.yaml +46 -46
  361. package/templates/infra/review.yaml +65 -65
  362. package/templates/infra/structure.yaml +25 -25
  363. package/templates/library/instructions.yaml +36 -36
  364. package/templates/library/mcp-servers.yaml +20 -20
  365. package/templates/library/review.yaml +56 -56
  366. package/templates/library/structure.yaml +19 -19
  367. package/templates/medallion-architecture/instructions.yaml +41 -41
  368. package/templates/medallion-architecture/mcp-servers.yaml +22 -22
  369. package/templates/ml/instructions.yaml +85 -85
  370. package/templates/ml/mcp-servers.yaml +11 -11
  371. package/templates/ml/nfr.yaml +39 -39
  372. package/templates/ml/structure.yaml +25 -25
  373. package/templates/ml/verification.yaml +156 -156
  374. package/templates/mobile/instructions.yaml +44 -44
  375. package/templates/mobile/mcp-servers.yaml +11 -11
  376. package/templates/mobile/nfr.yaml +49 -49
  377. package/templates/mobile/structure.yaml +27 -27
  378. package/templates/mobile/verification.yaml +121 -121
  379. package/templates/observability-xray/instructions.yaml +40 -40
  380. package/templates/observability-xray/mcp-servers.yaml +15 -15
  381. package/templates/realtime/instructions.yaml +42 -42
  382. package/templates/realtime/mcp-servers.yaml +13 -13
  383. package/templates/soc2/instructions.yaml +41 -41
  384. package/templates/soc2/mcp-servers.yaml +24 -24
  385. package/templates/social/instructions.yaml +43 -43
  386. package/templates/social/mcp-servers.yaml +24 -24
  387. package/templates/state-machine/instructions.yaml +42 -42
  388. package/templates/state-machine/mcp-servers.yaml +11 -11
  389. package/templates/tools-registry.yaml +164 -164
  390. package/templates/universal/claude-md-blocks/layer-navigation.md +20 -0
  391. package/templates/universal/claude-md-blocks/nfr-contracts.md +22 -0
  392. package/templates/universal/hooks.yaml +879 -723
  393. package/templates/universal/instructions.yaml +1692 -1692
  394. package/templates/universal/mcp-servers.yaml +50 -50
  395. package/templates/universal/nfr.yaml +197 -197
  396. package/templates/universal/reference.yaml +326 -326
  397. package/templates/universal/review.yaml +204 -204
  398. package/templates/universal/skills.yaml +262 -262
  399. package/templates/universal/structure.yaml +67 -67
  400. package/templates/universal/verification.yaml +416 -416
  401. package/templates/web-next/hooks.yaml +114 -0
  402. package/templates/web-next/instructions.yaml +106 -0
  403. package/templates/web-react/harness/uc-template.spec.ts +35 -0
  404. package/templates/web-react/hooks.yaml +156 -44
  405. package/templates/web-react/instructions.yaml +296 -207
  406. package/templates/web-react/mcp-servers.yaml +20 -20
  407. package/templates/web-react/nfr.yaml +27 -27
  408. package/templates/web-react/review.yaml +94 -94
  409. package/templates/web-react/structure.yaml +46 -46
  410. package/templates/web-react/verification.yaml +126 -126
  411. package/templates/web-static/hooks.yaml +85 -0
  412. package/templates/web-static/instructions.yaml +204 -115
  413. package/templates/web-static/mcp-servers.yaml +20 -20
  414. package/templates/web3/instructions.yaml +44 -44
  415. package/templates/web3/mcp-servers.yaml +11 -11
  416. package/templates/web3/verification.yaml +159 -159
  417. package/templates/zero-trust/instructions.yaml +41 -41
  418. package/templates/zero-trust/mcp-servers.yaml +15 -15
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Roadmap building utilities: content generation, UC parsing, and session stub creation.
3
3
  */
4
+ export declare const EXECUTABLE_SPRINT_HEADER: Readonly<{
5
+ id: string;
6
+ title: string;
7
+ }>;
4
8
  export declare const PHASE2_ITEMS: readonly [{
5
9
  readonly id: "RM-010";
6
10
  readonly title: "Integration tests: full API contract coverage";
@@ -41,18 +45,34 @@ export declare function parseUseCaseTitles(projectDir: string): ReadonlyArray<{
41
45
  * @returns Human-readable project name
42
46
  */
43
47
  export declare function readProjectName(projectDir: string): string;
48
+ /**
49
+ * Scan UC files for mentions of other UC IDs and infer implementation order.
50
+ * Returns a map of ucId → array of RM IDs that must complete first.
51
+ *
52
+ * Handles both canonical (docs/use-cases/<ucId>-*.md) and monolith (docs/use-cases.md).
53
+ *
54
+ * @param projectDir - Absolute project root
55
+ * @param ucItems - Ordered array of UC id/title pairs (index = RM position)
56
+ * @returns Map of ucId → dependent RM IDs
57
+ */
58
+ export declare function inferUcDependencies(projectDir: string, ucItems: ReadonlyArray<{
59
+ readonly id: string;
60
+ readonly title: string;
61
+ }>): Map<string, string[]>;
44
62
  /**
45
63
  * Build the roadmap.md content string.
46
64
  *
47
65
  * @param projectName - Human-readable project name
48
66
  * @param ucItems - Parsed use-case items for Phase 1
49
67
  * @param specFilePath - Relative spec file path (for footer)
68
+ * @param tags - Project classification tags (drives Executable Sprint gate selection)
69
+ * @param projectDir - Absolute project root for UC dependency inference (optional)
50
70
  * @returns Complete roadmap.md string
51
71
  */
52
72
  export declare function buildRoadmapContent(projectName: string, ucItems: ReadonlyArray<{
53
73
  readonly id: string;
54
74
  readonly title: string;
55
- }>, specFilePath: string): string;
75
+ }>, specFilePath: string, tags?: ReadonlyArray<string>, projectDir?: string): string;
56
76
  /**
57
77
  * Build a session prompt stub for a Phase 1 roadmap item.
58
78
  *
@@ -62,6 +82,34 @@ export declare function buildRoadmapContent(projectName: string, ucItems: Readon
62
82
  * @returns Stub markdown string
63
83
  */
64
84
  export declare function buildSessionPromptStub(rmId: string, title: string, ucId: string): string;
85
+ /**
86
+ * Build a session prompt stub for an Executable Sprint bring-up item (EX-000).
87
+ * For GAME projects, the bring-up check verifies the engine runs headlessly —
88
+ * which is itself proof that logic and rendering are properly separated.
89
+ *
90
+ * @param projectName - Human-readable project name
91
+ * @param tags - Project classification tags
92
+ * @returns Stub markdown string
93
+ */
94
+ export declare function buildExecutableBringUpStub(projectName: string, tags?: ReadonlyArray<string>): string;
95
+ /**
96
+ * Build a session prompt stub for an Executable Sprint use-case verification item.
97
+ * Lists all applicable gate files so the AI knows what to fill in and run.
98
+ *
99
+ * @param exId - The EX-00N identifier
100
+ * @param ucId - The UC identifier (e.g. UC-001)
101
+ * @param ucTitle - The use-case title
102
+ * @param tags - Project tags used to resolve gate tools
103
+ * @returns Stub markdown string
104
+ */
105
+ export declare function buildExecutableVerifyStub(exId: string, ucId: string, ucTitle: string, tags?: ReadonlyArray<string>): string;
106
+ /**
107
+ * Format an EX ID with zero-padded 3-digit suffix.
108
+ *
109
+ * @param index - 0-based for header (EX-000) or 1-based for UC items
110
+ * @returns Formatted EX-00N string
111
+ */
112
+ export declare function formatExId(index: number): string;
65
113
  /**
66
114
  * Format an RM ID with zero-padded 3-digit suffix.
67
115
  *
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap-builder.d.ts","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,eAAO,MAAM,YAAY;;;;;;;;;EAIf,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;EAaf,CAAC;AAIX;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAehE;AAmBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B1D;AAgBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,YAAY,EAAE,MAAM,GACnB,MAAM,CA0DR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
1
+ {"version":3,"file":"roadmap-builder.d.ts","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjE,CAAC;AAEb,eAAO,MAAM,YAAY;;;;;;;;;EAIf,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;EAaf,CAAC;AAIX;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAehE;AAmBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B1D;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACtE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA0DvB;AAID;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAuFR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAeR;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,GAC/B,MAAM,CAgDR;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,aAAa,CAAC,MAAM,CAAM,GAC/B,MAAM,CAgCR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -1,14 +1,18 @@
1
1
  /**
2
2
  * Roadmap building utilities: content generation, UC parsing, and session stub creation.
3
3
  */
4
- import { existsSync, readFileSync } from "node:fs";
4
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
5
5
  import { join } from "node:path";
6
- // ── Constants ────────────────────────────────────────────────────────
6
+ import { resolveExecutableGates, gateFilePath, gateToolSummary, } from "./executable-gates.js";
7
7
  const GENERIC_UC_TITLES = [
8
8
  "Implement primary use case",
9
9
  "Implement secondary use case",
10
10
  "Implement observer use case",
11
11
  ];
12
+ export const EXECUTABLE_SPRINT_HEADER = {
13
+ id: "EX-000",
14
+ title: "Executable: bring up — start server, confirm health endpoint responds",
15
+ };
12
16
  export const PHASE2_ITEMS = [
13
17
  { id: "RM-010", title: "Integration tests: full API contract coverage" },
14
18
  { id: "RM-011", title: "Mutation testing: achieve >80% mutation score" },
@@ -110,6 +114,74 @@ function inferNameFromDir(projectDir) {
110
114
  const last = parts[parts.length - 1] ?? "Project";
111
115
  return last.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
112
116
  }
117
+ // ── UC Dependency Inference ───────────────────────────────────────────
118
+ /**
119
+ * Scan UC files for mentions of other UC IDs and infer implementation order.
120
+ * Returns a map of ucId → array of RM IDs that must complete first.
121
+ *
122
+ * Handles both canonical (docs/use-cases/<ucId>-*.md) and monolith (docs/use-cases.md).
123
+ *
124
+ * @param projectDir - Absolute project root
125
+ * @param ucItems - Ordered array of UC id/title pairs (index = RM position)
126
+ * @returns Map of ucId → dependent RM IDs
127
+ */
128
+ export function inferUcDependencies(projectDir, ucItems) {
129
+ const deps = new Map();
130
+ if (ucItems.length === 0)
131
+ return deps;
132
+ const ucIds = ucItems.map((u) => u.id);
133
+ const ucDir = join(projectDir, "docs", "use-cases");
134
+ const ucMono = join(projectDir, "docs", "use-cases.md");
135
+ const UC_REF = /\bUC-\d{3,4}\b/g;
136
+ for (const uc of ucItems) {
137
+ let content = "";
138
+ if (existsSync(ucDir)) {
139
+ try {
140
+ const files = readdirSync(ucDir);
141
+ const match = files.find((f) => f.endsWith(".md") && f.toUpperCase().includes(uc.id));
142
+ if (match)
143
+ content = readFileSync(join(ucDir, match), "utf-8");
144
+ }
145
+ catch {
146
+ /* skip */
147
+ }
148
+ }
149
+ else if (existsSync(ucMono)) {
150
+ try {
151
+ const mono = readFileSync(ucMono, "utf-8");
152
+ const start = mono.indexOf(`## ${uc.id}`);
153
+ if (start >= 0) {
154
+ const end = mono.indexOf("\n## ", start + 3);
155
+ content = end >= 0 ? mono.slice(start, end) : mono.slice(start);
156
+ }
157
+ }
158
+ catch {
159
+ /* skip */
160
+ }
161
+ }
162
+ if (!content)
163
+ continue;
164
+ const refs = new Set();
165
+ let m;
166
+ UC_REF.lastIndex = 0;
167
+ while ((m = UC_REF.exec(content)) !== null) {
168
+ const refId = m[0];
169
+ if (refId !== uc.id && ucIds.includes(refId))
170
+ refs.add(refId);
171
+ }
172
+ if (refs.size > 0) {
173
+ const rmDeps = Array.from(refs)
174
+ .map((refId) => {
175
+ const idx = ucItems.findIndex((u) => u.id === refId);
176
+ return idx >= 0 ? `RM-${String(idx + 1).padStart(3, "0")}` : null;
177
+ })
178
+ .filter((id) => id !== null);
179
+ if (rmDeps.length > 0)
180
+ deps.set(uc.id, rmDeps);
181
+ }
182
+ }
183
+ return deps;
184
+ }
113
185
  // ── Roadmap Content ────────────────────────────────────────────────────
114
186
  /**
115
187
  * Build the roadmap.md content string.
@@ -117,20 +189,38 @@ function inferNameFromDir(projectDir) {
117
189
  * @param projectName - Human-readable project name
118
190
  * @param ucItems - Parsed use-case items for Phase 1
119
191
  * @param specFilePath - Relative spec file path (for footer)
192
+ * @param tags - Project classification tags (drives Executable Sprint gate selection)
193
+ * @param projectDir - Absolute project root for UC dependency inference (optional)
120
194
  * @returns Complete roadmap.md string
121
195
  */
122
- export function buildRoadmapContent(projectName, ucItems, specFilePath) {
196
+ export function buildRoadmapContent(projectName, ucItems, specFilePath, tags = [], projectDir) {
123
197
  const date = new Date().toISOString().split("T")[0];
124
198
  const lastPhase1Id = formatRmId(ucItems.length);
199
+ const lastExId = formatExId(ucItems.length);
200
+ const gates = resolveExecutableGates(tags);
201
+ const toolSummary = gateToolSummary(gates);
202
+ const ucDeps = projectDir
203
+ ? inferUcDependencies(projectDir, ucItems)
204
+ : new Map();
125
205
  const phase1Rows = ucItems
126
206
  .map((uc, i) => {
127
207
  const rmId = formatRmId(i + 1);
128
208
  const title = `Implement ${uc.id}: ${uc.title}`;
129
- return `| ${rmId} | ${title} | | pending | docs/session-prompts/${rmId}.md |`;
209
+ const dependsOn = ucDeps.get(uc.id)?.join(", ") ?? "";
210
+ return `| ${rmId} | ${title} | ${dependsOn} | pending | docs/session-prompts/${rmId}.md |`;
211
+ })
212
+ .join("\n");
213
+ const exHeaderRow = `| ${EXECUTABLE_SPRINT_HEADER.id} | ${EXECUTABLE_SPRINT_HEADER.title} | ${lastPhase1Id} | pending | docs/session-prompts/${EXECUTABLE_SPRINT_HEADER.id}.md |`;
214
+ const exUcRows = ucItems
215
+ .map((uc, i) => {
216
+ const exId = formatExId(i + 1);
217
+ const dependsOn = i === 0 ? EXECUTABLE_SPRINT_HEADER.id : formatExId(i);
218
+ const title = `Verify live: ${uc.id} — ${uc.title} (HTTP call + persistence check)`;
219
+ return `| ${exId} | ${title} | ${dependsOn} | pending | docs/session-prompts/${exId}.md |`;
130
220
  })
131
221
  .join("\n");
132
222
  const phase2Rows = PHASE2_ITEMS.map((item, i) => {
133
- const dependsOn = i === 0 ? lastPhase1Id : PHASE2_ITEMS[i - 1].id;
223
+ const dependsOn = i === 0 ? lastExId : PHASE2_ITEMS[i - 1].id;
134
224
  return `| ${item.id} | ${item.title} | ${dependsOn} | pending | docs/session-prompts/${item.id}.md |`;
135
225
  }).join("\n");
136
226
  const phase3Rows = PHASE3_ITEMS.map((item, i) => {
@@ -155,6 +245,17 @@ export function buildRoadmapContent(projectName, ucItems, specFilePath) {
155
245
  "|---|---|---|---|---|",
156
246
  phase1Rows,
157
247
  "",
248
+ "## Executable Sprint: Live Verification",
249
+ "",
250
+ `> Gates: **${toolSummary}**. Complete every item in this phase before moving to Phase 2.`,
251
+ "> Each session starts the server, exercises the use case end-to-end, and confirms persistence.",
252
+ "> A use case is not done until its EX item passes.",
253
+ "",
254
+ "| ID | Title | Depends On | Status | Prompt |",
255
+ "|---|---|---|---|---|",
256
+ exHeaderRow,
257
+ exUcRows,
258
+ "",
158
259
  "## Phase 2: Integration & Quality Hardening",
159
260
  "",
160
261
  "| ID | Title | Depends On | Status | Prompt |",
@@ -197,6 +298,110 @@ export function buildSessionPromptStub(rmId, title, ucId) {
197
298
  "",
198
299
  ].join("\n");
199
300
  }
301
+ /**
302
+ * Build a session prompt stub for an Executable Sprint bring-up item (EX-000).
303
+ * For GAME projects, the bring-up check verifies the engine runs headlessly —
304
+ * which is itself proof that logic and rendering are properly separated.
305
+ *
306
+ * @param projectName - Human-readable project name
307
+ * @param tags - Project classification tags
308
+ * @returns Stub markdown string
309
+ */
310
+ export function buildExecutableBringUpStub(projectName, tags = []) {
311
+ const isGame = tags.includes("GAME");
312
+ if (isGame) {
313
+ return [
314
+ `# Session Prompt — EX-000: Bring Up (Headless Engine Check)`,
315
+ `> Executable Sprint — for game projects, bring-up proves the engine runs without a renderer.`,
316
+ `> If this step fails, the architecture is not yet correct: logic and rendering are coupled.`,
317
+ `> Fix the coupling before proceeding. The simulation gates cannot run until this passes.`,
318
+ "",
319
+ "## Task",
320
+ `Confirm that the ${projectName} game engine can be imported and run headlessly.`,
321
+ "",
322
+ "## Steps",
323
+ "1. Import the GameEngine class in a plain Node script (no renderer, no browser)",
324
+ "2. Create a game instance and advance one step: `GameEngine.create().applyAction(...)`",
325
+ "3. If this throws or requires a DOM/canvas/WebGL context, the architecture needs fixing",
326
+ "4. Confirm a RandomPlayer strategy can drive the engine to completion in a loop",
327
+ "5. Commit: `chore: EX-000 headless engine confirmed — logic/render separation verified`",
328
+ "",
329
+ "## Acceptance Criteria",
330
+ "- [ ] GameEngine imports and runs with zero renderer dependencies",
331
+ "- [ ] One full game loop completes headlessly without errors",
332
+ "- [ ] RandomPlayer (or equivalent) can drive the engine to an end state",
333
+ "",
334
+ ].join("\n");
335
+ }
336
+ return [
337
+ `# Session Prompt — EX-000: Bring Up`,
338
+ `> Executable Sprint — this session proves the server starts and responds before use-case verification begins.`,
339
+ "",
340
+ "## Task",
341
+ `Start the ${projectName} server and confirm it is reachable.`,
342
+ "",
343
+ "## Steps",
344
+ "1. Install dependencies and run the build (`npm install && npm run build`)",
345
+ "2. Start the server (`npm start` or `npm run dev`)",
346
+ "3. Confirm the health endpoint responds: `curl http://localhost:3000/health`",
347
+ "4. If no health endpoint exists, confirm any root route returns HTTP 200",
348
+ "5. Commit: `chore: EX-000 server starts and health check passes`",
349
+ "",
350
+ "## Acceptance Criteria",
351
+ "- [ ] Server starts without errors",
352
+ "- [ ] Health endpoint returns HTTP 200",
353
+ "- [ ] No unhandled startup exceptions in logs",
354
+ "",
355
+ ].join("\n");
356
+ }
357
+ /**
358
+ * Build a session prompt stub for an Executable Sprint use-case verification item.
359
+ * Lists all applicable gate files so the AI knows what to fill in and run.
360
+ *
361
+ * @param exId - The EX-00N identifier
362
+ * @param ucId - The UC identifier (e.g. UC-001)
363
+ * @param ucTitle - The use-case title
364
+ * @param tags - Project tags used to resolve gate tools
365
+ * @returns Stub markdown string
366
+ */
367
+ export function buildExecutableVerifyStub(exId, ucId, ucTitle, tags = []) {
368
+ const gates = resolveExecutableGates(tags);
369
+ const gateFileList = gates
370
+ .map((g) => `- \`${gateFilePath(g, ucId)}\` — ${g.label} (\`${g.runCommand}\`)`)
371
+ .join("\n");
372
+ return [
373
+ `# Session Prompt — ${exId}: Verify Live — ${ucId}`,
374
+ `> Executable Sprint — exercises ${ucId} end-to-end: request → service → persistence.`,
375
+ `> Run \`generate_session_prompt\` with item_description="${ucTitle}" to generate a fully bound prompt.`,
376
+ "",
377
+ "## Task",
378
+ `Verify that ${ucId}: ${ucTitle} works end-to-end against the running server.`,
379
+ "",
380
+ "## Gate Files (fill in and run each)",
381
+ gateFileList,
382
+ "",
383
+ "## Steps",
384
+ "1. Ensure the server is running (EX-000 must be done)",
385
+ `2. Fill in the gate file(s) above with ${ucId}-specific values`,
386
+ "3. Run each gate command and confirm it passes",
387
+ "4. Fix any failures before marking this item done",
388
+ `5. Commit: \`test: ${exId} ${ucId} live verification passes\``,
389
+ "",
390
+ "## Acceptance Criteria",
391
+ ...gates.map((g) => `- [ ] ${g.label} passes for ${ucId}`),
392
+ "- [ ] No server errors in logs during verification",
393
+ "",
394
+ ].join("\n");
395
+ }
396
+ /**
397
+ * Format an EX ID with zero-padded 3-digit suffix.
398
+ *
399
+ * @param index - 0-based for header (EX-000) or 1-based for UC items
400
+ * @returns Formatted EX-00N string
401
+ */
402
+ export function formatExId(index) {
403
+ return `EX-${String(index).padStart(3, "0")}`;
404
+ }
200
405
  /**
201
406
  * Format an RM ID with zero-padded 3-digit suffix.
202
407
  *
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap-builder.js","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,wEAAwE;AAExE,MAAM,iBAAiB,GAAG;IACxB,4BAA4B;IAC5B,8BAA8B;IAC9B,6BAA6B;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,+CAA+C,EAAE;IACxE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,+CAA+C,EAAE;IACxE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,oDAAoD,EAAE;CACrE,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,yDAAyD;KACjE;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,sDAAsD;KAC9D;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,uDAAuD;KAC/D;CACO,CAAC;AAEX,yEAAyE;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,oBAAoB,EAAE,CAAC;IAEvD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAyC,EAAE,CAAC;IAEzD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB;IAI3B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,EAAE,EAAE,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAC1C,KAAK;KACN,CAAC,CAAC,CAAC;AACN,CAAC;AAED,yEAAyE;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC5D,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;oBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,0EAA0E;AAE1E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,OAAuE,EACvE,YAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACrD,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,KAAK,IAAI,MAAM,KAAK,yCAAyC,IAAI,OAAO,CAAC;IAClF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;QACnE,OAAO,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,SAAS,qCAAqC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,SAAS,GACb,CAAC,KAAK,CAAC;YACL,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE;YAC3C,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,SAAS,qCAAqC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,KAAK,WAAW,UAAU;QAC1B,EAAE;QACF,0EAA0E;QAC1E,wCAAwC;QACxC,wFAAwF;QACxF,2EAA2E;QAC3E,EAAE;QACF,KAAK;QACL,EAAE;QACF,iCAAiC;QACjC,EAAE;QACF,+CAA+C;QAC/C,uBAAuB;QACvB,UAAU;QACV,EAAE;QACF,6CAA6C;QAC7C,EAAE;QACF,+CAA+C;QAC/C,uBAAuB;QACvB,UAAU;QACV,EAAE;QACF,mCAAmC;QACnC,EAAE;QACF,+CAA+C;QAC/C,uBAAuB;QACvB,UAAU;QACV,EAAE;QACF,KAAK;QACL,eAAe,IAAI,GAAG;QACtB,UAAU,YAAY,GAAG;QACzB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,KAAa,EACb,IAAY;IAEZ,OAAO;QACL,sBAAsB,IAAI,KAAK,KAAK,EAAE;QACtC,4DAA4D,KAAK,sCAAsC;QACvG,6EAA6E;QAC7E,EAAE;QACF,SAAS;QACT,KAAK;QACL,EAAE;QACF,wBAAwB;QACxB,SAAS,IAAI,2CAA2C;QACxD,0CAA0C;QAC1C,6CAA6C;QAC7C,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"roadmap-builder.js","sourceRoot":"","sources":["../../src/tools/roadmap-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * run_env_probe tool handler.
3
+ *
4
+ * Scans tests/env/ for probe files, executes each via bash,
5
+ * reports PASS/FAIL/TOOL_MISSING/NOT_IMPLEMENTED/NO_PROBE/TIMEOUT/ERROR.
6
+ * Writes .forgecraft/env-probe-run.json after execution.
7
+ */
8
+ import { z } from "zod";
9
+ import type { ToolResult } from "../shared/types.js";
10
+ import type { ProbeStatus } from "./run-harness.js";
11
+ export declare const runEnvProbeSchema: z.ZodObject<{
12
+ project_dir: z.ZodString;
13
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
14
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ project_dir: string;
17
+ env?: Record<string, string> | undefined;
18
+ timeout_ms?: number | undefined;
19
+ }, {
20
+ project_dir: string;
21
+ env?: Record<string, string> | undefined;
22
+ timeout_ms?: number | undefined;
23
+ }>;
24
+ export type RunEnvProbeInput = z.infer<typeof runEnvProbeSchema>;
25
+ export interface EnvProbeResult {
26
+ service: string;
27
+ probeId: string;
28
+ probeFile: string | null;
29
+ probeType: string;
30
+ status: ProbeStatus;
31
+ durationMs: number;
32
+ output?: string;
33
+ }
34
+ export interface EnvProbeRunJson {
35
+ timestamp: string;
36
+ passed: number;
37
+ failed: number;
38
+ errors: number;
39
+ notFound: number;
40
+ results: Array<{
41
+ service: string;
42
+ probeId: string;
43
+ status: string;
44
+ durationMs: number;
45
+ }>;
46
+ }
47
+ /**
48
+ * Parse a probe filename like "service-name-probe-id.health.sh" back into
49
+ * service + probeId + probeType components.
50
+ */
51
+ export declare function parseEnvProbeFileName(fileName: string): {
52
+ service: string;
53
+ probeId: string;
54
+ probeType: string;
55
+ };
56
+ export declare function runEnvProbeHandler(args: RunEnvProbeInput): Promise<ToolResult>;
57
+ //# sourceMappingURL=run-env-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-env-probe.d.ts","sourceRoot":"","sources":["../../src/tools/run-env-probe.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAIjE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAqCA;AA+CD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,UAAU,CAAC,CA4DrB"}