@sureshdsk/devflow-mcp 3.0.0 → 3.0.2

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 (645) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +4 -4
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  6. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  9. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  16. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  17. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.rsc +14 -13
  21. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -13
  22. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
  24. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/standalone/.next/server/app/api/projects/[id]/route.js +2 -2
  28. package/.next/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/projects/route.js +2 -2
  30. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js +2 -2
  34. package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js +2 -2
  36. package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/specs/[name]/route.js +2 -2
  38. package/.next/standalone/.next/server/app/api/specs/[name]/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/specs/route.js +2 -2
  40. package/.next/standalone/.next/server/app/api/specs/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/tasks/[id]/route.js +2 -2
  42. package/.next/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/tasks/route.js +2 -2
  44. package/.next/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/index.html +1 -1
  46. package/.next/standalone/.next/server/app/index.rsc +15 -14
  47. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  48. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -14
  49. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  50. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -4
  51. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  52. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  53. package/.next/standalone/.next/server/app/page.js +2 -2
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/specs/[name]/page/build-manifest.json +2 -2
  57. package/.next/standalone/.next/server/app/specs/[name]/page.js +2 -2
  58. package/.next/standalone/.next/server/app/specs/[name]/page.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/specs/[name]/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0be0eb8b._.js +3 -0
  61. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a9d478ee._.js → [root-of-the-server]__160c54ca._.js} +2 -2
  62. package/.next/standalone/.next/server/chunks/[root-of-the-server]__17ac51e3._.js +3 -0
  63. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bb083e9._.js +3 -0
  64. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1dc1e944._.js +3 -0
  65. package/.next/standalone/.next/server/chunks/[root-of-the-server]__22ecfa2c._.js +3 -0
  66. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13a93eb6._.js → [root-of-the-server]__64710c0d._.js} +2 -2
  67. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a2b7e5f2._.js +3 -0
  68. package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf302bda._.js +3 -0
  69. package/.next/standalone/.next/server/chunks/[root-of-the-server]__d85482cd._.js +3 -0
  70. package/.next/standalone/.next/server/chunks/[root-of-the-server]__dfa21757._.js +3 -0
  71. package/.next/standalone/.next/server/chunks/_3f452afe._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/src_db_index_ts_a71f50f0._.js +3 -0
  73. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__023e2c69._.js +3 -0
  74. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a1a1435._.js +3 -0
  75. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c49a387._.js +3 -0
  76. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1be1fc5f._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3a2f2efb._.js +3 -0
  78. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4693399c._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__937c9212._.js → [root-of-the-server]__72a14301._.js} +2 -2
  80. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8064ca06._.js +3 -0
  81. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8b786d48._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8c052461._.js +3 -0
  83. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8d306066._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9532fd59._.js +3 -0
  85. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a119dd75._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7fb6ef14._.js → [root-of-the-server]__a57b312b._.js} +2 -2
  87. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a80bd0ea._.js +3 -0
  88. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__abe095b3._.js +3 -0
  89. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ad3bd783._.js +3 -0
  90. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1e05fe0e._.js → [root-of-the-server]__ae9f05d6._.js} +2 -2
  91. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8781469._.js +3 -0
  92. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8a25070._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e8c1e595._.js +3 -0
  94. package/.next/standalone/.next/server/chunks/ssr/_0ff3de19._.js +1 -1
  95. package/.next/standalone/.next/server/chunks/ssr/node_modules_01a5cd4b._.js +3 -0
  96. package/.next/standalone/.next/server/chunks/ssr/node_modules_05c6819f._.js +31 -0
  97. package/.next/standalone/.next/server/chunks/ssr/node_modules_06c2c30a._.js +3 -0
  98. package/.next/standalone/.next/server/chunks/ssr/node_modules_09efe605._.js +3 -0
  99. package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_ef601841._.js → node_modules_0a439e3b._.js} +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/{node_modules_3507b41a._.js → node_modules_0e73ad6c._.js} +3 -3
  101. package/.next/standalone/.next/server/chunks/ssr/node_modules_0e7ff06d._.js +3 -0
  102. package/.next/standalone/.next/server/chunks/ssr/node_modules_0f73e25c._.js +3 -0
  103. package/.next/standalone/.next/server/chunks/ssr/node_modules_14cf9cea._.js +3 -0
  104. package/.next/standalone/.next/server/chunks/ssr/node_modules_19801f01._.js +3 -0
  105. package/.next/standalone/.next/server/chunks/ssr/node_modules_2235b8cf._.js +17 -0
  106. package/.next/standalone/.next/server/chunks/ssr/node_modules_23096c6d._.js +3 -0
  107. package/.next/standalone/.next/server/chunks/ssr/node_modules_23db4cf7._.js +17 -0
  108. package/.next/standalone/.next/server/chunks/ssr/node_modules_24381e95._.js +3 -0
  109. package/.next/standalone/.next/server/chunks/ssr/node_modules_24ca0eb6._.js +17 -0
  110. package/.next/standalone/.next/server/chunks/ssr/node_modules_27525793._.js +17 -0
  111. package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_4cfa6360._.js → node_modules_27c20382._.js} +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/node_modules_2c901b92._.js +3 -0
  113. package/.next/standalone/.next/server/chunks/ssr/node_modules_33b818b7._.js +45 -0
  114. package/.next/standalone/.next/server/chunks/ssr/node_modules_345d7791._.js +3 -0
  115. package/.next/standalone/.next/server/chunks/ssr/node_modules_36185c24._.js +45 -0
  116. package/.next/standalone/.next/server/chunks/ssr/node_modules_3ac7ce09._.js +3 -0
  117. package/.next/standalone/.next/server/chunks/ssr/node_modules_41b77cc7._.js +3 -0
  118. package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed317ff6._.js → node_modules_42acd8db._.js} +2 -2
  119. package/.next/standalone/.next/server/chunks/ssr/node_modules_434aa5ec._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/ssr/node_modules_54a9e72d._.js +17 -0
  121. package/.next/standalone/.next/server/chunks/ssr/node_modules_54f1273a._.js +26 -0
  122. package/.next/standalone/.next/server/chunks/ssr/node_modules_58d64491._.js +3 -0
  123. package/.next/standalone/.next/server/chunks/ssr/node_modules_5e012e3d._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/ssr/node_modules_5ea9e4cf._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/ssr/node_modules_5ecf8270._.js +26 -0
  126. package/.next/standalone/.next/server/chunks/ssr/node_modules_611c99b5._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/ssr/{node_modules_d3-scale_src_e02ef77f._.js → node_modules_6629853d._.js} +2 -2
  128. package/.next/standalone/.next/server/chunks/ssr/node_modules_6fe2661c._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/node_modules_7fe65a84._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/ssr/node_modules_860f971a._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/ssr/node_modules_882f3743._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/ssr/node_modules_8e047938._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/ssr/node_modules_9268cdc4._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/node_modules_942541c9._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/ssr/node_modules_9d52c0d6._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/node_modules_@tanstack_query-core_build_modern_21ece5ea._.js +3 -0
  137. package/.next/standalone/.next/server/chunks/ssr/node_modules_ae6841d2._.js +17 -0
  138. package/.next/standalone/.next/server/chunks/ssr/node_modules_ba280bb0._.js +31 -0
  139. package/.next/standalone/.next/server/chunks/ssr/node_modules_bffdb8ec._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/ssr/node_modules_c00f1821._.js +17 -0
  141. package/.next/standalone/.next/server/chunks/ssr/node_modules_c142ba86._.js +3 -0
  142. package/.next/standalone/.next/server/chunks/ssr/node_modules_d1a47cde._.js +17 -0
  143. package/.next/standalone/.next/server/chunks/ssr/node_modules_d9b454fe._.js +3 -0
  144. package/.next/standalone/.next/server/chunks/ssr/node_modules_dbe36b1d._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/ssr/node_modules_ddbe26b7._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/ssr/node_modules_e76b8bf2._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/ssr/node_modules_e945b74d._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/ssr/node_modules_fbd8a2ee._.js +17 -0
  149. package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_31d456ba._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_e1edc676._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_33e24dce._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_159fba97._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_dbeeb277._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.js +9 -0
  155. package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/ssr/src_components_kanban-board_tsx_7b875e8e._.js +1 -1
  157. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  158. package/.next/standalone/.next/server/pages/404.html +1 -1
  159. package/.next/standalone/.next/server/pages/500.html +2 -2
  160. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  162. package/.next/standalone/.next/static/chunks/4f23f64d46848f57.js +1 -0
  163. package/.next/standalone/.next/static/chunks/53081dcdcad4f31e.js +1 -0
  164. package/.next/{static/chunks/6a3d582315f1c214.js → standalone/.next/static/chunks/701cfcbb41e0ab47.js} +1 -1
  165. package/.next/standalone/.next/static/chunks/ac4b6b4d5b7e486e.css +1 -0
  166. package/.next/standalone/.next/static/chunks/d0309ea872db5d9f.js +1 -0
  167. package/.next/standalone/.next/static/chunks/d4cf8893a018e965.js +1 -0
  168. package/.next/standalone/.next/static/chunks/e6c0233269a4bd69.js +13 -0
  169. package/.next/{static/chunks/7e65cfa9841f66a5.js → standalone/.next/static/chunks/e7d83ce855afe416.js} +2 -2
  170. package/.next/standalone/.next/static/chunks/ee7035560fc9e5e9.js +1 -0
  171. package/.next/{static/chunks/turbopack-f4d3806ab575051d.js → standalone/.next/static/chunks/turbopack-8b3b66a22a5e0fb4.js} +2 -2
  172. package/.next/standalone/.next/static/static/V6JvQiyb7wzYpHUOLB6BC/_buildManifest.js +11 -0
  173. package/.next/standalone/.next/static/static/V6JvQiyb7wzYpHUOLB6BC/_clientMiddlewareManifest.json +1 -0
  174. package/.next/standalone/.next/static/static/V6JvQiyb7wzYpHUOLB6BC/_ssgManifest.js +1 -0
  175. package/.next/standalone/.next/static/static/chunks/01c05b0fdc89fc0c.js +2 -0
  176. package/.next/standalone/.next/static/static/chunks/034e8cfdbd1cf3ac.js +24 -0
  177. package/.next/standalone/.next/static/static/chunks/0356b23e9d8fbd11.js +160 -0
  178. package/.next/standalone/.next/static/static/chunks/0697f660af9a95f1.js +1 -0
  179. package/.next/standalone/.next/static/static/chunks/09e4e9409aadc2fe.js +1 -0
  180. package/.next/standalone/.next/static/static/chunks/09ec2e3c3d2d294f.js +29 -0
  181. package/.next/standalone/.next/static/static/chunks/1bdb5b021c9a4e61.js +62 -0
  182. package/.next/standalone/.next/static/static/chunks/1cec4d71237d0c89.js +15 -0
  183. package/.next/standalone/.next/static/static/chunks/20337e5244416041.js +1 -0
  184. package/.next/standalone/.next/static/static/chunks/20c1169c30c95e0f.js +1 -0
  185. package/.next/standalone/.next/static/static/chunks/27f5fab49d8a5395.js +1 -0
  186. package/.next/standalone/.next/static/static/chunks/31965ae569bf807f.js +24 -0
  187. package/.next/standalone/.next/static/static/chunks/34e2788a0be7ee63.js +1 -0
  188. package/.next/standalone/.next/static/static/chunks/3e6042c77fa8e7ac.js +1 -0
  189. package/.next/standalone/.next/static/static/chunks/46d959abf8046f0e.js +15 -0
  190. package/.next/standalone/.next/static/static/chunks/483effa74d32093a.js +1 -0
  191. package/.next/standalone/.next/static/static/chunks/4f23f64d46848f57.js +1 -0
  192. package/.next/standalone/.next/static/static/chunks/53081dcdcad4f31e.js +1 -0
  193. package/.next/standalone/.next/static/static/chunks/539636bf51e84308.js +1 -0
  194. package/.next/standalone/.next/static/static/chunks/559e55a53f22f5d1.js +1 -0
  195. package/.next/standalone/.next/static/static/chunks/5623d8a1c99eba62.js +1 -0
  196. package/.next/standalone/.next/static/static/chunks/581c7f8a86cc86fb.js +1 -0
  197. package/.next/standalone/.next/static/static/chunks/5c05dda6ed4d92bf.js +1 -0
  198. package/.next/standalone/.next/static/static/chunks/5eac621951969859.js +60 -0
  199. package/.next/standalone/.next/static/static/chunks/6f4c5a75f38f686b.js +1 -0
  200. package/.next/standalone/.next/static/static/chunks/6fee5c7b5d483c8a.js +5 -0
  201. package/.next/standalone/.next/static/static/chunks/701cfcbb41e0ab47.js +1 -0
  202. package/.next/standalone/.next/static/static/chunks/70b3258c508216b5.js +4 -0
  203. package/.next/standalone/.next/static/static/chunks/762121739217e5da.js +1 -0
  204. package/.next/standalone/.next/static/static/chunks/808075c416a273c9.js +2 -0
  205. package/.next/standalone/.next/static/static/chunks/8321c26033c9fc5b.js +1 -0
  206. package/.next/standalone/.next/static/static/chunks/87f01c0a5d4010ab.js +1 -0
  207. package/.next/standalone/.next/static/static/chunks/89ebb4231102677a.js +77 -0
  208. package/.next/standalone/.next/static/static/chunks/909ac8a87c0dd9cb.js +215 -0
  209. package/.next/standalone/.next/static/static/chunks/9525dc246b363870.js +262 -0
  210. package/.next/standalone/.next/static/static/chunks/957a5dae245bbc84.js +1 -0
  211. package/.next/standalone/.next/static/static/chunks/9a52b8ded6a9ee38.js +215 -0
  212. package/.next/standalone/.next/static/static/chunks/9eb0474ddf7f6238.js +80 -0
  213. package/.next/standalone/.next/static/static/chunks/a6dad97d9634a72d.js +1 -0
  214. package/.next/standalone/.next/static/static/chunks/a6dad97d9634a72d.js.map +1 -0
  215. package/.next/standalone/.next/static/static/chunks/a85d55e8b6841436.js +1 -0
  216. package/.next/standalone/.next/static/static/chunks/ac4b6b4d5b7e486e.css +1 -0
  217. package/.next/standalone/.next/static/static/chunks/ad24b3b0881818aa.js +4 -0
  218. package/.next/standalone/.next/static/static/chunks/ae52f8e72d4127b1.js +59 -0
  219. package/.next/standalone/.next/static/static/chunks/af66c50a65af610b.js +93 -0
  220. package/.next/standalone/.next/static/static/chunks/b8b36494d4330f5f.js +152 -0
  221. package/.next/standalone/.next/static/static/chunks/b8ca88454bfa8e05.js +148 -0
  222. package/.next/standalone/.next/static/static/chunks/b9a047fc90291dbd.js +63 -0
  223. package/.next/standalone/.next/static/static/chunks/be28d13ded360528.js +117 -0
  224. package/.next/standalone/.next/static/static/chunks/c231010aae14914b.js +1 -0
  225. package/.next/standalone/.next/static/static/chunks/c36e148ece9c20ae.js +43 -0
  226. package/.next/standalone/.next/static/static/chunks/cb863a7e46548566.js +15 -0
  227. package/.next/standalone/.next/static/static/chunks/ce4052f386943efb.js +1 -0
  228. package/.next/standalone/.next/static/static/chunks/d0309ea872db5d9f.js +1 -0
  229. package/.next/standalone/.next/static/static/chunks/d4cf8893a018e965.js +1 -0
  230. package/.next/standalone/.next/static/static/chunks/d5b700b8aafeea3b.js +55 -0
  231. package/.next/standalone/.next/static/static/chunks/dc16aeb5aabadbd8.js +136 -0
  232. package/.next/standalone/.next/static/static/chunks/de9c5219846f92bb.js +53 -0
  233. package/.next/standalone/.next/static/static/chunks/df3c9c7fcf3e0a3d.js +15 -0
  234. package/.next/standalone/.next/static/static/chunks/e6c0233269a4bd69.js +13 -0
  235. package/.next/standalone/.next/static/static/chunks/e7d83ce855afe416.js +5 -0
  236. package/.next/standalone/.next/static/static/chunks/eb22f55ae829d296.js +36 -0
  237. package/.next/standalone/.next/static/static/chunks/ec0de430276c8209.js +1 -0
  238. package/.next/standalone/.next/static/static/chunks/ed2e02f2db03c1dc.js +1 -0
  239. package/.next/standalone/.next/static/static/chunks/ee7035560fc9e5e9.js +1 -0
  240. package/.next/standalone/.next/static/static/chunks/f1f8594d5ec7b93e.js +1 -0
  241. package/.next/standalone/.next/static/static/chunks/f42ff7863eb4c3ff.js +1 -0
  242. package/.next/standalone/.next/static/static/chunks/f678cdcec3cea0de.js +1 -0
  243. package/.next/standalone/.next/static/static/chunks/f7a6fed60fb079dd.js +1 -0
  244. package/.next/standalone/.next/static/static/chunks/f9eb3f4ff87b8d8d.js +56 -0
  245. package/.next/standalone/.next/static/static/chunks/ff1a16fafef87110.js +1 -0
  246. package/.next/standalone/.next/static/static/chunks/ff49535ba8193dec.js +1 -0
  247. package/.next/standalone/.next/static/static/chunks/turbopack-8b3b66a22a5e0fb4.js +4 -0
  248. package/.next/standalone/.next/static/static/media/favicon.0b3bf435.ico +0 -0
  249. package/.next/standalone/AGENTS.md +13 -7
  250. package/.next/standalone/CONTRIBUTING.md +42 -26
  251. package/.next/standalone/README.md +166 -25
  252. package/.next/standalone/bin/devflow.js +12 -5
  253. package/.next/standalone/bun.lock +78 -24
  254. package/.next/standalone/devflow/project-config.json +4 -0
  255. package/.next/standalone/devflow/schemas/api-first/schema.yaml +39 -0
  256. package/.next/standalone/devflow/schemas/api-first/templates/api-design.md +41 -0
  257. package/.next/standalone/devflow/schemas/api-first/templates/db-design.md +28 -0
  258. package/.next/standalone/devflow/schemas/api-first/templates/final-architecture.md +31 -0
  259. package/.next/standalone/devflow/schemas/api-first/templates/proposal.md +22 -0
  260. package/.next/standalone/devflow/schemas/api-first/templates/tasks.md +16 -0
  261. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.approvals.json +1 -1
  262. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.meta.json +1 -1
  263. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/design.md +11 -0
  264. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/proposal.md +3 -0
  265. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/tasks.md +34 -2
  266. package/.next/standalone/devflow/specs/precommit/.approvals.json +26 -0
  267. package/.next/standalone/devflow/specs/precommit/.meta.json +7 -0
  268. package/.next/standalone/devflow/specs/precommit/design.md +105 -0
  269. package/.next/standalone/devflow/specs/precommit/proposal.md +43 -0
  270. package/.next/standalone/devflow/specs/precommit/specs.md +89 -0
  271. package/.next/standalone/devflow/specs/precommit/tasks.md +283 -0
  272. package/.next/standalone/docs/custom-schemas.md +117 -0
  273. package/.next/standalone/docs/local-dev-guide.md +73 -0
  274. package/.next/standalone/drizzle.config.ts +7 -7
  275. package/.next/standalone/eslint.config.mjs +2 -2
  276. package/.next/standalone/instrumentation.ts +3 -5
  277. package/.next/standalone/next.config.ts +11 -2
  278. package/.next/standalone/node_modules/{sharp → libsql}/node_modules/detect-libc/package.json +4 -8
  279. package/.next/standalone/package-lock.json +5257 -2085
  280. package/.next/standalone/package.json +18 -9
  281. package/.next/standalone/postcss.config.mjs +1 -1
  282. package/.next/standalone/scripts/init-db.js +3 -5
  283. package/.next/standalone/scripts/init-db.test.js +6 -6
  284. package/.next/standalone/scripts/init-schema.js +22 -22
  285. package/.next/standalone/scripts/init-schema.test.js +45 -45
  286. package/.next/standalone/scripts/install-environments.js +27 -8
  287. package/.next/standalone/scripts/install-environments.test.js +19 -10
  288. package/.next/standalone/scripts/install-skills.js +104 -31
  289. package/.next/standalone/scripts/install-skills.test.js +6 -6
  290. package/.next/standalone/server.js +1 -1
  291. package/.next/standalone/src/app/api/agents/route.ts +2 -2
  292. package/.next/standalone/src/app/api/projects/[id]/route.ts +10 -19
  293. package/.next/standalone/src/app/api/projects/route.ts +4 -10
  294. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  295. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  296. package/.next/standalone/src/app/api/specs/[name]/promote/route.ts +17 -23
  297. package/.next/standalone/src/app/api/specs/[name]/route.ts +34 -36
  298. package/.next/standalone/src/app/api/specs/route.ts +10 -10
  299. package/.next/standalone/src/app/api/tasks/[id]/route.ts +11 -33
  300. package/.next/standalone/src/app/api/tasks/route.ts +3 -6
  301. package/.next/standalone/src/app/globals.css +3 -3
  302. package/.next/standalone/src/app/layout.tsx +9 -5
  303. package/.next/standalone/src/app/page.tsx +1 -1
  304. package/.next/standalone/src/app/specs/[name]/page.tsx +26 -68
  305. package/.next/standalone/src/components/kanban-board.tsx +78 -157
  306. package/.next/standalone/src/components/kanban-column.tsx +10 -12
  307. package/.next/standalone/src/components/markdown-preview.tsx +36 -19
  308. package/.next/standalone/src/components/providers.tsx +20 -0
  309. package/.next/standalone/src/components/specs/artifact-dag-status.tsx +12 -14
  310. package/.next/standalone/src/components/specs/artifact-editor.tsx +55 -26
  311. package/.next/standalone/src/components/specs/spec-detail.tsx +48 -40
  312. package/.next/standalone/src/components/specs/spec-kanban-column.tsx +49 -68
  313. package/.next/standalone/src/components/specs/spec-modal.tsx +119 -83
  314. package/.next/standalone/src/components/task-card.tsx +34 -38
  315. package/.next/standalone/src/components/task-dialog.tsx +16 -31
  316. package/.next/standalone/src/components/ui/badge.tsx +12 -18
  317. package/.next/standalone/src/components/ui/button.tsx +23 -28
  318. package/.next/standalone/src/components/ui/card.tsx +42 -62
  319. package/.next/standalone/src/components/ui/dialog.tsx +17 -35
  320. package/.next/standalone/src/db/index.ts +10 -10
  321. package/.next/standalone/src/db/schema.ts +37 -37
  322. package/.next/standalone/src/hooks/use-queries.ts +81 -0
  323. package/.next/standalone/src/hooks/use-websocket.ts +74 -0
  324. package/.next/standalone/src/lib/schema.test.ts +37 -37
  325. package/.next/standalone/src/lib/schema.ts +77 -31
  326. package/.next/standalone/src/lib/specs-dir.ts +8 -8
  327. package/.next/standalone/src/lib/specs.ts +98 -92
  328. package/.next/standalone/src/lib/utils.ts +2 -2
  329. package/.next/standalone/src/mcp/server.ts +556 -349
  330. package/.next/standalone/src/mcp/websocket.ts +26 -23
  331. package/.next/standalone/src/schemas/backend-api/templates/proposal.md +6 -4
  332. package/.next/standalone/src/schemas/backend-api/templates/tasks.md +6 -0
  333. package/.next/standalone/src/schemas/data-engineering/templates/proposal.md +6 -4
  334. package/.next/standalone/src/schemas/data-engineering/templates/tasks.md +6 -0
  335. package/.next/standalone/src/schemas/devops-platform/templates/proposal.md +6 -4
  336. package/.next/standalone/src/schemas/devops-platform/templates/tasks.md +6 -0
  337. package/.next/standalone/src/schemas/frontend-product/templates/proposal.md +6 -4
  338. package/.next/standalone/src/schemas/frontend-product/templates/tasks.md +6 -0
  339. package/.next/standalone/src/schemas/spec-driven/templates/proposal.md +6 -4
  340. package/.next/standalone/src/schemas/spec-driven/templates/tasks.md +26 -0
  341. package/.next/standalone/src/websocket/server.ts +20 -18
  342. package/.next/standalone/tsconfig.json +3 -12
  343. package/.next/standalone/tsconfig.tsbuildinfo +1 -1
  344. package/README.md +166 -25
  345. package/bin/devflow.js +12 -5
  346. package/drizzle.config.ts +7 -7
  347. package/next.config.ts +11 -2
  348. package/package.json +18 -9
  349. package/scripts/init-db.js +3 -5
  350. package/scripts/init-db.test.js +6 -6
  351. package/scripts/init-schema.js +22 -22
  352. package/scripts/init-schema.test.js +45 -45
  353. package/scripts/install-environments.js +27 -8
  354. package/scripts/install-environments.test.js +19 -10
  355. package/scripts/install-skills.js +104 -31
  356. package/scripts/install-skills.test.js +6 -6
  357. package/src/app/api/agents/route.ts +2 -2
  358. package/src/app/api/projects/[id]/route.ts +10 -19
  359. package/src/app/api/projects/route.ts +4 -10
  360. package/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  361. package/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  362. package/src/app/api/specs/[name]/promote/route.ts +17 -23
  363. package/src/app/api/specs/[name]/route.ts +34 -36
  364. package/src/app/api/specs/route.ts +10 -10
  365. package/src/app/api/tasks/[id]/route.ts +11 -33
  366. package/src/app/api/tasks/route.ts +3 -6
  367. package/src/app/globals.css +3 -3
  368. package/src/app/layout.tsx +9 -5
  369. package/src/app/page.tsx +1 -1
  370. package/src/app/specs/[name]/page.tsx +26 -68
  371. package/src/components/kanban-board.tsx +78 -157
  372. package/src/components/kanban-column.tsx +10 -12
  373. package/src/components/markdown-preview.tsx +36 -19
  374. package/src/components/providers.tsx +20 -0
  375. package/src/components/specs/artifact-dag-status.tsx +12 -14
  376. package/src/components/specs/artifact-editor.tsx +55 -26
  377. package/src/components/specs/spec-detail.tsx +48 -40
  378. package/src/components/specs/spec-kanban-column.tsx +49 -68
  379. package/src/components/specs/spec-modal.tsx +119 -83
  380. package/src/components/task-card.tsx +34 -38
  381. package/src/components/task-dialog.tsx +16 -31
  382. package/src/components/ui/badge.tsx +12 -18
  383. package/src/components/ui/button.tsx +23 -28
  384. package/src/components/ui/card.tsx +42 -62
  385. package/src/components/ui/dialog.tsx +17 -35
  386. package/src/db/index.ts +10 -10
  387. package/src/db/schema.ts +37 -37
  388. package/src/hooks/use-queries.ts +81 -0
  389. package/src/hooks/use-websocket.ts +74 -0
  390. package/src/lib/schema.test.ts +37 -37
  391. package/src/lib/schema.ts +77 -31
  392. package/src/lib/specs-dir.ts +8 -8
  393. package/src/lib/specs.ts +98 -92
  394. package/src/lib/utils.ts +2 -2
  395. package/src/mcp/server.ts +556 -349
  396. package/src/mcp/websocket.ts +26 -23
  397. package/src/schemas/backend-api/templates/proposal.md +6 -4
  398. package/src/schemas/backend-api/templates/tasks.md +6 -0
  399. package/src/schemas/data-engineering/templates/proposal.md +6 -4
  400. package/src/schemas/data-engineering/templates/tasks.md +6 -0
  401. package/src/schemas/devops-platform/templates/proposal.md +6 -4
  402. package/src/schemas/devops-platform/templates/tasks.md +6 -0
  403. package/src/schemas/frontend-product/templates/proposal.md +6 -4
  404. package/src/schemas/frontend-product/templates/tasks.md +6 -0
  405. package/src/schemas/spec-driven/templates/proposal.md +6 -4
  406. package/src/schemas/spec-driven/templates/tasks.md +26 -0
  407. package/src/types/bun-sqlite.d.ts +1 -1
  408. package/src/websocket/server.ts +20 -18
  409. package/tsconfig.json +3 -12
  410. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1be4e4b6._.js +0 -3
  411. package/.next/standalone/.next/server/chunks/[root-of-the-server]__492a4a24._.js +0 -3
  412. package/.next/standalone/.next/server/chunks/[root-of-the-server]__67c59ae1._.js +0 -3
  413. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6cc7aecd._.js +0 -3
  414. package/.next/standalone/.next/server/chunks/[root-of-the-server]__83a77b07._.js +0 -3
  415. package/.next/standalone/.next/server/chunks/[root-of-the-server]__88d91cb5._.js +0 -3
  416. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9e095e8._.js +0 -3
  417. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b367d327._.js +0 -3
  418. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eb413bbc._.js +0 -3
  419. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b8c072a._.js +0 -3
  420. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2191f._.js +0 -3
  421. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15316462._.js +0 -3
  422. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19c9c409._.js +0 -3
  423. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19e5e22f._.js +0 -3
  424. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__25b5ccb3._.js +0 -3
  425. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2f78c3da._.js +0 -3
  426. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3160b3f4._.js +0 -9
  427. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__319559be._.js +0 -3
  428. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34f7cbcb._.js +0 -31
  429. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3abab94b._.js +0 -3
  430. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3b3d8930._.js +0 -3
  431. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4250799b._.js +0 -3
  432. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4c29cbc3._.js +0 -26
  433. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4e0bb6eb._.js +0 -9
  434. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5678d2e3._.js +0 -3
  435. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__673445e0._.js +0 -31
  436. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__934de06b._.js +0 -3
  437. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9b6c6f09._.js +0 -3
  438. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a1b83a98._.js +0 -3
  439. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b00a15c5._.js +0 -3
  440. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b8567be3._.js +0 -26
  441. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce64536e._.js +0 -45
  442. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e96d33d2._.js +0 -45
  443. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__fd7ec054._.js +0 -3
  444. package/.next/standalone/.next/server/chunks/ssr/node_modules_16a3f9e7._.js +0 -17
  445. package/.next/standalone/.next/server/chunks/ssr/node_modules_45bce0e1._.js +0 -3
  446. package/.next/standalone/.next/server/chunks/ssr/node_modules_5e5a372d._.js +0 -17
  447. package/.next/standalone/.next/server/chunks/ssr/node_modules_6ece6f1e._.js +0 -3
  448. package/.next/standalone/.next/server/chunks/ssr/node_modules_d173e749._.js +0 -3
  449. package/.next/standalone/.next/server/chunks/ssr/node_modules_d3-shape_src_arc_fb1ac087.js +0 -3
  450. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1f73a830._.js +0 -3
  451. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_663ac803._.js +0 -3
  452. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_4f485529._.js +0 -17
  453. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_8436a62a._.js +0 -3
  454. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_f78d2dc4._.js +0 -3
  455. package/.next/standalone/.next/server/chunks/ssr/src_app_layout_tsx_cc8184fa._.js +0 -3
  456. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.approvals.json +0 -26
  457. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.meta.json +0 -8
  458. package/.next/standalone/devflow/specs/add-default-schema-template-selection/design.md +0 -126
  459. package/.next/standalone/devflow/specs/add-default-schema-template-selection/proposal.md +0 -65
  460. package/.next/standalone/devflow/specs/add-default-schema-template-selection/specs.md +0 -107
  461. package/.next/standalone/devflow/specs/add-default-schema-template-selection/tasks.md +0 -235
  462. package/.next/standalone/devflow/specs/test-no-project/.approvals.json +0 -17
  463. package/.next/standalone/devflow/specs/test-no-project/.meta.json +0 -6
  464. package/.next/standalone/devflow/specs/ui-cleanup/.approvals.json +0 -29
  465. package/.next/standalone/devflow/specs/ui-cleanup/.meta.json +0 -6
  466. package/.next/standalone/devflow/specs/ui-cleanup/design.md +0 -49
  467. package/.next/standalone/devflow/specs/ui-cleanup/proposal.md +0 -34
  468. package/.next/standalone/devflow/specs/ui-cleanup/specs.md +0 -55
  469. package/.next/standalone/devflow/specs/ui-cleanup/tasks.md +0 -28
  470. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  471. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  472. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  473. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  474. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  475. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
  476. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
  477. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  478. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  479. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  480. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  481. package/.next/standalone/node_modules/buffer-from/index.js +0 -72
  482. package/.next/standalone/node_modules/buffer-from/package.json +0 -19
  483. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  484. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  485. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  486. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  487. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  488. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  489. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  490. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  491. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  492. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  493. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  494. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  495. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  496. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/detect-libc.js +0 -313
  497. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/elf.js +0 -39
  498. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/filesystem.js +0 -51
  499. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/process.js +0 -24
  500. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  501. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  502. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  503. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  504. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  505. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  506. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  507. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  508. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  509. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  510. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  511. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  512. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  513. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  514. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  515. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  516. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  517. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  518. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  519. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  520. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  521. package/.next/standalone/node_modules/sharp/package.json +0 -202
  522. package/.next/standalone/node_modules/source-map/lib/array-set.js +0 -121
  523. package/.next/standalone/node_modules/source-map/lib/base64-vlq.js +0 -140
  524. package/.next/standalone/node_modules/source-map/lib/base64.js +0 -67
  525. package/.next/standalone/node_modules/source-map/lib/binary-search.js +0 -111
  526. package/.next/standalone/node_modules/source-map/lib/mapping-list.js +0 -79
  527. package/.next/standalone/node_modules/source-map/lib/quick-sort.js +0 -114
  528. package/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  529. package/.next/standalone/node_modules/source-map/lib/source-map-generator.js +0 -425
  530. package/.next/standalone/node_modules/source-map/lib/source-node.js +0 -413
  531. package/.next/standalone/node_modules/source-map/lib/util.js +0 -488
  532. package/.next/standalone/node_modules/source-map/package.json +0 -73
  533. package/.next/standalone/node_modules/source-map/source-map.js +0 -8
  534. package/.next/standalone/node_modules/source-map-support/LICENSE.md +0 -21
  535. package/.next/standalone/node_modules/source-map-support/README.md +0 -284
  536. package/.next/standalone/node_modules/source-map-support/browser-source-map-support.js +0 -114
  537. package/.next/standalone/node_modules/source-map-support/package.json +0 -31
  538. package/.next/standalone/node_modules/source-map-support/register-hook-require.js +0 -1
  539. package/.next/standalone/node_modules/source-map-support/register.js +0 -1
  540. package/.next/standalone/node_modules/source-map-support/source-map-support.js +0 -625
  541. package/.next/standalone/node_modules/typescript/lib/_tsc.js +0 -133818
  542. package/.next/standalone/node_modules/typescript/lib/_tsserver.js +0 -659
  543. package/.next/standalone/node_modules/typescript/lib/_typingsInstaller.js +0 -222
  544. package/.next/standalone/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  545. package/.next/standalone/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  546. package/.next/standalone/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  547. package/.next/standalone/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  548. package/.next/standalone/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  549. package/.next/standalone/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  550. package/.next/standalone/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  551. package/.next/standalone/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  552. package/.next/standalone/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  553. package/.next/standalone/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  554. package/.next/standalone/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  555. package/.next/standalone/node_modules/typescript/lib/tsc.js +0 -8
  556. package/.next/standalone/node_modules/typescript/lib/tsserver.js +0 -8
  557. package/.next/standalone/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  558. package/.next/standalone/node_modules/typescript/lib/typesMap.json +0 -497
  559. package/.next/standalone/node_modules/typescript/lib/typescript.js +0 -200276
  560. package/.next/standalone/node_modules/typescript/lib/typingsInstaller.js +0 -8
  561. package/.next/standalone/node_modules/typescript/lib/watchGuard.js +0 -53
  562. package/.next/standalone/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
  563. package/.next/standalone/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
  564. package/.next/standalone/node_modules/typescript/package.json +0 -120
  565. package/.next/standalone/src/components/ui/collapsible.tsx +0 -12
  566. package/.next/standalone/src/components/ui/sheet.tsx +0 -130
  567. package/.next/standalone/src/components/ui/tabs.tsx +0 -58
  568. package/.next/static/chunks/0177331b8adf7346.js +0 -7
  569. package/.next/static/chunks/06af74e2f3e207c5.js +0 -7
  570. package/.next/static/chunks/1748d5cd2443723b.css +0 -1
  571. package/.next/static/chunks/7ae917cb100be2b9.js +0 -7
  572. package/.next/static/chunks/7c4b901b394c3a8c.js +0 -7
  573. package/src/components/ui/collapsible.tsx +0 -12
  574. package/src/components/ui/sheet.tsx +0 -130
  575. package/src/components/ui/tabs.tsx +0 -58
  576. /package/.next/{static/5YFrdIQd1UU2IxLxekrU9 → standalone/.next/static/V6JvQiyb7wzYpHUOLB6BC}/_buildManifest.js +0 -0
  577. /package/.next/{static/5YFrdIQd1UU2IxLxekrU9 → standalone/.next/static/V6JvQiyb7wzYpHUOLB6BC}/_clientMiddlewareManifest.json +0 -0
  578. /package/.next/{static/5YFrdIQd1UU2IxLxekrU9 → standalone/.next/static/V6JvQiyb7wzYpHUOLB6BC}/_ssgManifest.js +0 -0
  579. /package/.next/{static → standalone/.next/static}/chunks/01c05b0fdc89fc0c.js +0 -0
  580. /package/.next/{static → standalone/.next/static}/chunks/034e8cfdbd1cf3ac.js +0 -0
  581. /package/.next/{static → standalone/.next/static}/chunks/0356b23e9d8fbd11.js +0 -0
  582. /package/.next/{static → standalone/.next/static}/chunks/0697f660af9a95f1.js +0 -0
  583. /package/.next/{static → standalone/.next/static}/chunks/09e4e9409aadc2fe.js +0 -0
  584. /package/.next/{static → standalone/.next/static}/chunks/09ec2e3c3d2d294f.js +0 -0
  585. /package/.next/{static → standalone/.next/static}/chunks/1bdb5b021c9a4e61.js +0 -0
  586. /package/.next/{static → standalone/.next/static}/chunks/1cec4d71237d0c89.js +0 -0
  587. /package/.next/{static → standalone/.next/static}/chunks/20337e5244416041.js +0 -0
  588. /package/.next/{static → standalone/.next/static}/chunks/20c1169c30c95e0f.js +0 -0
  589. /package/.next/{static → standalone/.next/static}/chunks/27f5fab49d8a5395.js +0 -0
  590. /package/.next/{static → standalone/.next/static}/chunks/31965ae569bf807f.js +0 -0
  591. /package/.next/{static → standalone/.next/static}/chunks/34e2788a0be7ee63.js +0 -0
  592. /package/.next/{static → standalone/.next/static}/chunks/3e6042c77fa8e7ac.js +0 -0
  593. /package/.next/{static → standalone/.next/static}/chunks/46d959abf8046f0e.js +0 -0
  594. /package/.next/{static → standalone/.next/static}/chunks/483effa74d32093a.js +0 -0
  595. /package/.next/{static → standalone/.next/static}/chunks/539636bf51e84308.js +0 -0
  596. /package/.next/{static → standalone/.next/static}/chunks/559e55a53f22f5d1.js +0 -0
  597. /package/.next/{static → standalone/.next/static}/chunks/5623d8a1c99eba62.js +0 -0
  598. /package/.next/{static → standalone/.next/static}/chunks/581c7f8a86cc86fb.js +0 -0
  599. /package/.next/{static → standalone/.next/static}/chunks/5c05dda6ed4d92bf.js +0 -0
  600. /package/.next/{static → standalone/.next/static}/chunks/5eac621951969859.js +0 -0
  601. /package/.next/{static → standalone/.next/static}/chunks/6f4c5a75f38f686b.js +0 -0
  602. /package/.next/{static → standalone/.next/static}/chunks/6fee5c7b5d483c8a.js +0 -0
  603. /package/.next/{static → standalone/.next/static}/chunks/70b3258c508216b5.js +0 -0
  604. /package/.next/{static → standalone/.next/static}/chunks/762121739217e5da.js +0 -0
  605. /package/.next/{static → standalone/.next/static}/chunks/808075c416a273c9.js +0 -0
  606. /package/.next/{static → standalone/.next/static}/chunks/8321c26033c9fc5b.js +0 -0
  607. /package/.next/{static → standalone/.next/static}/chunks/87f01c0a5d4010ab.js +0 -0
  608. /package/.next/{static → standalone/.next/static}/chunks/89ebb4231102677a.js +0 -0
  609. /package/.next/{static → standalone/.next/static}/chunks/909ac8a87c0dd9cb.js +0 -0
  610. /package/.next/{static → standalone/.next/static}/chunks/9525dc246b363870.js +0 -0
  611. /package/.next/{static → standalone/.next/static}/chunks/957a5dae245bbc84.js +0 -0
  612. /package/.next/{static → standalone/.next/static}/chunks/9a52b8ded6a9ee38.js +0 -0
  613. /package/.next/{static → standalone/.next/static}/chunks/9eb0474ddf7f6238.js +0 -0
  614. /package/.next/{static → standalone/.next/static}/chunks/a6dad97d9634a72d.js +0 -0
  615. /package/.next/{static → standalone/.next/static}/chunks/a6dad97d9634a72d.js.map +0 -0
  616. /package/.next/{static → standalone/.next/static}/chunks/a85d55e8b6841436.js +0 -0
  617. /package/.next/{static → standalone/.next/static}/chunks/ad24b3b0881818aa.js +0 -0
  618. /package/.next/{static → standalone/.next/static}/chunks/ae52f8e72d4127b1.js +0 -0
  619. /package/.next/{static → standalone/.next/static}/chunks/af66c50a65af610b.js +0 -0
  620. /package/.next/{static → standalone/.next/static}/chunks/b8b36494d4330f5f.js +0 -0
  621. /package/.next/{static → standalone/.next/static}/chunks/b8ca88454bfa8e05.js +0 -0
  622. /package/.next/{static → standalone/.next/static}/chunks/b9a047fc90291dbd.js +0 -0
  623. /package/.next/{static → standalone/.next/static}/chunks/be28d13ded360528.js +0 -0
  624. /package/.next/{static → standalone/.next/static}/chunks/c231010aae14914b.js +0 -0
  625. /package/.next/{static → standalone/.next/static}/chunks/c36e148ece9c20ae.js +0 -0
  626. /package/.next/{static → standalone/.next/static}/chunks/cb863a7e46548566.js +0 -0
  627. /package/.next/{static → standalone/.next/static}/chunks/ce4052f386943efb.js +0 -0
  628. /package/.next/{static → standalone/.next/static}/chunks/d5b700b8aafeea3b.js +0 -0
  629. /package/.next/{static → standalone/.next/static}/chunks/dc16aeb5aabadbd8.js +0 -0
  630. /package/.next/{static → standalone/.next/static}/chunks/de9c5219846f92bb.js +0 -0
  631. /package/.next/{static → standalone/.next/static}/chunks/df3c9c7fcf3e0a3d.js +0 -0
  632. /package/.next/{static → standalone/.next/static}/chunks/eb22f55ae829d296.js +0 -0
  633. /package/.next/{static → standalone/.next/static}/chunks/ec0de430276c8209.js +0 -0
  634. /package/.next/{static → standalone/.next/static}/chunks/ed2e02f2db03c1dc.js +0 -0
  635. /package/.next/{static → standalone/.next/static}/chunks/f1f8594d5ec7b93e.js +0 -0
  636. /package/.next/{static → standalone/.next/static}/chunks/f42ff7863eb4c3ff.js +0 -0
  637. /package/.next/{static → standalone/.next/static}/chunks/f678cdcec3cea0de.js +0 -0
  638. /package/.next/{static → standalone/.next/static}/chunks/f7a6fed60fb079dd.js +0 -0
  639. /package/.next/{static → standalone/.next/static}/chunks/f9eb3f4ff87b8d8d.js +0 -0
  640. /package/.next/{static → standalone/.next/static}/chunks/ff1a16fafef87110.js +0 -0
  641. /package/.next/{static → standalone/.next/static}/chunks/ff49535ba8193dec.js +0 -0
  642. /package/.next/{static → standalone/.next/static}/media/favicon.0b3bf435.ico +0 -0
  643. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/detect-libc.js +0 -0
  644. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/filesystem.js +0 -0
  645. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/process.js +0 -0
