@sureshdsk/devflow-mcp 3.0.0 → 3.0.1

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 (504) 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/AGENTS.md +13 -7
  163. package/.next/standalone/CONTRIBUTING.md +42 -26
  164. package/.next/standalone/README.md +166 -25
  165. package/.next/standalone/bin/devflow.js +12 -5
  166. package/.next/standalone/bun.lock +78 -24
  167. package/.next/standalone/devflow/project-config.json +4 -0
  168. package/.next/standalone/devflow/schemas/api-first/schema.yaml +39 -0
  169. package/.next/standalone/devflow/schemas/api-first/templates/api-design.md +41 -0
  170. package/.next/standalone/devflow/schemas/api-first/templates/db-design.md +28 -0
  171. package/.next/standalone/devflow/schemas/api-first/templates/final-architecture.md +31 -0
  172. package/.next/standalone/devflow/schemas/api-first/templates/proposal.md +22 -0
  173. package/.next/standalone/devflow/schemas/api-first/templates/tasks.md +16 -0
  174. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.approvals.json +1 -1
  175. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.meta.json +1 -1
  176. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/design.md +11 -0
  177. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/proposal.md +3 -0
  178. package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/tasks.md +34 -2
  179. package/.next/standalone/devflow/specs/precommit/.approvals.json +26 -0
  180. package/.next/standalone/devflow/specs/precommit/.meta.json +7 -0
  181. package/.next/standalone/devflow/specs/precommit/design.md +105 -0
  182. package/.next/standalone/devflow/specs/precommit/proposal.md +43 -0
  183. package/.next/standalone/devflow/specs/precommit/specs.md +89 -0
  184. package/.next/standalone/devflow/specs/precommit/tasks.md +283 -0
  185. package/.next/standalone/docs/custom-schemas.md +117 -0
  186. package/.next/standalone/docs/local-dev-guide.md +73 -0
  187. package/.next/standalone/drizzle.config.ts +7 -7
  188. package/.next/standalone/eslint.config.mjs +2 -2
  189. package/.next/standalone/instrumentation.ts +3 -5
  190. package/.next/standalone/next.config.ts +11 -2
  191. package/.next/standalone/node_modules/{sharp → libsql}/node_modules/detect-libc/package.json +4 -8
  192. package/.next/standalone/package-lock.json +5257 -2085
  193. package/.next/standalone/package.json +16 -7
  194. package/.next/standalone/postcss.config.mjs +1 -1
  195. package/.next/standalone/scripts/init-db.js +3 -5
  196. package/.next/standalone/scripts/init-db.test.js +6 -6
  197. package/.next/standalone/scripts/init-schema.js +22 -22
  198. package/.next/standalone/scripts/init-schema.test.js +45 -45
  199. package/.next/standalone/scripts/install-environments.js +27 -8
  200. package/.next/standalone/scripts/install-environments.test.js +19 -10
  201. package/.next/standalone/scripts/install-skills.js +104 -31
  202. package/.next/standalone/scripts/install-skills.test.js +6 -6
  203. package/.next/standalone/server.js +1 -1
  204. package/.next/standalone/src/app/api/agents/route.ts +2 -2
  205. package/.next/standalone/src/app/api/projects/[id]/route.ts +10 -19
  206. package/.next/standalone/src/app/api/projects/route.ts +4 -10
  207. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  208. package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  209. package/.next/standalone/src/app/api/specs/[name]/promote/route.ts +17 -23
  210. package/.next/standalone/src/app/api/specs/[name]/route.ts +34 -36
  211. package/.next/standalone/src/app/api/specs/route.ts +10 -10
  212. package/.next/standalone/src/app/api/tasks/[id]/route.ts +11 -33
  213. package/.next/standalone/src/app/api/tasks/route.ts +3 -6
  214. package/.next/standalone/src/app/globals.css +3 -3
  215. package/.next/standalone/src/app/layout.tsx +9 -5
  216. package/.next/standalone/src/app/page.tsx +1 -1
  217. package/.next/standalone/src/app/specs/[name]/page.tsx +26 -68
  218. package/.next/standalone/src/components/kanban-board.tsx +78 -157
  219. package/.next/standalone/src/components/kanban-column.tsx +10 -12
  220. package/.next/standalone/src/components/markdown-preview.tsx +36 -19
  221. package/.next/standalone/src/components/providers.tsx +20 -0
  222. package/.next/standalone/src/components/specs/artifact-dag-status.tsx +12 -14
  223. package/.next/standalone/src/components/specs/artifact-editor.tsx +55 -26
  224. package/.next/standalone/src/components/specs/spec-detail.tsx +48 -40
  225. package/.next/standalone/src/components/specs/spec-kanban-column.tsx +49 -68
  226. package/.next/standalone/src/components/specs/spec-modal.tsx +119 -83
  227. package/.next/standalone/src/components/task-card.tsx +34 -38
  228. package/.next/standalone/src/components/task-dialog.tsx +16 -31
  229. package/.next/standalone/src/components/ui/badge.tsx +12 -18
  230. package/.next/standalone/src/components/ui/button.tsx +23 -28
  231. package/.next/standalone/src/components/ui/card.tsx +42 -62
  232. package/.next/standalone/src/components/ui/dialog.tsx +17 -35
  233. package/.next/standalone/src/db/index.ts +10 -10
  234. package/.next/standalone/src/db/schema.ts +37 -37
  235. package/.next/standalone/src/hooks/use-queries.ts +81 -0
  236. package/.next/standalone/src/hooks/use-websocket.ts +74 -0
  237. package/.next/standalone/src/lib/schema.test.ts +37 -37
  238. package/.next/standalone/src/lib/schema.ts +77 -31
  239. package/.next/standalone/src/lib/specs-dir.ts +8 -8
  240. package/.next/standalone/src/lib/specs.ts +98 -92
  241. package/.next/standalone/src/lib/utils.ts +2 -2
  242. package/.next/standalone/src/mcp/server.ts +556 -349
  243. package/.next/standalone/src/mcp/websocket.ts +26 -23
  244. package/.next/standalone/src/schemas/backend-api/templates/proposal.md +6 -4
  245. package/.next/standalone/src/schemas/backend-api/templates/tasks.md +6 -0
  246. package/.next/standalone/src/schemas/data-engineering/templates/proposal.md +6 -4
  247. package/.next/standalone/src/schemas/data-engineering/templates/tasks.md +6 -0
  248. package/.next/standalone/src/schemas/devops-platform/templates/proposal.md +6 -4
  249. package/.next/standalone/src/schemas/devops-platform/templates/tasks.md +6 -0
  250. package/.next/standalone/src/schemas/frontend-product/templates/proposal.md +6 -4
  251. package/.next/standalone/src/schemas/frontend-product/templates/tasks.md +6 -0
  252. package/.next/standalone/src/schemas/spec-driven/templates/proposal.md +6 -4
  253. package/.next/standalone/src/schemas/spec-driven/templates/tasks.md +26 -0
  254. package/.next/standalone/src/websocket/server.ts +20 -18
  255. package/.next/standalone/tsconfig.json +3 -12
  256. package/.next/standalone/tsconfig.tsbuildinfo +1 -1
  257. package/.next/static/chunks/4f23f64d46848f57.js +1 -0
  258. package/.next/static/chunks/53081dcdcad4f31e.js +1 -0
  259. package/.next/static/chunks/{6a3d582315f1c214.js → 701cfcbb41e0ab47.js} +1 -1
  260. package/.next/static/chunks/ac4b6b4d5b7e486e.css +1 -0
  261. package/.next/static/chunks/d0309ea872db5d9f.js +1 -0
  262. package/.next/static/chunks/d4cf8893a018e965.js +1 -0
  263. package/.next/static/chunks/e6c0233269a4bd69.js +13 -0
  264. package/.next/static/chunks/{7e65cfa9841f66a5.js → e7d83ce855afe416.js} +2 -2
  265. package/.next/static/chunks/ee7035560fc9e5e9.js +1 -0
  266. package/.next/static/chunks/{turbopack-f4d3806ab575051d.js → turbopack-8b3b66a22a5e0fb4.js} +2 -2
  267. package/README.md +166 -25
  268. package/bin/devflow.js +12 -5
  269. package/drizzle.config.ts +7 -7
  270. package/next.config.ts +11 -2
  271. package/package.json +16 -7
  272. package/scripts/init-db.js +3 -5
  273. package/scripts/init-db.test.js +6 -6
  274. package/scripts/init-schema.js +22 -22
  275. package/scripts/init-schema.test.js +45 -45
  276. package/scripts/install-environments.js +27 -8
  277. package/scripts/install-environments.test.js +19 -10
  278. package/scripts/install-skills.js +104 -31
  279. package/scripts/install-skills.test.js +6 -6
  280. package/src/app/api/agents/route.ts +2 -2
  281. package/src/app/api/projects/[id]/route.ts +10 -19
  282. package/src/app/api/projects/route.ts +4 -10
  283. package/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
  284. package/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
  285. package/src/app/api/specs/[name]/promote/route.ts +17 -23
  286. package/src/app/api/specs/[name]/route.ts +34 -36
  287. package/src/app/api/specs/route.ts +10 -10
  288. package/src/app/api/tasks/[id]/route.ts +11 -33
  289. package/src/app/api/tasks/route.ts +3 -6
  290. package/src/app/globals.css +3 -3
  291. package/src/app/layout.tsx +9 -5
  292. package/src/app/page.tsx +1 -1
  293. package/src/app/specs/[name]/page.tsx +26 -68
  294. package/src/components/kanban-board.tsx +78 -157
  295. package/src/components/kanban-column.tsx +10 -12
  296. package/src/components/markdown-preview.tsx +36 -19
  297. package/src/components/providers.tsx +20 -0
  298. package/src/components/specs/artifact-dag-status.tsx +12 -14
  299. package/src/components/specs/artifact-editor.tsx +55 -26
  300. package/src/components/specs/spec-detail.tsx +48 -40
  301. package/src/components/specs/spec-kanban-column.tsx +49 -68
  302. package/src/components/specs/spec-modal.tsx +119 -83
  303. package/src/components/task-card.tsx +34 -38
  304. package/src/components/task-dialog.tsx +16 -31
  305. package/src/components/ui/badge.tsx +12 -18
  306. package/src/components/ui/button.tsx +23 -28
  307. package/src/components/ui/card.tsx +42 -62
  308. package/src/components/ui/dialog.tsx +17 -35
  309. package/src/db/index.ts +10 -10
  310. package/src/db/schema.ts +37 -37
  311. package/src/hooks/use-queries.ts +81 -0
  312. package/src/hooks/use-websocket.ts +74 -0
  313. package/src/lib/schema.test.ts +37 -37
  314. package/src/lib/schema.ts +77 -31
  315. package/src/lib/specs-dir.ts +8 -8
  316. package/src/lib/specs.ts +98 -92
  317. package/src/lib/utils.ts +2 -2
  318. package/src/mcp/server.ts +556 -349
  319. package/src/mcp/websocket.ts +26 -23
  320. package/src/schemas/backend-api/templates/proposal.md +6 -4
  321. package/src/schemas/backend-api/templates/tasks.md +6 -0
  322. package/src/schemas/data-engineering/templates/proposal.md +6 -4
  323. package/src/schemas/data-engineering/templates/tasks.md +6 -0
  324. package/src/schemas/devops-platform/templates/proposal.md +6 -4
  325. package/src/schemas/devops-platform/templates/tasks.md +6 -0
  326. package/src/schemas/frontend-product/templates/proposal.md +6 -4
  327. package/src/schemas/frontend-product/templates/tasks.md +6 -0
  328. package/src/schemas/spec-driven/templates/proposal.md +6 -4
  329. package/src/schemas/spec-driven/templates/tasks.md +26 -0
  330. package/src/types/bun-sqlite.d.ts +1 -1
  331. package/src/websocket/server.ts +20 -18
  332. package/tsconfig.json +3 -12
  333. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1be4e4b6._.js +0 -3
  334. package/.next/standalone/.next/server/chunks/[root-of-the-server]__492a4a24._.js +0 -3
  335. package/.next/standalone/.next/server/chunks/[root-of-the-server]__67c59ae1._.js +0 -3
  336. package/.next/standalone/.next/server/chunks/[root-of-the-server]__6cc7aecd._.js +0 -3
  337. package/.next/standalone/.next/server/chunks/[root-of-the-server]__83a77b07._.js +0 -3
  338. package/.next/standalone/.next/server/chunks/[root-of-the-server]__88d91cb5._.js +0 -3
  339. package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9e095e8._.js +0 -3
  340. package/.next/standalone/.next/server/chunks/[root-of-the-server]__b367d327._.js +0 -3
  341. package/.next/standalone/.next/server/chunks/[root-of-the-server]__eb413bbc._.js +0 -3
  342. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b8c072a._.js +0 -3
  343. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2191f._.js +0 -3
  344. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15316462._.js +0 -3
  345. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19c9c409._.js +0 -3
  346. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19e5e22f._.js +0 -3
  347. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__25b5ccb3._.js +0 -3
  348. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2f78c3da._.js +0 -3
  349. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3160b3f4._.js +0 -9
  350. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__319559be._.js +0 -3
  351. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34f7cbcb._.js +0 -31
  352. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3abab94b._.js +0 -3
  353. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3b3d8930._.js +0 -3
  354. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4250799b._.js +0 -3
  355. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4c29cbc3._.js +0 -26
  356. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4e0bb6eb._.js +0 -9
  357. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5678d2e3._.js +0 -3
  358. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__673445e0._.js +0 -31
  359. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__934de06b._.js +0 -3
  360. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9b6c6f09._.js +0 -3
  361. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a1b83a98._.js +0 -3
  362. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b00a15c5._.js +0 -3
  363. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b8567be3._.js +0 -26
  364. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce64536e._.js +0 -45
  365. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e96d33d2._.js +0 -45
  366. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__fd7ec054._.js +0 -3
  367. package/.next/standalone/.next/server/chunks/ssr/node_modules_16a3f9e7._.js +0 -17
  368. package/.next/standalone/.next/server/chunks/ssr/node_modules_45bce0e1._.js +0 -3
  369. package/.next/standalone/.next/server/chunks/ssr/node_modules_5e5a372d._.js +0 -17
  370. package/.next/standalone/.next/server/chunks/ssr/node_modules_6ece6f1e._.js +0 -3
  371. package/.next/standalone/.next/server/chunks/ssr/node_modules_d173e749._.js +0 -3
  372. package/.next/standalone/.next/server/chunks/ssr/node_modules_d3-shape_src_arc_fb1ac087.js +0 -3
  373. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1f73a830._.js +0 -3
  374. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_663ac803._.js +0 -3
  375. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_4f485529._.js +0 -17
  376. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_8436a62a._.js +0 -3
  377. package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_f78d2dc4._.js +0 -3
  378. package/.next/standalone/.next/server/chunks/ssr/src_app_layout_tsx_cc8184fa._.js +0 -3
  379. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.approvals.json +0 -26
  380. package/.next/standalone/devflow/specs/add-default-schema-template-selection/.meta.json +0 -8
  381. package/.next/standalone/devflow/specs/add-default-schema-template-selection/design.md +0 -126
  382. package/.next/standalone/devflow/specs/add-default-schema-template-selection/proposal.md +0 -65
  383. package/.next/standalone/devflow/specs/add-default-schema-template-selection/specs.md +0 -107
  384. package/.next/standalone/devflow/specs/add-default-schema-template-selection/tasks.md +0 -235
  385. package/.next/standalone/devflow/specs/test-no-project/.approvals.json +0 -17
  386. package/.next/standalone/devflow/specs/test-no-project/.meta.json +0 -6
  387. package/.next/standalone/devflow/specs/ui-cleanup/.approvals.json +0 -29
  388. package/.next/standalone/devflow/specs/ui-cleanup/.meta.json +0 -6
  389. package/.next/standalone/devflow/specs/ui-cleanup/design.md +0 -49
  390. package/.next/standalone/devflow/specs/ui-cleanup/proposal.md +0 -34
  391. package/.next/standalone/devflow/specs/ui-cleanup/specs.md +0 -55
  392. package/.next/standalone/devflow/specs/ui-cleanup/tasks.md +0 -28
  393. package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
  394. package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
  395. package/.next/standalone/node_modules/@img/colour/package.json +0 -45
  396. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  397. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  398. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
  399. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
  400. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  401. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  402. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  403. package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  404. package/.next/standalone/node_modules/buffer-from/index.js +0 -72
  405. package/.next/standalone/node_modules/buffer-from/package.json +0 -19
  406. package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
  407. package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
  408. package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
  409. package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
  410. package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
  411. package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
  412. package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
  413. package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
  414. package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
  415. package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
  416. package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
  417. package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
  418. package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
  419. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/detect-libc.js +0 -313
  420. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/elf.js +0 -39
  421. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/filesystem.js +0 -51
  422. package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/process.js +0 -24
  423. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  424. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  425. package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  426. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  427. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  428. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  429. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  430. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  431. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  432. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  433. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  434. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  435. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  436. package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  437. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  438. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  439. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  440. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  441. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  442. package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  443. package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
  444. package/.next/standalone/node_modules/sharp/package.json +0 -202
  445. package/.next/standalone/node_modules/source-map/lib/array-set.js +0 -121
  446. package/.next/standalone/node_modules/source-map/lib/base64-vlq.js +0 -140
  447. package/.next/standalone/node_modules/source-map/lib/base64.js +0 -67
  448. package/.next/standalone/node_modules/source-map/lib/binary-search.js +0 -111
  449. package/.next/standalone/node_modules/source-map/lib/mapping-list.js +0 -79
  450. package/.next/standalone/node_modules/source-map/lib/quick-sort.js +0 -114
  451. package/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  452. package/.next/standalone/node_modules/source-map/lib/source-map-generator.js +0 -425
  453. package/.next/standalone/node_modules/source-map/lib/source-node.js +0 -413
  454. package/.next/standalone/node_modules/source-map/lib/util.js +0 -488
  455. package/.next/standalone/node_modules/source-map/package.json +0 -73
  456. package/.next/standalone/node_modules/source-map/source-map.js +0 -8
  457. package/.next/standalone/node_modules/source-map-support/LICENSE.md +0 -21
  458. package/.next/standalone/node_modules/source-map-support/README.md +0 -284
  459. package/.next/standalone/node_modules/source-map-support/browser-source-map-support.js +0 -114
  460. package/.next/standalone/node_modules/source-map-support/package.json +0 -31
  461. package/.next/standalone/node_modules/source-map-support/register-hook-require.js +0 -1
  462. package/.next/standalone/node_modules/source-map-support/register.js +0 -1
  463. package/.next/standalone/node_modules/source-map-support/source-map-support.js +0 -625
  464. package/.next/standalone/node_modules/typescript/lib/_tsc.js +0 -133818
  465. package/.next/standalone/node_modules/typescript/lib/_tsserver.js +0 -659
  466. package/.next/standalone/node_modules/typescript/lib/_typingsInstaller.js +0 -222
  467. package/.next/standalone/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  468. package/.next/standalone/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  469. package/.next/standalone/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  470. package/.next/standalone/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  471. package/.next/standalone/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  472. package/.next/standalone/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  473. package/.next/standalone/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  474. package/.next/standalone/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  475. package/.next/standalone/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  476. package/.next/standalone/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  477. package/.next/standalone/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  478. package/.next/standalone/node_modules/typescript/lib/tsc.js +0 -8
  479. package/.next/standalone/node_modules/typescript/lib/tsserver.js +0 -8
  480. package/.next/standalone/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  481. package/.next/standalone/node_modules/typescript/lib/typesMap.json +0 -497
  482. package/.next/standalone/node_modules/typescript/lib/typescript.js +0 -200276
  483. package/.next/standalone/node_modules/typescript/lib/typingsInstaller.js +0 -8
  484. package/.next/standalone/node_modules/typescript/lib/watchGuard.js +0 -53
  485. package/.next/standalone/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
  486. package/.next/standalone/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
  487. package/.next/standalone/node_modules/typescript/package.json +0 -120
  488. package/.next/standalone/src/components/ui/collapsible.tsx +0 -12
  489. package/.next/standalone/src/components/ui/sheet.tsx +0 -130
  490. package/.next/standalone/src/components/ui/tabs.tsx +0 -58
  491. package/.next/static/chunks/0177331b8adf7346.js +0 -7
  492. package/.next/static/chunks/06af74e2f3e207c5.js +0 -7
  493. package/.next/static/chunks/1748d5cd2443723b.css +0 -1
  494. package/.next/static/chunks/7ae917cb100be2b9.js +0 -7
  495. package/.next/static/chunks/7c4b901b394c3a8c.js +0 -7
  496. package/src/components/ui/collapsible.tsx +0 -12
  497. package/src/components/ui/sheet.tsx +0 -130
  498. package/src/components/ui/tabs.tsx +0 -58
  499. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/detect-libc.js +0 -0
  500. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/filesystem.js +0 -0
  501. /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/process.js +0 -0
  502. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_buildManifest.js +0 -0
  503. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_clientMiddlewareManifest.json +0 -0
  504. /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[88935,a=>{"use strict";function b(a,b){switch(arguments.length){case 0:break;case 1:this.range(a);break;default:this.range(b).domain(a)}return this}a.s(["initRange",()=>b])},82464,a=>{"use strict";class b extends Map{constructor(a,b=d){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:b}}),null!=a)for(const[b,c]of a)this.set(b,c)}get(a){return super.get(c(this,a))}has(a){return super.has(c(this,a))}set(a,b){return super.set(function({_intern:a,_key:b},c){let d=b(c);return a.has(d)?a.get(d):(a.set(d,c),c)}(this,a),b)}delete(a){return super.delete(function({_intern:a,_key:b},c){let d=b(c);return a.has(d)&&(c=a.get(c),a.delete(d)),c}(this,a))}}function c({_intern:a,_key:b},c){let d=b(c);return a.has(d)?a.get(d):c}function d(a){return null!==a&&"object"==typeof a?a.valueOf():a}var e=a.i(88935);let f=Symbol("implicit");a.s(["default",()=>function a(){var c=new b,d=[],g=[],h=f;function i(a){let b=c.get(a);if(void 0===b){if(h!==f)return h;c.set(a,b=d.push(a)-1)}return g[b%g.length]}return i.domain=function(a){if(!arguments.length)return d.slice();for(let e of(d=[],c=new b,a))c.has(e)||c.set(e,d.push(e)-1);return i},i.range=function(a){return arguments.length?(g=Array.from(a),i):g.slice()},i.unknown=function(a){return arguments.length?(h=a,i):h},i.copy=function(){return a(d,g).unknown(h)},e.initRange.apply(i,arguments),i}],82464)},74394,28939,82970,a=>{"use strict";function b(a,b){if(!isFinite(a)||0===a)return null;var c=(a=b?a.toExponential(b-1):a.toExponential()).indexOf("e"),d=a.slice(0,c);return[d.length>1?d[0]+d.slice(2):d,+a.slice(c+1)]}function c(a){return(a=b(Math.abs(a)))?a[1]:NaN}a.s(["default",0,c],28939);var d,e,f,g,h=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function i(a){var b;if(!(b=h.exec(a)))throw Error("invalid format: "+a);return new j({fill:b[1],align:b[2],sign:b[3],symbol:b[4],zero:b[5],width:b[6],comma:b[7],precision:b[8]&&b[8].slice(1),trim:b[9],type:b[10]})}function j(a){this.fill=void 0===a.fill?" ":a.fill+"",this.align=void 0===a.align?">":a.align+"",this.sign=void 0===a.sign?"-":a.sign+"",this.symbol=void 0===a.symbol?"":a.symbol+"",this.zero=!!a.zero,this.width=void 0===a.width?void 0:+a.width,this.comma=!!a.comma,this.precision=void 0===a.precision?void 0:+a.precision,this.trim=!!a.trim,this.type=void 0===a.type?"":a.type+""}function k(a,c){var d=b(a,c);if(!d)return a+"";var e=d[0],f=d[1];return f<0?"0."+Array(-f).join("0")+e:e.length>f+1?e.slice(0,f+1)+"."+e.slice(f+1):e+Array(f-e.length+2).join("0")}i.prototype=j.prototype,j.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type},a.s(["default",()=>i],82970);let l={"%":(a,b)=>(100*a).toFixed(b),b:a=>Math.round(a).toString(2),c:a=>a+"",d:function(a){return Math.abs(a=Math.round(a))>=1e21?a.toLocaleString("en").replace(/,/g,""):a.toString(10)},e:(a,b)=>a.toExponential(b),f:(a,b)=>a.toFixed(b),g:(a,b)=>a.toPrecision(b),o:a=>Math.round(a).toString(8),p:(a,b)=>k(100*a,b),r:k,s:function(a,c){var e=b(a,c);if(!e)return d=void 0,a.toPrecision(c);var f=e[0],g=e[1],h=g-(d=3*Math.max(-8,Math.min(8,Math.floor(g/3))))+1,i=f.length;return h===i?f:h>i?f+Array(h-i+1).join("0"):h>0?f.slice(0,h)+"."+f.slice(h):"0."+Array(1-h).join("0")+b(a,Math.max(0,c+h-1))[0]},X:a=>Math.round(a).toString(16).toUpperCase(),x:a=>Math.round(a).toString(16)};function m(a){return a}var n=Array.prototype.map,o=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];f=(e=function(a){var b,e,f,g=void 0===a.grouping||void 0===a.thousands?m:(b=n.call(a.grouping,Number),e=a.thousands+"",function(a,c){for(var d=a.length,f=[],g=0,h=b[0],i=0;d>0&&h>0&&(i+h+1>c&&(h=Math.max(1,c-i)),f.push(a.substring(d-=h,d+h)),!((i+=h+1)>c));)h=b[g=(g+1)%b.length];return f.reverse().join(e)}),h=void 0===a.currency?"":a.currency[0]+"",j=void 0===a.currency?"":a.currency[1]+"",k=void 0===a.decimal?".":a.decimal+"",p=void 0===a.numerals?m:(f=n.call(a.numerals,String),function(a){return a.replace(/[0-9]/g,function(a){return f[+a]})}),q=void 0===a.percent?"%":a.percent+"",r=void 0===a.minus?"−":a.minus+"",s=void 0===a.nan?"NaN":a.nan+"";function t(a,b){var c=(a=i(a)).fill,e=a.align,f=a.sign,m=a.symbol,n=a.zero,t=a.width,u=a.comma,v=a.precision,w=a.trim,x=a.type;"n"===x?(u=!0,x="g"):l[x]||(void 0===v&&(v=12),w=!0,x="g"),(n||"0"===c&&"="===e)&&(n=!0,c="0",e="=");var y=(b&&void 0!==b.prefix?b.prefix:"")+("$"===m?h:"#"===m&&/[boxX]/.test(x)?"0"+x.toLowerCase():""),z=("$"===m?j:/[%p]/.test(x)?q:"")+(b&&void 0!==b.suffix?b.suffix:""),A=l[x],B=/[defgprs%]/.test(x);function C(a){var b,h,i,j=y,l=z;if("c"===x)l=A(a)+l,a="";else{var m=(a*=1)<0||1/a<0;if(a=isNaN(a)?s:A(Math.abs(a),v),w&&(a=function(a){a:for(var b,c=a.length,d=1,e=-1;d<c;++d)switch(a[d]){case".":e=b=d;break;case"0":0===e&&(e=d),b=d;break;default:if(!+a[d])break a;e>0&&(e=0)}return e>0?a.slice(0,e)+a.slice(b+1):a}(a)),m&&0==+a&&"+"!==f&&(m=!1),j=(m?"("===f?f:r:"-"===f||"("===f?"":f)+j,l=("s"!==x||isNaN(a)||void 0===d?"":o[8+d/3])+l+(m&&"("===f?")":""),B){for(b=-1,h=a.length;++b<h;)if(48>(i=a.charCodeAt(b))||i>57){l=(46===i?k+a.slice(b+1):a.slice(b))+l,a=a.slice(0,b);break}}}u&&!n&&(a=g(a,1/0));var q=j.length+a.length+l.length,C=q<t?Array(t-q+1).join(c):"";switch(u&&n&&(a=g(C+a,C.length?t-l.length:1/0),C=""),e){case"<":a=j+a+l+C;break;case"=":a=j+C+a+l;break;case"^":a=C.slice(0,q=C.length>>1)+j+a+l+C.slice(q);break;default:a=C+j+a+l}return p(a)}return v=void 0===v?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),C.toString=function(){return a+""},C}return{format:t,formatPrefix:function(a,b){var d=3*Math.max(-8,Math.min(8,Math.floor(c(b)/3))),e=Math.pow(10,-d),f=t(((a=i(a)).type="f",a),{suffix:o[8+d/3]});return function(a){return f(e*a)}}}}({thousands:",",grouping:[3],currency:["$",""]})).format,g=e.formatPrefix,a.s(["format",()=>f,"formatPrefix",()=>g],74394)},4581,a=>{"use strict";let b=Math.sqrt(50),c=Math.sqrt(10),d=Math.sqrt(2);function e(a,f,g){let h,i,j,k=(f-a)/Math.max(0,g),l=Math.floor(Math.log10(k)),m=k/Math.pow(10,l),n=m>=b?10:m>=c?5:m>=d?2:1;return(l<0?(h=Math.round(a*(j=Math.pow(10,-l)/n)),i=Math.round(f*j),h/j<a&&++h,i/j>f&&--i,j=-j):(h=Math.round(a/(j=Math.pow(10,l)*n)),i=Math.round(f/j),h*j<a&&++h,i*j>f&&--i),i<h&&.5<=g&&g<2)?e(a,f,2*g):[h,i,j]}function f(a,b,c){if(b*=1,a*=1,!((c*=1)>0))return[];if(a===b)return[a];let d=b<a,[f,g,h]=d?e(b,a,c):e(a,b,c);if(!(g>=f))return[];let i=g-f+1,j=Array(i);if(d)if(h<0)for(let a=0;a<i;++a)j[a]=-((g-a)/h);else for(let a=0;a<i;++a)j[a]=(g-a)*h;else if(h<0)for(let a=0;a<i;++a)j[a]=-((f+a)/h);else for(let a=0;a<i;++a)j[a]=(f+a)*h;return j}function g(a,b,c){return e(a*=1,b*=1,c*=1)[2]}function h(a,b,c){b*=1,a*=1,c*=1;let d=b<a,e=d?g(b,a,c):g(a,b,c);return(d?-1:1)*(e<0?-(1/e):e)}a.s(["default",()=>f,"tickIncrement",()=>g,"tickStep",()=>h])},91210,a=>{"use strict";var b=a.i(4581);a.s(["ticks",()=>b.default])},15669,84993,a=>{"use strict";function b(a,b){return null==a||null==b?NaN:a<b?-1:a>b?1:a>=b?0:NaN}function c(a,b){return null==a||null==b?NaN:b<a?-1:b>a?1:b>=a?0:NaN}function d(a){let d,f,g;function h(a,b,c=0,e=a.length){if(c<e){if(0!==d(b,b))return e;do{let d=c+e>>>1;0>f(a[d],b)?c=d+1:e=d}while(c<e)}return c}return 2!==a.length?(d=b,f=(c,d)=>b(a(c),d),g=(b,c)=>a(b)-c):(d=a===b||a===c?a:e,f=a,g=a),{left:h,center:function(a,b,c=0,d=a.length){let e=h(a,b,c,d-1);return e>c&&g(a[e-1],b)>-g(a[e],b)?e-1:e},right:function(a,b,c=0,e=a.length){if(c<e){if(0!==d(b,b))return e;do{let d=c+e>>>1;0>=f(a[d],b)?c=d+1:e=d}while(c<e)}return c}}}function e(){return 0}a.s(["default",()=>b],84993),a.s(["default",()=>d],15669)},77680,a=>{"use strict";var b=a.i(84993),c=a.i(15669);let d=(0,c.default)(b.default),e=d.right;d.left,(0,c.default)(function(a){return null===a?NaN:+a}).center;var f=a.i(47542),g=a.i(71131);function h(a,b){return a*=1,b*=1,function(c){return Math.round(a*(1-c)+b*c)}}function i(a){return+a}var j=[0,1];function k(a){return a}function l(a,b){var c;return(b-=a*=1)?function(c){return(c-a)/b}:(c=isNaN(b)?NaN:.5,function(){return c})}function m(a,b,c){var d=a[0],e=a[1],f=b[0],g=b[1];return e<d?(d=l(e,d),f=c(g,f)):(d=l(d,e),f=c(f,g)),function(a){return f(d(a))}}function n(a,b,c){var d=Math.min(a.length,b.length)-1,f=Array(d),g=Array(d),h=-1;for(a[d]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());++h<d;)f[h]=l(a[h],a[h+1]),g[h]=c(b[h],b[h+1]);return function(b){var c=e(a,b,1,d)-1;return g[c](f[c](b))}}function o(a,b){return b.domain(a.domain()).range(a.range()).interpolate(a.interpolate()).clamp(a.clamp()).unknown(a.unknown())}function p(){return(function(){var a,b,c,d,e,l,o=j,p=j,q=f.interpolate,r=k;function s(){var a,b,c,f=Math.min(o.length,p.length);return r!==k&&(a=o[0],b=o[f-1],a>b&&(c=a,a=b,b=c),r=function(c){return Math.max(a,Math.min(b,c))}),d=f>2?n:m,e=l=null,t}function t(b){return null==b||isNaN(b*=1)?c:(e||(e=d(o.map(a),p,q)))(a(r(b)))}return t.invert=function(c){return r(b((l||(l=d(p,o.map(a),g.interpolateNumber)))(c)))},t.domain=function(a){return arguments.length?(o=Array.from(a,i),s()):o.slice()},t.range=function(a){return arguments.length?(p=Array.from(a),s()):p.slice()},t.rangeRound=function(a){return p=Array.from(a),q=h,s()},t.clamp=function(a){return arguments.length?(r=!!a||k,s()):r!==k},t.interpolate=function(a){return arguments.length?(q=a,s()):q},t.unknown=function(a){return arguments.length?(c=a,t):c},function(c,d){return a=c,b=d,s()}})()(k,k)}a.s(["copy",()=>o,"default",()=>p],77680)},47539,a=>{"use strict";var b=a.i(91210),c=a.i(4581),d=a.i(77680),e=a.i(88935),f=a.i(74394),g=a.i(82970),g=g,h=a.i(28939);a.s(["scaleLinear",()=>function a(){var i,j=(0,d.default)();return j.copy=function(){return(0,d.copy)(j,a())},e.initRange.apply(j,arguments),i=j.domain,j.ticks=function(a){var c=i();return(0,b.ticks)(c[0],c[c.length-1],null==a?10:a)},j.tickFormat=function(a,b){var d=i();return function(a,b,d,e){var i,j,k,l=(0,c.tickStep)(a,b,d);switch((e=(0,g.default)(null==e?",f":e)).type){case"s":var m=Math.max(Math.abs(a),Math.abs(b));return null!=e.precision||isNaN(k=Math.max(0,3*Math.max(-8,Math.min(8,Math.floor((0,h.default)(m)/3)))-(0,h.default)(Math.abs(l))))||(e.precision=k),(0,f.formatPrefix)(e,m);case"":case"e":case"g":case"p":case"r":null!=e.precision||isNaN((i=l,j=Math.abs(j=Math.max(Math.abs(a),Math.abs(b)))-(i=Math.abs(i)),k=Math.max(0,(0,h.default)(j)-(0,h.default)(i))+1))||(e.precision=k-("e"===e.type));break;case"f":case"%":null!=e.precision||isNaN(k=Math.max(0,-(0,h.default)(Math.abs(l))))||(e.precision=k-("%"===e.type)*2)}return(0,f.format)(e)}(d[0],d[d.length-1],null==a?10:a,b)},j.nice=function(a){null==a&&(a=10);var b,d,e=i(),f=0,g=e.length-1,h=e[f],k=e[g],l=10;for(k<h&&(d=h,h=k,k=d,d=f,f=g,g=d);l-- >0;){if((d=(0,c.tickIncrement)(h,k,a))===b)return e[f]=h,e[g]=k,i(e);if(d>0)h=Math.floor(h/d)*d,k=Math.ceil(k/d)*d;else if(d<0)h=Math.ceil(h*d)/d,k=Math.floor(k*d)/d;else break;b=d}return j},j}],47539)}];
