@arimakouyou/spec-workflow-mcp 2.2.7

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 (472) hide show
  1. package/.claude-plugin/.mcp.json +8 -0
  2. package/.claude-plugin/agents/code-simplifier.md +80 -0
  3. package/.claude-plugin/agents/integ-test-auditor.md +91 -0
  4. package/.claude-plugin/agents/integ-test-worker.md +73 -0
  5. package/.claude-plugin/agents/parallel-worker.md +136 -0
  6. package/.claude-plugin/agents/review-worker.md +279 -0
  7. package/.claude-plugin/agents/unit-test-engineer.md +148 -0
  8. package/.claude-plugin/agents/wave-harness-worker.md +158 -0
  9. package/.claude-plugin/hooks/hooks.json +16 -0
  10. package/.claude-plugin/hooks/tasks-read-guard.sh +17 -0
  11. package/.claude-plugin/marketplace.json +33 -0
  12. package/.claude-plugin/plugin.json +11 -0
  13. package/.claude-plugin/rules/axum.md +154 -0
  14. package/.claude-plugin/rules/cargo-toml.md +63 -0
  15. package/.claude-plugin/rules/context7.md +17 -0
  16. package/.claude-plugin/rules/design-conformance.md +82 -0
  17. package/.claude-plugin/rules/design-principles.md +53 -0
  18. package/.claude-plugin/rules/diesel.md +176 -0
  19. package/.claude-plugin/rules/feedback-loop.md +33 -0
  20. package/.claude-plugin/rules/leptos.md +319 -0
  21. package/.claude-plugin/rules/project-architecture.md +134 -0
  22. package/.claude-plugin/rules/quality-checks.md +265 -0
  23. package/.claude-plugin/rules/rust-style.md +242 -0
  24. package/.claude-plugin/rules/security.md +67 -0
  25. package/.claude-plugin/rules/spec-workflow-enforcement.md +47 -0
  26. package/.claude-plugin/rules/valkey.md +167 -0
  27. package/.claude-plugin/skills/integration-test/SKILL.md +230 -0
  28. package/.claude-plugin/skills/integration-test/references/auditor-prompt.md +78 -0
  29. package/.claude-plugin/skills/integration-test/references/external-api-mock.md +98 -0
  30. package/.claude-plugin/skills/integration-test/references/fixture-catalog.md +155 -0
  31. package/.claude-plugin/skills/integration-test/references/parallel-execution.md +124 -0
  32. package/.claude-plugin/skills/integration-test/references/quality-gate.md +80 -0
  33. package/.claude-plugin/skills/integration-test/references/test-case-design.md +88 -0
  34. package/.claude-plugin/skills/integration-test/references/test-patterns.md +215 -0
  35. package/.claude-plugin/skills/integration-test/references/whiteboard-template.md +81 -0
  36. package/.claude-plugin/skills/integration-test/references/worker-prompt.md +70 -0
  37. package/.claude-plugin/skills/knowhow-capture/SKILL.md +143 -0
  38. package/.claude-plugin/skills/phase-review-team/SKILL.md +380 -0
  39. package/.claude-plugin/skills/spec-design/SKILL.md +282 -0
  40. package/.claude-plugin/skills/spec-e2e-implement/SKILL.md +259 -0
  41. package/.claude-plugin/skills/spec-impl-code/SKILL.md +101 -0
  42. package/.claude-plugin/skills/spec-impl-review/SKILL.md +115 -0
  43. package/.claude-plugin/skills/spec-impl-test-run/SKILL.md +98 -0
  44. package/.claude-plugin/skills/spec-impl-test-write/SKILL.md +121 -0
  45. package/.claude-plugin/skills/spec-implement/SKILL.md +822 -0
  46. package/.claude-plugin/skills/spec-requirements/SKILL.md +130 -0
  47. package/.claude-plugin/skills/spec-review/SKILL.md +274 -0
  48. package/.claude-plugin/skills/spec-tasks/SKILL.md +372 -0
  49. package/.claude-plugin/skills/spec-test-design/SKILL.md +233 -0
  50. package/.claude-plugin/skills/tdd-skills/SKILL.md +95 -0
  51. package/.claude-plugin/skills/tdd-skills/references/advanced-techniques.md +49 -0
  52. package/.claude-plugin/skills/tdd-skills/references/green-strategies.md +70 -0
  53. package/.claude-plugin/skills/tdd-skills/references/tdd-and-design.md +48 -0
  54. package/.claude-plugin/skills/tdd-skills/references/test-design.md +43 -0
  55. package/.claude-plugin/skills/tdd-skills/references/test-doubles.md +53 -0
  56. package/.claude-plugin/skills/tdd-skills/references/test-patterns.md +40 -0
  57. package/.claude-plugin/skills/tdd-skills-rust/SKILL.md +128 -0
  58. package/.claude-plugin/skills/tdd-skills-rust/references/advanced-techniques.md +205 -0
  59. package/.claude-plugin/skills/tdd-skills-rust/references/green-strategies.md +166 -0
  60. package/.claude-plugin/skills/tdd-skills-rust/references/tdd-and-design.md +215 -0
  61. package/.claude-plugin/skills/tdd-skills-rust/references/test-design.md +128 -0
  62. package/.claude-plugin/skills/tdd-skills-rust/references/test-doubles.md +208 -0
  63. package/.claude-plugin/skills/tdd-skills-rust/references/test-patterns.md +223 -0
  64. package/.claude-plugin/with-dashboard/.mcp.json +8 -0
  65. package/.claude-plugin/with-dashboard/plugin.json +10 -0
  66. package/CHANGELOG.md +1007 -0
  67. package/LICENSE +674 -0
  68. package/README.ja.md +380 -0
  69. package/README.md +437 -0
  70. package/dist/__tests__/config.test.d.ts +2 -0
  71. package/dist/__tests__/config.test.d.ts.map +1 -0
  72. package/dist/__tests__/config.test.js +264 -0
  73. package/dist/__tests__/config.test.js.map +1 -0
  74. package/dist/__tests__/index-args.test.d.ts +2 -0
  75. package/dist/__tests__/index-args.test.d.ts.map +1 -0
  76. package/dist/__tests__/index-args.test.js +43 -0
  77. package/dist/__tests__/index-args.test.js.map +1 -0
  78. package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
  79. package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
  80. package/dist/__tests__/index-entrypoint.test.js +23 -0
  81. package/dist/__tests__/index-entrypoint.test.js.map +1 -0
  82. package/dist/config.d.ts +26 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +188 -0
  85. package/dist/config.js.map +1 -0
  86. package/dist/core/__tests__/git-utils.test.d.ts +2 -0
  87. package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
  88. package/dist/core/__tests__/git-utils.test.js +179 -0
  89. package/dist/core/__tests__/git-utils.test.js.map +1 -0
  90. package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
  91. package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
  92. package/dist/core/__tests__/mdx-validator.test.js +42 -0
  93. package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
  94. package/dist/core/__tests__/path-utils.test.d.ts +2 -0
  95. package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
  96. package/dist/core/__tests__/path-utils.test.js +342 -0
  97. package/dist/core/__tests__/path-utils.test.js.map +1 -0
  98. package/dist/core/__tests__/project-registry.test.d.ts +2 -0
  99. package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
  100. package/dist/core/__tests__/project-registry.test.js +62 -0
  101. package/dist/core/__tests__/project-registry.test.js.map +1 -0
  102. package/dist/core/__tests__/security-utils.test.d.ts +2 -0
  103. package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
  104. package/dist/core/__tests__/security-utils.test.js +657 -0
  105. package/dist/core/__tests__/security-utils.test.js.map +1 -0
  106. package/dist/core/__tests__/task-parser.test.d.ts +2 -0
  107. package/dist/core/__tests__/task-parser.test.d.ts.map +1 -0
  108. package/dist/core/__tests__/task-parser.test.js +222 -0
  109. package/dist/core/__tests__/task-parser.test.js.map +1 -0
  110. package/dist/core/__tests__/task-validator.test.d.ts +2 -0
  111. package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
  112. package/dist/core/__tests__/task-validator.test.js +308 -0
  113. package/dist/core/__tests__/task-validator.test.js.map +1 -0
  114. package/dist/core/archive-service.d.ts +10 -0
  115. package/dist/core/archive-service.d.ts.map +1 -0
  116. package/dist/core/archive-service.js +99 -0
  117. package/dist/core/archive-service.js.map +1 -0
  118. package/dist/core/dashboard-session.d.ts +49 -0
  119. package/dist/core/dashboard-session.d.ts.map +1 -0
  120. package/dist/core/dashboard-session.js +132 -0
  121. package/dist/core/dashboard-session.js.map +1 -0
  122. package/dist/core/git-utils.d.ts +25 -0
  123. package/dist/core/git-utils.d.ts.map +1 -0
  124. package/dist/core/git-utils.js +87 -0
  125. package/dist/core/git-utils.js.map +1 -0
  126. package/dist/core/global-dir.d.ts +44 -0
  127. package/dist/core/global-dir.d.ts.map +1 -0
  128. package/dist/core/global-dir.js +74 -0
  129. package/dist/core/global-dir.js.map +1 -0
  130. package/dist/core/implementation-log-migrator.d.ts +41 -0
  131. package/dist/core/implementation-log-migrator.d.ts.map +1 -0
  132. package/dist/core/implementation-log-migrator.js +258 -0
  133. package/dist/core/implementation-log-migrator.js.map +1 -0
  134. package/dist/core/mdx-validator.d.ts +14 -0
  135. package/dist/core/mdx-validator.d.ts.map +1 -0
  136. package/dist/core/mdx-validator.js +34 -0
  137. package/dist/core/mdx-validator.js.map +1 -0
  138. package/dist/core/parser.d.ts +11 -0
  139. package/dist/core/parser.d.ts.map +1 -0
  140. package/dist/core/parser.js +128 -0
  141. package/dist/core/parser.js.map +1 -0
  142. package/dist/core/path-utils.d.ts +68 -0
  143. package/dist/core/path-utils.d.ts.map +1 -0
  144. package/dist/core/path-utils.js +302 -0
  145. package/dist/core/path-utils.js.map +1 -0
  146. package/dist/core/project-registry.d.ts +94 -0
  147. package/dist/core/project-registry.d.ts.map +1 -0
  148. package/dist/core/project-registry.js +297 -0
  149. package/dist/core/project-registry.js.map +1 -0
  150. package/dist/core/security-utils.d.ts +99 -0
  151. package/dist/core/security-utils.d.ts.map +1 -0
  152. package/dist/core/security-utils.js +275 -0
  153. package/dist/core/security-utils.js.map +1 -0
  154. package/dist/core/task-parser.d.ts +90 -0
  155. package/dist/core/task-parser.d.ts.map +1 -0
  156. package/dist/core/task-parser.js +477 -0
  157. package/dist/core/task-parser.js.map +1 -0
  158. package/dist/core/task-validator.d.ts +37 -0
  159. package/dist/core/task-validator.d.ts.map +1 -0
  160. package/dist/core/task-validator.js +499 -0
  161. package/dist/core/task-validator.js.map +1 -0
  162. package/dist/core/workspace-initializer.d.ts +16 -0
  163. package/dist/core/workspace-initializer.d.ts.map +1 -0
  164. package/dist/core/workspace-initializer.js +168 -0
  165. package/dist/core/workspace-initializer.js.map +1 -0
  166. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
  167. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
  168. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
  169. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
  170. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
  171. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
  172. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
  173. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
  174. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
  175. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
  176. package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
  177. package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
  178. package/dist/dashboard/approval-storage.d.ts +139 -0
  179. package/dist/dashboard/approval-storage.d.ts.map +1 -0
  180. package/dist/dashboard/approval-storage.js +608 -0
  181. package/dist/dashboard/approval-storage.js.map +1 -0
  182. package/dist/dashboard/execution-history-manager.d.ts +52 -0
  183. package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
  184. package/dist/dashboard/execution-history-manager.js +161 -0
  185. package/dist/dashboard/execution-history-manager.js.map +1 -0
  186. package/dist/dashboard/implementation-log-manager.d.ts +97 -0
  187. package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
  188. package/dist/dashboard/implementation-log-manager.js +617 -0
  189. package/dist/dashboard/implementation-log-manager.js.map +1 -0
  190. package/dist/dashboard/job-scheduler.d.ts +91 -0
  191. package/dist/dashboard/job-scheduler.d.ts.map +1 -0
  192. package/dist/dashboard/job-scheduler.js +321 -0
  193. package/dist/dashboard/job-scheduler.js.map +1 -0
  194. package/dist/dashboard/multi-server.d.ts +42 -0
  195. package/dist/dashboard/multi-server.d.ts.map +1 -0
  196. package/dist/dashboard/multi-server.js +1460 -0
  197. package/dist/dashboard/multi-server.js.map +1 -0
  198. package/dist/dashboard/parser.d.ts +18 -0
  199. package/dist/dashboard/parser.d.ts.map +1 -0
  200. package/dist/dashboard/parser.js +269 -0
  201. package/dist/dashboard/parser.js.map +1 -0
  202. package/dist/dashboard/project-manager.d.ts +82 -0
  203. package/dist/dashboard/project-manager.d.ts.map +1 -0
  204. package/dist/dashboard/project-manager.js +257 -0
  205. package/dist/dashboard/project-manager.js.map +1 -0
  206. package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
  207. package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
  208. package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
  209. package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
  210. package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
  211. package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
  212. package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  213. package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
  214. package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
  215. package/dist/dashboard/public/assets/arc-a5wW942W.js +1 -0
  216. package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
  217. package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
  218. package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
  219. package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
  220. package/dist/dashboard/public/assets/blockDiagram-c4efeb88-CvjTuK-w.js +118 -0
  221. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  222. package/dist/dashboard/public/assets/c4Diagram-c83219d4-NwVQo5kf.js +10 -0
  223. package/dist/dashboard/public/assets/channel-Bi16YZhk.js +1 -0
  224. package/dist/dashboard/public/assets/classDiagram-beda092f-BmSeXDdU.js +2 -0
  225. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-D7GvvuPr.js +2 -0
  226. package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
  227. package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
  228. package/dist/dashboard/public/assets/clone-BpKTiq7P.js +1 -0
  229. package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
  230. package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
  231. package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
  232. package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
  233. package/dist/dashboard/public/assets/createText-1719965b-qASbqHUP.js +7 -0
  234. package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
  235. package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
  236. package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
  237. package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
  238. package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
  239. package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
  240. package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
  241. package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
  242. package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
  243. package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
  244. package/dist/dashboard/public/assets/edges-96097737-BItTSnH7.js +4 -0
  245. package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
  246. package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
  247. package/dist/dashboard/public/assets/erDiagram-0228fc6a-DT224olg.js +51 -0
  248. package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
  249. package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
  250. package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
  251. package/dist/dashboard/public/assets/flowDb-c6c81e3f-D9_ukKtv.js +10 -0
  252. package/dist/dashboard/public/assets/flowDiagram-50d868cf-CylE8siG.js +4 -0
  253. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-B2O3JN7Y.js +1 -0
  254. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-BCaqFKf3.js +139 -0
  255. package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
  256. package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
  257. package/dist/dashboard/public/assets/ganttDiagram-a2739b55-WQUL1QW_.js +257 -0
  258. package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
  259. package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
  260. package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-CttZrdmr.js +70 -0
  261. package/dist/dashboard/public/assets/graph-Ch-rVueN.js +1 -0
  262. package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
  263. package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
  264. package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
  265. package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
  266. package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
  267. package/dist/dashboard/public/assets/index--kbPpDKv.js +1 -0
  268. package/dist/dashboard/public/assets/index-3scDwWm6.js +1 -0
  269. package/dist/dashboard/public/assets/index-5325376f-BL2zVOJU.js +1 -0
  270. package/dist/dashboard/public/assets/index-BZdjbO25.js +1 -0
  271. package/dist/dashboard/public/assets/index-BmA_batZ.js +1 -0
  272. package/dist/dashboard/public/assets/index-Bu0u99kF.js +2 -0
  273. package/dist/dashboard/public/assets/index-Ch-lr7F4.js +1 -0
  274. package/dist/dashboard/public/assets/index-ClgWbdoq.js +1 -0
  275. package/dist/dashboard/public/assets/index-CzLwOMQ_.js +3 -0
  276. package/dist/dashboard/public/assets/index-DAOEjGO7.js +1 -0
  277. package/dist/dashboard/public/assets/index-DXqf0B9c.js +1 -0
  278. package/dist/dashboard/public/assets/index-DegWdR16.js +1 -0
  279. package/dist/dashboard/public/assets/index-DiHyYGim.js +1 -0
  280. package/dist/dashboard/public/assets/index-DlZtG7I5.js +1 -0
  281. package/dist/dashboard/public/assets/index-DmhGE2M8.js +1 -0
  282. package/dist/dashboard/public/assets/index-QEGvld4x.js +1 -0
  283. package/dist/dashboard/public/assets/index-RfZPGAJu.js +1 -0
  284. package/dist/dashboard/public/assets/index-UybBj_7u.js +319 -0
  285. package/dist/dashboard/public/assets/index-bVekzPnl.js +7 -0
  286. package/dist/dashboard/public/assets/index-f5bysQzW.css +1 -0
  287. package/dist/dashboard/public/assets/infoDiagram-8eee0895-DjzkkE3o.js +7 -0
  288. package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
  289. package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
  290. package/dist/dashboard/public/assets/journeyDiagram-c64418c1-CxPZkNdB.js +139 -0
  291. package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
  292. package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
  293. package/dist/dashboard/public/assets/layout-DX7DNTRm.js +1 -0
  294. package/dist/dashboard/public/assets/line-DfvpmKOn.js +1 -0
  295. package/dist/dashboard/public/assets/linear-gQbBPHO5.js +1 -0
  296. package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
  297. package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
  298. package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
  299. package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
  300. package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CNxmpyG6.js +415 -0
  301. package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
  302. package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
  303. package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
  304. package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
  305. package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
  306. package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
  307. package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
  308. package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
  309. package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
  310. package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
  311. package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
  312. package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
  313. package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
  314. package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
  315. package/dist/dashboard/public/assets/pieDiagram-a8764435-D-xy_NSA.js +35 -0
  316. package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
  317. package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
  318. package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
  319. package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
  320. package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
  321. package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
  322. package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
  323. package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
  324. package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-BoL2wzz0.js +7 -0
  325. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  326. package/dist/dashboard/public/assets/requirementDiagram-08caed73-BujFz0q1.js +52 -0
  327. package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
  328. package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
  329. package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-D03_NARm.js +8 -0
  330. package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
  331. package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
  332. package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-B65eFcaT.js +122 -0
  333. package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
  334. package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
  335. package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
  336. package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
  337. package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
  338. package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
  339. package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
  340. package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
  341. package/dist/dashboard/public/assets/stateDiagram-1ecb1508-BDbqu0Vl.js +1 -0
  342. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-CBHvk4b8.js +1 -0
  343. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  344. package/dist/dashboard/public/assets/styles-b4e223ce-CELsPqaO.js +160 -0
  345. package/dist/dashboard/public/assets/styles-ca3715f6-BRqMqT6F.js +207 -0
  346. package/dist/dashboard/public/assets/styles-d45a18b0-e8N-oLPy.js +116 -0
  347. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  348. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-vNDtmQc-.js +1 -0
  349. package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
  350. package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
  351. package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
  352. package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  353. package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
  354. package/dist/dashboard/public/assets/timeline-definition-faaaa080-Dh2_A5VU.js +61 -0
  355. package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
  356. package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
  357. package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
  358. package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  359. package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
  360. package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
  361. package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
  362. package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
  363. package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
  364. package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
  365. package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
  366. package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
  367. package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-B76v1AVF.js +7 -0
  368. package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
  369. package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
  370. package/dist/dashboard/public/claude-icon-dark.svg +1 -0
  371. package/dist/dashboard/public/claude-icon.svg +1 -0
  372. package/dist/dashboard/public/index.html +16 -0
  373. package/dist/dashboard/settings-manager.d.ts +47 -0
  374. package/dist/dashboard/settings-manager.d.ts.map +1 -0
  375. package/dist/dashboard/settings-manager.js +180 -0
  376. package/dist/dashboard/settings-manager.js.map +1 -0
  377. package/dist/dashboard/utils.d.ts +31 -0
  378. package/dist/dashboard/utils.d.ts.map +1 -0
  379. package/dist/dashboard/utils.js +102 -0
  380. package/dist/dashboard/utils.js.map +1 -0
  381. package/dist/dashboard/watcher.d.ts +32 -0
  382. package/dist/dashboard/watcher.d.ts.map +1 -0
  383. package/dist/dashboard/watcher.js +173 -0
  384. package/dist/dashboard/watcher.js.map +1 -0
  385. package/dist/index.d.ts +13 -0
  386. package/dist/index.d.ts.map +1 -0
  387. package/dist/index.js +380 -0
  388. package/dist/index.js.map +1 -0
  389. package/dist/markdown/templates/design-template.md +126 -0
  390. package/dist/markdown/templates/product-template.md +51 -0
  391. package/dist/markdown/templates/requirements-template.md +50 -0
  392. package/dist/markdown/templates/structure-template.md +145 -0
  393. package/dist/markdown/templates/tasks-template.md +100 -0
  394. package/dist/markdown/templates/tech-template.md +99 -0
  395. package/dist/markdown/templates/test-design-template.md +221 -0
  396. package/dist/prompts/create-spec.d.ts +3 -0
  397. package/dist/prompts/create-spec.d.ts.map +1 -0
  398. package/dist/prompts/create-spec.js +97 -0
  399. package/dist/prompts/create-spec.js.map +1 -0
  400. package/dist/prompts/create-steering-doc.d.ts +3 -0
  401. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  402. package/dist/prompts/create-steering-doc.js +75 -0
  403. package/dist/prompts/create-steering-doc.js.map +1 -0
  404. package/dist/prompts/implement-task.d.ts +3 -0
  405. package/dist/prompts/implement-task.d.ts.map +1 -0
  406. package/dist/prompts/implement-task.js +174 -0
  407. package/dist/prompts/implement-task.js.map +1 -0
  408. package/dist/prompts/index.d.ts +20 -0
  409. package/dist/prompts/index.d.ts.map +1 -0
  410. package/dist/prompts/index.js +103 -0
  411. package/dist/prompts/index.js.map +1 -0
  412. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  413. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  414. package/dist/prompts/inject-spec-workflow-guide.js +60 -0
  415. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  416. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  417. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  418. package/dist/prompts/inject-steering-guide.js +64 -0
  419. package/dist/prompts/inject-steering-guide.js.map +1 -0
  420. package/dist/prompts/refresh-tasks.d.ts +3 -0
  421. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  422. package/dist/prompts/refresh-tasks.js +237 -0
  423. package/dist/prompts/refresh-tasks.js.map +1 -0
  424. package/dist/prompts/spec-status.d.ts +3 -0
  425. package/dist/prompts/spec-status.d.ts.map +1 -0
  426. package/dist/prompts/spec-status.js +77 -0
  427. package/dist/prompts/spec-status.js.map +1 -0
  428. package/dist/prompts/types.d.ts +13 -0
  429. package/dist/prompts/types.d.ts.map +1 -0
  430. package/dist/prompts/types.js +2 -0
  431. package/dist/prompts/types.js.map +1 -0
  432. package/dist/server.d.ts +17 -0
  433. package/dist/server.d.ts.map +1 -0
  434. package/dist/server.js +175 -0
  435. package/dist/server.js.map +1 -0
  436. package/dist/tools/__tests__/log-implementation-review-process.test.d.ts +2 -0
  437. package/dist/tools/__tests__/log-implementation-review-process.test.d.ts.map +1 -0
  438. package/dist/tools/__tests__/log-implementation-review-process.test.js +190 -0
  439. package/dist/tools/__tests__/log-implementation-review-process.test.js.map +1 -0
  440. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  441. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  442. package/dist/tools/__tests__/projectPath.test.js +187 -0
  443. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  444. package/dist/tools/approvals.d.ts +14 -0
  445. package/dist/tools/approvals.d.ts.map +1 -0
  446. package/dist/tools/approvals.js +505 -0
  447. package/dist/tools/approvals.js.map +1 -0
  448. package/dist/tools/index.d.ts +5 -0
  449. package/dist/tools/index.d.ts.map +1 -0
  450. package/dist/tools/index.js +52 -0
  451. package/dist/tools/index.js.map +1 -0
  452. package/dist/tools/log-implementation.d.ts +5 -0
  453. package/dist/tools/log-implementation.d.ts.map +1 -0
  454. package/dist/tools/log-implementation.js +498 -0
  455. package/dist/tools/log-implementation.js.map +1 -0
  456. package/dist/tools/spec-status.d.ts +5 -0
  457. package/dist/tools/spec-status.d.ts.map +1 -0
  458. package/dist/tools/spec-status.js +192 -0
  459. package/dist/tools/spec-status.js.map +1 -0
  460. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  461. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  462. package/dist/tools/spec-workflow-guide.js +116 -0
  463. package/dist/tools/spec-workflow-guide.js.map +1 -0
  464. package/dist/tools/steering-guide.d.ts +5 -0
  465. package/dist/tools/steering-guide.d.ts.map +1 -0
  466. package/dist/tools/steering-guide.js +192 -0
  467. package/dist/tools/steering-guide.js.map +1 -0
  468. package/dist/types.d.ts +183 -0
  469. package/dist/types.d.ts.map +1 -0
  470. package/dist/types.js +13 -0
  471. package/dist/types.js.map +1 -0
  472. package/package.json +106 -0
