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,363 +1,113 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- Confirm
4
- } from "../chunk-NR3OZGL4.js";
5
- import {
6
- promptConfirm
7
- } from "../chunk-Q2KG7UV3.js";
8
- import {
9
- ERROR_MESSAGES,
10
- INFO_MESSAGES,
11
- STATUS_MESSAGES,
12
- SUCCESS_MESSAGES
13
- } from "../chunk-ODNDXQH2.js";
14
- import {
15
- loadSource
16
- } from "../chunk-STMHDOZD.js";
17
- import {
18
- collectScopedSkillDirs,
19
- compareSkillsWithSource,
20
- compileAgents,
21
- discoverInstalledSkills,
22
- findSkillMatch,
23
- recompilePropagatedProjectAgents
24
- } from "../chunk-SBHBBZKF.js";
25
- import "../chunk-IHUY4M22.js";
26
- import "../chunk-QZZJFYUQ.js";
27
- import "../chunk-E5X6RJ4E.js";
28
- import "../chunk-JFLVEFFP.js";
29
2
  import {
30
3
  BaseCommand,
31
4
  EXIT_CODES
32
- } from "../chunk-KR65TPKC.js";
33
- import "../chunk-ZL7PFNHN.js";
5
+ } from "../chunk-FMYHWKGG.js";
6
+ import "../chunk-7VZV4O6B.js";
7
+ import "../chunk-K3O3YQYG.js";
34
8
  import {
35
- injectForkedFromMetadata,
36
- loadProjectConfigFromDir,
37
- normalizeProjectPath
38
- } from "../chunk-EEPELKOM.js";
9
+ ERROR_MESSAGES,
10
+ INFO_MESSAGES,
11
+ claudePluginMarketplaceUpdate,
12
+ isClaudeCLIAvailable,
13
+ loadProjectConfig,
14
+ marketplaceRefreshFailed,
15
+ marketplacesRefreshFailed,
16
+ marketplacesRefreshed
17
+ } from "../chunk-CBF4ZYV3.js";
39
18
  import {
40
- copy,
41
19
  getErrorMessage
42
- } from "../chunk-PMM2MYMA.js";
43
- import "../chunk-WKTHWQKM.js";
20
+ } from "../chunk-4VCWL2IG.js";
21
+ import "../chunk-IPJOMAWC.js";
44
22
  import "../chunk-VASLW636.js";
45
23
  import {
46
- CLI_INVOKE_COMMAND,
47
- LOCAL_SKILLS_PATH,
48
- SOURCE_SRC_DIR
49
- } from "../chunk-76ADG7LQ.js";
50
- import "../chunk-UBEDZ4FD.js";
24
+ EJECT_SOURCE
25
+ } from "../chunk-R54KIGN2.js";
26
+ import "../chunk-VZRO7RYT.js";
51
27
 
