agents-inc 0.152.1 → 0.154.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 (442) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +31 -35
  3. package/dist/{chunk-FVDKAVOL.js → chunk-2IMYK4WN.js} +18 -51
  4. package/dist/chunk-2IMYK4WN.js.map +1 -0
  5. package/dist/{chunk-PMM2MYMA.js → chunk-4VCWL2IG.js} +649 -357
  6. package/dist/chunk-4VCWL2IG.js.map +1 -0
  7. package/dist/{chunk-PZIZNMHK.js → chunk-5MFJ24VM.js} +237 -150
  8. package/dist/chunk-5MFJ24VM.js.map +1 -0
  9. package/dist/{chunk-KXYVJGJP.js → chunk-6CNRMCFM.js} +3 -2
  10. package/dist/{chunk-KXYVJGJP.js.map → chunk-6CNRMCFM.js.map} +1 -1
  11. package/dist/chunk-7VZV4O6B.js +40 -0
  12. package/dist/chunk-7VZV4O6B.js.map +1 -0
  13. package/dist/{chunk-SX5H6TSC.js → chunk-AKQ5QISO.js} +11 -8
  14. package/dist/chunk-AKQ5QISO.js.map +1 -0
  15. package/dist/{chunk-BNSRA6HL.js → chunk-AURY6RT6.js} +39 -176
  16. package/dist/chunk-AURY6RT6.js.map +1 -0
  17. package/dist/{chunk-LZ52XEPR.js → chunk-B66SC72V.js} +7 -6
  18. package/dist/chunk-B66SC72V.js.map +1 -0
  19. package/dist/{chunk-LASI35KT.js → chunk-BZ4CZBOM.js} +14 -28
  20. package/dist/chunk-BZ4CZBOM.js.map +1 -0
  21. package/dist/chunk-CBF4ZYV3.js +18540 -0
  22. package/dist/chunk-CBF4ZYV3.js.map +1 -0
  23. package/dist/{chunk-5GUOIJSG.js → chunk-CHNA5RVS.js} +3 -15
  24. package/dist/chunk-CHNA5RVS.js.map +1 -0
  25. package/dist/{chunk-LDP5ASDM.js → chunk-DRKSYJZ2.js} +2 -19
  26. package/dist/chunk-DRKSYJZ2.js.map +1 -0
  27. package/dist/chunk-FMYHWKGG.js +325 -0
  28. package/dist/chunk-FMYHWKGG.js.map +1 -0
  29. package/dist/{chunk-SKQWRUPX.js → chunk-GUDGCFSF.js} +59 -33
  30. package/dist/chunk-GUDGCFSF.js.map +1 -0
  31. package/dist/{chunk-WKTHWQKM.js → chunk-IPJOMAWC.js} +5070 -6305
  32. package/dist/chunk-IPJOMAWC.js.map +1 -0
  33. package/dist/chunk-IXEDSKMH.js +48 -0
  34. package/dist/chunk-IXEDSKMH.js.map +1 -0
  35. package/dist/{chunk-TUPYW2IQ.js → chunk-JC7DBPRD.js} +9 -12
  36. package/dist/chunk-JC7DBPRD.js.map +1 -0
  37. package/dist/{chunk-ZL7PFNHN.js → chunk-K3O3YQYG.js} +2 -2
  38. package/dist/{chunk-QRDTLVXG.js → chunk-LA3JPESW.js} +9 -22
  39. package/dist/chunk-LA3JPESW.js.map +1 -0
  40. package/dist/{chunk-MWG4VU64.js → chunk-MJFIO5SX.js} +50 -74
  41. package/dist/chunk-MJFIO5SX.js.map +1 -0
  42. package/dist/{chunk-L7SZXUBJ.js → chunk-NFH6SA62.js} +7 -6
  43. package/dist/{chunk-L7SZXUBJ.js.map → chunk-NFH6SA62.js.map} +1 -1
  44. package/dist/{chunk-GRVKW3CC.js → chunk-NKCY2ULI.js} +3 -2
  45. package/dist/{chunk-GRVKW3CC.js.map → chunk-NKCY2ULI.js.map} +1 -1
  46. package/dist/{chunk-TJJPWUMA.js → chunk-NSJ2S7R5.js} +3 -2
  47. package/dist/{chunk-TJJPWUMA.js.map → chunk-NSJ2S7R5.js.map} +1 -1
  48. package/dist/{chunk-Q2KG7UV3.js → chunk-OJJLYHM3.js} +2 -1
  49. package/dist/{chunk-Q2KG7UV3.js.map → chunk-OJJLYHM3.js.map} +1 -1
  50. package/dist/{chunk-MJ2KHG24.js → chunk-ONWEOS77.js} +6 -6
  51. package/dist/{chunk-MJ2KHG24.js.map → chunk-ONWEOS77.js.map} +1 -1
  52. package/dist/{chunk-NR3OZGL4.js → chunk-OZXAJNLA.js} +2 -1
  53. package/dist/{chunk-NR3OZGL4.js.map → chunk-OZXAJNLA.js.map} +1 -1
  54. package/dist/{chunk-QZZJFYUQ.js → chunk-PRJD5MMQ.js} +3 -3
  55. package/dist/chunk-PRJD5MMQ.js.map +1 -0
  56. package/dist/{chunk-MM7CTTAV.js → chunk-Q5FLW4JG.js} +2 -2
  57. package/dist/{chunk-MM7CTTAV.js.map → chunk-Q5FLW4JG.js.map} +1 -1
  58. package/dist/{chunk-5UWKOOIS.js → chunk-QQTYMW7N.js} +131 -209
  59. package/dist/chunk-QQTYMW7N.js.map +1 -0
  60. package/dist/{chunk-MVR3SYMN.js → chunk-QUDQTO3O.js} +4 -3
  61. package/dist/{chunk-MVR3SYMN.js.map → chunk-QUDQTO3O.js.map} +1 -1
  62. package/dist/{chunk-76ADG7LQ.js → chunk-R54KIGN2.js} +8 -22
  63. package/dist/chunk-R54KIGN2.js.map +1 -0
  64. package/dist/{chunk-XHUODHZ4.js → chunk-R7JV22QK.js} +22 -49
  65. package/dist/chunk-R7JV22QK.js.map +1 -0
  66. package/dist/{chunk-E5X6RJ4E.js → chunk-TUQF577Z.js} +56 -53
  67. package/dist/chunk-TUQF577Z.js.map +1 -0
  68. package/dist/{chunk-IHUY4M22.js → chunk-UW44KSYL.js} +4 -4
  69. package/dist/{chunk-DTSG5XZB.js → chunk-V3ENMW7G.js} +3 -3
  70. package/dist/chunk-VZRO7RYT.js +3694 -0
  71. package/dist/chunk-VZRO7RYT.js.map +1 -0
  72. package/dist/{chunk-MQ7FLIYS.js → chunk-WRRP47PY.js} +3 -2
  73. package/dist/{chunk-MQ7FLIYS.js.map → chunk-WRRP47PY.js.map} +1 -1
  74. package/dist/{chunk-RNJWAKMO.js → chunk-XGMOXMS4.js} +9 -8
  75. package/dist/chunk-XGMOXMS4.js.map +1 -0
  76. package/dist/{chunk-STMHDOZD.js → chunk-XMEIVWAS.js} +12 -9
  77. package/dist/chunk-XMEIVWAS.js.map +1 -0
  78. package/dist/{chunk-IUQBOCSU.js → chunk-ZBPEFQ4G.js} +2 -1
  79. package/dist/{chunk-IUQBOCSU.js.map → chunk-ZBPEFQ4G.js.map} +1 -1
  80. package/dist/chunk-ZU6DAR4S.js +223 -0
  81. package/dist/chunk-ZU6DAR4S.js.map +1 -0
  82. package/dist/commands/build/marketplace.js +115 -35
  83. package/dist/commands/build/marketplace.js.map +1 -1
  84. package/dist/commands/build/plugins.js +9 -10
  85. package/dist/commands/build/plugins.js.map +1 -1
  86. package/dist/commands/compile.js +135 -70
  87. package/dist/commands/compile.js.map +1 -1
  88. package/dist/commands/doctor.js +793 -64
  89. package/dist/commands/doctor.js.map +1 -1
  90. package/dist/commands/edit.js +231 -236
  91. package/dist/commands/edit.js.map +1 -1
  92. package/dist/commands/eject.js +24 -39
  93. package/dist/commands/eject.js.map +1 -1
  94. package/dist/commands/init.js +41 -46
  95. package/dist/commands/list.js +10 -12
  96. package/dist/commands/list.js.map +1 -1
  97. package/dist/commands/search.js +35 -88
  98. package/dist/commands/search.js.map +1 -1
  99. package/dist/commands/uninstall.js +212 -167
  100. package/dist/commands/uninstall.js.map +1 -1
  101. package/dist/commands/update.js +82 -332
  102. package/dist/commands/update.js.map +1 -1
  103. package/dist/components/common/confirm.js +1 -1
  104. package/dist/components/common/prompt-confirm.js +1 -1
  105. package/dist/components/common/select-list.js +2 -2
  106. package/dist/components/common/spinner.js +1 -1
  107. package/dist/components/wizard/category-grid.js +5 -6
  108. package/dist/components/wizard/checkbox-grid.js +5 -6
  109. package/dist/components/wizard/domain-selection.js +12 -13
  110. package/dist/components/wizard/run-wizard-session.js +30 -36
  111. package/dist/components/wizard/scroll-affordance.js +2 -2
  112. package/dist/components/wizard/skill-agent-summary.js +7 -7
  113. package/dist/components/wizard/source-grid.js +6 -11
  114. package/dist/components/wizard/stack-selection.js +9 -9
  115. package/dist/components/wizard/step-agents.js +12 -12
  116. package/dist/components/wizard/step-build.js +10 -11
  117. package/dist/components/wizard/step-confirm.js +11 -11
  118. package/dist/components/wizard/step-sources.js +11 -17
  119. package/dist/components/wizard/step-stack.js +10 -10
  120. package/dist/components/wizard/summary-panel.js +10 -10
  121. package/dist/components/wizard/toast.js +2 -2
  122. package/dist/components/wizard/wizard-layout.js +15 -16
  123. package/dist/components/wizard/wizard-tabs.js +6 -12
  124. package/dist/components/wizard/wizard.js +29 -35
  125. package/dist/config-exports.js +1 -1
  126. package/dist/copy-local-skills-WVHJFRPK.js +14 -0
  127. package/dist/hooks/init.js +49 -48
  128. package/dist/hooks/init.js.map +1 -1
  129. package/dist/index.js +3 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/load-agent-defs-5OT54J5M.js +15 -0
  132. package/dist/{loader-5JP4S7CJ.js → loader-JIZDTR4G.js} +7 -5
  133. package/dist/recompile-project-agents-VREEPBDV.js +20 -0
  134. package/dist/{source-loader-MZYCPL2S.js → source-loader-OE6EJFPU.js} +6 -6
  135. package/dist/src/agents/developer/ai-developer/identity.md +4 -4
  136. package/dist/src/agents/developer/ai-developer/playbook.md +1 -1
  137. package/dist/src/agents/developer/api-developer/identity.md +4 -4
  138. package/dist/src/agents/developer/api-developer/metadata.yaml +1 -1
  139. package/dist/src/agents/developer/cli-developer/identity.md +4 -4
  140. package/dist/src/agents/developer/web-developer/identity.md +2 -2
  141. package/dist/src/agents/developer/web-developer/metadata.yaml +1 -1
  142. package/dist/src/agents/meta/agent-summoner/identity.md +4 -5
  143. package/dist/src/agents/meta/agent-summoner/output.md +2 -2
  144. package/dist/src/agents/meta/agent-summoner/playbook.md +15 -16
  145. package/dist/src/agents/meta/codex-keeper/identity.md +4 -4
  146. package/dist/src/agents/meta/codex-keeper/playbook.md +1 -1
  147. package/dist/src/agents/meta/convention-keeper/identity.md +1 -1
  148. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
  149. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
  150. package/dist/src/agents/meta/skill-summoner/identity.md +2 -2
  151. package/{src/agents/planning/web-pm → dist/src/agents/planning/pm}/critical-reminders.md +10 -7
  152. package/dist/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
  153. package/dist/src/agents/planning/pm/identity.md +47 -0
  154. package/dist/src/agents/planning/pm/metadata.yaml +12 -0
  155. package/dist/src/agents/planning/{web-pm → pm}/output.md +7 -90
  156. package/dist/src/agents/planning/pm/playbook.md +185 -0
  157. package/dist/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
  158. package/dist/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
  159. package/dist/src/agents/researcher/ai-researcher/identity.md +86 -0
  160. package/dist/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
  161. package/dist/src/agents/researcher/ai-researcher/output.md +363 -0
  162. package/dist/src/agents/researcher/ai-researcher/playbook.md +545 -0
  163. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
  164. package/dist/src/agents/researcher/api-researcher/identity.md +7 -7
  165. package/dist/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
  166. package/dist/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
  167. package/dist/src/agents/researcher/cli-researcher/identity.md +87 -0
  168. package/dist/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
  169. package/dist/src/agents/researcher/cli-researcher/output.md +343 -0
  170. package/dist/src/agents/researcher/cli-researcher/playbook.md +370 -0
  171. package/dist/src/agents/researcher/web-researcher/identity.md +5 -6
  172. package/dist/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
  173. package/dist/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
  174. package/dist/src/agents/reviewer/reviewer/identity.md +41 -0
  175. package/dist/src/agents/reviewer/reviewer/metadata.yaml +12 -0
  176. package/dist/src/agents/reviewer/reviewer/output.md +202 -0
  177. package/dist/src/agents/reviewer/reviewer/playbook.md +141 -0
  178. package/dist/src/agents/tester/ai-tester/critical-reminders.md +48 -0
  179. package/dist/src/agents/tester/ai-tester/critical-requirements.md +49 -0
  180. package/dist/src/agents/tester/ai-tester/identity.md +62 -0
  181. package/dist/src/agents/tester/ai-tester/metadata.yaml +12 -0
  182. package/dist/src/agents/tester/ai-tester/output.md +375 -0
  183. package/dist/src/agents/tester/ai-tester/playbook.md +789 -0
  184. package/dist/src/agents/tester/api-tester/identity.md +3 -3
  185. package/dist/src/agents/tester/cli-tester/critical-reminders.md +3 -3
  186. package/dist/src/agents/tester/cli-tester/critical-requirements.md +2 -2
  187. package/dist/src/agents/tester/cli-tester/identity.md +3 -3
  188. package/dist/src/agents/tester/cli-tester/output.md +4 -4
  189. package/dist/src/agents/tester/cli-tester/playbook.md +3 -3
  190. package/dist/src/agents/tester/web-tester/identity.md +3 -3
  191. package/dist/stores/wizard-store.js +8 -6
  192. package/package.json +13 -2
  193. package/src/agents/developer/ai-developer/identity.md +4 -4
  194. package/src/agents/developer/ai-developer/playbook.md +1 -1
  195. package/src/agents/developer/api-developer/identity.md +4 -4
  196. package/src/agents/developer/api-developer/metadata.yaml +1 -1
  197. package/src/agents/developer/cli-developer/identity.md +4 -4
  198. package/src/agents/developer/web-developer/identity.md +2 -2
  199. package/src/agents/developer/web-developer/metadata.yaml +1 -1
  200. package/src/agents/meta/agent-summoner/identity.md +4 -5
  201. package/src/agents/meta/agent-summoner/output.md +2 -2
  202. package/src/agents/meta/agent-summoner/playbook.md +15 -16
  203. package/src/agents/meta/codex-keeper/identity.md +4 -4
  204. package/src/agents/meta/codex-keeper/playbook.md +1 -1
  205. package/src/agents/meta/convention-keeper/identity.md +1 -1
  206. package/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
  207. package/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
  208. package/src/agents/meta/skill-summoner/identity.md +2 -2
  209. package/{dist/src/agents/planning/web-pm → src/agents/planning/pm}/critical-reminders.md +10 -7
  210. package/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
  211. package/src/agents/planning/pm/identity.md +47 -0
  212. package/src/agents/planning/pm/metadata.yaml +12 -0
  213. package/src/agents/planning/{web-pm → pm}/output.md +7 -90
  214. package/src/agents/planning/pm/playbook.md +185 -0
  215. package/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
  216. package/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
  217. package/src/agents/researcher/ai-researcher/identity.md +86 -0
  218. package/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
  219. package/src/agents/researcher/ai-researcher/output.md +363 -0
  220. package/src/agents/researcher/ai-researcher/playbook.md +545 -0
  221. package/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
  222. package/src/agents/researcher/api-researcher/identity.md +7 -7
  223. package/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
  224. package/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
  225. package/src/agents/researcher/cli-researcher/identity.md +87 -0
  226. package/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
  227. package/src/agents/researcher/cli-researcher/output.md +343 -0
  228. package/src/agents/researcher/cli-researcher/playbook.md +370 -0
  229. package/src/agents/researcher/web-researcher/identity.md +5 -6
  230. package/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
  231. package/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
  232. package/src/agents/reviewer/reviewer/identity.md +41 -0
  233. package/src/agents/reviewer/reviewer/metadata.yaml +12 -0
  234. package/src/agents/reviewer/reviewer/output.md +202 -0
  235. package/src/agents/reviewer/reviewer/playbook.md +141 -0
  236. package/src/agents/tester/ai-tester/critical-reminders.md +48 -0
  237. package/src/agents/tester/ai-tester/critical-requirements.md +49 -0
  238. package/src/agents/tester/ai-tester/identity.md +62 -0
  239. package/src/agents/tester/ai-tester/metadata.yaml +12 -0
  240. package/src/agents/tester/ai-tester/output.md +375 -0
  241. package/src/agents/tester/ai-tester/playbook.md +789 -0
  242. package/src/agents/tester/api-tester/identity.md +3 -3
  243. package/src/agents/tester/cli-tester/critical-reminders.md +3 -3
  244. package/src/agents/tester/cli-tester/critical-requirements.md +2 -2
  245. package/src/agents/tester/cli-tester/identity.md +3 -3
  246. package/src/agents/tester/cli-tester/output.md +4 -4
  247. package/src/agents/tester/cli-tester/playbook.md +3 -3
  248. package/src/agents/tester/web-tester/identity.md +3 -3
  249. package/src/schemas/metadata.schema.json +31 -2
  250. package/src/schemas/plugin.schema.json +3 -0
  251. package/src/schemas/project-config.schema.json +61 -15
  252. package/src/schemas/project-source-config.schema.json +0 -47
  253. package/dist/chunk-5GUOIJSG.js.map +0 -1
  254. package/dist/chunk-5UWKOOIS.js.map +0 -1
  255. package/dist/chunk-76ADG7LQ.js.map +0 -1
  256. package/dist/chunk-BNSRA6HL.js.map +0 -1
  257. package/dist/chunk-E5X6RJ4E.js.map +0 -1
  258. package/dist/chunk-EEPELKOM.js +0 -5938
  259. package/dist/chunk-EEPELKOM.js.map +0 -1
  260. package/dist/chunk-F7T5AFFN.js +0 -20
  261. package/dist/chunk-F7T5AFFN.js.map +0 -1
  262. package/dist/chunk-FVDKAVOL.js.map +0 -1
  263. package/dist/chunk-KFB5CRXZ.js +0 -377
  264. package/dist/chunk-KFB5CRXZ.js.map +0 -1
  265. package/dist/chunk-KR65TPKC.js +0 -664
  266. package/dist/chunk-KR65TPKC.js.map +0 -1
  267. package/dist/chunk-LASI35KT.js.map +0 -1
  268. package/dist/chunk-LDP5ASDM.js.map +0 -1
  269. package/dist/chunk-LZ52XEPR.js.map +0 -1
  270. package/dist/chunk-M7HO7NBK.js +0 -88
  271. package/dist/chunk-M7HO7NBK.js.map +0 -1
  272. package/dist/chunk-MWG4VU64.js.map +0 -1
  273. package/dist/chunk-ODNDXQH2.js +0 -77
  274. package/dist/chunk-ODNDXQH2.js.map +0 -1
  275. package/dist/chunk-P44SXVH3.js +0 -80
  276. package/dist/chunk-P44SXVH3.js.map +0 -1
  277. package/dist/chunk-PMM2MYMA.js.map +0 -1
  278. package/dist/chunk-PZIZNMHK.js.map +0 -1
  279. package/dist/chunk-Q45ZU6HD.js +0 -37
  280. package/dist/chunk-Q45ZU6HD.js.map +0 -1
  281. package/dist/chunk-QRDTLVXG.js.map +0 -1
  282. package/dist/chunk-QZZJFYUQ.js.map +0 -1
  283. package/dist/chunk-R5NOI2LP.js +0 -170
  284. package/dist/chunk-R5NOI2LP.js.map +0 -1
  285. package/dist/chunk-RNJWAKMO.js.map +0 -1
  286. package/dist/chunk-SBHBBZKF.js +0 -284
  287. package/dist/chunk-SBHBBZKF.js.map +0 -1
  288. package/dist/chunk-SKQWRUPX.js.map +0 -1
  289. package/dist/chunk-STMHDOZD.js.map +0 -1
  290. package/dist/chunk-SX5H6TSC.js.map +0 -1
  291. package/dist/chunk-TUPYW2IQ.js.map +0 -1
  292. package/dist/chunk-UBEDZ4FD.js +0 -4198
  293. package/dist/chunk-UBEDZ4FD.js.map +0 -1
  294. package/dist/chunk-VY6MNOXL.js +0 -20
  295. package/dist/chunk-VY6MNOXL.js.map +0 -1
  296. package/dist/chunk-WBCPLH66.js +0 -42
  297. package/dist/chunk-WBCPLH66.js.map +0 -1
  298. package/dist/chunk-WKTHWQKM.js.map +0 -1
  299. package/dist/chunk-XHUODHZ4.js.map +0 -1
  300. package/dist/chunk-ZPPHXXAP.js +0 -252
  301. package/dist/chunk-ZPPHXXAP.js.map +0 -1
  302. package/dist/commands/import/skill.js +0 -344
  303. package/dist/commands/import/skill.js.map +0 -1
  304. package/dist/commands/new/agent.js +0 -300
  305. package/dist/commands/new/agent.js.map +0 -1
  306. package/dist/commands/new/marketplace.js +0 -310
  307. package/dist/commands/new/marketplace.js.map +0 -1
  308. package/dist/commands/new/skill.js +0 -26
  309. package/dist/commands/validate.js +0 -575
  310. package/dist/commands/validate.js.map +0 -1
  311. package/dist/components/wizard/search-modal.js +0 -13
  312. package/dist/components/wizard/selection-card.js +0 -9
  313. package/dist/components/wizard/step-settings.js +0 -18
  314. package/dist/copy-local-skills-6EMVN7RB.js +0 -14
  315. package/dist/load-agent-defs-BWOUVEAR.js +0 -15
  316. package/dist/load-agent-defs-BWOUVEAR.js.map +0 -1
  317. package/dist/loader-5JP4S7CJ.js.map +0 -1
  318. package/dist/recompile-project-agents-6DL45TDI.js +0 -19
  319. package/dist/recompile-project-agents-6DL45TDI.js.map +0 -1
  320. package/dist/source-loader-MZYCPL2S.js.map +0 -1
  321. package/dist/src/agents/developer/web-architecture/critical-reminders.md +0 -48
  322. package/dist/src/agents/developer/web-architecture/critical-requirements.md +0 -65
  323. package/dist/src/agents/developer/web-architecture/identity.md +0 -64
  324. package/dist/src/agents/developer/web-architecture/metadata.yaml +0 -12
  325. package/dist/src/agents/developer/web-architecture/output.md +0 -449
  326. package/dist/src/agents/developer/web-architecture/playbook.md +0 -481
  327. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
  328. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
  329. package/dist/src/agents/pattern/pattern-scout/identity.md +0 -25
  330. package/dist/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
  331. package/dist/src/agents/pattern/pattern-scout/output.md +0 -290
  332. package/dist/src/agents/pattern/pattern-scout/playbook.md +0 -1806
  333. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
  334. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
  335. package/dist/src/agents/pattern/web-pattern-critique/identity.md +0 -41
  336. package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
  337. package/dist/src/agents/pattern/web-pattern-critique/output.md +0 -314
  338. package/dist/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
  339. package/dist/src/agents/planning/api-pm/critical-reminders.md +0 -48
  340. package/dist/src/agents/planning/api-pm/critical-requirements.md +0 -41
  341. package/dist/src/agents/planning/api-pm/identity.md +0 -39
  342. package/dist/src/agents/planning/api-pm/metadata.yaml +0 -12
  343. package/dist/src/agents/planning/api-pm/output.md +0 -475
  344. package/dist/src/agents/planning/api-pm/playbook.md +0 -129
  345. package/dist/src/agents/planning/web-pm/identity.md +0 -26
  346. package/dist/src/agents/planning/web-pm/metadata.yaml +0 -12
  347. package/dist/src/agents/planning/web-pm/playbook.md +0 -318
  348. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
  349. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
  350. package/dist/src/agents/reviewer/ai-reviewer/identity.md +0 -51
  351. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
  352. package/dist/src/agents/reviewer/ai-reviewer/output.md +0 -395
  353. package/dist/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
  354. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
  355. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
  356. package/dist/src/agents/reviewer/api-reviewer/identity.md +0 -51
  357. package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
  358. package/dist/src/agents/reviewer/api-reviewer/output.md +0 -343
  359. package/dist/src/agents/reviewer/api-reviewer/playbook.md +0 -288
  360. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
  361. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
  362. package/dist/src/agents/reviewer/cli-reviewer/identity.md +0 -44
  363. package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
  364. package/dist/src/agents/reviewer/cli-reviewer/output.md +0 -414
  365. package/dist/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
  366. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
  367. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
  368. package/dist/src/agents/reviewer/infra-reviewer/identity.md +0 -53
  369. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
  370. package/dist/src/agents/reviewer/infra-reviewer/output.md +0 -364
  371. package/dist/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
  372. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
  373. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
  374. package/dist/src/agents/reviewer/web-reviewer/identity.md +0 -40
  375. package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
  376. package/dist/src/agents/reviewer/web-reviewer/output.md +0 -333
  377. package/dist/src/agents/reviewer/web-reviewer/playbook.md +0 -156
  378. package/src/agents/developer/web-architecture/critical-reminders.md +0 -48
  379. package/src/agents/developer/web-architecture/critical-requirements.md +0 -65
  380. package/src/agents/developer/web-architecture/identity.md +0 -64
  381. package/src/agents/developer/web-architecture/metadata.yaml +0 -12
  382. package/src/agents/developer/web-architecture/output.md +0 -449
  383. package/src/agents/developer/web-architecture/playbook.md +0 -481
  384. package/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
  385. package/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
  386. package/src/agents/pattern/pattern-scout/identity.md +0 -25
  387. package/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
  388. package/src/agents/pattern/pattern-scout/output.md +0 -290
  389. package/src/agents/pattern/pattern-scout/playbook.md +0 -1806
  390. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
  391. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
  392. package/src/agents/pattern/web-pattern-critique/identity.md +0 -41
  393. package/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
  394. package/src/agents/pattern/web-pattern-critique/output.md +0 -314
  395. package/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
  396. package/src/agents/planning/api-pm/critical-reminders.md +0 -48
  397. package/src/agents/planning/api-pm/critical-requirements.md +0 -41
  398. package/src/agents/planning/api-pm/identity.md +0 -39
  399. package/src/agents/planning/api-pm/metadata.yaml +0 -12
  400. package/src/agents/planning/api-pm/output.md +0 -475
  401. package/src/agents/planning/api-pm/playbook.md +0 -129
  402. package/src/agents/planning/web-pm/identity.md +0 -26
  403. package/src/agents/planning/web-pm/metadata.yaml +0 -12
  404. package/src/agents/planning/web-pm/playbook.md +0 -318
  405. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
  406. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
  407. package/src/agents/reviewer/ai-reviewer/identity.md +0 -51
  408. package/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
  409. package/src/agents/reviewer/ai-reviewer/output.md +0 -395
  410. package/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
  411. package/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
  412. package/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
  413. package/src/agents/reviewer/api-reviewer/identity.md +0 -51
  414. package/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
  415. package/src/agents/reviewer/api-reviewer/output.md +0 -343
  416. package/src/agents/reviewer/api-reviewer/playbook.md +0 -288
  417. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
  418. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
  419. package/src/agents/reviewer/cli-reviewer/identity.md +0 -44
  420. package/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
  421. package/src/agents/reviewer/cli-reviewer/output.md +0 -414
  422. package/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
  423. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
  424. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
  425. package/src/agents/reviewer/infra-reviewer/identity.md +0 -53
  426. package/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
  427. package/src/agents/reviewer/infra-reviewer/output.md +0 -364
  428. package/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
  429. package/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
  430. package/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
  431. package/src/agents/reviewer/web-reviewer/identity.md +0 -40
  432. package/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
  433. package/src/agents/reviewer/web-reviewer/output.md +0 -333
  434. package/src/agents/reviewer/web-reviewer/playbook.md +0 -156
  435. /package/dist/{chunk-ZL7PFNHN.js.map → chunk-K3O3YQYG.js.map} +0 -0
  436. /package/dist/{chunk-IHUY4M22.js.map → chunk-UW44KSYL.js.map} +0 -0
  437. /package/dist/{chunk-DTSG5XZB.js.map → chunk-V3ENMW7G.js.map} +0 -0
  438. /package/dist/{commands/new/skill.js.map → copy-local-skills-WVHJFRPK.js.map} +0 -0
  439. /package/dist/{components/wizard/search-modal.js.map → load-agent-defs-5OT54J5M.js.map} +0 -0
  440. /package/dist/{components/wizard/selection-card.js.map → loader-JIZDTR4G.js.map} +0 -0
  441. /package/dist/{components/wizard/step-settings.js.map → recompile-project-agents-VREEPBDV.js.map} +0 -0
  442. /package/dist/{copy-local-skills-6EMVN7RB.js.map → source-loader-OE6EJFPU.js.map} +0 -0
