@shepai/cli 1.72.6 → 1.72.7-pr187.0bb1028
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/use-cases/features/delete-feature.use-case.d.ts +4 -0
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +20 -12
- package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.d.ts +8 -3
- package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/delete-repository.use-case.js +17 -4
- package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.d.ts +3 -0
- package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.js +3 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +9 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts +6 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.js +5 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/alacritty.json +5 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/antigravity.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +4 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gemini-cli.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gh.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/git.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/iterm2.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/kitty.json +5 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/tmux.json +4 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/vscode.json +4 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/warp.json +3 -0
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/windsurf.json +4 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zed.json +3 -0
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +2 -6
- package/dist/src/presentation/web/app/api/tools/[id]/install/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/tools/[id]/install/route.js +9 -4
- package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts +7 -0
- package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.js +32 -0
- package/dist/src/presentation/web/app/build-graph-nodes.js +11 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +4 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +10 -6
- package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +12 -3
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +6 -2
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/feature-node.js +7 -2
- 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 +6 -2
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +14 -2
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +3 -5
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +131 -196
- package/dist/src/presentation/web/components/features/index.d.ts +1 -1
- package/dist/src/presentation/web/components/features/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/index.js +1 -1
- package/dist/src/presentation/web/components/features/tools/index.d.ts +1 -1
- package/dist/src/presentation/web/components/features/tools/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/index.js +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-card.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-card.js +18 -14
- package/dist/src/presentation/web/components/features/tools/tool-card.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/tool-card.stories.js +18 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts +10 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +95 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts +12 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.js +119 -0
- package/dist/src/presentation/web/components/features/tools/tools-page-client.js +3 -3
- package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.js +15 -0
- package/dist/src/presentation/web/components/ui/alert-dialog.d.ts +1 -1
- package/dist/src/presentation/web/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/alert-dialog.js +7 -2
- package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/dialog.js +6 -1
- package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts +10 -0
- package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-tool-install-stream.js +38 -0
- package/dist/src/presentation/web/lib/layout-with-dagre.d.ts +2 -0
- package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/layout-with-dagre.js +86 -4
- 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 +7 -7
- 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 +8 -0
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
- 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]/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
- 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]/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- 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)/create/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
- 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]/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
- 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/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
- 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]/page/build-manifest.json +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- 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/page/build-manifest.json +5 -5
- 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/build-manifest.json +5 -5
- 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/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/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
- package/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/skills/page/build-manifest.json +5 -5
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- 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/build-manifest.json +5 -5
- package/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
- package/web/.next/server/app/tools/page.js +2 -2
- 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/build-manifest.json +5 -5
- package/web/.next/server/app/version/page/server-reference-manifest.json +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/[root-of-the-server]__0866d2b5._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
- package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js.map +1 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js → server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__07385073._.js.map → [root-of-the-server]__45dbf93d._.js.map} +1 -1
- 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/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -0
- 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]__aad040c0._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
- package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
- package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
- package/web/.next/server/chunks/ssr/_1978f325._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
- package/web/.next/server/chunks/ssr/_3197d5cb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
- package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
- package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
- package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
- package/web/.next/server/chunks/ssr/_a29296f0._.js.map +1 -0
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_e50484ec._.js → server/chunks/ssr/_c03d5043._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_e50484ec._.js.map → _c03d5043._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
- package/web/.next/server/chunks/ssr/_e806976d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -0
- package/web/.next/server/middleware-build-manifest.js +5 -5
- 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 +61 -26
- 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 +7 -7
- 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 +8 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
- 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/build-manifest.json +5 -5
- 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/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/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- 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/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +2 -2
- 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/build-manifest.json +5 -5
- 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.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/[root-of-the-server]__0866d2b5._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/{server/chunks/ssr/[root-of-the-server]__07385073._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/{server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
- 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]__aad040c0._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
- package/web/.next/{server/chunks/ssr/_e50484ec._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_c03d5043._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +5 -5
- 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 +61 -26
- package/web/.next/standalone/src/presentation/web/app/(dashboard)/get-graph-data.ts +2 -6
- package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/route.ts +14 -6
- package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/stream/route.ts +42 -0
- package/web/.next/standalone/src/presentation/web/app/build-graph-nodes.ts +14 -1
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +23 -9
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +13 -3
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +6 -2
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +2 -0
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +8 -5
- package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.tsx +30 -24
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +33 -25
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +25 -3
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +184 -230
- package/web/.next/standalone/src/presentation/web/components/features/index.ts +1 -1
- package/web/.next/standalone/src/presentation/web/components/features/tools/index.ts +1 -1
- package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.stories.tsx +18 -0
- package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.tsx +75 -67
- package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.stories.tsx +132 -0
- package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.tsx +313 -0
- package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.stories.tsx +15 -0
- package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.tsx +3 -3
- package/web/.next/standalone/src/presentation/web/components/ui/alert-dialog.tsx +7 -0
- package/web/.next/standalone/src/presentation/web/components/ui/dialog.tsx +7 -1
- package/web/.next/standalone/src/presentation/web/hooks/use-tool-install-stream.ts +58 -0
- package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +93 -4
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/0c54314c8c9c9739.js +7 -0
- package/web/.next/static/chunks/18b181b038b76ba9.js +1 -0
- package/web/.next/static/chunks/{fc07834e422b1caa.js → 24d21945d0ad2f91.js} +1 -1
- package/web/.next/static/chunks/3b46dd43cf4b2b0c.js +1 -0
- package/web/.next/static/chunks/{d4ecce2ac7795bd9.js → 4332c12bfb4386b1.js} +1 -1
- package/web/.next/static/chunks/4a3b3cfcc85e7254.js +1 -0
- package/web/.next/static/chunks/5294480588feb18d.js +1 -0
- package/web/.next/static/chunks/5d0a6417c4e4e545.js +1 -0
- package/web/.next/static/chunks/67f2a7a5e8dc358a.css +2 -0
- package/web/.next/static/chunks/762fc4cf58e29489.js +1 -0
- package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
- package/web/.next/static/chunks/9215b6fb973482c5.js +1 -0
- package/web/.next/static/chunks/9455c97db983fb26.js +1 -0
- package/web/.next/static/chunks/c92e1360ada8ca94.js +5 -0
- package/web/.next/static/chunks/{8b36e07129a1471f.js → d1257b6f5da57064.js} +1 -1
- package/web/.next/static/chunks/e4f4eaa9769bcadb.js +1 -0
- package/web/.next/static/chunks/edbd674102e897b4.js +1 -0
- package/web/.next/static/chunks/{turbopack-3a8fe0e18e69b0ab.js → turbopack-05820f781f3ffc22.js} +1 -1
- 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/dist/src/presentation/web/components/features/tools/install-instructions.d.ts +0 -9
- package/dist/src/presentation/web/components/features/tools/install-instructions.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/tools/install-instructions.js +0 -19
- package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts +0 -12
- package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/features/tools/install-instructions.stories.js +0 -77
- package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
- package/web/.next/server/chunks/ssr/_00e6c698._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
- package/web/.next/server/chunks/ssr/_13566ff3._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
- package/web/.next/server/chunks/ssr/_26129e04._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
- package/web/.next/server/chunks/ssr/_34a58db8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_37259405._.js +0 -3
- package/web/.next/server/chunks/ssr/_37259405._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_85d0351b._.js +0 -3
- package/web/.next/server/chunks/ssr/_85d0351b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
- package/web/.next/server/chunks/ssr/_cb5b3951._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
- package/web/.next/server/chunks/ssr/_fc3a6895._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
- package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js.map +0 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_37259405._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85d0351b._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
- package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.stories.tsx +0 -89
- package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.tsx +0 -109
- package/web/.next/static/chunks/06b6b02bab76aee7.js +0 -1
- package/web/.next/static/chunks/06dfd668334ffb4e.js +0 -7
- package/web/.next/static/chunks/07fcc6d17357e905.js +0 -1
- package/web/.next/static/chunks/224ed5f5dbd33154.css +0 -2
- package/web/.next/static/chunks/32957ff277daec59.js +0 -1
- package/web/.next/static/chunks/3e1227e02ef8bcc6.js +0 -5
- package/web/.next/static/chunks/412a3ac70c529c5b.js +0 -1
- package/web/.next/static/chunks/550bf3cb8220cbf0.js +0 -1
- package/web/.next/static/chunks/5f5c607ffae8b918.js +0 -1
- package/web/.next/static/chunks/64d73952a0291431.js +0 -1
- package/web/.next/static/chunks/938c21b0cefb2b1d.js +0 -1
- package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
- package/web/.next/static/chunks/e44849eb58a3335f.js +0 -1
- package/web/.next/static/chunks/ecb2130572a7fbe7.js +0 -1
- /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_buildManifest.js +0 -0
- /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{7K6dTYQIJ7__PLUYLLfZV → hqNYYoVPGek0YVNAAv6P-}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { resolve } from '@/lib/server-container';
|
|
2
|
+
import type { InstallToolUseCase } from '@shepai/core/application/use-cases/tools/install-tool.use-case';
|
|
3
|
+
|
|
4
|
+
// Force dynamic — SSE streams must never be statically optimized or cached
|
|
5
|
+
export const dynamic = 'force-dynamic';
|
|
6
|
+
|
|
7
|
+
export async function GET(
|
|
8
|
+
_request: Request,
|
|
9
|
+
{ params }: { params: Promise<{ id: string }> }
|
|
10
|
+
): Promise<Response> {
|
|
11
|
+
const { id } = await params;
|
|
12
|
+
const useCase = resolve<InstallToolUseCase>('InstallToolUseCase');
|
|
13
|
+
|
|
14
|
+
const encoder = new TextEncoder();
|
|
15
|
+
const stream = new ReadableStream({
|
|
16
|
+
async start(controller) {
|
|
17
|
+
try {
|
|
18
|
+
const status = await useCase.execute(id, (chunk: string) => {
|
|
19
|
+
controller.enqueue(encoder.encode(`data: ${chunk.replace(/\n/g, '\ndata: ')}\n\n`));
|
|
20
|
+
});
|
|
21
|
+
controller.enqueue(encoder.encode(`event: done\ndata: ${JSON.stringify(status)}\n\n`));
|
|
22
|
+
} catch (error) {
|
|
23
|
+
const message = error instanceof Error ? error.message : 'Installation failed';
|
|
24
|
+
controller.enqueue(
|
|
25
|
+
encoder.encode(
|
|
26
|
+
`event: done\ndata: ${JSON.stringify({ status: 'error', toolName: id, errorMessage: message })}\n\n`
|
|
27
|
+
)
|
|
28
|
+
);
|
|
29
|
+
} finally {
|
|
30
|
+
controller.close();
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return new Response(stream, {
|
|
36
|
+
headers: {
|
|
37
|
+
'Content-Type': 'text/event-stream',
|
|
38
|
+
'Cache-Control': 'no-cache',
|
|
39
|
+
Connection: 'keep-alive',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -117,7 +117,20 @@ function appendFeatureNodes(
|
|
|
117
117
|
nodes: CanvasNodeType[],
|
|
118
118
|
edges: Edge[]
|
|
119
119
|
): void {
|
|
120
|
-
|
|
120
|
+
// Sort by createdAt so newest features appear last (bottom) in the layout
|
|
121
|
+
const sorted = [...repoFeatures].sort((a, b) => {
|
|
122
|
+
const aTime =
|
|
123
|
+
a.feature.createdAt instanceof Date
|
|
124
|
+
? a.feature.createdAt.getTime()
|
|
125
|
+
: Number(a.feature.createdAt);
|
|
126
|
+
const bTime =
|
|
127
|
+
b.feature.createdAt instanceof Date
|
|
128
|
+
? b.feature.createdAt.getTime()
|
|
129
|
+
: Number(b.feature.createdAt);
|
|
130
|
+
return aTime - bTime;
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
sorted.forEach(({ feature, run }) => {
|
|
121
134
|
const agentNode = run?.result?.startsWith('node:') ? run.result.slice(5) : undefined;
|
|
122
135
|
const lifecycle: FeatureLifecyclePhase =
|
|
123
136
|
run?.status === 'completed'
|
package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx
CHANGED
|
@@ -12,6 +12,8 @@ import {
|
|
|
12
12
|
DrawerHeader,
|
|
13
13
|
DrawerFooter,
|
|
14
14
|
DrawerOverlay,
|
|
15
|
+
DrawerTitle,
|
|
16
|
+
DrawerDescription,
|
|
15
17
|
} from '@/components/ui/drawer';
|
|
16
18
|
import { Separator } from '@/components/ui/separator';
|
|
17
19
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
|
|
@@ -34,6 +36,9 @@ export interface BaseDrawerProps extends VariantProps<typeof drawerVariants> {
|
|
|
34
36
|
open: boolean;
|
|
35
37
|
onClose: () => void;
|
|
36
38
|
modal?: boolean;
|
|
39
|
+
/** When true, clicking anywhere outside the drawer closes it, ignoring `data-no-drawer-close` guards. */
|
|
40
|
+
dismissOnOutsideClick?: boolean;
|
|
41
|
+
title?: string;
|
|
37
42
|
header?: React.ReactNode;
|
|
38
43
|
children: React.ReactNode;
|
|
39
44
|
footer?: React.ReactNode;
|
|
@@ -46,6 +51,8 @@ export function BaseDrawer({
|
|
|
46
51
|
open,
|
|
47
52
|
onClose,
|
|
48
53
|
modal = false,
|
|
54
|
+
dismissOnOutsideClick = false,
|
|
55
|
+
title = 'Drawer',
|
|
49
56
|
size,
|
|
50
57
|
header,
|
|
51
58
|
children,
|
|
@@ -68,19 +75,18 @@ export function BaseDrawer({
|
|
|
68
75
|
// longer in the DOM tree — treat it as an internal click, not an outside one.
|
|
69
76
|
if (!document.body.contains(target)) return;
|
|
70
77
|
if (contentRef.current?.contains(target)) return;
|
|
71
|
-
// Don't close when clicking inside
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
)
|
|
77
|
-
return;
|
|
78
|
+
// Don't close when clicking inside Radix overlays.
|
|
79
|
+
// When dismissOnOutsideClick is false (default), also respect data-no-drawer-close guards.
|
|
80
|
+
const ignoreSelector = dismissOnOutsideClick
|
|
81
|
+
? '[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]'
|
|
82
|
+
: '[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]';
|
|
83
|
+
if (target.closest(ignoreSelector)) return;
|
|
78
84
|
onClose();
|
|
79
85
|
};
|
|
80
86
|
|
|
81
87
|
document.addEventListener('click', handleClick);
|
|
82
88
|
return () => document.removeEventListener('click', handleClick);
|
|
83
|
-
}, [open, modal, onClose]);
|
|
89
|
+
}, [open, modal, onClose, dismissOnOutsideClick]);
|
|
84
90
|
|
|
85
91
|
return (
|
|
86
92
|
<Drawer
|
|
@@ -99,8 +105,16 @@ export function BaseDrawer({
|
|
|
99
105
|
showCloseButton={false}
|
|
100
106
|
className={cn(drawerVariants({ size }), className)}
|
|
101
107
|
data-testid={testId}
|
|
102
|
-
onInteractOutside={(e) => e.preventDefault()}
|
|
108
|
+
onInteractOutside={modal ? undefined : (e) => e.preventDefault()}
|
|
103
109
|
>
|
|
110
|
+
{/* Visually hidden title & description required by Radix Dialog for accessibility */}
|
|
111
|
+
<DrawerTitle asChild>
|
|
112
|
+
<span className="sr-only">{title}</span>
|
|
113
|
+
</DrawerTitle>
|
|
114
|
+
<DrawerDescription asChild>
|
|
115
|
+
<span className="sr-only">{title}</span>
|
|
116
|
+
</DrawerDescription>
|
|
117
|
+
|
|
104
118
|
{/* Close button */}
|
|
105
119
|
<button
|
|
106
120
|
type="button"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { useState, useCallback } from 'react';
|
|
3
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
4
4
|
import { useRouter, usePathname } from 'next/navigation';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
6
|
import { createFeature } from '@/app/actions/create-feature';
|
|
@@ -31,8 +31,18 @@ export function CreateDrawerClient({
|
|
|
31
31
|
// content during soft navigation, so this component is NOT unmounted when
|
|
32
32
|
// navigating to `/`. We watch the pathname and let Vaul handle the close
|
|
33
33
|
// animation when the path no longer matches the create route.
|
|
34
|
+
// When submitting, force the drawer closed immediately — router.push('/')
|
|
35
|
+
// is async and the pathname may not update before the next render.
|
|
34
36
|
const pathname = usePathname();
|
|
35
|
-
const isOpen = pathname.startsWith('/create');
|
|
37
|
+
const isOpen = !isSubmitting && pathname.startsWith('/create');
|
|
38
|
+
|
|
39
|
+
// Safety net: if the drawer is closed (e.g. via form submit + isSubmitting)
|
|
40
|
+
// but router.push('/') hasn't taken effect yet, force-clear the route.
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!isOpen && pathname.startsWith('/create')) {
|
|
43
|
+
router.replace('/');
|
|
44
|
+
}
|
|
45
|
+
}, [isOpen, pathname, router]);
|
|
36
46
|
|
|
37
47
|
const onClose = useCallback(() => {
|
|
38
48
|
router.push('/');
|
|
@@ -49,6 +59,7 @@ export function CreateDrawerClient({
|
|
|
49
59
|
name: data.name,
|
|
50
60
|
description: data.description,
|
|
51
61
|
repositoryPath: data.repositoryPath,
|
|
62
|
+
parentId: data.parentId,
|
|
52
63
|
},
|
|
53
64
|
})
|
|
54
65
|
);
|
|
@@ -66,7 +77,6 @@ export function CreateDrawerClient({
|
|
|
66
77
|
return;
|
|
67
78
|
}
|
|
68
79
|
createSound.play();
|
|
69
|
-
router.refresh();
|
|
70
80
|
})
|
|
71
81
|
.catch(() => {
|
|
72
82
|
toast.error('Failed to create feature');
|
|
@@ -100,8 +100,9 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
|
|
|
100
100
|
const newLifecycle = mapPhaseNameToLifecycle(event.phaseName);
|
|
101
101
|
|
|
102
102
|
// Trigger a server refresh to get the latest drawer view,
|
|
103
|
-
// but skip when the user has unsaved changes
|
|
104
|
-
|
|
103
|
+
// but skip when the user has unsaved changes or a rejection is in-flight
|
|
104
|
+
// to avoid the refresh interfering with the reject handler's navigation.
|
|
105
|
+
if (!isDirtyRef.current && !isRejectingRef.current) router.refresh();
|
|
105
106
|
|
|
106
107
|
// Optimistically update the node data for immediate UI feedback
|
|
107
108
|
setView((prev) => {
|
|
@@ -163,6 +164,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
|
|
|
163
164
|
|
|
164
165
|
// ── Shared reject state ────────────────────────────────────────────────
|
|
165
166
|
const [isRejecting, setIsRejecting] = useState(false);
|
|
167
|
+
const isRejectingRef = useRef(false);
|
|
166
168
|
|
|
167
169
|
// Reset chat input whenever the view type changes
|
|
168
170
|
const viewType = view.type;
|
|
@@ -317,6 +319,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
|
|
|
317
319
|
const handleReject = useCallback(
|
|
318
320
|
async (feedback: string, label: string, onDone?: () => void) => {
|
|
319
321
|
if (!reviewNode?.featureId) return;
|
|
322
|
+
isRejectingRef.current = true;
|
|
320
323
|
setIsRejecting(true);
|
|
321
324
|
try {
|
|
322
325
|
const result = await rejectFeature(reviewNode.featureId, feedback);
|
|
@@ -335,6 +338,7 @@ export function FeatureDrawerClient({ view: initialView }: FeatureDrawerClientPr
|
|
|
335
338
|
onClose();
|
|
336
339
|
onDone?.();
|
|
337
340
|
} finally {
|
|
341
|
+
isRejectingRef.current = false;
|
|
338
342
|
setIsRejecting(false);
|
|
339
343
|
}
|
|
340
344
|
},
|
|
@@ -46,6 +46,7 @@ export function DrawerActionBar({
|
|
|
46
46
|
value={chatInput}
|
|
47
47
|
onChange={(e) => setChatInput(e.target.value)}
|
|
48
48
|
className="flex-1"
|
|
49
|
+
data-testid="drawer-chat-input"
|
|
49
50
|
/>
|
|
50
51
|
<Button
|
|
51
52
|
type="submit"
|
|
@@ -53,6 +54,7 @@ export function DrawerActionBar({
|
|
|
53
54
|
size="icon"
|
|
54
55
|
aria-label="Send"
|
|
55
56
|
disabled={disabled}
|
|
57
|
+
data-testid="drawer-chat-send"
|
|
56
58
|
>
|
|
57
59
|
<Send />
|
|
58
60
|
</Button>
|
|
@@ -192,6 +192,7 @@ export function FeatureCreateDrawer({
|
|
|
192
192
|
onClose={attemptClose}
|
|
193
193
|
size="md"
|
|
194
194
|
modal={false}
|
|
195
|
+
dismissOnOutsideClick
|
|
195
196
|
data-testid="feature-create-drawer"
|
|
196
197
|
header={
|
|
197
198
|
<>
|
|
@@ -199,11 +200,13 @@ export function FeatureCreateDrawer({
|
|
|
199
200
|
<div className="h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500" />
|
|
200
201
|
<DrawerTitle>NEW FEATURE</DrawerTitle>
|
|
201
202
|
</div>
|
|
202
|
-
|
|
203
|
-
<
|
|
204
|
-
<
|
|
205
|
-
|
|
206
|
-
|
|
203
|
+
{isSubmitting ? (
|
|
204
|
+
<DrawerDescription asChild>
|
|
205
|
+
<div>
|
|
206
|
+
<Badge variant="secondary">Creating...</Badge>
|
|
207
|
+
</div>
|
|
208
|
+
</DrawerDescription>
|
|
209
|
+
) : null}
|
|
207
210
|
</>
|
|
208
211
|
}
|
|
209
212
|
footer={
|
package/web/.next/standalone/src/presentation/web/components/common/feature-node/feature-node.tsx
CHANGED
|
@@ -5,15 +5,15 @@ import { Handle, Position } from '@xyflow/react';
|
|
|
5
5
|
import { Settings, Plus, FileText, Wrench, GitMerge, Trash2, type LucideIcon } from 'lucide-react';
|
|
6
6
|
import { cn } from '@/lib/utils';
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} from '@/components/ui/
|
|
8
|
+
Dialog,
|
|
9
|
+
DialogClose,
|
|
10
|
+
DialogContent,
|
|
11
|
+
DialogDescription,
|
|
12
|
+
DialogFooter,
|
|
13
|
+
DialogHeader,
|
|
14
|
+
DialogTitle,
|
|
15
|
+
} from '@/components/ui/dialog';
|
|
16
|
+
import { Button } from '@/components/ui/button';
|
|
17
17
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
|
|
18
18
|
import {
|
|
19
19
|
featureNodeStateConfig,
|
|
@@ -123,26 +123,32 @@ export function FeatureNode({
|
|
|
123
123
|
</TooltipProvider>
|
|
124
124
|
</div>
|
|
125
125
|
|
|
126
|
-
<
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
<
|
|
126
|
+
<Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>
|
|
127
|
+
<DialogContent className="max-w-xs">
|
|
128
|
+
<DialogHeader>
|
|
129
|
+
<DialogTitle>Delete feature?</DialogTitle>
|
|
130
|
+
<DialogDescription>
|
|
131
131
|
This will permanently delete <strong>{data.name}</strong> and all associated data
|
|
132
132
|
including specs, branches, and progress.
|
|
133
|
-
</
|
|
134
|
-
</
|
|
135
|
-
<
|
|
136
|
-
<
|
|
137
|
-
|
|
133
|
+
</DialogDescription>
|
|
134
|
+
</DialogHeader>
|
|
135
|
+
<DialogFooter className="grid grid-cols-2 gap-2 sm:flex-none">
|
|
136
|
+
<DialogClose asChild>
|
|
137
|
+
<Button variant="outline">Cancel</Button>
|
|
138
|
+
</DialogClose>
|
|
139
|
+
<Button
|
|
138
140
|
variant="destructive"
|
|
139
|
-
onClick={() =>
|
|
141
|
+
onClick={(e) => {
|
|
142
|
+
e.stopPropagation();
|
|
143
|
+
setConfirmOpen(false);
|
|
144
|
+
data.onDelete?.(data.featureId);
|
|
145
|
+
}}
|
|
140
146
|
>
|
|
141
147
|
Delete
|
|
142
|
-
</
|
|
143
|
-
</
|
|
144
|
-
</
|
|
145
|
-
</
|
|
148
|
+
</Button>
|
|
149
|
+
</DialogFooter>
|
|
150
|
+
</DialogContent>
|
|
151
|
+
</Dialog>
|
|
146
152
|
</>
|
|
147
153
|
) : null}
|
|
148
154
|
|
|
@@ -6,15 +6,15 @@ import { Github, Plus, Code2, Terminal, FolderOpen, Trash2, Play, Square } from
|
|
|
6
6
|
import { cn } from '@/lib/utils';
|
|
7
7
|
import { ActionButton } from '@/components/common/action-button';
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from '@/components/ui/
|
|
9
|
+
Dialog,
|
|
10
|
+
DialogClose,
|
|
11
|
+
DialogContent,
|
|
12
|
+
DialogDescription,
|
|
13
|
+
DialogFooter,
|
|
14
|
+
DialogHeader,
|
|
15
|
+
DialogTitle,
|
|
16
|
+
} from '@/components/ui/dialog';
|
|
17
|
+
import { Button } from '@/components/ui/button';
|
|
18
18
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
|
|
19
19
|
import { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';
|
|
20
20
|
import { useDeployAction } from '@/hooks/use-deploy-action';
|
|
@@ -73,23 +73,31 @@ export function RepositoryNode({ data }: { data: RepositoryNodeData; [key: strin
|
|
|
73
73
|
</TooltipProvider>
|
|
74
74
|
</div>
|
|
75
75
|
|
|
76
|
-
<
|
|
77
|
-
<
|
|
78
|
-
<
|
|
79
|
-
<
|
|
80
|
-
<
|
|
81
|
-
This will remove <strong>{data.name}</strong>
|
|
82
|
-
files on disk won't be affected.
|
|
83
|
-
</
|
|
84
|
-
</
|
|
85
|
-
<
|
|
86
|
-
<
|
|
87
|
-
|
|
76
|
+
<Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>
|
|
77
|
+
<DialogContent className="max-w-xs">
|
|
78
|
+
<DialogHeader>
|
|
79
|
+
<DialogTitle>Remove repository?</DialogTitle>
|
|
80
|
+
<DialogDescription>
|
|
81
|
+
This will remove <strong>{data.name}</strong> and all its features from your
|
|
82
|
+
workspace. The repository files on disk won't be affected.
|
|
83
|
+
</DialogDescription>
|
|
84
|
+
</DialogHeader>
|
|
85
|
+
<DialogFooter className="grid grid-cols-2 gap-2 sm:flex-none">
|
|
86
|
+
<DialogClose asChild>
|
|
87
|
+
<Button variant="outline">Cancel</Button>
|
|
88
|
+
</DialogClose>
|
|
89
|
+
<Button
|
|
90
|
+
variant="destructive"
|
|
91
|
+
onClick={() => {
|
|
92
|
+
setConfirmOpen(false);
|
|
93
|
+
data.onDelete?.(data.id!);
|
|
94
|
+
}}
|
|
95
|
+
>
|
|
88
96
|
Remove
|
|
89
|
-
</
|
|
90
|
-
</
|
|
91
|
-
</
|
|
92
|
-
</
|
|
97
|
+
</Button>
|
|
98
|
+
</DialogFooter>
|
|
99
|
+
</DialogContent>
|
|
100
|
+
</Dialog>
|
|
93
101
|
</>
|
|
94
102
|
) : null}
|
|
95
103
|
|
|
@@ -28,7 +28,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
28
28
|
const pathname = usePathname();
|
|
29
29
|
const selectedFeatureId = useSelectedFeatureId();
|
|
30
30
|
const clickSound = useSoundAction('click');
|
|
31
|
-
const { guardedNavigate
|
|
31
|
+
const { guardedNavigate } = useDrawerCloseGuard();
|
|
32
32
|
|
|
33
33
|
const {
|
|
34
34
|
nodes,
|
|
@@ -39,7 +39,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
39
39
|
handleDeleteFeature,
|
|
40
40
|
handleDeleteRepository,
|
|
41
41
|
createFeatureNode,
|
|
42
|
-
} = useControlCenterState(initialNodes, initialEdges
|
|
42
|
+
} = useControlCenterState(initialNodes, initialEdges);
|
|
43
43
|
|
|
44
44
|
// Publish sidebar features to context whenever feature node data changes
|
|
45
45
|
const { setFeatures: setSidebarFeatures } = useSidebarFeaturesContext();
|
|
@@ -167,9 +167,31 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
|
|
|
167
167
|
useEffect(() => {
|
|
168
168
|
const handler = (e: Event) => {
|
|
169
169
|
const detail = (
|
|
170
|
-
e as CustomEvent<{
|
|
170
|
+
e as CustomEvent<{
|
|
171
|
+
name: string;
|
|
172
|
+
description?: string;
|
|
173
|
+
repositoryPath: string;
|
|
174
|
+
parentId?: string;
|
|
175
|
+
}>
|
|
171
176
|
).detail;
|
|
172
177
|
|
|
178
|
+
// When a parentId is provided, connect to the parent feature node
|
|
179
|
+
// via a dependency edge instead of the repo node.
|
|
180
|
+
if (detail.parentId) {
|
|
181
|
+
const parentNodeId = `feat-${detail.parentId}`;
|
|
182
|
+
createFeatureNode(
|
|
183
|
+
parentNodeId,
|
|
184
|
+
{
|
|
185
|
+
state: 'creating',
|
|
186
|
+
name: detail.name,
|
|
187
|
+
description: detail.description,
|
|
188
|
+
repositoryPath: detail.repositoryPath,
|
|
189
|
+
},
|
|
190
|
+
'dependencyEdge'
|
|
191
|
+
);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
173
195
|
// Find the repo node to connect to
|
|
174
196
|
const repoNode = nodes.find(
|
|
175
197
|
(n) =>
|