@shipit-ai/cli 1.173.1 → 1.174.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts +9 -1
  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 +7 -3
  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 +6 -5
  6. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.js +4 -0
  8. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts +12 -0
  9. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.js +11 -1
  11. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts +10 -2
  12. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +96 -14
  14. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts +1 -1
  15. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts.map +1 -1
  16. package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.js +2 -2
  17. package/dist/src/presentation/web/app/mcp-servers/page.d.ts.map +1 -1
  18. package/dist/src/presentation/web/app/mcp-servers/page.js +3 -1
  19. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts +19 -0
  20. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts.map +1 -0
  21. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.js +106 -0
  22. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts +11 -0
  23. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts.map +1 -0
  24. package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.js +18 -0
  25. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.js +2 -8
  27. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts +2 -2
  28. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +26 -9
  30. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts +1 -1
  31. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.js +1 -1
  32. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.d.ts +45 -0
  33. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.d.ts.map +1 -0
  34. package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-icon.js +138 -0
  35. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts +2 -1
  36. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +8 -8
  38. package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js +2 -2
  39. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts +17 -13
  40. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.js +21 -34
  42. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts +1 -1
  43. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map +1 -1
  44. package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.js +7 -8
  45. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.d.ts +29 -0
  46. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.d.ts.map +1 -0
  47. package/dist/src/presentation/web/components/features/mcp-servers/vendor-brand-icons.js +25 -0
  48. package/dist/translations/ar/web.json +8 -2
  49. package/dist/translations/de/web.json +8 -2
  50. package/dist/translations/en/web.json +8 -2
  51. package/dist/translations/es/web.json +8 -2
  52. package/dist/translations/fr/web.json +8 -2
  53. package/dist/translations/he/web.json +8 -2
  54. package/dist/translations/pt/web.json +8 -2
  55. package/dist/translations/ru/web.json +8 -2
  56. package/dist/tsconfig.build.tsbuildinfo +1 -1
  57. package/package.json +1 -1
  58. package/web/.next/BUILD_ID +1 -1
  59. package/web/.next/build-manifest.json +3 -3
  60. package/web/.next/fallback-build-manifest.json +3 -3
  61. package/web/.next/prerender-manifest.json +3 -3
  62. package/web/.next/required-server-files.js +2 -2
  63. package/web/.next/required-server-files.json +2 -2
  64. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  65. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  68. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  71. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  74. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  77. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  79. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  80. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  82. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  83. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  84. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  86. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  89. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  90. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  92. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  93. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  95. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  98. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  99. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  101. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  104. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  105. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  106. package/web/.next/server/app/_global-error.html +1 -1
  107. package/web/.next/server/app/_global-error.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  109. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  110. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  111. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  112. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  113. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  114. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  115. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  117. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  118. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  119. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  120. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  121. package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +13 -13
  122. package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -1
  123. package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
  125. package/web/.next/server/app/plugins/page.js.nft.json +1 -1
  126. package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
  127. package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
  128. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  129. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  130. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  131. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  132. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  134. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  135. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  136. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  137. package/web/.next/server/app/version/page.js.nft.json +1 -1
  138. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  139. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  140. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  141. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  143. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js +10 -0
  145. package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js.map +1 -0
  146. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  147. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  149. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js +3 -0
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  171. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  173. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/{_1031n_-._.js → _083k45~._.js} +2 -2
  175. package/web/.next/server/chunks/ssr/{_1031n_-._.js.map → _083k45~._.js.map} +1 -1
  176. package/web/.next/server/chunks/ssr/{_12i_bjl._.js → _087x~el._.js} +2 -2
  177. package/web/.next/server/chunks/ssr/{_12i_bjl._.js.map → _087x~el._.js.map} +1 -1
  178. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  179. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  181. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/{_0xn_dfh._.js → _0bknjp-._.js} +2 -2
  183. package/web/.next/server/chunks/ssr/{_0xn_dfh._.js.map → _0bknjp-._.js.map} +1 -1
  184. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/_0fswe4r._.js +3 -0
  189. package/web/.next/server/chunks/ssr/_0fswe4r._.js.map +1 -0
  190. package/web/.next/server/chunks/ssr/{_0z6p8yi._.js → _0glox21._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_0z6p8yi._.js.map → _0glox21._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  193. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/{_096x3u~._.js → _0vq0c0x._.js} +2 -2
  199. package/web/.next/server/chunks/ssr/{_096x3u~._.js.map → _0vq0c0x._.js.map} +1 -1
  200. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  201. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  203. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  205. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  207. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/_0~g5-.e._.js +3 -0
  209. package/web/.next/server/chunks/ssr/_0~g5-.e._.js.map +1 -0
  210. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  211. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +1 -1
  213. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
  215. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  219. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  222. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  223. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  224. package/web/.next/server/middleware-build-manifest.js +3 -3
  225. package/web/.next/server/pages/500.html +1 -1
  226. package/web/.next/server/server-reference-manifest.js +1 -1
  227. package/web/.next/server/server-reference-manifest.json +57 -57
  228. package/web/.next/static/chunks/{07c0dde.-8.3e.js → 030tqac1cx-fj.js} +1 -1
  229. package/web/.next/static/chunks/{0242vp5_56bjp.js → 093...bdsa2vi.js} +1 -1
  230. package/web/.next/static/chunks/0a~-dbzk6tkpw.css +1 -0
  231. package/web/.next/static/chunks/{0j~279np0vu13.js → 0c.5-5ohi38wu.js} +1 -1
  232. package/web/.next/static/chunks/{0k3fxd~lsx6h_.js → 0djvgyu139qht.js} +1 -1
  233. package/web/.next/static/chunks/{084nyl7us-xbo.js → 0etn4uwpbu0p..js} +1 -1
  234. package/web/.next/static/chunks/0fzx4yzxqtc6v.js +1 -0
  235. package/web/.next/static/chunks/{0sgbbtfp4hspl.js → 0gz0lgz7pvrb5.js} +1 -1
  236. package/web/.next/static/chunks/0iey6w_th4w6t.js +1 -0
  237. package/web/.next/static/chunks/{15lkkh2eg.w0h.js → 0mukkm1m79wpt.js} +1 -1
  238. package/web/.next/static/chunks/{0cgfywkcky60_.js → 0ou6vmrmvv4.f.js} +1 -1
  239. package/web/.next/static/chunks/{15zjq.s38l64~.js → 0q1rh6cwq8q~e.js} +1 -1
  240. package/web/.next/static/chunks/{0xjj0-wsaziot.js → 0w9~abfpfmxwe.js} +1 -1
  241. package/web/.next/static/chunks/{0vscxcwhltksg.js → 0zwhmf.myybu0.js} +3 -3
  242. package/web/.next/static/chunks/{10j-adknfho63.js → 10rtagfoabp3b.js} +1 -1
  243. package/web/.next/static/chunks/{11rfk7fre_6t2.js → 113fyg.4c74k~.js} +1 -1
  244. package/web/.next/static/chunks/{16nbcfv~__pas.js → 11n8b8mq7xbv9.js} +1 -1
  245. package/web/.next/static/chunks/11v7w0zh-u9s8.js +8 -0
  246. package/web/.next/static/chunks/{0kv2-9owuv51~.js → 164.6ma3h~kkp.js} +1 -1
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js +0 -3
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js.map +0 -1
  249. package/web/.next/server/chunks/ssr/_0ia4o6_._.js +0 -3
  250. package/web/.next/server/chunks/ssr/_0ia4o6_._.js.map +0 -1
  251. package/web/.next/server/chunks/ssr/_0o.xc6x._.js +0 -3
  252. package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +0 -1
  253. package/web/.next/static/chunks/00h433i5-1v_-.css +0 -1
  254. package/web/.next/static/chunks/0jl9-2_wjbofj.js +0 -1
  255. package/web/.next/static/chunks/0r9cddoy0xkhk.js +0 -1
  256. package/web/.next/static/chunks/123j391jw_zg4.js +0 -1
  257. /package/web/.next/static/{soqWMnDMQRLxRyIj13kVU → G6UvAet1r3tmTZHz91Byx}/_buildManifest.js +0 -0
  258. /package/web/.next/static/{soqWMnDMQRLxRyIj13kVU → G6UvAet1r3tmTZHz91Byx}/_clientMiddlewareManifest.js +0 -0
  259. /package/web/.next/static/{soqWMnDMQRLxRyIj13kVU → G6UvAet1r3tmTZHz91Byx}/_ssgManifest.js +0 -0
@@ -33,6 +33,14 @@ export interface McpToolInfo {
33
33
  }
34
34
  export interface IMcpServerBrowserService {
35
35
  fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
36
- fetchTools(proxyBaseUrl: string, apiKey?: string): Promise<McpToolInfo[]>;
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[]>;
37
45
  }
38
46
  //# 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,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC3E"}
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,16 +1,20 @@
1
1
  /**
2
2
  * Fetch MCP Server Tools Use Case
3
3
  *
4
- * Retrieves the list of MCP tools from the configured LiteLLM proxy's
5
- * REST tools/list endpoint.
4
+ * Retrieves the list of MCP tools for a specific server from the configured
5
+ * LiteLLM proxy via JSON-RPC (POST {proxyUrl}/{serverName}/mcp).
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
10
11
  * - Delegates to IMcpServerBrowserService for HTTP retrieval
11
12
  */
12
13
  import type { ISettingsReader } from '../../ports/output/services/settings-reader.interface.js';
13
14
  import type { IMcpServerBrowserService, McpToolInfo } from '../../ports/output/services/mcp-server-browser.interface.js';
15
+ export interface FetchMcpServerToolsInput {
16
+ serverName: string;
17
+ }
14
18
  export interface FetchMcpServerToolsResult {
15
19
  tools: McpToolInfo[];
16
20
  }
@@ -18,6 +22,6 @@ export declare class FetchMcpServerToolsUseCase {
18
22
  private readonly settingsReader;
19
23
  private readonly browserService;
20
24
  constructor(settingsReader: ISettingsReader, browserService: IMcpServerBrowserService);
21
- execute(): Promise<FetchMcpServerToolsResult>;
25
+ execute(input: FetchMcpServerToolsInput): Promise<FetchMcpServerToolsResult>;
22
26
  }
23
27
  //# 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;;;;;;;;;;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
+ {"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,12 +1,13 @@
1
1
  /**
2
2
  * Fetch MCP Server Tools Use Case
3
3
  *
4
- * Retrieves the list of MCP tools from the configured LiteLLM proxy's
5
- * REST tools/list endpoint.
4
+ * Retrieves the list of MCP tools for a specific server from the configured
5
+ * LiteLLM proxy via JSON-RPC (POST {proxyUrl}/{serverName}/mcp).
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
10
11
  * - Delegates to IMcpServerBrowserService for HTTP retrieval
11
12
  */
12
13
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -29,14 +30,14 @@ let FetchMcpServerToolsUseCase = class FetchMcpServerToolsUseCase {
29
30
  this.settingsReader = settingsReader;
30
31
  this.browserService = browserService;
31
32
  }
32
- async execute() {
33
+ async execute(input) {
33
34
  const settings = this.settingsReader.getSettings();
34
35
  const proxyUrl = settings?.litellmProxy?.baseUrl;
35
- if (!proxyUrl) {
36
+ if (!proxyUrl || !input.serverName) {
36
37
  return { tools: [] };
37
38
  }
38
39
  const apiKey = settings.litellmProxy?.apiKey;
39
- const tools = await this.browserService.fetchTools(proxyUrl, apiKey);
40
+ const tools = await this.browserService.fetchTools(proxyUrl, input.serverName, apiKey);
40
41
  return { tools };
41
42
  }
42
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"web-tokens.module.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/di/modules/web-tokens.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAmEpD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CA2I5E"}
1
+ {"version":3,"file":"web-tokens.module.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/di/modules/web-tokens.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAoEpD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CA8I5E"}
@@ -20,6 +20,7 @@ import { AutoResolveMergedBranchesUseCase } from '../../../application/use-cases
20
20
  // Agent use cases
21
21
  import { ApproveAgentRunUseCase } from '../../../application/use-cases/agents/approve-agent-run.use-case.js';
22
22
  import { RejectAgentRunUseCase } from '../../../application/use-cases/agents/reject-agent-run.use-case.js';
23
+ import { StopAgentRunUseCase } from '../../../application/use-cases/agents/stop-agent-run.use-case.js';
23
24
  import { PollAgentEventsUseCase } from '../../../application/use-cases/agents/poll-agent-events.use-case.js';
24
25
  // Tool use cases
25
26
  import { InstallToolUseCase } from '../../../application/use-cases/tools/install-tool.use-case.js';
@@ -115,6 +116,9 @@ export function registerWebTokensModule(container) {
115
116
  container.register('RejectAgentRunUseCase', {
116
117
  useFactory: (c) => c.resolve(RejectAgentRunUseCase),
117
118
  });
119
+ container.register('StopAgentRunUseCase', {
120
+ useFactory: (c) => c.resolve(StopAgentRunUseCase),
121
+ });
118
122
  container.register('PollAgentEventsUseCase', {
119
123
  useFactory: (c) => c.resolve(PollAgentEventsUseCase),
120
124
  });
@@ -45,6 +45,18 @@ 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>;
48
60
  export declare const McpToolListResponseSchema: z.ZodObject<{
49
61
  tools: z.ZodArray<z.ZodObject<{
50
62
  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;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"}
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"}
@@ -46,8 +46,18 @@ 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
49
59
  export const McpToolListResponseSchema = z.object({
50
60
  tools: z.array(McpToolInfoSchema),
51
61
  });
52
- // Fallback: tools/list may return a bare array in some LiteLLM versions
62
+ // Bare array fallback
53
63
  export const McpToolListFallbackSchema = z.array(McpToolInfoSchema);
@@ -4,14 +4,22 @@
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
- * - GET /mcp-rest/tools/list — list available MCP tools
7
+ * - POST /{serverName}/mcp — list tools for a specific server via JSON-RPC
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"}
11
19
  */
12
20
  import type { IMcpServerBrowserService, McpServerInfo, McpToolInfo } from '../../../application/ports/output/services/mcp-server-browser.interface.js';
13
21
  export declare class McpServerBrowserService implements IMcpServerBrowserService {
14
22
  fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
15
- fetchTools(proxyBaseUrl: string, apiKey?: string): Promise<McpToolInfo[]>;
23
+ fetchTools(proxyBaseUrl: string, serverName: string, apiKey?: string): Promise<McpToolInfo[]>;
16
24
  }
17
25
  //# 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;;;;;;;;;;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"}
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"}
@@ -4,10 +4,18 @@
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
- * - GET /mcp-rest/tools/list — list available MCP tools
7
+ * - POST /{serverName}/mcp — list tools for a specific server via JSON-RPC
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"}
11
19
  */
12
20
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13
21
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -16,9 +24,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
16
24
  return c > 3 && r && Object.defineProperty(target, key, r), r;
17
25
  };
18
26
  import { injectable } from 'tsyringe';
19
- import { McpServerListSchema, McpToolListResponseSchema, McpToolListFallbackSchema, } from './mcp-server-browser.schema.js';
27
+ import { McpServerListSchema, McpJsonRpcToolsListResponseSchema, McpToolListResponseSchema, McpToolListFallbackSchema, } from './mcp-server-browser.schema.js';
20
28
  const FETCH_TIMEOUT_MS = 10_000;
21
29
  const MAX_RESPONSE_SIZE = 5_000_000;
30
+ const SAFE_SERVER_NAME_REGEX = /^[a-zA-Z0-9_-]{1,100}$/;
22
31
  let McpServerBrowserService = class McpServerBrowserService {
23
32
  async fetchServers(proxyBaseUrl, apiKey) {
24
33
  try {
@@ -26,8 +35,8 @@ let McpServerBrowserService = class McpServerBrowserService {
26
35
  if (!url)
27
36
  return [];
28
37
  const endpoint = `${url}/public/mcp_hub`;
29
- const headers = buildHeaders(apiKey);
30
- const json = await fetchJson(endpoint, headers);
38
+ const headers = buildGetHeaders(apiKey);
39
+ const json = await fetchJson(endpoint, { method: 'GET', headers });
31
40
  if (json === null)
32
41
  return [];
33
42
  const parsed = McpServerListSchema.safeParse(json);
@@ -39,21 +48,34 @@ let McpServerBrowserService = class McpServerBrowserService {
39
48
  return [];
40
49
  }
41
50
  }
42
- async fetchTools(proxyBaseUrl, apiKey) {
51
+ async fetchTools(proxyBaseUrl, serverName, apiKey) {
43
52
  try {
44
53
  const url = parseAndValidateUrl(proxyBaseUrl);
45
54
  if (!url)
46
55
  return [];
47
- const endpoint = `${url}/mcp-rest/tools/list`;
48
- const headers = buildHeaders(apiKey);
49
- const json = await fetchJson(endpoint, headers);
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 });
50
68
  if (json === null)
51
69
  return [];
52
- // Try wrapped format first: { tools: [...] }
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
53
75
  const wrapped = McpToolListResponseSchema.safeParse(json);
54
76
  if (wrapped.success)
55
77
  return wrapped.data.tools;
56
- // Fallback: bare array [...]
78
+ // Fallback: bare array
57
79
  const bare = McpToolListFallbackSchema.safeParse(json);
58
80
  if (bare.success)
59
81
  return bare.data;
@@ -79,35 +101,95 @@ function parseAndValidateUrl(proxyBaseUrl) {
79
101
  return null;
80
102
  }
81
103
  }
82
- function buildHeaders(apiKey) {
104
+ function buildGetHeaders(apiKey) {
83
105
  const headers = {};
84
106
  if (apiKey) {
85
107
  headers['Authorization'] = `Bearer ${apiKey}`;
86
108
  }
87
109
  return headers;
88
110
  }
89
- async function fetchJson(endpoint, headers) {
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) {
90
125
  const controller = new AbortController();
91
126
  const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
92
127
  try {
93
128
  const res = await fetch(endpoint, {
129
+ method: options.method,
94
130
  signal: controller.signal,
95
131
  redirect: 'error',
96
- headers,
132
+ headers: options.headers,
133
+ body: options.body,
97
134
  });
98
135
  if (!res.ok)
99
136
  return null;
137
+ const contentType = res.headers.get('content-type')?.toLowerCase() ?? '';
100
138
  const text = await res.text();
101
139
  if (text.length > MAX_RESPONSE_SIZE)
102
140
  return null;
141
+ // MCP Streamable HTTP transport may return either application/json
142
+ // or text/event-stream. SSE responses look like:
143
+ // event: message
144
+ // data: {"jsonrpc":"2.0","id":1,"result":{"tools":[...]}}
145
+ //
146
+ // We extract the first `data:` line's payload and parse that as JSON.
147
+ // If the content type is JSON, we parse directly.
148
+ if (contentType.includes('text/event-stream')) {
149
+ return parseSseFirstDataEvent(text);
150
+ }
103
151
  try {
104
152
  return JSON.parse(text);
105
153
  }
106
154
  catch {
107
- return null;
155
+ // Some servers omit the content-type header but return SSE anyway.
156
+ // Try SSE parsing as a fallback before giving up.
157
+ return parseSseFirstDataEvent(text);
108
158
  }
109
159
  }
110
160
  finally {
111
161
  clearTimeout(timeout);
112
162
  }
113
163
  }
164
+ /**
165
+ * Extract the first `data: ...` payload from a Server-Sent Events response
166
+ * body and parse it as JSON. Returns null if no valid data line is found.
167
+ *
168
+ * Handles:
169
+ * event: message
170
+ * data: {"jsonrpc":"2.0",...}
171
+ *
172
+ * And multi-line data fields (per SSE spec — though rare for MCP).
173
+ */
174
+ function parseSseFirstDataEvent(body) {
175
+ const lines = body.split(/\r?\n/);
176
+ const dataParts = [];
177
+ for (const line of lines) {
178
+ if (line.startsWith('data:')) {
179
+ // Strip the "data:" prefix and any single leading space.
180
+ dataParts.push(line.slice(5).replace(/^ /, ''));
181
+ }
182
+ else if (line === '' && dataParts.length > 0) {
183
+ // Empty line terminates the first SSE event — stop collecting.
184
+ break;
185
+ }
186
+ }
187
+ if (dataParts.length === 0)
188
+ return null;
189
+ try {
190
+ return JSON.parse(dataParts.join('\n'));
191
+ }
192
+ catch {
193
+ return null;
194
+ }
195
+ }
@@ -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(): Promise<FetchMcpServerToolsResult & {
2
+ export declare function fetchMcpServerToolsAction(serverName: string): 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,IAAI,OAAO,CACxD,yBAAyB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAC/C,CAOA"}
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,9 +1,9 @@
1
1
  'use server';
2
2
  import { resolve } from '../../lib/server-container.js';
3
- export async function fetchMcpServerToolsAction() {
3
+ export async function fetchMcpServerToolsAction(serverName) {
4
4
  try {
5
5
  const useCase = resolve('FetchMcpServerToolsUseCase');
6
- return await useCase.execute();
6
+ return await useCase.execute({ serverName });
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,qDAc3C"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/mcp-servers/page.tsx"],"names":[],"mappings":"AAMA,wBAA8B,cAAc,qDAgB3C"}
@@ -8,13 +8,15 @@ export default async function McpServersPage() {
8
8
  if (!flags.mcpServers)
9
9
  notFound();
10
10
  let proxyConfigured = false;
11
+ let proxyBaseUrl = '';
11
12
  try {
12
13
  const useCase = resolve('LoadSettingsUseCase');
13
14
  const settings = await useCase.execute();
14
15
  proxyConfigured = !!settings.litellmProxy?.baseUrl;
16
+ proxyBaseUrl = settings.litellmProxy?.baseUrl ?? '';
15
17
  }
16
18
  catch {
17
19
  // Settings not available
18
20
  }
19
- return _jsx(McpServersPageClient, { proxyConfigured: proxyConfigured });
21
+ return _jsx(McpServersPageClient, { proxyConfigured: proxyConfigured, proxyBaseUrl: proxyBaseUrl });
20
22
  }
@@ -0,0 +1,19 @@
1
+ interface McpConnectInstructionsProps {
2
+ proxyBaseUrl: string;
3
+ serverName: string;
4
+ }
5
+ type ClientId = 'claude-code' | 'cursor' | 'vscode' | 'gemini' | 'codex' | 'curl';
6
+ /**
7
+ * Generate copy-pasteable connection snippets for various MCP clients.
8
+ *
9
+ * The LiteLLM proxy exposes each MCP server at {proxyBaseUrl}/{serverName}/mcp
10
+ * and authenticates via the `x-litellm-api-key: Bearer <key>` header.
11
+ *
12
+ * All snippets use `<LITELLM_API_KEY>` as a placeholder that the user must
13
+ * replace with their actual virtual key — we never inline a real key into
14
+ * copyable instructions.
15
+ */
16
+ export declare function buildSnippet(clientId: ClientId, proxyBaseUrl: string, serverName: string): string;
17
+ export declare function McpConnectInstructions({ proxyBaseUrl, serverName }: McpConnectInstructionsProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=mcp-connect-instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-connect-instructions.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.tsx"],"names":[],"mappings":"AAOA,UAAU,2BAA2B;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAgBlF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkFjG;AAED,wBAAgB,sBAAsB,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,2BAA2B,2CAkE/F"}
@@ -0,0 +1,106 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { useTranslation } from 'react-i18next';
5
+ import { Button } from '../../ui/button.js';
6
+ import { Check, Copy } from 'lucide-react';
7
+ const CLIENTS = [
8
+ { id: 'claude-code', label: 'Claude Code' },
9
+ { id: 'cursor', label: 'Cursor' },
10
+ { id: 'vscode', label: 'VS Code' },
11
+ { id: 'gemini', label: 'Gemini CLI' },
12
+ { id: 'codex', label: 'Codex CLI' },
13
+ { id: 'curl', label: 'cURL' },
14
+ ];
15
+ /**
16
+ * Generate copy-pasteable connection snippets for various MCP clients.
17
+ *
18
+ * The LiteLLM proxy exposes each MCP server at {proxyBaseUrl}/{serverName}/mcp
19
+ * and authenticates via the `x-litellm-api-key: Bearer <key>` header.
20
+ *
21
+ * All snippets use `<LITELLM_API_KEY>` as a placeholder that the user must
22
+ * replace with their actual virtual key — we never inline a real key into
23
+ * copyable instructions.
24
+ */
25
+ export function buildSnippet(clientId, proxyBaseUrl, serverName) {
26
+ const endpoint = `${proxyBaseUrl.replace(/\/$/, '')}/${serverName}/mcp`;
27
+ switch (clientId) {
28
+ case 'claude-code':
29
+ // Claude Code supports `claude mcp add` command
30
+ return [
31
+ `claude mcp add --transport http ${serverName} \\`,
32
+ ` ${endpoint} \\`,
33
+ ` --header "x-litellm-api-key: Bearer <LITELLM_API_KEY>"`,
34
+ ].join('\n');
35
+ case 'cursor':
36
+ // Cursor: ~/.cursor/mcp.json
37
+ return JSON.stringify({
38
+ mcpServers: {
39
+ [serverName]: {
40
+ url: endpoint,
41
+ headers: {
42
+ 'x-litellm-api-key': 'Bearer <LITELLM_API_KEY>',
43
+ },
44
+ },
45
+ },
46
+ }, null, 2);
47
+ case 'vscode':
48
+ // VS Code / Copilot: settings.json under "mcp"
49
+ return JSON.stringify({
50
+ mcp: {
51
+ servers: {
52
+ [serverName]: {
53
+ type: 'http',
54
+ url: endpoint,
55
+ headers: {
56
+ 'x-litellm-api-key': 'Bearer <LITELLM_API_KEY>',
57
+ },
58
+ },
59
+ },
60
+ },
61
+ }, null, 2);
62
+ case 'gemini':
63
+ // Gemini CLI: ~/.gemini/settings.json or project .gemini/settings.json
64
+ return JSON.stringify({
65
+ mcpServers: {
66
+ [serverName]: {
67
+ httpUrl: endpoint,
68
+ headers: {
69
+ 'x-litellm-api-key': 'Bearer <LITELLM_API_KEY>',
70
+ },
71
+ },
72
+ },
73
+ }, null, 2);
74
+ case 'codex':
75
+ // Codex CLI: ~/.codex/config.toml
76
+ return [
77
+ `[mcp_servers.${serverName}]`,
78
+ `url = "${endpoint}"`,
79
+ `headers = { "x-litellm-api-key" = "Bearer <LITELLM_API_KEY>" }`,
80
+ ].join('\n');
81
+ case 'curl':
82
+ return [
83
+ `curl --location '${endpoint}' \\`,
84
+ ` --header 'Content-Type: application/json' \\`,
85
+ ` --header 'x-litellm-api-key: Bearer <LITELLM_API_KEY>' \\`,
86
+ ` --data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'`,
87
+ ].join('\n');
88
+ }
89
+ }
90
+ export function McpConnectInstructions({ proxyBaseUrl, serverName }) {
91
+ const { t } = useTranslation('web');
92
+ const [activeClient, setActiveClient] = useState('claude-code');
93
+ const [copied, setCopied] = useState(false);
94
+ const snippet = buildSnippet(activeClient, proxyBaseUrl, serverName);
95
+ const handleCopy = async () => {
96
+ try {
97
+ await navigator.clipboard.writeText(snippet);
98
+ setCopied(true);
99
+ setTimeout(() => setCopied(false), 2000);
100
+ }
101
+ catch {
102
+ // Clipboard not available (e.g., insecure context) — silently ignore.
103
+ }
104
+ };
105
+ return (_jsxs("div", { className: "space-y-3", children: [_jsx("div", { className: "flex flex-wrap gap-1.5 rounded-lg border border-slate-200/60 bg-slate-50/50 p-1 dark:border-slate-700/50 dark:bg-slate-900/40", role: "tablist", "aria-label": t('mcpServers.connect.title'), children: CLIENTS.map((client) => (_jsx("button", { type: "button", role: "tab", "aria-selected": activeClient === client.id, onClick: () => setActiveClient(client.id), "data-state": activeClient === client.id ? 'active' : 'inactive', className: "data-[state=active]:bg-card data-[state=active]:text-primary text-muted-foreground hover:text-foreground rounded-md px-2.5 py-1 text-xs font-medium transition-all data-[state=active]:shadow-sm data-[state=active]:ring-1 data-[state=active]:ring-slate-200/70 dark:data-[state=active]:ring-slate-700/50", children: client.label }, client.id))) }), _jsxs("div", { className: "editorial-shadow group relative overflow-hidden rounded-xl border border-slate-200/60 bg-slate-50/60 dark:border-slate-700/50 dark:bg-slate-900/60", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-slate-200/60 bg-slate-100/40 px-3 py-2 dark:border-slate-700/50 dark:bg-slate-900/40", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "size-2 rounded-full bg-slate-300 dark:bg-slate-600", "aria-hidden": true }), _jsx("span", { className: "size-2 rounded-full bg-slate-300 dark:bg-slate-600", "aria-hidden": true }), _jsx("span", { className: "size-2 rounded-full bg-slate-300 dark:bg-slate-600", "aria-hidden": true })] }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "size-6 shrink-0", onClick: handleCopy, "aria-label": t('mcpServers.connect.copy'), children: copied ? _jsx(Check, { className: "text-primary size-3" }) : _jsx(Copy, { className: "size-3" }) })] }), _jsx("pre", { className: "max-h-64 overflow-auto p-3 font-mono text-[11px] leading-relaxed", children: _jsx("code", { children: snippet }) })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: t('mcpServers.connect.replaceKey') })] }));
106
+ }
@@ -0,0 +1,11 @@
1
+ import type { StoryObj } from '@storybook/react-vite';
2
+ import { McpConnectInstructions } from './mcp-connect-instructions.js';
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof McpConnectInstructions;
6
+ };
7
+ export default meta;
8
+ type Story = StoryObj<typeof meta>;
9
+ export declare const Default: Story;
10
+ export declare const HttpsProxy: Story;
11
+ //# sourceMappingURL=mcp-connect-instructions.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-connect-instructions.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,QAAA,MAAM,IAAI;;;CAGqC,CAAC;AAEhD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { McpConnectInstructions } from './mcp-connect-instructions.js';
2
+ const meta = {
3
+ title: 'Features/McpServers/McpConnectInstructions',
4
+ component: McpConnectInstructions,
5
+ };
6
+ export default meta;
7
+ export const Default = {
8
+ args: {
9
+ proxyBaseUrl: 'http://localhost:4000',
10
+ serverName: 'deepwiki_mcp',
11
+ },
12
+ };
13
+ export const HttpsProxy = {
14
+ args: {
15
+ proxyBaseUrl: 'https://litellm.example.com',
16
+ serverName: 'github_mcp',
17
+ },
18
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server-card.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-server-card.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gFAAgF,CAAC;AAEpH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAQD,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAyCrE"}
1
+ {"version":3,"file":"mcp-server-card.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-server-card.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gFAAgF,CAAC;AAEpH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAkDrE"}