@@ -1,36 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Confirm
4
- } from "../chunk-NR3OZGL4.js";
4
+ } from "../chunk-OZXAJNLA.js";
5
5
  import {
6
6
  promptConfirm
7
- } from "../chunk-Q2KG7UV3.js";
8
- import {
9
- INFO_MESSAGES,
10
- SUCCESS_MESSAGES,
11
- registeredProjectUpdateSkipped,
12
- registeredProjectsUpdateFailed,
13
- registeredProjectsUpdated
14
- } from "../chunk-ODNDXQH2.js";
15
- import "../chunk-STMHDOZD.js";
16
- import "../chunk-SBHBBZKF.js";
17
- import "../chunk-IHUY4M22.js";
7
+ } from "../chunk-OJJLYHM3.js";
8
+ import "../chunk-XMEIVWAS.js";
9
+ import "../chunk-ZU6DAR4S.js";
10
+ import "../chunk-UW44KSYL.js";
18
11
  import {
19
12
  loadAgentDefs
20
- } from "../chunk-QZZJFYUQ.js";
13
+ } from "../chunk-PRJD5MMQ.js";
21
14
  import {
22
15
  listAgentMdFiles
23
- } from "../chunk-E5X6RJ4E.js";
16
+ } from "../chunk-TUQF577Z.js";
24
17
  import "../chunk-JFLVEFFP.js";
