@lbruton/specflow 3.0.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 (414) hide show
  1. package/CHANGELOG.md +955 -0
  2. package/LICENSE +674 -0
  3. package/README.ar.md +314 -0
  4. package/README.de.md +314 -0
  5. package/README.es.md +314 -0
  6. package/README.fr.md +314 -0
  7. package/README.it.md +314 -0
  8. package/README.ja.md +316 -0
  9. package/README.ko.md +314 -0
  10. package/README.md +239 -0
  11. package/README.pt.md +314 -0
  12. package/README.ru.md +314 -0
  13. package/README.zh.md +314 -0
  14. package/dist/__tests__/config.test.d.ts +2 -0
  15. package/dist/__tests__/config.test.d.ts.map +1 -0
  16. package/dist/__tests__/config.test.js +264 -0
  17. package/dist/__tests__/config.test.js.map +1 -0
  18. package/dist/__tests__/index-args.test.d.ts +2 -0
  19. package/dist/__tests__/index-args.test.d.ts.map +1 -0
  20. package/dist/__tests__/index-args.test.js +43 -0
  21. package/dist/__tests__/index-args.test.js.map +1 -0
  22. package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
  23. package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
  24. package/dist/__tests__/index-entrypoint.test.js +23 -0
  25. package/dist/__tests__/index-entrypoint.test.js.map +1 -0
  26. package/dist/config.d.ts +26 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +188 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/core/__tests__/git-utils.test.d.ts +2 -0
  31. package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
  32. package/dist/core/__tests__/git-utils.test.js +179 -0
  33. package/dist/core/__tests__/git-utils.test.js.map +1 -0
  34. package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
  35. package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
  36. package/dist/core/__tests__/mdx-validator.test.js +42 -0
  37. package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
  38. package/dist/core/__tests__/path-utils.test.d.ts +2 -0
  39. package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
  40. package/dist/core/__tests__/path-utils.test.js +344 -0
  41. package/dist/core/__tests__/path-utils.test.js.map +1 -0
  42. package/dist/core/__tests__/project-registry.test.d.ts +2 -0
  43. package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
  44. package/dist/core/__tests__/project-registry.test.js +62 -0
  45. package/dist/core/__tests__/project-registry.test.js.map +1 -0
  46. package/dist/core/__tests__/security-utils.test.d.ts +2 -0
  47. package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
  48. package/dist/core/__tests__/security-utils.test.js +643 -0
  49. package/dist/core/__tests__/security-utils.test.js.map +1 -0
  50. package/dist/core/__tests__/task-validator.test.d.ts +2 -0
  51. package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
  52. package/dist/core/__tests__/task-validator.test.js +237 -0
  53. package/dist/core/__tests__/task-validator.test.js.map +1 -0
  54. package/dist/core/archive-service.d.ts +10 -0
  55. package/dist/core/archive-service.d.ts.map +1 -0
  56. package/dist/core/archive-service.js +99 -0
  57. package/dist/core/archive-service.js.map +1 -0
  58. package/dist/core/dashboard-session.d.ts +49 -0
  59. package/dist/core/dashboard-session.d.ts.map +1 -0
  60. package/dist/core/dashboard-session.js +132 -0
  61. package/dist/core/dashboard-session.js.map +1 -0
  62. package/dist/core/git-utils.d.ts +25 -0
  63. package/dist/core/git-utils.d.ts.map +1 -0
  64. package/dist/core/git-utils.js +87 -0
  65. package/dist/core/git-utils.js.map +1 -0
  66. package/dist/core/global-dir.d.ts +44 -0
  67. package/dist/core/global-dir.d.ts.map +1 -0
  68. package/dist/core/global-dir.js +74 -0
  69. package/dist/core/global-dir.js.map +1 -0
  70. package/dist/core/implementation-log-migrator.d.ts +41 -0
  71. package/dist/core/implementation-log-migrator.d.ts.map +1 -0
  72. package/dist/core/implementation-log-migrator.js +258 -0
  73. package/dist/core/implementation-log-migrator.js.map +1 -0
  74. package/dist/core/mdx-validator.d.ts +14 -0
  75. package/dist/core/mdx-validator.d.ts.map +1 -0
  76. package/dist/core/mdx-validator.js +34 -0
  77. package/dist/core/mdx-validator.js.map +1 -0
  78. package/dist/core/parser.d.ts +12 -0
  79. package/dist/core/parser.d.ts.map +1 -0
  80. package/dist/core/parser.js +144 -0
  81. package/dist/core/parser.js.map +1 -0
  82. package/dist/core/path-utils.d.ts +63 -0
  83. package/dist/core/path-utils.d.ts.map +1 -0
  84. package/dist/core/path-utils.js +288 -0
  85. package/dist/core/path-utils.js.map +1 -0
  86. package/dist/core/project-registry.d.ts +94 -0
  87. package/dist/core/project-registry.d.ts.map +1 -0
  88. package/dist/core/project-registry.js +293 -0
  89. package/dist/core/project-registry.js.map +1 -0
  90. package/dist/core/security-utils.d.ts +97 -0
  91. package/dist/core/security-utils.d.ts.map +1 -0
  92. package/dist/core/security-utils.js +264 -0
  93. package/dist/core/security-utils.js.map +1 -0
  94. package/dist/core/task-parser.d.ts +63 -0
  95. package/dist/core/task-parser.d.ts.map +1 -0
  96. package/dist/core/task-parser.js +332 -0
  97. package/dist/core/task-parser.js.map +1 -0
  98. package/dist/core/task-validator.d.ts +35 -0
  99. package/dist/core/task-validator.d.ts.map +1 -0
  100. package/dist/core/task-validator.js +236 -0
  101. package/dist/core/task-validator.js.map +1 -0
  102. package/dist/core/workspace-initializer.d.ts +16 -0
  103. package/dist/core/workspace-initializer.d.ts.map +1 -0
  104. package/dist/core/workspace-initializer.js +168 -0
  105. package/dist/core/workspace-initializer.js.map +1 -0
  106. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
  107. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
  108. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +69 -0
  109. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
  110. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
  111. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
  112. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +116 -0
  113. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
  114. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
  115. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
  116. package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
  117. package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
  118. package/dist/dashboard/approval-storage.d.ts +139 -0
  119. package/dist/dashboard/approval-storage.d.ts.map +1 -0
  120. package/dist/dashboard/approval-storage.js +586 -0
  121. package/dist/dashboard/approval-storage.js.map +1 -0
  122. package/dist/dashboard/execution-history-manager.d.ts +52 -0
  123. package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
  124. package/dist/dashboard/execution-history-manager.js +161 -0
  125. package/dist/dashboard/execution-history-manager.js.map +1 -0
  126. package/dist/dashboard/implementation-log-manager.d.ts +97 -0
  127. package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
  128. package/dist/dashboard/implementation-log-manager.js +625 -0
  129. package/dist/dashboard/implementation-log-manager.js.map +1 -0
  130. package/dist/dashboard/job-scheduler.d.ts +91 -0
  131. package/dist/dashboard/job-scheduler.d.ts.map +1 -0
  132. package/dist/dashboard/job-scheduler.js +321 -0
  133. package/dist/dashboard/job-scheduler.js.map +1 -0
  134. package/dist/dashboard/multi-server.d.ts +42 -0
  135. package/dist/dashboard/multi-server.d.ts.map +1 -0
  136. package/dist/dashboard/multi-server.js +1304 -0
  137. package/dist/dashboard/multi-server.js.map +1 -0
  138. package/dist/dashboard/parser.d.ts +19 -0
  139. package/dist/dashboard/parser.d.ts.map +1 -0
  140. package/dist/dashboard/parser.js +290 -0
  141. package/dist/dashboard/parser.js.map +1 -0
  142. package/dist/dashboard/project-manager.d.ts +82 -0
  143. package/dist/dashboard/project-manager.d.ts.map +1 -0
  144. package/dist/dashboard/project-manager.js +257 -0
  145. package/dist/dashboard/project-manager.js.map +1 -0
  146. package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
  147. package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
  148. package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
  149. package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
  150. package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
  151. package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
  152. package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  153. package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
  154. package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
  155. package/dist/dashboard/public/assets/arc-CtYZ6WTd.js +1 -0
  156. package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
  157. package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
  158. package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
  159. package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
  160. package/dist/dashboard/public/assets/blockDiagram-c4efeb88-CzEvDZI5.js +118 -0
  161. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  162. package/dist/dashboard/public/assets/c4Diagram-c83219d4-CuPd1dkK.js +10 -0
  163. package/dist/dashboard/public/assets/channel-kGGkJUti.js +1 -0
  164. package/dist/dashboard/public/assets/classDiagram-beda092f-CDTLUu9K.js +2 -0
  165. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-BlHqrcgN.js +2 -0
  166. package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
  167. package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
  168. package/dist/dashboard/public/assets/clone-CHdfA33T.js +1 -0
  169. package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
  170. package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
  171. package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
  172. package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
  173. package/dist/dashboard/public/assets/createText-1719965b-B3cTooQ1.js +7 -0
  174. package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
  175. package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
  176. package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
  177. package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
  178. package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
  179. package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
  180. package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
  181. package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
  182. package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
  183. package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
  184. package/dist/dashboard/public/assets/edges-96097737-CbHatH6o.js +4 -0
  185. package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
  186. package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
  187. package/dist/dashboard/public/assets/erDiagram-0228fc6a-MYCicRH6.js +51 -0
  188. package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
  189. package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
  190. package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
  191. package/dist/dashboard/public/assets/flowDb-c6c81e3f-DDm9aBGx.js +10 -0
  192. package/dist/dashboard/public/assets/flowDiagram-50d868cf-zb-JtJG0.js +4 -0
  193. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-DRD7GAtr.js +1 -0
  194. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-D5TGPnG-.js +139 -0
  195. package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
  196. package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
  197. package/dist/dashboard/public/assets/ganttDiagram-a2739b55-Cqst4HhR.js +257 -0
  198. package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
  199. package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
  200. package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-C8JWqtTx.js +70 -0
  201. package/dist/dashboard/public/assets/graph-Lpyd8dqZ.js +1 -0
  202. package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
  203. package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
  204. package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
  205. package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
  206. package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
  207. package/dist/dashboard/public/assets/index--_-9KDkB.js +1 -0
  208. package/dist/dashboard/public/assets/index-5325376f-Ngqm3jj1.js +1 -0
  209. package/dist/dashboard/public/assets/index-7POr4IQt.js +1 -0
  210. package/dist/dashboard/public/assets/index-B2wloU4M.js +7 -0
  211. package/dist/dashboard/public/assets/index-BB9i8dPx.js +329 -0
  212. package/dist/dashboard/public/assets/index-BHCmvfMN.js +1 -0
  213. package/dist/dashboard/public/assets/index-BWvyG2sq.js +1 -0
  214. package/dist/dashboard/public/assets/index-BhwV70vC.js +2 -0
  215. package/dist/dashboard/public/assets/index-Bqk8CAAy.js +1 -0
  216. package/dist/dashboard/public/assets/index-CUP35nar.js +1 -0
  217. package/dist/dashboard/public/assets/index-CYy3mVaI.js +1 -0
  218. package/dist/dashboard/public/assets/index-Cqbzr5qD.js +3 -0
  219. package/dist/dashboard/public/assets/index-Cv_FT1Rp.css +1 -0
  220. package/dist/dashboard/public/assets/index-D4J257wx.js +1 -0
  221. package/dist/dashboard/public/assets/index-D9fDAa7f.js +1 -0
  222. package/dist/dashboard/public/assets/index-DFN4bEYo.js +1 -0
  223. package/dist/dashboard/public/assets/index-DQ2Aap_e.js +1 -0
  224. package/dist/dashboard/public/assets/index-Djo38KZb.js +1 -0
  225. package/dist/dashboard/public/assets/index-RZXsuDxo.js +1 -0
  226. package/dist/dashboard/public/assets/index-m5SRqxVX.js +1 -0
  227. package/dist/dashboard/public/assets/infoDiagram-8eee0895-DYMb32US.js +7 -0
  228. package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
  229. package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
  230. package/dist/dashboard/public/assets/journeyDiagram-c64418c1-BgL0JuAb.js +139 -0
  231. package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
  232. package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
  233. package/dist/dashboard/public/assets/layout-DP9fJAz2.js +1 -0
  234. package/dist/dashboard/public/assets/line-N_NGiB5u.js +1 -0
  235. package/dist/dashboard/public/assets/linear-B1Bl-FQE.js +1 -0
  236. package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
  237. package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
  238. package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
  239. package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
  240. package/dist/dashboard/public/assets/mindmap-definition-8da855dc-DuejFf1j.js +415 -0
  241. package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
  242. package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
  243. package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
  244. package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
  245. package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
  246. package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
  247. package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
  248. package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
  249. package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
  250. package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
  251. package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
  252. package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
  253. package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
  254. package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
  255. package/dist/dashboard/public/assets/pieDiagram-a8764435-fJ2uKW1i.js +35 -0
  256. package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
  257. package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
  258. package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
  259. package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
  260. package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
  261. package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
  262. package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
  263. package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
  264. package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-Dowa1iq5.js +7 -0
  265. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  266. package/dist/dashboard/public/assets/requirementDiagram-08caed73-1PKeJnUu.js +52 -0
  267. package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
  268. package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
  269. package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-C3Nu91E8.js +8 -0
  270. package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
  271. package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
  272. package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-BbyYeaFb.js +122 -0
  273. package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
  274. package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
  275. package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
  276. package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
  277. package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
  278. package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
  279. package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
  280. package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
  281. package/dist/dashboard/public/assets/stateDiagram-1ecb1508-BVkb4gIE.js +1 -0
  282. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-Bm7qug6Q.js +1 -0
  283. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  284. package/dist/dashboard/public/assets/styles-b4e223ce-BuqydlKk.js +160 -0
  285. package/dist/dashboard/public/assets/styles-ca3715f6-C8L7peEM.js +207 -0
  286. package/dist/dashboard/public/assets/styles-d45a18b0-BbrCCPkQ.js +116 -0
  287. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  288. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DQZAHvSt.js +1 -0
  289. package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
  290. package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
  291. package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
  292. package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  293. package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
  294. package/dist/dashboard/public/assets/timeline-definition-faaaa080-YPoIuE--.js +61 -0
  295. package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
  296. package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
  297. package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
  298. package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  299. package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
  300. package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
  301. package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
  302. package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
  303. package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
  304. package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
  305. package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
  306. package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
  307. package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-BnI4pVWV.js +7 -0
  308. package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
  309. package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
  310. package/dist/dashboard/public/claude-icon-dark.svg +1 -0
  311. package/dist/dashboard/public/claude-icon.svg +1 -0
  312. package/dist/dashboard/public/index.html +16 -0
  313. package/dist/dashboard/settings-manager.d.ts +47 -0
  314. package/dist/dashboard/settings-manager.d.ts.map +1 -0
  315. package/dist/dashboard/settings-manager.js +180 -0
  316. package/dist/dashboard/settings-manager.js.map +1 -0
  317. package/dist/dashboard/utils.d.ts +31 -0
  318. package/dist/dashboard/utils.d.ts.map +1 -0
  319. package/dist/dashboard/utils.js +102 -0
  320. package/dist/dashboard/utils.js.map +1 -0
  321. package/dist/dashboard/watcher.d.ts +32 -0
  322. package/dist/dashboard/watcher.d.ts.map +1 -0
  323. package/dist/dashboard/watcher.js +173 -0
  324. package/dist/dashboard/watcher.js.map +1 -0
  325. package/dist/index.d.ts +13 -0
  326. package/dist/index.d.ts.map +1 -0
  327. package/dist/index.js +380 -0
  328. package/dist/index.js.map +1 -0
  329. package/dist/markdown/templates/code-quality-reviewer-template.md +76 -0
  330. package/dist/markdown/templates/design-template.md +141 -0
  331. package/dist/markdown/templates/implementer-prompt-template.md +122 -0
  332. package/dist/markdown/templates/product-template.md +51 -0
  333. package/dist/markdown/templates/requirements-template.md +73 -0
  334. package/dist/markdown/templates/spec-reviewer-template.md +58 -0
  335. package/dist/markdown/templates/structure-template.md +145 -0
  336. package/dist/markdown/templates/tasks-template.md +182 -0
  337. package/dist/markdown/templates/tech-template.md +99 -0
  338. package/dist/prompts/create-spec.d.ts +3 -0
  339. package/dist/prompts/create-spec.d.ts.map +1 -0
  340. package/dist/prompts/create-spec.js +93 -0
  341. package/dist/prompts/create-spec.js.map +1 -0
  342. package/dist/prompts/create-steering-doc.d.ts +3 -0
  343. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  344. package/dist/prompts/create-steering-doc.js +73 -0
  345. package/dist/prompts/create-steering-doc.js.map +1 -0
  346. package/dist/prompts/implement-task.d.ts +3 -0
  347. package/dist/prompts/implement-task.d.ts.map +1 -0
  348. package/dist/prompts/implement-task.js +189 -0
  349. package/dist/prompts/implement-task.js.map +1 -0
  350. package/dist/prompts/index.d.ts +15 -0
  351. package/dist/prompts/index.d.ts.map +1 -0
  352. package/dist/prompts/index.js +49 -0
  353. package/dist/prompts/index.js.map +1 -0
  354. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  355. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  356. package/dist/prompts/inject-spec-workflow-guide.js +47 -0
  357. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  358. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  359. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  360. package/dist/prompts/inject-steering-guide.js +51 -0
  361. package/dist/prompts/inject-steering-guide.js.map +1 -0
  362. package/dist/prompts/refresh-tasks.d.ts +3 -0
  363. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  364. package/dist/prompts/refresh-tasks.js +224 -0
  365. package/dist/prompts/refresh-tasks.js.map +1 -0
  366. package/dist/prompts/spec-status.d.ts +3 -0
  367. package/dist/prompts/spec-status.d.ts.map +1 -0
  368. package/dist/prompts/spec-status.js +75 -0
  369. package/dist/prompts/spec-status.js.map +1 -0
  370. package/dist/prompts/types.d.ts +13 -0
  371. package/dist/prompts/types.d.ts.map +1 -0
  372. package/dist/prompts/types.js +2 -0
  373. package/dist/prompts/types.js.map +1 -0
  374. package/dist/server.d.ts +17 -0
  375. package/dist/server.d.ts.map +1 -0
  376. package/dist/server.js +175 -0
  377. package/dist/server.js.map +1 -0
  378. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  379. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  380. package/dist/tools/__tests__/projectPath.test.js +187 -0
  381. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  382. package/dist/tools/approvals.d.ts +14 -0
  383. package/dist/tools/approvals.d.ts.map +1 -0
  384. package/dist/tools/approvals.js +501 -0
  385. package/dist/tools/approvals.js.map +1 -0
  386. package/dist/tools/index.d.ts +5 -0
  387. package/dist/tools/index.d.ts.map +1 -0
  388. package/dist/tools/index.js +57 -0
  389. package/dist/tools/index.js.map +1 -0
  390. package/dist/tools/log-implementation.d.ts +5 -0
  391. package/dist/tools/log-implementation.d.ts.map +1 -0
  392. package/dist/tools/log-implementation.js +446 -0
  393. package/dist/tools/log-implementation.js.map +1 -0
  394. package/dist/tools/spec-list.d.ts +5 -0
  395. package/dist/tools/spec-list.d.ts.map +1 -0
  396. package/dist/tools/spec-list.js +144 -0
  397. package/dist/tools/spec-list.js.map +1 -0
  398. package/dist/tools/spec-status.d.ts +5 -0
  399. package/dist/tools/spec-status.d.ts.map +1 -0
  400. package/dist/tools/spec-status.js +238 -0
  401. package/dist/tools/spec-status.js.map +1 -0
  402. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  403. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  404. package/dist/tools/spec-workflow-guide.js +580 -0
  405. package/dist/tools/spec-workflow-guide.js.map +1 -0
  406. package/dist/tools/steering-guide.d.ts +5 -0
  407. package/dist/tools/steering-guide.d.ts.map +1 -0
  408. package/dist/tools/steering-guide.js +192 -0
  409. package/dist/tools/steering-guide.js.map +1 -0
  410. package/dist/types.d.ts +186 -0
  411. package/dist/types.d.ts.map +1 -0
  412. package/dist/types.js +13 -0
  413. package/dist/types.js.map +1 -0
  414. package/package.json +105 -0
