@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,25 @@
1
+ export declare const SPEC_WORKFLOW_SHARED_ROOT_ENV = "SPEC_WORKFLOW_SHARED_ROOT";
2
+ /**
3
+ * Resolves the git workspace root directory.
4
+ * For repositories and worktrees, this returns the top-level checked-out directory.
5
+ *
6
+ * @param projectPath - Any path inside the workspace
7
+ * @returns Workspace root path, or original path when git is unavailable
8
+ */
9
+ export declare function resolveGitWorkspaceRoot(projectPath: string): string;
10
+ /**
11
+ * Resolves the git root directory for storing shared specs.
12
+ * In worktrees, this returns the main repository path so all worktrees share specs.
13
+ *
14
+ * @param projectPath - The current project/worktree path
15
+ * @returns The resolved path (main repo for worktrees, or original path)
16
+ */
17
+ export declare function resolveGitRoot(projectPath: string): string;
18
+ /**
19
+ * Checks if the current directory is a git worktree (not the main repo).
20
+ *
21
+ * @param projectPath - The path to check
22
+ * @returns true if in a worktree, false if main repo or not a git repo
23
+ */
24
+ export declare function isGitWorktree(projectPath: string): boolean;
25
+ //# sourceMappingURL=git-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/core/git-utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AAOzE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWnE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoC1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAU1D"}
@@ -0,0 +1,87 @@
1
+ import { execSync } from 'child_process';
2
+ import { resolve } from 'path';
3
+ export const SPEC_WORKFLOW_SHARED_ROOT_ENV = 'SPEC_WORKFLOW_SHARED_ROOT';
4
+ const GIT_EXEC_OPTIONS = {
5
+ encoding: 'utf-8',
6
+ stdio: ['pipe', 'pipe', 'pipe'],
7
+ timeout: 5000
8
+ };
9
+ /**
10
+ * Resolves the git workspace root directory.
11
+ * For repositories and worktrees, this returns the top-level checked-out directory.
12
+ *
13
+ * @param projectPath - Any path inside the workspace
14
+ * @returns Workspace root path, or original path when git is unavailable
15
+ */
16
+ export function resolveGitWorkspaceRoot(projectPath) {
17
+ try {
18
+ const workspaceRoot = execSync('git rev-parse --show-toplevel', {
19
+ cwd: projectPath,
20
+ ...GIT_EXEC_OPTIONS
21
+ }).trim();
22
+ return workspaceRoot || projectPath;
23
+ }
24
+ catch {
25
+ return projectPath;
26
+ }
27
+ }
28
+ /**
29
+ * Resolves the git root directory for storing shared specs.
30
+ * In worktrees, this returns the main repository path so all worktrees share specs.
31
+ *
32
+ * @param projectPath - The current project/worktree path
33
+ * @returns The resolved path (main repo for worktrees, or original path)
34
+ */
35
+ export function resolveGitRoot(projectPath) {
36
+ // Check for explicit override first
37
+ const explicitRoot = process.env[SPEC_WORKFLOW_SHARED_ROOT_ENV]?.trim();
38
+ if (explicitRoot) {
39
+ return explicitRoot;
40
+ }
41
+ try {
42
+ // Get the git common directory (main repo's .git folder)
43
+ const gitCommonDir = execSync('git rev-parse --git-common-dir', {
44
+ cwd: projectPath,
45
+ ...GIT_EXEC_OPTIONS
46
+ }).trim();
47
+ // In main repo, returns ".git" - no change needed
48
+ if (gitCommonDir === '.git') {
49
+ return projectPath;
50
+ }
51
+ // In worktree or subdirectory, returns path like "/main/.git", "/main/.git/worktrees/name",
52
+ // or relative path like "../../.git" when run from a subdirectory.
53
+ // Extract the main repo path (parent of .git) and resolve to absolute path.
54
+ const gitIndex = gitCommonDir.lastIndexOf('.git');
55
+ if (gitIndex > 0) {
56
+ const mainRepoPath = gitCommonDir.substring(0, gitIndex - 1);
57
+ // If path is already absolute (Unix or Windows style), return as-is
58
+ // Otherwise, resolve relative to projectPath
59
+ const isAbsolute = mainRepoPath.startsWith('/') || /^[A-Za-z]:[\\/]/.test(mainRepoPath);
60
+ return isAbsolute ? mainRepoPath : resolve(projectPath, mainRepoPath);
61
+ }
62
+ return projectPath;
63
+ }
64
+ catch {
65
+ // Not a git repo or git unavailable - use original path
66
+ return projectPath;
67
+ }
68
+ }
69
+ /**
70
+ * Checks if the current directory is a git worktree (not the main repo).
71
+ *
72
+ * @param projectPath - The path to check
73
+ * @returns true if in a worktree, false if main repo or not a git repo
74
+ */
75
+ export function isGitWorktree(projectPath) {
76
+ try {
77
+ const gitCommonDir = execSync('git rev-parse --git-common-dir', {
78
+ cwd: projectPath,
79
+ ...GIT_EXEC_OPTIONS
80
+ }).trim();
81
+ return gitCommonDir !== '.git';
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ //# sourceMappingURL=git-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/core/git-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqC,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AACzE,MAAM,gBAAgB,GAAsC;IAC1D,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,IAAI;CACd,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YAC9D,GAAG,EAAE,WAAW;YAChB,GAAG,gBAAgB;SACpB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,OAAO,aAAa,IAAI,WAAW,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,oCAAoC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,IAAI,EAAE,CAAC;IACxE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,gCAAgC,EAAE;YAC9D,GAAG,EAAE,WAAW;YAChB,GAAG,gBAAgB;SACpB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,kDAAkD;QAClD,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,4FAA4F;QAC5F,mEAAmE;QACnE,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC7D,oEAAoE;YACpE,6CAA6C;YAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxF,OAAO,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,QAAQ,CAAC,gCAAgC,EAAE;YAC9D,GAAG,EAAE,WAAW;YAChB,GAAG,gBAAgB;SACpB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,YAAY,KAAK,MAAM,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Environment variable name for overriding the global directory location.
3
+ * When set, all global state files will be stored in this location instead of ~/.spec-workflow-mcp
4
+ *
5
+ * This is useful for sandboxed environments (e.g., Codex CLI with sandbox_mode=workspace-write)
6
+ * where $HOME is read-only.
7
+ *
8
+ * @example
9
+ * // Set to an absolute path
10
+ * SPEC_WORKFLOW_HOME=/workspace/.spec-workflow-mcp npx spec-workflow-mcp /workspace
11
+ *
12
+ * // Set to a relative path (resolved against current working directory)
13
+ * SPEC_WORKFLOW_HOME=./.spec-workflow-mcp npx spec-workflow-mcp /workspace
14
+ */
15
+ export declare const SPEC_WORKFLOW_HOME_ENV = "SPEC_WORKFLOW_HOME";
16
+ /**
17
+ * Get the global directory path for storing spec-workflow-mcp state files.
18
+ *
19
+ * Resolution order:
20
+ * 1. SPEC_WORKFLOW_HOME environment variable (if set)
21
+ * - Absolute paths are used as-is
22
+ * - Relative paths are resolved against process.cwd()
23
+ * 2. Default: ~/.spec-workflow-mcp
24
+ *
25
+ * Files stored in this directory:
26
+ * - activeProjects.json - Project registry
27
+ * - activeSession.json - Dashboard session info
28
+ * - settings.json - Global settings
29
+ * - job-execution-history.json - Job execution history
30
+ * - migration.log - Implementation log migration tracking
31
+ *
32
+ * @returns The absolute path to the global directory
33
+ */
34
+ export declare function getGlobalDir(): string;
35
+ /**
36
+ * Get a helpful error message for permission errors when accessing the global directory.
37
+ * Suggests using SPEC_WORKFLOW_HOME environment variable.
38
+ *
39
+ * @param operation - The operation that failed (e.g., "create directory", "write file")
40
+ * @param path - The path that couldn't be accessed
41
+ * @returns A formatted error message with suggestions
42
+ */
43
+ export declare function getPermissionErrorHelp(operation: string, path: string): string;
44
+ //# sourceMappingURL=global-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-dir.d.ts","sourceRoot":"","sources":["../../src/core/global-dir.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAI3D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAWrC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB9E"}
@@ -0,0 +1,74 @@
1
+ import { homedir } from 'os';
2
+ import { join, isAbsolute } from 'path';
3
+ /**
4
+ * Environment variable name for overriding the global directory location.
5
+ * When set, all global state files will be stored in this location instead of ~/.spec-workflow-mcp
6
+ *
7
+ * This is useful for sandboxed environments (e.g., Codex CLI with sandbox_mode=workspace-write)
8
+ * where $HOME is read-only.
9
+ *
10
+ * @example
11
+ * // Set to an absolute path
12
+ * SPEC_WORKFLOW_HOME=/workspace/.spec-workflow-mcp npx spec-workflow-mcp /workspace
13
+ *
14
+ * // Set to a relative path (resolved against current working directory)
15
+ * SPEC_WORKFLOW_HOME=./.spec-workflow-mcp npx spec-workflow-mcp /workspace
16
+ */
17
+ export const SPEC_WORKFLOW_HOME_ENV = 'SPEC_WORKFLOW_HOME';
18
+ const DEFAULT_DIR_NAME = '.spec-workflow-mcp';
19
+ /**
20
+ * Get the global directory path for storing spec-workflow-mcp state files.
21
+ *
22
+ * Resolution order:
23
+ * 1. SPEC_WORKFLOW_HOME environment variable (if set)
24
+ * - Absolute paths are used as-is
25
+ * - Relative paths are resolved against process.cwd()
26
+ * 2. Default: ~/.spec-workflow-mcp
27
+ *
28
+ * Files stored in this directory:
29
+ * - activeProjects.json - Project registry
30
+ * - activeSession.json - Dashboard session info
31
+ * - settings.json - Global settings
32
+ * - job-execution-history.json - Job execution history
33
+ * - migration.log - Implementation log migration tracking
34
+ *
35
+ * @returns The absolute path to the global directory
36
+ */
37
+ export function getGlobalDir() {
38
+ const envPath = process.env[SPEC_WORKFLOW_HOME_ENV];
39
+ if (envPath) {
40
+ // If an environment variable is set, use it
41
+ // Handle both absolute and relative paths
42
+ return isAbsolute(envPath) ? envPath : join(process.cwd(), envPath);
43
+ }
44
+ // Default to ~/.spec-workflow-mcp
45
+ return join(homedir(), DEFAULT_DIR_NAME);
46
+ }
47
+ /**
48
+ * Get a helpful error message for permission errors when accessing the global directory.
49
+ * Suggests using SPEC_WORKFLOW_HOME environment variable.
50
+ *
51
+ * @param operation - The operation that failed (e.g., "create directory", "write file")
52
+ * @param path - The path that couldn't be accessed
53
+ * @returns A formatted error message with suggestions
54
+ */
55
+ export function getPermissionErrorHelp(operation, path) {
56
+ return `
57
+ Failed to ${operation}: ${path}
58
+
59
+ This error typically occurs in sandboxed environments where $HOME is read-only.
60
+
61
+ To fix this, set the SPEC_WORKFLOW_HOME environment variable to a writable location:
62
+
63
+ SPEC_WORKFLOW_HOME=/path/to/writable/dir npx spec-workflow-mcp [project-path]
64
+
65
+ For example, to store state files in your workspace:
66
+
67
+ SPEC_WORKFLOW_HOME=/workspace/.spec-workflow-mcp npx spec-workflow-mcp /workspace
68
+
69
+ Or use a relative path:
70
+
71
+ SPEC_WORKFLOW_HOME=./.spec-workflow-mcp npx spec-workflow-mcp .
72
+ `.trim();
73
+ }
74
+ //# sourceMappingURL=global-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-dir.js","sourceRoot":"","sources":["../../src/core/global-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,CAAC;QACZ,4CAA4C;QAC5C,0CAA0C;QAC1C,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,kCAAkC;IAClC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,IAAY;IACpE,OAAO;YACG,SAAS,KAAK,IAAI;;;;;;;;;;;;;;;CAe7B,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Migrates implementation logs from JSON format to individual markdown files
3
+ * This utility class handles the automatic migration when the MCP server starts
4
+ */
5
+ export declare class ImplementationLogMigrator {
6
+ private migrationLogPath;
7
+ constructor(userDataDir: string);
8
+ /**
9
+ * Log migration events
10
+ */
11
+ private log;
12
+ /**
13
+ * Sanitize taskId for use in filenames (e.g., "1.2" → "1-2")
14
+ */
15
+ private sanitizeTaskId;
16
+ /**
17
+ * Generate markdown filename for a log entry
18
+ */
19
+ private generateFileName;
20
+ /**
21
+ * Convert an implementation log entry to markdown format
22
+ */
23
+ private entryToMarkdown;
24
+ /**
25
+ * Migrate a single JSON file to markdown files
26
+ */
27
+ private migrateJsonFile;
28
+ /**
29
+ * Scan all specs and migrate their implementation logs
30
+ */
31
+ migrateAllSpecs(specsDir: string): Promise<{
32
+ totalSpecs: number;
33
+ migratedSpecs: number;
34
+ totalEntries: number;
35
+ errors: Array<{
36
+ spec: string;
37
+ error: string;
38
+ }>;
39
+ }>;
40
+ }
41
+ //# sourceMappingURL=implementation-log-migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation-log-migrator.d.ts","sourceRoot":"","sources":["../../src/core/implementation-log-migrator.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgHvB;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC;CAuFH"}
@@ -0,0 +1,258 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join } from 'path';
3
+ import { appendFileSync, existsSync } from 'fs';
4
+ /**
5
+ * Migrates implementation logs from JSON format to individual markdown files
6
+ * This utility class handles the automatic migration when the MCP server starts
7
+ */
8
+ export class ImplementationLogMigrator {
9
+ migrationLogPath;
10
+ constructor(userDataDir) {
11
+ this.migrationLogPath = join(userDataDir, 'migration.log');
12
+ }
13
+ /**
14
+ * Log migration events
15
+ */
16
+ log(message) {
17
+ const timestamp = new Date().toISOString();
18
+ const logMessage = `[${timestamp}] ${message}\n`;
19
+ appendFileSync(this.migrationLogPath, logMessage, 'utf-8');
20
+ }
21
+ /**
22
+ * Sanitize taskId for use in filenames (e.g., "1.2" → "1-2")
23
+ */
24
+ sanitizeTaskId(taskId) {
25
+ return taskId.replace(/[/.]/g, '-');
26
+ }
27
+ /**
28
+ * Generate markdown filename for a log entry
29
+ */
30
+ generateFileName(entry) {
31
+ const sanitizedTaskId = this.sanitizeTaskId(entry.taskId);
32
+ const dateObj = new Date(entry.timestamp);
33
+ const timestamp = dateObj.toISOString().replace(/[:.]/g, '').split('T')[0] +
34
+ dateObj.toISOString().split('T')[1].replace(/[:.Z]/g, '').substring(0, 6);
35
+ const idPrefix = entry.id.substring(0, 8);
36
+ return `task-${sanitizedTaskId}_${timestamp}_${idPrefix}.md`;
37
+ }
38
+ /**
39
+ * Convert an implementation log entry to markdown format
40
+ */
41
+ entryToMarkdown(entry) {
42
+ let markdown = `# Implementation Log: Task ${entry.taskId}\n\n`;
43
+ markdown += `**Summary:** ${entry.summary}\n\n`;
44
+ markdown += `**Timestamp:** ${entry.timestamp}\n`;
45
+ markdown += `**Log ID:** ${entry.id}\n\n`;
46
+ markdown += `---\n\n`;
47
+ // Statistics
48
+ markdown += `## Statistics\n\n`;
49
+ markdown += `- **Lines Added:** +${entry.statistics.linesAdded}\n`;
50
+ markdown += `- **Lines Removed:** -${entry.statistics.linesRemoved}\n`;
51
+ markdown += `- **Files Changed:** ${entry.statistics.filesChanged}\n`;
52
+ markdown += `- **Net Change:** ${entry.statistics.linesAdded - entry.statistics.linesRemoved}\n\n`;
53
+ // Files
54
+ markdown += `## Files Modified\n`;
55
+ if (entry.filesModified.length > 0) {
56
+ entry.filesModified.forEach(file => {
57
+ markdown += `- ${file}\n`;
58
+ });
59
+ }
60
+ else {
61
+ markdown += `_No files modified_\n`;
62
+ }
63
+ markdown += `\n`;
64
+ markdown += `## Files Created\n`;
65
+ if (entry.filesCreated.length > 0) {
66
+ entry.filesCreated.forEach(file => {
67
+ markdown += `- ${file}\n`;
68
+ });
69
+ }
70
+ else {
71
+ markdown += `_No files created_\n`;
72
+ }
73
+ markdown += `\n`;
74
+ // Artifacts
75
+ markdown += `---\n\n## Artifacts\n\n`;
76
+ if (!entry.artifacts || Object.keys(entry.artifacts).every(key => !entry.artifacts[key]?.length)) {
77
+ markdown += `_No artifacts recorded_\n`;
78
+ return markdown;
79
+ }
80
+ // API Endpoints
81
+ if (entry.artifacts.apiEndpoints && entry.artifacts.apiEndpoints.length > 0) {
82
+ markdown += `### API Endpoints\n\n`;
83
+ entry.artifacts.apiEndpoints.forEach(api => {
84
+ markdown += `#### ${api.method} ${api.path}\n`;
85
+ markdown += `- **Purpose:** ${api.purpose}\n`;
86
+ markdown += `- **Location:** ${api.location}\n`;
87
+ if (api.requestFormat)
88
+ markdown += `- **Request Format:** ${api.requestFormat}\n`;
89
+ if (api.responseFormat)
90
+ markdown += `- **Response Format:** ${api.responseFormat}\n`;
91
+ markdown += `\n`;
92
+ });
93
+ }
94
+ // Components
95
+ if (entry.artifacts.components && entry.artifacts.components.length > 0) {
96
+ markdown += `### Components\n\n`;
97
+ entry.artifacts.components.forEach(comp => {
98
+ markdown += `#### ${comp.name}\n`;
99
+ markdown += `- **Type:** ${comp.type}\n`;
100
+ markdown += `- **Purpose:** ${comp.purpose}\n`;
101
+ markdown += `- **Location:** ${comp.location}\n`;
102
+ if (comp.props)
103
+ markdown += `- **Props:** ${comp.props}\n`;
104
+ if (comp.exports && comp.exports.length > 0)
105
+ markdown += `- **Exports:** ${comp.exports.join(', ')}\n`;
106
+ markdown += `\n`;
107
+ });
108
+ }
109
+ // Functions
110
+ if (entry.artifacts.functions && entry.artifacts.functions.length > 0) {
111
+ markdown += `### Functions\n\n`;
112
+ entry.artifacts.functions.forEach(func => {
113
+ markdown += `#### ${func.name}\n`;
114
+ markdown += `- **Purpose:** ${func.purpose}\n`;
115
+ markdown += `- **Location:** ${func.location}\n`;
116
+ if (func.signature)
117
+ markdown += `- **Signature:** ${func.signature}\n`;
118
+ markdown += `- **Exported:** ${func.isExported ? 'Yes' : 'No'}\n`;
119
+ markdown += `\n`;
120
+ });
121
+ }
122
+ // Classes
123
+ if (entry.artifacts.classes && entry.artifacts.classes.length > 0) {
124
+ markdown += `### Classes\n\n`;
125
+ entry.artifacts.classes.forEach(cls => {
126
+ markdown += `#### ${cls.name}\n`;
127
+ markdown += `- **Purpose:** ${cls.purpose}\n`;
128
+ markdown += `- **Location:** ${cls.location}\n`;
129
+ if (cls.methods && cls.methods.length > 0)
130
+ markdown += `- **Methods:** ${cls.methods.join(', ')}\n`;
131
+ markdown += `- **Exported:** ${cls.isExported ? 'Yes' : 'No'}\n`;
132
+ markdown += `\n`;
133
+ });
134
+ }
135
+ // Integrations
136
+ if (entry.artifacts.integrations && entry.artifacts.integrations.length > 0) {
137
+ markdown += `### Integrations\n\n`;
138
+ entry.artifacts.integrations.forEach(intg => {
139
+ markdown += `#### Integration\n`;
140
+ markdown += `- **Description:** ${intg.description}\n`;
141
+ markdown += `- **Frontend Component:** ${intg.frontendComponent}\n`;
142
+ markdown += `- **Backend Endpoint:** ${intg.backendEndpoint}\n`;
143
+ markdown += `- **Data Flow:** ${intg.dataFlow}\n`;
144
+ markdown += `\n`;
145
+ });
146
+ }
147
+ return markdown;
148
+ }
149
+ /**
150
+ * Migrate a single JSON file to markdown files
151
+ */
152
+ async migrateJsonFile(jsonPath, outputDir) {
153
+ try {
154
+ // Read the JSON file
155
+ const content = await fs.readFile(jsonPath, 'utf-8');
156
+ const log = JSON.parse(content);
157
+ // Ensure output directory exists
158
+ await fs.mkdir(outputDir, { recursive: true });
159
+ // Convert each entry to a markdown file
160
+ let count = 0;
161
+ for (const entry of log.entries) {
162
+ const fileName = this.generateFileName(entry);
163
+ const filePath = join(outputDir, fileName);
164
+ const markdown = this.entryToMarkdown(entry);
165
+ await fs.writeFile(filePath, markdown, 'utf-8');
166
+ count++;
167
+ }
168
+ this.log(`✓ Migrated ${count} entries from ${jsonPath} to ${outputDir}`);
169
+ return { success: true, count };
170
+ }
171
+ catch (error) {
172
+ const errorMsg = error instanceof Error ? error.message : String(error);
173
+ this.log(`✗ Failed to migrate ${jsonPath}: ${errorMsg}`);
174
+ return { success: false, count: 0, error: errorMsg };
175
+ }
176
+ }
177
+ /**
178
+ * Scan all specs and migrate their implementation logs
179
+ */
180
+ async migrateAllSpecs(specsDir) {
181
+ this.log('='.repeat(80));
182
+ this.log('Starting implementation logs migration from JSON to Markdown format');
183
+ this.log(`Specs directory: ${specsDir}`);
184
+ this.log('='.repeat(80));
185
+ const result = {
186
+ totalSpecs: 0,
187
+ migratedSpecs: 0,
188
+ totalEntries: 0,
189
+ errors: []
190
+ };
191
+ try {
192
+ // Check if specs directory exists
193
+ if (!existsSync(specsDir)) {
194
+ this.log('Specs directory does not exist. Skipping migration.');
195
+ return result;
196
+ }
197
+ // List all spec directories
198
+ const entries = await fs.readdir(specsDir, { withFileTypes: true });
199
+ const specDirs = entries.filter(e => e.isDirectory());
200
+ result.totalSpecs = specDirs.length;
201
+ // Process each spec
202
+ for (const specDir of specDirs) {
203
+ const specPath = join(specsDir, specDir.name);
204
+ const jsonPath = join(specPath, 'implementation-log.json');
205
+ const outputDir = join(specPath, 'Implementation Logs');
206
+ // Check if JSON file exists
207
+ if (!existsSync(jsonPath)) {
208
+ this.log(`⊘ Spec "${specDir.name}": No implementation-log.json found. Skipping.`);
209
+ continue;
210
+ }
211
+ // Migrate this spec's JSON file
212
+ const migrationResult = await this.migrateJsonFile(jsonPath, outputDir);
213
+ if (migrationResult.success) {
214
+ result.migratedSpecs++;
215
+ result.totalEntries += migrationResult.count;
216
+ // Delete the JSON file after successful migration
217
+ try {
218
+ await fs.unlink(jsonPath);
219
+ this.log(`→ Deleted original JSON file: ${jsonPath}`);
220
+ }
221
+ catch (error) {
222
+ this.log(`⚠ Warning: Could not delete ${jsonPath}: ${error.message}`);
223
+ }
224
+ }
225
+ else {
226
+ result.errors.push({
227
+ spec: specDir.name,
228
+ error: migrationResult.error || 'Unknown error'
229
+ });
230
+ }
231
+ }
232
+ // Summary
233
+ this.log('='.repeat(80));
234
+ this.log(`Migration Summary:`);
235
+ this.log(` Total specs found: ${result.totalSpecs}`);
236
+ this.log(` Successfully migrated: ${result.migratedSpecs}`);
237
+ this.log(` Total entries migrated: ${result.totalEntries}`);
238
+ this.log(` Errors: ${result.errors.length}`);
239
+ if (result.errors.length > 0) {
240
+ this.log('Errors encountered:');
241
+ result.errors.forEach(err => {
242
+ this.log(` - ${err.spec}: ${err.error}`);
243
+ });
244
+ }
245
+ this.log('='.repeat(80));
246
+ }
247
+ catch (error) {
248
+ const errorMsg = error instanceof Error ? error.message : String(error);
249
+ this.log(`Fatal error during migration: ${errorMsg}`);
250
+ result.errors.push({
251
+ spec: 'migration-process',
252
+ error: errorMsg
253
+ });
254
+ }
255
+ return result;
256
+ }
257
+ }
258
+ //# sourceMappingURL=implementation-log-migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation-log-migrator.js","sourceRoot":"","sources":["../../src/core/implementation-log-migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface MdxValidationIssue {
2
+ line: number;
3
+ column: number;
4
+ ruleId: 'mdx-compile-error';
5
+ message: string;
6
+ severity: 'error';
7
+ }
8
+ export interface MdxValidationResult {
9
+ valid: boolean;
10
+ issues: MdxValidationIssue[];
11
+ }
12
+ export declare function validateMarkdownForMdx(content: string): Promise<MdxValidationResult>;
13
+ export declare function formatMdxValidationIssues(issues: MdxValidationIssue[]): string[];
14
+ //# sourceMappingURL=mdx-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-validator.d.ts","sourceRoot":"","sources":["../../src/core/mdx-validator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAYD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmB1F;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAEhF"}
@@ -0,0 +1,34 @@
1
+ import { compile } from '@mdx-js/mdx';
2
+ function getIssueLocation(error) {
3
+ const line = error?.line ?? error?.position?.start?.line ?? 1;
4
+ const column = error?.column ?? error?.position?.start?.column ?? 1;
5
+ return { line, column };
6
+ }
7
+ function getIssueMessage(error) {
8
+ return error?.reason ?? error?.message ?? 'Unknown MDX compile error';
9
+ }
10
+ export async function validateMarkdownForMdx(content) {
11
+ try {
12
+ await compile(content, { format: 'mdx' });
13
+ return { valid: true, issues: [] };
14
+ }
15
+ catch (error) {
16
+ const { line, column } = getIssueLocation(error);
17
+ return {
18
+ valid: false,
19
+ issues: [
20
+ {
21
+ line,
22
+ column,
23
+ ruleId: 'mdx-compile-error',
24
+ message: getIssueMessage(error),
25
+ severity: 'error',
26
+ },
27
+ ],
28
+ };
29
+ }
30
+ }
31
+ export function formatMdxValidationIssues(issues) {
32
+ return issues.map((issue) => `Line ${issue.line}:${issue.column} [${issue.ruleId}] ${issue.message}`);
33
+ }
34
+ //# sourceMappingURL=mdx-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-validator.js","sourceRoot":"","sources":["../../src/core/mdx-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAetC,SAAS,gBAAgB,CAAC,KAAU;IAClC,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAU;IACjC,OAAO,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,OAAO,IAAI,2BAA2B,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAe;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE;gBACN;oBACE,IAAI;oBACJ,MAAM;oBACN,MAAM,EAAE,mBAAmB;oBAC3B,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC;oBAC/B,QAAQ,EAAE,OAAO;iBAClB;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA4B;IACpE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACxG,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { SpecData, SteeringStatus } from '../types.js';
2
+ export declare class SpecParser {
3
+ private projectPath;
4
+ constructor(projectPath: string);
5
+ getAllSpecs(): Promise<SpecData[]>;
6
+ getSpec(name: string): Promise<SpecData | null>;
7
+ getProjectSteeringStatus(): Promise<SteeringStatus>;
8
+ private getPhaseStatus;
9
+ private fileExists;
10
+ }
11
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAGpE,qBAAa,UAAU;IACT,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEjC,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuBlC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6C/C,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;YA+B3C,cAAc;YAoBd,UAAU;CAQzB"}