25
18
  import {
26
19
  BaseCommand,
27
20
  EXIT_CODES
28
- } from "../chunk-KR65TPKC.js";
29
- import "../chunk-ZL7PFNHN.js";
21
+ } from "../chunk-FMYHWKGG.js";
22
+ import "../chunk-7VZV4O6B.js";
23
+ import "../chunk-K3O3YQYG.js";
30
24
  import {
31
25
  ConfigLoadError,
26
+ INFO_MESSAGES,
27
+ SUCCESS_MESSAGES,
28
+ UNINSTALL_PLAN,
32
29
  buildMarketplacePluginRef,
33
30
  claudePluginUninstallBestEffort,
31
+ compiledAgentsKept,
32
+ compiledAgentsRemoval,
34
33
  getProjectPluginsDir,
35
34
  isClaudeCLIAvailable,
36
35
  isHomeDirectory,
@@ -38,21 +37,26 @@ import {
38
37
  listPluginNames,
39
38
  loadProjectConfigFromDir,
40
39
  loadSkillsMatrixFromSource,
40
+ localSkillsRemoval,
41
41
  mutateGlobal,
42
42
  parseMarketplacePluginRef,
43
43
  propagateGlobalRemoval,
44
44
  readForkedFromMetadata,
45
+ registeredProjectUpdateSkipped,
46
+ registeredProjectsUpdateFailed,
47
+ registeredProjectsUpdated,
45
48
  resolveInstallPaths,
46
49
  toClaudePluginScope
47
- } from "../chunk-EEPELKOM.js";
50
+ } from "../chunk-CBF4ZYV3.js";
48
51
  import {
49
52
  directoryExists,
50
53
  fileExists,
51
54
  getErrorMessage,
52
55
  listDirectories,
53
- remove
54
- } from "../chunk-PMM2MYMA.js";
55
- import "../chunk-WKTHWQKM.js";
56
+ remove,
57
+ removeDirIfEmpty
58
+ } from "../chunk-4VCWL2IG.js";
59
+ import "../chunk-IPJOMAWC.js";
56
60
  import "../chunk-VASLW636.js";