@@ -0,0 +1,51 @@
1
+ import { steeringGuideHandler } from '../tools/steering-guide.js';
2
+ const prompt = {
3
+ name: 'inject-steering-guide',
4
+ title: 'Inject Steering Guide into Context',
5
+ description: 'Injects the complete steering document workflow guide into the conversation context. This provides instructions for creating project-level guidance documents (product.md, tech.md, structure.md) when explicitly requested by the user.'
6
+ };
7
+ async function handler(args, context) {
8
+ // Call the steering-guide tool to get the full guide
9
+ const toolResponse = await steeringGuideHandler({}, context);
10
+ // Extract the guide content from the tool response
11
+ const guide = toolResponse.data?.guide || '';
12
+ const dashboardUrl = toolResponse.data?.dashboardUrl;
13
+ const nextSteps = toolResponse.nextSteps || [];
14
+ const messages = [
15
+ {
16
+ role: 'user',
17
+ content: {
18
+ type: 'text',
19
+ text: `Please review and follow this steering document workflow guide:
20
+
21
+ ${guide}
22
+
23
+ **Current Context:**
24
+ - Project: ${context.projectPath}
25
+ ${dashboardUrl ? `- Dashboard: ${dashboardUrl}` : '- Dashboard: Please start the dashboard or use VS Code extension "Spec Workflow MCP"'}
26
+
27
+ **Next Steps:**
28
+ ${nextSteps.map(step => `- ${step}`).join('\n')}
29
+
30
+ **Important Instructions:**
31
+ 1. This guide has been injected into your context for creating steering documents
32
+ 2. Only proceed if the user explicitly requested steering document creation
33
+ 3. Follow the sequence exactly: product.md → tech.md → structure.md
34
+ 4. Read templates from .spec-workflow/templates/ directory
35
+ 5. Create documents in .spec-workflow/steering/ directory
36
+ 6. Request approval after each document using the approvals tool
37
+ 7. Never proceed to the next document without successful approval cleanup
38
+
39
+ **Note:** Steering documents are NOT part of the standard spec workflow. They are project-level guidance documents that should only be created when explicitly requested by the user. These documents establish vision, architecture, and conventions for established codebases.
40
+
41
+ Please acknowledge that you've reviewed this steering workflow guide and confirm whether the user wants to create steering documents.`
42
+ }
43
+ }
44
+ ];
45
+ return messages;
46
+ }
47
+ export const injectSteeringGuidePrompt = {
48
+ prompt,
49
+ handler
50
+ };
51
+ //# sourceMappingURL=inject-steering-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-steering-guide.js","sourceRoot":"","sources":["../../src/prompts/inject-steering-guide.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,oCAAoC;IAC3C,WAAW,EAAE,0OAA0O;CACxP,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,qDAAqD;IACrD,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE7D,mDAAmD;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;IACrD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC;IAE/C,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;;EAEZ,KAAK;;;aAGM,OAAO,CAAC,WAAW;EAC9B,YAAY,CAAC,CAAC,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC,sFAAsF;;;EAGtI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;sIAauF;aAC/H;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,MAAM;IACN,OAAO;CACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PromptDefinition } from './types.js';
2
+ export declare const refreshTasksPrompt: PromptDefinition;
3
+ //# sourceMappingURL=refresh-tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-tasks.d.ts","sourceRoot":"","sources":["../../src/prompts/refresh-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAmO9C,eAAO,MAAM,kBAAkB,EAAE,gBAGhC,CAAC"}
@@ -0,0 +1,224 @@
1
+ import { PathUtils } from '../core/path-utils.js';
2
+ import { readFile } from 'fs/promises';
3
+ import { join } from 'path';
4
+ const prompt = {
5
+ name: 'refresh-tasks',
6
+ title: 'Refresh Tasks After Spec Changes',
7
+ description: 'Comprehensive guide for updating tasks.md when requirements or design change during implementation. Preserves completed work while aligning pending tasks with current spec.',
8
+ arguments: [
9
+ {
10
+ name: 'specName',
11
+ description: 'Name of the specification to refresh tasks for',
12
+ required: true
13
+ },
14
+ {
15
+ name: 'changes',
16
+ description: 'Description of what changed in requirements or design',
17
+ required: false
18
+ }
19
+ ]
20
+ };
21
+ async function handler(args, context) {
22
+ const { specName, changes = 'Requirements or design have been updated' } = args;
23
+ const projectPath = context.projectPath;
24
+ // Try to load existing documents for context
25
+ let contextInfo = '';
26
+ try {
27
+ const specDir = PathUtils.getSpecPath(projectPath, specName);
28
+ // Check what documents exist
29
+ let hasRequirements = false;
30
+ let hasDesign = false;
31
+ let hasTasks = false;
32
+ try {
33
+ await readFile(join(specDir, 'requirements.md'), 'utf-8');
34
+ hasRequirements = true;
35
+ }
36
+ catch (error) {
37
+ // File doesn't exist
38
+ }
39
+ try {
40
+ await readFile(join(specDir, 'design.md'), 'utf-8');
41
+ hasDesign = true;
42
+ }
43
+ catch (error) {
44
+ // File doesn't exist
45
+ }
46
+ try {
47
+ await readFile(join(specDir, 'tasks.md'), 'utf-8');
48
+ hasTasks = true;
49
+ }
50
+ catch (error) {
51
+ // File doesn't exist
52
+ }
53
+ contextInfo = `
54
+ ## Current Spec Status for "${specName}"
55
+ - Requirements.md exists: ${hasRequirements ? 'Yes' : 'No'}
56
+ - Design.md exists: ${hasDesign ? 'Yes' : 'No'}
57
+ - Tasks.md exists: ${hasTasks ? 'Yes' : 'No'}
58
+
59
+ ## Reported Changes
60
+ ${changes}
61
+ `;
62
+ }
63
+ catch (error) {
64
+ contextInfo = `
65
+ ## Spec: "${specName}"
66
+ Unable to check existing documents. Ensure the spec exists at the correct path.
67
+
68
+ ## Reported Changes
69
+ ${changes}
70
+ `;
71
+ }
72
+ const content = `# Task Refresh Instructions
73
+
74
+ ${contextInfo}
75
+
76
+ ## Context
77
+ You are refreshing the task list for specification "${specName}" because requirements or design have changed during implementation. Your goal is to ensure the task list accurately reflects what needs to be done to bridge the gap between current implementation and the updated requirements/design.
78
+
79
+ ## CRITICAL: Source of Truth
80
+ - Requirements come ONLY from requirements.md - not from existing tasks
81
+ - Design decisions come ONLY from design.md - not from existing tasks
82
+ - Tasks are implementation steps - they implement requirements, they don't define them
83
+ - If a feature exists in tasks but NOT in requirements.md/design.md, it has been REMOVED from the spec
84
+
85
+ ## Three-Pass Validation Process
86
+
87
+ ### PASS 1: Validate Existing Tasks Against Current Spec
88
+ For each existing task, verify if the feature it implements still exists in requirements.md or design.md.
89
+
90
+ Actions for PENDING tasks:
91
+ - KEEP if the feature is still in requirements/design
92
+ - REMOVE if the feature is NOT in requirements/design (feature was cut from spec)
93
+
94
+ Actions for COMPLETED/IN-PROGRESS tasks:
95
+ - ALWAYS PRESERVE completed [x] and in-progress [-] tasks exactly as written
96
+ - If the feature was removed, add a note: "_Note: Feature removed from spec but task preserved_"
97
+ - If architecture changed, add migration tasks immediately after the completed work
98
+
99
+ ### PASS 2: Gap Analysis
100
+ For each requirement in requirements.md, verify corresponding task coverage exists.
101
+ For each design decision in design.md, verify tasks align with the architecture.
102
+
103
+ Actions:
104
+ - ADD new tasks for requirements/design elements without task coverage
105
+ - ADD migration tasks when architecture changes affect completed work
106
+ - UPDATE pending tasks that need alignment with updated requirements
107
+
108
+ ### PASS 3: Create Updated Task List
109
+ After Pass 1 and Pass 2, determine if changes are needed:
110
+ - Are there pending tasks to remove?
111
+ - Are there new tasks to add?
112
+ - Are there migration tasks needed?
113
+ - Are there existing tasks to modify?
114
+
115
+ If NO changes needed: Report "Task list is already aligned with current requirements - no refresh needed" and STOP.
116
+
117
+ If changes ARE needed, build the new tasks.md with:
118
+ 1. All completed [x] tasks preserved exactly as written
119
+ 2. All in-progress [-] tasks preserved exactly as written
120
+ 3. Migration tasks added where architecture changes affect completed work
121
+ 4. Only pending [ ] tasks that have backing in current requirements/design
122
+ 5. New tasks for any missing requirements/design elements
123
+ 6. Proper sequencing and requirement references
124
+
125
+ ## Handling Architecture Changes
126
+
127
+ When architecture changes affect already-implemented code, add migration tasks:
128
+
129
+ Example: MongoDB to PostgreSQL switch with completed MongoDB work:
130
+ - [x] 2.1 Create MongoDB connection logic
131
+ - [x] 2.2 Define MongoDB schemas
132
+ - [x] 2.3 Implement MongoDB queries
133
+ - [ ] 2.4 Migrate MongoDB schemas to PostgreSQL tables (NEW)
134
+ - [ ] 2.5 Replace MongoDB connection with PostgreSQL client (NEW)
135
+ - [ ] 2.6 Convert MongoDB queries to PostgreSQL syntax (NEW)
136
+ - [ ] 2.7 Migrate existing data from MongoDB to PostgreSQL (NEW)
137
+ - [ ] 2.8 Verify data integrity after migration (NEW)
138
+ - [ ] 2.9 Remove MongoDB dependencies after verification (NEW)
139
+ - [ ] 2.10 Implement remaining PostgreSQL features
140
+
141
+ Example: REST to GraphQL migration with completed REST endpoints:
142
+ - [x] 3.1 Implement user REST endpoints
143
+ - [x] 3.2 Implement product REST endpoints
144
+ - [ ] 3.3 Define GraphQL schema for users and products (NEW)
145
+ - [ ] 3.4 Create GraphQL resolvers wrapping REST logic (NEW)
146
+ - [ ] 3.5 Update client to use GraphQL queries (NEW)
147
+ - [ ] 3.6 Test GraphQL implementation thoroughly (NEW)
148
+ - [ ] 3.7 Remove REST endpoints after GraphQL verified (NEW)
149
+
150
+ ## Task Format Requirements
151
+ Each task must follow this format:
152
+ - [ ] 1.1 Create user authentication interface
153
+ - File: src/auth/UserAuth.ts
154
+ - Implement login and registration forms
155
+ - Add form validation and error handling
156
+ - Purpose: Enable user account management
157
+ - _Leverage: src/components/BaseForm.tsx, src/utils/validation.ts_
158
+ - _Requirements: 1.1, 1.2_
159
+
160
+ Migration tasks should follow this format:
161
+ - [ ] 2.4 Migrate MongoDB schemas to PostgreSQL tables
162
+ - File: src/database/migrations/mongo-to-postgres.ts
163
+ - Convert document schemas to relational tables
164
+ - Map embedded documents to foreign key relationships
165
+ - Preserve all existing data relationships
166
+ - Purpose: Transition database layer to new architecture
167
+ - _Leverage: Completed MongoDB schemas in tasks 2.1-2.3_
168
+ - _Requirements: Design section 3.2_
169
+
170
+ ## Critical Rules
171
+ - ALWAYS preserve completed [x] tasks exactly as written
172
+ - ALWAYS preserve in-progress [-] tasks exactly as written
173
+ - ALWAYS add migration tasks when architecture changes affect completed work
174
+ - ALWAYS reference specific requirements (e.g., _Requirements: 1.1, 2.3_)
175
+ - ENSURE tasks build incrementally with proper dependencies
176
+ - MAKE tasks atomic, specific, and actionable
177
+ - PRESERVE the original tasks.md structure and format
178
+ - KEEP tasks.md clean - only include the task list itself
179
+
180
+ ## Progressive Migration Strategy
181
+
182
+ For major architecture changes, create tasks that support progressive migration:
183
+ 1. Implement new architecture alongside existing
184
+ 2. Add compatibility layer tasks
185
+ 3. Migrate functionality incrementally
186
+ 4. Verify each migration step
187
+ 5. Remove old implementation only after full verification
188
+
189
+ This ensures the application remains functional throughout the transition.
190
+
191
+ ## Implementation Steps
192
+ 1. Read requirements.md and design.md carefully - these define what should exist
193
+ 2. Read current tasks.md and identify completed, in-progress, and pending tasks
194
+ 3. Perform Pass 1: Validate existing tasks against current spec
195
+ 4. Perform Pass 2: Identify gaps in task coverage
196
+ 5. Determine if changes are needed
197
+ 6. If changes needed, build updated task list with proper validation
198
+ 7. Use create-spec-doc tool to save the updated tasks.md
199
+ 8. Report what changes were made and why
200
+
201
+ ## Example Analysis Output
202
+
203
+ When refreshing tasks, provide clear feedback:
204
+
205
+ "Task Refresh Analysis:
206
+ - Preserved: 5 completed tasks, 2 in-progress tasks
207
+ - Removed: 3 pending tasks for deleted reporting feature
208
+ - Added: 4 migration tasks for MongoDB to PostgreSQL transition
209
+ - Added: 6 new tasks for social login feature
210
+ - Updated: 2 pending tasks to align with new API design
211
+
212
+ The tasks.md has been updated to reflect current requirements while preserving all completed work."`;
213
+ return [
214
+ {
215
+ role: 'user',
216
+ content: { type: 'text', text: content }
217
+ }
218
+ ];
219
+ }
220
+ export const refreshTasksPrompt = {
221
+ prompt,
222
+ handler
223
+ };
224
+ //# sourceMappingURL=refresh-tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-tasks.js","sourceRoot":"","sources":["../../src/prompts/refresh-tasks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,8KAA8K;IAC3L,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,0CAA0C,EAAE,GAAG,IAAI,CAAC;IAChF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,6CAA6C;IAC7C,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,6BAA6B;QAC7B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,WAAW,GAAG;8BACY,QAAQ;4BACV,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;sBACpC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;qBACzB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;EAG1C,OAAO;CACR,CAAC;IACA,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,GAAG;YACN,QAAQ;;;;EAIlB,OAAO;CACR,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG;;EAEhB,WAAW;;;sDAGyC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGAuIsC,CAAC;IAEnG,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;SACzC;KACF,CAAC;AAAA,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,MAAM;IACN,OAAO;CACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PromptDefinition } from './types.js';
2
+ export declare const specStatusPrompt: PromptDefinition;
3
+ //# sourceMappingURL=spec-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA8E9C,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC"}
@@ -0,0 +1,75 @@
1
+ const prompt = {
2
+ name: 'spec-status',
3
+ title: 'Specification Status Overview',
4
+ description: 'Get comprehensive status overview of specification documents, tasks, and approval workflows. Useful for project tracking and progress reporting.',
5
+ arguments: [
6
+ {
7
+ name: 'specName',
8
+ description: 'Feature name in kebab-case to get status for (optional - if not provided, shows all specs)',
9
+ required: false
10
+ },
11
+ {
12
+ name: 'detailed',
13
+ description: 'Show detailed status including task breakdown and approval history',
14
+ required: false
15
+ }
16
+ ]
17
+ };
18
+ async function handler(args, context) {
19
+ const { specName, detailed } = args;
20
+ const scope = specName ? `the "${specName}" feature` : 'all specifications in the project';
21
+ const detailLevel = detailed ? 'detailed' : 'summary';
22
+ const messages = [
23
+ {
24
+ role: 'user',
25
+ content: {
26
+ type: 'text',
27
+ text: `Get ${detailLevel} status overview for ${scope}.
28
+
29
+ **Context:**
30
+ - Project: ${context.projectPath}
31
+ ${specName ? `- Feature: ${specName}` : '- Scope: All specifications'}
32
+ - Detail level: ${detailLevel}
33
+ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
34
+
35
+ **Instructions:**
36
+ ${specName ?
37
+ `1. Use the spec-status tool with specName "${specName}" to get status information
38
+ 2. If you need detailed task information, read the tasks.md file directly at .spec-workflow/specs/${specName}/tasks.md
39
+ 3. Check for any pending approvals using approvals tool with action:'status'` :
40
+ `1. List directory .spec-workflow/specs/ to see all specifications
41
+ 2. Use the spec-status tool to get status for each specification
42
+ 3. Provide a consolidated overview of project progress`}
43
+
44
+ **Status Information Includes:**
45
+ - **Document Status**: Which documents exist (requirements, design, tasks)
46
+ - **Task Progress**: Completion status and remaining work
47
+ - **Approval Status**: Pending, approved, or rejected approvals
48
+ - **File Information**: Last modified dates and file sizes
49
+ - **Workflow Stage**: Current phase in the spec-driven development process
50
+
51
+ **Workflow Stages:**
52
+ 1. **Planning**: Requirements document created and approved
53
+ 2. **Design**: Design document created and approved
54
+ 3. **Implementation**: Tasks defined and implementation in progress
55
+ 4. **Review**: Implementation complete, awaiting final approval
56
+ 5. **Complete**: All tasks complete and approved
57
+
58
+ ${detailed ? `**Detailed Information Includes:**
59
+ - Individual task breakdown with completion status
60
+ - Approval request history and reviewer comments
61
+ - File modification timestamps
62
+ - Steering document references
63
+ - Dependency tracking between specs` : ''}
64
+
65
+ Please provide a comprehensive status report that helps understand the current state and next steps.`
66
+ }
67
+ }
68
+ ];
69
+ return messages;
70
+ }
71
+ export const specStatusPrompt = {
72
+ prompt,
73
+ handler
74
+ };
75
+ //# sourceMappingURL=spec-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,kJAAkJ;IAC/J,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,4FAA4F;YACzG,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC;IAC3F,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtD,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,WAAW,wBAAwB,KAAK;;;aAGhD,OAAO,CAAC,WAAW;EAC9B,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,6BAA6B;kBACnD,WAAW;EAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAGlE,QAAQ,CAAC,CAAC;oBACV,8CAA8C,QAAQ;oGAC4C,QAAQ;6EAC/B,CAAC,CAAC;oBAC7E;;uDAEqD;;;;;;;;;;;;;;;;EAgBrD,QAAQ,CAAC,CAAC,CAAC;;;;;oCAKuB,CAAC,CAAC,CAAC,EAAE;;qGAE4D;aAC9F;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,MAAM;IACN,OAAO;CACR,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Prompt, PromptMessage } from '@modelcontextprotocol/sdk/types.js';
2
+ import { ToolContext } from '../types.js';
3
+ export interface PromptHandler {
4
+ (args: Record<string, any>, context: ToolContext): Promise<PromptMessage[]>;
5
+ }
6
+ export interface PromptDefinition {
7
+ prompt: Prompt;
8
+ handler: PromptHandler;
9
+ }
10
+ export interface PromptResponse {
11
+ messages: PromptMessage[];
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAkB,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export declare class SpecWorkflowMCPServer {
2
+ private server;
3
+ private projectPath;
4
+ private workspacePath;
5
+ private projectRegistry;
6
+ private lang?;
7
+ constructor();
8
+ initialize(projectPath: string, workspacePath: string, lang?: string): Promise<void>;
9
+ private setupHandlers;
10
+ /**
11
+ * Check if running in Docker mode (path translation enabled)
12
+ * When in Docker, we can't verify host PIDs and want projects to persist
13
+ */
14
+ private isDockerMode;
15
+ stop(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAoBA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAC,CAAS;;IAiChB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IA4E1E,OAAO,CAAC,aAAa;IAoCrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMd,IAAI;CAuBX"}
package/dist/server.js ADDED
@@ -0,0 +1,175 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
4
+ import { registerTools, handleToolCall } from './tools/index.js';
5
+ import { registerPrompts, handlePromptList, handlePromptGet } from './prompts/index.js';
6
+ import { validateProjectPath } from './core/path-utils.js';
7
+ import { WorkspaceInitializer } from './core/workspace-initializer.js';
8
+ import { ProjectRegistry } from './core/project-registry.js';
9
+ import { DashboardSessionManager } from './core/dashboard-session.js';
10
+ import { readFileSync } from 'fs';
11
+ import { join, dirname } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ export class SpecWorkflowMCPServer {
14
+ server;
15
+ projectPath; // workflowRootPath for .spec-workflow operations
16
+ workspacePath; // workspace/worktree path for identity in registry
17
+ projectRegistry;
18
+ lang;
19
+ constructor() {
20
+ // Get version from package.json
21
+ const __dirname = dirname(fileURLToPath(import.meta.url));
22
+ const packageJsonPath = join(__dirname, '..', 'package.json');
23
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
24
+ // Get all registered tools and prompts
25
+ const tools = registerTools();
26
+ const prompts = registerPrompts();
27
+ // Create tools capability object with each tool name
28
+ const toolsCapability = tools.reduce((acc, tool) => {
29
+ acc[tool.name] = {};
30
+ return acc;
31
+ }, {});
32
+ this.server = new Server({
33
+ name: 'specflow',
34
+ version: packageJson.version
35
+ }, {
36
+ capabilities: {
37
+ tools: toolsCapability,
38
+ prompts: {
39
+ listChanged: true
40
+ }
41
+ }
42
+ });
43
+ this.projectRegistry = new ProjectRegistry();
44
+ }
45
+ async initialize(projectPath, workspacePath, lang) {
46
+ this.projectPath = projectPath;
47
+ this.workspacePath = workspacePath;
48
+ this.lang = lang;
49
+ try {
50
+ // Validate project path
51
+ await validateProjectPath(this.projectPath);
52
+ await validateProjectPath(this.workspacePath);
53
+ // Initialize workspace
54
+ const __dirname = dirname(fileURLToPath(import.meta.url));
55
+ const packageJsonPath = join(__dirname, '..', 'package.json');
56
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
57
+ const workspaceInitializer = new WorkspaceInitializer(this.projectPath, packageJson.version);
58
+ await workspaceInitializer.initializeWorkspace();
59
+ // Register this project in the global registry
60
+ const projectId = await this.projectRegistry.registerProject(this.workspacePath, process.pid, {
61
+ workflowRootPath: this.projectPath
62
+ });
63
+ console.error(`Project registered: ${projectId}`);
64
+ // Try to get the dashboard URL from session manager
65
+ let dashboardUrl = undefined;
66
+ try {
67
+ const sessionManager = new DashboardSessionManager();
68
+ const dashboardSession = await sessionManager.getDashboardSession();
69
+ if (dashboardSession) {
70
+ dashboardUrl = dashboardSession.url;
71
+ }
72
+ }
73
+ catch (error) {
74
+ // Dashboard not running, continue without it
75
+ }
76
+ // Create context for tools
77
+ const context = {
78
+ projectPath: this.projectPath,
79
+ dashboardUrl: dashboardUrl,
80
+ lang: this.lang
81
+ };
82
+ // Register handlers
83
+ this.setupHandlers(context);
84
+ // Connect to stdio transport
85
+ const transport = new StdioServerTransport();
86
+ // Handle client disconnection - exit gracefully when transport closes
87
+ transport.onclose = async () => {
88
+ await this.stop();
89
+ process.exit(0);
90
+ };
91
+ await this.server.connect(transport);
92
+ // Monitor stdin for client disconnection (additional safety net)
93
+ process.stdin.on('end', async () => {
94
+ await this.stop();
95
+ process.exit(0);
96
+ });
97
+ // Handle stdin errors
98
+ process.stdin.on('error', async (error) => {
99
+ console.error('stdin error:', error);
100
+ await this.stop();
101
+ process.exit(1);
102
+ });
103
+ // MCP server initialized successfully
104
+ }
105
+ catch (error) {
106
+ throw error;
107
+ }
108
+ }
109
+ setupHandlers(context) {
110
+ // Tool handlers
111
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
112
+ tools: registerTools()
113
+ }));
114
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
115
+ try {
116
+ return await handleToolCall(request.params.name, request.params.arguments || {}, context);
117
+ }
118
+ catch (error) {
119
+ throw new McpError(ErrorCode.InternalError, error.message);
120
+ }
121
+ });
122
+ // Prompt handlers
123
+ this.server.setRequestHandler(ListPromptsRequestSchema, async () => {
124
+ try {
125
+ return await handlePromptList();
126
+ }
127
+ catch (error) {
128
+ throw new McpError(ErrorCode.InternalError, error.message);
129
+ }
130
+ });
131
+ this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
132
+ try {
133
+ return await handlePromptGet(request.params.name, request.params.arguments || {}, context);
134
+ }
135
+ catch (error) {
136
+ throw new McpError(ErrorCode.InternalError, error.message);
137
+ }
138
+ });
139
+ }
140
+ /**
141
+ * Check if running in Docker mode (path translation enabled)
142
+ * When in Docker, we can't verify host PIDs and want projects to persist
143
+ */
144
+ isDockerMode() {
145
+ const hostPrefix = process.env.SPEC_WORKFLOW_HOST_PATH_PREFIX;
146
+ const containerPrefix = process.env.SPEC_WORKFLOW_CONTAINER_PATH_PREFIX;
147
+ return !!(hostPrefix && containerPrefix);
148
+ }
149
+ async stop() {
150
+ try {
151
+ // Only unregister when NOT in Docker mode
152
+ // In Docker, projects should persist across sessions since we can't verify host PIDs
153
+ if (!this.isDockerMode()) {
154
+ try {
155
+ // Pass current PID to only remove this specific instance
156
+ await this.projectRegistry.unregisterProject(this.workspacePath, process.pid);
157
+ console.error('Project instance unregistered from global registry');
158
+ }
159
+ catch (error) {
160
+ // Ignore errors during cleanup
161
+ }
162
+ }
163
+ else {
164
+ console.error('Docker mode: skipping project unregistration (projects persist across sessions)');
165
+ }
166
+ // Stop MCP server
167
+ await this.server.close();
168
+ }
169
+ catch (error) {
170
+ console.error('Error during shutdown:', error);
171
+ // Continue with shutdown even if there are errors
172
+ }
173
+ }
174
+ }
175
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=projectPath.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectPath.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/projectPath.test.ts"],"names":[],"mappings":""}