@shipit-ai/cli 1.173.1-pr18.cc1c3ce → 1.173.1

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 (245) hide show
  1. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts +1 -9
  2. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts +3 -7
  4. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js +5 -6
  6. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts +0 -12
  7. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.js +1 -11
  9. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts +2 -10
  10. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +13 -50
  12. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts +1 -1
  13. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts.map +1 -1
  14. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.js +2 -2
  15. package/dist/src/presentation/web/app/mcp-servers/page.d.ts.map +1 -1
  16. package/dist/src/presentation/web/app/mcp-servers/page.js +1 -3
  17. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts +2 -2
  18. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -1
  19. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +8 -14
  20. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts +1 -1
  21. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.js +1 -1
  22. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts +1 -2
  23. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +3 -2
  25. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js +2 -2
  26. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts +13 -17
  27. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts.map +1 -1
  28. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.js +34 -21
  29. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts +1 -1
  30. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.js +8 -7
  32. package/dist/translations/ar/web.json +1 -6
  33. package/dist/translations/de/web.json +1 -6
  34. package/dist/translations/en/web.json +1 -6
  35. package/dist/translations/es/web.json +1 -6
  36. package/dist/translations/fr/web.json +1 -6
  37. package/dist/translations/he/web.json +1 -6
  38. package/dist/translations/pt/web.json +1 -6
  39. package/dist/translations/ru/web.json +1 -6
  40. package/dist/tsconfig.build.tsbuildinfo +1 -1
  41. package/package.json +1 -1
  42. package/web/.next/BUILD_ID +1 -1
  43. package/web/.next/build-manifest.json +3 -3
  44. package/web/.next/fallback-build-manifest.json +3 -3
  45. package/web/.next/prerender-manifest.json +3 -3
  46. package/web/.next/required-server-files.js +3 -3
  47. package/web/.next/required-server-files.json +3 -3
  48. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  49. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  52. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  55. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  58. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  61. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  64. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  67. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  70. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  73. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  79. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  82. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  85. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  88. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  89. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/_global-error.html +1 -1
  91. package/web/.next/server/app/_global-error.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  93. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  94. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  95. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  96. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  97. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  98. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  99. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  101. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  102. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  103. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  104. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  105. package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +13 -13
  106. package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -1
  107. package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
  109. package/web/.next/server/app/plugins/page.js.nft.json +1 -1
  110. package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
  112. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  113. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  114. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  115. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  116. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  118. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  119. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  121. package/web/.next/server/app/version/page.js.nft.json +1 -1
  122. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  124. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  125. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  127. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  129. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  131. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js +3 -0
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js.map +1 -0
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  155. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/_096x3u~._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_096x3u~._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  159. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  161. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  163. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  165. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/_0ia4o6_._.js +3 -0
  167. package/web/.next/server/chunks/ssr/_0ia4o6_._.js.map +1 -0
  168. package/web/.next/server/chunks/ssr/_0o.xc6x._.js +3 -0
  169. package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  171. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  173. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  175. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  177. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  179. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/{_0b~rt5k._.js → _0xn_dfh._.js} +2 -2
  181. package/web/.next/server/chunks/ssr/{_0b~rt5k._.js.map → _0xn_dfh._.js.map} +1 -1
  182. package/web/.next/server/chunks/ssr/{_0g36k1q._.js → _0z6p8yi._.js} +2 -2
  183. package/web/.next/server/chunks/ssr/{_0g36k1q._.js.map → _0z6p8yi._.js.map} +1 -1
  184. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_0ha3y7r._.js → _12i_bjl._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_0ha3y7r._.js.map → _12i_bjl._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  199. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  201. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  202. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  203. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  204. package/web/.next/server/middleware-build-manifest.js +3 -3
  205. package/web/.next/server/pages/500.html +1 -1
  206. package/web/.next/server/server-reference-manifest.js +1 -1
  207. package/web/.next/server/server-reference-manifest.json +57 -57
  208. package/web/.next/static/chunks/00h433i5-1v_-.css +1 -0
  209. package/web/.next/static/chunks/{0~z22-y-2-50b.js → 0242vp5_56bjp.js} +1 -1
  210. package/web/.next/static/chunks/{08-x1y93o~z1u.js → 07c0dde.-8.3e.js} +1 -1
  211. package/web/.next/static/chunks/{04mde8apvce...js → 084nyl7us-xbo.js} +1 -1
  212. package/web/.next/static/chunks/{0isdv5nl9ixzx.js → 0cgfywkcky60_.js} +1 -1
  213. package/web/.next/static/chunks/0jl9-2_wjbofj.js +1 -0
  214. package/web/.next/static/chunks/{0-479g9ihl1ga.js → 0j~279np0vu13.js} +1 -1
  215. package/web/.next/static/chunks/{02ow0rjxjqsob.js → 0k3fxd~lsx6h_.js} +1 -1
  216. package/web/.next/static/chunks/{0nw5kg.d92o~s.js → 0kv2-9owuv51~.js} +2 -2
  217. package/web/.next/static/chunks/0r9cddoy0xkhk.js +1 -0
  218. package/web/.next/static/chunks/{0gz0lgz7pvrb5.js → 0sgbbtfp4hspl.js} +1 -1
  219. package/web/.next/static/chunks/{17t4j5hdn_bcj.js → 0vscxcwhltksg.js} +2 -2
  220. package/web/.next/static/chunks/{06fk~iz2u90ux.js → 0xjj0-wsaziot.js} +1 -1
  221. package/web/.next/static/chunks/{0irjgz-p.9i6s.js → 11rfk7fre_6t2.js} +1 -1
  222. package/web/.next/static/chunks/123j391jw_zg4.js +1 -0
  223. package/web/.next/static/chunks/{163wx0qvsyhgb.js → 15zjq.s38l64~.js} +1 -1
  224. package/web/.next/static/chunks/{0nkxltjer~us7.js → 16nbcfv~__pas.js} +1 -1
  225. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts +0 -19
  226. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts.map +0 -1
  227. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.js +0 -108
  228. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts +0 -11
  229. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts.map +0 -1
  230. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.js +0 -18
  231. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js +0 -10
  232. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js.map +0 -1
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js +0 -3
  234. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js.map +0 -1
  235. package/web/.next/server/chunks/ssr/_0av5r-b._.js +0 -3
  236. package/web/.next/server/chunks/ssr/_0av5r-b._.js.map +0 -1
  237. package/web/.next/server/chunks/ssr/_0fswe4r._.js +0 -3
  238. package/web/.next/server/chunks/ssr/_0fswe4r._.js.map +0 -1
  239. package/web/.next/static/chunks/05uewqqwl93w2.js +0 -8
  240. package/web/.next/static/chunks/0h2nh2s2b3ma2.css +0 -1
  241. package/web/.next/static/chunks/16mt3g3q98v_k.js +0 -1
  242. package/web/.next/static/chunks/173rm.h7j3_7c.js +0 -1
  243. /package/web/.next/static/{cK5RMkxfAPELBU1fhTnIV → soqWMnDMQRLxRyIj13kVU}/_buildManifest.js +0 -0
  244. /package/web/.next/static/{cK5RMkxfAPELBU1fhTnIV → soqWMnDMQRLxRyIj13kVU}/_clientMiddlewareManifest.js +0 -0
  245. /package/web/.next/static/{cK5RMkxfAPELBU1fhTnIV → soqWMnDMQRLxRyIj13kVU}/_ssgManifest.js +0 -0
