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
@@ -5,56 +5,51 @@ import {
5
5
  getDashboardData,
6
6
  runDashboardFlow,
7
7
  showDashboard
8
- } from "../chunk-PZIZNMHK.js";
9
- import "../chunk-Q2KG7UV3.js";
10
- import "../chunk-MVR3SYMN.js";
11
- import "../chunk-XHUODHZ4.js";
12
- import "../chunk-MWG4VU64.js";
13
- import "../chunk-TJJPWUMA.js";
14
- import "../chunk-TUPYW2IQ.js";
15
- import "../chunk-SKQWRUPX.js";
16
- import "../chunk-LASI35KT.js";
17
- import "../chunk-GRVKW3CC.js";
18
- import "../chunk-L7SZXUBJ.js";
19
- import "../chunk-ZPPHXXAP.js";
20
- import "../chunk-R5NOI2LP.js";
21
- import "../chunk-BNSRA6HL.js";
22
- import "../chunk-F7T5AFFN.js";
23
- import "../chunk-MQ7FLIYS.js";
24
- import "../chunk-FVDKAVOL.js";
8
+ } from "../chunk-5MFJ24VM.js";
9
+ import "../chunk-XGMOXMS4.js";
10
+ import "../chunk-OJJLYHM3.js";
11
+ import "../chunk-ZBPEFQ4G.js";
12
+ import "../chunk-QUDQTO3O.js";
13
+ import "../chunk-R7JV22QK.js";
14
+ import "../chunk-MJFIO5SX.js";
15
+ import "../chunk-NSJ2S7R5.js";
16
+ import "../chunk-JC7DBPRD.js";
17
+ import "../chunk-GUDGCFSF.js";
18
+ import "../chunk-BZ4CZBOM.js";
19
+ import "../chunk-NKCY2ULI.js";
20
+ import "../chunk-NFH6SA62.js";
21
+ import "../chunk-IXEDSKMH.js";
22
+ import "../chunk-AURY6RT6.js";
23
+ import "../chunk-WRRP47PY.js";
24
+ import "../chunk-2IMYK4WN.js";
25
25
  import "../chunk-TSIU7DME.js";
26
- import "../chunk-QRDTLVXG.js";
27
- import "../chunk-J27W6TXS.js";
28
- import "../chunk-SX5H6TSC.js";
29
- import "../chunk-5GUOIJSG.js";
30
- import "../chunk-MJ2KHG24.js";
31
- import "../chunk-DTSG5XZB.js";
32
- import "../chunk-MM7CTTAV.js";
33
- import "../chunk-KXYVJGJP.js";
34
- import "../chunk-P44SXVH3.js";
35
- import "../chunk-LDP5ASDM.js";
36
- import "../chunk-Q45ZU6HD.js";
37
- import "../chunk-WBCPLH66.js";
38
- import "../chunk-RNJWAKMO.js";
39
26
  import "../chunk-XVAQG2CV.js";
40
- import "../chunk-IUQBOCSU.js";
41
- import "../chunk-ODNDXQH2.js";
42
- import "../chunk-STMHDOZD.js";
43
- import "../chunk-SBHBBZKF.js";
44
- import "../chunk-IHUY4M22.js";
45
- import "../chunk-QZZJFYUQ.js";
46
- import "../chunk-E5X6RJ4E.js";
47
- import "../chunk-LZ52XEPR.js";
27
+ import "../chunk-LA3JPESW.js";
28
+ import "../chunk-J27W6TXS.js";
29
+ import "../chunk-AKQ5QISO.js";
30
+ import "../chunk-CHNA5RVS.js";
31
+ import "../chunk-ONWEOS77.js";
32
+ import "../chunk-V3ENMW7G.js";
33
+ import "../chunk-DRKSYJZ2.js";
34
+ import "../chunk-Q5FLW4JG.js";
35
+ import "../chunk-6CNRMCFM.js";
36
+ import "../chunk-XMEIVWAS.js";
37
+ import "../chunk-ZU6DAR4S.js";
38
+ import "../chunk-UW44KSYL.js";
39
+ import "../chunk-PRJD5MMQ.js";
40
+ import "../chunk-TUQF577Z.js";
41
+ import "../chunk-B66SC72V.js";
48
42
  import "../chunk-JFLVEFFP.js";
49
- import "../chunk-5UWKOOIS.js";
50
- import "../chunk-KR65TPKC.js";
51
- import "../chunk-ZL7PFNHN.js";
52
- import "../chunk-EEPELKOM.js";
53
- import "../chunk-PMM2MYMA.js";
54
- import "../chunk-WKTHWQKM.js";
43
+ import "../chunk-QQTYMW7N.js";
44
+ import "../chunk-FMYHWKGG.js";
45
+ import "../chunk-7VZV4O6B.js";
46
+ import "../chunk-K3O3YQYG.js";
47
+ import "../chunk-CBF4ZYV3.js";
48
+ import "../chunk-4VCWL2IG.js";
49
+ import "../chunk-IPJOMAWC.js";
55
50
  import "../chunk-VASLW636.js";
56
- import "../chunk-76ADG7LQ.js";
57
- import "../chunk-UBEDZ4FD.js";
51
+ import "../chunk-R54KIGN2.js";
52
+ import "../chunk-VZRO7RYT.js";
58
53
  export {
59
54
  Init as default,
60
55
  formatDashboardText,
@@ -1,33 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SkillAgentSummary
4
- } from "../chunk-LZ52XEPR.js";
4
+ } from "../chunk-B66SC72V.js";
5
5
  import {
6
6
  render
7
7
  } from "../chunk-JFLVEFFP.js";
