@planu/cli 0.88.1 → 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/dist/cli/commands/activate.d.ts +14 -0
  2. package/dist/cli/commands/activate.d.ts.map +1 -0
  3. package/dist/cli/commands/activate.js +174 -0
  4. package/dist/cli/commands/activate.js.map +1 -0
  5. package/dist/cli/commands/doctor.d.ts +16 -0
  6. package/dist/cli/commands/doctor.d.ts.map +1 -0
  7. package/dist/cli/commands/doctor.js +162 -0
  8. package/dist/cli/commands/doctor.js.map +1 -0
  9. package/dist/cli/commands/install.d.ts +48 -0
  10. package/dist/cli/commands/install.d.ts.map +1 -0
  11. package/dist/cli/commands/install.js +348 -0
  12. package/dist/cli/commands/install.js.map +1 -0
  13. package/dist/cli/commands/uninstall.d.ts +10 -0
  14. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  15. package/dist/cli/commands/uninstall.js +133 -0
  16. package/dist/cli/commands/uninstall.js.map +1 -0
  17. package/dist/cli/router.d.ts.map +1 -1
  18. package/dist/cli/router.js +9 -1
  19. package/dist/cli/router.js.map +1 -1
  20. package/dist/config/license-plans.json +5 -2
  21. package/dist/engine/agent-generator.test.d.ts +2 -0
  22. package/dist/engine/agent-generator.test.d.ts.map +1 -0
  23. package/dist/engine/agent-generator.test.js +556 -0
  24. package/dist/engine/agent-generator.test.js.map +1 -0
  25. package/dist/engine/analyzer.test.d.ts +2 -0
  26. package/dist/engine/analyzer.test.d.ts.map +1 -0
  27. package/dist/engine/analyzer.test.js +1461 -0
  28. package/dist/engine/analyzer.test.js.map +1 -0
  29. package/dist/engine/auditor.test.d.ts +2 -0
  30. package/dist/engine/auditor.test.d.ts.map +1 -0
  31. package/dist/engine/auditor.test.js +2075 -0
  32. package/dist/engine/auditor.test.js.map +1 -0
  33. package/dist/engine/convention-scanner/codebase-scanner.js +2 -2
  34. package/dist/engine/convention-scanner/codebase-scanner.js.map +1 -1
  35. package/dist/engine/conventions-cache.d.ts +6 -0
  36. package/dist/engine/conventions-cache.d.ts.map +1 -0
  37. package/dist/engine/conventions-cache.js +20 -0
  38. package/dist/engine/conventions-cache.js.map +1 -0
  39. package/dist/engine/doc-generator.test.d.ts +2 -0
  40. package/dist/engine/doc-generator.test.d.ts.map +1 -0
  41. package/dist/engine/doc-generator.test.js +961 -0
  42. package/dist/engine/doc-generator.test.js.map +1 -0
  43. package/dist/engine/estimator.test.d.ts +2 -0
  44. package/dist/engine/estimator.test.d.ts.map +1 -0
  45. package/dist/engine/estimator.test.js +334 -0
  46. package/dist/engine/estimator.test.js.map +1 -0
  47. package/dist/engine/skill-generator.test.d.ts +2 -0
  48. package/dist/engine/skill-generator.test.d.ts.map +1 -0
  49. package/dist/engine/skill-generator.test.js +742 -0
  50. package/dist/engine/skill-generator.test.js.map +1 -0
  51. package/dist/engine/spec-migrator/filesystem-import.d.ts +14 -0
  52. package/dist/engine/spec-migrator/filesystem-import.d.ts.map +1 -0
  53. package/dist/engine/spec-migrator/filesystem-import.js +96 -0
  54. package/dist/engine/spec-migrator/filesystem-import.js.map +1 -0
  55. package/dist/engine/spec-migrator/flatten-specs.d.ts +12 -0
  56. package/dist/engine/spec-migrator/flatten-specs.d.ts.map +1 -0
  57. package/dist/engine/spec-migrator/flatten-specs.js +111 -0
  58. package/dist/engine/spec-migrator/flatten-specs.js.map +1 -0
  59. package/dist/engine/spec-migrator/folder-operations.d.ts +9 -0
  60. package/dist/engine/spec-migrator/folder-operations.d.ts.map +1 -0
  61. package/dist/engine/spec-migrator/folder-operations.js +109 -0
  62. package/dist/engine/spec-migrator/folder-operations.js.map +1 -0
  63. package/dist/engine/spec-migrator/frontmatter-parser.d.ts +11 -0
  64. package/dist/engine/spec-migrator/frontmatter-parser.d.ts.map +1 -0
  65. package/dist/engine/spec-migrator/frontmatter-parser.js +92 -0
  66. package/dist/engine/spec-migrator/frontmatter-parser.js.map +1 -0
  67. package/dist/engine/spec-migrator/index.d.ts +9 -0
  68. package/dist/engine/spec-migrator/index.d.ts.map +1 -0
  69. package/dist/engine/spec-migrator/index.js +18 -0
  70. package/dist/engine/spec-migrator/index.js.map +1 -0
  71. package/dist/engine/spec-migrator/legacy-migration.d.ts +13 -0
  72. package/dist/engine/spec-migrator/legacy-migration.d.ts.map +1 -0
  73. package/dist/engine/spec-migrator/legacy-migration.js +75 -0
  74. package/dist/engine/spec-migrator/legacy-migration.js.map +1 -0
  75. package/dist/engine/spec-migrator/migration-validator.d.ts +20 -0
  76. package/dist/engine/spec-migrator/migration-validator.d.ts.map +1 -0
  77. package/dist/engine/spec-migrator/migration-validator.js +35 -0
  78. package/dist/engine/spec-migrator/migration-validator.js.map +1 -0
  79. package/dist/engine/spec-migrator/path-utils.d.ts +13 -0
  80. package/dist/engine/spec-migrator/path-utils.d.ts.map +1 -0
  81. package/dist/engine/spec-migrator/path-utils.js +40 -0
  82. package/dist/engine/spec-migrator/path-utils.js.map +1 -0
  83. package/dist/engine/spec-migrator/prefix-migration.d.ts +11 -0
  84. package/dist/engine/spec-migrator/prefix-migration.d.ts.map +1 -0
  85. package/dist/engine/spec-migrator/prefix-migration.js +73 -0
  86. package/dist/engine/spec-migrator/prefix-migration.js.map +1 -0
  87. package/dist/engine/spec-migrator/reconcile-paths.d.ts +12 -0
  88. package/dist/engine/spec-migrator/reconcile-paths.d.ts.map +1 -0
  89. package/dist/engine/spec-migrator/reconcile-paths.js +77 -0
  90. package/dist/engine/spec-migrator/reconcile-paths.js.map +1 -0
  91. package/dist/engine/spec-migrator/version-detection.d.ts +5 -0
  92. package/dist/engine/spec-migrator/version-detection.d.ts.map +1 -0
  93. package/dist/engine/spec-migrator/version-detection.js +19 -0
  94. package/dist/engine/spec-migrator/version-detection.js.map +1 -0
  95. package/dist/engine/spec-migrator.d.ts +1 -58
  96. package/dist/engine/spec-migrator.d.ts.map +1 -1
  97. package/dist/engine/spec-migrator.js +2 -658
  98. package/dist/engine/spec-migrator.js.map +1 -1
  99. package/dist/engine/spec-summary-html/dashboard-renderer.d.ts +6 -0
  100. package/dist/engine/spec-summary-html/dashboard-renderer.d.ts.map +1 -0
  101. package/dist/engine/spec-summary-html/dashboard-renderer.js +333 -0
  102. package/dist/engine/spec-summary-html/dashboard-renderer.js.map +1 -0
  103. package/dist/engine/spec-summary-html/hash-utils.d.ts +11 -0
  104. package/dist/engine/spec-summary-html/hash-utils.d.ts.map +1 -0
  105. package/dist/engine/spec-summary-html/hash-utils.js +39 -0
  106. package/dist/engine/spec-summary-html/hash-utils.js.map +1 -0
  107. package/dist/engine/spec-summary-html/index.d.ts +4 -0
  108. package/dist/engine/spec-summary-html/index.d.ts.map +1 -0
  109. package/dist/engine/spec-summary-html/index.js +6 -0
  110. package/dist/engine/spec-summary-html/index.js.map +1 -0
  111. package/dist/engine/spec-summary-html/report-renderer.d.ts +9 -0
  112. package/dist/engine/spec-summary-html/report-renderer.d.ts.map +1 -0
  113. package/dist/engine/spec-summary-html/report-renderer.js +139 -0
  114. package/dist/engine/spec-summary-html/report-renderer.js.map +1 -0
  115. package/dist/engine/spec-summary-html.d.ts +1 -0
  116. package/dist/engine/spec-summary-html.d.ts.map +1 -1
  117. package/dist/engine/spec-summary-html.js +19 -473
  118. package/dist/engine/spec-summary-html.js.map +1 -1
  119. package/dist/engine/update-notifier.d.ts +8 -0
  120. package/dist/engine/update-notifier.d.ts.map +1 -0
  121. package/dist/engine/update-notifier.js +130 -0
  122. package/dist/engine/update-notifier.js.map +1 -0
  123. package/dist/engine/validator/dor-dod.d.ts.map +1 -1
  124. package/dist/engine/validator/dor-dod.js +8 -5
  125. package/dist/engine/validator/dor-dod.js.map +1 -1
  126. package/dist/engine/validator.d.ts.map +1 -1
  127. package/dist/engine/validator.js +4 -3
  128. package/dist/engine/validator.js.map +1 -1
  129. package/dist/engine/validator.test.d.ts +2 -0
  130. package/dist/engine/validator.test.d.ts.map +1 -0
  131. package/dist/engine/validator.test.js +2371 -0
  132. package/dist/engine/validator.test.js.map +1 -0
  133. package/dist/engine/web-fetcher.test.d.ts +2 -0
  134. package/dist/engine/web-fetcher.test.d.ts.map +1 -0
  135. package/dist/engine/web-fetcher.test.js +360 -0
  136. package/dist/engine/web-fetcher.test.js.map +1 -0
  137. package/dist/i18n/index.test.d.ts +2 -0
  138. package/dist/i18n/index.test.d.ts.map +1 -0
  139. package/dist/i18n/index.test.js +375 -0
  140. package/dist/i18n/index.test.js.map +1 -0
  141. package/dist/index.js +10 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.test.d.ts +2 -0
  144. package/dist/index.test.d.ts.map +1 -0
  145. package/dist/index.test.js +124 -0
  146. package/dist/index.test.js.map +1 -0
  147. package/dist/resources/patterns.test.d.ts +2 -0
  148. package/dist/resources/patterns.test.d.ts.map +1 -0
  149. package/dist/resources/patterns.test.js +142 -0
  150. package/dist/resources/patterns.test.js.map +1 -0
  151. package/dist/resources/process.test.d.ts +2 -0
  152. package/dist/resources/process.test.d.ts.map +1 -0
  153. package/dist/resources/process.test.js +48 -0
  154. package/dist/resources/process.test.js.map +1 -0
  155. package/dist/resources/registry.test.d.ts +2 -0
  156. package/dist/resources/registry.test.d.ts.map +1 -0
  157. package/dist/resources/registry.test.js +138 -0
  158. package/dist/resources/registry.test.js.map +1 -0
  159. package/dist/resources/specs.test.d.ts +2 -0
  160. package/dist/resources/specs.test.d.ts.map +1 -0
  161. package/dist/resources/specs.test.js +130 -0
  162. package/dist/resources/specs.test.js.map +1 -0
  163. package/dist/resources/templates.test.d.ts +2 -0
  164. package/dist/resources/templates.test.d.ts.map +1 -0
  165. package/dist/resources/templates.test.js +119 -0
  166. package/dist/resources/templates.test.js.map +1 -0
  167. package/dist/smoke.test.d.ts +2 -0
  168. package/dist/smoke.test.d.ts.map +1 -0
  169. package/dist/smoke.test.js +229 -0
  170. package/dist/smoke.test.js.map +1 -0
  171. package/dist/storage/base-store.test.d.ts +2 -0
  172. package/dist/storage/base-store.test.d.ts.map +1 -0
  173. package/dist/storage/base-store.test.js +180 -0
  174. package/dist/storage/base-store.test.js.map +1 -0
  175. package/dist/storage/global-store.test.d.ts +2 -0
  176. package/dist/storage/global-store.test.d.ts.map +1 -0
  177. package/dist/storage/global-store.test.js +327 -0
  178. package/dist/storage/global-store.test.js.map +1 -0
  179. package/dist/storage/index.d.ts +1 -0
  180. package/dist/storage/index.d.ts.map +1 -1
  181. package/dist/storage/index.js +1 -0
  182. package/dist/storage/index.js.map +1 -1
  183. package/dist/storage/index.test.d.ts +2 -0
  184. package/dist/storage/index.test.d.ts.map +1 -0
  185. package/dist/storage/index.test.js +56 -0
  186. package/dist/storage/index.test.js.map +1 -0
  187. package/dist/storage/knowledge-store.test.d.ts +2 -0
  188. package/dist/storage/knowledge-store.test.d.ts.map +1 -0
  189. package/dist/storage/knowledge-store.test.js +368 -0
  190. package/dist/storage/knowledge-store.test.js.map +1 -0
  191. package/dist/storage/lessons-store.d.ts +10 -0
  192. package/dist/storage/lessons-store.d.ts.map +1 -0
  193. package/dist/storage/lessons-store.js +67 -0
  194. package/dist/storage/lessons-store.js.map +1 -0
  195. package/dist/storage/metrics-store.test.d.ts +2 -0
  196. package/dist/storage/metrics-store.test.d.ts.map +1 -0
  197. package/dist/storage/metrics-store.test.js +212 -0
  198. package/dist/storage/metrics-store.test.js.map +1 -0
  199. package/dist/storage/pattern-store.test.d.ts +2 -0
  200. package/dist/storage/pattern-store.test.d.ts.map +1 -0
  201. package/dist/storage/pattern-store.test.js +224 -0
  202. package/dist/storage/pattern-store.test.js.map +1 -0
  203. package/dist/storage/spec-store.test.d.ts +2 -0
  204. package/dist/storage/spec-store.test.d.ts.map +1 -0
  205. package/dist/storage/spec-store.test.js +227 -0
  206. package/dist/storage/spec-store.test.js.map +1 -0
  207. package/dist/tools/audit.test.d.ts +2 -0
  208. package/dist/tools/audit.test.d.ts.map +1 -0
  209. package/dist/tools/audit.test.js +169 -0
  210. package/dist/tools/audit.test.js.map +1 -0
  211. package/dist/tools/challenge-spec.test.d.ts +2 -0
  212. package/dist/tools/challenge-spec.test.d.ts.map +1 -0
  213. package/dist/tools/challenge-spec.test.js +782 -0
  214. package/dist/tools/challenge-spec.test.js.map +1 -0
  215. package/dist/tools/check-versions.test.d.ts +2 -0
  216. package/dist/tools/check-versions.test.d.ts.map +1 -0
  217. package/dist/tools/check-versions.test.js +214 -0
  218. package/dist/tools/check-versions.test.js.map +1 -0
  219. package/dist/tools/clarify-requirements.test.d.ts +2 -0
  220. package/dist/tools/clarify-requirements.test.d.ts.map +1 -0
  221. package/dist/tools/clarify-requirements.test.js +161 -0
  222. package/dist/tools/clarify-requirements.test.js.map +1 -0
  223. package/dist/tools/consult-docs.test.d.ts +2 -0
  224. package/dist/tools/consult-docs.test.d.ts.map +1 -0
  225. package/dist/tools/consult-docs.test.js +140 -0
  226. package/dist/tools/consult-docs.test.js.map +1 -0
  227. package/dist/tools/create-spec/lessons-injector.d.ts +6 -0
  228. package/dist/tools/create-spec/lessons-injector.d.ts.map +1 -0
  229. package/dist/tools/create-spec/lessons-injector.js +53 -0
  230. package/dist/tools/create-spec/lessons-injector.js.map +1 -0
  231. package/dist/tools/create-spec.d.ts.map +1 -1
  232. package/dist/tools/create-spec.js +6 -1
  233. package/dist/tools/create-spec.js.map +1 -1
  234. package/dist/tools/create-spec.test.d.ts +2 -0
  235. package/dist/tools/create-spec.test.d.ts.map +1 -0
  236. package/dist/tools/create-spec.test.js +233 -0
  237. package/dist/tools/create-spec.test.js.map +1 -0
  238. package/dist/tools/define-ui-contract.test.d.ts +2 -0
  239. package/dist/tools/define-ui-contract.test.d.ts.map +1 -0
  240. package/dist/tools/define-ui-contract.test.js +479 -0
  241. package/dist/tools/define-ui-contract.test.js.map +1 -0
  242. package/dist/tools/design-schema.test.d.ts +2 -0
  243. package/dist/tools/design-schema.test.d.ts.map +1 -0
  244. package/dist/tools/design-schema.test.js +301 -0
  245. package/dist/tools/design-schema.test.js.map +1 -0
  246. package/dist/tools/detect-agent.test.d.ts +2 -0
  247. package/dist/tools/detect-agent.test.d.ts.map +1 -0
  248. package/dist/tools/detect-agent.test.js +133 -0
  249. package/dist/tools/detect-agent.test.js.map +1 -0
  250. package/dist/tools/detect-drift.test.d.ts +2 -0
  251. package/dist/tools/detect-drift.test.d.ts.map +1 -0
  252. package/dist/tools/detect-drift.test.js +312 -0
  253. package/dist/tools/detect-drift.test.js.map +1 -0
  254. package/dist/tools/discover-mcps.test.d.ts +2 -0
  255. package/dist/tools/discover-mcps.test.d.ts.map +1 -0
  256. package/dist/tools/discover-mcps.test.js +345 -0
  257. package/dist/tools/discover-mcps.test.js.map +1 -0
  258. package/dist/tools/estimate.test.d.ts +2 -0
  259. package/dist/tools/estimate.test.d.ts.map +1 -0
  260. package/dist/tools/estimate.test.js +137 -0
  261. package/dist/tools/estimate.test.js.map +1 -0
  262. package/dist/tools/generate-adr.test.d.ts +2 -0
  263. package/dist/tools/generate-adr.test.d.ts.map +1 -0
  264. package/dist/tools/generate-adr.test.js +206 -0
  265. package/dist/tools/generate-adr.test.js.map +1 -0
  266. package/dist/tools/generate-checklist.test.d.ts +2 -0
  267. package/dist/tools/generate-checklist.test.d.ts.map +1 -0
  268. package/dist/tools/generate-checklist.test.js +201 -0
  269. package/dist/tools/generate-checklist.test.js.map +1 -0
  270. package/dist/tools/generate-docs.test.d.ts +2 -0
  271. package/dist/tools/generate-docs.test.d.ts.map +1 -0
  272. package/dist/tools/generate-docs.test.js +183 -0
  273. package/dist/tools/generate-docs.test.js.map +1 -0
  274. package/dist/tools/generate-execution-plan.test.d.ts +2 -0
  275. package/dist/tools/generate-execution-plan.test.d.ts.map +1 -0
  276. package/dist/tools/generate-execution-plan.test.js +643 -0
  277. package/dist/tools/generate-execution-plan.test.js.map +1 -0
  278. package/dist/tools/generate-rules.test.d.ts +2 -0
  279. package/dist/tools/generate-rules.test.d.ts.map +1 -0
  280. package/dist/tools/generate-rules.test.js +148 -0
  281. package/dist/tools/generate-rules.test.js.map +1 -0
  282. package/dist/tools/generate-skill.test.d.ts +2 -0
  283. package/dist/tools/generate-skill.test.d.ts.map +1 -0
  284. package/dist/tools/generate-skill.test.js +138 -0
  285. package/dist/tools/generate-skill.test.js.map +1 -0
  286. package/dist/tools/generate-sub-agent.test.d.ts +2 -0
  287. package/dist/tools/generate-sub-agent.test.d.ts.map +1 -0
  288. package/dist/tools/generate-sub-agent.test.js +162 -0
  289. package/dist/tools/generate-sub-agent.test.js.map +1 -0
  290. package/dist/tools/generate-tests.test.d.ts +2 -0
  291. package/dist/tools/generate-tests.test.d.ts.map +1 -0
  292. package/dist/tools/generate-tests.test.js +222 -0
  293. package/dist/tools/generate-tests.test.js.map +1 -0
  294. package/dist/tools/init-constitution.test.d.ts +2 -0
  295. package/dist/tools/init-constitution.test.d.ts.map +1 -0
  296. package/dist/tools/init-constitution.test.js +398 -0
  297. package/dist/tools/init-constitution.test.js.map +1 -0
  298. package/dist/tools/init-project/config-builder.d.ts +12 -0
  299. package/dist/tools/init-project/config-builder.d.ts.map +1 -0
  300. package/dist/tools/init-project/config-builder.js +31 -0
  301. package/dist/tools/init-project/config-builder.js.map +1 -0
  302. package/dist/tools/init-project/git-setup.d.ts +8 -0
  303. package/dist/tools/init-project/git-setup.d.ts.map +1 -0
  304. package/dist/tools/init-project/git-setup.js +70 -0
  305. package/dist/tools/init-project/git-setup.js.map +1 -0
  306. package/dist/tools/init-project/handler.d.ts.map +1 -1
  307. package/dist/tools/init-project/handler.js +27 -364
  308. package/dist/tools/init-project/handler.js.map +1 -1
  309. package/dist/tools/init-project/lifecycle-helpers.d.ts +32 -0
  310. package/dist/tools/init-project/lifecycle-helpers.d.ts.map +1 -0
  311. package/dist/tools/init-project/lifecycle-helpers.js +153 -0
  312. package/dist/tools/init-project/lifecycle-helpers.js.map +1 -0
  313. package/dist/tools/init-project/migration-runner.d.ts +28 -0
  314. package/dist/tools/init-project/migration-runner.d.ts.map +1 -0
  315. package/dist/tools/init-project/migration-runner.js +57 -0
  316. package/dist/tools/init-project/migration-runner.js.map +1 -0
  317. package/dist/tools/init-project/result-builder.d.ts.map +1 -1
  318. package/dist/tools/init-project/result-builder.js +1 -0
  319. package/dist/tools/init-project/result-builder.js.map +1 -1
  320. package/dist/tools/init-project/rules-writer.d.ts +14 -0
  321. package/dist/tools/init-project/rules-writer.d.ts.map +1 -0
  322. package/dist/tools/init-project/rules-writer.js +43 -0
  323. package/dist/tools/init-project/rules-writer.js.map +1 -0
  324. package/dist/tools/init-project/scaffold-writer.d.ts +29 -0
  325. package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -0
  326. package/dist/tools/init-project/scaffold-writer.js +76 -0
  327. package/dist/tools/init-project/scaffold-writer.js.map +1 -0
  328. package/dist/tools/init-project/stack-detector.d.ts +16 -0
  329. package/dist/tools/init-project/stack-detector.d.ts.map +1 -0
  330. package/dist/tools/init-project/stack-detector.js +19 -0
  331. package/dist/tools/init-project/stack-detector.js.map +1 -0
  332. package/dist/tools/init-project.test.d.ts +2 -0
  333. package/dist/tools/init-project.test.d.ts.map +1 -0
  334. package/dist/tools/init-project.test.js +158 -0
  335. package/dist/tools/init-project.test.js.map +1 -0
  336. package/dist/tools/integrate-pm.test.d.ts +2 -0
  337. package/dist/tools/integrate-pm.test.d.ts.map +1 -0
  338. package/dist/tools/integrate-pm.test.js +558 -0
  339. package/dist/tools/integrate-pm.test.js.map +1 -0
  340. package/dist/tools/learn.test.d.ts +2 -0
  341. package/dist/tools/learn.test.d.ts.map +1 -0
  342. package/dist/tools/learn.test.js +123 -0
  343. package/dist/tools/learn.test.js.map +1 -0
  344. package/dist/tools/lessons-handler.d.ts +6 -0
  345. package/dist/tools/lessons-handler.d.ts.map +1 -0
  346. package/dist/tools/lessons-handler.js +64 -0
  347. package/dist/tools/lessons-handler.js.map +1 -0
  348. package/dist/tools/list-specs.js +1 -1
  349. package/dist/tools/list-specs.js.map +1 -1
  350. package/dist/tools/list-specs.test.d.ts +2 -0
  351. package/dist/tools/list-specs.test.d.ts.map +1 -0
  352. package/dist/tools/list-specs.test.js +110 -0
  353. package/dist/tools/list-specs.test.js.map +1 -0
  354. package/dist/tools/manage-context.test.d.ts +2 -0
  355. package/dist/tools/manage-context.test.d.ts.map +1 -0
  356. package/dist/tools/manage-context.test.js +359 -0
  357. package/dist/tools/manage-context.test.js.map +1 -0
  358. package/dist/tools/manage-git.test.d.ts +2 -0
  359. package/dist/tools/manage-git.test.d.ts.map +1 -0
  360. package/dist/tools/manage-git.test.js +882 -0
  361. package/dist/tools/manage-git.test.js.map +1 -0
  362. package/dist/tools/orchestrate.test.d.ts +2 -0
  363. package/dist/tools/orchestrate.test.d.ts.map +1 -0
  364. package/dist/tools/orchestrate.test.js +1117 -0
  365. package/dist/tools/orchestrate.test.js.map +1 -0
  366. package/dist/tools/reconcile-spec.test.d.ts +2 -0
  367. package/dist/tools/reconcile-spec.test.d.ts.map +1 -0
  368. package/dist/tools/reconcile-spec.test.js +259 -0
  369. package/dist/tools/reconcile-spec.test.js.map +1 -0
  370. package/dist/tools/red-team.d.ts +3 -0
  371. package/dist/tools/red-team.d.ts.map +1 -0
  372. package/dist/tools/red-team.js +302 -0
  373. package/dist/tools/red-team.js.map +1 -0
  374. package/dist/tools/register-lessons-tools.d.ts +3 -0
  375. package/dist/tools/register-lessons-tools.d.ts.map +1 -0
  376. package/dist/tools/register-lessons-tools.js +62 -0
  377. package/dist/tools/register-lessons-tools.js.map +1 -0
  378. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
  379. package/dist/tools/register-platform-tools/design-stack-tools.js +14 -0
  380. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
  381. package/dist/tools/register-platform-tools.test.d.ts +2 -0
  382. package/dist/tools/register-platform-tools.test.d.ts.map +1 -0
  383. package/dist/tools/register-platform-tools.test.js +404 -0
  384. package/dist/tools/register-platform-tools.test.js.map +1 -0
  385. package/dist/tools/register-spec-tools.test.d.ts +2 -0
  386. package/dist/tools/register-spec-tools.test.d.ts.map +1 -0
  387. package/dist/tools/register-spec-tools.test.js +407 -0
  388. package/dist/tools/register-spec-tools.test.js.map +1 -0
  389. package/dist/tools/reverse-engineer.test.d.ts +2 -0
  390. package/dist/tools/reverse-engineer.test.d.ts.map +1 -0
  391. package/dist/tools/reverse-engineer.test.js +206 -0
  392. package/dist/tools/reverse-engineer.test.js.map +1 -0
  393. package/dist/tools/schemas.d.ts +20 -0
  394. package/dist/tools/schemas.d.ts.map +1 -0
  395. package/dist/tools/schemas.js +133 -0
  396. package/dist/tools/schemas.js.map +1 -0
  397. package/dist/tools/schemas.test.d.ts +2 -0
  398. package/dist/tools/schemas.test.d.ts.map +1 -0
  399. package/dist/tools/schemas.test.js +245 -0
  400. package/dist/tools/schemas.test.js.map +1 -0
  401. package/dist/tools/set-locale.test.d.ts +2 -0
  402. package/dist/tools/set-locale.test.d.ts.map +1 -0
  403. package/dist/tools/set-locale.test.js +74 -0
  404. package/dist/tools/set-locale.test.js.map +1 -0
  405. package/dist/tools/suggest-mcps.test.d.ts +2 -0
  406. package/dist/tools/suggest-mcps.test.d.ts.map +1 -0
  407. package/dist/tools/suggest-mcps.test.js +198 -0
  408. package/dist/tools/suggest-mcps.test.js.map +1 -0
  409. package/dist/tools/suggest-stack.test.d.ts +2 -0
  410. package/dist/tools/suggest-stack.test.d.ts.map +1 -0
  411. package/dist/tools/suggest-stack.test.js +181 -0
  412. package/dist/tools/suggest-stack.test.js.map +1 -0
  413. package/dist/tools/suggest-tooling.test.d.ts +2 -0
  414. package/dist/tools/suggest-tooling.test.d.ts.map +1 -0
  415. package/dist/tools/suggest-tooling.test.js +213 -0
  416. package/dist/tools/suggest-tooling.test.js.map +1 -0
  417. package/dist/tools/summarize-spec.test.d.ts +2 -0
  418. package/dist/tools/summarize-spec.test.d.ts.map +1 -0
  419. package/dist/tools/summarize-spec.test.js +180 -0
  420. package/dist/tools/summarize-spec.test.js.map +1 -0
  421. package/dist/tools/update-status/dod-gates.d.ts +16 -0
  422. package/dist/tools/update-status/dod-gates.d.ts.map +1 -0
  423. package/dist/tools/update-status/dod-gates.js +117 -0
  424. package/dist/tools/update-status/dod-gates.js.map +1 -0
  425. package/dist/tools/update-status/file-sync.d.ts +6 -0
  426. package/dist/tools/update-status/file-sync.d.ts.map +1 -0
  427. package/dist/tools/update-status/file-sync.js +112 -0
  428. package/dist/tools/update-status/file-sync.js.map +1 -0
  429. package/dist/tools/update-status/index.d.ts +3 -0
  430. package/dist/tools/update-status/index.d.ts.map +1 -0
  431. package/dist/tools/update-status/index.js +181 -0
  432. package/dist/tools/update-status/index.js.map +1 -0
  433. package/dist/tools/update-status/response-builder.d.ts +4 -0
  434. package/dist/tools/update-status/response-builder.d.ts.map +1 -0
  435. package/dist/tools/update-status/response-builder.js +69 -0
  436. package/dist/tools/update-status/response-builder.js.map +1 -0
  437. package/dist/tools/update-status/side-effects.d.ts +15 -0
  438. package/dist/tools/update-status/side-effects.d.ts.map +1 -0
  439. package/dist/tools/update-status/side-effects.js +64 -0
  440. package/dist/tools/update-status/side-effects.js.map +1 -0
  441. package/dist/tools/update-status/transition-guard.d.ts +20 -0
  442. package/dist/tools/update-status/transition-guard.d.ts.map +1 -0
  443. package/dist/tools/update-status/transition-guard.js +75 -0
  444. package/dist/tools/update-status/transition-guard.js.map +1 -0
  445. package/dist/tools/update-status.d.ts +1 -2
  446. package/dist/tools/update-status.d.ts.map +1 -1
  447. package/dist/tools/update-status.js +2 -461
  448. package/dist/tools/update-status.js.map +1 -1
  449. package/dist/tools/update-status.test.d.ts +2 -0
  450. package/dist/tools/update-status.test.d.ts.map +1 -0
  451. package/dist/tools/update-status.test.js +142 -0
  452. package/dist/tools/update-status.test.js.map +1 -0
  453. package/dist/tools/validate.d.ts.map +1 -1
  454. package/dist/tools/validate.js +18 -4
  455. package/dist/tools/validate.js.map +1 -1
  456. package/dist/tools/validate.test.d.ts +2 -0
  457. package/dist/tools/validate.test.d.ts.map +1 -0
  458. package/dist/tools/validate.test.js +137 -0
  459. package/dist/tools/validate.test.js.map +1 -0
  460. package/dist/types/analysis.d.ts +2 -1
  461. package/dist/types/analysis.d.ts.map +1 -1
  462. package/dist/types/conventions.d.ts +5 -0
  463. package/dist/types/conventions.d.ts.map +1 -1
  464. package/dist/types/index.d.ts +3 -0
  465. package/dist/types/index.d.ts.map +1 -1
  466. package/dist/types/index.js +3 -0
  467. package/dist/types/index.js.map +1 -1
  468. package/dist/types/lessons.d.ts +50 -0
  469. package/dist/types/lessons.d.ts.map +1 -0
  470. package/dist/types/lessons.js +3 -0
  471. package/dist/types/lessons.js.map +1 -0
  472. package/dist/types/project/planu-config.d.ts +2 -0
  473. package/dist/types/project/planu-config.d.ts.map +1 -1
  474. package/dist/types/red-team.d.ts +29 -0
  475. package/dist/types/red-team.d.ts.map +1 -0
  476. package/dist/types/red-team.js +3 -0
  477. package/dist/types/red-team.js.map +1 -0
  478. package/dist/types/update-notifier.d.ts +5 -0
  479. package/dist/types/update-notifier.d.ts.map +1 -0
  480. package/dist/types/update-notifier.js +3 -0
  481. package/dist/types/update-notifier.js.map +1 -0
  482. package/package.json +9 -2
  483. package/src/config/license-plans.json +5 -2
  484. package/src/i18n/messages/en.json +5 -0
  485. package/src/i18n/messages/es.json +5 -0
  486. package/src/i18n/messages/pt.json +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-constitution.test.js","sourceRoot":"","sources":["../../src/tools/init-constitution.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ProjectKnowledge } from '../../types/index.js';
