@planu/cli 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/dist/config/license-plans.json +110 -9
  2. package/dist/config/spec-cookbook.json +341 -0
  3. package/dist/engine/asana-sync.d.ts +12 -0
  4. package/dist/engine/asana-sync.d.ts.map +1 -0
  5. package/dist/engine/asana-sync.js +72 -0
  6. package/dist/engine/asana-sync.js.map +1 -0
  7. package/dist/engine/code-impact-analyzer.d.ts +6 -0
  8. package/dist/engine/code-impact-analyzer.d.ts.map +1 -0
  9. package/dist/engine/code-impact-analyzer.js +152 -0
  10. package/dist/engine/code-impact-analyzer.js.map +1 -0
  11. package/dist/engine/compliance-reporter.d.ts +11 -0
  12. package/dist/engine/compliance-reporter.d.ts.map +1 -0
  13. package/dist/engine/compliance-reporter.js +245 -0
  14. package/dist/engine/compliance-reporter.js.map +1 -0
  15. package/dist/engine/context-manager.d.ts +7 -0
  16. package/dist/engine/context-manager.d.ts.map +1 -0
  17. package/dist/engine/context-manager.js +76 -0
  18. package/dist/engine/context-manager.js.map +1 -0
  19. package/dist/engine/cost-budget-manager.d.ts +10 -0
  20. package/dist/engine/cost-budget-manager.d.ts.map +1 -0
  21. package/dist/engine/cost-budget-manager.js +165 -0
  22. package/dist/engine/cost-budget-manager.js.map +1 -0
  23. package/dist/engine/dependency-impact-analyzer.d.ts +14 -0
  24. package/dist/engine/dependency-impact-analyzer.d.ts.map +1 -0
  25. package/dist/engine/dependency-impact-analyzer.js +133 -0
  26. package/dist/engine/dependency-impact-analyzer.js.map +1 -0
  27. package/dist/engine/diff-spec-generator.d.ts +6 -0
  28. package/dist/engine/diff-spec-generator.d.ts.map +1 -0
  29. package/dist/engine/diff-spec-generator.js +181 -0
  30. package/dist/engine/diff-spec-generator.js.map +1 -0
  31. package/dist/engine/drift-monitor.d.ts +5 -0
  32. package/dist/engine/drift-monitor.d.ts.map +1 -0
  33. package/dist/engine/drift-monitor.js +92 -0
  34. package/dist/engine/drift-monitor.js.map +1 -0
  35. package/dist/engine/global-rules-manager.d.ts +10 -0
  36. package/dist/engine/global-rules-manager.d.ts.map +1 -0
  37. package/dist/engine/global-rules-manager.js +214 -0
  38. package/dist/engine/global-rules-manager.js.map +1 -0
  39. package/dist/engine/knowledge-base.d.ts +12 -0
  40. package/dist/engine/knowledge-base.d.ts.map +1 -0
  41. package/dist/engine/knowledge-base.js +250 -0
  42. package/dist/engine/knowledge-base.js.map +1 -0
  43. package/dist/engine/monday-sync.d.ts +10 -0
  44. package/dist/engine/monday-sync.d.ts.map +1 -0
  45. package/dist/engine/monday-sync.js +56 -0
  46. package/dist/engine/monday-sync.js.map +1 -0
  47. package/dist/engine/notion-sync.d.ts +13 -0
  48. package/dist/engine/notion-sync.d.ts.map +1 -0
  49. package/dist/engine/notion-sync.js +87 -0
  50. package/dist/engine/notion-sync.js.map +1 -0
  51. package/dist/engine/onboarding-engine.d.ts +11 -0
  52. package/dist/engine/onboarding-engine.d.ts.map +1 -0
  53. package/dist/engine/onboarding-engine.js +575 -0
  54. package/dist/engine/onboarding-engine.js.map +1 -0
  55. package/dist/engine/parallel-safety-engine.d.ts +8 -0
  56. package/dist/engine/parallel-safety-engine.d.ts.map +1 -0
  57. package/dist/engine/parallel-safety-engine.js +106 -0
  58. package/dist/engine/parallel-safety-engine.js.map +1 -0
  59. package/dist/engine/schema-generator.d.ts +6 -0
  60. package/dist/engine/schema-generator.d.ts.map +1 -0
  61. package/dist/engine/schema-generator.js +321 -0
  62. package/dist/engine/schema-generator.js.map +1 -0
  63. package/dist/engine/spec-cookbook.d.ts +12 -0
  64. package/dist/engine/spec-cookbook.d.ts.map +1 -0
  65. package/dist/engine/spec-cookbook.js +176 -0
  66. package/dist/engine/spec-cookbook.js.map +1 -0
  67. package/dist/engine/spec-diff-engine.d.ts +8 -0
  68. package/dist/engine/spec-diff-engine.d.ts.map +1 -0
  69. package/dist/engine/spec-diff-engine.js +321 -0
  70. package/dist/engine/spec-diff-engine.js.map +1 -0
  71. package/dist/engine/spec-hooks-engine.d.ts +12 -0
  72. package/dist/engine/spec-hooks-engine.d.ts.map +1 -0
  73. package/dist/engine/spec-hooks-engine.js +79 -0
  74. package/dist/engine/spec-hooks-engine.js.map +1 -0
  75. package/dist/engine/spec-lint-engine.d.ts +6 -0
  76. package/dist/engine/spec-lint-engine.d.ts.map +1 -0
  77. package/dist/engine/spec-lint-engine.js +164 -0
  78. package/dist/engine/spec-lint-engine.js.map +1 -0
  79. package/dist/engine/spec-scheduler.d.ts +13 -0
  80. package/dist/engine/spec-scheduler.d.ts.map +1 -0
  81. package/dist/engine/spec-scheduler.js +154 -0
  82. package/dist/engine/spec-scheduler.js.map +1 -0
  83. package/dist/engine/spec-source-sync.d.ts +14 -0
  84. package/dist/engine/spec-source-sync.d.ts.map +1 -0
  85. package/dist/engine/spec-source-sync.js +148 -0
  86. package/dist/engine/spec-source-sync.js.map +1 -0
  87. package/dist/engine/tech-debt-manager.d.ts +12 -0
  88. package/dist/engine/tech-debt-manager.d.ts.map +1 -0
  89. package/dist/engine/tech-debt-manager.js +152 -0
  90. package/dist/engine/tech-debt-manager.js.map +1 -0
  91. package/dist/engine/validation-loop.d.ts +4 -0
  92. package/dist/engine/validation-loop.d.ts.map +1 -0
  93. package/dist/engine/validation-loop.js +133 -0
  94. package/dist/engine/validation-loop.js.map +1 -0
  95. package/dist/engine/webhook-server.d.ts +19 -0
  96. package/dist/engine/webhook-server.d.ts.map +1 -0
  97. package/dist/engine/webhook-server.js +169 -0
  98. package/dist/engine/webhook-server.js.map +1 -0
  99. package/dist/engine/workspace-manager.d.ts +8 -0
  100. package/dist/engine/workspace-manager.d.ts.map +1 -0
  101. package/dist/engine/workspace-manager.js +255 -0
  102. package/dist/engine/workspace-manager.js.map +1 -0
  103. package/dist/index.js +50 -0
  104. package/dist/index.js.map +1 -1
  105. package/dist/storage/api-surfaces-store.d.ts +8 -0
  106. package/dist/storage/api-surfaces-store.d.ts.map +1 -0
  107. package/dist/storage/api-surfaces-store.js +31 -0
  108. package/dist/storage/api-surfaces-store.js.map +1 -0
  109. package/dist/storage/asana-config-store.d.ts +9 -0
  110. package/dist/storage/asana-config-store.d.ts.map +1 -0
  111. package/dist/storage/asana-config-store.js +51 -0
  112. package/dist/storage/asana-config-store.js.map +1 -0
  113. package/dist/storage/context-config-store.d.ts +4 -0
  114. package/dist/storage/context-config-store.d.ts.map +1 -0
  115. package/dist/storage/context-config-store.js +20 -0
  116. package/dist/storage/context-config-store.js.map +1 -0
  117. package/dist/storage/cost-budget-store.d.ts +6 -0
  118. package/dist/storage/cost-budget-store.d.ts.map +1 -0
  119. package/dist/storage/cost-budget-store.js +42 -0
  120. package/dist/storage/cost-budget-store.js.map +1 -0
  121. package/dist/storage/drift-monitor-store.d.ts +9 -0
  122. package/dist/storage/drift-monitor-store.d.ts.map +1 -0
  123. package/dist/storage/drift-monitor-store.js +45 -0
  124. package/dist/storage/drift-monitor-store.js.map +1 -0
  125. package/dist/storage/monday-config-store.d.ts +9 -0
  126. package/dist/storage/monday-config-store.d.ts.map +1 -0
  127. package/dist/storage/monday-config-store.js +51 -0
  128. package/dist/storage/monday-config-store.js.map +1 -0
  129. package/dist/storage/notion-config-store.d.ts +9 -0
  130. package/dist/storage/notion-config-store.d.ts.map +1 -0
  131. package/dist/storage/notion-config-store.js +51 -0
  132. package/dist/storage/notion-config-store.js.map +1 -0
  133. package/dist/storage/onboarding-store.d.ts +4 -0
  134. package/dist/storage/onboarding-store.d.ts.map +1 -0
  135. package/dist/storage/onboarding-store.js +14 -0
  136. package/dist/storage/onboarding-store.js.map +1 -0
  137. package/dist/storage/retention-policy-store.d.ts +4 -0
  138. package/dist/storage/retention-policy-store.d.ts.map +1 -0
  139. package/dist/storage/retention-policy-store.js +20 -0
  140. package/dist/storage/retention-policy-store.js.map +1 -0
  141. package/dist/storage/spec-bindings-store.d.ts +8 -0
  142. package/dist/storage/spec-bindings-store.d.ts.map +1 -0
  143. package/dist/storage/spec-bindings-store.js +44 -0
  144. package/dist/storage/spec-bindings-store.js.map +1 -0
  145. package/dist/storage/spec-hooks-store.d.ts +8 -0
  146. package/dist/storage/spec-hooks-store.d.ts.map +1 -0
  147. package/dist/storage/spec-hooks-store.js +56 -0
  148. package/dist/storage/spec-hooks-store.js.map +1 -0
  149. package/dist/storage/spec-lint-rules-store.d.ts +5 -0
  150. package/dist/storage/spec-lint-rules-store.d.ts.map +1 -0
  151. package/dist/storage/spec-lint-rules-store.js +40 -0
  152. package/dist/storage/spec-lint-rules-store.js.map +1 -0
  153. package/dist/storage/tech-debt-store.d.ts +12 -0
  154. package/dist/storage/tech-debt-store.d.ts.map +1 -0
  155. package/dist/storage/tech-debt-store.js +51 -0
  156. package/dist/storage/tech-debt-store.js.map +1 -0
  157. package/dist/storage/webhook-server-store.d.ts +5 -0
  158. package/dist/storage/webhook-server-store.d.ts.map +1 -0
  159. package/dist/storage/webhook-server-store.js +14 -0
  160. package/dist/storage/webhook-server-store.js.map +1 -0
  161. package/dist/tools/asana-handler.d.ts +6 -0
  162. package/dist/tools/asana-handler.d.ts.map +1 -0
  163. package/dist/tools/asana-handler.js +199 -0
  164. package/dist/tools/asana-handler.js.map +1 -0
  165. package/dist/tools/code-impact-handler.d.ts +6 -0
  166. package/dist/tools/code-impact-handler.d.ts.map +1 -0
  167. package/dist/tools/code-impact-handler.js +158 -0
  168. package/dist/tools/code-impact-handler.js.map +1 -0
  169. package/dist/tools/compliance-audit-handler.d.ts +6 -0
  170. package/dist/tools/compliance-audit-handler.d.ts.map +1 -0
  171. package/dist/tools/compliance-audit-handler.js +87 -0
  172. package/dist/tools/compliance-audit-handler.js.map +1 -0
  173. package/dist/tools/context-manager-handler.d.ts +8 -0
  174. package/dist/tools/context-manager-handler.d.ts.map +1 -0
  175. package/dist/tools/context-manager-handler.js +180 -0
  176. package/dist/tools/context-manager-handler.js.map +1 -0
  177. package/dist/tools/cost-budget-handler.d.ts +7 -0
  178. package/dist/tools/cost-budget-handler.d.ts.map +1 -0
  179. package/dist/tools/cost-budget-handler.js +242 -0
  180. package/dist/tools/cost-budget-handler.js.map +1 -0
  181. package/dist/tools/dependency-impact-handler.d.ts +6 -0
  182. package/dist/tools/dependency-impact-handler.d.ts.map +1 -0
  183. package/dist/tools/dependency-impact-handler.js +100 -0
  184. package/dist/tools/dependency-impact-handler.js.map +1 -0
  185. package/dist/tools/diff-spec-generator-handler.d.ts +22 -0
  186. package/dist/tools/diff-spec-generator-handler.d.ts.map +1 -0
  187. package/dist/tools/diff-spec-generator-handler.js +87 -0
  188. package/dist/tools/diff-spec-generator-handler.js.map +1 -0
  189. package/dist/tools/drift-monitor-handler.d.ts +25 -0
  190. package/dist/tools/drift-monitor-handler.d.ts.map +1 -0
  191. package/dist/tools/drift-monitor-handler.js +95 -0
  192. package/dist/tools/drift-monitor-handler.js.map +1 -0
  193. package/dist/tools/global-rules-handler.d.ts +17 -0
  194. package/dist/tools/global-rules-handler.d.ts.map +1 -0
  195. package/dist/tools/global-rules-handler.js +178 -0
  196. package/dist/tools/global-rules-handler.js.map +1 -0
  197. package/dist/tools/incoming-webhook-handler.d.ts +6 -0
  198. package/dist/tools/incoming-webhook-handler.d.ts.map +1 -0
  199. package/dist/tools/incoming-webhook-handler.js +247 -0
  200. package/dist/tools/incoming-webhook-handler.js.map +1 -0
  201. package/dist/tools/knowledge-base-handler.d.ts +7 -0
  202. package/dist/tools/knowledge-base-handler.d.ts.map +1 -0
  203. package/dist/tools/knowledge-base-handler.js +137 -0
  204. package/dist/tools/knowledge-base-handler.js.map +1 -0
  205. package/dist/tools/monday-handler.d.ts +6 -0
  206. package/dist/tools/monday-handler.d.ts.map +1 -0
  207. package/dist/tools/monday-handler.js +190 -0
  208. package/dist/tools/monday-handler.js.map +1 -0
  209. package/dist/tools/notion-handler.d.ts +6 -0
  210. package/dist/tools/notion-handler.d.ts.map +1 -0
  211. package/dist/tools/notion-handler.js +197 -0
  212. package/dist/tools/notion-handler.js.map +1 -0
  213. package/dist/tools/onboarding-handler.d.ts +7 -0
  214. package/dist/tools/onboarding-handler.d.ts.map +1 -0
  215. package/dist/tools/onboarding-handler.js +59 -0
  216. package/dist/tools/onboarding-handler.js.map +1 -0
  217. package/dist/tools/parallel-safety-handler.d.ts +7 -0
  218. package/dist/tools/parallel-safety-handler.d.ts.map +1 -0
  219. package/dist/tools/parallel-safety-handler.js +29 -0
  220. package/dist/tools/parallel-safety-handler.js.map +1 -0
  221. package/dist/tools/register-asana-tools.d.ts +3 -0
  222. package/dist/tools/register-asana-tools.d.ts.map +1 -0
  223. package/dist/tools/register-asana-tools.js +74 -0
  224. package/dist/tools/register-asana-tools.js.map +1 -0
  225. package/dist/tools/register-code-impact-tools.d.ts +3 -0
  226. package/dist/tools/register-code-impact-tools.d.ts.map +1 -0
  227. package/dist/tools/register-code-impact-tools.js +58 -0
  228. package/dist/tools/register-code-impact-tools.js.map +1 -0
  229. package/dist/tools/register-compliance-audit-tools.d.ts +3 -0
  230. package/dist/tools/register-compliance-audit-tools.d.ts.map +1 -0
  231. package/dist/tools/register-compliance-audit-tools.js +106 -0
  232. package/dist/tools/register-compliance-audit-tools.js.map +1 -0
  233. package/dist/tools/register-context-manager-tools.d.ts +3 -0
  234. package/dist/tools/register-context-manager-tools.d.ts.map +1 -0
  235. package/dist/tools/register-context-manager-tools.js +138 -0
  236. package/dist/tools/register-context-manager-tools.js.map +1 -0
  237. package/dist/tools/register-cost-budget-tools.d.ts +3 -0
  238. package/dist/tools/register-cost-budget-tools.d.ts.map +1 -0
  239. package/dist/tools/register-cost-budget-tools.js +98 -0
  240. package/dist/tools/register-cost-budget-tools.js.map +1 -0
  241. package/dist/tools/register-dependency-impact-tools.d.ts +3 -0
  242. package/dist/tools/register-dependency-impact-tools.d.ts.map +1 -0
  243. package/dist/tools/register-dependency-impact-tools.js +63 -0
  244. package/dist/tools/register-dependency-impact-tools.js.map +1 -0
  245. package/dist/tools/register-diff-spec-tools.d.ts +3 -0
  246. package/dist/tools/register-diff-spec-tools.d.ts.map +1 -0
  247. package/dist/tools/register-diff-spec-tools.js +55 -0
  248. package/dist/tools/register-diff-spec-tools.js.map +1 -0
  249. package/dist/tools/register-drift-monitor-tools.d.ts +3 -0
  250. package/dist/tools/register-drift-monitor-tools.d.ts.map +1 -0
  251. package/dist/tools/register-drift-monitor-tools.js +64 -0
  252. package/dist/tools/register-drift-monitor-tools.js.map +1 -0
  253. package/dist/tools/register-global-rules-tools.d.ts +3 -0
  254. package/dist/tools/register-global-rules-tools.d.ts.map +1 -0
  255. package/dist/tools/register-global-rules-tools.js +44 -0
  256. package/dist/tools/register-global-rules-tools.js.map +1 -0
  257. package/dist/tools/register-incoming-webhook-tools.d.ts +3 -0
  258. package/dist/tools/register-incoming-webhook-tools.d.ts.map +1 -0
  259. package/dist/tools/register-incoming-webhook-tools.js +50 -0
  260. package/dist/tools/register-incoming-webhook-tools.js.map +1 -0
  261. package/dist/tools/register-knowledge-base-tools.d.ts +3 -0
  262. package/dist/tools/register-knowledge-base-tools.d.ts.map +1 -0
  263. package/dist/tools/register-knowledge-base-tools.js +66 -0
  264. package/dist/tools/register-knowledge-base-tools.js.map +1 -0
  265. package/dist/tools/register-monday-tools.d.ts +3 -0
  266. package/dist/tools/register-monday-tools.d.ts.map +1 -0
  267. package/dist/tools/register-monday-tools.js +69 -0
  268. package/dist/tools/register-monday-tools.js.map +1 -0
  269. package/dist/tools/register-notion-tools.d.ts +3 -0
  270. package/dist/tools/register-notion-tools.d.ts.map +1 -0
  271. package/dist/tools/register-notion-tools.js +76 -0
  272. package/dist/tools/register-notion-tools.js.map +1 -0
  273. package/dist/tools/register-onboarding-tools.d.ts +3 -0
  274. package/dist/tools/register-onboarding-tools.d.ts.map +1 -0
  275. package/dist/tools/register-onboarding-tools.js +70 -0
  276. package/dist/tools/register-onboarding-tools.js.map +1 -0
  277. package/dist/tools/register-parallel-safety-tools.d.ts +3 -0
  278. package/dist/tools/register-parallel-safety-tools.d.ts.map +1 -0
  279. package/dist/tools/register-parallel-safety-tools.js +18 -0
  280. package/dist/tools/register-parallel-safety-tools.js.map +1 -0
  281. package/dist/tools/register-schema-generator-tools.d.ts +3 -0
  282. package/dist/tools/register-schema-generator-tools.d.ts.map +1 -0
  283. package/dist/tools/register-schema-generator-tools.js +46 -0
  284. package/dist/tools/register-schema-generator-tools.js.map +1 -0
  285. package/dist/tools/register-spec-cookbook-tools.d.ts +3 -0
  286. package/dist/tools/register-spec-cookbook-tools.d.ts.map +1 -0
  287. package/dist/tools/register-spec-cookbook-tools.js +90 -0
  288. package/dist/tools/register-spec-cookbook-tools.js.map +1 -0
  289. package/dist/tools/register-spec-diff-tools.d.ts +3 -0
  290. package/dist/tools/register-spec-diff-tools.d.ts.map +1 -0
  291. package/dist/tools/register-spec-diff-tools.js +67 -0
  292. package/dist/tools/register-spec-diff-tools.js.map +1 -0
  293. package/dist/tools/register-spec-hooks-tools.d.ts +3 -0
  294. package/dist/tools/register-spec-hooks-tools.d.ts.map +1 -0
  295. package/dist/tools/register-spec-hooks-tools.js +124 -0
  296. package/dist/tools/register-spec-hooks-tools.js.map +1 -0
  297. package/dist/tools/register-spec-lint-tools.d.ts +3 -0
  298. package/dist/tools/register-spec-lint-tools.d.ts.map +1 -0
  299. package/dist/tools/register-spec-lint-tools.js +79 -0
  300. package/dist/tools/register-spec-lint-tools.js.map +1 -0
  301. package/dist/tools/register-spec-scheduler-tools.d.ts +3 -0
  302. package/dist/tools/register-spec-scheduler-tools.d.ts.map +1 -0
  303. package/dist/tools/register-spec-scheduler-tools.js +73 -0
  304. package/dist/tools/register-spec-scheduler-tools.js.map +1 -0
  305. package/dist/tools/register-spec-source-tools.d.ts +3 -0
  306. package/dist/tools/register-spec-source-tools.d.ts.map +1 -0
  307. package/dist/tools/register-spec-source-tools.js +48 -0
  308. package/dist/tools/register-spec-source-tools.js.map +1 -0
  309. package/dist/tools/register-tech-debt-tools.d.ts +3 -0
  310. package/dist/tools/register-tech-debt-tools.d.ts.map +1 -0
  311. package/dist/tools/register-tech-debt-tools.js +95 -0
  312. package/dist/tools/register-tech-debt-tools.js.map +1 -0
  313. package/dist/tools/register-validation-loop-tools.d.ts +3 -0
  314. package/dist/tools/register-validation-loop-tools.d.ts.map +1 -0
  315. package/dist/tools/register-validation-loop-tools.js +77 -0
  316. package/dist/tools/register-validation-loop-tools.js.map +1 -0
  317. package/dist/tools/register-workspace-dashboard-tools.d.ts +3 -0
  318. package/dist/tools/register-workspace-dashboard-tools.d.ts.map +1 -0
  319. package/dist/tools/register-workspace-dashboard-tools.js +98 -0
  320. package/dist/tools/register-workspace-dashboard-tools.js.map +1 -0
  321. package/dist/tools/schema-generator-handler.d.ts +4 -0
  322. package/dist/tools/schema-generator-handler.d.ts.map +1 -0
  323. package/dist/tools/schema-generator-handler.js +129 -0
  324. package/dist/tools/schema-generator-handler.js.map +1 -0
  325. package/dist/tools/spec-cookbook-handler.d.ts +7 -0
  326. package/dist/tools/spec-cookbook-handler.d.ts.map +1 -0
  327. package/dist/tools/spec-cookbook-handler.js +83 -0
  328. package/dist/tools/spec-cookbook-handler.js.map +1 -0
  329. package/dist/tools/spec-hooks-handler.d.ts +7 -0
  330. package/dist/tools/spec-hooks-handler.d.ts.map +1 -0
  331. package/dist/tools/spec-hooks-handler.js +112 -0
  332. package/dist/tools/spec-hooks-handler.js.map +1 -0
  333. package/dist/tools/spec-lint-handler.d.ts +6 -0
  334. package/dist/tools/spec-lint-handler.d.ts.map +1 -0
  335. package/dist/tools/spec-lint-handler.js +165 -0
  336. package/dist/tools/spec-lint-handler.js.map +1 -0
  337. package/dist/tools/spec-scheduler-handler.d.ts +6 -0
  338. package/dist/tools/spec-scheduler-handler.d.ts.map +1 -0
  339. package/dist/tools/spec-scheduler-handler.js +108 -0
  340. package/dist/tools/spec-scheduler-handler.js.map +1 -0
  341. package/dist/tools/spec-source-handler.d.ts +21 -0
  342. package/dist/tools/spec-source-handler.d.ts.map +1 -0
  343. package/dist/tools/spec-source-handler.js +75 -0
  344. package/dist/tools/spec-source-handler.js.map +1 -0
  345. package/dist/tools/spec-visual-diff-handler.d.ts +7 -0
  346. package/dist/tools/spec-visual-diff-handler.d.ts.map +1 -0
  347. package/dist/tools/spec-visual-diff-handler.js +130 -0
  348. package/dist/tools/spec-visual-diff-handler.js.map +1 -0
  349. package/dist/tools/tech-debt-handler.d.ts +8 -0
  350. package/dist/tools/tech-debt-handler.d.ts.map +1 -0
  351. package/dist/tools/tech-debt-handler.js +150 -0
  352. package/dist/tools/tech-debt-handler.js.map +1 -0
  353. package/dist/tools/validation-loop-handler.d.ts +5 -0
  354. package/dist/tools/validation-loop-handler.d.ts.map +1 -0
  355. package/dist/tools/validation-loop-handler.js +59 -0
  356. package/dist/tools/validation-loop-handler.js.map +1 -0
  357. package/dist/tools/workspace-dashboard-handler.d.ts +8 -0
  358. package/dist/tools/workspace-dashboard-handler.d.ts.map +1 -0
  359. package/dist/tools/workspace-dashboard-handler.js +108 -0
  360. package/dist/tools/workspace-dashboard-handler.js.map +1 -0
  361. package/dist/types/code-impact.d.ts +57 -0
  362. package/dist/types/code-impact.d.ts.map +1 -0
  363. package/dist/types/code-impact.js +3 -0
  364. package/dist/types/code-impact.js.map +1 -0
  365. package/dist/types/compliance-audit.d.ts +55 -0
  366. package/dist/types/compliance-audit.d.ts.map +1 -0
  367. package/dist/types/compliance-audit.js +3 -0
  368. package/dist/types/compliance-audit.js.map +1 -0
  369. package/dist/types/context-manager.d.ts +57 -0
  370. package/dist/types/context-manager.d.ts.map +1 -0
  371. package/dist/types/context-manager.js +3 -0
  372. package/dist/types/context-manager.js.map +1 -0
  373. package/dist/types/cost-budget.d.ts +84 -0
  374. package/dist/types/cost-budget.d.ts.map +1 -0
  375. package/dist/types/cost-budget.js +3 -0
  376. package/dist/types/cost-budget.js.map +1 -0
  377. package/dist/types/dependency-impact.d.ts +45 -0
  378. package/dist/types/dependency-impact.d.ts.map +1 -0
  379. package/dist/types/dependency-impact.js +3 -0
  380. package/dist/types/dependency-impact.js.map +1 -0
  381. package/dist/types/diff-spec-types.d.ts +39 -0
  382. package/dist/types/diff-spec-types.d.ts.map +1 -0
  383. package/dist/types/diff-spec-types.js +3 -0
  384. package/dist/types/diff-spec-types.js.map +1 -0
  385. package/dist/types/drift-monitor-types.d.ts +47 -0
  386. package/dist/types/drift-monitor-types.d.ts.map +1 -0
  387. package/dist/types/drift-monitor-types.js +3 -0
  388. package/dist/types/drift-monitor-types.js.map +1 -0
  389. package/dist/types/global-rules-types.d.ts +31 -0
  390. package/dist/types/global-rules-types.d.ts.map +1 -0
  391. package/dist/types/global-rules-types.js +3 -0
  392. package/dist/types/global-rules-types.js.map +1 -0
  393. package/dist/types/incoming-webhook.d.ts +40 -0
  394. package/dist/types/incoming-webhook.d.ts.map +1 -0
  395. package/dist/types/incoming-webhook.js +3 -0
  396. package/dist/types/incoming-webhook.js.map +1 -0
  397. package/dist/types/index.d.ts +23 -0
  398. package/dist/types/index.d.ts.map +1 -1
  399. package/dist/types/index.js +23 -0
  400. package/dist/types/index.js.map +1 -1
  401. package/dist/types/knowledge-base.d.ts +57 -0
  402. package/dist/types/knowledge-base.d.ts.map +1 -0
  403. package/dist/types/knowledge-base.js +3 -0
  404. package/dist/types/knowledge-base.js.map +1 -0
  405. package/dist/types/notion-asana-monday.d.ts +196 -0
  406. package/dist/types/notion-asana-monday.d.ts.map +1 -0
  407. package/dist/types/notion-asana-monday.js +3 -0
  408. package/dist/types/notion-asana-monday.js.map +1 -0
  409. package/dist/types/onboarding-types.d.ts +69 -0
  410. package/dist/types/onboarding-types.d.ts.map +1 -0
  411. package/dist/types/onboarding-types.js +3 -0
  412. package/dist/types/onboarding-types.js.map +1 -0
  413. package/dist/types/parallel-safety-types.d.ts +14 -0
  414. package/dist/types/parallel-safety-types.d.ts.map +1 -0
  415. package/dist/types/parallel-safety-types.js +3 -0
  416. package/dist/types/parallel-safety-types.js.map +1 -0
  417. package/dist/types/schema-generator.d.ts +61 -0
  418. package/dist/types/schema-generator.d.ts.map +1 -0
  419. package/dist/types/schema-generator.js +3 -0
  420. package/dist/types/schema-generator.js.map +1 -0
  421. package/dist/types/spec-cookbook-types.d.ts +45 -0
  422. package/dist/types/spec-cookbook-types.d.ts.map +1 -0
  423. package/dist/types/spec-cookbook-types.js +3 -0
  424. package/dist/types/spec-cookbook-types.js.map +1 -0
  425. package/dist/types/spec-diff-visual-types.d.ts +75 -0
  426. package/dist/types/spec-diff-visual-types.d.ts.map +1 -0
  427. package/dist/types/spec-diff-visual-types.js +3 -0
  428. package/dist/types/spec-diff-visual-types.js.map +1 -0
  429. package/dist/types/spec-hooks.d.ts +62 -0
  430. package/dist/types/spec-hooks.d.ts.map +1 -0
  431. package/dist/types/spec-hooks.js +3 -0
  432. package/dist/types/spec-hooks.js.map +1 -0
  433. package/dist/types/spec-lint.d.ts +79 -0
  434. package/dist/types/spec-lint.d.ts.map +1 -0
  435. package/dist/types/spec-lint.js +3 -0
  436. package/dist/types/spec-lint.js.map +1 -0
  437. package/dist/types/spec-scheduler.d.ts +58 -0
  438. package/dist/types/spec-scheduler.d.ts.map +1 -0
  439. package/dist/types/spec-scheduler.js +3 -0
  440. package/dist/types/spec-scheduler.js.map +1 -0
  441. package/dist/types/spec-source-types.d.ts +37 -0
  442. package/dist/types/spec-source-types.d.ts.map +1 -0
  443. package/dist/types/spec-source-types.js +3 -0
  444. package/dist/types/spec-source-types.js.map +1 -0
  445. package/dist/types/tech-debt.d.ts +66 -0
  446. package/dist/types/tech-debt.d.ts.map +1 -0
  447. package/dist/types/tech-debt.js +3 -0
  448. package/dist/types/tech-debt.js.map +1 -0
  449. package/dist/types/validation-loop.d.ts +39 -0
  450. package/dist/types/validation-loop.d.ts.map +1 -0
  451. package/dist/types/validation-loop.js +3 -0
  452. package/dist/types/validation-loop.js.map +1 -0
  453. package/dist/types/workspace-dashboard-types.d.ts +74 -0
  454. package/dist/types/workspace-dashboard-types.d.ts.map +1 -0
  455. package/dist/types/workspace-dashboard-types.js +3 -0
  456. package/dist/types/workspace-dashboard-types.js.map +1 -0
  457. package/package.json +2 -1
  458. package/src/config/license-plans.json +110 -9
  459. package/src/config/spec-cookbook.json +341 -0
