@lbruton/spec-workflow-mcp 2.2.4

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 (407) 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 +373 -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 +11 -0
  79. package/dist/core/parser.d.ts.map +1 -0
  80. package/dist/core/parser.js +126 -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 +297 -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 +165 -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 +586 -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 +1313 -0
  137. package/dist/dashboard/multi-server.js.map +1 -0
  138. package/dist/dashboard/parser.d.ts +18 -0
  139. package/dist/dashboard/parser.d.ts.map +1 -0
  140. package/dist/dashboard/parser.js +243 -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-C8LPXB-J.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-RidjsOEy.js +118 -0
  161. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  162. package/dist/dashboard/public/assets/c4Diagram-c83219d4-CAH3hSpm.js +10 -0
  163. package/dist/dashboard/public/assets/channel-CmDIZRCD.js +1 -0
  164. package/dist/dashboard/public/assets/classDiagram-beda092f-Bo46Efmw.js +2 -0
  165. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-Be57sb3z.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-BiekPeZp.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-YurEYFNx.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--BjsAXwD.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-BLGuJz36.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-C8vD2iEO.js +10 -0
  192. package/dist/dashboard/public/assets/flowDiagram-50d868cf-BhxgVmOU.js +4 -0
  193. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-DvKCh0ha.js +1 -0
  194. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-CxOZDcEC.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-vP9JOLba.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-Cw0sm0i1.js +70 -0
  201. package/dist/dashboard/public/assets/graph-DKTWMcEG.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-1zJPiVa8.js +3 -0
  208. package/dist/dashboard/public/assets/index-5325376f-DWs4kCT4.js +1 -0
  209. package/dist/dashboard/public/assets/index-BITJ9OoM.js +1 -0
  210. package/dist/dashboard/public/assets/index-C38JlXWp.js +1 -0
  211. package/dist/dashboard/public/assets/index-CCjPelL2.js +2 -0
  212. package/dist/dashboard/public/assets/index-CD9WQNmE.js +1 -0
  213. package/dist/dashboard/public/assets/index-CU7K5Zcb.js +1 -0
  214. package/dist/dashboard/public/assets/index-CXQVOhJV.js +1 -0
  215. package/dist/dashboard/public/assets/index-CXcaRrZ2.js +1 -0
  216. package/dist/dashboard/public/assets/index-ChLAL6g5.css +1 -0
  217. package/dist/dashboard/public/assets/index-D0o1vVOe.js +7 -0
  218. package/dist/dashboard/public/assets/index-DCsxqRvu.js +1 -0
  219. package/dist/dashboard/public/assets/index-DL3iiiRz.js +1 -0
  220. package/dist/dashboard/public/assets/index-DMv2_K2V.js +1 -0
  221. package/dist/dashboard/public/assets/index-DX7EEJ21.js +1 -0
  222. package/dist/dashboard/public/assets/index-Dey_HIH7.js +1 -0
  223. package/dist/dashboard/public/assets/index-DzDTRLhf.js +1 -0
  224. package/dist/dashboard/public/assets/index-OePkEWBg.js +1 -0
  225. package/dist/dashboard/public/assets/index-_d82jdTP.js +1 -0
  226. package/dist/dashboard/public/assets/index-yCKz4OXA.js +319 -0
  227. package/dist/dashboard/public/assets/infoDiagram-8eee0895-BRq08fZf.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-Cf8D2OC8.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-CVdidYA-.js +1 -0
  234. package/dist/dashboard/public/assets/line-BdckgA27.js +1 -0
  235. package/dist/dashboard/public/assets/linear-C9Nh3JLa.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-CK-y1AmO.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-T8V0JN2R.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-CmtVsb5L.js +7 -0
  265. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  266. package/dist/dashboard/public/assets/requirementDiagram-08caed73-BUcTnzDl.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-FswuxQ9M.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-BJQ15rhX.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-BfyE0DYv.js +1 -0
  282. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-pcGOYyiW.js +1 -0
  283. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  284. package/dist/dashboard/public/assets/styles-b4e223ce--lUviH7V.js +160 -0
  285. package/dist/dashboard/public/assets/styles-ca3715f6-BXbrD1Av.js +207 -0
  286. package/dist/dashboard/public/assets/styles-d45a18b0-GyiMrLKu.js +116 -0
  287. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  288. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DI4Z1GTS.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-B1IgohU4.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-B5oRDe_I.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/design-template.md +96 -0
  330. package/dist/markdown/templates/product-template.md +51 -0
  331. package/dist/markdown/templates/requirements-template.md +50 -0
  332. package/dist/markdown/templates/structure-template.md +145 -0
  333. package/dist/markdown/templates/tasks-template.md +139 -0
  334. package/dist/markdown/templates/tech-template.md +99 -0
  335. package/dist/prompts/create-spec.d.ts +3 -0
  336. package/dist/prompts/create-spec.d.ts.map +1 -0
  337. package/dist/prompts/create-spec.js +93 -0
  338. package/dist/prompts/create-spec.js.map +1 -0
  339. package/dist/prompts/create-steering-doc.d.ts +3 -0
  340. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  341. package/dist/prompts/create-steering-doc.js +73 -0
  342. package/dist/prompts/create-steering-doc.js.map +1 -0
  343. package/dist/prompts/implement-task.d.ts +3 -0
  344. package/dist/prompts/implement-task.d.ts.map +1 -0
  345. package/dist/prompts/implement-task.js +173 -0
  346. package/dist/prompts/implement-task.js.map +1 -0
  347. package/dist/prompts/index.d.ts +15 -0
  348. package/dist/prompts/index.d.ts.map +1 -0
  349. package/dist/prompts/index.js +49 -0
  350. package/dist/prompts/index.js.map +1 -0
  351. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  352. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  353. package/dist/prompts/inject-spec-workflow-guide.js +47 -0
  354. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  355. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  356. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  357. package/dist/prompts/inject-steering-guide.js +51 -0
  358. package/dist/prompts/inject-steering-guide.js.map +1 -0
  359. package/dist/prompts/refresh-tasks.d.ts +3 -0
  360. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  361. package/dist/prompts/refresh-tasks.js +224 -0
  362. package/dist/prompts/refresh-tasks.js.map +1 -0
  363. package/dist/prompts/spec-status.d.ts +3 -0
  364. package/dist/prompts/spec-status.d.ts.map +1 -0
  365. package/dist/prompts/spec-status.js +75 -0
  366. package/dist/prompts/spec-status.js.map +1 -0
  367. package/dist/prompts/types.d.ts +13 -0
  368. package/dist/prompts/types.d.ts.map +1 -0
  369. package/dist/prompts/types.js +2 -0
  370. package/dist/prompts/types.js.map +1 -0
  371. package/dist/server.d.ts +17 -0
  372. package/dist/server.d.ts.map +1 -0
  373. package/dist/server.js +175 -0
  374. package/dist/server.js.map +1 -0
  375. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  376. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  377. package/dist/tools/__tests__/projectPath.test.js +187 -0
  378. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  379. package/dist/tools/approvals.d.ts +14 -0
  380. package/dist/tools/approvals.d.ts.map +1 -0
  381. package/dist/tools/approvals.js +490 -0
  382. package/dist/tools/approvals.js.map +1 -0
  383. package/dist/tools/index.d.ts +5 -0
  384. package/dist/tools/index.d.ts.map +1 -0
  385. package/dist/tools/index.js +52 -0
  386. package/dist/tools/index.js.map +1 -0
  387. package/dist/tools/log-implementation.d.ts +5 -0
  388. package/dist/tools/log-implementation.d.ts.map +1 -0
  389. package/dist/tools/log-implementation.js +397 -0
  390. package/dist/tools/log-implementation.js.map +1 -0
  391. package/dist/tools/spec-status.d.ts +5 -0
  392. package/dist/tools/spec-status.d.ts.map +1 -0
  393. package/dist/tools/spec-status.js +178 -0
  394. package/dist/tools/spec-status.js.map +1 -0
  395. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  396. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  397. package/dist/tools/spec-workflow-guide.js +291 -0
  398. package/dist/tools/spec-workflow-guide.js.map +1 -0
  399. package/dist/tools/steering-guide.d.ts +5 -0
  400. package/dist/tools/steering-guide.d.ts.map +1 -0
  401. package/dist/tools/steering-guide.js +192 -0
  402. package/dist/tools/steering-guide.js.map +1 -0
  403. package/dist/types.d.ts +172 -0
  404. package/dist/types.d.ts.map +1 -0
  405. package/dist/types.js +13 -0
  406. package/dist/types.js.map +1 -0
  407. package/package.json +105 -0