57
61
  import {
58
62
  CLAUDE_DIR,
@@ -61,45 +65,111 @@ import {
61
65
  DEFAULT_BRANDING,
62
66
  EJECT_SOURCE,
63
67
  STANDARD_FILES
64
- } from "../chunk-76ADG7LQ.js";
65
- import "../chunk-UBEDZ4FD.js";
68
+ } from "../chunk-R54KIGN2.js";
69
+ import "../chunk-VZRO7RYT.js";
66
70
 
67
71
  // src/cli/commands/uninstall.tsx
72
+ import "react";
68
73
  import { partition } from "remeda";
69
74
  import path from "path";
70
- import { readdir } from "fs/promises";
71
75
  import { Flags } from "@oclif/core";
72
76
  import { Box, Text, useApp } from "ink";
73
77
  import { jsx, jsxs } from "react/jsx-runtime";
74
78
  function buildRemovalPlan(target) {
75
- const sections = [];
76
- if (target.hasPlugins) {
77
- sections.push({ label: "Plugins:", items: [...target.cliPluginNames] });
78
- }
79
- if (target.hasLocalSkills || target.hasLocalAgents) {
80
- const items = [];
81
- if (target.hasLocalSkills) items.push(`${target.skillsDir}/ (matching sources)`);
82
- if (target.hasLocalAgents) items.push(`${target.agentsDir}/ (CLI-compiled)`);
83
- sections.push({ label: "CLI-managed files:", items });
84
- }
85
- if (target.hasClaudeSrcConfig || target.hasClaudeSrcConfigTypes) {
86
- const items = [];
87
- if (target.hasClaudeSrcConfig) {
88
- items.push(`${target.claudeSrcDir}/${STANDARD_FILES.CONFIG_TS}`);
89
- }
90
- if (target.hasClaudeSrcConfigTypes) {
91
- items.push(`${target.claudeSrcDir}/${STANDARD_FILES.CONFIG_TYPES_TS}`);
79
+ const agents = compiledAgentsEntry(target);
80
+ return {
81
+ entries: [
82
+ ...pluginsEntry(target),
83
+ ...localSkillsEntry(target),
84
+ ...agents,
85
+ ...configManifestEntry(target)
86
+ ],
87
+ kept: keptStatements(target, agents)
88
+ };
89
+ }
90
+ function hasAnythingToRemove(plan) {
91
+ return plan.entries.length > 0;
92
+ }
93
+ function pluginsEntry(target) {
94
+ if (!target.hasPlugins) return [];
95
+ return [{ kind: "plugins", pluginsDir: target.pluginsDir, names: [...target.cliPluginNames] }];
96
+ }
97
+ function localSkillsEntry(target) {
98
+ if (!target.hasLocalSkills) return [];
99
+ return [{ kind: "skills", skillsDir: target.skillsDir }];
100
+ }
101
+ function compiledAgentsEntry(target) {
102
+ if (!target.hasLocalAgents) return [];
103
+ if (target.configuredAgents.length === 0) return [];
104
+ return [{ kind: "agents", agentsDir: target.agentsDir, agentNames: target.configuredAgents }];
105
+ }
106
+ function configManifestEntry(target) {
107
+ const fileNames = [
108
+ ...target.hasClaudeSrcConfig ? [STANDARD_FILES.CONFIG_TS] : [],
109
+ ...target.hasClaudeSrcConfigTypes ? [STANDARD_FILES.CONFIG_TYPES_TS] : []
110
+ ];
111
+ if (fileNames.length === 0) return [];
112
+ return [{ kind: "config", claudeSrcDir: target.claudeSrcDir, fileNames }];
113
+ }
114
+ function keptStatements(target, agentRemovals) {
115
+ if (!target.hasLocalAgents) return [];
116
+ if (agentRemovals.length > 0) return [];
117
+ return [compiledAgentsKept(target.agentsDir)];
118
+ }
119
+ function planEntry(plan, kind) {
120
+ return plan.entries.find(
121
+ (entry) => entry.kind === kind
122
+ );
123
+ }
124
+ function describeEntry(entry) {
125
+ switch (entry.kind) {
126
+ case "plugins":
127
+ return { label: UNINSTALL_PLAN.PLUGINS_HEADING, items: entry.names };
128
+ case "skills":
129
+ return {
130
+ label: UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
131
+ items: [localSkillsRemoval(entry.skillsDir)]
132
+ };
133
+ case "agents":
134
+ return {
135
+ label: UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
136
+ items: [compiledAgentsRemoval(entry.agentsDir)]
137
+ };
138
+ case "config":
139
+ return {
140
+ label: UNINSTALL_PLAN.CONFIG_HEADING,
141
+ items: entry.fileNames.map((fileName) => `${entry.claudeSrcDir}/${fileName}`)
142
+ };
143
+ default: {
144
+ const _exhaustive = entry;
145
+ return _exhaustive;
92
146
  }
93
- sections.push({ label: "Config:", items });
94
147
  }
95
- return sections;
96
148
  }
97
- var UninstallConfirm = ({ target, onConfirm, onCancel }) => {
149
+ var PLAN_SECTION_ORDER = [
150
+ UNINSTALL_PLAN.PLUGINS_HEADING,
151
+ UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
152
+ UNINSTALL_PLAN.CONFIG_HEADING
153
+ ];
154
+ function planSections(entries) {
155
+ const described = entries.map(describeEntry);
156
+ return PLAN_SECTION_ORDER.flatMap(
157
+ (label) => sectionWithItems(label, itemsUnder(described, label))
158
+ );
159
+ }
160
+ function itemsUnder(described, label) {
161
+ return described.filter((section) => section.label === label).flatMap((section) => section.items);
162
+ }
163
+ function sectionWithItems(label, items) {
164
+ if (items.length === 0) return [];
165
+ return [{ label, items }];
166
+ }
167
+ var UninstallConfirm = ({ plan, onConfirm, onCancel }) => {
98
168
  const { exit } = useApp();
99
169
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
100
- /* @__PURE__ */ jsx(Text, { bold: true, children: "The following will be removed:" }),
170
+ /* @__PURE__ */ jsx(Text, { bold: true, children: UNINSTALL_PLAN.PREVIEW_HEADING }),
101
171
  /* @__PURE__ */ jsx(Text, { children: " " }),
102
- buildRemovalPlan(target).map((section) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
172
+ planSections(plan.entries).map((section) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
103
173
  /* @__PURE__ */ jsxs(Text, { color: CLI_COLORS.ERROR, children: [
104
174
  " ",
105
175
  section.label
@@ -109,6 +179,10 @@ var UninstallConfirm = ({ target, onConfirm, onCancel }) => {
109
179
  item
110
180
  ] }, item))
111
181
  ] }, section.label)),
182
+ plan.kept.map((statement) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
183
+ /* @__PURE__ */ jsx(Text, { children: " " }),
184
+ /* @__PURE__ */ jsx(Text, { dimColor: true, children: statement })
185
+ ] }, statement)),
112
186
  /* @__PURE__ */ jsx(Text, { children: " " }),