2
+ export interface ConfigBuildResult {
3
+ planuConfigPath: string;
4
+ planuConfigGenerated: boolean;
5
+ whatsNew: string | null;
6
+ }
7
+ /**
8
+ * SPEC-131: Detect legal profile, save enriched knowledge, generate planu.json if missing,
9
+ * and check What's New highlights.
10
+ */
11
+ export declare function buildProjectConfig(projectPath: string, projectId: string, knowledge: ProjectKnowledge): Promise<ConfigBuildResult>;
12
+ //# sourceMappingURL=config-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/init-project/config-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAqB5B"}
@@ -0,0 +1,31 @@
1
+ import { knowledgeStore } from '../../storage/index.js';
2
+ import { buildLegalProfile } from '../../engine/legal-compliance/index.js';
3
+ import { createPlanuConfig, serializePlanuConfig } from '../../engine/planu-config-writer.js';
4
+ import { writeFile, access } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ import { checkWhatsNew } from './lifecycle-helpers.js';
7
+ /**
8
+ * SPEC-131: Detect legal profile, save enriched knowledge, generate planu.json if missing,
9
+ * and check What's New highlights.
10
+ */
11
+ export async function buildProjectConfig(projectPath, projectId, knowledge) {
12
+ // SPEC-131: Detect legal compliance profile and re-save knowledge
13
+ const legalProfile = buildLegalProfile(knowledge);
14
+ const enrichedKnowledge = { ...knowledge, legalProfile };
15
+ await knowledgeStore.saveKnowledge(projectId, enrichedKnowledge);
16
+ // Generate planu.json if it doesn't exist yet
17
+ const planuConfigPath = join(projectPath, 'planu.json');
18
+ let planuConfigGenerated = false;
19
+ try {
20
+ await access(planuConfigPath);
21
+ }
22
+ catch {
23
+ const planuConfig = createPlanuConfig();
24
+ await writeFile(planuConfigPath, serializePlanuConfig(planuConfig), 'utf-8');
25
+ planuConfigGenerated = true;
26
+ }
27
+ // What's New: check version change and extract highlights (best-effort)
28
+ const whatsNew = await checkWhatsNew(planuConfigPath);
29
+ return { planuConfigPath, planuConfigGenerated, whatsNew };
30
+ }
31
+ //# sourceMappingURL=config-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-builder.js","sourceRoot":"","sources":["../../../src/tools/init-project/config-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,SAAiB,EACjB,SAA2B;IAE3B,kEAAkE;IAClE,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC;IACzD,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAEjE,8CAA8C;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,oBAAoB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,wEAAwE;IACxE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,CAAC;IAEtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface GitSetupResult {
2
+ hooksInstalled: string[];
3
+ gitFlowType: string;
4
+ gitignoreUpdated: boolean;
5
+ }
6
+ /** SPEC-001: Setup git hooks, detect branching model, and configure .gitignore. */
7
+ export declare function runGitSetup(projectPath: string, projectId: string): Promise<GitSetupResult>;
8
+ //# sourceMappingURL=git-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-setup.d.ts","sourceRoot":"","sources":["../../../src/tools/init-project/git-setup.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CA2BzB"}
@@ -0,0 +1,70 @@
1
+ // tools/init-project/git-setup.ts — Git configuration during init_project
2
+ import { handleSetupHooks } from '../git/hook-ops.js';
3
+ import { detectGitFlowType } from '../git/git-helpers.js';
4
+ import { readFile, writeFile } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ /** SPEC-001: Setup git hooks, detect branching model, and configure .gitignore. */
7
+ export async function runGitSetup(projectPath, projectId) {
8
+ // Auto-install git hooks (best-effort)
9
+ let hooksInstalled = [];
10
+ try {
11
+ const hookResult = await handleSetupHooks(projectId);
12
+ if (!hookResult.isError) {
13
+ const hookData = JSON.parse(hookResult.content[0]?.text ?? '{}');
14
+ hooksInstalled = hookData.hooksInstalled ?? [];
15
+ }
16
+ }
17
+ catch {
18
+ // Hooks setup is best-effort — don't fail init_project
19
+ }
20
+ // Auto-detect branching model (best-effort)
21
+ let gitFlowType = 'unknown';
22
+ try {
23
+ gitFlowType = await detectGitFlowType(projectPath);
24
+ }
25
+ catch {
26
+ // Not a git repo — skip
27
+ }
28
+ // Auto-configure .gitignore (best-effort)
29
+ const gitignoreUpdated = await configureGitignore(projectPath);
30
+ return { hooksInstalled, gitFlowType, gitignoreUpdated };
31
+ }
32
+ async function configureGitignore(projectPath) {
33
+ const gitignorePath = join(projectPath, '.gitignore');
34
+ try {
35
+ let gitignoreContent = '';
36
+ try {
37
+ gitignoreContent = await readFile(gitignorePath, 'utf-8');
38
+ }
39
+ catch {
40
+ /* file doesn't exist */
41
+ }
42
+ // Remove planu/ from .gitignore if present — specs MUST be tracked in git
43
+ const protectedPaths = ['planu/', 'planu.json', 'planu/*'];
44
+ const lines = gitignoreContent.split('\n');
45
+ const cleaned = lines.filter((line) => !protectedPaths.some((p) => line.trim() === p));
46
+ let updated = cleaned.length !== lines.length;
47
+ if (updated) {
48
+ gitignoreContent = cleaned.join('\n');
49
+ }
50
+ // Add data/ if missing — runtime data should NOT be tracked
51
+ const linesToAdd = [];
52
+ if (!gitignoreContent.includes('data/')) {
53
+ linesToAdd.push('data/');
54
+ }
55
+ if (linesToAdd.length > 0 || updated) {
56
+ const separator = gitignoreContent.endsWith('\n') || gitignoreContent === '' ? '' : '\n';
57
+ const addition = linesToAdd.length > 0
58
+ ? `${separator}# Planu data (auto-generated)\n${linesToAdd.join('\n')}\n`
59
+ : '';
60
+ await writeFile(gitignorePath, gitignoreContent + addition, 'utf-8');
61
+ updated = true;
62
+ }
63
+ return updated;
64
+ }
65
+ catch {
66
+ /* best-effort */
67
+ return false;
68
+ }
69
+ }
70
+ //# sourceMappingURL=git-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-setup.js","sourceRoot":"","sources":["../../../src/tools/init-project/git-setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tools/init-project/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAIhB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAyM9B,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqZrF"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/tools/init-project/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAoCzE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmNrF"}
@@ -1,154 +1,20 @@
1
1
  import { ti } from '../../i18n/index.js';