@@ -33,14 +33,6 @@ export interface McpToolInfo {
33
33
  }
34
34
  export interface IMcpServerBrowserService {
35
35
  fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
36
- /**
37
- * Fetch tools for a specific MCP server via JSON-RPC.
38
- *
39
- * LiteLLM exposes each MCP server at `{proxyBaseUrl}/{serverName}/mcp` and
40
- * accepts standard MCP JSON-RPC requests. This method POSTs a
41
- * `{"jsonrpc":"2.0","id":1,"method":"tools/list"}` body and parses the
42
- * `result.tools` array from the response.
43
- */
44
- fetchTools(proxyBaseUrl: string, serverName: string, apiKey?: string): Promise<McpToolInfo[]>;
36
+ fetchTools(proxyBaseUrl: string, apiKey?: string): Promise<McpToolInfo[]>;
45
37
  }
46
38
  //# sourceMappingURL=mcp-server-browser.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-browser.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/mcp-server-browser.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9E;;;;;;;OAOG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC/F"}
1
+ {"version":3,"file":"mcp-server-browser.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/mcp-server-browser.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC3E"}
@@ -1,20 +1,16 @@
1
1
  /**
2
2
  * Fetch MCP Server Tools Use Case
3
3
  *
4
- * Retrieves the list of MCP tools for a specific server from the configured
5
- * LiteLLM proxy via JSON-RPC (POST {proxyUrl}/{serverName}/mcp).
4
+ * Retrieves the list of MCP tools from the configured LiteLLM proxy's
5
+ * REST tools/list endpoint.
6
6
  *
7
7
  * Business Rules:
8
8
  * - Reads proxy URL from settings via ISettingsReader
9
9
  * - If proxy not configured, returns empty array
10
- * - Requires a server name to target a specific MCP server
11
10
  * - Delegates to IMcpServerBrowserService for HTTP retrieval
12
11
  */
13
12
  import type { ISettingsReader } from '../../ports/output/services/settings-reader.interface.js';
14
13
  import type { IMcpServerBrowserService, McpToolInfo } from '../../ports/output/services/mcp-server-browser.interface.js';
15
- export interface FetchMcpServerToolsInput {
16
- serverName: string;
17
- }
18
14
  export interface FetchMcpServerToolsResult {
19
15
  tools: McpToolInfo[];
20
16
  }
@@ -22,6 +18,6 @@ export declare class FetchMcpServerToolsUseCase {
22
18
  private readonly settingsReader;
23
19
  private readonly browserService;
24
20
  constructor(settingsReader: ISettingsReader, browserService: IMcpServerBrowserService);
25
- execute(input: FetchMcpServerToolsInput): Promise<FetchMcpServerToolsResult>;
21
+ execute(): Promise<FetchMcpServerToolsResult>;
26
22
  }