113
187
  /* @__PURE__ */ jsx(
114
188
  Confirm,
@@ -135,7 +209,6 @@ var Uninstall = class _Uninstall extends BaseCommand {
135
209
  "<%= config.bin %> <%= command.id %> --yes"
136
210
  ];
137
211
  static flags = {
138
- ...BaseCommand.baseFlags,
139
212
  yes: Flags.boolean({
140
213
  char: "y",
141
214
  description: "Skip confirmation prompt",
@@ -152,17 +225,18 @@ var Uninstall = class _Uninstall extends BaseCommand {
152
225
  `Could not read the project config \u2014 plugins and compiled agents it lists may be left behind: ${reason}`
153
226
  )
154
227
  );
155
- if (!hasAnythingToRemove(target)) {
228
+ const plan = buildRemovalPlan(target);
229
+ if (!hasAnythingToRemove(plan)) {
156
230
  this.reportNothingToUninstall();
157
231
  return;
158
232
  }
159
- const confirmed = flags.yes ? this.printRemovalPlan(target) : await this.confirmRemoval(target);
233
+ const confirmed = flags.yes ? this.printRemovalPlan(plan) : await this.confirmRemoval(plan);
160
234
  if (!confirmed) {
161
235
  this.log("");
162
236
  this.log("Uninstall cancelled");
163
237
  this.exit(EXIT_CODES.CANCELLED);
164
238
  }
165
- await this.executeUninstall(target, projectDir);
239
+ await this.executeUninstall(plan, target, projectDir);
166
240
  this.reportSuccess();
167
241
  }
168
242
  printHeader() {
@@ -177,45 +251,32 @@ var Uninstall = class _Uninstall extends BaseCommand {
177
251
  this.log("");
178
252
  this.log(INFO_MESSAGES.NO_CHANGES_MADE);
179
253
  }
180
- printRemovalPlan(target) {
181
- this.log("The following will be removed:");
254
+ printRemovalPlan(plan) {
255
+ this.log(UNINSTALL_PLAN.PREVIEW_HEADING);
182
256
  this.log("");
183
- for (const section of buildRemovalPlan(target)) {
257
+ for (const section of planSections(plan.entries)) {
184
258
  this.log(` ${section.label}`);
185
259
  for (const item of section.items) {
186
260
  this.log(` ${item}`);
187
261
  }
188
262
  }
263
+ for (const statement of plan.kept) {
264
+ this.log("");
265
+ this.log(statement);
266
+ }
189
267
  this.log("");
190
268
  return true;
191
269
  }
192
- async confirmRemoval(target) {
193
- const outcome = await promptConfirm(({ onConfirm, onCancel }) => /* @__PURE__ */ jsx(UninstallConfirm, { target, onConfirm, onCancel }));
270
+ async confirmRemoval(plan) {
271
+ const outcome = await promptConfirm(({ onConfirm, onCancel }) => /* @__PURE__ */ jsx(UninstallConfirm, { plan, onConfirm, onCancel }));
194
272
  return outcome === "confirmed";
195
273
  }
196
- async executeUninstall(target, projectDir) {
274
+ async executeUninstall(plan, target, projectDir) {
197
275
  const isGlobalUninstall = isHomeDirectory(projectDir);
198
276
  const propagation = isGlobalUninstall ? await this.prepareGlobalPropagation(target, projectDir) : null;
199
- if (target.hasPlugins) {
200
- this.log("Uninstalling plugins...");
201
- try {
202
- const pluginResult = await uninstallPlugins(
203
- target,
204
- projectDir,
205
- (name) => this.log(` Uninstalled plugin '${name}'`)
206
- );
207
- this.logSuccess(
208
- `Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 1 ? "plugin" : "plugins"}`
209
- );
210
- } catch (error) {
211
- this.log("Plugin uninstall failed");
212
- this.error(getErrorMessage(error), {
213
- exit: EXIT_CODES.ERROR
214
- });
215
- }
216
- }
277
+ await this.removePlannedPlugins(planEntry(plan, "plugins"), target.config, projectDir);
217
278
  try {
218
- await this.removeLocalFiles(target);
279
+ await this.removeLocalFiles(plan, target);
219
280
  } catch (error) {
220
281
  this.log("Failed to remove local files");
221
282
  this.error(getErrorMessage(error), {
@@ -288,12 +349,7 @@ var Uninstall = class _Uninstall extends BaseCommand {
288
349
  }
289
350
  if (report.propagated.updated.length === 0) return;
290
351
  this.logSuccess(registeredProjectsUpdated(report.propagated.updated.length));
291
- const { recompiledCount, failedCount, warnings } = report.recompile;
292
- for (const warning of warnings) {
293
- this.warn(warning);
294
- }
295
- const failureSuffix = failedCount > 0 ? ` (${failedCount} failed)` : "";
296
- this.log(`Recompiled agents in ${recompiledCount} registered projects${failureSuffix}`);
352
+ this.reportPropagatedRecompile(report);
297
353
  } catch (error) {
298
354
  this.warn(registeredProjectsUpdateFailed(getErrorMessage(error)));
299
355
  }
@@ -305,27 +361,14 @@ var Uninstall = class _Uninstall extends BaseCommand {
305
361
  this.logSuccess(SUCCESS_MESSAGES.UNINSTALL_COMPLETE);
306
362
  this.log("");
307
363
  }
308
- async removeLocalFiles(target) {
309
- const skillResult = await removeMatchingSkills(
310
- target,
311
- (dirName) => this.log(` Uninstalled skill '${dirName}'`),
312
- (dirName) => this.warn(`Skipping '${dirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`)
313
- );
314
- if (skillResult.removedCount > 0) {
315
- this.logSuccess(
316
- `Removed ${skillResult.removedCount} CLI-installed ${skillResult.removedCount === 1 ? "skill" : "skills"}`
317
- );
318
- }
319
- const agentResult = await removeMatchingAgents(
320
- target,
321
- (agentName) => this.log(` Uninstalled agent '${agentName}'`)
322
- );
323
- if (agentResult.removedCount > 0) {
324
- this.logSuccess(
325
- `Removed ${agentResult.removedCount} compiled ${agentResult.removedCount === 1 ? "agent" : "agents"}`
326
- );
327
- }
328
- const cleanup = await cleanupEmptyDirs(target);
364
+ /**
365
+ * Each step acts only when the plan carries its entry, so what the user was shown and
366
+ * what this run removes are the same list read twice.
367
+ */
368
+ async removeLocalFiles(plan, target) {
369
+ await this.removePlannedSkills(planEntry(plan, "skills"));
370
+ await this.removePlannedAgents(planEntry(plan, "agents"));
371
+ const cleanup = await cleanupEmptyDirs(target, planEntry(plan, "config"));
329
372
  if (cleanup.claudeSrcDirRemoved) {
330
373
  this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);
331
374
  } else if (cleanup.claudeSrcManifestRemoved) {
@@ -337,10 +380,50 @@ var Uninstall = class _Uninstall extends BaseCommand {
337
380
  this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);
338
381
  }
339
382
  }
383
+ async removePlannedPlugins(entry, config, projectDir) {
384
+ if (!entry) return;
385
+ this.log("Uninstalling plugins...");
386
+ try {
387
+ const pluginResult = await uninstallPlugins(
388
+ entry,
389
+ config,
390
+ projectDir,
391
+ (name) => this.log(` Uninstalled plugin '${name}'`)
392
+ );
393
+ this.logSuccess(
394
+ `Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 1 ? "plugin" : "plugins"}`
395
+ );
396
+ } catch (error) {
397
+ this.log("Plugin uninstall failed");
398
+ this.error(getErrorMessage(error), {
399
+ exit: EXIT_CODES.ERROR
400
+ });
401
+ }
402
+ }
403
+ async removePlannedSkills(entry) {
404
+ if (!entry) return;
405
+ const result = await removeMatchingSkills(
406
+ entry,
407
+ (dirName) => this.log(` Uninstalled skill '${dirName}'`),
408
+ (dirName) => this.warn(`Skipping '${dirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`)
409
+ );
410
+ if (result.removedCount === 0) return;
411
+ this.logSuccess(
412
+ `Removed ${result.removedCount} CLI-installed ${result.removedCount === 1 ? "skill" : "skills"}`
413
+ );
414
+ }
415
+ async removePlannedAgents(entry) {
416
+ if (!entry) return;
417
+ const result = await removeMatchingAgents(
418
+ entry,
419
+ (agentName) => this.log(` Uninstalled agent '${agentName}'`)
420
+ );
421
+ if (result.removedCount === 0) return;
422
+ this.logSuccess(
423
+ `Removed ${result.removedCount} compiled ${result.removedCount === 1 ? "agent" : "agents"}`
424
+ );
425
+ }
340
426
  };
341
- function hasAnythingToRemove(target) {
342
- return target.hasPlugins || target.hasLocalSkills || target.hasLocalAgents || target.hasClaudeSrcConfig || target.hasClaudeSrcConfigTypes;
343
- }
344
427
  function collectConfiguredAgents(config) {
345
428
  if (!config?.agents) return [];
346
429
  return config.agents.map((a) => a.name);
@@ -397,8 +480,8 @@ async function detectUninstallTarget(projectDir, onConfigLoadFailed) {
397
480
  }
398
481
  const activeConfig = config ? {
399
482
  ...config,
400
- skills: config.skills?.filter((s) => !s.excluded),
401
- agents: config.agents?.filter((a) => !a.excluded)
483
+ skills: config.skills.filter((s) => !s.excluded),
484
+ agents: config.agents.filter((a) => !a.excluded)
402
485
  } : null;
403
486
  const configuredAgents = collectConfiguredAgents(activeConfig);
404
487
  const cliInstalledKeys = getCliInstalledPluginKeys(activeConfig);
@@ -424,24 +507,15 @@ async function detectUninstallTarget(projectDir, onConfigLoadFailed) {
424
507
  function shouldRemoveSkill(forkedFrom) {
425
508
  return forkedFrom !== null;
426
509
  }
427
- async function removeMatchingSkills(target, onRemoved, onSkipped) {
428
- if (!target.hasLocalSkills) {
429
- return {
430
- removedCount: 0,
431
- skippedCount: 0,
432
- removedNames: [],
433
- skippedNames: [],
434
- dirCleaned: false
435
- };
436
- }
437
- const classified = await classifySkillDirs(target.skillsDir);
510
+ async function removeMatchingSkills(entry, onRemoved, onSkipped) {
511
+ const classified = await classifySkillDirs(entry.skillsDir);
438
512
  const removedNames = await removeClassifiedSkills(
439
513
  classified.toRemove,
440
- target.skillsDir,
514
+ entry.skillsDir,
441
515
  onRemoved
442
516
  );
443
517
  classified.toSkip.forEach((name) => onSkipped?.(name));
444
- const dirCleaned = await cleanupSkillsDir(target.skillsDir, classified.toSkip.length === 0);
518
+ const dirCleaned = await cleanupSkillsDir(entry.skillsDir, classified.toSkip.length === 0);
445
519
  return {
446
520
  removedCount: removedNames.length,
447
521
  skippedCount: classified.toSkip.length,
@@ -472,68 +546,47 @@ async function cleanupSkillsDir(dir, allRemoved) {
472
546
  if (!allRemoved) return false;
473
547
  return removeDirIfEmpty(dir);
474
548
  }
475
- async function removeDirIfEmpty(dir) {
476
- if (!await directoryExists(dir)) return false;
477
- if (!await isDirectoryEmpty(dir)) return false;
478
- await remove(dir);
479
- return true;
480
- }
481
- async function removeMatchingAgents(target, onRemoved) {
482
- if (!target.hasLocalAgents) {
483
- return { removedCount: 0, removedNames: [], dirCleaned: false };
484
- }
485
- if (target.configuredAgents.length === 0) {
486
- return { removedCount: 0, removedNames: [], dirCleaned: false };
487
- }
488
- const agentFiles = await listAgentFiles(target.agentsDir);
489
- const removedNames = agentFiles.map((agentFile) => agentFile.replace(/\.md$/, "")).filter((agentName) => target.configuredAgents.includes(agentName));
549
+ async function removeMatchingAgents(entry, onRemoved) {
550
+ const agentFiles = await listAgentFiles(entry.agentsDir);
551
+ const removedNames = agentFiles.map((agentFile) => agentFile.replace(/\.md$/, "")).filter((agentName) => entry.agentNames.includes(agentName));
490
552
  for (const agentName of removedNames) {
491
- await remove(path.join(target.agentsDir, `${agentName}.md`));
553
+ await remove(path.join(entry.agentsDir, `${agentName}.md`));
492
554
  onRemoved?.(agentName);
493
555
  }
494
- const dirCleaned = await removeDirIfEmpty(target.agentsDir);
556
+ const dirCleaned = await removeDirIfEmpty(entry.agentsDir);
495
557
  return {
496
558
  removedCount: removedNames.length,
497
559
  removedNames,
498
560
  dirCleaned
499
561
  };
500
562
  }
501
- async function uninstallPlugins(target, projectDir, onUninstalled) {
502
- if (!target.hasPlugins) {
503
- return { uninstalledNames: [], totalUninstalled: 0 };
504
- }
563
+ async function uninstallPlugins(entry, config, projectDir, onUninstalled) {
505
564
  const cliAvailable = await isClaudeCLIAvailable();
506
- for (const pluginName of target.cliPluginNames) {
565
+ for (const pluginName of entry.names) {
507
566
  if (cliAvailable) {
508
567
  const skillId = parseMarketplacePluginRef(pluginName);
509
- const skillConfig = target.config?.skills?.find((s) => s.id === skillId);
568
+ const skillConfig = config?.skills.find((s) => s.id === skillId);
510
569
  const primaryScope = toClaudePluginScope(skillConfig?.scope);
511
570
  await claudePluginUninstallBestEffort(pluginName, primaryScope, projectDir);
512
571
  }
513
- const pluginPath = path.join(target.pluginsDir, pluginName);
572
+ const pluginPath = path.join(entry.pluginsDir, pluginName);
514
573
  await remove(pluginPath);
515
574
  onUninstalled?.(pluginName);
516
575
  }
517
576
  return {
518
- uninstalledNames: target.cliPluginNames,
519
- totalUninstalled: target.cliPluginNames.length
577
+ uninstalledNames: entry.names,
578
+ totalUninstalled: entry.names.length
520
579
  };
521
580
  }
522
- async function removeConfigManifest(target) {
523
- let manifestRemoved = false;
524
- if (target.hasClaudeSrcConfig) {
525
- await remove(path.join(target.claudeSrcDir, STANDARD_FILES.CONFIG_TS));
526
- manifestRemoved = true;
527
- }
528
- if (target.hasClaudeSrcConfigTypes) {
529
- await remove(path.join(target.claudeSrcDir, STANDARD_FILES.CONFIG_TYPES_TS));
530
- manifestRemoved = true;
531
- }
532
- const dirRemoved = manifestRemoved && await removeDirIfEmpty(target.claudeSrcDir);
533
- return { manifestRemoved, dirRemoved };
581
+ async function removeConfigManifest(entry) {
582
+ if (!entry) return { manifestRemoved: false, dirRemoved: false };
583
+ await Promise.all(
584
+ entry.fileNames.map((fileName) => remove(path.join(entry.claudeSrcDir, fileName)))
585
+ );
586
+ return { manifestRemoved: true, dirRemoved: await removeDirIfEmpty(entry.claudeSrcDir) };
534
587
  }
535
- async function cleanupEmptyDirs(target) {
536
- const manifest = await removeConfigManifest(target);
588
+ async function cleanupEmptyDirs(target, manifestEntry) {
589
+ const manifest = await removeConfigManifest(manifestEntry);
537
590
  const claudeDirRemoved = target.hasClaudeDir && await removeDirIfEmpty(target.claudeDir);
538
591
  const claudeDirKept = !claudeDirRemoved && target.hasClaudeDir && await directoryExists(target.claudeDir);
539
592
  return {
@@ -543,14 +596,6 @@ async function cleanupEmptyDirs(target) {
543
596
  claudeDirKept
544
597
  };
545
598
  }
546
- async function isDirectoryEmpty(dirPath) {
547
- try {
548
- const allEntries = await readdir(dirPath);
549
- return allEntries.length === 0;
550
- } catch {
551
- return true;
552
- }
553
- }
554
599
  async function listAgentFiles(agentsDir) {
555
600
  try {
556
601
  return await listAgentMdFiles(agentsDir);