2
- import { hashProjectPath, knowledgeStore, globalStore, licenseStore, specStore, } from '../../storage/index.js';
2
+ import { hashProjectPath, knowledgeStore, globalStore, licenseStore, } from '../../storage/index.js';
3
3
  import { getCurrentTier } from '../license-gate.js';
4
4
  import { checkLimits } from '../../engine/license-validator.js';
5
5
  import { analyzeProject, checkProjectCompleteness } from '../../engine/analyzer.js';
6
6
  import { parseProjectQualityRules } from '../../engine/auditor-claude-md.js';
7
- import { detectModernPatterns, detectDdd } from '../../engine/architecture-pattern-detector.js';
8
- import { detectAgileProcess } from '../../engine/agile-config-builder.js';
9
- import { buildLegalProfile } from '../../engine/legal-compliance/index.js';
10
7
  import { detectMissingAreas, buildRequestPrompt } from '../../engine/context-merger.js';
11
- import { detectProjectPrivacyConfig, maybeGenerateEnvExample, buildBeginnerEnvGuide, detectOrchestratorInfo, detectComposeMultiplatform, injectSddIntoClaude, } from './helpers.js';
12
- import { scaffoldLintConfig } from './lint-scaffolder.js';
13
- import { generateProjectRules, writeRules } from '../../engine/rules-generator/index.js';
8
+ import { detectProjectPrivacyConfig, maybeGenerateEnvExample, buildBeginnerEnvGuide, } from './helpers.js';
14
9
  import { buildInitProjectResult } from './result-builder.js';
