@caspian2026/agent-sdk 0.0.2

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 (371) hide show
  1. package/dist/chunk-018smjq7.js +26 -0
  2. package/dist/chunk-055q0a2m.js +146 -0
  3. package/dist/chunk-07069jq1.js +30 -0
  4. package/dist/chunk-0731m51q.js +8 -0
  5. package/dist/chunk-0awwmrwr.js +46 -0
  6. package/dist/chunk-0htx82k2.js +64 -0
  7. package/dist/chunk-0jmt5sx1.js +104 -0
  8. package/dist/chunk-0kj8bq80.js +252 -0
  9. package/dist/chunk-0kxcq8h9.js +86 -0
  10. package/dist/chunk-0paqc2yw.js +15 -0
  11. package/dist/chunk-0vkfrmqm.js +690 -0
  12. package/dist/chunk-0xjaqda8.js +1124 -0
  13. package/dist/chunk-10qhq6f8.js +458 -0
  14. package/dist/chunk-15m49c67.js +121 -0
  15. package/dist/chunk-15sfg4bs.js +65 -0
  16. package/dist/chunk-162ewhvy.js +869 -0
  17. package/dist/chunk-177s15bv.js +120 -0
  18. package/dist/chunk-19e603rv.js +284 -0
  19. package/dist/chunk-1ax1znzj.js +537 -0
  20. package/dist/chunk-1c4j7qn2.js +319 -0
  21. package/dist/chunk-1gx78081.js +66 -0
  22. package/dist/chunk-1h2famwb.js +49 -0
  23. package/dist/chunk-1nk93fqz.js +357 -0
  24. package/dist/chunk-1xct96nd.js +2520 -0
  25. package/dist/chunk-1xvcvdef.js +90 -0
  26. package/dist/chunk-1yrcnrs7.js +261 -0
  27. package/dist/chunk-21bcvwr7.js +660 -0
  28. package/dist/chunk-2352ts05.js +667 -0
  29. package/dist/chunk-23jzrwsw.js +43 -0
  30. package/dist/chunk-26hg7303.js +62 -0
  31. package/dist/chunk-2f21meep.js +122 -0
  32. package/dist/chunk-2fwze72g.js +24 -0
  33. package/dist/chunk-2gzv8nrw.js +205 -0
  34. package/dist/chunk-2h05vtpv.js +83 -0
  35. package/dist/chunk-2h0y6m16.js +465 -0
  36. package/dist/chunk-2n7bbxm6.js +168 -0
  37. package/dist/chunk-2nv3d0he.js +108 -0
  38. package/dist/chunk-2vqrdwx9.js +1811 -0
  39. package/dist/chunk-3389cj3w.js +120 -0
  40. package/dist/chunk-35sgv3er.js +231 -0
  41. package/dist/chunk-3c25bcsw.js +17 -0
  42. package/dist/chunk-3e20cj49.js +443 -0
  43. package/dist/chunk-3mr5ryx4.js +122 -0
  44. package/dist/chunk-3nk79af8.js +8 -0
  45. package/dist/chunk-3qbdzsvm.js +120 -0
  46. package/dist/chunk-3yprydpw.js +213 -0
  47. package/dist/chunk-430yrtmk.js +492 -0
  48. package/dist/chunk-46hd1gyd.js +140 -0
  49. package/dist/chunk-46hdszda.js +63 -0
  50. package/dist/chunk-46n7byh8.js +102 -0
  51. package/dist/chunk-4cp6193g.js +9076 -0
  52. package/dist/chunk-4dn3n459.js +409 -0
  53. package/dist/chunk-4hv90qcz.js +8 -0
  54. package/dist/chunk-4jm600zv.js +13 -0
  55. package/dist/chunk-4nspekjp.js +69 -0
  56. package/dist/chunk-505mxxa9.js +19 -0
  57. package/dist/chunk-50bay5qy.js +224 -0
  58. package/dist/chunk-537qfvn5.js +345 -0
  59. package/dist/chunk-55raexh7.js +14358 -0
  60. package/dist/chunk-572vjq78.js +56 -0
  61. package/dist/chunk-5apfzkpy.js +87 -0
  62. package/dist/chunk-5ccdsxgy.js +74 -0
  63. package/dist/chunk-5dmhsqap.js +32 -0
  64. package/dist/chunk-5fs6nkjr.js +98 -0
  65. package/dist/chunk-5nchekqe.js +87 -0
  66. package/dist/chunk-5pp28k2r.js +120 -0
  67. package/dist/chunk-5rt4b8q9.js +116 -0
  68. package/dist/chunk-5rv9c8yd.js +1072 -0
  69. package/dist/chunk-5z28bqne.js +6748 -0
  70. package/dist/chunk-64c1avct.js +13 -0
  71. package/dist/chunk-66zry909.js +11 -0
  72. package/dist/chunk-682qgta2.js +102 -0
  73. package/dist/chunk-68ffk5qa.js +14 -0
  74. package/dist/chunk-68w91pzt.js +79 -0
  75. package/dist/chunk-69fgaak0.js +654 -0
  76. package/dist/chunk-69n11zng.js +436 -0
  77. package/dist/chunk-6dj5t602.js +341 -0
  78. package/dist/chunk-6gh20s05.js +146 -0
  79. package/dist/chunk-6maej1hh.js +502 -0
  80. package/dist/chunk-6nsd9606.js +790 -0
  81. package/dist/chunk-6p4cyhb3.js +16 -0
  82. package/dist/chunk-6t4a9cgj.js +877 -0
  83. package/dist/chunk-6t8yqfks.js +227 -0
  84. package/dist/chunk-6vthy0fj.js +213 -0
  85. package/dist/chunk-70cw4cg9.js +1026 -0
  86. package/dist/chunk-70eey1nh.js +164 -0
  87. package/dist/chunk-76j2e9vy.js +68 -0
  88. package/dist/chunk-7acgdm7x.js +93 -0
  89. package/dist/chunk-7aw745vx.js +40175 -0
  90. package/dist/chunk-7gvwg1v9.js +122 -0
  91. package/dist/chunk-7h2ybnf3.js +636 -0
  92. package/dist/chunk-7kcm5hn2.js +155 -0
  93. package/dist/chunk-7m2hp89m.js +73 -0
  94. package/dist/chunk-7mqab3z7.js +31 -0
  95. package/dist/chunk-7sgtxrsc.js +1059 -0
  96. package/dist/chunk-7wm5s02e.js +216 -0
  97. package/dist/chunk-7xyswgjh.js +8 -0
  98. package/dist/chunk-7yxvpj5j.js +1452 -0
  99. package/dist/chunk-80a8vabn.js +93 -0
  100. package/dist/chunk-83e71kz6.js +180 -0
  101. package/dist/chunk-83hfzbx3.js +10 -0
  102. package/dist/chunk-8g5pe1gr.js +37 -0
  103. package/dist/chunk-8g747a8x.js +26 -0
  104. package/dist/chunk-8hj8ms5q.js +111 -0
  105. package/dist/chunk-8mkwsdk1.js +61 -0
  106. package/dist/chunk-8n42zyfx.js +40 -0
  107. package/dist/chunk-8qhxyqj9.js +1155 -0
  108. package/dist/chunk-8y30k9pz.js +38 -0
  109. package/dist/chunk-960ze3jj.js +124 -0
  110. package/dist/chunk-97wgdsab.js +35 -0
  111. package/dist/chunk-9grztvcg.js +93 -0
  112. package/dist/chunk-9x5zgy22.js +12 -0
  113. package/dist/chunk-a8792r1c.js +620 -0
  114. package/dist/chunk-ahr1r7c6.js +4275 -0
  115. package/dist/chunk-ase86y73.js +15 -0
  116. package/dist/chunk-b0kf00ff.js +637 -0
  117. package/dist/chunk-b0qptb1k.js +640 -0
  118. package/dist/chunk-b1kcd3ss.js +27 -0
  119. package/dist/chunk-b2fd462a.js +54 -0
  120. package/dist/chunk-bdrjvs5k.js +157 -0
  121. package/dist/chunk-beg7bdyz.js +90 -0
  122. package/dist/chunk-bg4x9ex0.js +21 -0
  123. package/dist/chunk-bktfq0ns.js +95 -0
  124. package/dist/chunk-bmbq6nt1.js +145 -0
  125. package/dist/chunk-bvf2z3g6.js +1003 -0
  126. package/dist/chunk-bxcfz5gy.js +56 -0
  127. package/dist/chunk-c11swzas.js +5368 -0
  128. package/dist/chunk-c37j5zxe.js +57 -0
  129. package/dist/chunk-c5mz5vw2.js +117 -0
  130. package/dist/chunk-c6sjhj89.js +1284 -0
  131. package/dist/chunk-c7jwbe76.js +29030 -0
  132. package/dist/chunk-cc2tg4q8.js +311 -0
  133. package/dist/chunk-cdhmrbj4.js +6353 -0
  134. package/dist/chunk-cdz5yb0r.js +57 -0
  135. package/dist/chunk-cfv996bs.js +22 -0
  136. package/dist/chunk-cgfdkzhb.js +12 -0
  137. package/dist/chunk-chakj069.js +310 -0
  138. package/dist/chunk-chsyvavm.js +3435 -0
  139. package/dist/chunk-cnsj3vq2.js +35 -0
  140. package/dist/chunk-ctdg0qxh.js +1386 -0
  141. package/dist/chunk-cxq7gc42.js +386 -0
  142. package/dist/chunk-d1pyf9as.js +8586 -0
  143. package/dist/chunk-d4kwjqjy.js +308 -0
  144. package/dist/chunk-d4mdda98.js +94 -0
  145. package/dist/chunk-d7886r6a.js +13870 -0
  146. package/dist/chunk-d7f1pzkq.js +95 -0
  147. package/dist/chunk-ddsjkqs4.js +39 -0
  148. package/dist/chunk-dm3n2qgd.js +24 -0
  149. package/dist/chunk-e2mv8ts8.js +115 -0
  150. package/dist/chunk-e4bhfc6d.js +2720 -0
  151. package/dist/chunk-e4p1jbs4.js +58 -0
  152. package/dist/chunk-e7h4qxgw.js +21 -0
  153. package/dist/chunk-e8p3fy6v.js +202 -0
  154. package/dist/chunk-e97mp86b.js +111 -0
  155. package/dist/chunk-ebqwkhyf.js +145 -0
  156. package/dist/chunk-eenq3avg.js +69 -0
  157. package/dist/chunk-efgjfast.js +61 -0
  158. package/dist/chunk-ehtwnxpg.js +1591 -0
  159. package/dist/chunk-en8wkxh7.js +173 -0
  160. package/dist/chunk-enkdxqas.js +33 -0
  161. package/dist/chunk-eqp1rfft.js +17 -0
  162. package/dist/chunk-ercvcek8.js +266 -0
  163. package/dist/chunk-etgh9xvt.js +369 -0
  164. package/dist/chunk-ev3qkf76.js +106 -0
  165. package/dist/chunk-evp5pb9x.js +3567 -0
  166. package/dist/chunk-ewadzrm8.js +103 -0
  167. package/dist/chunk-exah13mz.js +94 -0
  168. package/dist/chunk-f0rzvqmq.js +87 -0
  169. package/dist/chunk-f1m9pect.js +258 -0
  170. package/dist/chunk-fajg8x36.js +8158 -0
  171. package/dist/chunk-fbv4apne.js +51 -0
  172. package/dist/chunk-fbvw6wq9.js +116 -0
  173. package/dist/chunk-feyzykye.js +10 -0
  174. package/dist/chunk-fn1vvj8k.js +894 -0
  175. package/dist/chunk-fshfxw2q.js +183 -0
  176. package/dist/chunk-fyc5fepv.js +10 -0
  177. package/dist/chunk-g9f19ttm.js +15 -0
  178. package/dist/chunk-gcpfxk0c.js +644 -0
  179. package/dist/chunk-gdg6411p.js +106 -0
  180. package/dist/chunk-gkyzz8er.js +849 -0
  181. package/dist/chunk-gxahdggv.js +71 -0
  182. package/dist/chunk-h6fsks9j.js +220 -0
  183. package/dist/chunk-h9n54swm.js +27 -0
  184. package/dist/chunk-hakdhagh.js +16606 -0
  185. package/dist/chunk-hchy0hq6.js +159 -0
  186. package/dist/chunk-hh3k5s1s.js +180 -0
  187. package/dist/chunk-hqqkj5pg.js +202 -0
  188. package/dist/chunk-htpehq9t.js +251 -0
  189. package/dist/chunk-hwfknpxv.js +39 -0
  190. package/dist/chunk-hwn8vetn.js +394 -0
  191. package/dist/chunk-hx3j6n92.js +178 -0
  192. package/dist/chunk-hyb749hd.js +194 -0
  193. package/dist/chunk-hzgnejb1.js +90 -0
  194. package/dist/chunk-hzknr99c.js +477 -0
  195. package/dist/chunk-j3zhb8vv.js +152 -0
  196. package/dist/chunk-j5bth84e.js +97 -0
  197. package/dist/chunk-j64ga6ta.js +8035 -0
  198. package/dist/chunk-jaaxk89e.js +113 -0
  199. package/dist/chunk-jd32zbps.js +15 -0
  200. package/dist/chunk-jfja8q7w.js +91 -0
  201. package/dist/chunk-jgjqa49s.js +27 -0
  202. package/dist/chunk-jgpmpgx6.js +19 -0
  203. package/dist/chunk-jgwd85hp.js +91 -0
  204. package/dist/chunk-jk69qtzx.js +277 -0
  205. package/dist/chunk-jr1xm1dd.js +147 -0
  206. package/dist/chunk-jss0azv7.js +2337 -0
  207. package/dist/chunk-jxpmkae9.js +108 -0
  208. package/dist/chunk-jy9rxxqe.js +102 -0
  209. package/dist/chunk-jyw3np47.js +264 -0
  210. package/dist/chunk-jzthz1bx.js +15 -0
  211. package/dist/chunk-k0p9w03v.js +4957 -0
  212. package/dist/chunk-k2rybwww.js +92 -0
  213. package/dist/chunk-k3939ggz.js +168 -0
  214. package/dist/chunk-k591cwbg.js +345 -0
  215. package/dist/chunk-k5ez1h65.js +108 -0
  216. package/dist/chunk-k8vp0atq.js +2331 -0
  217. package/dist/chunk-kajf3jgq.js +694 -0
  218. package/dist/chunk-kbm69rtz.js +276 -0
  219. package/dist/chunk-kjh11txh.js +419 -0
  220. package/dist/chunk-kqggbte3.js +326 -0
  221. package/dist/chunk-kr6qfwq0.js +95 -0
  222. package/dist/chunk-kvfg8eeg.js +150 -0
  223. package/dist/chunk-kwekc97v.js +18 -0
  224. package/dist/chunk-m1cehfta.js +861 -0
  225. package/dist/chunk-m87bhhqv.js +61 -0
  226. package/dist/chunk-mg7pbk0r.js +151 -0
  227. package/dist/chunk-mpbfkp8j.js +418 -0
  228. package/dist/chunk-mpk1sjyk.js +117 -0
  229. package/dist/chunk-msecaxyj.js +74 -0
  230. package/dist/chunk-mswx2nma.js +103 -0
  231. package/dist/chunk-mw1kpeg9.js +6895 -0
  232. package/dist/chunk-mxr2s6d1.js +89 -0
  233. package/dist/chunk-my40g5hp.js +560 -0
  234. package/dist/chunk-n0kmh4ra.js +338 -0
  235. package/dist/chunk-n18q5yqs.js +397 -0
  236. package/dist/chunk-n7pnyq43.js +131 -0
  237. package/dist/chunk-naybw0p0.js +32 -0
  238. package/dist/chunk-nb6abcch.js +83 -0
  239. package/dist/chunk-ne5r3k03.js +350 -0
  240. package/dist/chunk-nebezy1d.js +997 -0
  241. package/dist/chunk-netzwgv1.js +154 -0
  242. package/dist/chunk-nhapyawz.js +32994 -0
  243. package/dist/chunk-npnvheft.js +156 -0
  244. package/dist/chunk-nrtksr2p.js +51 -0
  245. package/dist/chunk-nw9t5pq9.js +132 -0
  246. package/dist/chunk-nxgsnh2y.js +735 -0
  247. package/dist/chunk-p11xp4xp.js +266 -0
  248. package/dist/chunk-p1hwrf72.js +74 -0
  249. package/dist/chunk-p1zj9mg9.js +567 -0
  250. package/dist/chunk-p39a677r.js +115 -0
  251. package/dist/chunk-p7vkh4wx.js +15 -0
  252. package/dist/chunk-p8na2wwp.js +14 -0
  253. package/dist/chunk-pcb7fbyg.js +259 -0
  254. package/dist/chunk-pckwmrzd.js +409 -0
  255. package/dist/chunk-ped973jn.js +111 -0
  256. package/dist/chunk-phd1qfpc.js +5971 -0
  257. package/dist/chunk-pkkngdv0.js +524 -0
  258. package/dist/chunk-ppwjyveh.js +8 -0
  259. package/dist/chunk-pqvr8jq7.js +324 -0
  260. package/dist/chunk-prcah3ys.js +106 -0
  261. package/dist/chunk-ps49ymvj.js +43 -0
  262. package/dist/chunk-pwwa7s62.js +11 -0
  263. package/dist/chunk-pxdzy0jh.js +134 -0
  264. package/dist/chunk-q3jr5t07.js +62 -0
  265. package/dist/chunk-q6cfkntd.js +675 -0
  266. package/dist/chunk-q6m26rc8.js +88 -0
  267. package/dist/chunk-q6xs51jj.js +332 -0
  268. package/dist/chunk-q7jnesv8.js +74 -0
  269. package/dist/chunk-q7zpf4r2.js +440 -0
  270. package/dist/chunk-q8c88vjm.js +24 -0
  271. package/dist/chunk-qajrkk97.js +298 -0
  272. package/dist/chunk-qatfdxvd.js +34 -0
  273. package/dist/chunk-qb6k2afy.js +153 -0
  274. package/dist/chunk-qfk94vcn.js +329 -0
  275. package/dist/chunk-qj2e1apf.js +471 -0
  276. package/dist/chunk-qj2mk79w.js +111 -0
  277. package/dist/chunk-qk7dfae6.js +267 -0
  278. package/dist/chunk-qnfx3qtx.js +617 -0
  279. package/dist/chunk-qp2qdcda.js +100 -0
  280. package/dist/chunk-qq0phwn8.js +458 -0
  281. package/dist/chunk-qwqjesx7.js +258 -0
  282. package/dist/chunk-qygmcg7w.js +60 -0
  283. package/dist/chunk-qz2x630m.js +49145 -0
  284. package/dist/chunk-qzj4e8fn.js +357 -0
  285. package/dist/chunk-ratvcbmn.js +255 -0
  286. package/dist/chunk-rkg741k3.js +37 -0
  287. package/dist/chunk-rn0v1hk8.js +34 -0
  288. package/dist/chunk-rsq0h0rz.js +91 -0
  289. package/dist/chunk-rvnb2gn6.js +1053 -0
  290. package/dist/chunk-rx278zpa.js +75 -0
  291. package/dist/chunk-s3hsqf80.js +473 -0
  292. package/dist/chunk-s4cb0bcb.js +655 -0
  293. package/dist/chunk-s8kj6ajy.js +32 -0
  294. package/dist/chunk-sd36yzx8.js +954 -0
  295. package/dist/chunk-sfcpjh4r.js +98 -0
  296. package/dist/chunk-spybh2dy.js +175 -0
  297. package/dist/chunk-sw9ax3ym.js +92 -0
  298. package/dist/chunk-szj5wvdy.js +28 -0
  299. package/dist/chunk-t29a6zb5.js +45 -0
  300. package/dist/chunk-t9p85zff.js +24 -0
  301. package/dist/chunk-tc1aazk4.js +131 -0
  302. package/dist/chunk-tdbz9gbm.js +1030 -0
  303. package/dist/chunk-tjcfpk38.js +208 -0
  304. package/dist/chunk-tp2jxmcx.js +8427 -0
  305. package/dist/chunk-tqmtkm0k.js +92 -0
  306. package/dist/chunk-tvgvt220.js +22820 -0
  307. package/dist/chunk-v0qraze5.js +291 -0
  308. package/dist/chunk-v1kzp02e.js +785 -0
  309. package/dist/chunk-v78fj8by.js +145 -0
  310. package/dist/chunk-v8g3kad0.js +101 -0
  311. package/dist/chunk-v9smspw2.js +4301 -0
  312. package/dist/chunk-vawgyev5.js +157 -0
  313. package/dist/chunk-vb3x3cxe.js +375 -0
  314. package/dist/chunk-vf612n57.js +472 -0
  315. package/dist/chunk-vjn8mbcw.js +198 -0
  316. package/dist/chunk-vmbfv1y5.js +295 -0
  317. package/dist/chunk-vrf54kmt.js +321 -0
  318. package/dist/chunk-vyjeh50y.js +2149 -0
  319. package/dist/chunk-vzgkedm9.js +159745 -0
  320. package/dist/chunk-w004kfw0.js +245 -0
  321. package/dist/chunk-w0yhbmxn.js +132 -0
  322. package/dist/chunk-w4yn8cq7.js +123 -0
  323. package/dist/chunk-waqwgprq.js +1164 -0
  324. package/dist/chunk-wayfjcwt.js +447 -0
  325. package/dist/chunk-wby6yd4m.js +91 -0
  326. package/dist/chunk-wha6v7za.js +705 -0
  327. package/dist/chunk-wjcq2vkf.js +641 -0
  328. package/dist/chunk-wtjt9qyk.js +2670 -0
  329. package/dist/chunk-x2pvw7xw.js +42 -0
  330. package/dist/chunk-x6r4v44b.js +8 -0
  331. package/dist/chunk-x8d2ehd7.js +19 -0
  332. package/dist/chunk-xd6kmmb1.js +95 -0
  333. package/dist/chunk-xp61y5ba.js +125 -0
  334. package/dist/chunk-xv3era3s.js +8 -0
  335. package/dist/chunk-xxw9a0bq.js +58 -0
  336. package/dist/chunk-xzhaa7gd.js +112 -0
  337. package/dist/chunk-y1784krc.js +19 -0
  338. package/dist/chunk-y4ca9kqz.js +3830 -0
  339. package/dist/chunk-yff68ex1.js +113 -0
  340. package/dist/chunk-yg4vgpxs.js +436 -0
  341. package/dist/chunk-yk62vxj2.js +2964 -0
  342. package/dist/chunk-ym5r3jnk.js +2007 -0
  343. package/dist/chunk-ysanv95x.js +225 -0
  344. package/dist/chunk-yvtzznds.js +63 -0
  345. package/dist/chunk-yyex5gsf.js +269 -0
  346. package/dist/chunk-yyf72f78.js +456 -0
  347. package/dist/chunk-z19sd3bt.js +1648 -0
  348. package/dist/chunk-z2dp53wn.js +17 -0
  349. package/dist/chunk-z9n0183s.js +39 -0
  350. package/dist/chunk-zb8f6h5g.js +9174 -0
  351. package/dist/chunk-zctfbr1v.js +594 -0
  352. package/dist/chunk-zesnmkg3.js +2840 -0
  353. package/dist/chunk-zf47r1b7.js +94 -0
  354. package/dist/chunk-zghtdbat.js +253 -0
  355. package/dist/chunk-zpmwvd09.js +275 -0
  356. package/dist/chunk-zqncgyf6.js +127 -0
  357. package/dist/chunk-zr6mz36s.js +281 -0
  358. package/dist/chunk-zshzdw1n.js +141 -0
  359. package/dist/chunk-zx5kw7z4.js +40 -0
  360. package/dist/chunk-zzm33q8x.js +8 -0
  361. package/dist/cli.js +91 -0
  362. package/dist/download-ripgrep.js +24821 -0
  363. package/dist/vendor/audio-capture/arm64-darwin/audio-capture.node +0 -0
  364. package/dist/vendor/audio-capture/arm64-linux/audio-capture.node +0 -0
  365. package/dist/vendor/audio-capture/arm64-win32/audio-capture.node +0 -0
  366. package/dist/vendor/audio-capture/x64-darwin/audio-capture.node +0 -0
  367. package/dist/vendor/audio-capture/x64-linux/audio-capture.node +0 -0
  368. package/dist/vendor/audio-capture/x64-win32/audio-capture.node +0 -0
  369. package/dist/vendor/ripgrep/x64-win32/rg.exe +0 -0
  370. package/package.json +122 -0
  371. package/scripts/postinstall.cjs +319 -0