27
23
  //# sourceMappingURL=fetch-mcp-server-tools.use-case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-mcp-server-tools.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACZ,MAAM,6DAA6D,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,cAAc,EAAE,eAAe,EAE/B,cAAc,EAAE,wBAAwB;IAGrD,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAanF"}
1
+ {"version":3,"file":"fetch-mcp-server-tools.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACZ,MAAM,6DAA6D,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBACa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,cAAc,EAAE,eAAe,EAE/B,cAAc,EAAE,wBAAwB;IAGrD,OAAO,IAAI,OAAO,CAAC,yBAAyB,CAAC;CAapD"}
@@ -1,13 +1,12 @@
1
1
  /**
2
2
  * Fetch MCP Server Tools Use Case
3
3
  *
4
- * Retrieves the list of MCP tools for a specific server from the configured
5
- * LiteLLM proxy via JSON-RPC (POST {proxyUrl}/{serverName}/mcp).
4
+ * Retrieves the list of MCP tools from the configured LiteLLM proxy's
5
+ * REST tools/list endpoint.
6
6
  *
7
7
  * Business Rules:
8
8
  * - Reads proxy URL from settings via ISettingsReader
9
9
  * - If proxy not configured, returns empty array
10
- * - Requires a server name to target a specific MCP server
11
10
  * - Delegates to IMcpServerBrowserService for HTTP retrieval
12
11
  */
13
12
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -30,14 +29,14 @@ let FetchMcpServerToolsUseCase = class FetchMcpServerToolsUseCase {
30
29
  this.settingsReader = settingsReader;
31
30
  this.browserService = browserService;
32
31
  }
