@shipit-ai/cli 1.172.0 → 1.173.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- 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/_0-09vq7._.js +1 -1
- package/web/.next/server/chunks/ssr/_0-09vq7._.js.map +1 -1
- 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/{_0pqw.55._.js → _052jfzq._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0pqw.55._.js.map → _052jfzq._.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/{_13o1d1i._.js → _0i0_q..._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_13o1d1i._.js.map → _0i0_q..._.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/{_0ik5uly._.js → _0wl~vw0._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0ik5uly._.js.map → _0wl~vw0._.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/0.zpc6-geo2pp.js +1 -0
- package/web/.next/static/chunks/00h433i5-1v_-.css +1 -0
- package/web/.next/static/chunks/04~wdwkqgr57x.js +1 -0
- package/web/.next/static/chunks/08tp-_of5~bcc.js +1 -0
- package/web/.next/static/chunks/{0rm13o3bvc9o..js → 09ix490-00s4x.js} +1 -1
- package/web/.next/static/chunks/{100y4~jpwu8~t.js → 0ferlvybqru33.js} +3 -3
- package/web/.next/static/chunks/{0rd5nu5ru3gje.js → 0ghc-76~~v-cj.js} +1 -1
- package/web/.next/static/chunks/0hkfexnwbsfyg.js +1 -0
- package/web/.next/static/chunks/{0m0hb2m1lgy.r.js → 0j-doxnxl43yu.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/{0ddwj6.~yj.u5.js → 0sliw7pn2d_57.js} +1 -1
- package/web/.next/static/chunks/0x_xky1fcolbm.js +1 -0
- package/web/.next/static/chunks/{16678zkd7o7-z.js → 0xmqx8qtb0njk.js} +1 -1
- package/web/.next/static/chunks/{0prk~fhfyg~yg.js → 0yz729_n37__3.js} +1 -1
- package/web/.next/static/chunks/{0aworyfo5xz3f.js → 0y~ts1~5mpg5h.js} +1 -1
- package/web/.next/static/chunks/0zy_h1essdthk.js +1 -0
- package/web/.next/static/chunks/{10rtagfoabp3b.js → 10j-adknfho63.js} +1 -1
- package/web/.next/static/chunks/{07e~pkh4ikdtq.js → 11e3u3wkmfedd.js} +1 -1
- package/web/.next/static/chunks/{0q.xmdro9u05g.js → 156lo29queyhm.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/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/_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 → 8igTmoo1g4DAuDf2Tup6h}/_buildManifest.js +0 -0
- /package/web/.next/static/{hWgOeXuQ6p-VoJvFXhk5g → 8igTmoo1g4DAuDf2Tup6h}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{hWgOeXuQ6p-VoJvFXhk5g → 8igTmoo1g4DAuDf2Tup6h}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[2,a=>{"use strict";let b=(0,a.i(97624).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],2)},8685,a=>{"use strict";let b=(0,a.i(97624).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],8685)},78454,a=>{"use strict";a.i(24255),a.s([])},83813,a=>{"use strict";let b=(0,a.i(97624).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",0,b],83813)},84117,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(85536);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("bg-card text-card-foreground editorial-shadow rounded-xl border",a),...c}));e.displayName="Card";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1.5 p-6",a),...c}));f.displayName="CardHeader";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("leading-none font-semibold tracking-tight",a),...c}));g.displayName="CardTitle";let h=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-muted-foreground text-sm",a),...c}));h.displayName="CardDescription";let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("p-6 pt-0",a),...c}));i.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter",a.s(["Card",0,e,"CardContent",0,i,"CardDescription",0,h,"CardHeader",0,f,"CardTitle",0,g])},38702,16223,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g,...h}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",g),...h,children:[a?(0,b.jsx)("div",{className:"text-muted-foreground",children:a}):null,(0,b.jsx)("h3",{className:"text-lg font-semibold",children:d}),e?(0,b.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:e}):null,f?(0,b.jsx)("div",{className:"mt-2",children:f}):null]})}],16223),a.s([],38702)},55135,75550,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["PageHeader",0,function({title:a,description:d,eyebrow:e,children:f,className:g}){return(0,b.jsxs)("header",{className:(0,c.cn)("flex items-center justify-between gap-4",g),children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[e?(0,b.jsx)("span",{className:"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase",children:e}):null,(0,b.jsx)("div",{className:"flex items-baseline gap-3",children:(0,b.jsx)("h1",{className:"text-foreground text-3xl font-black tracking-tight",children:a})}),d?(0,b.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:d}):null]}),f?(0,b.jsx)("div",{"data-slot":"actions",children:f}):null]})}],75550),a.s([],55135)},228,a=>{"use strict";var b=a.i(53083),c=a.i(30332),d=a.i(16828);a.i(78454);var e=a.i(24255),f=a.i(2824),g=a.i(58339),h=a.i(13126),i=a.i(82934),j=a.i(83813);let k={h1:({children:a})=>(0,b.jsx)("h1",{className:"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0",children:a}),h2:({children:a})=>(0,b.jsx)("h2",{className:"text-foreground mt-5 mb-2 text-base font-bold tracking-tight",children:a}),h3:({children:a})=>(0,b.jsx)("h3",{className:"text-foreground mt-4 mb-2 text-sm font-bold",children:a}),p:({children:a})=>(0,b.jsx)("p",{className:"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0",children:a}),strong:({children:a})=>(0,b.jsx)("strong",{className:"text-foreground font-semibold",children:a}),em:({children:a})=>(0,b.jsx)("em",{className:"italic",children:a}),code:({children:a,className:c})=>c?(0,b.jsx)("code",{className:`${c} text-xs`,children:a}):(0,b.jsx)("code",{className:"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs",children:a}),pre:({children:a})=>(0,b.jsx)("pre",{className:"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs",children:a}),ul:({children:a})=>(0,b.jsx)("ul",{className:"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm",children:a}),ol:({children:a})=>(0,b.jsx)("ol",{className:"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm",children:a}),li:({children:a})=>(0,b.jsx)("li",{className:"leading-relaxed",children:a}),hr:()=>(0,b.jsx)(h.Separator,{className:"my-4"}),a:({href:a,children:c})=>(0,b.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-primary/80 underline underline-offset-2",children:c}),blockquote:({children:a})=>(0,b.jsx)("blockquote",{className:"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic",children:a})};a.s(["SkillDetailDrawer",0,function({skill:a,onClose:l}){return(0,b.jsx)(e.BaseDrawer,{open:null!==a,onClose:l,size:"sm",modal:!0,"data-testid":"skill-detail-drawer",header:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.DrawerTitle,{children:a.displayName}),(0,b.jsx)(f.DrawerDescription,{children:a.name})]}):void 0,children:a?(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-4 pb-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"project"===a.source?"secondary":"outline",className:"cursor-default",children:"project"===a.source?"Project":"Global"})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"project"===a.source?"Installed in this project’s .claude/skills/ directory":"Installed globally in your user profile"})]}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"outline",className:"cursor-default",children:a.category})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"Skill category \\u2014 used for filtering on the Skills page"})]}),a.context?(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"outline",className:"cursor-default",children:a.context})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"Context restriction \\u2014 this skill only activates in this context"})]}):null]}),a.allowedTools?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Allowed Tools"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 text-sm",children:a.allowedTools})]})]}):null,a.resources.length>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Resources"}),(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:a.resources.map(a=>(0,b.jsxs)("li",{className:"text-muted-foreground flex items-center gap-2 text-sm",children:[(0,b.jsx)(j.FolderOpen,{className:"size-3.5 shrink-0"}),(0,b.jsxs)("span",{children:[a.name,"/ — ",a.fileCount," ",1===a.fileCount?"file":"files"]})]},a.name))})]})]}):null,a.body?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsx)("div",{className:"prose-sm",children:(0,b.jsx)(c.default,{remarkPlugins:[d.default],components:k,children:a.body})})]}):null]}):null})}])},74468,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(50950),e=a.i(12729),f=a.i(90920),g=a.i(18948);a.i(55135);var h=a.i(75550);a.i(38702);var i=a.i(16223),j=a.i(84117),k=a.i(58339),l=a.i(83813);function m({skill:a,onSelect:c}){return(0,b.jsxs)(j.Card,{className:"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600",role:"button",tabIndex:0,onClick:()=>c(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),c(a))},"data-testid":`skill-card-${a.name}`,children:[(0,b.jsx)("h3",{className:"text-foreground text-sm leading-tight font-bold tracking-tight",children:a.displayName}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:a.name}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),a.context?(0,b.jsx)(k.Badge,{variant:"outline",children:a.context}):null,a.allowedTools?(0,b.jsx)(k.Badge,{variant:"outline",children:"Tools"}):null,a.resources.length>0?(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-center gap-1 text-xs",children:[(0,b.jsx)(l.FolderOpen,{className:"size-3"}),a.resources.length," ",1===a.resources.length?"resource":"resources"]}):null]})]})}let n=["Workflow","Code Generation","Analysis","Reference"];function o({skills:a,onSkillSelect:c}){let d=function(a){let b=new Map;for(let c of a){let a=b.get(c.category)??[];a.push(c),b.set(c.category,a)}return b}(a);return(0,b.jsx)("div",{className:"space-y-12",children:n.map(a=>{let e=d.get(a);return e&&0!==e.length?(0,b.jsxs)("section",{children:[(0,b.jsxs)("h2",{className:"text-foreground mb-6 text-xl font-bold tracking-tight",children:[a," ",(0,b.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",e.length,")"]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3",children:e.map(a=>(0,b.jsx)(m,{skill:a,onSelect:c},a.name))})]},a):null})})}var p=a.i(85536);let q=[{label:"All",value:null},{label:"Workflow",value:"Workflow"},{label:"Code Generation",value:"Code Generation"},{label:"Analysis",value:"Analysis"},{label:"Reference",value:"Reference"}];function r({activeCategory:a,onCategoryChange:c,counts:d}){return(0,b.jsx)("div",{className:"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1",role:"group","aria-label":"Filter by category",children:q.map(({label:e,value:f})=>{let g=a===f;return(0,b.jsxs)("button",{type:"button",onClick:()=>c(f),className:(0,p.cn)("cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all",g?"bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50":"text-muted-foreground hover:text-foreground"),children:[e,null!=d&&null!=f?(0,b.jsxs)("span",{className:"ms-1 opacity-70",children:["(",d[f],")"]}):null]},e)})})}var s=a.i(228);a.s(["SkillsPageClient",0,function({skills:a}){let[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(null),[n,p]=(0,c.useState)(null),[q,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>(function(a){let b={Workflow:0,"Code Generation":0,Analysis:0,Reference:0};for(let c of a)b[c.category]++;return b})(a),[a]),v=(0,c.useMemo)(()=>{let b=j.toLowerCase();return a.filter(a=>{if(l&&a.category!==l||n&&a.source!==n)return!1;if(b){let c=a.name.toLowerCase().includes(b),d=a.description.toLowerCase().includes(b);if(!c&&!d)return!1}return!0})},[a,j,l,n]);return 0===a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(h.PageHeader,{eyebrow:"Developer Portal",title:"Skills",description:"Claude Code skills installed in this project"}),(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(e.Puzzle,{className:"size-10"}),title:"No skills found",description:"No Claude Code skills are installed. Add skills to .claude/skills/ to get started."})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(h.PageHeader,{eyebrow:"Developer Portal",title:"Skills",description:"Claude Code skills installed in this project"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(f.Input,{placeholder:"Search skills...",value:j,onChange:a=>k(a.target.value),className:"ps-9"})]}),(0,b.jsx)(r,{activeCategory:l,onCategoryChange:m,counts:u}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(g.Button,{variant:null===n?"default":"outline",size:"sm",onClick:()=>p(null),children:"All Sources"}),(0,b.jsx)(g.Button,{variant:"project"===n?"default":"outline",size:"sm",onClick:()=>p("project"),children:"Project"}),(0,b.jsx)(g.Button,{variant:"global"===n?"default":"outline",size:"sm",onClick:()=>p("global"),children:"Global"})]}),v.length>0?(0,b.jsx)(o,{skills:v,onSkillSelect:t}):(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:"No matching skills",description:"No skills match your current search and filter criteria.",action:(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{k(""),m(null),p(null)},children:"Clear filters"})}),(0,b.jsx)(s.SkillDetailDrawer,{skill:q,onClose:()=>t(null)})]})}],74468)}];
|
|
1
|
+
module.exports=[2,a=>{"use strict";let b=(0,a.i(97624).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",0,b],2)},8685,a=>{"use strict";let b=(0,a.i(97624).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],8685)},78454,a=>{"use strict";a.i(24255),a.s([])},83813,a=>{"use strict";let b=(0,a.i(97624).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",0,b],83813)},38702,16223,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["EmptyState",0,function({icon:a,title:d,description:e,action:f,className:g,...h}){return(0,b.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",g),...h,children:[a?(0,b.jsx)("div",{className:"text-muted-foreground",children:a}):null,(0,b.jsx)("h3",{className:"text-lg font-semibold",children:d}),e?(0,b.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:e}):null,f?(0,b.jsx)("div",{className:"mt-2",children:f}):null]})}],16223),a.s([],38702)},84117,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(85536);let e=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("bg-card text-card-foreground editorial-shadow rounded-xl border",a),...c}));e.displayName="Card";let f=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex flex-col space-y-1.5 p-6",a),...c}));f.displayName="CardHeader";let g=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("leading-none font-semibold tracking-tight",a),...c}));g.displayName="CardTitle";let h=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("text-muted-foreground text-sm",a),...c}));h.displayName="CardDescription";let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("p-6 pt-0",a),...c}));i.displayName="CardContent",c.forwardRef(({className:a,...c},e)=>(0,b.jsx)("div",{ref:e,className:(0,d.cn)("flex items-center p-6 pt-0",a),...c})).displayName="CardFooter",a.s(["Card",0,e,"CardContent",0,i,"CardDescription",0,h,"CardHeader",0,f,"CardTitle",0,g])},55135,75550,a=>{"use strict";var b=a.i(53083),c=a.i(85536);a.s(["PageHeader",0,function({title:a,description:d,eyebrow:e,children:f,className:g}){return(0,b.jsxs)("header",{className:(0,c.cn)("flex items-center justify-between gap-4",g),children:[(0,b.jsxs)("div",{className:"space-y-1.5",children:[e?(0,b.jsx)("span",{className:"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase",children:e}):null,(0,b.jsx)("div",{className:"flex items-baseline gap-3",children:(0,b.jsx)("h1",{className:"text-foreground text-3xl font-black tracking-tight",children:a})}),d?(0,b.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:d}):null]}),f?(0,b.jsx)("div",{"data-slot":"actions",children:f}):null]})}],75550),a.s([],55135)},228,a=>{"use strict";var b=a.i(53083),c=a.i(30332),d=a.i(16828);a.i(78454);var e=a.i(24255),f=a.i(2824),g=a.i(58339),h=a.i(13126),i=a.i(82934),j=a.i(83813);let k={h1:({children:a})=>(0,b.jsx)("h1",{className:"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0",children:a}),h2:({children:a})=>(0,b.jsx)("h2",{className:"text-foreground mt-5 mb-2 text-base font-bold tracking-tight",children:a}),h3:({children:a})=>(0,b.jsx)("h3",{className:"text-foreground mt-4 mb-2 text-sm font-bold",children:a}),p:({children:a})=>(0,b.jsx)("p",{className:"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0",children:a}),strong:({children:a})=>(0,b.jsx)("strong",{className:"text-foreground font-semibold",children:a}),em:({children:a})=>(0,b.jsx)("em",{className:"italic",children:a}),code:({children:a,className:c})=>c?(0,b.jsx)("code",{className:`${c} text-xs`,children:a}):(0,b.jsx)("code",{className:"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs",children:a}),pre:({children:a})=>(0,b.jsx)("pre",{className:"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs",children:a}),ul:({children:a})=>(0,b.jsx)("ul",{className:"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm",children:a}),ol:({children:a})=>(0,b.jsx)("ol",{className:"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm",children:a}),li:({children:a})=>(0,b.jsx)("li",{className:"leading-relaxed",children:a}),hr:()=>(0,b.jsx)(h.Separator,{className:"my-4"}),a:({href:a,children:c})=>(0,b.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-primary/80 underline underline-offset-2",children:c}),blockquote:({children:a})=>(0,b.jsx)("blockquote",{className:"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic",children:a})};a.s(["SkillDetailDrawer",0,function({skill:a,onClose:l}){return(0,b.jsx)(e.BaseDrawer,{open:null!==a,onClose:l,size:"sm",modal:!0,"data-testid":"skill-detail-drawer",header:a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.DrawerTitle,{children:a.displayName}),(0,b.jsx)(f.DrawerDescription,{children:a.name})]}):void 0,children:a?(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-4 pb-4",children:[(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"project"===a.source?"secondary":"outline",className:"cursor-default",children:"project"===a.source?"Project":"Global"})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"project"===a.source?"Installed in this project’s .claude/skills/ directory":"Installed globally in your user profile"})]}),(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"outline",className:"cursor-default",children:a.category})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"Skill category \\u2014 used for filtering on the Skills page"})]}),a.context?(0,b.jsxs)(i.Tooltip,{children:[(0,b.jsx)(i.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(g.Badge,{variant:"outline",className:"cursor-default",children:a.context})}),(0,b.jsx)(i.TooltipContent,{side:"bottom",children:"Context restriction \\u2014 this skill only activates in this context"})]}):null]}),a.allowedTools?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Allowed Tools"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 text-sm",children:a.allowedTools})]})]}):null,a.resources.length>0?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-sm font-semibold",children:"Resources"}),(0,b.jsx)("ul",{className:"mt-2 space-y-1.5",children:a.resources.map(a=>(0,b.jsxs)("li",{className:"text-muted-foreground flex items-center gap-2 text-sm",children:[(0,b.jsx)(j.FolderOpen,{className:"size-3.5 shrink-0"}),(0,b.jsxs)("span",{children:[a.name,"/ — ",a.fileCount," ",1===a.fileCount?"file":"files"]})]},a.name))})]})]}):null,a.body?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.Separator,{className:"my-4"}),(0,b.jsx)("div",{className:"prose-sm",children:(0,b.jsx)(c.default,{remarkPlugins:[d.default],components:k,children:a.body})})]}):null]}):null})}])},74468,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(50950),e=a.i(12729),f=a.i(90920),g=a.i(18948);a.i(55135);var h=a.i(75550);a.i(38702);var i=a.i(16223),j=a.i(84117),k=a.i(58339),l=a.i(83813);function m({skill:a,onSelect:c}){return(0,b.jsxs)(j.Card,{className:"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600",role:"button",tabIndex:0,onClick:()=>c(a),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),c(a))},"data-testid":`skill-card-${a.name}`,children:[(0,b.jsx)("h3",{className:"text-foreground text-sm leading-tight font-bold tracking-tight",children:a.displayName}),(0,b.jsx)("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:a.name}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed",children:a.description}),(0,b.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:[(0,b.jsx)(k.Badge,{variant:"project"===a.source?"secondary":"outline",children:"project"===a.source?"Project":"Global"}),a.context?(0,b.jsx)(k.Badge,{variant:"outline",children:a.context}):null,a.allowedTools?(0,b.jsx)(k.Badge,{variant:"outline",children:"Tools"}):null,a.resources.length>0?(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-center gap-1 text-xs",children:[(0,b.jsx)(l.FolderOpen,{className:"size-3"}),a.resources.length," ",1===a.resources.length?"resource":"resources"]}):null]})]})}let n=["Workflow","Code Generation","Analysis","Reference"];function o({skills:a,onSkillSelect:c}){let d=function(a){let b=new Map;for(let c of a){let a=b.get(c.category)??[];a.push(c),b.set(c.category,a)}return b}(a);return(0,b.jsx)("div",{className:"space-y-12",children:n.map(a=>{let e=d.get(a);return e&&0!==e.length?(0,b.jsxs)("section",{children:[(0,b.jsxs)("h2",{className:"text-foreground mb-6 text-xl font-bold tracking-tight",children:[a," ",(0,b.jsxs)("span",{className:"text-muted-foreground text-sm font-normal",children:["(",e.length,")"]})]}),(0,b.jsx)("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3",children:e.map(a=>(0,b.jsx)(m,{skill:a,onSelect:c},a.name))})]},a):null})})}var p=a.i(85536);let q=[{label:"All",value:null},{label:"Workflow",value:"Workflow"},{label:"Code Generation",value:"Code Generation"},{label:"Analysis",value:"Analysis"},{label:"Reference",value:"Reference"}];function r({activeCategory:a,onCategoryChange:c,counts:d}){return(0,b.jsx)("div",{className:"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1",role:"group","aria-label":"Filter by category",children:q.map(({label:e,value:f})=>{let g=a===f;return(0,b.jsxs)("button",{type:"button",onClick:()=>c(f),className:(0,p.cn)("cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all",g?"bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50":"text-muted-foreground hover:text-foreground"),children:[e,null!=d&&null!=f?(0,b.jsxs)("span",{className:"ms-1 opacity-70",children:["(",d[f],")"]}):null]},e)})})}var s=a.i(228);a.s(["SkillsPageClient",0,function({skills:a}){let[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)(null),[n,p]=(0,c.useState)(null),[q,t]=(0,c.useState)(null),u=(0,c.useMemo)(()=>(function(a){let b={Workflow:0,"Code Generation":0,Analysis:0,Reference:0};for(let c of a)b[c.category]++;return b})(a),[a]),v=(0,c.useMemo)(()=>{let b=j.toLowerCase();return a.filter(a=>{if(l&&a.category!==l||n&&a.source!==n)return!1;if(b){let c=a.name.toLowerCase().includes(b),d=a.description.toLowerCase().includes(b);if(!c&&!d)return!1}return!0})},[a,j,l,n]);return 0===a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(h.PageHeader,{eyebrow:"Developer Portal",title:"Skills",description:"Claude Code skills installed in this project"}),(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(e.Puzzle,{className:"size-10"}),title:"No skills found",description:"No Claude Code skills are installed. Add skills to .claude/skills/ to get started."})]}):(0,b.jsxs)("div",{className:"flex flex-col gap-8 p-8",children:[(0,b.jsx)(h.PageHeader,{eyebrow:"Developer Portal",title:"Skills",description:"Claude Code skills installed in this project"}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(d.Search,{className:"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,b.jsx)(f.Input,{placeholder:"Search skills...",value:j,onChange:a=>k(a.target.value),className:"ps-9"})]}),(0,b.jsx)(r,{activeCategory:l,onCategoryChange:m,counts:u}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(g.Button,{variant:null===n?"default":"outline",size:"sm",onClick:()=>p(null),children:"All Sources"}),(0,b.jsx)(g.Button,{variant:"project"===n?"default":"outline",size:"sm",onClick:()=>p("project"),children:"Project"}),(0,b.jsx)(g.Button,{variant:"global"===n?"default":"outline",size:"sm",onClick:()=>p("global"),children:"Global"})]}),v.length>0?(0,b.jsx)(o,{skills:v,onSkillSelect:t}):(0,b.jsx)(i.EmptyState,{icon:(0,b.jsx)(d.Search,{className:"size-10"}),title:"No matching skills",description:"No skills match your current search and filter criteria.",action:(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{k(""),m(null),p(null)},children:"Clear filters"})}),(0,b.jsx)(s.SkillDetailDrawer,{skill:q,onClose:()=>t(null)})]})}],74468)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=_1031n_-._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport Markdown, { type Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\n/*\n * Markdown component overrides for skill body rendering.\n * Styled to match the editorial palette and fit within the drawer's\n * constrained width. Uses the same pattern as tech-decisions-review.\n */\nconst mdComponents: Components = {\n h1: ({ children }) => (\n <h1 className=\"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0\">\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2 className=\"text-foreground mt-5 mb-2 text-base font-bold tracking-tight\">{children}</h2>\n ),\n h3: ({ children }) => <h3 className=\"text-foreground mt-4 mb-2 text-sm font-bold\">{children}</h3>,\n p: ({ children }) => (\n <p className=\"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0\">{children}</p>\n ),\n strong: ({ children }) => <strong className=\"text-foreground font-semibold\">{children}</strong>,\n em: ({ children }) => <em className=\"italic\">{children}</em>,\n code: ({ children, className }) =>\n className ? (\n <code className={`${className} text-xs`}>{children}</code>\n ) : (\n <code className=\"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs\">\n {children}\n </code>\n ),\n pre: ({ children }) => (\n <pre className=\"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs\">{children}</pre>\n ),\n ul: ({ children }) => (\n <ul className=\"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm\">{children}</ul>\n ),\n ol: ({ children }) => (\n <ol className=\"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm\">{children}</ol>\n ),\n li: ({ children }) => <li className=\"leading-relaxed\">{children}</li>,\n hr: () => <Separator className=\"my-4\" />,\n a: ({ href, children }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 underline underline-offset-2\"\n >\n {children}\n </a>\n ),\n blockquote: ({ children }) => (\n <blockquote className=\"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic\">\n {children}\n </blockquote>\n ),\n};\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges with explanatory tooltips */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge\n variant={skill.source === 'project' ? 'secondary' : 'outline'}\n className=\"cursor-default\"\n >\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {skill.source === 'project'\n ? 'Installed in this project\\u2019s .claude/skills/ directory'\n : 'Installed globally in your user profile'}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.category}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Skill category \\u2014 used for filtering on the Skills page\n </TooltipContent>\n </Tooltip>\n {skill.context ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.context}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Context restriction \\u2014 this skill only activates in this context\n </TooltipContent>\n </Tooltip>\n ) : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body — rendered as markdown for proper heading/list/code formatting */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <div className=\"prose-sm\">\n <Markdown remarkPlugins={[remarkGfm]} components={mdComponents}>\n {skill.body}\n </Markdown>\n </div>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillCategory, SkillData, SkillSource } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [sourceFilter, setSourceFilter] = useState<SkillSource | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (sourceFilter && skill.source !== sourceFilter) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory, sourceFilter]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n setSourceFilter(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Source Filter */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={sourceFilter === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter(null)}\n >\n All Sources\n </Button>\n <Button\n variant={sourceFilter === 'project' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('project')}\n >\n Project\n </Button>\n <Button\n variant={sourceFilter === 'global' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('global')}\n >\n Global\n </Button>\n </div>\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n {/* Title + monospace name — matches ToolCard's tight editorial header */}\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {skill.displayName}\n </h3>\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">{skill.name}</p>\n\n {/* Description */}\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {skill.description}\n </p>\n\n {/* Badges — bottom of card */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-12\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"text-foreground mb-6 text-xl font-bold tracking-tight\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\n/*\n * Category filter — editorial tab treatment matching the Tools page.\n * Uses bg-card container with editorial-shadow, active pill with bg-muted +\n * text-primary + ring lift, inactive pills with muted text and hover affordance.\n */\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div\n className=\"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1\"\n role=\"group\"\n aria-label=\"Filter by category\"\n >\n {CATEGORIES.map(({ label, value }) => {\n const isActive = activeCategory === value;\n return (\n <button\n key={label}\n type=\"button\"\n onClick={() => onCategoryChange(value)}\n className={cn(\n 'cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all',\n isActive\n ? 'bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50'\n : 'text-muted-foreground hover:text-foreground'\n )}\n >\n {label}\n {counts != null && value != null ? (\n <span className=\"ms-1 opacity-70\">({counts[value]})</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":["Card","className","props","ref","displayName","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","EmptyState","icon","title","description","action","PageHeader","eyebrow","children","mdComponents","h1","h2","h3","p","strong","em","code","pre","ul","ol","li","hr","a","href","target","rel","blockquote","SkillDetailDrawer","skill","onClose","open","size","modal","header","name","undefined","asChild","variant","source","side","category","context","allowedTools","resources","length","map","resource","fileCount","body","remarkPlugins","components","SkillCard","onSelect","role","tabIndex","onClick","onKeyDown","e","key","preventDefault"],"mappings":"mCAoBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAjBF,CAiBmB,AAhBrD,CAgBqD,AAhBpD,CAgBoD,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAhBpD,AAAQ,AAgB4C,CAhB5C,AAgB4C,AAhB1C,CAgBoD,CAAA,AAhBjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAe,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA4D,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3F,qDCYA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAX,AAAW,CAAX,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBE,CAgBU,AAf5C,CAe4C,AAf3C,CAAA,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAe2C,CAf3C,AAAQ,AAemC,CAfnC,AAAE,AAeiC,CAAU,CAAA,AAfxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAE,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChD,qDCNA,EAAA,CAAA,CAAA,uCCwBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,AAAb,CAAa,AAAb,CAAa,AAAb,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CArBA,CAClC,AAoBiD,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAnB/C,AAmB+C,CAlB/C,AAkB+C,CAjB7C,AAiB6C,CAjB7C,AAiBuD,CAAA,AAjBpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,yECXA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAUA,IAAMA,EAAO,EAAA,UAAgB,CAC3B,CAAC,WAAEC,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,kEAAmEA,GAChF,GAAGC,CAAK,GAIfF,GAAKI,WAAW,CAAG,OAEnB,IAAMC,EAAa,EAAA,UAAgB,CACjC,CAAC,WAAEJ,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFG,EAAWD,WAAW,CAAG,aAEzB,IAAME,EAAY,EAAA,UAAgB,CAChC,CAAC,WAAEL,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACCA,IAAKA,EACLF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4CAA6CA,GAC1D,GAAGC,CAAK,IAIfI,EAAUF,WAAW,CAAG,YAExB,IAAMG,EAAkB,EAAA,UAAgB,CACtC,CAAC,WAAEN,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EAAG,gCAAiCA,GAAa,GAAGC,CAAK,IAGvFK,EAAgBH,WAAW,CAAG,kBAE9B,IAAMI,EAAc,EAAA,UAAgB,CAClC,CAAC,WAAEP,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,WAAYA,GAAa,GAAGC,CAAK,IAGlEM,EAAYJ,WAAW,CAAG,cAEP,AAKnBK,EALmB,UAAgB,CACjC,CAAC,WAAER,CAAS,CAAE,GAAGC,EAAO,CAAEC,IACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,IAAKA,EAAKF,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,6BAA8BA,GAAa,GAAGC,CAAK,IAGzEE,WAAW,CAAG,uJC3DzB,EAAA,EAAA,CAAA,CAAA,2BASO,SAASM,AAAW,MACzBC,CAAI,OACJC,CAAK,aACLC,CAAW,QACXC,CAAM,WACNb,CAAS,CACT,GAAGC,EACa,EAChB,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACCD,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0DAA2DA,GACxE,GAAGC,CAAK,WAERS,EAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIV,UAAU,iCAAyBU,IAAc,KAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGV,UAAU,iCAAyBW,IACtCC,EAAc,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEZ,UAAU,kDAA0CY,IAAmB,KACxFC,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIb,UAAU,gBAAQa,IAAgB,OAGvD,uEC7BA,EAAA,EAAA,CAAA,CAAA,2BAiBO,SAAoB,AAAXC,OAAaH,CAAK,aAAEC,CAAW,SAAEG,CAAO,UAAEC,CAAQ,WAAEhB,CAAS,CAAmB,EAC9F,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAAOA,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,0CAA2CA,aAC/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIA,UAAU,wBACZe,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKf,UAAU,2EACbe,IAED,KACJ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIf,UAAU,qCACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,8DAAsDW,MAErEC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEZ,UAAU,qDAA6CY,IACxD,QAELI,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,YAAU,mBAAWA,IAAkB,OAG9D,+DClCA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAQA,IAAMC,EAA2B,CAC/BC,GAAI,CAAC,UAAEF,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,iFACXgB,IAGLG,GAAI,CAAC,UAAEH,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,wEAAgEgB,IAEhFI,GAAI,CAAC,UAAEJ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,uDAA+CgB,IACnFK,EAAG,CAAC,UAAEL,CAAQ,CAAE,GACd,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEhB,UAAU,wEAAgEgB,IAE/EM,OAAQ,CAAC,UAAEN,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAOhB,UAAU,yCAAiCgB,IAC7EO,GAAI,CAAC,CAAEP,UAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,kBAAUgB,IAC9CQ,KAAM,CAAC,UAAER,CAAQ,WAAEhB,CAAS,CAAE,GAC5BA,EACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKA,UAAW,CAAA,EAAGA,EAAU,QAAQ,CAAC,UAAGgB,IAE1C,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAKhB,UAAU,+EACbgB,IAGPS,IAAK,CAAC,UAAET,CAAQ,CAAE,GAChB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIhB,UAAU,uEAA+DgB,IAEhFU,GAAI,CAAC,UAAEV,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,uEAA+DgB,IAE/EW,GAAI,CAAC,UAAEX,CAAQ,CAAE,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,0EAAkEgB,IAElFY,GAAI,CAAC,UAAEZ,CAAQ,CAAE,GAAK,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGhB,UAAU,2BAAmBgB,IACvDa,GAAI,IAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC7B,UAAU,SAC/B8B,EAAG,CAAC,MAAEC,CAAI,UAAEf,CAAQ,CAAE,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACCe,KAAMA,EACNC,OAAO,SACPC,IAAI,sBACJjC,UAAU,2EAETgB,IAGLkB,WAAY,CAAC,UAAElB,CAAQ,CAAE,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,aAAA,CAAWhB,UAAU,+EACnBgB,GAGP,6BAOO,SAASmB,AAAkB,OAAEC,CAAK,SAAEC,CAAO,CAA0B,EAC1E,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACTC,KAAgB,OAAVF,EACNC,QAASA,EACTE,KAAK,KACLC,KAAK,CAAA,CAAA,EACL,cAAY,sBACZC,OACEL,EACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UAAEA,EAAMjC,WAAW,GAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,UAAEiC,EAAMM,IAAI,WAE9BC,WAGLP,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIpC,UAAU,qDAEb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,yCAAiCoC,EAAMxB,WAAW,GAG/D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIZ,UAAU,qDACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC4C,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJC,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,UACpD9C,UAAU,0BAEQ,YAAjBoC,EAAMU,MAAM,CAAiB,UAAY,aAG9C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACC,KAAK,kBACD,YAAjBX,EAAMU,MAAM,CACT,wDACA,+CAGR,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAU7C,UAAU,0BAChCoC,EAAMY,QAAQ,KAGnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACD,KAAK,kBAAS,oEAI/BX,EAAMa,OAAO,CACZ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACL,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACC,QAAQ,UAAU7C,UAAU,0BAChCoC,EAAMa,OAAO,KAGlB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAACF,KAAK,kBAAS,6EAI9B,QAILX,EAAMc,YAAY,CACjB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAClD,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,kBACtC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEA,UAAU,8CAAsCoC,EAAMc,YAAY,SAGvE,KAGHd,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACpD,UAAU,SACrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,iCAAwB,cACtC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAGA,UAAU,4BACXoC,EAAMe,SAAS,CAACE,GAAG,CAAC,AAACC,GACpB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAECtD,UAAU,kEAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,sBACtB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,WACEsD,EAASZ,IAAI,CAAC,OAAKY,EAASC,SAAS,CAAE,IAChB,IAAvBD,EAASC,SAAS,CAAS,OAAS,aANlCD,EAASZ,IAAI,WAa1B,KAGHN,EAAMoB,IAAI,CACT,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAACxD,UAAU,SACrB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAIA,UAAU,oBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAQ,CAAA,CAACyD,cAAe,CAAC,EAAA,OAAS,CAAC,CAAEC,WAAYzC,WAC/CmB,EAAMoB,IAAI,QAIf,QAEJ,MAGV,6CCxLA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OCPA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,EAAA,EAAA,CAAA,CAAA,OAOO,SAASG,EAAU,OAAEvB,CAAK,UAAEwB,CAAQ,CAAkB,EAC3D,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,IAAI,CAAA,CACH5D,UAAU,uIACV6D,KAAK,SACLC,SAAU,EACVC,QAAS,IAAMH,EAASxB,GACxB4B,UAAW,AAACC,IACNA,CAAU,YAARC,GAAG,EAA0B,MAAVD,EAAEC,GAAQ,AAAL,GAAU,CACtCD,EAAEE,cAAc,GAChBP,EAASxB,GAEb,EACA,cAAa,CAAC,WAAW,EAAEA,EAAMM,IAAI,CAAA,CAAE,WAGvC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG1C,UAAU,0EACXoC,EAAMjC,WAAW,GAEpB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAEH,UAAU,wDAAgDoC,EAAMM,IAAI,GAGvE,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE1C,UAAU,2EACVoC,EAAMxB,WAAW,GAIpB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAIZ,UAAU,qDACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC6C,QAA0B,YAAjBT,EAAMU,MAAM,CAAiB,YAAc,mBACvC,YAAjBV,EAAMU,MAAM,CAAiB,UAAY,WAE3CV,EAAMa,OAAO,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACJ,QAAQ,mBAAWT,EAAMa,OAAO,GAAY,KACnEb,EAAMc,YAAY,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAACL,QAAQ,mBAAU,UAAgB,KAC9DT,EAAMe,SAAS,CAACC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAKpD,UAAU,yEACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAACA,UAAU,WACrBoC,EAAMe,SAAS,CAACC,MAAM,CAAC,IAA6B,IAA3BhB,EAAMe,SAAS,CAACC,MAAM,CAAS,WAAa,eAEtE,UAIZ,CCjDA,IAAM,EAAkC,CAAC,WAAY,kBAAmB,WAAY,YAAY,CAiBzF,SAASa,EAAU,CAAE,QAAM,eAAE,CAAa,CAAkB,EACjE,IAAM,EAXR,AAWiB,SAXR,AAAgB,CAAmB,EAC1C,IAAM,EAAS,IAAI,IACnB,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,EAAQ,EAAO,GAAG,CAAC,EAAM,QAAQ,GAAK,EAAE,CAC9C,EAAM,IAAI,CAAC,GACX,EAAO,GAAG,CAAC,EAAM,QAAQ,CAAE,EAC7B,CACA,OAAO,CACT,EAGiC,GAE/B,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sBACZ,EAAe,GAAG,CAAC,AAAC,IACnB,IAAM,EAAiB,EAAO,GAAG,CAAC,UAClC,AAAI,AAAC,GAAkB,AAA0B,GAAG,GAAd,MAAM,CAG1C,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,WACC,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,kEACX,EAAU,IACX,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,sDAA4C,IACxD,EAAe,MAAM,CAAC,UAG5B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gEACZ,EAAe,GAAG,CAAC,AAAC,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAA2B7B,MAAO,EAAO,SAAU,GAApC,EAAM,IAAI,OATlB,GAH2C,IAiB7D,IAGN,CC/CA,IAAA,EAAA,EAAA,CAAA,CAAA,OAGA,IAAM,EAA+D,CACnE,CAAE,MAAO,MAAO,MAAO,IAAK,EAC5B,CAAE,MAAO,WAAY,MAAO,UAAW,EACvC,CAAE,MAAO,kBAAmB,MAAO,iBAAkB,EACrD,CAAEuB,MAAO,WAAYC,MAAO,UAAW,EACvC,CAAE,MAAO,YAAa,MAAO,WAAY,EAC1C,CAaM,SAAS,EAAe,gBAAE,CAAc,kBAAE,CAAgB,QAAE,CAAM,CAAuB,EAC9F,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,mFACV,KAAK,QACL,aAAW,8BAEV,EAAW,GAAG,CAAC,CAAC,OAAE,CAAK,OAAE,CAAK,CAAE,IAC/B,IAAM,EAAW,IAAmB,EACpC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS5D,IAAM,EAAiB,GAChC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,yEACA,EACI,kFACA,yDAGL,EACU,MAAV,GAA2B,MAAT,EACjB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,4BAAkB,IAAE,CAAM,CAAC,EAAM,CAAC,OAChD,OAbC,EAgBX,IAGN,CH1CA,IAAA,EAAA,EAAA,CAAA,CAAA,+BAoBO,SAAS,AAAiB,QAAE,CAAM,CAAyB,EAChE,GAAM,CAAC,EAAaA,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAuB,MACrE,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,MAC/DY,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,MAE/D,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAM,CAnBvC,SAAS,AAAsB,CAAmB,EAChD,IAAM,EAAwC,CAC5C,SAAU,EACV,kBAAmB,EACnB,SAAU,EACV,UAAW,CACb,EACA,IAAK,IAAM,KAAS,EAClB,CAAM,CAAC,EAAM,CADa,OACL,CAAC,GAExB,OAAO,CACT,GAQ6D,GAAS,CAAC,EAAO,EAEtE,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,KAC7B,IAAM,EAAQ,EAAY,WAAW,GACrC,OAAO,EAAO,MAAM,CAAC,AAAC,IACpB,GAAI,GAAkB,EAAM,QAAQ,GAAK,GACrC,GAAgB,EAAM,MAAM,GAAK,EADoB,OAAO,EAEhE,GADmD,AAC/C,EAAO,CACT,IAFwD,AAElD,EAAcwC,EAAM,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAChD,EAAqB,EAAM,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,GACpE,GAAI,CAAC,GAAe,CAAC,EAAoB,MAAO,EAClDD,CACA,MAAO,EACT,EACF,EAAG,CAAC,EAAQ,EAAa,EAAgB,EAAa,SAStD,AAAsB,GAAG,CAArB,EAAO,MAAM,CAEb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,kBACN,YAAY,0FAOlB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,QAAQ,mBACR,MAAM,SACN,YAAY,iDAId,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,0EAClB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,YAAY,mBACZ,MAAO,EACP,SAAU,AAAC,GAAM,EAAe,EAAE,MAAM,CAAC,KAAK,EAC9C,UAAU,YAKd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,eAAgB,EAChB,iBAAkB,EAClB,OAAQ,IAIV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,SAAO,UAAY,UAC7C,KAAK,KACL,QAAS,IAAM,EAAgB,eAChC,gBAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,AAAiB,cAAY,UAAY,UAClD,KAAK,KACL,QAAS,IAAM,EAAgB,oBAChC,YAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAA0B,WAAjB,EAA4B,UAAY,UACjD,KAAK,KACL,QAAS,IAAM,EAAgB,mBAChC,cAMF,EAAe,MAAM,CAAG,EACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,OAAQ,EAAgB,cAAe,IAElD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KAAM,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YACxB,MAAM,qBACN,YAAY,2DACZ,OACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,QAAQ,UAAU,QApFf,CAoFwB,IAnF3C,EAAe,IACf,EAAkB,MAClB,EAAgB,KAClB,WAgF2D,oBAQvD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,MAAO,EAAe,QAAS,IAAM,EAAiB,UAG/E","ignoreList":[0,1,3]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/common/base-drawer/index.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-open.ts","../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx","../../../../../../../src/presentation/web/components/ui/card.tsx","../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-detail-drawer.tsx","../../../../../../../src/presentation/web/components/features/skills/skills-page-client.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-card.tsx","../../../../../../../src/presentation/web/components/features/skills/skill-list.tsx","../../../../../../../src/presentation/web/components/features/skills/category-filter.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 19h8', key: 'baeox8' }],\n ['path', { d: 'm4 17 6-6-6-6', key: '1yngyt' }],\n];\n\n/**\n * @component @name Terminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Terminal = createLucideIcon('terminal', __iconNode);\n\nexport default Terminal;\n","export { BaseDrawer, type BaseDrawerProps } from './base-drawer';\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className)}\n {...props}\n >\n {icon ? <div className=\"text-muted-foreground\">{icon}</div> : null}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground max-w-md text-sm\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/*\n * Card — shadcn primitive extended with Stitch's editorial-shadow utility.\n * The `editorial-shadow` class (globals.css) replaces the old `shadow` class\n * with a subtle shadow + ring combination that gives cards a \"lifted\" look\n * and renders consistently against the editorial surface palette in both\n * light and dark modes. The `border` class stays for explicit border visibility\n * in dense grids; editorial-shadow's ring provides the soft lift on top.\n */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground editorial-shadow rounded-xl border', className)}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n )\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n )\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { cn } from '@/lib/utils';\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n /** Optional eyebrow label above the title (e.g., \"DEVELOPER PORTAL\") */\n eyebrow?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\n/*\n * PageHeader — Stitch editorial page header pattern.\n * Renders: tiny uppercase eyebrow → large bold title → muted description.\n * Matches the tools-page-client.tsx header treatment.\n * See .scratchpad/stitch/shipit-developer-portal/src/App.tsx:161\n */\nexport function PageHeader({ title, description, eyebrow, children, className }: PageHeaderProps) {\n return (\n <header className={cn('flex items-center justify-between gap-4', className)}>\n <div className=\"space-y-1.5\">\n {eyebrow ? (\n <span className=\"text-[10px] font-bold tracking-[0.2em] text-slate-400 uppercase\">\n {eyebrow}\n </span>\n ) : null}\n <div className=\"flex items-baseline gap-3\">\n <h1 className=\"text-foreground text-3xl font-black tracking-tight\">{title}</h1>\n </div>\n {description ? (\n <p className=\"text-muted-foreground text-sm font-medium\">{description}</p>\n ) : null}\n </div>\n {children ? <div data-slot=\"actions\">{children}</div> : null}\n </header>\n );\n}\n","'use client';\n\nimport Markdown, { type Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport { FolderOpen } from 'lucide-react';\nimport type { SkillData } from '@/lib/skills';\n\n/*\n * Markdown component overrides for skill body rendering.\n * Styled to match the editorial palette and fit within the drawer's\n * constrained width. Uses the same pattern as tech-decisions-review.\n */\nconst mdComponents: Components = {\n h1: ({ children }) => (\n <h1 className=\"text-foreground mt-6 mb-3 text-lg font-bold tracking-tight first:mt-0\">\n {children}\n </h1>\n ),\n h2: ({ children }) => (\n <h2 className=\"text-foreground mt-5 mb-2 text-base font-bold tracking-tight\">{children}</h2>\n ),\n h3: ({ children }) => <h3 className=\"text-foreground mt-4 mb-2 text-sm font-bold\">{children}</h3>,\n p: ({ children }) => (\n <p className=\"text-muted-foreground mb-3 text-sm leading-relaxed last:mb-0\">{children}</p>\n ),\n strong: ({ children }) => <strong className=\"text-foreground font-semibold\">{children}</strong>,\n em: ({ children }) => <em className=\"italic\">{children}</em>,\n code: ({ children, className }) =>\n className ? (\n <code className={`${className} text-xs`}>{children}</code>\n ) : (\n <code className=\"bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-xs\">\n {children}\n </code>\n ),\n pre: ({ children }) => (\n <pre className=\"bg-muted my-3 overflow-x-auto rounded-lg border p-3 text-xs\">{children}</pre>\n ),\n ul: ({ children }) => (\n <ul className=\"text-muted-foreground mb-3 list-disc space-y-1 ps-5 text-sm\">{children}</ul>\n ),\n ol: ({ children }) => (\n <ol className=\"text-muted-foreground mb-3 list-decimal space-y-1 ps-5 text-sm\">{children}</ol>\n ),\n li: ({ children }) => <li className=\"leading-relaxed\">{children}</li>,\n hr: () => <Separator className=\"my-4\" />,\n a: ({ href, children }) => (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 underline underline-offset-2\"\n >\n {children}\n </a>\n ),\n blockquote: ({ children }) => (\n <blockquote className=\"border-primary/30 text-muted-foreground my-3 border-l-2 pl-4 italic\">\n {children}\n </blockquote>\n ),\n};\n\nexport interface SkillDetailDrawerProps {\n skill: SkillData | null;\n onClose: () => void;\n}\n\nexport function SkillDetailDrawer({ skill, onClose }: SkillDetailDrawerProps) {\n return (\n <BaseDrawer\n open={skill !== null}\n onClose={onClose}\n size=\"sm\"\n modal\n data-testid=\"skill-detail-drawer\"\n header={\n skill ? (\n <>\n <DrawerTitle>{skill.displayName}</DrawerTitle>\n <DrawerDescription>{skill.name}</DrawerDescription>\n </>\n ) : undefined\n }\n >\n {skill ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 pb-4\">\n {/* Description */}\n <p className=\"text-muted-foreground text-sm\">{skill.description}</p>\n\n {/* Badges with explanatory tooltips */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge\n variant={skill.source === 'project' ? 'secondary' : 'outline'}\n className=\"cursor-default\"\n >\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {skill.source === 'project'\n ? 'Installed in this project\\u2019s .claude/skills/ directory'\n : 'Installed globally in your user profile'}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.category}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Skill category \\u2014 used for filtering on the Skills page\n </TooltipContent>\n </Tooltip>\n {skill.context ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className=\"cursor-default\">\n {skill.context}\n </Badge>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n Context restriction \\u2014 this skill only activates in this context\n </TooltipContent>\n </Tooltip>\n ) : null}\n </div>\n\n {/* Allowed Tools */}\n {skill.allowedTools ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Allowed Tools</h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">{skill.allowedTools}</p>\n </div>\n </>\n ) : null}\n\n {/* Resources */}\n {skill.resources.length > 0 ? (\n <>\n <Separator className=\"my-4\" />\n <div>\n <h3 className=\"text-sm font-semibold\">Resources</h3>\n <ul className=\"mt-2 space-y-1.5\">\n {skill.resources.map((resource) => (\n <li\n key={resource.name}\n className=\"text-muted-foreground flex items-center gap-2 text-sm\"\n >\n <FolderOpen className=\"size-3.5 shrink-0\" />\n <span>\n {resource.name}/ — {resource.fileCount}{' '}\n {resource.fileCount === 1 ? 'file' : 'files'}\n </span>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : null}\n\n {/* Body — rendered as markdown for proper heading/list/code formatting */}\n {skill.body ? (\n <>\n <Separator className=\"my-4\" />\n <div className=\"prose-sm\">\n <Markdown remarkPlugins={[remarkGfm]} components={mdComponents}>\n {skill.body}\n </Markdown>\n </div>\n </>\n ) : null}\n </div>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport { Search, Puzzle } from 'lucide-react';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { PageHeader } from '@/components/common/page-header';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { SkillList } from './skill-list';\nimport { CategoryFilter } from './category-filter';\nimport { SkillDetailDrawer } from './skill-detail-drawer';\nimport type { SkillCategory, SkillData, SkillSource } from '@/lib/skills';\n\nexport interface SkillsPageClientProps {\n skills: SkillData[];\n}\n\nfunction computeCategoryCounts(skills: SkillData[]): Record<SkillCategory, number> {\n const counts: Record<SkillCategory, number> = {\n Workflow: 0,\n 'Code Generation': 0,\n Analysis: 0,\n Reference: 0,\n };\n for (const skill of skills) {\n counts[skill.category]++;\n }\n return counts;\n}\n\nexport function SkillsPageClient({ skills }: SkillsPageClientProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [activeCategory, setActiveCategory] = useState<SkillCategory | null>(null);\n const [sourceFilter, setSourceFilter] = useState<SkillSource | null>(null);\n const [selectedSkill, setSelectedSkill] = useState<SkillData | null>(null);\n\n const categoryCounts = useMemo(() => computeCategoryCounts(skills), [skills]);\n\n const filteredSkills = useMemo(() => {\n const query = searchQuery.toLowerCase();\n return skills.filter((skill) => {\n if (activeCategory && skill.category !== activeCategory) return false;\n if (sourceFilter && skill.source !== sourceFilter) return false;\n if (query) {\n const matchesName = skill.name.toLowerCase().includes(query);\n const matchesDescription = skill.description.toLowerCase().includes(query);\n if (!matchesName && !matchesDescription) return false;\n }\n return true;\n });\n }, [skills, searchQuery, activeCategory, sourceFilter]);\n\n const clearFilters = () => {\n setSearchQuery('');\n setActiveCategory(null);\n setSourceFilter(null);\n };\n\n // No skills installed at all\n if (skills.length === 0) {\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n <EmptyState\n icon={<Puzzle className=\"size-10\" />}\n title=\"No skills found\"\n description=\"No Claude Code skills are installed. Add skills to .claude/skills/ to get started.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-8 p-8\">\n <PageHeader\n eyebrow=\"Developer Portal\"\n title=\"Skills\"\n description=\"Claude Code skills installed in this project\"\n />\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"text-muted-foreground absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n <Input\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"ps-9\"\n />\n </div>\n\n {/* Category Filter */}\n <CategoryFilter\n activeCategory={activeCategory}\n onCategoryChange={setActiveCategory}\n counts={categoryCounts}\n />\n\n {/* Source Filter */}\n <div className=\"flex flex-wrap gap-2\">\n <Button\n variant={sourceFilter === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter(null)}\n >\n All Sources\n </Button>\n <Button\n variant={sourceFilter === 'project' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('project')}\n >\n Project\n </Button>\n <Button\n variant={sourceFilter === 'global' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSourceFilter('global')}\n >\n Global\n </Button>\n </div>\n\n {/* Skill List or Empty Filter State */}\n {filteredSkills.length > 0 ? (\n <SkillList skills={filteredSkills} onSkillSelect={setSelectedSkill} />\n ) : (\n <EmptyState\n icon={<Search className=\"size-10\" />}\n title=\"No matching skills\"\n description=\"No skills match your current search and filter criteria.\"\n action={\n <Button variant=\"outline\" onClick={clearFilters}>\n Clear filters\n </Button>\n }\n />\n )}\n\n {/* Skill Detail Drawer */}\n <SkillDetailDrawer skill={selectedSkill} onClose={() => setSelectedSkill(null)} />\n </div>\n );\n}\n","import { Card } from '@/components/ui/card';\nimport { Badge } from '@/components/ui/badge';\nimport type { SkillData } from '@/lib/skills';\nimport { FolderOpen } from 'lucide-react';\n\nexport interface SkillCardProps {\n skill: SkillData;\n onSelect: (skill: SkillData) => void;\n}\n\nexport function SkillCard({ skill, onSelect }: SkillCardProps) {\n return (\n <Card\n className=\"cursor-pointer p-5 transition-all duration-300 hover:-translate-y-0.5 hover:shadow-md hover:ring-slate-300 dark:hover:ring-slate-600\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onSelect(skill)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(skill);\n }\n }}\n data-testid={`skill-card-${skill.name}`}\n >\n {/* Title + monospace name — matches ToolCard's tight editorial header */}\n <h3 className=\"text-foreground text-sm leading-tight font-bold tracking-tight\">\n {skill.displayName}\n </h3>\n <p className=\"text-muted-foreground mt-1 font-mono text-xs\">{skill.name}</p>\n\n {/* Description */}\n <p className=\"text-muted-foreground mt-3 line-clamp-2 text-xs leading-relaxed\">\n {skill.description}\n </p>\n\n {/* Badges — bottom of card */}\n <div className=\"mt-4 flex flex-wrap items-center gap-1.5\">\n <Badge variant={skill.source === 'project' ? 'secondary' : 'outline'}>\n {skill.source === 'project' ? 'Project' : 'Global'}\n </Badge>\n {skill.context ? <Badge variant=\"outline\">{skill.context}</Badge> : null}\n {skill.allowedTools ? <Badge variant=\"outline\">Tools</Badge> : null}\n {skill.resources.length > 0 ? (\n <span className=\"text-muted-foreground inline-flex items-center gap-1 text-xs\">\n <FolderOpen className=\"size-3\" />\n {skill.resources.length} {skill.resources.length === 1 ? 'resource' : 'resources'}\n </span>\n ) : null}\n </div>\n </Card>\n );\n}\n","import { SkillCard } from './skill-card';\nimport type { SkillCategory, SkillData } from '@/lib/skills';\n\nconst CATEGORY_ORDER: SkillCategory[] = ['Workflow', 'Code Generation', 'Analysis', 'Reference'];\n\nexport interface SkillListProps {\n skills: SkillData[];\n onSkillSelect: (skill: SkillData) => void;\n}\n\nfunction groupByCategory(skills: SkillData[]): Map<SkillCategory, SkillData[]> {\n const groups = new Map<SkillCategory, SkillData[]>();\n for (const skill of skills) {\n const group = groups.get(skill.category) ?? [];\n group.push(skill);\n groups.set(skill.category, group);\n }\n return groups;\n}\n\nexport function SkillList({ skills, onSkillSelect }: SkillListProps) {\n const groups = groupByCategory(skills);\n\n return (\n <div className=\"space-y-12\">\n {CATEGORY_ORDER.map((category) => {\n const categorySkills = groups.get(category);\n if (!categorySkills || categorySkills.length === 0) return null;\n\n return (\n <section key={category}>\n <h2 className=\"text-foreground mb-6 text-xl font-bold tracking-tight\">\n {category}{' '}\n <span className=\"text-muted-foreground text-sm font-normal\">\n ({categorySkills.length})\n </span>\n </h2>\n <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 xl:grid-cols-3\">\n {categorySkills.map((skill) => (\n <SkillCard key={skill.name} skill={skill} onSelect={onSkillSelect} />\n ))}\n </div>\n </section>\n );\n })}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SkillCategory } from '@/lib/skills';\n\nconst CATEGORIES: { label: string; value: SkillCategory | null }[] = [\n { label: 'All', value: null },\n { label: 'Workflow', value: 'Workflow' },\n { label: 'Code Generation', value: 'Code Generation' },\n { label: 'Analysis', value: 'Analysis' },\n { label: 'Reference', value: 'Reference' },\n];\n\nexport interface CategoryFilterProps {\n activeCategory: SkillCategory | null;\n onCategoryChange: (category: SkillCategory | null) => void;\n counts?: Record<SkillCategory, number>;\n}\n\n/*\n * Category filter — editorial tab treatment matching the Tools page.\n * Uses bg-card container with editorial-shadow, active pill with bg-muted +\n * text-primary + ring lift, inactive pills with muted text and hover affordance.\n */\nexport function CategoryFilter({ activeCategory, onCategoryChange, counts }: CategoryFilterProps) {\n return (\n <div\n className=\"bg-card editorial-shadow inline-flex flex-wrap items-center gap-1 rounded-lg p-1\"\n role=\"group\"\n aria-label=\"Filter by category\"\n >\n {CATEGORIES.map(({ label, value }) => {\n const isActive = activeCategory === value;\n return (\n <button\n key={label}\n type=\"button\"\n onClick={() => onCategoryChange(value)}\n className={cn(\n 'cursor-pointer rounded-md px-3 py-1.5 text-xs font-bold transition-all',\n isActive\n ? 'bg-muted text-primary shadow-sm ring-1 ring-slate-200/70 dark:ring-slate-700/50'\n : 'text-muted-foreground hover:text-foreground'\n )}\n >\n {label}\n {counts != null && value != null ? (\n <span className=\"ms-1 opacity-70\">({counts[value]})</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n"],"names":["EmptyState","icon","title","description","action","className","props","Card","ref","displayName","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","PageHeader","eyebrow","children","mdComponents","h1","h2","h3","p","strong","em","code","pre","ul","ol","li","hr","a","href","target","rel","blockquote","SkillDetailDrawer","skill","onClose","open","size","modal","header","name","undefined","asChild","variant","source","side","category","context","allowedTools","resources","length","map","resource","fileCount","body","remarkPlugins","components","SkillCard","onSelect","role","tabIndex","onClick","onKeyDown","e","key","preventDefault"],"mappings":"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","ignoreList":[0,1,3]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
module.exports=[2211,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28446)},50961,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},23504,33244,27900,12513,73101,54775,65324,a=>{"use strict";var b=a.i(2211),c=a.i(96380);let d={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},e={displayName:"",description:""};var f=a.i(50961);let g={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},h={"claude-code":0,"codex-cli":1,"copilot-cli":2,cursor:3,"gemini-cli":4,"rovo-dev":5},i={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"};async function j(){try{let a=(0,c.resolve)("IAgentExecutorFactory"),b=a.getSupportedAgents().map(b=>({agentType:b,label:g[b]??b,models:a.getSupportedModels(b).map(a=>{let b;return{id:a,...(b=d[a])||{...e,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}})})).filter(a=>a.models.length>0),f=(0,c.resolve)("IToolInstallerService");return(await Promise.all(b.map(async a=>{let b=i[a.agentType];if(!b)return{...a,installed:!0};try{let c=await f.checkAvailability(b);return{...a,installed:"available"===c.status}}catch{return{...a,installed:!1}}}))).sort((a,b)=>(h[a.agentType]??50)-(h[b.agentType]??50))}catch{return[]}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"00cb492dab92bd0326eab5f4e397f8a806590b6575",null),a.s(["getAllAgentModels",0,j],23504);let k="__shipitAiSettings";function l(){let a=globalThis[k];if(null!=a)return a;let b=process[k];return null!=b?b:null}function m(a){globalThis[k]=a,process[k]=a}function n(a){if(null!==l())throw Error("Settings already initialized. Cannot re-initialize.");m(a)}function o(){m(null)}async function p(a,b){if(!a.trim())return{ok:!1,error:"agent type is required"};try{let d=(0,c.resolve)("CompleteWebOnboardingUseCase"),e=await d.execute({agentType:a.trim(),model:b});return o(),n(e),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to update agent and model"}}}a.s(["initializeSettings",0,n,"resetSettings",0,o,"updateSettings",0,function(a){if(null===l())throw Error("Settings not initialized. Cannot update before initialization.");m(a)}],33244),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"60ae0963d90154a826e68059d74ce5b83ecdb42834",null),a.s(["updateAgentAndModel",0,p],27900),a.i(1442);var q=a.i(63128);async function r(){let a=new q.FolderDialogService;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,f.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"009c2ce13787d87731005e2caf24c3b04c1fe25f07",null),a.s(["pickFolder",0,r],12513);class s extends Error{constructor(a,b){super(a),this.name="GitHubAuthError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class t extends Error{constructor(a,b){super(a),this.name="GitHubCloneError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class u extends Error{constructor(a,b){super(a),this.name="GitHubUrlParseError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}async function v(a){try{let b=(0,c.resolve)("ListGitHubRepositoriesUseCase");return{repos:await b.execute(a)}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list repositories"}}}async function w(){try{let a=(0,c.resolve)("ListGitHubOrganizationsUseCase");return{orgs:await a.execute()}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list organizations"}}}async function x(a){let{url:b,dest:d}=a;if(!b?.trim())return{error:"GitHub URL is required"};try{let a=(0,c.resolve)("ImportGitHubRepositoryUseCase");return{repository:await a.execute({url:b,dest:d})}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};if(a instanceof u)return{error:`Invalid GitHub URL: ${a.message}`};if(a instanceof t)return{error:`Clone failed: ${a.message}`};return{error:a instanceof Error?a.message:"Failed to import repository"}}}(0,f.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"4002ef12dc7114c887792161c7d672ee07c9b0b7c1",null),a.s(["listGitHubRepositories",0,v],73101),(0,f.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"00caf1ef96765d0bfecd15d5f020078aa108198719",null),a.s(["listGitHubOrganizations",0,w],54775),(0,f.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"40dcfd57d5d913aea2a63567caf17e493f93a24fb7",null),a.s(["importGitHubRepository",0,x],65324)},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"4069a068bf879e0959b9a2e25e28c1c158fc17ec62",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"4094d66bf41e32b9fbdd120e874b59bd171f7004d6",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"409f2e4acfe9a659a3e8e65ff8ad54bc3c521497d0",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"4017845f1b9d6b77258fcee2ef1b0d08c8858bae7f",null),a.s(["getDeploymentStatus",0,q],85321)},94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"401cc86cdaf7035167c1d206d2b1077e5bfe47955a",null),a.s(["getDeploymentLogs",0,d])},3391,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],85192),a.i(85192),a.s(["001fe21766e4760e31c4a0cb88adbfdd7ec6778fe9",()=>q.isAgentSetupComplete,"007051d103aac9a19ce558dce0ac2384af13b781f1",()=>r.checkAgentAuth,"00994115c67a82699bad6904061c346b10818672a7",()=>s.checkToolStatus,"009c2ce13787d87731005e2caf24c3b04c1fe25f07",()=>d.pickFolder,"00caf1ef96765d0bfecd15d5f020078aa108198719",()=>f.listGitHubOrganizations,"00cb492dab92bd0326eab5f4e397f8a806590b6575",()=>b.getAllAgentModels,"400148e86433bfe165e846d0c9e00444c99c1a0e5b",()=>u.archiveFeature,"4002ef12dc7114c887792161c7d672ee07c9b0b7c1",()=>e.listGitHubRepositories,"4016c7f17f29c112364484e72ea167ac1c56c0164d",()=>B.deleteRepository,"4017845f1b9d6b77258fcee2ef1b0d08c8858bae7f",()=>k.getDeploymentStatus,"401cc86cdaf7035167c1d206d2b1077e5bfe47955a",()=>p.getDeploymentLogs,"4024ea9270b67f4b785b813ea80b5c48a0ac64ef94",()=>y.stopFeature,"403de2be54d420e6c908508702d2d177b6c366978b",()=>n.openFolder,"404b35bf290a9fc40f85b9c946426d9fc174919d71",()=>A.addRepository,"4055b120516f521115f2a8877cf2bf12ab30022231",()=>t.getFeatureMetadata,"4069a068bf879e0959b9a2e25e28c1c158fc17ec62",()=>h.deployFeature,"4086324af8316f7a5f289333519a86ca2a1b7604ef",()=>l.openIde,"408d51b84255c6b16e35fc4b732e69c020f1529e8d",()=>z.unarchiveFeature,"4094d66bf41e32b9fbdd120e874b59bd171f7004d6",()=>i.deployRepository,"409e53aa0db4c4ebb60e7daf780f3c89b06f2b138f",()=>o.syncRepository,"409f2e4acfe9a659a3e8e65ff8ad54bc3c521497d0",()=>j.stopDeployment,"40a9d4a7ce46ddecef8d9299481149374d07b3b58c",()=>x.startFeature,"40d7c3a8720ab75d31cf93170f55faff35ec55c05b",()=>m.openShell,"40dcd13d31159f56e6f7d9d37e649e43f7530c2ec7",()=>w.resumeFeature,"40dcfd57d5d913aea2a63567caf17e493f93a24fb7",()=>g.importGitHubRepository,"60ae0963d90154a826e68059d74ce5b83ecdb42834",()=>c.updateAgentAndModel,"78443850892f7eabe811fd996e42b2deb477c2c00a",()=>v.deleteFeature],3391)}];
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},23504,33244,27900,12513,73101,54775,65324,a=>{"use strict";var b=a.i(2211),c=a.i(96380);let d={"claude-opus-4-6":{displayName:"Opus 4.6",description:"Most capable, complex tasks"},"claude-sonnet-4-6":{displayName:"Sonnet 4.6",description:"Fast & balanced"},"claude-haiku-4-5":{displayName:"Haiku 4.5",description:"Lightweight & quick"},"gemini-3.1-pro":{displayName:"Gemini 3.1 Pro",description:"Advanced reasoning"},"gemini-3-flash":{displayName:"Gemini 3 Flash",description:"Ultra-fast responses"},"gemini-2.5-pro":{displayName:"Gemini 2.5 Pro",description:"Reliable workhorse"},"gemini-2.5-flash":{displayName:"Gemini 2.5 Flash",description:"Speed-optimized"},"gpt-5.4-high":{displayName:"GPT-5.4",description:"Latest reasoning model"},"gpt-5.2":{displayName:"GPT-5.2",description:"Flagship model"},"gpt-5.3-codex":{displayName:"GPT-5.3 Codex",description:"Code specialist"},"composer-1.5":{displayName:"Composer 1.5",description:"Multi-file editing"},"grok-code":{displayName:"Grok Code",description:"xAI code model"},"gpt-8":{displayName:"GPT-8",description:"Writes code before you think it"},"opus-7":{displayName:"Opus 7",description:"Achieved consciousness, ships on time"}},e={displayName:"",description:""};var f=a.i(50961);let g={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},h={"claude-code":0,"codex-cli":1,"copilot-cli":2,cursor:3,"gemini-cli":4,"rovo-dev":5},i={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"};async function j(){try{let a=(0,c.resolve)("IAgentExecutorFactory"),b=a.getSupportedAgents().map(b=>({agentType:b,label:g[b]??b,models:a.getSupportedModels(b).map(a=>{let b;return{id:a,...(b=d[a])||{...e,displayName:a.replace(/^claude-/,"").replace(/^gemini-/,"Gemini ").replace(/^gpt-/,"GPT-").replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())}}})})).filter(a=>a.models.length>0),f=(0,c.resolve)("IToolInstallerService");return(await Promise.all(b.map(async a=>{let b=i[a.agentType];if(!b)return{...a,installed:!0};try{let c=await f.checkAvailability(b);return{...a,installed:"available"===c.status}}catch{return{...a,installed:!1}}}))).sort((a,b)=>(h[a.agentType]??50)-(h[b.agentType]??50))}catch{return[]}}(0,f.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"0069ef1d56b1031a928403079be63459d41748b3fe",null),a.s(["getAllAgentModels",0,j],23504);let k="__shipitAiSettings";function l(){let a=globalThis[k];if(null!=a)return a;let b=process[k];return null!=b?b:null}function m(a){globalThis[k]=a,process[k]=a}function n(a){if(null!==l())throw Error("Settings already initialized. Cannot re-initialize.");m(a)}function o(){m(null)}async function p(a,b){if(!a.trim())return{ok:!1,error:"agent type is required"};try{let d=(0,c.resolve)("CompleteWebOnboardingUseCase"),e=await d.execute({agentType:a.trim(),model:b});return o(),n(e),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:"Failed to update agent and model"}}}a.s(["initializeSettings",0,n,"resetSettings",0,o,"updateSettings",0,function(a){if(null===l())throw Error("Settings not initialized. Cannot update before initialization.");m(a)}],33244),(0,f.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"60f6da21c3ba26aaabe566c12d0dc273540d1aab35",null),a.s(["updateAgentAndModel",0,p],27900),a.i(1442);var q=a.i(63128);async function r(){let a=new q.FolderDialogService;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}(0,f.ensureServerEntryExports)([r]),(0,b.registerServerReference)(r,"003a0801a539b9c91bee1ddcd74fc281846133c1b4",null),a.s(["pickFolder",0,r],12513);class s extends Error{constructor(a,b){super(a),this.name="GitHubAuthError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class t extends Error{constructor(a,b){super(a),this.name="GitHubCloneError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}class u extends Error{constructor(a,b){super(a),this.name="GitHubUrlParseError",Object.setPrototypeOf(this,new.target.prototype),b&&(this.cause=b)}}async function v(a){try{let b=(0,c.resolve)("ListGitHubRepositoriesUseCase");return{repos:await b.execute(a)}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list repositories"}}}async function w(){try{let a=(0,c.resolve)("ListGitHubOrganizationsUseCase");return{orgs:await a.execute()}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};return{error:a instanceof Error?a.message:"Failed to list organizations"}}}async function x(a){let{url:b,dest:d}=a;if(!b?.trim())return{error:"GitHub URL is required"};try{let a=(0,c.resolve)("ImportGitHubRepositoryUseCase");return{repository:await a.execute({url:b,dest:d})}}catch(a){if(a instanceof s)return{error:"GitHub CLI is not authenticated. Run `gh auth login` to sign in."};if(a instanceof u)return{error:`Invalid GitHub URL: ${a.message}`};if(a instanceof t)return{error:`Clone failed: ${a.message}`};return{error:a instanceof Error?a.message:"Failed to import repository"}}}(0,f.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"4042093c4fa122e826baeb89fa202777afbdb9efa7",null),a.s(["listGitHubRepositories",0,v],73101),(0,f.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"00596073b73c6abb55f7967040e08d048d3d1b9e2c",null),a.s(["listGitHubOrganizations",0,w],54775),(0,f.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"4097bf6378ea9bae31c036a724fa42a06a397480ae",null),a.s(["importGitHubRepository",0,x],65324)},33841,46646,68670,85321,a=>{"use strict";var b=a.i(2211),c=a.i(2157),d=a.i(96380);a.i(1442);let e=()=>void 0;function f(a){let b=!!process.env.DEBUG;return{info:b?(...b)=>console.info(a,...b):e,debug:b?(...b)=>console.debug(a,...b):e,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}var g=a.i(29918),h=a.i(81719),i=a.i(50227);function j(a){try{let b=(0,c.realpathSync)((0,i.resolve)(a)).replace(/\\/g,"/"),d=(0,c.realpathSync)((0,i.resolve)("/home/runner/work/shipit/shipit/src/presentation/web")).replace(/\\/g,"/");return b===d}catch{return!1}}var k=a.i(50961);let l=f("[deployFeature]");async function m(a){if(l.info(`called — featureId="${a}"`),!a?.trim())return l.warn("rejected — featureId is empty"),{success:!1,error:"featureId is required"};try{let b=(0,d.resolve)("IFeatureRepository"),e=await b.findById(a);if(!e)return l.warn(`feature not found in repository: "${a}"`),{success:!1,error:`Feature not found: ${a}`};l.info(`feature found — repositoryPath="${e.repositoryPath}", branch="${e.branch}"`);let f=(0,g.computeWorktreePath)(e.repositoryPath,e.branch);if(l.info(`computed worktreePath="${f}"`),!(0,c.existsSync)(f))return l.warn(`worktree path does not exist on disk: "${f}"`),{success:!1,error:`Worktree path does not exist: ${f}`};if(j(e.repositoryPath))return l.warn("rejected — feature belongs to the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for features of the repository ShipIT is running from"};return l.info("worktree path exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(a,f,"feature"),l.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy feature";return l.error(`error: ${a}`,b),{success:!1,error:a}}}(0,k.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"408224bdf1ea8124bbe4be08d80a2a550dc6636e9c",null),a.s(["deployFeature",0,m],33841);let n=f("[deployRepository]");async function o(a){let b;if(n.info(`called — repositoryPath="${a}"`),!a||!(0,i.isAbsolute)(a))return n.warn("rejected — not an absolute path"),{success:!1,error:"repositoryPath must be an absolute path"};try{b=(0,c.realpathSync)(a)}catch{return n.warn(`directory does not exist: "${a}"`),{success:!1,error:"Directory does not exist"}}try{if(j(b))return n.warn("rejected — target is the running ShipIT instance"),{success:!1,error:"Cannot start a dev server for the repository ShipIT is running from"};return n.info("directory exists, calling deploymentService.start()"),(0,d.resolve)("IDeploymentService").start(b,b,"repository"),n.info("start() returned successfully — state=Booting"),{success:!0,state:h.DeploymentState.Booting}}catch(b){let a=b instanceof Error?b.message:"Failed to deploy repository";return n.error(`error: ${a}`,b),{success:!1,error:a}}}async function p(a){if(!a?.trim())return{success:!1,error:"targetId is required"};try{let b=(0,d.resolve)("IDeploymentService");return await b.stop(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to stop deployment"}}}async function q(a){return a?.trim()?(0,d.resolve)("IDeploymentService").getStatus(a):null}(0,k.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40081c3290a7137d66e58ff2a328155f18b22c9e52",null),a.s(["deployRepository",0,o],46646),(0,k.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"40bd2758ed0b33815b538cad707381c9083e19cba2",null),a.s(["stopDeployment",0,p],68670),(0,k.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"4025c066fd5bbb9a570db74c9c6c4f7a6e475fd2cc",null),a.s(["getDeploymentStatus",0,q],85321)},94691,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){return a?.trim()?(0,c.resolve)("IDeploymentService").getLogs(a):null}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40572e41ce6484a9082805c8dc61579968160406b9",null),a.s(["getDeploymentLogs",0,d])},3391,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353);a.s([],85192),a.i(85192),a.s(["003a0801a539b9c91bee1ddcd74fc281846133c1b4",()=>d.pickFolder,"004c68a6d7e7f54a378ef211474e899610a81ba2a5",()=>q.isAgentSetupComplete,"00596073b73c6abb55f7967040e08d048d3d1b9e2c",()=>f.listGitHubOrganizations,"005dd5a1b3f65ef6eed530978be48ca49e41806825",()=>r.checkAgentAuth,"0069ef1d56b1031a928403079be63459d41748b3fe",()=>b.getAllAgentModels,"00a7e7bc3ef4eb198ffb820fd546862092c744fb05",()=>s.checkToolStatus,"40081c3290a7137d66e58ff2a328155f18b22c9e52",()=>i.deployRepository,"4025c066fd5bbb9a570db74c9c6c4f7a6e475fd2cc",()=>k.getDeploymentStatus,"4042093c4fa122e826baeb89fa202777afbdb9efa7",()=>e.listGitHubRepositories,"404bc7ab38210b162e6718e187ff84fa129f84f9c4",()=>n.openFolder,"404dc0bfcd540b702e1bbb3d8997ad0e37247166b9",()=>x.startFeature,"404e63ca1155566c1ac69013f7d49a21449868e8e2",()=>l.openIde,"40572e41ce6484a9082805c8dc61579968160406b9",()=>p.getDeploymentLogs,"407358c4314951141244bc84ce4d2536c7781af0ff",()=>t.getFeatureMetadata,"4076fa2905c8dae67d8a93c911da9ca398e48cf22e",()=>y.stopFeature,"408224bdf1ea8124bbe4be08d80a2a550dc6636e9c",()=>h.deployFeature,"4084cac02544eba4d4857349905aef892b88cda46f",()=>z.unarchiveFeature,"4097bf6378ea9bae31c036a724fa42a06a397480ae",()=>g.importGitHubRepository,"40aa7b6f983ba8f04aa0306d50e608d5e56e270bf2",()=>A.addRepository,"40bd2758ed0b33815b538cad707381c9083e19cba2",()=>j.stopDeployment,"40d43ad9cbdba71bcb7191b9adca9f6b5919355384",()=>o.syncRepository,"40d66d6138bf8249c1156651e56618741fdf97424f",()=>u.archiveFeature,"40d6ad53f1b546afa1e2ce859f740f54db69b90500",()=>w.resumeFeature,"40dc812e621ced4861c9375be3f96be7e46efe450f",()=>m.openShell,"40ea84d213303e39add93283a998247f31a79b7f9b",()=>B.deleteRepository,"60f6da21c3ba26aaabe566c12d0dc273540d1aab35",()=>c.updateAgentAndModel,"78e4b1bfdf01657537704ecf684aec20830f60252a",()=>v.deleteFeature],3391)}];
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=_1161g9x._.js.map
|