8
8
  import {
9
9
  hydrateWizardStore
10
- } from "../chunk-5UWKOOIS.js";
10
+ } from "../chunk-QQTYMW7N.js";
11
11
  import {
12
12
  BaseCommand
13
- } from "../chunk-KR65TPKC.js";
14
- import "../chunk-ZL7PFNHN.js";
13
+ } from "../chunk-FMYHWKGG.js";
14
+ import "../chunk-7VZV4O6B.js";
15
+ import "../chunk-K3O3YQYG.js";
15
16
  import {
16
17
  INSTALL_MODE_LABELS,
17
18
  detectInstallation,
18
19
  formatInstallationDisplay,
19
20
  getInstallationInfo,
20
21
  loadProjectConfig
21
- } from "../chunk-EEPELKOM.js";
22
- import "../chunk-PMM2MYMA.js";
23
- import "../chunk-WKTHWQKM.js";
22
+ } from "../chunk-CBF4ZYV3.js";
23
+ import "../chunk-4VCWL2IG.js";
24
+ import "../chunk-IPJOMAWC.js";
24
25
  import "../chunk-VASLW636.js";
25
26
  import {
26
27
  CLI_COLORS,
27
28
  CLI_INVOKE_COMMAND,
28
29
  DEFAULT_BRANDING
29
- } from "../chunk-76ADG7LQ.js";
30
- import "../chunk-UBEDZ4FD.js";
30
+ } from "../chunk-R54KIGN2.js";
31
+ import "../chunk-VZRO7RYT.js";
31
32
 
32
33
  // src/cli/commands/list.tsx
33
34
  import { useEffect } from "react";
@@ -63,9 +64,6 @@ var List = class _List extends BaseCommand {
63
64
  command: "<%= config.bin %> <%= command.id %>"
64
65
  }
65
66
  ];