@@ -0,0 +1,505 @@
1
+ import { ApprovalStorage } from '../dashboard/approval-storage.js';
2
+ import { join, isAbsolute } from 'path';
3
+ import { validateProjectPath, PathUtils } from '../core/path-utils.js';
4
+ import { readFile } from 'fs/promises';
5
+ import { validateTasksMarkdown, formatValidationErrors } from '../core/task-validator.js';
6
+ import { validateMarkdownForMdx, formatMdxValidationIssues } from '../core/mdx-validator.js';
7
+ /**
8
+ * Safely translate a path, with defensive checks to provide better error messages
9
+ * in case of module loading issues.
10
+ *
11
+ * Note: The original issue reported "PathUtils.translatePath is not a function" on Windows.
12
+ * While we couldn't reproduce it, this defensive check ensures a clear error message
13
+ * is provided if such edge cases occur.
14
+ */
15
+ function safeTranslatePath(path) {
16
+ // Defensive check: ensure translatePath method exists and is callable
17
+ // This handles edge cases where the class might be partially initialized
18
+ if (typeof PathUtils?.translatePath !== 'function') {
19
+ throw new Error(`PathUtils.translatePath is not available (got ${typeof PathUtils?.translatePath}). ` +
20
+ 'This may indicate a module loading issue. Please reinstall the package with: ' +
21
+ 'npm uninstall @arimakouyou/spec-workflow-mcp && npm install @arimakouyou/spec-workflow-mcp');
22
+ }
23
+ return PathUtils.translatePath(path);
24
+ }
25
+ export const approvalsTool = {
26
+ name: 'approvals',
27
+ description: `Manage approval requests through the dashboard interface.
28
+
29
+ # Instructions
30
+ Use this tool to request, check status, or delete approval requests. The action parameter determines the operation:
31
+ - 'request': Create a new approval request after creating each document
32
+ - 'status': Check the current status of an approval request
33
+ - 'delete': Clean up completed, rejected, or needs-revision approval requests (cannot delete pending requests)
34
+
35
+ CRITICAL: Only provide filePath parameter for requests - the dashboard reads files directly. Never include document content. Wait for user to review and approve before continuing.`,
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ action: {
40
+ type: 'string',
41
+ enum: ['request', 'status', 'delete'],
42
+ description: 'The action to perform: request, status, or delete'
43
+ },
44
+ projectPath: {
45
+ type: 'string',
46
+ description: 'Absolute path to the project root (optional - uses server context path if not provided)'
47
+ },
48
+ approvalId: {
49
+ type: 'string',
50
+ description: 'The ID of the approval request (required for status and delete actions)'
51
+ },
52
+ title: {
53
+ type: 'string',
54
+ description: 'Brief title describing what needs approval (required for request action)'
55
+ },
56
+ filePath: {
57
+ type: 'string',
58
+ description: 'Path to the file that needs approval, relative to project root (required for request action)'
59
+ },
60
+ type: {
61
+ type: 'string',
62
+ enum: ['document', 'action'],
63
+ description: 'Type of approval request - "document" for content approval, "action" for action approval (required for request)'
64
+ },
65
+ category: {
66
+ type: 'string',
67
+ enum: ['spec', 'steering'],
68
+ description: 'Category of the approval request - "spec" for specifications, "steering" for steering documents (required for request)'
69
+ },
70
+ categoryName: {
71
+ type: 'string',
72
+ description: 'Name of the spec or "steering" for steering documents (required for request)'
73
+ }
74
+ },
75
+ required: ['action']
76
+ },
77
+ annotations: {
78
+ title: 'Approvals',
79
+ destructiveHint: true,
80
+ }
81
+ };
82
+ // Type guard functions
83
+ function isRequestApproval(args) {
84
+ return args.action === 'request';
85
+ }
86
+ function isStatusApproval(args) {
87
+ return args.action === 'status';
88
+ }
89
+ function isDeleteApproval(args) {
90
+ return args.action === 'delete';
91
+ }
92
+ export async function approvalsHandler(args, context) {
93
+ // Cast to discriminated union type
94
+ const typedArgs = args;
95
+ switch (typedArgs.action) {
96
+ case 'request':
97
+ if (isRequestApproval(typedArgs)) {
98
+ // Validate required fields for request
99
+ if (!args.title || !args.filePath || !args.type || !args.category || !args.categoryName) {
100
+ return {
101
+ success: false,
102
+ message: 'Missing required fields for request action. Required: title, filePath, type, category, categoryName'
103
+ };
104
+ }
105
+ return handleRequestApproval(typedArgs, context);
106
+ }
107
+ break;
108
+ case 'status':
109
+ if (isStatusApproval(typedArgs)) {
110
+ // Validate required fields for status
111
+ if (!args.approvalId) {
112
+ return {
113
+ success: false,
114
+ message: 'Missing required field for status action. Required: approvalId'
115
+ };
116
+ }
117
+ return handleGetApprovalStatus(typedArgs, context);
118
+ }
119
+ break;
120
+ case 'delete':
121
+ if (isDeleteApproval(typedArgs)) {
122
+ // Validate required fields for delete
123
+ if (!args.approvalId) {
124
+ return {
125
+ success: false,
126
+ message: 'Missing required field for delete action. Required: approvalId'
127
+ };
128
+ }
129
+ return handleDeleteApproval(typedArgs, context);
130
+ }
131
+ break;
132
+ default:
133
+ return {
134
+ success: false,
135
+ message: `Unknown action: ${args.action}. Use 'request', 'status', or 'delete'.`
136
+ };
137
+ }
138
+ // This should never be reached due to exhaustive type checking
139
+ return {
140
+ success: false,
141
+ message: 'Invalid action configuration'
142
+ };
143
+ }
144
+ async function handleRequestApproval(args, context) {
145
+ // Use context projectPath as default, allow override via args
146
+ const projectPath = args.projectPath || context.projectPath;
147
+ if (!projectPath) {
148
+ return {
149
+ success: false,
150
+ message: 'Project path is required but not provided in context or arguments'
151
+ };
152
+ }
153
+ try {
154
+ // Validate and resolve project path
155
+ const validatedProjectPath = await validateProjectPath(projectPath);
156
+ // Translate path at tool entry point (ApprovalStorage expects pre-translated paths)
157
+ const translatedPath = safeTranslatePath(validatedProjectPath);
158
+ const approvalStorage = new ApprovalStorage(translatedPath, {
159
+ originalPath: validatedProjectPath,
160
+ fileResolutionPath: translatedPath
161
+ });
162
+ await approvalStorage.start();
163
+ // Security: Validate filePath to prevent arbitrary file reads
164
+ if (isAbsolute(args.filePath)) {
165
+ await approvalStorage.stop();
166
+ return {
167
+ success: false,
168
+ message: 'Security error: absolute paths are not allowed for filePath. Use a path relative to the project root.'
169
+ };
170
+ }
171
+ if (args.filePath.includes('..')) {
172
+ await approvalStorage.stop();
173
+ return {
174
+ success: false,
175
+ message: 'Security error: path traversal (..) is not allowed in filePath. Use a path relative to the project root.'
176
+ };
177
+ }
178
+ const isMarkdownFile = args.filePath.toLowerCase().endsWith('.md');
179
+ let markdownContent;
180
+ if (isMarkdownFile) {
181
+ try {
182
+ const fullPath = PathUtils.safeJoin(validatedProjectPath, args.filePath);
183
+ markdownContent = await readFile(fullPath, 'utf-8');
184
+ }
185
+ catch (fileError) {
186
+ await approvalStorage.stop();
187
+ const errorMessage = fileError instanceof Error ? fileError.message : String(fileError);
188
+ return {
189
+ success: false,
190
+ message: `Failed to read markdown file for validation: ${errorMessage}`
191
+ };
192
+ }
193
+ const mdxValidation = await validateMarkdownForMdx(markdownContent);
194
+ if (!mdxValidation.valid) {
195
+ await approvalStorage.stop();
196
+ const formattedIssues = formatMdxValidationIssues(mdxValidation.issues);
197
+ return {
198
+ success: false,
199
+ message: 'Markdown file has MDX compatibility errors that must be fixed before approval',
200
+ data: {
201
+ errorCount: mdxValidation.issues.length,
202
+ summary: {
203
+ totalIssues: mdxValidation.issues.length,
204
+ rules: [...new Set(mdxValidation.issues.map(issue => issue.ruleId))]
205
+ }
206
+ },
207
+ nextSteps: [
208
+ 'Fix MDX compatibility issues listed below',
209
+ 'For literal comparisons (for example "<5%"), use "&lt;5%" or inline code (`<5%`)',
210
+ 'Re-request approval after fixing',
211
+ ...formattedIssues
212
+ ]
213
+ };
214
+ }
215
+ }
216
+ // Validate tasks.md format before allowing approval request
217
+ if (args.filePath.endsWith('tasks.md')) {
218
+ const content = markdownContent ?? await readFile(PathUtils.safeJoin(validatedProjectPath, args.filePath), 'utf-8');
219
+ const validationResult = validateTasksMarkdown(content);
220
+ if (!validationResult.valid) {
221
+ await approvalStorage.stop();
222
+ const errorMessages = formatValidationErrors(validationResult);
223
+ return {
224
+ success: false,
225
+ message: 'Tasks document has format errors that must be fixed before approval',
226
+ data: {
227
+ errorCount: validationResult.errors.length,
228
+ warningCount: validationResult.warnings.length,
229
+ summary: validationResult.summary
230
+ },
231
+ nextSteps: [
232
+ 'Fix the format errors listed below',
233
+ 'Ensure each task has: checkbox (- [ ]), numeric ID (1.1), description',
234
+ 'Ensure metadata uses underscores: _Requirements: ..._',
235
+ 'Ensure _Prompt ends with underscore',
236
+ 'Re-request approval after fixing',
237
+ ...errorMessages
238
+ ]
239
+ };
240
+ }
241
+ // If there are warnings, include them but allow approval to proceed
242
+ if (validationResult.warnings.length > 0) {
243
+ // Warnings don't block approval, but will be included in the response
244
+ // This allows the user to see potential issues while still proceeding
245
+ }
246
+ }
247
+ const approvalId = await approvalStorage.createApproval(args.title, args.filePath, args.category, args.categoryName, args.type);
248
+ await approvalStorage.stop();
249
+ // Build deeplink URL that navigates directly to this specific approval
250
+ const deeplink = context.dashboardUrl
251
+ ? `${context.dashboardUrl}/approvals?id=${encodeURIComponent(approvalId)}`
252
+ : undefined;
253
+ return {
254
+ success: true,
255
+ message: `Approval request created successfully. Please review in dashboard: ${deeplink || 'Start with: spec-workflow-mcp --dashboard'}`,
256
+ data: {
257
+ approvalId,
258
+ title: args.title,
259
+ filePath: args.filePath,
260
+ type: args.type,
261
+ status: 'pending',
262
+ dashboardUrl: deeplink
263
+ },
264
+ nextSteps: [
265
+ 'BLOCKING - Dashboard approval required',
266
+ 'VERBAL APPROVAL NOT ACCEPTED',
267
+ 'Do not proceed on verbal confirmation',
268
+ deeplink ? `Use dashboard: ${deeplink}` : 'Start the dashboard with: spec-workflow-mcp --dashboard',
269
+ `Poll status with: approvals action:"status" approvalId:"${approvalId}"`
270
+ ],
271
+ projectContext: {
272
+ projectPath: validatedProjectPath,
273
+ workflowRoot: join(validatedProjectPath, '.spec-workflow'),
274
+ dashboardUrl: deeplink
275
+ }
276
+ };
277
+ }
278
+ catch (error) {
279
+ const errorMessage = error instanceof Error ? error.message : String(error);
280
+ return {
281
+ success: false,
282
+ message: `Failed to create approval request: ${errorMessage}`
283
+ };
284
+ }
285
+ }
286
+ async function handleGetApprovalStatus(args, context) {
287
+ // approvalId is guaranteed by type
288
+ try {
289
+ // Use provided projectPath or fall back to context
290
+ const projectPath = args.projectPath || context.projectPath;
291
+ if (!projectPath) {
292
+ return {
293
+ success: false,
294
+ message: 'Project path is required. Please provide projectPath parameter.'
295
+ };
296
+ }
297
+ // Validate and resolve project path
298
+ const validatedProjectPath = await validateProjectPath(projectPath);
299
+ // Translate path at tool entry point (ApprovalStorage expects pre-translated paths)
300
+ const translatedPath = safeTranslatePath(validatedProjectPath);
301
+ const approvalStorage = new ApprovalStorage(translatedPath, {
302
+ originalPath: validatedProjectPath,
303
+ fileResolutionPath: translatedPath
304
+ });
305
+ await approvalStorage.start();
306
+ const approval = await approvalStorage.getApproval(args.approvalId);
307
+ if (!approval) {
308
+ await approvalStorage.stop();
309
+ return {
310
+ success: false,
311
+ message: `Approval request not found: ${args.approvalId}`
312
+ };
313
+ }
314
+ await approvalStorage.stop();
315
+ const isCompleted = approval.status === 'approved' || approval.status === 'rejected';
316
+ const canProceed = approval.status === 'approved';
317
+ const mustWait = approval.status !== 'approved';
318
+ const nextSteps = [];
319
+ if (approval.status === 'pending') {
320
+ nextSteps.push('BLOCKED - Do not proceed');
321
+ nextSteps.push('VERBAL APPROVAL NOT ACCEPTED - Use dashboard or VS Code extension only');
322
+ nextSteps.push('Approval must be done via dashboard or VS Code extension');
323
+ nextSteps.push('Continue polling with approvals action:"status"');
324
+ }
325
+ else if (approval.status === 'approved') {
326
+ nextSteps.push('APPROVED - Can proceed');
327
+ nextSteps.push('Run approvals action:"delete" before continuing');
328
+ if (approval.response) {
329
+ nextSteps.push(`Response: ${approval.response}`);
330
+ }
331
+ }
332
+ else if (approval.status === 'rejected') {
333
+ nextSteps.push('BLOCKED - REJECTED');
334
+ nextSteps.push('Do not proceed');
335
+ nextSteps.push('Review feedback and revise');
336
+ if (approval.response) {
337
+ nextSteps.push(`Reason: ${approval.response}`);
338
+ }
339
+ if (approval.annotations) {
340
+ nextSteps.push(`Notes: ${approval.annotations}`);
341
+ }
342
+ }
343
+ else if (approval.status === 'needs-revision') {
344
+ nextSteps.push('BLOCKED - Do not proceed');
345
+ nextSteps.push('Update document with feedback');
346
+ nextSteps.push('Create NEW approval request');
347
+ if (approval.response) {
348
+ nextSteps.push(`Feedback: ${approval.response}`);
349
+ }
350
+ if (approval.annotations) {
351
+ nextSteps.push(`Notes: ${approval.annotations}`);
352
+ }
353
+ if (approval.comments && approval.comments.length > 0) {
354
+ nextSteps.push(`${approval.comments.length} comments for targeted fixes:`);
355
+ // Add each comment to nextSteps for visibility
356
+ approval.comments.forEach((comment, index) => {
357
+ if (comment.type === 'selection' && comment.selectedText) {
358
+ nextSteps.push(` Comment ${index + 1} on "${comment.selectedText.substring(0, 50)}...": ${comment.comment}`);
359
+ }
360
+ else {
361
+ nextSteps.push(` Comment ${index + 1} (general): ${comment.comment}`);
362
+ }
363
+ });
364
+ }
365
+ }
366
+ return {
367
+ success: true,
368
+ message: approval.status === 'pending'
369
+ ? `BLOCKED: Status is ${approval.status}. Verbal approval is NOT accepted. Use dashboard or VS Code extension only.`
370
+ : `Approval status: ${approval.status}`,
371
+ data: {
372
+ approvalId: args.approvalId,
373
+ title: approval.title,
374
+ type: approval.type,
375
+ status: approval.status,
376
+ createdAt: approval.createdAt,
377
+ respondedAt: approval.respondedAt,
378
+ response: approval.response,
379
+ annotations: approval.annotations,
380
+ comments: approval.comments,
381
+ isCompleted,
382
+ canProceed,
383
+ mustWait,
384
+ blockNext: !canProceed,
385
+ dashboardUrl: context.dashboardUrl
386
+ },
387
+ nextSteps,
388
+ projectContext: {
389
+ projectPath: validatedProjectPath,
390
+ workflowRoot: join(validatedProjectPath, '.spec-workflow'),
391
+ dashboardUrl: context.dashboardUrl
392
+ }
393
+ };
394
+ }
395
+ catch (error) {
396
+ const errorMessage = error instanceof Error ? error.message : String(error);
397
+ return {
398
+ success: false,
399
+ message: `Failed to check approval status: ${errorMessage}`
400
+ };
401
+ }
402
+ }
403
+ async function handleDeleteApproval(args, context) {
404
+ // approvalId is guaranteed by type
405
+ try {
406
+ // Use provided projectPath or fall back to context
407
+ const projectPath = args.projectPath || context.projectPath;
408
+ if (!projectPath) {
409
+ return {
410
+ success: false,
411
+ message: 'Project path is required. Please provide projectPath parameter.'
412
+ };
413
+ }
414
+ // Validate and resolve project path
415
+ const validatedProjectPath = await validateProjectPath(projectPath);
416
+ // Translate path at tool entry point (ApprovalStorage expects pre-translated paths)
417
+ const translatedPath = safeTranslatePath(validatedProjectPath);
418
+ const approvalStorage = new ApprovalStorage(translatedPath, {
419
+ originalPath: validatedProjectPath,
420
+ fileResolutionPath: translatedPath
421
+ });
422
+ await approvalStorage.start();
423
+ // Check if approval exists and its status
424
+ const approval = await approvalStorage.getApproval(args.approvalId);
425
+ if (!approval) {
426
+ return {
427
+ success: false,
428
+ message: `Approval request "${args.approvalId}" not found`,
429
+ nextSteps: [
430
+ 'Verify approval ID',
431
+ 'Check status with approvals action:"status"'
432
+ ]
433
+ };
434
+ }
435
+ // Only block deletion of pending requests (still awaiting approval)
436
+ // Allow deletion of: approved, needs-revision, rejected
437
+ if (approval.status === 'pending') {
438
+ return {
439
+ success: false,
440
+ message: `BLOCKED: Cannot delete - status is "${approval.status}". This approval is still awaiting review. VERBAL APPROVAL NOT ACCEPTED. Use dashboard or VS Code extension.`,
441
+ data: {
442
+ approvalId: args.approvalId,
443
+ currentStatus: approval.status,
444
+ title: approval.title,
445
+ blockProgress: true,
446
+ canProceed: false
447
+ },
448
+ nextSteps: [
449
+ 'STOP - Cannot delete pending approval',
450
+ 'Wait for approval or rejection',
451
+ 'Poll with approvals action:"status"',
452
+ 'Delete only after status changes to approved, rejected, or needs-revision'
453
+ ]
454
+ };
455
+ }
456
+ // Delete the approval
457
+ const deleted = await approvalStorage.deleteApproval(args.approvalId);
458
+ await approvalStorage.stop();
459
+ if (deleted) {
460
+ return {
461
+ success: true,
462
+ message: `Approval request "${args.approvalId}" deleted successfully`,
463
+ data: {
464
+ deletedApprovalId: args.approvalId,
465
+ title: approval.title,
466
+ category: approval.category,
467
+ categoryName: approval.categoryName
468
+ },
469
+ nextSteps: [
470
+ 'Cleanup complete',
471
+ 'Continue to next phase'
472
+ ],
473
+ projectContext: {
474
+ projectPath: validatedProjectPath,
475
+ workflowRoot: join(validatedProjectPath, '.spec-workflow'),
476
+ dashboardUrl: context.dashboardUrl
477
+ }
478
+ };
479
+ }
480
+ else {
481
+ return {
482
+ success: false,
483
+ message: `Failed to delete approval request "${args.approvalId}"`,
484
+ nextSteps: [
485
+ 'Check file permissions',
486
+ 'Verify approval exists',
487
+ 'Retry'
488
+ ]
489
+ };
490
+ }
491
+ }
492
+ catch (error) {
493
+ const errorMessage = error instanceof Error ? error.message : String(error);
494
+ return {
495
+ success: false,
496
+ message: `Failed to delete approval: ${errorMessage}`,
497
+ nextSteps: [
498
+ 'Check project path',
499
+ 'Verify permissions',
500
+ 'Check approval system'
501
+ ]
502
+ };
503
+ }
504
+ }
505
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE7F;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,sEAAsE;IACtE,yEAAyE;IACzE,IAAI,OAAO,SAAS,EAAE,aAAa,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,iDAAiD,OAAO,SAAS,EAAE,aAAa,KAAK;YACrF,+EAA+E;YAC/E,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE;;;;;;;;oLAQqK;IAClL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACrC,WAAW,EAAE,mDAAmD;aACjE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yFAAyF;aACvG;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yEAAyE;aACvF;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0EAA0E;aACxF;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8FAA8F;aAC5G;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC5B,WAAW,EAAE,iHAAiH;aAC/H;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;gBAC1B,WAAW,EAAE,wHAAwH;aACtI;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8EAA8E;aAC5F;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,WAAW;QAClB,eAAe,EAAE,IAAI;KACtB;CACF,CAAC;AA2BF,uBAAuB;AACvB,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IASC,EACD,OAAoB;IAEpB,mCAAmC;IACnC,MAAM,SAAS,GAAG,IAAoB,CAAC;IAEvC,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,SAAS;YACZ,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,uCAAuC;gBACvC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACxF,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,qGAAqG;qBAC/G,CAAC;gBACJ,CAAC;gBACD,OAAO,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,sCAAsC;gBACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,gEAAgE;qBAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,sCAAsC;gBACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,gEAAgE;qBAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;YACD,MAAM;QACR;YACE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,mBAAoB,IAAY,CAAC,MAAM,yCAAyC;aAC1F,CAAC;IACN,CAAC;IAED,+DAA+D;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,8BAA8B;KACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAAyB,EACzB,OAAoB;IAEpB,8DAA8D;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAE5D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,mEAAmE;SAC7E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACpE,oFAAoF;QACpF,MAAM,cAAc,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE;YAC1D,YAAY,EAAE,oBAAoB;YAClC,kBAAkB,EAAE,cAAc;SACnC,CAAC,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAE9B,8DAA8D;QAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,uGAAuG;aACjH,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,0GAA0G;aACpH,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,eAAmC,CAAC;QAExC,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzE,eAAe,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxF,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,gDAAgD,YAAY,EAAE;iBACxE,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,eAAe,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,eAAe,GAAG,yBAAyB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAExE,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,+EAA+E;oBACxF,IAAI,EAAE;wBACJ,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM;wBACvC,OAAO,EAAE;4BACP,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM;4BACxC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACrE;qBACF;oBACD,SAAS,EAAE;wBACT,2CAA2C;wBAC3C,kFAAkF;wBAClF,kCAAkC;wBAClC,GAAG,eAAe;qBACnB;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,eAAe,IAAI,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YACpH,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;gBAE7B,MAAM,aAAa,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;gBAE/D,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,qEAAqE;oBAC9E,IAAI,EAAE;wBACJ,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM;wBAC1C,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM;wBAC9C,OAAO,EAAE,gBAAgB,CAAC,OAAO;qBAClC;oBACD,SAAS,EAAE;wBACT,oCAAoC;wBACpC,uEAAuE;wBACvE,uDAAuD;wBACvD,qCAAqC;wBACrC,kCAAkC;wBAClC,GAAG,aAAa;qBACjB;iBACF,CAAC;YACJ,CAAC;YAED,oEAAoE;YACpE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,sEAAsE;gBACtE,sEAAsE;YACxE,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,cAAc,CACrD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,IAAI,CACV,CAAC;QAEF,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAE7B,uEAAuE;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY;YACnC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,EAAE;YAC1E,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,sEAAsE,QAAQ,IAAI,2CAA2C,EAAE;YACxI,IAAI,EAAE;gBACJ,UAAU;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,QAAQ;aACvB;YACD,SAAS,EAAE;gBACT,wCAAwC;gBACxC,8BAA8B;gBAC9B,uCAAuC;gBACvC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC,CAAC,yDAAyD;gBACnG,2DAA2D,UAAU,GAAG;aACzE;YACD,cAAc,EAAE;gBACd,WAAW,EAAE,oBAAoB;gBACjC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;gBAC1D,YAAY,EAAE,QAAQ;aACvB;SACF,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,sCAAsC,YAAY,EAAE;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,IAAwB,EACxB,OAAoB;IAEpB,mCAAmC;IAEnC,IAAI,CAAC;QACH,mDAAmD;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,iEAAiE;aAC3E,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACpE,oFAAoF;QACpF,MAAM,cAAc,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE;YAC1D,YAAY,EAAE,oBAAoB;YAClC,kBAAkB,EAAE,cAAc;SACnC,CAAC,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,+BAA+B,IAAI,CAAC,UAAU,EAAE;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;QACrF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;QAChD,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC3C,SAAS,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACzF,SAAS,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAC3E,SAAS,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC7C,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,SAAS,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC3C,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,SAAS,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,+BAA+B,CAAC,CAAC;gBAC3E,+CAA+C;gBAC/C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;wBACzD,SAAS,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,QAAQ,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChH,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,CAAC,CAAC,sBAAsB,QAAQ,CAAC,MAAM,6EAA6E;gBACpH,CAAC,CAAC,oBAAoB,QAAQ,CAAC,MAAM,EAAE;YACzC,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW;gBACX,UAAU;gBACV,QAAQ;gBACR,SAAS,EAAE,CAAC,UAAU;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;YACD,SAAS;YACT,cAAc,EAAE;gBACd,WAAW,EAAE,oBAAoB;gBACjC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;gBAC1D,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC;SACF,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oCAAoC,YAAY,EAAE;SAC5D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,IAAwB,EACxB,OAAoB;IAEpB,mCAAmC;IAEnC,IAAI,CAAC;QACH,mDAAmD;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,iEAAiE;aAC3E,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACpE,oFAAoF;QACpF,MAAM,cAAc,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE;YAC1D,YAAY,EAAE,oBAAoB;YAClC,kBAAkB,EAAE,cAAc;SACnC,CAAC,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,qBAAqB,IAAI,CAAC,UAAU,aAAa;gBAC1D,SAAS,EAAE;oBACT,oBAAoB;oBACpB,6CAA6C;iBAC9C;aACF,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,wDAAwD;QACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,uCAAuC,QAAQ,CAAC,MAAM,8GAA8G;gBAC7K,IAAI,EAAE;oBACJ,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,aAAa,EAAE,QAAQ,CAAC,MAAM;oBAC9B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,aAAa,EAAE,IAAI;oBACnB,UAAU,EAAE,KAAK;iBAClB;gBACD,SAAS,EAAE;oBACT,uCAAuC;oBACvC,gCAAgC;oBAChC,qCAAqC;oBACrC,2EAA2E;iBAC5E;aACF,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,qBAAqB,IAAI,CAAC,UAAU,wBAAwB;gBACrE,IAAI,EAAE;oBACJ,iBAAiB,EAAE,IAAI,CAAC,UAAU;oBAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACpC;gBACD,SAAS,EAAE;oBACT,kBAAkB;oBAClB,wBAAwB;iBACzB;gBACD,cAAc,EAAE;oBACd,WAAW,EAAE,oBAAoB;oBACjC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;oBAC1D,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sCAAsC,IAAI,CAAC,UAAU,GAAG;gBACjE,SAAS,EAAE;oBACT,wBAAwB;oBACxB,wBAAwB;oBACxB,OAAO;iBACR;aACF,CAAC;QACJ,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,8BAA8B,YAAY,EAAE;YACrD,SAAS,EAAE;gBACT,oBAAoB;gBACpB,oBAAoB;gBACpB,uBAAuB;aACxB;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { ToolContext, MCPToolResponse } from '../types.js';
3
+ export declare function registerTools(): Tool[];
4
+ export declare function handleToolCall(name: string, args: any, context: ToolContext): Promise<MCPToolResponse>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAM1D,OAAO,EAAE,WAAW,EAAgB,eAAe,EAAiB,MAAM,aAAa,CAAC;AAExF,wBAAgB,aAAa,IAAI,IAAI,EAAE,CAQtC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAsC5G"}
@@ -0,0 +1,52 @@
1
+ import { specWorkflowGuideTool, specWorkflowGuideHandler } from './spec-workflow-guide.js';
2
+ import { specStatusTool, specStatusHandler } from './spec-status.js';
3
+ import { steeringGuideTool, steeringGuideHandler } from './steering-guide.js';
4
+ import { approvalsTool, approvalsHandler } from './approvals.js';
5
+ import { logImplementationTool, logImplementationHandler } from './log-implementation.js';
6
+ import { toMCPResponse } from '../types.js';
7
+ export function registerTools() {
8
+ return [
9
+ specWorkflowGuideTool,
10
+ steeringGuideTool,
11
+ specStatusTool,
12
+ approvalsTool,
13
+ logImplementationTool
14
+ ];
15
+ }
16
+ export async function handleToolCall(name, args, context) {
17
+ let response;
18
+ let isError = false;
19
+ try {
20
+ switch (name) {
21
+ case 'spec-workflow-guide':
22
+ response = await specWorkflowGuideHandler(args, context);
23
+ break;
24
+ case 'steering-guide':
25
+ response = await steeringGuideHandler(args, context);
26
+ break;
27
+ case 'spec-status':
28
+ response = await specStatusHandler(args, context);
29
+ break;
30
+ case 'approvals':
31
+ response = await approvalsHandler(args, context);
32
+ break;
33
+ case 'log-implementation':
34
+ response = await logImplementationHandler(args, context);
35
+ break;
36
+ default:
37
+ throw new Error(`Unknown tool: ${name}`);
38
+ }
39
+ // Check if the response indicates an error
40
+ isError = !response.success;
41
+ }
42
+ catch (error) {
43
+ const errorMessage = error instanceof Error ? error.message : String(error);
44
+ response = {
45
+ success: false,
46
+ message: `Tool execution failed: ${errorMessage}`
47
+ };
48
+ isError = true;
49
+ }
50
+ return toMCPResponse(response, isError);
51
+ }
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAA8C,aAAa,EAAE,MAAM,aAAa,CAAC;AAExF,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,qBAAqB;QACrB,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAS,EAAE,OAAoB;IAChF,IAAI,QAAsB,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,qBAAqB;gBACxB,QAAQ,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,gBAAgB;gBACnB,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,aAAa;gBAChB,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,WAAW;gBACd,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,oBAAoB;gBACvB,QAAQ,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,2CAA2C;QAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;IAE9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,QAAQ,GAAG;YACT,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,0BAA0B,YAAY,EAAE;SAClD,CAAC;QACF,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { ToolContext, ToolResponse } from '../types.js';
3
+ export declare const logImplementationTool: Tool;
4
+ export declare function logImplementationHandler(args: any, context: ToolContext): Promise<ToolResponse>;
5
+ //# sourceMappingURL=log-implementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-implementation.d.ts","sourceRoot":"","sources":["../../src/tools/log-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAA0B,MAAM,aAAa,CAAC;AAKhF,eAAO,MAAM,qBAAqB,EAAE,IAmUnC,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAkMvB"}