@shepai/cli 1.72.7 → 1.72.8-pr216.234c716
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -1
- package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +1 -0
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +1 -0
- 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/domain/factories/settings-defaults.factory.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +88 -13
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +16 -3
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +5 -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/actions/get-graph-data.d.ts +10 -0
- package/dist/src/presentation/web/app/actions/get-graph-data.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-graph-data.js +10 -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 +3 -0
- 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/components/common/base-drawer/base-drawer.d.ts +2 -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 +3 -3
- 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 +2 -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 +61 -0
- 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 +2 -2
- 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/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/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 +43 -28
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +4 -4
- 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 +49 -34
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
- 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 +39 -24
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +4 -4
- 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 +43 -28
- package/web/.next/server/app/(dashboard)/create/page.js +4 -4
- 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 +49 -34
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
- 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 +39 -24
- package/web/.next/server/app/(dashboard)/page.js +4 -4
- 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 +39 -24
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +4 -4
- 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/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/[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_3a02d8a5.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_3a02d8a5.js.map +1 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +3 -0
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js.map +1 -0
- 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/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +4 -0
- 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/_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/_6e08ce21._.js +3 -0
- package/web/.next/server/chunks/ssr/_6e08ce21._.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/_7215bb0f._.js → server/chunks/ssr/_bf753009._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_7215bb0f._.js.map → _bf753009._.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 → src_presentation_web_0a49d9ee._.js} +3 -3
- package/web/.next/server/chunks/ssr/{src_presentation_web_1a32dbcb._.js.map → src_presentation_web_0a49d9ee._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_398553b0._.js → src_presentation_web_5ea689db._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_398553b0._.js.map → src_presentation_web_5ea689db._.js.map} +1 -1
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js → server/chunks/ssr/src_presentation_web_7188a290._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_5c87e8e4._.js.map → src_presentation_web_7188a290._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_c1bc6240._.js → src_presentation_web_79b0305a._.js} +3 -3
- package/web/.next/server/chunks/ssr/{src_presentation_web_c1bc6240._.js.map → src_presentation_web_79b0305a._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js.map +1 -0
- 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 +216 -124
- 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 +43 -28
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +4 -4
- 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 +49 -34
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
- 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 +39 -24
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +4 -4
- 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 +43 -28
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +4 -4
- 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 +49 -34
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
- 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 +39 -24
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +4 -4
- 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 +39 -24
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +4 -4
- 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/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
- 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_3a02d8a5.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_a3044852.js +3 -0
- 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/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +4 -0
- 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/_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/_6e08ce21._.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/_7215bb0f._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_bf753009._.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 → src_presentation_web_0a49d9ee._.js} +3 -3
- package/web/.next/{server/chunks/ssr/src_presentation_web_5c87e8e4._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5ea689db._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{src_presentation_web_5c87e8e4._.js → src_presentation_web_7188a290._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{src_presentation_web_c1bc6240._.js → src_presentation_web_79b0305a._.js} +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_cc16bd01.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +3 -0
- 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 +216 -124
- package/web/.next/standalone/src/presentation/web/app/actions/get-graph-data.ts +12 -0
- package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +4 -1
- 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/components/common/base-drawer/base-drawer.tsx +13 -1
- package/web/.next/standalone/src/presentation/web/components/common/feature-node/derive-feature-state.ts +2 -0
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +70 -0
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +21 -23
- 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/hooks/use-tool-install-stream.ts +58 -0
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/0e39149d8af777b6.js +1 -0
- package/web/.next/static/chunks/4a3b3cfcc85e7254.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/84a181ff3270fd9f.js +1 -0
- package/web/.next/static/chunks/9215b6fb973482c5.js +1 -0
- package/web/.next/static/chunks/9954b344d56a88e8.js +1 -0
- package/web/.next/static/chunks/b3f66516ce90aa1f.js +1 -0
- package/web/.next/static/chunks/c2926490c4e20f50.js +1 -0
- package/web/.next/static/chunks/c73617921c1be737.js +1 -0
- package/web/.next/static/chunks/c92e1360ada8ca94.js +5 -0
- package/web/.next/static/chunks/{fe83a799663fd3cc.js → cde9059b1f67939f.js} +1 -1
- package/web/.next/static/chunks/ce7fcffd4f9a8b3a.js +1 -0
- package/web/.next/static/chunks/{585ae19c520e8b72.js → d32fb89263b128c4.js} +1 -1
- package/web/.next/static/chunks/ea2c85d2cc8a0d68.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/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +0 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +0 -3
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.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 +0 -4
- 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/_250a63ae._.js +0 -3
- package/web/.next/server/chunks/ssr/_250a63ae._.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/_63bfa7dd._.js +0 -3
- package/web/.next/server/chunks/ssr/_63bfa7dd._.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/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.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/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.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]__8fcb9132._.js +0 -4
- 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/_250a63ae._.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/_63bfa7dd._.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/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
- 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/07fcc6d17357e905.js +0 -1
- package/web/.next/static/chunks/304c8593d0a6525d.js +0 -1
- package/web/.next/static/chunks/3e1227e02ef8bcc6.js +0 -5
- package/web/.next/static/chunks/4558d1663c6f4d2c.js +0 -1
- package/web/.next/static/chunks/4df07e765b233622.js +0 -1
- package/web/.next/static/chunks/64d73952a0291431.js +0 -1
- package/web/.next/static/chunks/6e14d8bd5c005e6e.js +0 -1
- package/web/.next/static/chunks/8a1eb93510e54db0.js +0 -1
- package/web/.next/static/chunks/938c21b0cefb2b1d.js +0 -1
- package/web/.next/static/chunks/b143c7d78a6888e9.js +0 -1
- package/web/.next/static/chunks/b45344579a43cbb8.js +0 -1
- package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
- package/web/.next/static/chunks/dec13bccb136ef7c.css +0 -2
- package/web/.next/static/chunks/e4522f7d3134eefe.js +0 -1
- /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → I4fWzqhpiS_BehkNeiq_T}/_buildManifest.js +0 -0
- /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → I4fWzqhpiS_BehkNeiq_T}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → I4fWzqhpiS_BehkNeiq_T}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[58339,a=>{"use strict";var b=a.i(10973),c=a.i(42261),d=a.i(85536);let e=(0,c.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function f({className:a,variant:c,...f}){return(0,b.jsx)("div",{className:(0,d.cn)(e({variant:c}),a),...f})}a.s(["Badge",()=>f])},51969,a=>{"use strict";let b=(0,a.i(25700).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",()=>b])},58428,a=>{"use strict";let b=(0,a.i(25700).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);a.s(["default",()=>b])},56926,a=>{"use strict";var b=a.i(58428);a.s(["CircleX",()=>b.default])},98410,72016,a=>{"use strict";let b=(0,a.i(25700).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],98410);var c=a.i(51969);a.s(["Check",()=>c.default],72016)},53170,a=>{"use strict";let b=(0,a.i(25700).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);a.s(["GitBranch",()=>b],53170)},4019,a=>{"use strict";let b=(0,a.i(25700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],4019)},67075,a=>{"use strict";var b=a.i(2811);a.s(["CheckCircle2",()=>b.default])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_e806976d._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/components/ui/badge.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/check.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-x.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/copy.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle.ts"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm15 9-6 6', key: '1uzhvr' }],\n ['path', { d: 'm9 9 6 6', key: 'z0biqf' }],\n];\n\n/**\n * @component @name CircleX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleX = createLucideIcon('circle-x', __iconNode);\n\nexport default CircleX;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n];\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon('copy', __iconNode);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '6', x2: '6', y1: '3', y2: '15', key: '17qcm7' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n ['path', { d: 'M18 9a9 9 0 0 1-9 9', key: 'n2h4wq' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }]];\n\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Circle = createLucideIcon('circle', __iconNode);\n\nexport default Circle;\n"],"names":[],"mappings":"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","ignoreList":[3,4,5]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
1
|
+
module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"00f865a2bf6c286dfff85dee29aac1d72f7f3eda23",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{name:b,description:d,repositoryPath:e,attachments:f,approvalGates:g,push:h,openPr:i,parentId:j}=a;if(!b?.trim())return{error:"name is required"};if(!e?.trim())return{error:"repositoryPath is required"};let k=function(a,b,c){let d=`Feature: ${a}`;if(b&&(d+=`
|
|
2
2
|
|
|
3
3
|
${b}`),c&&c.length>0){let a=c.map(a=>`- ${a.path}`).join("\n");d+=`
|
|
4
4
|
|
|
5
5
|
Attached files:
|
|
6
|
-
${a}`}return d}(b,d,f),l={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase");return{feature:(await a.execute({userInput:k,repositoryPath:e,approvalGates:l,push:h??!1,openPr:i??!1,...j?{parentId:j}:{}})).feature}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
6
|
+
${a}`}return d}(b,d,f),l={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase");return{feature:(await a.execute({userInput:k,repositoryPath:e,approvalGates:l,push:h??!1,openPr:i??!1,...j?{parentId:j}:{}})).feature}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"409bd59ffe820eb52e1dccbe9b29b941515ee22650",null),a.s(["createFeature",()=>d])},63016,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(31075),o=a.i(24860),p=a.i(77605);a.s([],39344),a.i(39344),a.s(["00af4cde29546fd1ccc5f60b8ebfe9aac99076601f",()=>b.pickFolder,"00d913aa3806a4a01a5ba8abf60646d1469bce82f6",()=>n.fetchGraphData,"00f865a2bf6c286dfff85dee29aac1d72f7f3eda23",()=>o.getWorkflowDefaults,"402a4cec6cdd6f4510c1591600c0c987049402de94",()=>f.stopDeployment,"406f2e09fac18b1d6299657b44614bfac2b697b88d",()=>e.deployRepository,"407bfce068adc083dea6eb554a7b3126d2c87b85cb",()=>m.deleteRepository,"4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0",()=>h.openIde,"409a2d772622d0dbf9552f3a07f8d38bb57f9c139d",()=>k.deleteFeature,"409bd59ffe820eb52e1dccbe9b29b941515ee22650",()=>p.createFeature,"40a6de10d87bbf5d91cbf886e14b68303a6220445c",()=>j.openFolder,"40a71b6f63cf6be3d979de470744751ba48c21dcd6",()=>i.openShell,"40af893a7df7c1f322a686e989839e839be6b22f45",()=>l.addRepository,"40e4887c273e84afe7f58e8d270ec6252ff285c31a",()=>d.deployFeature,"40e58d444601d5321346f89e594b7c5c449a03de6e",()=>c.getDeploymentLogs,"40e7ad868d3f913afce659967e0f3ce2920e53b7ec",()=>g.getDeploymentStatus],63016)}];
|
|
7
7
|
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=src_presentation_web_0a49d9ee._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n name: string;\n description?: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(\n name: string,\n description: string | undefined,\n attachments: Attachment[] | undefined\n): string {\n let userInput = `Feature: ${name}`;\n\n if (description) {\n userInput += `\\n\\n${description}`;\n }\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { name, description, repositoryPath, attachments, approvalGates, push, openPr, parentId } =\n input;\n\n if (!name?.trim()) {\n return { error: 'name is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(name, description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n const result = await createFeatureUseCase.execute({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n });\n return { feature: result.feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n name: string;\n description?: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(\n name: string,\n description: string | undefined,\n attachments: Attachment[] | undefined\n): string {\n let userInput = `Feature: ${name}`;\n\n if (description) {\n userInput += `\\n\\n${description}`;\n }\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { name, description, repositoryPath, attachments, approvalGates, push, openPr, parentId } =\n input;\n\n if (!name?.trim()) {\n return { error: 'name is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(name, description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n const result = await createFeatureUseCase.execute({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n });\n return { feature: result.feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00af4cde29546fd1ccc5f60b8ebfe9aac99076601f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e58d444601d5321346f89e594b7c5c449a03de6e'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e4887c273e84afe7f58e8d270ec6252ff285c31a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '406f2e09fac18b1d6299657b44614bfac2b697b88d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '402a4cec6cdd6f4510c1591600c0c987049402de94'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40e7ad868d3f913afce659967e0f3ce2920e53b7ec'} from 'ACTIONS_MODULE5'\nexport {openIde as '4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '40a71b6f63cf6be3d979de470744751ba48c21dcd6'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a6de10d87bbf5d91cbf886e14b68303a6220445c'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '409a2d772622d0dbf9552f3a07f8d38bb57f9c139d'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40af893a7df7c1f322a686e989839e839be6b22f45'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '407bfce068adc083dea6eb554a7b3126d2c87b85cb'} from 'ACTIONS_MODULE11'\nexport {fetchGraphData as '00d913aa3806a4a01a5ba8abf60646d1469bce82f6'} from 'ACTIONS_MODULE12'\nexport {getWorkflowDefaults as '00f865a2bf6c286dfff85dee29aac1d72f7f3eda23'} from 'ACTIONS_MODULE13'\nexport {createFeature as '409bd59ffe820eb52e1dccbe9b29b941515ee22650'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAiDO,eAAe,EACpB,CAAyB,EAEzB,GAAM,MAAE,CAAI,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,CAAE,UAAQ,CAAE,CAC7F,EAEF,GAAI,CAAC,GAAM,OACT,CADiB,KACV,CAAE,MAAO,kBAAmB,EAGrC,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAjCR,AAiCoB,SAjCX,AACP,CAAY,CACZ,CAA+B,CAC/B,CAAqC,EAErC,IAAI,EAAY,CAAC,SAAS,EAAE,EAAA,CAAM,CAMlC,GAJI,IACF,GAAa,CAAC,KADC;AACD;AAAI,EAAE,EAAA,CAAA,AAAa,EAG/B,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CACvC,AAD8C,CAG9C,OAAO,CACT,EAgBqC,EAAM,EAAa,GAChD,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,WAAa,GACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAS3D,MAAO,CAAE,QAAS,CARH,MAAM,EAAqB,OAAO,CAAC,WAChD,iBACA,EACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EAAA,EACyB,OAAO,AAAC,CACnC,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CApCsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DCnDtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"
|
|
1
|
+
module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60a0562f7b82fc91233374a5931cda6b7e246e4fc4",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40b06441123ff7610c932b82c260f1961ee0c97501",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"400636bd67d23055356ec643281ca21d71d2cd4875",null),a.s(["getMergeReviewData",()=>i],6542)},96804,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(31075),o=a.i(61402),p=a.i(76052),q=a.i(13008),r=a.i(74607),s=a.i(6542);a.s([],99166),a.i(99166),a.s(["00af4cde29546fd1ccc5f60b8ebfe9aac99076601f",()=>b.pickFolder,"00d913aa3806a4a01a5ba8abf60646d1469bce82f6",()=>n.fetchGraphData,"400636bd67d23055356ec643281ca21d71d2cd4875",()=>s.getMergeReviewData,"402a4cec6cdd6f4510c1591600c0c987049402de94",()=>f.stopDeployment,"406f2e09fac18b1d6299657b44614bfac2b697b88d",()=>e.deployRepository,"407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2",()=>r.getResearchArtifact,"407bfce068adc083dea6eb554a7b3126d2c87b85cb",()=>m.deleteRepository,"4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0",()=>h.openIde,"409a2d772622d0dbf9552f3a07f8d38bb57f9c139d",()=>k.deleteFeature,"40a6de10d87bbf5d91cbf886e14b68303a6220445c",()=>j.openFolder,"40a71b6f63cf6be3d979de470744751ba48c21dcd6",()=>i.openShell,"40af893a7df7c1f322a686e989839e839be6b22f45",()=>l.addRepository,"40b06441123ff7610c932b82c260f1961ee0c97501",()=>q.getFeatureArtifact,"40e4887c273e84afe7f58e8d270ec6252ff285c31a",()=>d.deployFeature,"40e58d444601d5321346f89e594b7c5c449a03de6e",()=>c.getDeploymentLogs,"40e7ad868d3f913afce659967e0f3ce2920e53b7ec",()=>g.getDeploymentStatus,"609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66",()=>p.rejectFeature,"60a0562f7b82fc91233374a5931cda6b7e246e4fc4",()=>o.approveFeature],96804)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=src_presentation_web_5ea689db._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '004b2dc39c2c87090aa79cc490f2278a407e6a1a99'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '400a8ede2435ed7ef4a02a59c0ca10ed273a2b5dfd'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4091b389ef395ae89fda106fcc72a7298e7c2ba701'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40d24de9aedba6687d265fa4b247a37eba5cf807fe'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '40cd70db8a92b99a63e84ce96e00d17eb5853d883e'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '403d630984e0b0ab0dbc946b89ffb6064720577c28'} from 'ACTIONS_MODULE5'\nexport {openIde as '40ba682dbe274bdf04e51dfd27c2a4eeff1d95c817'} from 'ACTIONS_MODULE6'\nexport {openShell as '4005a4e90f82bf960ea223d961b7ceb4ee7273fbfe'} from 'ACTIONS_MODULE7'\nexport {openFolder as '402b6975b9af5a5c21a021ab1a56dc0712ff55d2c4'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a2c8d77b3c9077856eda0a32f3864be255a159e4'} from 'ACTIONS_MODULE9'\nexport {addRepository as '401f04652d1234ae172e4f38fc83a8ee05ff1787c0'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408d1018e3aaede30886d78e2f25f3f068adc0bb56'} from 'ACTIONS_MODULE11'\nexport {approveFeature as '60c1544db6a24763824d6e6635e96f956a27885760'} from 'ACTIONS_MODULE12'\nexport {rejectFeature as '60dbaaa4ea82809dc2c8054a310332edb41efc56d9'} from 'ACTIONS_MODULE13'\nexport {getFeatureArtifact as '402f22100a4e19d1a1cdbe4c89e87a36641a9fa8f7'} from 'ACTIONS_MODULE14'\nexport {getResearchArtifact as '40532f400ff7cc11798e6472692025ed83ffdd4577'} from 'ACTIONS_MODULE15'\nexport {getMergeReviewData as '40eeee82ffadacec80880824975184ade92b178c9b'} from 'ACTIONS_MODULE16'\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00af4cde29546fd1ccc5f60b8ebfe9aac99076601f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e58d444601d5321346f89e594b7c5c449a03de6e'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e4887c273e84afe7f58e8d270ec6252ff285c31a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '406f2e09fac18b1d6299657b44614bfac2b697b88d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '402a4cec6cdd6f4510c1591600c0c987049402de94'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40e7ad868d3f913afce659967e0f3ce2920e53b7ec'} from 'ACTIONS_MODULE5'\nexport {openIde as '4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '40a71b6f63cf6be3d979de470744751ba48c21dcd6'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a6de10d87bbf5d91cbf886e14b68303a6220445c'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '409a2d772622d0dbf9552f3a07f8d38bb57f9c139d'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40af893a7df7c1f322a686e989839e839be6b22f45'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '407bfce068adc083dea6eb554a7b3126d2c87b85cb'} from 'ACTIONS_MODULE11'\nexport {fetchGraphData as '00d913aa3806a4a01a5ba8abf60646d1469bce82f6'} from 'ACTIONS_MODULE12'\nexport {approveFeature as '60a0562f7b82fc91233374a5931cda6b7e246e4fc4'} from 'ACTIONS_MODULE13'\nexport {rejectFeature as '609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66'} from 'ACTIONS_MODULE14'\nexport {getFeatureArtifact as '40b06441123ff7610c932b82c260f1961ee0c97501'} from 'ACTIONS_MODULE15'\nexport {getResearchArtifact as '407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2'} from 'ACTIONS_MODULE16'\nexport {getMergeReviewData as '400636bd67d23055356ec643281ca21d71d2cd4875'} from 'ACTIONS_MODULE17'\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"
|
|
1
|
+
module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60a0562f7b82fc91233374a5931cda6b7e246e4fc4",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40b06441123ff7610c932b82c260f1961ee0c97501",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"400636bd67d23055356ec643281ca21d71d2cd4875",null),a.s(["getMergeReviewData",()=>i],6542)},1125,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(31075),o=a.i(61402),p=a.i(76052),q=a.i(13008),r=a.i(74607),s=a.i(6542);a.s([],54386),a.i(54386),a.s(["00af4cde29546fd1ccc5f60b8ebfe9aac99076601f",()=>b.pickFolder,"00d913aa3806a4a01a5ba8abf60646d1469bce82f6",()=>n.fetchGraphData,"400636bd67d23055356ec643281ca21d71d2cd4875",()=>s.getMergeReviewData,"402a4cec6cdd6f4510c1591600c0c987049402de94",()=>f.stopDeployment,"406f2e09fac18b1d6299657b44614bfac2b697b88d",()=>e.deployRepository,"407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2",()=>r.getResearchArtifact,"407bfce068adc083dea6eb554a7b3126d2c87b85cb",()=>m.deleteRepository,"4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0",()=>h.openIde,"409a2d772622d0dbf9552f3a07f8d38bb57f9c139d",()=>k.deleteFeature,"40a6de10d87bbf5d91cbf886e14b68303a6220445c",()=>j.openFolder,"40a71b6f63cf6be3d979de470744751ba48c21dcd6",()=>i.openShell,"40af893a7df7c1f322a686e989839e839be6b22f45",()=>l.addRepository,"40b06441123ff7610c932b82c260f1961ee0c97501",()=>q.getFeatureArtifact,"40e4887c273e84afe7f58e8d270ec6252ff285c31a",()=>d.deployFeature,"40e58d444601d5321346f89e594b7c5c449a03de6e",()=>c.getDeploymentLogs,"40e7ad868d3f913afce659967e0f3ce2920e53b7ec",()=>g.getDeploymentStatus,"609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66",()=>p.rejectFeature,"60a0562f7b82fc91233374a5931cda6b7e246e4fc4",()=>o.approveFeature],1125)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=src_presentation_web_7188a290._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '004b2dc39c2c87090aa79cc490f2278a407e6a1a99'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '400a8ede2435ed7ef4a02a59c0ca10ed273a2b5dfd'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4091b389ef395ae89fda106fcc72a7298e7c2ba701'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40d24de9aedba6687d265fa4b247a37eba5cf807fe'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '40cd70db8a92b99a63e84ce96e00d17eb5853d883e'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '403d630984e0b0ab0dbc946b89ffb6064720577c28'} from 'ACTIONS_MODULE5'\nexport {openIde as '40ba682dbe274bdf04e51dfd27c2a4eeff1d95c817'} from 'ACTIONS_MODULE6'\nexport {openShell as '4005a4e90f82bf960ea223d961b7ceb4ee7273fbfe'} from 'ACTIONS_MODULE7'\nexport {openFolder as '402b6975b9af5a5c21a021ab1a56dc0712ff55d2c4'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a2c8d77b3c9077856eda0a32f3864be255a159e4'} from 'ACTIONS_MODULE9'\nexport {addRepository as '401f04652d1234ae172e4f38fc83a8ee05ff1787c0'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408d1018e3aaede30886d78e2f25f3f068adc0bb56'} from 'ACTIONS_MODULE11'\nexport {approveFeature as '60c1544db6a24763824d6e6635e96f956a27885760'} from 'ACTIONS_MODULE12'\nexport {rejectFeature as '60dbaaa4ea82809dc2c8054a310332edb41efc56d9'} from 'ACTIONS_MODULE13'\nexport {getFeatureArtifact as '402f22100a4e19d1a1cdbe4c89e87a36641a9fa8f7'} from 'ACTIONS_MODULE14'\nexport {getResearchArtifact as '40532f400ff7cc11798e6472692025ed83ffdd4577'} from 'ACTIONS_MODULE15'\nexport {getMergeReviewData as '40eeee82ffadacec80880824975184ade92b178c9b'} from 'ACTIONS_MODULE16'\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00af4cde29546fd1ccc5f60b8ebfe9aac99076601f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e58d444601d5321346f89e594b7c5c449a03de6e'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e4887c273e84afe7f58e8d270ec6252ff285c31a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '406f2e09fac18b1d6299657b44614bfac2b697b88d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '402a4cec6cdd6f4510c1591600c0c987049402de94'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40e7ad868d3f913afce659967e0f3ce2920e53b7ec'} from 'ACTIONS_MODULE5'\nexport {openIde as '4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '40a71b6f63cf6be3d979de470744751ba48c21dcd6'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a6de10d87bbf5d91cbf886e14b68303a6220445c'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '409a2d772622d0dbf9552f3a07f8d38bb57f9c139d'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40af893a7df7c1f322a686e989839e839be6b22f45'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '407bfce068adc083dea6eb554a7b3126d2c87b85cb'} from 'ACTIONS_MODULE11'\nexport {fetchGraphData as '00d913aa3806a4a01a5ba8abf60646d1469bce82f6'} from 'ACTIONS_MODULE12'\nexport {approveFeature as '60a0562f7b82fc91233374a5931cda6b7e246e4fc4'} from 'ACTIONS_MODULE13'\nexport {rejectFeature as '609693cbbfdeb0a7ca0e3bd8fcaebe8d4edf7a7c66'} from 'ACTIONS_MODULE14'\nexport {getFeatureArtifact as '40b06441123ff7610c932b82c260f1961ee0c97501'} from 'ACTIONS_MODULE15'\nexport {getResearchArtifact as '407aeed1c58229e20bdee65e34d349dcb1fcc6d2b2'} from 'ACTIONS_MODULE16'\nexport {getMergeReviewData as '400636bd67d23055356ec643281ca21d71d2cd4875'} from 'ACTIONS_MODULE17'\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
1
|
+
module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"00f865a2bf6c286dfff85dee29aac1d72f7f3eda23",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{name:b,description:d,repositoryPath:e,attachments:f,approvalGates:g,push:h,openPr:i,parentId:j}=a;if(!b?.trim())return{error:"name is required"};if(!e?.trim())return{error:"repositoryPath is required"};let k=function(a,b,c){let d=`Feature: ${a}`;if(b&&(d+=`
|
|
2
2
|
|
|
3
3
|
${b}`),c&&c.length>0){let a=c.map(a=>`- ${a.path}`).join("\n");d+=`
|
|
4
4
|
|
|
5
5
|
Attached files:
|
|
6
|
-
${a}`}return d}(b,d,f),l={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase");return{feature:(await a.execute({userInput:k,repositoryPath:e,approvalGates:l,push:h??!1,openPr:i??!1,...j?{parentId:j}:{}})).feature}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
6
|
+
${a}`}return d}(b,d,f),l={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase");return{feature:(await a.execute({userInput:k,repositoryPath:e,approvalGates:l,push:h??!1,openPr:i??!1,...j?{parentId:j}:{}})).feature}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"409bd59ffe820eb52e1dccbe9b29b941515ee22650",null),a.s(["createFeature",()=>d])},98460,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(31075),o=a.i(24860),p=a.i(77605);a.s([],23777),a.i(23777),a.s(["00af4cde29546fd1ccc5f60b8ebfe9aac99076601f",()=>b.pickFolder,"00d913aa3806a4a01a5ba8abf60646d1469bce82f6",()=>n.fetchGraphData,"00f865a2bf6c286dfff85dee29aac1d72f7f3eda23",()=>o.getWorkflowDefaults,"402a4cec6cdd6f4510c1591600c0c987049402de94",()=>f.stopDeployment,"406f2e09fac18b1d6299657b44614bfac2b697b88d",()=>e.deployRepository,"407bfce068adc083dea6eb554a7b3126d2c87b85cb",()=>m.deleteRepository,"4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0",()=>h.openIde,"409a2d772622d0dbf9552f3a07f8d38bb57f9c139d",()=>k.deleteFeature,"409bd59ffe820eb52e1dccbe9b29b941515ee22650",()=>p.createFeature,"40a6de10d87bbf5d91cbf886e14b68303a6220445c",()=>j.openFolder,"40a71b6f63cf6be3d979de470744751ba48c21dcd6",()=>i.openShell,"40af893a7df7c1f322a686e989839e839be6b22f45",()=>l.addRepository,"40e4887c273e84afe7f58e8d270ec6252ff285c31a",()=>d.deployFeature,"40e58d444601d5321346f89e594b7c5c449a03de6e",()=>c.getDeploymentLogs,"40e7ad868d3f913afce659967e0f3ce2920e53b7ec",()=>g.getDeploymentStatus],98460)}];
|
|
7
7
|
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=src_presentation_web_79b0305a._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n name: string;\n description?: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(\n name: string,\n description: string | undefined,\n attachments: Attachment[] | undefined\n): string {\n let userInput = `Feature: ${name}`;\n\n if (description) {\n userInput += `\\n\\n${description}`;\n }\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { name, description, repositoryPath, attachments, approvalGates, push, openPr, parentId } =\n input;\n\n if (!name?.trim()) {\n return { error: 'name is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(name, description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n const result = await createFeatureUseCase.execute({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n });\n return { feature: result.feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n name: string;\n description?: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(\n name: string,\n description: string | undefined,\n attachments: Attachment[] | undefined\n): string {\n let userInput = `Feature: ${name}`;\n\n if (description) {\n userInput += `\\n\\n${description}`;\n }\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { name, description, repositoryPath, attachments, approvalGates, push, openPr, parentId } =\n input;\n\n if (!name?.trim()) {\n return { error: 'name is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(name, description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n const result = await createFeatureUseCase.execute({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n });\n return { feature: result.feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00af4cde29546fd1ccc5f60b8ebfe9aac99076601f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e58d444601d5321346f89e594b7c5c449a03de6e'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e4887c273e84afe7f58e8d270ec6252ff285c31a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '406f2e09fac18b1d6299657b44614bfac2b697b88d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '402a4cec6cdd6f4510c1591600c0c987049402de94'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40e7ad868d3f913afce659967e0f3ce2920e53b7ec'} from 'ACTIONS_MODULE5'\nexport {openIde as '4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '40a71b6f63cf6be3d979de470744751ba48c21dcd6'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a6de10d87bbf5d91cbf886e14b68303a6220445c'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '409a2d772622d0dbf9552f3a07f8d38bb57f9c139d'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40af893a7df7c1f322a686e989839e839be6b22f45'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '407bfce068adc083dea6eb554a7b3126d2c87b85cb'} from 'ACTIONS_MODULE11'\nexport {fetchGraphData as '00d913aa3806a4a01a5ba8abf60646d1469bce82f6'} from 'ACTIONS_MODULE12'\nexport {getWorkflowDefaults as '00f865a2bf6c286dfff85dee29aac1d72f7f3eda23'} from 'ACTIONS_MODULE13'\nexport {createFeature as '409bd59ffe820eb52e1dccbe9b29b941515ee22650'} from 'ACTIONS_MODULE14'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAiDO,eAAe,EACpB,CAAyB,EAEzB,GAAM,MAAE,CAAI,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,CAAE,UAAQ,CAAE,CAC7F,EAEF,GAAI,CAAC,GAAM,OACT,CADiB,KACV,CAAE,MAAO,kBAAmB,EAGrC,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAjCR,AAiCoB,SAjCX,AACP,CAAY,CACZ,CAA+B,CAC/B,CAAqC,EAErC,IAAI,EAAY,CAAC,SAAS,EAAE,EAAA,CAAM,CAMlC,GAJI,IACF,GAAa,CAAC,KADC;AACD;AAAI,EAAE,EAAA,CAAA,AAAa,EAG/B,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CACvC,AAD8C,CAG9C,OAAO,CACT,EAgBqC,EAAM,EAAa,GAChD,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,WAAa,GACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAS3D,MAAO,CAAE,QAAS,CARH,MAAM,EAAqB,OAAO,CAAC,WAChD,iBACA,EACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EAAA,EACyB,OAAO,AAAC,CACnC,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CApCsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DCnDtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[14110,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(31075);a.s([],63824),a.i(63824),a.s(["00af4cde29546fd1ccc5f60b8ebfe9aac99076601f",()=>b.pickFolder,"00d913aa3806a4a01a5ba8abf60646d1469bce82f6",()=>n.fetchGraphData,"402a4cec6cdd6f4510c1591600c0c987049402de94",()=>f.stopDeployment,"406f2e09fac18b1d6299657b44614bfac2b697b88d",()=>e.deployRepository,"407bfce068adc083dea6eb554a7b3126d2c87b85cb",()=>m.deleteRepository,"4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0",()=>h.openIde,"409a2d772622d0dbf9552f3a07f8d38bb57f9c139d",()=>k.deleteFeature,"40a6de10d87bbf5d91cbf886e14b68303a6220445c",()=>j.openFolder,"40a71b6f63cf6be3d979de470744751ba48c21dcd6",()=>i.openShell,"40af893a7df7c1f322a686e989839e839be6b22f45",()=>l.addRepository,"40e4887c273e84afe7f58e8d270ec6252ff285c31a",()=>d.deployFeature,"40e58d444601d5321346f89e594b7c5c449a03de6e",()=>c.getDeploymentLogs,"40e7ad868d3f913afce659967e0f3ce2920e53b7ec",()=>g.getDeploymentStatus],14110)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=src_presentation_web__next-internal_server_app_%28dashboard%29_page_actions_cc16bd01.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {pickFolder as '00af4cde29546fd1ccc5f60b8ebfe9aac99076601f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40e58d444601d5321346f89e594b7c5c449a03de6e'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e4887c273e84afe7f58e8d270ec6252ff285c31a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '406f2e09fac18b1d6299657b44614bfac2b697b88d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '402a4cec6cdd6f4510c1591600c0c987049402de94'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40e7ad868d3f913afce659967e0f3ce2920e53b7ec'} from 'ACTIONS_MODULE5'\nexport {openIde as '4084dd076987ddf29cb7d91cb8150fc9d0e0e738a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '40a71b6f63cf6be3d979de470744751ba48c21dcd6'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a6de10d87bbf5d91cbf886e14b68303a6220445c'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '409a2d772622d0dbf9552f3a07f8d38bb57f9c139d'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40af893a7df7c1f322a686e989839e839be6b22f45'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '407bfce068adc083dea6eb554a7b3126d2c87b85cb'} from 'ACTIONS_MODULE11'\nexport {fetchGraphData as '00d913aa3806a4a01a5ba8abf60646d1469bce82f6'} from 'ACTIONS_MODULE12'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[66693,a=>{"use strict";var b=a.i(96380),c=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),d=c((a,b)=>{var c=Object.defineProperty,d=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),e=(a,b,d)=>{let e;return(e="symbol"!=typeof b?b+"":b)in a?c(a,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):a[e]=d},f=d((a,b)=>{function c(a,b){a[b]?a[b]++:a[b]=1}function d(a,b){--a[b]||delete a[b]}function f(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}return e+"\x01"+f+"\x01"+(void 0===d?"\0":d)}function g(a,b){return f(a,b.v,b.w,b.name)}b.exports=class{constructor(a){e(this,"_isDirected",!0),e(this,"_isMultigraph",!1),e(this,"_isCompound",!1),e(this,"_label"),e(this,"_defaultNodeLabelFn",()=>{}),e(this,"_defaultEdgeLabelFn",()=>{}),e(this,"_nodes",{}),e(this,"_in",{}),e(this,"_preds",{}),e(this,"_out",{}),e(this,"_sucs",{}),e(this,"_edgeObjs",{}),e(this,"_edgeLabels",{}),e(this,"_nodeCount",0),e(this,"_edgeCount",0),e(this,"_parent"),e(this,"_children"),a&&(this._isDirected=!Object.hasOwn(a,"directed")||a.directed,this._isMultigraph=!!Object.hasOwn(a,"multigraph")&&a.multigraph,this._isCompound=!!Object.hasOwn(a,"compound")&&a.compound),this._isCompound&&(this._parent={},this._children={},this._children["\0"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(a){return this._label=a,this}graph(){return this._label}setDefaultNodeLabel(a){return this._defaultNodeLabelFn=a,"function"!=typeof a&&(this._defaultNodeLabelFn=()=>a),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._in[b]).length)}sinks(){var a=this;return this.nodes().filter(b=>0===Object.keys(a._out[b]).length)}setNodes(a,b){var c=arguments,d=this;return a.forEach(function(a){c.length>1?d.setNode(a,b):d.setNode(a)}),this}setNode(a,b){return Object.hasOwn(this._nodes,a)?arguments.length>1&&(this._nodes[a]=b):(this._nodes[a]=arguments.length>1?b:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]="\0",this._children[a]={},this._children["\0"][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount),this}node(a){return this._nodes[a]}hasNode(a){return Object.hasOwn(this._nodes,a)}removeNode(a){var b=this;if(Object.hasOwn(this._nodes,a)){var c=a=>b.removeEdge(b._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],this.children(a).forEach(function(a){b.setParent(a)}),delete this._children[a]),Object.keys(this._in[a]).forEach(c),delete this._in[a],delete this._preds[a],Object.keys(this._out[a]).forEach(c),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,b){if(!this._isCompound)throw Error("Cannot set parent in a non-compound graph");if(void 0===b)b="\0";else{b+="";for(var c=b;void 0!==c;c=this.parent(c))if(c===a)throw Error("Setting "+b+" as parent of "+a+" would create a cycle");this.setNode(b)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=b,this._children[b][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var b=this._parent[a];if("\0"!==b)return b}}children(a="\0"){if(this._isCompound){var b=this._children[a];if(b)return Object.keys(b)}else{if("\0"===a)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var b=this._preds[a];if(b)return Object.keys(b)}successors(a){var b=this._sucs[a];if(b)return Object.keys(b)}neighbors(a){var b=this.predecessors(a);if(b){let d=new Set(b);for(var c of this.successors(a))d.add(c);return Array.from(d.values())}}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){var b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph());var c=this;Object.entries(this._nodes).forEach(function([c,d]){a(c)&&b.setNode(c,d)}),Object.values(this._edgeObjs).forEach(function(a){b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,c.edge(a))});var d={};return this._isCompound&&b.nodes().forEach(a=>b.setParent(a,function a(e){var f=c.parent(e);return void 0===f||b.hasNode(f)?(d[e]=f,f):f in d?d[f]:a(f)}(a))),b}setDefaultEdgeLabel(a){return this._defaultEdgeLabelFn=a,"function"!=typeof a&&(this._defaultEdgeLabelFn=()=>a),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(a,b){var c=this,d=arguments;return a.reduce(function(a,e){return d.length>1?c.setEdge(a,e,b):c.setEdge(a,e),e}),this}setEdge(){var a,b,d,e,g=!1,h=arguments[0];"object"==typeof h&&null!==h&&"v"in h?(a=h.v,b=h.w,d=h.name,2==arguments.length&&(e=arguments[1],g=!0)):(a=h,b=arguments[1],d=arguments[3],arguments.length>2&&(e=arguments[2],g=!0)),a=""+a,b=""+b,void 0!==d&&(d=""+d);var i=f(this._isDirected,a,b,d);if(Object.hasOwn(this._edgeLabels,i))return g&&(this._edgeLabels[i]=e),this;if(void 0!==d&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(b),this._edgeLabels[i]=g?e:this._defaultEdgeLabelFn(a,b,d);var j=function(a,b,c,d){var e=""+b,f=""+c;if(!a&&e>f){var g=e;e=f,f=g}var h={v:e,w:f};return d&&(h.name=d),h}(this._isDirected,a,b,d);return a=j.v,b=j.w,Object.freeze(j),this._edgeObjs[i]=j,c(this._preds[b],a),c(this._sucs[a],b),this._in[b][i]=j,this._out[a][i]=j,this._edgeCount++,this}edge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return this._edgeLabels[d]}edgeAsObj(){let a=this.edge(...arguments);return"object"!=typeof a?{label:a}:a}hasEdge(a,b,c){var d=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c);return Object.hasOwn(this._edgeLabels,d)}removeEdge(a,b,c){var e=1==arguments.length?g(this._isDirected,arguments[0]):f(this._isDirected,a,b,c),h=this._edgeObjs[e];return h&&(a=h.v,b=h.w,delete this._edgeLabels[e],delete this._edgeObjs[e],d(this._preds[b],a),d(this._sucs[a],b),delete this._in[b][e],delete this._out[a][e],this._edgeCount--),this}inEdges(a,b){return this.isDirected()?this.filterEdges(this._in[a],a,b):this.nodeEdges(a,b)}outEdges(a,b){return this.isDirected()?this.filterEdges(this._out[a],a,b):this.nodeEdges(a,b)}nodeEdges(a,b){if(a in this._nodes)return this.filterEdges({...this._in[a],...this._out[a]},a,b)}filterEdges(a,b,c){if(a){var d=Object.values(a);return c?d.filter(function(a){return a.v===b&&a.w===c||a.v===c&&a.w===b}):d}}}}),g=d((a,b)=>{b.exports="3.0.2"}),h=d((a,b)=>{b.exports={Graph:f(),version:g()}}),i=d((a,b)=>{var c=f();b.exports={write:function(a){var b,c,d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a).nodes().map(function(a){var c=b.node(a),d=b.parent(a),e={v:a};return void 0!==c&&(e.value=c),void 0!==d&&(e.parent=d),e}),edges:(c=a).edges().map(function(a){var b=c.edge(a),d={v:a.v,w:a.w};return void 0!==a.name&&(d.name=a.name),void 0!==b&&(d.value=b),d})};return void 0!==a.graph()&&(d.value=structuredClone(a.graph())),d},read:function(a){var b=new c(a.options).setGraph(a.value);return a.nodes.forEach(function(a){b.setNode(a.v,a.value),a.parent&&b.setParent(a.v,a.parent)}),a.edges.forEach(function(a){b.setEdge({v:a.v,w:a.w,name:a.name},a.value)}),b}}}),j=d((a,b)=>{b.exports=function(a,b,d,e){return function(a,b,c,d){var e={},f=!0,g=0,h=a.nodes(),i=function(a){var b=c(a);e[a.v].distance+b<e[a.w].distance&&(e[a.w]={distance:e[a.v].distance+b,predecessor:a.v},f=!0)},j=function(){h.forEach(function(a){d(a).forEach(function(b){var c=b.v===a?b.v:b.w,d=c===b.v?b.w:b.v;i({v:c,w:d})})})};h.forEach(function(a){e[a]={distance:a===b?0:1/0}});for(var k=h.length,l=1;l<k&&(f=!1,g++,j(),f);l++);if(g===k-1&&(f=!1,j(),f))throw Error("The graph contains a negative weight cycle");return e}(a,String(b),d||c,e||function(b){return a.outEdges(b)})};var c=()=>1}),k=d((a,b)=>{b.exports=function(a){var b,c={},d=[];return a.nodes().forEach(function(e){b=[],function d(e){Object.hasOwn(c,e)||(c[e]=!0,b.push(e),a.successors(e).forEach(d),a.predecessors(e).forEach(d))}(e),b.length&&d.push(b)}),d}}),l=d((a,b)=>{b.exports=class{constructor(){e(this,"_arr",[]),e(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(a){return a.key})}has(a){return Object.hasOwn(this._keyIndices,a)}priority(a){var b=this._keyIndices[a];if(void 0!==b)return this._arr[b].priority}min(){if(0===this.size())throw Error("Queue underflow");return this._arr[0].key}add(a,b){var c=this._keyIndices;if(!Object.hasOwn(c,a=String(a))){var d=this._arr,e=d.length;return c[a]=e,d.push({key:a,priority:b}),this._decrease(e),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key}decrease(a,b){var c=this._keyIndices[a];if(b>this._arr[c].priority)throw Error("New priority is greater than current priority. Key: "+a+" Old: "+this._arr[c].priority+" New: "+b);this._arr[c].priority=b,this._decrease(c)}_heapify(a){var b=this._arr,c=2*a,d=c+1,e=a;c<b.length&&(e=b[c].priority<b[e].priority?c:e,d<b.length&&(e=b[d].priority<b[e].priority?d:e),e!==a&&(this._swap(a,e),this._heapify(e)))}_decrease(a){for(var b,c=this._arr,d=c[a].priority;0!==a&&!(c[b=a>>1].priority<d);)this._swap(a,b),a=b}_swap(a,b){var c=this._arr,d=this._keyIndices,e=c[a],f=c[b];c[a]=f,c[b]=e,d[f.key]=a,d[e.key]=b}}}),m=d((a,b)=>{var c=l();b.exports=function(a,b,e,f){return function(a,b,d,e){var f,g,h={},i=new c,j=function(a){var b=a.v!==f?a.v:a.w,c=h[b],e=d(a),j=g.distance+e;if(e<0)throw Error("dijkstra does not allow negative edge weights. Bad edge: "+a+" Weight: "+e);j<c.distance&&(c.distance=j,c.predecessor=f,i.decrease(b,j))};for(a.nodes().forEach(function(a){var c=a===b?0:1/0;h[a]={distance:c},i.add(a,c)});i.size()>0&&(g=h[f=i.removeMin()]).distance!==1/0;)e(f).forEach(j);return h}(a,String(b),e||d,f||function(b){return a.outEdges(b)})};var d=()=>1}),n=d((a,b)=>{var c=m();b.exports=function(a,b,d){return a.nodes().reduce(function(e,f){return e[f]=c(a,f,b,d),e},{})}}),o=d((a,b)=>{b.exports=function(a,b,c){if(void 0!==a[b].predecessor)throw Error("Invalid source vertex");if(void 0===a[c].predecessor&&c!==b)throw Error("Invalid destination vertex");return{weight:a[c].distance,path:function(a,b,c){for(var d=[],e=c;e!==b;)d.push(e),e=a[e].predecessor;return d.push(b),d.reverse()}(a,b,c)}}}),p=d((a,b)=>{b.exports=function(a){var b=0,c=[],d={},e=[];return a.nodes().forEach(function(f){Object.hasOwn(d,f)||function f(g){var h=d[g]={onStack:!0,lowlink:b,index:b++};if(c.push(g),a.successors(g).forEach(function(a){Object.hasOwn(d,a)?d[a].onStack&&(h.lowlink=Math.min(h.lowlink,d[a].index)):(f(a),h.lowlink=Math.min(h.lowlink,d[a].lowlink))}),h.lowlink===h.index){var i,j=[];do d[i=c.pop()].onStack=!1,j.push(i);while(g!==i)e.push(j)}}(f)}),e}}),q=d((a,b)=>{var c=p();b.exports=function(a){return c(a).filter(function(b){return b.length>1||1===b.length&&a.hasEdge(b[0],b[0])})}}),r=d((a,b)=>{b.exports=function(a,b,d){var e,f,g,h,i;return e=a,f=b||c,g=d||function(b){return a.outEdges(b)},h={},(i=e.nodes()).forEach(function(a){h[a]={},h[a][a]={distance:0},i.forEach(function(b){a!==b&&(h[a][b]={distance:1/0})}),g(a).forEach(function(b){var c=b.v===a?b.w:b.v,d=f(b);h[a][c]={distance:d,predecessor:a}})}),i.forEach(function(a){var b=h[a];i.forEach(function(c){var d=h[c];i.forEach(function(c){var e=d[a],f=b[c],g=d[c],h=e.distance+f.distance;h<g.distance&&(g.distance=h,g.predecessor=f.predecessor)})})}),h};var c=()=>1}),s=d((a,b)=>{function c(a){var b={},c={},e=[];if(a.sinks().forEach(function f(g){if(Object.hasOwn(c,g))throw new d;Object.hasOwn(b,g)||(c[g]=!0,b[g]=!0,a.predecessors(g).forEach(f),delete c[g],e.push(g))}),Object.keys(b).length!==a.nodeCount())throw new d;return e}var d=class extends Error{constructor(){super(...arguments)}};b.exports=c,c.CycleException=d}),t=d((a,b)=>{var c=s();b.exports=function(a){try{c(a)}catch(a){if(a instanceof c.CycleException)return!1;throw a}return!0}}),u=d((a,b)=>{b.exports=function(a,b,c,d,e){Array.isArray(b)||(b=[b]);var f=(a.isDirected()?a.successors:a.neighbors).bind(a),g={};return b.forEach(function(b){if(!a.hasNode(b))throw Error("Graph does not have node: "+b);e=function a(b,c,d,e,f,g,h){return Object.hasOwn(e,c)||(e[c]=!0,d||(h=g(h,c)),f(c).forEach(function(c){h=a(b,c,d,e,f,g,h)}),d&&(h=g(h,c))),h}(a,b,"post"===c,g,f,d,e)}),e}}),v=d((a,b)=>{var c=u();b.exports=function(a,b,d){return c(a,b,d,function(a,b){return a.push(b),a},[])}}),w=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"post")}}),x=d((a,b)=>{var c=v();b.exports=function(a,b){return c(a,b,"pre")}}),y=d((a,b)=>{var c=f(),d=l();b.exports=function(a,b){var e,f=new c,g={},h=new d;function i(a){var c=a.v===e?a.w:a.v,d=h.priority(c);if(void 0!==d){var f=b(a);f<d&&(g[c]=e,h.decrease(c,f))}}if(0===a.nodeCount())return f;a.nodes().forEach(function(a){h.add(a,1/0),f.setNode(a)}),h.decrease(a.nodes()[0],0);for(var j=!1;h.size()>0;){if(Object.hasOwn(g,e=h.removeMin()))f.setEdge(e,g[e]);else{if(j)throw Error("Input graph is not connected: "+a);j=!0}a.nodeEdges(e).forEach(i)}return f}}),z=d((a,b)=>{var c=m(),d=j();b.exports=function(a,b,e,f){return function(a,b,e,f){if(void 0===e)return c(a,b,e,f);for(var g=!1,h=a.nodes(),i=0;i<h.length;i++){for(var j=f(h[i]),k=0;k<j.length;k++){var l=j[k],m=l.v===h[i]?l.v:l.w,n=m===l.v?l.w:l.v;0>e({v:m,w:n})&&(g=!0)}if(g)return d(a,b,e,f)}return c(a,b,e,f)}(a,b,e,f||function(b){return a.outEdges(b)})}}),A=d((a,b)=>{b.exports={bellmanFord:j(),components:k(),dijkstra:m(),dijkstraAll:n(),extractPath:o(),findCycles:q(),floydWarshall:r(),isAcyclic:t(),postorder:w(),preorder:x(),prim:y(),shortestPaths:z(),reduce:u(),tarjan:p(),topsort:s()}}),B=h();b.exports={Graph:B.Graph,json:i(),alg:A(),version:B.version}}),e=c((a,b)=>{function c(a){a._prev._next=a._next,a._next._prev=a._prev,delete a._next,delete a._prev}function d(a,b){if("_next"!==a&&"_prev"!==a)return b}b.exports=class{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,b=a._prev;if(b!==a)return c(b),b}enqueue(a){let b=this._sentinel;a._prev&&a._next&&c(a),a._next=b._next,b._next._prev=a,b._next=a,a._prev=b}toString(){let a=[],b=this._sentinel,c=b._prev;for(;c!==b;)a.push(JSON.stringify(c,d)),c=c._prev;return"["+a.join(", ")+"]"}}}),f=c((a,b)=>{var c=d().Graph,f=e();b.exports=function(a,b){var d,e;let j,k,l,m,n;if(1>=a.nodeCount())return[];let o=(d=a,e=b||g,j=new c,k=0,l=0,d.nodes().forEach(a=>{j.setNode(a,{v:a,in:0,out:0})}),d.edges().forEach(a=>{let b=j.edge(a.v,a.w)||0,c=e(a);j.setEdge(a.v,a.w,b+c),l=Math.max(l,j.node(a.v).out+=c),k=Math.max(k,j.node(a.w).in+=c)}),m=(function(a){let b=[];for(let c=0;c<a;c++)b.push(c);return b})(l+k+3).map(()=>new f),n=k+1,j.nodes().forEach(a=>{i(m,n,j.node(a))}),{graph:j,buckets:m,zeroIdx:n});return(function(a,b,c){let d=[],e=b[b.length-1],f=b[0],g;for(;a.nodeCount();){for(;g=f.dequeue();)h(a,b,c,g);for(;g=e.dequeue();)h(a,b,c,g);if(a.nodeCount()){for(let e=b.length-2;e>0;--e)if(g=b[e].dequeue()){d=d.concat(h(a,b,c,g,!0));break}}}return d})(o.graph,o.buckets,o.zeroIdx).flatMap(b=>a.outEdges(b.v,b.w))};var g=()=>1;function h(a,b,c,d,e){let f=e?[]:void 0;return a.inEdges(d.v).forEach(d=>{let g=a.edge(d),h=a.node(d.v);e&&f.push({v:d.v,w:d.w}),h.out-=g,i(b,c,h)}),a.outEdges(d.v).forEach(d=>{let e=a.edge(d),f=d.w,g=a.node(f);g.in-=e,i(b,c,g)}),a.removeNode(d.v),f}function i(a,b,c){c.out?c.in?a[c.out-c.in+b].enqueue(c):a[a.length-1].enqueue(c):a[0].enqueue(c)}}),g=c((a,b)=>{var c=d().Graph;function e(a,b,c,d){for(var e=d;a.hasNode(e);)e=i(d);return c.dummy=b,a.setNode(e,c),e}b.exports={addBorderNode:function(a,b,c,d){let f={width:0,height:0};return arguments.length>=4&&(f.rank=c,f.order=d),e(a,"border",f,b)},addDummyNode:e,applyWithChunking:f,asNonCompoundGraph:function(a){let b=new c({multigraph:a.isMultigraph()}).setGraph(a.graph());return a.nodes().forEach(c=>{a.children(c).length||b.setNode(c,a.node(c))}),a.edges().forEach(c=>{b.setEdge(c,a.edge(c))}),b},buildLayerMatrix:function(a){let b=j(g(a)+1).map(()=>[]);return a.nodes().forEach(c=>{let d=a.node(c),e=d.rank;void 0!==e&&(b[e][d.order]=c)}),b},intersectRect:function(a,b){let c,d,e=a.x,f=a.y,g=b.x-e,h=b.y-f,i=a.width/2,j=a.height/2;if(!g&&!h)throw Error("Not possible to find intersection inside of the rectangle");return Math.abs(h)*i>Math.abs(g)*j?(h<0&&(j=-j),c=j*g/h,d=j):(g<0&&(i=-i),c=i,d=i*h/g),{x:e+c,y:f+d}},mapValues:function(a,b){let c=b;return"string"==typeof b&&(c=a=>a[b]),Object.entries(a).reduce((a,[b,d])=>(a[b]=c(d,b),a),{})},maxRank:g,normalizeRanks:function(a){let b=f(Math.min,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?Number.MAX_VALUE:c}));a.nodes().forEach(c=>{let d=a.node(c);Object.hasOwn(d,"rank")&&(d.rank-=b)})},notime:function(a,b){return b()},partition:function(a,b){let c={lhs:[],rhs:[]};return a.forEach(a=>{b(a)?c.lhs.push(a):c.rhs.push(a)}),c},pick:function(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c},predecessorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.inEdges(b).forEach(b=>{c[b.v]=(c[b.v]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},range:j,removeEmptyRanks:function(a){let b=f(Math.min,a.nodes().map(b=>a.node(b).rank).filter(a=>void 0!==a)),c=[];a.nodes().forEach(d=>{let e=a.node(d).rank-b;c[e]||(c[e]=[]),c[e].push(d)});let d=0,e=a.graph().nodeRankFactor;Array.from(c).forEach((b,c)=>{void 0===b&&c%e!=0?--d:void 0!==b&&d&&b.forEach(b=>a.node(b).rank+=d)})},simplify:function(a){let b=new c().setGraph(a.graph());return a.nodes().forEach(c=>b.setNode(c,a.node(c))),a.edges().forEach(c=>{let d=b.edge(c.v,c.w)||{weight:0,minlen:1},e=a.edge(c);b.setEdge(c.v,c.w,{weight:d.weight+e.weight,minlen:Math.max(d.minlen,e.minlen)})}),b},successorWeights:function(a){let b=a.nodes().map(b=>{let c={};return a.outEdges(b).forEach(b=>{c[b.w]=(c[b.w]||0)+a.edge(b).weight}),c});return k(a.nodes(),b)},time:function(a,b){let c=Date.now();try{return b()}finally{console.log(a+" time: "+(Date.now()-c)+"ms")}},uniqueId:i,zipObject:k};function f(a,b){if(!(b.length>65535))return a.apply(null,b);{let c=function(a,b=65535){let c=[];for(let d=0;d<a.length;d+=b){let e=a.slice(d,d+b);c.push(e)}return c}(b);return a.apply(null,c.map(b=>a.apply(null,b)))}}function g(a){return f(Math.max,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?5e-324:c}))}var h=0;function i(a){return a+""+ ++h}function j(a,b,c=1){null==b&&(b=a,a=0);let d=a=>a<b;c<0&&(d=a=>b<a);let e=[];for(let b=a;d(b);b+=c)e.push(b);return e}function k(a,b){return a.reduce((a,c,d)=>(a[c]=b[d],a),{})}}),h=c((a,b)=>{var c=f(),d=g().uniqueId;b.exports={run:function(a){var b,e;let f,g,h;("greedy"===a.graph().acyclicer?c(a,(b=a,a=>b.edge(a).weight)):(f=[],g={},h={},(e=a).nodes().forEach(function a(b){Object.hasOwn(h,b)||(h[b]=!0,g[b]=!0,e.outEdges(b).forEach(b=>{Object.hasOwn(g,b.w)?f.push(b):a(b.w)}),delete g[b])}),f)).forEach(b=>{let c=a.edge(b);a.removeEdge(b),c.forwardName=b.name,c.reversed=!0,a.setEdge(b.w,b.v,c,d("rev"))})},undo:function(a){a.edges().forEach(b=>{let c=a.edge(b);if(c.reversed){a.removeEdge(b);let d=c.forwardName;delete c.reversed,delete c.forwardName,a.setEdge(b.w,b.v,c,d)}})}}}),i=c((a,b)=>{var c=g();b.exports={run:function(a){a.graph().dummyChains=[],a.edges().forEach(b=>(function(a,b){let d,e,f,g=b.v,h=a.node(g).rank,i=b.w,j=a.node(i).rank,k=b.name,l=a.edge(b),m=l.labelRank;if(j!==h+1){for(a.removeEdge(b),f=0,++h;h<j;++f,++h)l.points=[],e={width:0,height:0,edgeLabel:l,edgeObj:b,rank:h},d=c.addDummyNode(a,"edge",e,"_d"),h===m&&(e.width=l.width,e.height=l.height,e.dummy="edge-label",e.labelpos=l.labelpos),a.setEdge(g,d,{weight:l.weight},k),0===f&&a.graph().dummyChains.push(d),g=d;a.setEdge(g,i,{weight:l.weight},k)}})(a,b))},undo:function(a){a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeLabel,e;for(a.setEdge(c.edgeObj,d);c.dummy;)e=a.successors(b)[0],a.removeNode(b),d.points.push({x:c.x,y:c.y}),"edge-label"===c.dummy&&(d.x=c.x,d.y=c.y,d.width=c.width,d.height=c.height),b=e,c=a.node(b)})}}}),j=c((a,b)=>{var{applyWithChunking:c}=g();b.exports={longestPath:function(a){var b={};a.sources().forEach(function d(e){var f=a.node(e);if(Object.hasOwn(b,e))return f.rank;b[e]=!0;var g=c(Math.min,a.outEdges(e).map(b=>null==b?1/0:d(b.w)-a.edge(b).minlen));return g===1/0&&(g=0),f.rank=g})},slack:function(a,b){return a.node(b.w).rank-a.node(b.v).rank-a.edge(b).minlen}}}),k=c((a,b)=>{var c=d().Graph,e=j().slack;b.exports=function(a){var b,d,f,g,h=new c({directed:!1}),i=a.nodes()[0],j=a.nodeCount();for(h.setNode(i,{});b=h,d=a,b.nodes().forEach(function a(c){d.nodeEdges(c).forEach(f=>{var g=f.v,h=c===g?f.w:g;b.hasNode(h)||e(d,f)||(b.setNode(h,{}),b.setEdge(c,h,{}),a(h))})}),b.nodeCount()<j;)f=function(a,b){return b.edges().reduce((c,d)=>{let f=1/0;return a.hasNode(d.v)!==a.hasNode(d.w)&&(f=e(b,d)),f<c[0]?[f,d]:c},[1/0,null])[1]}(h,a),g=h.hasNode(f.v)?e(a,f):-e(a,f),function(a,b,c){a.nodes().forEach(a=>b.node(a).rank+=c)}(h,a,g);return h}}),l=c((a,b)=>{var c=k(),e=j().slack,f=j().longestPath,h=d().alg.preorder,i=d().alg.postorder,l=g().simplify;function m(a){f(a=l(a));var b,d,e=c(a);for(p(e),n(e,a);b=q(e);)d=r(e,a,b),s(e,a,b,d)}function n(a,b){var c=i(a,a.nodes());(c=c.slice(0,c.length-1)).forEach(c=>{var d,e,f,g;return d=a,e=b,f=c,g=d.node(f).parent,void(d.edge(f,g).cutvalue=o(d,e,f))})}function o(a,b,c){var d=a.node(c).parent,e=!0,f=b.edge(c,d),g=0;return f||(e=!1,f=b.edge(d,c)),g=f.weight,b.nodeEdges(c).forEach(f=>{var h=f.v===c,i=h?f.w:f.v;if(i!==d){var j,k,l,m=h===e,n=b.edge(f).weight;if(g+=m?n:-n,j=a,k=c,l=i,j.hasEdge(k,l)){var o=a.edge(c,i).cutvalue;g+=m?-o:o}}}),g}function p(a,b){arguments.length<2&&(b=a.nodes()[0]),function a(b,c,d,e,f){var g=d,h=b.node(e);return c[e]=!0,b.neighbors(e).forEach(f=>{Object.hasOwn(c,f)||(d=a(b,c,d,f,e))}),h.low=g,h.lim=d++,f?h.parent=f:delete h.parent,d}(a,{},1,b)}function q(a){return a.edges().find(b=>a.edge(b).cutvalue<0)}function r(a,b,c){var d=c.v,f=c.w;b.hasEdge(d,f)||(d=c.w,f=c.v);var g=a.node(d),h=a.node(f),i=g,j=!1;return g.lim>h.lim&&(i=h,j=!0),b.edges().filter(b=>j===t(a,a.node(b.v),i)&&j!==t(a,a.node(b.w),i)).reduce((a,c)=>e(b,c)<e(b,a)?c:a)}function s(a,b,c,d){var e,f,g,i,j=c.v,k=c.w;a.removeEdge(j,k),a.setEdge(d.v,d.w,{}),p(a),n(a,b),e=a,f=b,g=e.nodes().find(a=>!f.node(a).parent),(i=(i=h(e,g)).slice(1)).forEach(a=>{var b=e.node(a).parent,c=f.edge(a,b),d=!1;c||(c=f.edge(b,a),d=!0),f.node(a).rank=f.node(b).rank+(d?c.minlen:-c.minlen)})}function t(a,b,c){return c.low<=b.lim&&b.lim<=c.lim}b.exports=m,m.initLowLimValues=p,m.initCutValues=n,m.calcCutValue=o,m.leaveEdge=q,m.enterEdge=r,m.exchangeEdges=s}),m=c((a,b)=>{var c=j().longestPath,d=k(),e=l();b.exports=function(a){var b,g=a.graph().ranker;if(g instanceof Function)return g(a);switch(a.graph().ranker){case"network-simplex":default:e(a);break;case"tight-tree":c(b=a),d(b);break;case"longest-path":f(a);case"none":}};var f=c}),n=c((a,b)=>{b.exports=function(a){var b;let c,d,e=(c={},d=0,(b=a).children().forEach(function a(e){let f=d;b.children(e).forEach(a),c[e]={low:f,lim:d++}}),c);a.graph().dummyChains.forEach(b=>{let c=a.node(b),d=c.edgeObj,f=function(a,b,c,d){let e=[],f=[],g=Math.min(b[c].low,b[d].low),h=Math.max(b[c].lim,b[d].lim),i,j;i=c;do e.push(i=a.parent(i));while(i&&(b[i].low>g||h>b[i].lim))for(j=i,i=d;(i=a.parent(i))!==j;)f.push(i);return{path:e.concat(f.reverse()),lca:j}}(a,e,d.v,d.w),g=f.path,h=f.lca,i=0,j=g[0],k=!0;for(;b!==d.w;){if(c=a.node(b),k){for(;(j=g[i])!==h&&a.node(j).maxRank<c.rank;)i++;j===h&&(k=!1)}if(!k){for(;i<g.length-1&&a.node(j=g[i+1]).minRank<=c.rank;)i++;j=g[i]}a.setParent(b,j),b=a.successors(b)[0]}})}}),o=c((a,b)=>{var c=g();b.exports={run:function(a){var b,d,e;let f=c.addDummyNode(a,"root",{},"_root"),g=(d={},(b=a).children().forEach(a=>(function a(c,e){var f=b.children(c);f&&f.length&&f.forEach(b=>a(b,e+1)),d[c]=e})(a,1)),d),h=Object.values(g),i=c.applyWithChunking(Math.max,h)-1,j=2*i+1;a.graph().nestingRoot=f,a.edges().forEach(b=>a.edge(b).minlen*=j);let k=(e=a).edges().reduce((a,b)=>a+e.edge(b).weight,0)+1;a.children().forEach(b=>(function a(b,d,e,f,g,h,i){let j=b.children(i);if(!j.length){i!==d&&b.setEdge(d,i,{weight:0,minlen:e});return}let k=c.addBorderNode(b,"_bt"),l=c.addBorderNode(b,"_bb"),m=b.node(i);b.setParent(k,i),m.borderTop=k,b.setParent(l,i),m.borderBottom=l,j.forEach(c=>{a(b,d,e,f,g,h,c);let j=b.node(c),m=j.borderTop?j.borderTop:c,n=j.borderBottom?j.borderBottom:c,o=j.borderTop?f:2*f,p=m!==n?1:g-h[i]+1;b.setEdge(k,m,{weight:o,minlen:p,nestingEdge:!0}),b.setEdge(n,l,{weight:o,minlen:p,nestingEdge:!0})}),b.parent(i)||b.setEdge(d,k,{weight:0,minlen:g+h[i]})})(a,f,j,k,i,g,b)),a.graph().nodeRankFactor=j},cleanup:function(a){var b=a.graph();a.removeNode(b.nestingRoot),delete b.nestingRoot,a.edges().forEach(b=>{a.edge(b).nestingEdge&&a.removeEdge(b)})}}}),p=c((a,b)=>{var c=g();function d(a,b,d,e,f,g){let h=f[b][g-1],i=c.addDummyNode(a,"border",{width:0,height:0,rank:g,borderType:b},d);f[b][g]=i,a.setParent(i,e),h&&a.setEdge(h,i,{weight:1})}b.exports=function(a){a.children().forEach(function b(c){let e=a.children(c),f=a.node(c);if(e.length&&e.forEach(b),Object.hasOwn(f,"minRank")){f.borderLeft=[],f.borderRight=[];for(let b=f.minRank,e=f.maxRank+1;b<e;++b)d(a,"borderLeft","_bl",c,f,b),d(a,"borderRight","_br",c,f,b)}})}}),q=c((a,b)=>{function c(a){a.nodes().forEach(b=>d(a.node(b))),a.edges().forEach(b=>d(a.edge(b)))}function d(a){let b=a.width;a.width=a.height,a.height=b}function e(a){a.y=-a.y}function f(a){let b=a.x;a.x=a.y,a.y=b}b.exports={adjust:function(a){let b=a.graph().rankdir.toLowerCase();("lr"===b||"rl"===b)&&c(a)},undo:function(a){var b,d;let g=a.graph().rankdir.toLowerCase();("bt"===g||"rl"===g)&&((b=a).nodes().forEach(a=>e(b.node(a))),b.edges().forEach(a=>{let c=b.edge(a);c.points.forEach(e),Object.hasOwn(c,"y")&&e(c)})),("lr"===g||"rl"===g)&&((d=a).nodes().forEach(a=>f(d.node(a))),d.edges().forEach(a=>{let b=d.edge(a);b.points.forEach(f),Object.hasOwn(b,"x")&&f(b)}),c(a))}}}),r=c((a,b)=>{var c=g();b.exports=function(a){let b={},d=a.nodes().filter(b=>!a.children(b).length),e=d.map(b=>a.node(b).rank),f=c.applyWithChunking(Math.max,e),g=c.range(f+1).map(()=>[]);return d.sort((b,c)=>a.node(b).rank-a.node(c).rank).forEach(function c(d){b[d]||(b[d]=!0,g[a.node(d).rank].push(d),a.successors(d).forEach(c))}),g}}),s=c((a,b)=>{var c=g().zipObject;b.exports=function(a,b){let d=0;for(let e=1;e<b.length;++e)d+=function(a,b,d){let e=c(d,d.map((a,b)=>b)),f=b.flatMap(b=>a.outEdges(b).map(b=>({pos:e[b.w],weight:a.edge(b).weight})).sort((a,b)=>a.pos-b.pos)),g=1;for(;g<d.length;)g<<=1;let h=2*g-1;g-=1;let i=Array(h).fill(0),j=0;return f.forEach(a=>{let b=a.pos+g;i[b]+=a.weight;let c=0;for(;b>0;)b%2&&(c+=i[b+1]),b=b-1>>1,i[b]+=a.weight;j+=a.weight*c}),j}(a,b[e-1],b[e]);return d}}),t=c((a,b)=>{b.exports=function(a,b=[]){return b.map(b=>{let c=a.inEdges(b);if(!c.length)return{v:b};{let d=c.reduce((b,c)=>{let d=a.edge(c),e=a.node(c.v);return{sum:b.sum+d.weight*e.order,weight:b.weight+d.weight}},{sum:0,weight:0});return{v:b,barycenter:d.sum/d.weight,weight:d.weight}}})}}),u=c((a,b)=>{var c=g();b.exports=function(a,b){let d={};return a.forEach((a,b)=>{let c=d[a.v]={indegree:0,in:[],out:[],vs:[a.v],i:b};void 0!==a.barycenter&&(c.barycenter=a.barycenter,c.weight=a.weight)}),b.edges().forEach(a=>{let b=d[a.v],c=d[a.w];void 0!==b&&void 0!==c&&(c.indegree++,b.out.push(d[a.w]))}),function(a){let b=[];for(;a.length;){let c=a.pop();b.push(c),c.in.reverse().forEach(function(a){return b=>{b.merged||(void 0===b.barycenter||void 0===a.barycenter||b.barycenter>=a.barycenter)&&function(a,b){let c=0,d=0;a.weight&&(c+=a.barycenter*a.weight,d+=a.weight),b.weight&&(c+=b.barycenter*b.weight,d+=b.weight),a.vs=b.vs.concat(a.vs),a.barycenter=c/d,a.weight=d,a.i=Math.min(b.i,a.i),b.merged=!0}(a,b)}}(c)),c.out.forEach(function(b){return c=>{c.in.push(b),0==--c.indegree&&a.push(c)}}(c))}return b.filter(a=>!a.merged).map(a=>c.pick(a,["vs","i","barycenter","weight"]))}(Object.values(d).filter(a=>!a.indegree))}}),v=c((a,b)=>{var c=g();function d(a,b,c){let d;for(;b.length&&(d=b[b.length-1]).i<=c;)b.pop(),a.push(d.vs),c++;return c}b.exports=function(a,b){var e;let f=c.partition(a,a=>Object.hasOwn(a,"barycenter")),g=f.lhs,h=f.rhs.sort((a,b)=>b.i-a.i),i=[],j=0,k=0,l=0;g.sort((e=!!b,(a,b)=>a.barycenter<b.barycenter?-1:a.barycenter>b.barycenter?1:e?b.i-a.i:a.i-b.i)),l=d(i,h,l),g.forEach(a=>{l+=a.vs.length,i.push(a.vs),j+=a.barycenter*a.weight,k+=a.weight,l=d(i,h,l)});let m={vs:i.flat(!0)};return k&&(m.barycenter=j/k,m.weight=k),m}}),w=c((a,b)=>{var c=t(),d=u(),e=v();b.exports=function a(b,f,g,h){var i,j;let k=b.children(f),l=b.node(f),m=l?l.borderLeft:void 0,n=l?l.borderRight:void 0,o={};m&&(k=k.filter(a=>a!==m&&a!==n));let p=c(b,k);p.forEach(c=>{if(b.children(c.v).length){var d,e;let f=a(b,c.v,g,h);o[c.v]=f,Object.hasOwn(f,"barycenter")&&(d=c,e=f,void 0!==d.barycenter?(d.barycenter=(d.barycenter*d.weight+e.barycenter*e.weight)/(d.weight+e.weight),d.weight+=e.weight):(d.barycenter=e.barycenter,d.weight=e.weight))}});let q=d(p,g);i=q,j=o,i.forEach(a=>{a.vs=a.vs.flatMap(a=>j[a]?j[a].vs:a)});let r=e(q,h);if(m&&(r.vs=[m,r.vs,n].flat(!0),b.predecessors(m).length)){let a=b.node(b.predecessors(m)[0]),c=b.node(b.predecessors(n)[0]);Object.hasOwn(r,"barycenter")||(r.barycenter=0,r.weight=0),r.barycenter=(r.barycenter*r.weight+a.order+c.order)/(r.weight+2),r.weight+=2}return r}}),x=c((a,b)=>{var c=d().Graph,e=g();b.exports=function(a,b,d,f){f||(f=a.nodes());let g=function(a){for(var b;a.hasNode(b=e.uniqueId("_root")););return b}(a),h=new c({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(b=>a.node(b));return f.forEach(c=>{let e=a.node(c),f=a.parent(c);(e.rank===b||e.minRank<=b&&b<=e.maxRank)&&(h.setNode(c),h.setParent(c,f||g),a[d](c).forEach(b=>{let d=b.v===c?b.w:b.v,e=h.edge(d,c),f=void 0!==e?e.weight:0;h.setEdge(d,c,{weight:a.edge(b).weight+f})}),Object.hasOwn(e,"minRank")&&h.setNode(c,{borderLeft:e.borderLeft[b],borderRight:e.borderRight[b]}))}),h}}),y=c((a,b)=>{b.exports=function(a,b,c){let d={},e;c.forEach(c=>{let f=a.parent(c),g,h;for(;f;){if((g=a.parent(f))?(h=d[g],d[g]=f):(h=e,e=f),h&&h!==f)return void b.setEdge(h,f);f=g}})}}),z=c((a,b)=>{var c=r(),e=s(),f=w(),h=x(),i=y(),j=d().Graph,k=g();function l(a,b,c){let d=new Map,e=(a,b)=>{d.has(a)||d.set(a,[]),d.get(a).push(b)};for(let b of a.nodes()){let c=a.node(b);if("number"==typeof c.rank&&e(c.rank,b),"number"==typeof c.minRank&&"number"==typeof c.maxRank)for(let a=c.minRank;a<=c.maxRank;a++)a!==c.rank&&e(a,b)}return b.map(function(b){return h(a,b,c,d.get(b)||[])})}function m(a,b){Object.values(b).forEach(b=>b.forEach((b,c)=>a.node(b).order=c))}b.exports=function a(b,d={}){if("function"==typeof d.customOrder)return void d.customOrder(b,a);let g=k.maxRank(b),h=l(b,k.range(1,g+1),"inEdges"),n=l(b,k.range(g-1,-1,-1),"outEdges"),o=c(b);if(m(b,o),d.disableOptimalOrderHeuristic)return;let p=1/0,q,r=d.constraints||[];for(let a=0,c=0;c<4;++a,++c){(function(a,b,c){let d=new j;a.forEach(function(a){c.forEach(a=>d.setEdge(a.left,a.right));let e=a.graph().root,g=f(a,e,d,b);g.vs.forEach((b,c)=>a.node(b).order=c),i(a,d,g.vs)})})(a%2?h:n,a%4>=2,r),o=k.buildLayerMatrix(b);let d=e(b,o);d<p?(c=0,q=Object.assign({},o),p=d):d===p&&(q=structuredClone(o))}m(b,q)}}),A=c((a,b)=>{var c=d().Graph,e=g();function f(a,b){let c={};return b.length&&b.reduce(function(b,d){let e=0,f=0,g=b.length,h=d[d.length-1];return d.forEach((b,j)=>{let k=function(a,b){if(a.node(b).dummy)return a.predecessors(b).find(b=>a.node(b).dummy)}(a,b),l=k?a.node(k).order:g;(k||b===h)&&(d.slice(f,j+1).forEach(b=>{a.predecessors(b).forEach(d=>{let f=a.node(d),g=f.order;(g<e||l<g)&&!(f.dummy&&a.node(b).dummy)&&i(c,d,b)})}),f=j+1,e=l)}),d}),c}function h(a,b){let c={};function d(b,d,f,g,h){let j;e.range(d,f).forEach(d=>{j=b[d],a.node(j).dummy&&a.predecessors(j).forEach(b=>{let d=a.node(b);d.dummy&&(d.order<g||d.order>h)&&i(c,b,j)})})}return b.length&&b.reduce(function(b,c){let e=-1,f,g=0;return c.forEach((h,i)=>{if("border"===a.node(h).dummy){let b=a.predecessors(h);b.length&&(f=a.node(b[0]).order,d(c,g,i,e,f),g=i,e=f)}d(c,g,c.length,f,b.length)}),c}),c}function i(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];d||(a[b]=d={}),d[c]=!0}function j(a,b,c){if(b>c){let a=b;b=c,c=a}return!!a[b]&&Object.hasOwn(a[b],c)}function k(a,b,c,d){let e={},f={},g={};return b.forEach(a=>{a.forEach((a,b)=>{e[a]=a,f[a]=a,g[a]=b})}),b.forEach(a=>{let b=-1;a.forEach(a=>{let h=d(a);if(h.length){let d=((h=h.sort((a,b)=>g[a]-g[b])).length-1)/2;for(let i=Math.floor(d),k=Math.ceil(d);i<=k;++i){let d=h[i];f[a]===a&&b<g[d]&&!j(c,a,d)&&(f[d]=a,f[a]=e[a]=e[d],b=g[d])}}})}),{root:e,align:f}}function l(a,b,d,e,f){var g,h,i,j,k,l,m;let n,o,p,q={},r=(g=a,h=b,i=d,j=f,n=new c,p=(k=(o=g.graph()).nodesep,l=o.edgesep,m=j,(a,b,c)=>{let d=a.node(b),e=a.node(c),f,g;if(f=0+d.width/2,Object.hasOwn(d,"labelpos"))switch(d.labelpos.toLowerCase()){case"l":g=-d.width/2;break;case"r":g=d.width/2}if(g&&(f+=m?g:-g),g=0,f+=(d.dummy?l:k)/2,f+=(e.dummy?l:k)/2,f+=e.width/2,Object.hasOwn(e,"labelpos"))switch(e.labelpos.toLowerCase()){case"l":g=e.width/2;break;case"r":g=-e.width/2}return g&&(f+=m?g:-g),g=0,f}),h.forEach(a=>{let b;a.forEach(a=>{let c=i[a];if(n.setNode(c),b){var d=i[b],e=n.edge(d,c);n.setEdge(d,c,Math.max(p(g,a,b),e||0))}b=a})}),n),s=f?"borderLeft":"borderRight";function t(a,b){let c=r.nodes().slice(),d={},e=c.pop();for(;e;){if(d[e])a(e);else for(let a of(d[e]=!0,c.push(e),b(e)))c.push(a);e=c.pop()}}return t(function(a){q[a]=r.inEdges(a).reduce((a,b)=>Math.max(a,q[b.v]+r.edge(b)),0)},r.predecessors.bind(r)),t(function(b){let c=r.outEdges(b).reduce((a,b)=>Math.min(a,q[b.w]-r.edge(b)),1/0),d=a.node(b);c!==1/0&&d.borderType!==s&&(q[b]=Math.max(q[b],c))},r.successors.bind(r)),Object.keys(e).forEach(a=>q[a]=q[d[a]]),q}function m(a,b){return Object.values(b).reduce((b,c)=>{let d=-1/0,e=1/0;Object.entries(c).forEach(([b,c])=>{var f,g;let h=(f=a,g=b,f.node(g).width/2);d=Math.max(c+h,d),e=Math.min(c-h,e)});let f=d-e;return f<b[0]&&(b=[f,c]),b},[1/0,null])[1]}function n(a,b){let c=Object.values(b),d=e.applyWithChunking(Math.min,c),f=e.applyWithChunking(Math.max,c);["u","d"].forEach(c=>{["l","r"].forEach(g=>{let h=c+g,i=a[h];if(i===b)return;let j=Object.values(i),k=d-e.applyWithChunking(Math.min,j);"l"!==g&&(k=f-e.applyWithChunking(Math.max,j)),k&&(a[h]=e.mapValues(i,a=>a+k))})})}function o(a,b){return e.mapValues(a.ul,(c,d)=>{if(b)return a[b.toLowerCase()][d];{let b=Object.values(a).map(a=>a[d]).sort((a,b)=>a-b);return(b[1]+b[2])/2}})}b.exports={positionX:function(a){let b=e.buildLayerMatrix(a),c=Object.assign(f(a,b),h(a,b)),d={},g;["u","d"].forEach(f=>{g="u"===f?b:Object.values(b).reverse(),["l","r"].forEach(b=>{"r"===b&&(g=g.map(a=>Object.values(a).reverse()));let h=("u"===f?a.predecessors:a.successors).bind(a),i=k(a,g,c,h),j=l(a,g,i.root,i.align,"r"===b);"r"===b&&(j=e.mapValues(j,a=>-a)),d[f+b]=j})});let i=m(a,d);return n(d,i),o(d,a.graph().align)},findType1Conflicts:f,findType2Conflicts:h,addConflict:i,hasConflict:j,verticalAlignment:k,horizontalCompaction:l,alignCoordinates:n,findSmallestWidthAlignment:m,balance:o}}),B=c((a,b)=>{var c=g(),d=A().positionX;b.exports=function(a){var b;let e,f,g,h;b=a=c.asNonCompoundGraph(a),e=c.buildLayerMatrix(b),f=b.graph().ranksep,g=b.graph().rankalign,h=0,e.forEach(a=>{let c=a.reduce((a,c)=>{let d=b.node(c).height;return a>d?a:d},0);a.forEach(a=>{let d=b.node(a);"top"===g?d.y=h+d.height/2:"bottom"===g?d.y=h+c-d.height/2:d.y=h+c/2}),h+=c+f}),Object.entries(d(a)).forEach(([b,c])=>a.node(b).x=c)}}),C=c((a,b)=>{var c=h(),e=i(),f=m(),j=g().normalizeRanks,k=n(),l=g().removeEmptyRanks,r=o(),s=p(),t=q(),u=z(),v=B(),w=g(),x=d().Graph;b.exports=function(a,b={}){let d=b.debugTiming?w.time:w.notime;return d("layout",()=>{let g=d(" buildLayoutGraph",()=>{var b;let c,d;return b=a,c=new x({multigraph:!0,compound:!0}),d=J(b.graph()),c.setGraph(Object.assign({},A,I(d,y),w.pick(d,C))),b.nodes().forEach(a=>{let d=I(J(b.node(a)),D);Object.keys(E).forEach(a=>{void 0===d[a]&&(d[a]=E[a])}),c.setNode(a,d),c.setParent(a,b.parent(a))}),b.edges().forEach(a=>{let d=J(b.edge(a));c.setEdge(a,Object.assign({},G,I(d,F),w.pick(d,H)))}),c});return d(" runLayout",()=>{var a,h,i;return a=g,h=d,i=b,void(h(" makeSpaceForEdgeLabels",()=>{var b;let c;return c=(b=a).graph(),void(c.ranksep/=2,b.edges().forEach(a=>{let d=b.edge(a);d.minlen*=2,"c"!==d.labelpos.toLowerCase()&&("TB"===c.rankdir||"BT"===c.rankdir?d.width+=d.labeloffset:d.height+=d.labeloffset)}))}),h(" removeSelfEdges",()=>{var b;(b=a).edges().forEach(a=>{if(a.v===a.w){var c=b.node(a.v);c.selfEdges||(c.selfEdges=[]),c.selfEdges.push({e:a,label:b.edge(a)}),b.removeEdge(a)}})}),h(" acyclic",()=>c.run(a)),h(" nestingGraph.run",()=>r.run(a)),h(" rank",()=>f(w.asNonCompoundGraph(a))),h(" injectEdgeLabelProxies",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(c.width&&c.height){let c=b.node(a.v),d={rank:(b.node(a.w).rank-c.rank)/2+c.rank,e:a};w.addDummyNode(b,"edge-proxy",d,"_ep")}})}),h(" removeEmptyRanks",()=>l(a)),h(" nestingGraph.cleanup",()=>r.cleanup(a)),h(" normalizeRanks",()=>j(a)),h(" assignRankMinMax",()=>{var b;let c;return c=0,void((b=a).nodes().forEach(a=>{let d=b.node(a);d.borderTop&&(d.minRank=b.node(d.borderTop).rank,d.maxRank=b.node(d.borderBottom).rank,c=Math.max(c,d.maxRank))}),b.graph().maxRank=c)}),h(" removeEdgeLabelProxies",()=>{var b;(b=a).nodes().forEach(a=>{let c=b.node(a);"edge-proxy"===c.dummy&&(b.edge(c.e).labelRank=c.rank,b.removeNode(a))})}),h(" normalize.run",()=>e.run(a)),h(" parentDummyChains",()=>k(a)),h(" addBorderSegments",()=>s(a)),h(" order",()=>u(a,i)),h(" insertSelfEdges",()=>{var b;return b=a,void w.buildLayerMatrix(b).forEach(a=>{var c=0;a.forEach((a,d)=>{var e=b.node(a);e.order=d+c,(e.selfEdges||[]).forEach(a=>{w.addDummyNode(b,"selfedge",{width:a.label.width,height:a.label.height,rank:e.rank,order:d+ ++c,e:a.e,label:a.label},"_se")}),delete e.selfEdges})})}),h(" adjustCoordinateSystem",()=>t.adjust(a)),h(" position",()=>v(a)),h(" positionSelfEdges",()=>{var b;(b=a).nodes().forEach(a=>{var c=b.node(a);if("selfedge"===c.dummy){var d=b.node(c.e.v),e=d.x+d.width/2,f=d.y,g=c.x-e,h=d.height/2;b.setEdge(c.e,c.label),b.removeNode(a),c.label.points=[{x:e+2*g/3,y:f-h},{x:e+5*g/6,y:f-h},{x:e+g,y:f},{x:e+5*g/6,y:f+h},{x:e+2*g/3,y:f+h}],c.label.x=c.x,c.label.y=c.y}})}),h(" removeBorderNodes",()=>{var b;(b=a).nodes().forEach(a=>{if(b.children(a).length){let c=b.node(a),d=b.node(c.borderTop),e=b.node(c.borderBottom),f=b.node(c.borderLeft[c.borderLeft.length-1]),g=b.node(c.borderRight[c.borderRight.length-1]);c.width=Math.abs(g.x-f.x),c.height=Math.abs(e.y-d.y),c.x=f.x+c.width/2,c.y=d.y+c.height/2}}),b.nodes().forEach(a=>{"border"===b.node(a).dummy&&b.removeNode(a)})}),h(" normalize.undo",()=>e.undo(a)),h(" fixupEdgeLabelCoords",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);if(Object.hasOwn(c,"x"))switch(("l"===c.labelpos||"r"===c.labelpos)&&(c.width-=c.labeloffset),c.labelpos){case"l":c.x-=c.width/2+c.labeloffset;break;case"r":c.x+=c.width/2+c.labeloffset}})}),h(" undoCoordinateSystem",()=>t.undo(a)),h(" translateGraph",()=>(function(a){let b=1/0,c=0,d=1/0,e=0,f=a.graph(),g=f.marginx||0,h=f.marginy||0;function i(a){let f=a.x,g=a.y,h=a.width,i=a.height;b=Math.min(b,f-h/2),c=Math.max(c,f+h/2),d=Math.min(d,g-i/2),e=Math.max(e,g+i/2)}a.nodes().forEach(b=>i(a.node(b))),a.edges().forEach(b=>{let c=a.edge(b);Object.hasOwn(c,"x")&&i(c)}),b-=g,d-=h,a.nodes().forEach(c=>{let e=a.node(c);e.x-=b,e.y-=d}),a.edges().forEach(c=>{let e=a.edge(c);e.points.forEach(a=>{a.x-=b,a.y-=d}),Object.hasOwn(e,"x")&&(e.x-=b),Object.hasOwn(e,"y")&&(e.y-=d)}),f.width=c-b+g,f.height=e-d+h})(a)),h(" assignNodeIntersects",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a),d=b.node(a.v),e=b.node(a.w),f,g;c.points?(f=c.points[0],g=c.points[c.points.length-1]):(c.points=[],f=e,g=d),c.points.unshift(w.intersectRect(d,f)),c.points.push(w.intersectRect(e,g))})}),h(" reversePoints",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);c.reversed&&c.points.reverse()})}),h(" acyclic.undo",()=>c.undo(a)))}),d(" updateInputGraph",()=>{var b,c;return b=a,c=g,void(b.nodes().forEach(a=>{let d=b.node(a),e=c.node(a);d&&(d.x=e.x,d.y=e.y,d.order=e.order,d.rank=e.rank,c.children(a).length&&(d.width=e.width,d.height=e.height))}),b.edges().forEach(a=>{let d=b.edge(a),e=c.edge(a);d.points=e.points,Object.hasOwn(e,"x")&&(d.x=e.x,d.y=e.y)}),b.graph().width=c.graph().width,b.graph().height=c.graph().height)}),g})};var y=["nodesep","edgesep","ranksep","marginx","marginy"],A={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb",rankalign:"center"},C=["acyclicer","ranker","rankdir","align","rankalign"],D=["width","height","rank"],E={width:0,height:0},F=["minlen","weight","width","height","labeloffset"],G={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},H=["labelpos"];function I(a,b){return w.mapValues(w.pick(a,b),Number)}function J(a){var b={};return a&&Object.entries(a).forEach(([a,c])=>{"string"==typeof a&&(a=a.toLowerCase()),b[a]=c}),b}}),D=c((a,b)=>{var c=g(),e=d().Graph;b.exports={debugOrdering:function(a){let b=c.buildLayerMatrix(a),d=new e({compound:!0,multigraph:!0}).setGraph({});return a.nodes().forEach(b=>{d.setNode(b,{label:b}),d.setParent(b,"layer"+a.node(b).rank)}),a.edges().forEach(a=>d.setEdge(a.v,a.w,{},a.name)),b.forEach((a,b)=>{d.setNode("layer"+b,{rank:"same"}),a.reduce((a,b)=>(d.setEdge(a,b,{style:"invis"}),b))}),d}}}),E=c((a,b)=>{b.exports="2.0.4"});let F=c((a,b)=>{b.exports={graphlib:d(),layout:C(),debug:D(),util:{time:g().time,notime:g().notime},version:E()}})(),G={direction:"LR",ranksep:200,nodesep:15},H={featureNode:{width:288,height:140},repositoryNode:{width:288,height:50},addRepositoryNode:{width:224,height:50}};function I(a,b){let c=a.data;return c&&"number"==typeof c.width&&"number"==typeof c.height?{width:c.width,height:c.height}:H[a.type??""]??b}var J=a.i(14703);let K={Requirements:"requirements",Research:"research",Implementation:"implementation",Review:"review","Deploy & QA":"deploy",Maintain:"maintain"},L={analyze:"requirements",requirements:"requirements",research:"research",plan:"implementation",implement:"implementation",merge:"review"};function M(a,b,c,d,e){[...a].sort((a,b)=>(a.feature.createdAt instanceof Date?a.feature.createdAt.getTime():Number(a.feature.createdAt))-(b.feature.createdAt instanceof Date?b.feature.createdAt.getTime():Number(b.feature.createdAt))).forEach(({feature:a,run:f})=>{let g,h=f?.result?.startsWith("node:")?f.result.slice(5):void 0,i=f?.status==="completed"?"maintain":(h?L[h]:void 0)??K[a.lifecycle]??"requirements";if(a.parentId&&"Blocked"===a.lifecycle){let b=c.find(b=>b.feature.id===a.parentId);b&&(g=b.feature.name)}let j={name:a.name,description:a.description??a.slug,featureId:a.id,lifecycle:i,repositoryPath:a.repositoryPath,branch:a.branch,specPath:a.specPath,state:(0,J.deriveNodeState)(a,f),progress:(0,J.deriveProgress)(a),...f?.agentType&&{agentType:f.agentType},...f?.error&&{errorMessage:f.error},...g&&{blockedBy:g},...a.pr&&{pr:{url:a.pr.url,number:a.pr.number,status:a.pr.status,ciStatus:a.pr.ciStatus,commitHash:a.pr.commitHash}}},k=`feat-${a.id}`;d.push({id:k,type:"featureNode",position:{x:0,y:0},data:j}),a.parentId||e.push({id:`edge-${b}-${k}`,source:b,target:k,style:{strokeDasharray:"5 5"}})})}async function N(){let a=(0,b.resolve)("ListFeaturesUseCase"),c=(0,b.resolve)("ListRepositoriesUseCase"),d=(0,b.resolve)("IAgentRunRepository"),[e,f]=await Promise.all([a.execute(),c.execute()]),{nodes:g,edges:h}=function(a,b){let c={};b.forEach(a=>{let b=a.feature.repositoryPath;c[b]||(c[b]=[]),c[b].push(a)});let d=[],e=[],f=new Set;for(let g of a){f.add(g.path);let a=`repo-${g.id}`;d.push({id:a,type:"repositoryNode",position:{x:0,y:0},data:{name:g.name,repositoryPath:g.path,id:g.id}}),M(c[g.path]??[],a,b,d,e)}for(let[a,g]of Object.entries(c)){if(f.has(a))continue;let c=`virtual-repo-${a}`,h=a.split("/").filter(Boolean).at(-1)??a;d.push({id:c,type:"repositoryNode",position:{x:0,y:0},data:{name:h,repositoryPath:a}}),M(g,c,b,d,e)}for(let{feature:a}of b)if(a.parentId){let b=`feat-${a.parentId}`,c=`feat-${a.id}`;d.some(a=>a.id===b)&&d.some(a=>a.id===c)&&e.push({id:`dep-${b}-${c}`,source:b,target:c,type:"dependencyEdge"})}return{nodes:d,edges:e}}(f,await Promise.all(e.map(async a=>{let b=a.agentRunId?await d.findById(a.agentRunId):null;return{feature:a,run:b}})));return function(a,b,c={}){let{direction:d="TB",nodeSize:e={width:172,height:36},ranksep:f=80,nodesep:g=30}=c;if(0===a.length)return{nodes:[],edges:[]};let h=new F.graphlib.Graph({multigraph:!0});h.setDefaultEdgeLabel(()=>({})),h.setGraph({rankdir:d,ranksep:f,nodesep:g});let i=new Set;for(let a of b)i.add(a.source),i.add(a.target);let j=a.filter(a=>i.has(a.id)),k=a.filter(a=>!i.has(a.id));for(let a of j){let b=I(a,e);h.setNode(a.id,{width:b.width,height:b.height})}for(let a of b)h.hasNode(a.source)&&h.hasNode(a.target)&&h.setEdge(a.source,a.target,{},a.id);F.layout(h);let{targetPosition:l,sourcePosition:m}=function(a){switch(a){case"LR":return{targetPosition:"left",sourcePosition:"right"};case"RL":return{targetPosition:"right",sourcePosition:"left"};case"BT":return{targetPosition:"bottom",sourcePosition:"top"};default:return{targetPosition:"top",sourcePosition:"bottom"}}}(d),n="LR"===d||"RL"===d,o=new Map;for(let a of j){let b=h.node(a.id),c=I(a,e);o.set(a.id,{cx:b.x,cy:b.y,w:c.width,h:c.height})}let p=new Map;for(let a of b)o.has(a.source)&&o.has(a.target)&&(p.has(a.source)||p.set(a.source,[]),p.get(a.source).push(a.target));for(let[a,b]of p){if(b.length<=1)continue;let c=o.get(a),d=n?c.cy:c.cx,e=b.filter(a=>o.has(a)).sort((a,b)=>{let c=o.get(a),d=o.get(b);return n?c.cy-d.cy:c.cx-d.cx}),f=o.get(e[0]),g=o.get(e[e.length-1]),h=d-(n?(f.cy+g.cy)/2:(f.cx+g.cx)/2);if(Math.abs(h)>1)for(let a of e){let b=o.get(a);n?b.cy+=h:b.cx+=h}}let q=new Map;for(let a=0;a<j.length;a++)q.set(j[a].id,a);for(let[,a]of p){let b=a.filter(a=>o.has(a));if(b.length<=1)continue;let c=b.map(a=>n?o.get(a).cy:o.get(a).cx).sort((a,b)=>a-b),d=[...b].sort((a,b)=>(q.get(a)??0)-(q.get(b)??0));for(let a=0;a<d.length;a++){let b=o.get(d[a]);n?b.cy=c[a]:b.cx=c[a]}}let r=[];for(let a of j){let b=o.get(a.id);r.push({...a,targetPosition:l,sourcePosition:m,position:{x:b.cx-b.w/2,y:b.cy-b.h/2}})}if(k.length>0){let a=0,b=1/0;for(let c of r){let d=I(c,e);a=Math.max(a,c.position.y+d.height),b=Math.min(b,c.position.x)}b===1/0&&(b=0);for(let c=0;c<k.length;c++){let d=k[c],f=I(d,e);r.push({...d,targetPosition:l,sourcePosition:m,position:{x:b,y:a+30+c*(f.height+20)}})}}return{nodes:r,edges:[...b]}}(g,h,G)}a.s(["getGraphData",()=>N],66693)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=src_presentation_web_app_%28dashboard%29_get-graph-data_ts_b018483e._.js.map
|