33
- async execute(input) {
32
+ async execute() {
34
33
  const settings = this.settingsReader.getSettings();
35
34
  const proxyUrl = settings?.litellmProxy?.baseUrl;
36
- if (!proxyUrl || !input.serverName) {
35
+ if (!proxyUrl) {
37
36
  return { tools: [] };
38
37
  }
39
38
  const apiKey = settings.litellmProxy?.apiKey;
40
- const tools = await this.browserService.fetchTools(proxyUrl, input.serverName, apiKey);
39
+ const tools = await this.browserService.fetchTools(proxyUrl, apiKey);
41
40
  return { tools };
42
41
  }
43
42
  };
@@ -45,18 +45,6 @@ declare const McpToolInfoSchema: z.ZodObject<{
45
45
  description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
46
46
  inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
47
  }, z.core.$strip>;
48
- export declare const McpJsonRpcToolsListResponseSchema: z.ZodObject<{
49
- jsonrpc: z.ZodOptional<z.ZodString>;
50
- id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
51
- result: z.ZodObject<{
52
- tools: z.ZodArray<z.ZodObject<{
53
- name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
54
- title: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
55
- description: z.ZodPipe<z.ZodDefault<z.ZodString>, z.ZodTransform<string, string>>;
56
- inputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
57
- }, z.core.$strip>>;
58
- }, z.core.$strip>;
59
- }, z.core.$strip>;
60
48
  export declare const McpToolListResponseSchema: z.ZodObject<{
61
49
  tools: z.ZodArray<z.ZodObject<{
62
50
  name: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-browser.schema.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;iBAavB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAA+B,CAAC;AAEhE,QAAA,MAAM,iBAAiB;;;;;iBAWrB,CAAC;AAIH,eAAO,MAAM,iCAAiC;;;;;;;;;;;iBAM5C,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;iBAEpC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;kBAA6B,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"mcp-server-browser.schema.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;iBAavB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAA+B,CAAC;AAEhE,QAAA,MAAM,iBAAiB;;;;;iBAWrB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;iBAEpC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;kBAA6B,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -46,18 +46,8 @@ const McpToolInfoSchema = z.object({
46
46
  .transform((s) => s.slice(0, 2000)),
47
47
  inputSchema: z.record(z.string(), z.unknown()).optional(),
48
48
  });
49
- // MCP JSON-RPC response for tools/list:
50
- // { "jsonrpc": "2.0", "id": 1, "result": { "tools": [...] } }
51
- export const McpJsonRpcToolsListResponseSchema = z.object({
52
- jsonrpc: z.string().optional(),
53
- id: z.union([z.string(), z.number()]).optional(),
54
- result: z.object({
55
- tools: z.array(McpToolInfoSchema),
56
- }),
57
- });
58
- // Some older LiteLLM versions / compat modes may return the wrapped result directly
59
49
  export const McpToolListResponseSchema = z.object({
60
50
  tools: z.array(McpToolInfoSchema),
61
51
  });
62
- // Bare array fallback
52
+ // Fallback: tools/list may return a bare array in some LiteLLM versions
63
53
  export const McpToolListFallbackSchema = z.array(McpToolInfoSchema);
@@ -4,22 +4,14 @@
4
4
  * Implements IMcpServerBrowserService using Node 22+ native fetch for
5
5
  * read-only HTTP retrieval from LiteLLM proxy endpoints:
6
6
  * - GET /public/mcp_hub — list accessible MCP servers
7
- * - POST /{serverName}/mcp — list tools for a specific server via JSON-RPC
7
+ * - GET /mcp-rest/tools/list — list available MCP tools
8
8
  *
9
9
  * Pattern: AbortController timeout, redirect rejection, size limit, Zod validation.
10
10
  * Silent failure to empty arrays on any error.
11
- *
12
- * LiteLLM's MCP tool listing is per-server via JSON-RPC, not a global REST
13
- * endpoint. See https://docs.litellm.ai/docs/mcp for the canonical API shape:
14
- *
15
- * POST {proxyBaseUrl}/{serverName}/mcp
16
- * Content-Type: application/json
17
- * x-litellm-api-key: Bearer {apiKey}
18
- * {"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
19
11
  */
20
12
  import type { IMcpServerBrowserService, McpServerInfo, McpToolInfo } from '../../../application/ports/output/services/mcp-server-browser.interface.js';
21
13
  export declare class McpServerBrowserService implements IMcpServerBrowserService {
22
14
  fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
23
- fetchTools(proxyBaseUrl: string, serverName: string, apiKey?: string): Promise<McpToolInfo[]>;
15
+ fetchTools(proxyBaseUrl: string, apiKey?: string): Promise<McpToolInfo[]>;
24
16
  }
25
17
  //# sourceMappingURL=mcp-server-browser.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-browser.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACb,WAAW,EACZ,MAAM,4EAA4E,CAAC;AAYpF,qBACa,uBAAwB,YAAW,wBAAwB;IAChE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB7E,UAAU,CACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;CAqC1B"}
1
+ {"version":3,"file":"mcp-server-browser.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACb,WAAW,EACZ,MAAM,4EAA4E,CAAC;AAUpF,qBACa,uBAAwB,YAAW,wBAAwB;IAChE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB7E,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAwBhF"}
@@ -4,18 +4,10 @@
4
4
  * Implements IMcpServerBrowserService using Node 22+ native fetch for
5
5
  * read-only HTTP retrieval from LiteLLM proxy endpoints:
6
6
  * - GET /public/mcp_hub — list accessible MCP servers
7
- * - POST /{serverName}/mcp — list tools for a specific server via JSON-RPC
7
+ * - GET /mcp-rest/tools/list — list available MCP tools
8
8
  *
9
9
  * Pattern: AbortController timeout, redirect rejection, size limit, Zod validation.
10
10
  * Silent failure to empty arrays on any error.
11
- *
12
- * LiteLLM's MCP tool listing is per-server via JSON-RPC, not a global REST
13
- * endpoint. See https://docs.litellm.ai/docs/mcp for the canonical API shape:
14
- *
15
- * POST {proxyBaseUrl}/{serverName}/mcp
16
- * Content-Type: application/json
17
- * x-litellm-api-key: Bearer {apiKey}
18
- * {"jsonrpc": "2.0", "id": 1, "method": "tools/list"}
19
11
  */
20
12
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
21
13
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -24,10 +16,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
24
16
  return c > 3 && r && Object.defineProperty(target, key, r), r;
25
17
  };
26
18
  import { injectable } from 'tsyringe';
27
- import { McpServerListSchema, McpJsonRpcToolsListResponseSchema, McpToolListResponseSchema, McpToolListFallbackSchema, } from './mcp-server-browser.schema.js';
19
+ import { McpServerListSchema, McpToolListResponseSchema, McpToolListFallbackSchema, } from './mcp-server-browser.schema.js';
28
20
  const FETCH_TIMEOUT_MS = 10_000;
29
21
  const MAX_RESPONSE_SIZE = 5_000_000;
30
- const SAFE_SERVER_NAME_REGEX = /^[a-zA-Z0-9_-]{1,100}$/;
31
22
  let McpServerBrowserService = class McpServerBrowserService {
32
23
  async fetchServers(proxyBaseUrl, apiKey) {
33
24
  try {
@@ -35,8 +26,8 @@ let McpServerBrowserService = class McpServerBrowserService {
35
26
  if (!url)
36
27
  return [];
37
28
  const endpoint = `${url}/public/mcp_hub`;
38
- const headers = buildGetHeaders(apiKey);
39
- const json = await fetchJson(endpoint, { method: 'GET', headers });
29
+ const headers = buildHeaders(apiKey);
30
+ const json = await fetchJson(endpoint, headers);
40
31
  if (json === null)
41
32
  return [];
42
33
  const parsed = McpServerListSchema.safeParse(json);
@@ -48,34 +39,21 @@ let McpServerBrowserService = class McpServerBrowserService {
48
39
  return [];
49
40
  }
50
41
  }
51
- async fetchTools(proxyBaseUrl, serverName, apiKey) {
42
+ async fetchTools(proxyBaseUrl, apiKey) {
52
43
  try {
53
44
  const url = parseAndValidateUrl(proxyBaseUrl);
54
45
  if (!url)
55
46
  return [];
56
- // Validate server name against an allowlist regex before URL interpolation
57
- // to prevent path traversal / injection into the request URL.
58
- if (!SAFE_SERVER_NAME_REGEX.test(serverName))
59
- return [];
60
- const endpoint = `${url}/${serverName}/mcp`;
61
- const headers = buildPostHeaders(apiKey);
62
- const body = JSON.stringify({
63
- jsonrpc: '2.0',
64
- id: 1,
65
- method: 'tools/list',
66
- });
67
- const json = await fetchJson(endpoint, { method: 'POST', headers, body });
47
+ const endpoint = `${url}/mcp-rest/tools/list`;
48
+ const headers = buildHeaders(apiKey);
49
+ const json = await fetchJson(endpoint, headers);
68
50
  if (json === null)
69
51
  return [];
70
- // Primary format: JSON-RPC 2.0 response { jsonrpc, id, result: { tools: [...] } }
71
- const rpcParsed = McpJsonRpcToolsListResponseSchema.safeParse(json);
72
- if (rpcParsed.success)
73
- return rpcParsed.data.result.tools;
74
- // Fallback: some versions may return { tools: [...] } directly
52
+ // Try wrapped format first: { tools: [...] }
75
53
  const wrapped = McpToolListResponseSchema.safeParse(json);
76
54
  if (wrapped.success)
77
55
  return wrapped.data.tools;
78
- // Fallback: bare array
56
+ // Fallback: bare array [...]
79
57
  const bare = McpToolListFallbackSchema.safeParse(json);
80
58
  if (bare.success)
81
59
  return bare.data;
@@ -101,36 +79,21 @@ function parseAndValidateUrl(proxyBaseUrl) {
101
79
  return null;
102
80
  }
103
81
  }
104
- function buildGetHeaders(apiKey) {
82
+ function buildHeaders(apiKey) {
105
83
  const headers = {};
106
84
  if (apiKey) {
107
85
  headers['Authorization'] = `Bearer ${apiKey}`;
108
86
  }
109
87
  return headers;
110
88
  }
111
- function buildPostHeaders(apiKey) {
112
- // LiteLLM's MCP JSON-RPC endpoint expects `x-litellm-api-key: Bearer <key>`,
113
- // not a standard `Authorization` header. See docs.litellm.ai/docs/mcp
114
- // "Forwarding Custom Headers to MCP Servers" section.
115
- const headers = {
116
- 'Content-Type': 'application/json',
117
- Accept: 'application/json, text/event-stream',
118
- };
119
- if (apiKey) {
120
- headers['x-litellm-api-key'] = `Bearer ${apiKey}`;
121
- }
122
- return headers;
123
- }
124
- async function fetchJson(endpoint, options) {
89
+ async function fetchJson(endpoint, headers) {
125
90
  const controller = new AbortController();
126
91
  const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
127
92
  try {
128
93
  const res = await fetch(endpoint, {
129
- method: options.method,
130
94
  signal: controller.signal,
131
95
  redirect: 'error',
132
- headers: options.headers,
133
- body: options.body,
96
+ headers,
134
97
  });
135
98
  if (!res.ok)
136
99
  return null;
@@ -1,5 +1,5 @@
1
1
  import type { FetchMcpServerToolsResult } from '../../../../../packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js';
2
- export declare function fetchMcpServerToolsAction(serverName: string): Promise<FetchMcpServerToolsResult & {
2
+ export declare function fetchMcpServerToolsAction(): Promise<FetchMcpServerToolsResult & {
3
3
  error?: string;
4
4
  }>;
5
5
  //# sourceMappingURL=fetch-mcp-server-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-mcp-server-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/fetch-mcp-server-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mFAAmF,CAAC;AAEnI,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOzD"}
1
+ {"version":3,"file":"fetch-mcp-server-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/fetch-mcp-server-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mFAAmF,CAAC;AAEnI,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAC/C,CAOA"}
@@ -1,9 +1,9 @@
1
1
  'use server';
2
2
  import { resolve } from '../../lib/server-container.js';
3
- export async function fetchMcpServerToolsAction(serverName) {
3
+ export async function fetchMcpServerToolsAction() {
4
4
  try {
5
5
  const useCase = resolve('FetchMcpServerToolsUseCase');
6
- return await useCase.execute({ serverName });
6
+ return await useCase.execute();
7
7
  }
8
8
  catch {
9
9
  return { tools: [], error: 'Failed to fetch MCP server tools' };
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/mcp-servers/page.tsx"],"names":[],"mappings":"AAMA,wBAA8B,cAAc,qDAgB3C"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/mcp-servers/page.tsx"],"names":[],"mappings":"AAMA,wBAA8B,cAAc,qDAc3C"}
@@ -8,15 +8,13 @@ export default async function McpServersPage() {
8
8
  if (!flags.mcpServers)
9
9
  notFound();
10
10
  let proxyConfigured = false;
11
- let proxyBaseUrl = '';
12
11
  try {
13
12
  const useCase = resolve('LoadSettingsUseCase');
14
13
  const settings = await useCase.execute();
15
14
  proxyConfigured = !!settings.litellmProxy?.baseUrl;
16
- proxyBaseUrl = settings.litellmProxy?.baseUrl ?? '';
17
15
  }
18
16
  catch {
19
17
  // Settings not available
20
18
  }
21
- return _jsx(McpServersPageClient, { proxyConfigured: proxyConfigured, proxyBaseUrl: proxyBaseUrl });
19
+ return _jsx(McpServersPageClient, { proxyConfigured: proxyConfigured });
22
20
  }
@@ -1,10 +1,10 @@
1
1
  import type { McpServerInfo } from '../../../../../../packages/core/src/application/ports/output/services/mcp-server-browser.interface.js';
2
2
  interface McpServerDetailDrawerProps {
3
3
  server: McpServerInfo | null;
4
- proxyBaseUrl: string;
4
+ serverNames: string[];
5
5
  open: boolean;
6
6
  onClose: () => void;
7
7
  }
8
- export declare function McpServerDetailDrawer({ server, proxyBaseUrl, open, onClose, }: McpServerDetailDrawerProps): import("react/jsx-runtime").JSX.Element | null;
8
+ export declare function McpServerDetailDrawer({ server, serverNames, open, onClose, }: McpServerDetailDrawerProps): import("react/jsx-runtime").JSX.Element | null;
9
9
  export {};
10
10
  //# sourceMappingURL=mcp-server-detail-drawer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-detail-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,gFAAgF,CAAC;AAExF,UAAU,0BAA0B;IAClC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,OAAO,GACR,EAAE,0BAA0B,kDAuF5B"}
1
+ {"version":3,"file":"mcp-server-detail-drawer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,gFAAgF,CAAC;AAExF,UAAU,0BAA0B;IAClC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,WAAW,EACX,IAAI,EACJ,OAAO,GACR,EAAE,0BAA0B,kDA+E5B"}
@@ -7,7 +7,6 @@ import { DrawerTitle, DrawerDescription } from '../../ui/drawer.js';
7
7
  import { Separator } from '../../ui/separator.js';
8
8
  import { Badge } from '../../ui/badge.js';
9
9
  import { McpToolList } from './mcp-tool-list.js';
10
- import { McpConnectInstructions } from './mcp-connect-instructions.js';
11
10
  import { fetchMcpServerToolsAction } from '../../../app/actions/fetch-mcp-server-tools.js';
12
11
  function isValidDisplayUrl(url) {
13
12
  if (!url)
@@ -20,21 +19,19 @@ function isValidDisplayUrl(url) {
20
19
  return false;
21
20
  }
22
21
  }
23
- export function McpServerDetailDrawer({ server, proxyBaseUrl, open, onClose, }) {
22
+ export function McpServerDetailDrawer({ server, serverNames, open, onClose, }) {
24
23
  const { t } = useTranslation('web');
25
24
  const [tools, setTools] = useState([]);
26
25
  const [loadingTools, setLoadingTools] = useState(false);
27
26
  const [toolError, setToolError] = useState(null);
28
- const [loadedServerName, setLoadedServerName] = useState(null);
29
- const loadTools = useCallback(async (serverName) => {
27
+ const loadTools = useCallback(async () => {
30
28
  setLoadingTools(true);
31
29
  setToolError(null);
32
30
  try {
33
- const result = await fetchMcpServerToolsAction(serverName);
31
+ const result = await fetchMcpServerToolsAction();
34
32
  setTools(result.tools);
35
33
  if (result.error)
36
34
  setToolError(result.error);
37
- setLoadedServerName(serverName);
38
35
  }
39
36
  catch {
40
37
  setToolError('Failed to load tools');
@@ -44,15 +41,12 @@ export function McpServerDetailDrawer({ server, proxyBaseUrl, open, onClose, })
44
41
  }
45
42
  }, []);
46
43
  useEffect(() => {
47
- if (!open || !server)
48
- return;
49
- // Re-fetch whenever the drawer opens for a different server.
50
- if (loadedServerName === server.server_name)
51
- return;
52
- loadTools(server.server_name);
53
- }, [open, server, loadedServerName, loadTools]);
44
+ if (open && server && tools.length === 0) {
45
+ loadTools();
46
+ }
47
+ }, [open, server, tools.length, loadTools]);
54
48
  if (!server)
55
49
  return null;
56
50
  const description = server.mcp_info?.description ?? '';
57
- return (_jsxs(BaseDrawer, { open: open, onClose: onClose, children: [_jsx(DrawerTitle, { children: server.name }), description ? _jsx(DrawerDescription, { children: description }) : null, _jsx(Separator, { className: "my-4" }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.serverName') }), _jsx("span", { className: "font-mono text-xs", children: server.server_name })] }), isValidDisplayUrl(server.url) ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.url') }), _jsx("span", { className: "max-w-[200px] truncate font-mono text-xs", children: server.url })] })) : null, _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.transport') }), _jsx(Badge, { variant: "outline", className: "text-xs", children: t(`mcpServers.transport.${server.transport}`, server.transport.toUpperCase()) })] }), server.auth_type && server.auth_type !== 'none' ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.authType') }), _jsx(Badge, { variant: "secondary", className: "text-xs", children: t(`mcpServers.authType.${server.auth_type}`, server.auth_type) })] })) : null] }), _jsx(Separator, { className: "my-4" }), _jsx("h3", { className: "mb-3 text-sm font-semibold", children: t('mcpServers.tools.title') }), loadingTools ? (_jsxs("p", { className: "text-muted-foreground text-sm", children: [t('accessibility.loading'), "..."] })) : toolError ? (_jsx("p", { className: "text-destructive text-sm", children: toolError })) : (_jsx(McpToolList, { tools: tools, serverName: server.server_name })), _jsx(Separator, { className: "my-4" }), _jsx("h3", { className: "mb-3 text-sm font-semibold", children: t('mcpServers.connect.title') }), _jsx(McpConnectInstructions, { proxyBaseUrl: proxyBaseUrl, serverName: server.server_name })] }));
51
+ return (_jsxs(BaseDrawer, { open: open, onClose: onClose, children: [_jsx(DrawerTitle, { children: server.name }), description ? _jsx(DrawerDescription, { children: description }) : null, _jsx(Separator, { className: "my-4" }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.serverName') }), _jsx("span", { className: "font-mono text-xs", children: server.server_name })] }), isValidDisplayUrl(server.url) ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.url') }), _jsx("span", { className: "max-w-[200px] truncate font-mono text-xs", children: server.url })] })) : null, _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.transport') }), _jsx(Badge, { variant: "outline", className: "text-xs", children: t(`mcpServers.transport.${server.transport}`, server.transport.toUpperCase()) })] }), server.auth_type && server.auth_type !== 'none' ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: t('mcpServers.detail.authType') }), _jsx(Badge, { variant: "secondary", className: "text-xs", children: t(`mcpServers.authType.${server.auth_type}`, server.auth_type) })] })) : null] }), _jsx(Separator, { className: "my-4" }), _jsx("h3", { className: "mb-3 text-sm font-semibold", children: t('mcpServers.tools.title') }), loadingTools ? (_jsxs("p", { className: "text-muted-foreground text-sm", children: [t('accessibility.loading'), "..."] })) : toolError ? (_jsx("p", { className: "text-destructive text-sm", children: toolError })) : (_jsx(McpToolList, { tools: tools, serverNames: serverNames }))] }));
58
52
  }
