@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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +4 -4
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +14 -13
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -13
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js +2 -2
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js +2 -2
- package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/approve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/specs/[name]/artifacts/[artifactType]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js +2 -2
- package/.next/standalone/.next/server/app/api/specs/[name]/promote/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/specs/[name]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/specs/[name]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/specs/route.js +2 -2
- package/.next/standalone/.next/server/app/api/specs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tasks/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -14
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -14
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -4
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/specs/[name]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/specs/[name]/page.js +2 -2
- package/.next/standalone/.next/server/app/specs/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/specs/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0be0eb8b._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__a9d478ee._.js → [root-of-the-server]__160c54ca._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__17ac51e3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bb083e9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1dc1e944._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__22ecfa2c._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13a93eb6._.js → [root-of-the-server]__64710c0d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a2b7e5f2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__cf302bda._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d85482cd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__dfa21757._.js +3 -0
- package/.next/standalone/.next/server/chunks/_3f452afe._.js +2 -2
- package/.next/standalone/.next/server/chunks/src_db_index_ts_a71f50f0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__023e2c69._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0a1a1435._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c49a387._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1be1fc5f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3a2f2efb._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4693399c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__937c9212._.js → [root-of-the-server]__72a14301._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8064ca06._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8b786d48._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8c052461._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__8d306066._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9532fd59._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a119dd75._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__7fb6ef14._.js → [root-of-the-server]__a57b312b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a80bd0ea._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__abe095b3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ad3bd783._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1e05fe0e._.js → [root-of-the-server]__ae9f05d6._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8781469._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__c8a25070._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e8c1e595._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0ff3de19._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_01a5cd4b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_05c6819f._.js +31 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_06c2c30a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_09efe605._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_ef601841._.js → node_modules_0a439e3b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_3507b41a._.js → node_modules_0e73ad6c._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0e7ff06d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0f73e25c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_14cf9cea._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_19801f01._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_2235b8cf._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_23096c6d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_23db4cf7._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_24381e95._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_24ca0eb6._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_27525793._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_4cfa6360._.js → node_modules_27c20382._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_2c901b92._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_33b818b7._.js +45 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_345d7791._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_36185c24._.js +45 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3ac7ce09._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_41b77cc7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_ed317ff6._.js → node_modules_42acd8db._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_434aa5ec._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_54a9e72d._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_54f1273a._.js +26 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_58d64491._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5e012e3d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5ea9e4cf._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5ecf8270._.js +26 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_611c99b5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_d3-scale_src_e02ef77f._.js → node_modules_6629853d._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_6fe2661c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_7fe65a84._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_860f971a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_882f3743._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_8e047938._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_9268cdc4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_942541c9._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_9d52c0d6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@tanstack_query-core_build_modern_21ece5ea._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_ae6841d2._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_ba280bb0._.js +31 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_bffdb8ec._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_c00f1821._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_c142ba86._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d1a47cde._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d9b454fe._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_dbe36b1d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_ddbe26b7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_e76b8bf2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_e945b74d._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_fbd8a2ee._.js +17 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_31d456ba._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_katex_dist_katex_mjs_e1edc676._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_lodash-es_33e24dce._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_159fba97._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_dbeeb277._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_mermaid_core_mjs_a11916de._.js +9 -0
- package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_components_kanban-board_tsx_7b875e8e._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/AGENTS.md +13 -7
- package/.next/standalone/CONTRIBUTING.md +42 -26
- package/.next/standalone/README.md +166 -25
- package/.next/standalone/bin/devflow.js +12 -5
- package/.next/standalone/bun.lock +78 -24
- package/.next/standalone/devflow/project-config.json +4 -0
- package/.next/standalone/devflow/schemas/api-first/schema.yaml +39 -0
- package/.next/standalone/devflow/schemas/api-first/templates/api-design.md +41 -0
- package/.next/standalone/devflow/schemas/api-first/templates/db-design.md +28 -0
- package/.next/standalone/devflow/schemas/api-first/templates/final-architecture.md +31 -0
- package/.next/standalone/devflow/schemas/api-first/templates/proposal.md +22 -0
- package/.next/standalone/devflow/schemas/api-first/templates/tasks.md +16 -0
- package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.approvals.json +1 -1
- package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/.meta.json +1 -1
- package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/design.md +11 -0
- package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/proposal.md +3 -0
- package/.next/standalone/devflow/specs/autodetect-skill-and-slash-command-installation/tasks.md +34 -2
- package/.next/standalone/devflow/specs/precommit/.approvals.json +26 -0
- package/.next/standalone/devflow/specs/precommit/.meta.json +7 -0
- package/.next/standalone/devflow/specs/precommit/design.md +105 -0
- package/.next/standalone/devflow/specs/precommit/proposal.md +43 -0
- package/.next/standalone/devflow/specs/precommit/specs.md +89 -0
- package/.next/standalone/devflow/specs/precommit/tasks.md +283 -0
- package/.next/standalone/docs/custom-schemas.md +117 -0
- package/.next/standalone/docs/local-dev-guide.md +73 -0
- package/.next/standalone/drizzle.config.ts +7 -7
- package/.next/standalone/eslint.config.mjs +2 -2
- package/.next/standalone/instrumentation.ts +3 -5
- package/.next/standalone/next.config.ts +11 -2
- package/.next/standalone/node_modules/{sharp → libsql}/node_modules/detect-libc/package.json +4 -8
- package/.next/standalone/package-lock.json +5257 -2085
- package/.next/standalone/package.json +16 -7
- package/.next/standalone/postcss.config.mjs +1 -1
- package/.next/standalone/scripts/init-db.js +3 -5
- package/.next/standalone/scripts/init-db.test.js +6 -6
- package/.next/standalone/scripts/init-schema.js +22 -22
- package/.next/standalone/scripts/init-schema.test.js +45 -45
- package/.next/standalone/scripts/install-environments.js +27 -8
- package/.next/standalone/scripts/install-environments.test.js +19 -10
- package/.next/standalone/scripts/install-skills.js +104 -31
- package/.next/standalone/scripts/install-skills.test.js +6 -6
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/app/api/agents/route.ts +2 -2
- package/.next/standalone/src/app/api/projects/[id]/route.ts +10 -19
- package/.next/standalone/src/app/api/projects/route.ts +4 -10
- package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
- package/.next/standalone/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
- package/.next/standalone/src/app/api/specs/[name]/promote/route.ts +17 -23
- package/.next/standalone/src/app/api/specs/[name]/route.ts +34 -36
- package/.next/standalone/src/app/api/specs/route.ts +10 -10
- package/.next/standalone/src/app/api/tasks/[id]/route.ts +11 -33
- package/.next/standalone/src/app/api/tasks/route.ts +3 -6
- package/.next/standalone/src/app/globals.css +3 -3
- package/.next/standalone/src/app/layout.tsx +9 -5
- package/.next/standalone/src/app/page.tsx +1 -1
- package/.next/standalone/src/app/specs/[name]/page.tsx +26 -68
- package/.next/standalone/src/components/kanban-board.tsx +78 -157
- package/.next/standalone/src/components/kanban-column.tsx +10 -12
- package/.next/standalone/src/components/markdown-preview.tsx +36 -19
- package/.next/standalone/src/components/providers.tsx +20 -0
- package/.next/standalone/src/components/specs/artifact-dag-status.tsx +12 -14
- package/.next/standalone/src/components/specs/artifact-editor.tsx +55 -26
- package/.next/standalone/src/components/specs/spec-detail.tsx +48 -40
- package/.next/standalone/src/components/specs/spec-kanban-column.tsx +49 -68
- package/.next/standalone/src/components/specs/spec-modal.tsx +119 -83
- package/.next/standalone/src/components/task-card.tsx +34 -38
- package/.next/standalone/src/components/task-dialog.tsx +16 -31
- package/.next/standalone/src/components/ui/badge.tsx +12 -18
- package/.next/standalone/src/components/ui/button.tsx +23 -28
- package/.next/standalone/src/components/ui/card.tsx +42 -62
- package/.next/standalone/src/components/ui/dialog.tsx +17 -35
- package/.next/standalone/src/db/index.ts +10 -10
- package/.next/standalone/src/db/schema.ts +37 -37
- package/.next/standalone/src/hooks/use-queries.ts +81 -0
- package/.next/standalone/src/hooks/use-websocket.ts +74 -0
- package/.next/standalone/src/lib/schema.test.ts +37 -37
- package/.next/standalone/src/lib/schema.ts +77 -31
- package/.next/standalone/src/lib/specs-dir.ts +8 -8
- package/.next/standalone/src/lib/specs.ts +98 -92
- package/.next/standalone/src/lib/utils.ts +2 -2
- package/.next/standalone/src/mcp/server.ts +556 -349
- package/.next/standalone/src/mcp/websocket.ts +26 -23
- package/.next/standalone/src/schemas/backend-api/templates/proposal.md +6 -4
- package/.next/standalone/src/schemas/backend-api/templates/tasks.md +6 -0
- package/.next/standalone/src/schemas/data-engineering/templates/proposal.md +6 -4
- package/.next/standalone/src/schemas/data-engineering/templates/tasks.md +6 -0
- package/.next/standalone/src/schemas/devops-platform/templates/proposal.md +6 -4
- package/.next/standalone/src/schemas/devops-platform/templates/tasks.md +6 -0
- package/.next/standalone/src/schemas/frontend-product/templates/proposal.md +6 -4
- package/.next/standalone/src/schemas/frontend-product/templates/tasks.md +6 -0
- package/.next/standalone/src/schemas/spec-driven/templates/proposal.md +6 -4
- package/.next/standalone/src/schemas/spec-driven/templates/tasks.md +26 -0
- package/.next/standalone/src/websocket/server.ts +20 -18
- package/.next/standalone/tsconfig.json +3 -12
- package/.next/standalone/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/4f23f64d46848f57.js +1 -0
- package/.next/static/chunks/53081dcdcad4f31e.js +1 -0
- package/.next/static/chunks/{6a3d582315f1c214.js → 701cfcbb41e0ab47.js} +1 -1
- package/.next/static/chunks/ac4b6b4d5b7e486e.css +1 -0
- package/.next/static/chunks/d0309ea872db5d9f.js +1 -0
- package/.next/static/chunks/d4cf8893a018e965.js +1 -0
- package/.next/static/chunks/e6c0233269a4bd69.js +13 -0
- package/.next/static/chunks/{7e65cfa9841f66a5.js → e7d83ce855afe416.js} +2 -2
- package/.next/static/chunks/ee7035560fc9e5e9.js +1 -0
- package/.next/static/chunks/{turbopack-f4d3806ab575051d.js → turbopack-8b3b66a22a5e0fb4.js} +2 -2
- package/README.md +166 -25
- package/bin/devflow.js +12 -5
- package/drizzle.config.ts +7 -7
- package/next.config.ts +11 -2
- package/package.json +16 -7
- package/scripts/init-db.js +3 -5
- package/scripts/init-db.test.js +6 -6
- package/scripts/init-schema.js +22 -22
- package/scripts/init-schema.test.js +45 -45
- package/scripts/install-environments.js +27 -8
- package/scripts/install-environments.test.js +19 -10
- package/scripts/install-skills.js +104 -31
- package/scripts/install-skills.test.js +6 -6
- package/src/app/api/agents/route.ts +2 -2
- package/src/app/api/projects/[id]/route.ts +10 -19
- package/src/app/api/projects/route.ts +4 -10
- package/src/app/api/specs/[name]/artifacts/[artifactType]/approve/route.ts +8 -8
- package/src/app/api/specs/[name]/artifacts/[artifactType]/route.ts +14 -14
- package/src/app/api/specs/[name]/promote/route.ts +17 -23
- package/src/app/api/specs/[name]/route.ts +34 -36
- package/src/app/api/specs/route.ts +10 -10
- package/src/app/api/tasks/[id]/route.ts +11 -33
- package/src/app/api/tasks/route.ts +3 -6
- package/src/app/globals.css +3 -3
- package/src/app/layout.tsx +9 -5
- package/src/app/page.tsx +1 -1
- package/src/app/specs/[name]/page.tsx +26 -68
- package/src/components/kanban-board.tsx +78 -157
- package/src/components/kanban-column.tsx +10 -12
- package/src/components/markdown-preview.tsx +36 -19
- package/src/components/providers.tsx +20 -0
- package/src/components/specs/artifact-dag-status.tsx +12 -14
- package/src/components/specs/artifact-editor.tsx +55 -26
- package/src/components/specs/spec-detail.tsx +48 -40
- package/src/components/specs/spec-kanban-column.tsx +49 -68
- package/src/components/specs/spec-modal.tsx +119 -83
- package/src/components/task-card.tsx +34 -38
- package/src/components/task-dialog.tsx +16 -31
- package/src/components/ui/badge.tsx +12 -18
- package/src/components/ui/button.tsx +23 -28
- package/src/components/ui/card.tsx +42 -62
- package/src/components/ui/dialog.tsx +17 -35
- package/src/db/index.ts +10 -10
- package/src/db/schema.ts +37 -37
- package/src/hooks/use-queries.ts +81 -0
- package/src/hooks/use-websocket.ts +74 -0
- package/src/lib/schema.test.ts +37 -37
- package/src/lib/schema.ts +77 -31
- package/src/lib/specs-dir.ts +8 -8
- package/src/lib/specs.ts +98 -92
- package/src/lib/utils.ts +2 -2
- package/src/mcp/server.ts +556 -349
- package/src/mcp/websocket.ts +26 -23
- package/src/schemas/backend-api/templates/proposal.md +6 -4
- package/src/schemas/backend-api/templates/tasks.md +6 -0
- package/src/schemas/data-engineering/templates/proposal.md +6 -4
- package/src/schemas/data-engineering/templates/tasks.md +6 -0
- package/src/schemas/devops-platform/templates/proposal.md +6 -4
- package/src/schemas/devops-platform/templates/tasks.md +6 -0
- package/src/schemas/frontend-product/templates/proposal.md +6 -4
- package/src/schemas/frontend-product/templates/tasks.md +6 -0
- package/src/schemas/spec-driven/templates/proposal.md +6 -4
- package/src/schemas/spec-driven/templates/tasks.md +26 -0
- package/src/types/bun-sqlite.d.ts +1 -1
- package/src/websocket/server.ts +20 -18
- package/tsconfig.json +3 -12
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1be4e4b6._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__492a4a24._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__67c59ae1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6cc7aecd._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__83a77b07._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__88d91cb5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a9e095e8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b367d327._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__eb413bbc._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b8c072a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2191f._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15316462._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19c9c409._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19e5e22f._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__25b5ccb3._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2f78c3da._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3160b3f4._.js +0 -9
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__319559be._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34f7cbcb._.js +0 -31
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3abab94b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__3b3d8930._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4250799b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4c29cbc3._.js +0 -26
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__4e0bb6eb._.js +0 -9
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5678d2e3._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__673445e0._.js +0 -31
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__934de06b._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9b6c6f09._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__a1b83a98._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b00a15c5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b8567be3._.js +0 -26
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__ce64536e._.js +0 -45
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__e96d33d2._.js +0 -45
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__fd7ec054._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_16a3f9e7._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_45bce0e1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_5e5a372d._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_6ece6f1e._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d173e749._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_d3-shape_src_arc_fb1ac087.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_1f73a830._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_663ac803._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_4f485529._.js +0 -17
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_8436a62a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_f78d2dc4._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_app_layout_tsx_cc8184fa._.js +0 -3
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/.approvals.json +0 -26
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/.meta.json +0 -8
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/design.md +0 -126
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/proposal.md +0 -65
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/specs.md +0 -107
- package/.next/standalone/devflow/specs/add-default-schema-template-selection/tasks.md +0 -235
- package/.next/standalone/devflow/specs/test-no-project/.approvals.json +0 -17
- package/.next/standalone/devflow/specs/test-no-project/.meta.json +0 -6
- package/.next/standalone/devflow/specs/ui-cleanup/.approvals.json +0 -29
- package/.next/standalone/devflow/specs/ui-cleanup/.meta.json +0 -6
- package/.next/standalone/devflow/specs/ui-cleanup/design.md +0 -49
- package/.next/standalone/devflow/specs/ui-cleanup/proposal.md +0 -34
- package/.next/standalone/devflow/specs/ui-cleanup/specs.md +0 -55
- package/.next/standalone/devflow/specs/ui-cleanup/tasks.md +0 -28
- package/.next/standalone/node_modules/@img/colour/color.cjs +0 -1594
- package/.next/standalone/node_modules/@img/colour/index.cjs +0 -1
- package/.next/standalone/node_modules/@img/colour/package.json +0 -45
- package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
- package/.next/standalone/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
- package/.next/standalone/node_modules/buffer-from/index.js +0 -72
- package/.next/standalone/node_modules/buffer-from/package.json +0 -19
- package/.next/standalone/node_modules/sharp/lib/channel.js +0 -177
- package/.next/standalone/node_modules/sharp/lib/colour.js +0 -195
- package/.next/standalone/node_modules/sharp/lib/composite.js +0 -212
- package/.next/standalone/node_modules/sharp/lib/constructor.js +0 -499
- package/.next/standalone/node_modules/sharp/lib/index.js +0 -16
- package/.next/standalone/node_modules/sharp/lib/input.js +0 -809
- package/.next/standalone/node_modules/sharp/lib/is.js +0 -143
- package/.next/standalone/node_modules/sharp/lib/libvips.js +0 -207
- package/.next/standalone/node_modules/sharp/lib/operation.js +0 -1016
- package/.next/standalone/node_modules/sharp/lib/output.js +0 -1666
- package/.next/standalone/node_modules/sharp/lib/resize.js +0 -595
- package/.next/standalone/node_modules/sharp/lib/sharp.js +0 -121
- package/.next/standalone/node_modules/sharp/lib/utility.js +0 -291
- package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/detect-libc.js +0 -313
- package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/elf.js +0 -39
- package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/filesystem.js +0 -51
- package/.next/standalone/node_modules/sharp/node_modules/detect-libc/lib/process.js +0 -24
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
- package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +0 -78
- package/.next/standalone/node_modules/sharp/package.json +0 -202
- package/.next/standalone/node_modules/source-map/lib/array-set.js +0 -121
- package/.next/standalone/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/.next/standalone/node_modules/source-map/lib/base64.js +0 -67
- package/.next/standalone/node_modules/source-map/lib/binary-search.js +0 -111
- package/.next/standalone/node_modules/source-map/lib/mapping-list.js +0 -79
- package/.next/standalone/node_modules/source-map/lib/quick-sort.js +0 -114
- package/.next/standalone/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/.next/standalone/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/.next/standalone/node_modules/source-map/lib/source-node.js +0 -413
- package/.next/standalone/node_modules/source-map/lib/util.js +0 -488
- package/.next/standalone/node_modules/source-map/package.json +0 -73
- package/.next/standalone/node_modules/source-map/source-map.js +0 -8
- package/.next/standalone/node_modules/source-map-support/LICENSE.md +0 -21
- package/.next/standalone/node_modules/source-map-support/README.md +0 -284
- package/.next/standalone/node_modules/source-map-support/browser-source-map-support.js +0 -114
- package/.next/standalone/node_modules/source-map-support/package.json +0 -31
- package/.next/standalone/node_modules/source-map-support/register-hook-require.js +0 -1
- package/.next/standalone/node_modules/source-map-support/register.js +0 -1
- package/.next/standalone/node_modules/source-map-support/source-map-support.js +0 -625
- package/.next/standalone/node_modules/typescript/lib/_tsc.js +0 -133818
- package/.next/standalone/node_modules/typescript/lib/_tsserver.js +0 -659
- package/.next/standalone/node_modules/typescript/lib/_typingsInstaller.js +0 -222
- package/.next/standalone/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/tsc.js +0 -8
- package/.next/standalone/node_modules/typescript/lib/tsserver.js +0 -8
- package/.next/standalone/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/.next/standalone/node_modules/typescript/lib/typesMap.json +0 -497
- package/.next/standalone/node_modules/typescript/lib/typescript.js +0 -200276
- package/.next/standalone/node_modules/typescript/lib/typingsInstaller.js +0 -8
- package/.next/standalone/node_modules/typescript/lib/watchGuard.js +0 -53
- package/.next/standalone/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
- package/.next/standalone/node_modules/typescript/package.json +0 -120
- package/.next/standalone/src/components/ui/collapsible.tsx +0 -12
- package/.next/standalone/src/components/ui/sheet.tsx +0 -130
- package/.next/standalone/src/components/ui/tabs.tsx +0 -58
- package/.next/static/chunks/0177331b8adf7346.js +0 -7
- package/.next/static/chunks/06af74e2f3e207c5.js +0 -7
- package/.next/static/chunks/1748d5cd2443723b.css +0 -1
- package/.next/static/chunks/7ae917cb100be2b9.js +0 -7
- package/.next/static/chunks/7c4b901b394c3a8c.js +0 -7
- package/src/components/ui/collapsible.tsx +0 -12
- package/src/components/ui/sheet.tsx +0 -130
- package/src/components/ui/tabs.tsx +0 -58
- /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/detect-libc.js +0 -0
- /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/filesystem.js +0 -0
- /package/.next/standalone/node_modules/{detect-libc → libsql/node_modules/detect-libc}/lib/process.js +0 -0
- /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_buildManifest.js +0 -0
- /package/.next/static/{5YFrdIQd1UU2IxLxekrU9 → Ql6qo0GYLL23WRu6ec4N5}/_clientMiddlewareManifest.json +0 -0
- /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
|
package/.next/standalone/devflow/specs/add-default-schema-template-selection/.approvals.json
DELETED
|
@@ -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
|