15
- import { buildProjectSections } from './claude-md-generator.js';
16
10
  import { fetchRecommendedSkills } from '../suggest-tooling/skills-fetcher.js';
17
- import { handleSkillInstall } from '../skill-registry/index.js';
18
- import { autoInstallRecommendedSkills } from './skill-auto-installer.js';
19
- import { generateRules, detectAgentPlatformFromFiles } from '../../engine/skill-generator.js';
20
- import { createPlanuConfig, serializePlanuConfig } from '../../engine/planu-config-writer.js';
21
- import { filterLegacySpecs, migrateSpecs, filterUnprefixedSpecs, migrateSpecFolderNames, discoverAndFlattenSpecs, reconcileSpecPaths, } from '../../engine/spec-migrator.js';
22
- import { readFile, writeFile, access, mkdir } from 'node:fs/promises';
23
- import { join, dirname } from 'node:path';
24
- import { scanProject } from '../../engine/project-scanner/index.js';
25
- import { handleSetupHooks } from '../git/hook-ops.js';
26
- import { detectGitFlowType } from '../git/git-helpers.js';
27
11
  import { autoCompleteSpecs } from '../git/branch-ops.js';
28
- import { isTelemetryEnabled, hasNeverBeenPrompted, markAsPrompted, getOrCreateInstallationId, sendTelemetryEvent, } from '../../engine/telemetry/index.js';
29
- import { handleInitConstitution } from '../init-constitution/handler.js';
30
- import { PLANU_VERSION } from '../../config/version.js';
31
- import { getWhatsNew } from '../../engine/whats-new.js';
32
- import { checkProjectHealth, } from '../../engine/project-health-checker.js';
33
- import { saveBaseline } from '../../storage/convention-baseline.js';
34
12
  import { regeneratePages } from '../../engine/doc-generator/portal/index.js';
