@dewtech/dare-cli 2.16.0 → 3.0.0

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 (408) hide show
  1. package/README.md +196 -3
  2. package/dist/__tests__/confidence.test.d.ts +2 -0
  3. package/dist/__tests__/confidence.test.d.ts.map +1 -0
  4. package/dist/__tests__/confidence.test.js +73 -0
  5. package/dist/__tests__/confidence.test.js.map +1 -0
  6. package/dist/__tests__/datamodel.test.d.ts +2 -0
  7. package/dist/__tests__/datamodel.test.d.ts.map +1 -0
  8. package/dist/__tests__/datamodel.test.js +131 -0
  9. package/dist/__tests__/datamodel.test.js.map +1 -0
  10. package/dist/__tests__/dna-detector.test.d.ts +2 -0
  11. package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
  12. package/dist/__tests__/dna-detector.test.js +97 -0
  13. package/dist/__tests__/dna-detector.test.js.map +1 -0
  14. package/dist/__tests__/dna-facts.test.d.ts +2 -0
  15. package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
  16. package/dist/__tests__/dna-facts.test.js +44 -0
  17. package/dist/__tests__/dna-facts.test.js.map +1 -0
  18. package/dist/__tests__/graph-renderer.test.d.ts +2 -0
  19. package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
  20. package/dist/__tests__/graph-renderer.test.js +85 -0
  21. package/dist/__tests__/graph-renderer.test.js.map +1 -0
  22. package/dist/__tests__/migration.test.d.ts +2 -0
  23. package/dist/__tests__/migration.test.d.ts.map +1 -0
  24. package/dist/__tests__/migration.test.js +77 -0
  25. package/dist/__tests__/migration.test.js.map +1 -0
  26. package/dist/__tests__/module-detector.test.d.ts +2 -0
  27. package/dist/__tests__/module-detector.test.d.ts.map +1 -0
  28. package/dist/__tests__/module-detector.test.js +83 -0
  29. package/dist/__tests__/module-detector.test.js.map +1 -0
  30. package/dist/__tests__/refine.test.d.ts +2 -0
  31. package/dist/__tests__/refine.test.d.ts.map +1 -0
  32. package/dist/__tests__/refine.test.js +186 -0
  33. package/dist/__tests__/refine.test.js.map +1 -0
  34. package/dist/__tests__/reverse-facts.test.d.ts +2 -0
  35. package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
  36. package/dist/__tests__/reverse-facts.test.js +78 -0
  37. package/dist/__tests__/reverse-facts.test.js.map +1 -0
  38. package/dist/__tests__/review.test.d.ts +2 -0
  39. package/dist/__tests__/review.test.d.ts.map +1 -0
  40. package/dist/__tests__/review.test.js +242 -0
  41. package/dist/__tests__/review.test.js.map +1 -0
  42. package/dist/__tests__/update.test.d.ts +2 -0
  43. package/dist/__tests__/update.test.d.ts.map +1 -0
  44. package/dist/__tests__/update.test.js +150 -0
  45. package/dist/__tests__/update.test.js.map +1 -0
  46. package/dist/__tests__/validate.test.js +65 -65
  47. package/dist/bin/dare.js +38 -3
  48. package/dist/bin/dare.js.map +1 -1
  49. package/dist/commands/blueprint.js +122 -122
  50. package/dist/commands/dag.d.ts.map +1 -1
  51. package/dist/commands/dag.js +43 -79
  52. package/dist/commands/dag.js.map +1 -1
  53. package/dist/commands/dna.d.ts +3 -0
  54. package/dist/commands/dna.d.ts.map +1 -0
  55. package/dist/commands/dna.js +69 -0
  56. package/dist/commands/dna.js.map +1 -0
  57. package/dist/commands/execute.d.ts.map +1 -1
  58. package/dist/commands/execute.js +76 -0
  59. package/dist/commands/execute.js.map +1 -1
  60. package/dist/commands/migrate.d.ts +3 -0
  61. package/dist/commands/migrate.d.ts.map +1 -0
  62. package/dist/commands/migrate.js +101 -0
  63. package/dist/commands/migrate.js.map +1 -0
  64. package/dist/commands/new.d.ts +16 -0
  65. package/dist/commands/new.d.ts.map +1 -0
  66. package/dist/commands/new.js +103 -0
  67. package/dist/commands/new.js.map +1 -0
  68. package/dist/commands/refine.d.ts +16 -0
  69. package/dist/commands/refine.d.ts.map +1 -0
  70. package/dist/commands/refine.js +167 -0
  71. package/dist/commands/refine.js.map +1 -0
  72. package/dist/commands/reverse.d.ts +3 -0
  73. package/dist/commands/reverse.d.ts.map +1 -0
  74. package/dist/commands/reverse.js +201 -0
  75. package/dist/commands/reverse.js.map +1 -0
  76. package/dist/commands/review.d.ts +16 -0
  77. package/dist/commands/review.d.ts.map +1 -0
  78. package/dist/commands/review.js +106 -0
  79. package/dist/commands/review.js.map +1 -0
  80. package/dist/commands/update.d.ts +13 -0
  81. package/dist/commands/update.d.ts.map +1 -0
  82. package/dist/commands/update.js +149 -0
  83. package/dist/commands/update.js.map +1 -0
  84. package/dist/commands/welcome.d.ts +14 -0
  85. package/dist/commands/welcome.d.ts.map +1 -0
  86. package/dist/commands/welcome.js +29 -0
  87. package/dist/commands/welcome.js.map +1 -0
  88. package/dist/skills/commands/add.d.ts +23 -0
  89. package/dist/skills/commands/add.d.ts.map +1 -0
  90. package/dist/skills/commands/add.js +206 -0
  91. package/dist/skills/commands/add.js.map +1 -0
  92. package/dist/skills/commands/info.d.ts +14 -0
  93. package/dist/skills/commands/info.d.ts.map +1 -0
  94. package/dist/skills/commands/info.js +99 -0
  95. package/dist/skills/commands/info.js.map +1 -0
  96. package/dist/skills/commands/list.d.ts +19 -0
  97. package/dist/skills/commands/list.d.ts.map +1 -0
  98. package/dist/skills/commands/list.js +163 -0
  99. package/dist/skills/commands/list.js.map +1 -0
  100. package/dist/skills/commands/publish.d.ts +56 -0
  101. package/dist/skills/commands/publish.d.ts.map +1 -0
  102. package/dist/skills/commands/publish.js +272 -0
  103. package/dist/skills/commands/publish.js.map +1 -0
  104. package/dist/skills/commands/remove.d.ts +19 -0
  105. package/dist/skills/commands/remove.d.ts.map +1 -0
  106. package/dist/skills/commands/remove.js +96 -0
  107. package/dist/skills/commands/remove.js.map +1 -0
  108. package/dist/skills/commands/update.d.ts +31 -0
  109. package/dist/skills/commands/update.d.ts.map +1 -0
  110. package/dist/skills/commands/update.js +132 -0
  111. package/dist/skills/commands/update.js.map +1 -0
  112. package/dist/skills/index.d.ts +22 -0
  113. package/dist/skills/index.d.ts.map +1 -0
  114. package/dist/skills/index.js +33 -0
  115. package/dist/skills/index.js.map +1 -0
  116. package/dist/skills/manifest.d.ts +54 -0
  117. package/dist/skills/manifest.d.ts.map +1 -0
  118. package/dist/skills/manifest.js +162 -0
  119. package/dist/skills/manifest.js.map +1 -0
  120. package/dist/skills/registry-local.d.ts +67 -0
  121. package/dist/skills/registry-local.d.ts.map +1 -0
  122. package/dist/skills/registry-local.js +130 -0
  123. package/dist/skills/registry-local.js.map +1 -0
  124. package/dist/skills/registry-mock.json +109 -0
  125. package/dist/skills/registry-remote.d.ts +110 -0
  126. package/dist/skills/registry-remote.d.ts.map +1 -0
  127. package/dist/skills/registry-remote.js +246 -0
  128. package/dist/skills/registry-remote.js.map +1 -0
  129. package/dist/skills/registry.d.ts +49 -0
  130. package/dist/skills/registry.d.ts.map +1 -0
  131. package/dist/skills/registry.js +94 -0
  132. package/dist/skills/registry.js.map +1 -0
  133. package/dist/skills/tests/manifest.spec.d.ts +8 -0
  134. package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
  135. package/dist/skills/tests/manifest.spec.js +176 -0
  136. package/dist/skills/tests/manifest.spec.js.map +1 -0
  137. package/dist/skills/tests/publish.spec.d.ts +12 -0
  138. package/dist/skills/tests/publish.spec.d.ts.map +1 -0
  139. package/dist/skills/tests/publish.spec.js +276 -0
  140. package/dist/skills/tests/publish.spec.js.map +1 -0
  141. package/dist/skills/tests/registry-local.spec.d.ts +8 -0
  142. package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
  143. package/dist/skills/tests/registry-local.spec.js +231 -0
  144. package/dist/skills/tests/registry-local.spec.js.map +1 -0
  145. package/dist/skills/tests/registry.spec.d.ts +7 -0
  146. package/dist/skills/tests/registry.spec.d.ts.map +1 -0
  147. package/dist/skills/tests/registry.spec.js +58 -0
  148. package/dist/skills/tests/registry.spec.js.map +1 -0
  149. package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
  150. package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
  151. package/dist/skills/tests/remote-registry.spec.js +357 -0
  152. package/dist/skills/tests/remote-registry.spec.js.map +1 -0
  153. package/dist/skills/tests/update.spec.d.ts +9 -0
  154. package/dist/skills/tests/update.spec.d.ts.map +1 -0
  155. package/dist/skills/tests/update.spec.js +166 -0
  156. package/dist/skills/tests/update.spec.js.map +1 -0
  157. package/dist/types/Refine.types.d.ts +96 -0
  158. package/dist/types/Refine.types.d.ts.map +1 -0
  159. package/dist/types/Refine.types.js +19 -0
  160. package/dist/types/Refine.types.js.map +1 -0
  161. package/dist/types/Review.types.d.ts +86 -0
  162. package/dist/types/Review.types.d.ts.map +1 -0
  163. package/dist/types/Review.types.js +15 -0
  164. package/dist/types/Review.types.js.map +1 -0
  165. package/dist/types/UpdateManifest.types.d.ts +91 -0
  166. package/dist/types/UpdateManifest.types.d.ts.map +1 -0
  167. package/dist/types/UpdateManifest.types.js +13 -0
  168. package/dist/types/UpdateManifest.types.js.map +1 -0
  169. package/dist/utils/ReviewRunner.d.ts +42 -0
  170. package/dist/utils/ReviewRunner.d.ts.map +1 -0
  171. package/dist/utils/ReviewRunner.js +175 -0
  172. package/dist/utils/ReviewRunner.js.map +1 -0
  173. package/dist/utils/UpdateApplier.d.ts +42 -0
  174. package/dist/utils/UpdateApplier.d.ts.map +1 -0
  175. package/dist/utils/UpdateApplier.js +207 -0
  176. package/dist/utils/UpdateApplier.js.map +1 -0
  177. package/dist/utils/UpdateDetector.d.ts +56 -0
  178. package/dist/utils/UpdateDetector.d.ts.map +1 -0
  179. package/dist/utils/UpdateDetector.js +164 -0
  180. package/dist/utils/UpdateDetector.js.map +1 -0
  181. package/dist/utils/banner.d.ts +28 -0
  182. package/dist/utils/banner.d.ts.map +1 -0
  183. package/dist/utils/banner.js +77 -0
  184. package/dist/utils/banner.js.map +1 -0
  185. package/dist/utils/banner.spec.d.ts +5 -0
  186. package/dist/utils/banner.spec.d.ts.map +1 -0
  187. package/dist/utils/banner.spec.js +253 -0
  188. package/dist/utils/banner.spec.js.map +1 -0
  189. package/dist/utils/complexity-analyzer.d.ts +60 -0
  190. package/dist/utils/complexity-analyzer.d.ts.map +1 -0
  191. package/dist/utils/complexity-analyzer.js +292 -0
  192. package/dist/utils/complexity-analyzer.js.map +1 -0
  193. package/dist/utils/confidence.d.ts +41 -0
  194. package/dist/utils/confidence.d.ts.map +1 -0
  195. package/dist/utils/confidence.js +101 -0
  196. package/dist/utils/confidence.js.map +1 -0
  197. package/dist/utils/datamodel.d.ts +41 -0
  198. package/dist/utils/datamodel.d.ts.map +1 -0
  199. package/dist/utils/datamodel.js +535 -0
  200. package/dist/utils/datamodel.js.map +1 -0
  201. package/dist/utils/dna-detector.d.ts +61 -0
  202. package/dist/utils/dna-detector.d.ts.map +1 -0
  203. package/dist/utils/dna-detector.js +354 -0
  204. package/dist/utils/dna-detector.js.map +1 -0
  205. package/dist/utils/dna-facts.d.ts +13 -0
  206. package/dist/utils/dna-facts.d.ts.map +1 -0
  207. package/dist/utils/dna-facts.js +109 -0
  208. package/dist/utils/dna-facts.js.map +1 -0
  209. package/dist/utils/excalidraw-renderer.d.ts +11 -71
  210. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  211. package/dist/utils/excalidraw-renderer.js +29 -162
  212. package/dist/utils/excalidraw-renderer.js.map +1 -1
  213. package/dist/utils/graph-renderer.d.ts +115 -0
  214. package/dist/utils/graph-renderer.d.ts.map +1 -0
  215. package/dist/utils/graph-renderer.js +216 -0
  216. package/dist/utils/graph-renderer.js.map +1 -0
  217. package/dist/utils/migration.d.ts +64 -0
  218. package/dist/utils/migration.d.ts.map +1 -0
  219. package/dist/utils/migration.js +183 -0
  220. package/dist/utils/migration.js.map +1 -0
  221. package/dist/utils/module-detector.d.ts +46 -0
  222. package/dist/utils/module-detector.d.ts.map +1 -0
  223. package/dist/utils/module-detector.js +348 -0
  224. package/dist/utils/module-detector.js.map +1 -0
  225. package/dist/utils/project-generator.d.ts.map +1 -1
  226. package/dist/utils/project-generator.js +273 -254
  227. package/dist/utils/project-generator.js.map +1 -1
  228. package/dist/utils/reverse-facts.d.ts +50 -0
  229. package/dist/utils/reverse-facts.d.ts.map +1 -0
  230. package/dist/utils/reverse-facts.js +291 -0
  231. package/dist/utils/reverse-facts.js.map +1 -0
  232. package/dist/utils/stack-bootstrap.js +371 -371
  233. package/dist/utils/static-analyzer.d.ts +29 -0
  234. package/dist/utils/static-analyzer.d.ts.map +1 -0
  235. package/dist/utils/static-analyzer.js +390 -0
  236. package/dist/utils/static-analyzer.js.map +1 -0
  237. package/dist/utils/version-compare.d.ts +27 -0
  238. package/dist/utils/version-compare.d.ts.map +1 -0
  239. package/dist/utils/version-compare.js +47 -0
  240. package/dist/utils/version-compare.js.map +1 -0
  241. package/package.json +8 -3
  242. package/templates/DARE-dag-example.yaml +280 -280
  243. package/templates/UPDATE-MANIFEST.json +48 -0
  244. package/templates/backend/node-nestjs/.env.example +9 -9
  245. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  246. package/templates/backend/node-nestjs/package.json +50 -50
  247. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  248. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  249. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  250. package/templates/backend/node-nestjs/src/main.ts +24 -24
  251. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  252. package/templates/backend/php-laravel/.env.example +22 -22
  253. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  254. package/templates/backend/php-laravel/composer.json +40 -40
  255. package/templates/backend/python-fastapi/.env.example +4 -4
  256. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  257. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  258. package/templates/backend/python-fastapi/main.py +35 -35
  259. package/templates/backend/python-fastapi/requirements.txt +13 -13
  260. package/templates/backend/rust-axum/.env.example +3 -3
  261. package/templates/backend/rust-axum/Cargo.toml +23 -23
  262. package/templates/backend/rust-axum/src/errors.rs +30 -30
  263. package/templates/backend/rust-axum/src/main.rs +32 -32
  264. package/templates/backend/rust-axum/src/routes.rs +6 -6
  265. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  266. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  267. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  268. package/templates/frontend/leptos-csr/index.html +11 -11
  269. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  270. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  271. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  272. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  273. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  274. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  275. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  276. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  277. package/templates/frontend/react/index.html +12 -12
  278. package/templates/frontend/react/package.json +35 -35
  279. package/templates/frontend/react/src/App.tsx +25 -25
  280. package/templates/frontend/react/src/main.tsx +9 -9
  281. package/templates/frontend/vue/package.json +32 -32
  282. package/templates/frontend/vue/src/App.vue +7 -7
  283. package/templates/frontend/vue/src/main.ts +10 -10
  284. package/templates/frontend/vue/src/router/index.ts +14 -14
  285. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  286. package/templates/hooks/pre-commit-dare-validate +24 -24
  287. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
  288. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +180 -36
  289. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
  290. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
  291. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  292. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
  293. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
  294. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
  295. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
  296. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
  297. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
  298. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
  299. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
  300. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
  301. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -0
  302. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
  303. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -0
  304. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
  305. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  306. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
  307. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -224
  308. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
  309. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
  310. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
  311. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
  312. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
  313. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
  314. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  315. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  316. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -100
  317. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
  318. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -78
  319. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
  320. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -110
  321. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  322. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
  323. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  324. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  325. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
  326. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
  327. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  328. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
  329. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
  330. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
  331. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
  332. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
  333. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
  334. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
  335. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
  336. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -0
  337. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
  338. package/templates/ide/claude/.claude/commands/dare-review.md +113 -0
  339. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  340. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  341. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  342. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  343. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
  344. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
  345. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
  346. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
  347. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
  348. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
  349. package/templates/ide/claude/.claude/settings.example.json +35 -35
  350. package/templates/ide/claude/CLAUDE.md +146 -146
  351. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  352. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  353. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -100
  354. package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
  355. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -41
  356. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
  357. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -142
  358. package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -0
  359. package/templates/ide/cursor/.cursor/commands/review-task.md +91 -0
  360. package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
  361. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
  362. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
  363. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
  364. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  365. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
  366. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
  367. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
  368. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
  369. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
  370. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
  371. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
  372. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
  373. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
  374. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
  375. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
  376. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
  377. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
  378. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
  379. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  380. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  381. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  382. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  383. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -100
  384. package/templates/shared/docker-compose.yml +41 -41
  385. package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
  386. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
  387. package/dist/__tests__/dag-runner/adapters.test.js +0 -134
  388. package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
  389. package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
  390. package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
  391. package/dist/dag-runner/adapters/antigravity.js +0 -54
  392. package/dist/dag-runner/adapters/antigravity.js.map +0 -1
  393. package/dist/dag-runner/adapters/claude.d.ts +0 -6
  394. package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
  395. package/dist/dag-runner/adapters/claude.js +0 -48
  396. package/dist/dag-runner/adapters/claude.js.map +0 -1
  397. package/dist/dag-runner/adapters/cursor.d.ts +0 -6
  398. package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
  399. package/dist/dag-runner/adapters/cursor.js +0 -58
  400. package/dist/dag-runner/adapters/cursor.js.map +0 -1
  401. package/dist/dag-runner/adapters/index.d.ts +0 -46
  402. package/dist/dag-runner/adapters/index.d.ts.map +0 -1
  403. package/dist/dag-runner/adapters/index.js +0 -55
  404. package/dist/dag-runner/adapters/index.js.map +0 -1
  405. package/dist/dag-runner/utils/timeout.d.ts +0 -27
  406. package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
  407. package/dist/dag-runner/utils/timeout.js +0 -55
  408. package/dist/dag-runner/utils/timeout.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Migration planning for `dare migrate` (Phase 2 brownfield).