52
- // src/cli/commands/update.tsx
53
- import { Flags, Args } from "@oclif/core";
54
- import { printTable } from "@oclif/table";
55
- import os from "os";
56
- import path from "path";
57
- import { jsx } from "react/jsx-runtime";
58
- var UpdateConfirm = ({ onConfirm, onCancel }) => {
59
- return /* @__PURE__ */ jsx(
60
- Confirm,
61
- {
62
- message: "Proceed with update?",
63
- onConfirm,
64
- onCancel,
65
- defaultValue: false
66
- }
67
- );
68
- };
28
+ // src/cli/commands/update.ts
29
+ import { unique } from "remeda";
30
+ function isEjected(skill) {
31
+ return skill.source === EJECT_SOURCE;
32
+ }
33
+ function activeSkills(skills) {
34
+ return skills.filter((skill) => !skill.excluded);
35
+ }
36
+ function configuredMarketplaces(skills) {
37
+ return unique(skills.filter((skill) => !isEjected(skill)).map((skill) => skill.source));
38
+ }
69
39
  var Update = class _Update extends BaseCommand {
70
- static summary = "Update local skills from source";
71
- static description = "Update local skills from the source repository. By default, checks all skills for updates. Specify a skill name to update only that skill.";
72
- static args = {
73
- skill: Args.string({
74
- description: "Specific skill to update (optional)",
75
- required: false
76
- })
77
- };
78
- static flags = {
79
- ...BaseCommand.baseFlags,
80
- yes: Flags.boolean({
81
- char: "y",
82
- description: "Skip confirmation prompt",
83
- default: false
84
- })
85
- };
86
- static examples = [
87
- "<%= config.bin %> <%= command.id %>",
88
- "<%= config.bin %> <%= command.id %> my-skill",
89
- "<%= config.bin %> <%= command.id %> --yes",
90
- "<%= config.bin %> <%= command.id %> --source /path/to/marketplace"
91
- ];
40
+ static summary = "Refresh the marketplaces this installation uses";
41
+ static description = "Runs Claude's own marketplace update for every marketplace this installation's config names. Ejected skills are copies you own and are never touched. Sub-agents reference plugin skills by pointer, so refreshed content lands without recompiling anything.";
42
+ static flags = {};
43
+ static examples = ["<%= config.bin %> <%= command.id %>"];
92
44
  async run() {
93
- const { args, flags } = await this.parse(_Update);
94
- const projectDir = process.cwd();
95
- try {
96
- const context = await this.loadContext(flags, projectDir);
97
- if (!context) return;
98
- const outdatedSkills = this.resolveTargetSkills(args.skill, context);
99
- if (!outdatedSkills) return;
100
- this.printUpdateTable(outdatedSkills);
101
- const confirmed = flags.yes || await this.confirmUpdate();
102
- if (!confirmed) return;
103
- this.log("");
104
- const updateResult = await this.executeUpdates(outdatedSkills, context);
105
- this.printUpdateResults(updateResult);
106
- const recompiledAgents = await this.recompileAfterUpdate(updateResult, context);
107
- await this.refreshRegisteredProjects(updateResult, context);
108
- this.printCompletionSummary(updateResult, recompiledAgents);
109
- } catch (error) {
110
- const message = getErrorMessage(error);
111
- this.error(`Update failed: ${message}`, { exit: EXIT_CODES.ERROR });
112
- }
113
- }
114
- async loadContext(flags, projectDir) {
115
- const homeDir = os.homedir();
116
- const { hasProject, hasGlobal } = await collectScopedSkillDirs(projectDir);
117
- if (!hasProject && !hasGlobal) {
118
- this.warn(ERROR_MESSAGES.NO_LOCAL_SKILLS);
119
- return null;
45
+ await this.parse(_Update);
46
+ const config = await this.loadInstalledConfig(process.cwd());
47
+ if (!config) {
48
+ this.warn(ERROR_MESSAGES.NO_INSTALLATION);
49
+ return;
120
50
  }
121
- this.log(STATUS_MESSAGES.LOADING_SKILLS);
122
- const { sourceResult } = await loadSource({
123
- sourceFlag: flags.source,
124
- projectDir
125
- });
126
- this.log(
127
- `Loaded from ${sourceResult.isLocal ? "local" : "remote"}: ${sourceResult.sourcePath}`
128
- );
129
- const comparison = await compareSkillsWithSource(
130
- projectDir,
131
- sourceResult.sourcePath,
132
- sourceResult.matrix
133
- );
134
- const skillBaseDir = new Map([
135
- ...comparison.globalResults.map((r) => [r.id, homeDir]),
136
- ...comparison.projectResults.map((r) => [r.id, projectDir])
137
- ]);
138
- return {
139
- projectDir,
140
- homeDir,
141
- sourceResult,
142
- allResults: comparison.merged,
143
- skillBaseDir
144
- };
145
- }
146
- resolveTargetSkills(skillArg, context) {
147
- if (skillArg) {
148
- const { match: foundSkill, similar } = findSkillMatch(skillArg, context.allResults);
149
- if (!foundSkill) {
150
- this.log("");
151
- this.log(`Error: Skill "${skillArg}" not found.`);
152
- this.log("");
153
- if (similar.length > 0) {
154
- this.log("Did you mean one of these?");
155
- for (const name of similar) {
156
- this.log(` - ${name}`);
157
- }
158
- this.log("");
159
- }
160
- this.log(`Run \`${CLI_INVOKE_COMMAND} search ${skillArg}\` to search available skills.`);
161
- this.log("");
162
- this.error(ERROR_MESSAGES.SKILL_NOT_FOUND, { exit: EXIT_CODES.ERROR });
163
- }
164
- if (foundSkill.status === "current") {
165
- this.log("");
166
- this.log(`Skill "${foundSkill.id}" is already up to date.`);
167
- this.log("");
168
- this.log(` Local hash: ${foundSkill.localHash}`);
169
- this.log(` Source hash: ${foundSkill.sourceHash}`);
170
- this.log("");
171
- return null;
172
- }
173
- if (foundSkill.status === "local-only") {
174
- this.log("");
175
- this.log(`Skill "${foundSkill.id}" is a local-only skill (not forked from source).`);
176
- this.log("Cannot update local-only skills.");
177
- this.log("");
178
- return null;
179
- }
180
- return [foundSkill];
181
- }
182
- const outdatedSkills = context.allResults.filter((r) => r.status === "outdated");
183
- if (outdatedSkills.length === 0) {
184
- this.log("");
185
- this.logSuccess(SUCCESS_MESSAGES.ALL_SKILLS_UP_TO_DATE);
186
- this.log("");
187
- return null;
188
- }
189
- return outdatedSkills;
190
- }
191
- printUpdateTable(outdatedSkills) {
192
- this.log("");
193
- this.log("The following skills will be updated:");
194
- this.log("");
195
- printTable({
196
- data: outdatedSkills.map((skill) => ({
197
- skill: skill.id,
198
- localHash: skill.localHash ?? "-",
199
- sourceHash: skill.sourceHash ?? "-"
200
- })),
201
- columns: [
202
- { key: "skill", name: "Skill" },
203
- { key: "localHash", name: "Local Hash" },
204
- { key: "sourceHash", name: "Source Hash" }
205
- ],
206
- headerOptions: { bold: true }
207
- });
208
- this.log("");
209
- this.log(`${outdatedSkills.length} skill(s) will be updated.`);
210
- this.log("");
211
- }
212
- async confirmUpdate() {
213
- const outcome = await promptConfirm(({ onConfirm, onCancel }) => /* @__PURE__ */ jsx(UpdateConfirm, { onConfirm, onCancel }));
214
- if (outcome === "cancelled") {
215
- this.log("Update cancelled");
216
- this.exit(EXIT_CODES.CANCELLED);
217
- }
218
- return true;
219
- }
220
- async executeUpdates(outdatedSkills, context) {
221
- return updateLocalSkills({
222
- skills: outdatedSkills,
223
- sourceResult: context.sourceResult,
224
- skillBaseDir: context.skillBaseDir,
225
- onProgress: (skillId) => this.log(`Updating ${skillId}...`)
226
- });
227
- }
228
- printUpdateResults(updateResult) {
229
- for (const item of updateResult.updated) {
230
- this.log(` Updated ${item.id}`);
231
- }
232
- for (const item of updateResult.failed) {
233
- this.log(` Failed to update ${item.id}: ${item.error}`);
234
- }
235
- }
236
- async recompileAfterUpdate(updateResult, context) {
237
- if (updateResult.updated.length === 0) return [];
238
- this.log("");
239
- this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);
240
- try {
241
- const { allSkills } = await discoverInstalledSkills(context.projectDir);
242
- const recompileResult = await compileAgents({
243
- projectDir: context.projectDir,
244
- sourcePath: context.sourceResult.sourcePath,
245
- skills: allSkills
246
- });
247
- const recompiledAgents = recompileResult.compiled;
248
- if (recompiledAgents.length > 0) {
249
- this.log("Agents recompiled");
250
- for (const agent of recompiledAgents) {
251
- this.log(` Recompiled: ${agent}`);
252
- }
253
- } else {
254
- this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);
255
- }
256
- if (recompileResult.warnings.length > 0) {
257
- for (const warning of recompileResult.warnings) {
258
- this.warn(warning);
259
- }
260
- }
261
- return recompiledAgents;
262
- } catch (error) {
263
- this.warn("Agent recompilation failed");
264
- this.warn(`Could not recompile agents: ${getErrorMessage(error)}`);
265
- return [];
51
+ const skills = activeSkills(config.skills);
52
+ this.reportEjectedSkills(skills);
53
+ const marketplaces = configuredMarketplaces(skills);
54
+ if (marketplaces.length === 0) {
55
+ this.log(INFO_MESSAGES.NO_PLUGIN_MARKETPLACES);
56
+ return;
266
57
  }
58
+ await this.requireClaudeCli();
59
+ await this.refreshMarketplaces(marketplaces);
267
60
  }
268
61
  /**
269
- * Recompiles the agents of every OTHER registered project.
270
- *
271
- * `update` replaces the skill directories under `~/.claude/skills/` in place.
272
- * Every registered project compiled its own `.claude/agents/*.md` from those
273
- * same directories, so the moment the new content lands those agents are
274
- * quoting guidance the source no longer contains — with nothing to signal it.
275
- * This is the content twin of the config fan-out the gate performs for a global
276
- * CONFIG change, and it reuses the same helper.
277
- *
278
- * It writes NO config pair — a skill's content changes nothing any config
279
- * declares — so it deliberately does not go through config-gate.
280
- *
281
- * The cwd is excluded: `recompileAfterUpdate` has already compiled it. Failure
282
- * is warned, never fatal — the skills were updated either way.
62
+ * The config this directory's installation runs on — the project's own, or the
63
+ * global one it inherits from. A config file that exists but cannot be loaded is
64
+ * a fault, not an absence, so it is reported rather than read as "not installed".
283
65
  */
284
- async refreshRegisteredProjects(updateResult, context) {
285
- if (updateResult.updated.length === 0) return;
66
+ async loadInstalledConfig(projectDir) {
286
67
  try {
287
- const registered = await this.registeredProjectsToRefresh(context);
288
- if (registered.length === 0) return;
289
- const { recompiledCount, failedCount, warnings } = await recompilePropagatedProjectAgents(registered);
290
- for (const warning of warnings) {
291
- this.warn(warning);
292
- }
293
- const failureSuffix = failedCount > 0 ? ` (${failedCount} failed)` : "";
294
- this.log(`Recompiled agents in ${recompiledCount} registered projects${failureSuffix}
295
- `);
68
+ const loaded = await loadProjectConfig(projectDir);
69
+ return loaded?.config ?? null;
296
70
  } catch (error) {
297
- this.warn(
298
- `Could not refresh registered projects \u2014 their compiled agents may still quote the pre-update content: ${getErrorMessage(error)}`
299
- );
71
+ this.error(getErrorMessage(error), { exit: EXIT_CODES.ERROR });
300
72
  }
301
73
  }
74
+ /** States the ownership rule once, and only where there is an ejected skill it applies to. */
75
+ reportEjectedSkills(skills) {
76
+ if (!skills.some(isEjected)) return;
77
+ this.log(INFO_MESSAGES.EJECTED_SKILLS_USER_OWNED);
78
+ }
302
79
  /**
303
- * The registered project paths this run still owes a recompile: everything in
304
- * the global config's `projects` registry except the directory the command ran
305
- * in. Compared through `normalizeProjectPath`, the same rule the registrations
306
- * were stored under, so a cwd reached via a symlink still matches its entry.
80
+ * Gated on there being a marketplace to refresh, so an eject-only installation
81
+ * never fails on a Claude CLI it had no reason to call.
307
82
  */
308
- async registeredProjectsToRefresh(context) {
309
- const loaded = await loadProjectConfigFromDir(context.homeDir);
310
- const projects = loaded?.config.projects ?? [];
311
- if (projects.length === 0) return [];
312
- const current = normalizeProjectPath(context.projectDir);
313
- return projects.filter((projectPath) => projectPath !== current);
83
+ async requireClaudeCli() {
84
+ if (await isClaudeCLIAvailable()) return;
85
+ this.error(ERROR_MESSAGES.CLAUDE_CLI_NOT_FOUND, { exit: EXIT_CODES.ERROR });
314
86
  }
315
- printCompletionSummary(updateResult, recompiledAgents) {
316
- this.log("");
317
- if (updateResult.failed.length === 0) {
318
- const agentMsg = recompiledAgents.length > 0 ? `, ${recompiledAgents.length} agent(s) recompiled` : "";
319
- this.logSuccess(
320
- `Update complete! ${updateResult.updated.length} skill(s) updated${agentMsg}.`
321
- );
322
- } else {
323
- this.warn(
324
- `Update finished with errors: ${updateResult.updated.length} updated, ${updateResult.failed.length} failed.`
325
- );
87
+ /**
88
+ * One `claude plugin marketplace update` per marketplace, in sequence: they write
89
+ * to the same registry, and interleaved progress lines would not say which
90
+ * marketplace each belongs to. A failure is collected rather than thrown, so one
91
+ * unreachable marketplace cannot hide the state of the others.
92
+ */
93
+ async refreshMarketplaces(marketplaces) {
94
+ const failed = [];
95
+ for (const marketplace of marketplaces) {
96
+ this.log(`Refreshing marketplace ${marketplace}...`);
97
+ try {
98
+ await claudePluginMarketplaceUpdate(marketplace);
99
+ this.log(` Updated marketplace ${marketplace}`);
100
+ } catch (error) {
101
+ failed.push(marketplace);
102
+ this.warn(marketplaceRefreshFailed(marketplace, getErrorMessage(error)));
103
+ }
326
104
  }
327
- this.log("");
328
- if (updateResult.failed.length > 0) {
329
- this.error("Some updates failed", { exit: EXIT_CODES.ERROR });
105
+ if (failed.length > 0) {
106
+ this.error(marketplacesRefreshFailed(failed), { exit: EXIT_CODES.ERROR });
330
107
  }
108
+ this.logSuccess(marketplacesRefreshed(marketplaces.length));
331
109
  }
332
110
  };
333
- async function updateLocalSkills(options) {
334
- const { skills, sourceResult, skillBaseDir, onProgress } = options;
335
- const updated = [];
336
- const failed = [];
337
- for (const skill of skills) {
338
- onProgress?.(skill.id);
339
- if (!skill.sourcePath || !skill.sourceHash) {
340
- failed.push({
341
- id: skill.id,
342
- newHash: null,
343
- error: "No source path available"
344
- });
345
- continue;
346
- }
347
- const baseDir = skillBaseDir.get(skill.id) ?? process.cwd();
348
- const localSkillsPath = path.join(baseDir, LOCAL_SKILLS_PATH);
349
- const destPath = path.join(localSkillsPath, skill.dirName);
350
- const srcPath = path.join(sourceResult.sourcePath, SOURCE_SRC_DIR, skill.sourcePath);
351
- try {
352
- await copy(srcPath, destPath);
353
- await injectForkedFromMetadata(destPath, skill.id, skill.sourceHash);
354
- updated.push({ id: skill.id, newHash: skill.sourceHash });
355
- } catch (error) {
356
- failed.push({ id: skill.id, newHash: null, error: getErrorMessage(error) });
357
- }
358
- }
359
- return { updated, failed };
360
- }
361
111
  export {
362
112
  Update as default
363
113
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/update.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags, Args } from \"@oclif/core\";\nimport { printTable } from \"@oclif/table\";\nimport os from \"os\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { copy } from \"../utils/fs.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport {\n loadSource,\n compareSkillsWithSource,\n compileAgents,\n collectScopedSkillDirs,\n findSkillMatch,\n discoverInstalledSkills,\n recompilePropagatedProjectAgents,\n} from \"../lib/operations/index.js\";\nimport { normalizeProjectPath } from \"../lib/config-gate/index.js\";\nimport { loadProjectConfigFromDir } from \"../lib/configuration/project-config.js\";\nimport { CLI_INVOKE_COMMAND, LOCAL_SKILLS_PATH, SOURCE_SRC_DIR } from \"../consts.js\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages.js\";\nimport { Confirm } from \"../components/common/confirm.js\";\nimport { promptConfirm } from \"../components/common/prompt-confirm.js\";\nimport { injectForkedFromMetadata, type SkillComparisonResult } from \"../lib/skills/index.js\";\nimport type { SourceLoadResult } from \"../lib/loading/source-loader.js\";\nimport type { AgentName, SkillId } from \"../types/index.js\";\n\ntype UpdateConfirmProps = {\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nconst UpdateConfirm: React.FC<UpdateConfirmProps> = ({ onConfirm, onCancel }) => {\n return (\n <Confirm\n message=\"Proceed with update?\"\n onConfirm={onConfirm}\n onCancel={onCancel}\n defaultValue={false}\n />\n );\n};\n\ntype UpdateContext = {\n projectDir: string;\n homeDir: string;\n sourceResult: SourceLoadResult;\n allResults: SkillComparisonResult[];\n skillBaseDir: Map<SkillId, string>;\n};\n\nexport default class Update extends BaseCommand {\n static summary = \"Update local skills from source\";\n\n static description =\n \"Update local skills from the source repository. By default, checks all skills for updates. Specify a skill name to update only that skill.\";\n\n static args = {\n skill: Args.string({\n description: \"Specific skill to update (optional)\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n yes: Flags.boolean({\n char: \"y\",\n description: \"Skip confirmation prompt\",\n default: false,\n }),\n };\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> my-skill\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --source /path/to/marketplace\",\n ];\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Update);\n const projectDir = process.cwd();\n\n try {\n const context = await this.loadContext(flags, projectDir);\n if (!context) return;\n\n const outdatedSkills = this.resolveTargetSkills(args.skill, context);\n if (!outdatedSkills) return;\n\n this.printUpdateTable(outdatedSkills);\n\n const confirmed = flags.yes || (await this.confirmUpdate());\n if (!confirmed) return;\n\n this.log(\"\");\n\n const updateResult = await this.executeUpdates(outdatedSkills, context);\n this.printUpdateResults(updateResult);\n\n const recompiledAgents = await this.recompileAfterUpdate(updateResult, context);\n await this.refreshRegisteredProjects(updateResult, context);\n\n this.printCompletionSummary(updateResult, recompiledAgents);\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`Update failed: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n\n private async loadContext(\n flags: { source?: string },\n projectDir: string,\n ): Promise<UpdateContext | null> {\n const homeDir = os.homedir();\n const { hasProject, hasGlobal } = await collectScopedSkillDirs(projectDir);\n\n if (!hasProject && !hasGlobal) {\n this.warn(ERROR_MESSAGES.NO_LOCAL_SKILLS);\n return null;\n }\n\n this.log(STATUS_MESSAGES.LOADING_SKILLS);\n\n const { sourceResult } = await loadSource({\n sourceFlag: flags.source,\n projectDir,\n });\n\n this.log(\n `Loaded from ${sourceResult.isLocal ? \"local\" : \"remote\"}: ${sourceResult.sourcePath}`,\n );\n\n const comparison = await compareSkillsWithSource(\n projectDir,\n sourceResult.sourcePath,\n sourceResult.matrix,\n );\n\n // Later entries overwrite earlier ones, so project wins on duplicate ids.\n const skillBaseDir = new Map<SkillId, string>([\n ...comparison.globalResults.map((r) => [r.id, homeDir] as const),\n ...comparison.projectResults.map((r) => [r.id, projectDir] as const),\n ]);\n\n return {\n projectDir,\n homeDir,\n sourceResult,\n allResults: comparison.merged,\n skillBaseDir,\n };\n }\n\n private resolveTargetSkills(\n skillArg: string | undefined,\n context: UpdateContext,\n ): SkillComparisonResult[] | null {\n if (skillArg) {\n const { match: foundSkill, similar } = findSkillMatch(skillArg, context.allResults);\n\n if (!foundSkill) {\n this.log(\"\");\n this.log(`Error: Skill \"${skillArg}\" not found.`);\n this.log(\"\");\n\n if (similar.length > 0) {\n this.log(\"Did you mean one of these?\");\n for (const name of similar) {\n this.log(` - ${name}`);\n }\n this.log(\"\");\n }\n\n this.log(`Run \\`${CLI_INVOKE_COMMAND} search ${skillArg}\\` to search available skills.`);\n this.log(\"\");\n this.error(ERROR_MESSAGES.SKILL_NOT_FOUND, { exit: EXIT_CODES.ERROR });\n }\n\n if (foundSkill.status === \"current\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is already up to date.`);\n this.log(\"\");\n this.log(` Local hash: ${foundSkill.localHash}`);\n this.log(` Source hash: ${foundSkill.sourceHash}`);\n this.log(\"\");\n return null;\n }\n\n if (foundSkill.status === \"local-only\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is a local-only skill (not forked from source).`);\n this.log(\"Cannot update local-only skills.\");\n this.log(\"\");\n return null;\n }\n\n return [foundSkill];\n }\n\n const outdatedSkills = context.allResults.filter((r) => r.status === \"outdated\");\n if (outdatedSkills.length === 0) {\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.ALL_SKILLS_UP_TO_DATE);\n this.log(\"\");\n return null;\n }\n\n return outdatedSkills;\n }\n\n private printUpdateTable(outdatedSkills: SkillComparisonResult[]): void {\n this.log(\"\");\n this.log(\"The following skills will be updated:\");\n this.log(\"\");\n\n printTable({\n data: outdatedSkills.map((skill) => ({\n skill: skill.id,\n localHash: skill.localHash ?? \"-\",\n sourceHash: skill.sourceHash ?? \"-\",\n })),\n columns: [\n { key: \"skill\", name: \"Skill\" },\n { key: \"localHash\", name: \"Local Hash\" },\n { key: \"sourceHash\", name: \"Source Hash\" },\n ],\n headerOptions: { bold: true },\n });\n\n this.log(\"\");\n this.log(`${outdatedSkills.length} skill(s) will be updated.`);\n this.log(\"\");\n }\n\n private async confirmUpdate(): Promise<boolean> {\n const outcome = await promptConfirm(({ onConfirm, onCancel }) => (\n <UpdateConfirm onConfirm={onConfirm} onCancel={onCancel} />\n ));\n\n if (outcome === \"cancelled\") {\n this.log(\"Update cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n return true;\n }\n\n private async executeUpdates(\n outdatedSkills: SkillComparisonResult[],\n context: UpdateContext,\n ): Promise<UpdateLocalSkillsResult> {\n return updateLocalSkills({\n skills: outdatedSkills,\n sourceResult: context.sourceResult,\n skillBaseDir: context.skillBaseDir,\n onProgress: (skillId) => this.log(`Updating ${skillId}...`),\n });\n }\n\n private printUpdateResults(updateResult: UpdateLocalSkillsResult): void {\n for (const item of updateResult.updated) {\n this.log(` Updated ${item.id}`);\n }\n for (const item of updateResult.failed) {\n this.log(` Failed to update ${item.id}: ${item.error}`);\n }\n }\n\n private async recompileAfterUpdate(\n updateResult: UpdateLocalSkillsResult,\n context: UpdateContext,\n ): Promise<AgentName[]> {\n if (updateResult.updated.length === 0) return [];\n\n this.log(\"\");\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n\n try {\n const { allSkills } = await discoverInstalledSkills(context.projectDir);\n const recompileResult = await compileAgents({\n projectDir: context.projectDir,\n sourcePath: context.sourceResult.sourcePath,\n skills: allSkills,\n });\n\n const recompiledAgents = recompileResult.compiled;\n\n if (recompiledAgents.length > 0) {\n this.log(\"Agents recompiled\");\n for (const agent of recompiledAgents) {\n this.log(` Recompiled: ${agent}`);\n }\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.warnings.length > 0) {\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n }\n\n return recompiledAgents;\n } catch (error) {\n this.warn(\"Agent recompilation failed\");\n this.warn(`Could not recompile agents: ${getErrorMessage(error)}`);\n return [];\n }\n }\n\n /**\n * Recompiles the agents of every OTHER registered project.\n *\n * `update` replaces the skill directories under `~/.claude/skills/` in place.\n * Every registered project compiled its own `.claude/agents/*.md` from those\n * same directories, so the moment the new content lands those agents are\n * quoting guidance the source no longer contains — with nothing to signal it.\n * This is the content twin of the config fan-out the gate performs for a global\n * CONFIG change, and it reuses the same helper.\n *\n * It writes NO config pair — a skill's content changes nothing any config\n * declares — so it deliberately does not go through config-gate.\n *\n * The cwd is excluded: `recompileAfterUpdate` has already compiled it. Failure\n * is warned, never fatal — the skills were updated either way.\n */\n private async refreshRegisteredProjects(\n updateResult: UpdateLocalSkillsResult,\n context: UpdateContext,\n ): Promise<void> {\n if (updateResult.updated.length === 0) return;\n\n try {\n const registered = await this.registeredProjectsToRefresh(context);\n if (registered.length === 0) return;\n\n const { recompiledCount, failedCount, warnings } =\n await recompilePropagatedProjectAgents(registered);\n\n for (const warning of warnings) {\n this.warn(warning);\n }\n\n const failureSuffix = failedCount > 0 ? ` (${failedCount} failed)` : \"\";\n this.log(`Recompiled agents in ${recompiledCount} registered projects${failureSuffix}\\n`);\n } catch (error) {\n this.warn(\n `Could not refresh registered projects — their compiled agents may still quote the pre-update content: ${getErrorMessage(error)}`,\n );\n }\n }\n\n /**\n * The registered project paths this run still owes a recompile: everything in\n * the global config's `projects` registry except the directory the command ran\n * in. Compared through `normalizeProjectPath`, the same rule the registrations\n * were stored under, so a cwd reached via a symlink still matches its entry.\n */\n private async registeredProjectsToRefresh(context: UpdateContext): Promise<string[]> {\n const loaded = await loadProjectConfigFromDir(context.homeDir);\n const projects = loaded?.config.projects ?? [];\n if (projects.length === 0) return [];\n\n const current = normalizeProjectPath(context.projectDir);\n return projects.filter((projectPath) => projectPath !== current);\n }\n\n private printCompletionSummary(\n updateResult: UpdateLocalSkillsResult,\n recompiledAgents: AgentName[],\n ): void {\n this.log(\"\");\n if (updateResult.failed.length === 0) {\n const agentMsg =\n recompiledAgents.length > 0 ? `, ${recompiledAgents.length} agent(s) recompiled` : \"\";\n this.logSuccess(\n `Update complete! ${updateResult.updated.length} skill(s) updated${agentMsg}.`,\n );\n } else {\n this.warn(\n `Update finished with errors: ${updateResult.updated.length} updated, ${updateResult.failed.length} failed.`,\n );\n }\n this.log(\"\");\n\n if (updateResult.failed.length > 0) {\n this.error(\"Some updates failed\", { exit: EXIT_CODES.ERROR });\n }\n }\n}\n\ntype SkillUpdateResult = {\n id: SkillId;\n newHash: string | null;\n error?: string;\n};\n\ntype UpdateLocalSkillsResult = {\n updated: SkillUpdateResult[];\n failed: SkillUpdateResult[];\n};\n\ntype UpdateLocalSkillsOptions = {\n skills: SkillComparisonResult[];\n sourceResult: SourceLoadResult;\n skillBaseDir: Map<SkillId, string>;\n /** Called before each skill update starts. Use for progress logging. */\n onProgress?: (skillId: string) => void;\n};\n\n/**\n * Updates local skills by copying from source and injecting metadata.\n *\n * For each outdated skill, copies the source version to the local skills\n * directory and injects forked-from metadata for change tracking.\n */\nasync function updateLocalSkills(\n options: UpdateLocalSkillsOptions,\n): Promise<UpdateLocalSkillsResult> {\n const { skills, sourceResult, skillBaseDir, onProgress } = options;\n const updated: SkillUpdateResult[] = [];\n const failed: SkillUpdateResult[] = [];\n\n for (const skill of skills) {\n onProgress?.(skill.id);\n if (!skill.sourcePath || !skill.sourceHash) {\n failed.push({\n id: skill.id,\n newHash: null,\n error: \"No source path available\",\n });\n continue;\n }\n\n const baseDir = skillBaseDir.get(skill.id) ?? process.cwd();\n const localSkillsPath = path.join(baseDir, LOCAL_SKILLS_PATH);\n const destPath = path.join(localSkillsPath, skill.dirName);\n const srcPath = path.join(sourceResult.sourcePath, SOURCE_SRC_DIR, skill.sourcePath);\n\n try {\n await copy(srcPath, destPath);\n await injectForkedFromMetadata(destPath, skill.id, skill.sourceHash);\n updated.push({ id: skill.id, newHash: skill.sourceHash });\n } catch (error) {\n failed.push({ id: skill.id, newHash: null, error: getErrorMessage(error) });\n }\n }\n\n return { updated, failed };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/update.ts"],"sourcesContent":["import { unique } from \"remeda\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { EJECT_SOURCE } from \"../consts.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { loadProjectConfig } from \"../lib/configuration/index.js\";\nimport { claudePluginMarketplaceUpdate, isClaudeCLIAvailable } from \"../utils/exec.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport {\n ERROR_MESSAGES,\n INFO_MESSAGES,\n marketplaceRefreshFailed,\n marketplacesRefreshFailed,\n marketplacesRefreshed,\n} from \"../utils/messages.js\";\nimport type { ProjectConfig, SkillConfig } from \"../types/index.js\";\n\n/** A copy the user owns rather than a plugin the marketplace serves. */\nfunction isEjected(skill: SkillConfig): boolean {\n return skill.source === EJECT_SOURCE;\n}\n\n/** Entries the installation actually has — an excluded entry is a tombstone, not an install. */\nfunction activeSkills(skills: SkillConfig[]): SkillConfig[] {\n return skills.filter((skill) => !skill.excluded);\n}\n\n/** The marketplaces this installation actually uses, deduplicated, in config order. */\nfunction configuredMarketplaces(skills: SkillConfig[]): string[] {\n return unique(skills.filter((skill) => !isEjected(skill)).map((skill) => skill.source));\n}\n\nexport default class Update extends BaseCommand {\n static summary = \"Refresh the marketplaces this installation uses\";\n\n static description =\n \"Runs Claude's own marketplace update for every marketplace this installation's config names. Ejected skills are copies you own and are never touched. Sub-agents reference plugin skills by pointer, so refreshed content lands without recompiling anything.\";\n\n static flags = {};\n\n static examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n async run(): Promise<void> {\n await this.parse(Update);\n\n const config = await this.loadInstalledConfig(process.cwd());\n if (!config) {\n this.warn(ERROR_MESSAGES.NO_INSTALLATION);\n return;\n }\n\n const skills = activeSkills(config.skills);\n this.reportEjectedSkills(skills);\n\n const marketplaces = configuredMarketplaces(skills);\n if (marketplaces.length === 0) {\n this.log(INFO_MESSAGES.NO_PLUGIN_MARKETPLACES);\n return;\n }\n\n await this.requireClaudeCli();\n await this.refreshMarketplaces(marketplaces);\n }\n\n /**\n * The config this directory's installation runs on — the project's own, or the\n * global one it inherits from. A config file that exists but cannot be loaded is\n * a fault, not an absence, so it is reported rather than read as \"not installed\".\n */\n private async loadInstalledConfig(projectDir: string): Promise<ProjectConfig | null> {\n try {\n const loaded = await loadProjectConfig(projectDir);\n return loaded?.config ?? null;\n } catch (error) {\n this.error(getErrorMessage(error), { exit: EXIT_CODES.ERROR });\n }\n }\n\n /** States the ownership rule once, and only where there is an ejected skill it applies to. */\n private reportEjectedSkills(skills: SkillConfig[]): void {\n if (!skills.some(isEjected)) return;\n this.log(INFO_MESSAGES.EJECTED_SKILLS_USER_OWNED);\n }\n\n /**\n * Gated on there being a marketplace to refresh, so an eject-only installation\n * never fails on a Claude CLI it had no reason to call.\n */\n private async requireClaudeCli(): Promise<void> {\n if (await isClaudeCLIAvailable()) return;\n this.error(ERROR_MESSAGES.CLAUDE_CLI_NOT_FOUND, { exit: EXIT_CODES.ERROR });\n }\n\n /**\n * One `claude plugin marketplace update` per marketplace, in sequence: they write\n * to the same registry, and interleaved progress lines would not say which\n * marketplace each belongs to. A failure is collected rather than thrown, so one\n * unreachable marketplace cannot hide the state of the others.\n */\n private async refreshMarketplaces(marketplaces: string[]): Promise<void> {\n const failed: string[] = [];\n\n for (const marketplace of marketplaces) {\n this.log(`Refreshing marketplace ${marketplace}...`);\n try {\n await claudePluginMarketplaceUpdate(marketplace);\n this.log(` Updated marketplace ${marketplace}`);\n } catch (error) {\n failed.push(marketplace);\n this.warn(marketplaceRefreshFailed(marketplace, getErrorMessage(error)));\n }\n }\n\n if (failed.length > 0) {\n this.error(marketplacesRefreshFailed(failed), { exit: EXIT_CODES.ERROR });\n }\n\n this.logSuccess(marketplacesRefreshed(marketplaces.length));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,cAAc;AAkBvB,SAAS,UAAU,OAA6B;AAC9C,SAAO,MAAM,WAAW;AAC1B;AAGA,SAAS,aAAa,QAAsC;AAC1D,SAAO,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,QAAQ;AACjD;AAGA,SAAS,uBAAuB,QAAiC;AAC/D,SAAO,OAAO,OAAO,OAAO,CAAC,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AACxF;AAEA,IAAqB,SAArB,MAAqB,gBAAe,YAAY;AAAA,EAC9C,OAAO,UAAU;AAAA,EAEjB,OAAO,cACL;AAAA,EAEF,OAAO,QAAQ,CAAC;AAAA,EAEhB,OAAO,WAAW,CAAC,qCAAqC;AAAA,EAExD,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,OAAM;AAEvB,UAAM,SAAS,MAAM,KAAK,oBAAoB,QAAQ,IAAI,CAAC;AAC3D,QAAI,CAAC,QAAQ;AACX,WAAK,KAAK,eAAe,eAAe;AACxC;AAAA,IACF;AAEA,UAAM,SAAS,aAAa,OAAO,MAAM;AACzC,SAAK,oBAAoB,MAAM;AAE/B,UAAM,eAAe,uBAAuB,MAAM;AAClD,QAAI,aAAa,WAAW,GAAG;AAC7B,WAAK,IAAI,cAAc,sBAAsB;AAC7C;AAAA,IACF;AAEA,UAAM,KAAK,iBAAiB;AAC5B,UAAM,KAAK,oBAAoB,YAAY;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,oBAAoB,YAAmD;AACnF,QAAI;AACF,YAAM,SAAS,MAAM,kBAAkB,UAAU;AACjD,aAAO,QAAQ,UAAU;AAAA,IAC3B,SAAS,OAAO;AACd,WAAK,MAAM,gBAAgB,KAAK,GAAG,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,IAC/D;AAAA,EACF;AAAA;AAAA,EAGQ,oBAAoB,QAA6B;AACvD,QAAI,CAAC,OAAO,KAAK,SAAS,EAAG;AAC7B,SAAK,IAAI,cAAc,yBAAyB;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,mBAAkC;AAC9C,QAAI,MAAM,qBAAqB,EAAG;AAClC,SAAK,MAAM,eAAe,sBAAsB,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAc,oBAAoB,cAAuC;AACvE,UAAM,SAAmB,CAAC;AAE1B,eAAW,eAAe,cAAc;AACtC,WAAK,IAAI,0BAA0B,WAAW,KAAK;AACnD,UAAI;AACF,cAAM,8BAA8B,WAAW;AAC/C,aAAK,IAAI,yBAAyB,WAAW,EAAE;AAAA,MACjD,SAAS,OAAO;AACd,eAAO,KAAK,WAAW;AACvB,aAAK,KAAK,yBAAyB,aAAa,gBAAgB,KAAK,CAAC,CAAC;AAAA,MACzE;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,GAAG;AACrB,WAAK,MAAM,0BAA0B,MAAM,GAAG,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,IAC1E;AAEA,SAAK,WAAW,sBAAsB,aAAa,MAAM,CAAC;AAAA,EAC5D;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Confirm
4
- } from "../../chunk-NR3OZGL4.js";
4
+ } from "../../chunk-OZXAJNLA.js";
5
5
  export {
6
6
  Confirm
7
7
  };
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  promptConfirm,
4
4
  promptValue
5
- } from "../../chunk-Q2KG7UV3.js";
5
+ } from "../../chunk-OJJLYHM3.js";
6
6
  import "../../chunk-JFLVEFFP.js";
7
7
  export {
8
8
  promptConfirm,
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SelectList
4
- } from "../../chunk-RNJWAKMO.js";
4
+ } from "../../chunk-XGMOXMS4.js";
5
5
  import "../../chunk-XVAQG2CV.js";