66
- static flags = {
67
- ...BaseCommand.baseFlags
68
- };
69
67
  async run() {
70
68
  await this.parse(_List);
71
69
  const installation = await detectInstallation();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/list.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\n\nimport { Box, Text, useApp } from \"ink\";\nimport { render } from \"../components/render.js\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { CLI_INVOKE_COMMAND, CLI_COLORS, DEFAULT_BRANDING } from \"../consts.js\";\nimport { getInstallationInfo, formatInstallationDisplay } from \"../lib/plugins/index.js\";\nimport { detectInstallation, INSTALL_MODE_LABELS } from \"../lib/installation/installation.js\";\nimport { loadProjectConfig } from \"../lib/configuration/project-config.js\";\nimport { SkillAgentSummary } from \"../components/wizard/skill-agent-summary.js\";\nimport { hydrateWizardStore } from \"../stores/wizard-store.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../types/config.js\";\n\ntype ListViewProps = {\n mode: string;\n source?: string;\n skillConfigs: SkillConfig[];\n agentConfigs: AgentScopeConfig[];\n};\n\nconst ListView: React.FC<ListViewProps> = ({ mode, source, skillConfigs, agentConfigs }) => {\n const { exit } = useApp();\n\n useEffect(() => {\n const timer = setTimeout(() => exit(), 0);\n return () => clearTimeout(timer);\n }, [exit]);\n\n return (\n <Box flexDirection=\"column\" paddingX={1} paddingY={1}>\n <Box flexDirection=\"column\" marginBottom={1}>\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Mode\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{mode}</Text>\n </Box>\n {source && (\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Source\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{source}</Text>\n </Box>\n )}\n </Box>\n\n <SkillAgentSummary skillConfigs={skillConfigs} agentConfigs={agentConfigs} />\n </Box>\n );\n};\n\nexport default class List extends BaseCommand {\n static summary = \"Show installation information\";\n static description = `Display details about the ${DEFAULT_BRANDING.NAME} installation (local or plugin mode)`;\n static aliases = [\"ls\"];\n\n static examples = [\n {\n description: \"Show current installation details\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n };\n\n async run(): Promise<void> {\n await this.parse(List);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.log(\"No installation found.\");\n this.log(`Run '${CLI_INVOKE_COMMAND} init' to create one.`);\n return;\n }\n\n const loaded = await loadProjectConfig(installation.projectDir);\n\n if (!loaded?.config || !process.stdin.isTTY) {\n const info = await getInstallationInfo();\n if (info) {\n this.log(\"\");\n this.log(formatInstallationDisplay(info));\n this.log(\"\");\n }\n return;\n }\n\n const { config } = loaded;\n const modeLabel = INSTALL_MODE_LABELS[installation.mode];\n const activeSkills = config.skills.filter((s) => !s.excluded);\n const activeAgents = config.agents.filter((a) => !a.excluded);\n\n hydrateWizardStore({\n installedSkillConfigs: activeSkills,\n installedAgentConfigs: activeAgents,\n });\n\n const { waitUntilExit, clear } = render(\n <ListView\n mode={modeLabel}\n source={config.source}\n skillConfigs={activeSkills}\n agentConfigs={activeAgents}\n />,\n );\n\n await waitUntilExit();\n clear();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAgB,iBAAiB;AAEjC,SAAS,KAAK,MAAM,cAAc;AA8B1B,SACE,KADF;AAXR,IAAM,WAAoC,CAAC,EAAE,MAAM,QAAQ,cAAc,aAAa,MAAM;AAC1F,QAAM,EAAE,KAAK,IAAI,OAAO;AAExB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,KAAK,GAAG,CAAC;AACxC,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,IAAI,CAAC;AAET,SACE,qBAAC,OAAI,eAAc,UAAS,UAAU,GAAG,UAAU,GACjD;AAAA,yBAAC,OAAI,eAAc,UAAS,cAAc,GACxC;AAAA,2BAAC,OAAI,eAAc,OAAM,WAAW,GAClC;AAAA,4BAAC,QAAK,OAAO,WAAW,SAAS,MAAI,MAAC,kBAEtC;AAAA,QACA,oBAAC,QAAK,OAAO,WAAW,SAAU,gBAAK;AAAA,SACzC;AAAA,MACC,UACC,qBAAC,OAAI,eAAc,OAAM,WAAW,GAClC;AAAA,4BAAC,QAAK,OAAO,WAAW,SAAS,MAAI,MAAC,oBAEtC;AAAA,QACA,oBAAC,QAAK,OAAO,WAAW,SAAU,kBAAO;AAAA,SAC3C;AAAA,OAEJ;AAAA,IAEA,oBAAC,qBAAkB,cAA4B,cAA4B;AAAA,KAC7E;AAEJ;AAEA,IAAqB,OAArB,MAAqB,cAAa,YAAY;AAAA,EAC5C,OAAO,UAAU;AAAA,EACjB,OAAO,cAAc,6BAA6B,iBAAiB,IAAI;AAAA,EACvE,OAAO,UAAU,CAAC,IAAI;AAAA,EAEtB,OAAO,WAAW;AAAA,IAChB;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,EACjB;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,KAAI;AAErB,UAAM,eAAe,MAAM,mBAAmB;AAE9C,QAAI,CAAC,cAAc;AACjB,WAAK,IAAI,wBAAwB;AACjC,WAAK,IAAI,QAAQ,kBAAkB,uBAAuB;AAC1D;AAAA,IACF;AAEA,UAAM,SAAS,MAAM,kBAAkB,aAAa,UAAU;AAE9D,QAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,MAAM,OAAO;AAC3C,YAAM,OAAO,MAAM,oBAAoB;AACvC,UAAI,MAAM;AACR,aAAK,IAAI,EAAE;AACX,aAAK,IAAI,0BAA0B,IAAI,CAAC;AACxC,aAAK,IAAI,EAAE;AAAA,MACb;AACA;AAAA,IACF;AAEA,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,YAAY,oBAAoB,aAAa,IAAI;AACvD,UAAM,eAAe,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAC5D,UAAM,eAAe,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAE5D,uBAAmB;AAAA,MACjB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB,CAAC;AAED,UAAM,EAAE,eAAe,MAAM,IAAI;AAAA,MAC/B;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,QAAQ,OAAO;AAAA,UACf,cAAc;AAAA,UACd,cAAc;AAAA;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,cAAc;AACpB,UAAM;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/list.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\n\nimport { Box, Text, useApp } from \"ink\";\nimport { render } from \"../components/render.js\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { CLI_INVOKE_COMMAND, CLI_COLORS, DEFAULT_BRANDING } from \"../consts.js\";\nimport { getInstallationInfo, formatInstallationDisplay } from \"../lib/plugins/index.js\";\nimport { detectInstallation, INSTALL_MODE_LABELS } from \"../lib/installation/installation.js\";\nimport { loadProjectConfig } from \"../lib/configuration/project-config.js\";\nimport { SkillAgentSummary } from \"../components/wizard/skill-agent-summary.js\";\nimport { hydrateWizardStore } from \"../stores/wizard-store.js\";\nimport type { AgentScopeConfig, SkillConfig } from \"../types/config.js\";\n\ntype ListViewProps = {\n mode: string;\n source?: string | undefined;\n skillConfigs: SkillConfig[];\n agentConfigs: AgentScopeConfig[];\n};\n\nconst ListView: React.FC<ListViewProps> = ({ mode, source, skillConfigs, agentConfigs }) => {\n const { exit } = useApp();\n\n useEffect(() => {\n const timer = setTimeout(() => exit(), 0);\n return () => clearTimeout(timer);\n }, [exit]);\n\n return (\n <Box flexDirection=\"column\" paddingX={1} paddingY={1}>\n <Box flexDirection=\"column\" marginBottom={1}>\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Mode\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{mode}</Text>\n </Box>\n {source && (\n <Box flexDirection=\"row\" columnGap={1}>\n <Text color={CLI_COLORS.WARNING} bold>\n Source\n </Text>\n <Text color={CLI_COLORS.NEUTRAL}>{source}</Text>\n </Box>\n )}\n </Box>\n\n <SkillAgentSummary skillConfigs={skillConfigs} agentConfigs={agentConfigs} />\n </Box>\n );\n};\n\nexport default class List extends BaseCommand {\n static summary = \"Show installation information\";\n static description = `Display details about the ${DEFAULT_BRANDING.NAME} installation (local or plugin mode)`;\n static aliases = [\"ls\"];\n\n static examples = [\n {\n description: \"Show current installation details\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n ];\n\n async run(): Promise<void> {\n await this.parse(List);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.log(\"No installation found.\");\n this.log(`Run '${CLI_INVOKE_COMMAND} init' to create one.`);\n return;\n }\n\n const loaded = await loadProjectConfig(installation.projectDir);\n\n if (!loaded?.config || !process.stdin.isTTY) {\n const info = await getInstallationInfo();\n if (info) {\n this.log(\"\");\n this.log(formatInstallationDisplay(info));\n this.log(\"\");\n }\n return;\n }\n\n const { config } = loaded;\n const modeLabel = INSTALL_MODE_LABELS[installation.mode];\n const activeSkills = config.skills.filter((s) => !s.excluded);\n const activeAgents = config.agents.filter((a) => !a.excluded);\n\n hydrateWizardStore({\n installedSkillConfigs: activeSkills,\n installedAgentConfigs: activeAgents,\n });\n\n const { waitUntilExit, clear } = render(\n <ListView\n mode={modeLabel}\n source={config.source}\n skillConfigs={activeSkills}\n agentConfigs={activeAgents}\n />,\n );\n\n await waitUntilExit();\n clear();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAgB,iBAAiB;AAEjC,SAAS,KAAK,MAAM,cAAc;AA8B1B,SACE,KADF;AAXR,IAAM,WAAoC,CAAC,EAAE,MAAM,QAAQ,cAAc,aAAa,MAAM;AAC1F,QAAM,EAAE,KAAK,IAAI,OAAO;AAExB,YAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,KAAK,GAAG,CAAC;AACxC,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,IAAI,CAAC;AAET,SACE,qBAAC,OAAI,eAAc,UAAS,UAAU,GAAG,UAAU,GACjD;AAAA,yBAAC,OAAI,eAAc,UAAS,cAAc,GACxC;AAAA,2BAAC,OAAI,eAAc,OAAM,WAAW,GAClC;AAAA,4BAAC,QAAK,OAAO,WAAW,SAAS,MAAI,MAAC,kBAEtC;AAAA,QACA,oBAAC,QAAK,OAAO,WAAW,SAAU,gBAAK;AAAA,SACzC;AAAA,MACC,UACC,qBAAC,OAAI,eAAc,OAAM,WAAW,GAClC;AAAA,4BAAC,QAAK,OAAO,WAAW,SAAS,MAAI,MAAC,oBAEtC;AAAA,QACA,oBAAC,QAAK,OAAO,WAAW,SAAU,kBAAO;AAAA,SAC3C;AAAA,OAEJ;AAAA,IAEA,oBAAC,qBAAkB,cAA4B,cAA4B;AAAA,KAC7E;AAEJ;AAEA,IAAqB,OAArB,MAAqB,cAAa,YAAY;AAAA,EAC5C,OAAO,UAAU;AAAA,EACjB,OAAO,cAAc,6BAA6B,iBAAiB,IAAI;AAAA,EACvE,OAAO,UAAU,CAAC,IAAI;AAAA,EAEtB,OAAO,WAAW;AAAA,IAChB;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,KAAK,MAAM,KAAI;AAErB,UAAM,eAAe,MAAM,mBAAmB;AAE9C,QAAI,CAAC,cAAc;AACjB,WAAK,IAAI,wBAAwB;AACjC,WAAK,IAAI,QAAQ,kBAAkB,uBAAuB;AAC1D;AAAA,IACF;AAEA,UAAM,SAAS,MAAM,kBAAkB,aAAa,UAAU;AAE9D,QAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,MAAM,OAAO;AAC3C,YAAM,OAAO,MAAM,oBAAoB;AACvC,UAAI,MAAM;AACR,aAAK,IAAI,EAAE;AACX,aAAK,IAAI,0BAA0B,IAAI,CAAC;AACxC,aAAK,IAAI,EAAE;AAAA,MACb;AACA;AAAA,IACF;AAEA,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,YAAY,oBAAoB,aAAa,IAAI;AACvD,UAAM,eAAe,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAC5D,UAAM,eAAe,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAE5D,uBAAmB;AAAA,MACjB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB,CAAC;AAED,UAAM,EAAE,eAAe,MAAM,IAAI;AAAA,MAC/B;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,QAAQ,OAAO;AAAA,UACf,cAAc;AAAA,UACd,cAAc;AAAA;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,cAAc;AACpB,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -1,50 +1,36 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- STATUS_MESSAGES
4
- } from "../chunk-ODNDXQH2.js";
5
2
  import {
6
3
  loadSource
7
- } from "../chunk-STMHDOZD.js";
8
- import "../chunk-SBHBBZKF.js";
9
- import "../chunk-IHUY4M22.js";
10
- import "../chunk-QZZJFYUQ.js";
11
- import "../chunk-E5X6RJ4E.js";
4
+ } from "../chunk-XMEIVWAS.js";
5
+ import "../chunk-ZU6DAR4S.js";
6
+ import "../chunk-UW44KSYL.js";
7
+ import "../chunk-PRJD5MMQ.js";
8
+ import "../chunk-TUQF577Z.js";
12
9
  import {
13
10
  BaseCommand
14
- } from "../chunk-KR65TPKC.js";
15
- import "../chunk-ZL7PFNHN.js";
11
+ } from "../chunk-FMYHWKGG.js";
12
+ import "../chunk-7VZV4O6B.js";
13
+ import "../chunk-K3O3YQYG.js";
16
14
  import {
17
- IMPORT_DEFAULTS,
18
- fetchFromSource,
19
- resolveAllSources,
15
+ STATUS_MESSAGES,
20
16
  truncateText
21
- } from "../chunk-EEPELKOM.js";
22
- import {
23
- fileExists,
24
- listDirectories,
25
- parseFrontmatter,
26
- readFile
27
- } from "../chunk-PMM2MYMA.js";
28
- import "../chunk-WKTHWQKM.js";
17
+ } from "../chunk-CBF4ZYV3.js";
18
+ import "../chunk-4VCWL2IG.js";
19
+ import "../chunk-IPJOMAWC.js";
29
20
  import {
30
21
  typedValues
31
22
  } from "../chunk-VASLW636.js";
