@unieai/code 0.0.14 → 0.0.15

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 (447) hide show
  1. package/README.md +18 -0
  2. package/dist/chunks/App-6wcwb5pc.js +2 -0
  3. package/dist/chunks/ApproveApiKey-d97zej3m.js +2 -0
  4. package/dist/chunks/{assistant-bmwndz7j.js → AssistantSessionChooser-vygv3jdr.js} +1 -1
  5. package/dist/chunks/BypassPermissionsModeDialog-p7yq2zap.js +2 -0
  6. package/dist/chunks/{ClaudeInChromeOnboarding-ckjppjhr.js → ClaudeInChromeOnboarding-n11q2368.js} +1 -1
  7. package/dist/chunks/ClaudeMdExternalIncludesDialog-6afdc75a.js +2 -0
  8. package/dist/chunks/ConsoleOAuthFlow-7na5hhyn.js +2 -0
  9. package/dist/chunks/{DiffDialog-ptnc4sgx.js → DiffDialog-0gfe5ew5.js} +1 -1
  10. package/dist/chunks/Doctor-q03grp6g.js +2 -0
  11. package/dist/chunks/Grove-2hdgsj42.js +2 -0
  12. package/dist/chunks/{ITermBackend-wgbbpgpy.js → ITermBackend-d4maa39x.js} +1 -1
  13. package/dist/chunks/{InProcessTransport-vgh7qgjn.js → InProcessTransport-7sr7467h.js} +1 -1
  14. package/dist/chunks/InvalidConfigDialog-qe8rkhkj.js +2 -0
  15. package/dist/chunks/InvalidSettingsDialog-tmhmy5tf.js +2 -0
  16. package/dist/chunks/Onboarding-hp8hb5kc.js +2 -0
  17. package/dist/chunks/REPL-5ppdjgag.js +2 -0
  18. package/dist/chunks/{ResumeConversation-ymc529y6.js → ResumeConversation-sr90x948.js} +1 -1
  19. package/dist/chunks/{SnapshotUpdateDialog-aya2c2f9.js → SnapshotUpdateDialog-wt6b6ee8.js} +1 -1
  20. package/dist/chunks/{TeleportProgress-kn3qgvd9.js → TeleportProgress-yv82g5fx.js} +1 -1
  21. package/dist/chunks/{TeleportRepoMismatchDialog-01v6e2qz.js → TeleportRepoMismatchDialog-hdzhp1cy.js} +1 -1
  22. package/dist/chunks/{TeleportResumeWrapper-48dsm503.js → TeleportResumeWrapper-m93f8nva.js} +1 -1
  23. package/dist/chunks/{TmuxBackend-s0bt8zqj.js → TmuxBackend-5ajj7r7b.js} +1 -1
  24. package/dist/chunks/ToolSearchTool-e8x4b1xy.js +2 -0
  25. package/dist/chunks/{TrustDialog-xtn3kq0n.js → TrustDialog-m74p2tm4.js} +1 -1
  26. package/dist/chunks/TungstenTool-3f5rj0vm.js +2 -0
  27. package/dist/chunks/{add-dir-z0kz5nf7.js → add-dir-fswbbep3.js} +1 -1
  28. package/dist/chunks/{agents-ex4cdx64.js → agents-ftrmk7h2.js} +1 -1
  29. package/dist/chunks/agents-wg0hfr30.js +4 -0
  30. package/dist/chunks/ant-claude-for-chrome-mcp-p12dy6z6.js +2 -0
  31. package/dist/chunks/api-94eda39h.js +2 -0
  32. package/dist/chunks/asciicast-ktxrxtw6.js +2 -0
  33. package/dist/chunks/{AssistantSessionChooser-wxmyvgcf.js → assistant-kae6ttkn.js} +1 -1
  34. package/dist/chunks/{auth-g2p039wk.js → auth-2kpz51np.js} +1 -1
  35. package/dist/chunks/auth-xw8gbsgb.js +2 -0
  36. package/dist/chunks/backgroundHousekeeping-zxf9qg70.js +2 -0
  37. package/dist/chunks/{branch-rdvbhvts.js → branch-takyqck5.js} +1 -1
  38. package/dist/chunks/{bridgePointer-9rqn5tp6.js → bridgePointer-73w5dbak.js} +1 -1
  39. package/dist/chunks/{btw-xts6twbq.js → btw-jdp39tx4.js} +1 -1
  40. package/dist/chunks/{buddy-yc09g048.js → buddy-m4zdx3bb.js} +1 -1
  41. package/dist/chunks/{cachedMicrocompact-fa2mdnyh.js → cachedMicrocompact-6agq4j15.js} +1 -1
  42. package/dist/chunks/caches-zfq2xyng.js +2 -0
  43. package/dist/chunks/{chrome-gb6g0d5p.js → chrome-6nn58sx4.js} +1 -1
  44. package/dist/chunks/{chromeNativeHost-jsntnc29.js → chromeNativeHost-zww6nc8m.js} +1 -1
  45. package/dist/chunks/{claudeDesktop-me56qerx.js → claudeDesktop-mbfy989f.js} +1 -1
  46. package/dist/chunks/{cleanup-hxj6tm50.js → cleanup-b1j2gz00.js} +1 -1
  47. package/dist/chunks/clear-gcgpc454.js +2 -0
  48. package/dist/chunks/{cli-63wps6p0.js → cli-01hdyy20.js} +1 -1
  49. package/dist/chunks/{cli-fnt125we.js → cli-024t0qj5.js} +2 -2
  50. package/dist/chunks/{cli-xqqnx8gk.js → cli-05d7kjwb.js} +1 -1
  51. package/dist/chunks/{cli-z02gsrtd.js → cli-0gt2xz4m.js} +2 -2
  52. package/dist/chunks/{cli-hp5gs22f.js → cli-0hyd6spd.js} +1 -1
  53. package/dist/chunks/{cli-3619x17q.js → cli-0p0bgg1c.js} +1 -1
  54. package/dist/chunks/{cli-j4r75xsd.js → cli-0qjhtnek.js} +1 -1
  55. package/dist/chunks/{cli-7ed2q42n.js → cli-0th9dbz0.js} +2 -2
  56. package/dist/chunks/{cli-8j0b3b55.js → cli-0vb8t8wq.js} +1 -1
  57. package/dist/chunks/{cli-7jw2qe69.js → cli-0ybyvcx6.js} +2 -2
  58. package/dist/chunks/{cli-8xyb31dy.js → cli-10j9svm7.js} +2 -2
  59. package/dist/chunks/{cli-2sbq6ggm.js → cli-16j5x50q.js} +2 -2
  60. package/dist/chunks/{cli-3tkd82y4.js → cli-19s45qns.js} +1 -1
  61. package/dist/chunks/{cli-zwn9x1p2.js → cli-1pwyw30a.js} +1 -1
  62. package/dist/chunks/{cli-h2t2hyz7.js → cli-1px0m0pt.js} +2 -2
  63. package/dist/chunks/{cli-e9t5kfxm.js → cli-2540qh2b.js} +1 -1
  64. package/dist/chunks/{cli-ps5qshk4.js → cli-259ff8gy.js} +1 -1
  65. package/dist/chunks/{cli-rc3w6tqd.js → cli-26y0jfks.js} +2 -2
  66. package/dist/chunks/{cli-qwx84m9c.js → cli-2afdzhna.js} +1 -1
  67. package/dist/chunks/{cli-e5yek4vx.js → cli-2dkq8dre.js} +2 -2
  68. package/dist/chunks/{cli-1eejy071.js → cli-2q9p0rr5.js} +1 -1
  69. package/dist/chunks/{cli-awe5yg6m.js → cli-39xs60x2.js} +2 -2
  70. package/dist/chunks/{cli-mx33m3gs.js → cli-3he638yr.js} +1 -1
  71. package/dist/chunks/{cli-an97yxg9.js → cli-3q4bcd9y.js} +2 -2
  72. package/dist/chunks/{cli-swrtc7tv.js → cli-40cqn5s4.js} +1 -1
  73. package/dist/chunks/cli-461ebjmk.js +3 -0
  74. package/dist/chunks/{cli-n5wt59z1.js → cli-4c9nnszs.js} +2 -2
  75. package/dist/chunks/{cli-64x5ghm5.js → cli-4dj4x3mr.js} +1 -1
  76. package/dist/chunks/{cli-zxe1a0ey.js → cli-4r0qxxn2.js} +2 -2
  77. package/dist/chunks/{cli-jz50hv3m.js → cli-4v73qw68.js} +1 -1
  78. package/dist/chunks/{cli-bfm3f0yw.js → cli-5pn327m7.js} +1 -1
  79. package/dist/chunks/{cli-jrwh6rs0.js → cli-5rxvwnb0.js} +1 -1
  80. package/dist/chunks/{cli-93sm9n17.js → cli-5t8cqq40.js} +1 -1
  81. package/dist/chunks/{cli-b3k8arn1.js → cli-63389c5w.js} +589 -589
  82. package/dist/chunks/{cli-609dp2ck.js → cli-6376p7cj.js} +1 -1
  83. package/dist/chunks/{cli-8h10q2x8.js → cli-6fmt7dye.js} +1 -1
  84. package/dist/chunks/{cli-9e8f55fp.js → cli-6xn8gqp2.js} +1 -1
  85. package/dist/chunks/{cli-a2d962bq.js → cli-7dm5ex18.js} +3 -3
  86. package/dist/chunks/{cli-9hqmq5g6.js → cli-7q6tcs56.js} +1 -1
  87. package/dist/chunks/{cli-6cqemsm9.js → cli-7xgc2882.js} +1 -1
  88. package/dist/chunks/{cli-wznsj6nb.js → cli-884gn8px.js} +1 -1
  89. package/dist/chunks/cli-8ayzxqxm.js +3 -0
  90. package/dist/chunks/{cli-33tchr20.js → cli-8hpg8nq4.js} +2 -2
  91. package/dist/chunks/{cli-5c6e6txh.js → cli-9m758wb1.js} +48 -48
  92. package/dist/chunks/{cli-192xnkcx.js → cli-9sjvqgf1.js} +39 -39
  93. package/dist/chunks/{cli-bj0csmzs.js → cli-a1ejrtbd.js} +2 -2
  94. package/dist/chunks/{cli-fdjfk8yq.js → cli-a2f4j8s5.js} +2 -2
  95. package/dist/chunks/cli-aevjtty8.js +3 -0
  96. package/dist/chunks/{cli-601zv0wv.js → cli-ajnshm3j.js} +2 -2
  97. package/dist/chunks/{cli-q2g5mjv6.js → cli-aw71bpta.js} +1 -1
  98. package/dist/chunks/{cli-brr3bnrj.js → cli-b2fkrk49.js} +2 -2
  99. package/dist/chunks/{cli-7k17xstr.js → cli-bavw7hk5.js} +1 -1
  100. package/dist/chunks/{cli-5ajcy93q.js → cli-bbt5chja.js} +2 -2
  101. package/dist/chunks/{cli-awb77t95.js → cli-bqs5smsv.js} +2 -2
  102. package/dist/chunks/{cli-yt4ezhhk.js → cli-btsq7ax8.js} +1 -1
  103. package/dist/chunks/{cli-yktdhy9p.js → cli-cmfxv0fb.js} +2 -2
  104. package/dist/chunks/{cli-nqvfpxp6.js → cli-d287m3xt.js} +1 -1
  105. package/dist/chunks/{cli-0nz8v3dj.js → cli-d5tdpnv2.js} +1 -1
  106. package/dist/chunks/{cli-jmq1x925.js → cli-d8qkvmdn.js} +2 -2
  107. package/dist/chunks/{cli-9xtyh8c7.js → cli-dc6wqdxq.js} +2 -2
  108. package/dist/chunks/{cli-rjy86nps.js → cli-djvr12vv.js} +1 -1
  109. package/dist/chunks/{cli-e4a4fjx9.js → cli-dp2jt8fs.js} +2 -2
  110. package/dist/chunks/{cli-e3q6b1cv.js → cli-e1e1m0pp.js} +1 -1
  111. package/dist/chunks/{cli-szxfz15b.js → cli-e1gmbexn.js} +1 -1
  112. package/dist/chunks/{cli-2428yw99.js → cli-e5vc9y1s.js} +2 -2
  113. package/dist/chunks/{cli-8kpqq0ea.js → cli-eehgc06t.js} +2 -2
  114. package/dist/chunks/{cli-a1cx6p3g.js → cli-ehchpnvs.js} +1 -1
  115. package/dist/chunks/{cli-6qt2xm18.js → cli-epetmtbs.js} +2 -2
  116. package/dist/chunks/{cli-m6amgxq3.js → cli-ex1phpwq.js} +1 -1
  117. package/dist/chunks/{cli-8ykv66e4.js → cli-ey3ajcbm.js} +2 -2
  118. package/dist/chunks/{cli-wvctks7e.js → cli-eys4epws.js} +2 -2
  119. package/dist/chunks/{cli-2fqrjjs9.js → cli-ezm83s1g.js} +1 -1
  120. package/dist/chunks/{cli-dx0pk7k2.js → cli-f2vabz18.js} +1 -1
  121. package/dist/chunks/{cli-7wxv39ry.js → cli-fg3rb4dg.js} +2 -2
  122. package/dist/chunks/{cli-t7sx6zqn.js → cli-fn58ekhc.js} +1 -1
  123. package/dist/chunks/{cli-6ee37m6j.js → cli-ft5hkwbj.js} +1 -1
  124. package/dist/chunks/{cli-eh1wx76n.js → cli-ftpdmdw5.js} +1 -1
  125. package/dist/chunks/{cli-df5r5xrp.js → cli-fvr47wt6.js} +1 -1
  126. package/dist/chunks/{cli-a1dqnvy2.js → cli-g85dpwpq.js} +1 -1
  127. package/dist/chunks/{cli-d1w21hsm.js → cli-gd0f1rtp.js} +1 -1
  128. package/dist/chunks/{cli-bpj9na88.js → cli-gh3w0z1t.js} +1 -1
  129. package/dist/chunks/{cli-ktzyyx91.js → cli-gpsc6dvd.js} +1 -1
  130. package/dist/chunks/{cli-zqrzc3qx.js → cli-gv71wq8a.js} +1 -1
  131. package/dist/chunks/{cli-67azkkwm.js → cli-h2e1scnk.js} +1 -1
  132. package/dist/chunks/{cli-bdgrtpsy.js → cli-h3vttdhj.js} +2 -2
  133. package/dist/chunks/{cli-sbm8tsyq.js → cli-h5hm4rsb.js} +1 -1
  134. package/dist/chunks/cli-h7tdk5fx.js +3 -0
  135. package/dist/chunks/{cli-yaxs01at.js → cli-h9xmkhdq.js} +2 -2
  136. package/dist/chunks/{cli-b8j8bm5m.js → cli-hs95nqb0.js} +1 -1
  137. package/dist/chunks/{cli-rz03bav0.js → cli-hsnk77dk.js} +1 -1
  138. package/dist/chunks/{cli-q8zmmp6z.js → cli-hy0se8fa.js} +2 -2
  139. package/dist/chunks/{cli-3tmtx9ka.js → cli-jr0hzh2w.js} +1 -1
  140. package/dist/chunks/{cli-hpxspent.js → cli-jy20hqk9.js} +2 -2
  141. package/dist/chunks/{cli-ez2xsd4m.js → cli-k3b5ctgk.js} +2 -2
  142. package/dist/chunks/{cli-yxsn8ang.js → cli-kc4b0z3x.js} +1 -1
  143. package/dist/chunks/{cli-d2pn0xfj.js → cli-krmacmt6.js} +1 -1
  144. package/dist/chunks/{cli-tafg3e9w.js → cli-ktzb7cwm.js} +2 -2
  145. package/dist/chunks/{cli-sr25begm.js → cli-m09f7s7e.js} +1 -1
  146. package/dist/chunks/{cli-kx3r72jp.js → cli-mae5am6a.js} +1 -1
  147. package/dist/chunks/{cli-z2ewnqgr.js → cli-mhza34xq.js} +2 -2
  148. package/dist/chunks/{cli-qpjkqhg2.js → cli-mky8bjey.js} +1 -1
  149. package/dist/chunks/{cli-fz053waw.js → cli-mqkqq3ye.js} +2 -2
  150. package/dist/chunks/{cli-vtsy70mz.js → cli-ms2tdrrf.js} +1 -1
  151. package/dist/chunks/{cli-hrmzaf5d.js → cli-n0xnhnx9.js} +2 -2
  152. package/dist/chunks/{cli-cfbfexxj.js → cli-ncbagd2h.js} +1 -1
  153. package/dist/chunks/{cli-vfh77r55.js → cli-ndp9j4vm.js} +1 -1
  154. package/dist/chunks/{cli-4pwyex04.js → cli-ndrvqgnc.js} +2 -2
  155. package/dist/chunks/{cli-jz8jcrhh.js → cli-nhks97kf.js} +1 -1
  156. package/dist/chunks/{cli-ry9g546q.js → cli-p2ngs1jm.js} +1 -1
  157. package/dist/chunks/{cli-qrmc38f8.js → cli-p853vxnx.js} +2 -2
  158. package/dist/chunks/{cli-gfweqbpz.js → cli-pmfc2886.js} +1 -1
  159. package/dist/chunks/{cli-1p7nc6zb.js → cli-q33bj7n5.js} +2 -2
  160. package/dist/chunks/{cli-t4see9hh.js → cli-q5arj6fm.js} +2 -2
  161. package/dist/chunks/{cli-vb6aa4jk.js → cli-q6atnwff.js} +2 -2
  162. package/dist/chunks/{cli-cmh6qwg8.js → cli-q93jv7x6.js} +2 -2
  163. package/dist/chunks/{cli-dy9qrrps.js → cli-qa0qmmg4.js} +2 -2
  164. package/dist/chunks/{cli-222ywgt0.js → cli-qhefvb54.js} +2 -2
  165. package/dist/chunks/{cli-sxe9wke0.js → cli-qxtxfn2z.js} +1 -1
  166. package/dist/chunks/{cli-bnr79ddy.js → cli-r29k5h5x.js} +2 -2
  167. package/dist/chunks/{cli-a826q5zk.js → cli-rm2gppbh.js} +1 -1
  168. package/dist/chunks/{cli-a25jeqs8.js → cli-rv4z0bsv.js} +2 -2
  169. package/dist/chunks/{cli-g2s3391y.js → cli-s5ee96g6.js} +1 -1
  170. package/dist/chunks/{cli-5kehgkgh.js → cli-sqtf9njc.js} +1 -1
  171. package/dist/chunks/{cli-3hrmwgsv.js → cli-stjsr4fx.js} +2 -2
  172. package/dist/chunks/{cli-tpjr1pz9.js → cli-svyc36nr.js} +1 -1
  173. package/dist/chunks/{cli-j403r21v.js → cli-sw84zjvc.js} +1 -1
  174. package/dist/chunks/{cli-vm7dr5aa.js → cli-tbp8513t.js} +2 -2
  175. package/dist/chunks/{cli-7n4d5yzr.js → cli-tez2hmqw.js} +1 -1
  176. package/dist/chunks/{cli-hs2k9997.js → cli-tfs3as1v.js} +1 -1
  177. package/dist/chunks/{cli-2j6cv2kz.js → cli-tj8fyjds.js} +2 -2
  178. package/dist/chunks/{cli-phwbqkv7.js → cli-tnbyhfne.js} +2 -2
  179. package/dist/chunks/{cli-97vx3m99.js → cli-ttxhmsvc.js} +1 -1
  180. package/dist/chunks/{cli-yb5m6jwq.js → cli-v86f53k0.js} +3 -3
  181. package/dist/chunks/{cli-07f2hk9d.js → cli-v8wqc6y3.js} +1 -1
  182. package/dist/chunks/{cli-m3r80gy0.js → cli-v9wwx1rc.js} +1 -1
  183. package/dist/chunks/{cli-8jym9hp6.js → cli-vbn35zp3.js} +2 -2
  184. package/dist/chunks/{cli-ca1jmr8f.js → cli-vj1rywde.js} +2 -2
  185. package/dist/chunks/cli-vq0ktbx3.js +3 -0
  186. package/dist/chunks/{cli-pgjnzqk4.js → cli-vrs8hpz4.js} +1 -1
  187. package/dist/chunks/{cli-r43jhzwm.js → cli-vzcpa5mx.js} +2 -2
  188. package/dist/chunks/{cli-q0vret0x.js → cli-w0jxph8x.js} +1 -1
  189. package/dist/chunks/{cli-x9s7jxq5.js → cli-w1y2zvbw.js} +2 -2
  190. package/dist/chunks/{cli-vy3e90k9.js → cli-w4zkh280.js} +1 -1
  191. package/dist/chunks/{cli-chvks6bg.js → cli-w8jvw417.js} +1 -1
  192. package/dist/chunks/{cli-ax0ckqpv.js → cli-w8pfefka.js} +1 -1
  193. package/dist/chunks/{cli-rd5ax7sn.js → cli-x0jht735.js} +1 -1
  194. package/dist/chunks/{cli-gypyp608.js → cli-x4rgkedw.js} +1 -1
  195. package/dist/chunks/{cli-asc9xmsr.js → cli-xabdpk7s.js} +1 -1
  196. package/dist/chunks/{cli-1q1b8rgs.js → cli-xq9g16gt.js} +1 -1
  197. package/dist/chunks/{cli-vqne1z50.js → cli-xw96dapq.js} +1 -1
  198. package/dist/chunks/{cli-b29enbbc.js → cli-xza1mmh1.js} +1 -1
  199. package/dist/chunks/{cli-b5z57an7.js → cli-y2g1asak.js} +1 -1
  200. package/dist/chunks/{cli-mcbntv3p.js → cli-yaw2d4zq.js} +1 -1
  201. package/dist/chunks/{cli-yfb8bk69.js → cli-ymqdnbx2.js} +2 -2
  202. package/dist/chunks/{cli-shsgq494.js → cli-yps4pn87.js} +1 -1
  203. package/dist/chunks/{cli-bzrat9yd.js → cli-z1f33m31.js} +2 -2
  204. package/dist/chunks/cli-z6eshqx6.js +3 -0
  205. package/dist/chunks/{cli-9tbmrp89.js → cli-zjznn7cc.js} +1 -1
  206. package/dist/chunks/{cli-ceas97gw.js → cli-zqj1my2v.js} +2 -2
  207. package/dist/chunks/{cli-psqvdh1r.js → cli-zrth7vt6.js} +1 -1
  208. package/dist/chunks/{cli-8z8d5bgb.js → cli-zxrt2zch.js} +2 -2
  209. package/dist/chunks/cli-zxz1xm2y.js +3 -0
  210. package/dist/chunks/client-syew3mvc.js +2 -0
  211. package/dist/chunks/color-qatz507k.js +2 -0
  212. package/dist/chunks/commitAttribution-shckr1cq.js +2 -0
  213. package/dist/chunks/common-jh4pavb6.js +2 -0
  214. package/dist/chunks/{compact-kysg5kxd.js → compact-sxghgg9n.js} +1 -1
  215. package/dist/chunks/config-25r8er6j.js +2 -0
  216. package/dist/chunks/config-ahnc48yv.js +2 -0
  217. package/dist/chunks/{context-aat04hqp.js → context-8vmnhkcn.js} +1 -1
  218. package/dist/chunks/context-noninteractive-r3easde9.js +2 -0
  219. package/dist/chunks/conversation-5j4eggm2.js +2 -0
  220. package/dist/chunks/{copy-zpvnnk85.js → copy-kkwp50xa.js} +1 -1
  221. package/dist/chunks/cost-jpq9rbzx.js +5 -0
  222. package/dist/chunks/createSession-q0a53mn0.js +2 -0
  223. package/dist/chunks/desktop-k6291p1x.js +2 -0
  224. package/dist/chunks/detectRepository-h3gr8gdb.js +2 -0
  225. package/dist/chunks/detection-b0zsvwnb.js +2 -0
  226. package/dist/chunks/{devtools-7jd4m7th.js → devtools-8zc2m716.js} +1 -1
  227. package/dist/chunks/{diff-xaw6ebj0.js → diff-vm40nyxd.js} +1 -1
  228. package/dist/chunks/doctor-y45fmac9.js +2 -0
  229. package/dist/chunks/earlyInput-pegekfhn.js +2 -0
  230. package/dist/chunks/{effort-bj5x7fcg.js → effort-9xnbtb27.js} +1 -1
  231. package/dist/chunks/executor-kx69dfy3.js +2 -0
  232. package/dist/chunks/exit-8r8kx8hm.js +2 -0
  233. package/dist/chunks/{export-tjrkechp.js → export-0wr0abd0.js} +1 -1
  234. package/dist/chunks/extra-usage-nbgas106.js +2 -0
  235. package/dist/chunks/extra-usage-noninteractive-66zmwx05.js +2 -0
  236. package/dist/chunks/fast-8ymdvfm8.js +2 -0
  237. package/dist/chunks/feedback-n8vwr3z9.js +2 -0
  238. package/dist/chunks/{files-n3b22fs2.js → files-mhx9cc10.js} +1 -1
  239. package/dist/chunks/firstPartyEventLogger-paerdr2m.js +2 -0
  240. package/dist/chunks/gates-wngyk842.js +2 -0
  241. package/dist/chunks/git-r7sca128.js +2 -0
  242. package/dist/chunks/goal-zqeb4rnv.js +2 -0
  243. package/dist/chunks/growthbook-z0km1xj1.js +2 -0
  244. package/dist/chunks/{heapdump-2y7wcy1r.js → heapdump-rcge2q0e.js} +1 -1
  245. package/dist/chunks/{help-a7mc9946.js → help-zba127jm.js} +1 -1
  246. package/dist/chunks/{hooks-22nm9hn0.js → hooks-kwyxgfnh.js} +1 -1
  247. package/dist/chunks/hooks-sd4knstw.js +2 -0
  248. package/dist/chunks/{ide-9x5zsk63.js → ide-ph9revqg.js} +1 -1
  249. package/dist/chunks/index-y2qvpmjn.js +2 -0
  250. package/dist/chunks/{initReplBridge-xjc6eaan.js → initReplBridge-0fb0sdd0.js} +1 -1
  251. package/dist/chunks/ink-qfs553mf.js +2 -0
  252. package/dist/chunks/{insights-n7k1ty4n.js → insights-mc3fr5tq.js} +1 -1
  253. package/dist/chunks/{install-github-app-zdsmjft8.js → install-github-app-8bpx4gak.js} +1 -1
  254. package/dist/chunks/{install-rhzcmymh.js → install-jnwzbh9n.js} +1 -1
  255. package/dist/chunks/install-slack-app-mq18xdh4.js +2 -0
  256. package/dist/chunks/instrumentation-r6m6cpwq.js +13 -0
  257. package/dist/chunks/keybindings-5xfde34t.js +3 -0
  258. package/dist/chunks/loadAgentsDir-858gc42y.js +2 -0
  259. package/dist/chunks/loadPluginHooks-nye2wnjd.js +2 -0
  260. package/dist/chunks/login-d806meeh.js +2 -0
  261. package/dist/chunks/logout-7eab6ep8.js +2 -0
  262. package/dist/chunks/{main-6h6y0rzf.js → main-r6t52mjc.js} +14 -14
  263. package/dist/chunks/{mcp-yqhzespv.js → mcp-0vwtqwa6.js} +1 -1
  264. package/dist/chunks/mcp-r18hhy02.js +3 -0
  265. package/dist/chunks/{mcp-yrt7dbxp.js → mcp-y8q5yb60.js} +3 -3
  266. package/dist/chunks/{mcpServer-f90a93nt.js → mcpServer-17f7qjpf.js} +1 -1
  267. package/dist/chunks/{mcpServer-v1dy489g.js → mcpServer-za0c5qxf.js} +1 -1
  268. package/dist/chunks/{memory-mdwb22wh.js → memory-cygg4exk.js} +1 -1
  269. package/dist/chunks/{mobile-j4jwvavn.js → mobile-3b85d257.js} +1 -1
  270. package/dist/chunks/{model-tf1ne2j9.js → model-159q4y9p.js} +1 -1
  271. package/dist/chunks/model-m251ahzh.js +2 -0
  272. package/dist/chunks/{oauth-1b0qpxz4.js → oauth-0bwqgx9q.js} +1 -1
  273. package/dist/chunks/{output-style-t39s3jqx.js → output-style-93keyt16.js} +1 -1
  274. package/dist/chunks/parser-hwq42bt6.js +2 -0
  275. package/dist/chunks/{passes-s3fqswrg.js → passes-q304cea1.js} +1 -1
  276. package/dist/chunks/{permissions-a050zfqv.js → permissions-tyasy9cv.js} +1 -1
  277. package/dist/chunks/plan-24nj1sc9.js +2 -0
  278. package/dist/chunks/plugin-6vddyvyh.js +2 -0
  279. package/dist/chunks/pluginStartupCheck-0vse6r56.js +2 -0
  280. package/dist/chunks/{plugins-4py04yzf.js → plugins-0c98naeb.js} +2 -2
  281. package/dist/chunks/{preauthorizedConfig-hmxcgb8e.js → preauthorizedConfig-et34h6tr.js} +1 -1
  282. package/dist/chunks/{print-pmzxgktf.js → print-z6k6yas1.js} +4 -4
  283. package/dist/chunks/privacy-settings-8j5mffff.js +2 -0
  284. package/dist/chunks/process-22t1nv1h.js +2 -0
  285. package/dist/chunks/{processBashCommand-zkztsgn4.js → processBashCommand-z4dv10xe.js} +1 -1
  286. package/dist/chunks/{processSlashCommand-mfh1h592.js → processSlashCommand-3d7jy9zn.js} +1 -1
  287. package/dist/chunks/prompt-2vc9x4tz.js +2 -0
  288. package/dist/chunks/prompt-n672rb6v.js +2 -0
  289. package/dist/chunks/provider-prompt-cyzsv35w.js +2 -0
  290. package/dist/chunks/{rate-limit-options-kd432dap.js → rate-limit-options-sj78r287.js} +1 -1
  291. package/dist/chunks/registry-eh3nbvrw.js +2 -0
  292. package/dist/chunks/release-notes-242sqhds.js +6 -0
  293. package/dist/chunks/reload-plugins-bnwgt3b2.js +3 -0
  294. package/dist/chunks/{remote-env-rg4k5em5.js → remote-env-gpwv8c1y.js} +1 -1
  295. package/dist/chunks/{remoteBridgeCore-t980tt3v.js → remoteBridgeCore-5f92ewk3.js} +1 -1
  296. package/dist/chunks/rename-q0t9qmps.js +2 -0
  297. package/dist/chunks/{resume-3tc40yn9.js → resume-707rbm95.js} +1 -1
  298. package/dist/chunks/{rewind-b6vg7dxs.js → rewind-2ghm1ys8.js} +1 -1
  299. package/dist/chunks/sandbox-adapter-z2sedaea.js +2 -0
  300. package/dist/chunks/{sandbox-toggle-eke03mr8.js → sandbox-toggle-r0nsvjfe.js} +1 -1
  301. package/dist/chunks/{session-53f3eza5.js → session-7jy47tfh.js} +1 -1
  302. package/dist/chunks/sessionFileAccessHooks-0h2dzr6d.js +2 -0
  303. package/dist/chunks/sessionStorage-na71kng7.js +2 -0
  304. package/dist/chunks/settings-jnqec2t4.js +2 -0
  305. package/dist/chunks/{setup-z05dsr8q.js → setup-exrj5apq.js} +2 -2
  306. package/dist/chunks/{setup-gravfzvg.js → setup-hhnqt5m4.js} +1 -1
  307. package/dist/chunks/setup-sv1h7c9x.js +2 -0
  308. package/dist/chunks/sinks-h5jqp76t.js +2 -0
  309. package/dist/chunks/{skills-41mfq71n.js → skills-7cx810ev.js} +1 -1
  310. package/dist/chunks/startupProfiler-qkkwmx3e.js +2 -0
  311. package/dist/chunks/state-9t5rddcc.js +2 -0
  312. package/dist/chunks/{stats-7qg84dw1.js → stats-4trmdgr9.js} +1 -1
  313. package/dist/chunks/status-qvn7jn0p.js +2 -0
  314. package/dist/chunks/stickers-p4yrfr32.js +2 -0
  315. package/dist/chunks/subprocessEnv-x1xd9x7k.js +2 -0
  316. package/dist/chunks/{systemPromptSections-jxxyhnxe.js → systemPromptSections-pcrphkzc.js} +1 -1
  317. package/dist/chunks/{tag-58ndeaa9.js → tag-bexktcx4.js} +1 -1
  318. package/dist/chunks/tasks-a0mx2drp.js +2 -0
  319. package/dist/chunks/teamHelpers-bfbx13m0.js +2 -0
  320. package/dist/chunks/teammateModeSnapshot-x1dc2d00.js +2 -0
  321. package/dist/chunks/teleport-y1mmes2t.js +2 -0
  322. package/dist/chunks/terminalSetup-a0a8wgbj.js +2 -0
  323. package/dist/chunks/theme-1wm2bpaf.js +2 -0
  324. package/dist/chunks/thinkback-3sz6bf5t.js +2 -0
  325. package/dist/chunks/thinkback-play-swd1vjqn.js +2 -0
  326. package/dist/chunks/toolSearch-8mgqzknz.js +2 -0
  327. package/dist/chunks/trustedDevice-9yp8mttk.js +2 -0
  328. package/dist/chunks/{ultrareviewCommand-qwnsjdez.js → ultrareviewCommand-dj716ryk.js} +1 -1
  329. package/dist/chunks/update-r3pdnfg1.js +82 -0
  330. package/dist/chunks/upgrade-adym17ka.js +2 -0
  331. package/dist/chunks/{upstreamproxy-34wva0r5.js → upstreamproxy-39e2hgq3.js} +1 -1
  332. package/dist/chunks/usage-gehxyrfj.js +2 -0
  333. package/dist/chunks/util-qk39hg9x.js +2 -0
  334. package/dist/chunks/utils-5nwk1214.js +2 -0
  335. package/dist/chunks/vim-zqzf0xh8.js +2 -0
  336. package/dist/chunks/worktree-17wb4yc5.js +2 -0
  337. package/dist/chunks/worktreeModeEnabled-pjb4srr0.js +2 -0
  338. package/dist/cli.js +1 -1
  339. package/package.json +2 -1
  340. package/dist/chunks/App-ncpmz34p.js +0 -2
  341. package/dist/chunks/ApproveApiKey-fqzjf1j3.js +0 -2
  342. package/dist/chunks/BypassPermissionsModeDialog-3ksmd8pp.js +0 -2
  343. package/dist/chunks/ClaudeMdExternalIncludesDialog-rrsfavte.js +0 -2
  344. package/dist/chunks/ConsoleOAuthFlow-04xt4sby.js +0 -2
  345. package/dist/chunks/Doctor-kg5m2zma.js +0 -2
  346. package/dist/chunks/Grove-rf9xhe2e.js +0 -2
  347. package/dist/chunks/InvalidConfigDialog-6spqsgmr.js +0 -2
  348. package/dist/chunks/InvalidSettingsDialog-m6y6esgz.js +0 -2
  349. package/dist/chunks/Onboarding-j1m69bqm.js +0 -2
  350. package/dist/chunks/REPL-bpg86z4h.js +0 -2
  351. package/dist/chunks/ToolSearchTool-4rm3kr13.js +0 -2
  352. package/dist/chunks/TungstenTool-3wjjz6cf.js +0 -2
  353. package/dist/chunks/agents-w6zde2j9.js +0 -4
  354. package/dist/chunks/ant-claude-for-chrome-mcp-gr0b0jr4.js +0 -2
  355. package/dist/chunks/api-07pqphw5.js +0 -2
  356. package/dist/chunks/asciicast-2k1ztt6v.js +0 -2
  357. package/dist/chunks/auth-g509w5pr.js +0 -2
  358. package/dist/chunks/backgroundHousekeeping-hw0chw1d.js +0 -2
  359. package/dist/chunks/caches-3qzm958c.js +0 -2
  360. package/dist/chunks/clear-ssfbry3k.js +0 -2
  361. package/dist/chunks/cli-16k24hzp.js +0 -3
  362. package/dist/chunks/cli-8xz7dd7z.js +0 -3
  363. package/dist/chunks/cli-geka8fb7.js +0 -3
  364. package/dist/chunks/cli-rwh0a2m1.js +0 -3
  365. package/dist/chunks/cli-t5ddsvmv.js +0 -3
  366. package/dist/chunks/cli-t5yqvdb3.js +0 -3
  367. package/dist/chunks/cli-t8ydjjs7.js +0 -3
  368. package/dist/chunks/client-qxx2ja27.js +0 -2
  369. package/dist/chunks/color-k1ew8kzn.js +0 -2
  370. package/dist/chunks/commitAttribution-nsa26sdx.js +0 -2
  371. package/dist/chunks/common-7t28qq0q.js +0 -2
  372. package/dist/chunks/config-d4kj5q8e.js +0 -2
  373. package/dist/chunks/config-txzzncm9.js +0 -2
  374. package/dist/chunks/context-noninteractive-w54t6xnc.js +0 -2
  375. package/dist/chunks/conversation-brecqh0t.js +0 -2
  376. package/dist/chunks/cost-5fbyws6x.js +0 -5
  377. package/dist/chunks/createSession-hsp3x7vw.js +0 -2
  378. package/dist/chunks/desktop-7kdmxet0.js +0 -2
  379. package/dist/chunks/detectRepository-9xqead5f.js +0 -2
  380. package/dist/chunks/detection-z3cdks0s.js +0 -2
  381. package/dist/chunks/doctor-nbm4z0tx.js +0 -2
  382. package/dist/chunks/earlyInput-e8zh4d2d.js +0 -2
  383. package/dist/chunks/executor-e1744nra.js +0 -2
  384. package/dist/chunks/exit-894g29w2.js +0 -2
  385. package/dist/chunks/extra-usage-noninteractive-577ac873.js +0 -2
  386. package/dist/chunks/extra-usage-tfwmdc7z.js +0 -2
  387. package/dist/chunks/fast-1krm57mn.js +0 -2
  388. package/dist/chunks/feedback-2421cbpm.js +0 -2
  389. package/dist/chunks/firstPartyEventLogger-1kwwcqdn.js +0 -2
  390. package/dist/chunks/gates-sd1cp8f2.js +0 -2
  391. package/dist/chunks/git-t6e9xdt2.js +0 -2
  392. package/dist/chunks/goal-0sxyk3va.js +0 -2
  393. package/dist/chunks/growthbook-4hx0kbpq.js +0 -2
  394. package/dist/chunks/hooks-tf9v5b0x.js +0 -2
  395. package/dist/chunks/index-p1k4dhfc.js +0 -2
  396. package/dist/chunks/ink-9n8bszp5.js +0 -2
  397. package/dist/chunks/install-slack-app-vhfe2dsf.js +0 -2
  398. package/dist/chunks/instrumentation-5jjvsvke.js +0 -13
  399. package/dist/chunks/keybindings-tqnmw7ng.js +0 -3
  400. package/dist/chunks/loadAgentsDir-j7pntb5v.js +0 -2
  401. package/dist/chunks/loadPluginHooks-sta7ra57.js +0 -2
  402. package/dist/chunks/login-j7x2fjw8.js +0 -2
  403. package/dist/chunks/logout-53bvwba1.js +0 -2
  404. package/dist/chunks/mcp-3mjagnnt.js +0 -3
  405. package/dist/chunks/model-hz3nn362.js +0 -2
  406. package/dist/chunks/parser-8venanpw.js +0 -2
  407. package/dist/chunks/plan-gjaybyvb.js +0 -2
  408. package/dist/chunks/plugin-trf2388p.js +0 -2
  409. package/dist/chunks/pluginStartupCheck-wxmc7h98.js +0 -2
  410. package/dist/chunks/privacy-settings-b2rz35r5.js +0 -2
  411. package/dist/chunks/process-n5355p53.js +0 -2
  412. package/dist/chunks/prompt-2jyjhkwg.js +0 -2
  413. package/dist/chunks/prompt-b34a0h5z.js +0 -2
  414. package/dist/chunks/provider-prompt-qe4s2yzh.js +0 -2
  415. package/dist/chunks/registry-d7cd5dqg.js +0 -2
  416. package/dist/chunks/release-notes-rwgbn4pp.js +0 -6
  417. package/dist/chunks/reload-plugins-9axdwaaj.js +0 -3
  418. package/dist/chunks/rename-xap3rpbv.js +0 -2
  419. package/dist/chunks/sandbox-adapter-1z8xktva.js +0 -2
  420. package/dist/chunks/sessionFileAccessHooks-xscvsvqt.js +0 -2
  421. package/dist/chunks/sessionStorage-rb63e8bn.js +0 -2
  422. package/dist/chunks/settings-hp0ksjn9.js +0 -2
  423. package/dist/chunks/setup-ssq8b1e6.js +0 -2
  424. package/dist/chunks/sinks-agafqaxj.js +0 -2
  425. package/dist/chunks/startupProfiler-wmf8nvfd.js +0 -2
  426. package/dist/chunks/state-rhxyy4qm.js +0 -2
  427. package/dist/chunks/status-sran2y9h.js +0 -2
  428. package/dist/chunks/stickers-hythmrsd.js +0 -2
  429. package/dist/chunks/subprocessEnv-b12dkzky.js +0 -2
  430. package/dist/chunks/tasks-52g28x72.js +0 -2
  431. package/dist/chunks/teamHelpers-rxt9rvmd.js +0 -2
  432. package/dist/chunks/teammateModeSnapshot-2782d4w9.js +0 -2
  433. package/dist/chunks/teleport-8gjys6yn.js +0 -2
  434. package/dist/chunks/terminalSetup-bbftxeqk.js +0 -2
  435. package/dist/chunks/theme-b38te5rz.js +0 -2
  436. package/dist/chunks/thinkback-05a9q24j.js +0 -2
  437. package/dist/chunks/thinkback-play-1nbagfm5.js +0 -2
  438. package/dist/chunks/toolSearch-7rnke366.js +0 -2
  439. package/dist/chunks/trustedDevice-2dn4981h.js +0 -2
  440. package/dist/chunks/update-ney1krzn.js +0 -82
  441. package/dist/chunks/upgrade-zxxxfq8c.js +0 -2
  442. package/dist/chunks/usage-82ghrfb3.js +0 -2
  443. package/dist/chunks/util-xm9cs164.js +0 -2
  444. package/dist/chunks/utils-zs0ft181.js +0 -2
  445. package/dist/chunks/vim-6gxdrp1k.js +0 -2
  446. package/dist/chunks/worktree-xjxz4ndt.js +0 -2
  447. package/dist/chunks/worktreeModeEnabled-8ndm5yfs.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{$c as Mz,Xc as l6,Yc as _7,Zc as p8,_c as V8,bd as A7,cd as TY}from"./cli-q0vret0x.js";import{ed as l8,fd as Y8,hd as d6}from"./cli-d2pn0xfj.js";import{pd as K7,rd as z7,sd as Y7,td as _Y}from"./cli-g2s3391y.js";import{vd as Rz,xd as o7}from"./cli-jz50hv3m.js";import{Ad as f8,Bd as ez,Cd as c6,Ed as J8,Fd as z6,Gd as Y6,Id as q7,Jd as PY}from"./cli-e3q6b1cv.js";import{Ld as O6,Rd as tz}from"./cli-sbm8tsyq.js";import{cf as u8,df as hz,ef as g8,ff as Jz}from"./cli-0nz8v3dj.js";import{gf as P7,hf as $8,kf as NY}from"./cli-b5z57an7.js";import{$n as D6,AF as sq,An as fz,BF as _8,Bn as b7,Ch as K6,DF as h8,Eo as Q7,Ep as z8,Fh as MY,Fi as $K,Gi as qz,Hi as Kz,ID as lK,Ii as x6,Ip as I6,JD as Gz,Ji as zz,Ki as y8,Lh as I8,Li as R8,MC as cq,Mh as Az,Mn as Vz,Ni as Yz,Oi as Oz,Ou as vK,PC as cK,PD as IK,Pu as w6,QC as rK,RC as M8,SC as yK,SD as G6,Sp as s7,TC as _K,UC as sK,VC as Hz,Vn as e7,Wn as q6,XC as _z,YC as G8,Yn as B8,Zn as m6,_n as C6,cD as B6,co as r8,dD as WK,dr as V6,ei as lz,fi as Qz,hD as r6,hi as XY,iD as x8,jD as iK,jo as i8,mD as jz,mG as j8,nD as yz,nG as i6,oD as oK,pD as sz,tx as QK,uh as Uz,ux as J6,vh as kY,vo as Dz,wD as Wz,wo as S6,xD as BK,xh as iz,yh as GY,yo as Sz,zD as $6}from"./cli-b3k8arn1.js";import{SL as oq,TL as A8,UL as kq,VL as zK,WL as Lq,XL as YK,YL as FK,ZL as A6}from"./cli-4pwyex04.js";import{aO as K8,bO as p6}from"./cli-awe5yg6m.js";import{EO as eK,FO as v6,SO as xq,TO as pq,UO as DK,aP as X7,bP as RY}from"./cli-8jym9hp6.js";import{$P as l7,BQ as dq,DQ as O,FQ as z,JQ as a8,WP as Cz,WQ as qK,fQ as E8,fR as Bq,kP as q8}from"./cli-a2d962bq.js";import{BW as VK,CV as t8,DV as e8,EV as gz,F1 as i7,F3 as j6,FW as uK,NW as y6,Q3 as c7,VV as n8,WV as Vq,cW as PK,eV as T6,j1 as mz,rV as x7,zW as hK}from"./cli-192xnkcx.js";import{d4 as OK,f4 as D8}from"./cli-r43jhzwm.js";import{B5 as KK,C5 as S8}from"./cli-an97yxg9.js";import{$5 as e6,a6 as Z7,c6 as C8,g6 as kz}from"./cli-bdgrtpsy.js";import{G8 as kK,J8 as Lz,L8 as T8}from"./cli-8kpqq0ea.js";import{$8 as H6,_8 as nq}from"./cli-e5yek4vx.js";import{D9 as L6,E9 as r7}from"./cli-zxe1a0ey.js";import{A_ as h6,Y9 as xK,Z9 as Eq,d_ as wK,g_ as rz,j_ as WY,x_ as RK}from"./cli-awb77t95.js";import{K_ as t6,U_ as $7}from"./cli-q8zmmp6z.js";import{hda as uq}from"./cli-qwx84m9c.js";import{useEffect as h7,useRef as J7,useState as n6}from"react";import{jsxDEV as Dq}from"react/jsx-dev-runtime";function Q6({inputValue:K,setInputValue:q,cursorOffset:Y,setCursorOffset:f,error:H,setError:_,result:J,setResult:h,setViewState:W,onAddComplete:P,cliMode:k=!1}){let v=J7(!1),[X,l]=n6(!1),[U,Wq]=n6(""),G=async()=>{let j=K.trim();if(!j){_("Please enter a marketplace source");return}let N=await l6(j);if(!N){_("Invalid marketplace source format. Try: owner/repo, https://..., or ./path");return}if("error"in N){_(N.error);return}_(null);try{l(!0),Wq("");let{name:F,resolvedSource:Z}=await r6(N,(u)=>{Wq(u)});B6(F,{source:Z}),cq();let A=N.source;if(N.source==="github")A=N.repo;if(nq("tengu_marketplace_added",{source_type:A}),P)await P();if(Wq(""),l(!1),k)h(`Successfully added marketplace: ${F}`);else W({type:"browse-marketplace",targetMarketplace:F})}catch(F){let Z=xK(F);if(kK(Z),_(Z.message),Wq(""),l(!1),k)h(`Error: ${Z.message}`);else h(null)}};return h7(()=>{if(K&&!v.current&&!H&&!J)v.current=!0,G()},[]),Dq(O,{flexDirection:"column",children:[Dq(O,{flexDirection:"column",paddingX:1,borderStyle:"round",children:[Dq(O,{marginBottom:1,children:Dq(z,{bold:!0,children:"Add Marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Dq(O,{flexDirection:"column",children:[Dq(z,{children:"Enter marketplace source:"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:"Examples:"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 owner/repo (GitHub)"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 git@github.com:owner/repo.git (SSH)"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 https://example.com/marketplace.json"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 ./path/to/marketplace"},void 0,!1,void 0,this),Dq(O,{marginTop:1,children:Dq(j8,{value:K,onChange:q,onSubmit:G,columns:80,cursorOffset:Y,onChangeCursorOffset:f,focus:!0,showCursor:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&Dq(O,{marginTop:1,children:[Dq(vK,{},void 0,!1,void 0,this),Dq(z,{children:U||"Adding marketplace to configuration\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&Dq(O,{marginTop:1,children:Dq(z,{color:"error",children:H},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&Dq(O,{marginTop:1,children:Dq(z,{children:J},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Dq(O,{marginLeft:3,children:Dq(z,{dimColor:!0,italic:!0,children:Dq(Lq,{children:[Dq(oq,{shortcut:"Enter",action:"add"},void 0,!1,void 0,this),Dq(kq,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var s6=uq(()=>{H6();zK();YK();A8();w6();i6();Bq();wK();T8();cK();oK();_7()});import{c as v7}from"react/compiler-runtime";import T7 from"figures";import{useState as k6}from"react";import{jsxDEV as eq}from"react/jsx-dev-runtime";function j7(K,q,Y,f){let H={};for(let _ of K){let J=Y[_],h=q[_]??"";if(J?.sensitive===!0&&h===""&&f?.[_]!==void 0)continue;if(J?.type==="number"){if(h.trim()==="")continue;let W=Number(h);H[_]=Number.isNaN(W)?h:W}else if(J?.type==="boolean")H[_]=t6(h);else H[_]=h}return H}function W8(K){let q=v7(70),{title:Y,subtitle:f,configSchema:H,initialValues:_,onSave:J,onCancel:h}=K,W;if(q[0]!==H)W=Object.keys(H),q[0]=H,q[1]=W;else W=q[1];let P=W,k;if(q[2]!==H||q[3]!==_)k=(L)=>{if(H[L]?.sensitive===!0)return"";let t=_?.[L];return t===void 0?"":String(t)},q[2]=H,q[3]=_,q[4]=k;else k=q[4];let v=k,[X,l]=k6(0),U;if(q[5]===Symbol.for("react.memo_cache_sentinel"))U={},q[5]=U;else U=q[5];let[Wq,G]=k6(U),j;if(q[6]!==P[0]||q[7]!==v)j=()=>P[0]?v(P[0]):"",q[6]=P[0],q[7]=v,q[8]=j;else j=q[8];let[N,F]=k6(j),Z=P[X],A=Z?H[Z]:null,u;if(q[9]===Symbol.for("react.memo_cache_sentinel"))u={context:"Settings"},q[9]=u;else u=q[9];xq("confirm:no",h,u);let Hq;if(q[10]!==Z||q[11]!==X||q[12]!==N||q[13]!==P||q[14]!==v)Hq=()=>{if(X<P.length-1&&Z){G((t)=>({...t,[Z]:N})),l(N7);let L=P[X+1];F(L?v(L):"")}},q[10]=Z,q[11]=X,q[12]=N,q[13]=P,q[14]=v,q[15]=Hq;else Hq=q[15];let D=Hq,Q;if(q[16]!==H||q[17]!==Z||q[18]!==X||q[19]!==N||q[20]!==P||q[21]!==v||q[22]!==_||q[23]!==J||q[24]!==Wq)Q=()=>{if(!Z)return;let L={...Wq,[Z]:N};if(X===P.length-1)J(j7(P,L,H,_));else{G(L),l(R7);let t=P[X+1];F(t?v(t):"")}},q[16]=H,q[17]=Z,q[18]=X,q[19]=N,q[20]=P,q[21]=v,q[22]=_,q[23]=J,q[24]=Wq,q[25]=Q;else Q=q[25];let r=Q,s;if(q[26]!==r||q[27]!==D)s={"confirm:nextField":D,"confirm:yes":r},q[26]=r,q[27]=D,q[28]=s;else s=q[28];let fq;if(q[29]===Symbol.for("react.memo_cache_sentinel"))fq={context:"Confirmation"},q[29]=fq;else fq=q[29];pq(s,fq);let m;if(q[30]===Symbol.for("react.memo_cache_sentinel"))m=(L,t)=>{if(t.backspace||t.delete){F(y7);return}if(L&&!t.ctrl&&!t.meta&&!t.tab&&!t.return)F((Xq)=>Xq+L)},q[30]=m;else m=q[30];if(qK(m),!A||!Z)return null;let Aq=A.sensitive===!0,Gq=A.required===!0,zq;if(q[31]!==N||q[32]!==Aq)zq=Aq?"*".repeat(e6(N)):N,q[31]=N,q[32]=Aq,q[33]=zq;else zq=q[33];let B=zq,Mq=A.title||Z,hq;if(q[34]!==Gq)hq=Gq&&eq(z,{color:"error",children:" *"},void 0,!1,void 0,this),q[34]=Gq,q[35]=hq;else hq=q[35];let wq;if(q[36]!==Mq||q[37]!==hq)wq=eq(z,{bold:!0,children:[Mq,hq]},void 0,!0,void 0,this),q[36]=Mq,q[37]=hq,q[38]=wq;else wq=q[38];let y;if(q[39]!==A.description)y=A.description&&eq(z,{dimColor:!0,children:A.description},void 0,!1,void 0,this),q[39]=A.description,q[40]=y;else y=q[40];let C;if(q[41]===Symbol.for("react.memo_cache_sentinel"))C=eq(z,{children:[T7.pointerSmall," "]},void 0,!0,void 0,this),q[41]=C;else C=q[41];let g;if(q[42]!==B)g=eq(z,{children:B},void 0,!1,void 0,this),q[42]=B,q[43]=g;else g=q[43];let Oq;if(q[44]===Symbol.for("react.memo_cache_sentinel"))Oq=eq(z,{children:"\u2588"},void 0,!1,void 0,this),q[44]=Oq;else Oq=q[44];let Jq;if(q[45]!==g)Jq=eq(O,{marginTop:1,children:[C,g,Oq]},void 0,!0,void 0,this),q[45]=g,q[46]=Jq;else Jq=q[46];let T;if(q[47]!==wq||q[48]!==y||q[49]!==Jq)T=eq(O,{flexDirection:"column",children:[wq,y,Jq]},void 0,!0,void 0,this),q[47]=wq,q[48]=y,q[49]=Jq,q[50]=T;else T=q[50];let i=X+1,I;if(q[51]!==P.length||q[52]!==i)I=eq(z,{dimColor:!0,children:["Field ",i," of ",P.length]},void 0,!0,void 0,this),q[51]=P.length,q[52]=i,q[53]=I;else I=q[53];let V;if(q[54]!==X||q[55]!==P.length)V=X<P.length-1&&eq(z,{dimColor:!0,children:"Tab: Next field \xB7 Enter: Save and continue"},void 0,!1,void 0,this),q[54]=X,q[55]=P.length,q[56]=V;else V=q[56];let c;if(q[57]!==X||q[58]!==P.length)c=X===P.length-1&&eq(z,{dimColor:!0,children:"Enter: Save configuration"},void 0,!1,void 0,this),q[57]=X,q[58]=P.length,q[59]=c;else c=q[59];let S;if(q[60]!==I||q[61]!==V||q[62]!==c)S=eq(O,{flexDirection:"column",children:[I,V,c]},void 0,!0,void 0,this),q[60]=I,q[61]=V,q[62]=c,q[63]=S;else S=q[63];let $;if(q[64]!==h||q[65]!==f||q[66]!==T||q[67]!==S||q[68]!==Y)$=eq(FK,{title:Y,subtitle:f,onCancel:h,isCancelActive:!1,children:[T,S]},void 0,!0,void 0,this),q[64]=h,q[65]=f,q[66]=T,q[67]=S,q[68]=Y,q[69]=$;else $=q[69];return $}function y7(K){return K.slice(0,-1)}function R7(K){return K+1}function N7(K){return K+1}var W6=uq(()=>{A6();Z7();Bq();DK();$7()});import*as SK from"react";import{jsxDEV as L7}from"react/jsx-dev-runtime";async function N8(K){let{enabled:q,disabled:Y}=await IK();return[...q,...Y].find((f)=>f.repository===K||f.source===K)}function UK({plugin:K,pluginId:q,onDone:Y}){let[f]=SK.useState(()=>{let P=[],k=Yz(K);if(Object.keys(k).length>0)P.push({key:"top-level",title:`Configure ${K.name}`,subtitle:"Plugin options",schema:k,load:()=>y8(q),save:(X)=>R8(q,X,K.manifest.userConfig)});let v=fz(K);for(let X of v)P.push({key:`channel:${X.server}`,title:`Configure ${X.displayName}`,subtitle:`Plugin: ${K.name}`,schema:X.configSchema,load:()=>qz(q,X.server)??void 0,save:(l)=>Kz(q,X.server,l,X.configSchema)});return P}),[H,_]=SK.useState(0),J=SK.useRef(Y);if(J.current=Y,SK.useEffect(()=>{if(f.length===0)J.current("skipped")},[f.length]),f.length===0)return null;let h=f[H];function W(P){try{h.save(P)}catch(v){Y("error",Eq(v));return}let k=H+1;if(k<f.length)_(k);else Y("configured")}return L7(W8,{title:h.title,subtitle:h.subtitle,configSchema:h.schema,initialValues:h.load(),onSave:W,onCancel:()=>Y("skipped")},h.key,!1,void 0,this)}var b8=uq(()=>{wK();zz();b7();G6();Oz();W6()});import{c as m7}from"react/compiler-runtime";import C7 from"figures";import{jsxDEV as M6}from"react/jsx-dev-runtime";function L8(){let K=m7(3),q;if(K[0]===Symbol.for("react.memo_cache_sentinel"))q=Hz(),K[0]=q;else q=K[0];let Y=q,f;if(K[1]===Symbol.for("react.memo_cache_sentinel"))f=M6(z,{color:"claude",children:[C7.warning," "]},void 0,!0,void 0,this),K[1]=f;else f=K[1];let H;if(K[2]===Symbol.for("react.memo_cache_sentinel"))H=M6(O,{marginBottom:1,children:[f,M6(z,{dimColor:!0,italic:!0,children:["Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.",Y?` ${Y}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),K[2]=H;else H=K[2];return H}var X6=uq(()=>{Bq();G8()});import{c as D7}from"react/compiler-runtime";import{jsxDEV as pK}from"react/jsx-dev-runtime";function TK(K){if(K.entry.source&&typeof K.entry.source==="object"&&"source"in K.entry.source&&K.entry.source.source==="github"&&typeof K.entry.source==="object"&&"repo"in K.entry.source)return K.entry.source.repo;return null}function aK(K,q){let Y=[{label:"Install for you (user scope)",action:"install-user"},{label:"Install for all collaborators on this repository (project scope)",action:"install-project"},{label:"Install for you, in this repo only (local scope)",action:"install-local"}];if(K)Y.push({label:"Open homepage",action:"homepage"});if(q)Y.push({label:"View on GitHub",action:"github"});return Y.push({label:"Back to plugin list",action:"back"}),Y}function wz(K){let q=D7(7),{hasSelection:Y}=K,f;if(q[0]!==Y)f=Y&&pK(kq,{action:"plugin:install",context:"Plugin",fallback:"i",description:"install",bold:!0},void 0,!1,void 0,this),q[0]=Y,q[1]=f;else f=q[1];let H,_,J;if(q[2]===Symbol.for("react.memo_cache_sentinel"))H=pK(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),_=pK(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),J=pK(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this),q[2]=H,q[3]=_,q[4]=J;else H=q[2],_=q[3],J=q[4];let h;if(q[5]!==f)h=pK(O,{marginTop:1,children:pK(z,{dimColor:!0,italic:!0,children:pK(Lq,{children:[f,H,_,J]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[5]=f,q[6]=h;else h=q[6];return h}var P6=uq(()=>{zK();YK();Bq()});import{useCallback as jK,useMemo as S7,useRef as I7}from"react";function nK({totalItems:K,maxVisible:q=p7,selectedIndex:Y=0}){let f=K>q,H=I7(0),_=S7(()=>{if(!f)return 0;let N=H.current;if(Y<N)return H.current=Y,Y;if(Y>=N+q){let A=Y-q+1;return H.current=A,A}let F=Math.max(0,K-q),Z=Math.min(N,F);return H.current=Z,Z},[Y,q,f,K]),J=_,h=Math.min(_+q,K),W=jK((N)=>{if(!f)return N;return N.slice(J,h)},[f,J,h]),P=jK((N)=>{return J+N},[J]),k=jK((N)=>{return N>=J&&N<h},[J,h]),v=jK((N)=>{},[]),X=jK(()=>{},[]),l=jK(()=>{},[]),U=jK((N,F)=>{let Z=Math.max(0,Math.min(N,K-1));F(Z)},[K]),Wq=jK((N,F)=>{return!1},[]),G=Math.max(1,Math.ceil(K/q));return{currentPage:Math.floor(_/q),totalPages:G,startIndex:J,endIndex:h,needsPagination:f,pageSize:q,getVisibleItems:W,toActualIndex:P,isOnCurrentPage:k,goToPage:v,nextPage:X,prevPage:l,handleSelectionChange:U,handlePageNavigation:Wq,scrollPosition:{current:Y+1,total:K,canScrollUp:_>0,canScrollDown:_+q<K}}}var p7=5;var m8=()=>{};import AK from"figures";import*as d8 from"react";import{useEffect as _6,useState as lq}from"react";import{jsxDEV as p,Fragment as V7}from"react/jsx-dev-runtime";function Xz({error:K,setError:q,result:Y,setResult:f,setViewState:H,onInstallComplete:_,targetMarketplace:J,targetPlugin:h}){let[W,P]=lq("marketplace-list"),[k,v]=lq(null),[X,l]=lq(null),[U,Wq]=lq([]),[G,j]=lq([]),[N,F]=lq(!0),[Z,A]=lq(null),[u,Hq]=lq(0),[D,Q]=lq(new Set),[r,s]=lq(new Set),fq=nK({totalItems:G.length,selectedIndex:u}),[m,Aq]=lq(0),[Gq,zq]=lq(!1),[B,Mq]=lq(null),[hq,wq]=lq(null),y=d8.useCallback(()=>{if(W==="plugin-list")if(J)H({type:"manage-marketplaces",targetMarketplace:J});else if(U.length===1)H({type:"menu"});else P("marketplace-list"),v(null),Q(new Set);else if(W==="plugin-details")P("plugin-list"),l(null);else H({type:"menu"})},[W,J,H,U.length]);xq("confirm:no",y,{context:"Confirmation"}),_6(()=>{async function T(){try{let i=await WK(),{marketplaces:I,failures:V}=await _K(i),c=[];for(let{name:L,config:t,data:Xq}of I)if(Xq){let E=OK(Xq.plugins,(o)=>Wz(yK(o.name,L)));c.push({name:L,totalPlugins:Xq.plugins.length,installedCount:E,source:M8(t.source)})}c.sort((L,t)=>{if(L.name==="claude-plugin-directory")return-1;if(t.name==="claude-plugin-directory")return 1;return 0}),Wq(c);let S=OK(I,(L)=>L.data!==null),$=sK(V,S);if($)if($.type==="warning")wq($.message+". Showing available marketplaces.");else throw Error($.message);if(c.length===1&&!J&&!h){let L=c[0];if(L)v(L.name),P("plugin-list")}if(h){let L=null,t=null;for(let[Xq]of Object.entries(i)){let E=await iK(Xq);if(E){let o=E.plugins.find((Pq)=>Pq.name===h);if(o){let Pq=yK(o.name,Xq);L={entry:o,marketplaceName:Xq,pluginId:Pq,isInstalled:BK(Pq)},t=Xq;break}}}if(L&&t){let Xq=L.pluginId;if(BK(Xq))q(`Plugin '${Xq}' is already installed globally. Use '/plugin' to manage existing plugins.`);else v(t),l(L),P("plugin-details")}else q(`Plugin "${h}" not found in any marketplace`)}else if(J)if(c.some((t)=>t.name===J))v(J),P("plugin-list");else q(`Marketplace "${J}" not found`)}catch(i){q(i instanceof Error?i.message:"Failed to load marketplaces")}finally{F(!1)}}T()},[q,J,h]),_6(()=>{if(!k)return;let T=!1;async function i(I){F(!0);try{let V=await iK(I);if(T)return;if(!V)throw Error(`Failed to load marketplace: ${I}`);let c=[];for(let S of V.plugins){let $=yK(S.name,I);if(QK($))continue;c.push({entry:S,marketplaceName:I,pluginId:$,isInstalled:BK($)})}try{let S=await p8();if(T)return;if(A(S),S)c.sort(($,L)=>{let t=S.get($.pluginId)??0,Xq=S.get(L.pluginId)??0;if(t!==Xq)return Xq-t;return $.entry.name.localeCompare(L.entry.name)});else c.sort(($,L)=>$.entry.name.localeCompare(L.entry.name))}catch(S){if(T)return;RK(`Failed to fetch install counts: ${Eq(S)}`),c.sort(($,L)=>$.entry.name.localeCompare(L.entry.name))}j(c),Hq(0),Q(new Set)}catch(V){if(T)return;q(V instanceof Error?V.message:"Failed to load plugins")}finally{F(!1)}}return i(k),()=>{T=!0}},[k,q]);let C=async()=>{if(D.size===0)return;let T=G.filter((c)=>D.has(c.pluginId));s(new Set(T.map((c)=>c.pluginId)));let i=0,I=0,V=[];for(let c of T){let S=await lK({pluginId:c.pluginId,entry:c.entry,marketplaceName:c.marketplaceName,scope:"user"});if(S.success)i++;else I++,V.push({name:c.entry.name,reason:S.error})}if(s(new Set),Q(new Set),cq(),I===0){let c=`\u2713 Installed ${i} ${Vq(i,"plugin")}. Run /reload-plugins to activate.`;f(c)}else if(i===0)q(`Failed to install: ${rK(V,!0)}`);else{let c=`\u2713 Installed ${i} of ${i+I} plugins. Failed: ${rK(V,!1)}. Run /reload-plugins to activate successfully installed plugins.`;f(c)}if(i>0){if(_)await _()}H({type:"menu"})},g=async(T,i="user")=>{zq(!0),Mq(null);let I=await lK({pluginId:T.pluginId,entry:T.entry,marketplaceName:T.marketplaceName,scope:i});if(I.success){let V=await N8(T.pluginId);if(V){zq(!1),P({type:"plugin-options",plugin:V,pluginId:T.pluginId});return}if(f(I.message),_)await _();H({type:"menu"})}else zq(!1),Mq(I.error)};_6(()=>{if(K)f(K)},[K,f]),pq({"select:previous":()=>{if(u>0)Hq(u-1)},"select:next":()=>{if(u<U.length-1)Hq(u+1)},"select:accept":()=>{let T=U[u];if(T)v(T.name),P("plugin-list")}},{context:"Select",isActive:W==="marketplace-list"}),pq({"select:previous":()=>{if(u>0)fq.handleSelectionChange(u-1,Hq)},"select:next":()=>{if(u<G.length-1)fq.handleSelectionChange(u+1,Hq)},"select:accept":()=>{if(u===G.length&&D.size>0)C();else if(u<G.length){let T=G[u];if(T)if(T.isInstalled)H({type:"manage-plugins",targetPlugin:T.entry.name,targetMarketplace:T.marketplaceName});else l(T),P("plugin-details"),Aq(0),Mq(null)}}},{context:"Select",isActive:W==="plugin-list"}),pq({"plugin:toggle":()=>{if(u<G.length){let T=G[u];if(T&&!T.isInstalled){let i=new Set(D);if(i.has(T.pluginId))i.delete(T.pluginId);else i.add(T.pluginId);Q(i)}}},"plugin:install":()=>{if(D.size>0)C()}},{context:"Plugin",isActive:W==="plugin-list"});let Oq=d8.useMemo(()=>{if(!X)return[];let T=X.entry.homepage,i=TK(X);return aK(T,i)},[X]);if(pq({"select:previous":()=>{if(m>0)Aq(m-1)},"select:next":()=>{if(m<Oq.length-1)Aq(m+1)},"select:accept":()=>{if(!X)return;let T=Oq[m]?.action,i=X.entry.homepage,I=TK(X);if(T==="install-user")g(X,"user");else if(T==="install-project")g(X,"project");else if(T==="install-local")g(X,"local");else if(T==="homepage"&&i)KK(i);else if(T==="github"&&I)KK(`https://github.com/${I}`);else if(T==="back")P("plugin-list"),l(null)}},{context:"Select",isActive:W==="plugin-details"&&!!X}),typeof W==="object"&&W.type==="plugin-options"){let I=function(V){if(f(V),_)_();H({type:"menu"})},{plugin:T,pluginId:i}=W;return p(UK,{plugin:T,pluginId:i,onDone:(V,c)=>{switch(V){case"configured":I(`\u2713 Installed and configured ${T.name}. Run /reload-plugins to apply.`);break;case"skipped":I(`\u2713 Installed ${T.name}. Run /reload-plugins to apply.`);break;case"error":I(`Installed but failed to save config: ${c}`);break}}},void 0,!1,void 0,this)}if(N)return p(z,{children:"Loading\u2026"},void 0,!1,void 0,this);if(K)return p(z,{color:"error",children:K},void 0,!1,void 0,this);if(W==="marketplace-list"){if(U.length===0)return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Select marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(z,{children:"No marketplaces configured."},void 0,!1,void 0,this),p(z,{dimColor:!0,children:["Add a marketplace first using ","'Add marketplace'","."]},void 0,!0,void 0,this),p(O,{marginTop:1,paddingLeft:1,children:p(z,{dimColor:!0,children:p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Select marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),hq&&p(O,{marginBottom:1,flexDirection:"column",children:p(z,{color:"warning",children:[AK.warning," ",hq]},void 0,!0,void 0,this)},void 0,!1,void 0,this),U.map((T,i)=>p(O,{flexDirection:"column",marginBottom:i<U.length-1?1:0,children:[p(O,{children:p(z,{color:u===i?"suggestion":void 0,children:[u===i?AK.pointer:" "," ",T.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(O,{marginLeft:2,children:p(z,{dimColor:!0,children:[T.totalPlugins," ",Vq(T.totalPlugins,"plugin")," available",T.installedCount>0&&` \xB7 ${T.installedCount} already installed`,T.source&&` \xB7 ${T.source}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},T.name,!0,void 0,this)),p(O,{marginTop:1,children:p(z,{dimColor:!0,italic:!0,children:p(Lq,{children:[p(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(W==="plugin-details"&&X){let T=X.entry.homepage,i=TK(X),I=aK(T,i);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Plugin Details"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(O,{flexDirection:"column",marginBottom:1,children:[p(z,{bold:!0,children:X.entry.name},void 0,!1,void 0,this),X.entry.version&&p(z,{dimColor:!0,children:["Version: ",X.entry.version]},void 0,!0,void 0,this),X.entry.description&&p(O,{marginTop:1,children:p(z,{children:X.entry.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),X.entry.author&&p(O,{marginTop:1,children:p(z,{dimColor:!0,children:["By:"," ",typeof X.entry.author==="string"?X.entry.author:X.entry.author.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p(O,{flexDirection:"column",marginBottom:1,children:[p(z,{bold:!0,children:"Will install:"},void 0,!1,void 0,this),X.entry.commands&&p(z,{dimColor:!0,children:["\xB7 Commands:"," ",Array.isArray(X.entry.commands)?X.entry.commands.join(", "):Object.keys(X.entry.commands).join(", ")]},void 0,!0,void 0,this),X.entry.agents&&p(z,{dimColor:!0,children:["\xB7 Agents:"," ",Array.isArray(X.entry.agents)?X.entry.agents.join(", "):Object.keys(X.entry.agents).join(", ")]},void 0,!0,void 0,this),X.entry.hooks&&p(z,{dimColor:!0,children:["\xB7 Hooks: ",Object.keys(X.entry.hooks).join(", ")]},void 0,!0,void 0,this),X.entry.mcpServers&&p(z,{dimColor:!0,children:["\xB7 MCP Servers:"," ",Array.isArray(X.entry.mcpServers)?X.entry.mcpServers.join(", "):typeof X.entry.mcpServers==="object"?Object.keys(X.entry.mcpServers).join(", "):"configured"]},void 0,!0,void 0,this),!X.entry.commands&&!X.entry.agents&&!X.entry.hooks&&!X.entry.mcpServers&&p(V7,{children:typeof X.entry.source==="object"&&"source"in X.entry.source&&(X.entry.source.source==="github"||X.entry.source.source==="url"||X.entry.source.source==="npm"||X.entry.source.source==="pip")?p(z,{dimColor:!0,children:"\xB7 Component summary not available for remote plugin"},void 0,!1,void 0,this):p(z,{dimColor:!0,children:"\xB7 Components will be discovered at installation"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p(L8,{},void 0,!1,void 0,this),B&&p(O,{marginBottom:1,children:p(z,{color:"error",children:["Error: ",B]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(O,{flexDirection:"column",children:I.map((V,c)=>p(O,{children:[m===c&&p(z,{children:"> "},void 0,!1,void 0,this),m!==c&&p(z,{children:" "},void 0,!1,void 0,this),p(z,{bold:m===c,children:Gq&&V.action==="install"?"Installing\u2026":V.label},void 0,!1,void 0,this)]},V.action,!0,void 0,this))},void 0,!1,void 0,this),p(O,{marginTop:1,paddingLeft:1,children:p(z,{dimColor:!0,children:p(Lq,{children:[p(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(G.length===0)return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Install plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(z,{dimColor:!0,children:"No new plugins available to install."},void 0,!1,void 0,this),p(z,{dimColor:!0,children:"All plugins from this marketplace are already installed."},void 0,!1,void 0,this),p(O,{marginLeft:3,children:p(z,{dimColor:!0,italic:!0,children:p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let Jq=fq.getVisibleItems(G);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Install Plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),fq.scrollPosition.canScrollUp&&p(O,{children:p(z,{dimColor:!0,children:[" ",AK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Jq.map((T,i)=>{let I=fq.toActualIndex(i),V=u===I,c=D.has(T.pluginId),S=r.has(T.pluginId),$=i===Jq.length-1;return p(O,{flexDirection:"column",marginBottom:$&&!K?0:1,children:[p(O,{children:[p(z,{color:V?"suggestion":void 0,children:[V?AK.pointer:" "," "]},void 0,!0,void 0,this),p(z,{color:T.isInstalled?"success":void 0,children:[T.isInstalled?AK.tick:S?AK.ellipsis:c?AK.radioOn:AK.radioOff," ",T.entry.name,T.entry.category&&p(z,{dimColor:!0,children:[" [",T.entry.category,"]"]},void 0,!0,void 0,this),T.entry.tags?.includes("community-managed")&&p(z,{dimColor:!0,children:" [Community Managed]"},void 0,!1,void 0,this),T.isInstalled&&p(z,{dimColor:!0,children:" (installed)"},void 0,!1,void 0,this),Z&&k===I8&&p(z,{dimColor:!0,children:[" \xB7 ",V8(Z.get(T.pluginId)??0)," ","installs"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),T.entry.description&&p(O,{marginLeft:4,children:[p(z,{dimColor:!0,children:C8(T.entry.description,60)},void 0,!1,void 0,this),T.entry.version&&p(z,{dimColor:!0,children:[" \xB7 v",T.entry.version]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},T.pluginId,!0,void 0,this)}),fq.scrollPosition.canScrollDown&&p(O,{children:p(z,{dimColor:!0,children:[" ",AK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&p(O,{marginTop:1,children:p(z,{color:"error",children:[AK.cross," ",K]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(wz,{hasSelection:D.size>0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Pz=uq(()=>{zK();YK();Bq();DK();D8();S8();h6();wK();cK();Mz();$6();G8();oK();Az();Gz();J6();PK();kz();b8();X6();P6();m8()});import{c as $z}from"react/compiler-runtime";import NK from"figures";import*as Zz from"react";import{useCallback as d7,useEffect as Z6,useMemo as E7,useState as Qq}from"react";import{jsxDEV as d,Fragment as tK}from"react/jsx-dev-runtime";function vz({error:K,setError:q,result:Y,setResult:f,setViewState:H,onInstallComplete:_,onSearchModeChange:J,targetPlugin:h}){let[W,P]=Qq("plugin-list"),[k,v]=Qq(null),[X,l]=Qq([]),[U,Wq]=Qq(!0),[G,j]=Qq(null),[N,F]=Qq(!1),Z=d7(($)=>{F($),J?.($)},[J]),{query:A,setQuery:u,cursorOffset:Hq}=g8({isActive:W==="plugin-list"&&N&&!U,onExit:()=>{Z(!1)}}),D=E8(),{columns:Q}=eK(),r=E7(()=>{if(!A)return X;let $=A.toLowerCase();return X.filter((L)=>L.entry.name.toLowerCase().includes($)||L.entry.description?.toLowerCase().includes($)||L.marketplaceName.toLowerCase().includes($))},[X,A]),[s,fq]=Qq(0),[m,Aq]=Qq(new Set),[Gq,zq]=Qq(new Set),B=nK({totalItems:r.length,selectedIndex:s});Z6(()=>{fq(0)},[A]);let[Mq,hq]=Qq(0),[wq,y]=Qq(!1),[C,g]=Qq(null),[Oq,Jq]=Qq(null),[T,i]=Qq(null);Z6(()=>{async function $(){try{let L=await WK(),{marketplaces:t,failures:Xq}=await _K(L),E=[];for(let{name:bq,data:Iq}of t)if(Iq)for(let iq of Iq.plugins){let ZK=yK(iq.name,bq);E.push({entry:iq,marketplaceName:bq,pluginId:ZK,isInstalled:BK(ZK)})}let o=E.filter((bq)=>!bq.isInstalled&&!QK(bq.pluginId));try{let bq=await p8();if(j(bq),bq)o.sort((Iq,iq)=>{let ZK=bq.get(Iq.pluginId)??0,w=bq.get(iq.pluginId)??0;if(ZK!==w)return w-ZK;return Iq.entry.name.localeCompare(iq.entry.name)});else o.sort((Iq,iq)=>Iq.entry.name.localeCompare(iq.entry.name))}catch(bq){RK(`Failed to fetch install counts: ${Eq(bq)}`),o.sort((Iq,iq)=>Iq.entry.name.localeCompare(iq.entry.name))}l(o);let Pq=Object.keys(L).length;if(o.length===0){let bq=await _z({configuredMarketplaceCount:Pq,failedMarketplaceCount:Xq.length});i(bq)}let Nq=OK(t,(bq)=>bq.data!==null),Zq=sK(Xq,Nq);if(Zq)if(Zq.type==="warning")Jq(Zq.message+". Showing available plugins.");else throw Error(Zq.message);if(h){let bq=E.find((Iq)=>Iq.entry.name===h);if(bq)if(bq.isInstalled)q(`Plugin '${bq.pluginId}' is already installed. Use '/plugin' to manage existing plugins.`);else v(bq),P("plugin-details");else q(`Plugin "${h}" not found in any marketplace`)}}catch(L){q(L instanceof Error?L.message:"Failed to load plugins")}finally{Wq(!1)}}$()},[q,h]);let I=async()=>{if(m.size===0)return;let $=X.filter((E)=>m.has(E.pluginId));zq(new Set($.map((E)=>E.pluginId)));let L=0,t=0,Xq=[];for(let E of $){let o=await lK({pluginId:E.pluginId,entry:E.entry,marketplaceName:E.marketplaceName,scope:"user"});if(o.success)L++;else t++,Xq.push({name:E.entry.name,reason:o.error})}if(zq(new Set),Aq(new Set),cq(),t===0){let E=`\u2713 Installed ${L} ${Vq(L,"plugin")}. Run /reload-plugins to activate.`;f(E)}else if(L===0)q(`Failed to install: ${rK(Xq,!0)}`);else{let E=`\u2713 Installed ${L} of ${L+t} plugins. Failed: ${rK(Xq,!1)}. Run /reload-plugins to activate successfully installed plugins.`;f(E)}if(L>0){if(_)await _()}H({type:"menu"})},V=async($,L="user")=>{y(!0),g(null);let t=await lK({pluginId:$.pluginId,entry:$.entry,marketplaceName:$.marketplaceName,scope:L});if(t.success){let Xq=await N8($.pluginId);if(Xq){y(!1),P({type:"plugin-options",plugin:Xq,pluginId:$.pluginId});return}if(f(t.message),_)await _();H({type:"menu"})}else y(!1),g(t.error)};Z6(()=>{if(K)f(K)},[K,f]),xq("confirm:no",()=>{P("plugin-list"),v(null)},{context:"Confirmation",isActive:W==="plugin-details"}),xq("confirm:no",()=>{H({type:"menu"})},{context:"Confirmation",isActive:W==="plugin-list"&&!N}),qK(($,L)=>{let t=!L.ctrl&&!L.meta;if(!N){if($==="/"&&t)Z(!0),u("");else if(t&&$.length>0&&!/^\s+$/.test($)&&$!=="j"&&$!=="k"&&$!=="i")Z(!0),u($)}},{isActive:W==="plugin-list"&&!U}),pq({"select:previous":()=>{if(s===0)Z(!0);else B.handleSelectionChange(s-1,fq)},"select:next":()=>{if(s<r.length-1)B.handleSelectionChange(s+1,fq)},"select:accept":()=>{if(s===r.length&&m.size>0)I();else if(s<r.length){let $=r[s];if($)if($.isInstalled)H({type:"manage-plugins",targetPlugin:$.entry.name,targetMarketplace:$.marketplaceName});else v($),P("plugin-details"),hq(0),g(null)}}},{context:"Select",isActive:W==="plugin-list"&&!N}),pq({"plugin:toggle":()=>{if(s<r.length){let $=r[s];if($&&!$.isInstalled){let L=new Set(m);if(L.has($.pluginId))L.delete($.pluginId);else L.add($.pluginId);Aq(L)}}},"plugin:install":()=>{if(m.size>0)I()}},{context:"Plugin",isActive:W==="plugin-list"&&!N});let c=Zz.useMemo(()=>{if(!k)return[];let $=k.entry.homepage,L=TK(k);return aK($,L)},[k]);if(pq({"select:previous":()=>{if(Mq>0)hq(Mq-1)},"select:next":()=>{if(Mq<c.length-1)hq(Mq+1)},"select:accept":()=>{if(!k)return;let $=c[Mq]?.action,L=k.entry.homepage,t=TK(k);if($==="install-user")V(k,"user");else if($==="install-project")V(k,"project");else if($==="install-local")V(k,"local");else if($==="homepage"&&L)KK(L);else if($==="github"&&t)KK(`https://github.com/${t}`);else if($==="back")P("plugin-list"),v(null)}},{context:"Select",isActive:W==="plugin-details"&&!!k}),typeof W==="object"&&W.type==="plugin-options"){let t=function(Xq){if(f(Xq),_)_();H({type:"menu"})},{plugin:$,pluginId:L}=W;return d(UK,{plugin:$,pluginId:L,onDone:(Xq,E)=>{switch(Xq){case"configured":t(`\u2713 Installed and configured ${$.name}. Run /reload-plugins to apply.`);break;case"skipped":t(`\u2713 Installed ${$.name}. Run /reload-plugins to apply.`);break;case"error":t(`Installed but failed to save config: ${E}`);break}}},void 0,!1,void 0,this)}if(U)return d(z,{children:"Loading\u2026"},void 0,!1,void 0,this);if(K)return d(z,{color:"error",children:K},void 0,!1,void 0,this);if(W==="plugin-details"&&k){let $=k.entry.homepage,L=TK(k),t=aK($,L);return d(O,{flexDirection:"column",children:[d(O,{marginBottom:1,children:d(z,{bold:!0,children:"Plugin details"},void 0,!1,void 0,this)},void 0,!1,void 0,this),d(O,{flexDirection:"column",marginBottom:1,children:[d(z,{bold:!0,children:k.entry.name},void 0,!1,void 0,this),d(z,{dimColor:!0,children:["from ",k.marketplaceName]},void 0,!0,void 0,this),k.entry.version&&d(z,{dimColor:!0,children:["Version: ",k.entry.version]},void 0,!0,void 0,this),k.entry.description&&d(O,{marginTop:1,children:d(z,{children:k.entry.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),k.entry.author&&d(O,{marginTop:1,children:d(z,{dimColor:!0,children:["By:"," ",typeof k.entry.author==="string"?k.entry.author:k.entry.author.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d(L8,{},void 0,!1,void 0,this),C&&d(O,{marginBottom:1,children:d(z,{color:"error",children:["Error: ",C]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d(O,{flexDirection:"column",children:t.map((Xq,E)=>d(O,{children:[Mq===E&&d(z,{children:"> "},void 0,!1,void 0,this),Mq!==E&&d(z,{children:" "},void 0,!1,void 0,this),d(z,{bold:Mq===E,children:wq&&Xq.action.startsWith("install-")?"Installing\u2026":Xq.label},void 0,!1,void 0,this)]},Xq.action,!0,void 0,this))},void 0,!1,void 0,this),d(O,{marginTop:1,children:d(z,{dimColor:!0,children:d(Lq,{children:[d(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),d(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(X.length===0)return d(O,{flexDirection:"column",children:[d(O,{marginBottom:1,children:d(z,{bold:!0,children:"Discover plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),d(g7,{reason:T},void 0,!1,void 0,this),d(O,{marginTop:1,children:d(z,{dimColor:!0,italic:!0,children:"Esc to go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let S=B.getVisibleItems(r);return d(O,{flexDirection:"column",children:[d(O,{children:[d(z,{bold:!0,children:"Discover plugins"},void 0,!1,void 0,this),B.needsPagination&&d(z,{dimColor:!0,children:[" ","(",B.scrollPosition.current,"/",B.scrollPosition.total,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),d(O,{marginBottom:1,children:d(u8,{query:A,isFocused:N,isTerminalFocused:D,width:Q-4,cursorOffset:Hq},void 0,!1,void 0,this)},void 0,!1,void 0,this),Oq&&d(O,{marginBottom:1,children:d(z,{color:"warning",children:[NK.warning," ",Oq]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r.length===0&&A&&d(O,{marginBottom:1,children:d(z,{dimColor:!0,children:['No plugins match "',A,'"']},void 0,!0,void 0,this)},void 0,!1,void 0,this),B.scrollPosition.canScrollUp&&d(O,{children:d(z,{dimColor:!0,children:[" ",NK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),S.map(($,L)=>{let t=B.toActualIndex(L),Xq=s===t,E=m.has($.pluginId),o=Gq.has($.pluginId),Pq=L===S.length-1;return d(O,{flexDirection:"column",marginBottom:Pq&&!K?0:1,children:[d(O,{children:[d(z,{color:Xq&&!N?"suggestion":void 0,children:[Xq&&!N?NK.pointer:" "," "]},void 0,!0,void 0,this),d(z,{children:[o?NK.ellipsis:E?NK.radioOn:NK.radioOff," ",$.entry.name,d(z,{dimColor:!0,children:[" \xB7 ",$.marketplaceName]},void 0,!0,void 0,this),$.entry.tags?.includes("community-managed")&&d(z,{dimColor:!0,children:" [Community Managed]"},void 0,!1,void 0,this),G&&$.marketplaceName===I8&&d(z,{dimColor:!0,children:[" \xB7 ",V8(G.get($.pluginId)??0)," ","installs"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$.entry.description&&d(O,{marginLeft:4,children:d(z,{dimColor:!0,children:C8($.entry.description,60)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},`${B.startIndex}-${$.pluginId}`,!0,void 0,this)}),B.scrollPosition.canScrollDown&&d(O,{children:d(z,{dimColor:!0,children:[" ",NK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&d(O,{marginTop:1,children:d(z,{color:"error",children:[NK.cross," ",K]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d(u7,{hasSelection:m.size>0,canToggle:s<r.length&&!r[s]?.isInstalled},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u7(K){let q=$z(10),{hasSelection:Y,canToggle:f}=K,H;if(q[0]!==Y)H=Y&&d(kq,{action:"plugin:install",context:"Plugin",fallback:"i",description:"install",bold:!0},void 0,!1,void 0,this),q[0]=Y,q[1]=H;else H=q[1];let _;if(q[2]===Symbol.for("react.memo_cache_sentinel"))_=d(z,{children:"type to search"},void 0,!1,void 0,this),q[2]=_;else _=q[2];let J;if(q[3]!==f)J=f&&d(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),q[3]=f,q[4]=J;else J=q[4];let h,W;if(q[5]===Symbol.for("react.memo_cache_sentinel"))h=d(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),W=d(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this),q[5]=h,q[6]=W;else h=q[5],W=q[6];let P;if(q[7]!==H||q[8]!==J)P=d(O,{marginTop:1,children:d(z,{dimColor:!0,italic:!0,children:d(Lq,{children:[H,_,J,h,W]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[7]=H,q[8]=J,q[9]=P;else P=q[9];return P}function g7(K){let q=$z(6),{reason:Y}=K;switch(Y){case"git-not-installed":{let f;if(q[0]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Git is required to install marketplaces."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Please install git and restart Claude Code."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[0]=f;else f=q[0];return f}case"all-blocked-by-policy":{let f;if(q[1]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Your organization policy does not allow any external marketplaces."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Contact your administrator."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[1]=f;else f=q[1];return f}case"policy-restricts-sources":{let f;if(q[2]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Your organization restricts which marketplaces can be added."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Switch to the Marketplaces tab to view allowed sources."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[2]=f;else f=q[2];return f}case"all-marketplaces-failed":{let f;if(q[3]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Failed to load marketplace data."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Check your network connection."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[3]=f;else f=q[3];return f}case"all-plugins-installed":{let f;if(q[4]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"All available plugins are already installed."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Check for new plugins later or add more marketplaces."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[4]=f;else f=q[4];return f}case"no-marketplaces-configured":default:{let f;if(q[5]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"No plugins available."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Add a marketplace first using the Marketplaces tab."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[5]=f;else f=q[5];return f}}}var Tz=uq(()=>{zK();YK();hz();Jz();v6();Bq();DK();D8();S8();h6();wK();cK();Mz();$6();G8();oK();Az();Gz();J6();PK();kz();b8();X6();P6();m8()});import{c as F7}from"react/compiler-runtime";import bK from"figures";import{useEffect as U7,useRef as a7,useState as GK}from"react";import{jsxDEV as b,Fragment as X8}from"react/jsx-dev-runtime";function Nz({setViewState:K,error:q,setError:Y,setResult:f,exitState:H,onManageComplete:_,targetMarketplace:J,action:h}){let[W,P]=GK([]),[k,v]=GK(!0),[X,l]=GK(0),[U,Wq]=GK(!1),[G,j]=GK(null),[N,F]=GK(null),[Z,A]=GK(null),[u,Hq]=GK("list"),[D,Q]=GK(null),[r,s]=GK(0),fq=a7(!1);U7(()=>{async function y(){try{let C=await WK(),{enabled:g,disabled:Oq}=await IK(),Jq=[...g,...Oq],{marketplaces:T,failures:i}=await _K(C),I=[];for(let{name:S,config:$,data:L}of T){let t=Jq.filter((Xq)=>Xq.source.endsWith(`@${S}`));I.push({name:S,source:M8($.source),lastUpdated:$.lastUpdated,pluginCount:L?.plugins.length,installedPlugins:t,pendingUpdate:!1,pendingRemove:!1,autoUpdate:T6(S,$)})}I.sort((S,$)=>{if(S.name==="claude-plugin-directory")return-1;if($.name==="claude-plugin-directory")return 1;return S.name.localeCompare($.name)}),P(I);let V=OK(T,(S)=>S.data!==null),c=sK(i,V);if(c)if(c.type==="warning")j(c.message);else throw Error(c.message);if(J&&!fq.current&&!q){fq.current=!0;let S=I.findIndex(($)=>$.name===J);if(S>=0){let $=I[S];if(h){l(S+1);let L=[...I];if(h==="update")L[S].pendingUpdate=!0;else if(h==="remove")L[S].pendingRemove=!0;P(L),setTimeout(Gq,100,L)}else if($)l(S+1),Q($),Hq("details")}else if(Y)Y(`Marketplace not found: ${J}`)}}catch(C){if(Y)Y(C instanceof Error?C.message:"Failed to load marketplaces");j(C instanceof Error?C.message:"Failed to load marketplaces")}finally{v(!1)}}y()},[J,h,q]);let m=()=>{return W.some((y)=>y.pendingUpdate||y.pendingRemove)},Aq=()=>{let y=OK(W,(g)=>g.pendingUpdate),C=OK(W,(g)=>g.pendingRemove);return{updateCount:y,removeCount:C}},Gq=async(y)=>{let C=y||W,g=u==="details";Wq(!0),j(null),F(null),A(null);try{let Oq=hK("userSettings"),Jq=0,T=0,i=new Set;for(let E of C){if(E.pendingRemove){if(E.installedPlugins&&E.installedPlugins.length>0){let o={...Oq?.enabledPlugins};for(let Pq of E.installedPlugins){let Nq=yK(Pq.name,E.name);o[Nq]=!1}VK("userSettings",{enabledPlugins:o})}await x8(E.name),T++,nq("tengu_marketplace_removed",{marketplace_name:E.name,plugins_uninstalled:E.installedPlugins?.length||0});continue}if(E.pendingUpdate)await jz(E.name,(o)=>{A(o)}),Jq++,i.add(E.name.toLowerCase()),nq("tengu_marketplace_updated",{marketplace_name:E.name})}let I=0;if(i.size>0)I=(await Rz(i)).length;if(cq(),_)await _();let V=await WK(),{enabled:c,disabled:S}=await IK(),$=[...c,...S],{marketplaces:L}=await _K(V),t=[];for(let{name:E,config:o,data:Pq}of L){let Nq=$.filter((Zq)=>Zq.source.endsWith(`@${E}`));t.push({name:E,source:M8(o.source),lastUpdated:o.lastUpdated,pluginCount:Pq?.plugins.length,installedPlugins:Nq,pendingUpdate:!1,pendingRemove:!1,autoUpdate:T6(E,o)})}if(t.sort((E,o)=>{if(E.name==="claude-plugin-directory")return-1;if(o.name==="claude-plugin-directory")return 1;return E.name.localeCompare(o.name)}),P(t),g&&D){let E=t.find((o)=>o.name===D.name);if(E)Q(E)}let Xq=[];if(Jq>0){let E=I>0?` (${I} ${Vq(I,"plugin")} bumped)`:"";Xq.push(`Updated ${Jq} ${Vq(Jq,"marketplace")}${E}`)}if(T>0)Xq.push(`Removed ${T} ${Vq(T,"marketplace")}`);if(Xq.length>0){let E=`${bK.tick} ${Xq.join(", ")}`;if(g)F(E);else f(E),setTimeout(K,2000,{type:"menu"})}else if(!g)K({type:"menu"})}catch(Oq){let Jq=Eq(Oq);if(j(Jq),Y)Y(Jq)}finally{Wq(!1),A(null)}},zq=async()=>{if(!D)return;let y=W.map((C)=>C.name===D.name?{...C,pendingRemove:!0}:C);P(y),await Gq(y)},B=(y)=>{if(!y)return[];let C=[{label:`Browse plugins (${y.pluginCount??0})`,value:"browse"},{label:"Update marketplace",secondaryLabel:y.lastUpdated?`(last updated ${new Date(y.lastUpdated).toLocaleDateString()})`:void 0,value:"update"}];if(!j6())C.push({label:y.autoUpdate?"Disable auto-update":"Enable auto-update",value:"toggle-auto-update"});return C.push({label:"Remove marketplace",value:"remove"}),C},Mq=async(y)=>{let C=!y.autoUpdate;try{await yz(y.name,C),P((g)=>g.map((Oq)=>Oq.name===y.name?{...Oq,autoUpdate:C}:Oq)),Q((g)=>g?{...g,autoUpdate:C}:g)}catch(g){j(g instanceof Error?g.message:"Failed to update setting")}};if(xq("confirm:no",()=>{Hq("list"),s(0)},{context:"Confirmation",isActive:!U&&(u==="details"||u==="confirm-remove")}),xq("confirm:no",()=>{P((y)=>y.map((C)=>({...C,pendingUpdate:!1,pendingRemove:!1}))),l(0)},{context:"Confirmation",isActive:!U&&u==="list"&&m()}),xq("confirm:no",()=>{K({type:"menu"})},{context:"Confirmation",isActive:!U&&u==="list"&&!m()}),pq({"select:previous":()=>l((y)=>Math.max(0,y-1)),"select:next":()=>{let y=W.length+1;l((C)=>Math.min(y-1,C+1))},"select:accept":()=>{let y=X-1;if(X===0)K({type:"add-marketplace"});else if(m())Gq();else{let C=W[y];if(C)Q(C),Hq("details"),s(0)}}},{context:"Select",isActive:!U&&u==="list"}),qK((y)=>{let C=X-1;if((y==="u"||y==="U")&&C>=0)P((g)=>g.map((Oq,Jq)=>Jq===C?{...Oq,pendingUpdate:!Oq.pendingUpdate,pendingRemove:Oq.pendingUpdate?Oq.pendingRemove:!1}:Oq));else if((y==="r"||y==="R")&&C>=0){let g=W[C];if(g)Q(g),Hq("confirm-remove")}},{isActive:!U&&u==="list"}),pq({"select:previous":()=>s((y)=>Math.max(0,y-1)),"select:next":()=>{let y=B(D);s((C)=>Math.min(y.length-1,C+1))},"select:accept":()=>{if(!D)return;let C=B(D)[r];if(C?.value==="browse")K({type:"browse-marketplace",targetMarketplace:D.name});else if(C?.value==="update"){let g=W.map((Oq)=>Oq.name===D.name?{...Oq,pendingUpdate:!0}:Oq);P(g),Gq(g)}else if(C?.value==="toggle-auto-update")Mq(D);else if(C?.value==="remove")Hq("confirm-remove")}},{context:"Select",isActive:!U&&u==="details"}),qK((y)=>{if(y==="y"||y==="Y")zq();else if(y==="n"||y==="N")Hq("list"),Q(null)},{isActive:!U&&u==="confirm-remove"}),k)return b(z,{children:"Loading marketplaces\u2026"},void 0,!1,void 0,this);if(W.length===0)return b(O,{flexDirection:"column",children:[b(O,{marginBottom:1,children:b(z,{bold:!0,children:"Manage marketplaces"},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{flexDirection:"row",gap:1,children:[b(z,{color:"suggestion",children:[bK.pointer," +"]},void 0,!0,void 0,this),b(z,{bold:!0,color:"suggestion",children:"Add Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b(O,{marginLeft:3,children:b(z,{dimColor:!0,italic:!0,children:H.pending?b(X8,{children:["Press ",H.keyName," again to go back"]},void 0,!0,void 0,this):b(Lq,{children:[b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(u==="confirm-remove"&&D){let y=D.installedPlugins?.length||0;return b(O,{flexDirection:"column",children:[b(z,{bold:!0,color:"warning",children:["Remove marketplace ",b(z,{italic:!0,children:D.name},void 0,!1,void 0,this),"?"]},void 0,!0,void 0,this),b(O,{flexDirection:"column",children:[y>0&&b(O,{marginTop:1,children:b(z,{color:"warning",children:["This will also uninstall ",y," ",Vq(y,"plugin")," from this marketplace:"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),D.installedPlugins&&D.installedPlugins.length>0&&b(O,{flexDirection:"column",marginTop:1,marginLeft:2,children:D.installedPlugins.map((C)=>b(z,{dimColor:!0,children:["\u2022 ",C.name]},C.name,!0,void 0,this))},void 0,!1,void 0,this),b(O,{marginTop:1,children:b(z,{children:["Press ",b(z,{bold:!0,children:"y"},void 0,!1,void 0,this)," to confirm or ",b(z,{bold:!0,children:"n"},void 0,!1,void 0,this)," to cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}if(u==="details"&&D){let y=D.pendingUpdate||U,C=B(D);return b(O,{flexDirection:"column",children:[b(z,{bold:!0,children:D.name},void 0,!1,void 0,this),b(z,{dimColor:!0,children:D.source},void 0,!1,void 0,this),b(O,{marginTop:1,children:b(z,{children:[D.pluginCount||0," available"," ",Vq(D.pluginCount||0,"plugin")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),D.installedPlugins&&D.installedPlugins.length>0&&b(O,{flexDirection:"column",marginTop:1,children:[b(z,{bold:!0,children:["Installed plugins (",D.installedPlugins.length,"):"]},void 0,!0,void 0,this),b(O,{flexDirection:"column",marginLeft:1,children:D.installedPlugins.map((g)=>b(O,{flexDirection:"row",gap:1,children:[b(z,{children:bK.bullet},void 0,!1,void 0,this),b(O,{flexDirection:"column",children:[b(z,{children:g.name},void 0,!1,void 0,this),b(z,{dimColor:!0,children:g.manifest.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},g.name,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y&&b(O,{marginTop:1,flexDirection:"column",children:[b(z,{color:"claude",children:"Updating marketplace\u2026"},void 0,!1,void 0,this),Z&&b(z,{dimColor:!0,children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!y&&N&&b(O,{marginTop:1,children:b(z,{color:"claude",children:N},void 0,!1,void 0,this)},void 0,!1,void 0,this),!y&&G&&b(O,{marginTop:1,children:b(z,{color:"error",children:G},void 0,!1,void 0,this)},void 0,!1,void 0,this),!y&&b(O,{flexDirection:"column",marginTop:1,children:C.map((g,Oq)=>{if(!g)return null;let Jq=Oq===r;return b(O,{children:[b(z,{color:Jq?"suggestion":void 0,children:[Jq?bK.pointer:" "," ",g.label]},void 0,!0,void 0,this),g.secondaryLabel&&b(z,{dimColor:!0,children:[" ",g.secondaryLabel]},void 0,!0,void 0,this)]},g.value,!0,void 0,this)})},void 0,!1,void 0,this),!y&&!j6()&&D.autoUpdate&&b(O,{marginTop:1,children:b(z,{dimColor:!0,children:"Auto-update enabled. Claude Code will automatically update this marketplace and its installed plugins."},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{marginLeft:3,children:b(z,{dimColor:!0,italic:!0,children:y?b(X8,{children:"Please wait\u2026"},void 0,!1,void 0,this):b(Lq,{children:[b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}let{updateCount:hq,removeCount:wq}=Aq();return b(O,{flexDirection:"column",children:[b(O,{marginBottom:1,children:b(z,{bold:!0,children:"Manage marketplaces"},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{flexDirection:"row",gap:1,marginBottom:1,children:[b(z,{color:X===0?"suggestion":void 0,children:[X===0?bK.pointer:" "," +"]},void 0,!0,void 0,this),b(z,{bold:!0,color:X===0?"suggestion":void 0,children:"Add Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b(O,{flexDirection:"column",children:W.map((y,C)=>{let g=C+1===X,Oq=[];if(y.pendingUpdate)Oq.push("UPDATE");if(y.pendingRemove)Oq.push("REMOVE");return b(O,{flexDirection:"row",gap:1,marginBottom:1,children:[b(z,{color:g?"suggestion":void 0,children:[g?bK.pointer:" "," ",y.pendingRemove?bK.cross:bK.bullet]},void 0,!0,void 0,this),b(O,{flexDirection:"column",flexGrow:1,children:[b(O,{flexDirection:"row",gap:1,children:[b(z,{bold:!0,strikethrough:y.pendingRemove,dimColor:y.pendingRemove,children:[y.name==="claude-plugins-official"&&b(z,{color:"claude",children:"\u273B "},void 0,!1,void 0,this),y.name,y.name==="claude-plugins-official"&&b(z,{color:"claude",children:" \u273B"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Oq.length>0&&b(z,{color:"warning",children:["[",Oq.join(", "),"]"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),b(z,{dimColor:!0,children:y.source},void 0,!1,void 0,this),b(z,{dimColor:!0,children:[y.pluginCount!==void 0&&b(X8,{children:[y.pluginCount," available"]},void 0,!0,void 0,this),y.installedPlugins&&y.installedPlugins.length>0&&b(X8,{children:[" \u2022 ",y.installedPlugins.length," installed"]},void 0,!0,void 0,this),y.lastUpdated&&b(X8,{children:[" ","\u2022 Updated"," ",new Date(y.lastUpdated).toLocaleDateString()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},y.name,!0,void 0,this)})},void 0,!1,void 0,this),m()&&b(O,{marginTop:1,flexDirection:"column",children:[b(z,{children:[b(z,{bold:!0,children:"Pending changes:"},void 0,!1,void 0,this)," ",b(z,{dimColor:!0,children:"Enter to apply"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hq>0&&b(z,{children:["\u2022 Update ",hq," ",Vq(hq,"marketplace")]},void 0,!0,void 0,this),wq>0&&b(z,{color:"warning",children:["\u2022 Remove ",wq," ",Vq(wq,"marketplace")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),U&&b(O,{marginTop:1,children:b(z,{color:"claude",children:"Processing changes\u2026"},void 0,!1,void 0,this)},void 0,!1,void 0,this),G&&b(O,{marginTop:1,children:b(z,{color:"error",children:G},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(n7,{exitState:H,hasPendingActions:m()},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n7(K){let q=F7(18),{exitState:Y,hasPendingActions:f}=K;if(Y.pending){let v;if(q[0]!==Y.keyName)v=b(O,{marginTop:1,children:b(z,{dimColor:!0,italic:!0,children:["Press ",Y.keyName," again to go back"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),q[0]=Y.keyName,q[1]=v;else v=q[1];return v}let H;if(q[2]!==f)H=f&&b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"apply changes"},void 0,!1,void 0,this),q[2]=f,q[3]=H;else H=q[3];let _;if(q[4]!==f)_=!f&&b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),q[4]=f,q[5]=_;else _=q[5];let J;if(q[6]!==f)J=!f&&b(oq,{shortcut:"u",action:"update"},void 0,!1,void 0,this),q[6]=f,q[7]=J;else J=q[7];let h;if(q[8]!==f)h=!f&&b(oq,{shortcut:"r",action:"remove"},void 0,!1,void 0,this),q[8]=f,q[9]=h;else h=q[9];let W=f?"cancel":"go back",P;if(q[10]!==W)P=b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:W},void 0,!1,void 0,this),q[10]=W,q[11]=P;else P=q[11];let k;if(q[12]!==H||q[13]!==_||q[14]!==J||q[15]!==h||q[16]!==P)k=b(O,{marginTop:1,children:b(z,{dimColor:!0,italic:!0,children:b(Lq,{children:[H,_,J,h,P]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[12]=H,q[13]=_,q[14]=J,q[15]=h,q[16]=P,q[17]=k;else k=q[17];return k}var bz=uq(()=>{H6();zK();YK();A8();Bq();DK();D8();c7();wK();cK();G8();oK();o7();G6();x7();y6();PK()});import{c as B7}from"react/compiler-runtime";import{jsxDEV as c8}from"react/jsx-dev-runtime";function o8(K){let q=B7(9),{serverToolsCount:Y,serverPromptsCount:f,serverResourcesCount:H}=K,_;if(q[0]!==f||q[1]!==H||q[2]!==Y){if(_=[],Y>0)_.push("tools");if(H>0)_.push("resources");if(f>0)_.push("prompts");q[0]=f,q[1]=H,q[2]=Y,q[3]=_}else _=q[3];let J;if(q[4]===Symbol.for("react.memo_cache_sentinel"))J=c8(z,{bold:!0,children:"Capabilities: "},void 0,!1,void 0,this),q[4]=J;else J=q[4];let h;if(q[5]!==_)h=_.length>0?c8(Lq,{children:_},void 0,!1,void 0,this):"none",q[5]=_,q[6]=h;else h=q[6];let W;if(q[7]!==h)W=c8(O,{children:[J,c8(z,{color:"text",children:h},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[7]=h,q[8]=W;else W=q[8];return W}var R6=uq(()=>{Bq();YK()});function F8(K,q){switch(K.client.type){case"connected":return{message:`Reconnected to ${q}.`,success:!0};case"needs-auth":return{message:`${q} requires authentication. Use the 'Authenticate' option.`,success:!1};case"failed":return{message:`Failed to reconnect to ${q}.`,success:!1};default:return{message:`Unknown result when reconnecting to ${q}.`,success:!1}}}function P8(K,q){let Y=K instanceof Error?K.message:String(K);return`Error reconnecting to ${q}: ${Y}`}var N6=()=>{};import dK from"figures";import JK,{useEffect as t7,useRef as b6,useState as MK}from"react";import{jsxDEV as R,Fragment as U8}from"react/jsx-dev-runtime";function Q8({server:K,serverToolsCount:q,onViewTools:Y,onCancel:f,onComplete:H,borderless:_=!1}){let[J]=q8(),h=K8(),{columns:W}=eK(),[P,k]=JK.useState(!1),[v,X]=JK.useState(null),l=sq((o)=>o.mcp),U=_8(),[Wq,G]=JK.useState(null),[j,N]=MK(!1),F=b6(null),[Z,A]=MK(!1),[u,Hq]=MK(null),[D,Q]=MK(!1),[r,s]=MK(null),[fq,m]=MK(!1),[Aq,Gq]=MK(!1),zq=b6(void 0),B=b6(!1),[Mq,hq]=MK(""),[wq,y]=MK(0),[C,g]=MK(null);t7(()=>()=>{if(B.current=!0,F.current?.abort(),zq.current!==void 0)clearTimeout(zq.current)},[]);let Oq=K.isAuthenticated||K.client.type==="connected"&&q>0,Jq=l8(),T=JK.useCallback(async()=>{A(!1),Hq(null),N(!0);try{let o=await Jq(K.name),Pq=o.client.type==="connected";if(nq("tengu_claudeai_mcp_auth_completed",{success:Pq}),Pq)H?.(`Authentication successful. Connected to ${K.name}.`);else if(o.client.type==="needs-auth")H?.("Authentication successful, but server still requires authentication. You may need to manually restart UnieAI Code.");else H?.("Authentication successful, but server reconnection failed. You may need to manually restart UnieAI Code for the changes to take effect.")}catch(o){nq("tengu_claudeai_mcp_auth_completed",{success:!1}),H?.(P8(o,K.name))}finally{N(!1)}},[Jq,K.name,H]),i=JK.useCallback(async()=>{await I6(K.name,{...K.config,scope:K.scope}),U((o)=>{let Pq=o.mcp.clients.map((Iq)=>Iq.name===K.name?{...Iq,type:"needs-auth"}:Iq),Nq=m6(o.mcp.tools,K.name),Zq=C6(o.mcp.commands,K.name),bq=D6(o.mcp.resources,K.name);return{...o,mcp:{...o.mcp,clients:Pq,tools:Nq,commands:Zq,resources:bq}}}),nq("tengu_claudeai_mcp_clear_auth_completed",{}),H?.(`Disconnected from ${K.name}.`),Q(!1),s(null),m(!1)},[K.name,K.config,K.scope,U,H]);xq("confirm:no",()=>{F.current?.abort(),F.current=null,k(!1),G(null)},{context:"Confirmation",isActive:P}),xq("confirm:no",()=>{A(!1),Hq(null)},{context:"Confirmation",isActive:Z}),xq("confirm:no",()=>{Q(!1),s(null),m(!1)},{context:"Confirmation",isActive:D}),qK((o,Pq)=>{if(Pq.return&&Z)T();if(Pq.return&&D)if(fq)i();else{let Nq=`${L6().CLAUDE_AI_ORIGIN}/settings/connectors`;s(Nq),m(!0),KK(Nq)}if(o==="c"&&!Aq){let Nq=Wq||u||r;if(Nq)Cz(Nq).then((Zq)=>{if(B.current)return;if(Zq)process.stdout.write(Zq);if(Gq(!0),zq.current!==void 0)clearTimeout(zq.current);zq.current=setTimeout(Gq,2000,!1)})}});let I=n8(String(K.name)),V=B8(l.commands,K.name).length,c=Y8(),S=JK.useCallback(async()=>{let o=L6().CLAUDE_AI_ORIGIN,Nq=mz()?.organizationUuid,Zq;if(Nq&&K.config.type==="claudeai-proxy"&&K.config.id){let bq=K.config.id.startsWith("mcprs")?"mcpsrv"+K.config.id.slice(5):K.config.id,Iq=encodeURIComponent(process.env.CLAUDE_CODE_ENTRYPOINT||"cli");Zq=`${o}/api/organizations/${Nq}/mcp/start-auth/${bq}?product_surface=${Iq}`}else Zq=`${o}/settings/connectors`;Hq(Zq),A(!0),nq("tengu_claudeai_mcp_auth_started",{}),await KK(Zq)},[K.config]),$=JK.useCallback(()=>{Q(!0),nq("tengu_claudeai_mcp_clear_auth_started",{})},[]),L=JK.useCallback(async()=>{let o=K.client.type!=="disabled";try{if(await c(K.name),K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_toggle",{new_state:o?"disabled":"enabled"});f()}catch(Pq){H?.(`Failed to ${o?"disable":"enable"} MCP server '${K.name}': ${Eq(Pq)}`)}},[K.client.type,K.config.type,K.name,c,f,H]),t=JK.useCallback(async()=>{if(K.config.type==="claudeai-proxy")return;k(!0),X(null);let o=new AbortController;F.current=o;try{if(K.isAuthenticated&&K.config)await S6(K.name,K.config,{preserveStepUpState:!0});if(K.config){await Sz(K.name,K.config,G,o.signal,{onWaitingForCallback:(Nq)=>{g(()=>Nq)}}),nq("tengu_mcp_auth_config_authenticate",{wasAuthenticated:K.isAuthenticated});let Pq=await Jq(K.name);if(Pq.client.type==="connected"){let Nq=Oq?`Authentication successful. Reconnected to ${K.name}.`:`Authentication successful. Connected to ${K.name}.`;H?.(Nq)}else if(Pq.client.type==="needs-auth")H?.("Authentication successful, but server still requires authentication. You may need to manually restart UnieAI Code.");else Lz(K.name,"Reconnection failed after authentication"),H?.("Authentication successful, but server reconnection failed. You may need to manually restart UnieAI Code for the changes to take effect.")}}catch(Pq){if(Pq instanceof Error&&!(Pq instanceof Dz))X(Pq.message)}finally{k(!1),F.current=null,g(null),hq("")}},[K.isAuthenticated,K.config,K.name,H,Jq,Oq]),Xq=async()=>{if(K.config.type==="claudeai-proxy")return;if(K.config)await S6(K.name,K.config),nq("tengu_mcp_auth_config_clear",{}),await I6(K.name,{...K.config,scope:K.scope}),U((o)=>{let Pq=o.mcp.clients.map((Iq)=>Iq.name===K.name?{...Iq,type:"failed"}:Iq),Nq=m6(o.mcp.tools,K.name),Zq=C6(o.mcp.commands,K.name),bq=D6(o.mcp.resources,K.name);return{...o,mcp:{...o.mcp,clients:Pq,tools:Nq,commands:Zq,resources:bq}}}),H?.(`Authentication cleared for ${K.name}.`)};if(P){let o=K.config.type!=="claudeai-proxy"&&K.config.oauth?.xaa?" Authenticating via your identity provider":" A browser window will open for authentication";return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Authenticating with ",K.name,"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Wq&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser doesn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:Wq},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P&&Wq&&C&&R(O,{flexDirection:"column",marginTop:1,children:[R(z,{dimColor:!0,children:"If the redirect page shows a connection error, paste the URL from your browser's address bar:"},void 0,!1,void 0,this),R(O,{children:[R(z,{dimColor:!0,children:["URL ",">"," "]},void 0,!0,void 0,this),R(j8,{value:Mq,onChange:hq,onSubmit:(Pq)=>{C(Pq.trim()),hq("")},cursorOffset:wq,onChangeCursorOffset:y,columns:W-8},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,children:R(z,{dimColor:!0,children:"Return here after authenticating in your browser. Press Esc to go back."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(Z)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Authenticating with ",K.name,"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:" A browser window will open for authentication"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser doesn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:u},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," after authenticating in your browser."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(D)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Clear authentication for ",K.name]},void 0,!0,void 0,this),fq?R(U8,{children:[R(z,{children:'Find the MCP server in the browser and click "Disconnect".'},void 0,!1,void 0,this),r&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser didn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," when done."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):R(U8,{children:[R(z,{children:'This will open claude.ai in the browser. Find the MCP server in the list and click "Disconnect".'},void 0,!1,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," to open the browser."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(j)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"text",children:["Connecting to ",R(z,{bold:!0,children:K.name},void 0,!1,void 0,this),"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:" Establishing connection to MCP server"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(z,{dimColor:!0,children:"This may take a few moments."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let E=[];if(K.client.type==="disabled")E.push({label:"Enable",value:"toggle-enabled"});if(K.client.type==="connected"&&q>0)E.push({label:"View tools",value:"tools"});if(K.config.type==="claudeai-proxy"){if(K.client.type==="connected")E.push({label:"Clear authentication",value:"claudeai-clear-auth"});else if(K.client.type!=="disabled")E.push({label:"Authenticate",value:"claudeai-auth"})}else{if(Oq)E.push({label:"Re-authenticate",value:"reauth"}),E.push({label:"Clear authentication",value:"clear-auth"});if(!Oq)E.push({label:"Authenticate",value:"auth"})}if(K.client.type!=="disabled"){if(K.client.type!=="needs-auth")E.push({label:"Reconnect",value:"reconnectMcpServer"});E.push({label:"Disable",value:"toggle-enabled"})}if(E.length===0)E.push({label:"Back",value:"back"});return R(O,{flexDirection:"column",children:[R(O,{flexDirection:"column",paddingX:1,borderStyle:_?void 0:"round",children:[R(O,{marginBottom:1,children:R(z,{bold:!0,children:[I," MCP Server"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),R(O,{flexDirection:"column",gap:0,children:[R(O,{children:[R(z,{bold:!0,children:"Status: "},void 0,!1,void 0,this),K.client.type==="disabled"?R(z,{children:[dq("inactive",J)(dK.radioOff)," disabled"]},void 0,!0,void 0,this):K.client.type==="connected"?R(z,{children:[dq("success",J)(dK.tick)," connected"]},void 0,!0,void 0,this):K.client.type==="pending"?R(U8,{children:[R(z,{dimColor:!0,children:dK.radioOff},void 0,!1,void 0,this),R(z,{children:" connecting\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):K.client.type==="needs-auth"?R(z,{children:[dq("warning",J)(dK.triangleUpOutline)," needs authentication"]},void 0,!0,void 0,this):R(z,{children:[dq("error",J)(dK.cross)," failed"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),K.transport!=="claudeai-proxy"&&R(O,{children:[R(z,{bold:!0,children:"Auth: "},void 0,!1,void 0,this),Oq?R(z,{children:[dq("success",J)(dK.tick)," authenticated"]},void 0,!0,void 0,this):R(z,{children:[dq("error",J)(dK.cross)," not authenticated"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R(O,{children:[R(z,{bold:!0,children:"URL: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:K.config.url},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{children:[R(z,{bold:!0,children:"Config location: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:r8(K.scope)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.client.type==="connected"&&R(o8,{serverToolsCount:q,serverPromptsCount:V,serverResourcesCount:l.resources[K.name]?.length||0},void 0,!1,void 0,this),K.client.type==="connected"&&q>0&&R(O,{children:[R(z,{bold:!0,children:"Tools: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:[q," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v&&R(O,{marginTop:1,children:R(z,{color:"error",children:["Error: ",v]},void 0,!0,void 0,this)},void 0,!1,void 0,this),E.length>0&&R(O,{marginTop:1,children:R(z8,{options:E,onChange:async(o)=>{switch(o){case"tools":Y();break;case"auth":case"reauth":await t();break;case"clear-auth":await Xq();break;case"claudeai-auth":await S();break;case"claudeai-clear-auth":$();break;case"reconnectMcpServer":N(!0);try{let Pq=await Jq(K.name);if(K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_reconnect",{success:Pq.client.type==="connected"});let{message:Nq}=F8(Pq,K.name);H?.(Nq)}catch(Pq){if(K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_reconnect",{success:!1});H?.(P8(Pq,K.name))}finally{N(!1)}break;case"toggle-enabled":await L();break;case"back":f();break}},onCancel:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginTop:1,children:R(z,{dimColor:!0,italic:!0,children:h.pending?R(U8,{children:["Press ",h.keyName," again to exit"]},void 0,!0,void 0,this):R(Lq,{children:[R(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),R(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Iz=uq(()=>{H6();r7();p6();v6();l7();Bq();DK();Q7();s7();d6();i8();h8();i7();S8();wK();T8();PK();zK();V6();YK();A8();w6();i6();R6();N6()});import s8 from"figures";import qY,{useState as KY}from"react";import{jsxDEV as vq,Fragment as pz}from"react/jsx-dev-runtime";function dz({server:K,serverToolsCount:q,onViewTools:Y,onCancel:f,onComplete:H,borderless:_=!1}){let[J]=q8(),h=K8(),W=sq((j)=>j.mcp),P=l8(),k=Y8(),[v,X]=KY(!1),l=qY.useCallback(async()=>{let j=K.client.type!=="disabled";try{await k(K.name),f()}catch(N){H(`Failed to ${j?"disable":"enable"} MCP server '${K.name}': ${Eq(N)}`)}},[K.client.type,K.name,k,f,H]),U=n8(String(K.name)),Wq=B8(W.commands,K.name).length,G=[];if(K.client.type!=="disabled"&&q>0)G.push({label:"View tools",value:"tools"});if(K.client.type!=="disabled")G.push({label:"Reconnect",value:"reconnectMcpServer"});if(G.push({label:K.client.type!=="disabled"?"Disable":"Enable",value:"toggle-enabled"}),G.length===0)G.push({label:"Back",value:"back"});if(v)return vq(O,{flexDirection:"column",gap:1,padding:1,children:[vq(z,{color:"text",children:["Reconnecting to ",vq(z,{bold:!0,children:K.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(vK,{},void 0,!1,void 0,this),vq(z,{children:" Restarting MCP server process"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(z,{dimColor:!0,children:"This may take a few moments."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return vq(O,{flexDirection:"column",children:[vq(O,{flexDirection:"column",paddingX:1,borderStyle:_?void 0:"round",children:[vq(O,{marginBottom:1,children:vq(z,{bold:!0,children:[U," MCP Server"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),vq(O,{flexDirection:"column",gap:0,children:[vq(O,{children:[vq(z,{bold:!0,children:"Status: "},void 0,!1,void 0,this),K.client.type==="disabled"?vq(z,{children:[dq("inactive",J)(s8.radioOff)," disabled"]},void 0,!0,void 0,this):K.client.type==="connected"?vq(z,{children:[dq("success",J)(s8.tick)," connected"]},void 0,!0,void 0,this):K.client.type==="pending"?vq(pz,{children:[vq(z,{dimColor:!0,children:s8.radioOff},void 0,!1,void 0,this),vq(z,{children:" connecting\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):vq(z,{children:[dq("error",J)(s8.cross)," failed"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(z,{bold:!0,children:"Command: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:K.config.command},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.config.args&&K.config.args.length>0&&vq(O,{children:[vq(z,{bold:!0,children:"Args: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:K.config.args.join(" ")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(z,{bold:!0,children:"Config location: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:r8(Vz(K.name)?.scope??"dynamic")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.client.type==="connected"&&vq(o8,{serverToolsCount:q,serverPromptsCount:Wq,serverResourcesCount:W.resources[K.name]?.length||0},void 0,!1,void 0,this),K.client.type==="connected"&&q>0&&vq(O,{children:[vq(z,{bold:!0,children:"Tools: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:[q," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G.length>0&&vq(O,{marginTop:1,children:vq(z8,{options:G,onChange:async(j)=>{if(j==="tools")Y();else if(j==="reconnectMcpServer"){X(!0);try{let N=await P(K.name),{message:F}=F8(N,K.name);H?.(F)}catch(N){H?.(P8(N,K.name))}finally{X(!1)}}else if(j==="toggle-enabled")await l();else if(j==="back")f()},onCancel:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{marginTop:1,children:vq(z,{dimColor:!0,italic:!0,children:h.pending?vq(pz,{children:["Press ",h.keyName," again to exit"]},void 0,!0,void 0,this):vq(Lq,{children:[vq(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),vq(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),vq(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ez=uq(()=>{p6();Bq();e7();d6();i8();h8();wK();PK();zK();V6();YK();A8();w6();R6();N6()});import{c as zY}from"react/compiler-runtime";import uz from"react";import{jsxDEV as Sq,Fragment as OY}from"react/jsx-dev-runtime";function xz(K){let q=zY(44),{tool:Y,server:f,onBack:H}=K,[_,J]=uz.useState(""),h,W;if(q[0]!==f.name||q[1]!==Y){W=t8(Y.name,f.name);let Gq=Y.userFacingName?Y.userFacingName({}):W;h=e8(Gq),q[0]=f.name,q[1]=Y,q[2]=h,q[3]=W}else h=q[2],W=q[3];let P=h,k;if(q[4]!==Y)k=Y.isReadOnly?.({})??!1,q[4]=Y,q[5]=k;else k=q[5];let v=k,X;if(q[6]!==Y)X=Y.isDestructive?.({})??!1,q[6]=Y,q[7]=X;else X=q[7];let l=X,U;if(q[8]!==Y)U=Y.isOpenWorld?.({})??!1,q[8]=Y,q[9]=U;else U=q[9];let Wq=U,G,j;if(q[10]!==Y)G=()=>{(async function(){try{let B=await Y.description({},{isNonInteractiveSession:!1,toolPermissionContext:{mode:"default",additionalWorkingDirectories:new Map,alwaysAllowRules:{},alwaysDenyRules:{},alwaysAskRules:{},isBypassPermissionsModeAvailable:!1},tools:[]});J(B)}catch{J("Failed to load description")}})()},j=[Y],q[10]=Y,q[11]=G,q[12]=j;else G=q[11],j=q[12];uz.useEffect(G,j);let N;if(q[13]!==v)N=v&&Sq(z,{color:"success",children:" [read-only]"},void 0,!1,void 0,this),q[13]=v,q[14]=N;else N=q[14];let F;if(q[15]!==l)F=l&&Sq(z,{color:"error",children:" [destructive]"},void 0,!1,void 0,this),q[15]=l,q[16]=F;else F=q[16];let Z;if(q[17]!==Wq)Z=Wq&&Sq(z,{dimColor:!0,children:" [open-world]"},void 0,!1,void 0,this),q[17]=Wq,q[18]=Z;else Z=q[18];let A;if(q[19]!==P||q[20]!==N||q[21]!==F||q[22]!==Z)A=Sq(OY,{children:[P,N,F,Z]},void 0,!0,void 0,this),q[19]=P,q[20]=N,q[21]=F,q[22]=Z,q[23]=A;else A=q[23];let u=A,Hq;if(q[24]===Symbol.for("react.memo_cache_sentinel"))Hq=Sq(z,{bold:!0,children:"Tool name: "},void 0,!1,void 0,this),q[24]=Hq;else Hq=q[24];let D;if(q[25]!==W)D=Sq(O,{children:[Hq,Sq(z,{dimColor:!0,children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[25]=W,q[26]=D;else D=q[26];let Q;if(q[27]===Symbol.for("react.memo_cache_sentinel"))Q=Sq(z,{bold:!0,children:"Full name: "},void 0,!1,void 0,this),q[27]=Q;else Q=q[27];let r;if(q[28]!==Y.name)r=Sq(O,{children:[Q,Sq(z,{dimColor:!0,children:Y.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[28]=Y.name,q[29]=r;else r=q[29];let s;if(q[30]!==_)s=_&&Sq(O,{flexDirection:"column",marginTop:1,children:[Sq(z,{bold:!0,children:"Description:"},void 0,!1,void 0,this),Sq(z,{wrap:"wrap",children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[30]=_,q[31]=s;else s=q[31];let fq;if(q[32]!==Y.inputJSONSchema)fq=Y.inputJSONSchema&&Y.inputJSONSchema.properties&&Object.keys(Y.inputJSONSchema.properties).length>0&&Sq(O,{flexDirection:"column",marginTop:1,children:[Sq(z,{bold:!0,children:"Parameters:"},void 0,!1,void 0,this),Sq(O,{marginLeft:2,flexDirection:"column",children:Object.entries(Y.inputJSONSchema.properties).map((Gq)=>{let[zq,B]=Gq,hq=Y.inputJSONSchema?.required?.includes(zq);return Sq(z,{children:["\u2022 ",zq,hq&&Sq(z,{dimColor:!0,children:" (required)"},void 0,!1,void 0,this),":"," ",Sq(z,{dimColor:!0,children:typeof B==="object"&&B&&"type"in B?String(B.type):"unknown"},void 0,!1,void 0,this),typeof B==="object"&&B&&"description"in B&&Sq(z,{dimColor:!0,children:[" - ",String(B.description)]},void 0,!0,void 0,this)]},zq,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[32]=Y.inputJSONSchema,q[33]=fq;else fq=q[33];let m;if(q[34]!==D||q[35]!==r||q[36]!==s||q[37]!==fq)m=Sq(O,{flexDirection:"column",children:[D,r,s,fq]},void 0,!0,void 0,this),q[34]=D,q[35]=r,q[36]=s,q[37]=fq,q[38]=m;else m=q[38];let Aq;if(q[39]!==H||q[40]!==f.name||q[41]!==m||q[42]!==u)Aq=Sq(FK,{title:u,subtitle:f.name,onCancel:H,inputGuide:YY,children:m},void 0,!1,void 0,this),q[39]=H,q[40]=f.name,q[41]=m,q[42]=u,q[43]=Aq;else Aq=q[43];return Aq}function YY(K){return K.pending?Sq(z,{children:["Press ",K.keyName," again to exit"]},void 0,!0,void 0,this):Sq(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)}var cz=uq(()=>{Bq();gz();zK();A6()});import{c as fY}from"react/compiler-runtime";import{jsxDEV as LK}from"react/jsx-dev-runtime";function oz(K){let q=fY(21),{server:Y,onSelectTool:f,onBack:H}=K,_=sq(wY),J;q:{if(Y.client.type!=="connected"){let j;if(q[0]===Symbol.for("react.memo_cache_sentinel"))j=[],q[0]=j;else j=q[0];J=j;break q}let G;if(q[1]!==_||q[2]!==Y.name)G=q6(_,Y.name),q[1]=_,q[2]=Y.name,q[3]=G;else G=q[3];J=G}let h=J,W;if(q[4]!==Y.name||q[5]!==h){let G;if(q[7]!==Y.name)G=(j,N)=>{let F=t8(j.name,Y.name),Z=j.userFacingName?j.userFacingName({}):F,A=e8(Z),u=j.isReadOnly?.({})??!1,Hq=j.isDestructive?.({})??!1,D=j.isOpenWorld?.({})??!1,Q=[];if(u)Q.push("read-only");if(Hq)Q.push("destructive");if(D)Q.push("open-world");return{label:A,value:N.toString(),description:Q.length>0?Q.join(", "):void 0,descriptionColor:Hq?"error":u?"success":void 0}},q[7]=Y.name,q[8]=G;else G=q[8];W=h.map(G),q[4]=Y.name,q[5]=h,q[6]=W}else W=q[6];let P=W,k=`Tools for ${Y.name}`,v=h.length,X;if(q[9]!==h.length)X=Vq(h.length,"tool"),q[9]=h.length,q[10]=X;else X=q[10];let l=`${v} ${X}`,U;if(q[11]!==H||q[12]!==f||q[13]!==h||q[14]!==P)U=h.length===0?LK(z,{dimColor:!0,children:"No tools available"},void 0,!1,void 0,this):LK(z8,{options:P,onChange:(G)=>{let j=parseInt(G),N=h[j];if(N)f(N,j)},onCancel:H},void 0,!1,void 0,this),q[11]=H,q[12]=f,q[13]=h,q[14]=P,q[15]=U;else U=q[15];let Wq;if(q[16]!==H||q[17]!==k||q[18]!==l||q[19]!==U)Wq=LK(FK,{title:k,subtitle:l,onCancel:H,inputGuide:HY,children:U},void 0,!1,void 0,this),q[16]=H,q[17]=k,q[18]=l,q[19]=U,q[20]=Wq;else Wq=q[20];return Wq}function HY(K){return K.pending?LK(z,{children:["Press ",K.keyName," again to exit"]},void 0,!0,void 0,this):LK(Lq,{children:[LK(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),LK(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),LK(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function wY(K){return K.mcp.tools}var Fz=uq(()=>{Bq();gz();i8();h8();PK();zK();V6();YK();A6();A8()});function mK(K){switch(K.type){case"path-not-found":return`${K.component} path not found: ${K.path}`;case"git-auth-failed":return`Git ${K.authType.toUpperCase()} authentication failed for ${K.gitUrl}`;case"git-timeout":return`Git ${K.operation} timed out for ${K.gitUrl}`;case"network-error":return`Network error accessing ${K.url}${K.details?`: ${K.details}`:""}`;case"manifest-parse-error":return`Failed to parse manifest at ${K.manifestPath}: ${K.parseError}`;case"manifest-validation-error":return`Invalid manifest at ${K.manifestPath}: ${K.validationErrors.join(", ")}`;case"plugin-not-found":return`Plugin "${K.pluginId}" not found in marketplace "${K.marketplace}"`;case"marketplace-not-found":return`Marketplace "${K.marketplace}" not found`;case"marketplace-load-failed":return`Failed to load marketplace "${K.marketplace}": ${K.reason}`;case"mcp-config-invalid":return`Invalid MCP server config for "${K.serverName}": ${K.validationError}`;case"mcp-server-suppressed-duplicate":{let Y=K.duplicateOf.startsWith("plugin:")?`server provided by plugin "${K.duplicateOf.split(":")[1]??"?"}"`:`already-configured "${K.duplicateOf}"`;return`MCP server "${K.serverName}" skipped \u2014 same command/URL as ${Y}`}case"hook-load-failed":return`Failed to load hooks from ${K.hookPath}: ${K.reason}`;case"component-load-failed":return`Failed to load ${K.component} from ${K.path}: ${K.reason}`;case"mcpb-download-failed":return`Failed to download MCPB from ${K.url}: ${K.reason}`;case"mcpb-extract-failed":return`Failed to extract MCPB ${K.mcpbPath}: ${K.reason}`;case"mcpb-invalid-manifest":return`MCPB manifest invalid at ${K.mcpbPath}: ${K.validationError}`;case"marketplace-blocked-by-policy":return K.blockedByBlocklist?`Marketplace "${K.marketplace}" is blocked by enterprise policy`:`Marketplace "${K.marketplace}" is not in the allowed marketplace list`;case"dependency-unsatisfied":return K.reason==="not-enabled"?`Dependency "${K.dependency}" is disabled`:`Dependency "${K.dependency}" is not installed`;case"lsp-config-invalid":return`Invalid LSP server config for "${K.serverName}": ${K.validationError}`;case"lsp-server-start-failed":return`LSP server "${K.serverName}" failed to start: ${K.reason}`;case"lsp-server-crashed":return K.signal?`LSP server "${K.serverName}" crashed with signal ${K.signal}`:`LSP server "${K.serverName}" crashed with exit code ${K.exitCode??"unknown"}`;case"lsp-request-timeout":return`LSP server "${K.serverName}" timed out on ${K.method} after ${K.timeoutMs}ms`;case"lsp-request-failed":return`LSP server "${K.serverName}" ${K.method} failed: ${K.error}`;case"plugin-cache-miss":return`Plugin "${K.plugin}" not cached at ${K.installPath}`;case"generic-error":return K.error}return Uz(K)}function O8(K){switch(K.type){case"path-not-found":return"Check that the path in your manifest or marketplace config is correct";case"git-auth-failed":return K.authType==="ssh"?"Configure SSH keys or use HTTPS URL instead":"Configure credentials or use SSH URL instead";case"git-timeout":case"network-error":return"Check your internet connection and try again";case"manifest-parse-error":return"Check manifest file syntax in the plugin directory";case"manifest-validation-error":return"Check manifest file follows the required schema";case"plugin-not-found":return`Plugin may not exist in marketplace "${K.marketplace}"`;case"marketplace-not-found":return K.availableMarketplaces.length>0?`Available marketplaces: ${K.availableMarketplaces.join(", ")}`:"Add the marketplace first using /plugin marketplace add";case"mcp-config-invalid":return"Check MCP server configuration in .mcp.json or manifest";case"mcp-server-suppressed-duplicate":{if(K.duplicateOf.startsWith("plugin:"))return`Disable plugin "${K.duplicateOf.split(":")[1]??"the other plugin"}" if you want this plugin's version instead`;return`Remove "${K.duplicateOf}" from your MCP config if you want the plugin's version instead`}case"hook-load-failed":return"Check hooks.json file syntax and structure";case"component-load-failed":return`Check ${K.component} directory structure and file permissions`;case"mcpb-download-failed":return"Check your internet connection and URL accessibility";case"mcpb-extract-failed":return"Verify the MCPB file is valid and not corrupted";case"mcpb-invalid-manifest":return"Contact the plugin author about the invalid manifest";case"marketplace-blocked-by-policy":if(K.blockedByBlocklist)return"This marketplace source is explicitly blocked by your administrator";return K.allowedSources.length>0?`Allowed sources: ${K.allowedSources.join(", ")}`:"Contact your administrator to configure allowed marketplace sources";case"dependency-unsatisfied":return K.reason==="not-enabled"?`Enable "${K.dependency}" or uninstall "${K.plugin}"`:`Install "${K.dependency}" or uninstall "${K.plugin}"`;case"lsp-config-invalid":return"Check LSP server configuration in the plugin manifest";case"lsp-server-start-failed":case"lsp-server-crashed":case"lsp-request-timeout":case"lsp-request-failed":return"Check LSP server logs with --debug for details";case"plugin-cache-miss":return"Run /plugins to refresh the plugin cache";case"marketplace-load-failed":case"generic-error":return null}let q=K;return null}var E6=uq(()=>{kY()});import{c as AY}from"react/compiler-runtime";import rq from"figures";import{jsxDEV as Tq}from"react/jsx-dev-runtime";function az(K){let q=AY(142),{item:Y,isSelected:f}=K,[H]=q8();if(Y.type==="plugin"){let Z,A;if(Y.pendingToggle){let wq;if(q[0]!==H)wq=dq("suggestion",H)(rq.arrowRight),q[0]=H,q[1]=wq;else wq=q[1];Z=wq,A=Y.pendingToggle==="will-enable"?"will enable":"will disable"}else if(Y.errorCount>0){let wq;if(q[2]!==H)wq=dq("error",H)(rq.cross),q[2]=H,q[3]=wq;else wq=q[3];Z=wq;let y=Y.errorCount,C;if(q[4]!==Y.errorCount)C=Vq(Y.errorCount,"error"),q[4]=Y.errorCount,q[5]=C;else C=q[5];A=`${y} ${C}`}else if(!Y.isEnabled){let wq;if(q[6]!==H)wq=dq("inactive",H)(rq.radioOff),q[6]=H,q[7]=wq;else wq=q[7];Z=wq,A="disabled"}else{let wq;if(q[8]!==H)wq=dq("success",H)(rq.tick),q[8]=H,q[9]=wq;else wq=q[9];Z=wq,A="enabled"}let u=f?"suggestion":void 0,Hq=f?`${rq.pointer} `:" ",D;if(q[10]!==u||q[11]!==Hq)D=Tq(z,{color:u,children:Hq},void 0,!1,void 0,this),q[10]=u,q[11]=Hq,q[12]=D;else D=q[12];let Q=f?"suggestion":void 0,r;if(q[13]!==Y.name||q[14]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[13]=Y.name,q[14]=Q,q[15]=r;else r=q[15];let s=!f,fq;if(q[16]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[16]=fq;else fq=q[16];let m;if(q[17]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[17]=s,q[18]=m;else m=q[18];let Aq;if(q[19]!==Y.marketplace)Aq=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[19]=Y.marketplace,q[20]=Aq;else Aq=q[20];let Gq=!f,zq;if(q[21]!==Z||q[22]!==Gq)zq=Tq(z,{dimColor:Gq,children:[" \xB7 ",Z," "]},void 0,!0,void 0,this),q[21]=Z,q[22]=Gq,q[23]=zq;else zq=q[23];let B=!f,Mq;if(q[24]!==A||q[25]!==B)Mq=Tq(z,{dimColor:B,children:A},void 0,!1,void 0,this),q[24]=A,q[25]=B,q[26]=Mq;else Mq=q[26];let hq;if(q[27]!==zq||q[28]!==Mq||q[29]!==D||q[30]!==r||q[31]!==m||q[32]!==Aq)hq=Tq(O,{children:[D,r,m,Aq,zq,Mq]},void 0,!0,void 0,this),q[27]=zq,q[28]=Mq,q[29]=D,q[30]=r,q[31]=m,q[32]=Aq,q[33]=hq;else hq=q[33];return hq}if(Y.type==="flagged-plugin"){let Z;if(q[34]!==H)Z=dq("warning",H)(rq.warning),q[34]=H,q[35]=Z;else Z=q[35];let A=Z,u=f?"suggestion":void 0,Hq=f?`${rq.pointer} `:" ",D;if(q[36]!==u||q[37]!==Hq)D=Tq(z,{color:u,children:Hq},void 0,!1,void 0,this),q[36]=u,q[37]=Hq,q[38]=D;else D=q[38];let Q=f?"suggestion":void 0,r;if(q[39]!==Y.name||q[40]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[39]=Y.name,q[40]=Q,q[41]=r;else r=q[41];let s=!f,fq;if(q[42]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[42]=fq;else fq=q[42];let m;if(q[43]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[43]=s,q[44]=m;else m=q[44];let Aq;if(q[45]!==Y.marketplace)Aq=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[45]=Y.marketplace,q[46]=Aq;else Aq=q[46];let Gq=!f,zq;if(q[47]!==A||q[48]!==Gq)zq=Tq(z,{dimColor:Gq,children:[" \xB7 ",A," "]},void 0,!0,void 0,this),q[47]=A,q[48]=Gq,q[49]=zq;else zq=q[49];let B=!f,Mq;if(q[50]!==B)Mq=Tq(z,{dimColor:B,children:"removed"},void 0,!1,void 0,this),q[50]=B,q[51]=Mq;else Mq=q[51];let hq;if(q[52]!==Aq||q[53]!==zq||q[54]!==Mq||q[55]!==D||q[56]!==r||q[57]!==m)hq=Tq(O,{children:[D,r,m,Aq,zq,Mq]},void 0,!0,void 0,this),q[52]=Aq,q[53]=zq,q[54]=Mq,q[55]=D,q[56]=r,q[57]=m,q[58]=hq;else hq=q[58];return hq}if(Y.type==="failed-plugin"){let Z;if(q[59]!==H)Z=dq("error",H)(rq.cross),q[59]=H,q[60]=Z;else Z=q[60];let A=Z,u=Y.errorCount,Hq;if(q[61]!==Y.errorCount)Hq=Vq(Y.errorCount,"error"),q[61]=Y.errorCount,q[62]=Hq;else Hq=q[62];let D=`failed to load \xB7 ${u} ${Hq}`,Q=f?"suggestion":void 0,r=f?`${rq.pointer} `:" ",s;if(q[63]!==Q||q[64]!==r)s=Tq(z,{color:Q,children:r},void 0,!1,void 0,this),q[63]=Q,q[64]=r,q[65]=s;else s=q[65];let fq=f?"suggestion":void 0,m;if(q[66]!==Y.name||q[67]!==fq)m=Tq(z,{color:fq,children:Y.name},void 0,!1,void 0,this),q[66]=Y.name,q[67]=fq,q[68]=m;else m=q[68];let Aq=!f,Gq;if(q[69]===Symbol.for("react.memo_cache_sentinel"))Gq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[69]=Gq;else Gq=q[69];let zq;if(q[70]!==Aq)zq=Tq(z,{dimColor:Aq,children:[" ",Gq]},void 0,!0,void 0,this),q[70]=Aq,q[71]=zq;else zq=q[71];let B;if(q[72]!==Y.marketplace)B=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[72]=Y.marketplace,q[73]=B;else B=q[73];let Mq=!f,hq;if(q[74]!==A||q[75]!==Mq)hq=Tq(z,{dimColor:Mq,children:[" \xB7 ",A," "]},void 0,!0,void 0,this),q[74]=A,q[75]=Mq,q[76]=hq;else hq=q[76];let wq=!f,y;if(q[77]!==D||q[78]!==wq)y=Tq(z,{dimColor:wq,children:D},void 0,!1,void 0,this),q[77]=D,q[78]=wq,q[79]=y;else y=q[79];let C;if(q[80]!==zq||q[81]!==B||q[82]!==hq||q[83]!==y||q[84]!==s||q[85]!==m)C=Tq(O,{children:[s,m,zq,B,hq,y]},void 0,!0,void 0,this),q[80]=zq,q[81]=B,q[82]=hq,q[83]=y,q[84]=s,q[85]=m,q[86]=C;else C=q[86];return C}let _,J;if(Y.status==="connected"){let Z;if(q[87]!==H)Z=dq("success",H)(rq.tick),q[87]=H,q[88]=Z;else Z=q[88];_=Z,J="connected"}else if(Y.status==="disabled"){let Z;if(q[89]!==H)Z=dq("inactive",H)(rq.radioOff),q[89]=H,q[90]=Z;else Z=q[90];_=Z,J="disabled"}else if(Y.status==="pending"){let Z;if(q[91]!==H)Z=dq("inactive",H)(rq.radioOff),q[91]=H,q[92]=Z;else Z=q[92];_=Z,J="connecting\u2026"}else if(Y.status==="needs-auth"){let Z;if(q[93]!==H)Z=dq("warning",H)(rq.triangleUpOutline),q[93]=H,q[94]=Z;else Z=q[94];_=Z,J="Enter to auth"}else{let Z;if(q[95]!==H)Z=dq("error",H)(rq.cross),q[95]=H,q[96]=Z;else Z=q[96];_=Z,J="failed"}if(Y.indented){let Z=f?"suggestion":void 0,A=f?`${rq.pointer} `:" ",u;if(q[97]!==Z||q[98]!==A)u=Tq(z,{color:Z,children:A},void 0,!1,void 0,this),q[97]=Z,q[98]=A,q[99]=u;else u=q[99];let Hq=!f,D;if(q[100]!==Hq)D=Tq(z,{dimColor:Hq,children:"\u2514 "},void 0,!1,void 0,this),q[100]=Hq,q[101]=D;else D=q[101];let Q=f?"suggestion":void 0,r;if(q[102]!==Y.name||q[103]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[102]=Y.name,q[103]=Q,q[104]=r;else r=q[104];let s=!f,fq;if(q[105]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"MCP"},void 0,!1,void 0,this),q[105]=fq;else fq=q[105];let m;if(q[106]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[106]=s,q[107]=m;else m=q[107];let Aq=!f,Gq;if(q[108]!==_||q[109]!==Aq)Gq=Tq(z,{dimColor:Aq,children:[" \xB7 ",_," "]},void 0,!0,void 0,this),q[108]=_,q[109]=Aq,q[110]=Gq;else Gq=q[110];let zq=!f,B;if(q[111]!==J||q[112]!==zq)B=Tq(z,{dimColor:zq,children:J},void 0,!1,void 0,this),q[111]=J,q[112]=zq,q[113]=B;else B=q[113];let Mq;if(q[114]!==m||q[115]!==Gq||q[116]!==B||q[117]!==u||q[118]!==D||q[119]!==r)Mq=Tq(O,{children:[u,D,r,m,Gq,B]},void 0,!0,void 0,this),q[114]=m,q[115]=Gq,q[116]=B,q[117]=u,q[118]=D,q[119]=r,q[120]=Mq;else Mq=q[120];return Mq}let h=f?"suggestion":void 0,W=f?`${rq.pointer} `:" ",P;if(q[121]!==h||q[122]!==W)P=Tq(z,{color:h,children:W},void 0,!1,void 0,this),q[121]=h,q[122]=W,q[123]=P;else P=q[123];let k=f?"suggestion":void 0,v;if(q[124]!==Y.name||q[125]!==k)v=Tq(z,{color:k,children:Y.name},void 0,!1,void 0,this),q[124]=Y.name,q[125]=k,q[126]=v;else v=q[126];let X=!f,l;if(q[127]===Symbol.for("react.memo_cache_sentinel"))l=Tq(z,{backgroundColor:"userMessageBackground",children:"MCP"},void 0,!1,void 0,this),q[127]=l;else l=q[127];let U;if(q[128]!==X)U=Tq(z,{dimColor:X,children:[" ",l]},void 0,!0,void 0,this),q[128]=X,q[129]=U;else U=q[129];let Wq=!f,G;if(q[130]!==_||q[131]!==Wq)G=Tq(z,{dimColor:Wq,children:[" \xB7 ",_," "]},void 0,!0,void 0,this),q[130]=_,q[131]=Wq,q[132]=G;else G=q[132];let j=!f,N;if(q[133]!==J||q[134]!==j)N=Tq(z,{dimColor:j,children:J},void 0,!1,void 0,this),q[133]=J,q[134]=j,q[135]=N;else N=q[135];let F;if(q[136]!==G||q[137]!==N||q[138]!==P||q[139]!==v||q[140]!==U)F=Tq(O,{children:[P,v,U,G,N]},void 0,!0,void 0,this),q[136]=G,q[137]=N,q[138]=P,q[139]=v,q[140]=U,q[141]=F;else F=q[141];return F}var nz=uq(()=>{Bq();PK()});import EK from"figures";import*as gK from"fs/promises";import*as w8 from"path";import*as fK from"react";import{useCallback as hY,useEffect as H8,useMemo as u6,useRef as g6,useState as Fq}from"react";import{jsxDEV as M}from"react/jsx-dev-runtime";async function Bz(K){try{return(await gK.readdir(K,{withFileTypes:!0})).filter((Y)=>Y.isFile()&&Y.name.endsWith(".md")).map((Y)=>{return w8.basename(Y.name,".md")})}catch(q){let Y=Eq(q);return RK(`Failed to read plugin components from ${K}: ${Y}`,{level:"error"}),kK(xK(q)),[]}}async function JY(K){try{let q=await gK.readdir(K,{withFileTypes:!0}),Y=[];for(let f of q)if(f.isDirectory()||f.isSymbolicLink()){let H=w8.join(K,f.name,"SKILL.md");try{if((await gK.stat(H)).isFile())Y.push(f.name)}catch{}}return Y}catch(q){let Y=Eq(q);return RK(`Failed to read skill directories from ${K}: ${Y}`,{level:"error"}),kK(xK(q)),[]}}function $Y({plugin:K,marketplace:q}){let[Y,f]=Fq(null),[H,_]=Fq(!0),[J,h]=Fq(null);if(H8(()=>{async function P(){try{if(q==="builtin"){let X=iz(K.name);if(X){let l=X.skills?.map((G)=>G.name)??[],U=X.hooks?Object.keys(X.hooks):[],Wq=X.mcpServers?Object.keys(X.mcpServers):[];f({commands:null,agents:null,skills:l.length>0?l:null,hooks:U.length>0?U:null,mcpServers:Wq.length>0?Wq:null})}else h(`Built-in plugin ${K.name} not found`);_(!1);return}let v=(await iK(q)).plugins.find((X)=>X.name===K.name);if(v){let X=[];if(K.commandsPath)X.push(K.commandsPath);if(K.commandsPaths)X.push(...K.commandsPaths);let l=[];for(let Z of X)if(typeof Z==="string"){let A=await Bz(Z);l.push(...A)}let U=[];if(K.agentsPath)U.push(K.agentsPath);if(K.agentsPaths)U.push(...K.agentsPaths);let Wq=[];for(let Z of U)if(typeof Z==="string"){let A=await Bz(Z);Wq.push(...A)}let G=[];if(K.skillsPath)G.push(K.skillsPath);if(K.skillsPaths)G.push(...K.skillsPaths);let j=[];for(let Z of G)if(typeof Z==="string"){let A=await JY(Z);j.push(...A)}let N=[];if(K.hooksConfig)N.push(Object.keys(K.hooksConfig));if(v.hooks)N.push(v.hooks);let F=[];if(K.mcpServers)F.push(Object.keys(K.mcpServers));if(v.mcpServers)F.push(v.mcpServers);f({commands:l.length>0?l:null,agents:Wq.length>0?Wq:null,skills:j.length>0?j:null,hooks:N.length>0?N:null,mcpServers:F.length>0?F:null})}else h(`Plugin ${K.name} not found in marketplace`)}catch(k){h(k instanceof Error?k.message:"Failed to load components")}finally{_(!1)}}P()},[K.name,K.commandsPath,K.commandsPaths,K.agentsPath,K.agentsPaths,K.skillsPath,K.skillsPaths,K.hooksConfig,K.mcpServers,q]),H)return null;if(J)return M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,children:"Components:"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:["Error: ",J]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(!Y)return null;if(!(Y.commands||Y.agents||Y.skills||Y.hooks||Y.mcpServers))return null;return M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,children:"Installed components:"},void 0,!1,void 0,this),Y.commands?M(z,{dimColor:!0,children:["\u2022 Commands:"," ",typeof Y.commands==="string"?Y.commands:Array.isArray(Y.commands)?Y.commands.join(", "):Object.keys(Y.commands).join(", ")]},void 0,!0,void 0,this):null,Y.agents?M(z,{dimColor:!0,children:["\u2022 Agents:"," ",typeof Y.agents==="string"?Y.agents:Array.isArray(Y.agents)?Y.agents.join(", "):Object.keys(Y.agents).join(", ")]},void 0,!0,void 0,this):null,Y.skills?M(z,{dimColor:!0,children:["\u2022 Skills:"," ",typeof Y.skills==="string"?Y.skills:Array.isArray(Y.skills)?Y.skills.join(", "):Object.keys(Y.skills).join(", ")]},void 0,!0,void 0,this):null,Y.hooks?M(z,{dimColor:!0,children:["\u2022 Hooks:"," ",typeof Y.hooks==="string"?Y.hooks:Array.isArray(Y.hooks)?Y.hooks.map(String).join(", "):typeof Y.hooks==="object"&&Y.hooks!==null?Object.keys(Y.hooks).join(", "):String(Y.hooks)]},void 0,!0,void 0,this):null,Y.mcpServers?M(z,{dimColor:!0,children:["\u2022 MCP Servers:"," ",typeof Y.mcpServers==="string"?Y.mcpServers:Array.isArray(Y.mcpServers)?Y.mcpServers.map(String).join(", "):typeof Y.mcpServers==="object"&&Y.mcpServers!==null?Object.keys(Y.mcpServers).join(", "):String(Y.mcpServers)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}async function ZY(K,q){let f=(await iK(q))?.plugins.find((H)=>H.name===K);if(f&&typeof f.source==="string")return`Local plugins cannot be updated remotely. To update, modify the source at: ${f.source}`;return null}function vY(K){return K.filter((q)=>{let Y=q.source.split("@")[1]||"local";return!QK(`${q.name}@${Y}`)})}function O7({setViewState:K,setResult:q,onManageComplete:Y,onSearchModeChange:f,targetPlugin:H,targetMarketplace:_,action:J}){let h=sq((w)=>w.mcp.clients),W=sq((w)=>w.mcp.tools),P=sq((w)=>w.plugins.errors),k=K7(),[v,X]=Fq(!1),l=hY((w)=>{X(w),f?.(w)},[f]),U=E8(),{columns:Wq}=eK(),[G,j]=Fq("plugin-list"),{query:N,setQuery:F,cursorOffset:Z}=g8({isActive:G==="plugin-list"&&v,onExit:()=>{l(!1)}}),[A,u]=Fq(null),[Hq,D]=Fq([]),[Q,r]=Fq([]),[s,fq]=Fq(!0),[m,Aq]=Fq(new Map),Gq=g6(!1),zq=g6(void 0),B=Y8(),Mq=fK.useCallback(()=>{if(G==="plugin-details")j("plugin-list"),u(null),S(null);else if(typeof G==="object"&&G.type==="failed-plugin-details")j("plugin-list"),S(null);else if(G==="configuring")j("plugin-details"),L(null);else if(typeof G==="object"&&(G.type==="plugin-options"||G.type==="configuring-options")){if(j("plugin-list"),u(null),q("Plugin enabled. Configuration skipped \u2014 run /reload-plugins to apply."),Y)Y()}else if(typeof G==="object"&&G.type==="flagged-detail")j("plugin-list"),S(null);else if(typeof G==="object"&&G.type==="mcp-detail")j("plugin-list"),S(null);else if(typeof G==="object"&&G.type==="mcp-tools")j({type:"mcp-detail",client:G.client});else if(typeof G==="object"&&G.type==="mcp-tool-detail")j({type:"mcp-tools",client:G.client});else{if(m.size>0){q("Run /reload-plugins to apply plugin changes.");return}K({type:"menu"})}},[G,K,m,q]);xq("confirm:no",Mq,{context:"Confirmation",isActive:(G!=="plugin-list"||!v)&&G!=="confirm-project-uninstall"&&!(typeof G==="object"&&G.type==="confirm-data-cleanup")});let hq=(w)=>{if(w.type==="connected")return"connected";if(w.type==="disabled")return"disabled";if(w.type==="pending")return"pending";if(w.type==="needs-auth")return"needs-auth";return"failed"},wq=u6(()=>{let w=uK(),x=new Map;for(let Kq of h)if(Kq.name.startsWith("plugin:")){let jq=Kq.name.split(":");if(jq.length>=3){let Uq=jq[1],aq=jq.slice(2).join(":"),gq=x.get(Uq)||[];gq.push({displayName:aq,client:Kq}),x.set(Uq,gq)}}let Yq=[];for(let Kq of Q){let jq=`${Kq.plugin.name}@${Kq.marketplace}`,Uq=w?.enabledPlugins?.[jq]!==!1,aq=P.filter((Cq)=>("plugin"in Cq)&&Cq.plugin===Kq.plugin.name||Cq.source===jq||Cq.source.startsWith(`${Kq.plugin.name}@`)),gq=Kq.plugin.isBuiltin?"builtin":Kq.scope||"user";Yq.push({item:{type:"plugin",id:jq,name:Kq.plugin.name,description:Kq.plugin.manifest.description,marketplace:Kq.marketplace,scope:gq,isEnabled:Uq,errorCount:aq.length,errors:aq,plugin:Kq.plugin,pendingEnable:Kq.pendingEnable,pendingUpdate:Kq.pendingUpdate,pendingToggle:m.get(jq)},originalScope:gq,childMcps:x.get(Kq.plugin.name)||[]})}let qq=new Set(Yq.map(({item:Kq})=>Kq.id)),e=new Set(Yq.map(({item:Kq})=>Kq.name)),n=new Map;for(let Kq of P){if(qq.has(Kq.source)||"plugin"in Kq&&typeof Kq.plugin==="string"&&e.has(Kq.plugin))continue;let jq=n.get(Kq.source)||[];jq.push(Kq),n.set(Kq.source,jq)}let _q=O6(),$q=[];for(let[Kq,jq]of n){if(Kq in k)continue;let Uq=K6(Kq),aq=Uq.name||Kq,gq=Uq.marketplace||"unknown",Cq=_q.get(Kq),tq=Cq==="flag"||Cq===void 0?"user":Cq;$q.push({type:"failed-plugin",id:Kq,name:aq,marketplace:gq,scope:tq,errorCount:jq.length,errors:jq})}let yq=[];for(let Kq of h){if(Kq.name==="ide")continue;if(Kq.name.startsWith("plugin:"))continue;yq.push({type:"mcp",id:`mcp:${Kq.name}`,name:Kq.name,description:void 0,scope:Kq.config.scope,status:hq(Kq),client:Kq})}let mq={flagged:-1,project:0,local:1,user:2,enterprise:3,managed:4,dynamic:5,builtin:6},HK=[],Rq=new Map;for(let{item:Kq,originalScope:jq,childMcps:Uq}of Yq){let aq=Kq.scope;if(!Rq.has(aq))Rq.set(aq,[]);Rq.get(aq).push(Kq);for(let{displayName:gq,client:Cq}of Uq){let tq=jq==="builtin"?"user":jq;if(!Rq.has(tq))Rq.set(tq,[]);Rq.get(tq).push({type:"mcp",id:`mcp:${Cq.name}`,name:gq,description:void 0,scope:tq,status:hq(Cq),client:Cq,indented:!0})}}for(let Kq of yq){let jq=Kq.scope;if(!Rq.has(jq))Rq.set(jq,[]);Rq.get(jq).push(Kq)}for(let Kq of $q){let jq=Kq.scope;if(!Rq.has(jq))Rq.set(jq,[]);Rq.get(jq).push(Kq)}for(let[Kq,jq]of Object.entries(k)){let Uq=K6(Kq),aq=Uq.name||Kq,gq=Uq.marketplace||"unknown";if(!Rq.has("flagged"))Rq.set("flagged",[]);Rq.get("flagged").push({type:"flagged-plugin",id:Kq,name:aq,marketplace:gq,scope:"flagged",reason:"delisted",text:"Removed from marketplace",flaggedAt:jq.flaggedAt})}let Z8=[...Rq.keys()].sort((Kq,jq)=>(mq[Kq]??99)-(mq[jq]??99));for(let Kq of Z8){let jq=Rq.get(Kq),Uq=[],aq=[],gq=0;while(gq<jq.length){let Cq=jq[gq];if(Cq.type==="plugin"||Cq.type==="failed-plugin"||Cq.type==="flagged-plugin"){let tq=[Cq];gq++;let v8=jq[gq];while(v8?.type==="mcp"&&v8.indented)tq.push(v8),gq++,v8=jq[gq];Uq.push(tq)}else if(Cq.type==="mcp"&&!Cq.indented)aq.push(Cq),gq++;else gq++}Uq.sort((Cq,tq)=>Cq[0].name.localeCompare(tq[0].name)),aq.sort((Cq,tq)=>Cq.name.localeCompare(tq.name));for(let Cq of Uq)HK.push(...Cq);HK.push(...aq)}return HK},[Q,h,P,m,k]),y=u6(()=>wq.filter((w)=>w.type==="flagged-plugin").map((w)=>w.id),[wq]);H8(()=>{if(y.length>0)z7(y)},[y]);let C=u6(()=>{if(!N)return wq;let w=N.toLowerCase();return wq.filter((x)=>x.name.toLowerCase().includes(w)||("description"in x)&&x.description?.toLowerCase().includes(w))},[wq,N]),[g,Oq]=Fq(0),Jq=nK({totalItems:C.length,selectedIndex:g,maxVisible:8}),[T,i]=Fq(0),[I,V]=Fq(!1),[c,S]=Fq(null),[$,L]=Fq(null),[t,Xq]=Fq(!1),[E,o]=Fq(!1);H8(()=>{if(!A){o(!1);return}async function w(){let x=A.plugin.manifest.mcpServers,Yq=!1;if(x)Yq=typeof x==="string"&&$K(x)||Array.isArray(x)&&x.some((qq)=>typeof qq==="string"&&$K(qq));if(!Yq)try{let qq=w8.join(A.plugin.path,".."),e=w8.join(qq,".claude-plugin","marketplace.json"),n=await gK.readFile(e,"utf-8"),$q=rz(n).plugins?.find((yq)=>yq.name===A.plugin.name);if($q?.mcpServers){let yq=$q.mcpServers;Yq=typeof yq==="string"&&$K(yq)||Array.isArray(yq)&&yq.some((mq)=>typeof mq==="string"&&$K(mq))}}catch(qq){RK(`Failed to read raw marketplace.json: ${qq}`)}o(Yq)}w()},[A]),H8(()=>{async function w(){fq(!0);try{let{enabled:x,disabled:Yq}=await IK(),qq=uK(),e=vY([...x,...Yq]),n={};for(let yq of e){let mq=yq.source.split("@")[1]||"local";if(!n[mq])n[mq]=[];n[mq].push(yq)}let _q=[];for(let[yq,mq]of Object.entries(n)){let HK=OK(mq,(Z8)=>{let Kq=`${Z8.name}@${yq}`;return qq?.enabledPlugins?.[Kq]!==!1}),Rq=mq.length-HK;_q.push({name:yq,installedPlugins:mq,enabledCount:HK,disabledCount:Rq})}_q.sort((yq,mq)=>{if(yq.name==="claude-plugin-directory")return-1;if(mq.name==="claude-plugin-directory")return 1;return yq.name.localeCompare(mq.name)}),D(_q);let $q=[];for(let yq of _q)for(let mq of yq.installedPlugins){let HK=`${mq.name}@${yq.name}`,Rq=mq.isBuiltin?"builtin":c6(HK).scope;$q.push({plugin:mq,marketplace:yq.name,scope:Rq,pendingEnable:void 0,pendingUpdate:!1})}r($q),Oq(0)}finally{fq(!1)}}w()},[]),H8(()=>{if(Gq.current)return;if(H&&Hq.length>0&&!s){let{name:w,marketplace:x}=K6(H),Yq=_??x,qq=Yq?Hq.filter((n)=>n.name===Yq):Hq;for(let n of qq){let _q=n.installedPlugins.find(($q)=>$q.name===w);if(_q){let $q=`${_q.name}@${n.name}`,{scope:yq}=c6($q),mq={plugin:_q,marketplace:n.name,scope:yq,pendingEnable:void 0,pendingUpdate:!1};u(mq),j("plugin-details"),zq.current=J,Gq.current=!0;return}}let e=wq.find((n)=>n.type==="failed-plugin"&&n.name===w);if(e&&e.type==="failed-plugin")j({type:"failed-plugin-details",plugin:{id:e.id,name:e.name,marketplace:e.marketplace,errors:e.errors,scope:e.scope}}),Gq.current=!0;if(!Gq.current&&J)Gq.current=!0,q(`Plugin "${H}" is not installed in this project`)}},[H,_,Hq,s,wq,J,q]);let Pq=async(w)=>{if(!A)return;let x=A.scope||"user",Yq=x==="builtin";if(Yq&&(w==="update"||w==="uninstall")){S("Built-in plugins cannot be updated or uninstalled.");return}if(!Yq&&!f8(x)&&w!=="update"){S("This plugin is managed by your organization. Contact your admin to disable it.");return}V(!0),S(null);try{let qq=`${A.plugin.name}@${A.marketplace}`,e;switch(w){case"enable":{let Rq=await z6(qq);if(!Rq.success)throw Error(Rq.message);break}case"disable":{let Rq=await Y6(qq);if(!Rq.success)throw Error(Rq.message);e=Rq.reverseDependents;break}case"uninstall":{if(Yq)break;if(!f8(x))break;if(ez(qq)){V(!1),j("confirm-project-uninstall");return}let Rq=sz().plugins[qq],Kq=!Rq||Rq.length<=1?await Qz(qq):null;if(Kq){V(!1),j({type:"confirm-data-cleanup",size:Kq});return}let jq=await J8(qq,x);if(!jq.success)throw Error(jq.message);e=jq.reverseDependents;break}case"update":{if(Yq)break;let Rq=await q7(qq,x);if(!Rq.success)throw Error(Rq.message);if(Rq.alreadyUpToDate){if(q(`${A.plugin.name} is already at the latest version (${Rq.newVersion}).`),Y)await Y();K({type:"menu"});return}break}}cq();let n=`${A.plugin.name}@${A.marketplace}`;if(uK()?.enabledPlugins?.[n]!==!1){V(!1),j({type:"plugin-options"});return}let yq=w==="enable"?"Enabled":w==="disable"?"Disabled":w==="update"?"Updated":"Uninstalled",mq=e&&e.length>0?` \xB7 required by ${e.join(", ")}`:"",HK=`\u2713 ${yq} ${A.plugin.name}${mq}. Run /reload-plugins to apply.`;if(q(HK),Y)await Y();K({type:"menu"})}catch(qq){V(!1);let e=qq instanceof Error?qq.message:String(qq);S(`Failed to ${w}: ${e}`),kK(xK(qq))}},Nq=g6(Pq);Nq.current=Pq,H8(()=>{if(G==="plugin-details"&&A&&zq.current){let w=zq.current;zq.current=void 0,Nq.current(w)}},[G,A]);let Zq=fK.useCallback(()=>{if(g>=C.length)return;let w=C[g];if(w?.type==="flagged-plugin")return;if(w?.type==="plugin"){let x=`${w.plugin.name}@${w.marketplace}`,Yq=uK(),qq=m.get(x),e=Yq?.enabledPlugins?.[x]!==!1,n=w.scope;if(n==="builtin"||f8(n)){let $q=new Map(m);if(qq)$q.delete(x),(async()=>{try{if(qq==="will-disable")await z6(x);else await Y6(x);cq()}catch(yq){kK(yq)}})();else $q.set(x,e?"will-disable":"will-enable"),(async()=>{try{if(e)await Y6(x);else await z6(x);cq()}catch(yq){kK(yq)}})();Aq($q)}}else if(w?.type==="mcp")B(w.client.name)},[g,C,m,Q,B]),bq=fK.useCallback(()=>{if(g>=C.length)return;let w=C[g];if(w?.type==="plugin"){let x=Q.find((Yq)=>Yq.plugin.name===w.plugin.name&&Yq.marketplace===w.marketplace);if(x)u(x),j("plugin-details"),i(0),S(null)}else if(w?.type==="flagged-plugin")j({type:"flagged-detail",plugin:{id:w.id,name:w.name,marketplace:w.marketplace,reason:w.reason,text:w.text,flaggedAt:w.flaggedAt}}),S(null);else if(w?.type==="failed-plugin")j({type:"failed-plugin-details",plugin:{id:w.id,name:w.name,marketplace:w.marketplace,errors:w.errors,scope:w.scope}}),i(0),S(null);else if(w?.type==="mcp")j({type:"mcp-detail",client:w.client}),S(null)},[g,C,Q]);pq({"select:previous":()=>{if(g===0)l(!0);else Jq.handleSelectionChange(g-1,Oq)},"select:next":()=>{if(g<C.length-1)Jq.handleSelectionChange(g+1,Oq)},"select:accept":bq},{context:"Select",isActive:G==="plugin-list"&&!v}),pq({"plugin:toggle":Zq},{context:"Plugin",isActive:G==="plugin-list"&&!v});let Iq=fK.useCallback(()=>{if(typeof G!=="object"||G.type!=="flagged-detail")return;Y7(G.plugin.id),j("plugin-list")},[G]);pq({"select:accept":Iq},{context:"Select",isActive:typeof G==="object"&&G.type==="flagged-detail"});let iq=fK.useMemo(()=>{if(G!=="plugin-details"||!A)return[];let w=uK(),x=`${A.plugin.name}@${A.marketplace}`,Yq=w?.enabledPlugins?.[x]!==!1,qq=A.marketplace==="builtin",e=[];if(e.push({label:Yq?"Disable plugin":"Enable plugin",action:()=>void Pq(Yq?"disable":"enable")}),!qq){if(e.push({label:A.pendingUpdate?"Unmark for update":"Mark for update",action:async()=>{try{let n=await ZY(A.plugin.name,A.marketplace);if(n){S(n);return}let _q=[...Q],$q=_q.findIndex((yq)=>yq.plugin.name===A.plugin.name&&yq.marketplace===A.marketplace);if($q!==-1)_q[$q].pendingUpdate=!A.pendingUpdate,r(_q),u({...A,pendingUpdate:!A.pendingUpdate})}catch(n){S(n instanceof Error?n.message:"Failed to check plugin update availability")}}}),E)e.push({label:"Configure",action:async()=>{Xq(!0);try{let n=A.plugin.manifest.mcpServers,_q=null;if(typeof n==="string"&&$K(n))_q=n;else if(Array.isArray(n)){for(let mq of n)if(typeof mq==="string"&&$K(mq)){_q=mq;break}}if(!_q){S("No MCPB file found in plugin"),Xq(!1);return}let $q=`${A.plugin.name}@${A.marketplace}`,yq=await x6(_q,A.plugin.path,$q,void 0,void 0,!0);if("status"in yq&&yq.status==="needs-config")L(yq),j("configuring");else S("Failed to load MCPB for configuration")}catch(n){let _q=Eq(n);S(`Failed to load configuration: ${_q}`)}finally{Xq(!1)}}});if(A.plugin.manifest.userConfig&&Object.keys(A.plugin.manifest.userConfig).length>0)e.push({label:"Configure options",action:()=>{j({type:"configuring-options",schema:A.plugin.manifest.userConfig})}});e.push({label:"Update now",action:()=>void Pq("update")}),e.push({label:"Uninstall",action:()=>void Pq("uninstall")})}if(A.plugin.manifest.homepage)e.push({label:"Open homepage",action:()=>void KK(A.plugin.manifest.homepage)});if(A.plugin.manifest.repository)e.push({label:"View repository",action:()=>void KK(A.plugin.manifest.repository)});return e.push({label:"Back to plugin list",action:()=>{j("plugin-list"),u(null),S(null)}}),e},[G,A,E,Q]);if(pq({"select:previous":()=>{if(T>0)i(T-1)},"select:next":()=>{if(T<iq.length-1)i(T+1)},"select:accept":()=>{if(iq[T])iq[T].action()}},{context:"Select",isActive:G==="plugin-details"&&!!A}),pq({"select:accept":()=>{if(typeof G==="object"&&G.type==="failed-plugin-details")(async()=>{V(!0),S(null);let w=G.plugin.id,x=G.plugin.scope,Yq=f8(x)?await J8(w,x,!1):await J8(w,"user",!1),qq=Yq.success;if(!qq){let e=["userSettings","projectSettings","localSettings"];for(let n of e){let _q=hK(n);if(_q?.enabledPlugins?.[w]!==void 0)VK(n,{enabledPlugins:{..._q.enabledPlugins,[w]:void 0}}),qq=!0}cq()}if(qq){if(Y)await Y();V(!1),j("plugin-list")}else V(!1),S(Yq.message)})()}},{context:"Select",isActive:typeof G==="object"&&G.type==="failed-plugin-details"&&G.plugin.scope!=="managed"}),pq({"confirm:yes":()=>{if(!A)return;V(!0),S(null);let w=`${A.plugin.name}@${A.marketplace}`,{error:x}=VK("localSettings",{enabledPlugins:{...hK("localSettings")?.enabledPlugins,[w]:!1}});if(x){V(!1),S(`Failed to write settings: ${x.message}`);return}if(cq(),q(`\u2713 Disabled ${A.plugin.name} in .claude/settings.local.json. Run /reload-plugins to apply.`),Y)Y();K({type:"menu"})},"confirm:no":()=>{j("plugin-details"),S(null)}},{context:"Confirmation",isActive:G==="confirm-project-uninstall"&&!!A&&!I}),qK((w,x)=>{if(!A)return;let Yq=`${A.plugin.name}@${A.marketplace}`,qq=A.scope;if(!qq||qq==="builtin"||!f8(qq))return;let e=async(n)=>{V(!0),S(null);try{let _q=await J8(Yq,qq,n);if(!_q.success)throw Error(_q.message);cq();let $q=n?"":" \xB7 data preserved";if(q(`${EK.tick} ${_q.message}${$q}`),Y)Y();K({type:"menu"})}catch(_q){V(!1),S(_q instanceof Error?_q.message:String(_q))}};if(w==="y"||w==="Y")e(!0);else if(w==="n"||w==="N")e(!1);else if(x.escape)j("plugin-details"),S(null)},{isActive:typeof G==="object"&&G.type==="confirm-data-cleanup"&&!!A&&!I}),fK.useEffect(()=>{Oq(0)},[N]),qK((w,x)=>{let Yq=!x.ctrl&&!x.meta;if(v)return;if(w==="/"&&Yq)l(!0),F(""),Oq(0);else if(Yq&&w.length>0&&!/^\s+$/.test(w)&&w!=="j"&&w!=="k"&&w!==" ")l(!0),F(w),Oq(0)},{isActive:G==="plugin-list"}),s)return M(z,{children:"Loading installed plugins\u2026"},void 0,!1,void 0,this);if(wq.length===0)return M(O,{flexDirection:"column",children:[M(O,{marginBottom:1,children:M(z,{bold:!0,children:"Manage plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(z,{children:"No plugins or MCP servers installed."},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,children:"Esc to go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(typeof G==="object"&&G.type==="plugin-options"&&A){let x=function(Yq){if(q(Yq),Y)Y();K({type:"menu"})},w=`${A.plugin.name}@${A.marketplace}`;return M(UK,{plugin:A.plugin,pluginId:w,onDone:(Yq,qq)=>{switch(Yq){case"configured":x(`\u2713 Enabled and configured ${A.plugin.name}. Run /reload-plugins to apply.`);break;case"skipped":x(`\u2713 Enabled ${A.plugin.name}. Run /reload-plugins to apply.`);break;case"error":x(`Failed to save configuration: ${qq}`);break}}},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="configuring-options"&&A){let w=`${A.plugin.name}@${A.marketplace}`;return M(W8,{title:`Configure ${A.plugin.name}`,subtitle:"Plugin options",configSchema:G.schema,initialValues:y8(w),onSave:(x)=>{try{R8(w,x,G.schema),cq(),q("Configuration saved. Run /reload-plugins for changes to take effect.")}catch(Yq){S(`Failed to save configuration: ${Eq(Yq)}`)}j("plugin-details")},onCancel:()=>j("plugin-details")},void 0,!1,void 0,this)}if(G==="configuring"&&$&&A){let Yq=function(){L(null),j("plugin-details")},w=`${A.plugin.name}@${A.marketplace}`;async function x(qq){if(!$||!A)return;try{let e=A.plugin.manifest.mcpServers,n=null;if(typeof e==="string"&&$K(e))n=e;else if(Array.isArray(e)){for(let _q of e)if(typeof _q==="string"&&$K(_q)){n=_q;break}}if(!n){S("No MCPB file found"),j("plugin-details");return}await x6(n,A.plugin.path,w,void 0,qq),S(null),L(null),j("plugin-details"),q("Configuration saved. Run /reload-plugins for changes to take effect.")}catch(e){let n=Eq(e);S(`Failed to save configuration: ${n}`),j("plugin-details")}}return M(W8,{title:`Configure ${$.manifest.name}`,subtitle:`Plugin: ${A.plugin.name}`,configSchema:$.configSchema,initialValues:$.existingConfig,onSave:x,onCancel:Yq},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="flagged-detail"){let w=G.plugin;return M(O,{flexDirection:"column",children:[M(O,{children:M(z,{bold:!0,children:[w.name," @ ",w.marketplace]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{marginBottom:1,children:[M(z,{dimColor:!0,children:"Status: "},void 0,!1,void 0,this),M(z,{color:"error",children:"Removed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M(O,{marginBottom:1,flexDirection:"column",children:[M(z,{color:"error",children:["Removed from marketplace \xB7 reason: ",w.reason]},void 0,!0,void 0,this),M(z,{children:w.text},void 0,!1,void 0,this),M(z,{dimColor:!0,children:["Flagged on ",new Date(w.flaggedAt).toLocaleDateString()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:M(O,{children:[M(z,{children:[EK.pointer," "]},void 0,!0,void 0,this),M(z,{color:"suggestion",children:"Dismiss"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(Lq,{children:[M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"dismiss"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}if(G==="confirm-project-uninstall"&&A)return M(O,{flexDirection:"column",children:[M(z,{bold:!0,color:"warning",children:[A.plugin.name," is enabled in .claude/settings.json (shared with your team)"]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:[M(z,{children:"Disable it just for you in .claude/settings.local.json?"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:"This has the same effect as uninstalling, without affecting other contributors."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:I?M(z,{dimColor:!0,children:"Disabling\u2026"},void 0,!1,void 0,this):M(Lq,{children:[M(kq,{action:"confirm:yes",context:"Confirmation",fallback:"y",description:"disable"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(typeof G==="object"&&G.type==="confirm-data-cleanup"&&A)return M(O,{flexDirection:"column",children:[M(z,{bold:!0,children:[A.plugin.name," has ",G.size.human," of persistent data"]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:[M(z,{children:"Delete it along with the plugin?"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:lz(`${A.plugin.name}@${A.marketplace}`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:I?M(z,{dimColor:!0,children:"Uninstalling\u2026"},void 0,!1,void 0,this):M(z,{children:[M(z,{bold:!0,children:"y"},void 0,!1,void 0,this)," to delete \xB7 ",M(z,{bold:!0,children:"n"},void 0,!1,void 0,this)," to keep \xB7"," ",M(z,{bold:!0,children:"esc"},void 0,!1,void 0,this)," to cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(G==="plugin-details"&&A){let w=uK(),x=`${A.plugin.name}@${A.marketplace}`,Yq=w?.enabledPlugins?.[x]!==!1,qq=P.filter((n)=>("plugin"in n)&&n.plugin===A.plugin.name||n.source===x||n.source.startsWith(`${A.plugin.name}@`)),e=qq.length===0?null:M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,color:"error",children:[qq.length," ",Vq(qq.length,"error"),":"]},void 0,!0,void 0,this),qq.map((n,_q)=>{let $q=O8(n);return M(O,{flexDirection:"column",marginLeft:2,children:[M(z,{color:"error",children:mK(n)},void 0,!1,void 0,this),$q&&M(z,{dimColor:!0,italic:!0,children:[EK.arrowRight," ",$q]},void 0,!0,void 0,this)]},_q,!0,void 0,this)})]},void 0,!0,void 0,this);return M(O,{flexDirection:"column",children:[M(O,{children:M(z,{bold:!0,children:[A.plugin.name," @ ",A.marketplace]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{children:[M(z,{dimColor:!0,children:"Scope: "},void 0,!1,void 0,this),M(z,{children:A.scope||"user"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A.plugin.manifest.version&&M(O,{children:[M(z,{dimColor:!0,children:"Version: "},void 0,!1,void 0,this),M(z,{children:A.plugin.manifest.version},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A.plugin.manifest.description&&M(O,{marginBottom:1,children:M(z,{children:A.plugin.manifest.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),A.plugin.manifest.author&&M(O,{children:[M(z,{dimColor:!0,children:"Author: "},void 0,!1,void 0,this),M(z,{children:A.plugin.manifest.author.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M(O,{marginBottom:1,children:[M(z,{dimColor:!0,children:"Status: "},void 0,!1,void 0,this),M(z,{color:Yq?"success":"warning",children:Yq?"Enabled":"Disabled"},void 0,!1,void 0,this),A.pendingUpdate&&M(z,{color:"suggestion",children:" \xB7 Marked for update"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M($Y,{plugin:A.plugin,marketplace:A.marketplace},void 0,!1,void 0,this),e,M(O,{marginTop:1,flexDirection:"column",children:iq.map((n,_q)=>{let $q=_q===T;return M(O,{children:[$q&&M(z,{children:[EK.pointer," "]},void 0,!0,void 0,this),!$q&&M(z,{children:" "},void 0,!1,void 0,this),M(z,{bold:$q,color:n.label.includes("Uninstall")?"error":n.label.includes("Update")?"suggestion":void 0,children:n.label},void 0,!1,void 0,this)]},_q,!0,void 0,this)})},void 0,!1,void 0,this),I&&M(O,{marginTop:1,children:M(z,{children:"Processing\u2026"},void 0,!1,void 0,this)},void 0,!1,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[M(kq,{action:"select:previous",context:"Select",fallback:"\u2191",description:"navigate"},void 0,!1,void 0,this),M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(typeof G==="object"&&G.type==="failed-plugin-details"){let w=G.plugin,x=w.errors[0],Yq=x?mK(x):"Failed to load";return M(O,{flexDirection:"column",children:[M(z,{children:[M(z,{bold:!0,children:w.name},void 0,!1,void 0,this),M(z,{dimColor:!0,children:[" @ ",w.marketplace]},void 0,!0,void 0,this),M(z,{dimColor:!0,children:[" (",w.scope,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M(z,{color:"error",children:Yq},void 0,!1,void 0,this),w.scope==="managed"?M(O,{marginTop:1,children:M(z,{dimColor:!0,children:"Managed by your organization \u2014 contact your admin"},void 0,!1,void 0,this)},void 0,!1,void 0,this):M(O,{marginTop:1,children:[M(z,{color:"suggestion",children:[EK.pointer," "]},void 0,!0,void 0,this),M(z,{bold:!0,children:"Remove"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I&&M(z,{children:"Processing\u2026"},void 0,!1,void 0,this),c&&M(z,{color:"error",children:c},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[w.scope!=="managed"&&M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"remove"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(typeof G==="object"&&G.type==="mcp-detail"){let w=G.client,x=q6(W,w.name).length,Yq=()=>{j({type:"mcp-tools",client:w})},qq=()=>{j("plugin-list")},e=($q)=>{if($q)q($q);j("plugin-list")},n=w.config.scope,_q=w.config.type;if(_q==="stdio"){let $q={name:w.name,client:w,scope:n,transport:"stdio",config:w.config};return M(dz,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="sse"){let $q={name:w.name,client:w,scope:n,transport:"sse",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="http"){let $q={name:w.name,client:w,scope:n,transport:"http",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="claudeai-proxy"){let $q={name:w.name,client:w,scope:n,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}return j("plugin-list"),null}if(typeof G==="object"&&G.type==="mcp-tools"){let w=G.client,x=w.config.scope,Yq=w.config.type,qq;if(Yq==="stdio")qq={name:w.name,client:w,scope:x,transport:"stdio",config:w.config};else if(Yq==="sse")qq={name:w.name,client:w,scope:x,transport:"sse",isAuthenticated:void 0,config:w.config};else if(Yq==="http")qq={name:w.name,client:w,scope:x,transport:"http",isAuthenticated:void 0,config:w.config};else qq={name:w.name,client:w,scope:x,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(oz,{server:qq,onSelectTool:(e)=>{j({type:"mcp-tool-detail",client:w,tool:e})},onBack:()=>j({type:"mcp-detail",client:w})},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="mcp-tool-detail"){let{client:w,tool:x}=G,Yq=w.config.scope,qq=w.config.type,e;if(qq==="stdio")e={name:w.name,client:w,scope:Yq,transport:"stdio",config:w.config};else if(qq==="sse")e={name:w.name,client:w,scope:Yq,transport:"sse",isAuthenticated:void 0,config:w.config};else if(qq==="http")e={name:w.name,client:w,scope:Yq,transport:"http",isAuthenticated:void 0,config:w.config};else e={name:w.name,client:w,scope:Yq,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(xz,{tool:x,server:e,onBack:()=>j({type:"mcp-tools",client:w})},void 0,!1,void 0,this)}let ZK=Jq.getVisibleItems(C);return M(O,{flexDirection:"column",children:[M(O,{marginBottom:1,children:M(u8,{query:N,isFocused:v,isTerminalFocused:U,width:Wq-4,cursorOffset:Z},void 0,!1,void 0,this)},void 0,!1,void 0,this),C.length===0&&N&&M(O,{marginBottom:1,children:M(z,{dimColor:!0,children:['No items match "',N,'"']},void 0,!0,void 0,this)},void 0,!1,void 0,this),Jq.scrollPosition.canScrollUp&&M(O,{children:M(z,{dimColor:!0,children:[" ",EK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ZK.map((w,x)=>{let qq=Jq.toActualIndex(x)===g&&!v,e=x>0?ZK[x-1]:null,n=!e||e.scope!==w.scope,_q=($q)=>{switch($q){case"flagged":return"Flagged";case"project":return"Project";case"local":return"Local";case"user":return"User";case"enterprise":return"Enterprise";case"managed":return"Managed";case"builtin":return"Built-in";case"dynamic":return"Built-in";default:return $q}};return M(fK.Fragment,{children:[n&&M(O,{marginTop:x>0?1:0,paddingLeft:2,children:M(z,{dimColor:w.scope!=="flagged",color:w.scope==="flagged"?"warning":void 0,bold:w.scope==="flagged",children:_q(w.scope)},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(az,{item:w,isSelected:qq},void 0,!1,void 0,this)]},w.id,!0,void 0,this)}),Jq.scrollPosition.canScrollDown&&M(O,{children:M(z,{dimColor:!0,children:[" ",EK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,marginLeft:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[M(z,{children:"type to search"},void 0,!1,void 0,this),M(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),m.size>0&&M(O,{marginLeft:1,children:M(z,{dimColor:!0,italic:!0,children:"Run /reload-plugins to apply changes"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var f7=uq(()=>{zK();YK();Iz();Ez();cz();Fz();hz();Jz();v6();Bq();DK();GY();d6();i8();PY();h8();D8();S8();h6();wK();T8();cK();$6();oK();zz();XY();_Y();MY();G6();Oz();J6();tz();y6();WY();PK();E6();W6();b8();nz();m8()});function H7(K){if(!K)return{type:"menu"};let q=K.trim().split(/\s+/);switch(q[0]?.toLowerCase()){case"help":case"--help":case"-h":return{type:"help"};case"install":case"i":{let f=q[1];if(!f)return{type:"install"};if(f.includes("@")){let[_,J]=f.split("@");return{type:"install",plugin:_,marketplace:J}}if(f.startsWith("http://")||f.startsWith("https://")||f.startsWith("file://")||f.includes("/")||f.includes("\\"))return{type:"install",marketplace:f};return{type:"install",plugin:f}}case"manage":return{type:"manage"};case"uninstall":return{type:"uninstall",plugin:q[1]};case"enable":return{type:"enable",plugin:q[1]};case"disable":return{type:"disable",plugin:q[1]};case"validate":return{type:"validate",path:q.slice(1).join(" ").trim()||void 0};case"marketplace":case"market":{let f=q[1]?.toLowerCase(),H=q.slice(2).join(" ");switch(f){case"add":return{type:"marketplace",action:"add",target:H};case"remove":case"rm":return{type:"marketplace",action:"remove",target:H};case"update":return{type:"marketplace",action:"update",target:H};case"list":return{type:"marketplace",action:"list"};default:return{type:"marketplace"}}}default:return{type:"menu"}}}var w7=()=>{};import{c as jY}from"react/compiler-runtime";import CK from"figures";import{useEffect as yY}from"react";import{jsxDEV as k7}from"react/jsx-dev-runtime";function W7(K){let q=jY(5),{onComplete:Y,path:f}=K,H,_;if(q[0]!==Y||q[1]!==f)H=()=>{(async function(){if(!f){Y(`Usage: /plugin validate <path>
2
+ import{$c as Mz,Xc as l6,Yc as _7,Zc as p8,_c as V8,bd as A7,cd as TY}from"./cli-w0jxph8x.js";import{ed as l8,fd as Y8,hd as d6}from"./cli-krmacmt6.js";import{pd as K7,rd as z7,sd as Y7,td as _Y}from"./cli-s5ee96g6.js";import{vd as Rz,xd as o7}from"./cli-4v73qw68.js";import{Ad as f8,Bd as ez,Cd as c6,Ed as J8,Fd as z6,Gd as Y6,Id as q7,Jd as PY}from"./cli-e1e1m0pp.js";import{Ld as O6,Rd as tz}from"./cli-h5hm4rsb.js";import{cf as u8,df as hz,ef as g8,ff as Jz}from"./cli-d5tdpnv2.js";import{gf as P7,hf as $8,kf as NY}from"./cli-y2g1asak.js";import{$n as D6,An as fz,BD as $6,Bn as b7,CF as sq,Ch as K6,DF as _8,Eo as Q7,Ep as z8,FF as h8,Fh as MY,Fi as $K,Gi as qz,Hi as Kz,Ii as x6,Ip as I6,Ji as zz,KD as lK,Ki as y8,LD as Gz,Lh as I8,Li as R8,Mh as Az,Mn as Vz,Ni as Yz,OC as cq,Oi as Oz,Qu as vK,RC as cK,RD as IK,Ru as w6,SC as rK,Sp as s7,TC as M8,UC as yK,UD as G6,VC as _K,Vn as e7,WC as sK,Wn as q6,XC as Hz,Yn as B8,ZC as _z,Zn as m6,_C as G8,_n as C6,co as r8,dr as V6,eD as B6,ei as lz,fD as WK,fi as Qz,hi as XY,jD as r6,jo as i8,kD as x8,lD as iK,oD as jz,oG as j8,pD as yz,pG as i6,qD as oK,rD as sz,uh as Uz,vh as kY,vo as Dz,vx as QK,wo as S6,wx as J6,xh as iz,yD as Wz,yh as GY,yo as Sz,zD as BK}from"./cli-63389c5w.js";import{$L as A6,UL as oq,VL as A8,WL as kq,XL as zK,YL as Lq,ZL as YK,_L as FK}from"./cli-ndrvqgnc.js";import{cO as K8,dO as p6}from"./cli-39xs60x2.js";import{GO as eK,HO as v6,UO as xq,VO as pq,WO as DK,cP as X7,dP as RY}from"./cli-vbn35zp3.js";import{DQ as dq,FQ as O,HQ as z,LQ as a8,YP as Cz,YQ as qK,bQ as l7,hQ as E8,hR as Bq,mP as q8}from"./cli-7dm5ex18.js";import{$V as Vq,EW as hK,GW as VK,H3 as j6,HV as t8,IV as e8,JV as gz,K1 as i7,KW as uK,S3 as c7,SW as y6,_V as n8,hW as PK,jV as T6,o1 as mz,wV as x7}from"./cli-9sjvqgf1.js";import{f4 as OK,h4 as D8}from"./cli-vzcpa5mx.js";import{D5 as KK,E5 as S8}from"./cli-3q4bcd9y.js";import{b6 as e6,c6 as Z7,e6 as C8,i6 as kz}from"./cli-h3vttdhj.js";import{I8 as kK,L8 as Lz,N8 as T8}from"./cli-eehgc06t.js";import{a9 as nq,b9 as H6}from"./cli-2dkq8dre.js";import{F9 as L6,G9 as r7}from"./cli-4r0qxxn2.js";import{$9 as Eq,C_ as h6,_9 as xK,f_ as wK,i_ as rz,l_ as WY,z_ as RK}from"./cli-bqs5smsv.js";import{M_ as t6,W_ as $7}from"./cli-hy0se8fa.js";import{jda as uq}from"./cli-2afdzhna.js";import{useEffect as h7,useRef as J7,useState as n6}from"react";import{jsxDEV as Dq}from"react/jsx-dev-runtime";function Q6({inputValue:K,setInputValue:q,cursorOffset:Y,setCursorOffset:f,error:H,setError:_,result:J,setResult:h,setViewState:W,onAddComplete:P,cliMode:k=!1}){let v=J7(!1),[X,l]=n6(!1),[U,Wq]=n6(""),G=async()=>{let j=K.trim();if(!j){_("Please enter a marketplace source");return}let N=await l6(j);if(!N){_("Invalid marketplace source format. Try: owner/repo, https://..., or ./path");return}if("error"in N){_(N.error);return}_(null);try{l(!0),Wq("");let{name:F,resolvedSource:Z}=await r6(N,(u)=>{Wq(u)});B6(F,{source:Z}),cq();let A=N.source;if(N.source==="github")A=N.repo;if(nq("tengu_marketplace_added",{source_type:A}),P)await P();if(Wq(""),l(!1),k)h(`Successfully added marketplace: ${F}`);else W({type:"browse-marketplace",targetMarketplace:F})}catch(F){let Z=xK(F);if(kK(Z),_(Z.message),Wq(""),l(!1),k)h(`Error: ${Z.message}`);else h(null)}};return h7(()=>{if(K&&!v.current&&!H&&!J)v.current=!0,G()},[]),Dq(O,{flexDirection:"column",children:[Dq(O,{flexDirection:"column",paddingX:1,borderStyle:"round",children:[Dq(O,{marginBottom:1,children:Dq(z,{bold:!0,children:"Add Marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Dq(O,{flexDirection:"column",children:[Dq(z,{children:"Enter marketplace source:"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:"Examples:"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 owner/repo (GitHub)"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 git@github.com:owner/repo.git (SSH)"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 https://example.com/marketplace.json"},void 0,!1,void 0,this),Dq(z,{dimColor:!0,children:" \xB7 ./path/to/marketplace"},void 0,!1,void 0,this),Dq(O,{marginTop:1,children:Dq(j8,{value:K,onChange:q,onSubmit:G,columns:80,cursorOffset:Y,onChangeCursorOffset:f,focus:!0,showCursor:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&Dq(O,{marginTop:1,children:[Dq(vK,{},void 0,!1,void 0,this),Dq(z,{children:U||"Adding marketplace to configuration\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&Dq(O,{marginTop:1,children:Dq(z,{color:"error",children:H},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&Dq(O,{marginTop:1,children:Dq(z,{children:J},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Dq(O,{marginLeft:3,children:Dq(z,{dimColor:!0,italic:!0,children:Dq(Lq,{children:[Dq(oq,{shortcut:"Enter",action:"add"},void 0,!1,void 0,this),Dq(kq,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var s6=uq(()=>{H6();zK();YK();A8();w6();i6();Bq();wK();T8();cK();oK();_7()});import{c as v7}from"react/compiler-runtime";import T7 from"figures";import{useState as k6}from"react";import{jsxDEV as eq}from"react/jsx-dev-runtime";function j7(K,q,Y,f){let H={};for(let _ of K){let J=Y[_],h=q[_]??"";if(J?.sensitive===!0&&h===""&&f?.[_]!==void 0)continue;if(J?.type==="number"){if(h.trim()==="")continue;let W=Number(h);H[_]=Number.isNaN(W)?h:W}else if(J?.type==="boolean")H[_]=t6(h);else H[_]=h}return H}function W8(K){let q=v7(70),{title:Y,subtitle:f,configSchema:H,initialValues:_,onSave:J,onCancel:h}=K,W;if(q[0]!==H)W=Object.keys(H),q[0]=H,q[1]=W;else W=q[1];let P=W,k;if(q[2]!==H||q[3]!==_)k=(L)=>{if(H[L]?.sensitive===!0)return"";let t=_?.[L];return t===void 0?"":String(t)},q[2]=H,q[3]=_,q[4]=k;else k=q[4];let v=k,[X,l]=k6(0),U;if(q[5]===Symbol.for("react.memo_cache_sentinel"))U={},q[5]=U;else U=q[5];let[Wq,G]=k6(U),j;if(q[6]!==P[0]||q[7]!==v)j=()=>P[0]?v(P[0]):"",q[6]=P[0],q[7]=v,q[8]=j;else j=q[8];let[N,F]=k6(j),Z=P[X],A=Z?H[Z]:null,u;if(q[9]===Symbol.for("react.memo_cache_sentinel"))u={context:"Settings"},q[9]=u;else u=q[9];xq("confirm:no",h,u);let Hq;if(q[10]!==Z||q[11]!==X||q[12]!==N||q[13]!==P||q[14]!==v)Hq=()=>{if(X<P.length-1&&Z){G((t)=>({...t,[Z]:N})),l(N7);let L=P[X+1];F(L?v(L):"")}},q[10]=Z,q[11]=X,q[12]=N,q[13]=P,q[14]=v,q[15]=Hq;else Hq=q[15];let D=Hq,Q;if(q[16]!==H||q[17]!==Z||q[18]!==X||q[19]!==N||q[20]!==P||q[21]!==v||q[22]!==_||q[23]!==J||q[24]!==Wq)Q=()=>{if(!Z)return;let L={...Wq,[Z]:N};if(X===P.length-1)J(j7(P,L,H,_));else{G(L),l(R7);let t=P[X+1];F(t?v(t):"")}},q[16]=H,q[17]=Z,q[18]=X,q[19]=N,q[20]=P,q[21]=v,q[22]=_,q[23]=J,q[24]=Wq,q[25]=Q;else Q=q[25];let r=Q,s;if(q[26]!==r||q[27]!==D)s={"confirm:nextField":D,"confirm:yes":r},q[26]=r,q[27]=D,q[28]=s;else s=q[28];let fq;if(q[29]===Symbol.for("react.memo_cache_sentinel"))fq={context:"Confirmation"},q[29]=fq;else fq=q[29];pq(s,fq);let m;if(q[30]===Symbol.for("react.memo_cache_sentinel"))m=(L,t)=>{if(t.backspace||t.delete){F(y7);return}if(L&&!t.ctrl&&!t.meta&&!t.tab&&!t.return)F((Xq)=>Xq+L)},q[30]=m;else m=q[30];if(qK(m),!A||!Z)return null;let Aq=A.sensitive===!0,Gq=A.required===!0,zq;if(q[31]!==N||q[32]!==Aq)zq=Aq?"*".repeat(e6(N)):N,q[31]=N,q[32]=Aq,q[33]=zq;else zq=q[33];let B=zq,Mq=A.title||Z,hq;if(q[34]!==Gq)hq=Gq&&eq(z,{color:"error",children:" *"},void 0,!1,void 0,this),q[34]=Gq,q[35]=hq;else hq=q[35];let wq;if(q[36]!==Mq||q[37]!==hq)wq=eq(z,{bold:!0,children:[Mq,hq]},void 0,!0,void 0,this),q[36]=Mq,q[37]=hq,q[38]=wq;else wq=q[38];let y;if(q[39]!==A.description)y=A.description&&eq(z,{dimColor:!0,children:A.description},void 0,!1,void 0,this),q[39]=A.description,q[40]=y;else y=q[40];let C;if(q[41]===Symbol.for("react.memo_cache_sentinel"))C=eq(z,{children:[T7.pointerSmall," "]},void 0,!0,void 0,this),q[41]=C;else C=q[41];let g;if(q[42]!==B)g=eq(z,{children:B},void 0,!1,void 0,this),q[42]=B,q[43]=g;else g=q[43];let Oq;if(q[44]===Symbol.for("react.memo_cache_sentinel"))Oq=eq(z,{children:"\u2588"},void 0,!1,void 0,this),q[44]=Oq;else Oq=q[44];let Jq;if(q[45]!==g)Jq=eq(O,{marginTop:1,children:[C,g,Oq]},void 0,!0,void 0,this),q[45]=g,q[46]=Jq;else Jq=q[46];let T;if(q[47]!==wq||q[48]!==y||q[49]!==Jq)T=eq(O,{flexDirection:"column",children:[wq,y,Jq]},void 0,!0,void 0,this),q[47]=wq,q[48]=y,q[49]=Jq,q[50]=T;else T=q[50];let i=X+1,I;if(q[51]!==P.length||q[52]!==i)I=eq(z,{dimColor:!0,children:["Field ",i," of ",P.length]},void 0,!0,void 0,this),q[51]=P.length,q[52]=i,q[53]=I;else I=q[53];let V;if(q[54]!==X||q[55]!==P.length)V=X<P.length-1&&eq(z,{dimColor:!0,children:"Tab: Next field \xB7 Enter: Save and continue"},void 0,!1,void 0,this),q[54]=X,q[55]=P.length,q[56]=V;else V=q[56];let c;if(q[57]!==X||q[58]!==P.length)c=X===P.length-1&&eq(z,{dimColor:!0,children:"Enter: Save configuration"},void 0,!1,void 0,this),q[57]=X,q[58]=P.length,q[59]=c;else c=q[59];let S;if(q[60]!==I||q[61]!==V||q[62]!==c)S=eq(O,{flexDirection:"column",children:[I,V,c]},void 0,!0,void 0,this),q[60]=I,q[61]=V,q[62]=c,q[63]=S;else S=q[63];let $;if(q[64]!==h||q[65]!==f||q[66]!==T||q[67]!==S||q[68]!==Y)$=eq(FK,{title:Y,subtitle:f,onCancel:h,isCancelActive:!1,children:[T,S]},void 0,!0,void 0,this),q[64]=h,q[65]=f,q[66]=T,q[67]=S,q[68]=Y,q[69]=$;else $=q[69];return $}function y7(K){return K.slice(0,-1)}function R7(K){return K+1}function N7(K){return K+1}var W6=uq(()=>{A6();Z7();Bq();DK();$7()});import*as SK from"react";import{jsxDEV as L7}from"react/jsx-dev-runtime";async function N8(K){let{enabled:q,disabled:Y}=await IK();return[...q,...Y].find((f)=>f.repository===K||f.source===K)}function UK({plugin:K,pluginId:q,onDone:Y}){let[f]=SK.useState(()=>{let P=[],k=Yz(K);if(Object.keys(k).length>0)P.push({key:"top-level",title:`Configure ${K.name}`,subtitle:"Plugin options",schema:k,load:()=>y8(q),save:(X)=>R8(q,X,K.manifest.userConfig)});let v=fz(K);for(let X of v)P.push({key:`channel:${X.server}`,title:`Configure ${X.displayName}`,subtitle:`Plugin: ${K.name}`,schema:X.configSchema,load:()=>qz(q,X.server)??void 0,save:(l)=>Kz(q,X.server,l,X.configSchema)});return P}),[H,_]=SK.useState(0),J=SK.useRef(Y);if(J.current=Y,SK.useEffect(()=>{if(f.length===0)J.current("skipped")},[f.length]),f.length===0)return null;let h=f[H];function W(P){try{h.save(P)}catch(v){Y("error",Eq(v));return}let k=H+1;if(k<f.length)_(k);else Y("configured")}return L7(W8,{title:h.title,subtitle:h.subtitle,configSchema:h.schema,initialValues:h.load(),onSave:W,onCancel:()=>Y("skipped")},h.key,!1,void 0,this)}var b8=uq(()=>{wK();zz();b7();G6();Oz();W6()});import{c as m7}from"react/compiler-runtime";import C7 from"figures";import{jsxDEV as M6}from"react/jsx-dev-runtime";function L8(){let K=m7(3),q;if(K[0]===Symbol.for("react.memo_cache_sentinel"))q=Hz(),K[0]=q;else q=K[0];let Y=q,f;if(K[1]===Symbol.for("react.memo_cache_sentinel"))f=M6(z,{color:"claude",children:[C7.warning," "]},void 0,!0,void 0,this),K[1]=f;else f=K[1];let H;if(K[2]===Symbol.for("react.memo_cache_sentinel"))H=M6(O,{marginBottom:1,children:[f,M6(z,{dimColor:!0,italic:!0,children:["Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.",Y?` ${Y}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),K[2]=H;else H=K[2];return H}var X6=uq(()=>{Bq();G8()});import{c as D7}from"react/compiler-runtime";import{jsxDEV as pK}from"react/jsx-dev-runtime";function TK(K){if(K.entry.source&&typeof K.entry.source==="object"&&"source"in K.entry.source&&K.entry.source.source==="github"&&typeof K.entry.source==="object"&&"repo"in K.entry.source)return K.entry.source.repo;return null}function aK(K,q){let Y=[{label:"Install for you (user scope)",action:"install-user"},{label:"Install for all collaborators on this repository (project scope)",action:"install-project"},{label:"Install for you, in this repo only (local scope)",action:"install-local"}];if(K)Y.push({label:"Open homepage",action:"homepage"});if(q)Y.push({label:"View on GitHub",action:"github"});return Y.push({label:"Back to plugin list",action:"back"}),Y}function wz(K){let q=D7(7),{hasSelection:Y}=K,f;if(q[0]!==Y)f=Y&&pK(kq,{action:"plugin:install",context:"Plugin",fallback:"i",description:"install",bold:!0},void 0,!1,void 0,this),q[0]=Y,q[1]=f;else f=q[1];let H,_,J;if(q[2]===Symbol.for("react.memo_cache_sentinel"))H=pK(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),_=pK(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),J=pK(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this),q[2]=H,q[3]=_,q[4]=J;else H=q[2],_=q[3],J=q[4];let h;if(q[5]!==f)h=pK(O,{marginTop:1,children:pK(z,{dimColor:!0,italic:!0,children:pK(Lq,{children:[f,H,_,J]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[5]=f,q[6]=h;else h=q[6];return h}var P6=uq(()=>{zK();YK();Bq()});import{useCallback as jK,useMemo as S7,useRef as I7}from"react";function nK({totalItems:K,maxVisible:q=p7,selectedIndex:Y=0}){let f=K>q,H=I7(0),_=S7(()=>{if(!f)return 0;let N=H.current;if(Y<N)return H.current=Y,Y;if(Y>=N+q){let A=Y-q+1;return H.current=A,A}let F=Math.max(0,K-q),Z=Math.min(N,F);return H.current=Z,Z},[Y,q,f,K]),J=_,h=Math.min(_+q,K),W=jK((N)=>{if(!f)return N;return N.slice(J,h)},[f,J,h]),P=jK((N)=>{return J+N},[J]),k=jK((N)=>{return N>=J&&N<h},[J,h]),v=jK((N)=>{},[]),X=jK(()=>{},[]),l=jK(()=>{},[]),U=jK((N,F)=>{let Z=Math.max(0,Math.min(N,K-1));F(Z)},[K]),Wq=jK((N,F)=>{return!1},[]),G=Math.max(1,Math.ceil(K/q));return{currentPage:Math.floor(_/q),totalPages:G,startIndex:J,endIndex:h,needsPagination:f,pageSize:q,getVisibleItems:W,toActualIndex:P,isOnCurrentPage:k,goToPage:v,nextPage:X,prevPage:l,handleSelectionChange:U,handlePageNavigation:Wq,scrollPosition:{current:Y+1,total:K,canScrollUp:_>0,canScrollDown:_+q<K}}}var p7=5;var m8=()=>{};import AK from"figures";import*as d8 from"react";import{useEffect as _6,useState as lq}from"react";import{jsxDEV as p,Fragment as V7}from"react/jsx-dev-runtime";function Xz({error:K,setError:q,result:Y,setResult:f,setViewState:H,onInstallComplete:_,targetMarketplace:J,targetPlugin:h}){let[W,P]=lq("marketplace-list"),[k,v]=lq(null),[X,l]=lq(null),[U,Wq]=lq([]),[G,j]=lq([]),[N,F]=lq(!0),[Z,A]=lq(null),[u,Hq]=lq(0),[D,Q]=lq(new Set),[r,s]=lq(new Set),fq=nK({totalItems:G.length,selectedIndex:u}),[m,Aq]=lq(0),[Gq,zq]=lq(!1),[B,Mq]=lq(null),[hq,wq]=lq(null),y=d8.useCallback(()=>{if(W==="plugin-list")if(J)H({type:"manage-marketplaces",targetMarketplace:J});else if(U.length===1)H({type:"menu"});else P("marketplace-list"),v(null),Q(new Set);else if(W==="plugin-details")P("plugin-list"),l(null);else H({type:"menu"})},[W,J,H,U.length]);xq("confirm:no",y,{context:"Confirmation"}),_6(()=>{async function T(){try{let i=await WK(),{marketplaces:I,failures:V}=await _K(i),c=[];for(let{name:L,config:t,data:Xq}of I)if(Xq){let E=OK(Xq.plugins,(o)=>Wz(yK(o.name,L)));c.push({name:L,totalPlugins:Xq.plugins.length,installedCount:E,source:M8(t.source)})}c.sort((L,t)=>{if(L.name==="claude-plugin-directory")return-1;if(t.name==="claude-plugin-directory")return 1;return 0}),Wq(c);let S=OK(I,(L)=>L.data!==null),$=sK(V,S);if($)if($.type==="warning")wq($.message+". Showing available marketplaces.");else throw Error($.message);if(c.length===1&&!J&&!h){let L=c[0];if(L)v(L.name),P("plugin-list")}if(h){let L=null,t=null;for(let[Xq]of Object.entries(i)){let E=await iK(Xq);if(E){let o=E.plugins.find((Pq)=>Pq.name===h);if(o){let Pq=yK(o.name,Xq);L={entry:o,marketplaceName:Xq,pluginId:Pq,isInstalled:BK(Pq)},t=Xq;break}}}if(L&&t){let Xq=L.pluginId;if(BK(Xq))q(`Plugin '${Xq}' is already installed globally. Use '/plugin' to manage existing plugins.`);else v(t),l(L),P("plugin-details")}else q(`Plugin "${h}" not found in any marketplace`)}else if(J)if(c.some((t)=>t.name===J))v(J),P("plugin-list");else q(`Marketplace "${J}" not found`)}catch(i){q(i instanceof Error?i.message:"Failed to load marketplaces")}finally{F(!1)}}T()},[q,J,h]),_6(()=>{if(!k)return;let T=!1;async function i(I){F(!0);try{let V=await iK(I);if(T)return;if(!V)throw Error(`Failed to load marketplace: ${I}`);let c=[];for(let S of V.plugins){let $=yK(S.name,I);if(QK($))continue;c.push({entry:S,marketplaceName:I,pluginId:$,isInstalled:BK($)})}try{let S=await p8();if(T)return;if(A(S),S)c.sort(($,L)=>{let t=S.get($.pluginId)??0,Xq=S.get(L.pluginId)??0;if(t!==Xq)return Xq-t;return $.entry.name.localeCompare(L.entry.name)});else c.sort(($,L)=>$.entry.name.localeCompare(L.entry.name))}catch(S){if(T)return;RK(`Failed to fetch install counts: ${Eq(S)}`),c.sort(($,L)=>$.entry.name.localeCompare(L.entry.name))}j(c),Hq(0),Q(new Set)}catch(V){if(T)return;q(V instanceof Error?V.message:"Failed to load plugins")}finally{F(!1)}}return i(k),()=>{T=!0}},[k,q]);let C=async()=>{if(D.size===0)return;let T=G.filter((c)=>D.has(c.pluginId));s(new Set(T.map((c)=>c.pluginId)));let i=0,I=0,V=[];for(let c of T){let S=await lK({pluginId:c.pluginId,entry:c.entry,marketplaceName:c.marketplaceName,scope:"user"});if(S.success)i++;else I++,V.push({name:c.entry.name,reason:S.error})}if(s(new Set),Q(new Set),cq(),I===0){let c=`\u2713 Installed ${i} ${Vq(i,"plugin")}. Run /reload-plugins to activate.`;f(c)}else if(i===0)q(`Failed to install: ${rK(V,!0)}`);else{let c=`\u2713 Installed ${i} of ${i+I} plugins. Failed: ${rK(V,!1)}. Run /reload-plugins to activate successfully installed plugins.`;f(c)}if(i>0){if(_)await _()}H({type:"menu"})},g=async(T,i="user")=>{zq(!0),Mq(null);let I=await lK({pluginId:T.pluginId,entry:T.entry,marketplaceName:T.marketplaceName,scope:i});if(I.success){let V=await N8(T.pluginId);if(V){zq(!1),P({type:"plugin-options",plugin:V,pluginId:T.pluginId});return}if(f(I.message),_)await _();H({type:"menu"})}else zq(!1),Mq(I.error)};_6(()=>{if(K)f(K)},[K,f]),pq({"select:previous":()=>{if(u>0)Hq(u-1)},"select:next":()=>{if(u<U.length-1)Hq(u+1)},"select:accept":()=>{let T=U[u];if(T)v(T.name),P("plugin-list")}},{context:"Select",isActive:W==="marketplace-list"}),pq({"select:previous":()=>{if(u>0)fq.handleSelectionChange(u-1,Hq)},"select:next":()=>{if(u<G.length-1)fq.handleSelectionChange(u+1,Hq)},"select:accept":()=>{if(u===G.length&&D.size>0)C();else if(u<G.length){let T=G[u];if(T)if(T.isInstalled)H({type:"manage-plugins",targetPlugin:T.entry.name,targetMarketplace:T.marketplaceName});else l(T),P("plugin-details"),Aq(0),Mq(null)}}},{context:"Select",isActive:W==="plugin-list"}),pq({"plugin:toggle":()=>{if(u<G.length){let T=G[u];if(T&&!T.isInstalled){let i=new Set(D);if(i.has(T.pluginId))i.delete(T.pluginId);else i.add(T.pluginId);Q(i)}}},"plugin:install":()=>{if(D.size>0)C()}},{context:"Plugin",isActive:W==="plugin-list"});let Oq=d8.useMemo(()=>{if(!X)return[];let T=X.entry.homepage,i=TK(X);return aK(T,i)},[X]);if(pq({"select:previous":()=>{if(m>0)Aq(m-1)},"select:next":()=>{if(m<Oq.length-1)Aq(m+1)},"select:accept":()=>{if(!X)return;let T=Oq[m]?.action,i=X.entry.homepage,I=TK(X);if(T==="install-user")g(X,"user");else if(T==="install-project")g(X,"project");else if(T==="install-local")g(X,"local");else if(T==="homepage"&&i)KK(i);else if(T==="github"&&I)KK(`https://github.com/${I}`);else if(T==="back")P("plugin-list"),l(null)}},{context:"Select",isActive:W==="plugin-details"&&!!X}),typeof W==="object"&&W.type==="plugin-options"){let I=function(V){if(f(V),_)_();H({type:"menu"})},{plugin:T,pluginId:i}=W;return p(UK,{plugin:T,pluginId:i,onDone:(V,c)=>{switch(V){case"configured":I(`\u2713 Installed and configured ${T.name}. Run /reload-plugins to apply.`);break;case"skipped":I(`\u2713 Installed ${T.name}. Run /reload-plugins to apply.`);break;case"error":I(`Installed but failed to save config: ${c}`);break}}},void 0,!1,void 0,this)}if(N)return p(z,{children:"Loading\u2026"},void 0,!1,void 0,this);if(K)return p(z,{color:"error",children:K},void 0,!1,void 0,this);if(W==="marketplace-list"){if(U.length===0)return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Select marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(z,{children:"No marketplaces configured."},void 0,!1,void 0,this),p(z,{dimColor:!0,children:["Add a marketplace first using ","'Add marketplace'","."]},void 0,!0,void 0,this),p(O,{marginTop:1,paddingLeft:1,children:p(z,{dimColor:!0,children:p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Select marketplace"},void 0,!1,void 0,this)},void 0,!1,void 0,this),hq&&p(O,{marginBottom:1,flexDirection:"column",children:p(z,{color:"warning",children:[AK.warning," ",hq]},void 0,!0,void 0,this)},void 0,!1,void 0,this),U.map((T,i)=>p(O,{flexDirection:"column",marginBottom:i<U.length-1?1:0,children:[p(O,{children:p(z,{color:u===i?"suggestion":void 0,children:[u===i?AK.pointer:" "," ",T.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(O,{marginLeft:2,children:p(z,{dimColor:!0,children:[T.totalPlugins," ",Vq(T.totalPlugins,"plugin")," available",T.installedCount>0&&` \xB7 ${T.installedCount} already installed`,T.source&&` \xB7 ${T.source}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},T.name,!0,void 0,this)),p(O,{marginTop:1,children:p(z,{dimColor:!0,italic:!0,children:p(Lq,{children:[p(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(W==="plugin-details"&&X){let T=X.entry.homepage,i=TK(X),I=aK(T,i);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Plugin Details"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(O,{flexDirection:"column",marginBottom:1,children:[p(z,{bold:!0,children:X.entry.name},void 0,!1,void 0,this),X.entry.version&&p(z,{dimColor:!0,children:["Version: ",X.entry.version]},void 0,!0,void 0,this),X.entry.description&&p(O,{marginTop:1,children:p(z,{children:X.entry.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),X.entry.author&&p(O,{marginTop:1,children:p(z,{dimColor:!0,children:["By:"," ",typeof X.entry.author==="string"?X.entry.author:X.entry.author.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p(O,{flexDirection:"column",marginBottom:1,children:[p(z,{bold:!0,children:"Will install:"},void 0,!1,void 0,this),X.entry.commands&&p(z,{dimColor:!0,children:["\xB7 Commands:"," ",Array.isArray(X.entry.commands)?X.entry.commands.join(", "):Object.keys(X.entry.commands).join(", ")]},void 0,!0,void 0,this),X.entry.agents&&p(z,{dimColor:!0,children:["\xB7 Agents:"," ",Array.isArray(X.entry.agents)?X.entry.agents.join(", "):Object.keys(X.entry.agents).join(", ")]},void 0,!0,void 0,this),X.entry.hooks&&p(z,{dimColor:!0,children:["\xB7 Hooks: ",Object.keys(X.entry.hooks).join(", ")]},void 0,!0,void 0,this),X.entry.mcpServers&&p(z,{dimColor:!0,children:["\xB7 MCP Servers:"," ",Array.isArray(X.entry.mcpServers)?X.entry.mcpServers.join(", "):typeof X.entry.mcpServers==="object"?Object.keys(X.entry.mcpServers).join(", "):"configured"]},void 0,!0,void 0,this),!X.entry.commands&&!X.entry.agents&&!X.entry.hooks&&!X.entry.mcpServers&&p(V7,{children:typeof X.entry.source==="object"&&"source"in X.entry.source&&(X.entry.source.source==="github"||X.entry.source.source==="url"||X.entry.source.source==="npm"||X.entry.source.source==="pip")?p(z,{dimColor:!0,children:"\xB7 Component summary not available for remote plugin"},void 0,!1,void 0,this):p(z,{dimColor:!0,children:"\xB7 Components will be discovered at installation"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p(L8,{},void 0,!1,void 0,this),B&&p(O,{marginBottom:1,children:p(z,{color:"error",children:["Error: ",B]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(O,{flexDirection:"column",children:I.map((V,c)=>p(O,{children:[m===c&&p(z,{children:"> "},void 0,!1,void 0,this),m!==c&&p(z,{children:" "},void 0,!1,void 0,this),p(z,{bold:m===c,children:Gq&&V.action==="install"?"Installing\u2026":V.label},void 0,!1,void 0,this)]},V.action,!0,void 0,this))},void 0,!1,void 0,this),p(O,{marginTop:1,paddingLeft:1,children:p(z,{dimColor:!0,children:p(Lq,{children:[p(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(G.length===0)return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Install plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),p(z,{dimColor:!0,children:"No new plugins available to install."},void 0,!1,void 0,this),p(z,{dimColor:!0,children:"All plugins from this marketplace are already installed."},void 0,!1,void 0,this),p(O,{marginLeft:3,children:p(z,{dimColor:!0,italic:!0,children:p(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let Jq=fq.getVisibleItems(G);return p(O,{flexDirection:"column",children:[p(O,{marginBottom:1,children:p(z,{bold:!0,children:"Install Plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),fq.scrollPosition.canScrollUp&&p(O,{children:p(z,{dimColor:!0,children:[" ",AK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Jq.map((T,i)=>{let I=fq.toActualIndex(i),V=u===I,c=D.has(T.pluginId),S=r.has(T.pluginId),$=i===Jq.length-1;return p(O,{flexDirection:"column",marginBottom:$&&!K?0:1,children:[p(O,{children:[p(z,{color:V?"suggestion":void 0,children:[V?AK.pointer:" "," "]},void 0,!0,void 0,this),p(z,{color:T.isInstalled?"success":void 0,children:[T.isInstalled?AK.tick:S?AK.ellipsis:c?AK.radioOn:AK.radioOff," ",T.entry.name,T.entry.category&&p(z,{dimColor:!0,children:[" [",T.entry.category,"]"]},void 0,!0,void 0,this),T.entry.tags?.includes("community-managed")&&p(z,{dimColor:!0,children:" [Community Managed]"},void 0,!1,void 0,this),T.isInstalled&&p(z,{dimColor:!0,children:" (installed)"},void 0,!1,void 0,this),Z&&k===I8&&p(z,{dimColor:!0,children:[" \xB7 ",V8(Z.get(T.pluginId)??0)," ","installs"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),T.entry.description&&p(O,{marginLeft:4,children:[p(z,{dimColor:!0,children:C8(T.entry.description,60)},void 0,!1,void 0,this),T.entry.version&&p(z,{dimColor:!0,children:[" \xB7 v",T.entry.version]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},T.pluginId,!0,void 0,this)}),fq.scrollPosition.canScrollDown&&p(O,{children:p(z,{dimColor:!0,children:[" ",AK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&p(O,{marginTop:1,children:p(z,{color:"error",children:[AK.cross," ",K]},void 0,!0,void 0,this)},void 0,!1,void 0,this),p(wz,{hasSelection:D.size>0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Pz=uq(()=>{zK();YK();Bq();DK();D8();S8();h6();wK();cK();Mz();$6();G8();oK();Az();Gz();J6();PK();kz();b8();X6();P6();m8()});import{c as $z}from"react/compiler-runtime";import NK from"figures";import*as Zz from"react";import{useCallback as d7,useEffect as Z6,useMemo as E7,useState as Qq}from"react";import{jsxDEV as d,Fragment as tK}from"react/jsx-dev-runtime";function vz({error:K,setError:q,result:Y,setResult:f,setViewState:H,onInstallComplete:_,onSearchModeChange:J,targetPlugin:h}){let[W,P]=Qq("plugin-list"),[k,v]=Qq(null),[X,l]=Qq([]),[U,Wq]=Qq(!0),[G,j]=Qq(null),[N,F]=Qq(!1),Z=d7(($)=>{F($),J?.($)},[J]),{query:A,setQuery:u,cursorOffset:Hq}=g8({isActive:W==="plugin-list"&&N&&!U,onExit:()=>{Z(!1)}}),D=E8(),{columns:Q}=eK(),r=E7(()=>{if(!A)return X;let $=A.toLowerCase();return X.filter((L)=>L.entry.name.toLowerCase().includes($)||L.entry.description?.toLowerCase().includes($)||L.marketplaceName.toLowerCase().includes($))},[X,A]),[s,fq]=Qq(0),[m,Aq]=Qq(new Set),[Gq,zq]=Qq(new Set),B=nK({totalItems:r.length,selectedIndex:s});Z6(()=>{fq(0)},[A]);let[Mq,hq]=Qq(0),[wq,y]=Qq(!1),[C,g]=Qq(null),[Oq,Jq]=Qq(null),[T,i]=Qq(null);Z6(()=>{async function $(){try{let L=await WK(),{marketplaces:t,failures:Xq}=await _K(L),E=[];for(let{name:bq,data:Iq}of t)if(Iq)for(let iq of Iq.plugins){let ZK=yK(iq.name,bq);E.push({entry:iq,marketplaceName:bq,pluginId:ZK,isInstalled:BK(ZK)})}let o=E.filter((bq)=>!bq.isInstalled&&!QK(bq.pluginId));try{let bq=await p8();if(j(bq),bq)o.sort((Iq,iq)=>{let ZK=bq.get(Iq.pluginId)??0,w=bq.get(iq.pluginId)??0;if(ZK!==w)return w-ZK;return Iq.entry.name.localeCompare(iq.entry.name)});else o.sort((Iq,iq)=>Iq.entry.name.localeCompare(iq.entry.name))}catch(bq){RK(`Failed to fetch install counts: ${Eq(bq)}`),o.sort((Iq,iq)=>Iq.entry.name.localeCompare(iq.entry.name))}l(o);let Pq=Object.keys(L).length;if(o.length===0){let bq=await _z({configuredMarketplaceCount:Pq,failedMarketplaceCount:Xq.length});i(bq)}let Nq=OK(t,(bq)=>bq.data!==null),Zq=sK(Xq,Nq);if(Zq)if(Zq.type==="warning")Jq(Zq.message+". Showing available plugins.");else throw Error(Zq.message);if(h){let bq=E.find((Iq)=>Iq.entry.name===h);if(bq)if(bq.isInstalled)q(`Plugin '${bq.pluginId}' is already installed. Use '/plugin' to manage existing plugins.`);else v(bq),P("plugin-details");else q(`Plugin "${h}" not found in any marketplace`)}}catch(L){q(L instanceof Error?L.message:"Failed to load plugins")}finally{Wq(!1)}}$()},[q,h]);let I=async()=>{if(m.size===0)return;let $=X.filter((E)=>m.has(E.pluginId));zq(new Set($.map((E)=>E.pluginId)));let L=0,t=0,Xq=[];for(let E of $){let o=await lK({pluginId:E.pluginId,entry:E.entry,marketplaceName:E.marketplaceName,scope:"user"});if(o.success)L++;else t++,Xq.push({name:E.entry.name,reason:o.error})}if(zq(new Set),Aq(new Set),cq(),t===0){let E=`\u2713 Installed ${L} ${Vq(L,"plugin")}. Run /reload-plugins to activate.`;f(E)}else if(L===0)q(`Failed to install: ${rK(Xq,!0)}`);else{let E=`\u2713 Installed ${L} of ${L+t} plugins. Failed: ${rK(Xq,!1)}. Run /reload-plugins to activate successfully installed plugins.`;f(E)}if(L>0){if(_)await _()}H({type:"menu"})},V=async($,L="user")=>{y(!0),g(null);let t=await lK({pluginId:$.pluginId,entry:$.entry,marketplaceName:$.marketplaceName,scope:L});if(t.success){let Xq=await N8($.pluginId);if(Xq){y(!1),P({type:"plugin-options",plugin:Xq,pluginId:$.pluginId});return}if(f(t.message),_)await _();H({type:"menu"})}else y(!1),g(t.error)};Z6(()=>{if(K)f(K)},[K,f]),xq("confirm:no",()=>{P("plugin-list"),v(null)},{context:"Confirmation",isActive:W==="plugin-details"}),xq("confirm:no",()=>{H({type:"menu"})},{context:"Confirmation",isActive:W==="plugin-list"&&!N}),qK(($,L)=>{let t=!L.ctrl&&!L.meta;if(!N){if($==="/"&&t)Z(!0),u("");else if(t&&$.length>0&&!/^\s+$/.test($)&&$!=="j"&&$!=="k"&&$!=="i")Z(!0),u($)}},{isActive:W==="plugin-list"&&!U}),pq({"select:previous":()=>{if(s===0)Z(!0);else B.handleSelectionChange(s-1,fq)},"select:next":()=>{if(s<r.length-1)B.handleSelectionChange(s+1,fq)},"select:accept":()=>{if(s===r.length&&m.size>0)I();else if(s<r.length){let $=r[s];if($)if($.isInstalled)H({type:"manage-plugins",targetPlugin:$.entry.name,targetMarketplace:$.marketplaceName});else v($),P("plugin-details"),hq(0),g(null)}}},{context:"Select",isActive:W==="plugin-list"&&!N}),pq({"plugin:toggle":()=>{if(s<r.length){let $=r[s];if($&&!$.isInstalled){let L=new Set(m);if(L.has($.pluginId))L.delete($.pluginId);else L.add($.pluginId);Aq(L)}}},"plugin:install":()=>{if(m.size>0)I()}},{context:"Plugin",isActive:W==="plugin-list"&&!N});let c=Zz.useMemo(()=>{if(!k)return[];let $=k.entry.homepage,L=TK(k);return aK($,L)},[k]);if(pq({"select:previous":()=>{if(Mq>0)hq(Mq-1)},"select:next":()=>{if(Mq<c.length-1)hq(Mq+1)},"select:accept":()=>{if(!k)return;let $=c[Mq]?.action,L=k.entry.homepage,t=TK(k);if($==="install-user")V(k,"user");else if($==="install-project")V(k,"project");else if($==="install-local")V(k,"local");else if($==="homepage"&&L)KK(L);else if($==="github"&&t)KK(`https://github.com/${t}`);else if($==="back")P("plugin-list"),v(null)}},{context:"Select",isActive:W==="plugin-details"&&!!k}),typeof W==="object"&&W.type==="plugin-options"){let t=function(Xq){if(f(Xq),_)_();H({type:"menu"})},{plugin:$,pluginId:L}=W;return d(UK,{plugin:$,pluginId:L,onDone:(Xq,E)=>{switch(Xq){case"configured":t(`\u2713 Installed and configured ${$.name}. Run /reload-plugins to apply.`);break;case"skipped":t(`\u2713 Installed ${$.name}. Run /reload-plugins to apply.`);break;case"error":t(`Installed but failed to save config: ${E}`);break}}},void 0,!1,void 0,this)}if(U)return d(z,{children:"Loading\u2026"},void 0,!1,void 0,this);if(K)return d(z,{color:"error",children:K},void 0,!1,void 0,this);if(W==="plugin-details"&&k){let $=k.entry.homepage,L=TK(k),t=aK($,L);return d(O,{flexDirection:"column",children:[d(O,{marginBottom:1,children:d(z,{bold:!0,children:"Plugin details"},void 0,!1,void 0,this)},void 0,!1,void 0,this),d(O,{flexDirection:"column",marginBottom:1,children:[d(z,{bold:!0,children:k.entry.name},void 0,!1,void 0,this),d(z,{dimColor:!0,children:["from ",k.marketplaceName]},void 0,!0,void 0,this),k.entry.version&&d(z,{dimColor:!0,children:["Version: ",k.entry.version]},void 0,!0,void 0,this),k.entry.description&&d(O,{marginTop:1,children:d(z,{children:k.entry.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),k.entry.author&&d(O,{marginTop:1,children:d(z,{dimColor:!0,children:["By:"," ",typeof k.entry.author==="string"?k.entry.author:k.entry.author.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d(L8,{},void 0,!1,void 0,this),C&&d(O,{marginBottom:1,children:d(z,{color:"error",children:["Error: ",C]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d(O,{flexDirection:"column",children:t.map((Xq,E)=>d(O,{children:[Mq===E&&d(z,{children:"> "},void 0,!1,void 0,this),Mq!==E&&d(z,{children:" "},void 0,!1,void 0,this),d(z,{bold:Mq===E,children:wq&&Xq.action.startsWith("install-")?"Installing\u2026":Xq.label},void 0,!1,void 0,this)]},Xq.action,!0,void 0,this))},void 0,!1,void 0,this),d(O,{marginTop:1,children:d(z,{dimColor:!0,children:d(Lq,{children:[d(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),d(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(X.length===0)return d(O,{flexDirection:"column",children:[d(O,{marginBottom:1,children:d(z,{bold:!0,children:"Discover plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),d(g7,{reason:T},void 0,!1,void 0,this),d(O,{marginTop:1,children:d(z,{dimColor:!0,italic:!0,children:"Esc to go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let S=B.getVisibleItems(r);return d(O,{flexDirection:"column",children:[d(O,{children:[d(z,{bold:!0,children:"Discover plugins"},void 0,!1,void 0,this),B.needsPagination&&d(z,{dimColor:!0,children:[" ","(",B.scrollPosition.current,"/",B.scrollPosition.total,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),d(O,{marginBottom:1,children:d(u8,{query:A,isFocused:N,isTerminalFocused:D,width:Q-4,cursorOffset:Hq},void 0,!1,void 0,this)},void 0,!1,void 0,this),Oq&&d(O,{marginBottom:1,children:d(z,{color:"warning",children:[NK.warning," ",Oq]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r.length===0&&A&&d(O,{marginBottom:1,children:d(z,{dimColor:!0,children:['No plugins match "',A,'"']},void 0,!0,void 0,this)},void 0,!1,void 0,this),B.scrollPosition.canScrollUp&&d(O,{children:d(z,{dimColor:!0,children:[" ",NK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),S.map(($,L)=>{let t=B.toActualIndex(L),Xq=s===t,E=m.has($.pluginId),o=Gq.has($.pluginId),Pq=L===S.length-1;return d(O,{flexDirection:"column",marginBottom:Pq&&!K?0:1,children:[d(O,{children:[d(z,{color:Xq&&!N?"suggestion":void 0,children:[Xq&&!N?NK.pointer:" "," "]},void 0,!0,void 0,this),d(z,{children:[o?NK.ellipsis:E?NK.radioOn:NK.radioOff," ",$.entry.name,d(z,{dimColor:!0,children:[" \xB7 ",$.marketplaceName]},void 0,!0,void 0,this),$.entry.tags?.includes("community-managed")&&d(z,{dimColor:!0,children:" [Community Managed]"},void 0,!1,void 0,this),G&&$.marketplaceName===I8&&d(z,{dimColor:!0,children:[" \xB7 ",V8(G.get($.pluginId)??0)," ","installs"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$.entry.description&&d(O,{marginLeft:4,children:d(z,{dimColor:!0,children:C8($.entry.description,60)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},`${B.startIndex}-${$.pluginId}`,!0,void 0,this)}),B.scrollPosition.canScrollDown&&d(O,{children:d(z,{dimColor:!0,children:[" ",NK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),K&&d(O,{marginTop:1,children:d(z,{color:"error",children:[NK.cross," ",K]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d(u7,{hasSelection:m.size>0,canToggle:s<r.length&&!r[s]?.isInstalled},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u7(K){let q=$z(10),{hasSelection:Y,canToggle:f}=K,H;if(q[0]!==Y)H=Y&&d(kq,{action:"plugin:install",context:"Plugin",fallback:"i",description:"install",bold:!0},void 0,!1,void 0,this),q[0]=Y,q[1]=H;else H=q[1];let _;if(q[2]===Symbol.for("react.memo_cache_sentinel"))_=d(z,{children:"type to search"},void 0,!1,void 0,this),q[2]=_;else _=q[2];let J;if(q[3]!==f)J=f&&d(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),q[3]=f,q[4]=J;else J=q[4];let h,W;if(q[5]===Symbol.for("react.memo_cache_sentinel"))h=d(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),W=d(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this),q[5]=h,q[6]=W;else h=q[5],W=q[6];let P;if(q[7]!==H||q[8]!==J)P=d(O,{marginTop:1,children:d(z,{dimColor:!0,italic:!0,children:d(Lq,{children:[H,_,J,h,W]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[7]=H,q[8]=J,q[9]=P;else P=q[9];return P}function g7(K){let q=$z(6),{reason:Y}=K;switch(Y){case"git-not-installed":{let f;if(q[0]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Git is required to install marketplaces."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Please install git and restart Claude Code."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[0]=f;else f=q[0];return f}case"all-blocked-by-policy":{let f;if(q[1]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Your organization policy does not allow any external marketplaces."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Contact your administrator."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[1]=f;else f=q[1];return f}case"policy-restricts-sources":{let f;if(q[2]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Your organization restricts which marketplaces can be added."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Switch to the Marketplaces tab to view allowed sources."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[2]=f;else f=q[2];return f}case"all-marketplaces-failed":{let f;if(q[3]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"Failed to load marketplace data."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Check your network connection."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[3]=f;else f=q[3];return f}case"all-plugins-installed":{let f;if(q[4]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"All available plugins are already installed."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Check for new plugins later or add more marketplaces."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[4]=f;else f=q[4];return f}case"no-marketplaces-configured":default:{let f;if(q[5]===Symbol.for("react.memo_cache_sentinel"))f=d(tK,{children:[d(z,{dimColor:!0,children:"No plugins available."},void 0,!1,void 0,this),d(z,{dimColor:!0,children:"Add a marketplace first using the Marketplaces tab."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[5]=f;else f=q[5];return f}}}var Tz=uq(()=>{zK();YK();hz();Jz();v6();Bq();DK();D8();S8();h6();wK();cK();Mz();$6();G8();oK();Az();Gz();J6();PK();kz();b8();X6();P6();m8()});import{c as F7}from"react/compiler-runtime";import bK from"figures";import{useEffect as U7,useRef as a7,useState as GK}from"react";import{jsxDEV as b,Fragment as X8}from"react/jsx-dev-runtime";function Nz({setViewState:K,error:q,setError:Y,setResult:f,exitState:H,onManageComplete:_,targetMarketplace:J,action:h}){let[W,P]=GK([]),[k,v]=GK(!0),[X,l]=GK(0),[U,Wq]=GK(!1),[G,j]=GK(null),[N,F]=GK(null),[Z,A]=GK(null),[u,Hq]=GK("list"),[D,Q]=GK(null),[r,s]=GK(0),fq=a7(!1);U7(()=>{async function y(){try{let C=await WK(),{enabled:g,disabled:Oq}=await IK(),Jq=[...g,...Oq],{marketplaces:T,failures:i}=await _K(C),I=[];for(let{name:S,config:$,data:L}of T){let t=Jq.filter((Xq)=>Xq.source.endsWith(`@${S}`));I.push({name:S,source:M8($.source),lastUpdated:$.lastUpdated,pluginCount:L?.plugins.length,installedPlugins:t,pendingUpdate:!1,pendingRemove:!1,autoUpdate:T6(S,$)})}I.sort((S,$)=>{if(S.name==="claude-plugin-directory")return-1;if($.name==="claude-plugin-directory")return 1;return S.name.localeCompare($.name)}),P(I);let V=OK(T,(S)=>S.data!==null),c=sK(i,V);if(c)if(c.type==="warning")j(c.message);else throw Error(c.message);if(J&&!fq.current&&!q){fq.current=!0;let S=I.findIndex(($)=>$.name===J);if(S>=0){let $=I[S];if(h){l(S+1);let L=[...I];if(h==="update")L[S].pendingUpdate=!0;else if(h==="remove")L[S].pendingRemove=!0;P(L),setTimeout(Gq,100,L)}else if($)l(S+1),Q($),Hq("details")}else if(Y)Y(`Marketplace not found: ${J}`)}}catch(C){if(Y)Y(C instanceof Error?C.message:"Failed to load marketplaces");j(C instanceof Error?C.message:"Failed to load marketplaces")}finally{v(!1)}}y()},[J,h,q]);let m=()=>{return W.some((y)=>y.pendingUpdate||y.pendingRemove)},Aq=()=>{let y=OK(W,(g)=>g.pendingUpdate),C=OK(W,(g)=>g.pendingRemove);return{updateCount:y,removeCount:C}},Gq=async(y)=>{let C=y||W,g=u==="details";Wq(!0),j(null),F(null),A(null);try{let Oq=hK("userSettings"),Jq=0,T=0,i=new Set;for(let E of C){if(E.pendingRemove){if(E.installedPlugins&&E.installedPlugins.length>0){let o={...Oq?.enabledPlugins};for(let Pq of E.installedPlugins){let Nq=yK(Pq.name,E.name);o[Nq]=!1}VK("userSettings",{enabledPlugins:o})}await x8(E.name),T++,nq("tengu_marketplace_removed",{marketplace_name:E.name,plugins_uninstalled:E.installedPlugins?.length||0});continue}if(E.pendingUpdate)await jz(E.name,(o)=>{A(o)}),Jq++,i.add(E.name.toLowerCase()),nq("tengu_marketplace_updated",{marketplace_name:E.name})}let I=0;if(i.size>0)I=(await Rz(i)).length;if(cq(),_)await _();let V=await WK(),{enabled:c,disabled:S}=await IK(),$=[...c,...S],{marketplaces:L}=await _K(V),t=[];for(let{name:E,config:o,data:Pq}of L){let Nq=$.filter((Zq)=>Zq.source.endsWith(`@${E}`));t.push({name:E,source:M8(o.source),lastUpdated:o.lastUpdated,pluginCount:Pq?.plugins.length,installedPlugins:Nq,pendingUpdate:!1,pendingRemove:!1,autoUpdate:T6(E,o)})}if(t.sort((E,o)=>{if(E.name==="claude-plugin-directory")return-1;if(o.name==="claude-plugin-directory")return 1;return E.name.localeCompare(o.name)}),P(t),g&&D){let E=t.find((o)=>o.name===D.name);if(E)Q(E)}let Xq=[];if(Jq>0){let E=I>0?` (${I} ${Vq(I,"plugin")} bumped)`:"";Xq.push(`Updated ${Jq} ${Vq(Jq,"marketplace")}${E}`)}if(T>0)Xq.push(`Removed ${T} ${Vq(T,"marketplace")}`);if(Xq.length>0){let E=`${bK.tick} ${Xq.join(", ")}`;if(g)F(E);else f(E),setTimeout(K,2000,{type:"menu"})}else if(!g)K({type:"menu"})}catch(Oq){let Jq=Eq(Oq);if(j(Jq),Y)Y(Jq)}finally{Wq(!1),A(null)}},zq=async()=>{if(!D)return;let y=W.map((C)=>C.name===D.name?{...C,pendingRemove:!0}:C);P(y),await Gq(y)},B=(y)=>{if(!y)return[];let C=[{label:`Browse plugins (${y.pluginCount??0})`,value:"browse"},{label:"Update marketplace",secondaryLabel:y.lastUpdated?`(last updated ${new Date(y.lastUpdated).toLocaleDateString()})`:void 0,value:"update"}];if(!j6())C.push({label:y.autoUpdate?"Disable auto-update":"Enable auto-update",value:"toggle-auto-update"});return C.push({label:"Remove marketplace",value:"remove"}),C},Mq=async(y)=>{let C=!y.autoUpdate;try{await yz(y.name,C),P((g)=>g.map((Oq)=>Oq.name===y.name?{...Oq,autoUpdate:C}:Oq)),Q((g)=>g?{...g,autoUpdate:C}:g)}catch(g){j(g instanceof Error?g.message:"Failed to update setting")}};if(xq("confirm:no",()=>{Hq("list"),s(0)},{context:"Confirmation",isActive:!U&&(u==="details"||u==="confirm-remove")}),xq("confirm:no",()=>{P((y)=>y.map((C)=>({...C,pendingUpdate:!1,pendingRemove:!1}))),l(0)},{context:"Confirmation",isActive:!U&&u==="list"&&m()}),xq("confirm:no",()=>{K({type:"menu"})},{context:"Confirmation",isActive:!U&&u==="list"&&!m()}),pq({"select:previous":()=>l((y)=>Math.max(0,y-1)),"select:next":()=>{let y=W.length+1;l((C)=>Math.min(y-1,C+1))},"select:accept":()=>{let y=X-1;if(X===0)K({type:"add-marketplace"});else if(m())Gq();else{let C=W[y];if(C)Q(C),Hq("details"),s(0)}}},{context:"Select",isActive:!U&&u==="list"}),qK((y)=>{let C=X-1;if((y==="u"||y==="U")&&C>=0)P((g)=>g.map((Oq,Jq)=>Jq===C?{...Oq,pendingUpdate:!Oq.pendingUpdate,pendingRemove:Oq.pendingUpdate?Oq.pendingRemove:!1}:Oq));else if((y==="r"||y==="R")&&C>=0){let g=W[C];if(g)Q(g),Hq("confirm-remove")}},{isActive:!U&&u==="list"}),pq({"select:previous":()=>s((y)=>Math.max(0,y-1)),"select:next":()=>{let y=B(D);s((C)=>Math.min(y.length-1,C+1))},"select:accept":()=>{if(!D)return;let C=B(D)[r];if(C?.value==="browse")K({type:"browse-marketplace",targetMarketplace:D.name});else if(C?.value==="update"){let g=W.map((Oq)=>Oq.name===D.name?{...Oq,pendingUpdate:!0}:Oq);P(g),Gq(g)}else if(C?.value==="toggle-auto-update")Mq(D);else if(C?.value==="remove")Hq("confirm-remove")}},{context:"Select",isActive:!U&&u==="details"}),qK((y)=>{if(y==="y"||y==="Y")zq();else if(y==="n"||y==="N")Hq("list"),Q(null)},{isActive:!U&&u==="confirm-remove"}),k)return b(z,{children:"Loading marketplaces\u2026"},void 0,!1,void 0,this);if(W.length===0)return b(O,{flexDirection:"column",children:[b(O,{marginBottom:1,children:b(z,{bold:!0,children:"Manage marketplaces"},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{flexDirection:"row",gap:1,children:[b(z,{color:"suggestion",children:[bK.pointer," +"]},void 0,!0,void 0,this),b(z,{bold:!0,color:"suggestion",children:"Add Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b(O,{marginLeft:3,children:b(z,{dimColor:!0,italic:!0,children:H.pending?b(X8,{children:["Press ",H.keyName," again to go back"]},void 0,!0,void 0,this):b(Lq,{children:[b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(u==="confirm-remove"&&D){let y=D.installedPlugins?.length||0;return b(O,{flexDirection:"column",children:[b(z,{bold:!0,color:"warning",children:["Remove marketplace ",b(z,{italic:!0,children:D.name},void 0,!1,void 0,this),"?"]},void 0,!0,void 0,this),b(O,{flexDirection:"column",children:[y>0&&b(O,{marginTop:1,children:b(z,{color:"warning",children:["This will also uninstall ",y," ",Vq(y,"plugin")," from this marketplace:"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),D.installedPlugins&&D.installedPlugins.length>0&&b(O,{flexDirection:"column",marginTop:1,marginLeft:2,children:D.installedPlugins.map((C)=>b(z,{dimColor:!0,children:["\u2022 ",C.name]},C.name,!0,void 0,this))},void 0,!1,void 0,this),b(O,{marginTop:1,children:b(z,{children:["Press ",b(z,{bold:!0,children:"y"},void 0,!1,void 0,this)," to confirm or ",b(z,{bold:!0,children:"n"},void 0,!1,void 0,this)," to cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}if(u==="details"&&D){let y=D.pendingUpdate||U,C=B(D);return b(O,{flexDirection:"column",children:[b(z,{bold:!0,children:D.name},void 0,!1,void 0,this),b(z,{dimColor:!0,children:D.source},void 0,!1,void 0,this),b(O,{marginTop:1,children:b(z,{children:[D.pluginCount||0," available"," ",Vq(D.pluginCount||0,"plugin")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),D.installedPlugins&&D.installedPlugins.length>0&&b(O,{flexDirection:"column",marginTop:1,children:[b(z,{bold:!0,children:["Installed plugins (",D.installedPlugins.length,"):"]},void 0,!0,void 0,this),b(O,{flexDirection:"column",marginLeft:1,children:D.installedPlugins.map((g)=>b(O,{flexDirection:"row",gap:1,children:[b(z,{children:bK.bullet},void 0,!1,void 0,this),b(O,{flexDirection:"column",children:[b(z,{children:g.name},void 0,!1,void 0,this),b(z,{dimColor:!0,children:g.manifest.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},g.name,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y&&b(O,{marginTop:1,flexDirection:"column",children:[b(z,{color:"claude",children:"Updating marketplace\u2026"},void 0,!1,void 0,this),Z&&b(z,{dimColor:!0,children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!y&&N&&b(O,{marginTop:1,children:b(z,{color:"claude",children:N},void 0,!1,void 0,this)},void 0,!1,void 0,this),!y&&G&&b(O,{marginTop:1,children:b(z,{color:"error",children:G},void 0,!1,void 0,this)},void 0,!1,void 0,this),!y&&b(O,{flexDirection:"column",marginTop:1,children:C.map((g,Oq)=>{if(!g)return null;let Jq=Oq===r;return b(O,{children:[b(z,{color:Jq?"suggestion":void 0,children:[Jq?bK.pointer:" "," ",g.label]},void 0,!0,void 0,this),g.secondaryLabel&&b(z,{dimColor:!0,children:[" ",g.secondaryLabel]},void 0,!0,void 0,this)]},g.value,!0,void 0,this)})},void 0,!1,void 0,this),!y&&!j6()&&D.autoUpdate&&b(O,{marginTop:1,children:b(z,{dimColor:!0,children:"Auto-update enabled. Claude Code will automatically update this marketplace and its installed plugins."},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{marginLeft:3,children:b(z,{dimColor:!0,italic:!0,children:y?b(X8,{children:"Please wait\u2026"},void 0,!1,void 0,this):b(Lq,{children:[b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}let{updateCount:hq,removeCount:wq}=Aq();return b(O,{flexDirection:"column",children:[b(O,{marginBottom:1,children:b(z,{bold:!0,children:"Manage marketplaces"},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(O,{flexDirection:"row",gap:1,marginBottom:1,children:[b(z,{color:X===0?"suggestion":void 0,children:[X===0?bK.pointer:" "," +"]},void 0,!0,void 0,this),b(z,{bold:!0,color:X===0?"suggestion":void 0,children:"Add Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b(O,{flexDirection:"column",children:W.map((y,C)=>{let g=C+1===X,Oq=[];if(y.pendingUpdate)Oq.push("UPDATE");if(y.pendingRemove)Oq.push("REMOVE");return b(O,{flexDirection:"row",gap:1,marginBottom:1,children:[b(z,{color:g?"suggestion":void 0,children:[g?bK.pointer:" "," ",y.pendingRemove?bK.cross:bK.bullet]},void 0,!0,void 0,this),b(O,{flexDirection:"column",flexGrow:1,children:[b(O,{flexDirection:"row",gap:1,children:[b(z,{bold:!0,strikethrough:y.pendingRemove,dimColor:y.pendingRemove,children:[y.name==="claude-plugins-official"&&b(z,{color:"claude",children:"\u273B "},void 0,!1,void 0,this),y.name,y.name==="claude-plugins-official"&&b(z,{color:"claude",children:" \u273B"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Oq.length>0&&b(z,{color:"warning",children:["[",Oq.join(", "),"]"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),b(z,{dimColor:!0,children:y.source},void 0,!1,void 0,this),b(z,{dimColor:!0,children:[y.pluginCount!==void 0&&b(X8,{children:[y.pluginCount," available"]},void 0,!0,void 0,this),y.installedPlugins&&y.installedPlugins.length>0&&b(X8,{children:[" \u2022 ",y.installedPlugins.length," installed"]},void 0,!0,void 0,this),y.lastUpdated&&b(X8,{children:[" ","\u2022 Updated"," ",new Date(y.lastUpdated).toLocaleDateString()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},y.name,!0,void 0,this)})},void 0,!1,void 0,this),m()&&b(O,{marginTop:1,flexDirection:"column",children:[b(z,{children:[b(z,{bold:!0,children:"Pending changes:"},void 0,!1,void 0,this)," ",b(z,{dimColor:!0,children:"Enter to apply"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hq>0&&b(z,{children:["\u2022 Update ",hq," ",Vq(hq,"marketplace")]},void 0,!0,void 0,this),wq>0&&b(z,{color:"warning",children:["\u2022 Remove ",wq," ",Vq(wq,"marketplace")]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),U&&b(O,{marginTop:1,children:b(z,{color:"claude",children:"Processing changes\u2026"},void 0,!1,void 0,this)},void 0,!1,void 0,this),G&&b(O,{marginTop:1,children:b(z,{color:"error",children:G},void 0,!1,void 0,this)},void 0,!1,void 0,this),b(n7,{exitState:H,hasPendingActions:m()},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n7(K){let q=F7(18),{exitState:Y,hasPendingActions:f}=K;if(Y.pending){let v;if(q[0]!==Y.keyName)v=b(O,{marginTop:1,children:b(z,{dimColor:!0,italic:!0,children:["Press ",Y.keyName," again to go back"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),q[0]=Y.keyName,q[1]=v;else v=q[1];return v}let H;if(q[2]!==f)H=f&&b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"apply changes"},void 0,!1,void 0,this),q[2]=f,q[3]=H;else H=q[3];let _;if(q[4]!==f)_=!f&&b(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),q[4]=f,q[5]=_;else _=q[5];let J;if(q[6]!==f)J=!f&&b(oq,{shortcut:"u",action:"update"},void 0,!1,void 0,this),q[6]=f,q[7]=J;else J=q[7];let h;if(q[8]!==f)h=!f&&b(oq,{shortcut:"r",action:"remove"},void 0,!1,void 0,this),q[8]=f,q[9]=h;else h=q[9];let W=f?"cancel":"go back",P;if(q[10]!==W)P=b(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:W},void 0,!1,void 0,this),q[10]=W,q[11]=P;else P=q[11];let k;if(q[12]!==H||q[13]!==_||q[14]!==J||q[15]!==h||q[16]!==P)k=b(O,{marginTop:1,children:b(z,{dimColor:!0,italic:!0,children:b(Lq,{children:[H,_,J,h,P]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[12]=H,q[13]=_,q[14]=J,q[15]=h,q[16]=P,q[17]=k;else k=q[17];return k}var bz=uq(()=>{H6();zK();YK();A8();Bq();DK();D8();c7();wK();cK();G8();oK();o7();G6();x7();y6();PK()});import{c as B7}from"react/compiler-runtime";import{jsxDEV as c8}from"react/jsx-dev-runtime";function o8(K){let q=B7(9),{serverToolsCount:Y,serverPromptsCount:f,serverResourcesCount:H}=K,_;if(q[0]!==f||q[1]!==H||q[2]!==Y){if(_=[],Y>0)_.push("tools");if(H>0)_.push("resources");if(f>0)_.push("prompts");q[0]=f,q[1]=H,q[2]=Y,q[3]=_}else _=q[3];let J;if(q[4]===Symbol.for("react.memo_cache_sentinel"))J=c8(z,{bold:!0,children:"Capabilities: "},void 0,!1,void 0,this),q[4]=J;else J=q[4];let h;if(q[5]!==_)h=_.length>0?c8(Lq,{children:_},void 0,!1,void 0,this):"none",q[5]=_,q[6]=h;else h=q[6];let W;if(q[7]!==h)W=c8(O,{children:[J,c8(z,{color:"text",children:h},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[7]=h,q[8]=W;else W=q[8];return W}var R6=uq(()=>{Bq();YK()});function F8(K,q){switch(K.client.type){case"connected":return{message:`Reconnected to ${q}.`,success:!0};case"needs-auth":return{message:`${q} requires authentication. Use the 'Authenticate' option.`,success:!1};case"failed":return{message:`Failed to reconnect to ${q}.`,success:!1};default:return{message:`Unknown result when reconnecting to ${q}.`,success:!1}}}function P8(K,q){let Y=K instanceof Error?K.message:String(K);return`Error reconnecting to ${q}: ${Y}`}var N6=()=>{};import dK from"figures";import JK,{useEffect as t7,useRef as b6,useState as MK}from"react";import{jsxDEV as R,Fragment as U8}from"react/jsx-dev-runtime";function Q8({server:K,serverToolsCount:q,onViewTools:Y,onCancel:f,onComplete:H,borderless:_=!1}){let[J]=q8(),h=K8(),{columns:W}=eK(),[P,k]=JK.useState(!1),[v,X]=JK.useState(null),l=sq((o)=>o.mcp),U=_8(),[Wq,G]=JK.useState(null),[j,N]=MK(!1),F=b6(null),[Z,A]=MK(!1),[u,Hq]=MK(null),[D,Q]=MK(!1),[r,s]=MK(null),[fq,m]=MK(!1),[Aq,Gq]=MK(!1),zq=b6(void 0),B=b6(!1),[Mq,hq]=MK(""),[wq,y]=MK(0),[C,g]=MK(null);t7(()=>()=>{if(B.current=!0,F.current?.abort(),zq.current!==void 0)clearTimeout(zq.current)},[]);let Oq=K.isAuthenticated||K.client.type==="connected"&&q>0,Jq=l8(),T=JK.useCallback(async()=>{A(!1),Hq(null),N(!0);try{let o=await Jq(K.name),Pq=o.client.type==="connected";if(nq("tengu_claudeai_mcp_auth_completed",{success:Pq}),Pq)H?.(`Authentication successful. Connected to ${K.name}.`);else if(o.client.type==="needs-auth")H?.("Authentication successful, but server still requires authentication. You may need to manually restart UnieAI Code.");else H?.("Authentication successful, but server reconnection failed. You may need to manually restart UnieAI Code for the changes to take effect.")}catch(o){nq("tengu_claudeai_mcp_auth_completed",{success:!1}),H?.(P8(o,K.name))}finally{N(!1)}},[Jq,K.name,H]),i=JK.useCallback(async()=>{await I6(K.name,{...K.config,scope:K.scope}),U((o)=>{let Pq=o.mcp.clients.map((Iq)=>Iq.name===K.name?{...Iq,type:"needs-auth"}:Iq),Nq=m6(o.mcp.tools,K.name),Zq=C6(o.mcp.commands,K.name),bq=D6(o.mcp.resources,K.name);return{...o,mcp:{...o.mcp,clients:Pq,tools:Nq,commands:Zq,resources:bq}}}),nq("tengu_claudeai_mcp_clear_auth_completed",{}),H?.(`Disconnected from ${K.name}.`),Q(!1),s(null),m(!1)},[K.name,K.config,K.scope,U,H]);xq("confirm:no",()=>{F.current?.abort(),F.current=null,k(!1),G(null)},{context:"Confirmation",isActive:P}),xq("confirm:no",()=>{A(!1),Hq(null)},{context:"Confirmation",isActive:Z}),xq("confirm:no",()=>{Q(!1),s(null),m(!1)},{context:"Confirmation",isActive:D}),qK((o,Pq)=>{if(Pq.return&&Z)T();if(Pq.return&&D)if(fq)i();else{let Nq=`${L6().CLAUDE_AI_ORIGIN}/settings/connectors`;s(Nq),m(!0),KK(Nq)}if(o==="c"&&!Aq){let Nq=Wq||u||r;if(Nq)Cz(Nq).then((Zq)=>{if(B.current)return;if(Zq)process.stdout.write(Zq);if(Gq(!0),zq.current!==void 0)clearTimeout(zq.current);zq.current=setTimeout(Gq,2000,!1)})}});let I=n8(String(K.name)),V=B8(l.commands,K.name).length,c=Y8(),S=JK.useCallback(async()=>{let o=L6().CLAUDE_AI_ORIGIN,Nq=mz()?.organizationUuid,Zq;if(Nq&&K.config.type==="claudeai-proxy"&&K.config.id){let bq=K.config.id.startsWith("mcprs")?"mcpsrv"+K.config.id.slice(5):K.config.id,Iq=encodeURIComponent(process.env.CLAUDE_CODE_ENTRYPOINT||"cli");Zq=`${o}/api/organizations/${Nq}/mcp/start-auth/${bq}?product_surface=${Iq}`}else Zq=`${o}/settings/connectors`;Hq(Zq),A(!0),nq("tengu_claudeai_mcp_auth_started",{}),await KK(Zq)},[K.config]),$=JK.useCallback(()=>{Q(!0),nq("tengu_claudeai_mcp_clear_auth_started",{})},[]),L=JK.useCallback(async()=>{let o=K.client.type!=="disabled";try{if(await c(K.name),K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_toggle",{new_state:o?"disabled":"enabled"});f()}catch(Pq){H?.(`Failed to ${o?"disable":"enable"} MCP server '${K.name}': ${Eq(Pq)}`)}},[K.client.type,K.config.type,K.name,c,f,H]),t=JK.useCallback(async()=>{if(K.config.type==="claudeai-proxy")return;k(!0),X(null);let o=new AbortController;F.current=o;try{if(K.isAuthenticated&&K.config)await S6(K.name,K.config,{preserveStepUpState:!0});if(K.config){await Sz(K.name,K.config,G,o.signal,{onWaitingForCallback:(Nq)=>{g(()=>Nq)}}),nq("tengu_mcp_auth_config_authenticate",{wasAuthenticated:K.isAuthenticated});let Pq=await Jq(K.name);if(Pq.client.type==="connected"){let Nq=Oq?`Authentication successful. Reconnected to ${K.name}.`:`Authentication successful. Connected to ${K.name}.`;H?.(Nq)}else if(Pq.client.type==="needs-auth")H?.("Authentication successful, but server still requires authentication. You may need to manually restart UnieAI Code.");else Lz(K.name,"Reconnection failed after authentication"),H?.("Authentication successful, but server reconnection failed. You may need to manually restart UnieAI Code for the changes to take effect.")}}catch(Pq){if(Pq instanceof Error&&!(Pq instanceof Dz))X(Pq.message)}finally{k(!1),F.current=null,g(null),hq("")}},[K.isAuthenticated,K.config,K.name,H,Jq,Oq]),Xq=async()=>{if(K.config.type==="claudeai-proxy")return;if(K.config)await S6(K.name,K.config),nq("tengu_mcp_auth_config_clear",{}),await I6(K.name,{...K.config,scope:K.scope}),U((o)=>{let Pq=o.mcp.clients.map((Iq)=>Iq.name===K.name?{...Iq,type:"failed"}:Iq),Nq=m6(o.mcp.tools,K.name),Zq=C6(o.mcp.commands,K.name),bq=D6(o.mcp.resources,K.name);return{...o,mcp:{...o.mcp,clients:Pq,tools:Nq,commands:Zq,resources:bq}}}),H?.(`Authentication cleared for ${K.name}.`)};if(P){let o=K.config.type!=="claudeai-proxy"&&K.config.oauth?.xaa?" Authenticating via your identity provider":" A browser window will open for authentication";return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Authenticating with ",K.name,"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Wq&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser doesn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:Wq},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P&&Wq&&C&&R(O,{flexDirection:"column",marginTop:1,children:[R(z,{dimColor:!0,children:"If the redirect page shows a connection error, paste the URL from your browser's address bar:"},void 0,!1,void 0,this),R(O,{children:[R(z,{dimColor:!0,children:["URL ",">"," "]},void 0,!0,void 0,this),R(j8,{value:Mq,onChange:hq,onSubmit:(Pq)=>{C(Pq.trim()),hq("")},cursorOffset:wq,onChangeCursorOffset:y,columns:W-8},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,children:R(z,{dimColor:!0,children:"Return here after authenticating in your browser. Press Esc to go back."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(Z)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Authenticating with ",K.name,"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:" A browser window will open for authentication"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser doesn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:u},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," after authenticating in your browser."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(D)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"claude",children:["Clear authentication for ",K.name]},void 0,!0,void 0,this),fq?R(U8,{children:[R(z,{children:'Find the MCP server in the browser and click "Disconnect".'},void 0,!1,void 0,this),r&&R(O,{flexDirection:"column",children:[R(O,{children:[R(z,{dimColor:!0,children:["If your browser didn't open automatically, copy this URL manually"," "]},void 0,!0,void 0,this),Aq?R(z,{color:"success",children:"(Copied!)"},void 0,!1,void 0,this):R(z,{dimColor:!0,children:R(oq,{shortcut:"c",action:"copy",parens:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(a8,{url:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," when done."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):R(U8,{children:[R(z,{children:'This will open claude.ai in the browser. Find the MCP server in the list and click "Disconnect".'},void 0,!1,void 0,this),R(O,{marginLeft:3,flexDirection:"column",children:[R(z,{color:"permission",children:["Press ",R(z,{bold:!0,children:"Enter"},void 0,!1,void 0,this)," to open the browser."]},void 0,!0,void 0,this),R(z,{dimColor:!0,italic:!0,children:R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(j)return R(O,{flexDirection:"column",gap:1,padding:1,children:[R(z,{color:"text",children:["Connecting to ",R(z,{bold:!0,children:K.name},void 0,!1,void 0,this),"\u2026"]},void 0,!0,void 0,this),R(O,{children:[R(vK,{},void 0,!1,void 0,this),R(z,{children:" Establishing connection to MCP server"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(z,{dimColor:!0,children:"This may take a few moments."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let E=[];if(K.client.type==="disabled")E.push({label:"Enable",value:"toggle-enabled"});if(K.client.type==="connected"&&q>0)E.push({label:"View tools",value:"tools"});if(K.config.type==="claudeai-proxy"){if(K.client.type==="connected")E.push({label:"Clear authentication",value:"claudeai-clear-auth"});else if(K.client.type!=="disabled")E.push({label:"Authenticate",value:"claudeai-auth"})}else{if(Oq)E.push({label:"Re-authenticate",value:"reauth"}),E.push({label:"Clear authentication",value:"clear-auth"});if(!Oq)E.push({label:"Authenticate",value:"auth"})}if(K.client.type!=="disabled"){if(K.client.type!=="needs-auth")E.push({label:"Reconnect",value:"reconnectMcpServer"});E.push({label:"Disable",value:"toggle-enabled"})}if(E.length===0)E.push({label:"Back",value:"back"});return R(O,{flexDirection:"column",children:[R(O,{flexDirection:"column",paddingX:1,borderStyle:_?void 0:"round",children:[R(O,{marginBottom:1,children:R(z,{bold:!0,children:[I," MCP Server"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),R(O,{flexDirection:"column",gap:0,children:[R(O,{children:[R(z,{bold:!0,children:"Status: "},void 0,!1,void 0,this),K.client.type==="disabled"?R(z,{children:[dq("inactive",J)(dK.radioOff)," disabled"]},void 0,!0,void 0,this):K.client.type==="connected"?R(z,{children:[dq("success",J)(dK.tick)," connected"]},void 0,!0,void 0,this):K.client.type==="pending"?R(U8,{children:[R(z,{dimColor:!0,children:dK.radioOff},void 0,!1,void 0,this),R(z,{children:" connecting\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):K.client.type==="needs-auth"?R(z,{children:[dq("warning",J)(dK.triangleUpOutline)," needs authentication"]},void 0,!0,void 0,this):R(z,{children:[dq("error",J)(dK.cross)," failed"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),K.transport!=="claudeai-proxy"&&R(O,{children:[R(z,{bold:!0,children:"Auth: "},void 0,!1,void 0,this),Oq?R(z,{children:[dq("success",J)(dK.tick)," authenticated"]},void 0,!0,void 0,this):R(z,{children:[dq("error",J)(dK.cross)," not authenticated"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R(O,{children:[R(z,{bold:!0,children:"URL: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:K.config.url},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{children:[R(z,{bold:!0,children:"Config location: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:r8(K.scope)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.client.type==="connected"&&R(o8,{serverToolsCount:q,serverPromptsCount:V,serverResourcesCount:l.resources[K.name]?.length||0},void 0,!1,void 0,this),K.client.type==="connected"&&q>0&&R(O,{children:[R(z,{bold:!0,children:"Tools: "},void 0,!1,void 0,this),R(z,{dimColor:!0,children:[q," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v&&R(O,{marginTop:1,children:R(z,{color:"error",children:["Error: ",v]},void 0,!0,void 0,this)},void 0,!1,void 0,this),E.length>0&&R(O,{marginTop:1,children:R(z8,{options:E,onChange:async(o)=>{switch(o){case"tools":Y();break;case"auth":case"reauth":await t();break;case"clear-auth":await Xq();break;case"claudeai-auth":await S();break;case"claudeai-clear-auth":$();break;case"reconnectMcpServer":N(!0);try{let Pq=await Jq(K.name);if(K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_reconnect",{success:Pq.client.type==="connected"});let{message:Nq}=F8(Pq,K.name);H?.(Nq)}catch(Pq){if(K.config.type==="claudeai-proxy")nq("tengu_claudeai_mcp_reconnect",{success:!1});H?.(P8(Pq,K.name))}finally{N(!1)}break;case"toggle-enabled":await L();break;case"back":f();break}},onCancel:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R(O,{marginTop:1,children:R(z,{dimColor:!0,italic:!0,children:h.pending?R(U8,{children:["Press ",h.keyName," again to exit"]},void 0,!0,void 0,this):R(Lq,{children:[R(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),R(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),R(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Iz=uq(()=>{H6();r7();p6();v6();l7();Bq();DK();Q7();s7();d6();i8();h8();i7();S8();wK();T8();PK();zK();V6();YK();A8();w6();i6();R6();N6()});import s8 from"figures";import qY,{useState as KY}from"react";import{jsxDEV as vq,Fragment as pz}from"react/jsx-dev-runtime";function dz({server:K,serverToolsCount:q,onViewTools:Y,onCancel:f,onComplete:H,borderless:_=!1}){let[J]=q8(),h=K8(),W=sq((j)=>j.mcp),P=l8(),k=Y8(),[v,X]=KY(!1),l=qY.useCallback(async()=>{let j=K.client.type!=="disabled";try{await k(K.name),f()}catch(N){H(`Failed to ${j?"disable":"enable"} MCP server '${K.name}': ${Eq(N)}`)}},[K.client.type,K.name,k,f,H]),U=n8(String(K.name)),Wq=B8(W.commands,K.name).length,G=[];if(K.client.type!=="disabled"&&q>0)G.push({label:"View tools",value:"tools"});if(K.client.type!=="disabled")G.push({label:"Reconnect",value:"reconnectMcpServer"});if(G.push({label:K.client.type!=="disabled"?"Disable":"Enable",value:"toggle-enabled"}),G.length===0)G.push({label:"Back",value:"back"});if(v)return vq(O,{flexDirection:"column",gap:1,padding:1,children:[vq(z,{color:"text",children:["Reconnecting to ",vq(z,{bold:!0,children:K.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(vK,{},void 0,!1,void 0,this),vq(z,{children:" Restarting MCP server process"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(z,{dimColor:!0,children:"This may take a few moments."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return vq(O,{flexDirection:"column",children:[vq(O,{flexDirection:"column",paddingX:1,borderStyle:_?void 0:"round",children:[vq(O,{marginBottom:1,children:vq(z,{bold:!0,children:[U," MCP Server"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),vq(O,{flexDirection:"column",gap:0,children:[vq(O,{children:[vq(z,{bold:!0,children:"Status: "},void 0,!1,void 0,this),K.client.type==="disabled"?vq(z,{children:[dq("inactive",J)(s8.radioOff)," disabled"]},void 0,!0,void 0,this):K.client.type==="connected"?vq(z,{children:[dq("success",J)(s8.tick)," connected"]},void 0,!0,void 0,this):K.client.type==="pending"?vq(pz,{children:[vq(z,{dimColor:!0,children:s8.radioOff},void 0,!1,void 0,this),vq(z,{children:" connecting\u2026"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):vq(z,{children:[dq("error",J)(s8.cross)," failed"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(z,{bold:!0,children:"Command: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:K.config.command},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.config.args&&K.config.args.length>0&&vq(O,{children:[vq(z,{bold:!0,children:"Args: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:K.config.args.join(" ")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{children:[vq(z,{bold:!0,children:"Config location: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:r8(Vz(K.name)?.scope??"dynamic")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K.client.type==="connected"&&vq(o8,{serverToolsCount:q,serverPromptsCount:Wq,serverResourcesCount:W.resources[K.name]?.length||0},void 0,!1,void 0,this),K.client.type==="connected"&&q>0&&vq(O,{children:[vq(z,{bold:!0,children:"Tools: "},void 0,!1,void 0,this),vq(z,{dimColor:!0,children:[q," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G.length>0&&vq(O,{marginTop:1,children:vq(z8,{options:G,onChange:async(j)=>{if(j==="tools")Y();else if(j==="reconnectMcpServer"){X(!0);try{let N=await P(K.name),{message:F}=F8(N,K.name);H?.(F)}catch(N){H?.(P8(N,K.name))}finally{X(!1)}}else if(j==="toggle-enabled")await l();else if(j==="back")f()},onCancel:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),vq(O,{marginTop:1,children:vq(z,{dimColor:!0,italic:!0,children:h.pending?vq(pz,{children:["Press ",h.keyName," again to exit"]},void 0,!0,void 0,this):vq(Lq,{children:[vq(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),vq(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),vq(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ez=uq(()=>{p6();Bq();e7();d6();i8();h8();wK();PK();zK();V6();YK();A8();w6();R6();N6()});import{c as zY}from"react/compiler-runtime";import uz from"react";import{jsxDEV as Sq,Fragment as OY}from"react/jsx-dev-runtime";function xz(K){let q=zY(44),{tool:Y,server:f,onBack:H}=K,[_,J]=uz.useState(""),h,W;if(q[0]!==f.name||q[1]!==Y){W=t8(Y.name,f.name);let Gq=Y.userFacingName?Y.userFacingName({}):W;h=e8(Gq),q[0]=f.name,q[1]=Y,q[2]=h,q[3]=W}else h=q[2],W=q[3];let P=h,k;if(q[4]!==Y)k=Y.isReadOnly?.({})??!1,q[4]=Y,q[5]=k;else k=q[5];let v=k,X;if(q[6]!==Y)X=Y.isDestructive?.({})??!1,q[6]=Y,q[7]=X;else X=q[7];let l=X,U;if(q[8]!==Y)U=Y.isOpenWorld?.({})??!1,q[8]=Y,q[9]=U;else U=q[9];let Wq=U,G,j;if(q[10]!==Y)G=()=>{(async function(){try{let B=await Y.description({},{isNonInteractiveSession:!1,toolPermissionContext:{mode:"default",additionalWorkingDirectories:new Map,alwaysAllowRules:{},alwaysDenyRules:{},alwaysAskRules:{},isBypassPermissionsModeAvailable:!1},tools:[]});J(B)}catch{J("Failed to load description")}})()},j=[Y],q[10]=Y,q[11]=G,q[12]=j;else G=q[11],j=q[12];uz.useEffect(G,j);let N;if(q[13]!==v)N=v&&Sq(z,{color:"success",children:" [read-only]"},void 0,!1,void 0,this),q[13]=v,q[14]=N;else N=q[14];let F;if(q[15]!==l)F=l&&Sq(z,{color:"error",children:" [destructive]"},void 0,!1,void 0,this),q[15]=l,q[16]=F;else F=q[16];let Z;if(q[17]!==Wq)Z=Wq&&Sq(z,{dimColor:!0,children:" [open-world]"},void 0,!1,void 0,this),q[17]=Wq,q[18]=Z;else Z=q[18];let A;if(q[19]!==P||q[20]!==N||q[21]!==F||q[22]!==Z)A=Sq(OY,{children:[P,N,F,Z]},void 0,!0,void 0,this),q[19]=P,q[20]=N,q[21]=F,q[22]=Z,q[23]=A;else A=q[23];let u=A,Hq;if(q[24]===Symbol.for("react.memo_cache_sentinel"))Hq=Sq(z,{bold:!0,children:"Tool name: "},void 0,!1,void 0,this),q[24]=Hq;else Hq=q[24];let D;if(q[25]!==W)D=Sq(O,{children:[Hq,Sq(z,{dimColor:!0,children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[25]=W,q[26]=D;else D=q[26];let Q;if(q[27]===Symbol.for("react.memo_cache_sentinel"))Q=Sq(z,{bold:!0,children:"Full name: "},void 0,!1,void 0,this),q[27]=Q;else Q=q[27];let r;if(q[28]!==Y.name)r=Sq(O,{children:[Q,Sq(z,{dimColor:!0,children:Y.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[28]=Y.name,q[29]=r;else r=q[29];let s;if(q[30]!==_)s=_&&Sq(O,{flexDirection:"column",marginTop:1,children:[Sq(z,{bold:!0,children:"Description:"},void 0,!1,void 0,this),Sq(z,{wrap:"wrap",children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[30]=_,q[31]=s;else s=q[31];let fq;if(q[32]!==Y.inputJSONSchema)fq=Y.inputJSONSchema&&Y.inputJSONSchema.properties&&Object.keys(Y.inputJSONSchema.properties).length>0&&Sq(O,{flexDirection:"column",marginTop:1,children:[Sq(z,{bold:!0,children:"Parameters:"},void 0,!1,void 0,this),Sq(O,{marginLeft:2,flexDirection:"column",children:Object.entries(Y.inputJSONSchema.properties).map((Gq)=>{let[zq,B]=Gq,hq=Y.inputJSONSchema?.required?.includes(zq);return Sq(z,{children:["\u2022 ",zq,hq&&Sq(z,{dimColor:!0,children:" (required)"},void 0,!1,void 0,this),":"," ",Sq(z,{dimColor:!0,children:typeof B==="object"&&B&&"type"in B?String(B.type):"unknown"},void 0,!1,void 0,this),typeof B==="object"&&B&&"description"in B&&Sq(z,{dimColor:!0,children:[" - ",String(B.description)]},void 0,!0,void 0,this)]},zq,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[32]=Y.inputJSONSchema,q[33]=fq;else fq=q[33];let m;if(q[34]!==D||q[35]!==r||q[36]!==s||q[37]!==fq)m=Sq(O,{flexDirection:"column",children:[D,r,s,fq]},void 0,!0,void 0,this),q[34]=D,q[35]=r,q[36]=s,q[37]=fq,q[38]=m;else m=q[38];let Aq;if(q[39]!==H||q[40]!==f.name||q[41]!==m||q[42]!==u)Aq=Sq(FK,{title:u,subtitle:f.name,onCancel:H,inputGuide:YY,children:m},void 0,!1,void 0,this),q[39]=H,q[40]=f.name,q[41]=m,q[42]=u,q[43]=Aq;else Aq=q[43];return Aq}function YY(K){return K.pending?Sq(z,{children:["Press ",K.keyName," again to exit"]},void 0,!0,void 0,this):Sq(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"go back"},void 0,!1,void 0,this)}var cz=uq(()=>{Bq();gz();zK();A6()});import{c as fY}from"react/compiler-runtime";import{jsxDEV as LK}from"react/jsx-dev-runtime";function oz(K){let q=fY(21),{server:Y,onSelectTool:f,onBack:H}=K,_=sq(wY),J;q:{if(Y.client.type!=="connected"){let j;if(q[0]===Symbol.for("react.memo_cache_sentinel"))j=[],q[0]=j;else j=q[0];J=j;break q}let G;if(q[1]!==_||q[2]!==Y.name)G=q6(_,Y.name),q[1]=_,q[2]=Y.name,q[3]=G;else G=q[3];J=G}let h=J,W;if(q[4]!==Y.name||q[5]!==h){let G;if(q[7]!==Y.name)G=(j,N)=>{let F=t8(j.name,Y.name),Z=j.userFacingName?j.userFacingName({}):F,A=e8(Z),u=j.isReadOnly?.({})??!1,Hq=j.isDestructive?.({})??!1,D=j.isOpenWorld?.({})??!1,Q=[];if(u)Q.push("read-only");if(Hq)Q.push("destructive");if(D)Q.push("open-world");return{label:A,value:N.toString(),description:Q.length>0?Q.join(", "):void 0,descriptionColor:Hq?"error":u?"success":void 0}},q[7]=Y.name,q[8]=G;else G=q[8];W=h.map(G),q[4]=Y.name,q[5]=h,q[6]=W}else W=q[6];let P=W,k=`Tools for ${Y.name}`,v=h.length,X;if(q[9]!==h.length)X=Vq(h.length,"tool"),q[9]=h.length,q[10]=X;else X=q[10];let l=`${v} ${X}`,U;if(q[11]!==H||q[12]!==f||q[13]!==h||q[14]!==P)U=h.length===0?LK(z,{dimColor:!0,children:"No tools available"},void 0,!1,void 0,this):LK(z8,{options:P,onChange:(G)=>{let j=parseInt(G),N=h[j];if(N)f(N,j)},onCancel:H},void 0,!1,void 0,this),q[11]=H,q[12]=f,q[13]=h,q[14]=P,q[15]=U;else U=q[15];let Wq;if(q[16]!==H||q[17]!==k||q[18]!==l||q[19]!==U)Wq=LK(FK,{title:k,subtitle:l,onCancel:H,inputGuide:HY,children:U},void 0,!1,void 0,this),q[16]=H,q[17]=k,q[18]=l,q[19]=U,q[20]=Wq;else Wq=q[20];return Wq}function HY(K){return K.pending?LK(z,{children:["Press ",K.keyName," again to exit"]},void 0,!0,void 0,this):LK(Lq,{children:[LK(oq,{shortcut:"\u2191\u2193",action:"navigate"},void 0,!1,void 0,this),LK(oq,{shortcut:"Enter",action:"select"},void 0,!1,void 0,this),LK(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function wY(K){return K.mcp.tools}var Fz=uq(()=>{Bq();gz();i8();h8();PK();zK();V6();YK();A6();A8()});function mK(K){switch(K.type){case"path-not-found":return`${K.component} path not found: ${K.path}`;case"git-auth-failed":return`Git ${K.authType.toUpperCase()} authentication failed for ${K.gitUrl}`;case"git-timeout":return`Git ${K.operation} timed out for ${K.gitUrl}`;case"network-error":return`Network error accessing ${K.url}${K.details?`: ${K.details}`:""}`;case"manifest-parse-error":return`Failed to parse manifest at ${K.manifestPath}: ${K.parseError}`;case"manifest-validation-error":return`Invalid manifest at ${K.manifestPath}: ${K.validationErrors.join(", ")}`;case"plugin-not-found":return`Plugin "${K.pluginId}" not found in marketplace "${K.marketplace}"`;case"marketplace-not-found":return`Marketplace "${K.marketplace}" not found`;case"marketplace-load-failed":return`Failed to load marketplace "${K.marketplace}": ${K.reason}`;case"mcp-config-invalid":return`Invalid MCP server config for "${K.serverName}": ${K.validationError}`;case"mcp-server-suppressed-duplicate":{let Y=K.duplicateOf.startsWith("plugin:")?`server provided by plugin "${K.duplicateOf.split(":")[1]??"?"}"`:`already-configured "${K.duplicateOf}"`;return`MCP server "${K.serverName}" skipped \u2014 same command/URL as ${Y}`}case"hook-load-failed":return`Failed to load hooks from ${K.hookPath}: ${K.reason}`;case"component-load-failed":return`Failed to load ${K.component} from ${K.path}: ${K.reason}`;case"mcpb-download-failed":return`Failed to download MCPB from ${K.url}: ${K.reason}`;case"mcpb-extract-failed":return`Failed to extract MCPB ${K.mcpbPath}: ${K.reason}`;case"mcpb-invalid-manifest":return`MCPB manifest invalid at ${K.mcpbPath}: ${K.validationError}`;case"marketplace-blocked-by-policy":return K.blockedByBlocklist?`Marketplace "${K.marketplace}" is blocked by enterprise policy`:`Marketplace "${K.marketplace}" is not in the allowed marketplace list`;case"dependency-unsatisfied":return K.reason==="not-enabled"?`Dependency "${K.dependency}" is disabled`:`Dependency "${K.dependency}" is not installed`;case"lsp-config-invalid":return`Invalid LSP server config for "${K.serverName}": ${K.validationError}`;case"lsp-server-start-failed":return`LSP server "${K.serverName}" failed to start: ${K.reason}`;case"lsp-server-crashed":return K.signal?`LSP server "${K.serverName}" crashed with signal ${K.signal}`:`LSP server "${K.serverName}" crashed with exit code ${K.exitCode??"unknown"}`;case"lsp-request-timeout":return`LSP server "${K.serverName}" timed out on ${K.method} after ${K.timeoutMs}ms`;case"lsp-request-failed":return`LSP server "${K.serverName}" ${K.method} failed: ${K.error}`;case"plugin-cache-miss":return`Plugin "${K.plugin}" not cached at ${K.installPath}`;case"generic-error":return K.error}return Uz(K)}function O8(K){switch(K.type){case"path-not-found":return"Check that the path in your manifest or marketplace config is correct";case"git-auth-failed":return K.authType==="ssh"?"Configure SSH keys or use HTTPS URL instead":"Configure credentials or use SSH URL instead";case"git-timeout":case"network-error":return"Check your internet connection and try again";case"manifest-parse-error":return"Check manifest file syntax in the plugin directory";case"manifest-validation-error":return"Check manifest file follows the required schema";case"plugin-not-found":return`Plugin may not exist in marketplace "${K.marketplace}"`;case"marketplace-not-found":return K.availableMarketplaces.length>0?`Available marketplaces: ${K.availableMarketplaces.join(", ")}`:"Add the marketplace first using /plugin marketplace add";case"mcp-config-invalid":return"Check MCP server configuration in .mcp.json or manifest";case"mcp-server-suppressed-duplicate":{if(K.duplicateOf.startsWith("plugin:"))return`Disable plugin "${K.duplicateOf.split(":")[1]??"the other plugin"}" if you want this plugin's version instead`;return`Remove "${K.duplicateOf}" from your MCP config if you want the plugin's version instead`}case"hook-load-failed":return"Check hooks.json file syntax and structure";case"component-load-failed":return`Check ${K.component} directory structure and file permissions`;case"mcpb-download-failed":return"Check your internet connection and URL accessibility";case"mcpb-extract-failed":return"Verify the MCPB file is valid and not corrupted";case"mcpb-invalid-manifest":return"Contact the plugin author about the invalid manifest";case"marketplace-blocked-by-policy":if(K.blockedByBlocklist)return"This marketplace source is explicitly blocked by your administrator";return K.allowedSources.length>0?`Allowed sources: ${K.allowedSources.join(", ")}`:"Contact your administrator to configure allowed marketplace sources";case"dependency-unsatisfied":return K.reason==="not-enabled"?`Enable "${K.dependency}" or uninstall "${K.plugin}"`:`Install "${K.dependency}" or uninstall "${K.plugin}"`;case"lsp-config-invalid":return"Check LSP server configuration in the plugin manifest";case"lsp-server-start-failed":case"lsp-server-crashed":case"lsp-request-timeout":case"lsp-request-failed":return"Check LSP server logs with --debug for details";case"plugin-cache-miss":return"Run /plugins to refresh the plugin cache";case"marketplace-load-failed":case"generic-error":return null}let q=K;return null}var E6=uq(()=>{kY()});import{c as AY}from"react/compiler-runtime";import rq from"figures";import{jsxDEV as Tq}from"react/jsx-dev-runtime";function az(K){let q=AY(142),{item:Y,isSelected:f}=K,[H]=q8();if(Y.type==="plugin"){let Z,A;if(Y.pendingToggle){let wq;if(q[0]!==H)wq=dq("suggestion",H)(rq.arrowRight),q[0]=H,q[1]=wq;else wq=q[1];Z=wq,A=Y.pendingToggle==="will-enable"?"will enable":"will disable"}else if(Y.errorCount>0){let wq;if(q[2]!==H)wq=dq("error",H)(rq.cross),q[2]=H,q[3]=wq;else wq=q[3];Z=wq;let y=Y.errorCount,C;if(q[4]!==Y.errorCount)C=Vq(Y.errorCount,"error"),q[4]=Y.errorCount,q[5]=C;else C=q[5];A=`${y} ${C}`}else if(!Y.isEnabled){let wq;if(q[6]!==H)wq=dq("inactive",H)(rq.radioOff),q[6]=H,q[7]=wq;else wq=q[7];Z=wq,A="disabled"}else{let wq;if(q[8]!==H)wq=dq("success",H)(rq.tick),q[8]=H,q[9]=wq;else wq=q[9];Z=wq,A="enabled"}let u=f?"suggestion":void 0,Hq=f?`${rq.pointer} `:" ",D;if(q[10]!==u||q[11]!==Hq)D=Tq(z,{color:u,children:Hq},void 0,!1,void 0,this),q[10]=u,q[11]=Hq,q[12]=D;else D=q[12];let Q=f?"suggestion":void 0,r;if(q[13]!==Y.name||q[14]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[13]=Y.name,q[14]=Q,q[15]=r;else r=q[15];let s=!f,fq;if(q[16]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[16]=fq;else fq=q[16];let m;if(q[17]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[17]=s,q[18]=m;else m=q[18];let Aq;if(q[19]!==Y.marketplace)Aq=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[19]=Y.marketplace,q[20]=Aq;else Aq=q[20];let Gq=!f,zq;if(q[21]!==Z||q[22]!==Gq)zq=Tq(z,{dimColor:Gq,children:[" \xB7 ",Z," "]},void 0,!0,void 0,this),q[21]=Z,q[22]=Gq,q[23]=zq;else zq=q[23];let B=!f,Mq;if(q[24]!==A||q[25]!==B)Mq=Tq(z,{dimColor:B,children:A},void 0,!1,void 0,this),q[24]=A,q[25]=B,q[26]=Mq;else Mq=q[26];let hq;if(q[27]!==zq||q[28]!==Mq||q[29]!==D||q[30]!==r||q[31]!==m||q[32]!==Aq)hq=Tq(O,{children:[D,r,m,Aq,zq,Mq]},void 0,!0,void 0,this),q[27]=zq,q[28]=Mq,q[29]=D,q[30]=r,q[31]=m,q[32]=Aq,q[33]=hq;else hq=q[33];return hq}if(Y.type==="flagged-plugin"){let Z;if(q[34]!==H)Z=dq("warning",H)(rq.warning),q[34]=H,q[35]=Z;else Z=q[35];let A=Z,u=f?"suggestion":void 0,Hq=f?`${rq.pointer} `:" ",D;if(q[36]!==u||q[37]!==Hq)D=Tq(z,{color:u,children:Hq},void 0,!1,void 0,this),q[36]=u,q[37]=Hq,q[38]=D;else D=q[38];let Q=f?"suggestion":void 0,r;if(q[39]!==Y.name||q[40]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[39]=Y.name,q[40]=Q,q[41]=r;else r=q[41];let s=!f,fq;if(q[42]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[42]=fq;else fq=q[42];let m;if(q[43]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[43]=s,q[44]=m;else m=q[44];let Aq;if(q[45]!==Y.marketplace)Aq=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[45]=Y.marketplace,q[46]=Aq;else Aq=q[46];let Gq=!f,zq;if(q[47]!==A||q[48]!==Gq)zq=Tq(z,{dimColor:Gq,children:[" \xB7 ",A," "]},void 0,!0,void 0,this),q[47]=A,q[48]=Gq,q[49]=zq;else zq=q[49];let B=!f,Mq;if(q[50]!==B)Mq=Tq(z,{dimColor:B,children:"removed"},void 0,!1,void 0,this),q[50]=B,q[51]=Mq;else Mq=q[51];let hq;if(q[52]!==Aq||q[53]!==zq||q[54]!==Mq||q[55]!==D||q[56]!==r||q[57]!==m)hq=Tq(O,{children:[D,r,m,Aq,zq,Mq]},void 0,!0,void 0,this),q[52]=Aq,q[53]=zq,q[54]=Mq,q[55]=D,q[56]=r,q[57]=m,q[58]=hq;else hq=q[58];return hq}if(Y.type==="failed-plugin"){let Z;if(q[59]!==H)Z=dq("error",H)(rq.cross),q[59]=H,q[60]=Z;else Z=q[60];let A=Z,u=Y.errorCount,Hq;if(q[61]!==Y.errorCount)Hq=Vq(Y.errorCount,"error"),q[61]=Y.errorCount,q[62]=Hq;else Hq=q[62];let D=`failed to load \xB7 ${u} ${Hq}`,Q=f?"suggestion":void 0,r=f?`${rq.pointer} `:" ",s;if(q[63]!==Q||q[64]!==r)s=Tq(z,{color:Q,children:r},void 0,!1,void 0,this),q[63]=Q,q[64]=r,q[65]=s;else s=q[65];let fq=f?"suggestion":void 0,m;if(q[66]!==Y.name||q[67]!==fq)m=Tq(z,{color:fq,children:Y.name},void 0,!1,void 0,this),q[66]=Y.name,q[67]=fq,q[68]=m;else m=q[68];let Aq=!f,Gq;if(q[69]===Symbol.for("react.memo_cache_sentinel"))Gq=Tq(z,{backgroundColor:"userMessageBackground",children:"Plugin"},void 0,!1,void 0,this),q[69]=Gq;else Gq=q[69];let zq;if(q[70]!==Aq)zq=Tq(z,{dimColor:Aq,children:[" ",Gq]},void 0,!0,void 0,this),q[70]=Aq,q[71]=zq;else zq=q[71];let B;if(q[72]!==Y.marketplace)B=Tq(z,{dimColor:!0,children:[" \xB7 ",Y.marketplace]},void 0,!0,void 0,this),q[72]=Y.marketplace,q[73]=B;else B=q[73];let Mq=!f,hq;if(q[74]!==A||q[75]!==Mq)hq=Tq(z,{dimColor:Mq,children:[" \xB7 ",A," "]},void 0,!0,void 0,this),q[74]=A,q[75]=Mq,q[76]=hq;else hq=q[76];let wq=!f,y;if(q[77]!==D||q[78]!==wq)y=Tq(z,{dimColor:wq,children:D},void 0,!1,void 0,this),q[77]=D,q[78]=wq,q[79]=y;else y=q[79];let C;if(q[80]!==zq||q[81]!==B||q[82]!==hq||q[83]!==y||q[84]!==s||q[85]!==m)C=Tq(O,{children:[s,m,zq,B,hq,y]},void 0,!0,void 0,this),q[80]=zq,q[81]=B,q[82]=hq,q[83]=y,q[84]=s,q[85]=m,q[86]=C;else C=q[86];return C}let _,J;if(Y.status==="connected"){let Z;if(q[87]!==H)Z=dq("success",H)(rq.tick),q[87]=H,q[88]=Z;else Z=q[88];_=Z,J="connected"}else if(Y.status==="disabled"){let Z;if(q[89]!==H)Z=dq("inactive",H)(rq.radioOff),q[89]=H,q[90]=Z;else Z=q[90];_=Z,J="disabled"}else if(Y.status==="pending"){let Z;if(q[91]!==H)Z=dq("inactive",H)(rq.radioOff),q[91]=H,q[92]=Z;else Z=q[92];_=Z,J="connecting\u2026"}else if(Y.status==="needs-auth"){let Z;if(q[93]!==H)Z=dq("warning",H)(rq.triangleUpOutline),q[93]=H,q[94]=Z;else Z=q[94];_=Z,J="Enter to auth"}else{let Z;if(q[95]!==H)Z=dq("error",H)(rq.cross),q[95]=H,q[96]=Z;else Z=q[96];_=Z,J="failed"}if(Y.indented){let Z=f?"suggestion":void 0,A=f?`${rq.pointer} `:" ",u;if(q[97]!==Z||q[98]!==A)u=Tq(z,{color:Z,children:A},void 0,!1,void 0,this),q[97]=Z,q[98]=A,q[99]=u;else u=q[99];let Hq=!f,D;if(q[100]!==Hq)D=Tq(z,{dimColor:Hq,children:"\u2514 "},void 0,!1,void 0,this),q[100]=Hq,q[101]=D;else D=q[101];let Q=f?"suggestion":void 0,r;if(q[102]!==Y.name||q[103]!==Q)r=Tq(z,{color:Q,children:Y.name},void 0,!1,void 0,this),q[102]=Y.name,q[103]=Q,q[104]=r;else r=q[104];let s=!f,fq;if(q[105]===Symbol.for("react.memo_cache_sentinel"))fq=Tq(z,{backgroundColor:"userMessageBackground",children:"MCP"},void 0,!1,void 0,this),q[105]=fq;else fq=q[105];let m;if(q[106]!==s)m=Tq(z,{dimColor:s,children:[" ",fq]},void 0,!0,void 0,this),q[106]=s,q[107]=m;else m=q[107];let Aq=!f,Gq;if(q[108]!==_||q[109]!==Aq)Gq=Tq(z,{dimColor:Aq,children:[" \xB7 ",_," "]},void 0,!0,void 0,this),q[108]=_,q[109]=Aq,q[110]=Gq;else Gq=q[110];let zq=!f,B;if(q[111]!==J||q[112]!==zq)B=Tq(z,{dimColor:zq,children:J},void 0,!1,void 0,this),q[111]=J,q[112]=zq,q[113]=B;else B=q[113];let Mq;if(q[114]!==m||q[115]!==Gq||q[116]!==B||q[117]!==u||q[118]!==D||q[119]!==r)Mq=Tq(O,{children:[u,D,r,m,Gq,B]},void 0,!0,void 0,this),q[114]=m,q[115]=Gq,q[116]=B,q[117]=u,q[118]=D,q[119]=r,q[120]=Mq;else Mq=q[120];return Mq}let h=f?"suggestion":void 0,W=f?`${rq.pointer} `:" ",P;if(q[121]!==h||q[122]!==W)P=Tq(z,{color:h,children:W},void 0,!1,void 0,this),q[121]=h,q[122]=W,q[123]=P;else P=q[123];let k=f?"suggestion":void 0,v;if(q[124]!==Y.name||q[125]!==k)v=Tq(z,{color:k,children:Y.name},void 0,!1,void 0,this),q[124]=Y.name,q[125]=k,q[126]=v;else v=q[126];let X=!f,l;if(q[127]===Symbol.for("react.memo_cache_sentinel"))l=Tq(z,{backgroundColor:"userMessageBackground",children:"MCP"},void 0,!1,void 0,this),q[127]=l;else l=q[127];let U;if(q[128]!==X)U=Tq(z,{dimColor:X,children:[" ",l]},void 0,!0,void 0,this),q[128]=X,q[129]=U;else U=q[129];let Wq=!f,G;if(q[130]!==_||q[131]!==Wq)G=Tq(z,{dimColor:Wq,children:[" \xB7 ",_," "]},void 0,!0,void 0,this),q[130]=_,q[131]=Wq,q[132]=G;else G=q[132];let j=!f,N;if(q[133]!==J||q[134]!==j)N=Tq(z,{dimColor:j,children:J},void 0,!1,void 0,this),q[133]=J,q[134]=j,q[135]=N;else N=q[135];let F;if(q[136]!==G||q[137]!==N||q[138]!==P||q[139]!==v||q[140]!==U)F=Tq(O,{children:[P,v,U,G,N]},void 0,!0,void 0,this),q[136]=G,q[137]=N,q[138]=P,q[139]=v,q[140]=U,q[141]=F;else F=q[141];return F}var nz=uq(()=>{Bq();PK()});import EK from"figures";import*as gK from"fs/promises";import*as w8 from"path";import*as fK from"react";import{useCallback as hY,useEffect as H8,useMemo as u6,useRef as g6,useState as Fq}from"react";import{jsxDEV as M}from"react/jsx-dev-runtime";async function Bz(K){try{return(await gK.readdir(K,{withFileTypes:!0})).filter((Y)=>Y.isFile()&&Y.name.endsWith(".md")).map((Y)=>{return w8.basename(Y.name,".md")})}catch(q){let Y=Eq(q);return RK(`Failed to read plugin components from ${K}: ${Y}`,{level:"error"}),kK(xK(q)),[]}}async function JY(K){try{let q=await gK.readdir(K,{withFileTypes:!0}),Y=[];for(let f of q)if(f.isDirectory()||f.isSymbolicLink()){let H=w8.join(K,f.name,"SKILL.md");try{if((await gK.stat(H)).isFile())Y.push(f.name)}catch{}}return Y}catch(q){let Y=Eq(q);return RK(`Failed to read skill directories from ${K}: ${Y}`,{level:"error"}),kK(xK(q)),[]}}function $Y({plugin:K,marketplace:q}){let[Y,f]=Fq(null),[H,_]=Fq(!0),[J,h]=Fq(null);if(H8(()=>{async function P(){try{if(q==="builtin"){let X=iz(K.name);if(X){let l=X.skills?.map((G)=>G.name)??[],U=X.hooks?Object.keys(X.hooks):[],Wq=X.mcpServers?Object.keys(X.mcpServers):[];f({commands:null,agents:null,skills:l.length>0?l:null,hooks:U.length>0?U:null,mcpServers:Wq.length>0?Wq:null})}else h(`Built-in plugin ${K.name} not found`);_(!1);return}let v=(await iK(q)).plugins.find((X)=>X.name===K.name);if(v){let X=[];if(K.commandsPath)X.push(K.commandsPath);if(K.commandsPaths)X.push(...K.commandsPaths);let l=[];for(let Z of X)if(typeof Z==="string"){let A=await Bz(Z);l.push(...A)}let U=[];if(K.agentsPath)U.push(K.agentsPath);if(K.agentsPaths)U.push(...K.agentsPaths);let Wq=[];for(let Z of U)if(typeof Z==="string"){let A=await Bz(Z);Wq.push(...A)}let G=[];if(K.skillsPath)G.push(K.skillsPath);if(K.skillsPaths)G.push(...K.skillsPaths);let j=[];for(let Z of G)if(typeof Z==="string"){let A=await JY(Z);j.push(...A)}let N=[];if(K.hooksConfig)N.push(Object.keys(K.hooksConfig));if(v.hooks)N.push(v.hooks);let F=[];if(K.mcpServers)F.push(Object.keys(K.mcpServers));if(v.mcpServers)F.push(v.mcpServers);f({commands:l.length>0?l:null,agents:Wq.length>0?Wq:null,skills:j.length>0?j:null,hooks:N.length>0?N:null,mcpServers:F.length>0?F:null})}else h(`Plugin ${K.name} not found in marketplace`)}catch(k){h(k instanceof Error?k.message:"Failed to load components")}finally{_(!1)}}P()},[K.name,K.commandsPath,K.commandsPaths,K.agentsPath,K.agentsPaths,K.skillsPath,K.skillsPaths,K.hooksConfig,K.mcpServers,q]),H)return null;if(J)return M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,children:"Components:"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:["Error: ",J]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(!Y)return null;if(!(Y.commands||Y.agents||Y.skills||Y.hooks||Y.mcpServers))return null;return M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,children:"Installed components:"},void 0,!1,void 0,this),Y.commands?M(z,{dimColor:!0,children:["\u2022 Commands:"," ",typeof Y.commands==="string"?Y.commands:Array.isArray(Y.commands)?Y.commands.join(", "):Object.keys(Y.commands).join(", ")]},void 0,!0,void 0,this):null,Y.agents?M(z,{dimColor:!0,children:["\u2022 Agents:"," ",typeof Y.agents==="string"?Y.agents:Array.isArray(Y.agents)?Y.agents.join(", "):Object.keys(Y.agents).join(", ")]},void 0,!0,void 0,this):null,Y.skills?M(z,{dimColor:!0,children:["\u2022 Skills:"," ",typeof Y.skills==="string"?Y.skills:Array.isArray(Y.skills)?Y.skills.join(", "):Object.keys(Y.skills).join(", ")]},void 0,!0,void 0,this):null,Y.hooks?M(z,{dimColor:!0,children:["\u2022 Hooks:"," ",typeof Y.hooks==="string"?Y.hooks:Array.isArray(Y.hooks)?Y.hooks.map(String).join(", "):typeof Y.hooks==="object"&&Y.hooks!==null?Object.keys(Y.hooks).join(", "):String(Y.hooks)]},void 0,!0,void 0,this):null,Y.mcpServers?M(z,{dimColor:!0,children:["\u2022 MCP Servers:"," ",typeof Y.mcpServers==="string"?Y.mcpServers:Array.isArray(Y.mcpServers)?Y.mcpServers.map(String).join(", "):typeof Y.mcpServers==="object"&&Y.mcpServers!==null?Object.keys(Y.mcpServers).join(", "):String(Y.mcpServers)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}async function ZY(K,q){let f=(await iK(q))?.plugins.find((H)=>H.name===K);if(f&&typeof f.source==="string")return`Local plugins cannot be updated remotely. To update, modify the source at: ${f.source}`;return null}function vY(K){return K.filter((q)=>{let Y=q.source.split("@")[1]||"local";return!QK(`${q.name}@${Y}`)})}function O7({setViewState:K,setResult:q,onManageComplete:Y,onSearchModeChange:f,targetPlugin:H,targetMarketplace:_,action:J}){let h=sq((w)=>w.mcp.clients),W=sq((w)=>w.mcp.tools),P=sq((w)=>w.plugins.errors),k=K7(),[v,X]=Fq(!1),l=hY((w)=>{X(w),f?.(w)},[f]),U=E8(),{columns:Wq}=eK(),[G,j]=Fq("plugin-list"),{query:N,setQuery:F,cursorOffset:Z}=g8({isActive:G==="plugin-list"&&v,onExit:()=>{l(!1)}}),[A,u]=Fq(null),[Hq,D]=Fq([]),[Q,r]=Fq([]),[s,fq]=Fq(!0),[m,Aq]=Fq(new Map),Gq=g6(!1),zq=g6(void 0),B=Y8(),Mq=fK.useCallback(()=>{if(G==="plugin-details")j("plugin-list"),u(null),S(null);else if(typeof G==="object"&&G.type==="failed-plugin-details")j("plugin-list"),S(null);else if(G==="configuring")j("plugin-details"),L(null);else if(typeof G==="object"&&(G.type==="plugin-options"||G.type==="configuring-options")){if(j("plugin-list"),u(null),q("Plugin enabled. Configuration skipped \u2014 run /reload-plugins to apply."),Y)Y()}else if(typeof G==="object"&&G.type==="flagged-detail")j("plugin-list"),S(null);else if(typeof G==="object"&&G.type==="mcp-detail")j("plugin-list"),S(null);else if(typeof G==="object"&&G.type==="mcp-tools")j({type:"mcp-detail",client:G.client});else if(typeof G==="object"&&G.type==="mcp-tool-detail")j({type:"mcp-tools",client:G.client});else{if(m.size>0){q("Run /reload-plugins to apply plugin changes.");return}K({type:"menu"})}},[G,K,m,q]);xq("confirm:no",Mq,{context:"Confirmation",isActive:(G!=="plugin-list"||!v)&&G!=="confirm-project-uninstall"&&!(typeof G==="object"&&G.type==="confirm-data-cleanup")});let hq=(w)=>{if(w.type==="connected")return"connected";if(w.type==="disabled")return"disabled";if(w.type==="pending")return"pending";if(w.type==="needs-auth")return"needs-auth";return"failed"},wq=u6(()=>{let w=uK(),x=new Map;for(let Kq of h)if(Kq.name.startsWith("plugin:")){let jq=Kq.name.split(":");if(jq.length>=3){let Uq=jq[1],aq=jq.slice(2).join(":"),gq=x.get(Uq)||[];gq.push({displayName:aq,client:Kq}),x.set(Uq,gq)}}let Yq=[];for(let Kq of Q){let jq=`${Kq.plugin.name}@${Kq.marketplace}`,Uq=w?.enabledPlugins?.[jq]!==!1,aq=P.filter((Cq)=>("plugin"in Cq)&&Cq.plugin===Kq.plugin.name||Cq.source===jq||Cq.source.startsWith(`${Kq.plugin.name}@`)),gq=Kq.plugin.isBuiltin?"builtin":Kq.scope||"user";Yq.push({item:{type:"plugin",id:jq,name:Kq.plugin.name,description:Kq.plugin.manifest.description,marketplace:Kq.marketplace,scope:gq,isEnabled:Uq,errorCount:aq.length,errors:aq,plugin:Kq.plugin,pendingEnable:Kq.pendingEnable,pendingUpdate:Kq.pendingUpdate,pendingToggle:m.get(jq)},originalScope:gq,childMcps:x.get(Kq.plugin.name)||[]})}let qq=new Set(Yq.map(({item:Kq})=>Kq.id)),e=new Set(Yq.map(({item:Kq})=>Kq.name)),n=new Map;for(let Kq of P){if(qq.has(Kq.source)||"plugin"in Kq&&typeof Kq.plugin==="string"&&e.has(Kq.plugin))continue;let jq=n.get(Kq.source)||[];jq.push(Kq),n.set(Kq.source,jq)}let _q=O6(),$q=[];for(let[Kq,jq]of n){if(Kq in k)continue;let Uq=K6(Kq),aq=Uq.name||Kq,gq=Uq.marketplace||"unknown",Cq=_q.get(Kq),tq=Cq==="flag"||Cq===void 0?"user":Cq;$q.push({type:"failed-plugin",id:Kq,name:aq,marketplace:gq,scope:tq,errorCount:jq.length,errors:jq})}let yq=[];for(let Kq of h){if(Kq.name==="ide")continue;if(Kq.name.startsWith("plugin:"))continue;yq.push({type:"mcp",id:`mcp:${Kq.name}`,name:Kq.name,description:void 0,scope:Kq.config.scope,status:hq(Kq),client:Kq})}let mq={flagged:-1,project:0,local:1,user:2,enterprise:3,managed:4,dynamic:5,builtin:6},HK=[],Rq=new Map;for(let{item:Kq,originalScope:jq,childMcps:Uq}of Yq){let aq=Kq.scope;if(!Rq.has(aq))Rq.set(aq,[]);Rq.get(aq).push(Kq);for(let{displayName:gq,client:Cq}of Uq){let tq=jq==="builtin"?"user":jq;if(!Rq.has(tq))Rq.set(tq,[]);Rq.get(tq).push({type:"mcp",id:`mcp:${Cq.name}`,name:gq,description:void 0,scope:tq,status:hq(Cq),client:Cq,indented:!0})}}for(let Kq of yq){let jq=Kq.scope;if(!Rq.has(jq))Rq.set(jq,[]);Rq.get(jq).push(Kq)}for(let Kq of $q){let jq=Kq.scope;if(!Rq.has(jq))Rq.set(jq,[]);Rq.get(jq).push(Kq)}for(let[Kq,jq]of Object.entries(k)){let Uq=K6(Kq),aq=Uq.name||Kq,gq=Uq.marketplace||"unknown";if(!Rq.has("flagged"))Rq.set("flagged",[]);Rq.get("flagged").push({type:"flagged-plugin",id:Kq,name:aq,marketplace:gq,scope:"flagged",reason:"delisted",text:"Removed from marketplace",flaggedAt:jq.flaggedAt})}let Z8=[...Rq.keys()].sort((Kq,jq)=>(mq[Kq]??99)-(mq[jq]??99));for(let Kq of Z8){let jq=Rq.get(Kq),Uq=[],aq=[],gq=0;while(gq<jq.length){let Cq=jq[gq];if(Cq.type==="plugin"||Cq.type==="failed-plugin"||Cq.type==="flagged-plugin"){let tq=[Cq];gq++;let v8=jq[gq];while(v8?.type==="mcp"&&v8.indented)tq.push(v8),gq++,v8=jq[gq];Uq.push(tq)}else if(Cq.type==="mcp"&&!Cq.indented)aq.push(Cq),gq++;else gq++}Uq.sort((Cq,tq)=>Cq[0].name.localeCompare(tq[0].name)),aq.sort((Cq,tq)=>Cq.name.localeCompare(tq.name));for(let Cq of Uq)HK.push(...Cq);HK.push(...aq)}return HK},[Q,h,P,m,k]),y=u6(()=>wq.filter((w)=>w.type==="flagged-plugin").map((w)=>w.id),[wq]);H8(()=>{if(y.length>0)z7(y)},[y]);let C=u6(()=>{if(!N)return wq;let w=N.toLowerCase();return wq.filter((x)=>x.name.toLowerCase().includes(w)||("description"in x)&&x.description?.toLowerCase().includes(w))},[wq,N]),[g,Oq]=Fq(0),Jq=nK({totalItems:C.length,selectedIndex:g,maxVisible:8}),[T,i]=Fq(0),[I,V]=Fq(!1),[c,S]=Fq(null),[$,L]=Fq(null),[t,Xq]=Fq(!1),[E,o]=Fq(!1);H8(()=>{if(!A){o(!1);return}async function w(){let x=A.plugin.manifest.mcpServers,Yq=!1;if(x)Yq=typeof x==="string"&&$K(x)||Array.isArray(x)&&x.some((qq)=>typeof qq==="string"&&$K(qq));if(!Yq)try{let qq=w8.join(A.plugin.path,".."),e=w8.join(qq,".claude-plugin","marketplace.json"),n=await gK.readFile(e,"utf-8"),$q=rz(n).plugins?.find((yq)=>yq.name===A.plugin.name);if($q?.mcpServers){let yq=$q.mcpServers;Yq=typeof yq==="string"&&$K(yq)||Array.isArray(yq)&&yq.some((mq)=>typeof mq==="string"&&$K(mq))}}catch(qq){RK(`Failed to read raw marketplace.json: ${qq}`)}o(Yq)}w()},[A]),H8(()=>{async function w(){fq(!0);try{let{enabled:x,disabled:Yq}=await IK(),qq=uK(),e=vY([...x,...Yq]),n={};for(let yq of e){let mq=yq.source.split("@")[1]||"local";if(!n[mq])n[mq]=[];n[mq].push(yq)}let _q=[];for(let[yq,mq]of Object.entries(n)){let HK=OK(mq,(Z8)=>{let Kq=`${Z8.name}@${yq}`;return qq?.enabledPlugins?.[Kq]!==!1}),Rq=mq.length-HK;_q.push({name:yq,installedPlugins:mq,enabledCount:HK,disabledCount:Rq})}_q.sort((yq,mq)=>{if(yq.name==="claude-plugin-directory")return-1;if(mq.name==="claude-plugin-directory")return 1;return yq.name.localeCompare(mq.name)}),D(_q);let $q=[];for(let yq of _q)for(let mq of yq.installedPlugins){let HK=`${mq.name}@${yq.name}`,Rq=mq.isBuiltin?"builtin":c6(HK).scope;$q.push({plugin:mq,marketplace:yq.name,scope:Rq,pendingEnable:void 0,pendingUpdate:!1})}r($q),Oq(0)}finally{fq(!1)}}w()},[]),H8(()=>{if(Gq.current)return;if(H&&Hq.length>0&&!s){let{name:w,marketplace:x}=K6(H),Yq=_??x,qq=Yq?Hq.filter((n)=>n.name===Yq):Hq;for(let n of qq){let _q=n.installedPlugins.find(($q)=>$q.name===w);if(_q){let $q=`${_q.name}@${n.name}`,{scope:yq}=c6($q),mq={plugin:_q,marketplace:n.name,scope:yq,pendingEnable:void 0,pendingUpdate:!1};u(mq),j("plugin-details"),zq.current=J,Gq.current=!0;return}}let e=wq.find((n)=>n.type==="failed-plugin"&&n.name===w);if(e&&e.type==="failed-plugin")j({type:"failed-plugin-details",plugin:{id:e.id,name:e.name,marketplace:e.marketplace,errors:e.errors,scope:e.scope}}),Gq.current=!0;if(!Gq.current&&J)Gq.current=!0,q(`Plugin "${H}" is not installed in this project`)}},[H,_,Hq,s,wq,J,q]);let Pq=async(w)=>{if(!A)return;let x=A.scope||"user",Yq=x==="builtin";if(Yq&&(w==="update"||w==="uninstall")){S("Built-in plugins cannot be updated or uninstalled.");return}if(!Yq&&!f8(x)&&w!=="update"){S("This plugin is managed by your organization. Contact your admin to disable it.");return}V(!0),S(null);try{let qq=`${A.plugin.name}@${A.marketplace}`,e;switch(w){case"enable":{let Rq=await z6(qq);if(!Rq.success)throw Error(Rq.message);break}case"disable":{let Rq=await Y6(qq);if(!Rq.success)throw Error(Rq.message);e=Rq.reverseDependents;break}case"uninstall":{if(Yq)break;if(!f8(x))break;if(ez(qq)){V(!1),j("confirm-project-uninstall");return}let Rq=sz().plugins[qq],Kq=!Rq||Rq.length<=1?await Qz(qq):null;if(Kq){V(!1),j({type:"confirm-data-cleanup",size:Kq});return}let jq=await J8(qq,x);if(!jq.success)throw Error(jq.message);e=jq.reverseDependents;break}case"update":{if(Yq)break;let Rq=await q7(qq,x);if(!Rq.success)throw Error(Rq.message);if(Rq.alreadyUpToDate){if(q(`${A.plugin.name} is already at the latest version (${Rq.newVersion}).`),Y)await Y();K({type:"menu"});return}break}}cq();let n=`${A.plugin.name}@${A.marketplace}`;if(uK()?.enabledPlugins?.[n]!==!1){V(!1),j({type:"plugin-options"});return}let yq=w==="enable"?"Enabled":w==="disable"?"Disabled":w==="update"?"Updated":"Uninstalled",mq=e&&e.length>0?` \xB7 required by ${e.join(", ")}`:"",HK=`\u2713 ${yq} ${A.plugin.name}${mq}. Run /reload-plugins to apply.`;if(q(HK),Y)await Y();K({type:"menu"})}catch(qq){V(!1);let e=qq instanceof Error?qq.message:String(qq);S(`Failed to ${w}: ${e}`),kK(xK(qq))}},Nq=g6(Pq);Nq.current=Pq,H8(()=>{if(G==="plugin-details"&&A&&zq.current){let w=zq.current;zq.current=void 0,Nq.current(w)}},[G,A]);let Zq=fK.useCallback(()=>{if(g>=C.length)return;let w=C[g];if(w?.type==="flagged-plugin")return;if(w?.type==="plugin"){let x=`${w.plugin.name}@${w.marketplace}`,Yq=uK(),qq=m.get(x),e=Yq?.enabledPlugins?.[x]!==!1,n=w.scope;if(n==="builtin"||f8(n)){let $q=new Map(m);if(qq)$q.delete(x),(async()=>{try{if(qq==="will-disable")await z6(x);else await Y6(x);cq()}catch(yq){kK(yq)}})();else $q.set(x,e?"will-disable":"will-enable"),(async()=>{try{if(e)await Y6(x);else await z6(x);cq()}catch(yq){kK(yq)}})();Aq($q)}}else if(w?.type==="mcp")B(w.client.name)},[g,C,m,Q,B]),bq=fK.useCallback(()=>{if(g>=C.length)return;let w=C[g];if(w?.type==="plugin"){let x=Q.find((Yq)=>Yq.plugin.name===w.plugin.name&&Yq.marketplace===w.marketplace);if(x)u(x),j("plugin-details"),i(0),S(null)}else if(w?.type==="flagged-plugin")j({type:"flagged-detail",plugin:{id:w.id,name:w.name,marketplace:w.marketplace,reason:w.reason,text:w.text,flaggedAt:w.flaggedAt}}),S(null);else if(w?.type==="failed-plugin")j({type:"failed-plugin-details",plugin:{id:w.id,name:w.name,marketplace:w.marketplace,errors:w.errors,scope:w.scope}}),i(0),S(null);else if(w?.type==="mcp")j({type:"mcp-detail",client:w.client}),S(null)},[g,C,Q]);pq({"select:previous":()=>{if(g===0)l(!0);else Jq.handleSelectionChange(g-1,Oq)},"select:next":()=>{if(g<C.length-1)Jq.handleSelectionChange(g+1,Oq)},"select:accept":bq},{context:"Select",isActive:G==="plugin-list"&&!v}),pq({"plugin:toggle":Zq},{context:"Plugin",isActive:G==="plugin-list"&&!v});let Iq=fK.useCallback(()=>{if(typeof G!=="object"||G.type!=="flagged-detail")return;Y7(G.plugin.id),j("plugin-list")},[G]);pq({"select:accept":Iq},{context:"Select",isActive:typeof G==="object"&&G.type==="flagged-detail"});let iq=fK.useMemo(()=>{if(G!=="plugin-details"||!A)return[];let w=uK(),x=`${A.plugin.name}@${A.marketplace}`,Yq=w?.enabledPlugins?.[x]!==!1,qq=A.marketplace==="builtin",e=[];if(e.push({label:Yq?"Disable plugin":"Enable plugin",action:()=>void Pq(Yq?"disable":"enable")}),!qq){if(e.push({label:A.pendingUpdate?"Unmark for update":"Mark for update",action:async()=>{try{let n=await ZY(A.plugin.name,A.marketplace);if(n){S(n);return}let _q=[...Q],$q=_q.findIndex((yq)=>yq.plugin.name===A.plugin.name&&yq.marketplace===A.marketplace);if($q!==-1)_q[$q].pendingUpdate=!A.pendingUpdate,r(_q),u({...A,pendingUpdate:!A.pendingUpdate})}catch(n){S(n instanceof Error?n.message:"Failed to check plugin update availability")}}}),E)e.push({label:"Configure",action:async()=>{Xq(!0);try{let n=A.plugin.manifest.mcpServers,_q=null;if(typeof n==="string"&&$K(n))_q=n;else if(Array.isArray(n)){for(let mq of n)if(typeof mq==="string"&&$K(mq)){_q=mq;break}}if(!_q){S("No MCPB file found in plugin"),Xq(!1);return}let $q=`${A.plugin.name}@${A.marketplace}`,yq=await x6(_q,A.plugin.path,$q,void 0,void 0,!0);if("status"in yq&&yq.status==="needs-config")L(yq),j("configuring");else S("Failed to load MCPB for configuration")}catch(n){let _q=Eq(n);S(`Failed to load configuration: ${_q}`)}finally{Xq(!1)}}});if(A.plugin.manifest.userConfig&&Object.keys(A.plugin.manifest.userConfig).length>0)e.push({label:"Configure options",action:()=>{j({type:"configuring-options",schema:A.plugin.manifest.userConfig})}});e.push({label:"Update now",action:()=>void Pq("update")}),e.push({label:"Uninstall",action:()=>void Pq("uninstall")})}if(A.plugin.manifest.homepage)e.push({label:"Open homepage",action:()=>void KK(A.plugin.manifest.homepage)});if(A.plugin.manifest.repository)e.push({label:"View repository",action:()=>void KK(A.plugin.manifest.repository)});return e.push({label:"Back to plugin list",action:()=>{j("plugin-list"),u(null),S(null)}}),e},[G,A,E,Q]);if(pq({"select:previous":()=>{if(T>0)i(T-1)},"select:next":()=>{if(T<iq.length-1)i(T+1)},"select:accept":()=>{if(iq[T])iq[T].action()}},{context:"Select",isActive:G==="plugin-details"&&!!A}),pq({"select:accept":()=>{if(typeof G==="object"&&G.type==="failed-plugin-details")(async()=>{V(!0),S(null);let w=G.plugin.id,x=G.plugin.scope,Yq=f8(x)?await J8(w,x,!1):await J8(w,"user",!1),qq=Yq.success;if(!qq){let e=["userSettings","projectSettings","localSettings"];for(let n of e){let _q=hK(n);if(_q?.enabledPlugins?.[w]!==void 0)VK(n,{enabledPlugins:{..._q.enabledPlugins,[w]:void 0}}),qq=!0}cq()}if(qq){if(Y)await Y();V(!1),j("plugin-list")}else V(!1),S(Yq.message)})()}},{context:"Select",isActive:typeof G==="object"&&G.type==="failed-plugin-details"&&G.plugin.scope!=="managed"}),pq({"confirm:yes":()=>{if(!A)return;V(!0),S(null);let w=`${A.plugin.name}@${A.marketplace}`,{error:x}=VK("localSettings",{enabledPlugins:{...hK("localSettings")?.enabledPlugins,[w]:!1}});if(x){V(!1),S(`Failed to write settings: ${x.message}`);return}if(cq(),q(`\u2713 Disabled ${A.plugin.name} in .claude/settings.local.json. Run /reload-plugins to apply.`),Y)Y();K({type:"menu"})},"confirm:no":()=>{j("plugin-details"),S(null)}},{context:"Confirmation",isActive:G==="confirm-project-uninstall"&&!!A&&!I}),qK((w,x)=>{if(!A)return;let Yq=`${A.plugin.name}@${A.marketplace}`,qq=A.scope;if(!qq||qq==="builtin"||!f8(qq))return;let e=async(n)=>{V(!0),S(null);try{let _q=await J8(Yq,qq,n);if(!_q.success)throw Error(_q.message);cq();let $q=n?"":" \xB7 data preserved";if(q(`${EK.tick} ${_q.message}${$q}`),Y)Y();K({type:"menu"})}catch(_q){V(!1),S(_q instanceof Error?_q.message:String(_q))}};if(w==="y"||w==="Y")e(!0);else if(w==="n"||w==="N")e(!1);else if(x.escape)j("plugin-details"),S(null)},{isActive:typeof G==="object"&&G.type==="confirm-data-cleanup"&&!!A&&!I}),fK.useEffect(()=>{Oq(0)},[N]),qK((w,x)=>{let Yq=!x.ctrl&&!x.meta;if(v)return;if(w==="/"&&Yq)l(!0),F(""),Oq(0);else if(Yq&&w.length>0&&!/^\s+$/.test(w)&&w!=="j"&&w!=="k"&&w!==" ")l(!0),F(w),Oq(0)},{isActive:G==="plugin-list"}),s)return M(z,{children:"Loading installed plugins\u2026"},void 0,!1,void 0,this);if(wq.length===0)return M(O,{flexDirection:"column",children:[M(O,{marginBottom:1,children:M(z,{bold:!0,children:"Manage plugins"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(z,{children:"No plugins or MCP servers installed."},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,children:"Esc to go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(typeof G==="object"&&G.type==="plugin-options"&&A){let x=function(Yq){if(q(Yq),Y)Y();K({type:"menu"})},w=`${A.plugin.name}@${A.marketplace}`;return M(UK,{plugin:A.plugin,pluginId:w,onDone:(Yq,qq)=>{switch(Yq){case"configured":x(`\u2713 Enabled and configured ${A.plugin.name}. Run /reload-plugins to apply.`);break;case"skipped":x(`\u2713 Enabled ${A.plugin.name}. Run /reload-plugins to apply.`);break;case"error":x(`Failed to save configuration: ${qq}`);break}}},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="configuring-options"&&A){let w=`${A.plugin.name}@${A.marketplace}`;return M(W8,{title:`Configure ${A.plugin.name}`,subtitle:"Plugin options",configSchema:G.schema,initialValues:y8(w),onSave:(x)=>{try{R8(w,x,G.schema),cq(),q("Configuration saved. Run /reload-plugins for changes to take effect.")}catch(Yq){S(`Failed to save configuration: ${Eq(Yq)}`)}j("plugin-details")},onCancel:()=>j("plugin-details")},void 0,!1,void 0,this)}if(G==="configuring"&&$&&A){let Yq=function(){L(null),j("plugin-details")},w=`${A.plugin.name}@${A.marketplace}`;async function x(qq){if(!$||!A)return;try{let e=A.plugin.manifest.mcpServers,n=null;if(typeof e==="string"&&$K(e))n=e;else if(Array.isArray(e)){for(let _q of e)if(typeof _q==="string"&&$K(_q)){n=_q;break}}if(!n){S("No MCPB file found"),j("plugin-details");return}await x6(n,A.plugin.path,w,void 0,qq),S(null),L(null),j("plugin-details"),q("Configuration saved. Run /reload-plugins for changes to take effect.")}catch(e){let n=Eq(e);S(`Failed to save configuration: ${n}`),j("plugin-details")}}return M(W8,{title:`Configure ${$.manifest.name}`,subtitle:`Plugin: ${A.plugin.name}`,configSchema:$.configSchema,initialValues:$.existingConfig,onSave:x,onCancel:Yq},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="flagged-detail"){let w=G.plugin;return M(O,{flexDirection:"column",children:[M(O,{children:M(z,{bold:!0,children:[w.name," @ ",w.marketplace]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{marginBottom:1,children:[M(z,{dimColor:!0,children:"Status: "},void 0,!1,void 0,this),M(z,{color:"error",children:"Removed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M(O,{marginBottom:1,flexDirection:"column",children:[M(z,{color:"error",children:["Removed from marketplace \xB7 reason: ",w.reason]},void 0,!0,void 0,this),M(z,{children:w.text},void 0,!1,void 0,this),M(z,{dimColor:!0,children:["Flagged on ",new Date(w.flaggedAt).toLocaleDateString()]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:M(O,{children:[M(z,{children:[EK.pointer," "]},void 0,!0,void 0,this),M(z,{color:"suggestion",children:"Dismiss"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(Lq,{children:[M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"dismiss"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}if(G==="confirm-project-uninstall"&&A)return M(O,{flexDirection:"column",children:[M(z,{bold:!0,color:"warning",children:[A.plugin.name," is enabled in .claude/settings.json (shared with your team)"]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:[M(z,{children:"Disable it just for you in .claude/settings.local.json?"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:"This has the same effect as uninstalling, without affecting other contributors."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:I?M(z,{dimColor:!0,children:"Disabling\u2026"},void 0,!1,void 0,this):M(Lq,{children:[M(kq,{action:"confirm:yes",context:"Confirmation",fallback:"y",description:"disable"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(typeof G==="object"&&G.type==="confirm-data-cleanup"&&A)return M(O,{flexDirection:"column",children:[M(z,{bold:!0,children:[A.plugin.name," has ",G.size.human," of persistent data"]},void 0,!0,void 0,this),M(O,{marginTop:1,flexDirection:"column",children:[M(z,{children:"Delete it along with the plugin?"},void 0,!1,void 0,this),M(z,{dimColor:!0,children:lz(`${A.plugin.name}@${A.marketplace}`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:I?M(z,{dimColor:!0,children:"Uninstalling\u2026"},void 0,!1,void 0,this):M(z,{children:[M(z,{bold:!0,children:"y"},void 0,!1,void 0,this)," to delete \xB7 ",M(z,{bold:!0,children:"n"},void 0,!1,void 0,this)," to keep \xB7"," ",M(z,{bold:!0,children:"esc"},void 0,!1,void 0,this)," to cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(G==="plugin-details"&&A){let w=uK(),x=`${A.plugin.name}@${A.marketplace}`,Yq=w?.enabledPlugins?.[x]!==!1,qq=P.filter((n)=>("plugin"in n)&&n.plugin===A.plugin.name||n.source===x||n.source.startsWith(`${A.plugin.name}@`)),e=qq.length===0?null:M(O,{flexDirection:"column",marginBottom:1,children:[M(z,{bold:!0,color:"error",children:[qq.length," ",Vq(qq.length,"error"),":"]},void 0,!0,void 0,this),qq.map((n,_q)=>{let $q=O8(n);return M(O,{flexDirection:"column",marginLeft:2,children:[M(z,{color:"error",children:mK(n)},void 0,!1,void 0,this),$q&&M(z,{dimColor:!0,italic:!0,children:[EK.arrowRight," ",$q]},void 0,!0,void 0,this)]},_q,!0,void 0,this)})]},void 0,!0,void 0,this);return M(O,{flexDirection:"column",children:[M(O,{children:M(z,{bold:!0,children:[A.plugin.name," @ ",A.marketplace]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{children:[M(z,{dimColor:!0,children:"Scope: "},void 0,!1,void 0,this),M(z,{children:A.scope||"user"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A.plugin.manifest.version&&M(O,{children:[M(z,{dimColor:!0,children:"Version: "},void 0,!1,void 0,this),M(z,{children:A.plugin.manifest.version},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A.plugin.manifest.description&&M(O,{marginBottom:1,children:M(z,{children:A.plugin.manifest.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),A.plugin.manifest.author&&M(O,{children:[M(z,{dimColor:!0,children:"Author: "},void 0,!1,void 0,this),M(z,{children:A.plugin.manifest.author.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M(O,{marginBottom:1,children:[M(z,{dimColor:!0,children:"Status: "},void 0,!1,void 0,this),M(z,{color:Yq?"success":"warning",children:Yq?"Enabled":"Disabled"},void 0,!1,void 0,this),A.pendingUpdate&&M(z,{color:"suggestion",children:" \xB7 Marked for update"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M($Y,{plugin:A.plugin,marketplace:A.marketplace},void 0,!1,void 0,this),e,M(O,{marginTop:1,flexDirection:"column",children:iq.map((n,_q)=>{let $q=_q===T;return M(O,{children:[$q&&M(z,{children:[EK.pointer," "]},void 0,!0,void 0,this),!$q&&M(z,{children:" "},void 0,!1,void 0,this),M(z,{bold:$q,color:n.label.includes("Uninstall")?"error":n.label.includes("Update")?"suggestion":void 0,children:n.label},void 0,!1,void 0,this)]},_q,!0,void 0,this)})},void 0,!1,void 0,this),I&&M(O,{marginTop:1,children:M(z,{children:"Processing\u2026"},void 0,!1,void 0,this)},void 0,!1,void 0,this),c&&M(O,{marginTop:1,children:M(z,{color:"error",children:c},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[M(kq,{action:"select:previous",context:"Select",fallback:"\u2191",description:"navigate"},void 0,!1,void 0,this),M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"select"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(typeof G==="object"&&G.type==="failed-plugin-details"){let w=G.plugin,x=w.errors[0],Yq=x?mK(x):"Failed to load";return M(O,{flexDirection:"column",children:[M(z,{children:[M(z,{bold:!0,children:w.name},void 0,!1,void 0,this),M(z,{dimColor:!0,children:[" @ ",w.marketplace]},void 0,!0,void 0,this),M(z,{dimColor:!0,children:[" (",w.scope,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M(z,{color:"error",children:Yq},void 0,!1,void 0,this),w.scope==="managed"?M(O,{marginTop:1,children:M(z,{dimColor:!0,children:"Managed by your organization \u2014 contact your admin"},void 0,!1,void 0,this)},void 0,!1,void 0,this):M(O,{marginTop:1,children:[M(z,{color:"suggestion",children:[EK.pointer," "]},void 0,!0,void 0,this),M(z,{bold:!0,children:"Remove"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I&&M(z,{children:"Processing\u2026"},void 0,!1,void 0,this),c&&M(z,{color:"error",children:c},void 0,!1,void 0,this),M(O,{marginTop:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[w.scope!=="managed"&&M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"remove"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(typeof G==="object"&&G.type==="mcp-detail"){let w=G.client,x=q6(W,w.name).length,Yq=()=>{j({type:"mcp-tools",client:w})},qq=()=>{j("plugin-list")},e=($q)=>{if($q)q($q);j("plugin-list")},n=w.config.scope,_q=w.config.type;if(_q==="stdio"){let $q={name:w.name,client:w,scope:n,transport:"stdio",config:w.config};return M(dz,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="sse"){let $q={name:w.name,client:w,scope:n,transport:"sse",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="http"){let $q={name:w.name,client:w,scope:n,transport:"http",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}else if(_q==="claudeai-proxy"){let $q={name:w.name,client:w,scope:n,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(Q8,{server:$q,serverToolsCount:x,onViewTools:Yq,onCancel:qq,onComplete:e,borderless:!0},void 0,!1,void 0,this)}return j("plugin-list"),null}if(typeof G==="object"&&G.type==="mcp-tools"){let w=G.client,x=w.config.scope,Yq=w.config.type,qq;if(Yq==="stdio")qq={name:w.name,client:w,scope:x,transport:"stdio",config:w.config};else if(Yq==="sse")qq={name:w.name,client:w,scope:x,transport:"sse",isAuthenticated:void 0,config:w.config};else if(Yq==="http")qq={name:w.name,client:w,scope:x,transport:"http",isAuthenticated:void 0,config:w.config};else qq={name:w.name,client:w,scope:x,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(oz,{server:qq,onSelectTool:(e)=>{j({type:"mcp-tool-detail",client:w,tool:e})},onBack:()=>j({type:"mcp-detail",client:w})},void 0,!1,void 0,this)}if(typeof G==="object"&&G.type==="mcp-tool-detail"){let{client:w,tool:x}=G,Yq=w.config.scope,qq=w.config.type,e;if(qq==="stdio")e={name:w.name,client:w,scope:Yq,transport:"stdio",config:w.config};else if(qq==="sse")e={name:w.name,client:w,scope:Yq,transport:"sse",isAuthenticated:void 0,config:w.config};else if(qq==="http")e={name:w.name,client:w,scope:Yq,transport:"http",isAuthenticated:void 0,config:w.config};else e={name:w.name,client:w,scope:Yq,transport:"claudeai-proxy",isAuthenticated:void 0,config:w.config};return M(xz,{tool:x,server:e,onBack:()=>j({type:"mcp-tools",client:w})},void 0,!1,void 0,this)}let ZK=Jq.getVisibleItems(C);return M(O,{flexDirection:"column",children:[M(O,{marginBottom:1,children:M(u8,{query:N,isFocused:v,isTerminalFocused:U,width:Wq-4,cursorOffset:Z},void 0,!1,void 0,this)},void 0,!1,void 0,this),C.length===0&&N&&M(O,{marginBottom:1,children:M(z,{dimColor:!0,children:['No items match "',N,'"']},void 0,!0,void 0,this)},void 0,!1,void 0,this),Jq.scrollPosition.canScrollUp&&M(O,{children:M(z,{dimColor:!0,children:[" ",EK.arrowUp," more above"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ZK.map((w,x)=>{let qq=Jq.toActualIndex(x)===g&&!v,e=x>0?ZK[x-1]:null,n=!e||e.scope!==w.scope,_q=($q)=>{switch($q){case"flagged":return"Flagged";case"project":return"Project";case"local":return"Local";case"user":return"User";case"enterprise":return"Enterprise";case"managed":return"Managed";case"builtin":return"Built-in";case"dynamic":return"Built-in";default:return $q}};return M(fK.Fragment,{children:[n&&M(O,{marginTop:x>0?1:0,paddingLeft:2,children:M(z,{dimColor:w.scope!=="flagged",color:w.scope==="flagged"?"warning":void 0,bold:w.scope==="flagged",children:_q(w.scope)},void 0,!1,void 0,this)},void 0,!1,void 0,this),M(az,{item:w,isSelected:qq},void 0,!1,void 0,this)]},w.id,!0,void 0,this)}),Jq.scrollPosition.canScrollDown&&M(O,{children:M(z,{dimColor:!0,children:[" ",EK.arrowDown," more below"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M(O,{marginTop:1,marginLeft:1,children:M(z,{dimColor:!0,italic:!0,children:M(Lq,{children:[M(z,{children:"type to search"},void 0,!1,void 0,this),M(kq,{action:"plugin:toggle",context:"Plugin",fallback:"Space",description:"toggle"},void 0,!1,void 0,this),M(kq,{action:"select:accept",context:"Select",fallback:"Enter",description:"details"},void 0,!1,void 0,this),M(kq,{action:"confirm:no",context:"Confirmation",fallback:"Esc",description:"back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),m.size>0&&M(O,{marginLeft:1,children:M(z,{dimColor:!0,italic:!0,children:"Run /reload-plugins to apply changes"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var f7=uq(()=>{zK();YK();Iz();Ez();cz();Fz();hz();Jz();v6();Bq();DK();GY();d6();i8();PY();h8();D8();S8();h6();wK();T8();cK();$6();oK();zz();XY();_Y();MY();G6();Oz();J6();tz();y6();WY();PK();E6();W6();b8();nz();m8()});function H7(K){if(!K)return{type:"menu"};let q=K.trim().split(/\s+/);switch(q[0]?.toLowerCase()){case"help":case"--help":case"-h":return{type:"help"};case"install":case"i":{let f=q[1];if(!f)return{type:"install"};if(f.includes("@")){let[_,J]=f.split("@");return{type:"install",plugin:_,marketplace:J}}if(f.startsWith("http://")||f.startsWith("https://")||f.startsWith("file://")||f.includes("/")||f.includes("\\"))return{type:"install",marketplace:f};return{type:"install",plugin:f}}case"manage":return{type:"manage"};case"uninstall":return{type:"uninstall",plugin:q[1]};case"enable":return{type:"enable",plugin:q[1]};case"disable":return{type:"disable",plugin:q[1]};case"validate":return{type:"validate",path:q.slice(1).join(" ").trim()||void 0};case"marketplace":case"market":{let f=q[1]?.toLowerCase(),H=q.slice(2).join(" ");switch(f){case"add":return{type:"marketplace",action:"add",target:H};case"remove":case"rm":return{type:"marketplace",action:"remove",target:H};case"update":return{type:"marketplace",action:"update",target:H};case"list":return{type:"marketplace",action:"list"};default:return{type:"marketplace"}}}default:return{type:"menu"}}}var w7=()=>{};import{c as jY}from"react/compiler-runtime";import CK from"figures";import{useEffect as yY}from"react";import{jsxDEV as k7}from"react/jsx-dev-runtime";function W7(K){let q=jY(5),{onComplete:Y,path:f}=K,H,_;if(q[0]!==Y||q[1]!==f)H=()=>{(async function(){if(!f){Y(`Usage: /plugin validate <path>
3
3
 
4
4
  Validate a plugin or marketplace manifest file or directory.
5
5