@planu/cli 0.89.0 → 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 (446) 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 +2 -1
  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/doc-generator.test.d.ts +2 -0
  34. package/dist/engine/doc-generator.test.d.ts.map +1 -0
  35. package/dist/engine/doc-generator.test.js +961 -0
  36. package/dist/engine/doc-generator.test.js.map +1 -0
  37. package/dist/engine/estimator.test.d.ts +2 -0
  38. package/dist/engine/estimator.test.d.ts.map +1 -0
  39. package/dist/engine/estimator.test.js +334 -0
  40. package/dist/engine/estimator.test.js.map +1 -0
  41. package/dist/engine/skill-generator.test.d.ts +2 -0
  42. package/dist/engine/skill-generator.test.d.ts.map +1 -0
  43. package/dist/engine/skill-generator.test.js +742 -0
  44. package/dist/engine/skill-generator.test.js.map +1 -0
  45. package/dist/engine/spec-migrator/filesystem-import.d.ts +14 -0
  46. package/dist/engine/spec-migrator/filesystem-import.d.ts.map +1 -0
  47. package/dist/engine/spec-migrator/filesystem-import.js +96 -0
  48. package/dist/engine/spec-migrator/filesystem-import.js.map +1 -0
  49. package/dist/engine/spec-migrator/flatten-specs.d.ts +12 -0
  50. package/dist/engine/spec-migrator/flatten-specs.d.ts.map +1 -0
  51. package/dist/engine/spec-migrator/flatten-specs.js +111 -0
  52. package/dist/engine/spec-migrator/flatten-specs.js.map +1 -0
  53. package/dist/engine/spec-migrator/folder-operations.d.ts +9 -0
  54. package/dist/engine/spec-migrator/folder-operations.d.ts.map +1 -0
  55. package/dist/engine/spec-migrator/folder-operations.js +109 -0
  56. package/dist/engine/spec-migrator/folder-operations.js.map +1 -0
  57. package/dist/engine/spec-migrator/frontmatter-parser.d.ts +11 -0
  58. package/dist/engine/spec-migrator/frontmatter-parser.d.ts.map +1 -0
  59. package/dist/engine/spec-migrator/frontmatter-parser.js +92 -0
  60. package/dist/engine/spec-migrator/frontmatter-parser.js.map +1 -0
  61. package/dist/engine/spec-migrator/index.d.ts +9 -0
  62. package/dist/engine/spec-migrator/index.d.ts.map +1 -0
  63. package/dist/engine/spec-migrator/index.js +18 -0
  64. package/dist/engine/spec-migrator/index.js.map +1 -0
  65. package/dist/engine/spec-migrator/legacy-migration.d.ts +13 -0
  66. package/dist/engine/spec-migrator/legacy-migration.d.ts.map +1 -0
  67. package/dist/engine/spec-migrator/legacy-migration.js +75 -0
  68. package/dist/engine/spec-migrator/legacy-migration.js.map +1 -0
  69. package/dist/engine/spec-migrator/migration-validator.d.ts +20 -0
  70. package/dist/engine/spec-migrator/migration-validator.d.ts.map +1 -0
  71. package/dist/engine/spec-migrator/migration-validator.js +35 -0
  72. package/dist/engine/spec-migrator/migration-validator.js.map +1 -0
  73. package/dist/engine/spec-migrator/path-utils.d.ts +13 -0
  74. package/dist/engine/spec-migrator/path-utils.d.ts.map +1 -0
  75. package/dist/engine/spec-migrator/path-utils.js +40 -0
  76. package/dist/engine/spec-migrator/path-utils.js.map +1 -0
  77. package/dist/engine/spec-migrator/prefix-migration.d.ts +11 -0
  78. package/dist/engine/spec-migrator/prefix-migration.d.ts.map +1 -0
  79. package/dist/engine/spec-migrator/prefix-migration.js +73 -0
  80. package/dist/engine/spec-migrator/prefix-migration.js.map +1 -0
  81. package/dist/engine/spec-migrator/reconcile-paths.d.ts +12 -0
  82. package/dist/engine/spec-migrator/reconcile-paths.d.ts.map +1 -0
  83. package/dist/engine/spec-migrator/reconcile-paths.js +77 -0
  84. package/dist/engine/spec-migrator/reconcile-paths.js.map +1 -0
  85. package/dist/engine/spec-migrator/version-detection.d.ts +5 -0
  86. package/dist/engine/spec-migrator/version-detection.d.ts.map +1 -0
  87. package/dist/engine/spec-migrator/version-detection.js +19 -0
  88. package/dist/engine/spec-migrator/version-detection.js.map +1 -0
  89. package/dist/engine/spec-migrator.d.ts +1 -58
  90. package/dist/engine/spec-migrator.d.ts.map +1 -1
  91. package/dist/engine/spec-migrator.js +2 -658
  92. package/dist/engine/spec-migrator.js.map +1 -1
  93. package/dist/engine/spec-summary-html/dashboard-renderer.d.ts +6 -0
  94. package/dist/engine/spec-summary-html/dashboard-renderer.d.ts.map +1 -0
  95. package/dist/engine/spec-summary-html/dashboard-renderer.js +333 -0
  96. package/dist/engine/spec-summary-html/dashboard-renderer.js.map +1 -0
  97. package/dist/engine/spec-summary-html/hash-utils.d.ts +11 -0
  98. package/dist/engine/spec-summary-html/hash-utils.d.ts.map +1 -0
  99. package/dist/engine/spec-summary-html/hash-utils.js +39 -0
  100. package/dist/engine/spec-summary-html/hash-utils.js.map +1 -0
  101. package/dist/engine/spec-summary-html/index.d.ts +4 -0
  102. package/dist/engine/spec-summary-html/index.d.ts.map +1 -0
  103. package/dist/engine/spec-summary-html/index.js +6 -0
  104. package/dist/engine/spec-summary-html/index.js.map +1 -0
  105. package/dist/engine/spec-summary-html/report-renderer.d.ts +9 -0
  106. package/dist/engine/spec-summary-html/report-renderer.d.ts.map +1 -0
  107. package/dist/engine/spec-summary-html/report-renderer.js +139 -0
  108. package/dist/engine/spec-summary-html/report-renderer.js.map +1 -0
  109. package/dist/engine/spec-summary-html.d.ts +1 -0
  110. package/dist/engine/spec-summary-html.d.ts.map +1 -1
  111. package/dist/engine/spec-summary-html.js +19 -473
  112. package/dist/engine/spec-summary-html.js.map +1 -1
  113. package/dist/engine/update-notifier.d.ts +8 -0
  114. package/dist/engine/update-notifier.d.ts.map +1 -0
  115. package/dist/engine/update-notifier.js +130 -0
  116. package/dist/engine/update-notifier.js.map +1 -0
  117. package/dist/engine/validator/dor-dod.d.ts.map +1 -1
  118. package/dist/engine/validator/dor-dod.js +8 -5
  119. package/dist/engine/validator/dor-dod.js.map +1 -1
  120. package/dist/engine/validator.d.ts.map +1 -1
  121. package/dist/engine/validator.js +4 -3
  122. package/dist/engine/validator.js.map +1 -1
  123. package/dist/engine/validator.test.d.ts +2 -0
  124. package/dist/engine/validator.test.d.ts.map +1 -0
  125. package/dist/engine/validator.test.js +2371 -0
  126. package/dist/engine/validator.test.js.map +1 -0
  127. package/dist/engine/web-fetcher.test.d.ts +2 -0
  128. package/dist/engine/web-fetcher.test.d.ts.map +1 -0
  129. package/dist/engine/web-fetcher.test.js +360 -0
  130. package/dist/engine/web-fetcher.test.js.map +1 -0
  131. package/dist/i18n/index.test.d.ts +2 -0
  132. package/dist/i18n/index.test.d.ts.map +1 -0
  133. package/dist/i18n/index.test.js +375 -0
  134. package/dist/i18n/index.test.js.map +1 -0
  135. package/dist/index.js +8 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/index.test.d.ts +2 -0
  138. package/dist/index.test.d.ts.map +1 -0
  139. package/dist/index.test.js +124 -0
  140. package/dist/index.test.js.map +1 -0
  141. package/dist/resources/patterns.test.d.ts +2 -0
  142. package/dist/resources/patterns.test.d.ts.map +1 -0
  143. package/dist/resources/patterns.test.js +142 -0
  144. package/dist/resources/patterns.test.js.map +1 -0
  145. package/dist/resources/process.test.d.ts +2 -0
  146. package/dist/resources/process.test.d.ts.map +1 -0
  147. package/dist/resources/process.test.js +48 -0
  148. package/dist/resources/process.test.js.map +1 -0
  149. package/dist/resources/registry.test.d.ts +2 -0
  150. package/dist/resources/registry.test.d.ts.map +1 -0
  151. package/dist/resources/registry.test.js +138 -0
  152. package/dist/resources/registry.test.js.map +1 -0
  153. package/dist/resources/specs.test.d.ts +2 -0
  154. package/dist/resources/specs.test.d.ts.map +1 -0
  155. package/dist/resources/specs.test.js +130 -0
  156. package/dist/resources/specs.test.js.map +1 -0
  157. package/dist/resources/templates.test.d.ts +2 -0
  158. package/dist/resources/templates.test.d.ts.map +1 -0
  159. package/dist/resources/templates.test.js +119 -0
  160. package/dist/resources/templates.test.js.map +1 -0
  161. package/dist/smoke.test.d.ts +2 -0
  162. package/dist/smoke.test.d.ts.map +1 -0
  163. package/dist/smoke.test.js +229 -0
  164. package/dist/smoke.test.js.map +1 -0
  165. package/dist/storage/base-store.test.d.ts +2 -0
  166. package/dist/storage/base-store.test.d.ts.map +1 -0
  167. package/dist/storage/base-store.test.js +180 -0
  168. package/dist/storage/base-store.test.js.map +1 -0
  169. package/dist/storage/global-store.test.d.ts +2 -0
  170. package/dist/storage/global-store.test.d.ts.map +1 -0
  171. package/dist/storage/global-store.test.js +327 -0
  172. package/dist/storage/global-store.test.js.map +1 -0
  173. package/dist/storage/index.test.d.ts +2 -0
  174. package/dist/storage/index.test.d.ts.map +1 -0
  175. package/dist/storage/index.test.js +56 -0
  176. package/dist/storage/index.test.js.map +1 -0
  177. package/dist/storage/knowledge-store.test.d.ts +2 -0
  178. package/dist/storage/knowledge-store.test.d.ts.map +1 -0
  179. package/dist/storage/knowledge-store.test.js +368 -0
  180. package/dist/storage/knowledge-store.test.js.map +1 -0
  181. package/dist/storage/metrics-store.test.d.ts +2 -0
  182. package/dist/storage/metrics-store.test.d.ts.map +1 -0
  183. package/dist/storage/metrics-store.test.js +212 -0
  184. package/dist/storage/metrics-store.test.js.map +1 -0
  185. package/dist/storage/pattern-store.test.d.ts +2 -0
  186. package/dist/storage/pattern-store.test.d.ts.map +1 -0
  187. package/dist/storage/pattern-store.test.js +224 -0
  188. package/dist/storage/pattern-store.test.js.map +1 -0
  189. package/dist/storage/spec-store.test.d.ts +2 -0
  190. package/dist/storage/spec-store.test.d.ts.map +1 -0
  191. package/dist/storage/spec-store.test.js +227 -0
  192. package/dist/storage/spec-store.test.js.map +1 -0
  193. package/dist/tools/audit.test.d.ts +2 -0
  194. package/dist/tools/audit.test.d.ts.map +1 -0
  195. package/dist/tools/audit.test.js +169 -0
  196. package/dist/tools/audit.test.js.map +1 -0
  197. package/dist/tools/challenge-spec.test.d.ts +2 -0
  198. package/dist/tools/challenge-spec.test.d.ts.map +1 -0
  199. package/dist/tools/challenge-spec.test.js +782 -0
  200. package/dist/tools/challenge-spec.test.js.map +1 -0
  201. package/dist/tools/check-versions.test.d.ts +2 -0
  202. package/dist/tools/check-versions.test.d.ts.map +1 -0
  203. package/dist/tools/check-versions.test.js +214 -0
  204. package/dist/tools/check-versions.test.js.map +1 -0
  205. package/dist/tools/clarify-requirements.test.d.ts +2 -0
  206. package/dist/tools/clarify-requirements.test.d.ts.map +1 -0
  207. package/dist/tools/clarify-requirements.test.js +161 -0
  208. package/dist/tools/clarify-requirements.test.js.map +1 -0
  209. package/dist/tools/consult-docs.test.d.ts +2 -0
  210. package/dist/tools/consult-docs.test.d.ts.map +1 -0
  211. package/dist/tools/consult-docs.test.js +140 -0
  212. package/dist/tools/consult-docs.test.js.map +1 -0
  213. package/dist/tools/create-spec.test.d.ts +2 -0
  214. package/dist/tools/create-spec.test.d.ts.map +1 -0
  215. package/dist/tools/create-spec.test.js +233 -0
  216. package/dist/tools/create-spec.test.js.map +1 -0
  217. package/dist/tools/define-ui-contract.test.d.ts +2 -0
  218. package/dist/tools/define-ui-contract.test.d.ts.map +1 -0
  219. package/dist/tools/define-ui-contract.test.js +479 -0
  220. package/dist/tools/define-ui-contract.test.js.map +1 -0
  221. package/dist/tools/design-schema.test.d.ts +2 -0
  222. package/dist/tools/design-schema.test.d.ts.map +1 -0
  223. package/dist/tools/design-schema.test.js +301 -0
  224. package/dist/tools/design-schema.test.js.map +1 -0
  225. package/dist/tools/detect-agent.test.d.ts +2 -0
  226. package/dist/tools/detect-agent.test.d.ts.map +1 -0
  227. package/dist/tools/detect-agent.test.js +133 -0
  228. package/dist/tools/detect-agent.test.js.map +1 -0
  229. package/dist/tools/detect-drift.test.d.ts +2 -0
  230. package/dist/tools/detect-drift.test.d.ts.map +1 -0
  231. package/dist/tools/detect-drift.test.js +312 -0
  232. package/dist/tools/detect-drift.test.js.map +1 -0
  233. package/dist/tools/discover-mcps.test.d.ts +2 -0
  234. package/dist/tools/discover-mcps.test.d.ts.map +1 -0
  235. package/dist/tools/discover-mcps.test.js +345 -0
  236. package/dist/tools/discover-mcps.test.js.map +1 -0
  237. package/dist/tools/estimate.test.d.ts +2 -0
  238. package/dist/tools/estimate.test.d.ts.map +1 -0
  239. package/dist/tools/estimate.test.js +137 -0
  240. package/dist/tools/estimate.test.js.map +1 -0
  241. package/dist/tools/generate-adr.test.d.ts +2 -0
  242. package/dist/tools/generate-adr.test.d.ts.map +1 -0
  243. package/dist/tools/generate-adr.test.js +206 -0
  244. package/dist/tools/generate-adr.test.js.map +1 -0
  245. package/dist/tools/generate-checklist.test.d.ts +2 -0
  246. package/dist/tools/generate-checklist.test.d.ts.map +1 -0
  247. package/dist/tools/generate-checklist.test.js +201 -0
  248. package/dist/tools/generate-checklist.test.js.map +1 -0
  249. package/dist/tools/generate-docs.test.d.ts +2 -0
  250. package/dist/tools/generate-docs.test.d.ts.map +1 -0
  251. package/dist/tools/generate-docs.test.js +183 -0
  252. package/dist/tools/generate-docs.test.js.map +1 -0
  253. package/dist/tools/generate-execution-plan.test.d.ts +2 -0
  254. package/dist/tools/generate-execution-plan.test.d.ts.map +1 -0
  255. package/dist/tools/generate-execution-plan.test.js +643 -0
  256. package/dist/tools/generate-execution-plan.test.js.map +1 -0
  257. package/dist/tools/generate-rules.test.d.ts +2 -0
  258. package/dist/tools/generate-rules.test.d.ts.map +1 -0
  259. package/dist/tools/generate-rules.test.js +148 -0
  260. package/dist/tools/generate-rules.test.js.map +1 -0
  261. package/dist/tools/generate-skill.test.d.ts +2 -0
  262. package/dist/tools/generate-skill.test.d.ts.map +1 -0
  263. package/dist/tools/generate-skill.test.js +138 -0
  264. package/dist/tools/generate-skill.test.js.map +1 -0
  265. package/dist/tools/generate-sub-agent.test.d.ts +2 -0
  266. package/dist/tools/generate-sub-agent.test.d.ts.map +1 -0
  267. package/dist/tools/generate-sub-agent.test.js +162 -0
  268. package/dist/tools/generate-sub-agent.test.js.map +1 -0
  269. package/dist/tools/generate-tests.test.d.ts +2 -0
  270. package/dist/tools/generate-tests.test.d.ts.map +1 -0
  271. package/dist/tools/generate-tests.test.js +222 -0
  272. package/dist/tools/generate-tests.test.js.map +1 -0
  273. package/dist/tools/init-constitution.test.d.ts +2 -0
  274. package/dist/tools/init-constitution.test.d.ts.map +1 -0
  275. package/dist/tools/init-constitution.test.js +398 -0
  276. package/dist/tools/init-constitution.test.js.map +1 -0
  277. package/dist/tools/init-project/config-builder.d.ts +12 -0
  278. package/dist/tools/init-project/config-builder.d.ts.map +1 -0
  279. package/dist/tools/init-project/config-builder.js +31 -0
  280. package/dist/tools/init-project/config-builder.js.map +1 -0
  281. package/dist/tools/init-project/git-setup.d.ts +8 -0
  282. package/dist/tools/init-project/git-setup.d.ts.map +1 -0
  283. package/dist/tools/init-project/git-setup.js +70 -0
  284. package/dist/tools/init-project/git-setup.js.map +1 -0
  285. package/dist/tools/init-project/handler.d.ts.map +1 -1
  286. package/dist/tools/init-project/handler.js +25 -371
  287. package/dist/tools/init-project/handler.js.map +1 -1
  288. package/dist/tools/init-project/lifecycle-helpers.d.ts +32 -0
  289. package/dist/tools/init-project/lifecycle-helpers.d.ts.map +1 -0
  290. package/dist/tools/init-project/lifecycle-helpers.js +153 -0
  291. package/dist/tools/init-project/lifecycle-helpers.js.map +1 -0
  292. package/dist/tools/init-project/migration-runner.d.ts +28 -0
  293. package/dist/tools/init-project/migration-runner.d.ts.map +1 -0
  294. package/dist/tools/init-project/migration-runner.js +57 -0
  295. package/dist/tools/init-project/migration-runner.js.map +1 -0
  296. package/dist/tools/init-project/rules-writer.d.ts +14 -0
  297. package/dist/tools/init-project/rules-writer.d.ts.map +1 -0
  298. package/dist/tools/init-project/rules-writer.js +43 -0
  299. package/dist/tools/init-project/rules-writer.js.map +1 -0
  300. package/dist/tools/init-project/scaffold-writer.d.ts +29 -0
  301. package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -0
  302. package/dist/tools/init-project/scaffold-writer.js +76 -0
  303. package/dist/tools/init-project/scaffold-writer.js.map +1 -0
  304. package/dist/tools/init-project/stack-detector.d.ts +16 -0
  305. package/dist/tools/init-project/stack-detector.d.ts.map +1 -0
  306. package/dist/tools/init-project/stack-detector.js +19 -0
  307. package/dist/tools/init-project/stack-detector.js.map +1 -0
  308. package/dist/tools/init-project.test.d.ts +2 -0
  309. package/dist/tools/init-project.test.d.ts.map +1 -0
  310. package/dist/tools/init-project.test.js +158 -0
  311. package/dist/tools/init-project.test.js.map +1 -0
  312. package/dist/tools/integrate-pm.test.d.ts +2 -0
  313. package/dist/tools/integrate-pm.test.d.ts.map +1 -0
  314. package/dist/tools/integrate-pm.test.js +558 -0
  315. package/dist/tools/integrate-pm.test.js.map +1 -0
  316. package/dist/tools/learn.test.d.ts +2 -0
  317. package/dist/tools/learn.test.d.ts.map +1 -0
  318. package/dist/tools/learn.test.js +123 -0
  319. package/dist/tools/learn.test.js.map +1 -0
  320. package/dist/tools/list-specs.js +1 -1
  321. package/dist/tools/list-specs.js.map +1 -1
  322. package/dist/tools/list-specs.test.d.ts +2 -0
  323. package/dist/tools/list-specs.test.d.ts.map +1 -0
  324. package/dist/tools/list-specs.test.js +110 -0
  325. package/dist/tools/list-specs.test.js.map +1 -0
  326. package/dist/tools/manage-context.test.d.ts +2 -0
  327. package/dist/tools/manage-context.test.d.ts.map +1 -0
  328. package/dist/tools/manage-context.test.js +359 -0
  329. package/dist/tools/manage-context.test.js.map +1 -0
  330. package/dist/tools/manage-git.test.d.ts +2 -0
  331. package/dist/tools/manage-git.test.d.ts.map +1 -0
  332. package/dist/tools/manage-git.test.js +882 -0
  333. package/dist/tools/manage-git.test.js.map +1 -0
  334. package/dist/tools/orchestrate.test.d.ts +2 -0
  335. package/dist/tools/orchestrate.test.d.ts.map +1 -0
  336. package/dist/tools/orchestrate.test.js +1117 -0
  337. package/dist/tools/orchestrate.test.js.map +1 -0
  338. package/dist/tools/reconcile-spec.test.d.ts +2 -0
  339. package/dist/tools/reconcile-spec.test.d.ts.map +1 -0
  340. package/dist/tools/reconcile-spec.test.js +259 -0
  341. package/dist/tools/reconcile-spec.test.js.map +1 -0
  342. package/dist/tools/red-team.d.ts +3 -0
  343. package/dist/tools/red-team.d.ts.map +1 -0
  344. package/dist/tools/red-team.js +302 -0
  345. package/dist/tools/red-team.js.map +1 -0
  346. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
  347. package/dist/tools/register-platform-tools/design-stack-tools.js +14 -0
  348. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
  349. package/dist/tools/register-platform-tools.test.d.ts +2 -0
  350. package/dist/tools/register-platform-tools.test.d.ts.map +1 -0
  351. package/dist/tools/register-platform-tools.test.js +404 -0
  352. package/dist/tools/register-platform-tools.test.js.map +1 -0
  353. package/dist/tools/register-spec-tools.test.d.ts +2 -0
  354. package/dist/tools/register-spec-tools.test.d.ts.map +1 -0
  355. package/dist/tools/register-spec-tools.test.js +407 -0
  356. package/dist/tools/register-spec-tools.test.js.map +1 -0
  357. package/dist/tools/reverse-engineer.test.d.ts +2 -0
  358. package/dist/tools/reverse-engineer.test.d.ts.map +1 -0
  359. package/dist/tools/reverse-engineer.test.js +206 -0
  360. package/dist/tools/reverse-engineer.test.js.map +1 -0
  361. package/dist/tools/schemas.d.ts +20 -0
  362. package/dist/tools/schemas.d.ts.map +1 -0
  363. package/dist/tools/schemas.js +133 -0
  364. package/dist/tools/schemas.js.map +1 -0
  365. package/dist/tools/schemas.test.d.ts +2 -0
  366. package/dist/tools/schemas.test.d.ts.map +1 -0
  367. package/dist/tools/schemas.test.js +245 -0
  368. package/dist/tools/schemas.test.js.map +1 -0
  369. package/dist/tools/set-locale.test.d.ts +2 -0
  370. package/dist/tools/set-locale.test.d.ts.map +1 -0
  371. package/dist/tools/set-locale.test.js +74 -0
  372. package/dist/tools/set-locale.test.js.map +1 -0
  373. package/dist/tools/suggest-mcps.test.d.ts +2 -0
  374. package/dist/tools/suggest-mcps.test.d.ts.map +1 -0
  375. package/dist/tools/suggest-mcps.test.js +198 -0
  376. package/dist/tools/suggest-mcps.test.js.map +1 -0
  377. package/dist/tools/suggest-stack.test.d.ts +2 -0
  378. package/dist/tools/suggest-stack.test.d.ts.map +1 -0
  379. package/dist/tools/suggest-stack.test.js +181 -0
  380. package/dist/tools/suggest-stack.test.js.map +1 -0
  381. package/dist/tools/suggest-tooling.test.d.ts +2 -0
  382. package/dist/tools/suggest-tooling.test.d.ts.map +1 -0
  383. package/dist/tools/suggest-tooling.test.js +213 -0
  384. package/dist/tools/suggest-tooling.test.js.map +1 -0
  385. package/dist/tools/summarize-spec.test.d.ts +2 -0
  386. package/dist/tools/summarize-spec.test.d.ts.map +1 -0
  387. package/dist/tools/summarize-spec.test.js +180 -0
  388. package/dist/tools/summarize-spec.test.js.map +1 -0
  389. package/dist/tools/update-status/dod-gates.d.ts +16 -0
  390. package/dist/tools/update-status/dod-gates.d.ts.map +1 -0
  391. package/dist/tools/update-status/dod-gates.js +117 -0
  392. package/dist/tools/update-status/dod-gates.js.map +1 -0
  393. package/dist/tools/update-status/file-sync.d.ts +6 -0
  394. package/dist/tools/update-status/file-sync.d.ts.map +1 -0
  395. package/dist/tools/update-status/file-sync.js +112 -0
  396. package/dist/tools/update-status/file-sync.js.map +1 -0
  397. package/dist/tools/update-status/index.d.ts +3 -0
  398. package/dist/tools/update-status/index.d.ts.map +1 -0
  399. package/dist/tools/update-status/index.js +181 -0
  400. package/dist/tools/update-status/index.js.map +1 -0
  401. package/dist/tools/update-status/response-builder.d.ts +4 -0
  402. package/dist/tools/update-status/response-builder.d.ts.map +1 -0
  403. package/dist/tools/update-status/response-builder.js +69 -0
  404. package/dist/tools/update-status/response-builder.js.map +1 -0
  405. package/dist/tools/update-status/side-effects.d.ts +15 -0
  406. package/dist/tools/update-status/side-effects.d.ts.map +1 -0
  407. package/dist/tools/update-status/side-effects.js +64 -0
  408. package/dist/tools/update-status/side-effects.js.map +1 -0
  409. package/dist/tools/update-status/transition-guard.d.ts +20 -0
  410. package/dist/tools/update-status/transition-guard.d.ts.map +1 -0
  411. package/dist/tools/update-status/transition-guard.js +75 -0
  412. package/dist/tools/update-status/transition-guard.js.map +1 -0
  413. package/dist/tools/update-status.d.ts +1 -2
  414. package/dist/tools/update-status.d.ts.map +1 -1
  415. package/dist/tools/update-status.js +2 -481
  416. package/dist/tools/update-status.js.map +1 -1
  417. package/dist/tools/update-status.test.d.ts +2 -0
  418. package/dist/tools/update-status.test.d.ts.map +1 -0
  419. package/dist/tools/update-status.test.js +142 -0
  420. package/dist/tools/update-status.test.js.map +1 -0
  421. package/dist/tools/validate.d.ts.map +1 -1
  422. package/dist/tools/validate.js +6 -4
  423. package/dist/tools/validate.js.map +1 -1
  424. package/dist/tools/validate.test.d.ts +2 -0
  425. package/dist/tools/validate.test.d.ts.map +1 -0
  426. package/dist/tools/validate.test.js +137 -0
  427. package/dist/tools/validate.test.js.map +1 -0
  428. package/dist/types/analysis.d.ts +2 -1
  429. package/dist/types/analysis.d.ts.map +1 -1
  430. package/dist/types/index.d.ts +2 -0
  431. package/dist/types/index.d.ts.map +1 -1
  432. package/dist/types/index.js +2 -0
  433. package/dist/types/index.js.map +1 -1
  434. package/dist/types/red-team.d.ts +29 -0
  435. package/dist/types/red-team.d.ts.map +1 -0
  436. package/dist/types/red-team.js +3 -0
  437. package/dist/types/red-team.js.map +1 -0
  438. package/dist/types/update-notifier.d.ts +5 -0
  439. package/dist/types/update-notifier.d.ts.map +1 -0
  440. package/dist/types/update-notifier.js +3 -0
  441. package/dist/types/update-notifier.js.map +1 -0
  442. package/package.json +9 -2
  443. package/src/config/license-plans.json +2 -1
  444. package/src/i18n/messages/en.json +5 -0
  445. package/src/i18n/messages/es.json +5 -0
  446. 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;AAsN9B,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoZrF"}
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,164 +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
- }
152
- async function runConventionScanSafe(projectPath) {
153
- try {
154
- await runConventionScan(projectPath);
155
- return 'ok';
156
- }
157
- catch (err) {
158
- console.warn('[Planu] convention scan failed:', err instanceof Error ? err.message : String(err));
159
- return 'failed';
160
- }
161
- }
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';
162
18
  export async function handleInitProject(params) {
163
19
  const { projectPath, locale, hourlyRate, experienceLevel, userProfile, autoInstallSkills } = params;
164
20
  try {
@@ -199,221 +55,24 @@ export async function handleInitProject(params) {
199
55
  if (hourlyRate !== undefined) {
200
56
  await globalStore.updateGlobalConfig({ hourlyRate });
201
57
  }
202
- // SPEC-033: Detect modern architecture patterns and agile process
203
- // SPEC-033 TD-P14-01+02: K3s/Nomad orchestrator + SPEC-013 TD-P14-01: Compose Multiplatform
204
- const [modernPatterns, dddConfig, agileDetection, orchestratorInfo, composeMultiplatform] = await Promise.all([
205
- detectModernPatterns(projectPath),
206
- detectDdd(projectPath),
207
- detectAgileProcess(projectPath),
208
- detectOrchestratorInfo(projectPath),
209
- detectComposeMultiplatform(projectPath),
210
- ]);
211
- // Save project knowledge
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
212
62
  await knowledgeStore.saveKnowledge(projectId, knowledge);
213
- // SPEC-131: Detect legal compliance profile
214
- const legalProfile = buildLegalProfile(knowledge);
215
- knowledge.legalProfile = legalProfile;
216
- // Re-save with legal profile
217
- await knowledgeStore.saveKnowledge(projectId, knowledge);
218
- // Generate planu.json if it doesn't exist yet
219
- const planuConfigPath = join(projectPath, 'planu.json');
220
- let planuConfigGenerated = false;
221
- try {
222
- await access(planuConfigPath);
223
- }
224
- catch {
225
- const planuConfig = createPlanuConfig();
226
- await writeFile(planuConfigPath, serializePlanuConfig(planuConfig), 'utf-8');
227
- planuConfigGenerated = true;
228
- }
229
- // What's New: check version change and extract highlights (best-effort)
230
- const whatsNew = await checkWhatsNew(planuConfigPath);
231
- // Auto-discover and flatten specs in subcategory folders (v0.30 → v0.40 migration)
232
- let discoveryResult = null;
233
- try {
234
- discoveryResult = await discoverAndFlattenSpecs(projectPath);
235
- }
236
- catch {
237
- /* best-effort — don't fail init */
238
- }
239
- // Auto-migrate legacy specs if detected (docs/sdd/specs/ → planu/specs/)
240
- const allSpecs = await specStore.listSpecs(projectId);
241
- const legacySpecs = filterLegacySpecs(allSpecs);
242
- let migrationResult = null;
243
- if (legacySpecs.length > 0) {
244
- migrationResult = await migrateSpecs(projectPath, legacySpecs, {
245
- listSpecs: specStore.listSpecs,
246
- updateSpec: specStore.updateSpec,
247
- });
248
- // Update knowledge specLocation after migration
249
- knowledge.specLocation = 'planu/specs';
250
- await knowledgeStore.saveKnowledge(projectId, knowledge);
251
- }
252
- // Reconcile specs.json paths with actual filesystem (fixes stale paths after rename/flatten)
253
- try {
254
- await reconcileSpecPaths(projectPath, {
255
- listSpecs: specStore.listSpecs,
256
- updateSpec: specStore.updateSpec,
257
- }, projectId);
258
- }
259
- catch {
260
- /* best-effort */
261
- }
262
- // Auto-migrate spec folders without SPEC-XXX- prefix
263
- const unprefixedSpecs = filterUnprefixedSpecs(await specStore.listSpecs(projectId));
264
- let folderMigrationResult = null;
265
- if (unprefixedSpecs.length > 0) {
266
- folderMigrationResult = await migrateSpecFolderNames(projectPath, unprefixedSpecs, {
267
- listSpecs: specStore.listSpecs,
268
- updateSpec: specStore.updateSpec,
269
- });
270
- }
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);
271
68
  // Auto-fetch recommended skills based on detected stack
272
69
  const recommendedSkills = await fetchRecommendedSkills(knowledge);
273
- // Auto-install skills unless explicitly disabled via input param or planu.json (opt-out, SPEC-185)
274
- // Input param takes precedence over planu.json config.
70
+ // Auto-install or queue skills (opt-out via planu.json or input param, SPEC-185)
275
71
  const autoInstallFromConfig = autoInstallSkills ?? (await readAutoInstallFlag(planuConfigPath));
276
- const autoInstall = recommendedSkills.length > 0 && autoInstallFromConfig;
277
- let skillsAutoInstalled = [];
278
- let skillsPendingInstall = [];
279
- let skillsSkipped = [];
280
- if (autoInstall) {
281
- const installSummary = await autoInstallRecommendedSkills(projectPath, recommendedSkills);
282
- skillsAutoInstalled = installSummary.installed;
283
- skillsSkipped = installSummary.skipped;
284
- skillsPendingInstall = installSummary.failed.map((f) => f.name);
285
- }
286
- else {
287
- const { skillsAutoInstalled: legacyInstalled, skillsPendingInstall: legacyPending } = await resolveSkillInstalls(recommendedSkills, projectPath, false);
288
- skillsAutoInstalled = legacyInstalled;
289
- skillsPendingInstall = legacyPending;
290
- }
291
- // Auto-detect AI platform and generate rules with skills — zero user intervention
292
- const agentDetection = await detectAgentPlatformFromFiles(projectPath);
293
- const platform = agentDetection.platform;
294
- const constitution = await knowledgeStore.getConstitution(projectId);
295
- const generatedRules = await generateRules(platform, knowledge, constitution ?? undefined, {
296
- recommendedSkills,
297
- });
298
- // Auto-write rules file to disk (only if it doesn't exist — never overwrite user's custom rules)
299
- const rulesFilePath = join(projectPath, generatedRules.rulesFile.path);
300
- let rulesWritten = false;
301
- try {
302
- await access(rulesFilePath);
303
- }
304
- catch {
305
- await mkdir(dirname(rulesFilePath), { recursive: true });
306
- await writeFile(rulesFilePath, generatedRules.rulesFile.content, 'utf-8');
307
- rulesWritten = true;
308
- }
309
- // Auto-write additional rules files (e.g., sdd-workflow.md skill)
310
- const additionalFilesWritten = [];
311
- for (const file of generatedRules.additionalFiles) {
312
- const filePath = join(projectPath, file.path);
313
- try {
314
- await access(filePath);
315
- }
316
- catch {
317
- await mkdir(dirname(filePath), { recursive: true });
318
- await writeFile(filePath, file.content, 'utf-8');
319
- additionalFilesWritten.push(file.path);
320
- }
321
- }
322
- // SPEC-001: Auto-install git hooks (best-effort)
323
- let hooksInstalled = [];
324
- try {
325
- const hookResult = await handleSetupHooks(projectId);
326
- if (!hookResult.isError) {
327
- const hookData = JSON.parse(hookResult.content[0]?.text ?? '{}');
328
- hooksInstalled = hookData.hooksInstalled ?? [];
329
- }
330
- }
331
- catch {
332
- // Hooks setup is best-effort — don't fail init_project
333
- }
334
- // SPEC-001: Auto-detect branching model (best-effort)
335
- let gitFlowType = 'unknown';
336
- try {
337
- gitFlowType = await detectGitFlowType(projectPath);
338
- }
339
- catch {
340
- // Not a git repo — skip
341
- }
342
- // SPEC-001: Auto-configure .gitignore (best-effort)
343
- const gitignorePath = join(projectPath, '.gitignore');
344
- let gitignoreUpdated = false;
345
- try {
346
- let gitignoreContent = '';
347
- try {
348
- gitignoreContent = await readFile(gitignorePath, 'utf-8');
349
- }
350
- catch {
351
- /* file doesn't exist */
352
- }
353
- // Remove planu/ from .gitignore if present — specs MUST be tracked in git
354
- const protectedPaths = ['planu/', 'planu.json', 'planu/*'];
355
- const lines = gitignoreContent.split('\n');
356
- const cleaned = lines.filter((line) => !protectedPaths.some((p) => line.trim() === p));
357
- if (cleaned.length !== lines.length) {
358
- gitignoreContent = cleaned.join('\n');
359
- gitignoreUpdated = true;
360
- }
361
- // Add data/ if missing — runtime data should NOT be tracked
362
- const linesToAdd = [];
363
- if (!gitignoreContent.includes('data/')) {
364
- linesToAdd.push('data/');
365
- }
366
- if (linesToAdd.length > 0 || gitignoreUpdated) {
367
- const separator = gitignoreContent.endsWith('\n') || gitignoreContent === '' ? '' : '\n';
368
- const addition = linesToAdd.length > 0
369
- ? `${separator}# Planu data (auto-generated)\n${linesToAdd.join('\n')}\n`
370
- : '';
371
- await writeFile(gitignorePath, gitignoreContent + addition, 'utf-8');
372
- gitignoreUpdated = true;
373
- }
374
- }
375
- catch {
376
- /* best-effort */
377
- }
378
- // SPEC-001: Auto-initialize constitution (best-effort)
379
- let constitutionInitialized = false;
380
- const existingConstitution = await knowledgeStore.getConstitution(projectId);
381
- if (!existingConstitution) {
382
- try {
383
- const constResult = await handleInitConstitution({
384
- projectId,
385
- autoDetect: true,
386
- });
387
- constitutionInitialized = !constResult.isError;
388
- }
389
- catch {
390
- /* best-effort */
391
- }
392
- }
393
- // Auto-inject SDD workflow into CLAUDE.md (best-effort, idempotent)
394
- let claudeMdUpdated = false;
395
- try {
396
- const projectSections = buildProjectSections(knowledge);
397
- claudeMdUpdated = await injectSddIntoClaude(projectPath, projectSections);
398
- }
399
- catch {
400
- /* best-effort */
401
- }
402
- // SPEC-178: Scaffold ESLint and Prettier config if missing (best-effort)
403
- let eslintCreated = false;
404
- let prettierCreated = false;
405
- let lintSuggestions = [];
406
- try {
407
- const lintResult = await scaffoldLintConfig(projectPath, knowledge);
408
- eslintCreated = lintResult.eslintCreated;
409
- prettierCreated = lintResult.prettierCreated;
410
- lintSuggestions = lintResult.suggestions;
411
- }
412
- catch {
413
- /* best-effort — don't fail init_project */
414
- }
415
- // SPEC-187: Generate AI-tool-specific architecture rules (best-effort)
416
- 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;
417
76
  // SPEC-176: Auto-mark specs as done when their branch is merged to develop
418
77
  const autoCompletedSpecs = await autoCompleteSpecs(projectId, projectPath).catch(() => []);
419
78
  // SPEC-036: Request context when knowledge is incomplete
@@ -422,22 +81,18 @@ export async function handleInitProject(params) {
422
81
  const needsContext = missingAreas.length > 0 && knowledge.contextRequested !== true;
423
82
  if (needsContext) {
424
83
  contextRequestPrompt = buildRequestPrompt(missingAreas, knowledge);
425
- // Persist the contextRequested flag without overwriting anything else
426
- await knowledgeStore.saveKnowledge(projectId, {
427
- ...knowledge,
428
- contextRequested: true,
429
- });
84
+ await knowledgeStore.saveKnowledge(projectId, { ...knowledge, contextRequested: true });
430
85
  }
431
- // SPEC-025 tech-debt: Auto-generate .env.example from detected env vars
86
+ // SPEC-025 tech-debt: Auto-generate .env.example and beginner guide
432
87
  const envVars = knowledge.envSetup.variables;
433
88
  const envExampleGenerated = await maybeGenerateEnvExample(projectPath, envVars);
434
- // SPEC-025 tech-debt: Beginner env guide
435
89
  const beginnerEnvGuide = effectiveExperience === 'beginner' && envVars.length > 0
436
90
  ? buildBeginnerEnvGuide(envVars)
437
91
  : null;
438
92
  // SPEC-030: Detect legal framework and third-party data processors
439
93
  const privacyConfig = await detectProjectPrivacyConfig(projectPath);
440
94
  // SPEC-180: Project health check (best-effort)
95
+ const allSpecs = await listProjectSpecs(projectId);
441
96
  const specSummaries = allSpecs.map((s) => ({
442
97
  specId: s.id,
443
98
  status: s.status,
@@ -445,8 +100,7 @@ export async function handleInitProject(params) {
445
100
  updatedAt: s.updatedAt,
446
101
  }));
447
102
  const healthReport = await runHealthCheckWithBaseline(projectPath, projectId, knowledge, specSummaries);
448
- // SPEC-193: Generate portal pages that depend on knowledge/risks/decisions stores.
449
- // Runs synchronously so pages are available immediately after init_project returns.
103
+ // SPEC-193: Generate portal pages (fire-and-forget)
450
104
  regeneratePages(projectPath, ['knowledge', 'risks', 'decisions']).catch(() => {
451
105
  /* best-effort — never fail init */
452
106
  });