6
- import "../../chunk-76ADG7LQ.js";
6
+ import "../../chunk-R54KIGN2.js";
7
7
  export {
8
8
  SelectList
9
9
  };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Spinner
4
- } from "../../chunk-IUQBOCSU.js";
4
+ } from "../../chunk-ZBPEFQ4G.js";
5
5
  export {
6
6
  Spinner
7
7
  };
@@ -1,14 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CategoryGrid
4
- } from "../../chunk-QRDTLVXG.js";
4
+ } from "../../chunk-LA3JPESW.js";
5
5
  import "../../chunk-J27W6TXS.js";
6
- import "../../chunk-MM7CTTAV.js";
7
- import "../../chunk-LDP5ASDM.js";
8
- import "../../chunk-WBCPLH66.js";
9
- import "../../chunk-WKTHWQKM.js";
6
+ import "../../chunk-DRKSYJZ2.js";
7
+ import "../../chunk-Q5FLW4JG.js";
8
+ import "../../chunk-IPJOMAWC.js";
10
9
  import "../../chunk-VASLW636.js";
11
- import "../../chunk-76ADG7LQ.js";
10
+ import "../../chunk-R54KIGN2.js";
12
11
  export {
13
12
  CategoryGrid
14
13
  };
@@ -1,12 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CheckboxGrid
4
- } from "../../chunk-MJ2KHG24.js";
5
- import "../../chunk-DTSG5XZB.js";
6
- import "../../chunk-MM7CTTAV.js";
7
- import "../../chunk-LDP5ASDM.js";
8
- import "../../chunk-WBCPLH66.js";
9
- import "../../chunk-76ADG7LQ.js";
4
+ } from "../../chunk-ONWEOS77.js";
5
+ import "../../chunk-V3ENMW7G.js";
6
+ import "../../chunk-DRKSYJZ2.js";
7
+ import "../../chunk-Q5FLW4JG.js";
8
+ import "../../chunk-R54KIGN2.js";
10
9
  export {
11
10
  CheckboxGrid
12
11
  };
