@shepai/cli 1.70.1 → 1.71.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/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts +32 -0
- package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +16 -2
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +46 -9
- package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.d.ts +23 -0
- package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.js +46 -0
- package/dist/src/presentation/web/app/actions/get-deployment-logs.d.ts +3 -0
- package/dist/src/presentation/web/app/actions/get-deployment-logs.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-deployment-logs.js +9 -0
- package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts +2 -0
- package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-feature-artifact.js +23 -1
- package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts +15 -0
- package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/deployment-logs/route.js +94 -0
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +2 -2
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.js +34 -4
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts +2 -1
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +16 -5
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts +4 -0
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.js +8 -0
- package/dist/src/presentation/web/components/common/merge-review/merge-review.js +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +1 -1
- package/dist/src/presentation/web/components/common/product-decisions-summary/index.d.ts +3 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/index.js +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.d.ts +23 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.js +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.d.ts +3 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.js +13 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.d.ts +14 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.js +74 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
- package/dist/src/presentation/web/components/common/server-log-viewer/index.d.ts +2 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/index.js +1 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.d.ts +15 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.js +31 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.d.ts +18 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.js +113 -0
- package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/index.js +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts +8 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +11 -2
- package/dist/src/presentation/web/components/common/tech-review-tabs/index.d.ts +3 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/index.js +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.d.ts +17 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.js +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.d.ts +3 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.js +12 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.d.ts +16 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.js +110 -0
- package/dist/src/presentation/web/hooks/use-deployment-logs.d.ts +7 -0
- package/dist/src/presentation/web/hooks/use-deployment-logs.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-deployment-logs.js +50 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +1 -0
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/routes-manifest.json +6 -0
- package/web/.next/server/app/_global-error.html +2 -2
- 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 +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/deployment-logs/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/deployment-logs/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/deployment-logs/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/deployment-logs/route.js +6 -0
- package/web/.next/server/app/api/deployment-logs/route.js.map +5 -0
- package/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -0
- package/web/.next/server/app/api/deployment-logs/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
- package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
- package/web/.next/server/app/page/server-reference-manifest.json +51 -36
- package/web/.next/server/app/page.js +1 -1
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +25 -10
- 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 +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 +1 -1
- 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/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +9 -0
- package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__09413611._.js → [root-of-the-server]__e926de65._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__09413611._.js.map → [root-of-the-server]__e926de65._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js → [root-of-the-server]__6e8b5181._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js +9 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_25e0eb34._.js +3 -0
- package/web/.next/server/chunks/ssr/_25e0eb34._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_49bf495c._.js +1 -1
- package/web/.next/server/chunks/ssr/_49bf495c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_68b5e0de._.js +1 -1
- package/web/.next/server/chunks/ssr/_68b5e0de._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_725584e5._.js +1 -1
- package/web/.next/server/chunks/ssr/_725584e5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_72ce07df._.js +3 -0
- package/web/.next/server/chunks/ssr/_72ce07df._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js → node_modules__pnpm_3288606c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js.map → node_modules__pnpm_3288606c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js.map +1 -0
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +64 -42
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
- package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/build-manifest.json +11 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js +6 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js.map +5 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +51 -36
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +25 -10
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +9 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__09413611._.js → [root-of-the-server]__e926de65._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js → [root-of-the-server]__6e8b5181._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js +4 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js +9 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_25e0eb34._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_49bf495c._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_68b5e0de._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_725584e5._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_72ce07df._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js → node_modules__pnpm_3288606c._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +64 -42
- package/web/.next/standalone/src/presentation/web/app/actions/get-deployment-logs.ts +16 -0
- package/web/.next/standalone/src/presentation/web/app/actions/get-feature-artifact.ts +26 -1
- package/web/.next/standalone/src/presentation/web/app/api/deployment-logs/route.ts +112 -0
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +6 -2
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.tsx +44 -6
- package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.tsx +10 -0
- package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.tsx +76 -23
- package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/index.ts +6 -0
- package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.ts +24 -0
- package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.tsx +87 -0
- package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.tsx +52 -0
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +5 -1
- package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/index.ts +6 -0
- package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.tsx +168 -0
- package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/server-log-viewer.tsx +110 -0
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/index.ts +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +47 -29
- package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/index.ts +2 -0
- package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.ts +17 -0
- package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.tsx +129 -0
- package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.tsx +60 -0
- package/web/.next/standalone/src/presentation/web/hooks/use-deployment-logs.ts +67 -0
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/01ae2241bd4b44b6.js +1 -0
- package/web/.next/static/chunks/20f7876f292cfd82.js +1 -0
- package/web/.next/static/chunks/224ed5f5dbd33154.css +2 -0
- package/web/.next/static/chunks/{87421ab1062a39b7.js → 3e1227e02ef8bcc6.js} +2 -2
- package/web/.next/static/chunks/{1ed0df845a1625f6.js → 62c8ebbd9c7bb287.js} +1 -1
- package/web/.next/static/chunks/673e0c1000a91948.js +1 -0
- package/web/.next/static/chunks/8b6df4f8e194d0ce.js +1 -0
- package/web/.next/static/chunks/b025563d959150a1.js +1 -0
- package/web/.next/static/chunks/{9db5c06001f3e664.js → c7fb052190a02a9c.js} +2 -2
- package/web/.next/static/chunks/d450d8db6be36b8d.js +1 -0
- package/web/.next/static/chunks/d9e3cf214ac2f386.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/types/link.d.ts +1 -0
- package/web/.next/types/routes.d.ts +2 -1
- package/web/.next/types/validator.ts +9 -0
- package/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js +0 -3
- package/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +0 -9
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_28993370._.js +0 -3
- package/web/.next/server/chunks/ssr/_28993370._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_690ea95f._.js +0 -3
- package/web/.next/server/chunks/ssr/_690ea95f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js.map +0 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +0 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +0 -9
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_28993370._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_690ea95f._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +0 -3
- package/web/.next/static/chunks/16e380b8dd9d11bc.js +0 -1
- package/web/.next/static/chunks/24e1d97cab8bad6d.js +0 -1
- package/web/.next/static/chunks/505c6a9e4c5d0808.js +0 -1
- package/web/.next/static/chunks/a186bbb822ccb655.css +0 -2
- package/web/.next/static/chunks/a5c59952485e875e.js +0 -1
- package/web/.next/static/chunks/a9626385607910b3.js +0 -1
- package/web/.next/static/chunks/d4379644a6145352.js +0 -1
- package/web/.next/static/chunks/fb703cf73aba2eb8.js +0 -1
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js.map → [root-of-the-server]__6e8b5181._.js.map} +0 -0
- /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_buildManifest.js +0 -0
- /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[71238,a=>{"use strict";let b=(0,a.i(25700).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",()=>b],71238)},63698,a=>{"use strict";let b=(0,a.i(25700).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",()=>b],63698)},45670,2807,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(71335),e=a.i(89868);a.s(["X",()=>e.default],2807);var e=e,f=a.i(85536);let g=d.Dialog.Root;d.Dialog.Trigger;let h=d.Dialog.Portal;d.Dialog.Close;let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Overlay,{ref:e,className:(0,f.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",a),...c}));i.displayName=d.Dialog.Overlay.displayName;let j=c.forwardRef(({className:a,children:c,...g},j)=>(0,b.jsxs)(h,{children:[(0,b.jsx)(i,{}),(0,b.jsxs)(d.Dialog.Content,{ref:j,className:(0,f.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg",a),...g,children:[c,(0,b.jsxs)(d.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none",children:[(0,b.jsx)(e.default,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));j.displayName=d.Dialog.Content.displayName;let k=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});k.displayName="DialogHeader";let l=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Title,{ref:e,className:(0,f.cn)("text-lg leading-none font-semibold tracking-tight",a),...c}));l.displayName=d.Dialog.Title.displayName;let m=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Description,{ref:e,className:(0,f.cn)("text-muted-foreground text-sm",a),...c}));m.displayName=d.Dialog.Description.displayName,a.s(["Dialog",()=>g,"DialogContent",()=>j,"DialogDescription",()=>m,"DialogHeader",()=>k,"DialogTitle",()=>l],45670)},53170,a=>{"use strict";let b=(0,a.i(25700).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);a.s(["GitBranch",()=>b],53170)},56926,58428,a=>{"use strict";let b=(0,a.i(25700).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["default",()=>b],58428),a.s(["CircleX",()=>b],56926)},72016,51969,a=>{"use strict";let b=(0,a.i(25700).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",()=>b],51969),a.s(["Check",()=>b],72016)},98410,a=>{"use strict";let b=(0,a.i(25700).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],98410)},92163,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(17300),e=a.i(41305),f=a.i(85536),g=a.i(71238),h=a.i(88064),i=a.i(25700);let j=(0,i.default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]),k=(0,i.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),l=(0,i.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);var m=a.i(63698),n=a.i(53170),o=a.i(56926),p=a.i(72016);let q=(0,i.default)("package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);var r=a.i(18948),s=a.i(98410),t=a.i(45670);function u({tool:a,open:d,onOpenChange:e,className:h}){let[i,j]=(0,c.useState)(!1);return(0,b.jsx)(t.Dialog,{open:d,onOpenChange:e,children:(0,b.jsxs)(t.DialogContent,{"data-testid":"install-instructions",className:(0,f.cn)("sm:max-w-2xl",h),children:[(0,b.jsxs)(t.DialogHeader,{children:[(0,b.jsxs)(t.DialogTitle,{"data-testid":"install-instructions-title",children:["Install ",a.name]}),(0,b.jsx)(t.DialogDescription,{"data-testid":"install-instructions-description",children:a.summary})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[a.installCommand&&a.autoInstall?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-xs font-medium",children:"Installation command"}),(0,b.jsxs)("div",{className:"bg-muted relative rounded-md",children:[(0,b.jsx)("pre",{"data-testid":"install-instructions-command",className:"overflow-x-auto px-3 py-2.5 pr-20 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap",children:(0,b.jsx)("code",{children:a.installCommand})}),(0,b.jsxs)(r.Button,{variant:"ghost",size:"sm",className:"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2",onClick:function(){a.installCommand&&navigator.clipboard.writeText(a.installCommand).then(()=>{j(!0),setTimeout(()=>j(!1),2e3)})},"aria-label":i?"Copied!":"Copy install command","data-testid":"install-instructions-copy-button",children:[i?(0,b.jsx)(p.Check,{className:"h-3.5 w-3.5 text-emerald-500"}):(0,b.jsx)(s.Copy,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"ml-1 text-[10px]",children:i?"Copied!":"Copy"})]})]})]}):a.installCommand?(0,b.jsx)("p",{"data-testid":"install-instructions-command",className:"text-muted-foreground text-sm",children:a.installCommand}):(0,b.jsx)("p",{"data-testid":"install-instructions-no-command",className:"text-muted-foreground text-sm",children:"Please refer to the documentation for installation instructions."}),a.documentationUrl?(0,b.jsx)(r.Button,{variant:"outline",size:"sm",className:"w-fit cursor-pointer",asChild:!0,children:(0,b.jsxs)("a",{"data-testid":"install-instructions-doc-link",href:a.documentationUrl,target:"_blank",rel:"noopener noreferrer",children:["View documentation",(0,b.jsx)(g.ExternalLink,{className:"ml-1.5 h-3.5 w-3.5"})]})}):null]})]})})}let v={ide:{label:"IDE",icon:l},"cli-agent":{label:"CLI Agent",icon:m.Terminal},vcs:{label:"VCS",icon:n.GitBranch},terminal:{label:"Terminal",icon:m.Terminal}};function w({tool:a,onRefresh:d,className:e}){let[i,m]=(0,c.useState)(!1),[n,s]=(0,c.useTransition)(),t="available"===a.status.status,w="error"===a.status.status,x=t&&!!a.openDirectory;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{"data-testid":"tool-card",className:(0,f.cn)("bg-card group flex h-30 w-full flex-col rounded-lg border p-3 shadow-sm transition-shadow hover:shadow-md",e),children:[(0,b.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[a.iconUrl?(0,b.jsx)("img",{src:a.iconUrl,alt:"",width:20,height:20,className:"shrink-0 dark:invert"}):(0,b.jsx)(q,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,b.jsx)("h3",{"data-testid":"tool-card-name",className:"truncate text-sm font-bold",children:a.name})]}),(0,b.jsx)("div",{"data-testid":"tool-card-tags",className:"flex shrink-0 items-center gap-1",children:a.tags.map(a=>{let c=v[a]??{label:a,icon:l},d=c.icon;return(0,b.jsxs)("span",{className:"bg-muted text-muted-foreground inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] font-medium",children:[(0,b.jsx)(d,{className:"h-2.5 w-2.5"}),c.label]},a)})})]}),(0,b.jsx)("p",{"data-testid":"tool-card-summary",className:"text-muted-foreground mt-1 truncate text-xs",children:a.summary}),(0,b.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[w&&"error"===a.status.status?(0,b.jsxs)("span",{className:"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400",title:a.status.errorMessage,children:[(0,b.jsx)(o.CircleX,{className:"h-3 w-3 shrink-0"}),a.status.errorMessage??"Error"]}):t?(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-emerald-600 dark:text-emerald-400",children:[(0,b.jsx)(p.Check,{className:"h-3 w-3"}),"Installed"]}):(0,b.jsx)("span",{className:"text-muted-foreground text-[10px]",children:"Not installed"}),a.required?(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] italic",children:"Required"}):null]}),t&&x?(0,b.jsxs)(r.Button,{size:"sm",variant:"ghost",onClick:function(){s(async()=>{await fetch(`/api/tools/${a.id}/launch`,{method:"POST"})})},disabled:n,"aria-label":`Launch ${a.name}`,"data-testid":"tool-card-launch-button",className:"hover:bg-primary hover:text-primary-foreground h-7 cursor-pointer rounded-md px-3 text-xs",children:[n?(0,b.jsx)(h.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(j,{className:"mr-1 h-3 w-3"}),"Launch"]}):t||w||!a.autoInstall?t||w?null:(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>m(!0),"aria-label":`View install instructions for ${a.name}`,"data-testid":"tool-card-manual-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[(0,b.jsx)(g.ExternalLink,{className:"mr-1 h-3 w-3"}),"Install"]}):(0,b.jsxs)(r.Button,{size:"sm",onClick:function(){s(async()=>{(await fetch(`/api/tools/${a.id}/install`,{method:"POST"})).ok&&d&&await d()})},disabled:n,"aria-label":`Install ${a.name}`,"data-testid":"tool-card-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[n?(0,b.jsx)(h.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,b.jsx)(k,{className:"mr-1 h-3 w-3"}),n?"Installing…":"Install"]})]})]}),(0,b.jsx)(u,{tool:a,open:i,onOpenChange:m})]})}let x={all:()=>!0,ide:a=>a.tags.includes("ide"),"cli-agent":a=>a.tags.includes("cli-agent"),vcs:a=>a.tags.includes("vcs"),terminal:a=>a.tags.includes("terminal")};function y({tools:a,className:g}){let[h,i]=(0,c.useState)(a),[j,k]=(0,c.useState)("all");async function l(){try{let a=await fetch("/api/tools");if(a.ok){let b=await a.json();i(b)}}catch{}}let m=h.filter(x[j]);return(0,b.jsxs)("div",{"data-testid":"tools-page-client",className:(0,f.cn)("space-y-4",g),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.Wrench,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Tools"}),(0,b.jsxs)("span",{className:"text-muted-foreground text-[10px]",children:[h.filter(a=>"available"===a.status.status).length,"/",h.length," installed"]})]}),(0,b.jsxs)(e.Tabs,{value:j,onValueChange:a=>k(a),"data-testid":"tools-page-tabs",children:[(0,b.jsxs)(e.TabsList,{className:"h-7",children:[(0,b.jsx)(e.TabsTrigger,{value:"all","data-testid":"tools-tab-all",className:"px-2.5 text-xs",children:"All"}),(0,b.jsx)(e.TabsTrigger,{value:"ide","data-testid":"tools-tab-ide",className:"px-2.5 text-xs",children:"IDEs"}),(0,b.jsx)(e.TabsTrigger,{value:"cli-agent","data-testid":"tools-tab-cli-agent",className:"px-2.5 text-xs",children:"CLI Agents"}),(0,b.jsx)(e.TabsTrigger,{value:"vcs","data-testid":"tools-tab-vcs",className:"px-2.5 text-xs",children:"Version Control"}),(0,b.jsx)(e.TabsTrigger,{value:"terminal","data-testid":"tools-tab-terminal",className:"px-2.5 text-xs",children:"Terminals"})]}),(0,b.jsx)(e.TabsContent,{value:j,className:"mt-3",children:0===m.length?(0,b.jsxs)("div",{"data-testid":"tools-page-empty",className:"text-muted-foreground flex flex-col items-center justify-center py-12 text-center",children:[(0,b.jsx)(d.Wrench,{className:"mb-2 h-6 w-6 opacity-20"}),(0,b.jsx)("p",{className:"text-xs",children:"No tools in this category."})]}):(0,b.jsx)("div",{"data-testid":"tools-page-grid",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:m.map(a=>(0,b.jsx)(w,{tool:a,onRefresh:l},a.id))})})]})]})}a.s(["ToolsPageClient",()=>y],92163)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_72ce07df._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/terminal.ts","../../../../../../../src/presentation/web/components/ui/dialog.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-x.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/check.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/copy.ts","../../../../../../../src/presentation/web/components/features/tools/install-instructions.tsx","../../../../../../../src/presentation/web/components/features/tools/tool-card.tsx","../../../../../../../src/presentation/web/components/features/tools/tools-page-client.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/monitor.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/download.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/package.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/rocket.ts"],"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","'use client';\n\nimport * as React from 'react';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80',\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '6', x2: '6', y1: '3', y2: '15', key: '17qcm7' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n ['path', { d: 'M18 9a9 9 0 0 1-9 9', key: 'n2h4wq' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/git-branch\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 GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n];\n\n/**\n * @component @name CircleX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-x\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 CircleX = createLucideIcon('circle-x', __iconNode);\n\nexport default CircleX;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\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 Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/copy\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 Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","'use client';\n\nimport { useState } from 'react';\nimport { Copy, Check, ExternalLink } from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n} from '@/components/ui/dialog';\nimport { cn } from '@/lib/utils';\nimport type { ToolItem } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface InstallInstructionsProps {\n tool: ToolItem;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n className?: string;\n}\n\nexport function InstallInstructions({\n tool,\n open,\n onOpenChange,\n className,\n}: InstallInstructionsProps) {\n const [copied, setCopied] = useState(false);\n\n function handleCopy() {\n if (!tool.installCommand) return;\n void navigator.clipboard.writeText(tool.installCommand).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent data-testid=\"install-instructions\" className={cn('sm:max-w-2xl', className)}>\n <DialogHeader>\n <DialogTitle data-testid=\"install-instructions-title\">Install {tool.name}</DialogTitle>\n <DialogDescription data-testid=\"install-instructions-description\">\n {tool.summary}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"flex flex-col gap-4\">\n {tool.installCommand && tool.autoInstall ? (\n <div className=\"flex flex-col gap-1.5\">\n <span className=\"text-muted-foreground text-xs font-medium\">\n Installation command\n </span>\n <div className=\"bg-muted relative rounded-md\">\n <pre\n data-testid=\"install-instructions-command\"\n className=\"overflow-x-auto px-3 py-2.5 pr-20 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap\"\n >\n <code>{tool.installCommand}</code>\n </pre>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2\"\n onClick={handleCopy}\n aria-label={copied ? 'Copied!' : 'Copy install command'}\n data-testid=\"install-instructions-copy-button\"\n >\n {copied ? (\n <Check className=\"h-3.5 w-3.5 text-emerald-500\" />\n ) : (\n <Copy className=\"h-3.5 w-3.5\" />\n )}\n <span className=\"ml-1 text-[10px]\">{copied ? 'Copied!' : 'Copy'}</span>\n </Button>\n </div>\n </div>\n ) : tool.installCommand ? (\n <p data-testid=\"install-instructions-command\" className=\"text-muted-foreground text-sm\">\n {tool.installCommand}\n </p>\n ) : (\n <p\n data-testid=\"install-instructions-no-command\"\n className=\"text-muted-foreground text-sm\"\n >\n Please refer to the documentation for installation instructions.\n </p>\n )}\n\n {tool.documentationUrl ? (\n <Button variant=\"outline\" size=\"sm\" className=\"w-fit cursor-pointer\" asChild>\n <a\n data-testid=\"install-instructions-doc-link\"\n href={tool.documentationUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View documentation\n <ExternalLink className=\"ml-1.5 h-3.5 w-3.5\" />\n </a>\n </Button>\n ) : null}\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","'use client';\n\nimport { useState, useTransition } from 'react';\nimport {\n ExternalLink,\n Loader2,\n Rocket,\n Download,\n Monitor,\n Terminal,\n GitBranch,\n CircleX,\n Check,\n Package,\n} from 'lucide-react';\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport { InstallInstructions } from './install-instructions';\nimport type { ToolItem } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolCardProps {\n tool: ToolItem;\n onRefresh?: () => Promise<void>;\n className?: string;\n}\n\nconst TAG_CONFIG: Record<string, { label: string; icon: typeof Monitor }> = {\n ide: { label: 'IDE', icon: Monitor },\n 'cli-agent': { label: 'CLI Agent', icon: Terminal },\n vcs: { label: 'VCS', icon: GitBranch },\n terminal: { label: 'Terminal', icon: Terminal },\n};\n\nexport function ToolCard({ tool, onRefresh, className }: ToolCardProps) {\n const [installDrawerOpen, setInstallDrawerOpen] = useState(false);\n const [isPending, startTransition] = useTransition();\n\n const isInstalled = tool.status.status === 'available';\n const isError = tool.status.status === 'error';\n const canLaunch = isInstalled && Boolean(tool.openDirectory);\n\n function handleLaunch() {\n startTransition(async () => {\n await fetch(`/api/tools/${tool.id}/launch`, { method: 'POST' });\n });\n }\n\n function handleAutoInstall() {\n startTransition(async () => {\n const res = await fetch(`/api/tools/${tool.id}/install`, { method: 'POST' });\n if (res.ok && onRefresh) {\n await onRefresh();\n }\n });\n }\n\n return (\n <>\n <div\n data-testid=\"tool-card\"\n className={cn(\n 'bg-card group flex h-30 w-full flex-col rounded-lg border p-3 shadow-sm transition-shadow hover:shadow-md',\n className\n )}\n >\n {/* Top row: icon + name left, tag badges right */}\n <div className=\"mb-2 flex items-start justify-between gap-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {tool.iconUrl ? (\n /* eslint-disable-next-line @next/next/no-img-element */\n <img\n src={tool.iconUrl}\n alt=\"\"\n width={20}\n height={20}\n className=\"shrink-0 dark:invert\"\n />\n ) : (\n <Package className=\"text-muted-foreground h-5 w-5 shrink-0\" />\n )}\n <h3 data-testid=\"tool-card-name\" className=\"truncate text-sm font-bold\">\n {tool.name}\n </h3>\n </div>\n <div data-testid=\"tool-card-tags\" className=\"flex shrink-0 items-center gap-1\">\n {tool.tags.map((tag) => {\n const config = TAG_CONFIG[tag] ?? { label: tag, icon: Monitor };\n const TagIcon = config.icon;\n return (\n <span\n key={tag}\n className=\"bg-muted text-muted-foreground inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] font-medium\"\n >\n <TagIcon className=\"h-2.5 w-2.5\" />\n {config.label}\n </span>\n );\n })}\n </div>\n </div>\n\n {/* Summary */}\n <p data-testid=\"tool-card-summary\" className=\"text-muted-foreground mt-1 truncate text-xs\">\n {tool.summary}\n </p>\n\n {/* Bottom section — pushed to bottom */}\n <div className=\"mt-auto flex items-center justify-between pt-3\">\n {/* Status text */}\n <div className=\"flex items-center gap-2\">\n {isError && tool.status.status === 'error' ? (\n <span\n className=\"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400\"\n title={tool.status.errorMessage}\n >\n <CircleX className=\"h-3 w-3 shrink-0\" />\n {tool.status.errorMessage ?? 'Error'}\n </span>\n ) : isInstalled ? (\n <span className=\"flex items-center gap-1 text-[11px] text-emerald-600 dark:text-emerald-400\">\n <Check className=\"h-3 w-3\" />\n Installed\n </span>\n ) : (\n <span className=\"text-muted-foreground text-[10px]\">Not installed</span>\n )}\n {tool.required ? (\n <span className=\"text-muted-foreground text-[10px] italic\">Required</span>\n ) : null}\n </div>\n\n {/* Action button */}\n {isInstalled && canLaunch ? (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleLaunch}\n disabled={isPending}\n aria-label={`Launch ${tool.name}`}\n data-testid=\"tool-card-launch-button\"\n className=\"hover:bg-primary hover:text-primary-foreground h-7 cursor-pointer rounded-md px-3 text-xs\"\n >\n {isPending ? (\n <Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n ) : (\n <Rocket className=\"mr-1 h-3 w-3\" />\n )}\n Launch\n </Button>\n ) : !isInstalled && !isError && tool.autoInstall ? (\n <Button\n size=\"sm\"\n onClick={handleAutoInstall}\n disabled={isPending}\n aria-label={`Install ${tool.name}`}\n data-testid=\"tool-card-install-button\"\n className=\"h-7 cursor-pointer rounded-md px-3 text-xs\"\n >\n {isPending ? (\n <Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n ) : (\n <Download className=\"mr-1 h-3 w-3\" />\n )}\n {isPending ? 'Installing…' : 'Install'}\n </Button>\n ) : !isInstalled && !isError ? (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setInstallDrawerOpen(true)}\n aria-label={`View install instructions for ${tool.name}`}\n data-testid=\"tool-card-manual-install-button\"\n className=\"h-7 cursor-pointer rounded-md px-3 text-xs\"\n >\n <ExternalLink className=\"mr-1 h-3 w-3\" />\n Install\n </Button>\n ) : null}\n </div>\n </div>\n\n <InstallInstructions\n tool={tool}\n open={installDrawerOpen}\n onOpenChange={setInstallDrawerOpen}\n />\n </>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Wrench } from 'lucide-react';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { cn } from '@/lib/utils';\nimport { ToolCard } from './tool-card';\nimport type { ToolItem } from '@shepai/core/application/use-cases/tools/list-tools.use-case';\n\nexport interface ToolsPageClientProps {\n tools: ToolItem[];\n className?: string;\n}\n\ntype TabValue = 'all' | 'ide' | 'cli-agent' | 'vcs' | 'terminal';\n\nconst TAB_FILTER: Record<TabValue, (tool: ToolItem) => boolean> = {\n all: () => true,\n ide: (tool) => tool.tags.includes('ide'),\n 'cli-agent': (tool) => tool.tags.includes('cli-agent'),\n vcs: (tool) => tool.tags.includes('vcs'),\n terminal: (tool) => tool.tags.includes('terminal'),\n};\n\nexport function ToolsPageClient({ tools: initialTools, className }: ToolsPageClientProps) {\n const [tools, setTools] = useState<ToolItem[]>(initialTools);\n const [activeTab, setActiveTab] = useState<TabValue>('all');\n\n async function refreshTools() {\n try {\n const res = await fetch('/api/tools');\n if (res.ok) {\n const updated = (await res.json()) as ToolItem[];\n setTools(updated);\n }\n } catch {\n // Silently ignore refresh errors; user can re-navigate to refresh\n }\n }\n\n const filtered = tools.filter(TAB_FILTER[activeTab]);\n\n return (\n <div data-testid=\"tools-page-client\" className={cn('space-y-4', className)}>\n {/* Compact header */}\n <div className=\"flex items-center gap-2\">\n <Wrench className=\"text-muted-foreground h-4 w-4\" />\n <h1 className=\"text-sm font-bold tracking-tight\">Tools</h1>\n <span className=\"text-muted-foreground text-[10px]\">\n {tools.filter((t) => t.status.status === 'available').length}/{tools.length} installed\n </span>\n </div>\n\n <Tabs\n value={activeTab}\n onValueChange={(value) => setActiveTab(value as TabValue)}\n data-testid=\"tools-page-tabs\"\n >\n <TabsList className=\"h-7\">\n <TabsTrigger value=\"all\" data-testid=\"tools-tab-all\" className=\"px-2.5 text-xs\">\n All\n </TabsTrigger>\n <TabsTrigger value=\"ide\" data-testid=\"tools-tab-ide\" className=\"px-2.5 text-xs\">\n IDEs\n </TabsTrigger>\n <TabsTrigger\n value=\"cli-agent\"\n data-testid=\"tools-tab-cli-agent\"\n className=\"px-2.5 text-xs\"\n >\n CLI Agents\n </TabsTrigger>\n <TabsTrigger value=\"vcs\" data-testid=\"tools-tab-vcs\" className=\"px-2.5 text-xs\">\n Version Control\n </TabsTrigger>\n <TabsTrigger value=\"terminal\" data-testid=\"tools-tab-terminal\" className=\"px-2.5 text-xs\">\n Terminals\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value={activeTab} className=\"mt-3\">\n {filtered.length === 0 ? (\n <div\n data-testid=\"tools-page-empty\"\n className=\"text-muted-foreground flex flex-col items-center justify-center py-12 text-center\"\n >\n <Wrench className=\"mb-2 h-6 w-6 opacity-20\" />\n <p className=\"text-xs\">No tools in this category.</p>\n </div>\n ) : (\n <div\n data-testid=\"tools-page-grid\"\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n >\n {filtered.map((tool) => (\n <ToolCard key={tool.id} tool={tool} onRefresh={refreshTools} />\n ))}\n </div>\n )}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '14', x: '2', y: '3', rx: '2', key: '48i651' }],\n ['line', { x1: '8', x2: '16', y1: '21', y2: '21', key: '1svkeh' }],\n ['line', { x1: '12', x2: '12', y1: '17', y2: '21', key: 'vw1qmm' }],\n];\n\n/**\n * @component @name Monitor\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/monitor\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 Monitor = createLucideIcon('monitor', __iconNode);\n\nexport default Monitor;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15V3', key: 'm9g1x1' }],\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n ['path', { d: 'm7 10 5 5 5-5', key: 'brsn70' }],\n];\n\n/**\n * @component @name Download\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/download\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 Download = createLucideIcon('download', __iconNode);\n\nexport default Download;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z',\n key: '1a0edw',\n },\n ],\n ['path', { d: 'M12 22V12', key: 'd0xqtd' }],\n ['polyline', { points: '3.29 7 12 12 20.71 7', key: 'ousv84' }],\n ['path', { d: 'm7.5 4.27 9 5.15', key: '1c824w' }],\n];\n\n/**\n * @component @name Package\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/package\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 Package = createLucideIcon('package', __iconNode);\n\nexport default Package;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z',\n key: 'm3kijz',\n },\n ],\n [\n 'path',\n {\n d: 'm12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z',\n key: '1fmvmk',\n },\n ],\n ['path', { d: 'M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0', key: '1f8sc4' }],\n ['path', { d: 'M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5', key: 'qeys4' }],\n];\n\n/**\n * @component @name Rocket\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/rocket\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 Rocket = createLucideIcon('rocket', __iconNode);\n\nexport default Rocket;\n"],"names":[],"mappings":"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","ignoreList":[0,1,3,4,5,6,10,11,12,13]}
|
|
@@ -2,6 +2,6 @@ module.exports=[25700,a=>{"use strict";var b=a.i(96960);let c=(...a)=>a.filter((
|
|
|
2
2
|
|
|
3
3
|
If you want to hide the \`${b.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
4
4
|
|
|
5
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${b.docsSlug}`;return k.useEffect(()=>{a&&(document.getElementById(a)||console.error(c))},[c,a]),null},a5=({contentRef:a,descriptionId:b})=>{let c=a3("DialogDescriptionWarning"),d=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${c.contentName}}.`;return k.useEffect(()=>{let c=a.current?.getAttribute("aria-describedby");b&&c&&(document.getElementById(b)||console.warn(d))},[d,a,b]),null};a.s(["Close",()=>a_,"Content",()=>aS,"Description",()=>aZ,"Dialog",()=>aG,"DialogClose",()=>a_,"DialogContent",()=>aS,"DialogDescription",()=>aZ,"DialogOverlay",()=>aO,"DialogPortal",()=>aM,"DialogTitle",()=>aX,"DialogTrigger",()=>aI,"Overlay",()=>aO,"Portal",()=>aM,"Root",()=>aG,"Title",()=>aX,"Trigger",()=>aI,"WarningProvider",()=>a2,"createDialogScope",()=>aD],40093)},88064,a=>{"use strict";let b=(0,a.i(25700).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],88064)}];
|
|
5
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${b.docsSlug}`;return k.useEffect(()=>{a&&(document.getElementById(a)||console.error(c))},[c,a]),null},a5=({contentRef:a,descriptionId:b})=>{let c=a3("DialogDescriptionWarning"),d=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${c.contentName}}.`;return k.useEffect(()=>{let c=a.current?.getAttribute("aria-describedby");b&&c&&(document.getElementById(b)||console.warn(d))},[d,a,b]),null};a.s(["Close",()=>a_,"Content",()=>aS,"Description",()=>aZ,"Dialog",()=>aG,"DialogClose",()=>a_,"DialogContent",()=>aS,"DialogDescription",()=>aZ,"DialogOverlay",()=>aO,"DialogPortal",()=>aM,"DialogTitle",()=>aX,"DialogTrigger",()=>aI,"Overlay",()=>aO,"Portal",()=>aM,"Root",()=>aG,"Title",()=>aX,"Trigger",()=>aI,"WarningProvider",()=>a2,"createDialogScope",()=>aD],40093)},71335,a=>{"use strict";var b=a.i(40093);a.s(["Dialog",0,b])},88064,a=>{"use strict";let b=(0,a.i(25700).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",()=>b],88064)}];
|
|
6
6
|
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=node_modules__pnpm_3288606c._.js.map
|