@@ -6,7 +6,7 @@ declare const meta: {
6
6
  args: {
7
7
  open: true;
8
8
  onClose: () => undefined;
9
- proxyBaseUrl: string;
9
+ serverNames: string[];
10
10
  };
11
11
  };
12
12
  export default meta;
@@ -5,7 +5,7 @@ const meta = {
5
5
  args: {
6
6
  open: true,
7
7
  onClose: () => undefined,
8
- proxyBaseUrl: 'http://localhost:4000',
8
+ serverNames: ['deepwiki-mcp', 'github_mcp'],
9
9
  },
10
10
  };
11
11
  export default meta;
@@ -1,7 +1,6 @@
1
1
  interface McpServersPageClientProps {
2
2
  proxyConfigured: boolean;
3
- proxyBaseUrl: string;
4
3
  }
5
- export declare function McpServersPageClient({ proxyConfigured, proxyBaseUrl }: McpServersPageClientProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function McpServersPageClient({ proxyConfigured }: McpServersPageClientProps): import("react/jsx-runtime").JSX.Element;
6
5
  export {};
7
6
  //# sourceMappingURL=mcp-servers-page-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-servers-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.tsx"],"names":[],"mappings":"AAaA,UAAU,yBAAyB;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,oBAAoB,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,yBAAyB,2CAwHhG"}
1
+ {"version":3,"file":"mcp-servers-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.tsx"],"names":[],"mappings":"AAaA,UAAU,yBAAyB;IACjC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,EAAE,eAAe,EAAE,EAAE,yBAAyB,2CA0HlF"}
@@ -10,7 +10,7 @@ import { McpServerCard } from './mcp-server-card.js';
10
10
  import { McpServerDetailDrawer } from './mcp-server-detail-drawer.js';