@@ -0,0 +1,1164 @@
1
+ // @bun
2
+ import {
3
+ MCPRemoteServerMenu,
4
+ MCPStdioServerMenu,
5
+ MCPToolDetailView,
6
+ MCPToolListView,
7
+ PluginSettings,
8
+ init_MCPRemoteServerMenu,
9
+ init_MCPStdioServerMenu,
10
+ init_MCPToolDetailView,
11
+ init_MCPToolListView,
12
+ init_PluginSettings
13
+ } from "./chunk-d1pyf9as.js";
14
+ import"./chunk-gkyzz8er.js";
15
+ import {
16
+ init_MCPConnectionManager,
17
+ useMcpReconnect,
18
+ useMcpToggleEnabled
19
+ } from "./chunk-a8792r1c.js";
20
+ import"./chunk-6maej1hh.js";
21
+ import"./chunk-7kcm5hn2.js";
22
+ import"./chunk-gcpfxk0c.js";
23
+ import"./chunk-tjcfpk38.js";
24
+ import"./chunk-p8na2wwp.js";
25
+ import"./chunk-d4kwjqjy.js";
26
+ import {
27
+ McpParsingWarnings,
28
+ init_McpParsingWarnings
29
+ } from "./chunk-fshfxw2q.js";
30
+ import {
31
+ AuthenticationCancelledError,
32
+ ClaudeAuthProvider,
33
+ ConfigurableShortcutHint,
34
+ Select,
35
+ Spinner,
36
+ describeMcpConfigFilePath,
37
+ extractAgentMcpServers,
38
+ filterToolsByServer,
39
+ getSessionIngressAuthToken,
40
+ init_AppState,
41
+ init_ConfigurableShortcutHint,
42
+ init_CustomSelect,
43
+ init_Spinner,
44
+ init_auth,
45
+ init_sessionIngressAuth,
46
+ init_utils,
47
+ performMCPOAuthFlow,
48
+ useAppState,
49
+ useAppStateStore
50
+ } from "./chunk-vzgkedm9.js";
51
+ import"./chunk-46hdszda.js";
52
+ import"./chunk-hwfknpxv.js";
53
+ import"./chunk-4nspekjp.js";
54
+ import"./chunk-jzthz1bx.js";
55
+ import"./chunk-1gx78081.js";
56
+ import"./chunk-2gzv8nrw.js";
57
+ import"./chunk-ehtwnxpg.js";
58
+ import"./chunk-68w91pzt.js";
59
+ import"./chunk-s4cb0bcb.js";
60
+ import"./chunk-cgfdkzhb.js";
61
+ import"./chunk-bxcfz5gy.js";
62
+ import"./chunk-nebezy1d.js";
63
+ import"./chunk-wayfjcwt.js";
64
+ import"./chunk-kbm69rtz.js";
65
+ import"./chunk-j5bth84e.js";
66
+ import"./chunk-nxgsnh2y.js";
67
+ import {
68
+ init_useKeybinding
69
+ } from "./chunk-68ffk5qa.js";
70
+ import"./chunk-ps49ymvj.js";
71
+ import"./chunk-bmbq6nt1.js";
72
+ import"./chunk-15sfg4bs.js";
73
+ import"./chunk-p7vkh4wx.js";
74
+ import"./chunk-b0qptb1k.js";
75
+ import"./chunk-m87bhhqv.js";
76
+ import"./chunk-j3zhb8vv.js";
77
+ import"./chunk-b2fd462a.js";
78
+ import"./chunk-c11swzas.js";
79
+ import"./chunk-chsyvavm.js";
80
+ import"./chunk-5rv9c8yd.js";
81
+ import {
82
+ capitalize,
83
+ init_stringUtils,
84
+ plural
85
+ } from "./chunk-tp2jxmcx.js";
86
+ import"./chunk-z19sd3bt.js";
87
+ import"./chunk-1ax1znzj.js";
88
+ import"./chunk-wha6v7za.js";
89
+ import"./chunk-6nsd9606.js";
90
+ import"./chunk-xp61y5ba.js";
91
+ import"./chunk-64c1avct.js";
92
+ import"./chunk-8g5pe1gr.js";
93
+ import"./chunk-4cp6193g.js";
94
+ import"./chunk-8g747a8x.js";
95
+ import"./chunk-d7886r6a.js";
96
+ import"./chunk-yvtzznds.js";
97
+ import"./chunk-4jm600zv.js";
98
+ import"./chunk-qz2x630m.js";
99
+ import"./chunk-2f21meep.js";
100
+ import"./chunk-nrtksr2p.js";
101
+ import"./chunk-3c25bcsw.js";
102
+ import"./chunk-s3hsqf80.js";
103
+ import"./chunk-yyf72f78.js";
104
+ import"./chunk-cdz5yb0r.js";
105
+ import {
106
+ Byline,
107
+ Dialog,
108
+ KeyboardShortcutHint,
109
+ Link,
110
+ ThemedBox_default,
111
+ ThemedText,
112
+ color,
113
+ init_src,
114
+ useKeybinding,
115
+ useKeybindings,
116
+ useTheme
117
+ } from "./chunk-c7jwbe76.js";
118
+ import"./chunk-0vkfrmqm.js";
119
+ import {
120
+ require_jsx_dev_runtime,
121
+ require_react
122
+ } from "./chunk-7sgtxrsc.js";
123
+ import"./chunk-0xjaqda8.js";
124
+ import"./chunk-x8d2ehd7.js";
125
+ import"./chunk-15m49c67.js";
126
+ import"./chunk-tdbz9gbm.js";
127
+ import"./chunk-0awwmrwr.js";
128
+ import"./chunk-qnfx3qtx.js";
129
+ import"./chunk-70eey1nh.js";
130
+ import"./chunk-1nk93fqz.js";
131
+ import"./chunk-s8kj6ajy.js";
132
+ import"./chunk-eenq3avg.js";
133
+ import"./chunk-7mqab3z7.js";
134
+ import"./chunk-5z28bqne.js";
135
+ import {
136
+ figures_default,
137
+ init_figures
138
+ } from "./chunk-qajrkk97.js";
139
+ import {
140
+ init_debug,
141
+ isDebugMode
142
+ } from "./chunk-phd1qfpc.js";
143
+ import"./chunk-fbv4apne.js";
144
+ import"./chunk-jaaxk89e.js";
145
+ import"./chunk-k8vp0atq.js";
146
+ import"./chunk-vf612n57.js";
147
+ import"./chunk-07069jq1.js";
148
+ import"./chunk-d4mdda98.js";
149
+ import"./chunk-55raexh7.js";
150
+ import"./chunk-v9smspw2.js";
151
+ import"./chunk-v1kzp02e.js";
152
+ import"./chunk-7wm5s02e.js";
153
+ import"./chunk-b0kf00ff.js";
154
+ import"./chunk-netzwgv1.js";
155
+ import {
156
+ __esm,
157
+ __toESM
158
+ } from "./chunk-qp2qdcda.js";
159
+
160
+ // src/components/mcp/MCPAgentServerMenu.tsx
161
+ function MCPAgentServerMenu({
162
+ agentServer,
163
+ onCancel,
164
+ onComplete
165
+ }) {
166
+ const [theme] = useTheme();
167
+ const [isAuthenticating, setIsAuthenticating] = import_react.useState(false);
168
+ const [error, setError] = import_react.useState(null);
169
+ const [authorizationUrl, setAuthorizationUrl] = import_react.useState(null);
170
+ const authAbortControllerRef = import_react.useRef(null);
171
+ import_react.useEffect(() => () => authAbortControllerRef.current?.abort(), []);
172
+ const handleEscCancel = import_react.useCallback(() => {
173
+ if (isAuthenticating) {
174
+ authAbortControllerRef.current?.abort();
175
+ authAbortControllerRef.current = null;
176
+ setIsAuthenticating(false);
177
+ setAuthorizationUrl(null);
178
+ }
179
+ }, [isAuthenticating]);
180
+ useKeybinding("confirm:no", handleEscCancel, {
181
+ context: "Confirmation",
182
+ isActive: isAuthenticating
183
+ });
184
+ const handleAuthenticate = import_react.useCallback(async () => {
185
+ if (!agentServer.needsAuth || !agentServer.url) {
186
+ return;
187
+ }
188
+ setIsAuthenticating(true);
189
+ setError(null);
190
+ const controller = new AbortController;
191
+ authAbortControllerRef.current = controller;
192
+ try {
193
+ const tempConfig = {
194
+ type: agentServer.transport,
195
+ url: agentServer.url
196
+ };
197
+ await performMCPOAuthFlow(agentServer.name, tempConfig, setAuthorizationUrl, controller.signal);
198
+ onComplete?.(`Authentication successful for ${agentServer.name}. The server will connect when the agent runs.`);
199
+ } catch (err) {
200
+ if (err instanceof Error && !(err instanceof AuthenticationCancelledError)) {
201
+ setError(err.message);
202
+ }
203
+ } finally {
204
+ setIsAuthenticating(false);
205
+ authAbortControllerRef.current = null;
206
+ }
207
+ }, [agentServer, onComplete]);
208
+ const capitalizedServerName = capitalize(String(agentServer.name));
209
+ if (isAuthenticating) {
210
+ return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
211
+ flexDirection: "column",
212
+ gap: 1,
213
+ padding: 1,
214
+ children: [
215
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
216
+ color: "claude",
217
+ children: [
218
+ "Authenticating with ",
219
+ agentServer.name,
220
+ "\u2026"
221
+ ]
222
+ }, undefined, true, undefined, this),
223
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
224
+ children: [
225
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Spinner, {}, undefined, false, undefined, this),
226
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
227
+ children: " A browser window will open for authentication"
228
+ }, undefined, false, undefined, this)
229
+ ]
230
+ }, undefined, true, undefined, this),
231
+ authorizationUrl && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
232
+ flexDirection: "column",
233
+ children: [
234
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
235
+ dimColor: true,
236
+ children: "If your browser doesn't open automatically, copy this URL manually:"
237
+ }, undefined, false, undefined, this),
238
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Link, {
239
+ url: authorizationUrl
240
+ }, undefined, false, undefined, this)
241
+ ]
242
+ }, undefined, true, undefined, this),
243
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
244
+ marginLeft: 3,
245
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
246
+ dimColor: true,
247
+ children: [
248
+ "Return here after authenticating in your browser.",
249
+ " ",
250
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ConfigurableShortcutHint, {
251
+ action: "confirm:no",
252
+ context: "Confirmation",
253
+ fallback: "Esc",
254
+ description: "go back"
255
+ }, undefined, false, undefined, this)
256
+ ]
257
+ }, undefined, true, undefined, this)
258
+ }, undefined, false, undefined, this)
259
+ ]
260
+ }, undefined, true, undefined, this);
261
+ }
262
+ const menuOptions = [];
263
+ if (agentServer.needsAuth) {
264
+ menuOptions.push({
265
+ label: agentServer.isAuthenticated ? "Re-authenticate" : "Authenticate",
266
+ value: "auth"
267
+ });
268
+ }
269
+ menuOptions.push({
270
+ label: "Back",
271
+ value: "back"
272
+ });
273
+ return /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Dialog, {
274
+ title: `${capitalizedServerName} MCP Server`,
275
+ subtitle: "agent-only",
276
+ onCancel,
277
+ inputGuide: (exitState) => exitState.pending ? /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
278
+ children: [
279
+ "Press ",
280
+ exitState.keyName,
281
+ " again to exit"
282
+ ]
283
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Byline, {
284
+ children: [
285
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(KeyboardShortcutHint, {
286
+ shortcut: "\u2191\u2193",
287
+ action: "navigate"
288
+ }, undefined, false, undefined, this),
289
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(KeyboardShortcutHint, {
290
+ shortcut: "Enter",
291
+ action: "confirm"
292
+ }, undefined, false, undefined, this),
293
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ConfigurableShortcutHint, {
294
+ action: "confirm:no",
295
+ context: "Confirmation",
296
+ fallback: "Esc",
297
+ description: "go back"
298
+ }, undefined, false, undefined, this)
299
+ ]
300
+ }, undefined, true, undefined, this),
301
+ children: [
302
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
303
+ flexDirection: "column",
304
+ gap: 0,
305
+ children: [
306
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
307
+ children: [
308
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
309
+ bold: true,
310
+ children: "Type: "
311
+ }, undefined, false, undefined, this),
312
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
313
+ dimColor: true,
314
+ children: agentServer.transport
315
+ }, undefined, false, undefined, this)
316
+ ]
317
+ }, undefined, true, undefined, this),
318
+ agentServer.url && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
319
+ children: [
320
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
321
+ bold: true,
322
+ children: "URL: "
323
+ }, undefined, false, undefined, this),
324
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
325
+ dimColor: true,
326
+ children: agentServer.url
327
+ }, undefined, false, undefined, this)
328
+ ]
329
+ }, undefined, true, undefined, this),
330
+ agentServer.command && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
331
+ children: [
332
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
333
+ bold: true,
334
+ children: "Command: "
335
+ }, undefined, false, undefined, this),
336
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
337
+ dimColor: true,
338
+ children: agentServer.command
339
+ }, undefined, false, undefined, this)
340
+ ]
341
+ }, undefined, true, undefined, this),
342
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
343
+ children: [
344
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
345
+ bold: true,
346
+ children: "Used by: "
347
+ }, undefined, false, undefined, this),
348
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
349
+ dimColor: true,
350
+ children: agentServer.sourceAgents.join(", ")
351
+ }, undefined, false, undefined, this)
352
+ ]
353
+ }, undefined, true, undefined, this),
354
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
355
+ marginTop: 1,
356
+ children: [
357
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
358
+ bold: true,
359
+ children: "Status: "
360
+ }, undefined, false, undefined, this),
361
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
362
+ children: [
363
+ color("inactive", theme)(figures_default.radioOff),
364
+ " not connected (agent-only)"
365
+ ]
366
+ }, undefined, true, undefined, this)
367
+ ]
368
+ }, undefined, true, undefined, this),
369
+ agentServer.needsAuth && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
370
+ children: [
371
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
372
+ bold: true,
373
+ children: "Auth: "
374
+ }, undefined, false, undefined, this),
375
+ agentServer.isAuthenticated ? /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
376
+ children: [
377
+ color("success", theme)(figures_default.tick),
378
+ " authenticated"
379
+ ]
380
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
381
+ children: [
382
+ color("warning", theme)(figures_default.triangleUpOutline),
383
+ " may need authentication"
384
+ ]
385
+ }, undefined, true, undefined, this)
386
+ ]
387
+ }, undefined, true, undefined, this)
388
+ ]
389
+ }, undefined, true, undefined, this),
390
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
391
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
392
+ dimColor: true,
393
+ children: "This server connects only when running the agent."
394
+ }, undefined, false, undefined, this)
395
+ }, undefined, false, undefined, this),
396
+ error && /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
397
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedText, {
398
+ color: "error",
399
+ children: [
400
+ "Error: ",
401
+ error
402
+ ]
403
+ }, undefined, true, undefined, this)
404
+ }, undefined, false, undefined, this),
405
+ /* @__PURE__ */ jsx_dev_runtime.jsxDEV(ThemedBox_default, {
406
+ children: /* @__PURE__ */ jsx_dev_runtime.jsxDEV(Select, {
407
+ options: menuOptions,
408
+ onChange: async (value) => {
409
+ switch (value) {
410
+ case "auth":
411
+ await handleAuthenticate();
412
+ break;
413
+ case "back":
414
+ onCancel();
415
+ break;
416
+ }
417
+ },
418
+ onCancel
419
+ }, undefined, false, undefined, this)
420
+ }, undefined, false, undefined, this)
421
+ ]
422
+ }, undefined, true, undefined, this);
423
+ }
424
+ var import_react, jsx_dev_runtime;
425
+ var init_MCPAgentServerMenu = __esm(() => {
426
+ init_figures();
427
+ init_src();
428
+ init_useKeybinding();
429
+ init_auth();
430
+ init_stringUtils();
431
+ init_ConfigurableShortcutHint();
432
+ init_CustomSelect();
433
+ init_src();
434
+ init_Spinner();
435
+ import_react = __toESM(require_react(), 1);
436
+ jsx_dev_runtime = __toESM(require_jsx_dev_runtime(), 1);
437
+ });
438
+
439
+ // src/components/mcp/MCPListPanel.tsx
440
+ function getScopeHeading(scope) {
441
+ switch (scope) {
442
+ case "project":
443
+ return { label: "Project MCPs", path: describeMcpConfigFilePath(scope) };
444
+ case "user":
445
+ return { label: "User MCPs", path: describeMcpConfigFilePath(scope) };
446
+ case "local":
447
+ return { label: "Local MCPs", path: describeMcpConfigFilePath(scope) };
448
+ case "enterprise":
449
+ return { label: "Enterprise MCPs" };
450
+ case "dynamic":
451
+ return { label: "Built-in MCPs", path: "always available" };
452
+ default:
453
+ return { label: scope };
454
+ }
455
+ }
456
+ function groupServersByScope(serverList) {
457
+ const groups = new Map;
458
+ for (const server of serverList) {
459
+ const scope = server.scope;
460
+ if (!groups.has(scope)) {
461
+ groups.set(scope, []);
462
+ }
463
+ groups.get(scope).push(server);
464
+ }
465
+ for (const [, groupServers] of groups) {
466
+ groupServers.sort((a, b) => a.name.localeCompare(b.name));
467
+ }
468
+ return groups;
469
+ }
470
+ function MCPListPanel({
471
+ servers,
472
+ agentServers = [],
473
+ onSelectServer,
474
+ onSelectAgentServer,
475
+ onComplete
476
+ }) {
477
+ const [theme] = useTheme();
478
+ const [selectedIndex, setSelectedIndex] = import_react2.useState(0);
479
+ const serversByScope = import_react2.default.useMemo(() => {
480
+ const regularServers = servers.filter((s) => s.client.config.type !== "claudeai-proxy");
481
+ return groupServersByScope(regularServers);
482
+ }, [servers]);
483
+ const claudeAiServers = import_react2.default.useMemo(() => servers.filter((s) => s.client.config.type === "claudeai-proxy").sort((a, b) => a.name.localeCompare(b.name)), [servers]);
484
+ const dynamicServers = import_react2.default.useMemo(() => (serversByScope.get("dynamic") ?? []).sort((a, b) => a.name.localeCompare(b.name)), [serversByScope]);
485
+ const dynamicHeading = getScopeHeading("dynamic");
486
+ const selectableItems = import_react2.default.useMemo(() => {
487
+ const items = [];
488
+ for (const scope of SCOPE_ORDER) {
489
+ const scopeServers = serversByScope.get(scope) ?? [];
490
+ for (const server of scopeServers) {
491
+ items.push({ type: "server", server });
492
+ }
493
+ }
494
+ for (const server of claudeAiServers) {
495
+ items.push({ type: "server", server });
496
+ }
497
+ for (const agentServer of agentServers) {
498
+ items.push({ type: "agent-server", agentServer });
499
+ }
500
+ for (const server of dynamicServers) {
501
+ items.push({ type: "server", server });
502
+ }
503
+ return items;
504
+ }, [serversByScope, claudeAiServers, agentServers, dynamicServers]);
505
+ const handleCancel = import_react2.useCallback(() => {
506
+ onComplete("MCP dialog dismissed", {
507
+ display: "system"
508
+ });
509
+ }, [onComplete]);
510
+ const handleSelect = import_react2.useCallback(() => {
511
+ const item = selectableItems[selectedIndex];
512
+ if (!item)
513
+ return;
514
+ if (item.type === "server") {
515
+ onSelectServer(item.server);
516
+ } else if (item.type === "agent-server" && onSelectAgentServer) {
517
+ onSelectAgentServer(item.agentServer);
518
+ }
519
+ }, [selectableItems, selectedIndex, onSelectServer, onSelectAgentServer]);
520
+ useKeybindings({
521
+ "confirm:previous": () => setSelectedIndex((prev) => prev === 0 ? selectableItems.length - 1 : prev - 1),
522
+ "confirm:next": () => setSelectedIndex((prev) => prev === selectableItems.length - 1 ? 0 : prev + 1),
523
+ "confirm:yes": handleSelect,
524
+ "confirm:no": handleCancel
525
+ }, { context: "Confirmation" });
526
+ const getServerIndex = (server) => {
527
+ return selectableItems.findIndex((item) => item.type === "server" && item.server === server);
528
+ };
529
+ const getAgentServerIndex = (agentServer) => {
530
+ return selectableItems.findIndex((item) => item.type === "agent-server" && item.agentServer === agentServer);
531
+ };
532
+ const debugMode = isDebugMode();
533
+ const hasFailedClients = servers.some((s) => s.client.type === "failed");
534
+ if (servers.length === 0 && agentServers.length === 0) {
535
+ return null;
536
+ }
537
+ const renderServerItem = (server) => {
538
+ const index = getServerIndex(server);
539
+ const isSelected = selectedIndex === index;
540
+ let statusIcon = "";
541
+ let statusText = "";
542
+ if (server.client.type === "disabled") {
543
+ statusIcon = color("inactive", theme)(figures_default.radioOff);
544
+ statusText = "disabled";
545
+ } else if (server.client.type === "connected") {
546
+ statusIcon = color("success", theme)(figures_default.tick);
547
+ statusText = "connected";
548
+ } else if (server.client.type === "pending") {
549
+ statusIcon = color("inactive", theme)(figures_default.radioOff);
550
+ const { reconnectAttempt, maxReconnectAttempts } = server.client;
551
+ if (reconnectAttempt && maxReconnectAttempts) {
552
+ statusText = `reconnecting (${reconnectAttempt}/${maxReconnectAttempts})\u2026`;
553
+ } else {
554
+ statusText = "connecting\u2026";
555
+ }
556
+ } else if (server.client.type === "needs-auth") {
557
+ statusIcon = color("warning", theme)(figures_default.triangleUpOutline);
558
+ statusText = "needs authentication";
559
+ } else {
560
+ statusIcon = color("error", theme)(figures_default.cross);
561
+ statusText = "failed";
562
+ }
563
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
564
+ children: [
565
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
566
+ color: isSelected ? "suggestion" : undefined,
567
+ children: isSelected ? `${figures_default.pointer} ` : " "
568
+ }, undefined, false, undefined, this),
569
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
570
+ color: isSelected ? "suggestion" : undefined,
571
+ children: server.name
572
+ }, undefined, false, undefined, this),
573
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
574
+ dimColor: !isSelected,
575
+ children: [
576
+ " \xB7 ",
577
+ statusIcon,
578
+ " "
579
+ ]
580
+ }, undefined, true, undefined, this),
581
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
582
+ dimColor: !isSelected,
583
+ children: statusText
584
+ }, undefined, false, undefined, this)
585
+ ]
586
+ }, `${server.name}-${index}`, true, undefined, this);
587
+ };
588
+ const renderAgentServerItem = (agentServer) => {
589
+ const index = getAgentServerIndex(agentServer);
590
+ const isSelected = selectedIndex === index;
591
+ const statusIcon = agentServer.needsAuth ? color("warning", theme)(figures_default.triangleUpOutline) : color("inactive", theme)(figures_default.radioOff);
592
+ const statusText = agentServer.needsAuth ? "may need auth" : "agent-only";
593
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
594
+ children: [
595
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
596
+ color: isSelected ? "suggestion" : undefined,
597
+ children: isSelected ? `${figures_default.pointer} ` : " "
598
+ }, undefined, false, undefined, this),
599
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
600
+ color: isSelected ? "suggestion" : undefined,
601
+ children: agentServer.name
602
+ }, undefined, false, undefined, this),
603
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
604
+ dimColor: !isSelected,
605
+ children: [
606
+ " \xB7 ",
607
+ statusIcon,
608
+ " "
609
+ ]
610
+ }, undefined, true, undefined, this),
611
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
612
+ dimColor: !isSelected,
613
+ children: statusText
614
+ }, undefined, false, undefined, this)
615
+ ]
616
+ }, `agent-${agentServer.name}-${index}`, true, undefined, this);
617
+ };
618
+ const totalServers = servers.length + agentServers.length;
619
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
620
+ flexDirection: "column",
621
+ children: [
622
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(McpParsingWarnings, {}, undefined, false, undefined, this),
623
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Dialog, {
624
+ title: "Manage MCP servers",
625
+ subtitle: `${totalServers} ${plural(totalServers, "server")}`,
626
+ onCancel: handleCancel,
627
+ hideInputGuide: true,
628
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
629
+ flexDirection: "column",
630
+ children: [
631
+ SCOPE_ORDER.map((scope) => {
632
+ const scopeServers = serversByScope.get(scope);
633
+ if (!scopeServers || scopeServers.length === 0)
634
+ return null;
635
+ const heading = getScopeHeading(scope);
636
+ return /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
637
+ flexDirection: "column",
638
+ marginBottom: 1,
639
+ children: [
640
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
641
+ paddingLeft: 2,
642
+ children: [
643
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
644
+ bold: true,
645
+ children: heading.label
646
+ }, undefined, false, undefined, this),
647
+ heading.path && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
648
+ dimColor: true,
649
+ children: [
650
+ " (",
651
+ heading.path,
652
+ ")"
653
+ ]
654
+ }, undefined, true, undefined, this)
655
+ ]
656
+ }, undefined, true, undefined, this),
657
+ scopeServers.map((server) => renderServerItem(server))
658
+ ]
659
+ }, scope, true, undefined, this);
660
+ }),
661
+ claudeAiServers.length > 0 && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
662
+ flexDirection: "column",
663
+ marginBottom: 1,
664
+ children: [
665
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
666
+ paddingLeft: 2,
667
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
668
+ bold: true,
669
+ children: "claude.ai"
670
+ }, undefined, false, undefined, this)
671
+ }, undefined, false, undefined, this),
672
+ claudeAiServers.map((server) => renderServerItem(server))
673
+ ]
674
+ }, undefined, true, undefined, this),
675
+ agentServers.length > 0 && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
676
+ flexDirection: "column",
677
+ marginBottom: 1,
678
+ children: [
679
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
680
+ paddingLeft: 2,
681
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
682
+ bold: true,
683
+ children: "Agent MCPs"
684
+ }, undefined, false, undefined, this)
685
+ }, undefined, false, undefined, this),
686
+ [...new Set(agentServers.flatMap((s) => s.sourceAgents))].map((agentName) => /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
687
+ flexDirection: "column",
688
+ marginTop: 1,
689
+ children: [
690
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
691
+ paddingLeft: 2,
692
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
693
+ dimColor: true,
694
+ children: [
695
+ "@",
696
+ agentName
697
+ ]
698
+ }, undefined, true, undefined, this)
699
+ }, undefined, false, undefined, this),
700
+ agentServers.filter((s) => s.sourceAgents.includes(agentName)).map((agentServer) => renderAgentServerItem(agentServer))
701
+ ]
702
+ }, agentName, true, undefined, this))
703
+ ]
704
+ }, undefined, true, undefined, this),
705
+ dynamicServers.length > 0 && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
706
+ flexDirection: "column",
707
+ marginBottom: 1,
708
+ children: [
709
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
710
+ paddingLeft: 2,
711
+ children: [
712
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
713
+ bold: true,
714
+ children: dynamicHeading.label
715
+ }, undefined, false, undefined, this),
716
+ dynamicHeading.path && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
717
+ dimColor: true,
718
+ children: [
719
+ " (",
720
+ dynamicHeading.path,
721
+ ")"
722
+ ]
723
+ }, undefined, true, undefined, this)
724
+ ]
725
+ }, undefined, true, undefined, this),
726
+ dynamicServers.map((server) => renderServerItem(server))
727
+ ]
728
+ }, undefined, true, undefined, this),
729
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
730
+ flexDirection: "column",
731
+ children: [
732
+ hasFailedClients && /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
733
+ dimColor: true,
734
+ children: debugMode ? "\u203B Error logs shown inline with --debug" : "\u203B Run claude --debug to see error logs"
735
+ }, undefined, false, undefined, this),
736
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
737
+ dimColor: true,
738
+ children: [
739
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Link, {
740
+ url: "https://code.claude.com/docs/en/mcp",
741
+ children: "https://code.claude.com/docs/en/mcp"
742
+ }, undefined, false, undefined, this),
743
+ " ",
744
+ "for help"
745
+ ]
746
+ }, undefined, true, undefined, this)
747
+ ]
748
+ }, undefined, true, undefined, this)
749
+ ]
750
+ }, undefined, true, undefined, this)
751
+ }, undefined, false, undefined, this),
752
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedBox_default, {
753
+ paddingX: 1,
754
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ThemedText, {
755
+ dimColor: true,
756
+ italic: true,
757
+ children: /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(Byline, {
758
+ children: [
759
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(KeyboardShortcutHint, {
760
+ shortcut: "\u2191\u2193",
761
+ action: "navigate"
762
+ }, undefined, false, undefined, this),
763
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(KeyboardShortcutHint, {
764
+ shortcut: "Enter",
765
+ action: "confirm"
766
+ }, undefined, false, undefined, this),
767
+ /* @__PURE__ */ jsx_dev_runtime2.jsxDEV(ConfigurableShortcutHint, {
768
+ action: "confirm:no",
769
+ context: "Confirmation",
770
+ fallback: "Esc",
771
+ description: "cancel"
772
+ }, undefined, false, undefined, this)
773
+ ]
774
+ }, undefined, true, undefined, this)
775
+ }, undefined, false, undefined, this)
776
+ }, undefined, false, undefined, this)
777
+ ]
778
+ }, undefined, true, undefined, this);
779
+ }
780
+ var import_react2, jsx_dev_runtime2, SCOPE_ORDER;
781
+ var init_MCPListPanel = __esm(() => {
782
+ init_figures();
783
+ init_src();
784
+ init_useKeybinding();
785
+ init_utils();
786
+ init_debug();
787
+ init_stringUtils();
788
+ init_ConfigurableShortcutHint();
789
+ init_src();
790
+ init_McpParsingWarnings();
791
+ import_react2 = __toESM(require_react(), 1);
792
+ jsx_dev_runtime2 = __toESM(require_jsx_dev_runtime(), 1);
793
+ SCOPE_ORDER = ["project", "local", "user", "enterprise"];
794
+ });
795
+
796
+ // src/components/mcp/MCPReconnect.tsx
797
+ function MCPReconnect({
798
+ serverName,
799
+ onComplete
800
+ }) {
801
+ const [theme] = useTheme();
802
+ const store = useAppStateStore();
803
+ const reconnectMcpServer = useMcpReconnect();
804
+ const [isReconnecting, setIsReconnecting] = import_react3.useState(true);
805
+ const [error, setError] = import_react3.useState(null);
806
+ import_react3.useEffect(() => {
807
+ async function attemptReconnect() {
808
+ try {
809
+ const server = store.getState().mcp.clients.find((c) => c.name === serverName);
810
+ if (!server) {
811
+ setError(`MCP server "${serverName}" not found`);
812
+ setIsReconnecting(false);
813
+ onComplete(`MCP server "${serverName}" not found`);
814
+ return;
815
+ }
816
+ const result = await reconnectMcpServer(serverName);
817
+ switch (result.client.type) {
818
+ case "connected":
819
+ setIsReconnecting(false);
820
+ onComplete(`Successfully reconnected to ${serverName}`);
821
+ break;
822
+ case "needs-auth":
823
+ setError(`${serverName} requires authentication`);
824
+ setIsReconnecting(false);
825
+ onComplete(`${serverName} requires authentication. Use /mcp to authenticate.`);
826
+ break;
827
+ case "pending":
828
+ case "failed":
829
+ case "disabled":
830
+ setError(`Failed to reconnect to ${serverName}`);
831
+ setIsReconnecting(false);
832
+ onComplete(`Failed to reconnect to ${serverName}`);
833
+ break;
834
+ }
835
+ } catch (err) {
836
+ const errorMessage = err instanceof Error ? err.message : String(err);
837
+ setError(errorMessage);
838
+ setIsReconnecting(false);
839
+ onComplete(`Error: ${errorMessage}`);
840
+ }
841
+ }
842
+ attemptReconnect();
843
+ }, [serverName, reconnectMcpServer, store, onComplete]);
844
+ if (isReconnecting) {
845
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
846
+ flexDirection: "column",
847
+ gap: 1,
848
+ padding: 1,
849
+ children: [
850
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
851
+ color: "text",
852
+ children: [
853
+ "Reconnecting to ",
854
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
855
+ bold: true,
856
+ children: serverName
857
+ }, undefined, false, undefined, this)
858
+ ]
859
+ }, undefined, true, undefined, this),
860
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
861
+ children: [
862
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Spinner, {}, undefined, false, undefined, this),
863
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
864
+ children: " Establishing connection to MCP server"
865
+ }, undefined, false, undefined, this)
866
+ ]
867
+ }, undefined, true, undefined, this)
868
+ ]
869
+ }, undefined, true, undefined, this);
870
+ }
871
+ if (error) {
872
+ return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
873
+ flexDirection: "column",
874
+ gap: 1,
875
+ padding: 1,
876
+ children: [
877
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedBox_default, {
878
+ children: [
879
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
880
+ children: [
881
+ color("error", theme)(figures_default.cross),
882
+ " "
883
+ ]
884
+ }, undefined, true, undefined, this),
885
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
886
+ color: "error",
887
+ children: [
888
+ "Failed to reconnect to ",
889
+ serverName
890
+ ]
891
+ }, undefined, true, undefined, this)
892
+ ]
893
+ }, undefined, true, undefined, this),
894
+ /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(ThemedText, {
895
+ dimColor: true,
896
+ children: [
897
+ "Error: ",
898
+ error
899
+ ]
900
+ }, undefined, true, undefined, this)
901
+ ]
902
+ }, undefined, true, undefined, this);
903
+ }
904
+ return null;
905
+ }
906
+ var import_react3, jsx_dev_runtime3;
907
+ var init_MCPReconnect = __esm(() => {
908
+ init_figures();
909
+ init_src();
910
+ init_MCPConnectionManager();
911
+ init_AppState();
912
+ init_Spinner();
913
+ import_react3 = __toESM(require_react(), 1);
914
+ jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
915
+ });
916
+
917
+ // src/components/mcp/MCPSettings.tsx
918
+ function MCPSettings({ onComplete }) {
919
+ const mcp = useAppState((s) => s.mcp);
920
+ const agentDefinitions = useAppState((s) => s.agentDefinitions);
921
+ const mcpClients = mcp.clients;
922
+ const [viewState, setViewState] = import_react4.default.useState({
923
+ type: "list"
924
+ });
925
+ const [servers, setServers] = import_react4.default.useState([]);
926
+ const agentMcpServers = import_react4.useMemo(() => extractAgentMcpServers(agentDefinitions.allAgents), [agentDefinitions.allAgents]);
927
+ const filteredClients = import_react4.default.useMemo(() => mcpClients.filter((client) => client.name !== "ide").sort((a, b) => a.name.localeCompare(b.name)), [mcpClients]);
928
+ import_react4.default.useEffect(() => {
929
+ let cancelled = false;
930
+ async function prepareServers() {
931
+ const serverInfos = await Promise.all(filteredClients.map(async (client) => {
932
+ const scope = client.config.scope;
933
+ const isSSE = client.config.type === "sse";
934
+ const isHTTP = client.config.type === "http";
935
+ const isClaudeAIProxy = client.config.type === "claudeai-proxy";
936
+ let isAuthenticated = undefined;
937
+ if (isSSE || isHTTP) {
938
+ const authProvider = new ClaudeAuthProvider(client.name, client.config);
939
+ const tokens = await authProvider.tokens();
940
+ const hasSessionAuth = getSessionIngressAuthToken() !== null && client.type === "connected";
941
+ const hasToolsAndConnected = client.type === "connected" && filterToolsByServer(mcp.tools, client.name).length > 0;
942
+ isAuthenticated = Boolean(tokens) || hasSessionAuth || hasToolsAndConnected;
943
+ }
944
+ const baseInfo = {
945
+ name: client.name,
946
+ client,
947
+ scope
948
+ };
949
+ if (isClaudeAIProxy) {
950
+ return {
951
+ ...baseInfo,
952
+ transport: "claudeai-proxy",
953
+ isAuthenticated: false,
954
+ config: client.config
955
+ };
956
+ } else if (isSSE) {
957
+ return {
958
+ ...baseInfo,
959
+ transport: "sse",
960
+ isAuthenticated,
961
+ config: client.config
962
+ };
963
+ } else if (isHTTP) {
964
+ return {
965
+ ...baseInfo,
966
+ transport: "http",
967
+ isAuthenticated,
968
+ config: client.config
969
+ };
970
+ } else {
971
+ return {
972
+ ...baseInfo,
973
+ transport: "stdio",
974
+ config: client.config
975
+ };
976
+ }
977
+ }));
978
+ if (cancelled)
979
+ return;
980
+ setServers(serverInfos);
981
+ }
982
+ prepareServers();
983
+ return () => {
984
+ cancelled = true;
985
+ };
986
+ }, [filteredClients, mcp.tools]);
987
+ import_react4.useEffect(() => {
988
+ if (servers.length === 0 && filteredClients.length > 0) {
989
+ return;
990
+ }
991
+ if (servers.length === 0 && agentMcpServers.length === 0) {
992
+ onComplete("No MCP servers configured. Please run /doctor if this is unexpected. Otherwise, run `claude mcp --help` or visit https://code.claude.com/docs/en/mcp to learn more.");
993
+ }
994
+ }, [
995
+ servers.length,
996
+ filteredClients.length,
997
+ agentMcpServers.length,
998
+ onComplete
999
+ ]);
1000
+ switch (viewState.type) {
1001
+ case "list":
1002
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPListPanel, {
1003
+ servers,
1004
+ agentServers: agentMcpServers,
1005
+ onSelectServer: (server) => setViewState({ type: "server-menu", server }),
1006
+ onSelectAgentServer: (agentServer) => setViewState({ type: "agent-server-menu", agentServer }),
1007
+ onComplete,
1008
+ defaultTab: viewState.defaultTab
1009
+ }, undefined, false, undefined, this);
1010
+ case "server-menu": {
1011
+ const serverTools = filterToolsByServer(mcp.tools, viewState.server.name);
1012
+ const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "Claude Code";
1013
+ if (viewState.server.transport === "stdio") {
1014
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPStdioServerMenu, {
1015
+ server: viewState.server,
1016
+ serverToolsCount: serverTools.length,
1017
+ onViewTools: () => setViewState({ type: "server-tools", server: viewState.server }),
1018
+ onCancel: () => setViewState({ type: "list", defaultTab }),
1019
+ onComplete
1020
+ }, undefined, false, undefined, this);
1021
+ } else {
1022
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPRemoteServerMenu, {
1023
+ server: viewState.server,
1024
+ serverToolsCount: serverTools.length,
1025
+ onViewTools: () => setViewState({ type: "server-tools", server: viewState.server }),
1026
+ onCancel: () => setViewState({ type: "list", defaultTab }),
1027
+ onComplete
1028
+ }, undefined, false, undefined, this);
1029
+ }
1030
+ }
1031
+ case "server-tools":
1032
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPToolListView, {
1033
+ server: viewState.server,
1034
+ onSelectTool: (_, index) => setViewState({
1035
+ type: "server-tool-detail",
1036
+ server: viewState.server,
1037
+ toolIndex: index
1038
+ }),
1039
+ onBack: () => setViewState({ type: "server-menu", server: viewState.server })
1040
+ }, undefined, false, undefined, this);
1041
+ case "server-tool-detail": {
1042
+ const serverTools = filterToolsByServer(mcp.tools, viewState.server.name);
1043
+ const tool = serverTools[viewState.toolIndex];
1044
+ if (!tool) {
1045
+ setViewState({ type: "server-tools", server: viewState.server });
1046
+ return null;
1047
+ }
1048
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPToolDetailView, {
1049
+ tool,
1050
+ server: viewState.server,
1051
+ onBack: () => setViewState({ type: "server-tools", server: viewState.server })
1052
+ }, undefined, false, undefined, this);
1053
+ }
1054
+ case "agent-server-menu":
1055
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(MCPAgentServerMenu, {
1056
+ agentServer: viewState.agentServer,
1057
+ onCancel: () => setViewState({ type: "list", defaultTab: "Agents" }),
1058
+ onComplete
1059
+ }, undefined, false, undefined, this);
1060
+ }
1061
+ }
1062
+ var import_react4, jsx_dev_runtime4;
1063
+ var init_MCPSettings = __esm(() => {
1064
+ init_auth();
1065
+ init_utils();
1066
+ init_AppState();
1067
+ init_sessionIngressAuth();
1068
+ init_MCPAgentServerMenu();
1069
+ init_MCPListPanel();
1070
+ init_MCPRemoteServerMenu();
1071
+ init_MCPStdioServerMenu();
1072
+ init_MCPToolDetailView();
1073
+ init_MCPToolListView();
1074
+ import_react4 = __toESM(require_react(), 1);
1075
+ jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
1076
+ });
1077
+
1078
+ // src/components/mcp/index.ts
1079
+ var init_mcp = __esm(() => {
1080
+ init_MCPAgentServerMenu();
1081
+ init_MCPListPanel();
1082
+ init_MCPReconnect();
1083
+ init_MCPRemoteServerMenu();
1084
+ init_MCPSettings();
1085
+ init_MCPStdioServerMenu();
1086
+ init_MCPToolDetailView();
1087
+ init_MCPToolListView();
1088
+ });
1089
+
1090
+ // src/commands/mcp/mcp.tsx
1091
+ function MCPToggle({
1092
+ action,
1093
+ target,
1094
+ onComplete
1095
+ }) {
1096
+ const mcpClients = useAppState((s) => s.mcp.clients);
1097
+ const toggleMcpServer = useMcpToggleEnabled();
1098
+ const didRun = import_react5.useRef(false);
1099
+ import_react5.useEffect(() => {
1100
+ if (didRun.current)
1101
+ return;
1102
+ didRun.current = true;
1103
+ const isEnabling = action === "enable";
1104
+ const clients = mcpClients.filter((c) => c.name !== "ide");
1105
+ const toToggle = target === "all" ? clients.filter((c) => isEnabling ? c.type === "disabled" : c.type !== "disabled") : clients.filter((c) => c.name === target);
1106
+ if (toToggle.length === 0) {
1107
+ onComplete(target === "all" ? `All MCP servers are already ${isEnabling ? "enabled" : "disabled"}` : `MCP server "${target}" not found`);
1108
+ return;
1109
+ }
1110
+ for (const s of toToggle) {
1111
+ toggleMcpServer(s.name);
1112
+ }
1113
+ onComplete(target === "all" ? `${isEnabling ? "Enabled" : "Disabled"} ${toToggle.length} MCP server(s)` : `MCP server "${target}" ${isEnabling ? "enabled" : "disabled"}`);
1114
+ }, [action, target, mcpClients, toggleMcpServer, onComplete]);
1115
+ return null;
1116
+ }
1117
+ async function call(onDone, _context, args) {
1118
+ if (args) {
1119
+ const parts = args.trim().split(/\s+/);
1120
+ if (parts[0] === "no-redirect") {
1121
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(MCPSettings, {
1122
+ onComplete: onDone
1123
+ }, undefined, false, undefined, this);
1124
+ }
1125
+ if (parts[0] === "reconnect" && parts[1]) {
1126
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(MCPReconnect, {
1127
+ serverName: parts.slice(1).join(" "),
1128
+ onComplete: onDone
1129
+ }, undefined, false, undefined, this);
1130
+ }
1131
+ if (parts[0] === "enable" || parts[0] === "disable") {
1132
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(MCPToggle, {
1133
+ action: parts[0],
1134
+ target: parts.length > 1 ? parts.slice(1).join(" ") : "all",
1135
+ onComplete: onDone
1136
+ }, undefined, false, undefined, this);
1137
+ }
1138
+ }
1139
+ if (process.env.USER_TYPE === "ant") {
1140
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(PluginSettings, {
1141
+ onComplete: onDone,
1142
+ args: "manage",
1143
+ showMcpRedirectMessage: true
1144
+ }, undefined, false, undefined, this);
1145
+ }
1146
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(MCPSettings, {
1147
+ onComplete: onDone
1148
+ }, undefined, false, undefined, this);
1149
+ }
1150
+ var import_react5, jsx_dev_runtime5;
1151
+ var init_mcp2 = __esm(() => {
1152
+ init_mcp();
1153
+ init_MCPReconnect();
1154
+ init_MCPConnectionManager();
1155
+ init_AppState();
1156
+ init_PluginSettings();
1157
+ import_react5 = __toESM(require_react(), 1);
1158
+ jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
1159
+ });
1160
+ init_mcp2();
1161
+
1162
+ export {
1163
+ call
1164
+ };