@shipit-ai/cli 1.173.0 → 1.173.1-pr18.cc1c3ce
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.
- package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts +9 -1
- package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts +7 -3
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js +6 -5
- package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.js +10 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.js +11 -1
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts +10 -2
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +50 -13
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts +1 -1
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.js +2 -2
- package/dist/src/presentation/web/app/mcp-servers/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/mcp-servers/page.js +3 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts +19 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.js +108 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.stories.js +18 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.js +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts +2 -2
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +15 -9
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.js +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts +2 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +3 -4
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js +2 -2
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts +17 -13
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.js +22 -35
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.js +7 -8
- package/dist/translations/ar/web.json +6 -1
- package/dist/translations/de/web.json +6 -1
- package/dist/translations/en/web.json +6 -1
- package/dist/translations/es/web.json +6 -1
- package/dist/translations/fr/web.json +6 -1
- package/dist/translations/he/web.json +6 -1
- package/dist/translations/pt/web.json +6 -1
- package/dist/translations/ru/web.json +6 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -1
- package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/plugins/page.js.nft.json +1 -1
- package/web/.next/server/app/plugins/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +12 -12
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js +10 -0
- package/web/.next/server/chunks/ssr/0j.8_web_components_features_mcp-servers_mcp-servers-page-client_tsx_0dda8ih._.js.map +1 -0
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0mwao26._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0-09vq7._.js +1 -1
- package/web/.next/server/chunks/ssr/_0-09vq7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
- package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_096x3u~._.js +1 -1
- package/web/.next/server/chunks/ssr/_096x3u~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
- package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
- package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0av5r-b._.js +3 -0
- package/web/.next/server/chunks/ssr/_0av5r-b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0i0_q..._.js → _0b~rt5k._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0i0_q..._.js.map → _0b~rt5k._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
- package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
- package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0fswe4r._.js +3 -0
- package/web/.next/server/chunks/ssr/_0fswe4r._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_052jfzq._.js → _0g36k1q._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_052jfzq._.js.map → _0g36k1q._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_0wl~vw0._.js → _0ha3y7r._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0wl~vw0._.js.map → _0ha3y7r._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
- package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
- package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
- package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
- package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
- package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +57 -57
- package/web/.next/static/chunks/{0.zpc6-geo2pp.js → 0-479g9ihl1ga.js} +1 -1
- package/web/.next/static/chunks/{0yz729_n37__3.js → 02ow0rjxjqsob.js} +1 -1
- package/web/.next/static/chunks/{0j-doxnxl43yu.js → 04mde8apvce...js} +1 -1
- package/web/.next/static/chunks/05uewqqwl93w2.js +8 -0
- package/web/.next/static/chunks/{0xmqx8qtb0njk.js → 06fk~iz2u90ux.js} +1 -1
- package/web/.next/static/chunks/{0x_xky1fcolbm.js → 08-x1y93o~z1u.js} +1 -1
- package/web/.next/static/chunks/{0sgbbtfp4hspl.js → 0gz0lgz7pvrb5.js} +1 -1
- package/web/.next/static/chunks/0h2nh2s2b3ma2.css +1 -0
- package/web/.next/static/chunks/{156lo29queyhm.js → 0irjgz-p.9i6s.js} +1 -1
- package/web/.next/static/chunks/{09ix490-00s4x.js → 0isdv5nl9ixzx.js} +1 -1
- package/web/.next/static/chunks/{0sliw7pn2d_57.js → 0nkxltjer~us7.js} +1 -1
- package/web/.next/static/chunks/{0ghc-76~~v-cj.js → 0nw5kg.d92o~s.js} +2 -2
- package/web/.next/static/chunks/{11e3u3wkmfedd.js → 0~z22-y-2-50b.js} +1 -1
- package/web/.next/static/chunks/{0y~ts1~5mpg5h.js → 163wx0qvsyhgb.js} +1 -1
- package/web/.next/static/chunks/16mt3g3q98v_k.js +1 -0
- package/web/.next/static/chunks/173rm.h7j3_7c.js +1 -0
- package/web/.next/static/chunks/{0ferlvybqru33.js → 17t4j5hdn_bcj.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0ia4o6_._.js +0 -3
- package/web/.next/server/chunks/ssr/_0ia4o6_._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js +0 -3
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +0 -1
- package/web/.next/static/chunks/00h433i5-1v_-.css +0 -1
- package/web/.next/static/chunks/08tp-_of5~bcc.js +0 -1
- package/web/.next/static/chunks/0hkfexnwbsfyg.js +0 -1
- package/web/.next/static/chunks/0zy_h1essdthk.js +0 -1
- /package/web/.next/static/{8igTmoo1g4DAuDf2Tup6h → cK5RMkxfAPELBU1fhTnIV}/_buildManifest.js +0 -0
- /package/web/.next/static/{8igTmoo1g4DAuDf2Tup6h → cK5RMkxfAPELBU1fhTnIV}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{8igTmoo1g4DAuDf2Tup6h → cK5RMkxfAPELBU1fhTnIV}/_ssgManifest.js +0 -0
package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts
CHANGED
|
@@ -33,6 +33,14 @@ export interface McpToolInfo {
|
|
|
33
33
|
}
|
|
34
34
|
export interface IMcpServerBrowserService {
|
|
35
35
|
fetchServers(proxyBaseUrl: string, apiKey?: string): Promise<McpServerInfo[]>;
|
|
36
|
-
|
|
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;
|
|
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
|
|
5
|
-
*
|
|
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
|
|
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"}
|
package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js
CHANGED
|
@@ -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
|
|
5
|
-
*
|
|
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;
|
|
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"}
|
|
@@ -44,6 +44,9 @@ import { InstallPluginUseCase } from '../../../application/use-cases/plugins/ins
|
|
|
44
44
|
import { UninstallPluginUseCase } from '../../../application/use-cases/plugins/uninstall-plugin.use-case.js';
|
|
45
45
|
import { TogglePluginUseCase } from '../../../application/use-cases/plugins/toggle-plugin.use-case.js';
|
|
46
46
|
import { AddMarketplaceUseCase } from '../../../application/use-cases/plugins/add-marketplace.use-case.js';
|
|
47
|
+
// MCP server browser use cases
|
|
48
|
+
import { FetchMcpServersUseCase } from '../../../application/use-cases/mcp-servers/fetch-mcp-servers.use-case.js';
|
|
49
|
+
import { FetchMcpServerToolsUseCase } from '../../../application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js';
|
|
47
50
|
// Upgrade use case
|
|
48
51
|
import { UpgradeCliUseCase } from '../../../application/use-cases/upgrade/upgrade-cli.use-case.js';
|
|
49
52
|
// Interactive session use cases
|
|
@@ -181,4 +184,11 @@ export function registerWebTokensModule(container) {
|
|
|
181
184
|
container.register('AddMarketplaceUseCase', {
|
|
182
185
|
useFactory: (c) => c.resolve(AddMarketplaceUseCase),
|
|
183
186
|
});
|
|
187
|
+
// MCP server browser
|
|
188
|
+
container.register('FetchMcpServersUseCase', {
|
|
189
|
+
useFactory: (c) => c.resolve(FetchMcpServersUseCase),
|
|
190
|
+
});
|
|
191
|
+
container.register('FetchMcpServerToolsUseCase', {
|
|
192
|
+
useFactory: (c) => c.resolve(FetchMcpServerToolsUseCase),
|
|
193
|
+
});
|
|
184
194
|
}
|
|
@@ -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;
|
|
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
|
-
//
|
|
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
|
-
* -
|
|
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
|
|
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
|
-
* -
|
|
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 =
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
//
|
|
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,21 +101,36 @@ function parseAndValidateUrl(proxyBaseUrl) {
|
|
|
79
101
|
return null;
|
|
80
102
|
}
|
|
81
103
|
}
|
|
82
|
-
function
|
|
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
|
-
|
|
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;
|
|
@@ -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,
|
|
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,
|
|
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
|
}
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts
ADDED
|
@@ -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
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-connect-instructions.d.ts.map
ADDED
|
@@ -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,2CA6D/F"}
|
|
@@ -0,0 +1,108 @@
|
|
|
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", role: "tablist", children: CLIENTS.map((client) => (_jsx("button", { type: "button", role: "tab", "aria-selected": activeClient === client.id, onClick: () => setActiveClient(client.id), className: activeClient === client.id
|
|
106
|
+
? 'bg-primary text-primary-foreground rounded-md px-2.5 py-1 text-xs font-medium'
|
|
107
|
+
: 'border-border hover:bg-muted rounded-md border px-2.5 py-1 text-xs', children: client.label }, client.id))) }), _jsxs("div", { className: "relative", children: [_jsx("pre", { className: "bg-muted max-h-64 overflow-auto rounded-md p-3 pr-10 font-mono text-[11px] leading-relaxed", children: _jsx("code", { children: snippet }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "absolute top-1 right-1 h-7 w-7", onClick: handleCopy, "aria-label": t('mcpServers.connect.copy'), children: copied ? (_jsx(Check, { className: "text-primary h-3.5 w-3.5" })) : (_jsx(Copy, { className: "h-3.5 w-3.5" })) })] }), _jsx("p", { className: "text-muted-foreground text-xs", children: t('mcpServers.connect.replaceKey') })] }));
|
|
108
|
+
}
|
|
@@ -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
|
+
};
|
|
@@ -10,7 +10,7 @@ const TRANSPORT_ICONS = {
|
|
|
10
10
|
stdio: Terminal,
|
|
11
11
|
};
|
|
12
12
|
export function McpServerCard({ server, onSelect }) {
|
|
13
|
-
const { t } = useTranslation();
|
|
13
|
+
const { t } = useTranslation('web');
|
|
14
14
|
const TransportIcon = TRANSPORT_ICONS[server.transport] ?? Server;
|
|
15
15
|
const description = server.mcp_info?.description ?? '';
|
|
16
16
|
return (_jsxs(Card, { className: "cursor-pointer p-5 transition-all duration-300 hover:scale-[1.02] hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600", role: "button", tabIndex: 0, onClick: () => onSelect(server), onKeyDown: (e) => {
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts
CHANGED
|
@@ -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
|
-
|
|
4
|
+
proxyBaseUrl: string;
|
|
5
5
|
open: boolean;
|
|
6
6
|
onClose: () => void;
|
|
7
7
|
}
|
|
8
|
-
export declare function McpServerDetailDrawer({ server,
|
|
8
|
+
export declare function McpServerDetailDrawer({ server, proxyBaseUrl, open, onClose, }: McpServerDetailDrawerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=mcp-server-detail-drawer.d.ts.map
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map
CHANGED
|
@@ -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":"
|
|
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"}
|