11
11
  import { fetchMcpServersAction } from '../../../app/actions/fetch-mcp-servers.js';
12
12
  const TRANSPORT_FILTERS = ['all', 'http', 'sse', 'stdio'];
13
- export function McpServersPageClient({ proxyConfigured, proxyBaseUrl }) {
13
+ export function McpServersPageClient({ proxyConfigured }) {
14
14
  const { t } = useTranslation('web');
15
15
  const [searchQuery, setSearchQuery] = useState('');
16
16
  const [transportFilter, setTransportFilter] = useState('all');
@@ -36,6 +36,7 @@ export function McpServersPageClient({ proxyConfigured, proxyBaseUrl }) {
36
36
  setLoading(false);
37
37
  });
38
38
  }, [proxyConfigured, t]);
39
+ const serverNames = useMemo(() => servers.map((s) => s.server_name), [servers]);
39
40
  const filtered = useMemo(() => {
40
41
  return servers.filter((server) => {
41
42
  const query = searchQuery.toLowerCase();
@@ -54,5 +55,5 @@ export function McpServersPageClient({ proxyConfigured, proxyBaseUrl }) {
54
55
  }
55
56
  return (_jsxs("div", { className: "space-y-6 p-6", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold", children: t('mcpServers.title') }), error ? (_jsx("div", { className: "border-destructive/50 bg-destructive/10 mt-2 rounded-md border p-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(AlertCircle, { className: "text-destructive h-4 w-4" }), _jsx("p", { className: "text-destructive text-sm", children: error })] }) })) : null, _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: t('mcpServers.subtitle') })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx(Input, { placeholder: t('mcpServers.searchPlaceholder'), value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "max-w-xs" }), _jsx("div", { className: "flex gap-1", children: TRANSPORT_FILTERS.map((filter) => (_jsx(Badge, { variant: transportFilter === filter ? 'default' : 'outline', className: "cursor-pointer", onClick: () => setTransportFilter(filter), children: filter === 'all'
56
57
  ? t('mcpServers.filter.all')
57
- : t(`mcpServers.transport.${filter}`, filter.toUpperCase()) }, filter))) })] }), filtered.length === 0 ? (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsx(EmptyState, { icon: servers.length === 0 ? _jsx(Server, { className: "h-8 w-8" }) : _jsx(Search, { className: "h-8 w-8" }), title: servers.length === 0 ? t('mcpServers.noServers') : t('mcpServers.noResults') }) })) : (_jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filtered.map((server) => (_jsx(McpServerCard, { server: server, onSelect: setSelectedServer }, server.server_id))) })), _jsx(McpServerDetailDrawer, { server: selectedServer, proxyBaseUrl: proxyBaseUrl, open: !!selectedServer, onClose: () => setSelectedServer(null) })] }));
58
+ : t(`mcpServers.transport.${filter}`, filter.toUpperCase()) }, filter))) })] }), filtered.length === 0 ? (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsx(EmptyState, { icon: servers.length === 0 ? _jsx(Server, { className: "h-8 w-8" }) : _jsx(Search, { className: "h-8 w-8" }), title: servers.length === 0 ? t('mcpServers.noServers') : t('mcpServers.noResults') }) })) : (_jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filtered.map((server) => (_jsx(McpServerCard, { server: server, onSelect: setSelectedServer }, server.server_id))) })), _jsx(McpServerDetailDrawer, { server: selectedServer, serverNames: serverNames, open: !!selectedServer, onClose: () => setSelectedServer(null) })] }));
58
59
  }