@@ -1,18 +1,18 @@
1
- const test = require("node:test");
2
- const assert = require("node:assert/strict");
3
- const fs = require("fs");
4
- const os = require("os");
5
- const path = require("path");
1
+ const test = require('node:test');
2
+ const assert = require('node:assert/strict');
3
+ const fs = require('fs');
4
+ const os = require('os');
5
+ const path = require('path');
6
6
 
7
7
  const {
8
8
  discoverSchemaTemplates,
9
9
  resolveInitSchemaSelection,
10
10
  readProjectConfig,
11
11
  writeProjectConfig,
12
- } = require("./init-schema");
12
+ } = require('./init-schema');
13
13
 
14
14
  function withTempDir(fn) {
15
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), "devflow-init-schema-"));
15
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'devflow-init-schema-'));
16
16
  try {
17
17
  return fn(dir);
18
18
  } finally {
@@ -22,82 +22,82 @@ function withTempDir(fn) {
22
22
 
23
23
  function writeSchema(baseDir, id) {
24
24
  const schemaDir = path.join(baseDir, id);
25
- fs.mkdirSync(path.join(schemaDir, "templates"), { recursive: true });
25
+ fs.mkdirSync(path.join(schemaDir, 'templates'), { recursive: true });
26
26
  fs.writeFileSync(
27
- path.join(schemaDir, "schema.yaml"),
27
+ path.join(schemaDir, 'schema.yaml'),
28
28
  `name: ${id}\nversion: 1\nartifacts: []\n`,
29
- "utf-8"
29
+ 'utf-8',
30
30
  );
31
31
  }
32
32
 
33
- test("resolveInitSchemaSelection respects explicit schema", async () => {
33
+ test('resolveInitSchemaSelection respects explicit schema', async () => {
34
34
  const result = await resolveInitSchemaSelection({
35
- requestedSchema: "backend-api",
36
- existingDefaultSchema: "spec-driven",
37
- availableSchemaIds: ["spec-driven", "backend-api"],
35
+ requestedSchema: 'backend-api',
36
+ existingDefaultSchema: 'spec-driven',
37
+ availableSchemaIds: ['spec-driven', 'backend-api'],
38
38
  interactive: false,
39
39
  });
40
- assert.equal(result.schemaId, "backend-api");
41
- assert.equal(result.reason, "explicit");
40
+ assert.equal(result.schemaId, 'backend-api');
41
+ assert.equal(result.reason, 'explicit');
42
42
  });
43
43
 
44
- test("resolveInitSchemaSelection keeps existing default in interactive mode", async () => {
44
+ test('resolveInitSchemaSelection keeps existing default in interactive mode', async () => {
45
45
  const result = await resolveInitSchemaSelection({
46
- existingDefaultSchema: "frontend-product",
47
- availableSchemaIds: ["frontend-product", "spec-driven"],
46
+ existingDefaultSchema: 'frontend-product',
47
+ availableSchemaIds: ['frontend-product', 'spec-driven'],
48
48
  interactive: true,
49
49
  confirmKeepExisting: async () => true,
50
- promptSelectSchema: async () => "spec-driven",
50
+ promptSelectSchema: async () => 'spec-driven',
51
51
  });
52
- assert.equal(result.schemaId, "frontend-product");
53
- assert.equal(result.reason, "existing-default-kept");
52
+ assert.equal(result.schemaId, 'frontend-product');
53
+ assert.equal(result.reason, 'existing-default-kept');
54
54
  });
55
55
 
56
- test("resolveInitSchemaSelection uses fallback in non-interactive mode", async () => {
56
+ test('resolveInitSchemaSelection uses fallback in non-interactive mode', async () => {
57
57
  const result = await resolveInitSchemaSelection({
58
- availableSchemaIds: ["spec-driven", "backend-api"],
58
+ availableSchemaIds: ['spec-driven', 'backend-api'],
59
59
  interactive: false,
60
60
  });
61
- assert.equal(result.schemaId, "spec-driven");
62
- assert.equal(result.reason, "non-interactive-fallback");
61
+ assert.equal(result.schemaId, 'spec-driven');
62
+ assert.equal(result.reason, 'non-interactive-fallback');
63
63
  });
64
64
 
65
- test("discoverSchemaTemplates returns bundled and project schemas", () =>
65
+ test('discoverSchemaTemplates returns bundled and project schemas', () =>
66
66
  withTempDir((root) => {
67
- const projectRoot = path.join(root, "project");
68
- const packageRoot = path.join(root, "package");
69
- const bundledDir = path.join(packageRoot, "src", "schemas");
70
- fs.mkdirSync(path.join(projectRoot, "schemas"), { recursive: true });
67
+ const projectRoot = path.join(root, 'project');
68
+ const packageRoot = path.join(root, 'package');
69
+ const bundledDir = path.join(packageRoot, 'src', 'schemas');
70
+ fs.mkdirSync(path.join(projectRoot, 'schemas'), { recursive: true });
71
71
  fs.mkdirSync(bundledDir, { recursive: true });
72
72
 
73
- writeSchema(bundledDir, "spec-driven");
74
- writeSchema(path.join(projectRoot, "schemas"), "custom-team");
73
+ writeSchema(bundledDir, 'spec-driven');
74
+ writeSchema(path.join(projectRoot, 'schemas'), 'custom-team');
75
75
 
76
76
  const schemas = discoverSchemaTemplates({ projectRoot, packageRoot, bundledDir });
77
77
  const ids = schemas.map((s) => s.id);
78
- assert.deepEqual(ids, ["custom-team", "spec-driven"]);
78
+ assert.deepEqual(ids, ['custom-team', 'spec-driven']);
79
79
  }));
80
80
 
81
- test("discoverSchemaTemplates fails on duplicate IDs", () =>
81
+ test('discoverSchemaTemplates fails on duplicate IDs', () =>
82
82
  withTempDir((root) => {
83
- const projectRoot = path.join(root, "project");
84
- const packageRoot = path.join(root, "package");
85
- const bundledDir = path.join(packageRoot, "src", "schemas");
86
- fs.mkdirSync(path.join(projectRoot, "schemas"), { recursive: true });
83
+ const projectRoot = path.join(root, 'project');
84
+ const packageRoot = path.join(root, 'package');
85
+ const bundledDir = path.join(packageRoot, 'src', 'schemas');
86
+ fs.mkdirSync(path.join(projectRoot, 'schemas'), { recursive: true });
87
87
  fs.mkdirSync(bundledDir, { recursive: true });
88
88
 
89
- writeSchema(bundledDir, "spec-driven");
90
- writeSchema(path.join(projectRoot, "schemas"), "spec-driven");
89
+ writeSchema(bundledDir, 'spec-driven');
90
+ writeSchema(path.join(projectRoot, 'schemas'), 'spec-driven');
91
91
 
92
92
  assert.throws(
93
93
  () => discoverSchemaTemplates({ projectRoot, packageRoot, bundledDir }),
94
- /Schema ID conflict/
94
+ /Schema ID conflict/,
95
95
  );
96
96
  }));
97
97
 
98
- test("project config read/write round-trip", () =>
98
+ test('project config read/write round-trip', () =>
99
99
  withTempDir((projectRoot) => {
100
- writeProjectConfig(projectRoot, { defaultSchemaTemplateId: "devops-platform" });
100
+ writeProjectConfig(projectRoot, { defaultSchemaTemplateId: 'devops-platform' });
101
101
  const cfg = readProjectConfig(projectRoot);
102
- assert.equal(cfg.defaultSchemaTemplateId, "devops-platform");
102
+ assert.equal(cfg.defaultSchemaTemplateId, 'devops-platform');
103
103
  }));
@@ -17,7 +17,14 @@ function parseTools(value) {
17
17
  const raw = (value ?? 'all').trim().toLowerCase();
18
18
  if (raw === 'none') return [];
19
19
  if (raw === 'all') return [...SUPPORTED_TOOLS];
20
- return [...new Set(raw.split(',').map(p => normalizeToolId(p.trim())).filter(Boolean))];
20
+ return [
21
+ ...new Set(
22
+ raw
23
+ .split(',')
24
+ .map((p) => normalizeToolId(p.trim()))
25
+ .filter(Boolean),
26
+ ),
27
+ ];
21
28
  }
22
29
 
23
30
  function defaultCommandExists(command) {
@@ -36,7 +43,7 @@ function buildDetectionContext(projectRoot, overrides = {}) {
36
43
  }
37
44
 
38
45
  function createDetectedEnvironment(id, signals) {
39
- const detected = signals.some(signal => signal.present);
46
+ const detected = signals.some((signal) => signal.present);
40
47
  return { id, detected, signals };
41
48
  }
42
49
 
@@ -46,7 +53,11 @@ function detectCodex(context) {
46
53
  : path.join(context.homedir, '.codex');
47
54
  return createDetectedEnvironment('codex', [
48
55
  { kind: 'binary', name: 'codex', present: context.commandExists('codex') },
49
- { kind: 'directory', name: path.join(context.projectRoot, '.codex'), present: context.pathExists(path.join(context.projectRoot, '.codex')) },
56
+ {
57
+ kind: 'directory',
58
+ name: path.join(context.projectRoot, '.codex'),
59
+ present: context.pathExists(path.join(context.projectRoot, '.codex')),
60
+ },
50
61
  { kind: 'directory', name: codexHome, present: context.pathExists(codexHome) },
51
62
  ]);
52
63
  }
@@ -54,8 +65,16 @@ function detectCodex(context) {
54
65
  function detectClaudeCode(context) {
55
66
  return createDetectedEnvironment('claudecode', [
56
67
  { kind: 'binary', name: 'claude', present: context.commandExists('claude') },
57
- { kind: 'directory', name: path.join(context.projectRoot, '.claude'), present: context.pathExists(path.join(context.projectRoot, '.claude')) },
58
- { kind: 'directory', name: path.join(context.homedir, '.claude'), present: context.pathExists(path.join(context.homedir, '.claude')) },
68
+ {
69
+ kind: 'directory',
70
+ name: path.join(context.projectRoot, '.claude'),
71
+ present: context.pathExists(path.join(context.projectRoot, '.claude')),
72
+ },
73
+ {
74
+ kind: 'directory',
75
+ name: path.join(context.homedir, '.claude'),
76
+ present: context.pathExists(path.join(context.homedir, '.claude')),
77
+ },
59
78
  ]);
60
79
  }
61
80
 
@@ -69,13 +88,13 @@ function getEnvironmentDetectors() {
69
88
  function detectEnvironments(projectRoot, overrides = {}) {
70
89
  const context = buildDetectionContext(projectRoot, overrides);
71
90
  const detectors = getEnvironmentDetectors();
72
- return SUPPORTED_TOOLS.map(tool => detectors[tool].detect(context));
91
+ return SUPPORTED_TOOLS.map((tool) => detectors[tool].detect(context));
73
92
  }
74
93
 
75
94
  function detectInstalledTools(projectRoot, overrides = {}) {
76
95
  return detectEnvironments(projectRoot, overrides)
77
- .filter(result => result.detected)
78
- .map(result => result.id);
96
+ .filter((result) => result.detected)
97
+ .map((result) => result.id);
79
98
  }
80
99
 
81
100
  function getToolAdapters() {
@@ -13,7 +13,7 @@ const HOME_DIR = '/home/tester';
13
13
 
14
14
  function detectionHarness({ commands = [], paths = [] } = {}) {
15
15
  const commandSet = new Set(commands);
16
- const pathSet = new Set(paths.map(p => path.resolve(p)));
16
+ const pathSet = new Set(paths.map((p) => path.resolve(p)));
17
17
  return {
18
18
  commandExists: (command) => commandSet.has(command),
19
19
  pathExists: (targetPath) => pathSet.has(path.resolve(targetPath)),
@@ -23,23 +23,32 @@ function detectionHarness({ commands = [], paths = [] } = {}) {
23
23
  }
24
24
 
25
25
  test('detectInstalledTools returns claudecode when only Claude signals are present', () => {
26
- const detected = detectInstalledTools(PROJECT_ROOT, detectionHarness({
27
- commands: ['claude'],
28
- }));
26
+ const detected = detectInstalledTools(
27
+ PROJECT_ROOT,
28
+ detectionHarness({
29
+ commands: ['claude'],
30
+ }),
31
+ );
29
32
  assert.deepEqual(detected, ['claudecode']);
30
33
  });
31
34
 
32
35
  test('detectInstalledTools returns codex when only Codex signals are present', () => {
33
- const detected = detectInstalledTools(PROJECT_ROOT, detectionHarness({
34
- commands: ['codex'],
35
- }));
36
+ const detected = detectInstalledTools(
37
+ PROJECT_ROOT,
38
+ detectionHarness({
39
+ commands: ['codex'],
40
+ }),
41
+ );
36
42
  assert.deepEqual(detected, ['codex']);
37
43
  });
38
44
 
39
45
  test('detectInstalledTools returns both tools when both signals are present', () => {
40
- const detected = detectInstalledTools(PROJECT_ROOT, detectionHarness({
41
- commands: ['codex', 'claude'],
42
- }));
46
+ const detected = detectInstalledTools(
47
+ PROJECT_ROOT,
48
+ detectionHarness({
49
+ commands: ['codex', 'claude'],
50
+ }),
51
+ );
43
52
  assert.deepEqual(detected, ['codex', 'claudecode']);
44
53
  });
45
54
 
@@ -2,15 +2,11 @@
2
2
 
3
3
  const path = require('path');
4
4
  const fs = require('fs');
5
- const {
6
- parseTools,
7
- getToolAdapter,
8
- detectEnvironments,
9
- } = require('./install-environments');
5
+ const { parseTools, getToolAdapter, detectEnvironments } = require('./install-environments');
10
6
 
11
7
  const MANAGED_BEGIN = '<!-- DEVFLOW:BEGIN ';
12
8
  const MANAGED_END = '<!-- DEVFLOW:END ';
13
- const COMMAND_SET = ['new', 'continue', 'status', 'promote', 'develop', 'archive'];
9
+ const COMMAND_SET = ['new', 'continue', 'status', 'promote', 'develop', 'archive', 'schema'];
14
10
 
15
11
  function resolveToolDirs(projectRoot, tool) {
16
12
  return getToolAdapter(tool).resolveTargets(projectRoot);
@@ -138,6 +134,44 @@ function renderSkill(tool, command, markerId) {
138
134
  '4. Call `archive_spec`.',
139
135
  '5. Report success and the archive path.',
140
136
  ],
137
+ schema: [
138
+ `# Skill: /df:schema`,
139
+ '',
140
+ `Use this skill to interactively create a custom DevFlow schema in ${agentName}.`,
141
+ '',
142
+ '## Steps (in order)',
143
+ '',
144
+ '1. Call `list_schemas` and show the user what schemas are already available.',
145
+ ' If one fits their needs, suggest using it directly.',
146
+ '2. Ask what kind of project/workflow they need (e.g. mobile app, ML pipeline,',
147
+ ' infrastructure, documentation, data engineering, security review, etc.).',
148
+ '3. Based on the project type, ask which artifacts/documents their workflow',
149
+ ' should include. Suggest sensible defaults. Common options:',
150
+ ' - Proposal / RFC',
151
+ ' - Requirements / Specifications',
152
+ ' - Architecture / Design doc',
153
+ ' - Security review',
154
+ ' - Testing plan / Test strategy',
155
+ ' - Migration plan',
156
+ ' - Deployment / Runbook',
157
+ ' - Implementation tasks',
158
+ '4. Design the artifact dependency DAG — which artifacts must be approved',
159
+ ' before others can be written. Present the DAG to the user for confirmation.',
160
+ '5. Ask about quality rules:',
161
+ ' - RFC 2119 keywords enforced (MUST/SHOULD/MAY)?',
162
+ ' - Minimum scenarios per requirement (suggest 1-2)?',
163
+ '6. Generate well-structured markdown templates for each artifact.',
164
+ '7. Call `create_schema` with name, artifacts, qualityRules, apply, and templates.',
165
+ '8. Report the schema was created and how to use it:',
166
+ ' - `create_spec` with `schema: "<name>"`',
167
+ ' - Or set as default in `devflow/project-config.json`',
168
+ '',
169
+ '## Guidelines',
170
+ '- Keep artifact IDs short and kebab-case (e.g. "security-review", "test-plan")',
171
+ '- Template filenames should match: `<artifact-id>.md`',
172
+ '- Always include a final "tasks" artifact that depends on the key artifacts',
173
+ '- The `apply.requires` should include at minimum the tasks artifact',
174
+ ],
141
175
  };
142
176
 
143
177
  const lines = bodies[command];
@@ -147,9 +181,10 @@ function renderSkill(tool, command, markerId) {
147
181
 
148
182
  function renderCommand(tool, command, markerId) {
149
183
  const commandName = `/df:${command}`;
150
- const codexHeader = tool === 'codex'
151
- ? ['---', `description: DevFlow ${commandName} workflow action`, '---', '']
152
- : [];
184
+ const codexHeader =
185
+ tool === 'codex'
186
+ ? ['---', `description: DevFlow ${commandName} workflow action`, '---', '']
187
+ : [];
153
188
 
154
189
  const bodies = {
155
190
  new: [
@@ -262,6 +297,24 @@ function renderCommand(tool, command, markerId) {
262
297
  '4. Call `archive_spec`.',
263
298
  '5. Report success and the archive path.',
264
299
  ],
300
+ schema: [
301
+ `# ${commandName}`,
302
+ '',
303
+ 'Interactively create a custom DevFlow schema.',
304
+ '',
305
+ '## Steps (in order)',
306
+ '',
307
+ '1. Call `list_schemas` and show available schemas. If one fits, suggest it.',
308
+ '2. Ask what kind of project/workflow the user needs.',
309
+ '3. Ask which artifacts/documents their workflow should include.',
310
+ '4. Design the artifact dependency DAG. Present it for confirmation.',
311
+ '5. Ask about quality rules (RFC 2119, min scenarios per requirement).',
312
+ '6. Generate markdown templates for each artifact.',
313
+ '7. Call `create_schema` with name, artifacts, qualityRules, apply, and templates.',
314
+ '8. Report the schema was created and how to use it:',
315
+ ' - `create_spec` with `schema: "<name>"`',
316
+ ' - Or set as default in `devflow/project-config.json`',
317
+ ],
265
318
  };
266
319
 
267
320
  const bodyLines = bodies[command];
@@ -273,7 +326,7 @@ function replaceManagedSection(existing, markerId, nextContent) {
273
326
  const escaped = markerId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
274
327
  const pattern = new RegExp(
275
328
  `<!-- DEVFLOW:BEGIN ${escaped} -->[\\s\\S]*?<!-- DEVFLOW:END ${escaped} -->\\n?`,
276
- 'm'
329
+ 'm',
277
330
  );
278
331
  if (!pattern.test(existing)) return null;
279
332
  return existing.replace(pattern, nextContent);
@@ -300,7 +353,9 @@ function buildAssets(projectRoot, tools, delivery) {
300
353
  const commandMarker = `${tool}:command:df-${command}`;
301
354
  if (delivery !== 'commands') {
302
355
  assets.push({
303
- tool, kind: 'skill', command,
356
+ tool,
357
+ kind: 'skill',
358
+ command,
304
359
  outputPath: path.join(dirs.skillsDir, `df-${command}.md`),
305
360
  markerId: skillMarker,
306
361
  content: renderSkill(tool, command, skillMarker),
@@ -308,7 +363,9 @@ function buildAssets(projectRoot, tools, delivery) {
308
363
  }
309
364
  if (delivery !== 'skills') {
310
365
  assets.push({
311
- tool, kind: 'command', command,
366
+ tool,
367
+ kind: 'command',
368
+ command,
312
369
  outputPath: path.join(dirs.commandsDir, `df-${command}.md`),
313
370
  markerId: commandMarker,
314
371
  content: renderCommand(tool, command, commandMarker),
@@ -329,7 +386,7 @@ function selectTools(projectRoot, options) {
329
386
  } else if (options.tools !== undefined) {
330
387
  selectedTools = parseTools(options.tools);
331
388
  } else if (autodetect) {
332
- selectedTools = detection.filter(d => d.detected).map(d => d.id);
389
+ selectedTools = detection.filter((d) => d.detected).map((d) => d.id);
333
390
  } else {
334
391
  selectedTools = parseTools('all');
335
392
  }
@@ -354,17 +411,17 @@ function installSkills(projectRoot, options = {}) {
354
411
  dryRun,
355
412
  autodetect: selection.autodetect,
356
413
  selectedTools: selection.selectedTools,
357
- environments: selection.detection.map(d => ({
414
+ environments: selection.detection.map((d) => ({
358
415
  tool: d.id,
359
416
  detected: d.detected,
360
- status: selection.selectedTools.includes(d.id)
361
- ? (dryRun ? 'planned' : 'pending')
362
- : 'skipped',
417
+ status: selection.selectedTools.includes(d.id) ? (dryRun ? 'planned' : 'pending') : 'skipped',
363
418
  reason: selection.selectedTools.includes(d.id)
364
419
  ? undefined
365
- : (selection.autodetect && options.tools === undefined && !options.only
366
- ? (d.detected ? 'not-selected' : 'not-detected')
367
- : 'not-selected'),
420
+ : selection.autodetect && options.tools === undefined && !options.only
421
+ ? d.detected
422
+ ? 'not-selected'
423
+ : 'not-detected'
424
+ : 'not-selected',
368
425
  created: 0,
369
426
  updated: 0,
370
427
  skipped: 0,
@@ -378,7 +435,7 @@ function installSkills(projectRoot, options = {}) {
378
435
 
379
436
  for (const asset of assets) {
380
437
  const { outputPath, markerId, content, tool } = asset;
381
- const envReport = report.environments.find(e => e.tool === tool);
438
+ const envReport = report.environments.find((e) => e.tool === tool);
382
439
  const displayPath = path.relative(projectRoot, outputPath);
383
440
  try {
384
441
  const alreadyExists = exists(outputPath);
@@ -393,7 +450,11 @@ function installSkills(projectRoot, options = {}) {
393
450
  }
394
451
  report.updated++;
395
452
  if (envReport) envReport.updated++;
396
- report.results.push({ ...asset, path: displayPath, action: dryRun ? 'would_update' : 'updated' });
453
+ report.results.push({
454
+ ...asset,
455
+ path: displayPath,
456
+ action: dryRun ? 'would_update' : 'updated',
457
+ });
397
458
  } else {
398
459
  report.skipped++;
399
460
  if (envReport) envReport.skipped++;
@@ -403,7 +464,7 @@ function installSkills(projectRoot, options = {}) {
403
464
  }
404
465
 
405
466
  const ownershipError = new Error(
406
- `Refusing to modify unmanaged file for ${tool}: ${displayPath}`
467
+ `Refusing to modify unmanaged file for ${tool}: ${displayPath}`,
407
468
  );
408
469
  ownershipError.code = 'UNMANAGED_FILE';
409
470
  throw ownershipError;
@@ -414,7 +475,11 @@ function installSkills(projectRoot, options = {}) {
414
475
  }
415
476
  report.created++;
416
477
  if (envReport) envReport.created++;
417
- report.results.push({ ...asset, path: displayPath, action: dryRun ? 'would_create' : 'created' });
478
+ report.results.push({
479
+ ...asset,
480
+ path: displayPath,
481
+ action: dryRun ? 'would_create' : 'created',
482
+ });
418
483
  } catch (error) {
419
484
  report.failed++;
420
485
  if (envReport) envReport.failed++;
@@ -432,7 +497,8 @@ function installSkills(projectRoot, options = {}) {
432
497
  if (!selection.selectedTools.includes(envReport.tool)) continue;
433
498
  if (envReport.failed > 0) {
434
499
  envReport.status = 'failed';
435
- envReport.reason = envReport.created + envReport.updated > 0 ? 'partial-failure' : 'install-failed';
500
+ envReport.reason =
501
+ envReport.created + envReport.updated > 0 ? 'partial-failure' : 'install-failed';
436
502
  } else if (dryRun) {
437
503
  envReport.status = 'planned';
438
504
  } else {
@@ -449,22 +515,29 @@ function printReport(report) {
449
515
  for (const env of report.environments) {
450
516
  const statusDetails = env.reason ? `${env.status} (${env.reason})` : env.status;
451
517
  const detectedText = env.detected ? 'detected' : 'not detected';
452
- console.log(` - ${env.tool}: ${statusDetails}; ${detectedText}; created=${env.created} updated=${env.updated} skipped=${env.skipped} failed=${env.failed}`);
518
+ console.log(
519
+ ` - ${env.tool}: ${statusDetails}; ${detectedText}; created=${env.created} updated=${env.updated} skipped=${env.skipped} failed=${env.failed}`,
520
+ );
453
521
  }
454
522
  console.log('');
455
523
  }
456
524
 
457
525
  for (const r of report.results) {
458
526
  const icon =
459
- r.action === 'created' || r.action === 'would_create' ? '✓' :
460
- r.action === 'updated' || r.action === 'would_update' ? '' :
461
- r.action === 'failed' ? '' :
462
- '';
527
+ r.action === 'created' || r.action === 'would_create'
528
+ ? ''
529
+ : r.action === 'updated' || r.action === 'would_update'
530
+ ? ''
531
+ : r.action === 'failed'
532
+ ? '✗'
533
+ : '–';
463
534
  const errorSuffix = r.action === 'failed' ? ` - ${r.error}` : '';
464
535
  console.log(` ${icon} [${r.tool}] ${r.kind} ${r.path} (${r.action})${errorSuffix}`);
465
536
  }
466
537
  const mode = report.dryRun ? ' (dry-run)' : '';
467
- console.log(`\n ${report.created} created, ${report.updated} updated, ${report.skipped} skipped, ${report.failed} failed${mode}`);
538
+ console.log(
539
+ `\n ${report.created} created, ${report.updated} updated, ${report.skipped} skipped, ${report.failed} failed${mode}`,
540
+ );
468
541
  }
469
542
 
470
543
  // CLI usage: node scripts/install-skills.js [--tools all|codex|claudecode] [--delivery both|skills|commands] [--force]
@@ -82,7 +82,7 @@ test('installer refuses to overwrite unmanaged files even with force', () => {
82
82
  });
83
83
 
84
84
  assert.ok(report.failed >= 1);
85
- const failedNewSkill = report.results.find(r => r.path.endsWith('.codex/skills/df-new.md'));
85
+ const failedNewSkill = report.results.find((r) => r.path.endsWith('.codex/skills/df-new.md'));
86
86
  assert.ok(failedNewSkill);
87
87
  assert.equal(failedNewSkill.errorCode, 'UNMANAGED_FILE');
88
88
  assert.equal(fs.readFileSync(target, 'utf-8'), '# user owned file\n');
@@ -106,8 +106,8 @@ test('installer autodetect default installs only detected environments', () => {
106
106
  });
107
107
 
108
108
  assert.deepEqual(report.selectedTools, ['codex']);
109
- const codexSummary = report.environments.find(e => e.tool === 'codex');
110
- const claudeSummary = report.environments.find(e => e.tool === 'claudecode');
109
+ const codexSummary = report.environments.find((e) => e.tool === 'codex');
110
+ const claudeSummary = report.environments.find((e) => e.tool === 'claudecode');
111
111
  assert.equal(codexSummary.status, 'installed');
112
112
  assert.equal(claudeSummary.status, 'skipped');
113
113
  assert.equal(claudeSummary.reason, 'not-detected');
@@ -128,7 +128,7 @@ test('dry-run reports planned actions without writing files', () => {
128
128
  });
129
129
  assert.equal(report.dryRun, true);
130
130
  assert.ok(report.created > 0);
131
- assert.ok(report.results.some(r => r.action === 'would_create'));
131
+ assert.ok(report.results.some((r) => r.action === 'would_create'));
132
132
  const expectedPath = path.join(projectRoot, '.codex', 'skills', 'df-new.md');
133
133
  assert.equal(fs.existsSync(expectedPath), false);
134
134
  });
@@ -152,8 +152,8 @@ test('disabling autodetect targets all supported tools by default', () => {
152
152
  });
153
153
 
154
154
  assert.deepEqual(report.selectedTools.sort(), ['claudecode', 'codex']);
155
- const codexSummary = report.environments.find(e => e.tool === 'codex');
156
- const claudeSummary = report.environments.find(e => e.tool === 'claudecode');
155
+ const codexSummary = report.environments.find((e) => e.tool === 'codex');
156
+ const claudeSummary = report.environments.find((e) => e.tool === 'claudecode');
157
157
  assert.equal(codexSummary.status, 'installed');
158
158
  assert.equal(claudeSummary.status, 'installed');
159
159
  });
@@ -1,5 +1,5 @@
1
- import { NextResponse } from "next/server";
2
- import { getAgentCount, getAgentList } from "@/websocket/server";
1
+ import { NextResponse } from 'next/server';
2
+ import { getAgentCount, getAgentList } from '@/websocket/server';
3
3
 
4
4
  export async function GET() {
5
5
  const agents = getAgentList();
@@ -1,11 +1,8 @@
1
- import { NextResponse } from "next/server";
2
- import { getDb, schema } from "@/db";
3
- import { eq } from "drizzle-orm";
1
+ import { NextResponse } from 'next/server';
2
+ import { getDb, schema } from '@/db';
3
+ import { eq } from 'drizzle-orm';
4
4
 
5
- export async function DELETE(
6
- request: Request,
7
- { params }: { params: Promise<{ id: string }> }
8
- ) {
5
+ export async function DELETE(request: Request, { params }: { params: Promise<{ id: string }> }) {
9
6
  try {
10
7
  const { id } = await params;
11
8
  const db = await getDb();
@@ -17,7 +14,7 @@ export async function DELETE(
17
14
  .limit(1);
18
15
 
19
16
  if (project.length === 0) {
20
- return NextResponse.json({ error: "Project not found" }, { status: 404 });
17
+ return NextResponse.json({ error: 'Project not found' }, { status: 404 });
21
18
  }
22
19
 
23
20
  const projectTasks = await db
@@ -34,18 +31,15 @@ export async function DELETE(
34
31
 
35
32
  return NextResponse.json({ success: true });
36
33
  } catch (error) {
37
- console.error("Delete project error:", error);
34
+ console.error('Delete project error:', error);
38
35
  return NextResponse.json(
39
- { error: "Failed to delete project", details: String(error) },
40
- { status: 500 }
36
+ { error: 'Failed to delete project', details: String(error) },
37
+ { status: 500 },
41
38
  );
42
39
  }
43
40
  }
44
41
 
45
- export async function PATCH(
46
- request: Request,
47
- { params }: { params: Promise<{ id: string }> }
48
- ) {
42
+ export async function PATCH(request: Request, { params }: { params: Promise<{ id: string }> }) {
49
43
  try {
50
44
  const { id } = await params;
51
45
  const body = await request.json();
@@ -67,9 +61,6 @@ export async function PATCH(
67
61
 
68
62
  return NextResponse.json(updatedProject[0]);
69
63
  } catch (error) {
70
- return NextResponse.json(
71
- { error: "Failed to update project" },
72
- { status: 500 }
73
- );
64
+ return NextResponse.json({ error: 'Failed to update project' }, { status: 500 });
74
65
  }
75
66
  }
@@ -1,18 +1,12 @@
1
- import { NextResponse } from "next/server";
2
- import { getDb, schema } from "@/db";
1
+ import { NextResponse } from 'next/server';
2
+ import { getDb, schema } from '@/db';
3
3
 
4
4
  export async function GET() {
5
5
  try {
6
6
  const db = await getDb();
7
- const projects = await db
8
- .select()
9
- .from(schema.projects)
10
- .orderBy(schema.projects.createdAt);
7
+ const projects = await db.select().from(schema.projects).orderBy(schema.projects.createdAt);
11
8
  return NextResponse.json(projects);
12
9
  } catch (error) {
13
- return NextResponse.json(
14
- { error: "Failed to fetch projects" },
15
- { status: 500 }
16
- );
10
+ return NextResponse.json({ error: 'Failed to fetch projects' }, { status: 500 });
17
11
  }
18
12
  }