32
- import {
33
- DEFAULT_SKILLS_SUBDIR,
34
- STANDARD_FILES
35
- } from "../chunk-76ADG7LQ.js";
36
- import "../chunk-UBEDZ4FD.js";
23
+ import "../chunk-R54KIGN2.js";
24
+ import "../chunk-VZRO7RYT.js";
37
25
 
38
26
  // src/cli/commands/search.ts
39
27
  import { Args } from "@oclif/core";
40
28
  import { printTable } from "@oclif/table";
41
- import path from "path";
42
29
  import { sortBy } from "remeda";
43
30
  var MAX_DESCRIPTION_WIDTH = 50;
44
- var PRIMARY_SOURCE_NAME = "marketplace";
45
31
  var Search = class _Search extends BaseCommand {
46
- static summary = "Search the catalog of available skills across all registered sources";
47
- static description = "Read-only catalog browse. Searches every registered source (primary + extras) by id, displayName, slug, description, or category. Use `import skill` to install.";
32
+ static summary = "Search the catalog of available skills";
33
+ static description = "Read-only catalog browse. Searches the marketplace this installation reads from, plus the local skills already on disk, by id, displayName, slug, description, or category. Use `edit` to install what it finds.";
48
34
  static examples = [
49
35
  {
50
36
  description: "Search for React skills",
@@ -61,8 +47,6 @@ var Search = class _Search extends BaseCommand {
61
47
  required: true
62
48
  })
63
49
  };
64
- // Override parent baseFlags to drop --source (search is a zero-flag command)
65
- static baseFlags = {};
66
50
  static flags = {};
67
51
  async run() {
68
52
  const { args } = await this.parse(_Search);
@@ -71,8 +55,7 @@ var Search = class _Search extends BaseCommand {
71
55
  async runSearch(query) {
72
56
  try {
73
57
  this.log(STATUS_MESSAGES.LOADING_SKILLS);
74
- const projectDir = process.cwd();
75
- const allSkills = await loadSkillsFromAllSources(projectDir);
58
+ const allSkills = await loadSearchableSkills();
76
59
  const results = sortBy(
77
60
  allSkills.filter((skill) => matchesQuery(skill, query)),
78
61
  (r) => r.displayName.toLowerCase()
@@ -87,14 +70,10 @@ var Search = class _Search extends BaseCommand {
87
70
  );
88
71
  this.log("");
89
72
  printTable({
90
- data: results.map((skill) => ({
91
- id: skill.displayName,
92
- source: skill.sourceName,
93
- category: skill.category,
94
- description: truncateText(skill.description, MAX_DESCRIPTION_WIDTH)
95
- })),
73
+ data: results.map(toResultRow),
96
74
  columns: [
97
75
  { key: "id", name: "ID" },
76
+ { key: "name", name: "Name" },
98
77
  { key: "source", name: "Source" },
99
78
  { key: "category", name: "Category" },
100
79
  { key: "description", name: "Description" }
@@ -107,58 +86,26 @@ var Search = class _Search extends BaseCommand {
107
86
  }
108
87
  }
109
88
  };
110
- async function loadSkillsFromAllSources(projectDir) {
111
- const { sourceResult } = await loadSource({ projectDir });
112
- const { matrix } = sourceResult;
113
- const primarySkills = typedValues(matrix.skills).map((skill) => ({
114
- ...skill,
115
- sourceName: PRIMARY_SOURCE_NAME
116
- }));
117
- const { extras } = await resolveAllSources(projectDir);
118
- const extraSkillArrays = await Promise.all(extras.map(fetchSkillsFromExternalSource));
119
- return [...primarySkills, ...extraSkillArrays.flat()];
120
- }
121
- async function fetchSkillsFromExternalSource(source) {
122
- try {
123
- const result = await fetchFromSource(source.url, {});
124
- const skillsDir = path.join(result.path, DEFAULT_SKILLS_SUBDIR);
125
- if (!await fileExists(skillsDir)) {
126
- return [];
127
- }
128
- const skillDirs = await listDirectories(skillsDir);
129
- const loaded = await Promise.all(
130
- skillDirs.map((skillDir) => loadExternalSkill(skillsDir, skillDir, source.name))
131
- );
132
- return loaded.filter((skill) => skill !== null);
133
- } catch {
134
- return [];
135
- }
89
+ async function loadSearchableSkills() {
90
+ const { sourceResult } = await loadSource({ projectDir: process.cwd() });
91
+ return typedValues(sourceResult.matrix.skills);
136
92
  }
137
- async function loadExternalSkill(skillsDir, skillDir, sourceName) {
138
- const skillMdPath = path.join(skillsDir, skillDir, STANDARD_FILES.SKILL_MD);
139
- if (!await fileExists(skillMdPath)) return null;
140
- const content = await readFile(skillMdPath);
141
- const frontmatter = parseFrontmatter(content, skillMdPath);
142
- if (!frontmatter) return null;
93
+ function toResultRow(skill) {
143
94
  return {
144
- id: frontmatter.name,
145
- description: frontmatter.description,
146
- // Boundary cast: directory name used as slug for third-party source skill
147
- slug: skillDir,
148
- displayName: skillDir,
149
- // Boundary cast: external source skills have no real category; "imported" is a display-only placeholder
150
- category: IMPORT_DEFAULTS.CATEGORY,
151
- author: `@${sourceName}`,
152
- conflictsWith: [],
153
- isRecommended: false,
154
- requires: [],
155
- alternatives: [],
156
- discourages: [],
157
- compatibleWith: [],
158
- path: path.join(skillsDir, skillDir),
159
- sourceName
95
+ id: skill.id,
96
+ name: skill.displayName,
97
+ source: activeSourceName(skill),
98
+ category: skill.category,
99
+ description: truncateText(skill.description, MAX_DESCRIPTION_WIDTH)
160
100
  };
161
101
  }
102
+ function activeSourceName(skill) {
103
+ const { activeSource } = skill;
104
+ if (!activeSource) {
105
+ throw new Error(`Skill "${skill.id}" was loaded without a source, so its origin is unknown`);
106
+ }
107
+ return activeSource.name;
108
+ }
162
109
  function matchesQuery(skill, query) {
163
110
  const lowerQuery = query.toLowerCase();
164
111
  return [skill.id, skill.displayName, skill.slug, skill.description, skill.category].some(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/search.ts"],"sourcesContent":["import { Args } from \"@oclif/core\";\nimport { printTable } from \"@oclif/table\";\nimport path from \"path\";\nimport { sortBy } from \"remeda\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { DEFAULT_SKILLS_SUBDIR, STANDARD_FILES } from \"../consts.js\";\nimport { resolveAllSources } from \"../lib/configuration/index.js\";\nimport { fetchFromSource, parseFrontmatter } from \"../lib/loading/index.js\";\nimport { IMPORT_DEFAULTS } from \"../lib/metadata-keys.js\";\nimport { loadSource } from \"../lib/operations/index.js\";\nimport type { SourceEntry } from \"../types/config.js\";\nimport type { ResolvedSkill, SkillSlug } from \"../types/index.js\";\nimport { fileExists, listDirectories, readFile } from \"../utils/fs.js\";\nimport { STATUS_MESSAGES } from \"../utils/messages.js\";\nimport { truncateText } from \"../utils/string.js\";\nimport { typedValues } from \"../utils/typed-object.js\";\n\nconst MAX_DESCRIPTION_WIDTH = 50;\nconst PRIMARY_SOURCE_NAME = \"marketplace\";\n\ntype SearchableSkill = ResolvedSkill & { sourceName: string };\n\nexport default class Search extends BaseCommand {\n static summary = \"Search the catalog of available skills across all registered sources\";\n static description =\n \"Read-only catalog browse. Searches every registered source (primary + extras) \" +\n \"by id, displayName, slug, description, or category. Use `import skill` to install.\";\n\n static examples = [\n {\n description: \"Search for React skills\",\n command: \"<%= config.bin %> search react\",\n },\n {\n description: \"Search by any keyword (matches id, name, description, category)\",\n command: \"<%= config.bin %> search state\",\n },\n ];\n\n static args = {\n query: Args.string({\n description: \"Search query (matches id, displayName, slug, description, category)\",\n required: true,\n }),\n };\n\n // Override parent baseFlags to drop --source (search is a zero-flag command)\n static baseFlags = {} as (typeof BaseCommand)[\"baseFlags\"];\n\n static flags = {};\n\n async run(): Promise<void> {\n const { args } = await this.parse(Search);\n await this.runSearch(args.query);\n }\n\n private async runSearch(query: string): Promise<void> {\n try {\n this.log(STATUS_MESSAGES.LOADING_SKILLS);\n\n const projectDir = process.cwd();\n const allSkills = await loadSkillsFromAllSources(projectDir);\n\n const results = sortBy(\n allSkills.filter((skill) => matchesQuery(skill, query)),\n (r) => r.displayName.toLowerCase(),\n );\n\n this.log(\"\");\n if (results.length === 0) {\n this.warn(`No skills found matching \"${query}\"`);\n return;\n }\n\n this.logInfo(\n `Found ${results.length} skill${results.length === 1 ? \"\" : \"s\"} matching \"${query}\"`,\n );\n this.log(\"\");\n\n printTable({\n data: results.map((skill) => ({\n id: skill.displayName,\n source: skill.sourceName,\n category: skill.category,\n description: truncateText(skill.description, MAX_DESCRIPTION_WIDTH),\n })),\n columns: [\n { key: \"id\", name: \"ID\" },\n { key: \"source\", name: \"Source\" },\n { key: \"category\", name: \"Category\" },\n { key: \"description\", name: \"Description\" },\n ],\n headerOptions: { bold: true },\n });\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\nasync function loadSkillsFromAllSources(projectDir: string): Promise<SearchableSkill[]> {\n const { sourceResult } = await loadSource({ projectDir });\n const { matrix } = sourceResult;\n\n const primarySkills: SearchableSkill[] = typedValues(matrix.skills).map((skill) => ({\n ...skill,\n sourceName: PRIMARY_SOURCE_NAME,\n }));\n\n const { extras } = await resolveAllSources(projectDir);\n\n const extraSkillArrays = await Promise.all(extras.map(fetchSkillsFromExternalSource));\n\n return [...primarySkills, ...extraSkillArrays.flat()];\n}\n\nasync function fetchSkillsFromExternalSource(source: SourceEntry): Promise<SearchableSkill[]> {\n try {\n const result = await fetchFromSource(source.url, {});\n const skillsDir = path.join(result.path, DEFAULT_SKILLS_SUBDIR);\n\n if (!(await fileExists(skillsDir))) {\n return [];\n }\n\n const skillDirs = await listDirectories(skillsDir);\n const loaded = await Promise.all(\n skillDirs.map((skillDir) => loadExternalSkill(skillsDir, skillDir, source.name)),\n );\n return loaded.filter((skill) => skill !== null);\n } catch {\n // Source unavailable, return empty\n return [];\n }\n}\n\n/** Loads one external skill dir as a SearchableSkill, or null when it has no valid SKILL.md. */\nasync function loadExternalSkill(\n skillsDir: string,\n skillDir: string,\n sourceName: string,\n): Promise<SearchableSkill | null> {\n const skillMdPath = path.join(skillsDir, skillDir, STANDARD_FILES.SKILL_MD);\n if (!(await fileExists(skillMdPath))) return null;\n\n const content = await readFile(skillMdPath);\n const frontmatter = parseFrontmatter(content, skillMdPath);\n if (!frontmatter) return null;\n\n return {\n id: frontmatter.name,\n description: frontmatter.description,\n // Boundary cast: directory name used as slug for third-party source skill\n slug: skillDir as SkillSlug,\n displayName: skillDir,\n // Boundary cast: external source skills have no real category; \"imported\" is a display-only placeholder\n category: IMPORT_DEFAULTS.CATEGORY,\n author: `@${sourceName}`,\n conflictsWith: [],\n isRecommended: false,\n requires: [],\n alternatives: [],\n discourages: [],\n compatibleWith: [],\n path: path.join(skillsDir, skillDir),\n sourceName,\n };\n}\n\nfunction matchesQuery(skill: ResolvedSkill, query: string): boolean {\n const lowerQuery = query.toLowerCase();\n return [skill.id, skill.displayName, skill.slug, skill.description, skill.category].some(\n (field) => field.toLowerCase().includes(lowerQuery),\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAC3B,OAAO,UAAU;AACjB,SAAS,cAAc;AAevB,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAI5B,IAAqB,SAArB,MAAqB,gBAAe,YAAY;AAAA,EAC9C,OAAO,UAAU;AAAA,EACjB,OAAO,cACL;AAAA,EAGF,OAAO,WAAW;AAAA,IAChB;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,OAAO;AAAA,IACZ,OAAO,KAAK,OAAO;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,OAAO,YAAY,CAAC;AAAA,EAEpB,OAAO,QAAQ,CAAC;AAAA,EAEhB,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,OAAM;AACxC,UAAM,KAAK,UAAU,KAAK,KAAK;AAAA,EACjC;AAAA,EAEA,MAAc,UAAU,OAA8B;AACpD,QAAI;AACF,WAAK,IAAI,gBAAgB,cAAc;AAEvC,YAAM,aAAa,QAAQ,IAAI;AAC/B,YAAM,YAAY,MAAM,yBAAyB,UAAU;AAE3D,YAAM,UAAU;AAAA,QACd,UAAU,OAAO,CAAC,UAAU,aAAa,OAAO,KAAK,CAAC;AAAA,QACtD,CAAC,MAAM,EAAE,YAAY,YAAY;AAAA,MACnC;AAEA,WAAK,IAAI,EAAE;AACX,UAAI,QAAQ,WAAW,GAAG;AACxB,aAAK,KAAK,6BAA6B,KAAK,GAAG;AAC/C;AAAA,MACF;AAEA,WAAK;AAAA,QACH,SAAS,QAAQ,MAAM,SAAS,QAAQ,WAAW,IAAI,KAAK,GAAG,cAAc,KAAK;AAAA,MACpF;AACA,WAAK,IAAI,EAAE;AAEX,iBAAW;AAAA,QACT,MAAM,QAAQ,IAAI,CAAC,WAAW;AAAA,UAC5B,IAAI,MAAM;AAAA,UACV,QAAQ,MAAM;AAAA,UACd,UAAU,MAAM;AAAA,UAChB,aAAa,aAAa,MAAM,aAAa,qBAAqB;AAAA,QACpE,EAAE;AAAA,QACF,SAAS;AAAA,UACP,EAAE,KAAK,MAAM,MAAM,KAAK;AAAA,UACxB,EAAE,KAAK,UAAU,MAAM,SAAS;AAAA,UAChC,EAAE,KAAK,YAAY,MAAM,WAAW;AAAA,UACpC,EAAE,KAAK,eAAe,MAAM,cAAc;AAAA,QAC5C;AAAA,QACA,eAAe,EAAE,MAAM,KAAK;AAAA,MAC9B,CAAC;AACD,WAAK,IAAI,EAAE;AAAA,IACb,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AACF;AAEA,eAAe,yBAAyB,YAAgD;AACtF,QAAM,EAAE,aAAa,IAAI,MAAM,WAAW,EAAE,WAAW,CAAC;AACxD,QAAM,EAAE,OAAO,IAAI;AAEnB,QAAM,gBAAmC,YAAY,OAAO,MAAM,EAAE,IAAI,CAAC,WAAW;AAAA,IAClF,GAAG;AAAA,IACH,YAAY;AAAA,EACd,EAAE;AAEF,QAAM,EAAE,OAAO,IAAI,MAAM,kBAAkB,UAAU;AAErD,QAAM,mBAAmB,MAAM,QAAQ,IAAI,OAAO,IAAI,6BAA6B,CAAC;AAEpF,SAAO,CAAC,GAAG,eAAe,GAAG,iBAAiB,KAAK,CAAC;AACtD;AAEA,eAAe,8BAA8B,QAAiD;AAC5F,MAAI;AACF,UAAM,SAAS,MAAM,gBAAgB,OAAO,KAAK,CAAC,CAAC;AACnD,UAAM,YAAY,KAAK,KAAK,OAAO,MAAM,qBAAqB;AAE9D,QAAI,CAAE,MAAM,WAAW,SAAS,GAAI;AAClC,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,YAAY,MAAM,gBAAgB,SAAS;AACjD,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU,IAAI,CAAC,aAAa,kBAAkB,WAAW,UAAU,OAAO,IAAI,CAAC;AAAA,IACjF;AACA,WAAO,OAAO,OAAO,CAAC,UAAU,UAAU,IAAI;AAAA,EAChD,QAAQ;AAEN,WAAO,CAAC;AAAA,EACV;AACF;AAGA,eAAe,kBACb,WACA,UACA,YACiC;AACjC,QAAM,cAAc,KAAK,KAAK,WAAW,UAAU,eAAe,QAAQ;AAC1E,MAAI,CAAE,MAAM,WAAW,WAAW,EAAI,QAAO;AAE7C,QAAM,UAAU,MAAM,SAAS,WAAW;AAC1C,QAAM,cAAc,iBAAiB,SAAS,WAAW;AACzD,MAAI,CAAC,YAAa,QAAO;AAEzB,SAAO;AAAA,IACL,IAAI,YAAY;AAAA,IAChB,aAAa,YAAY;AAAA;AAAA,IAEzB,MAAM;AAAA,IACN,aAAa;AAAA;AAAA,IAEb,UAAU,gBAAgB;AAAA,IAC1B,QAAQ,IAAI,UAAU;AAAA,IACtB,eAAe,CAAC;AAAA,IAChB,eAAe;AAAA,IACf,UAAU,CAAC;AAAA,IACX,cAAc,CAAC;AAAA,IACf,aAAa,CAAC;AAAA,IACd,gBAAgB,CAAC;AAAA,IACjB,MAAM,KAAK,KAAK,WAAW,QAAQ;AAAA,IACnC;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAsB,OAAwB;AAClE,QAAM,aAAa,MAAM,YAAY;AACrC,SAAO,CAAC,MAAM,IAAI,MAAM,aAAa,MAAM,MAAM,MAAM,aAAa,MAAM,QAAQ,EAAE;AAAA,IAClF,CAAC,UAAU,MAAM,YAAY,EAAE,SAAS,UAAU;AAAA,EACpD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/search.ts"],"sourcesContent":["import { Args } from \"@oclif/core\";\nimport { printTable } from \"@oclif/table\";\nimport { sortBy } from \"remeda\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { loadSource } from \"../lib/operations/index.js\";\nimport type { ResolvedSkill } from \"../types/index.js\";\nimport { STATUS_MESSAGES } from \"../utils/messages.js\";\nimport { truncateText } from \"../utils/string.js\";\nimport { typedValues } from \"../utils/typed-object.js\";\n\nconst MAX_DESCRIPTION_WIDTH = 50;\n\n/**\n * One row of the results table. `id` and `category` are the skill's own values; `name`, `source`\n * and `description` are rendered for the cell, so they are plain strings.\n */\ntype ResultRow = Pick<ResolvedSkill, \"id\" | \"category\"> & {\n name: string;\n source: string;\n description: string;\n};\n\nexport default class Search extends BaseCommand {\n static summary = \"Search the catalog of available skills\";\n static description =\n \"Read-only catalog browse. Searches the marketplace this installation reads from, \" +\n \"plus the local skills already on disk, by id, displayName, slug, description, or \" +\n \"category. Use `edit` to install what it finds.\";\n\n static examples = [\n {\n description: \"Search for React skills\",\n command: \"<%= config.bin %> search react\",\n },\n {\n description: \"Search by any keyword (matches id, name, description, category)\",\n command: \"<%= config.bin %> search state\",\n },\n ];\n\n static args = {\n query: Args.string({\n description: \"Search query (matches id, displayName, slug, description, category)\",\n required: true,\n }),\n };\n\n static flags = {};\n\n async run(): Promise<void> {\n const { args } = await this.parse(Search);\n await this.runSearch(args.query);\n }\n\n private async runSearch(query: string): Promise<void> {\n try {\n this.log(STATUS_MESSAGES.LOADING_SKILLS);\n\n const allSkills = await loadSearchableSkills();\n\n const results = sortBy(\n allSkills.filter((skill) => matchesQuery(skill, query)),\n (r) => r.displayName.toLowerCase(),\n );\n\n this.log(\"\");\n if (results.length === 0) {\n this.warn(`No skills found matching \"${query}\"`);\n return;\n }\n\n this.logInfo(\n `Found ${results.length} skill${results.length === 1 ? \"\" : \"s\"} matching \"${query}\"`,\n );\n this.log(\"\");\n\n printTable({\n data: results.map(toResultRow),\n columns: [\n { key: \"id\", name: \"ID\" },\n { key: \"name\", name: \"Name\" },\n { key: \"source\", name: \"Source\" },\n { key: \"category\", name: \"Category\" },\n { key: \"description\", name: \"Description\" },\n ],\n headerOptions: { bold: true },\n });\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n/**\n * Every skill the catalog can offer: the marketplace matrix, which `loadSource` has already\n * merged the on-disk local skills into. There is no second source to reach for — the\n * registered-extras array this used to fan out over was withdrawn with the marketplace axis\n * (CLI-450), so the read is one load and no network beyond it.\n */\nasync function loadSearchableSkills(): Promise<ResolvedSkill[]> {\n const { sourceResult } = await loadSource({ projectDir: process.cwd() });\n\n return typedValues(sourceResult.matrix.skills);\n}\n\n/**\n * The machine id and the display name are different answers and get a column each — `edit`\n * takes the id, a human reads the name.\n */\nfunction toResultRow(skill: ResolvedSkill): ResultRow {\n return {\n id: skill.id,\n name: skill.displayName,\n source: activeSourceName(skill),\n category: skill.category,\n description: truncateText(skill.description, MAX_DESCRIPTION_WIDTH),\n };\n}\n\n/**\n * Where this installation reads the skill from: the local copy when one is on disk, otherwise\n * the marketplace the load resolved. Both names are written by the tagging pass\n * (`loadSkillsFromAllSources`), which `loadSource` always runs — a skill that reached the table\n * untagged would have no origin to report, so say so rather than name one it might not have.\n */\nfunction activeSourceName(skill: ResolvedSkill): string {\n const { activeSource } = skill;\n if (!activeSource) {\n throw new Error(`Skill \"${skill.id}\" was loaded without a source, so its origin is unknown`);\n }\n return activeSource.name;\n}\n\nfunction matchesQuery(skill: ResolvedSkill, query: string): boolean {\n const lowerQuery = query.toLowerCase();\n return [skill.id, skill.displayName, skill.slug, skill.description, skill.category].some(\n (field) => field.toLowerCase().includes(lowerQuery),\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AASvB,IAAM,wBAAwB;AAY9B,IAAqB,SAArB,MAAqB,gBAAe,YAAY;AAAA,EAC9C,OAAO,UAAU;AAAA,EACjB,OAAO,cACL;AAAA,EAIF,OAAO,WAAW;AAAA,IAChB;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,OAAO;AAAA,IACZ,OAAO,KAAK,OAAO;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,QAAQ,CAAC;AAAA,EAEhB,MAAM,MAAqB;AACzB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,OAAM;AACxC,UAAM,KAAK,UAAU,KAAK,KAAK;AAAA,EACjC;AAAA,EAEA,MAAc,UAAU,OAA8B;AACpD,QAAI;AACF,WAAK,IAAI,gBAAgB,cAAc;AAEvC,YAAM,YAAY,MAAM,qBAAqB;AAE7C,YAAM,UAAU;AAAA,QACd,UAAU,OAAO,CAAC,UAAU,aAAa,OAAO,KAAK,CAAC;AAAA,QACtD,CAAC,MAAM,EAAE,YAAY,YAAY;AAAA,MACnC;AAEA,WAAK,IAAI,EAAE;AACX,UAAI,QAAQ,WAAW,GAAG;AACxB,aAAK,KAAK,6BAA6B,KAAK,GAAG;AAC/C;AAAA,MACF;AAEA,WAAK;AAAA,QACH,SAAS,QAAQ,MAAM,SAAS,QAAQ,WAAW,IAAI,KAAK,GAAG,cAAc,KAAK;AAAA,MACpF;AACA,WAAK,IAAI,EAAE;AAEX,iBAAW;AAAA,QACT,MAAM,QAAQ,IAAI,WAAW;AAAA,QAC7B,SAAS;AAAA,UACP,EAAE,KAAK,MAAM,MAAM,KAAK;AAAA,UACxB,EAAE,KAAK,QAAQ,MAAM,OAAO;AAAA,UAC5B,EAAE,KAAK,UAAU,MAAM,SAAS;AAAA,UAChC,EAAE,KAAK,YAAY,MAAM,WAAW;AAAA,UACpC,EAAE,KAAK,eAAe,MAAM,cAAc;AAAA,QAC5C;AAAA,QACA,eAAe,EAAE,MAAM,KAAK;AAAA,MAC9B,CAAC;AACD,WAAK,IAAI,EAAE;AAAA,IACb,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AACF;AAQA,eAAe,uBAAiD;AAC9D,QAAM,EAAE,aAAa,IAAI,MAAM,WAAW,EAAE,YAAY,QAAQ,IAAI,EAAE,CAAC;AAEvE,SAAO,YAAY,aAAa,OAAO,MAAM;AAC/C;AAMA,SAAS,YAAY,OAAiC;AACpD,SAAO;AAAA,IACL,IAAI,MAAM;AAAA,IACV,MAAM,MAAM;AAAA,IACZ,QAAQ,iBAAiB,KAAK;AAAA,IAC9B,UAAU,MAAM;AAAA,IAChB,aAAa,aAAa,MAAM,aAAa,qBAAqB;AAAA,EACpE;AACF;AAQA,SAAS,iBAAiB,OAA8B;AACtD,QAAM,EAAE,aAAa,IAAI;AACzB,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,UAAU,MAAM,EAAE,yDAAyD;AAAA,EAC7F;AACA,SAAO,aAAa;AACtB;AAEA,SAAS,aAAa,OAAsB,OAAwB;AAClE,QAAM,aAAa,MAAM,YAAY;AACrC,SAAO,CAAC,MAAM,IAAI,MAAM,aAAa,MAAM,MAAM,MAAM,aAAa,MAAM,QAAQ,EAAE;AAAA,IAClF,CAAC,UAAU,MAAM,YAAY,EAAE,SAAS,UAAU;AAAA,EACpD;AACF;","names":[]}