@@ -5,8 +5,8 @@ const meta = {
5
5
  };
6
6
  export default meta;
7
7
  export const Default = {
8
- args: { proxyConfigured: true, proxyBaseUrl: 'http://localhost:4000' },
8
+ args: { proxyConfigured: true },
9
9
  };
10
10
  export const NoProxy = {
11
- args: { proxyConfigured: false, proxyBaseUrl: '' },
11
+ args: { proxyConfigured: false },
12
12
  };
@@ -1,27 +1,23 @@
1
1
  import type { McpToolInfo } from '../../../../../../packages/core/src/application/ports/output/services/mcp-server-browser.interface.js';
2
2
  interface McpToolListProps {
3
3
  tools: McpToolInfo[];
4
- /**
5
- * The server name that these tools belong to. Used to strip the
6
- * `{serverName}-` prefix from tool names for nicer display.
7
- */
8
- serverName: string;
4
+ serverNames: string[];
9
5
  }
10
- interface DisplayTool {
11
- displayName: string;
12
- description?: string;
13
- key: string;
6
+ interface GroupedTools {
7
+ serverName: string;
8
+ tools: {
9
+ displayName: string;
10
+ description?: string;
11
+ }[];
14
12
  }
15
13
  /**
16
- * Normalize tools by stripping the `{serverName}-` prefix if present.
17
- *
18
- * LiteLLM sometimes prefixes tool names with the server alias (e.g.,
19
- * `github_mcp-list_issues`). When we're displaying tools for a single
20
- * known server, the prefix is redundant — strip it for cleaner UI.
14
+ * Groups tools by server name prefix.
21
15
  *
22
- * Exported for unit testing.
16
+ * LiteLLM prefixes tool names with `{server_name}-` (e.g., `github_mcp-list_issues`).
17
+ * We match each tool's name against known server names and strip the prefix for display.
18
+ * Tools with no matching prefix go in an "Other" group.
23
19
  */
24
- export declare function stripServerPrefix(tools: McpToolInfo[], serverName: string): DisplayTool[];
25
- export declare function McpToolList({ tools, serverName }: McpToolListProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function groupToolsByServer(tools: McpToolInfo[], serverNames: string[]): GroupedTools[];
21
+ export declare function McpToolList({ tools, serverNames }: McpToolListProps): import("react/jsx-runtime").JSX.Element;
26
22
  export {};
27
23
  //# sourceMappingURL=mcp-tool-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-tool-list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAYzF;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CAwBlE"}
1
+ {"version":3,"file":"mcp-tool-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-tool-list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CA2B9F;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CAoCnE"}