35
- /** SPEC-192: Run health check and store convention baseline (best-effort). */
36
- async function runHealthCheckWithBaseline(projectPath, projectId, knowledge, specSummaries) {
37
- try {
38
- const report = await checkProjectHealth(projectPath, knowledge, specSummaries);
39
- if (report.conventionScan) {
40
- await saveBaseline(projectId, {
41
- projectId,
42
- snapshot: report.conventionScan,
43
- createdAt: new Date().toISOString(),
44
- updatedAt: new Date().toISOString(),
45
- }).catch((err) => {
46
- console.warn('[Planu] Failed to save convention baseline:', err instanceof Error ? err.message : String(err));
47
- });
48
- }
49
- return report;
50
- }
51
- catch {
52
- return null;
53
- }
54
- }
55
- /**
56
- * Read autoInstallSkills flag from planu.json (best-effort).
57
- * Default is true (opt-out): returns false only when explicitly set to false.
58
- */
59
- async function readAutoInstallFlag(configPath) {
60
- try {
61
- const raw = JSON.parse(await readFile(configPath, 'utf-8'));
62
- if (typeof raw === 'object' &&
63
- raw !== null &&
64
- 'autoInstallSkills' in raw &&
65
- raw.autoInstallSkills === false) {
66
- return false;
67
- }
68
- return true;
69
- }
70
- catch {
71
- return true;
72
- }
73
- }
74
- /** Install recommended skills or queue them for manual install (best-effort). */
75
- async function resolveSkillInstalls(skills, projectPath, autoInstall) {
76
- const skillsAutoInstalled = [];
77
- const skillsPendingInstall = [];
78
- for (const skill of skills) {
79
- if (autoInstall) {
80
- try {
81
- const result = await handleSkillInstall({ name: skill.name, projectPath });
82
- if (!result.isError) {
83
- skillsAutoInstalled.push(skill.name);
84
- }
85
- else {
86
- skillsPendingInstall.push(skill.name);
87
- }
88
- }
89
- catch {
90
- skillsPendingInstall.push(skill.name);
91
- }
92
- }
93
- else {
94
- skillsPendingInstall.push(skill.name);
95
- }
96
- }
97
- return { skillsAutoInstalled, skillsPendingInstall };
98
- }
99
- /** Extract "What's New" highlights by comparing lastSeenVersion in planu.json (best-effort). */
100
- async function checkWhatsNew(configPath) {
101
- try {
102
- const raw = JSON.parse(await readFile(configPath, 'utf-8'));
103
- const lastSeen = typeof raw === 'object' && raw !== null && 'lastSeenVersion' in raw
104
- ? String(raw.lastSeenVersion)
105
- : '0.0.0';
106
- const result = getWhatsNew(lastSeen, PLANU_VERSION);
107
- // Update lastSeenVersion in config (fire-and-forget)
108
- if (result !== null || lastSeen !== PLANU_VERSION) {
109
- const updated = { ...raw, lastSeenVersion: PLANU_VERSION };
110
- await writeFile(configPath, JSON.stringify(updated, null, 2) + '\n', 'utf-8');
111
- }
112
- return result;
113
- }
114
- catch {
115
- return null;
116
- }
117
- }
118
- function generateAndWriteRules(projectPath) {
119
- try {
120
- const aiRules = generateProjectRules(projectPath);
121
- return writeRules(aiRules);
122
- }
123
- catch {
124
- return { written: [], skipped: [] };
125
- }
126
- }
127
- async function fireTelemetry(knowledge) {
128
- const [enabled, neverPrompted, installationId] = await Promise.all([
129
- isTelemetryEnabled().catch(() => false),
130
- hasNeverBeenPrompted().catch(() => false),
131
- getOrCreateInstallationId().catch(() => ''),
132
- ]);
133
- if (enabled && installationId) {
134
- sendTelemetryEvent({
135
- event: 'init_project',
136
- properties: { stack: knowledge.stack, language: knowledge.language },
137
- installationId,
138
- });
139
- }
140
- if (neverPrompted) {
141
- void markAsPrompted().catch((_e) => undefined);
142
- }
143
- return neverPrompted;
144
- }
145
- /** SPEC-228: Run convention scan and write planu/conventions.json (best-effort). */
146
- async function runConventionScan(projectPath) {
147
- const result = await scanProject(projectPath);
148
- const planuDir = join(projectPath, 'planu');
149
- await mkdir(planuDir, { recursive: true });
150
- await writeFile(join(planuDir, 'conventions.json'), JSON.stringify(result, null, 2) + '\n', 'utf-8');
151
- }
13
+ import { detectStackPatterns } from './stack-detector.js';
14
+ import { buildProjectConfig } from './config-builder.js';
15
+ import { runSpecMigrations, listProjectSpecs } from './migration-runner.js';
16
+ import { runScaffoldWriter } from './scaffold-writer.js';
17
+ import { readAutoInstallFlag, orchestrateSkillInstalls, runHealthCheckWithBaseline, runConventionScanSafe, fireTelemetry, } from './lifecycle-helpers.js';
152
18
  export async function handleInitProject(params) {
153
19
  const { projectPath, locale, hourlyRate, experienceLevel, userProfile, autoInstallSkills } = params;
154
20
  try {
@@ -189,221 +55,24 @@ export async function handleInitProject(params) {
189
55
  if (hourlyRate !== undefined) {
190
56
  await globalStore.updateGlobalConfig({ hourlyRate });
191
57
  }
192
- // SPEC-033: Detect modern architecture patterns and agile process
193
- // SPEC-033 TD-P14-01+02: K3s/Nomad orchestrator + SPEC-013 TD-P14-01: Compose Multiplatform
194
- const [modernPatterns, dddConfig, agileDetection, orchestratorInfo, composeMultiplatform] = await Promise.all([
195
- detectModernPatterns(projectPath),
196
- detectDdd(projectPath),
197
- detectAgileProcess(projectPath),
198
- detectOrchestratorInfo(projectPath),
199
- detectComposeMultiplatform(projectPath),
200
- ]);
201
- // Save project knowledge
202
- await knowledgeStore.saveKnowledge(projectId, knowledge);
203
- // SPEC-131: Detect legal compliance profile
204
- const legalProfile = buildLegalProfile(knowledge);
205
- knowledge.legalProfile = legalProfile;
206
- // Re-save with legal profile
58
+ // SPEC-033: Detect modern architecture patterns and stack info
59
+ const stackResult = await detectStackPatterns(projectPath);
60
+ const { modernPatterns, dddConfig, agileDetection, orchestratorInfo, composeMultiplatform } = stackResult;
61
+ // Save initial project knowledge
207
62
  await knowledgeStore.saveKnowledge(projectId, knowledge);
208
- // Generate planu.json if it doesn't exist yet
209
- const planuConfigPath = join(projectPath, 'planu.json');
210
- let planuConfigGenerated = false;
211
- try {
212
- await access(planuConfigPath);
213
- }
214
- catch {
215
- const planuConfig = createPlanuConfig();
216
- await writeFile(planuConfigPath, serializePlanuConfig(planuConfig), 'utf-8');
217
- planuConfigGenerated = true;
218
- }
219
- // What's New: check version change and extract highlights (best-effort)
220
- const whatsNew = await checkWhatsNew(planuConfigPath);
221
- // Auto-discover and flatten specs in subcategory folders (v0.30 → v0.40 migration)
222
- let discoveryResult = null;
223
- try {
224
- discoveryResult = await discoverAndFlattenSpecs(projectPath);
225
- }
226
- catch {
227
- /* best-effort — don't fail init */
228
- }
229
- // Auto-migrate legacy specs if detected (docs/sdd/specs/ → planu/specs/)
230
- const allSpecs = await specStore.listSpecs(projectId);
231
- const legacySpecs = filterLegacySpecs(allSpecs);
232
- let migrationResult = null;
233
- if (legacySpecs.length > 0) {
234
- migrationResult = await migrateSpecs(projectPath, legacySpecs, {
235
- listSpecs: specStore.listSpecs,
236
- updateSpec: specStore.updateSpec,
237
- });
238
- // Update knowledge specLocation after migration
239
- knowledge.specLocation = 'planu/specs';
240
- await knowledgeStore.saveKnowledge(projectId, knowledge);
241
- }
242
- // Reconcile specs.json paths with actual filesystem (fixes stale paths after rename/flatten)
243
- try {
244
- await reconcileSpecPaths(projectPath, {
245
- listSpecs: specStore.listSpecs,
246
- updateSpec: specStore.updateSpec,
247
- }, projectId);
248
- }
249
- catch {
250
- /* best-effort */
251
- }
252
- // Auto-migrate spec folders without SPEC-XXX- prefix
253
- const unprefixedSpecs = filterUnprefixedSpecs(await specStore.listSpecs(projectId));
254
- let folderMigrationResult = null;
255
- if (unprefixedSpecs.length > 0) {
256
- folderMigrationResult = await migrateSpecFolderNames(projectPath, unprefixedSpecs, {
257
- listSpecs: specStore.listSpecs,
258
- updateSpec: specStore.updateSpec,
259
- });
260
- }
63
+ // SPEC-131: Build legal profile and generate planu.json / What's New
64
+ const configResult = await buildProjectConfig(projectPath, projectId, knowledge);
65
+ const { planuConfigPath, planuConfigGenerated, whatsNew } = configResult;
66
+ // Run spec migrations (v0.30 -> v0.40, legacy paths, prefix normalization)
67
+ const { discoveryResult, migrationResult, folderMigrationResult } = await runSpecMigrations(projectPath, projectId, knowledge);
261
68
  // Auto-fetch recommended skills based on detected stack
262
69
  const recommendedSkills = await fetchRecommendedSkills(knowledge);
263
- // Auto-install skills unless explicitly disabled via input param or planu.json (opt-out, SPEC-185)
264
- // Input param takes precedence over planu.json config.
70
+ // Auto-install or queue skills (opt-out via planu.json or input param, SPEC-185)
265
71
  const autoInstallFromConfig = autoInstallSkills ?? (await readAutoInstallFlag(planuConfigPath));
266
- const autoInstall = recommendedSkills.length > 0 && autoInstallFromConfig;
267
- let skillsAutoInstalled = [];
268
- let skillsPendingInstall = [];
269
- let skillsSkipped = [];
270
- if (autoInstall) {
271
- const installSummary = await autoInstallRecommendedSkills(projectPath, recommendedSkills);
272
- skillsAutoInstalled = installSummary.installed;
273
- skillsSkipped = installSummary.skipped;
274
- skillsPendingInstall = installSummary.failed.map((f) => f.name);
275
- }
276
- else {
277
- const { skillsAutoInstalled: legacyInstalled, skillsPendingInstall: legacyPending } = await resolveSkillInstalls(recommendedSkills, projectPath, false);
278
- skillsAutoInstalled = legacyInstalled;
279
- skillsPendingInstall = legacyPending;
280
- }
281
- // Auto-detect AI platform and generate rules with skills — zero user intervention
282
- const agentDetection = await detectAgentPlatformFromFiles(projectPath);
283
- const platform = agentDetection.platform;
284
- const constitution = await knowledgeStore.getConstitution(projectId);
285
- const generatedRules = await generateRules(platform, knowledge, constitution ?? undefined, {
286
- recommendedSkills,
287
- });
288
- // Auto-write rules file to disk (only if it doesn't exist — never overwrite user's custom rules)
289
- const rulesFilePath = join(projectPath, generatedRules.rulesFile.path);
290
- let rulesWritten = false;
291
- try {
292
- await access(rulesFilePath);
293
- }
294
- catch {
295
- await mkdir(dirname(rulesFilePath), { recursive: true });
296
- await writeFile(rulesFilePath, generatedRules.rulesFile.content, 'utf-8');
297
- rulesWritten = true;
298
- }
299
- // Auto-write additional rules files (e.g., sdd-workflow.md skill)
300
- const additionalFilesWritten = [];
301
- for (const file of generatedRules.additionalFiles) {
302
- const filePath = join(projectPath, file.path);
303
- try {
304
- await access(filePath);
305
- }
306
- catch {
307
- await mkdir(dirname(filePath), { recursive: true });
308
- await writeFile(filePath, file.content, 'utf-8');
309
- additionalFilesWritten.push(file.path);
310
- }
311
- }
312
- // SPEC-001: Auto-install git hooks (best-effort)
313
- let hooksInstalled = [];
314
- try {
315
- const hookResult = await handleSetupHooks(projectId);
316
- if (!hookResult.isError) {
317
- const hookData = JSON.parse(hookResult.content[0]?.text ?? '{}');
318
- hooksInstalled = hookData.hooksInstalled ?? [];
319
- }
320
- }
321
- catch {
322
- // Hooks setup is best-effort — don't fail init_project
323
- }
324
- // SPEC-001: Auto-detect branching model (best-effort)
325
- let gitFlowType = 'unknown';
326
- try {
327
- gitFlowType = await detectGitFlowType(projectPath);
328
- }
329
- catch {
330
- // Not a git repo — skip
331
- }
332
- // SPEC-001: Auto-configure .gitignore (best-effort)
333
- const gitignorePath = join(projectPath, '.gitignore');
334
- let gitignoreUpdated = false;
335
- try {
336
- let gitignoreContent = '';
337
- try {
338
- gitignoreContent = await readFile(gitignorePath, 'utf-8');
339
- }
340
- catch {
341
- /* file doesn't exist */
342
- }
343
- // Remove planu/ from .gitignore if present — specs MUST be tracked in git
344
- const protectedPaths = ['planu/', 'planu.json', 'planu/*'];
345
- const lines = gitignoreContent.split('\n');
346
- const cleaned = lines.filter((line) => !protectedPaths.some((p) => line.trim() === p));
347
- if (cleaned.length !== lines.length) {
348
- gitignoreContent = cleaned.join('\n');
349
- gitignoreUpdated = true;
350
- }
351
- // Add data/ if missing — runtime data should NOT be tracked
352
- const linesToAdd = [];
353
- if (!gitignoreContent.includes('data/')) {
354
- linesToAdd.push('data/');
355
- }
356
- if (linesToAdd.length > 0 || gitignoreUpdated) {
357
- const separator = gitignoreContent.endsWith('\n') || gitignoreContent === '' ? '' : '\n';
358
- const addition = linesToAdd.length > 0
359
- ? `${separator}# Planu data (auto-generated)\n${linesToAdd.join('\n')}\n`
360
- : '';
361
- await writeFile(gitignorePath, gitignoreContent + addition, 'utf-8');
362
- gitignoreUpdated = true;
363
- }
364
- }
365
- catch {
366
- /* best-effort */
367
- }
368
- // SPEC-001: Auto-initialize constitution (best-effort)
369
- let constitutionInitialized = false;
370
- const existingConstitution = await knowledgeStore.getConstitution(projectId);
371
- if (!existingConstitution) {
372
- try {
373
- const constResult = await handleInitConstitution({
374
- projectId,
375
- autoDetect: true,
376
- });
377
- constitutionInitialized = !constResult.isError;
378
- }
379
- catch {
380
- /* best-effort */
381
- }
382
- }
383
- // Auto-inject SDD workflow into CLAUDE.md (best-effort, idempotent)
384
- let claudeMdUpdated = false;
385
- try {
386
- const projectSections = buildProjectSections(knowledge);
387
- claudeMdUpdated = await injectSddIntoClaude(projectPath, projectSections);
388
- }
389
- catch {
390
- /* best-effort */
391
- }
392
- // SPEC-178: Scaffold ESLint and Prettier config if missing (best-effort)
393
- let eslintCreated = false;
394
- let prettierCreated = false;
395
- let lintSuggestions = [];
396
- try {
397
- const lintResult = await scaffoldLintConfig(projectPath, knowledge);
398
- eslintCreated = lintResult.eslintCreated;
399
- prettierCreated = lintResult.prettierCreated;
400
- lintSuggestions = lintResult.suggestions;
401
- }
402
- catch {
403
- /* best-effort — don't fail init_project */
404
- }
405
- // SPEC-187: Generate AI-tool-specific architecture rules (best-effort)
406
- const { written: architectureRulesWritten, skipped: architectureRulesSkipped } = generateAndWriteRules(projectPath);
72
+ const { skillsAutoInstalled, skillsPendingInstall, skillsSkipped } = await orchestrateSkillInstalls(recommendedSkills, projectPath, autoInstallFromConfig);
73
+ // Write scaffold files: rules, git setup, constitution, CLAUDE.md, lint, architecture rules
74
+ const scaffoldResult = await runScaffoldWriter(projectPath, projectId, knowledge, recommendedSkills);
75
+ const { platform, generatedRules, rulesWritten, additionalFilesWritten, hooksInstalled, gitFlowType, gitignoreUpdated, constitutionInitialized, claudeMdUpdated, eslintCreated, prettierCreated, lintSuggestions, architectureRulesWritten, architectureRulesSkipped, } = scaffoldResult;
407
76
  // SPEC-176: Auto-mark specs as done when their branch is merged to develop
408
77
  const autoCompletedSpecs = await autoCompleteSpecs(projectId, projectPath).catch(() => []);
409
78
  // SPEC-036: Request context when knowledge is incomplete
@@ -412,22 +81,18 @@ export async function handleInitProject(params) {
412
81
  const needsContext = missingAreas.length > 0 && knowledge.contextRequested !== true;
413
82
  if (needsContext) {
414
83
  contextRequestPrompt = buildRequestPrompt(missingAreas, knowledge);
415
- // Persist the contextRequested flag without overwriting anything else
416
- await knowledgeStore.saveKnowledge(projectId, {
417
- ...knowledge,
418
- contextRequested: true,
419
- });
84
+ await knowledgeStore.saveKnowledge(projectId, { ...knowledge, contextRequested: true });
420
85
  }
421
- // SPEC-025 tech-debt: Auto-generate .env.example from detected env vars
86
+ // SPEC-025 tech-debt: Auto-generate .env.example and beginner guide
422
87
  const envVars = knowledge.envSetup.variables;
423
88
  const envExampleGenerated = await maybeGenerateEnvExample(projectPath, envVars);
424
- // SPEC-025 tech-debt: Beginner env guide
425
89
  const beginnerEnvGuide = effectiveExperience === 'beginner' && envVars.length > 0
426
90
  ? buildBeginnerEnvGuide(envVars)
427
91
  : null;
428
92
  // SPEC-030: Detect legal framework and third-party data processors
429
93
  const privacyConfig = await detectProjectPrivacyConfig(projectPath);
430
94
  // SPEC-180: Project health check (best-effort)
95
+ const allSpecs = await listProjectSpecs(projectId);
431
96
  const specSummaries = allSpecs.map((s) => ({
432
97
  specId: s.id,
433
98
  status: s.status,
@@ -435,15 +100,12 @@ export async function handleInitProject(params) {
435
100
  updatedAt: s.updatedAt,
436
101
  }));
437
102
  const healthReport = await runHealthCheckWithBaseline(projectPath, projectId, knowledge, specSummaries);
438
- // SPEC-193: Generate portal pages that depend on knowledge/risks/decisions stores.
439
- // Runs synchronously so pages are available immediately after init_project returns.
103
+ // SPEC-193: Generate portal pages (fire-and-forget)
440
104
  regeneratePages(projectPath, ['knowledge', 'risks', 'decisions']).catch(() => {
441
105
  /* best-effort — never fail init */
442
106
  });
443
107
  // SPEC-228: Deep scan — detect conventions and write planu/conventions.json (best-effort)
444
- await runConventionScan(projectPath).catch(() => {
445
- /* best-effort — never fail init */
446
- });
108
+ const conventionScanStatus = await runConventionScanSafe(projectPath);
447
109
  // SPEC-200: Anonymous opt-in telemetry — fire-and-forget, never blocks response
448
110
  const neverPrompted = await fireTelemetry(knowledge).catch(() => false);
449
111
  return buildInitProjectResult({
@@ -490,6 +152,7 @@ export async function handleInitProject(params) {
490
152
  architectureRulesWritten,
491
153
  architectureRulesSkipped,
492
154
  telemetryOptInPrompt: neverPrompted ? 'show' : null,
155
+ conventionScanStatus,
493
156
  });
494
157
  }
495
158
  catch (error) {