@@ -1,20 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DomainSelection
4
- } from "../../chunk-SX5H6TSC.js";
5
- import "../../chunk-5GUOIJSG.js";
6
- import "../../chunk-MJ2KHG24.js";
7
- import "../../chunk-DTSG5XZB.js";
8
- import "../../chunk-MM7CTTAV.js";
9
- import "../../chunk-LDP5ASDM.js";
10
- import "../../chunk-WBCPLH66.js";
11
- import "../../chunk-5UWKOOIS.js";
12
- import "../../chunk-EEPELKOM.js";
13
- import "../../chunk-PMM2MYMA.js";
14
- import "../../chunk-WKTHWQKM.js";
4
+ } from "../../chunk-AKQ5QISO.js";
5
+ import "../../chunk-CHNA5RVS.js";
6
+ import "../../chunk-ONWEOS77.js";
7
+ import "../../chunk-V3ENMW7G.js";
8
+ import "../../chunk-DRKSYJZ2.js";
9
+ import "../../chunk-Q5FLW4JG.js";
10
+ import "../../chunk-QQTYMW7N.js";
11
+ import "../../chunk-CBF4ZYV3.js";
12
+ import "../../chunk-4VCWL2IG.js";
13
+ import "../../chunk-IPJOMAWC.js";
15
14
  import "../../chunk-VASLW636.js";
16
- import "../../chunk-76ADG7LQ.js";
17
- import "../../chunk-UBEDZ4FD.js";
15
+ import "../../chunk-R54KIGN2.js";
16
+ import "../../chunk-VZRO7RYT.js";
18
17
  export {
19
18
  DomainSelection
20
19
  };