@@ -0,0 +1,87 @@
1
+ const NOTION_API_BASE = 'https://api.notion.com/v1';
2
+ const NOTION_VERSION = '2022-06-28';
3
+ export const DEFAULT_FIELD_MAPPING = {
4
+ title: 'title',
5
+ description: 'rich_text',
6
+ status: 'select',
7
+ priority: 'select',
8
+ tags: 'multi_select',
9
+ };
10
+ function buildHeaders(token) {
11
+ return {
12
+ Authorization: `Bearer ${token}`,
13
+ 'Notion-Version': NOTION_VERSION,
14
+ 'Content-Type': 'application/json',
15
+ };
16
+ }
17
+ function buildProperties(spec, mapping) {
18
+ const props = {
19
+ [mapping.title]: {
20
+ title: [{ text: { content: `${spec.id}: ${spec.title}` } }],
21
+ },
22
+ };
23
+ if (spec.description !== undefined) {
24
+ props[mapping.description] = {
25
+ rich_text: [{ text: { content: spec.description.slice(0, 2000) } }],
26
+ };
27
+ }
28
+ if (spec.status !== undefined) {
29
+ props[mapping.status] = { select: { name: spec.status } };
30
+ }
31
+ if (spec.priority !== undefined) {
32
+ props[mapping.priority] = { select: { name: spec.priority } };
33
+ }
34
+ if (spec.tags !== undefined && spec.tags.length > 0) {
35
+ props[mapping.tags] = {
36
+ multi_select: spec.tags.map((t) => ({ name: t })),
37
+ };
38
+ }
39
+ return props;
40
+ }
41
+ export async function createNotionPage(config, spec) {
42
+ const mapping = { ...DEFAULT_FIELD_MAPPING, ...(config.fieldMapping ?? {}) };
43
+ const body = {
44
+ parent: { database_id: config.databaseId },
45
+ properties: buildProperties(spec, mapping),
46
+ };
47
+ const response = await fetch(`${NOTION_API_BASE}/pages`, {
48
+ method: 'POST',
49
+ headers: buildHeaders(config.token),
50
+ body: JSON.stringify(body),
51
+ });
52
+ if (!response.ok) {
53
+ const text = await response.text();
54
+ throw new Error(`Notion API error ${response.status}: ${text}`);
55
+ }
56
+ const data = (await response.json());
57
+ return {
58
+ specId: spec.id,
59
+ externalId: data.id,
60
+ externalUrl: data.url,
61
+ title: `${spec.id}: ${spec.title}`,
62
+ };
63
+ }
64
+ export async function updateNotionPage(config, pageId, spec) {
65
+ const mapping = { ...DEFAULT_FIELD_MAPPING, ...(config.fieldMapping ?? {}) };
66
+ const body = { properties: buildProperties(spec, mapping) };
67
+ const response = await fetch(`${NOTION_API_BASE}/pages/${pageId}`, {
68
+ method: 'PATCH',
69
+ headers: buildHeaders(config.token),
70
+ body: JSON.stringify(body),
71
+ });
72
+ if (!response.ok) {
73
+ const text = await response.text();
74
+ throw new Error(`Notion API error ${response.status}: ${text}`);
75
+ }
76
+ }
77
+ export function specToNotionSpec(spec) {
78
+ return {
79
+ id: spec.id,
80
+ title: spec.title,
81
+ description: spec.description,
82
+ status: spec.status,
83
+ priority: spec.priority,
84
+ tags: spec.tags,
85
+ };
86
+ }
87
+ //# sourceMappingURL=notion-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion-sync.js","sourceRoot":"","sources":["../../src/engine/notion-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { OnboardingConfig, OnboardingChecklist, GuidedTour, GuidedTourArea, OnboardingRecommendation, OnboardingProgressSummary, TourStep, QuickStartTemplate, OnboardingRole, OnboardingProjectType, OnboardingTeamSize } from '../types/index.js';
2
+ export declare function buildRecommendations(role: OnboardingRole, projectType: OnboardingProjectType, teamSize: OnboardingTeamSize): OnboardingRecommendation[];
3
+ export declare function formatRecommendationsMarkdown(config: OnboardingConfig, recommendations: OnboardingRecommendation[]): string;
4
+ export declare function getGuidedTour(area: GuidedTourArea): GuidedTour;
5
+ export declare function formatTourMarkdown(tour: GuidedTour): string;
6
+ export declare function buildOnboardingChecklist(projectPath: string): Promise<OnboardingChecklist>;
7
+ export declare function formatChecklistMarkdown(checklist: OnboardingChecklist): string;
8
+ export declare function getQuickStart(template: QuickStartTemplate): string;
9
+ export declare function buildProgressSummary(projectPath: string, config: OnboardingConfig | null): Promise<OnboardingProgressSummary>;
10
+ export declare function formatTourStep(step: TourStep): string;
11
+ //# sourceMappingURL=onboarding-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-engine.d.ts","sourceRoot":"","sources":["../../src/engine/onboarding-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEnB,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAM3B,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,kBAAkB,GAC3B,wBAAwB,EAAE,CAmF5B;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE,wBAAwB,EAAE,GAC1C,MAAM,CA+BR;AAsMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CAE9D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAoB3D;AAMD,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6DhG;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM,CAiB9E;AA4HD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAMD,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAwBpC;AAwBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAErD"}
@@ -0,0 +1,575 @@
1
+ // engine/onboarding-engine.ts — SPEC-360: Interactive Onboarding & Guided Tours
2
+ import * as fs from 'node:fs/promises';
3
+ import * as path from 'node:path';
4
+ // ---------------------------------------------------------------------------
5
+ // Recommendations
6
+ // ---------------------------------------------------------------------------
7
+ export function buildRecommendations(role, projectType, teamSize) {
8
+ const recs = [];
9
+ // Role-based
10
+ if (role === 'solo-dev') {
11
+ recs.push({
12
+ category: 'Workflow',
13
+ text: 'As a solo developer, use `quick_start` with the `solo-dev` template to get started fast.',
14
+ toolSuggestion: 'quick_start',
15
+ });
16
+ }
17
+ else if (role === 'team-lead') {
18
+ recs.push({
19
+ category: 'Collaboration',
20
+ text: 'Set up team roles with `configure_roles` and use `plan_team_distribution` to assign specs.',
21
+ toolSuggestion: 'configure_roles',
22
+ });
23
+ recs.push({
24
+ category: 'Visibility',
25
+ text: 'Use `workspace_overview` to monitor all team projects from a single view.',
26
+ toolSuggestion: 'workspace_overview',
27
+ });
28
+ }
29
+ else if (role === 'pm') {
30
+ recs.push({
31
+ category: 'Planning',
32
+ text: 'Use `create_spec` to capture requirements and `check_readiness` before starting implementation.',
33
+ toolSuggestion: 'create_spec',
34
+ });
35
+ recs.push({
36
+ category: 'Reporting',
37
+ text: 'Use `workspace_report` to generate progress summaries for stakeholders.',
38
+ toolSuggestion: 'workspace_report',
39
+ });
40
+ }
41
+ else {
42
+ // architect
43
+ recs.push({
44
+ category: 'Architecture',
45
+ text: 'Use `generate_diagram` to document architecture and `analyze_spec_dependencies` for dependency graphs.',
46
+ toolSuggestion: 'generate_diagram',
47
+ });
48
+ }
49
+ // Project type based
50
+ if (projectType === 'saas') {
51
+ recs.push({
52
+ category: 'SaaS Specifics',
53
+ text: 'Explore the Spec Cookbook for SaaS patterns: billing, onboarding, team management.',
54
+ toolSuggestion: 'cookbook_list',
55
+ });
56
+ }
57
+ else if (projectType === 'api') {
58
+ recs.push({
59
+ category: 'API Quality',
60
+ text: 'Use `validate_api_contract` to keep your OpenAPI spec aligned with implementation.',
61
+ toolSuggestion: 'validate_api_contract',
62
+ });
63
+ }
64
+ else if (projectType === 'mobile') {
65
+ recs.push({
66
+ category: 'Mobile CI',
67
+ text: 'Use `generate_automation_guide` with the mobile template to set up iOS/Android CI pipelines.',
68
+ toolSuggestion: 'generate_automation_guide',
69
+ });
70
+ }
71
+ // Team size based
72
+ if (teamSize === '1') {
73
+ recs.push({
74
+ category: 'Efficiency',
75
+ text: 'Enable compact mode with `set_work_mode` to minimize token usage while working solo.',
76
+ toolSuggestion: 'set_work_mode',
77
+ });
78
+ }
79
+ else if (teamSize === '6-20' || teamSize === '20+') {
80
+ recs.push({
81
+ category: 'Scale',
82
+ text: 'Configure approval policies with `configure_approval_policy` to enforce review workflows.',
83
+ toolSuggestion: 'configure_approval_policy',
84
+ });
85
+ recs.push({
86
+ category: 'Integrations',
87
+ text: 'Connect your issue tracker (Jira/Linear) to keep specs and tickets in sync.',
88
+ toolSuggestion: 'configure_jira',
89
+ });
90
+ }
91
+ return recs;
92
+ }
93
+ export function formatRecommendationsMarkdown(config, recommendations) {
94
+ const lines = [
95
+ `# Welcome to Planu!`,
96
+ ``,
97
+ `**Role:** ${config.role} | **Project type:** ${config.projectType} | **Team size:** ${config.teamSize}`,
98
+ ``,
99
+ `## Personalized Recommendations`,
100
+ ``,
101
+ ];
102
+ const byCategory = new Map();
103
+ for (const rec of recommendations) {
104
+ const existing = byCategory.get(rec.category) ?? [];
105
+ existing.push(rec);
106
+ byCategory.set(rec.category, existing);
107
+ }
108
+ for (const [category, recs] of byCategory) {
109
+ lines.push(`### ${category}`);
110
+ for (const rec of recs) {
111
+ lines.push(`- ${rec.text}`);
112
+ }
113
+ lines.push('');
114
+ }
115
+ lines.push(`## Next Steps`, ``);
116
+ lines.push(`1. Run \`onboarding_checklist\` to see what's already set up`);
117
+ lines.push(`2. Run \`guided_tour\` with area \`spec-lifecycle\` to learn the basics`);
118
+ lines.push(`3. Run \`quick_start\` to scaffold your first spec`);
119
+ return lines.join('\n');
120
+ }
121
+ // ---------------------------------------------------------------------------
122
+ // Guided Tours
123
+ // ---------------------------------------------------------------------------
124
+ const TOURS = {
125
+ 'spec-lifecycle': {
126
+ area: 'spec-lifecycle',
127
+ title: 'Spec Lifecycle: From Idea to Done',
128
+ steps: [
129
+ {
130
+ stepNumber: 1,
131
+ title: 'Create a Spec',
132
+ description: 'Every feature starts with a spec. Use `create_spec` to define the feature title, description, and acceptance criteria.',
133
+ toolHint: 'create_spec',
134
+ example: 'create_spec with title="User login" and projectPath="/path/to/project"',
135
+ },
136
+ {
137
+ stepNumber: 2,
138
+ title: 'Challenge & Refine',
139
+ description: 'Use `challenge_spec` to stress-test your spec and find gaps before implementation starts.',
140
+ toolHint: 'challenge_spec',
141
+ example: 'challenge_spec with specId="SPEC-001" and projectPath="..."',
142
+ },
143
+ {
144
+ stepNumber: 3,
145
+ title: 'Check Readiness',
146
+ description: '`check_readiness` verifies the spec has enough detail for implementation. Fix any issues it flags.',
147
+ toolHint: 'check_readiness',
148
+ },
149
+ {
150
+ stepNumber: 4,
151
+ title: 'Approve & Implement',
152
+ description: 'Move the spec to `approved` status. Implement the feature, then move to `done`.',
153
+ toolHint: 'update_status',
154
+ },
155
+ {
156
+ stepNumber: 5,
157
+ title: 'Validate',
158
+ description: 'Run `validate` to confirm the implementation matches the spec criteria.',
159
+ toolHint: 'validate',
160
+ },
161
+ ],
162
+ },
163
+ 'team-collaboration': {
164
+ area: 'team-collaboration',
165
+ title: 'Team Collaboration Workflows',
166
+ steps: [
167
+ {
168
+ stepNumber: 1,
169
+ title: 'Configure Roles',
170
+ description: 'Set up roles (owner, reviewer, developer) with `configure_roles`.',
171
+ toolHint: 'configure_roles',
172
+ },
173
+ {
174
+ stepNumber: 2,
175
+ title: 'Assign Specs',
176
+ description: 'Use `assign_role` to assign specs to team members.',
177
+ toolHint: 'assign_role',
178
+ },
179
+ {
180
+ stepNumber: 3,
181
+ title: 'Comments & Reviews',
182
+ description: 'Use `add_comment` and `request_changes` to collaborate on spec details.',
183
+ toolHint: 'add_comment',
184
+ },
185
+ {
186
+ stepNumber: 4,
187
+ title: 'Approval Policy',
188
+ description: 'Configure who can approve specs with `configure_approval_policy`.',
189
+ toolHint: 'configure_approval_policy',
190
+ },
191
+ ],
192
+ },
193
+ integrations: {
194
+ area: 'integrations',
195
+ title: 'Connecting Your Tools',
196
+ steps: [
197
+ {
198
+ stepNumber: 1,
199
+ title: 'Issue Trackers',
200
+ description: 'Sync specs with Jira, Linear, or Asana using the respective configure tools.',
201
+ toolHint: 'configure_jira',
202
+ },
203
+ {
204
+ stepNumber: 2,
205
+ title: 'CI/CD',
206
+ description: 'Generate CI workflows with `generate_planu_ci` for GitHub Actions.',
207
+ toolHint: 'generate_planu_ci',
208
+ },
209
+ {
210
+ stepNumber: 3,
211
+ title: 'Notifications',
212
+ description: 'Configure Slack notifications for spec status changes with `configure_slack`.',
213
+ toolHint: 'configure_slack',
214
+ },
215
+ {
216
+ stepNumber: 4,
217
+ title: 'Webhooks',
218
+ description: 'Set up outbound webhooks to trigger custom workflows on spec events.',
219
+ toolHint: 'configure_webhook',
220
+ },
221
+ ],
222
+ },
223
+ 'ai-tools': {
224
+ area: 'ai-tools',
225
+ title: 'AI-Powered Features',
226
+ steps: [
227
+ {
228
+ stepNumber: 1,
229
+ title: 'Suggest Criteria',
230
+ description: 'Use `suggest_criteria` to auto-generate acceptance criteria from a description.',
231
+ toolHint: 'suggest_criteria',
232
+ },
233
+ {
234
+ stepNumber: 2,
235
+ title: 'Clarify Requirements',
236
+ description: '`clarify_requirements` runs an interview-style session to uncover hidden requirements.',
237
+ toolHint: 'clarify_requirements',
238
+ },
239
+ {
240
+ stepNumber: 3,
241
+ title: 'Red Team',
242
+ description: 'Use `red_team` to adversarially challenge your spec for edge cases.',
243
+ toolHint: 'red_team',
244
+ },
245
+ {
246
+ stepNumber: 4,
247
+ title: 'Generate Tests',
248
+ description: 'Generate test scaffolds from spec criteria with `tdd_scaffold`.',
249
+ toolHint: 'tdd_scaffold',
250
+ },
251
+ ],
252
+ },
253
+ security: {
254
+ area: 'security',
255
+ title: 'Security & Compliance',
256
+ steps: [
257
+ {
258
+ stepNumber: 1,
259
+ title: 'Security Scan',
260
+ description: 'Run `security_scan` to check specs for security anti-patterns.',
261
+ toolHint: 'security_scan',
262
+ },
263
+ {
264
+ stepNumber: 2,
265
+ title: 'Compliance',
266
+ description: 'Configure compliance checks (GDPR, SOC2) with `configure_compliance`.',
267
+ toolHint: 'configure_compliance',
268
+ },
269
+ {
270
+ stepNumber: 3,
271
+ title: 'Audit Trail',
272
+ description: 'View spec change history with `audit_trail` for compliance reporting.',
273
+ toolHint: 'audit_trail',
274
+ },
275
+ ],
276
+ },
277
+ reporting: {
278
+ area: 'reporting',
279
+ title: 'Reporting & Metrics',
280
+ steps: [
281
+ {
282
+ stepNumber: 1,
283
+ title: 'Velocity Report',
284
+ description: 'See team velocity trends with `velocity_report`.',
285
+ toolHint: 'velocity_report',
286
+ },
287
+ {
288
+ stepNumber: 2,
289
+ title: 'Usage Stats',
290
+ description: 'View tool usage and spec activity with `usage_stats`.',
291
+ toolHint: 'usage_stats',
292
+ },
293
+ {
294
+ stepNumber: 3,
295
+ title: 'Workspace Report',
296
+ description: 'Generate a workspace-level HTML report with `workspace_report`.',
297
+ toolHint: 'workspace_report',
298
+ },
299
+ {
300
+ stepNumber: 4,
301
+ title: 'Export',
302
+ description: 'Export specs as CSV, Markdown, or PDF for external stakeholders.',
303
+ toolHint: 'export_specs_csv',
304
+ },
305
+ ],
306
+ },
307
+ };
308
+ export function getGuidedTour(area) {
309
+ return TOURS[area];
310
+ }
311
+ export function formatTourMarkdown(tour) {
312
+ const lines = [
313
+ `# Guided Tour: ${tour.title}`,
314
+ ``,
315
+ `This tour covers ${String(tour.steps.length)} steps.`,
316
+ ``,
317
+ ];
318
+ for (const step of tour.steps) {
319
+ lines.push(`## Step ${String(step.stepNumber)}: ${step.title}`, ``);
320
+ lines.push(step.description, ``);
321
+ if (step.example !== undefined) {
322
+ lines.push(`**Example:** \`${step.example}\``, ``);
323
+ }
324
+ if (step.toolHint !== undefined) {
325
+ lines.push(`**Tool:** \`${step.toolHint}\``, ``);
326
+ }
327
+ }
328
+ return lines.join('\n');
329
+ }
330
+ // ---------------------------------------------------------------------------
331
+ // Checklist
332
+ // ---------------------------------------------------------------------------
333
+ export async function buildOnboardingChecklist(projectPath) {
334
+ const items = [];
335
+ // Check planu.json
336
+ const planuJson = await fileExists(path.join(projectPath, 'planu.json'));
337
+ items.push({
338
+ id: 'planu-init',
339
+ label: 'Project initialized (planu.json exists)',
340
+ completed: planuJson,
341
+ hint: 'Run `init_project` to initialize your project',
342
+ });
343
+ // Check CLAUDE.md or constitution
344
+ const constitutionExists = (await fileExists(path.join(projectPath, 'CLAUDE.md'))) ||
345
+ (await fileExists(path.join(projectPath, '.claude', 'CLAUDE.md')));
346
+ items.push({
347
+ id: 'constitution',
348
+ label: 'Project constitution (CLAUDE.md) exists',
349
+ completed: constitutionExists,
350
+ hint: 'Run `init_constitution` to create your project constitution',
351
+ });
352
+ // Check planu/ directory has specs
353
+ const planuDir = path.join(projectPath, 'planu', 'specs');
354
+ const specsExist = await dirHasContents(planuDir);
355
+ items.push({
356
+ id: 'first-spec',
357
+ label: 'At least one spec created',
358
+ completed: specsExist,
359
+ hint: 'Run `create_spec` to create your first spec',
360
+ });
361
+ // Check .claude/rules/ exists
362
+ const rulesDir = await dirHasContents(path.join(projectPath, '.claude', 'rules'));
363
+ items.push({
364
+ id: 'rules',
365
+ label: 'Project rules configured (.claude/rules/ exists)',
366
+ completed: rulesDir,
367
+ hint: 'Run `reconcile_rules` to set up project rules',
368
+ });
369
+ // Check .claude/skills/ exists
370
+ const skillsDir = await dirHasContents(path.join(projectPath, '.claude', 'skills'));
371
+ items.push({
372
+ id: 'skills',
373
+ label: 'Project skills configured (.claude/skills/ exists)',
374
+ completed: skillsDir,
375
+ hint: 'Run `reconcile_skills` to set up project skills',
376
+ });
377
+ const completedCount = items.filter((i) => i.completed).length;
378
+ const totalCount = items.length;
379
+ return {
380
+ projectPath,
381
+ items,
382
+ completedCount,
383
+ totalCount,
384
+ percentComplete: Math.round((completedCount / totalCount) * 100),
385
+ };
386
+ }
387
+ export function formatChecklistMarkdown(checklist) {
388
+ const lines = [
389
+ `# Onboarding Checklist`,
390
+ ``,
391
+ `**Progress:** ${String(checklist.completedCount)}/${String(checklist.totalCount)} steps complete (${String(checklist.percentComplete)}%)`,
392
+ ``,
393
+ ];
394
+ for (const item of checklist.items) {
395
+ const icon = item.completed ? '✅' : '⬜';
396
+ lines.push(`${icon} **${item.label}**`);
397
+ if (!item.completed && item.hint !== undefined) {
398
+ lines.push(` > ${item.hint}`);
399
+ }
400
+ }
401
+ return lines.join('\n');
402
+ }
403
+ // ---------------------------------------------------------------------------
404
+ // Quick Start Templates
405
+ // ---------------------------------------------------------------------------
406
+ const QUICK_START_CONTENT = {
407
+ 'solo-dev': `# Solo Developer Quick Start
408
+
409
+ ## 1. Initialize your project
410
+ \`\`\`
411
+ init_project projectPath="/path/to/your/project"
412
+ \`\`\`
413
+
414
+ ## 2. Create your first spec
415
+ \`\`\`
416
+ create_spec title="My First Feature" projectPath="/path/to/your/project"
417
+ \`\`\`
418
+
419
+ ## 3. Check readiness and implement
420
+ \`\`\`
421
+ check_readiness specId="SPEC-001" projectPath="..."
422
+ \`\`\`
423
+
424
+ ## 4. Validate when done
425
+ \`\`\`
426
+ validate specId="SPEC-001" projectPath="..."
427
+ update_status specId="SPEC-001" newStatus="done" projectPath="..."
428
+ \`\`\`
429
+ `,
430
+ 'team-project': `# Team Project Quick Start
431
+
432
+ ## 1. Initialize and configure roles
433
+ \`\`\`
434
+ init_project projectPath="/path/to/your/project"
435
+ configure_roles projectPath="..."
436
+ \`\`\`
437
+
438
+ ## 2. Set up approval policy
439
+ \`\`\`
440
+ configure_approval_policy projectPath="..." requiredApprovals=1
441
+ \`\`\`
442
+
443
+ ## 3. Create specs and assign reviewers
444
+ \`\`\`
445
+ create_spec title="Feature Name" projectPath="..."
446
+ assign_role specId="SPEC-001" role="reviewer" userId="..."
447
+ \`\`\`
448
+
449
+ ## 4. Connect integrations
450
+ \`\`\`
451
+ configure_slack webhookUrl="https://..."
452
+ configure_jira host="..." apiToken="..."
453
+ \`\`\`
454
+ `,
455
+ 'api-first': `# API-First Development Quick Start
456
+
457
+ ## 1. Initialize and set up API spec validation
458
+ \`\`\`
459
+ init_project projectPath="/path/to/your/project"
460
+ \`\`\`
461
+
462
+ ## 2. Create API specs from cookbook
463
+ \`\`\`
464
+ cookbook_get id="api-rate-limiting"
465
+ cookbook_apply id="api-auth" projectName="My API"
466
+ \`\`\`
467
+
468
+ ## 3. Validate API contract
469
+ \`\`\`
470
+ validate_api_contract projectPath="..." specFile="openapi.yaml"
471
+ \`\`\`
472
+
473
+ ## 4. Generate tests
474
+ \`\`\`
475
+ tdd_scaffold specId="SPEC-001" projectPath="..."
476
+ \`\`\`
477
+ `,
478
+ 'mobile-app': `# Mobile App Quick Start
479
+
480
+ ## 1. Initialize project
481
+ \`\`\`
482
+ init_project projectPath="/path/to/your/project"
483
+ \`\`\`
484
+
485
+ ## 2. Browse mobile cookbook patterns
486
+ \`\`\`
487
+ cookbook_list domain="mobile"
488
+ \`\`\`
489
+
490
+ ## 3. Generate CI/CD pipeline
491
+ \`\`\`
492
+ generate_automation_guide projectPath="..." platform="mobile"
493
+ \`\`\`
494
+
495
+ ## 4. Set up push notification spec
496
+ \`\`\`
497
+ cookbook_apply id="mobile-push-notifications" projectName="MyApp"
498
+ \`\`\`
499
+ `,
500
+ 'open-source': `# Open Source Project Quick Start
501
+
502
+ ## 1. Initialize project
503
+ \`\`\`
504
+ init_project projectPath="/path/to/your/project"
505
+ \`\`\`
506
+
507
+ ## 2. Create contribution guidelines via spec
508
+ \`\`\`
509
+ create_spec title="Contribution Workflow" projectPath="..."
510
+ \`\`\`
511
+
512
+ ## 3. Set up CI validation
513
+ \`\`\`
514
+ generate_planu_ci projectPath="..." provider="github-actions"
515
+ \`\`\`
516
+
517
+ ## 4. Generate documentation site
518
+ \`\`\`
519
+ generate_docs_site projectPath="..."
520
+ \`\`\`
521
+ `,
522
+ };
523
+ export function getQuickStart(template) {
524
+ return QUICK_START_CONTENT[template];
525
+ }
526
+ // ---------------------------------------------------------------------------
527
+ // Progress Summary
528
+ // ---------------------------------------------------------------------------
529
+ export async function buildProgressSummary(projectPath, config) {
530
+ const checklist = await buildOnboardingChecklist(projectPath);
531
+ const nextSteps = [];
532
+ for (const item of checklist.items) {
533
+ if (!item.completed && item.hint !== undefined) {
534
+ nextSteps.push(item.hint);
535
+ }
536
+ if (nextSteps.length >= 3) {
537
+ break;
538
+ }
539
+ }
540
+ if (nextSteps.length === 0) {
541
+ nextSteps.push('All setup steps complete! Explore `guided_tour` for advanced topics.');
542
+ }
543
+ return {
544
+ projectPath,
545
+ config,
546
+ checklist,
547
+ percentComplete: checklist.percentComplete,
548
+ nextSteps,
549
+ };
550
+ }
551
+ // ---------------------------------------------------------------------------
552
+ // Helpers
553
+ // ---------------------------------------------------------------------------
554
+ async function fileExists(filePath) {
555
+ try {
556
+ await fs.access(filePath);
557
+ return true;
558
+ }
559
+ catch {
560
+ return false;
561
+ }
562
+ }
563
+ async function dirHasContents(dirPath) {
564
+ try {
565
+ const entries = await fs.readdir(dirPath);
566
+ return entries.length > 0;
567
+ }
568
+ catch {
569
+ return false;
570
+ }
571
+ }
572
+ export function formatTourStep(step) {
573
+ return `**Step ${String(step.stepNumber)}:** ${step.title} — ${step.description}`;
574
+ }
575
+ //# sourceMappingURL=onboarding-engine.js.map