@a-company/paradigm 5.10.0 → 5.21.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 (409) hide show
  1. package/dist/accept-orchestration-IUAWQZUN.js +18 -0
  2. package/dist/add-P76GEMGF.js +8 -0
  3. package/dist/agent-UUTYOFTH.js +33 -0
  4. package/dist/agent-loader-EPXURMO7.js +2 -0
  5. package/dist/agent-loader-PYGPX6D2.js +2 -0
  6. package/dist/agent-state-KSQ3S7OB.js +2 -0
  7. package/dist/agents-suggest-HYTFMQD3.js +10 -0
  8. package/dist/aggregate-W66DM3GA.js +10 -0
  9. package/dist/ambient-HYZR42NX.js +35 -0
  10. package/dist/assess-UFPYEJKP.js +9 -0
  11. package/dist/auto-RHJXOZFL.js +14 -0
  12. package/dist/beacon-5QVYV5DF.js +13 -0
  13. package/dist/calibration-OLJYB5HN.js +7 -0
  14. package/dist/check-THVGY4R5.js +14 -0
  15. package/dist/chunk-22ISTMKI.js +31 -0
  16. package/dist/chunk-2QO33NYK.js +3 -0
  17. package/dist/chunk-33LKBMVK.js +134 -0
  18. package/dist/chunk-4QADCWPU.js +7 -0
  19. package/dist/chunk-4TXOVRWD.js +3 -0
  20. package/dist/chunk-4UJ4NIEQ.js +4 -0
  21. package/dist/chunk-4ZGGWZ32.js +3 -0
  22. package/dist/chunk-5TAVYPOV.js +2 -0
  23. package/dist/chunk-6EX37L4Q.js +8 -0
  24. package/dist/chunk-AD5TAD2A.js +5 -0
  25. package/dist/chunk-AGVAHVUA.js +2 -0
  26. package/dist/chunk-AO7ZSRME.js +13 -0
  27. package/dist/chunk-BFD3GFRK.js +2 -0
  28. package/dist/chunk-D34YFK4M.js +6 -0
  29. package/dist/chunk-DVZWCXB6.js +2 -0
  30. package/dist/chunk-EKZDFEJW.js +2 -0
  31. package/dist/chunk-ET5XJTSX.js +2 -0
  32. package/dist/chunk-FYDRENK7.js +3 -0
  33. package/dist/chunk-HMQ5BHP2.js +743 -0
  34. package/dist/chunk-HXKWL3VK.js +29 -0
  35. package/dist/chunk-IZSBGW6E.js +2 -0
  36. package/dist/chunk-J32OPJEX.js +2 -0
  37. package/dist/chunk-JBDMCRPP.js +7 -0
  38. package/dist/chunk-JIXHEBGK.js +7 -0
  39. package/dist/chunk-JNSJVCTU.js +2 -0
  40. package/dist/chunk-JQKKVAAN.js +2 -0
  41. package/dist/chunk-KLBH26PA.js +429 -0
  42. package/dist/chunk-L6K5HNDL.js +24 -0
  43. package/dist/chunk-LKAT7IAK.js +2 -0
  44. package/dist/chunk-M4UMM6DC.js +5 -0
  45. package/dist/chunk-NKYNHSA5.js +424 -0
  46. package/dist/chunk-NW6OKHE6.js +5 -0
  47. package/dist/chunk-NXRVR37G.js +60 -0
  48. package/dist/chunk-ODVKPZZ4.js +2 -0
  49. package/dist/chunk-PUBB7LIT.js +5 -0
  50. package/dist/chunk-Q2J542ST.js +2 -0
  51. package/dist/chunk-QGZRM6ZB.js +2 -0
  52. package/dist/chunk-QNZEG7IT.js +13 -0
  53. package/dist/chunk-QT2LKB3P.js +7 -0
  54. package/dist/chunk-RVRARWSY.js +9 -0
  55. package/dist/chunk-T6IDXUUA.js +2 -0
  56. package/dist/chunk-TYWB5IQJ.js +3 -0
  57. package/dist/chunk-UIKLE3WD.js +2 -0
  58. package/dist/chunk-V7K6CQVX.js +111 -0
  59. package/dist/chunk-VCKKJDLP.js +8 -0
  60. package/dist/chunk-VG7FN2TU.js +4 -0
  61. package/dist/chunk-W5IWDW4Y.js +16 -0
  62. package/dist/chunk-W7C6FFMO.js +8 -0
  63. package/dist/chunk-WESTEMIM.js +10 -0
  64. package/dist/chunk-WR6D3SC6.js +5 -0
  65. package/dist/chunk-WS2N27RX.js +3 -0
  66. package/dist/chunk-XMAV5AG6.js +2 -0
  67. package/dist/chunk-XROULIQN.js +2 -0
  68. package/dist/chunk-XUFYOXOU.js +3 -0
  69. package/dist/chunk-Y4XFVDZC.js +3 -0
  70. package/dist/chunk-Y6KXTQBG.js +2 -0
  71. package/dist/{chunk-GTR2TBIJ.js → chunk-Z2UZUCY6.js} +237 -1047
  72. package/dist/chunk-Z34K6GY2.js +8 -0
  73. package/dist/claude-4LR3LJQZ.js +13 -0
  74. package/dist/claude-cli-UP6HGH7C.js +6 -0
  75. package/dist/claude-code-RLJ4GX77.js +11 -0
  76. package/dist/claude-code-teams-R37HJY3Y.js +29 -0
  77. package/dist/commands-LMUD5L6R.js +455 -0
  78. package/dist/compliance-GZ7UAOG3.js +6 -0
  79. package/dist/conductor-Y5IXELTL.js +4 -0
  80. package/dist/config-schema-HR7LDEQ6.js +2 -0
  81. package/dist/constellation-CG7C4WFE.js +13 -0
  82. package/dist/context-audit-RSSRX6XC.js +6 -0
  83. package/dist/cost-IDNVMAEV.js +10 -0
  84. package/dist/cost-PK4KIF7R.js +2 -0
  85. package/dist/cursor-cli-QKF7Z6M2.js +4 -0
  86. package/dist/cursorrules-U5O4G5T4.js +14 -0
  87. package/dist/decision-loader-2XPZE4EZ.js +2 -0
  88. package/dist/delete-P5VULXR4.js +14 -0
  89. package/dist/diff-RTFUKJHF.js +9 -0
  90. package/dist/discipline-H7LDI6NT.js +2 -0
  91. package/dist/dist-3ZCH25SG.js +2 -0
  92. package/dist/dist-KGRCLBJP-2QAPFYNF.js +39 -0
  93. package/dist/dist-R3RWD35F.js +2 -0
  94. package/dist/dist-VGFSP3XM.js +2 -0
  95. package/dist/dist-VXCZWVVJ.js +2 -0
  96. package/dist/dist-W3XCATBJ.js +2 -0
  97. package/dist/docs-EDQ2STFK.js +2 -0
  98. package/dist/docs-RXPN6CK7.js +12 -0
  99. package/dist/doctor-2T2QL6VM.js +2 -0
  100. package/dist/drift-ILZE5BFJ.js +13 -0
  101. package/dist/echo-UPTQUEDU.js +46 -0
  102. package/dist/edit-GUU3HBVW.js +9 -0
  103. package/dist/event-Y3VXC2RV.js +3 -0
  104. package/dist/explain-files-3GPZUETV.js +4 -0
  105. package/dist/export-CV5KCTPS.js +2 -0
  106. package/dist/flow-S3RQ4YPY.js +11 -0
  107. package/dist/global-C44FW4G2.js +13 -0
  108. package/dist/graduate-3BBSC27A.js +5 -0
  109. package/dist/graph-CNDE5TAT.js +2 -0
  110. package/dist/graph-server-COZR5C3Z.js +14 -0
  111. package/dist/habits-4J2KRYUL.js +42 -0
  112. package/dist/history-UW454SDP.js +12 -0
  113. package/dist/hooks-XH52VGOU.js +2 -0
  114. package/dist/index.js +15 -1039
  115. package/dist/init-24MAQJFM.js +2 -0
  116. package/dist/integrity-UYDOOJDP.js +7 -0
  117. package/dist/integrity-checker-DHGMZQDG.js +2 -0
  118. package/dist/journal-loader-GLH7XFTK.js +2 -0
  119. package/dist/lint-IGKE6UPS.js +26 -0
  120. package/dist/list-5IUGP3ZB.js +7 -0
  121. package/dist/list-YKIQNKGB.js +6 -0
  122. package/dist/lore-loader-RVQI5GXL.js +2 -0
  123. package/dist/lore-loader-XY5MZRR2.js +2 -0
  124. package/dist/lore-server-FC2GMDLT.js +14 -0
  125. package/dist/manual-RXSPSFLL.js +20 -0
  126. package/dist/mcp.js +93 -20484
  127. package/dist/migrate-X5OMAFAQ.js +59 -0
  128. package/dist/migrate-assessments-GEI5WMI2.js +4 -0
  129. package/dist/model-discovery-HMB3YI4L.js +2 -0
  130. package/dist/nomination-engine-XF7TWPAP.js +2 -0
  131. package/dist/notebook-PE3JSYZI.js +11 -0
  132. package/dist/notebook-loader-CENTDDUJ.js +2 -0
  133. package/dist/orchestrate-35HBQ3O3.js +8 -0
  134. package/dist/peers-P2KXU7ZK.js +5 -0
  135. package/dist/persona-STQWZH5P.js +29 -0
  136. package/dist/pipeline-MZUITRVN.js +4 -0
  137. package/dist/platform-server-2KXHGHFV.js +25 -0
  138. package/dist/plugin-update-checker-M7PW434O.js +2 -0
  139. package/dist/portal-check-3JVNLOEP.js +8 -0
  140. package/dist/portal-compliance-2UG4VKWH.js +2 -0
  141. package/dist/probe-5L5BQDGE.js +6 -0
  142. package/dist/project-type-SURTOIG7.js +2 -0
  143. package/dist/promote-NJQDZBZA.js +8 -0
  144. package/dist/providers-4PXMWA7V.js +8 -0
  145. package/dist/quiz-FE5UGAY2.js +10 -0
  146. package/dist/record-YXPB34MY.js +6 -0
  147. package/dist/reindex-PGDQSM42.js +2 -0
  148. package/dist/remember-MJRNTXYS.js +14 -0
  149. package/dist/retag-N5XF3KXP.js +6 -0
  150. package/dist/review-6UAH6V3R.js +11 -0
  151. package/dist/review-77QI6VOC.js +6 -0
  152. package/dist/ripple-ZGDITCGB.js +10 -0
  153. package/dist/roster-FLRZ5J42.js +2 -0
  154. package/dist/sentinel-HYAZ3CO5.js +19 -0
  155. package/dist/sentinel-bridge-VR357PKL.js +2 -0
  156. package/dist/sentinel-mcp.js +38 -3808
  157. package/dist/sentinel.js +1 -34
  158. package/dist/serve-JE6UF5P2.js +8 -0
  159. package/dist/serve-L52ZUTU6.js +10 -0
  160. package/dist/serve-OY6XYL7F.js +12 -0
  161. package/dist/server-2MNROHF6.js +7 -0
  162. package/dist/server-4YNUIK4W.js +8 -0
  163. package/dist/session-tracker-SKOMBDOW.js +2 -0
  164. package/dist/session-work-log-3MNUDEZ6.js +2 -0
  165. package/dist/session-work-log-J2H5OZBR.js +2 -0
  166. package/dist/setup-3F5IK7MO.js +31 -0
  167. package/dist/setup-KPIMRZ4Q.js +2 -0
  168. package/dist/shift-6GCNH666.js +11 -0
  169. package/dist/show-BOAVWZPZ.js +7 -0
  170. package/dist/show-PJ5LFLIL.js +5 -0
  171. package/dist/snapshot-L2G56RPL.js +8 -0
  172. package/dist/spawn-UH5RENSE.js +12 -0
  173. package/dist/status-77M3SDIF.js +8 -0
  174. package/dist/status-A37ECYNJ.js +6 -0
  175. package/dist/summary-ZJLQ6KHB.js +7 -0
  176. package/dist/sweep-HU74OPVW.js +17 -0
  177. package/dist/switch-CTW4PDGI.js +17 -0
  178. package/dist/symphony-3QMBGCZY.js +2 -0
  179. package/dist/symphony-QI63XL62.js +53 -0
  180. package/dist/symphony-loader-XACVV2E3.js +2 -0
  181. package/dist/symphony-peers-U4KHMKGI.js +2 -0
  182. package/dist/symphony-peers-X5NGWXFP.js +2 -0
  183. package/dist/symphony-relay-5GY5JIPT.js +3 -0
  184. package/dist/sync-QRDSFETO.js +2 -0
  185. package/dist/sync-llms-HL5PPW3M.js +15 -0
  186. package/dist/task-loader-NZFDTUQ5.js +2 -0
  187. package/dist/team-WGERKGNP.js +2 -0
  188. package/dist/test-BQJMS4Y2.js +111 -0
  189. package/dist/thread-HFXK65D4.js +41 -0
  190. package/dist/timeline-K3ZFKJ3R.js +6 -0
  191. package/dist/triage-FCWOZASE.js +18 -0
  192. package/dist/tutorial-UC6YQMNN.js +305 -0
  193. package/dist/university-content/courses/.purpose +74 -5
  194. package/dist/university-content/courses/para-701.json +807 -0
  195. package/dist/university-content/plsat/.purpose +3 -2
  196. package/dist/university-ui/assets/{index-BjewBB6s.js → index-CGFJczb1.js} +2 -2
  197. package/dist/university-ui/assets/{index-BjewBB6s.js.map → index-CGFJczb1.js.map} +1 -1
  198. package/dist/university-ui/index.html +1 -1
  199. package/dist/upgrade-B4IOLZYK.js +53 -0
  200. package/dist/validate-C6SMKGYD.js +9 -0
  201. package/dist/validate-LSCDOLBO.js +13 -0
  202. package/dist/validate-VZXTJHGO.js +6 -0
  203. package/dist/watch-LRM5XD46.js +8 -0
  204. package/dist/watch-PZCCUP6K.js +9 -0
  205. package/dist/wisdom-XZ3QKPNP.js +7 -0
  206. package/dist/work-log-loader-DL5GZ2BQ.js +2 -0
  207. package/dist/workspace-2ODL5WLY.js +2 -0
  208. package/package.json +1 -1
  209. package/platform-ui/dist/assets/AmbientSection-DqQ2mfCO.js +1 -0
  210. package/platform-ui/dist/assets/{CanvasSection-DwPTRdIN.js → CanvasSection-DLW0s-Bu.js} +1 -1
  211. package/platform-ui/dist/assets/{DocsSection-BJc_ws4I.js → DocsSection-BQ9Hi51g.js} +1 -1
  212. package/platform-ui/dist/assets/{GitSection-DhqBo1xc.js → GitSection-QQeUX6o3.js} +1 -1
  213. package/platform-ui/dist/assets/{GraphSection-D9fhVnZ0.js → GraphSection-0c9C-w7K.js} +2 -2
  214. package/platform-ui/dist/assets/{GraphSection-BlgXTl53.css → GraphSection-Bbs2a8sC.css} +1 -1
  215. package/platform-ui/dist/assets/LoreSection--t56kCj2.js +1 -0
  216. package/platform-ui/dist/assets/LoreSection-qnmm3o4y.css +1 -0
  217. package/platform-ui/dist/assets/SentinelSection-C4OoME9U.js +1 -0
  218. package/platform-ui/dist/assets/{SymphonySection-BRoBaUSS.js → SymphonySection-B-rvsLxq.js} +1 -1
  219. package/platform-ui/dist/assets/TeamSection-CBFmNEEo.js +1 -0
  220. package/platform-ui/dist/assets/index-Bxp0TVaf.css +1 -0
  221. package/platform-ui/dist/assets/index-DPpOdAtC.js +57 -0
  222. package/platform-ui/dist/index.html +2 -2
  223. package/dist/accept-orchestration-UQLM7PTQ.js +0 -189
  224. package/dist/add-FZRKEGH4.js +0 -81
  225. package/dist/agent-WERIO2XV.js +0 -523
  226. package/dist/agent-loader-TFIANSF4.js +0 -44
  227. package/dist/agent-state-S5DAWPTF.js +0 -24
  228. package/dist/agents-suggest-DNSYJ6IA.js +0 -83
  229. package/dist/aggregate-H57K7PNV.js +0 -88
  230. package/dist/assess-4WVXZLZQ.js +0 -68
  231. package/dist/auto-QFS5NHQU.js +0 -504
  232. package/dist/beacon-KXZXYQHX.js +0 -251
  233. package/dist/calibration-V46G7JTY.js +0 -135
  234. package/dist/check-OWAIWV23.js +0 -175
  235. package/dist/chunk-2IO7JAG2.js +0 -148
  236. package/dist/chunk-2T6BTYBN.js +0 -712
  237. package/dist/chunk-36TKPM5Z.js +0 -400
  238. package/dist/chunk-45MUDW6E.js +0 -804
  239. package/dist/chunk-4BLYIB7J.js +0 -5701
  240. package/dist/chunk-4L3UTYQX.js +0 -677
  241. package/dist/chunk-4NCFWYGG.js +0 -110
  242. package/dist/chunk-54LTTQBH.js +0 -138
  243. package/dist/chunk-5EWAQHFY.js +0 -269
  244. package/dist/chunk-5JGJACDU.js +0 -37
  245. package/dist/chunk-5OUOLN6M.js +0 -659
  246. package/dist/chunk-5VKJBNJL.js +0 -444
  247. package/dist/chunk-6N3JTACN.js +0 -2260
  248. package/dist/chunk-6QC3YGB6.js +0 -114
  249. package/dist/chunk-7N7GSU6K.js +0 -34
  250. package/dist/chunk-ABVQGRF7.js +0 -268
  251. package/dist/chunk-CL7JSK52.js +0 -129
  252. package/dist/chunk-CSD7IHSN.js +0 -152
  253. package/dist/chunk-EDOAWN7J.js +0 -717
  254. package/dist/chunk-EKGMAM62.js +0 -525
  255. package/dist/chunk-EZ3GOCYC.js +0 -132
  256. package/dist/chunk-F3BCHPYT.js +0 -143
  257. package/dist/chunk-FKJUBQU3.js +0 -3081
  258. package/dist/chunk-GT5QGC2H.js +0 -253
  259. package/dist/chunk-GZDFVP2N.js +0 -540
  260. package/dist/chunk-IRKUEJVW.js +0 -405
  261. package/dist/chunk-J2JEQRT3.js +0 -164
  262. package/dist/chunk-JASGXLK3.js +0 -679
  263. package/dist/chunk-KVDYJLTC.js +0 -121
  264. package/dist/chunk-L27I3CPZ.js +0 -357
  265. package/dist/chunk-LHLIAYQ3.js +0 -185
  266. package/dist/chunk-MCMOGQMU.js +0 -145
  267. package/dist/chunk-NQKQG45G.js +0 -688
  268. package/dist/chunk-PBHIFAL4.js +0 -259
  269. package/dist/chunk-PDX44BCA.js +0 -11
  270. package/dist/chunk-PMXRGPRQ.js +0 -305
  271. package/dist/chunk-RAB5IKPR.js +0 -487
  272. package/dist/chunk-RJE5G7WO.js +0 -590
  273. package/dist/chunk-RTHA3XRE.js +0 -880
  274. package/dist/chunk-S2HO5MLR.js +0 -621
  275. package/dist/chunk-S3ORKP3V.js +0 -716
  276. package/dist/chunk-TAIJOFOE.js +0 -124
  277. package/dist/chunk-TXESEO7Y.js +0 -245
  278. package/dist/chunk-UPLDI7CN.js +0 -1334
  279. package/dist/chunk-VL67H5IC.js +0 -506
  280. package/dist/chunk-VPPK3SY4.js +0 -1136
  281. package/dist/chunk-YMDLDELF.js +0 -314
  282. package/dist/chunk-YO6DVTL7.js +0 -99
  283. package/dist/chunk-YRZ5RPEB.js +0 -1561
  284. package/dist/chunk-ZDHLG5VP.js +0 -5676
  285. package/dist/chunk-ZGUAAVMA.js +0 -756
  286. package/dist/chunk-ZSYVKSY6.js +0 -2602
  287. package/dist/claude-FRRWJSTJ.js +0 -362
  288. package/dist/claude-cli-XJLK2X4L.js +0 -276
  289. package/dist/claude-code-HTBA4XRB.js +0 -126
  290. package/dist/claude-code-teams-T4SP24MD.js +0 -199
  291. package/dist/commands-5N4ILTPH.js +0 -5859
  292. package/dist/conductor-CQVGTEQN.js +0 -161
  293. package/dist/config-schema-EA4XALGG.js +0 -154
  294. package/dist/constellation-A26CCGQS.js +0 -225
  295. package/dist/context-audit-RLO3ETRP.js +0 -682
  296. package/dist/cost-BGM32XJU.js +0 -93
  297. package/dist/cost-VI46A4XL.js +0 -174
  298. package/dist/cursor-cli-JVEZGHWQ.js +0 -269
  299. package/dist/cursorrules-HLIKJJZT.js +0 -84
  300. package/dist/decision-loader-WWCLIQPJ.js +0 -20
  301. package/dist/delete-KBRPQLPC.js +0 -56
  302. package/dist/diff-D4X53HAC.js +0 -126
  303. package/dist/discipline-FA4OZXIS.js +0 -24
  304. package/dist/dist-34NA5RS5.js +0 -74
  305. package/dist/dist-5QE2BB2B-5S3T6Y3T.js +0 -6919
  306. package/dist/dist-77JDTVAY.js +0 -62
  307. package/dist/dist-OGTSAZ55.js +0 -1358
  308. package/dist/dist-QK4SQAK7.js +0 -64
  309. package/dist/dist-TA6LSC2Q.js +0 -20
  310. package/dist/docs-PBZB7LYP.js +0 -89
  311. package/dist/docs-QIYKO3BR.js +0 -155
  312. package/dist/doctor-ULBOHEIC.js +0 -11
  313. package/dist/drift-R5NRKFHI.js +0 -251
  314. package/dist/echo-O2LY7CC2.js +0 -248
  315. package/dist/edit-R2HNLMOG.js +0 -63
  316. package/dist/event-25OJKDCE.js +0 -31
  317. package/dist/export-IWVL7XLF.js +0 -38
  318. package/dist/flow-CRRVV3O3.js +0 -185
  319. package/dist/global-3NG5JXUB.js +0 -136
  320. package/dist/graduate-USAWGBJM.js +0 -160
  321. package/dist/graph-VHUMAAS6.js +0 -12
  322. package/dist/graph-server-YL22VBBN.js +0 -116
  323. package/dist/habits-OL5NGPXO.js +0 -1405
  324. package/dist/history-WOWC573W.js +0 -277
  325. package/dist/hooks-HFWSCGPV.js +0 -12
  326. package/dist/integrity-IHO4FZTS.js +0 -194
  327. package/dist/integrity-checker-PSKJA5SB.js +0 -12
  328. package/dist/journal-loader-5EYSBFFY.js +0 -18
  329. package/dist/lint-K6CJGGPH.js +0 -456
  330. package/dist/list-4YK7QKFF.js +0 -57
  331. package/dist/list-ENR7Q4CR.js +0 -56
  332. package/dist/lore-loader-7NO6N6FT.js +0 -26
  333. package/dist/lore-server-UNJY5KC3.js +0 -118
  334. package/dist/manual-G6FISID5.js +0 -204
  335. package/dist/migrate-LS45DNEV.js +0 -889
  336. package/dist/migrate-assessments-RGH4O6IX.js +0 -97
  337. package/dist/model-discovery-D2H3VBGC.js +0 -8
  338. package/dist/nomination-engine-RV5CNO5B.js +0 -42
  339. package/dist/notebook-YWIYGEHV.js +0 -155
  340. package/dist/orchestrate-JLILBBJE.js +0 -324
  341. package/dist/peers-DEOUIZM6.js +0 -82
  342. package/dist/persona-UHAHIVST.js +0 -390
  343. package/dist/pipeline-L4HCSBGN.js +0 -263
  344. package/dist/platform-server-H5YO3DQD.js +0 -1475
  345. package/dist/plugin-update-checker-KRRSGXMV.js +0 -12
  346. package/dist/portal-check-NPYGII2D.js +0 -42
  347. package/dist/portal-compliance-J7DGAPFX.js +0 -18
  348. package/dist/probe-MHL5HQZ2.js +0 -167
  349. package/dist/promote-F6ZYZZAL.js +0 -182
  350. package/dist/providers-GK7PB2OL.js +0 -104
  351. package/dist/quiz-M66SC7F7.js +0 -99
  352. package/dist/record-RA4WR2BO.js +0 -49
  353. package/dist/reindex-5LTD53ZC.js +0 -16
  354. package/dist/remember-HBWJ655S.js +0 -77
  355. package/dist/retag-3OLCVDEQ.js +0 -62
  356. package/dist/review-27ATYTD2.js +0 -33
  357. package/dist/review-57QMURZV.js +0 -334
  358. package/dist/ripple-JPBXP5I3.js +0 -215
  359. package/dist/sentinel-4XIG4STA.js +0 -63
  360. package/dist/sentinel-bridge-MDUXTQRL.js +0 -109
  361. package/dist/serve-CAH3PHE7.js +0 -33
  362. package/dist/serve-INL7SNBK.js +0 -36
  363. package/dist/serve-KBSE36PL.js +0 -49
  364. package/dist/server-54SKYFFY.js +0 -1647
  365. package/dist/server-XUOIO7E6.js +0 -338
  366. package/dist/session-tracker-C4BMD5WG.js +0 -13
  367. package/dist/session-work-log-MZ47OAPB.js +0 -20
  368. package/dist/setup-EDS27WUR.js +0 -25
  369. package/dist/setup-KO5AFC4K.js +0 -296
  370. package/dist/shift-D2JOHHBF.js +0 -668
  371. package/dist/show-5PV5KFJE.js +0 -176
  372. package/dist/show-NQKYX6WQ.js +0 -82
  373. package/dist/snapshot-BK4RBPCG.js +0 -62
  374. package/dist/spawn-RCHNXDHE.js +0 -196
  375. package/dist/status-WGIAQODY.js +0 -71
  376. package/dist/summary-NIRABMF5.js +0 -140
  377. package/dist/sweep-QMHNSIY5.js +0 -934
  378. package/dist/switch-6EJPZDIA.js +0 -232
  379. package/dist/symphony-4OCY36AI.js +0 -791
  380. package/dist/symphony-B75X2MME.js +0 -326
  381. package/dist/symphony-loader-UZGON56V.js +0 -90
  382. package/dist/symphony-peers-2ZQYLRNI.js +0 -34
  383. package/dist/symphony-peers-OL7F6M5S.js +0 -121
  384. package/dist/symphony-relay-UJYUXN65.js +0 -710
  385. package/dist/sync-VEHUH4OA.js +0 -11
  386. package/dist/sync-llms-YHCFIE6X.js +0 -166
  387. package/dist/task-loader-LDYWQSLM.js +0 -20
  388. package/dist/team-O5MIIFMA.js +0 -34
  389. package/dist/test-566CP5KC.js +0 -1017
  390. package/dist/thread-N754I4D5.js +0 -274
  391. package/dist/timeline-M3CICQFE.js +0 -112
  392. package/dist/triage-HHYGT3HY.js +0 -671
  393. package/dist/tutorial-KD22SUNO.js +0 -666
  394. package/dist/upgrade-H5PF32BW.js +0 -551
  395. package/dist/validate-CNKEKO6A.js +0 -134
  396. package/dist/validate-MB5ULIHS.js +0 -39
  397. package/dist/validate-QH3LADM6.js +0 -64
  398. package/dist/watch-2TKP5PVL.js +0 -199
  399. package/dist/watch-ZF4ML6CD.js +0 -111
  400. package/dist/wisdom-AATMGNFA.js +0 -319
  401. package/dist/work-log-loader-5L45XNYZ.js +0 -14
  402. package/dist/workspace-6E6OSRNU.js +0 -21
  403. package/platform-ui/dist/assets/AmbientSection-WtHfNedO.js +0 -1
  404. package/platform-ui/dist/assets/LoreSection-C3EixkjW.css +0 -1
  405. package/platform-ui/dist/assets/LoreSection-CwDDHrz9.js +0 -1
  406. package/platform-ui/dist/assets/SentinelSection-Cl7e5oZ6.js +0 -1
  407. package/platform-ui/dist/assets/TeamSection-CqSIMrKz.js +0 -1
  408. package/platform-ui/dist/assets/index-CfpZFjea.css +0 -1
  409. package/platform-ui/dist/assets/index-F0KL9xrN.js +0 -57