3
+ *
4
+ * Consumes the reverse/dna artifacts and produces a migration plan skeleton +
5
+ * one Gherkin parity feature stub per module. The CLI is deterministic (reads
6
+ * facts, lists blocking gaps from the Phase-1 confidence markers, scaffolds
7
+ * skeletons); the `/dare-migrate` skill writes the real strategy, risk
8
+ * analysis, and parity scenarios.
9
+ *
10
+ * Concept inspired by the Reversa migration team + parity scenarios
11
+ * (Macedo & da Costa, arXiv:2605.18684, 2026) — clean-room, deterministic.
12
+ *
13
+ * License: MIT (part of DARE CLI).
14
+ */
15
+ import fs from 'fs-extra';
16
+ import path from 'path';
17
+ /** Target stacks we give tailored hints for. `--to` also accepts free text. */
18
+ export const KNOWN_TARGETS = [
19
+ { value: 'go-gin', label: '🐹 Go (Gin / stdlib)' },
20
+ { value: 'rust-axum', label: '🦀 Rust (Axum)' },
21
+ { value: 'node-nestjs', label: '🟢 Node.js (NestJS)' },
22
+ { value: 'python-fastapi', label: '🐍 Python (FastAPI)' },
23
+ { value: 'php-laravel', label: '🐘 PHP (Laravel)' },
24
+ { value: 'ruby-rails-8', label: '💎 Ruby (Rails 8)' },
25
+ { value: 'react', label: '⚛️ React' },
26
+ { value: 'vue', label: '💚 Vue' },
27
+ ];
28
+ /** Path to the reverse-facts.json that `dare migrate` requires. */
29
+ export function reverseFactsPath(root) {
30
+ return path.join(root, 'DARE', 'REVERSE', 'reverse-facts.json');
31
+ }
32
+ export async function loadReverseArtifacts(root) {
33
+ const rfPath = reverseFactsPath(root);
34
+ if (!(await fs.pathExists(rfPath)))
35
+ return null;
36
+ const reverseFacts = await fs.readJSON(rfPath).catch(() => null);
37
+ if (!reverseFacts)
38
+ return null;
39
+ const dnaPath = path.join(root, 'DARE', 'dna-facts.json');
40
+ const dnaFacts = (await fs.pathExists(dnaPath))
41
+ ? await fs.readJSON(dnaPath).catch(() => null)
42
+ : null;
43
+ return { reverseFacts, dnaFacts };
44
+ }
45
+ export function buildMigrationFacts(artifacts, target, generatedAt) {
46
+ const { reverseFacts, dnaFacts } = artifacts;
47
+ const project = reverseFacts.project ?? {};
48
+ const modules = (reverseFacts.modules ?? []).map((m) => ({
49
+ id: m.id,
50
+ name: m.name,
51
+ path: m.path,
52
+ size: m.size,
53
+ }));
54
+ // Blocking gaps come from the Phase-1 confidence block (🔴 per spec).
55
+ const perSpec = [];
56
+ let total = 0;
57
+ const conf = reverseFacts.confidence;
58
+ if (conf?.perSpec) {
59
+ for (const s of conf.perSpec) {
60
+ if (s.gap > 0) {
61
+ perSpec.push({ spec: s.spec, gaps: s.gap });
62
+ total += s.gap;
63
+ }
64
+ }
65
+ }
66
+ const sourceStack = dnaFacts?.libraries?.http ||
67
+ project.backend ||
68
+ project.frontend ||
69
+ project.structure ||
70
+ 'desconhecida';
71
+ return {
72
+ generatedAt,
73
+ source: {
74
+ name: project.name ?? 'projeto',
75
+ structure: project.structure ?? 'unknown',
76
+ stack: sourceStack,
77
+ },
78
+ target: { stack: target },
79
+ modules,
80
+ blockingGaps: { total, perSpec },
81
+ conventions: {
82
+ architecture: dnaFacts?.architecture?.guess,
83
+ testing: dnaFacts?.testing?.framework,
84
+ libraries: dnaFacts?.libraries,
85
+ },
86
+ };
87
+ }
88
+ // ── Renderers ───────────────────────────────────────────────────────────────
89
+ /** A safe file slug for a per-module .feature filename. */
90
+ export function parityFeatureFilename(mod) {
91
+ return `${mod.id}.feature`;
92
+ }
93
+ export function renderParityFeature(mod) {
94
+ return [
95
+ `# Parity feature — módulo: ${mod.name} (\`${mod.path}\`)`,
96
+ `# AGENT: escreva os Scenarios reais de paridade extraídos do comportamento legado`,
97
+ `# (um Scenario por fluxo observável; Given/When/Then; resultado idêntico ao legado).`,
98
+ '',
99
+ `Feature: ${mod.name} — paridade legado ↔ alvo`,
100
+ '',
101
+ ' # AGENT: substitua pelo cenário real',
102
+ ' Scenario: <comportamento a preservar>',
103
+ ' Given <estado inicial do legado>',
104
+ ' When <ação do usuário/sistema>',
105
+ ' Then <resultado idêntico ao legado>',
106
+ '',
107
+ ].join('\n');
108
+ }
109
+ export function renderMigrationDoc(facts) {
110
+ const libs = facts.conventions.libraries
111
+ ? Object.entries(facts.conventions.libraries)
112
+ .filter(([, v]) => v)
113
+ .map(([k, v]) => `${k}=${v}`)
114
+ .join(', ')
115
+ : '—';
116
+ const gapRows = facts.blockingGaps.perSpec.length
117
+ ? facts.blockingGaps.perSpec.map((g) => `| \`${g.spec}\` | ${g.gaps} | <!-- AGENT: tratamento --> |`)
118
+ : ['| _(nenhum 🔴 registrado)_ | 0 | — |'];
119
+ const moduleRows = facts.modules.length
120
+ ? facts.modules.map((m) => `| ${m.name} | \`${m.path}\` | ${m.size} | [${parityFeatureFilename(m)}](./parity/${parityFeatureFilename(m)}) |`)
121
+ : ['| _(nenhum módulo)_ | — | — | — |'];
122
+ return [
123
+ `# MIGRATION — ${facts.source.name}: ${facts.source.stack} → ${facts.target.stack}`,
124
+ '',
125
+ '> ⚠️ Plano de migração inferido. Seções `<!-- AGENT -->` são preenchidas por `/dare-migrate`.',
126
+ '> Consome `reverse` (o quê) + `dna` (como) e produz contratos de **paridade** para uma',
127
+ '> reimplementação segura. Revise antes de executar.',
128
+ '',
129
+ `*Gerado: ${facts.generatedAt}*`,
130
+ '',
131
+ '## Briefing (determinístico)',
132
+ '',
133
+ `- **Origem:** ${facts.source.stack} (estrutura: ${facts.source.structure})`,
134
+ `- **Alvo:** ${facts.target.stack}`,
135
+ `- **Módulos:** ${facts.modules.length}`,
136
+ `- **Arquitetura (DNA):** ${facts.conventions.architecture ?? '—'}`,
137
+ `- **Testes (DNA):** ${facts.conventions.testing ?? '—'}`,
138
+ `- **Libs (DNA):** ${libs}`,
139
+ `- **Blocking gaps (🔴 da Fase 1):** ${facts.blockingGaps.total}`,
140
+ '',
141
+ '## Decisão de Paradigma',
142
+ '<!-- AGENT: origem e alvo mudam de paradigma (procedural→OO, monólito→serviços, etc.)? '
143
+ + 'Registre a decisão e a justificativa. Se for o mesmo paradigma, diga "preservado". -->',
144
+ '',
145
+ '## Estratégia de Migração',
146
+ '<!-- AGENT: big-bang vs. strangler/parallel-run. Critérios, ordem dos módulos, feature flags. -->',
147
+ '',
148
+ '## Registro de Risco',
149
+ '',
150
+ 'Blocking gaps herdados da Fase 1 (🔴 = não determinável pelo código → risco de reimplementação):',
151
+ '',
152
+ '| Spec | 🔴 | Tratamento |',
153
+ '|---|---|---|',
154
+ ...gapRows,
155
+ '',
156
+ '<!-- AGENT: adicione riscos de regressão, dados, performance e mitigações. -->',
157
+ '',
158
+ '## Arquitetura-alvo',
159
+ '<!-- AGENT: desenhe a arquitetura na stack-alvo, alinhada ao DNA (camadas/convenções) quando o '
160
+ + 'paradigma for preservado, ou justifique a nova organização. -->',
161
+ '',
162
+ '## Plano de Cutover & Rollback',
163
+ '<!-- AGENT: passos de corte, validação de paridade (rodar os .feature), critério de go/no-go e rollback. -->',
164
+ '',
165
+ '## Cenários de Paridade',
166
+ '',
167
+ 'Um arquivo Gherkin por módulo (contrato comportamental legado ↔ alvo):',
168
+ '',
169
+ '| Módulo | Caminho | Tamanho | Feature |',
170
+ '|---|---|---|---|',
171
+ ...moduleRows,
172
+ '',
173
+ '## Próximos Passos',
174
+ '',
175
+ '1. Revisar este plano e preencher os `.feature` de paridade.',
176
+ '2. Resolver/registrar os blocking gaps com o humano.',
177
+ '3. Reimplementar na stack-alvo com `dare design`/`blueprint`/`execute`, usando os `.feature` como aceite.',
178
+ '',
179
+ '---',
180
+ '*DARE Method — Fase 2 brownfield. Migração + paridade inspirada em Reversa (arXiv:2605.18684). License: MIT.*',
181
+ ].join('\n') + '\n';
182
+ }
183
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAClD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC/C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE;IACtD,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,EAAE;IACzD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACnD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACrD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;IACtC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;CAClC,CAAC;AAuCF,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC;IACT,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAA2B,EAC3B,MAAc,EACd,WAAmB;IAEnB,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAsB,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAC/E,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEJ,sEAAsE;IACtE,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;IACrC,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5C,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GACf,QAAQ,EAAE,SAAS,EAAE,IAAI;QACzB,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,SAAS;QACjB,cAAc,CAAC;IAEjB,OAAO;QACL,WAAW;QACX,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;YAC/B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;YACzC,KAAK,EAAE,WAAW;SACnB;QACD,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,OAAO;QACP,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAChC,WAAW,EAAE;YACX,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK;YAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;YACrC,SAAS,EAAE,QAAQ,EAAE,SAAS;SAC/B;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,2DAA2D;AAC3D,MAAM,UAAU,qBAAqB,CAAC,GAAoB;IACxD,OAAO,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAsC;IACxE,OAAO;QACL,8BAA8B,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK;QAC1D,mFAAmF;QACnF,sFAAsF;QACtF,EAAE;QACF,YAAY,GAAG,CAAC,IAAI,2BAA2B;QAC/C,EAAE;QACF,wCAAwC;QACxC,yCAAyC;QACzC,sCAAsC;QACtC,oCAAoC;QACpC,yCAAyC;QACzC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS;QACtC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,GAAG,CAAC;IAER,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;QAC/C,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,iCAAiC,CAAC;QACrG,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;QACrC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,OAAO,qBAAqB,CAAC,CAAC,CAAC,cAAc,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7I,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC;IAE1C,OAAO;QACL,iBAAiB,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;QACnF,EAAE;QACF,+FAA+F;QAC/F,wFAAwF;QACxF,qDAAqD;QACrD,EAAE;QACF,YAAY,KAAK,CAAC,WAAW,GAAG;QAChC,EAAE;QACF,8BAA8B;QAC9B,EAAE;QACF,iBAAiB,KAAK,CAAC,MAAM,CAAC,KAAK,gBAAgB,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG;QAC5E,eAAe,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;QACnC,kBAAkB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;QACxC,4BAA4B,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,GAAG,EAAE;QACnE,uBAAuB,KAAK,CAAC,WAAW,CAAC,OAAO,IAAI,GAAG,EAAE;QACzD,qBAAqB,IAAI,EAAE;QAC3B,uCAAuC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;QACjE,EAAE;QACF,yBAAyB;QACzB,yFAAyF;cACrF,wFAAwF;QAC5F,EAAE;QACF,2BAA2B;QAC3B,mGAAmG;QACnG,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,kGAAkG;QAClG,EAAE;QACF,4BAA4B;QAC5B,eAAe;QACf,GAAG,OAAO;QACV,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,qBAAqB;QACrB,iGAAiG;cAC7F,iEAAiE;QACrE,EAAE;QACF,gCAAgC;QAChC,8GAA8G;QAC9G,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,0CAA0C;QAC1C,mBAAmB;QACnB,GAAG,UAAU;QACb,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,8DAA8D;QAC9D,sDAAsD;QACtD,2GAA2G;QAC3G,EAAE;QACF,KAAK;QACL,+GAA+G;KAChH,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Module detector for `dare reverse`.
3
+ *
4
+ * Reconstructs a brownfield codebase's module map without an AST: it picks
5
+ * module boundaries via a cascade (workspaces → convention dirs → `src/`
6
+ * subdirs → top-level fallback), measures each module (files / LOC / size
7
+ * bucket), and infers a module-to-module dependency graph from import
8
+ * statements. Line/regex-based on purpose — same trade-off as the rest of the
9
+ * CLI (ships across TS/Rust/Python/PHP/Go without a per-language AST stack).
10
+ *
11
+ * The graph is a *visual hint* the human validates at the IDEIA checkpoint,
12
+ * not a contract — so a fuzzy edge is acceptable; a crash is not.
13
+ *
14
+ * License: MIT (part of DARE CLI).
15
+ */
16
+ export type SizeBucket = 'LOW' | 'MED' | 'HIGH';
17
+ export interface ModuleInfo {
18
+ /** Stable kebab id derived from the module path. */
19
+ id: string;
20
+ /** Display name (last path segment). */
21
+ name: string;
22
+ /** Path relative to the project root (POSIX separators). */
23
+ path: string;
24
+ /** Code files in the module, relative to root (POSIX separators). */
25
+ files: string[];
26
+ fileCount: number;
27
+ testFileCount: number;
28
+ loc: number;
29
+ size: SizeBucket;
30
+ /** Distinct file extensions present (e.g. ['.ts', '.tsx']). */
31
+ languages: string[];
32
+ /** Ids of sibling modules this module imports from. */
33
+ depends_on: string[];
34
+ }
35
+ export interface ModuleGraph {
36
+ root: string;
37
+ /** How module boundaries were chosen — surfaced to the user for transparency. */
38
+ strategy: string;
39
+ modules: ModuleInfo[];
40
+ }
41
+ export interface DetectModulesOptions {
42
+ /** Restrict the result to these module ids/names (the `--modules` flag). */
43
+ only?: string[];
44
+ }
45
+ export declare function detectModules(root: string, opts?: DetectModulesOptions): Promise<ModuleGraph>;
46
+ //# sourceMappingURL=module-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-detector.d.ts","sourceRoot":"","sources":["../../src/utils/module-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,uDAAuD;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AA0BD,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,WAAW,CAAC,CA4BtB"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * Module detector for `dare reverse`.
3
+ *
4
+ * Reconstructs a brownfield codebase's module map without an AST: it picks
5
+ * module boundaries via a cascade (workspaces → convention dirs → `src/`
6
+ * subdirs → top-level fallback), measures each module (files / LOC / size
7
+ * bucket), and infers a module-to-module dependency graph from import
8
+ * statements. Line/regex-based on purpose — same trade-off as the rest of the
9
+ * CLI (ships across TS/Rust/Python/PHP/Go without a per-language AST stack).
10
+ *
11
+ * The graph is a *visual hint* the human validates at the IDEIA checkpoint,
12
+ * not a contract — so a fuzzy edge is acceptable; a crash is not.
13
+ *
14
+ * License: MIT (part of DARE CLI).
15
+ */
16
+ import fs from 'fs-extra';
17
+ import path from 'path';
18
+ import yaml from 'js-yaml';
19
+ import { isTestFile } from './static-analyzer.js';
20
+ // ── Config ────────────────────────────────────────────────────────────────────
21
+ const IGNORE_DIRS = new Set([
22
+ 'node_modules', '.git', 'dist', 'build', 'target', 'vendor', '.next',
23
+ 'coverage', '.turbo', 'out', '__pycache__', '.venv', 'venv', '.idea',
24
+ '.vscode', '.cache', 'tmp', '.dart_tool', 'Pods', 'DerivedData',
25
+ ]);
26
+ const CODE_EXTENSIONS = new Set([
27
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.py', '.rs', '.go',
28
+ '.php', '.rb', '.java', '.kt', '.cs', '.swift', '.vue', '.svelte',
29
+ ]);
30
+ /** LOC thresholds for the size bucket (drives the diagram color legend). */
31
+ const SIZE_THRESHOLDS = { low: 400, high: 2000 };
32
+ /** Conventional directories whose immediate subdirectories are modules. */
33
+ const CONVENTION_ROOTS = [
34
+ 'src/modules', 'src/features', 'src/domains', 'src/packages',
35
+ 'app/Modules', 'app/Domains', 'apps', 'services', 'packages', 'crates', 'libs',
36
+ ];
37
+ export async function detectModules(root, opts = {}) {
38
+ const { dirs, strategy } = await pickModuleDirs(root);
39
+ let modules = [];
40
+ for (const relDir of dirs) {
41
+ const mod = await analyzeModule(root, relDir);
42
+ if (mod && mod.fileCount > 0)
43
+ modules.push(mod);
44
+ }
45
+ // Whole-project fallback when the cascade found nothing useful.
46
+ if (modules.length === 0) {
47
+ const whole = await analyzeModule(root, '.');
48
+ if (whole && whole.fileCount > 0)
49
+ modules = [whole];
50
+ }
51
+ await resolveDependencies(root, modules);
52
+ if (opts.only && opts.only.length > 0) {
53
+ const wanted = new Set(opts.only.map((s) => s.toLowerCase()));
54
+ modules = modules.filter((m) => wanted.has(m.id.toLowerCase()) || wanted.has(m.name.toLowerCase()));
55
+ // Drop edges pointing at filtered-out modules.
56
+ const present = new Set(modules.map((m) => m.id));
57
+ for (const m of modules)
58
+ m.depends_on = m.depends_on.filter((d) => present.has(d));
59
+ }
60
+ return { root, strategy, modules };
61
+ }
62
+ // ── Boundary selection (the cascade) ───────────────────────────────────────────
63
+ async function pickModuleDirs(root) {
64
+ // 1. Declared workspaces (strongest signal).
65
+ const ws = await workspaceGlobs(root);
66
+ if (ws.patterns.length > 0) {
67
+ const dirs = [];
68
+ for (const p of ws.patterns)
69
+ dirs.push(...(await expandGlob(root, p)));
70
+ const real = await keepDirsWithCode(root, dedup(dirs));
71
+ if (real.length > 0)
72
+ return { dirs: real, strategy: ws.strategy };
73
+ }
74
+ // 2. Convention directories: first one that exists → its subdirs are modules.
75
+ for (const conv of CONVENTION_ROOTS) {
76
+ const abs = path.join(root, conv);
77
+ if (await isDir(abs)) {
78
+ const subdirs = await childDirs(abs, root);
79
+ const real = await keepDirsWithCode(root, subdirs);
80
+ if (real.length > 0)
81
+ return { dirs: real, strategy: `convention:${conv}/*` };
82
+ }
83
+ }
84
+ // 3. `src/` subdirectories.
85
+ const srcAbs = path.join(root, 'src');
86
+ if (await isDir(srcAbs)) {
87
+ const subdirs = await childDirs(srcAbs, root);
88
+ const real = await keepDirsWithCode(root, subdirs);
89
+ if (real.length >= 2)
90
+ return { dirs: real, strategy: 'src-subdirs' };
91
+ }
92
+ // 4. Top-level directories of the repo.
93
+ const topDirs = await childDirs(root, root);
94
+ const real = await keepDirsWithCode(root, topDirs);
95
+ if (real.length > 0)
96
+ return { dirs: real, strategy: 'top-level' };
97
+ return { dirs: [], strategy: 'whole-project' };
98
+ }
99
+ async function workspaceGlobs(root) {
100
+ // pnpm
101
+ const pnpmPath = path.join(root, 'pnpm-workspace.yaml');
102
+ if (await fs.pathExists(pnpmPath)) {
103
+ try {
104
+ const doc = yaml.load(await fs.readFile(pnpmPath, 'utf-8'));
105
+ if (Array.isArray(doc?.packages)) {
106
+ return { patterns: doc.packages, strategy: 'pnpm-workspace' };
107
+ }
108
+ }
109
+ catch {
110
+ /* fall through */
111
+ }
112
+ }
113
+ // npm / yarn workspaces in package.json
114
+ const pkgPath = path.join(root, 'package.json');
115
+ if (await fs.pathExists(pkgPath)) {
116
+ const pkg = await fs.readJSON(pkgPath).catch(() => ({}));
117
+ const ws = pkg.workspaces;
118
+ const patterns = Array.isArray(ws) ? ws : Array.isArray(ws?.packages) ? ws.packages : [];
119
+ if (patterns.length > 0)
120
+ return { patterns, strategy: 'npm-workspaces' };
121
+ }
122
+ // Cargo workspace members
123
+ const cargoPath = path.join(root, 'Cargo.toml');
124
+ if (await fs.pathExists(cargoPath)) {
125
+ const content = await fs.readFile(cargoPath, 'utf-8').catch(() => '');
126
+ const m = /\[workspace\][\s\S]*?members\s*=\s*\[([^\]]*)\]/.exec(content);
127
+ if (m) {
128
+ const patterns = [...m[1].matchAll(/["']([^"']+)["']/g)].map((x) => x[1]);
129
+ if (patterns.length > 0)
130
+ return { patterns, strategy: 'cargo-workspace' };
131
+ }
132
+ }
133
+ return { patterns: [], strategy: '' };
134
+ }
135
+ /** Expand a workspace glob with a single `*` segment (e.g. `packages/*`). */
136
+ async function expandGlob(root, pattern) {
137
+ const clean = pattern.replace(/\\/g, '/').replace(/\/$/, '');
138
+ const parts = clean.split('/');
139
+ const starIdx = parts.findIndex((p) => p.includes('*'));
140
+ if (starIdx === -1) {
141
+ // Literal path.
142
+ return (await isDir(path.join(root, clean))) ? [clean] : [];
143
+ }
144
+ const baseRel = parts.slice(0, starIdx).join('/');
145
+ const rest = parts.slice(starIdx + 1);
146
+ const baseAbs = path.join(root, baseRel);
147
+ if (!(await isDir(baseAbs)))
148
+ return [];
149
+ const out = [];
150
+ for (const child of await childNames(baseAbs)) {
151
+ const candidateRel = [baseRel, child, ...rest].filter(Boolean).join('/');
152
+ if (await isDir(path.join(root, candidateRel)))
153
+ out.push(candidateRel);
154
+ }
155
+ return out;
156
+ }
157
+ // ── Per-module analysis ────────────────────────────────────────────────────────
158
+ async function analyzeModule(root, relDir) {
159
+ const absDir = path.join(root, relDir);
160
+ if (!(await isDir(absDir)))
161
+ return null;
162
+ const files = await walkCodeFiles(absDir, root);
163
+ if (files.length === 0)
164
+ return null;
165
+ let loc = 0;
166
+ let testFileCount = 0;
167
+ const exts = new Set();
168
+ for (const rel of files) {
169
+ if (isTestFile(rel))
170
+ testFileCount++;
171
+ exts.add(path.extname(rel));
172
+ loc += await countLines(path.join(root, rel));
173
+ }
174
+ const name = relDir === '.' ? path.basename(root) : path.basename(relDir);
175
+ return {
176
+ id: toId(relDir, root),
177
+ name,
178
+ path: toPosix(relDir),
179
+ files,
180
+ fileCount: files.length,
181
+ testFileCount,
182
+ loc,
183
+ size: bucketForLoc(loc),
184
+ languages: [...exts].sort(),
185
+ depends_on: [],
186
+ };
187
+ }
188
+ function bucketForLoc(loc) {
189
+ if (loc < SIZE_THRESHOLDS.low)
190
+ return 'LOW';
191
+ if (loc > SIZE_THRESHOLDS.high)
192
+ return 'HIGH';
193
+ return 'MED';
194
+ }
195
+ // ── Dependency inference ───────────────────────────────────────────────────────
196
+ const IMPORT_PATTERNS = [
197
+ /\bimport\b[^'"`]*?from\s*['"`]([^'"`]+)['"`]/g, // ES import ... from '...'
198
+ /\bimport\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g, // dynamic import('...')
199
+ /\brequire\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/g, // CommonJS require('...')
200
+ /\bexport\b[^'"`]*?from\s*['"`]([^'"`]+)['"`]/g, // re-export ... from '...'
201
+ /\bfrom\s+([.\w]+)\s+import\b/g, // Python from x import y
202
+ ];
203
+ async function resolveDependencies(root, modules) {
204
+ // Map workspace package names → module id (for bare-specifier imports).
205
+ const pkgNameToId = new Map();
206
+ for (const m of modules) {
207
+ const pkgJson = path.join(root, m.path, 'package.json');
208
+ if (await fs.pathExists(pkgJson)) {
209
+ const pkg = await fs.readJSON(pkgJson).catch(() => ({}));
210
+ if (typeof pkg.name === 'string')
211
+ pkgNameToId.set(pkg.name, m.id);
212
+ }
213
+ }
214
+ // Sort module paths longest-first so prefix matching picks the deepest module.
215
+ const byPathDesc = [...modules].sort((a, b) => b.path.length - a.path.length);
216
+ const findModuleByPath = (relPath) => {
217
+ const norm = toPosix(relPath);
218
+ return byPathDesc.find((m) => m.path !== '.' && (norm === m.path || norm.startsWith(m.path + '/')));
219
+ };
220
+ for (const mod of modules) {
221
+ const deps = new Set();
222
+ for (const rel of mod.files) {
223
+ const specs = await extractImports(path.join(root, rel));
224
+ for (const spec of specs) {
225
+ const target = resolveSpec(spec, rel, root, pkgNameToId, findModuleByPath);
226
+ if (target && target !== mod.id)
227
+ deps.add(target);
228
+ }
229
+ }
230
+ mod.depends_on = [...deps].sort();
231
+ }
232
+ }
233
+ function resolveSpec(spec, fromRel, root, pkgNameToId, findModuleByPath) {
234
+ // Relative import → resolve against the importing file's directory.
235
+ if (spec.startsWith('.')) {
236
+ const abs = path.resolve(path.dirname(path.join(root, fromRel)), spec);
237
+ const rel = path.relative(root, abs);
238
+ if (rel.startsWith('..'))
239
+ return null; // escapes the project
240
+ return findModuleByPath(rel)?.id ?? null;
241
+ }
242
+ // Bare specifier matching a workspace package name.
243
+ if (pkgNameToId.has(spec))
244
+ return pkgNameToId.get(spec);
245
+ // Scoped/sub-path package (e.g. `@scope/pkg/sub`) → try the package root.
246
+ for (const [pkgName, id] of pkgNameToId) {
247
+ if (spec === pkgName || spec.startsWith(pkgName + '/'))
248
+ return id;
249
+ }
250
+ return null;
251
+ }
252
+ async function extractImports(absFile) {
253
+ const content = await fs.readFile(absFile, 'utf-8').catch(() => '');
254
+ if (!content)
255
+ return [];
256
+ const specs = [];
257
+ for (const re of IMPORT_PATTERNS) {
258
+ re.lastIndex = 0;
259
+ let m;
260
+ while ((m = re.exec(content)) !== null) {
261
+ if (m[1])
262
+ specs.push(m[1]);
263
+ }
264
+ }
265
+ return specs;
266
+ }
267
+ // ── Filesystem helpers ─────────────────────────────────────────────────────────
268
+ async function walkCodeFiles(absDir, root) {
269
+ const out = [];
270
+ async function recurse(dir) {
271
+ let entries;
272
+ try {
273
+ entries = (await fs.readdir(dir, { withFileTypes: true }));
274
+ }
275
+ catch {
276
+ return;
277
+ }
278
+ for (const entry of entries) {
279
+ if (entry.isDirectory()) {
280
+ if (IGNORE_DIRS.has(entry.name) || entry.name.startsWith('.'))
281
+ continue;
282
+ await recurse(path.join(dir, entry.name));
283
+ }
284
+ else if (entry.isFile() && CODE_EXTENSIONS.has(path.extname(entry.name))) {
285
+ out.push(toPosix(path.relative(root, path.join(dir, entry.name))));
286
+ }
287
+ }
288
+ }
289
+ await recurse(absDir);
290
+ return out.sort();
291
+ }
292
+ async function countLines(absFile) {
293
+ const content = await fs.readFile(absFile, 'utf-8').catch(() => '');
294
+ if (!content)
295
+ return 0;
296
+ return content.split(/\r?\n/).length;
297
+ }
298
+ async function childDirs(absDir, root) {
299
+ const out = [];
300
+ for (const name of await childNames(absDir)) {
301
+ out.push(toPosix(path.relative(root, path.join(absDir, name))));
302
+ }
303
+ return out;
304
+ }
305
+ async function childNames(absDir) {
306
+ let entries;
307
+ try {
308
+ entries = (await fs.readdir(absDir, { withFileTypes: true }));
309
+ }
310
+ catch {
311
+ return [];
312
+ }
313
+ return entries
314
+ .filter((e) => e.isDirectory() && !IGNORE_DIRS.has(e.name) && !e.name.startsWith('.'))
315
+ .map((e) => e.name);
316
+ }
317
+ async function keepDirsWithCode(root, relDirs) {
318
+ const out = [];
319
+ for (const rel of relDirs) {
320
+ const files = await walkCodeFiles(path.join(root, rel), root);
321
+ if (files.length > 0)
322
+ out.push(rel);
323
+ }
324
+ return out;
325
+ }
326
+ async function isDir(abs) {
327
+ try {
328
+ return (await fs.stat(abs)).isDirectory();
329
+ }
330
+ catch {
331
+ return false;
332
+ }
333
+ }
334
+ // ── Misc helpers ────────────────────────────────────────────────────────────────
335
+ function toPosix(p) {
336
+ return p.replace(/\\/g, '/');
337
+ }
338
+ function toId(relDir, root) {
339
+ const base = relDir === '.' ? path.basename(root) : relDir;
340
+ return toPosix(base)
341
+ .replace(/[^a-zA-Z0-9]+/g, '-')
342
+ .replace(/^-+|-+$/g, '')
343
+ .toLowerCase();
344
+ }
345
+ function dedup(arr) {
346
+ return [...new Set(arr)];
347
+ }
348
+ //# sourceMappingURL=module-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-detector.js","sourceRoot":"","sources":["../../src/utils/module-detector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3E,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoInF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf"}
1
+ {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAuBA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3E,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJnF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf"}