2
-
3
- //# sourceMappingURL=node_modules_6ece6f1e._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[33337,a=>{"use strict";var b=a.i(2085);a.s(["default",0,function(a){return(0,b.default)(a,4)}])},32974,a=>{"use strict";var b=a.i(33337);a.s(["clone",()=>b.default])},97774,35445,77739,61256,a=>{"use strict";var b=a.i(16630);a.s(["constant",()=>b.default],35445);var b=b,c=a.i(82125),d=a.i(45596),e=a.i(65513),f=a.i(39847),g=a.i(81409);a.s(["each",()=>g.default],77739);var g=g,h=a.i(26670),i=a.i(98211),j=a.i(27773),k=a.i(35749),l=a.i(94104),m=(0,j.default)(function(a){return(0,k.default)((0,i.default)(a,1,l.default,!0))}),n=a.i(61577),o=a.i(695);class p{constructor(a={}){this._isDirected=!Object.prototype.hasOwnProperty.call(a,"directed")||a.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(a,"multigraph")&&a.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(a,"compound")&&a.compound,this._label=void 0,this._defaultNodeLabelFn=b.default(void 0),this._defaultEdgeLabelFn=b.default(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(a){return this._label=a,this}graph(){return this._label}setDefaultNodeLabel(a){return c.isFunction(a)||(a=b.default(a)),this._defaultNodeLabelFn=a,this}nodeCount(){return this._nodeCount}nodes(){return d.keys(this._nodes)}sources(){var a=this;return e.filter(this.nodes(),function(b){return f.isEmpty(a._in[b])})}sinks(){var a=this;return e.filter(this.nodes(),function(b){return f.isEmpty(a._out[b])})}setNodes(a,b){var c=arguments,d=this;return g.default(a,function(a){c.length>1?d.setNode(a,b):d.setNode(a)}),this}setNode(a,b){return Object.prototype.hasOwnProperty.call(this._nodes,a)?arguments.length>1&&(this._nodes[a]=b):(this._nodes[a]=arguments.length>1?b:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]="\0",this._children[a]={},this._children["\0"][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount),this}node(a){return this._nodes[a]}hasNode(a){return Object.prototype.hasOwnProperty.call(this._nodes,a)}removeNode(a){if(Object.prototype.hasOwnProperty.call(this._nodes,a)){var b=a=>this.removeEdge(this._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],g.default(this.children(a),a=>{this.setParent(a)}),delete this._children[a]),g.default(d.keys(this._in[a]),b),delete this._in[a],delete this._preds[a],g.default(d.keys(this._out[a]),b),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,b){if(!this._isCompound)throw Error("Cannot set parent in a non-compound graph");if(h.isUndefined(b))b="\0";else{b+="";for(var c=b;!h.isUndefined(c);c=this.parent(c))if(c===a)throw Error("Setting "+b+" as parent of "+a+" would create a cycle");this.setNode(b)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=b,this._children[b][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var b=this._parent[a];if("\0"!==b)return b}}children(a){if(h.isUndefined(a)&&(a="\0"),this._isCompound){var b=this._children[a];if(b)return d.keys(b)}else if("\0"===a)return this.nodes();else if(this.hasNode(a))return[]}predecessors(a){var b=this._preds[a];if(b)return d.keys(b)}successors(a){var b=this._sucs[a];if(b)return d.keys(b)}neighbors(a){var b=this.predecessors(a);if(b)return m(b,this.successors(a))}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){var b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph());var c=this;g.default(this._nodes,function(c,d){a(d)&&b.setNode(d,c)}),g.default(this._edgeObjs,function(a){b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,c.edge(a))});var d={};return this._isCompound&&g.default(b.nodes(),function(a){b.setParent(a,function a(e){var f=c.parent(e);return void 0===f||b.hasNode(f)?(d[e]=f,f):f in d?d[f]:a(f)}(a))}),b}setDefaultEdgeLabel(a){return c.isFunction(a)||(a=b.default(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return n.values(this._edgeObjs)}setPath(a,b){var c=this,d=arguments;return o.reduce(a,function(a,e){return d.length>1?c.setEdge(a,e,b):c.setEdge(a,e),e}),this}setEdge(){var a,b,c,d,e=!1,f=arguments[0];"object"==typeof f&&null!==f&&"v"in f?(a=f.v,b=f.w,c=f.name,2==arguments.length&&(d=arguments[1],e=!0)):(a=f,b=arguments[1],c=arguments[3],arguments.length>2&&(d=arguments[2],e=!0)),a=""+a,b=""+b,h.isUndefined(c)||(c=""+c);var g=s(this._isDirected,a,b,c);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,g))return e&&(this._edgeLabels[g]=d),this;if(!h.isUndefined(c)&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(b),this._edgeLabels[g]=e?d:this._defaultEdgeLabelFn(a,b,c);var i=function(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}var h={v:e,w:f};return d&&(h.name=d),h}(this._isDirected,a,b,c);return a=i.v,b=i.w,Object.freeze(i),this._edgeObjs[g]=i,q(this._preds[b],a),q(this._sucs[a],b),this._in[b][g]=i,this._out[a][g]=i,this._edgeCount++,this}edge(a,b,c){var d=1==arguments.length?t(this._isDirected,arguments[0]):s(this._isDirected,a,b,c);return this._edgeLabels[d]}hasEdge(a,b,c){var d=1==arguments.length?t(this._isDirected,arguments[0]):s(this._isDirected,a,b,c);return Object.prototype.hasOwnProperty.call(this._edgeLabels,d)}removeEdge(a,b,c){var d=1==arguments.length?t(this._isDirected,arguments[0]):s(this._isDirected,a,b,c),e=this._edgeObjs[d];return e&&(a=e.v,b=e.w,delete this._edgeLabels[d],delete this._edgeObjs[d],r(this._preds[b],a),r(this._sucs[a],b),delete this._in[b][d],delete this._out[a][d],this._edgeCount--),this}inEdges(a,b){var c=this._in[a];if(c){var d=n.values(c);return b?e.filter(d,function(a){return a.v===b}):d}}outEdges(a,b){var c=this._out[a];if(c){var d=n.values(c);return b?e.filter(d,function(a){return a.w===b}):d}}nodeEdges(a,b){var c=this.inEdges(a,b);if(c)return c.concat(this.outEdges(a,b))}}function q(a,b){a[b]?a[b]++:a[b]=1}function r(a,b){--a[b]||delete a[b]}function s(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}return e+"\x01"+f+"\x01"+(h.isUndefined(d)?"\0":d)}function t(a,b){return s(a,b.v,b.w,b.name)}p.prototype._nodeCount=0,p.prototype._edgeCount=0,a.s(["Graph",()=>p],61256),a.s([],97774)}];
2
-
3
- //# sourceMappingURL=node_modules_d173e749._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[64525,a=>{"use strict";var b=a.i(84853),c=a.i(30714),d=a.i(12882);function e(a){return a.innerRadius}function f(a){return a.outerRadius}function g(a){return a.startAngle}function h(a){return a.endAngle}function i(a){return a&&a.padAngle}function j(a,b,d,e,f,g,h){var i=a-d,j=b-e,k=(h?g:-g)/(0,c.sqrt)(i*i+j*j),l=k*j,m=-k*i,n=a+l,o=b+m,p=d+l,q=e+m,r=(n+p)/2,s=(o+q)/2,t=p-n,u=q-o,v=t*t+u*u,w=f-g,x=n*q-p*o,y=(u<0?-1:1)*(0,c.sqrt)((0,c.max)(0,w*w*v-x*x)),z=(x*u-t*y)/v,A=(-x*t-u*y)/v,B=(x*u+t*y)/v,C=(-x*t+u*y)/v,D=z-r,E=A-s,F=B-r,G=C-s;return D*D+E*E>F*F+G*G&&(z=B,A=C),{cx:z,cy:A,x01:-l,y01:-m,x11:z*(f/w-1),y11:A*(f/w-1)}}a.s(["arc",0,function(){var a=e,k=f,l=(0,b.default)(0),m=null,n=g,o=h,p=i,q=null,r=(0,d.withPath)(s);function s(){var b,d,e=+a.apply(this,arguments),f=+k.apply(this,arguments),g=n.apply(this,arguments)-c.halfPi,h=o.apply(this,arguments)-c.halfPi,i=(0,c.abs)(h-g),s=h>g;if(q||(q=b=r()),f<e&&(d=f,f=e,e=d),f>c.epsilon)if(i>c.tau-c.epsilon)q.moveTo(f*(0,c.cos)(g),f*(0,c.sin)(g)),q.arc(0,0,f,g,h,!s),e>c.epsilon&&(q.moveTo(e*(0,c.cos)(h),e*(0,c.sin)(h)),q.arc(0,0,e,h,g,s));else{var t,u,v=g,w=h,x=g,y=h,z=i,A=i,B=p.apply(this,arguments)/2,C=B>c.epsilon&&(m?+m.apply(this,arguments):(0,c.sqrt)(e*e+f*f)),D=(0,c.min)((0,c.abs)(f-e)/2,+l.apply(this,arguments)),E=D,F=D;if(C>c.epsilon){var G=(0,c.asin)(C/e*(0,c.sin)(B)),H=(0,c.asin)(C/f*(0,c.sin)(B));(z-=2*G)>c.epsilon?(G*=s?1:-1,x+=G,y-=G):(z=0,x=y=(g+h)/2),(A-=2*H)>c.epsilon?(H*=s?1:-1,v+=H,w-=H):(A=0,v=w=(g+h)/2)}var I=f*(0,c.cos)(v),J=f*(0,c.sin)(v),K=e*(0,c.cos)(y),L=e*(0,c.sin)(y);if(D>c.epsilon){var M,N=f*(0,c.cos)(w),O=f*(0,c.sin)(w),P=e*(0,c.cos)(x),Q=e*(0,c.sin)(x);if(i<c.pi)if(M=function(a,b,d,e,f,g,h,i){var j=d-a,k=e-b,l=h-f,m=i-g,n=m*j-l*k;if(!(n*n<c.epsilon))return n=(l*(b-g)-m*(a-f))/n,[a+n*j,b+n*k]}(I,J,P,Q,N,O,K,L)){var R=I-M[0],S=J-M[1],T=N-M[0],U=O-M[1],V=1/(0,c.sin)((0,c.acos)((R*T+S*U)/((0,c.sqrt)(R*R+S*S)*(0,c.sqrt)(T*T+U*U)))/2),W=(0,c.sqrt)(M[0]*M[0]+M[1]*M[1]);E=(0,c.min)(D,(e-W)/(V-1)),F=(0,c.min)(D,(f-W)/(V+1))}else E=F=0}A>c.epsilon?F>c.epsilon?(t=j(P,Q,I,J,f,F,s),u=j(N,O,K,L,f,F,s),q.moveTo(t.cx+t.x01,t.cy+t.y01),F<D?q.arc(t.cx,t.cy,F,(0,c.atan2)(t.y01,t.x01),(0,c.atan2)(u.y01,u.x01),!s):(q.arc(t.cx,t.cy,F,(0,c.atan2)(t.y01,t.x01),(0,c.atan2)(t.y11,t.x11),!s),q.arc(0,0,f,(0,c.atan2)(t.cy+t.y11,t.cx+t.x11),(0,c.atan2)(u.cy+u.y11,u.cx+u.x11),!s),q.arc(u.cx,u.cy,F,(0,c.atan2)(u.y11,u.x11),(0,c.atan2)(u.y01,u.x01),!s))):(q.moveTo(I,J),q.arc(0,0,f,v,w,!s)):q.moveTo(I,J),e>c.epsilon&&z>c.epsilon?E>c.epsilon?(t=j(K,L,N,O,e,-E,s),u=j(I,J,P,Q,e,-E,s),q.lineTo(t.cx+t.x01,t.cy+t.y01),E<D?q.arc(t.cx,t.cy,E,(0,c.atan2)(t.y01,t.x01),(0,c.atan2)(u.y01,u.x01),!s):(q.arc(t.cx,t.cy,E,(0,c.atan2)(t.y01,t.x01),(0,c.atan2)(t.y11,t.x11),!s),q.arc(0,0,e,(0,c.atan2)(t.cy+t.y11,t.cx+t.x11),(0,c.atan2)(u.cy+u.y11,u.cx+u.x11),s),q.arc(u.cx,u.cy,E,(0,c.atan2)(u.y11,u.x11),(0,c.atan2)(u.y01,u.x01),!s))):q.arc(0,0,e,y,x,s):q.lineTo(K,L)}else q.moveTo(0,0);if(q.closePath(),b)return q=null,b+""||null}return s.centroid=function(){var b=(+a.apply(this,arguments)+ +k.apply(this,arguments))/2,d=(+n.apply(this,arguments)+ +o.apply(this,arguments))/2-c.pi/2;return[(0,c.cos)(d)*b,(0,c.sin)(d)*b]},s.innerRadius=function(c){return arguments.length?(a="function"==typeof c?c:(0,b.default)(+c),s):a},s.outerRadius=function(a){return arguments.length?(k="function"==typeof a?a:(0,b.default)(+a),s):k},s.cornerRadius=function(a){return arguments.length?(l="function"==typeof a?a:(0,b.default)(+a),s):l},s.padRadius=function(a){return arguments.length?(m=null==a?null:"function"==typeof a?a:(0,b.default)(+a),s):m},s.startAngle=function(a){return arguments.length?(n="function"==typeof a?a:(0,b.default)(+a),s):n},s.endAngle=function(a){return arguments.length?(o="function"==typeof a?a:(0,b.default)(+a),s):o},s.padAngle=function(a){return arguments.length?(p="function"==typeof a?a:(0,b.default)(+a),s):p},s.context=function(a){return arguments.length?(q=null==a?null:a,s):q},s}],64525)}];
2
-
3
- //# sourceMappingURL=node_modules_d3-shape_src_arc_fb1ac087.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[93389,a=>{"use strict";var b=a.i(34499),c=a.i(34603),d=(0,c.__name)((a,d,g,h)=>{a.attr("class",g);let{width:i,height:j,x:k,y:l}=e(a,d);(0,b.configureSvgSize)(a,j,i,h);let m=f(k,l,i,j,d);a.attr("viewBox",m),c.log.debug(`viewBox configured: ${m} with padding: ${d}`)},"setupViewPortForSVG"),e=(0,c.__name)((a,b)=>{let c=a.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:c.width+2*b,height:c.height+2*b,x:c.x,y:c.y}},"calculateDimensionsWithPadding"),f=(0,c.__name)((a,b,c,d,e)=>`${a-e} ${b-e} ${c} ${d}`,"createViewBox");a.s(["setupViewPortForSVG",()=>d])},52199,a=>{"use strict";var b=a.i(34603);a.i(75930);var c=a.i(71731),d=(0,b.__name)((a,b)=>{let d;return"sandbox"===b&&(d=(0,c.select)("#i"+a)),("sandbox"===b?(0,c.select)(d.nodes()[0].contentDocument.body):(0,c.select)("body")).select(`[id="${a}"]`)},"getDiagramElement");a.s(["getDiagramElement",()=>d])},84220,a=>{"use strict";var b=a.i(68020);a.i(52199),a.i(93389),a.i(68437),a.i(95625),a.i(38690),a.i(4430),a.i(72325),a.i(22611),a.i(2758),a.i(99780),a.i(34499);var c=a.i(34603),d={parser:b.stateDiagram_default,get db(){return new b.StateDB(2)},renderer:b.stateRenderer_v3_unified_default,styles:b.styles_default,init:(0,c.__name)(a=>{a.state||(a.state={}),a.state.arrowMarkerAbsolute=a.arrowMarkerAbsolute},"init")};a.s(["diagram",()=>d])}];
2
-
3
- //# sourceMappingURL=node_modules_mermaid_dist_chunks_mermaid_core_1f73a830._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[33132,a=>{"use strict";var b=a.i(34499),c=a.i(34603),d=a.i(70773),e=(0,c.__name)((a,b)=>{let c=a.append("rect");if(c.attr("x",b.x),c.attr("y",b.y),c.attr("fill",b.fill),c.attr("stroke",b.stroke),c.attr("width",b.width),c.attr("height",b.height),b.name&&c.attr("name",b.name),b.rx&&c.attr("rx",b.rx),b.ry&&c.attr("ry",b.ry),void 0!==b.attrs)for(let a in b.attrs)c.attr(a,b.attrs[a]);return b.class&&c.attr("class",b.class),c},"drawRect"),f=(0,c.__name)((a,b)=>{e(a,{x:b.startx,y:b.starty,width:b.stopx-b.startx,height:b.stopy-b.starty,fill:b.fill,stroke:b.stroke,class:"rect"}).lower()},"drawBackgroundRect"),g=(0,c.__name)((a,c)=>{let d=c.text.replace(b.lineBreakRegex," "),e=a.append("text");e.attr("x",c.x),e.attr("y",c.y),e.attr("class","legend"),e.style("text-anchor",c.anchor),c.class&&e.attr("class",c.class);let f=e.append("tspan");return f.attr("x",c.x+2*c.textMargin),f.text(d),e},"drawText"),h=(0,c.__name)((a,b,c,e)=>{let f=a.append("image");f.attr("x",b),f.attr("y",c);let g=(0,d.sanitizeUrl)(e);f.attr("xlink:href",g)},"drawImage"),i=(0,c.__name)((a,b,c,e)=>{let f=a.append("use");f.attr("x",b),f.attr("y",c);let g=(0,d.sanitizeUrl)(e);f.attr("xlink:href",`#${g}`)},"drawEmbeddedImage"),j=(0,c.__name)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),k=(0,c.__name)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");a.s(["drawBackgroundRect",()=>f,"drawEmbeddedImage",()=>i,"drawImage",()=>h,"drawRect",()=>e,"drawText",()=>g,"getNoteRect",()=>j,"getTextObj",()=>k])},20718,a=>{"use strict";var b=a.i(34603),c=class{constructor(a){this.init=a,this.records=this.init()}static{(0,b.__name)(this,"ImperativeState")}reset(){this.records=this.init()}};a.s(["ImperativeState",()=>c])}];
2
-
3
- //# sourceMappingURL=node_modules_mermaid_dist_chunks_mermaid_core_663ac803._.js.map
@@ -1,17 +0,0 @@
1
- module.exports=[30825,a=>{"use strict";var b=(0,a.i(34603).__name)(()=>`
2
- /* Font Awesome icon styling - consolidated */
3
- .label-icon {
4
- display: inline-block;
5
- height: 1em;
6
- overflow: visible;
7
- vertical-align: -0.125em;
8
- }
9
-
10
- .node .label-icon path {
11
- fill: currentColor;
12
- stroke: revert;
13
- stroke-width: revert;
14
- }
15
- `,"getIconStyles");a.s(["getIconStyles",()=>b])}];
16
-
17
- //# sourceMappingURL=node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_4f485529._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[33132,a=>{"use strict";var b=a.i(34499),c=a.i(34603),d=a.i(70773),e=(0,c.__name)((a,b)=>{let c=a.append("rect");if(c.attr("x",b.x),c.attr("y",b.y),c.attr("fill",b.fill),c.attr("stroke",b.stroke),c.attr("width",b.width),c.attr("height",b.height),b.name&&c.attr("name",b.name),b.rx&&c.attr("rx",b.rx),b.ry&&c.attr("ry",b.ry),void 0!==b.attrs)for(let a in b.attrs)c.attr(a,b.attrs[a]);return b.class&&c.attr("class",b.class),c},"drawRect"),f=(0,c.__name)((a,b)=>{e(a,{x:b.startx,y:b.starty,width:b.stopx-b.startx,height:b.stopy-b.starty,fill:b.fill,stroke:b.stroke,class:"rect"}).lower()},"drawBackgroundRect"),g=(0,c.__name)((a,c)=>{let d=c.text.replace(b.lineBreakRegex," "),e=a.append("text");e.attr("x",c.x),e.attr("y",c.y),e.attr("class","legend"),e.style("text-anchor",c.anchor),c.class&&e.attr("class",c.class);let f=e.append("tspan");return f.attr("x",c.x+2*c.textMargin),f.text(d),e},"drawText"),h=(0,c.__name)((a,b,c,e)=>{let f=a.append("image");f.attr("x",b),f.attr("y",c);let g=(0,d.sanitizeUrl)(e);f.attr("xlink:href",g)},"drawImage"),i=(0,c.__name)((a,b,c,e)=>{let f=a.append("use");f.attr("x",b),f.attr("y",c);let g=(0,d.sanitizeUrl)(e);f.attr("xlink:href",`#${g}`)},"drawEmbeddedImage"),j=(0,c.__name)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),k=(0,c.__name)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");a.s(["drawBackgroundRect",()=>f,"drawEmbeddedImage",()=>i,"drawImage",()=>h,"drawRect",()=>e,"drawText",()=>g,"getNoteRect",()=>j,"getTextObj",()=>k])}];
2
-
3
- //# sourceMappingURL=node_modules_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_8436a62a._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[93389,a=>{"use strict";var b=a.i(34499),c=a.i(34603),d=(0,c.__name)((a,d,g,h)=>{a.attr("class",g);let{width:i,height:j,x:k,y:l}=e(a,d);(0,b.configureSvgSize)(a,j,i,h);let m=f(k,l,i,j,d);a.attr("viewBox",m),c.log.debug(`viewBox configured: ${m} with padding: ${d}`)},"setupViewPortForSVG"),e=(0,c.__name)((a,b)=>{let c=a.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:c.width+2*b,height:c.height+2*b,x:c.x,y:c.y}},"calculateDimensionsWithPadding"),f=(0,c.__name)((a,b,c,d,e)=>`${a-e} ${b-e} ${c} ${d}`,"createViewBox");a.s(["setupViewPortForSVG",()=>d])},52199,a=>{"use strict";var b=a.i(34603);a.i(75930);var c=a.i(71731),d=(0,b.__name)((a,b)=>{let d;return"sandbox"===b&&(d=(0,c.select)("#i"+a)),("sandbox"===b?(0,c.select)(d.nodes()[0].contentDocument.body):(0,c.select)("body")).select(`[id="${a}"]`)},"getDiagramElement");a.s(["getDiagramElement",()=>d])}];
2
-
3
- //# sourceMappingURL=node_modules_mermaid_dist_chunks_mermaid_core_f78d2dc4._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[27572,a=>{"use strict";var b=a.i(7997);function c({children:a}){return(0,b.jsx)("html",{lang:"en",children:(0,b.jsx)("body",{className:"antialiased",children:a})})}a.s(["default",()=>c,"metadata",0,{title:"DevFlow MCP - Context-First Kanban for AI Agents",description:"Plan management and task management system with Model Context Protocol integration for AI agents"}])}];
2
-
3
- //# sourceMappingURL=src_app_layout_tsx_cc8184fa._.js.map
@@ -1,26 +0,0 @@
1
- {
2
- "version": 1,
3
- "artifacts": {
4
- "proposal": {
5
- "state": "approved",
6
- "approvedAt": "2026-02-24T12:06:58.336Z",
7
- "contentHash": "f8a95a1cb19cb9b1352c56ee5201b175ef32644d9439f15b1e9fb25fcc56c28a",
8
- "approvedBy": "human"
9
- },
10
- "specs": {
11
- "state": "approved",
12
- "approvedAt": "2026-02-24T12:08:31.233Z",
13
- "contentHash": "49c937f127eb06cb3dc5e585e0d6d2ca734a8a264f3a265254edb55f866d954c",
14
- "approvedBy": "human"
15
- },
16
- "design": {
17
- "state": "approved",
18
- "approvedAt": "2026-02-24T12:12:32.410Z",
19
- "contentHash": "d0591dfea1d6fbe296266121cd3832d70db78e653b409d58dbb0d450cf329be5",
20
- "approvedBy": "human"
21
- },
22
- "tasks": {
23
- "state": "draft"
24
- }
25
- }
26
- }
@@ -1,8 +0,0 @@
1
- {
2
- "name": "add-default-schema-template-selection",
3
- "title": "Add Default Schema Template Selection and Team-Oriented Templates",
4
- "description": "Add three common default schema templates for software teams and prompt users during devflow init to choose one, while preserving support for custom project templates.",
5
- "projectId": "6e86100c-1ce0-4177-abba-f74082db5f05",
6
- "schema": "spec-driven",
7
- "createdAt": "2026-02-24T12:01:34.200Z"
8
- }
@@ -1,126 +0,0 @@
1
- # Design: Add Default Schema Template Selection and Team-Oriented Templates
2
-
3
- ## Overview
4
-
5
- Implement a schema-template registry with four built-in templates and integrate template selection into `devflow init`. The selected template is persisted as the project default and used for new specs unless an explicit override is provided.
6
-
7
- Built-in templates:
8
- - `frontend-product`
9
- - `backend-api`
10
- - `data-engineering`
11
- - `devops-platform`
12
-
13
- The design preserves all existing custom template behavior and adds deterministic non-interactive handling.
14
-
15
- ## Architecture
16
-
17
- ### Components
18
-
19
- 1. Template Registry
20
- - Central source of available templates.
21
- - Provides metadata (`id`, `name`, `description`, `source`, `path`) and resolution logic.
22
- - Merges:
23
- - Built-in templates shipped with DevFlow.
24
- - Custom templates discovered from project paths.
25
-
26
- 2. Init Template Selector
27
- - Invoked by `devflow init` after project/bootstrap checks.
28
- - Determines selection strategy:
29
- - Explicit CLI flag (highest precedence).
30
- - Existing configured default (offer keep/change in interactive mode).
31
- - Interactive prompt selection.
32
- - Non-interactive fallback behavior.
33
- - Returns selected template ID.
34
-
35
- 3. Project Default Schema Persistence
36
- - Stores selected template ID in project-level config/metadata.
37
- - Loader used by spec creation flow to resolve default template.
38
-
39
- 4. Spec Creation Integration
40
- - `create_spec` and related flows resolve schema in this order:
41
- 1. Explicit schema override parameter.
42
- 2. Project default schema template.
43
- 3. Legacy fallback default (for backward compatibility).
44
-
45
- 5. Validation and Error Surface
46
- - Validates selected template IDs against resolved registry.
47
- - Emits actionable errors with available IDs.
48
-
49
- ### Flow
50
-
51
- 1. `devflow init` loads template registry.
52
- 2. Selection strategy resolves a template ID.
53
- 3. Init persists selected ID as project default schema.
54
- 4. Init summary prints selected default and persistence location.
55
- 5. Later spec creation reads project default schema unless overridden.
56
-
57
- ## Data Model Changes
58
-
59
- No relational schema migration required unless project metadata currently lacks schema-default storage.
60
-
61
- If persistence does not already exist, add a project metadata field:
62
- - `defaultSchemaTemplateId: string | null`
63
-
64
- This can be implemented in existing project config storage (preferred) or DB-backed project metadata if required by current architecture.
65
-
66
- ## API Changes
67
-
68
- ### CLI
69
-
70
- Add/extend `devflow init` options:
71
- - `--schema <template-id>`: explicitly choose template.
72
- - `--non-interactive`: disable prompts (if already supported, reuse current flag semantics).
73
-
74
- Behavior changes:
75
- - Interactive `devflow init` prompts for template when not explicitly provided.
76
- - Non-interactive mode requires explicit schema or uses documented fallback.
77
-
78
- ### Internal MCP/Service Layer
79
-
80
- No mandatory new external MCP tool is required for this phase. Existing spec creation should consume project default transparently.
81
-
82
- (Optional internal endpoints/helpers may be added for listing templates or setting defaults if needed by UI.)
83
-
84
- ## Implementation Notes
85
-
86
- - Built-in template assets:
87
- - Add four template folders/files under schema/template directory.
88
- - Each template should include proposal/specs/design/tasks templates aligned to team context.
89
-
90
- - Template discoverability:
91
- - Registry must de-duplicate IDs and preserve deterministic precedence.
92
- - If a custom template ID conflicts with a built-in, fail with clear conflict error or apply explicit precedence rule (recommended: fail fast).
93
-
94
- - Backward compatibility:
95
- - Existing projects with no configured default must continue working via legacy default path.
96
- - Existing custom templates remain unchanged and selectable.
97
-
98
- - Non-interactive behavior:
99
- - Recommended fallback: if existing project default exists, reuse it; otherwise require explicit `--schema` and return a clear error.
100
-
101
- - UX copy:
102
- - Prompt descriptions should help users choose template by team type and artifact emphasis.
103
-
104
- ## Testing Strategy
105
-
106
- 1. Unit Tests
107
- - Template registry returns all four built-ins.
108
- - Registry includes custom templates and validates conflicts.
109
- - Selection precedence logic (flag > existing default > prompt > fallback).
110
- - Validation rejects unknown schema IDs with available options.
111
-
112
- 2. CLI/Integration Tests
113
- - Interactive init path selects built-in template and persists default.
114
- - Init with `--schema backend-api` sets correct default without prompt.
115
- - Re-init with existing default supports keep/change behavior.
116
- - Non-interactive init with explicit schema succeeds.
117
- - Non-interactive init without schema and without prior default follows documented fallback/error behavior.
118
-
119
- 3. Spec Creation Regression Tests
120
- - New spec uses project default schema when override not supplied.
121
- - Explicit schema override still takes precedence.
122
- - Existing projects without schema default continue using legacy behavior.
123
-
124
- 4. Docs/Help Verification
125
- - `devflow init --help` includes schema selection options.
126
- - User docs describe template purpose, selection flow, and custom-template compatibility.
@@ -1,65 +0,0 @@
1
- # Proposal: Add Default Schema Template Selection and Team-Oriented Templates
2
-
3
- ## Problem Statement
4
-
5
- DevFlow currently supports schema-driven workflows but assumes users either use the current default or manually create custom templates. Different software teams document and execute work differently, especially across frontend delivery, backend/API implementation, data engineering pipelines, and devops/platform operations.
6
-
7
- Without a curated set of default templates and a clear selection step during `devflow init`, teams face setup friction and inconsistent artifacts that do not match their delivery model.
8
-
9
- ## Proposed Solution
10
-
11
- Introduce four built-in, team-oriented default schema templates and add an interactive schema selection step to `devflow init`.
12
-
13
- During initialization, DevFlow will present the built-in template list and let the user choose one as the project default. The selected template becomes the schema used for new specs/tasks unless overridden.
14
-
15
- The built-in templates will target common delivery patterns:
16
-
17
- 1. Frontend/Product Delivery Template
18
- - Optimized for web/mobile product teams shipping user-facing features.
19
- - Emphasizes UX flows, component/system design impact, API consumption changes, frontend observability, and rollout strategy.
20
-
21
- 2. Backend/API Development Template
22
- - Optimized for backend service teams building application logic, APIs, and integrations.
23
- - Emphasizes domain boundaries, API contract/versioning, dependency changes, database/model migrations, service-level testing, and release compatibility.
24
-
25
- 3. Data Engineering & Analytics Template
26
- - Optimized for data platform teams working on ingestion, transformation, modeling, quality, and downstream analytics/BI contracts.
27
- - Emphasizes source/target lineage, schema evolution, backfill/migration strategy, data quality checks, SLAs, and validation evidence.
28
-
29
- 4. DevOps & Platform Reliability Template
30
- - Optimized for infra/platform teams managing services, CI/CD, operations, and reliability.
31
- - Emphasizes architecture and integration boundaries, infrastructure changes, deployment plans, rollback/runbooks, SLOs, security controls, and operational readiness.
32
-
33
- Custom templates remain fully supported exactly as today. Teams can still create project-specific schemas and select them where appropriate.
34
-
35
- ## Scope
36
-
37
- ### In Scope
38
- - Add four built-in schema templates aligned to frontend, backend, data engineering, and devops/platform workflows.
39
- - Add `devflow init` prompt to select a default schema template.
40
- - Persist selected default template in project configuration/metadata for subsequent spec creation.
41
- - Keep compatibility with existing custom template workflows.
42
- - Provide clear CLI/help messaging around template selection and override behavior.
43
-
44
- ### Out of Scope
45
- - Large redesign of the entire schema engine.
46
- - Automatic migration of existing specs to a new template structure.
47
- - Support for unlimited marketplace/downloaded templates in this phase.
48
- - Opinionated enforcement of one template per repository forever (project can still evolve choices).
49
-
50
- ## Success Criteria
51
-
52
- - Running `devflow init` prompts the user to choose a default schema from the built-ins (and/or existing custom templates, if present).
53
- - New specs created after init use the selected schema by default.
54
- - Teams can still create and use custom templates for project-specific needs with no regression.
55
- - Built-in templates provide explicit sections that cover architecture, APIs/integrations, testing/validation, deployment, and operational concerns according to team type.
56
- - Existing repositories that do not re-run init continue to function without breaking changes.
57
-
58
- ## Risks & Assumptions
59
-
60
- - Risk: Template definitions may be too generic or too rigid for some teams.
61
- - Assumption: Starting with high-coverage templates captures most common workflows and can be refined iteratively.
62
- - Risk: Interactive init behavior could complicate non-interactive/CI setup.
63
- - Assumption: A non-interactive flag/default fallback can be added to preserve automation use cases.
64
- - Risk: Confusion between built-in and custom template precedence.
65
- - Assumption: CLI output and docs will clearly state selection, defaulting, and override behavior.
@@ -1,107 +0,0 @@
1
- # Specifications: Add Default Schema Template Selection and Team-Oriented Templates
2
-
3
- ## Overview
4
-
5
- This specification defines requirements to introduce curated built-in schema templates and support default template selection during `devflow init`, while preserving compatibility with custom project templates.
6
-
7
- ### Requirement: Provide Built-In Team-Oriented Templates
8
-
9
- **SHALL** provide four built-in schema templates for common software delivery team patterns.
10
-
11
- #### Scenario: Built-In Templates Are Discoverable
12
-
13
- **Given** DevFlow is installed
14
- **When** template metadata is queried by initialization flow
15
- **Then** the system exposes the built-in templates `frontend-product`, `backend-api`, `data-engineering`, and `devops-platform`
16
-
17
- #### Scenario: Built-In Template Definitions Exist
18
-
19
- **Given** template registry is loaded
20
- **When** a built-in template is selected
21
- **Then** the schema and artifact templates required by spec workflow are available for that template
22
-
23
- ### Requirement: Support Init-Time Default Template Selection
24
-
25
- **SHALL** prompt users during `devflow init` to choose a default schema template for the project.
26
-
27
- #### Scenario: Interactive Init Presents Template Choices
28
-
29
- **Given** user runs `devflow init` in an interactive terminal
30
- **When** initialization reaches schema setup
31
- **Then** user is shown built-in template options and can select one as project default
32
-
33
- #### Scenario: Selected Template Persists as Project Default
34
-
35
- **Given** user selects a template during `devflow init`
36
- **When** initialization completes
37
- **Then** project configuration stores the selected schema template as default for new specs
38
-
39
- #### Scenario: Init Uses Existing Default When Re-Initializing
40
-
41
- **Given** a project already has a default schema template configured
42
- **When** user re-runs `devflow init`
43
- **Then** init shows the current default and allows keeping or changing it
44
-
45
- ### Requirement: Preserve Custom Template Compatibility
46
-
47
- **SHALL** maintain support for user-defined/custom templates without breaking existing workflows.
48
-
49
- #### Scenario: Existing Custom Template Remains Usable
50
-
51
- **Given** a project has a custom schema template already configured
52
- **When** user creates or continues specs
53
- **Then** existing custom template behavior remains unchanged unless user explicitly switches defaults
54
-
55
- #### Scenario: Init Lists Custom Templates Alongside Built-Ins
56
-
57
- **Given** project contains custom templates discoverable by DevFlow
58
- **When** user is prompted during `devflow init`
59
- **Then** custom templates can be selected as default in addition to built-in templates
60
-
61
- ### Requirement: Default Selection Applies to New Specs
62
-
63
- **SHALL** use the project default schema template when creating new specs unless an explicit override is supplied.
64
-
65
- #### Scenario: New Spec Uses Project Default Template
66
-
67
- **Given** project default template is set to `backend-api`
68
- **When** user runs spec creation without schema override
69
- **Then** newly created spec uses `backend-api` template artifacts
70
-
71
- #### Scenario: Explicit Schema Override Takes Precedence
72
-
73
- **Given** project default template is `frontend-product`
74
- **When** user creates a spec with explicit template override `devops-platform`
75
- **Then** new spec uses `devops-platform` for that spec
76
-
77
- ### Requirement: Support Non-Interactive Init Behavior
78
-
79
- **SHALL** provide deterministic behavior for non-interactive environments where prompting is unavailable.
80
-
81
- #### Scenario: Non-Interactive Init With Explicit Template Flag
82
-
83
- **Given** `devflow init` runs in non-interactive mode
84
- **When** user passes explicit template selection option
85
- **Then** init uses the provided template without prompting
86
-
87
- #### Scenario: Non-Interactive Init Without Explicit Template
88
-
89
- **Given** `devflow init` runs in non-interactive mode and no default is preconfigured
90
- **When** initialization requires template selection
91
- **Then** init applies documented fallback behavior or fails with actionable guidance
92
-
93
- ### Requirement: Provide Clear CLI and Summary Messaging
94
-
95
- **SHALL** provide user-facing output that clearly communicates template selection and resulting default.
96
-
97
- #### Scenario: Init Output Confirms Selected Default
98
-
99
- **Given** init completes successfully
100
- **When** final summary is printed
101
- **Then** output includes selected default template name and where it was persisted
102
-
103
- #### Scenario: Invalid Template Selection Is Rejected
104
-
105
- **Given** user or flag supplies an unknown template ID
106
- **When** init validates selection
107
- **Then** init fails with an error listing valid template IDs