@@ -1,889 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-PDX44BCA.js";
3
-
4
- // src/commands/migrate/index.ts
5
- import * as fs4 from "fs";
6
- import * as path4 from "path";
7
- import chalk from "chalk";
8
- import ora from "ora";
9
-
10
- // src/commands/migrate/detector.ts
11
- import * as fs2 from "fs";
12
- import * as path2 from "path";
13
- import * as yaml2 from "js-yaml";
14
- import { createRequire } from "module";
15
-
16
- // src/commands/migrate/migrations.ts
17
- import * as fs from "fs";
18
- import * as path from "path";
19
- import * as yaml from "js-yaml";
20
- function dirExists(rootDir, ...segments) {
21
- return fs.existsSync(path.join(rootDir, ...segments));
22
- }
23
- function ensureDir(rootDir, ...segments) {
24
- fs.mkdirSync(path.join(rootDir, ...segments), { recursive: true });
25
- }
26
- function readConfig(rootDir) {
27
- const p = path.join(rootDir, ".paradigm", "config.yaml");
28
- if (!fs.existsSync(p)) return null;
29
- try {
30
- return yaml.load(fs.readFileSync(p, "utf8"));
31
- } catch {
32
- return null;
33
- }
34
- }
35
- function readConfigRaw(rootDir) {
36
- const p = path.join(rootDir, ".paradigm", "config.yaml");
37
- if (!fs.existsSync(p)) return null;
38
- return fs.readFileSync(p, "utf8");
39
- }
40
- function writeConfigRaw(rootDir, content) {
41
- fs.writeFileSync(path.join(rootDir, ".paradigm", "config.yaml"), content, "utf8");
42
- }
43
- function findUnmigratedAssessments(assessDir) {
44
- try {
45
- const walk = (dir) => {
46
- const entries = fs.readdirSync(dir, { withFileTypes: true });
47
- for (const entry of entries) {
48
- if (entry.isDirectory()) {
49
- if (walk(path.join(dir, entry.name))) return true;
50
- } else if (entry.name.endsWith(".yaml") && !entry.name.endsWith(".migrated")) {
51
- if (entry.name !== "index.yaml" && entry.name !== "arc.yaml") return true;
52
- }
53
- }
54
- return false;
55
- };
56
- return walk(assessDir);
57
- } catch {
58
- return false;
59
- }
60
- }
61
- function configHasField(config, field) {
62
- return field in config || field.replace(/-/g, "_") in config || field.replace(/_/g, "-") in config;
63
- }
64
- var legacyFileToDirectory = {
65
- id: "legacy-file-to-directory",
66
- introducedIn: "1.0.0",
67
- description: "Convert .paradigm file to .paradigm/ directory",
68
- category: "directory",
69
- auto: true,
70
- async check(rootDir) {
71
- const p = path.join(rootDir, ".paradigm");
72
- if (!fs.existsSync(p)) return { needed: false, reason: "No .paradigm found" };
73
- if (fs.statSync(p).isFile()) {
74
- return { needed: true, reason: ".paradigm is a file, not a directory", details: ["Legacy format \u2014 must convert to directory"] };
75
- }
76
- return { needed: false, reason: ".paradigm/ is already a directory" };
77
- },
78
- async apply(rootDir, opts) {
79
- if (opts.dryRun) return { status: "skipped", message: "Would convert .paradigm file to directory" };
80
- const p = path.join(rootDir, ".paradigm");
81
- const backup = path.join(rootDir, ".paradigm.backup");
82
- const content = fs.readFileSync(p, "utf8");
83
- fs.copyFileSync(p, backup);
84
- fs.unlinkSync(p);
85
- fs.mkdirSync(p, { recursive: true });
86
- fs.mkdirSync(path.join(p, "specs"), { recursive: true });
87
- fs.mkdirSync(path.join(p, "docs"), { recursive: true });
88
- fs.mkdirSync(path.join(p, "prompts"), { recursive: true });
89
- fs.writeFileSync(path.join(p, "config.yaml"), content, "utf8");
90
- return {
91
- status: "applied",
92
- message: "Converted .paradigm file to directory (backup at .paradigm.backup)",
93
- filesCreated: [".paradigm/", ".paradigm/config.yaml", ".paradigm/specs/", ".paradigm/docs/", ".paradigm/prompts/"]
94
- };
95
- }
96
- };
97
- var legacyScanIndexLocation = {
98
- id: "legacy-scan-index-location",
99
- introducedIn: "1.0.0",
100
- description: "Move .paradigm-scan-index.json into .paradigm/",
101
- category: "format",
102
- auto: true,
103
- async check(rootDir) {
104
- const old = path.join(rootDir, ".paradigm-scan-index.json");
105
- if (fs.existsSync(old)) {
106
- return { needed: true, reason: "Scan index at root level needs relocation" };
107
- }
108
- return { needed: false, reason: "No legacy scan index at root" };
109
- },
110
- async apply(rootDir, opts) {
111
- if (opts.dryRun) return { status: "skipped", message: "Would move .paradigm-scan-index.json" };
112
- const old = path.join(rootDir, ".paradigm-scan-index.json");
113
- const dest = path.join(rootDir, ".paradigm", "scan-index.json");
114
- fs.renameSync(old, dest);
115
- return { status: "applied", message: "Moved scan index into .paradigm/", filesModified: [".paradigm/scan-index.json"] };
116
- }
117
- };
118
- function makeDirectoryMigration(id, version, relPath, description, details) {
119
- return {
120
- id,
121
- introducedIn: version,
122
- description,
123
- category: "directory",
124
- auto: true,
125
- async check(rootDir) {
126
- if (dirExists(rootDir, ".paradigm", relPath)) {
127
- return { needed: false, reason: `.paradigm/${relPath}/ already exists` };
128
- }
129
- return { needed: true, reason: `Missing .paradigm/${relPath}/`, details };
130
- },
131
- async apply(rootDir, opts) {
132
- if (opts.dryRun) return { status: "skipped", message: `Would create .paradigm/${relPath}/` };
133
- ensureDir(rootDir, ".paradigm", relPath);
134
- return { status: "applied", message: `Created .paradigm/${relPath}/`, filesCreated: [`.paradigm/${relPath}/`] };
135
- }
136
- };
137
- }
138
- var addSpecsDirectory = makeDirectoryMigration(
139
- "add-specs-directory",
140
- "3.0.0",
141
- "specs",
142
- "Create .paradigm/specs/ for specifications",
143
- ["Stores logger spec, symbols spec, scan spec, etc."]
144
- );
145
- var addDocsDirectory = makeDirectoryMigration(
146
- "add-docs-directory",
147
- "3.0.0",
148
- "docs",
149
- "Create .paradigm/docs/ for documentation",
150
- ["Stores commands, patterns, troubleshooting docs"]
151
- );
152
- var addPromptsDirectory = makeDirectoryMigration(
153
- "add-prompts-directory",
154
- "3.0.0",
155
- "prompts",
156
- "Create .paradigm/prompts/ for task templates",
157
- ["Stores add-feature, refactor, trace-flow prompts"]
158
- );
159
- var addTagBankConfig = {
160
- id: "add-tag-bank-config",
161
- introducedIn: "3.2.0",
162
- description: "Add tag-bank section to config.yaml",
163
- category: "config",
164
- auto: true,
165
- async check(rootDir) {
166
- const config = readConfig(rootDir);
167
- if (!config) return { needed: false, reason: "No config.yaml found" };
168
- if (configHasField(config, "tag-bank")) {
169
- return { needed: false, reason: "tag-bank already configured" };
170
- }
171
- return { needed: true, reason: "Missing tag-bank configuration" };
172
- },
173
- async apply(rootDir, opts) {
174
- if (opts.dryRun) return { status: "skipped", message: "Would add tag-bank to config.yaml" };
175
- const raw = readConfigRaw(rootDir);
176
- if (!raw) return { status: "error", message: "Cannot read config.yaml" };
177
- const tagBankBlock = `
178
- # Tag bank configuration
179
- tag-bank:
180
- file: tags.yaml
181
- core-tags:
182
- - feature
183
- - integration
184
- - state
185
- - idea
186
- - deprecated
187
- - critical
188
- - security
189
- - compliance
190
- allow-suggestions: true
191
- `;
192
- writeConfigRaw(rootDir, raw.trimEnd() + "\n" + tagBankBlock);
193
- return { status: "applied", message: "Added tag-bank to config.yaml", filesModified: [".paradigm/config.yaml"] };
194
- }
195
- };
196
- var addPurposeRequiredConfig = {
197
- id: "add-purpose-required-config",
198
- introducedIn: "3.3.0",
199
- description: "Add purpose-required patterns to config.yaml",
200
- category: "config",
201
- auto: true,
202
- async check(rootDir) {
203
- const config = readConfig(rootDir);
204
- if (!config) return { needed: false, reason: "No config.yaml found" };
205
- if (configHasField(config, "purpose-required")) {
206
- return { needed: false, reason: "purpose-required already configured" };
207
- }
208
- return { needed: true, reason: "Missing purpose-required patterns" };
209
- },
210
- async apply(rootDir, opts) {
211
- if (opts.dryRun) return { status: "skipped", message: "Would add purpose-required to config.yaml" };
212
- const raw = readConfigRaw(rootDir);
213
- if (!raw) return { status: "error", message: "Cannot read config.yaml" };
214
- const block = `
215
- # Where .purpose files should exist
216
- purpose-required:
217
- - pattern: "src/*"
218
- depth: 1
219
- - pattern: "lib/*"
220
- depth: 1
221
- - pattern: "packages/*"
222
- depth: 1
223
- `;
224
- writeConfigRaw(rootDir, raw.trimEnd() + "\n" + block);
225
- return { status: "applied", message: "Added purpose-required to config.yaml", filesModified: [".paradigm/config.yaml"] };
226
- }
227
- };
228
- var addLoreDirectory = makeDirectoryMigration(
229
- "add-lore-directory",
230
- "3.7.0",
231
- "lore",
232
- "Create .paradigm/lore/ for project reflections and decisions",
233
- ["Stores lore entries (reflections, decisions, arcs)"]
234
- );
235
- var addTasksDirectory = makeDirectoryMigration(
236
- "add-tasks-directory",
237
- "3.8.0",
238
- "tasks",
239
- "Create .paradigm/tasks/ for work item tracking",
240
- ["Stores task YAML files for persistent task management"]
241
- );
242
- var addPersonasDirectory = makeDirectoryMigration(
243
- "add-personas-directory",
244
- "3.9.0",
245
- "personas",
246
- "Create .paradigm/personas/ for actor-driven journey testing",
247
- ["Stores .persona files with traits, triggers, fixtures, journey steps"]
248
- );
249
- var addProtocolsDirectory = makeDirectoryMigration(
250
- "add-protocols-directory",
251
- "3.10.0",
252
- "protocols",
253
- "Create .paradigm/protocols/ for repeatable implementation patterns",
254
- ["Stores protocol YAML files captured from implementation workflows"]
255
- );
256
- var addHabitsDirectory = makeDirectoryMigration(
257
- "add-habits-directory",
258
- "3.14.0",
259
- "habits",
260
- "Create .paradigm/habits/ for session habit tracking"
261
- );
262
- var addWisdomDirectory = makeDirectoryMigration(
263
- "add-wisdom-directory",
264
- "3.5.0",
265
- "wisdom",
266
- "Create .paradigm/wisdom/ for antipatterns and team knowledge",
267
- ["Stores antipatterns.yaml and other team knowledge files"]
268
- );
269
- var addHistoryDirectory = makeDirectoryMigration(
270
- "add-history-directory",
271
- "3.6.0",
272
- "history",
273
- "Create .paradigm/history/ for symbol change history",
274
- ["Stores log.jsonl for commit-level symbol tracking"]
275
- );
276
- var migrateAssessmentsToLore = {
277
- id: "migrate-assessments-to-lore",
278
- introducedIn: "3.19.0",
279
- description: "Convert old assessment entries to lore format",
280
- category: "schema",
281
- auto: false,
282
- // Manual — delegates to `paradigm lore migrate-assessments`
283
- async check(rootDir) {
284
- const assessDir = path.join(rootDir, ".paradigm", "assessments");
285
- if (!fs.existsSync(assessDir)) return { needed: false, reason: "No assessments directory found" };
286
- try {
287
- const hasUnmigrated = findUnmigratedAssessments(assessDir);
288
- if (!hasUnmigrated) return { needed: false, reason: "All assessments already migrated" };
289
- return {
290
- needed: true,
291
- reason: "Unmigrated assessment entries found",
292
- details: ["Run: paradigm lore migrate-assessments --dry-run"]
293
- };
294
- } catch {
295
- return { needed: false, reason: "Cannot read assessments directory" };
296
- }
297
- },
298
- async apply(_rootDir, _opts) {
299
- return { status: "skipped", message: "Run `paradigm lore migrate-assessments` manually" };
300
- }
301
- };
302
- var addComponentTypesConfig = {
303
- id: "add-component-types-config",
304
- introducedIn: "3.33.0",
305
- description: "Add component_types glossary to config.yaml",
306
- category: "config",
307
- auto: true,
308
- async check(rootDir) {
309
- const config = readConfig(rootDir);
310
- if (!config) return { needed: false, reason: "No config.yaml found" };
311
- if (configHasField(config, "component_types")) {
312
- return { needed: false, reason: "component_types already configured" };
313
- }
314
- return { needed: true, reason: "Missing component_types glossary" };
315
- },
316
- async apply(rootDir, opts) {
317
- if (opts.dryRun) return { status: "skipped", message: "Would add component_types to config.yaml" };
318
- const raw = readConfigRaw(rootDir);
319
- if (!raw) return { status: "error", message: "Cannot read config.yaml" };
320
- const block = `
321
- # Component types glossary \u2014 defines the project vocabulary for the \`type\` field on components
322
- component_types:
323
- command: "CLI command handler \u2014 registers subcommand, parses args, calls core logic"
324
- tool: "MCP tool definition + handler \u2014 serves AI agents via JSON-RPC"
325
- utility: "Shared helper function or module \u2014 no side effects, pure logic"
326
- engine: "Stateful processing core \u2014 owns data transformation lifecycle"
327
- loader: "Reads and parses data sources into typed structures"
328
- writer: "Writes structured data to files (YAML, JSON)"
329
- service: "Business logic coordinator \u2014 orchestrates tools, loaders, writers"
330
- model: "Data shape \u2014 TypeScript interface or type definition"
331
- view: "UI rendering unit \u2014 SwiftUI view, React component"
332
- provider: "Protocol-conforming platform capability wrapper \u2014 owns lifecycle"
333
- manager: "Stateful coordinator that owns child lifecycles"
334
- detector: "Observes external state and emits events"
335
- router: "Maps input signals to targets based on rules"
336
- filter: "Transforms or smooths data in a pipeline"
337
- store: "Persistent or reactive state container"
338
- handler: "Event handler, webhook receiver, or request processor"
339
- config: "Configuration, environment, constants"
340
- `;
341
- writeConfigRaw(rootDir, raw.trimEnd() + "\n" + block);
342
- return { status: "applied", message: "Added component_types glossary to config.yaml", filesModified: [".paradigm/config.yaml"] };
343
- }
344
- };
345
- var addDisciplineConfig = {
346
- id: "add-discipline-config",
347
- introducedIn: "3.4.0",
348
- description: "Add discipline field to config.yaml",
349
- category: "config",
350
- auto: true,
351
- async check(rootDir) {
352
- const config = readConfig(rootDir);
353
- if (!config) return { needed: false, reason: "No config.yaml found" };
354
- if (configHasField(config, "discipline")) {
355
- return { needed: false, reason: "discipline already set" };
356
- }
357
- return { needed: true, reason: "Missing discipline field" };
358
- },
359
- async apply(rootDir, opts) {
360
- if (opts.dryRun) return { status: "skipped", message: "Would add discipline to config.yaml" };
361
- const raw = readConfigRaw(rootDir);
362
- if (!raw) return { status: "error", message: "Cannot read config.yaml" };
363
- const updated = raw.replace(
364
- /^(project:\s*.+)$/m,
365
- "$1\ndiscipline: auto"
366
- );
367
- if (updated === raw) {
368
- writeConfigRaw(rootDir, raw.trimEnd() + "\ndiscipline: auto\n");
369
- } else {
370
- writeConfigRaw(rootDir, updated);
371
- }
372
- return { status: "applied", message: "Added discipline: auto to config.yaml", filesModified: [".paradigm/config.yaml"] };
373
- }
374
- };
375
- var syncTemplates = {
376
- id: "sync-templates",
377
- introducedIn: "evergreen",
378
- description: "Update specs/ and docs/ from installed CLI templates",
379
- category: "template",
380
- auto: true,
381
- async check(rootDir) {
382
- const templatesDir = getTemplatesDir();
383
- if (!templatesDir) return { needed: false, reason: "Templates directory not found" };
384
- const newFiles = [];
385
- const subdirs = ["specs", "docs", "prompts"];
386
- for (const sub of subdirs) {
387
- const templateSub = path.join(templatesDir, sub);
388
- const projectSub = path.join(rootDir, ".paradigm", sub);
389
- if (!fs.existsSync(templateSub)) continue;
390
- try {
391
- const files = fs.readdirSync(templateSub).filter((f) => {
392
- const s = fs.statSync(path.join(templateSub, f));
393
- return s.isFile();
394
- });
395
- for (const file of files) {
396
- if (!fs.existsSync(path.join(projectSub, file))) {
397
- newFiles.push(`${sub}/${file}`);
398
- }
399
- }
400
- } catch {
401
- }
402
- }
403
- if (newFiles.length === 0) return { needed: false, reason: "All templates are up to date" };
404
- return {
405
- needed: true,
406
- reason: `${newFiles.length} new template file(s) available`,
407
- details: newFiles.map((f) => `New: ${f}`)
408
- };
409
- },
410
- async apply(rootDir, opts) {
411
- const templatesDir = getTemplatesDir();
412
- if (!templatesDir) return { status: "error", message: "Templates directory not found" };
413
- const projectName = path.basename(rootDir);
414
- const created = [];
415
- const subdirs = ["specs", "docs", "prompts"];
416
- for (const sub of subdirs) {
417
- const templateSub = path.join(templatesDir, sub);
418
- const projectSub = path.join(rootDir, ".paradigm", sub);
419
- if (!fs.existsSync(templateSub)) continue;
420
- if (!opts.dryRun) {
421
- fs.mkdirSync(projectSub, { recursive: true });
422
- }
423
- try {
424
- const entries = fs.readdirSync(templateSub, { withFileTypes: true });
425
- for (const entry of entries) {
426
- if (entry.isDirectory()) continue;
427
- const dest = path.join(projectSub, entry.name);
428
- if (!fs.existsSync(dest)) {
429
- if (opts.dryRun) {
430
- created.push(`${sub}/${entry.name}`);
431
- continue;
432
- }
433
- let content = fs.readFileSync(path.join(templateSub, entry.name), "utf8");
434
- content = content.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
435
- fs.writeFileSync(dest, content, "utf8");
436
- created.push(`${sub}/${entry.name}`);
437
- }
438
- }
439
- } catch {
440
- }
441
- }
442
- if (opts.dryRun) {
443
- return { status: "skipped", message: `Would copy ${created.length} template file(s)` };
444
- }
445
- if (created.length === 0) return { status: "skipped", message: "No new templates to sync" };
446
- return {
447
- status: "applied",
448
- message: `Synced ${created.length} template file(s)`,
449
- filesCreated: created.map((f) => `.paradigm/${f}`)
450
- };
451
- }
452
- };
453
- var refreshHooks = {
454
- id: "refresh-hooks",
455
- introducedIn: "evergreen",
456
- description: "Reinstall hook scripts from plugin",
457
- category: "hook",
458
- auto: true,
459
- async check(rootDir) {
460
- const hookLocations = [
461
- path.join(rootDir, ".claude", "hooks"),
462
- path.join(rootDir, ".cursor", "hooks")
463
- ];
464
- for (const hookDir of hookLocations) {
465
- if (!fs.existsSync(hookDir)) continue;
466
- try {
467
- const files = fs.readdirSync(hookDir);
468
- if (files.some((f) => f.includes("paradigm"))) {
469
- return { needed: false, reason: "Hooks are installed" };
470
- }
471
- } catch {
472
- }
473
- }
474
- const claudeSettings = path.join(rootDir, ".claude", "settings.local.json");
475
- if (fs.existsSync(claudeSettings)) {
476
- try {
477
- const settings = JSON.parse(fs.readFileSync(claudeSettings, "utf8"));
478
- if (settings.hooks) {
479
- return { needed: false, reason: "Plugin-managed hooks are configured" };
480
- }
481
- } catch {
482
- }
483
- }
484
- return { needed: true, reason: "No paradigm hooks found" };
485
- },
486
- async apply(rootDir, opts) {
487
- if (opts.dryRun) return { status: "skipped", message: "Would reinstall hooks" };
488
- try {
489
- const { hooksInstallCommand } = await import("./hooks-HFWSCGPV.js");
490
- await hooksInstallCommand({ force: true });
491
- return { status: "applied", message: "Hooks reinstalled" };
492
- } catch (err) {
493
- return { status: "error", message: `Hook install failed: ${err.message}` };
494
- }
495
- }
496
- };
497
- var migrations = [
498
- // Pre-3.0 legacy
499
- legacyFileToDirectory,
500
- legacyScanIndexLocation,
501
- // 3.0–3.5 foundation
502
- addSpecsDirectory,
503
- addDocsDirectory,
504
- addPromptsDirectory,
505
- addTagBankConfig,
506
- addPurposeRequiredConfig,
507
- addDisciplineConfig,
508
- // 3.5–3.18 features
509
- addWisdomDirectory,
510
- addHistoryDirectory,
511
- addLoreDirectory,
512
- addTasksDirectory,
513
- addPersonasDirectory,
514
- addProtocolsDirectory,
515
- addHabitsDirectory,
516
- // 3.19+ refinements
517
- migrateAssessmentsToLore,
518
- addComponentTypesConfig,
519
- // Evergreen
520
- syncTemplates,
521
- refreshHooks
522
- ];
523
-
524
- // src/commands/migrate/detector.ts
525
- var require2 = createRequire(import.meta.url);
526
- var { version: CLI_VERSION } = require2("../package.json");
527
- function loadMigrationState(rootDir) {
528
- const p = path2.join(rootDir, ".paradigm", "migrate.yaml");
529
- if (!fs2.existsSync(p)) return null;
530
- try {
531
- const content = fs2.readFileSync(p, "utf8");
532
- return yaml2.load(content);
533
- } catch {
534
- return null;
535
- }
536
- }
537
- async function detectProjectState(rootDir) {
538
- const paradigmDir = path2.join(rootDir, ".paradigm");
539
- const state = loadMigrationState(rootDir);
540
- const appliedIds = state?.applied.map((a) => a.id) ?? [];
541
- let configVersion = "unknown";
542
- const configPath = path2.join(paradigmDir, "config.yaml");
543
- if (fs2.existsSync(configPath)) {
544
- try {
545
- const config = yaml2.load(fs2.readFileSync(configPath, "utf8"));
546
- configVersion = String(config.version ?? "unknown");
547
- } catch {
548
- }
549
- }
550
- const expectedDirs = ["specs", "docs", "prompts", "lore", "tasks", "protocols", "personas"];
551
- const missingDirectories = expectedDirs.filter((d) => !fs2.existsSync(path2.join(paradigmDir, d)));
552
- const expectedConfigFields = ["discipline", "tag-bank", "purpose-required", "component_types"];
553
- let missingConfigFields = [];
554
- if (fs2.existsSync(configPath)) {
555
- try {
556
- const config = yaml2.load(fs2.readFileSync(configPath, "utf8"));
557
- missingConfigFields = expectedConfigFields.filter((f) => {
558
- const key = f.replace(/-/g, "_");
559
- return !(f in config) && !(key in config) && !(f.replace(/_/g, "-") in config);
560
- });
561
- } catch {
562
- }
563
- }
564
- const staleTemplates = [];
565
- const templatesDir = getTemplatesDir();
566
- if (templatesDir) {
567
- const templateSubdirs = ["specs", "docs"];
568
- for (const sub of templateSubdirs) {
569
- const templateSub = path2.join(templatesDir, sub);
570
- const projectSub = path2.join(paradigmDir, sub);
571
- if (fs2.existsSync(templateSub) && fs2.existsSync(projectSub)) {
572
- const templateFiles = fs2.readdirSync(templateSub).filter((f) => !fs2.statSync(path2.join(templateSub, f)).isDirectory());
573
- for (const file of templateFiles) {
574
- const projectFile = path2.join(projectSub, file);
575
- if (!fs2.existsSync(projectFile)) {
576
- staleTemplates.push(`${sub}/${file}`);
577
- }
578
- }
579
- }
580
- }
581
- }
582
- const hooksOutdated = !fs2.existsSync(path2.join(rootDir, ".claude", "hooks"));
583
- const pendingMigrations = [];
584
- for (const migration of migrations) {
585
- const isEvergreen = migration.introducedIn === "evergreen";
586
- if (appliedIds.includes(migration.id) && !isEvergreen) continue;
587
- const result = await migration.check(rootDir);
588
- if (result.needed) {
589
- pendingMigrations.push(migration);
590
- }
591
- }
592
- if (!state) {
593
- }
594
- return {
595
- configVersion,
596
- cliVersion: CLI_VERSION,
597
- pendingMigrations,
598
- appliedIds,
599
- health: {
600
- missingDirectories,
601
- missingConfigFields,
602
- staleTemplates,
603
- hooksOutdated
604
- }
605
- };
606
- }
607
- async function bootstrapAppliedList(rootDir) {
608
- const applied = [];
609
- const now = (/* @__PURE__ */ new Date()).toISOString();
610
- for (const migration of migrations) {
611
- if (migration.introducedIn === "evergreen") continue;
612
- const result = await migration.check(rootDir);
613
- if (!result.needed) {
614
- applied.push({ id: migration.id, appliedAt: now, cliVersion: CLI_VERSION });
615
- }
616
- }
617
- return applied;
618
- }
619
- function getTemplatesDir() {
620
- const __filename = new URL(import.meta.url).pathname;
621
- const __dirname = path2.dirname(__filename);
622
- const candidates = [
623
- path2.join(__dirname, "..", "..", "..", "templates", "paradigm"),
624
- path2.join(__dirname, "..", "..", "templates", "paradigm"),
625
- path2.join(__dirname, "..", "templates", "paradigm")
626
- ];
627
- for (const p of candidates) {
628
- if (fs2.existsSync(p)) return p;
629
- }
630
- return null;
631
- }
632
-
633
- // src/commands/migrate/runner.ts
634
- import * as fs3 from "fs";
635
- import * as path3 from "path";
636
- import * as yaml3 from "js-yaml";
637
- import { createRequire as createRequire2 } from "module";
638
- var require3 = createRequire2(import.meta.url);
639
- var { version: CLI_VERSION2 } = require3("../package.json");
640
- async function getOrCreateState(rootDir) {
641
- const existing = loadMigrationState(rootDir);
642
- if (existing) return existing;
643
- const applied = await bootstrapAppliedList(rootDir);
644
- const state = {
645
- version: "1.0",
646
- cliVersion: CLI_VERSION2,
647
- lastMigrated: (/* @__PURE__ */ new Date()).toISOString(),
648
- applied
649
- };
650
- return state;
651
- }
652
- function saveMigrationState(rootDir, state) {
653
- const p = path3.join(rootDir, ".paradigm", "migrate.yaml");
654
- fs3.mkdirSync(path3.dirname(p), { recursive: true });
655
- state.cliVersion = CLI_VERSION2;
656
- state.lastMigrated = (/* @__PURE__ */ new Date()).toISOString();
657
- fs3.writeFileSync(p, yaml3.dump(state, {
658
- indent: 2,
659
- lineWidth: 120,
660
- noRefs: true,
661
- sortKeys: false,
662
- quotingType: '"'
663
- }), "utf8");
664
- }
665
- async function runMigrations(rootDir, pending, options, state) {
666
- const summary = { applied: 0, skipped: 0, errors: 0, manual: 0, results: [] };
667
- const now = (/* @__PURE__ */ new Date()).toISOString();
668
- for (const migration of pending) {
669
- if (!migration.auto) {
670
- summary.manual++;
671
- summary.results.push({ id: migration.id, result: { status: "skipped", message: "Manual review recommended" } });
672
- continue;
673
- }
674
- try {
675
- const result = await migration.apply(rootDir, options);
676
- summary.results.push({ id: migration.id, result });
677
- if (result.status === "applied") {
678
- summary.applied++;
679
- state.applied.push({ id: migration.id, appliedAt: now, cliVersion: CLI_VERSION2 });
680
- } else if (result.status === "skipped") {
681
- summary.skipped++;
682
- } else {
683
- summary.errors++;
684
- }
685
- } catch (err) {
686
- summary.errors++;
687
- summary.results.push({
688
- id: migration.id,
689
- result: { status: "error", message: err.message }
690
- });
691
- }
692
- }
693
- return summary;
694
- }
695
-
696
- // src/commands/migrate/index.ts
697
- async function migrateCommand(options = {}) {
698
- const cwd = process.cwd();
699
- const paradigmDir = path4.join(cwd, ".paradigm");
700
- if (!fs4.existsSync(paradigmDir) || !fs4.statSync(paradigmDir).isDirectory()) {
701
- if (fs4.existsSync(paradigmDir) && fs4.statSync(paradigmDir).isFile()) {
702
- } else {
703
- if (!options.quiet) {
704
- console.log(chalk.yellow("\n No .paradigm/ directory found. Run `paradigm init` or `paradigm shift` first.\n"));
705
- }
706
- return;
707
- }
708
- }
709
- const spinner = ora();
710
- if (!options.quiet) {
711
- spinner.start("Detecting project state...");
712
- }
713
- const detection = await detectProjectState(cwd);
714
- if (!options.quiet) {
715
- spinner.stop();
716
- }
717
- const state = await getOrCreateState(cwd);
718
- let pending = detection.pendingMigrations;
719
- if (options.only && options.only.length > 0) {
720
- pending = pending.filter((m) => options.only.includes(m.id));
721
- }
722
- if (options.category) {
723
- pending = pending.filter((m) => m.category === options.category);
724
- }
725
- if (options.force) {
726
- const all = options.only ? migrations.filter((m) => options.only.includes(m.id)) : options.category ? migrations.filter((m) => m.category === options.category) : migrations;
727
- pending = [];
728
- for (const m of all) {
729
- const result = await m.check(cwd);
730
- if (result.needed || options.force) {
731
- pending.push(m);
732
- }
733
- }
734
- }
735
- const autoMigrations = pending.filter((m) => m.auto);
736
- const manualMigrations = pending.filter((m) => !m.auto);
737
- if (options.list) {
738
- printMigrationList(state, detection, options);
739
- return;
740
- }
741
- if (options.quiet) {
742
- if (autoMigrations.length === 0) return;
743
- const summary = await runMigrations(cwd, autoMigrations, options, state);
744
- saveMigrationState(cwd, state);
745
- return summary;
746
- }
747
- const existingState = loadMigrationState(cwd);
748
- console.log(chalk.blue("\n\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"));
749
- console.log(chalk.blue("\u2502") + chalk.white.bold(" paradigm migrate ") + chalk.blue("\u2502"));
750
- console.log(chalk.blue("\u2502") + chalk.gray(" Bring your project up to date ") + chalk.blue("\u2502"));
751
- console.log(chalk.blue("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"));
752
- console.log(chalk.white(` Project: ${chalk.cyan(path4.basename(cwd))}`));
753
- console.log(chalk.white(` Config version: ${chalk.cyan(detection.configVersion)}`));
754
- console.log(chalk.white(` CLI version: ${chalk.cyan(detection.cliVersion)}`));
755
- console.log(chalk.white(` Last migrated: ${chalk.cyan(existingState?.lastMigrated ?? "never")}`));
756
- console.log("");
757
- if (pending.length === 0) {
758
- console.log(chalk.green(" All migrations are up to date.\n"));
759
- if (!existingState) {
760
- saveMigrationState(cwd, state);
761
- if (options.verbose) {
762
- console.log(chalk.gray(" Created .paradigm/migrate.yaml with bootstrap state.\n"));
763
- }
764
- }
765
- return;
766
- }
767
- if (options.verbose) {
768
- const h = detection.health;
769
- if (h.missingDirectories.length > 0) {
770
- console.log(chalk.yellow(` Missing directories: ${h.missingDirectories.join(", ")}`));
771
- }
772
- if (h.missingConfigFields.length > 0) {
773
- console.log(chalk.yellow(` Missing config fields: ${h.missingConfigFields.join(", ")}`));
774
- }
775
- if (h.staleTemplates.length > 0) {
776
- console.log(chalk.yellow(` New templates available: ${h.staleTemplates.join(", ")}`));
777
- }
778
- if (h.hooksOutdated) {
779
- console.log(chalk.yellow(" Hooks need installation"));
780
- }
781
- console.log("");
782
- }
783
- const autoCount = autoMigrations.length;
784
- const manualCount = manualMigrations.length;
785
- console.log(chalk.white(` Pending Migrations (${autoCount} auto${manualCount > 0 ? `, ${manualCount} manual` : ""})`));
786
- console.log(chalk.gray(" " + "\u2500".repeat(49)));
787
- if (autoMigrations.length > 0) {
788
- console.log(chalk.white(" AUTO:"));
789
- for (const m of autoMigrations) {
790
- const idPad = m.id.padEnd(30);
791
- console.log(chalk.green(" \u2713 ") + chalk.white(idPad) + chalk.gray(m.description));
792
- if (options.verbose) {
793
- const checkResult = await m.check(cwd);
794
- if (checkResult.details) {
795
- for (const d of checkResult.details) {
796
- console.log(chalk.gray(" \u21B3 ") + chalk.gray(d));
797
- }
798
- }
799
- }
800
- }
801
- }
802
- if (manualMigrations.length > 0) {
803
- console.log("");
804
- console.log(chalk.white(" MANUAL (review recommended):"));
805
- for (const m of manualMigrations) {
806
- const idPad = m.id.padEnd(30);
807
- console.log(chalk.yellow(" \u25CB ") + chalk.white(idPad) + chalk.gray(m.description));
808
- const checkResult = await m.check(cwd);
809
- if (checkResult.details) {
810
- for (const d of checkResult.details) {
811
- console.log(chalk.gray(" \u2192 ") + chalk.cyan(d));
812
- }
813
- }
814
- }
815
- }
816
- console.log("");
817
- if (options.dryRun) {
818
- console.log(chalk.yellow(" Dry run \u2014 no changes applied.\n"));
819
- return;
820
- }
821
- if (autoMigrations.length > 0) {
822
- if (!options.apply) {
823
- const prompts = (await import("prompts")).default;
824
- const { confirm } = await prompts({
825
- type: "confirm",
826
- name: "confirm",
827
- message: `Apply ${autoMigrations.length} automatic migration(s)?`,
828
- initial: true
829
- });
830
- if (!confirm) {
831
- console.log(chalk.gray("\n Skipped. Run with --apply to auto-apply.\n"));
832
- return;
833
- }
834
- }
835
- spinner.start(`Applying ${autoMigrations.length} migration(s)...`);
836
- const summary = await runMigrations(cwd, autoMigrations, options, state);
837
- spinner.stop();
838
- for (const { id, result } of summary.results) {
839
- if (result.status === "applied") {
840
- console.log(chalk.green(" \u2713 ") + chalk.white(id) + chalk.gray(` \u2014 ${result.message}`));
841
- } else if (result.status === "error") {
842
- console.log(chalk.red(" \u2717 ") + chalk.white(id) + chalk.gray(` \u2014 ${result.message}`));
843
- } else {
844
- console.log(chalk.yellow(" \u25CB ") + chalk.white(id) + chalk.gray(` \u2014 ${result.message}`));
845
- }
846
- }
847
- console.log("");
848
- console.log(chalk.green(` Applied ${summary.applied} migration(s).`));
849
- if (summary.errors > 0) {
850
- console.log(chalk.red(` ${summary.errors} error(s).`));
851
- }
852
- }
853
- saveMigrationState(cwd, state);
854
- console.log(chalk.gray(" Updated .paradigm/migrate.yaml"));
855
- console.log("");
856
- }
857
- function printMigrationList(state, detection, options) {
858
- const appliedIds = new Set(state.applied.map((a) => a.id));
859
- const pendingIds = new Set(detection.pendingMigrations.map((m) => m.id));
860
- console.log(chalk.blue("\n All Migrations"));
861
- console.log(chalk.gray(" " + "\u2500".repeat(70)));
862
- console.log(
863
- chalk.gray(" Status ") + chalk.gray("ID".padEnd(34)) + chalk.gray("Version".padEnd(12)) + chalk.gray("Category")
864
- );
865
- console.log(chalk.gray(" " + "\u2500".repeat(70)));
866
- for (const m of migrations) {
867
- let status;
868
- if (appliedIds.has(m.id)) {
869
- status = chalk.green(" \u2713 ");
870
- } else if (pendingIds.has(m.id)) {
871
- status = m.auto ? chalk.yellow(" \u25CF ") : chalk.yellow(" \u25CB ");
872
- } else {
873
- status = chalk.gray(" - ");
874
- }
875
- const id = m.id.padEnd(34);
876
- const version = (m.introducedIn === "evergreen" ? "evergreen" : m.introducedIn).padEnd(12);
877
- const cat = m.category;
878
- console.log(status + chalk.white(id) + chalk.gray(version) + chalk.gray(cat));
879
- if (options.verbose) {
880
- console.log(chalk.gray(` ${m.description}`));
881
- }
882
- }
883
- console.log("");
884
- console.log(chalk.gray(` \u2713 = applied \u25CF = pending (auto) \u25CB = pending (manual) - = not needed`));
885
- console.log("");
886
- }
887
- export {
888
- migrateCommand
889
- };