@shipit-ai/cli 1.172.0 → 1.173.0-pr17.286f21f
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/apis/json-schema/FeatureFlags.yaml +5 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts +38 -0
- package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/mcp-server-browser.interface.js +12 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts +23 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-server-tools.use-case.js +49 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.d.ts +23 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/mcp-servers/fetch-mcp-servers.use-case.js +49 -0
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
- package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/services.module.js +3 -0
- package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.js +6 -0
- 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/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/057-add-mcp-servers-flag.js +16 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/index.js +1 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts +65 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.schema.js +53 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts +17 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/mcp-server-browser/mcp-server-browser.service.js +113 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts +5 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-server-tools.js +11 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-servers.d.ts +5 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-servers.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/fetch-mcp-servers.js +11 -0
- package/dist/src/presentation/web/app/mcp-servers/page.d.ts +2 -0
- package/dist/src/presentation/web/app/mcp-servers/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/mcp-servers/page.js +20 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts +8 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.js +22 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.d.ts +15 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-card.stories.js +56 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts +10 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.js +52 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts +16 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-server-detail-drawer.stories.js +42 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts +6 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.js +59 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js +12 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts +23 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.js +48 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts +12 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.js +32 -0
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +7 -0
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +2 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
- package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/feature-flags.js +6 -0
- package/dist/translations/ar/web.json +50 -12
- package/dist/translations/de/web.json +70 -18
- package/dist/translations/en/web.json +51 -13
- package/dist/translations/es/web.json +51 -13
- package/dist/translations/fr/web.json +51 -13
- package/dist/translations/he/web.json +51 -13
- package/dist/translations/pt/web.json +51 -13
- package/dist/translations/ru/web.json +51 -13
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +1 -0
- 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/routes-manifest.json +6 -0
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/app-paths-manifest.json +3 -0
- package/web/.next/server/app/mcp-servers/page/build-manifest.json +18 -0
- package/web/.next/server/app/mcp-servers/page/next-font-manifest.json +10 -0
- package/web/.next/server/app/mcp-servers/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/mcp-servers/page/server-reference-manifest.json +161 -0
- package/web/.next/server/app/mcp-servers/page.js +17 -0
- package/web/.next/server/app/mcp-servers/page.js.map +5 -0
- package/web/.next/server/app/mcp-servers/page.js.nft.json +1 -0
- package/web/.next/server/app/mcp-servers/page_client-reference-manifest.js +3 -0
- package/web/.next/server/app/plugins/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/plugins/page.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/app-paths-manifest.json +1 -0
- package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +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/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/11es_next_dist_esm_build_templates_app-page_0-p.z5-.js +4 -0
- package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0-p.z5-.js.map +1 -0
- package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0un-3~2.js +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]__0b~nfa6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b~nfa6._.js.map +1 -0
- 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]__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]__11-~i9u._.js +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 +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__13pshs0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0tcccbb._.js → _0.rsra~._.js} +2 -2
- package/web/.next/server/chunks/ssr/_0.rsra~._.js.map +1 -0
- 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/{_0ik5uly._.js → _02m0xnc._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0ik5uly._.js.map → _02m0xnc._.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 +3 -0
- package/web/.next/server/chunks/ssr/{_10joy2y._.js.map → _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/_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/_0ia4o6_._.js +3 -0
- package/web/.next/server/chunks/ssr/_0ia4o6_._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0o.xc6x._.js +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/_0u3d8.n._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0vqmej8._.js +3 -0
- package/web/.next/server/chunks/ssr/_0vqmej8._.js.map +1 -0
- 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/_0xeb68s._.js +3 -0
- package/web/.next/server/chunks/ssr/{_0pqw.55._.js.map → _0xeb68s._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_13o1d1i._.js → _0y7~q3z._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_13o1d1i._.js.map → _0y7~q3z._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0ygafoy._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ygafoy._.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/{_083k45~._.js → _1031n_-._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_083k45~._.js.map → _1031n_-._.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/{_05fk0a4._.js → _12y_u2z._.js} +2 -2
- package/web/.next/server/chunks/ssr/_12y_u2z._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_mcp-servers_page_actions_0d.r4q..js.map +1 -0
- 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/next-font-manifest.js +1 -1
- package/web/.next/server/next-font-manifest.json +3 -0
- 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 +145 -55
- package/web/.next/static/chunks/{0aworyfo5xz3f.js → 0-4nqflupymp~.js} +1 -1
- package/web/.next/static/chunks/00h433i5-1v_-.css +1 -0
- package/web/.next/static/chunks/04beh2pn2wh6s.js +1 -0
- package/web/.next/static/chunks/04~wdwkqgr57x.js +1 -0
- package/web/.next/static/chunks/064mj~2uat.tj.js +1 -0
- package/web/.next/static/chunks/{16678zkd7o7-z.js → 0_7fl3r_-4kdw.js} +1 -1
- package/web/.next/static/chunks/{0rm13o3bvc9o..js → 0b6or2dp6k56l.js} +1 -1
- package/web/.next/static/chunks/{100y4~jpwu8~t.js → 0bp-tvpt-xg7a.js} +3 -3
- package/web/.next/static/chunks/{0q.xmdro9u05g.js → 0bqgo0dsz-c.1.js} +1 -1
- package/web/.next/static/chunks/0ipfq1-rv2ix~.js +1 -0
- package/web/.next/static/chunks/{0ddwj6.~yj.u5.js → 0k58y--0y8pw5.js} +1 -1
- package/web/.next/static/chunks/{0m0hb2m1lgy.r.js → 0le~km314b.fa.js} +1 -1
- package/web/.next/static/chunks/{0b2pi58fg3lt3.js → 0pm3xcdn669n~.js} +1 -1
- package/web/.next/static/chunks/{012cnd7koqv6d.js → 0sgbbtfp4hspl.js} +2 -2
- package/web/.next/static/chunks/0snp9rjsftzvd.js +1 -0
- package/web/.next/static/chunks/{07e~pkh4ikdtq.js → 0xh3cljc6er3~.js} +1 -1
- package/web/.next/static/chunks/0xqs42epz00--.js +1 -0
- package/web/.next/static/chunks/{10rtagfoabp3b.js → 10j-adknfho63.js} +1 -1
- package/web/.next/static/chunks/{0rd5nu5ru3gje.js → 154p_w6872ff6.js} +1 -1
- package/web/.next/static/chunks/15izkiwfc5ym~.js +5 -0
- package/web/.next/static/chunks/{0o4m0k3642219.js → 15lkkh2eg.w0h.js} +1 -1
- package/web/.next/static/chunks/{0prk~fhfyg~yg.js → 15p0buuq90uko.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_05fk0a4._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0i~-084._.js +0 -3
- package/web/.next/server/chunks/ssr/_0i~-084._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0pqw.55._.js +0 -3
- package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_10joy2y._.js +0 -3
- package/web/.next/static/chunks/02e5.-kk~ag_i.js +0 -1
- package/web/.next/static/chunks/0aom-74j.wtkt.js +0 -1
- package/web/.next/static/chunks/0lc0x8kcu46ae.js +0 -1
- package/web/.next/static/chunks/0ug478hm-8bog.js +0 -5
- package/web/.next/static/chunks/0uz.~ob1qtjhj.js +0 -1
- package/web/.next/static/chunks/0v7r7y~3e~oo6.css +0 -1
- package/web/.next/static/chunks/0vb84wrbin-ef.js +0 -1
- /package/web/.next/static/{hWgOeXuQ6p-VoJvFXhk5g → SE2oN139b-bDDhUK4nhB5}/_buildManifest.js +0 -0
- /package/web/.next/static/{hWgOeXuQ6p-VoJvFXhk5g → SE2oN139b-bDDhUK4nhB5}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{hWgOeXuQ6p-VoJvFXhk5g → SE2oN139b-bDDhUK4nhB5}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { AlertCircle, Search, Server } from 'lucide-react';
|
|
6
|
+
import { Input } from '../../ui/input.js';
|
|
7
|
+
import { Badge } from '../../ui/badge.js';
|
|
8
|
+
import { EmptyState } from '../../common/empty-state/index.js';
|
|
9
|
+
import { McpServerCard } from './mcp-server-card.js';
|
|
10
|
+
import { McpServerDetailDrawer } from './mcp-server-detail-drawer.js';
|
|
11
|
+
import { fetchMcpServersAction } from '../../../app/actions/fetch-mcp-servers.js';
|
|
12
|
+
const TRANSPORT_FILTERS = ['all', 'http', 'sse', 'stdio'];
|
|
13
|
+
export function McpServersPageClient({ proxyConfigured }) {
|
|
14
|
+
const { t } = useTranslation('web');
|
|
15
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
16
|
+
const [transportFilter, setTransportFilter] = useState('all');
|
|
17
|
+
const [selectedServer, setSelectedServer] = useState(null);
|
|
18
|
+
const [servers, setServers] = useState([]);
|
|
19
|
+
const [loading, setLoading] = useState(true);
|
|
20
|
+
const [error, setError] = useState(null);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!proxyConfigured) {
|
|
23
|
+
setLoading(false);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
fetchMcpServersAction()
|
|
27
|
+
.then((result) => {
|
|
28
|
+
setServers(result.servers);
|
|
29
|
+
if (result.error)
|
|
30
|
+
setError(result.error);
|
|
31
|
+
})
|
|
32
|
+
.catch(() => {
|
|
33
|
+
setError(t('mcpServers.fetchError'));
|
|
34
|
+
})
|
|
35
|
+
.finally(() => {
|
|
36
|
+
setLoading(false);
|
|
37
|
+
});
|
|
38
|
+
}, [proxyConfigured, t]);
|
|
39
|
+
const serverNames = useMemo(() => servers.map((s) => s.server_name), [servers]);
|
|
40
|
+
const filtered = useMemo(() => {
|
|
41
|
+
return servers.filter((server) => {
|
|
42
|
+
const query = searchQuery.toLowerCase();
|
|
43
|
+
const matchesQuery = !query ||
|
|
44
|
+
server.name.toLowerCase().includes(query) ||
|
|
45
|
+
(server.mcp_info?.description ?? '').toLowerCase().includes(query);
|
|
46
|
+
const matchesTransport = transportFilter === 'all' || server.transport === transportFilter;
|
|
47
|
+
return matchesQuery && matchesTransport;
|
|
48
|
+
});
|
|
49
|
+
}, [servers, searchQuery, transportFilter]);
|
|
50
|
+
if (!proxyConfigured) {
|
|
51
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center p-8", children: _jsx(EmptyState, { icon: _jsx(AlertCircle, { className: "h-8 w-8" }), title: t('mcpServers.noProxy') }) }));
|
|
52
|
+
}
|
|
53
|
+
if (loading) {
|
|
54
|
+
return (_jsx("div", { className: "flex h-full items-center justify-center p-8", children: _jsxs("p", { className: "text-muted-foreground", children: [t('accessibility.loading'), "..."] }) }));
|
|
55
|
+
}
|
|
56
|
+
return (_jsxs("div", { className: "space-y-6 p-6", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold", children: t('mcpServers.title') }), error ? (_jsx("div", { className: "border-destructive/50 bg-destructive/10 mt-2 rounded-md border p-3", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(AlertCircle, { className: "text-destructive h-4 w-4" }), _jsx("p", { className: "text-destructive text-sm", children: error })] }) })) : null, _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: t('mcpServers.subtitle') })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx(Input, { placeholder: t('mcpServers.searchPlaceholder'), value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "max-w-xs" }), _jsx("div", { className: "flex gap-1", children: TRANSPORT_FILTERS.map((filter) => (_jsx(Badge, { variant: transportFilter === filter ? 'default' : 'outline', className: "cursor-pointer", onClick: () => setTransportFilter(filter), children: filter === 'all'
|
|
57
|
+
? t('mcpServers.filter.all')
|
|
58
|
+
: t(`mcpServers.transport.${filter}`, filter.toUpperCase()) }, filter))) })] }), filtered.length === 0 ? (_jsx("div", { className: "flex items-center justify-center py-16", children: _jsx(EmptyState, { icon: servers.length === 0 ? _jsx(Server, { className: "h-8 w-8" }) : _jsx(Search, { className: "h-8 w-8" }), title: servers.length === 0 ? t('mcpServers.noServers') : t('mcpServers.noResults') }) })) : (_jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3", children: filtered.map((server) => (_jsx(McpServerCard, { server: server, onSelect: setSelectedServer }, server.server_id))) })), _jsx(McpServerDetailDrawer, { server: selectedServer, serverNames: serverNames, open: !!selectedServer, onClose: () => setSelectedServer(null) })] }));
|
|
59
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { McpServersPageClient } from './mcp-servers-page-client.js';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof McpServersPageClient;
|
|
6
|
+
};
|
|
7
|
+
export default meta;
|
|
8
|
+
type Story = StoryObj<typeof meta>;
|
|
9
|
+
export declare const Default: Story;
|
|
10
|
+
export declare const NoProxy: Story;
|
|
11
|
+
//# sourceMappingURL=mcp-servers-page-client.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-servers-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,QAAA,MAAM,IAAI;;;CAGmC,CAAC;AAE9C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC"}
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-servers-page-client.stories.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { McpServersPageClient } from './mcp-servers-page-client.js';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Features/McpServers/McpServersPageClient',
|
|
4
|
+
component: McpServersPageClient,
|
|
5
|
+
};
|
|
6
|
+
export default meta;
|
|
7
|
+
export const Default = {
|
|
8
|
+
args: { proxyConfigured: true },
|
|
9
|
+
};
|
|
10
|
+
export const NoProxy = {
|
|
11
|
+
args: { proxyConfigured: false },
|
|
12
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { McpToolInfo } from '../../../../../../packages/core/src/application/ports/output/services/mcp-server-browser.interface.js';
|
|
2
|
+
interface McpToolListProps {
|
|
3
|
+
tools: McpToolInfo[];
|
|
4
|
+
serverNames: string[];
|
|
5
|
+
}
|
|
6
|
+
interface GroupedTools {
|
|
7
|
+
serverName: string;
|
|
8
|
+
tools: {
|
|
9
|
+
displayName: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
}[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Groups tools by server name prefix.
|
|
15
|
+
*
|
|
16
|
+
* LiteLLM prefixes tool names with `{server_name}-` (e.g., `github_mcp-list_issues`).
|
|
17
|
+
* We match each tool's name against known server names and strip the prefix for display.
|
|
18
|
+
* Tools with no matching prefix go in an "Other" group.
|
|
19
|
+
*/
|
|
20
|
+
export declare function groupToolsByServer(tools: McpToolInfo[], serverNames: string[]): GroupedTools[];
|
|
21
|
+
export declare function McpToolList({ tools, serverNames }: McpToolListProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=mcp-tool-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-tool-list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CA2B9F;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CAoCnE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { Badge } from '../../ui/badge.js';
|
|
6
|
+
/**
|
|
7
|
+
* Groups tools by server name prefix.
|
|
8
|
+
*
|
|
9
|
+
* LiteLLM prefixes tool names with `{server_name}-` (e.g., `github_mcp-list_issues`).
|
|
10
|
+
* We match each tool's name against known server names and strip the prefix for display.
|
|
11
|
+
* Tools with no matching prefix go in an "Other" group.
|
|
12
|
+
*/
|
|
13
|
+
export function groupToolsByServer(tools, serverNames) {
|
|
14
|
+
const groups = new Map();
|
|
15
|
+
for (const tool of tools) {
|
|
16
|
+
let matched = false;
|
|
17
|
+
for (const serverName of serverNames) {
|
|
18
|
+
const prefix = `${serverName}-`;
|
|
19
|
+
if (tool.name.startsWith(prefix)) {
|
|
20
|
+
const displayName = tool.name.slice(prefix.length);
|
|
21
|
+
if (!groups.has(serverName))
|
|
22
|
+
groups.set(serverName, []);
|
|
23
|
+
groups.get(serverName).push({ displayName, description: tool.description });
|
|
24
|
+
matched = true;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (!matched) {
|
|
29
|
+
if (!groups.has('other'))
|
|
30
|
+
groups.set('other', []);
|
|
31
|
+
groups.get('other').push({ displayName: tool.name, description: tool.description });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return Array.from(groups.entries())
|
|
35
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
36
|
+
.map(([serverName, tools]) => ({
|
|
37
|
+
serverName,
|
|
38
|
+
tools: tools.sort((a, b) => a.displayName.localeCompare(b.displayName)),
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
export function McpToolList({ tools, serverNames }) {
|
|
42
|
+
const { t } = useTranslation('web');
|
|
43
|
+
const grouped = useMemo(() => groupToolsByServer(tools, serverNames), [tools, serverNames]);
|
|
44
|
+
if (tools.length === 0) {
|
|
45
|
+
return _jsx("p", { className: "text-muted-foreground text-sm", children: t('mcpServers.tools.noTools') });
|
|
46
|
+
}
|
|
47
|
+
return (_jsx("div", { className: "space-y-4", children: grouped.map((group) => (_jsxs("div", { children: [_jsx("h4", { className: "text-muted-foreground mb-2 text-xs font-medium tracking-wider uppercase", children: group.serverName === 'other' ? t('mcpServers.tools.other') : group.serverName }), _jsx("div", { className: "space-y-2", children: group.tools.map((tool) => (_jsxs("div", { className: "rounded-md border p-2", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsx(Badge, { variant: "outline", className: "font-mono text-xs", children: tool.displayName }) }), tool.description ? (_jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: tool.description })) : null] }, `${group.serverName}-${tool.displayName}`))) })] }, group.serverName))) }));
|
|
48
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { McpToolList } from './mcp-tool-list.js';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof McpToolList;
|
|
6
|
+
};
|
|
7
|
+
export default meta;
|
|
8
|
+
type Story = StoryObj<typeof meta>;
|
|
9
|
+
export declare const WithTools: Story;
|
|
10
|
+
export declare const NoTools: Story;
|
|
11
|
+
export declare const UnmatchedTools: Story;
|
|
12
|
+
//# sourceMappingURL=mcp-tool-list.stories.d.ts.map
|
package/dist/src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-list.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/mcp-servers/mcp-tool-list.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,QAAA,MAAM,IAAI;;;CAG0B,CAAC;AAErC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,KAUvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAQ5B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { McpToolList } from './mcp-tool-list.js';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'Features/McpServers/McpToolList',
|
|
4
|
+
component: McpToolList,
|
|
5
|
+
};
|
|
6
|
+
export default meta;
|
|
7
|
+
export const WithTools = {
|
|
8
|
+
args: {
|
|
9
|
+
serverNames: ['deepwiki-mcp', 'github_mcp'],
|
|
10
|
+
tools: [
|
|
11
|
+
{ name: 'deepwiki-mcp-read_wiki', description: 'Read wiki contents' },
|
|
12
|
+
{ name: 'deepwiki-mcp-search', description: 'Search documentation' },
|
|
13
|
+
{ name: 'github_mcp-list_issues', description: 'List GitHub issues' },
|
|
14
|
+
{ name: 'github_mcp-create_issue', description: 'Create a new issue' },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export const NoTools = {
|
|
19
|
+
args: {
|
|
20
|
+
serverNames: ['deepwiki-mcp'],
|
|
21
|
+
tools: [],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export const UnmatchedTools = {
|
|
25
|
+
args: {
|
|
26
|
+
serverNames: ['deepwiki-mcp'],
|
|
27
|
+
tools: [
|
|
28
|
+
{ name: 'deepwiki-mcp-read_wiki', description: 'Read wiki contents' },
|
|
29
|
+
{ name: 'unknown-server-tool', description: 'Tool from unknown server' },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,yCAAyC,CAAC;AAGtF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,gCAAgC,
|
|
1
|
+
{"version":3,"file":"feature-flags-settings-section.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,yCAAyC,CAAC;AAGtF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,gCAAgC,2CAqKzF"}
|
package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js
CHANGED
|
@@ -18,6 +18,7 @@ export function FeatureFlagsSettingsSection({ settings }) {
|
|
|
18
18
|
gitRebaseSync: false,
|
|
19
19
|
reactFileManager: false,
|
|
20
20
|
plugins: false,
|
|
21
|
+
mcpServers: false,
|
|
21
22
|
};
|
|
22
23
|
const [flags, setFlags] = useState({ ...featureFlags });
|
|
23
24
|
function save(payload) {
|
|
@@ -62,5 +63,11 @@ export function FeatureFlagsSettingsSection({ settings }) {
|
|
|
62
63
|
const newFlags = { ...flags, plugins: v };
|
|
63
64
|
setFlags(newFlags);
|
|
64
65
|
save({ featureFlags: newFlags });
|
|
66
|
+
} }), _jsx(SwitchRow, { label: t('settings.featureFlags.mcpServers'), description: settings.litellmProxy?.baseUrl
|
|
67
|
+
? t('settings.featureFlags.mcpServersDescription')
|
|
68
|
+
: `${t('settings.featureFlags.mcpServersDescription')} — ${t('mcpServers.noProxy')}`, tooltip: "Enables the MCP Servers page for viewing MCP servers deployed on your LiteLLM proxy. Requires a LiteLLM proxy URL to be configured.", id: "flag-mcp-servers", testId: "switch-flag-mcp-servers", checked: flags.mcpServers, disabled: !settings.litellmProxy?.baseUrl, onChange: (v) => {
|
|
69
|
+
const newFlags = { ...flags, mcpServers: v };
|
|
70
|
+
setFlags(newFlags);
|
|
71
|
+
save({ featureFlags: newFlags });
|
|
65
72
|
} })] }));
|
|
66
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAK/E,QAAA,MAAM,IAAI;;;;;;;CAO0C,CAAC;AAErD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"feature-flags-settings-section.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAK/E,QAAA,MAAM,IAAI;;;;;;;CAO0C,CAAC;AAErD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAiBxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAC"}
|
|
@@ -28,6 +28,7 @@ export const AllEnabled = {
|
|
|
28
28
|
gitRebaseSync: true,
|
|
29
29
|
reactFileManager: true,
|
|
30
30
|
plugins: true,
|
|
31
|
+
mcpServers: true,
|
|
31
32
|
},
|
|
32
33
|
},
|
|
33
34
|
},
|
|
@@ -45,6 +46,7 @@ export const AllDisabled = {
|
|
|
45
46
|
gitRebaseSync: false,
|
|
46
47
|
reactFileManager: false,
|
|
47
48
|
plugins: false,
|
|
49
|
+
mcpServers: false,
|
|
48
50
|
},
|
|
49
51
|
},
|
|
50
52
|
},
|
package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;;CAOiC,CAAC;AAE5C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"settings-page-client.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/settings/settings-page-client.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;;CAOiC,CAAC;AAE5C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAuBzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAa7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAsB5B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,aAAa,EAAE,KAW3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,iBAAiB,CAAC;IAEhC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,EAEZ,cAAc,GACf,EAAE,eAAe,2CAsSjB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { usePathname } from 'next/navigation';
|
|
5
|
-
import { Home, Moon, Sun, Volume2, VolumeOff, Zap, ZapOff, Wrench, Puzzle, Blocks, Settings, } from 'lucide-react';
|
|
5
|
+
import { Home, Moon, Sun, Volume2, VolumeOff, Zap, ZapOff, Wrench, Puzzle, Blocks, ServerIcon, Settings, } from 'lucide-react';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import { Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarMenu, SidebarMenuItem, SidebarMenuButton, useSidebar, } from '../../ui/sidebar.js';
|
|
8
8
|
import { ScrollArea } from '../../ui/scroll-area.js';
|
|
@@ -60,7 +60,7 @@ export function AppSidebar({ features, featureFlags, onFeatureClick, }) {
|
|
|
60
60
|
.filter((g) => g.items.length > 0),
|
|
61
61
|
}));
|
|
62
62
|
}, [features, t]);
|
|
63
|
-
return (_jsxs(Sidebar, { "data-testid": "app-sidebar", "data-no-drawer-close": true, collapsible: "icon", side: i18n.dir() === 'rtl' ? 'right' : 'left', children: [_jsx(SidebarHeader, { children: _jsxs(SidebarMenu, { children: [_jsx(SidebarMenuItem, { children: _jsxs("div", { className: "flex h-10 items-center px-2 group-data-[collapsible=icon]:justify-center", children: [_jsx(ShipitAiLogo, { className: "drop-shadow-[0_0_4px_rgba(34,211,238,0.4)]", size: 32, variant: versionData.isDev ? 'dev' : 'default', isOpen: Boolean(showExpanded && expandedVisible) }), showExpanded && expandedVisible ? (_jsx(VersionBadge, { version: versionData.version, branch: versionData.branch || undefined, commitHash: versionData.commitHash || undefined, isDev: versionData.isDev, packageName: versionData.packageName, description: versionData.description, instancePath: versionData.instancePath || undefined })) : null] }) }), _jsx(SidebarNavItem, { icon: Home, label: t('navigation.controlCenter'), href: "/", active: pathname === '/' }), _jsx(SidebarNavItem, { icon: Wrench, label: t('navigation.tools'), href: "/tools", active: pathname === '/tools' }), featureFlags.skills ? (_jsx(SidebarNavItem, { icon: Puzzle, label: t('navigation.skills'), href: "/skills", active: pathname === '/skills' })) : null, featureFlags.plugins ? (_jsx(SidebarNavItem, { icon: Blocks, label: t('navigation.plugins'), href: "/plugins", active: pathname === '/plugins' })) : null, _jsx(SidebarNavItem, { icon: Settings, label: t('navigation.settings'), href: "/settings", active: pathname === '/settings' })] }) }), _jsx(SidebarContent, { children: showExpanded ? (_jsx("div", { className: [
|
|
63
|
+
return (_jsxs(Sidebar, { "data-testid": "app-sidebar", "data-no-drawer-close": true, collapsible: "icon", side: i18n.dir() === 'rtl' ? 'right' : 'left', children: [_jsx(SidebarHeader, { children: _jsxs(SidebarMenu, { children: [_jsx(SidebarMenuItem, { children: _jsxs("div", { className: "flex h-10 items-center px-2 group-data-[collapsible=icon]:justify-center", children: [_jsx(ShipitAiLogo, { className: "drop-shadow-[0_0_4px_rgba(34,211,238,0.4)]", size: 32, variant: versionData.isDev ? 'dev' : 'default', isOpen: Boolean(showExpanded && expandedVisible) }), showExpanded && expandedVisible ? (_jsx(VersionBadge, { version: versionData.version, branch: versionData.branch || undefined, commitHash: versionData.commitHash || undefined, isDev: versionData.isDev, packageName: versionData.packageName, description: versionData.description, instancePath: versionData.instancePath || undefined })) : null] }) }), _jsx(SidebarNavItem, { icon: Home, label: t('navigation.controlCenter'), href: "/", active: pathname === '/' }), _jsx(SidebarNavItem, { icon: Wrench, label: t('navigation.tools'), href: "/tools", active: pathname === '/tools' }), featureFlags.skills ? (_jsx(SidebarNavItem, { icon: Puzzle, label: t('navigation.skills'), href: "/skills", active: pathname === '/skills' })) : null, featureFlags.plugins ? (_jsx(SidebarNavItem, { icon: Blocks, label: t('navigation.plugins'), href: "/plugins", active: pathname === '/plugins' })) : null, featureFlags.mcpServers ? (_jsx(SidebarNavItem, { icon: ServerIcon, label: t('navigation.mcpServers'), href: "/mcp-servers", active: pathname === '/mcp-servers' })) : null, _jsx(SidebarNavItem, { icon: Settings, label: t('navigation.settings'), href: "/settings", active: pathname === '/settings' })] }) }), _jsx(SidebarContent, { children: showExpanded ? (_jsx("div", { className: [
|
|
64
64
|
'flex min-h-0 flex-1 flex-col overflow-hidden transition-opacity duration-200 ease-out',
|
|
65
65
|
'[&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none',
|
|
66
66
|
expandedVisible ? 'opacity-100' : 'opacity-0',
|
package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"app-sidebar.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkB3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAyBjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA+DnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAIlC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAqB3B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KA6BrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAmElC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags-context.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/feature-flags-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-flags-context.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/feature-flags-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAgB7D,UAAU,yBAAyB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,yBAAyB,2CAElF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAEnD"}
|
|
@@ -14,6 +14,7 @@ export interface FeatureFlagsState {
|
|
|
14
14
|
gitRebaseSync: boolean;
|
|
15
15
|
reactFileManager: boolean;
|
|
16
16
|
plugins: boolean;
|
|
17
|
+
mcpServers: boolean;
|
|
17
18
|
}
|
|
18
19
|
export declare function getFeatureFlags(): Promise<FeatureFlagsState>;
|
|
19
20
|
/**
|
|
@@ -29,5 +30,6 @@ export declare const featureFlags: {
|
|
|
29
30
|
readonly gitRebaseSync: boolean;
|
|
30
31
|
readonly reactFileManager: boolean;
|
|
31
32
|
readonly plugins: boolean;
|
|
33
|
+
readonly mcpServers: boolean;
|
|
32
34
|
};
|
|
33
35
|
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAiClE;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CA4Bf,CAAC"}
|
|
@@ -20,6 +20,7 @@ const ENV_FALLBACK_FLAGS = {
|
|
|
20
20
|
gitRebaseSync: () => false,
|
|
21
21
|
reactFileManager: () => isEnabled(process.env.NEXT_PUBLIC_FLAG_REACT_FILE_MANAGER),
|
|
22
22
|
plugins: () => false,
|
|
23
|
+
mcpServers: () => false,
|
|
23
24
|
};
|
|
24
25
|
export async function getFeatureFlags() {
|
|
25
26
|
try {
|
|
@@ -36,6 +37,7 @@ export async function getFeatureFlags() {
|
|
|
36
37
|
gitRebaseSync: flags.gitRebaseSync,
|
|
37
38
|
reactFileManager: flags.reactFileManager,
|
|
38
39
|
plugins: flags.plugins,
|
|
40
|
+
mcpServers: flags.mcpServers,
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
}
|
|
@@ -51,6 +53,7 @@ export async function getFeatureFlags() {
|
|
|
51
53
|
gitRebaseSync: ENV_FALLBACK_FLAGS.gitRebaseSync(),
|
|
52
54
|
reactFileManager: ENV_FALLBACK_FLAGS.reactFileManager(),
|
|
53
55
|
plugins: ENV_FALLBACK_FLAGS.plugins(),
|
|
56
|
+
mcpServers: ENV_FALLBACK_FLAGS.mcpServers(),
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
/**
|
|
@@ -82,4 +85,7 @@ export const featureFlags = {
|
|
|
82
85
|
get plugins() {
|
|
83
86
|
return ENV_FALLBACK_FLAGS.plugins();
|
|
84
87
|
},
|
|
88
|
+
get mcpServers() {
|
|
89
|
+
return ENV_FALLBACK_FLAGS.mcpServers();
|
|
90
|
+
},
|
|
85
91
|
};
|
|
@@ -212,7 +212,9 @@
|
|
|
212
212
|
"reactFileManagerDescription": "استخدام مدير ملفات React المدمج بدلاً من منتقي مجلدات نظام التشغيل الأصلي",
|
|
213
213
|
"plugins": "Plugins Marketplace",
|
|
214
214
|
"pluginsDescription": "Enable the Claude Code plugins marketplace browser",
|
|
215
|
-
"hint": "ميزات تجريبية لا تزال قيد التطوير. قم بتمكينها على مسؤوليتك — قد تتغير أو تُزال في الإصدارات المستقبلية. وضع التصحيح يضيف تسجيلًا مفصلاً مفيدًا لاستكشاف الأخطاء."
|
|
215
|
+
"hint": "ميزات تجريبية لا تزال قيد التطوير. قم بتمكينها على مسؤوليتك — قد تتغير أو تُزال في الإصدارات المستقبلية. وضع التصحيح يضيف تسجيلًا مفصلاً مفيدًا لاستكشاف الأخطاء.",
|
|
216
|
+
"mcpServers": "MCP Servers",
|
|
217
|
+
"mcpServersDescription": "Enable the MCP servers browser for viewing LiteLLM proxy MCP servers"
|
|
216
218
|
},
|
|
217
219
|
"litellmProxy": {
|
|
218
220
|
"title": "LiteLLM Proxy",
|
|
@@ -291,7 +293,8 @@
|
|
|
291
293
|
"sessions": "الجلسات",
|
|
292
294
|
"tools": "الأدوات",
|
|
293
295
|
"skills": "المهارات",
|
|
294
|
-
"plugins": "Plugins"
|
|
296
|
+
"plugins": "Plugins",
|
|
297
|
+
"mcpServers": "MCP Servers"
|
|
295
298
|
},
|
|
296
299
|
"sidebar": {
|
|
297
300
|
"features": "الميزات",
|
|
@@ -313,7 +316,7 @@
|
|
|
313
316
|
"deleteSubFeatures": "حذف الميزات الفرعية",
|
|
314
317
|
"closePullRequest": "إغلاق طلب السحب",
|
|
315
318
|
"cancel": "إلغاء",
|
|
316
|
-
"deleting": "جارٍ
|
|
319
|
+
"deleting": "جارٍ الحذف…",
|
|
317
320
|
"delete": "حذف"
|
|
318
321
|
},
|
|
319
322
|
"rejectFeedback": {
|
|
@@ -322,23 +325,23 @@
|
|
|
322
325
|
"ariaLabel": "ملاحظات الرفض",
|
|
323
326
|
"placeholder": "صِف ما يحتاج إلى تغيير...",
|
|
324
327
|
"cancel": "إلغاء",
|
|
325
|
-
"rejecting": "جارٍ
|
|
328
|
+
"rejecting": "جارٍ الرفض…",
|
|
326
329
|
"confirmReject": "تأكيد الرفض"
|
|
327
330
|
},
|
|
328
331
|
"emptyState": {
|
|
329
332
|
"addProject": "إضافة مشروع",
|
|
330
333
|
"addProjectDescription": "أضف مجلد مشروعك لفتح إمكانية إنشاء الميزات.",
|
|
331
|
-
"addProjectDescriptionLine2": "صِف ما تحتاجه
|
|
332
|
-
"checkingSetup": "جارٍ التحقق من
|
|
334
|
+
"addProjectDescriptionLine2": "صِف ما تحتاجه — ShipIT AI يتولى الباقي.",
|
|
335
|
+
"checkingSetup": "جارٍ التحقق من الإعداد…",
|
|
333
336
|
"ready": "{{label}} جاهز",
|
|
334
337
|
"notInstalled": "{{label}} غير مثبت",
|
|
335
338
|
"reCheck": "إعادة التحقق",
|
|
336
339
|
"needsAuth": "{{label}} يحتاج إلى مصادقة",
|
|
337
340
|
"open": "فتح {{label}}",
|
|
338
|
-
"checking": "جارٍ التحقق من {{label}}
|
|
341
|
+
"checking": "جارٍ التحقق من {{label}}…",
|
|
339
342
|
"notFound": "{{label}} غير موجود",
|
|
340
343
|
"docs": "التوثيق",
|
|
341
|
-
"opening": "جارٍ
|
|
344
|
+
"opening": "جارٍ الفتح…",
|
|
342
345
|
"chooseFolder": "اختر مجلدًا",
|
|
343
346
|
"folderHint": "أي مجلد يعمل — سيتم تهيئة git تلقائيًا إذا لزم الأمر.",
|
|
344
347
|
"orUseCli": "أو استخدم CLI",
|
|
@@ -349,7 +352,7 @@
|
|
|
349
352
|
"githubCliRequired": "مطلوب لطلبات السحب"
|
|
350
353
|
},
|
|
351
354
|
"welcome": {
|
|
352
|
-
"loadingAgents": "جارٍ تحميل
|
|
355
|
+
"loadingAgents": "جارٍ تحميل الوكلاء…",
|
|
353
356
|
"chooseAgent": "اختر وكيلك",
|
|
354
357
|
"pickModel": "اختر نموذجًا",
|
|
355
358
|
"selectAgentSubtitle": "اختر وكيل البرمجة بالذكاء الاصطناعي الذي تريد أن يستخدمه ShipIT AI.",
|
|
@@ -397,11 +400,11 @@
|
|
|
397
400
|
"stopDevServer": "إيقاف الخادم",
|
|
398
401
|
"startDevServer": "تشغيل الخادم",
|
|
399
402
|
"retryDevServer": "إعادة تشغيل الخادم",
|
|
400
|
-
"starting": "جارٍ
|
|
403
|
+
"starting": "جارٍ التشغيل…",
|
|
401
404
|
"retry": "إعادة المحاولة",
|
|
402
405
|
"start": "تشغيل",
|
|
403
406
|
"failed": "فشل",
|
|
404
|
-
"deleting": "جارٍ
|
|
407
|
+
"deleting": "جارٍ الحذف…",
|
|
405
408
|
"addFeature": "إضافة ميزة",
|
|
406
409
|
"reviewRequirements": "مراجعة المتطلبات",
|
|
407
410
|
"reviewTechnicalPlan": "مراجعة الخطة التقنية",
|
|
@@ -636,7 +639,7 @@
|
|
|
636
639
|
"addRepository": "إضافة مستودع"
|
|
637
640
|
},
|
|
638
641
|
"modelPicker": {
|
|
639
|
-
"searchPlaceholder": "البحث أو كتابة معرف
|
|
642
|
+
"searchPlaceholder": "البحث أو كتابة معرف النموذج…"
|
|
640
643
|
},
|
|
641
644
|
"skills": {
|
|
642
645
|
"searchPlaceholder": "البحث عن مهارات..."
|
|
@@ -679,5 +682,40 @@
|
|
|
679
682
|
"card": {
|
|
680
683
|
"permissionOverride": "الإذن: {{mode}}"
|
|
681
684
|
}
|
|
685
|
+
},
|
|
686
|
+
"mcpServers": {
|
|
687
|
+
"title": "MCP Servers",
|
|
688
|
+
"subtitle": "Browse MCP servers deployed on your LiteLLM proxy",
|
|
689
|
+
"noProxy": "No LiteLLM proxy configured. Add a proxy URL in Settings to browse MCP servers.",
|
|
690
|
+
"noServers": "No MCP servers found",
|
|
691
|
+
"noResults": "No servers match your search",
|
|
692
|
+
"searchPlaceholder": "Search servers...",
|
|
693
|
+
"filter": {
|
|
694
|
+
"all": "All"
|
|
695
|
+
},
|
|
696
|
+
"transport": {
|
|
697
|
+
"http": "HTTP",
|
|
698
|
+
"sse": "SSE",
|
|
699
|
+
"stdio": "STDIO"
|
|
700
|
+
},
|
|
701
|
+
"authType": {
|
|
702
|
+
"api_key": "API Key",
|
|
703
|
+
"bearer_token": "Bearer Token",
|
|
704
|
+
"basic": "Basic",
|
|
705
|
+
"oauth2": "OAuth2",
|
|
706
|
+
"aws_sigv4": "AWS SigV4"
|
|
707
|
+
},
|
|
708
|
+
"detail": {
|
|
709
|
+
"serverName": "Server Name",
|
|
710
|
+
"url": "URL",
|
|
711
|
+
"transport": "Transport",
|
|
712
|
+
"authType": "Auth Type"
|
|
713
|
+
},
|
|
714
|
+
"tools": {
|
|
715
|
+
"title": "Available Tools",
|
|
716
|
+
"noTools": "No tools available",
|
|
717
|
+
"other": "Other"
|
|
718
|
+
},
|
|
719
|
+
"fetchError": "Failed to fetch MCP servers. Check your proxy configuration."
|
|
682
720
|
}
|
|
683
721
|
}
|