@@ -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: 'spec-workflow-mcp',
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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAS;IACf,WAAW,CAAU,CAAG,iDAAiD;IACzE,aAAa,CAAU,CAAC,mDAAmD;IAC3E,eAAe,CAAkB;IACjC,IAAI,CAAU;IAEtB;QACE,gCAAgC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvE,uCAAuC;QACvC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;QAElC,qDAAqD;QACrD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAwB,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,EAAE;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,aAAqB,EAAE,IAAa;QACxE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9C,uBAAuB;YACvB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7F,MAAM,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;YAEjD,+CAA+C;YAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE;gBAC5F,gBAAgB,EAAE,IAAI,CAAC,WAAW;aACnC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAElD,oDAAoD;YACpD,IAAI,YAAY,GAAuB,SAAS,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAI,uBAAuB,EAAE,CAAC;gBACrD,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,mBAAmB,EAAE,CAAC;gBACpE,IAAI,gBAAgB,EAAE,CAAC;oBACrB,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC;gBACtC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,6CAA6C;YAC/C,CAAC;YAED,2BAA2B;YAC3B,MAAM,OAAO,GAAG;gBACd,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;YAEF,oBAAoB;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE5B,6BAA6B;YAC7B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAE7C,sEAAsE;YACtE,SAAS,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;gBAC7B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,iEAAiE;YACjE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACjC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBACrC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,sCAAsC;QAExC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,OAAY;QAChC,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,aAAa,EAAE;SACvB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,IAAI,CAAC;gBACH,OAAO,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5F,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACjE,IAAI,CAAC;gBACH,OAAO,MAAM,gBAAgB,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,OAAO,MAAM,eAAe,CAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,EACnB,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAC9B,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,YAAY;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC9D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;QACxE,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,eAAe,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,0CAA0C;YAC1C,qFAAqF;YACrF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,yDAAyD;oBACzD,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC9E,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACtE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,+BAA+B;gBACjC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YACnG,CAAC;YAED,kBAAkB;YAClB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,kDAAkD;QACpD,CAAC;IACH,CAAC;CACF"}
@@ -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":""}
@@ -0,0 +1,187 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { specStatusHandler } from '../spec-status.js';
3
+ import { logImplementationHandler } from '../log-implementation.js';
4
+ import { approvalsHandler } from '../approvals.js';
5
+ import { dirname, join } from 'path';
6
+ import { mkdtemp, mkdir, rm, writeFile } from 'fs/promises';
7
+ describe('Tool projectPath fallback behavior', () => {
8
+ const mockContext = {
9
+ projectPath: '/test/project/from/context',
10
+ dashboardUrl: 'http://localhost:5000'
11
+ };
12
+ describe('spec-status tool', () => {
13
+ it('should use context.projectPath when args.projectPath is not provided', async () => {
14
+ const result = await specStatusHandler({ specName: 'test-spec' }, mockContext);
15
+ // Should not fail due to missing projectPath
16
+ // The actual implementation will fail because the spec doesn't exist,
17
+ // but we can verify the error is not about missing projectPath
18
+ expect(result.success).toBe(false);
19
+ expect(result.message).not.toContain('Project path is required but not provided');
20
+ });
21
+ it('should use args.projectPath when explicitly provided', async () => {
22
+ const result = await specStatusHandler({ specName: 'test-spec', projectPath: '/override/path' }, mockContext);
23
+ // Should not fail due to missing projectPath
24
+ expect(result.success).toBe(false);
25
+ expect(result.message).not.toContain('Project path is required but not provided');
26
+ });
27
+ it('should fail if neither args.projectPath nor context.projectPath is provided', async () => {
28
+ const emptyContext = { projectPath: '' };
29
+ const result = await specStatusHandler({ specName: 'test-spec' }, emptyContext);
30
+ expect(result.success).toBe(false);
31
+ expect(result.message).toContain('Project path is required but not provided');
32
+ });
33
+ });
34
+ describe('log-implementation tool', () => {
35
+ it('should use context.projectPath when args.projectPath is not provided', async () => {
36
+ const result = await logImplementationHandler({
37
+ specName: 'test-spec',
38
+ taskId: '1.1',
39
+ summary: 'Test implementation',
40
+ filesModified: [],
41
+ filesCreated: [],
42
+ statistics: { linesAdded: 10, linesRemoved: 5 },
43
+ artifacts: { functions: [] }
44
+ }, mockContext);
45
+ // Should not fail due to missing projectPath
46
+ expect(result.success).toBe(false);
47
+ expect(result.message).not.toContain('Project path is required but not provided');
48
+ });
49
+ it('should fail if neither args.projectPath nor context.projectPath is provided', async () => {
50
+ const emptyContext = { projectPath: '' };
51
+ const result = await logImplementationHandler({
52
+ specName: 'test-spec',
53
+ taskId: '1.1',
54
+ summary: 'Test implementation',
55
+ filesModified: [],
56
+ filesCreated: [],
57
+ statistics: { linesAdded: 10, linesRemoved: 5 },
58
+ artifacts: { functions: [] }
59
+ }, emptyContext);
60
+ expect(result.success).toBe(false);
61
+ expect(result.message).toContain('Project path is required but not provided');
62
+ });
63
+ });
64
+ describe('approvals tool', () => {
65
+ async function createTempProject(prefix) {
66
+ const tempRoot = join(process.cwd(), '.tmp-test-approvals');
67
+ await mkdir(tempRoot, { recursive: true });
68
+ return mkdtemp(join(tempRoot, prefix));
69
+ }
70
+ it('should use context.projectPath for request action when args.projectPath is not provided', async () => {
71
+ const result = await approvalsHandler({
72
+ action: 'request',
73
+ title: 'Test approval',
74
+ filePath: 'test.md',
75
+ type: 'document',
76
+ category: 'spec',
77
+ categoryName: 'test-spec'
78
+ }, mockContext);
79
+ // Should not fail due to missing projectPath
80
+ expect(result.success).toBe(false);
81
+ expect(result.message).not.toContain('Project path is required but not provided');
82
+ });
83
+ it('should use context.projectPath for status action when args.projectPath is not provided', async () => {
84
+ const result = await approvalsHandler({
85
+ action: 'status',
86
+ approvalId: 'test-id'
87
+ }, mockContext);
88
+ // Should not fail due to missing projectPath
89
+ expect(result.success).toBe(false);
90
+ expect(result.message).not.toContain('Project path is required but not provided');
91
+ });
92
+ it('should fail if neither args.projectPath nor context.projectPath is provided', async () => {
93
+ const emptyContext = { projectPath: '' };
94
+ const result = await approvalsHandler({
95
+ action: 'request',
96
+ title: 'Test approval',
97
+ filePath: 'test.md',
98
+ type: 'document',
99
+ category: 'spec',
100
+ categoryName: 'test-spec'
101
+ }, emptyContext);
102
+ expect(result.success).toBe(false);
103
+ expect(result.message).toContain('Project path is required but not provided');
104
+ });
105
+ it('should not report PathUtils.translatePath error for request action', async () => {
106
+ const result = await approvalsHandler({
107
+ action: 'request',
108
+ title: 'Test approval',
109
+ filePath: 'test.md',
110
+ type: 'document',
111
+ category: 'spec',
112
+ categoryName: 'test-spec'
113
+ }, mockContext);
114
+ // The actual error should be about path validation, not about PathUtils
115
+ expect(result.success).toBe(false);
116
+ expect(result.message).not.toContain('PathUtils.translatePath is not a function');
117
+ expect(result.message).not.toContain('PathUtils.translatePath is not available');
118
+ });
119
+ it('should not report PathUtils.translatePath error for status action', async () => {
120
+ const result = await approvalsHandler({
121
+ action: 'status',
122
+ approvalId: 'test-id'
123
+ }, mockContext);
124
+ // The actual error should be about path validation, not about PathUtils
125
+ expect(result.success).toBe(false);
126
+ expect(result.message).not.toContain('PathUtils.translatePath is not a function');
127
+ expect(result.message).not.toContain('PathUtils.translatePath is not available');
128
+ });
129
+ it('should not report PathUtils.translatePath error for delete action', async () => {
130
+ const result = await approvalsHandler({
131
+ action: 'delete',
132
+ approvalId: 'test-id'
133
+ }, mockContext);
134
+ // The actual error should be about path validation, not about PathUtils
135
+ expect(result.success).toBe(false);
136
+ expect(result.message).not.toContain('PathUtils.translatePath is not a function');
137
+ expect(result.message).not.toContain('PathUtils.translatePath is not available');
138
+ });
139
+ it('should block approval request for markdown with MDX-incompatible content', async () => {
140
+ const tempProject = await createTempProject('specwf-mdx-');
141
+ const relativePath = '.spec-workflow/specs/test-spec/requirements.md';
142
+ const absolutePath = join(tempProject, relativePath);
143
+ try {
144
+ await mkdir(dirname(absolutePath), { recursive: true });
145
+ await writeFile(absolutePath, '# Test\\n\\n- Threshold: <5%\\n', 'utf-8');
146
+ const result = await approvalsHandler({
147
+ action: 'request',
148
+ title: 'Review requirements',
149
+ filePath: relativePath,
150
+ type: 'document',
151
+ category: 'spec',
152
+ categoryName: 'test-spec'
153
+ }, { projectPath: tempProject });
154
+ expect(result.success).toBe(false);
155
+ expect(result.message).toContain('MDX compatibility errors');
156
+ expect(result.nextSteps?.some(step => step.includes('mdx-compile-error'))).toBe(true);
157
+ }
158
+ finally {
159
+ await rm(tempProject, { recursive: true, force: true });
160
+ }
161
+ });
162
+ it('should block approval request for tasks markdown with MDX-incompatible content', async () => {
163
+ const tempProject = await createTempProject('specwf-mdx-tasks-');
164
+ const relativePath = '.spec-workflow/specs/test-spec/tasks.md';
165
+ const absolutePath = join(tempProject, relativePath);
166
+ try {
167
+ await mkdir(dirname(absolutePath), { recursive: true });
168
+ await writeFile(absolutePath, '# Tasks\\n\\n- [ ] 1. Check threshold <5%\\n', 'utf-8');
169
+ const result = await approvalsHandler({
170
+ action: 'request',
171
+ title: 'Review tasks',
172
+ filePath: relativePath,
173
+ type: 'document',
174
+ category: 'spec',
175
+ categoryName: 'test-spec'
176
+ }, { projectPath: tempProject });
177
+ expect(result.success).toBe(false);
178
+ expect(result.message).toContain('MDX compatibility errors');
179
+ expect(result.nextSteps?.some(step => step.includes('mdx-compile-error'))).toBe(true);
180
+ }
181
+ finally {
182
+ await rm(tempProject, { recursive: true, force: true });
183
+ }
184
+ });
185
+ });
186
+ });
187
+ //# sourceMappingURL=projectPath.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectPath.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/projectPath.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { ToolContext, ToolResponse } from '../types.js';
3
+ export declare const approvalsTool: Tool;
4
+ export declare function approvalsHandler(args: {
5
+ action: 'request' | 'status' | 'delete';
6
+ projectPath?: string;
7
+ approvalId?: string;
8
+ title?: string;
9
+ filePath?: string;
10
+ type?: 'document' | 'action';
11
+ category?: 'spec' | 'steering';
12
+ categoryName?: string;
13
+ }, context: ToolContext): Promise<ToolResponse>;
14
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6BxD,eAAO,MAAM,aAAa,EAAE,IAwD3B,CAAC;AAwCF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,EACD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAqDvB"}