@shepai/cli 1.72.9-pr219.08421ee → 1.72.9-pr220.68aacbc
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/create/create-feature.use-case.d.ts +20 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +68 -41
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +10 -0
- package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +2 -4
- package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/create-feature.js +20 -2
- package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts +10 -0
- package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-feature-metadata.js +14 -0
- package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/agent-events/route.js +16 -17
- package/dist/src/presentation/web/app/build-feature-node-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-feature-node-data.js +2 -26
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +2 -26
- package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts +2 -0
- package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/index.js +0 -1
- package/dist/src/presentation/web/components/common/add-repository-button/pick-folder.d.ts.map +1 -0
- 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 +13 -18
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +2 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +11 -11
- 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 +69 -141
- package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts +0 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/index.js +0 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/use-artifact-fetch.d.ts +13 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/use-artifact-fetch.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/use-artifact-fetch.js +46 -0
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +7 -10
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts +25 -0
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +45 -2
- package/dist/src/presentation/web/components/common/index.d.ts +2 -3
- package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/index.js +2 -3
- package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +14 -39
- package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +1 -1
- 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 +31 -14
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts +0 -11
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +2 -37
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +8 -0
- 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 +158 -396
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +2 -10
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +11 -54
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +0 -46
- package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +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 +2 -2
- package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/presentation/web/components/ui/dialog.js +2 -2
- package/dist/src/presentation/web/hooks/agent-events-provider.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/agent-events-provider.js +3 -2
- package/dist/src/presentation/web/hooks/use-agent-events.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-agent-events.js +16 -5
- package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-deploy-action.js +8 -3
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts +42 -0
- package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -0
- package/dist/src/presentation/web/hooks/use-graph-state.js +257 -0
- package/dist/src/presentation/web/hooks/use-notifications.d.ts +1 -5
- package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-notifications.js +1 -26
- package/dist/src/presentation/web/hooks/use-notifications.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-notifications.stories.js +28 -38
- package/dist/src/presentation/web/lib/derive-graph.d.ts +52 -0
- package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/derive-graph.js +126 -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 +0 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +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/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +34 -34
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
- 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/server-reference-manifest.json +40 -40
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
- 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/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
- 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/server-reference-manifest.json +34 -34
- package/web/.next/server/app/(dashboard)/create/page.js +3 -3
- 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/server-reference-manifest.json +40 -40
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/page.js +3 -3
- 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/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +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/skills/page/server-reference-manifest.json +6 -6
- 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 +6 -6
- 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.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
- package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
- 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_816618e2.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.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]__6cbc1149._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -1
- 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/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- 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 +1 -1
- package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_250a63ae._.js +3 -0
- package/web/.next/server/chunks/ssr/_250a63ae._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
- package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
- package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
- package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_ad111e34._.js +6 -0
- package/web/.next/server/chunks/ssr/_ad111e34._.js.map +1 -0
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5ea689db._.js → server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_7188a290._.js.map → src_presentation_web_2b91e4ec._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_5ea689db._.js → src_presentation_web_5bcc1537._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_5ea689db._.js.map → src_presentation_web_5bcc1537._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.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_d5b0cb86._.js +8 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.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 +142 -142
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- 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/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +34 -34
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +3 -3
- 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/server-reference-manifest.json +40 -40
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
- 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/server-reference-manifest.json +30 -30
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +3 -3
- 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/server-reference-manifest.json +34 -34
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +3 -3
- 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/server-reference-manifest.json +40 -40
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
- 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/server-reference-manifest.json +30 -30
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +3 -3
- 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/server-reference-manifest.json +30 -30
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +3 -3
- 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.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/skills/page/server-reference-manifest.json +6 -6
- 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 +6 -6
- 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.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/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
- 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_816618e2.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
- 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]__6cbc1149._.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/{server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
- 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 +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_250a63ae._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ad111e34._.js +6 -0
- package/web/.next/{server/chunks/ssr/src_presentation_web_7188a290._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{src_presentation_web_7188a290._.js → src_presentation_web_5bcc1537._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.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_d5b0cb86._.js +8 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -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 +142 -142
- package/web/.next/standalone/src/presentation/web/CLAUDE.md +77 -33
- package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +27 -2
- package/web/.next/standalone/src/presentation/web/app/actions/get-feature-metadata.ts +18 -0
- package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +18 -19
- package/web/.next/standalone/src/presentation/web/app/build-feature-node-data.ts +3 -30
- package/web/.next/standalone/src/presentation/web/app/build-graph-nodes.ts +3 -30
- package/web/.next/standalone/src/presentation/web/components/common/add-repository-button/index.ts +1 -0
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +15 -21
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/drawer-view.ts +12 -13
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +99 -137
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/index.ts +0 -1
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/use-artifact-fetch.ts +56 -0
- package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/use-feature-actions.ts +6 -7
- package/web/.next/standalone/src/presentation/web/components/common/feature-node/derive-feature-state.ts +63 -2
- package/web/.next/standalone/src/presentation/web/components/common/index.ts +2 -12
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/use-repository-actions.ts +29 -54
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-empty-state.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +43 -36
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center.stories.tsx +2 -41
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +202 -495
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -48
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +13 -76
- package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/ui/alert-dialog.tsx +2 -5
- package/web/.next/standalone/src/presentation/web/components/ui/dialog.tsx +2 -5
- package/web/.next/standalone/src/presentation/web/hooks/agent-events-provider.tsx +7 -2
- package/web/.next/standalone/src/presentation/web/hooks/use-agent-events.ts +17 -5
- package/web/.next/standalone/src/presentation/web/hooks/use-deploy-action.ts +11 -3
- package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +376 -0
- package/web/.next/standalone/src/presentation/web/hooks/use-notifications.stories.tsx +2 -30
- package/web/.next/standalone/src/presentation/web/hooks/use-notifications.ts +2 -36
- package/web/.next/standalone/src/presentation/web/lib/derive-graph.ts +178 -0
- package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +0 -1
- package/web/.next/static/chunks/0ffccd7be73305c8.css +2 -0
- package/web/.next/static/chunks/3e25d4932e1dd406.js +1 -0
- package/web/.next/static/chunks/3f205fd6adbfd20a.js +7 -0
- package/web/.next/static/chunks/68ded4375df20ac5.js +1 -0
- package/web/.next/static/chunks/{1d281f045b623a45.js → 6c13863b031221ea.js} +1 -1
- package/web/.next/static/chunks/8ecedb1a498fb468.js +1 -0
- package/web/.next/static/chunks/95682021c08d3636.js +1 -0
- package/web/.next/static/chunks/ab808dc1cdf66a9c.js +4 -0
- package/web/.next/static/chunks/cb41849bcfaa304e.js +1 -0
- package/web/.next/static/chunks/{cd9099d3eae9dd04.js → ee1a546ece509b1d.js} +1 -1
- package/web/.next/static/chunks/f200e62f7185c8da.js +1 -0
- package/web/.next/static/chunks/fc0f263fd83b43f9.js +1 -0
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts +0 -7
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.js +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts +0 -6
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.js +0 -23
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts +0 -10
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.js +0 -33
- package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts +0 -4
- package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts +0 -12
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.js +0 -337
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts +0 -33
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.js +0 -214
- package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts +0 -2
- package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/notification-permission-banner/index.js +0 -1
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts +0 -2
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.js +0 -33
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts +0 -6
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts.map +0 -1
- package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.js +0 -24
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_4469c284._.js +0 -6
- package/web/.next/server/chunks/ssr/_4469c284._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6e08ce21._.js +0 -3
- package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js +0 -8
- package/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js +0 -8
- package/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js.map +0 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_4469c284._.js +0 -6
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6e08ce21._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_0a49d9ee._.js +0 -8
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_79b0305a._.js +0 -8
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +0 -3
- package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node-config.ts +0 -8
- package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.tsx +0 -70
- package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.tsx +0 -49
- package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/index.ts +0 -3
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.tsx +0 -293
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.tsx +0 -745
- package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/index.ts +0 -1
- package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.tsx +0 -52
- package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.tsx +0 -55
- package/web/.next/static/chunks/073b31d7a4974504.js +0 -1
- package/web/.next/static/chunks/0c54314c8c9c9739.js +0 -7
- package/web/.next/static/chunks/0e588a3a4dd7d1c0.js +0 -1
- package/web/.next/static/chunks/2433994d844b7d39.js +0 -1
- package/web/.next/static/chunks/3e041a9008bac888.js +0 -1
- package/web/.next/static/chunks/798624a651d68855.js +0 -4
- package/web/.next/static/chunks/977b9d2b9ef19f7d.js +0 -1
- package/web/.next/static/chunks/9be617fc61b893f2.js +0 -1
- package/web/.next/static/chunks/a18b0561724d11d4.js +0 -1
- package/web/.next/static/chunks/acce8a15d6896dea.css +0 -2
- /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.d.ts +0 -0
- /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.js +0 -0
- /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.d.ts +0 -0
- /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.js +0 -0
- /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.tsx +0 -0
- /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.ts +0 -0
- /package/web/.next/static/{pzwrJGWI__eUhJsxxW2S- → wSVxDvqh-ObIC1qlefqgl}/_buildManifest.js +0 -0
- /package/web/.next/static/{pzwrJGWI__eUhJsxxW2S- → wSVxDvqh-ObIC1qlefqgl}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{pzwrJGWI__eUhJsxxW2S- → wSVxDvqh-ObIC1qlefqgl}/_ssgManifest.js +0 -0
package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* - specPath is persisted on the Feature record
|
|
16
16
|
* - Initial lifecycle is Requirements
|
|
17
17
|
*/
|
|
18
|
+
import type { Feature } from '../../../../domain/generated/output.js';
|
|
18
19
|
import type { IFeatureRepository } from '../../../ports/output/repositories/feature-repository.interface.js';
|
|
19
20
|
import type { IWorktreeService } from '../../../ports/output/services/worktree-service.interface.js';
|
|
20
21
|
import type { IFeatureAgentProcessService } from '../../../ports/output/agents/feature-agent-process.interface.js';
|
|
@@ -24,7 +25,7 @@ import type { IRepositoryRepository } from '../../../ports/output/repositories/r
|
|
|
24
25
|
import type { IGitPrService } from '../../../ports/output/services/git-pr-service.interface.js';
|
|
25
26
|
import { MetadataGenerator } from './metadata-generator.js';
|
|
26
27
|
import { SlugResolver } from './slug-resolver.js';
|
|
27
|
-
import type { CreateFeatureInput, CreateFeatureResult } from './types.js';
|
|
28
|
+
import type { CreateFeatureInput, CreateFeatureResult, CreateRecordResult } from './types.js';
|
|
28
29
|
export declare class CreateFeatureUseCase {
|
|
29
30
|
private readonly featureRepo;
|
|
30
31
|
private readonly worktreeService;
|
|
@@ -36,6 +37,24 @@ export declare class CreateFeatureUseCase {
|
|
|
36
37
|
private readonly repositoryRepo;
|
|
37
38
|
private readonly gitPrService;
|
|
38
39
|
constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, agentProcess: IFeatureAgentProcessService, runRepository: IAgentRunRepository, specInitializer: ISpecInitializerService, metadataGenerator: MetadataGenerator, slugResolver: SlugResolver, repositoryRepo: IRepositoryRepository, gitPrService: IGitPrService);
|
|
40
|
+
/**
|
|
41
|
+
* Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
|
|
42
|
+
* Used by the CLI which shows a spinner and needs everything done before returning.
|
|
43
|
+
*/
|
|
39
44
|
execute(input: CreateFeatureInput): Promise<CreateFeatureResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Phase 1 (fast): Creates the feature + agent run records in DB and returns immediately.
|
|
47
|
+
* The feature has a real UUID and a preliminary slug derived from the provided name.
|
|
48
|
+
* No AI calls, no git operations — just DB writes.
|
|
49
|
+
*/
|
|
50
|
+
createRecord(input: CreateFeatureInput): Promise<CreateRecordResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Phase 2 (slow): AI metadata generation, git worktree, spec init, agent spawn.
|
|
53
|
+
* Updates the feature record with refined metadata, branch, and specPath.
|
|
54
|
+
*/
|
|
55
|
+
initializeAndSpawn(feature: Feature, input: CreateFeatureInput, shouldSpawn: boolean): Promise<{
|
|
56
|
+
warning?: string;
|
|
57
|
+
updatedFeature: Feature;
|
|
58
|
+
}>;
|
|
40
59
|
}
|
|
41
60
|
//# sourceMappingURL=create-feature.use-case.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAGhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAhBZ,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa;IAG9C;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgH1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAiE1D"}
|
package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js
CHANGED
|
@@ -55,22 +55,31 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
55
55
|
this.repositoryRepo = repositoryRepo;
|
|
56
56
|
this.gitPrService = gitPrService;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
|
|
60
|
+
* Used by the CLI which shows a spinner and needs everything done before returning.
|
|
61
|
+
*/
|
|
58
62
|
async execute(input) {
|
|
59
|
-
|
|
63
|
+
const { feature, shouldSpawn } = await this.createRecord(input);
|
|
64
|
+
const { warning, updatedFeature } = await this.initializeAndSpawn(feature, input, shouldSpawn);
|
|
65
|
+
return { feature: updatedFeature, warning };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Phase 1 (fast): Creates the feature + agent run records in DB and returns immediately.
|
|
69
|
+
* The feature has a real UUID and a preliminary slug derived from the provided name.
|
|
70
|
+
* No AI calls, no git operations — just DB writes.
|
|
71
|
+
*/
|
|
72
|
+
async createRecord(input) {
|
|
60
73
|
let initialLifecycle = SdlcLifecycle.Requirements;
|
|
61
74
|
let shouldSpawn = true;
|
|
62
|
-
// When creating a child feature, always use the parent's repositoryPath (the
|
|
63
|
-
// original repo root), not the caller's cwd which may be a worktree (FR-10).
|
|
64
75
|
let effectiveRepoPath = input.repositoryPath;
|
|
65
76
|
if (input.parentId) {
|
|
66
77
|
const parent = await this.featureRepo.findById(input.parentId);
|
|
67
78
|
if (!parent) {
|
|
68
79
|
throw new Error(`Parent feature not found: ${input.parentId}`);
|
|
69
80
|
}
|
|
70
|
-
// Use the parent's repositoryPath so the child worktree branches from the
|
|
71
|
-
// original repo, not from inside another worktree.
|
|
72
81
|
effectiveRepoPath = parent.repositoryPath;
|
|
73
|
-
// Cycle detection — O(depth) upward walk through ancestor chain
|
|
82
|
+
// Cycle detection — O(depth) upward walk through ancestor chain
|
|
74
83
|
const visited = new Set([input.parentId]);
|
|
75
84
|
let cursor = parent.parentId;
|
|
76
85
|
while (cursor) {
|
|
@@ -81,10 +90,6 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
81
90
|
const ancestor = await this.featureRepo.findById(cursor);
|
|
82
91
|
cursor = ancestor?.parentId ?? undefined;
|
|
83
92
|
}
|
|
84
|
-
// Two-gate lifecycle logic (FR-9):
|
|
85
|
-
// parent.lifecycle === Blocked → cascade block (FR-12)
|
|
86
|
-
// parent.lifecycle not in POST_IMPLEMENTATION → early gate not met → Blocked
|
|
87
|
-
// parent.lifecycle in POST_IMPLEMENTATION → gate satisfied → Started
|
|
88
93
|
if (parent.lifecycle === SdlcLifecycle.Blocked ||
|
|
89
94
|
!POST_IMPLEMENTATION.has(parent.lifecycle)) {
|
|
90
95
|
initialLifecycle = SdlcLifecycle.Blocked;
|
|
@@ -95,29 +100,10 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
95
100
|
shouldSpawn = true;
|
|
96
101
|
}
|
|
97
102
|
}
|
|
98
|
-
// Ensure the target directory is a git repository (auto-init if needed)
|
|
99
|
-
// Must run before slug resolution which needs git commands
|
|
100
|
-
await this.worktreeService.ensureGitRepository(effectiveRepoPath);
|
|
101
|
-
const metadata = await this.metadataGenerator.generateMetadata(input.userInput);
|
|
102
|
-
const originalSlug = metadata.slug;
|
|
103
|
-
// Find a unique slug — the branch may exist from a previous (deleted) feature
|
|
104
|
-
const { slug, branch, warning } = await this.slugResolver.resolveUniqueSlug(originalSlug, effectiveRepoPath);
|
|
105
|
-
// Determine next feature number for this repo
|
|
106
|
-
const existingFeatures = await this.featureRepo.list({
|
|
107
|
-
repositoryPath: effectiveRepoPath,
|
|
108
|
-
});
|
|
109
|
-
const featureNumber = existingFeatures.length + 1;
|
|
110
|
-
const now = new Date();
|
|
111
|
-
const runId = randomUUID();
|
|
112
|
-
// Create git worktree branching from the repo's default branch
|
|
113
|
-
const defaultBranch = await this.gitPrService.getDefaultBranch(effectiveRepoPath);
|
|
114
|
-
const worktreePath = this.worktreeService.getWorktreePath(effectiveRepoPath, branch);
|
|
115
|
-
await this.worktreeService.create(effectiveRepoPath, branch, worktreePath, defaultBranch);
|
|
116
|
-
// Initialize spec directory — full user input goes into spec.yaml as-is
|
|
117
|
-
const { specDir } = await this.specInitializer.initialize(worktreePath, slug, featureNumber, input.userInput);
|
|
118
103
|
// Resolve or create repository entity for this path
|
|
119
104
|
const normalizedPath = effectiveRepoPath.replace(/\/+$/, '') || effectiveRepoPath;
|
|
120
105
|
let repository = await this.repositoryRepo.findByPath(normalizedPath);
|
|
106
|
+
const now = new Date();
|
|
121
107
|
if (!repository) {
|
|
122
108
|
const repoName = normalizedPath.split('/').pop() ?? normalizedPath;
|
|
123
109
|
repository = {
|
|
@@ -132,14 +118,19 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
132
118
|
throw new Error(`Failed to create or retrieve repository record for path: ${normalizedPath}`);
|
|
133
119
|
}
|
|
134
120
|
}
|
|
121
|
+
const featureName = input.name ?? input.userInput.slice(0, 100);
|
|
122
|
+
const runId = randomUUID();
|
|
123
|
+
const featureId = randomUUID();
|
|
124
|
+
// Use the feature ID as a temporary slug so it never collides with the
|
|
125
|
+
// AI-generated slug in initializeAndSpawn() → resolveUniqueSlug().
|
|
135
126
|
const feature = {
|
|
136
|
-
id:
|
|
137
|
-
name:
|
|
138
|
-
slug,
|
|
139
|
-
description:
|
|
127
|
+
id: featureId,
|
|
128
|
+
name: featureName,
|
|
129
|
+
slug: featureId,
|
|
130
|
+
description: input.description ?? '',
|
|
140
131
|
userQuery: input.userInput,
|
|
141
132
|
repositoryPath: effectiveRepoPath,
|
|
142
|
-
branch,
|
|
133
|
+
branch: '',
|
|
143
134
|
lifecycle: initialLifecycle,
|
|
144
135
|
messages: [],
|
|
145
136
|
relatedArtifacts: [],
|
|
@@ -151,14 +142,14 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
151
142
|
allowMerge: false,
|
|
152
143
|
},
|
|
153
144
|
agentRunId: runId,
|
|
154
|
-
specPath:
|
|
145
|
+
specPath: '',
|
|
155
146
|
repositoryId: repository.id,
|
|
156
147
|
...(input.parentId ? { parentId: input.parentId } : {}),
|
|
157
148
|
createdAt: now,
|
|
158
149
|
updatedAt: now,
|
|
159
150
|
};
|
|
160
151
|
await this.featureRepo.create(feature);
|
|
161
|
-
// Create agent run record
|
|
152
|
+
// Create agent run record (pending state — agent not spawned yet)
|
|
162
153
|
const settings = getSettings();
|
|
163
154
|
const agentRun = {
|
|
164
155
|
id: runId,
|
|
@@ -174,16 +165,52 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
|
|
|
174
165
|
updatedAt: now.toISOString(),
|
|
175
166
|
};
|
|
176
167
|
await this.runRepository.create(agentRun);
|
|
177
|
-
|
|
168
|
+
return { feature, shouldSpawn };
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Phase 2 (slow): AI metadata generation, git worktree, spec init, agent spawn.
|
|
172
|
+
* Updates the feature record with refined metadata, branch, and specPath.
|
|
173
|
+
*/
|
|
174
|
+
async initializeAndSpawn(feature, input, shouldSpawn) {
|
|
175
|
+
const effectiveRepoPath = feature.repositoryPath;
|
|
176
|
+
// Ensure the target directory is a git repository (auto-init if needed)
|
|
177
|
+
await this.worktreeService.ensureGitRepository(effectiveRepoPath);
|
|
178
|
+
const metadata = await this.metadataGenerator.generateMetadata(input.userInput);
|
|
179
|
+
const originalSlug = metadata.slug;
|
|
180
|
+
const { slug, branch, warning } = await this.slugResolver.resolveUniqueSlug(originalSlug, effectiveRepoPath);
|
|
181
|
+
// Determine next feature number for this repo
|
|
182
|
+
const existingFeatures = await this.featureRepo.list({
|
|
183
|
+
repositoryPath: effectiveRepoPath,
|
|
184
|
+
});
|
|
185
|
+
const featureNumber = existingFeatures.length;
|
|
186
|
+
// Create git worktree branching from the repo's default branch
|
|
187
|
+
const defaultBranch = await this.gitPrService.getDefaultBranch(effectiveRepoPath);
|
|
188
|
+
const worktreePath = this.worktreeService.getWorktreePath(effectiveRepoPath, branch);
|
|
189
|
+
await this.worktreeService.create(effectiveRepoPath, branch, worktreePath, defaultBranch);
|
|
190
|
+
// Initialize spec directory — full user input goes into spec.yaml as-is
|
|
191
|
+
const { specDir } = await this.specInitializer.initialize(worktreePath, slug, featureNumber, input.userInput);
|
|
192
|
+
// Update feature record with refined metadata, branch, and specPath
|
|
193
|
+
const updatedFeature = {
|
|
194
|
+
...feature,
|
|
195
|
+
name: metadata.name,
|
|
196
|
+
slug,
|
|
197
|
+
description: metadata.description,
|
|
198
|
+
branch,
|
|
199
|
+
specPath: specDir,
|
|
200
|
+
updatedAt: new Date(),
|
|
201
|
+
};
|
|
202
|
+
await this.featureRepo.update(updatedFeature);
|
|
203
|
+
// Spawn agent if not blocked
|
|
178
204
|
if (shouldSpawn) {
|
|
179
|
-
this.
|
|
205
|
+
const agentRun = await this.runRepository.findById(feature.agentRunId);
|
|
206
|
+
this.agentProcess.spawn(feature.id, feature.agentRunId, effectiveRepoPath, specDir, worktreePath, {
|
|
180
207
|
...(input.approvalGates ? { approvalGates: input.approvalGates } : {}),
|
|
181
|
-
threadId: agentRun
|
|
208
|
+
threadId: agentRun?.threadId ?? randomUUID(),
|
|
182
209
|
push: input.push ?? false,
|
|
183
210
|
openPr: input.openPr ?? false,
|
|
184
211
|
});
|
|
185
212
|
}
|
|
186
|
-
return {
|
|
213
|
+
return { warning, updatedFeature };
|
|
187
214
|
}
|
|
188
215
|
};
|
|
189
216
|
CreateFeatureUseCase = __decorate([
|
|
@@ -7,9 +7,19 @@ export interface CreateFeatureInput {
|
|
|
7
7
|
openPr?: boolean;
|
|
8
8
|
/** Optional ID of the parent feature. When set, child may be created in Blocked state. */
|
|
9
9
|
parentId?: string;
|
|
10
|
+
/** Pre-supplied name (skips AI metadata extraction for name). */
|
|
11
|
+
name?: string;
|
|
12
|
+
/** Pre-supplied description (skips AI metadata extraction for description). */
|
|
13
|
+
description?: string;
|
|
10
14
|
}
|
|
11
15
|
export interface CreateFeatureResult {
|
|
12
16
|
feature: Feature;
|
|
13
17
|
warning?: string;
|
|
14
18
|
}
|
|
19
|
+
/** Result of the fast createRecord phase (before metadata/worktree/agent). */
|
|
20
|
+
export interface CreateRecordResult {
|
|
21
|
+
feature: Feature;
|
|
22
|
+
/** Whether the agent should be spawned (false when child is blocked). */
|
|
23
|
+
shouldSpawn: boolean;
|
|
24
|
+
}
|
|
15
25
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAErF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAErF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/notifications/notification.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8EAA8E,CAAC;AAEzH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAc7D,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAKlE,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"notification.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/notifications/notification.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8EAA8E,CAAC;AAEzH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAc7D,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAKlE,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;CAiBvC"}
|
package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js
CHANGED
|
@@ -39,9 +39,7 @@ export class NotificationService {
|
|
|
39
39
|
if (notifications.inApp.enabled || notifications.browser.enabled) {
|
|
40
40
|
this.bus.emit('notification', event);
|
|
41
41
|
}
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
this.desktopNotifier.send(event.featureName, event.message);
|
|
45
|
-
}
|
|
42
|
+
// Desktop notifications disabled — removed in favour of in-app toasts.
|
|
43
|
+
// The DesktopNotifier dependency is kept for API compatibility but never called.
|
|
46
44
|
}
|
|
47
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/create-feature.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpE,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAQD,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"create-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/create-feature.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpE,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAQD,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2DhD"}
|
|
@@ -27,15 +27,33 @@ export async function createFeature(input) {
|
|
|
27
27
|
};
|
|
28
28
|
try {
|
|
29
29
|
const createFeatureUseCase = resolve('CreateFeatureUseCase');
|
|
30
|
-
|
|
30
|
+
// Phase 1 (fast): create DB record with real UUID — returns immediately
|
|
31
|
+
const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({
|
|
31
32
|
userInput,
|
|
32
33
|
repositoryPath,
|
|
33
34
|
approvalGates: gates,
|
|
34
35
|
push: push ?? false,
|
|
35
36
|
openPr: openPr ?? false,
|
|
36
37
|
...(parentId ? { parentId } : {}),
|
|
38
|
+
name,
|
|
39
|
+
description,
|
|
37
40
|
});
|
|
38
|
-
|
|
41
|
+
// Phase 2 (background): metadata generation, worktree, spec, agent spawn
|
|
42
|
+
// Fire-and-forget — the UI gets the real feature ID immediately
|
|
43
|
+
createFeatureUseCase
|
|
44
|
+
.initializeAndSpawn(feature, {
|
|
45
|
+
userInput,
|
|
46
|
+
repositoryPath,
|
|
47
|
+
approvalGates: gates,
|
|
48
|
+
push: push ?? false,
|
|
49
|
+
openPr: openPr ?? false,
|
|
50
|
+
...(parentId ? { parentId } : {}),
|
|
51
|
+
}, shouldSpawn)
|
|
52
|
+
.catch((err) => {
|
|
53
|
+
// eslint-disable-next-line no-console
|
|
54
|
+
console.error('[createFeature] initializeAndSpawn failed:', err);
|
|
55
|
+
});
|
|
56
|
+
return { feature };
|
|
39
57
|
}
|
|
40
58
|
catch (error) {
|
|
41
59
|
const message = error instanceof Error ? error.message : 'Failed to create feature';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight server action to fetch a single feature's name and description.
|
|
3
|
+
* Used by the SSE effect to update node metadata after AI metadata generation
|
|
4
|
+
* without a full graph reconcile (which can overwrite SSE-driven state).
|
|
5
|
+
*/
|
|
6
|
+
export declare function getFeatureMetadata(featureId: string): Promise<{
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
} | null>;
|
|
10
|
+
//# sourceMappingURL=get-feature-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-feature-metadata.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/get-feature-metadata.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAKvD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use server';
|
|
2
|
+
import { resolve } from '../../lib/server-container.js';
|
|
3
|
+
/**
|
|
4
|
+
* Lightweight server action to fetch a single feature's name and description.
|
|
5
|
+
* Used by the SSE effect to update node metadata after AI metadata generation
|
|
6
|
+
* without a full graph reconcile (which can overwrite SSE-driven state).
|
|
7
|
+
*/
|
|
8
|
+
export async function getFeatureMetadata(featureId) {
|
|
9
|
+
const featureRepo = resolve('IFeatureRepository');
|
|
10
|
+
const feature = await featureRepo.findById(featureId);
|
|
11
|
+
if (!feature)
|
|
12
|
+
return null;
|
|
13
|
+
return { name: feature.name, description: feature.description };
|
|
14
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/agent-events/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AA+DvC,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/app/api/agent-events/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AA+DvC,wBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAmN9C"}
|
|
@@ -115,8 +115,7 @@ export function GET(request) {
|
|
|
115
115
|
continue;
|
|
116
116
|
const prev = cache.get(feature.id);
|
|
117
117
|
if (!prev) {
|
|
118
|
-
// First time seeing this feature — seed cache
|
|
119
|
-
// clients discover features created outside the UI (e.g. CLI).
|
|
118
|
+
// First time seeing this feature — seed cache, don't emit
|
|
120
119
|
const completedPhases = new Set();
|
|
121
120
|
try {
|
|
122
121
|
const timings = await phaseTimingRepo.findByRunId(run.id);
|
|
@@ -134,21 +133,6 @@ export function GET(request) {
|
|
|
134
133
|
completedPhases,
|
|
135
134
|
featureName: feature.name,
|
|
136
135
|
});
|
|
137
|
-
// Emit initial state so the client learns about new features
|
|
138
|
-
const mapping = STATUS_TO_EVENT[run.status];
|
|
139
|
-
if (mapping) {
|
|
140
|
-
const phase = resultToPhase(run.result);
|
|
141
|
-
emitEvent({
|
|
142
|
-
eventType: mapping.eventType,
|
|
143
|
-
agentRunId: run.id,
|
|
144
|
-
featureId: feature.id,
|
|
145
|
-
featureName: feature.name,
|
|
146
|
-
...(phase && { phaseName: phase }),
|
|
147
|
-
message: `Agent status: ${run.status}`,
|
|
148
|
-
severity: mapping.severity,
|
|
149
|
-
timestamp: new Date().toISOString(),
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
136
|
continue;
|
|
153
137
|
}
|
|
154
138
|
// Check for status change
|
|
@@ -169,6 +153,21 @@ export function GET(request) {
|
|
|
169
153
|
});
|
|
170
154
|
}
|
|
171
155
|
}
|
|
156
|
+
// Check for feature name change (AI metadata generation updates name)
|
|
157
|
+
if (prev.featureName !== feature.name) {
|
|
158
|
+
prev.featureName = feature.name;
|
|
159
|
+
const nodeName = LIFECYCLE_TO_NODE[feature.lifecycle] ?? 'requirements';
|
|
160
|
+
emitEvent({
|
|
161
|
+
eventType: NotificationEventType.PhaseCompleted,
|
|
162
|
+
agentRunId: run.id,
|
|
163
|
+
featureId: feature.id,
|
|
164
|
+
featureName: feature.name,
|
|
165
|
+
phaseName: nodeName,
|
|
166
|
+
message: `Feature metadata updated`,
|
|
167
|
+
severity: NotificationSeverity.Info,
|
|
168
|
+
timestamp: new Date().toISOString(),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
172
171
|
// Check for lifecycle change (agent stays "running" but moves through phases)
|
|
173
172
|
if (prev.lifecycle !== feature.lifecycle) {
|
|
174
173
|
prev.lifecycle = feature.lifecycle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-feature-node-data.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-feature-node-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"build-feature-node-data.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-feature-node-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,eAAe,CAuB5F"}
|
|
@@ -1,38 +1,14 @@
|
|
|
1
|
-
import { deriveNodeState, deriveProgress, } from '../components/common/feature-node/derive-feature-state.js';
|
|
2
|
-
/** Map domain SdlcLifecycle enum values to UI FeatureLifecyclePhase (1:1). */
|
|
3
|
-
const lifecycleMap = {
|
|
4
|
-
Requirements: 'requirements',
|
|
5
|
-
Research: 'research',
|
|
6
|
-
Implementation: 'implementation',
|
|
7
|
-
Review: 'review',
|
|
8
|
-
'Deploy & QA': 'deploy',
|
|
9
|
-
Maintain: 'maintain',
|
|
10
|
-
};
|
|
11
|
-
/** Map agent graph node names (from agent_run.result) to UI lifecycle phases. */
|
|
12
|
-
const nodeToLifecyclePhase = {
|
|
13
|
-
analyze: 'requirements',
|
|
14
|
-
requirements: 'requirements',
|
|
15
|
-
research: 'research',
|
|
16
|
-
plan: 'implementation',
|
|
17
|
-
implement: 'implementation',
|
|
18
|
-
merge: 'review',
|
|
19
|
-
};
|
|
1
|
+
import { deriveNodeState, deriveProgress, deriveLifecycle, } from '../components/common/feature-node/derive-feature-state.js';
|
|
20
2
|
/**
|
|
21
3
|
* Builds a FeatureNodeData object from a Feature entity and optional AgentRun.
|
|
22
4
|
* This is the single-feature version of the logic in `buildGraphNodes`.
|
|
23
5
|
*/
|
|
24
6
|
export function buildFeatureNodeData(feature, run) {
|
|
25
|
-
const agentNode = run?.result?.startsWith('node:') ? run.result.slice(5) : undefined;
|
|
26
|
-
const lifecycle = run?.status === 'completed'
|
|
27
|
-
? 'maintain'
|
|
28
|
-
: ((agentNode ? nodeToLifecyclePhase[agentNode] : undefined) ??
|
|
29
|
-
lifecycleMap[feature.lifecycle] ??
|
|
30
|
-
'requirements');
|
|
31
7
|
return {
|
|
32
8
|
name: feature.name,
|
|
33
9
|
description: feature.description ?? feature.slug,
|
|
34
10
|
featureId: feature.id,
|
|
35
|
-
lifecycle,
|
|
11
|
+
lifecycle: deriveLifecycle(feature, run),
|
|
36
12
|
repositoryPath: feature.repositoryPath,
|
|
37
13
|
branch: feature.branch,
|
|
38
14
|
specPath: feature.specPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAiE5C"}
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
import { deriveNodeState, deriveProgress, } from '../components/common/feature-node/derive-feature-state.js';
|
|
2
|
-
/** Map domain SdlcLifecycle enum values to UI FeatureLifecyclePhase (1:1). */
|
|
3
|
-
const lifecycleMap = {
|
|
4
|
-
Requirements: 'requirements',
|
|
5
|
-
Research: 'research',
|
|
6
|
-
Implementation: 'implementation',
|
|
7
|
-
Review: 'review',
|
|
8
|
-
'Deploy & QA': 'deploy',
|
|
9
|
-
Maintain: 'maintain',
|
|
10
|
-
};
|
|
11
|
-
/** Map agent graph node names (from agent_run.result) to UI lifecycle phases. */
|
|
12
|
-
const nodeToLifecyclePhase = {
|
|
13
|
-
analyze: 'requirements',
|
|
14
|
-
requirements: 'requirements',
|
|
15
|
-
research: 'research',
|
|
16
|
-
plan: 'implementation',
|
|
17
|
-
implement: 'implementation',
|
|
18
|
-
merge: 'review',
|
|
19
|
-
};
|
|
1
|
+
import { deriveNodeState, deriveProgress, deriveLifecycle, } from '../components/common/feature-node/derive-feature-state.js';
|
|
20
2
|
/**
|
|
21
3
|
* Builds React Flow nodes and edges from persisted repositories and features.
|
|
22
4
|
*
|
|
@@ -95,12 +77,6 @@ function appendFeatureNodes(repoFeatures, repoNodeId, allFeaturesWithRuns, nodes
|
|
|
95
77
|
return aTime - bTime;
|
|
96
78
|
});
|
|
97
79
|
sorted.forEach(({ feature, run }) => {
|
|
98
|
-
const agentNode = run?.result?.startsWith('node:') ? run.result.slice(5) : undefined;
|
|
99
|
-
const lifecycle = run?.status === 'completed'
|
|
100
|
-
? 'maintain'
|
|
101
|
-
: ((agentNode ? nodeToLifecyclePhase[agentNode] : undefined) ??
|
|
102
|
-
lifecycleMap[feature.lifecycle] ??
|
|
103
|
-
'requirements');
|
|
104
80
|
// Resolve blockedBy display name from parent feature
|
|
105
81
|
let blockedBy;
|
|
106
82
|
if (feature.parentId && feature.lifecycle === 'Blocked') {
|
|
@@ -113,7 +89,7 @@ function appendFeatureNodes(repoFeatures, repoNodeId, allFeaturesWithRuns, nodes
|
|
|
113
89
|
name: feature.name,
|
|
114
90
|
description: feature.description ?? feature.slug,
|
|
115
91
|
featureId: feature.id,
|
|
116
|
-
lifecycle,
|
|
92
|
+
lifecycle: deriveLifecycle(feature, run),
|
|
117
93
|
repositoryPath: feature.repositoryPath,
|
|
118
94
|
branch: feature.branch,
|
|
119
95
|
specPath: feature.specPath,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-repository-button.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/add-repository-button/add-repository-button.tsx"],"names":[],"mappings":"AAQA,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAuCzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/add-repository-button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/src/presentation/web/components/common/add-repository-button/pick-folder.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick-folder.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/add-repository-button/pick-folder.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,EAAE,uBAAuB,2CA2EzB"}
|
package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js
CHANGED
|
@@ -5,10 +5,8 @@ import { useRouter, usePathname } from 'next/navigation';
|
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
6
|
import { createFeature } from '../../../app/actions/create-feature.js';
|
|
7
7
|
import { FeatureCreateDrawer } from '../../common/feature-create-drawer/index.js';
|
|
8
|
-
import { useSoundAction } from '../../../hooks/use-sound-action.js';
|
|
9
8
|
export function CreateDrawerClient({ repositoryPath, initialParentId, features, workflowDefaults, }) {
|
|
10
9
|
const router = useRouter();
|
|
11
|
-
const createSound = useSoundAction('create');
|
|
12
10
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
13
11
|
// Derive open state from the URL. Next.js parallel routes preserve slot
|
|
14
12
|
// content during soft navigation, so this component is NOT unmounted when
|
|
@@ -32,34 +30,31 @@ export function CreateDrawerClient({ repositoryPath, initialParentId, features,
|
|
|
32
30
|
}, [router]);
|
|
33
31
|
const onSubmit = useCallback((data) => {
|
|
34
32
|
setIsSubmitting(true);
|
|
35
|
-
// Dispatch event for optimistic canvas update before navigating
|
|
36
|
-
window.dispatchEvent(new CustomEvent('shep:feature-created', {
|
|
37
|
-
detail: {
|
|
38
|
-
name: data.name,
|
|
39
|
-
description: data.description,
|
|
40
|
-
repositoryPath: data.repositoryPath,
|
|
41
|
-
parentId: data.parentId,
|
|
42
|
-
},
|
|
43
|
-
}));
|
|
44
33
|
// Close the drawer immediately for responsive UI
|
|
45
34
|
router.push('/');
|
|
46
|
-
//
|
|
35
|
+
// Server action Phase 1 returns fast with real feature ID (DB record created)
|
|
36
|
+
// Phase 2 (metadata, worktree, agent) runs in background on server
|
|
47
37
|
createFeature(data)
|
|
48
38
|
.then((result) => {
|
|
49
39
|
if (result.error) {
|
|
50
40
|
toast.error(result.error);
|
|
51
|
-
// Dispatch rollback event
|
|
52
|
-
window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));
|
|
53
41
|
return;
|
|
54
42
|
}
|
|
55
|
-
|
|
43
|
+
// Dispatch event with real feature ID so control center adds it to featureMap
|
|
44
|
+
window.dispatchEvent(new CustomEvent('shep:feature-created', {
|
|
45
|
+
detail: {
|
|
46
|
+
featureId: result.feature.id,
|
|
47
|
+
name: result.feature.name,
|
|
48
|
+
description: result.feature.description,
|
|
49
|
+
repositoryPath: result.feature.repositoryPath,
|
|
50
|
+
parentId: data.parentId,
|
|
51
|
+
},
|
|
52
|
+
}));
|
|
56
53
|
})
|
|
57
54
|
.catch(() => {
|
|
58
55
|
toast.error('Failed to create feature');
|
|
59
|
-
window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));
|
|
60
|
-
// Reset on error so the user can retry without navigating away
|
|
61
56
|
setIsSubmitting(false);
|
|
62
57
|
});
|
|
63
|
-
}, [router
|
|
58
|
+
}, [router]);
|
|
64
59
|
return (_jsx(FeatureCreateDrawer, { open: isOpen, onClose: onClose, onSubmit: onSubmit, repositoryPath: repositoryPath, features: features, workflowDefaults: workflowDefaults, initialParentId: initialParentId, isSubmitting: isSubmitting }));
|
|
65
60
|
}
|
|
@@ -40,6 +40,8 @@ export type DrawerView =
|
|
|
40
40
|
type: 'repository';
|
|
41
41
|
data: RepositoryNodeData;
|
|
42
42
|
};
|
|
43
|
+
/** Derives the feature-specific view type from node lifecycle + state. */
|
|
44
|
+
export declare function deriveFeatureViewType(node: FeatureNodeData): 'feature' | 'prd-review' | 'tech-review' | 'merge-review';
|
|
43
45
|
/**
|
|
44
46
|
* Derives the active DrawerView from control-center state.
|
|
45
47
|
* Priority: feature-create > selected-node (prd/tech/merge/feature) > repository
|
package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/drawer-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,UAAU;AACpB,gGAAgG;AAC9F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAC5C,mEAAmE;GACjE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAC/C,yEAAyE;GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAChD,8DAA8D;GAC5D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AACjD,4BAA4B;GAC1B;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AACH,8BAA8B;GAC5B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAChD,GAAG,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"drawer-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/drawer-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iEAAiE,CAAC;AAC3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,UAAU;AACpB,gGAAgG;AAC9F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAC5C,mEAAmE;GACjE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAC/C,yEAAyE;GACvE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAChD,8DAA8D;GAC5D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AACjD,4BAA4B;GAC1B;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AACH,8BAA8B;GAC5B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAErD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,eAAe,GACpB,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAM3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAChD,GAAG,UAAU,GAAG,IAAI,CAoBpB"}
|