@shipit-ai/cli 1.166.0 → 1.166.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +19 -2
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/external/github-repository.service.js +14 -3
- package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/deploy-repository.js +14 -7
- package/dist/src/presentation/web/app/actions/get-merge-review-data.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/get-merge-review-data.js +66 -23
- package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-folder.js +12 -4
- package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-shell.js +46 -7
- 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 +2 -6
- package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/attachments/upload-from-path/route.js +21 -17
- package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/deployment-logs/route.js +2 -6
- package/dist/src/presentation/web/app/api/directory/list/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/directory/list/route.js +39 -24
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/chat/[featureId]/stream/route.js +2 -6
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.d.ts.map +1 -1
- package/dist/src/presentation/web/app/api/interactive/sessions/[id]/stream/route.js +2 -6
- package/dist/src/presentation/web/lib/path-sanitizers.d.ts +50 -0
- package/dist/src/presentation/web/lib/path-sanitizers.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/path-sanitizers.js +136 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -7
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +3 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +3 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js +1 -1
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/agent-events/route.js +2 -1
- package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js +1 -1
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js +1 -1
- package/web/.next/server/app/api/attachments/upload-from-path/route.js.nft.json +1 -1
- package/web/.next/server/app/api/deployment-logs/route.js +2 -1
- package/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
- package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
- package/web/.next/server/app/api/directory/list/route.js +1 -1
- package/web/.next/server/app/api/directory/list/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js +2 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js +2 -1
- package/web/.next/server/app/api/interactive/sessions/[id]/stream/route.js.nft.json +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js +1 -1
- package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js → [root-of-the-server]__08cpfre._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0_-chcy._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0aft8l4._.js +9 -0
- package/web/.next/server/chunks/{[root-of-the-server]__0_6fhza._.js.map → [root-of-the-server]__0aft8l4._.js.map} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__0e9p7em._.js.map +1 -0
- package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js → [root-of-the-server]__0gfvkg8._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js → [root-of-the-server]__0hcp97v._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js → [root-of-the-server]__0iel39d._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js +12 -0
- package/web/.next/server/chunks/[root-of-the-server]__0kc8ify._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js +9 -0
- package/web/.next/server/chunks/[root-of-the-server]__0r5uk_8._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js → [root-of-the-server]__0u1jyv9._.js} +2 -2
- package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js → [root-of-the-server]__0zu_byw._.js} +2 -2
- package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js +18 -0
- package/web/.next/server/chunks/[root-of-the-server]__13e2_kk._.js.map +1 -0
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04nnbmc._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07740t6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l~puw4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0o3qggc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js → [root-of-the-server]__0q3-gz.._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0vwjc_m._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__12g8h3_._.js → [root-of-the-server]__0w4__yd._.js} +3 -3
- package/web/.next/server/chunks/ssr/_01mq~sm._.js +1 -1
- package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
- package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_09di2m~._.js → _04rrcmm._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_09di2m~._.js.map → _04rrcmm._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_12104w0._.js → _0c497sr._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_12104w0._.js.map → _0c497sr._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_0r~xv6k._.js → _0c741v_._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0r~xv6k._.js.map → _0c741v_._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
- package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
- package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_109n-y4._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +49 -49
- package/web/.next/static/chunks/{0rhoh5o1y7grf.js → 0-fy~80ui.5os.js} +1 -1
- package/web/.next/static/chunks/{13ryk8qc9y3qu.js → 039ic1ygq-to3.js} +1 -1
- package/web/.next/static/chunks/{00uywouqbytc0.js → 04xk1iouwcfcq.js} +3 -3
- package/web/.next/static/chunks/{0b_anwzlzr9p7.js → 07a4jt64wdipb.js} +1 -1
- package/web/.next/static/chunks/{0tutcr7trd_7d.js → 07gx-h_y91lay.js} +2 -2
- package/web/.next/static/chunks/{01hf_nf2ge.tn.js → 0_imq4rg3q.fe.js} +2 -2
- package/web/.next/static/chunks/{0ntps8p7wo1re.js → 0c_bi0dck80dt.js} +1 -1
- package/web/.next/static/chunks/{0fmbl3o08a~-h.js → 0ex35-_jtxyjc.js} +1 -1
- package/web/.next/static/chunks/{0rfap2l5xz_-p.js → 0i084mozx131g.js} +1 -1
- package/web/.next/static/chunks/0k~55i.ofbdeb.js +1 -0
- package/web/.next/static/chunks/{0sywjtf8m0_fb.js → 0oq-cvtg8rjjp.js} +1 -1
- package/web/.next/static/chunks/{16jcg65-2mxc..js → 0t_6hx6ul7umb.js} +1 -1
- package/web/.next/static/chunks/{0b01fd0lkhnzf.js → 0whez3wju~9ok.js} +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__0-3b27b._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0_6fhza._.js +0 -9
- package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js +0 -12
- package/web/.next/server/chunks/[root-of-the-server]__0esdmru._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0l1p8bx._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js +0 -18
- package/web/.next/server/chunks/[root-of-the-server]__0p~owgt._.js.map +0 -1
- package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js +0 -3
- package/web/.next/server/chunks/[root-of-the-server]__0rru~m.._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__045sv4b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0d_0_fp._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0l4d7e.._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0r32z03._.js.map +0 -1
- package/web/.next/static/chunks/121l3o3vd~hvn.js +0 -1
- /package/web/.next/server/chunks/{[root-of-the-server]__02xmnal._.js.map → [root-of-the-server]__08cpfre._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__0.2exzi._.js.map → [root-of-the-server]__0gfvkg8._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__0ip_e1x._.js.map → [root-of-the-server]__0hcp97v._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__09118p2._.js.map → [root-of-the-server]__0iel39d._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__04jjtl_._.js.map → [root-of-the-server]__0u1jyv9._.js.map} +0 -0
- /package/web/.next/server/chunks/{[root-of-the-server]__07suer1._.js.map → [root-of-the-server]__0zu_byw._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0qh.wn.._.js.map → [root-of-the-server]__0q3-gz.._.js.map} +0 -0
- /package/web/.next/server/chunks/ssr/{[root-of-the-server]__12g8h3_._.js.map → [root-of-the-server]__0w4__yd._.js.map} +0 -0
- /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_buildManifest.js +0 -0
- /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{21GZVGanhwKlq9p5dtTCB → ynyh_sSxbFA995FRvBUxs}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[16533,a=>{"use strict";var b=a.i(11321),c=a.i(40674),d=a.i(52313),e=a.i(87139),f=a.i(74146);a.i(98617);var g=a.i(50040),h=Object.defineProperty,i={},j={Graph:()=>n,alg:()=>w,json:()=>t,version:()=>s};for(var k in j)h(i,k,{get:j[k],enumerable:!0});var l=Object.defineProperty,m=(a,b)=>{for(var c in b)l(a,c,{get:b[c],enumerable:!0})},n=class{constructor(a){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},a&&(this._isDirected=!("directed"in a)||a.directed,this._isMultigraph="multigraph"in a&&a.multigraph,this._isCompound="compound"in a&&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"function"!=typeof a?this._defaultNodeLabelFn=()=>a:this._defaultNodeLabelFn=a,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(a=>0===Object.keys(this._in[a]).length)}sinks(){return this.nodes().filter(a=>0===Object.keys(this._out[a]).length)}setNodes(a,b){return a.forEach(a=>{void 0!==b?this.setNode(a,b):this.setNode(a)}),this}setNode(a,b){return a in this._nodes?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 a in this._nodes}removeNode(a){if(a in this._nodes){let b=a=>this.removeEdge(this._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],this.children(a).forEach(a=>{this.setParent(a)}),delete this._children[a]),Object.keys(this._in[a]).forEach(b),delete this._in[a],delete this._preds[a],Object.keys(this._out[a]).forEach(b),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(let 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}parent(a){if(this._isCompound){let b=this._parent[a];if("\0"!==b)return b}}children(a="\0"){if(this._isCompound){let b=this._children[a];if(b)return Object.keys(b)}else{if("\0"===a)return this.nodes();this.hasNode(a)}return[]}predecessors(a){let b=this._preds[a];if(b)return Object.keys(b)}successors(a){let b=this._sucs[a];if(b)return Object.keys(b)}neighbors(a){let b=this.predecessors(a);if(b){let c=new Set(b);for(let b of this.successors(a))c.add(b);return Array.from(c.values())}}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){let b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph()),Object.entries(this._nodes).forEach(([c,d])=>{a(c)&&b.setNode(c,d)}),Object.values(this._edgeObjs).forEach(a=>{b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,this.edge(a))});let c={},d=a=>{let e=this.parent(a);return!e||b.hasNode(e)?(c[a]=null!=e?e:void 0,null!=e?e:void 0):e in c?c[e]:d(e)};return this._isCompound&&b.nodes().forEach(a=>b.setParent(a,d(a))),b}setDefaultEdgeLabel(a){return"function"!=typeof a?this._defaultEdgeLabelFn=()=>a:this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(a,b){return a.reduce((a,c)=>(void 0!==b?this.setEdge(a,c,b):this.setEdge(a,c),c)),this}setEdge(a,b,c,d){let e,f,g,h,i=!1;"object"==typeof a&&null!==a&&"v"in a?(e=a.v,f=a.w,g=a.name,2==arguments.length&&(h=b,i=!0)):(e=a,f=b,g=d,arguments.length>2&&(h=c,i=!0)),e=""+e,f=""+f,void 0!==g&&(g=""+g);let j=q(this._isDirected,e,f,g);if(j in this._edgeLabels)return i&&(this._edgeLabels[j]=h),this;if(void 0!==g&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(f),this._edgeLabels[j]=i?h:this._defaultEdgeLabelFn(e,f,g);let k=function(a,b,c,d){let e=""+b,f=""+c;if(!a&&e>f){let a=e;e=f,f=a}let g={v:e,w:f};return d&&(g.name=d),g}(this._isDirected,e,f,g);return e=k.v,f=k.w,Object.freeze(k),this._edgeObjs[j]=k,o(this._preds[f],e),o(this._sucs[e],f),this._in[f][j]=k,this._out[e][j]=k,this._edgeCount++,this}edge(a,b,c){let d=1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c);return this._edgeLabels[d]}edgeAsObj(a,b,c){let d=1==arguments.length?this.edge(a):this.edge(a,b,c);return"object"!=typeof d?{label:d}:d}hasEdge(a,b,c){return(1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c))in this._edgeLabels}removeEdge(a,b,c){let d=1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c),e=this._edgeObjs[d];if(e){let a=e.v,b=e.w;delete this._edgeLabels[d],delete this._edgeObjs[d],p(this._preds[b],a),p(this._sucs[a],b),delete this._in[b][d],delete this._out[a][d],this._edgeCount--}return 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)}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}filterEdges(a,b,c){if(!a)return;let d=Object.values(a);return c?d.filter(a=>a.v===b&&a.w===c||a.v===c&&a.w===b):d}};function o(a,b){a[b]?a[b]++:a[b]=1}function p(a,b){void 0===a[b]||--a[b]||delete a[b]}function q(a,b,c,d){let e=""+b,f=""+c;if(!a&&e>f){let a=e;e=f,f=a}return e+"\x01"+f+"\x01"+(void 0===d?"\0":d)}function r(a,b){return q(a,b.v,b.w,b.name)}var s="4.0.1",t={};function u(a){var b,c;let d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a).nodes().map(a=>{let 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(a=>{let 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})},e=a.graph();return void 0!==e&&(d.value=structuredClone(e)),d}function v(a){let b=new n(a.options);return void 0!==a.value&&b.setGraph(a.value),a.nodes.forEach(a=>{b.setNode(a.v,a.value),a.parent&&b.setParent(a.v,a.parent)}),a.edges.forEach(a=>{b.setEdge({v:a.v,w:a.w,name:a.name},a.value)}),b}m(t,{read:()=>v,write:()=>u});var w={};m(w,{CycleException:()=>I,bellmanFord:()=>y,components:()=>z,dijkstra:()=>C,dijkstraAll:()=>D,findCycles:()=>F,floydWarshall:()=>H,isAcyclic:()=>K,postorder:()=>M,preorder:()=>N,prim:()=>O,shortestPaths:()=>P,tarjan:()=>E,topsort:()=>J});var x=()=>1;function y(a,b,c,d){return function(a,b,c,d){let e={},f,g=0,h=a.nodes(),i=function(a){let 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){let 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,predecessor:""}});let k=h.length;for(let a=1;a<k&&(f=!1,g++,j(),f);a++);if(g===k-1&&(f=!1,j(),f))throw Error("The graph contains a negative weight cycle");return e}(a,String(b),c||x,d||function(b){return a.outEdges(b)})}function z(a){let b={},c=[],d;return a.nodes().forEach(function(e){d=[],function c(e){e in b||(b[e]=!0,d.push(e),a.successors(e).forEach(c),a.predecessors(e).forEach(c))}(e),d.length&&c.push(d)}),c}var A=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(a=>a.key)}has(a){return a in this._keyIndices}priority(a){let 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){let c=this._keyIndices,d=String(a);if(!(d in c)){let a=this._arr,e=a.length;return c[d]=e,a.push({key:d,priority:b}),this._decrease(e),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key}decrease(a,b){let c=this._keyIndices[a];if(void 0===c)throw Error(`Key not found: ${a}`);let d=this._arr[c].priority;if(b>d)throw Error(`New priority is greater than current priority. Key: ${a} Old: ${d} New: ${b}`);this._arr[c].priority=b,this._decrease(c)}_heapify(a){let 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){let b=this._arr,c=b[a].priority,d;for(;0!==a&&!(b[d=a>>1].priority<c);)this._swap(a,d),a=d}_swap(a,b){let 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}},B=()=>1;function C(a,b,c,d){return function(a,b,c,d){let e={},f=new A,g,h,i=function(a){let b=a.v!==g?a.v:a.w,d=e[b],i=c(a),j=h.distance+i;if(i<0)throw Error("dijkstra does not allow negative edge weights. Bad edge: "+a+" Weight: "+i);j<d.distance&&(d.distance=j,d.predecessor=g,f.decrease(b,j))};for(a.nodes().forEach(function(a){let c=a===b?0:1/0;e[a]={distance:c,predecessor:""},f.add(a,c)});f.size()>0&&(h=e[g=f.removeMin()]).distance!==1/0;)d(g).forEach(i);return e}(a,String(b),c||B,d||function(b){return a.outEdges(b)})}function D(a,b,c){return a.nodes().reduce(function(d,e){return d[e]=C(a,e,b,c),d},{})}function E(a){let b=0,c=[],d={},e=[];return a.nodes().forEach(function(f){f in d||function f(g){let h=d[g]={onStack:!0,lowlink:b,index:b++};if(c.push(g),a.successors(g).forEach(function(a){a in d?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){let a=[],b;do d[b=c.pop()].onStack=!1,a.push(b);while(g!==b)e.push(a)}}(f)}),e}function F(a){return E(a).filter(function(b){return b.length>1||1===b.length&&a.hasEdge(b[0],b[0])})}var G=()=>1;function H(a,b,c){var d,e,f;let g,h;return d=a,e=b||G,f=c||function(b){return a.outEdges(b)},g={},(h=d.nodes()).forEach(function(a){g[a]={},g[a][a]={distance:0,predecessor:""},h.forEach(function(b){a!==b&&(g[a][b]={distance:1/0,predecessor:""})}),f(a).forEach(function(b){let c=b.v===a?b.w:b.v,d=e(b);g[a][c]={distance:d,predecessor:a}})}),h.forEach(function(a){let b=g[a];h.forEach(function(c){let d=g[c];h.forEach(function(c){let e=d[a],f=b[c],g=d[c],h=e.distance+f.distance;h<g.distance&&(g.distance=h,g.predecessor=f.predecessor)})})}),g}var I=class extends Error{constructor(...a){super(...a)}};function J(a){let b={},c={},d=[];if(a.sinks().forEach(function e(f){if(f in c)throw new I;f in b||(c[f]=!0,b[f]=!0,a.predecessors(f).forEach(e),delete c[f],d.push(f))}),Object.keys(b).length!==a.nodeCount())throw new I;return d}function K(a){try{J(a)}catch(a){if(a instanceof I)return!1;throw a}return!0}function L(a,b,c){var d,e,f;let g,h;return d=b,e=function(a,b){return a.push(b),a},f=[],Array.isArray(d)||(d=[d]),g=b=>{var c;return null!=(c=a.isDirected()?a.successors(b):a.neighbors(b))?c:[]},h={},d.forEach(function(b){if(!a.hasNode(b))throw Error("Graph does not have node: "+b);f=function a(b,c,d,e,f,g,h){return c in e||(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,h,g,e,f)}),f}function M(a,b){return L(a,b,"post")}function N(a,b){return L(a,b,"pre")}function O(a,b){let c=new n,d={},e=new A,f;function g(a){let c=a.v===f?a.w:a.v,g=e.priority(c);if(void 0!==g){let h=b(a);h<g&&(d[c]=f,e.decrease(c,h))}}if(0===a.nodeCount())return c;a.nodes().forEach(function(a){e.add(a,1/0),c.setNode(a)}),e.decrease(a.nodes()[0],0);let h=!1;for(;e.size()>0;){if((f=e.removeMin())in d)c.setEdge(f,d[f]);else{if(h)throw Error("Input graph is not connected: "+a);h=!0}a.nodeEdges(f).forEach(g)}return c}function P(a,b,c,d){return function(a,b,c,d){if(void 0===c)return C(a,b,c,d);let e=!1,f=a.nodes();for(let g=0;g<f.length;g++){let h=d(f[g]);for(let a=0;a<h.length;a++){let b=h[a],d=b.v===f[g]?b.v:b.w,i=d===b.v?b.w:b.v;0>c({v:d,w:i})&&(e=!0)}if(e)return y(a,b,c,d)}return C(a,b,c,d)}(a,b,c,null!=d?d:b=>{let c=a.outEdges(b);return null!=c?c:[]})}function Q(a,b,c,d){let e=d;for(;a.hasNode(e);)e=d+""+ ++Z;return c.dummy=b,a.setNode(e,c),e}function R(a){let b=new n({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}function S(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}}function T(a){let b=$(W(a)+1).map(()=>[]);return a.nodes().forEach(c=>{let d=a.node(c),e=d.rank;void 0!==e&&(b[e]||(b[e]=[]),b[e][d.order]=c)}),b}function U(a,b,c,d){let e={width:0,height:0};return arguments.length>=4&&(e.rank=c,e.order=d),Q(a,"border",e,b)}function V(a,b){return b.length>65535?a(...(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).map(b=>a(...b))):a(...b)}function W(a){return V(Math.max,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?5e-324:c}))}function X(a,b){let c=Date.now();try{return b()}finally{console.log(a+" time: "+(Date.now()-c)+"ms")}}function Y(a,b){return b()}var Z=0;function $(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 _(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c}function aa(a,b){let c;return c="string"==typeof b?a=>a[b]:b,Object.entries(a).reduce((a,[b,d])=>(a[b]=c(d,b),a),{})}var ab=class{constructor(){((a,b,c)=>{let d;return(d="symbol"!=typeof b?b+"":b)in a?h(a,d,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[d]=c})(this,"_sentinel");let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,b=a._prev;if(b!==a)return ac(b),b}enqueue(a){let b=this._sentinel;a._prev&&a._next&&ac(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,ad)),c=c._prev;return"["+a.join(", ")+"]"}};function ac(a){a._prev._next=a._next,a._next._prev=a._prev,delete a._next,delete a._prev}function ad(a,b){if("_next"!==a&&"_prev"!==a)return b}var ae=()=>1;function af(a,b,c,d,e){let f=[],g=e?f: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,ag(b,c,h)}),(a.outEdges(d.v)||[]).forEach(d=>{let e=a.edge(d),f=d.w,g=a.node(f);g.in-=e,ag(b,c,g)}),a.removeNode(d.v),g}function ag(a,b,c){var d,e,f;c.out?c.in?null==(f=a[c.out-c.in+b])||f.enqueue(c):null==(e=a[a.length-1])||e.enqueue(c):null==(d=a[0])||d.enqueue(c)}function ah(a){let b={};a.sources().forEach(function c(d){let e=a.node(d);if(Object.hasOwn(b,d))return e.rank;b[d]=!0;let f=a.outEdges(d),g=V(Math.min,f?f.map(b=>null==b?1/0:c(b.w)-a.edge(b).minlen):[]);return g===1/0&&(g=0),e.rank=g})}function ai(a,b){return a.node(b.w).rank-a.node(b.v).rank-a.edge(b).minlen}var aj=function(a){var b,c,d,e;let f,g,h=new n({directed:!1}),i=a.nodes();if(0===i.length)throw Error("Graph must have at least one node");let j=i[0],k=a.nodeCount();for(h.setNode(j,{});b=h,c=a,b.nodes().forEach(function a(d){let e=c.nodeEdges(d);e&&e.forEach(e=>{let f=e.v,g=d===f?e.w:f;b.hasNode(g)||ai(c,e)||(b.setNode(g,{}),b.setEdge(d,g,{}),a(g))})}),b.nodeCount()<k&&(d=h,f=(e=a).edges().reduce((a,b)=>{let c=1/0;return d.hasNode(b.v)!==d.hasNode(b.w)&&(c=ai(e,b)),c<a[0]?[c,b]:a},[1/0,null])[1]);)g=h.hasNode(f.v)?ai(a,f):-ai(a,f),function(a,b,c){a.nodes().forEach(a=>b.node(a).rank+=c)}(h,a,g);return h},{preorder:ak,postorder:al}=w;function am(a){var b;let c,d,e;b=a,e=new n().setGraph(b.graph()),b.nodes().forEach(a=>e.setNode(a,b.node(a))),b.edges().forEach(a=>{let c=e.edge(a.v,a.w)||{weight:0,minlen:1},d=b.edge(a);e.setEdge(a.v,a.w,{weight:c.weight+d.weight,minlen:Math.max(c.minlen,d.minlen)})}),ah(a=e);let f=aj(a);for(ap(f),an(f,a);c=aq(f);)d=ar(f,a,c),as(f,a,c,d)}function an(a,b){let c=al(a,a.nodes());(c=c.slice(0,c.length-1)).forEach(c=>{var d,e,f;let g;return d=a,e=b,f=c,g=d.node(f).parent,void(d.edge(f,g).cutvalue=ao(d,e,f))})}function ao(a,b,c){let d=a.node(c).parent,e=!0,f=b.edge(c,d),g=0;f||(e=!1,f=b.edge(d,c)),g=f.weight;let h=b.nodeEdges(c);return h&&h.forEach(f=>{let h=f.v===c,i=h?f.w:f.v;if(i!==d){var j,k,l;let d=h===e,m=b.edge(f).weight;if(g+=d?m:-m,j=a,k=c,l=i,j.hasEdge(k,l)){let b=a.edge(c,i).cutvalue;g+=d?-b:b}}}),g}function ap(a,b){arguments.length<2&&(b=a.nodes()[0]),function a(b,c,d,e,f){let g=d,h=b.node(e);c[e]=!0;let i=b.neighbors(e);return i&&i.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 aq(a){return a.edges().find(b=>a.edge(b).cutvalue<0)}function ar(a,b,c){let d=c.v,e=c.w;b.hasEdge(d,e)||(d=c.w,e=c.v);let f=a.node(d),g=a.node(e),h=f,i=!1;return f.lim>g.lim&&(h=g,i=!0),b.edges().filter(b=>i===at(a,a.node(b.v),h)&&i!==at(a,a.node(b.w),h)).reduce((a,c)=>ai(b,c)<ai(b,a)?c:a)}function as(a,b,c,d){let e=c.v,f=c.w;a.removeEdge(e,f),a.setEdge(d.v,d.w,{}),ap(a),an(a,b),function(a,b){let c=a.nodes().find(b=>!a.node(b).parent);if(!c)return;let d=ak(a,[c]);(d=d.slice(1)).forEach(c=>{let d=a.node(c).parent,e=b.edge(c,d),f=!1;e||(e=b.edge(d,c),f=!0),b.node(c).rank=b.node(d).rank+(f?e.minlen:-e.minlen)})}(a,b)}function at(a,b,c){return c.low<=b.lim&&b.lim<=c.lim}am.initLowLimValues=ap,am.initCutValues=an,am.calcCutValue=ao,am.leaveEdge=aq,am.enterEdge=ar,am.exchangeEdges=as;function au(a,b,c,d,e,f){let g=e[b][f-1],h=Q(a,"border",{width:0,height:0,rank:f,borderType:b},c);e[b][f]=h,a.setParent(h,d),g&&a.setEdge(g,h,{weight:1})}function av(a){a.nodes().forEach(b=>aw(a.node(b))),a.edges().forEach(b=>aw(a.edge(b)))}function aw(a){let b=a.width;a.width=a.height,a.height=b}function ax(a){a.y=-a.y}function ay(a){let b=a.x;a.x=a.y,a.y=b}function az(a,b,c){let d;for(;b.length&&(d=b[b.length-1]).i<=c;)b.pop(),a.push(d.vs),c++;return c}function aA(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){var e;let f,g;return e=d.get(b)||[],f=function(a){let b;for(;a.hasNode(b="_root"+ ++Z););return b}(a),g=new n({compound:!0}).setGraph({root:f}).setDefaultNodeLabel(b=>a.node(b)),e.forEach(d=>{let e=a.node(d),h=a.parent(d);if(e.rank===b||e.minRank<=b&&b<=e.maxRank){g.setNode(d),g.setParent(d,h||f);let i=a[c](d);i&&i.forEach(b=>{let c=b.v===d?b.w:b.v,e=g.edge(c,d),f=void 0!==e?e.weight:0;g.setEdge(c,d,{weight:a.edge(b).weight+f})}),Object.hasOwn(e,"minRank")&&g.setNode(d,{borderLeft:e.borderLeft[b],borderRight:e.borderRight[b]})}}),g})}function aB(a,b){Object.values(b).forEach(b=>b.forEach((b,c)=>a.node(b).order=c))}function aC(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];d||(a[b]=d={}),d[c]=!0}var aD=["nodesep","edgesep","ranksep","marginx","marginy"],aE={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},aF=["acyclicer","ranker","rankdir","align","rankalign"],aG=["width","height","rank"],aH={width:0,height:0},aI=["minlen","weight","width","height","labeloffset"],aJ={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},aK=["labelpos"];function aL(a,b){return aa(_(a,b),Number)}function aM(a){let b={};return a&&Object.entries(a).forEach(([a,c])=>{"string"==typeof a&&(a=a.toLowerCase()),b[a]=c}),b}var aN=function(a,b={}){let c=b.debugTiming?X:Y;return c("layout",()=>{let d=c(" buildLayoutGraph",()=>{var b;let c,d;return b=a,c=new n({multigraph:!0,compound:!0}),d=aM(b.graph()),c.setGraph(Object.assign({},aE,aL(d,aD),_(d,aF))),b.nodes().forEach(a=>{let d=aL(aM(b.node(a)),aG);Object.keys(aH).forEach(a=>{void 0===d[a]&&(d[a]=aH[a])}),c.setNode(a,d);let e=b.parent(a);void 0!==e&&c.setParent(a,e)}),b.edges().forEach(a=>{let d=aM(b.edge(a));c.setEdge(a,Object.assign({},aJ,aL(d,aI),_(d,aK)))}),c});return c(" runLayout",()=>{var a,e,f;return a=d,e=c,f=b,void(e(" 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)}))}),e(" removeSelfEdges",()=>{var b;(b=a).edges().forEach(a=>{if(a.v===a.w){let c=b.node(a.v);c.selfEdges||(c.selfEdges=[]),c.selfEdges.push({e:a,label:b.edge(a)}),b.removeEdge(a)}})}),e(" acyclic",()=>{var b,c;let d,e,f;("greedy"===a.graph().acyclicer?function(a,b){var c,d;let e,f,g,h,i;if(1>=a.nodeCount())return[];let j=(c=a,d=b||ae,e=new n,f=0,g=0,c.nodes().forEach(a=>{e.setNode(a,{v:a,in:0,out:0})}),c.edges().forEach(a=>{let b=e.edge(a.v,a.w)||0,c=d(a);e.setEdge(a.v,a.w,b+c);let h=e.node(a.v),i=e.node(a.w);g=Math.max(g,h.out+=c),f=Math.max(f,i.in+=c)}),h=(function(a){let b=[];for(let c=0;c<a;c++)b.push(c);return b})(g+f+3).map(()=>new ab),i=f+1,e.nodes().forEach(a=>{ag(h,i,e.node(a))}),{graph:e,buckets:h,zeroIdx:i});return(function(a,b,c){var d;let e=[],f=b[b.length-1],g=b[0],h;for(;a.nodeCount();){for(;h=g.dequeue();)af(a,b,c,h);for(;h=f.dequeue();)af(a,b,c,h);if(a.nodeCount()){for(let f=b.length-2;f>0;--f)if(h=null==(d=b[f])?void 0:d.dequeue()){e=e.concat(af(a,b,c,h,!0)||[]);break}}}return e})(j.graph,j.buckets,j.zeroIdx).flatMap(b=>a.outEdges(b.v,b.w)||[])}(a,(b=a,a=>b.edge(a).weight)):(d=[],e={},f={},(c=a).nodes().forEach(function a(b){Object.hasOwn(f,b)||(f[b]=!0,e[b]=!0,c.outEdges(b).forEach(b=>{Object.hasOwn(e,b.w)?d.push(b):a(b.w)}),delete e[b])}),d)).forEach(b=>{let c=a.edge(b);a.removeEdge(b),c.forwardName=b.name,c.reversed=!0,a.setEdge(b.w,b.v,c,"rev"+ ++Z)})}),e(" nestingGraph.run",()=>{var b,c;let d,e,f,g,h,i;return d=Q(a,"root",{},"_root"),g=2*(f=V(Math.max,Object.values((i={},(b=a).children("\0").forEach(a=>(function a(c,d){let e=b.children(c);e&&e.length&&e.forEach(b=>a(b,d+1)),i[c]=d})(a,1)),e=i)))-1)+1,a.graph().nestingRoot=d,a.edges().forEach(b=>a.edge(b).minlen*=g),h=(c=a).edges().reduce((a,b)=>a+c.edge(b).weight,0)+1,void(a.children("\0").forEach(b=>(function a(b,c,d,e,f,g,h){var i;let j=b.children(h);if(!j.length){h!==c&&b.setEdge(c,h,{weight:0,minlen:d});return}let k=U(b,"_bt"),l=U(b,"_bb"),m=b.node(h);b.setParent(k,h),m.borderTop=k,b.setParent(l,h),m.borderBottom=l,j.forEach(i=>{var j;a(b,c,d,e,f,g,i);let m=b.node(i),n=m.borderTop?m.borderTop:i,o=m.borderBottom?m.borderBottom:i,p=m.borderTop?e:2*e,q=n!==o?1:f-(null!=(j=g[h])?j:0)+1;b.setEdge(k,n,{weight:p,minlen:q,nestingEdge:!0}),b.setEdge(o,l,{weight:p,minlen:q,nestingEdge:!0})}),b.parent(h)||b.setEdge(c,k,{weight:0,minlen:f+(null!=(i=g[h])?i:0)})})(a,d,g,h,f,e,b)),a.graph().nodeRankFactor=g)}),e(" rank",()=>(function(a){let b=a.graph().ranker;if("function"==typeof b)return b(a);switch(b){case"network-simplex":default:am(a);break;case"tight-tree":var c;ah(c=a),aj(c);break;case"longest-path":ah(a);case"none":}})(R(a))),e(" 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};Q(b,"edge-proxy",d,"_ep")}})}),e(" removeEmptyRanks",()=>{let b,c,d,e;return b=V(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)}),d=0,e=a.graph().nodeRankFactor,void 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)})}),e(" nestingGraph.cleanup",()=>{let b;return b=a.graph(),void(a.removeNode(b.nestingRoot),delete b.nestingRoot,a.edges().forEach(b=>{a.edge(b).nestingEdge&&a.removeEdge(b)}))}),e(" normalizeRanks",()=>{let b;return b=V(Math.min,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?Number.MAX_VALUE:c})),void a.nodes().forEach(c=>{let d=a.node(c);Object.hasOwn(d,"rank")&&(d.rank-=b)})}),e(" 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)}),e(" 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))})}),e(" normalize.run",()=>{a.graph().dummyChains=[],a.edges().forEach(b=>(function(a,b){let c,d,e,f=b.v,g=a.node(f).rank,h=b.w,i=a.node(h).rank,j=b.name,k=a.edge(b),l=k.labelRank;if(i!==g+1){for(a.removeEdge(b),e=0,++g;g<i;++e,++g)k.points=[],c=Q(a,"edge",d={width:0,height:0,edgeLabel:k,edgeObj:b,rank:g},"_d"),g===l&&(d.width=k.width,d.height=k.height,d.dummy="edge-label",d.labelpos=k.labelpos),a.setEdge(f,c,{weight:k.weight},j),0===e&&a.graph().dummyChains.push(c),f=c;a.setEdge(f,h,{weight:k.weight},j)}})(a,b))}),e(" parentDummyChains",()=>{var b,c;let d,e,f;return f=(d={},e=0,(c=b=a).children("\0").forEach(function a(b){let f=e;c.children(b).forEach(a),d[b]={low:f,lim:e++}}),d),void b.graph().dummyChains.forEach(a=>{let c=b.node(a),d=c.edgeObj,e=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;i=c;do e.push(i=a.parent(i));while(i&&(b[i].low>g||h>b[i].lim))let j=i,k=d;for(;(k=a.parent(k))!==j;)f.push(k);return{path:e.concat(f.reverse()),lca:j}}(b,f,d.v,d.w),g=e.path,h=e.lca,i=0,j=g[0],k=!0;for(;a!==d.w;){if(c=b.node(a),k){for(;(j=g[i])!==h&&b.node(j).maxRank<c.rank;)i++;j===h&&(k=!1)}if(!k){for(;i<g.length-1&&b.node(g[i+1]).minRank<=c.rank;)i++;j=g[i]}void 0!==j&&b.setParent(a,j),a=b.successors(a)[0]}})}),e(" addBorderSegments",()=>{var b;(b=a).children("\0").forEach(function a(c){let d=b.children(c),e=b.node(c);if(d.length&&d.forEach(a),Object.hasOwn(e,"minRank")){e.borderLeft=[],e.borderRight=[];for(let a=e.minRank,d=e.maxRank+1;a<d;++a)au(b,"borderLeft","_bl",c,e,a),au(b,"borderRight","_br",c,e,a)}})}),e(" order",()=>(function a(b,c={}){let d,e,f;if("function"==typeof c.customOrder)return void c.customOrder(b,a);let g=W(b),h=aA(b,$(1,g+1),"inEdges"),i=aA(b,$(g-1,-1,-1),"outEdges"),j=(d={},f=$(V(Math.max,(e=b.nodes().filter(a=>!b.children(a).length)).map(a=>b.node(a).rank))+1).map(()=>[]),e.sort((a,c)=>b.node(a).rank-b.node(c).rank).forEach(function a(c){if(d[c])return;d[c]=!0,f[b.node(c).rank].push(c);let e=b.successors(c);e&&e.forEach(a)}),f);if(aB(b,j),c.disableOptimalOrderHeuristic)return;let k=1/0,l,m=c.constraints||[];for(let a=0,c=0;c<4;++a,++c){(function(a,b,c){let d=new n;a.forEach(function(a){var e;let f,g;c.forEach(a=>d.setEdge(a.left,a.right));let h=a.graph().root,i=function a(b,c,d,e){var f;let g,h,i,j,k,l,m,n,o,p,q=b.children(c),r=b.node(c),s=r?r.borderLeft:void 0,t=r?r.borderRight:void 0,u={};s&&(q=q.filter(a=>a!==s&&a!==t));let v=function(a,b=[]){return b.map(b=>{let c=a.inEdges(b);if(!c||!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}}})}(b,q);v.forEach(c=>{if(b.children(c.v).length){var f,g;let h=a(b,c.v,d,e);u[c.v]=h,Object.hasOwn(h,"barycenter")&&(f=c,g=h,void 0!==f.barycenter?(f.barycenter=(f.barycenter*f.weight+g.barycenter*g.weight)/(f.weight+g.weight),f.weight+=g.weight):(f.barycenter=g.barycenter,f.weight=g.weight))}});let w=(g={},v.forEach((a,b)=>{let c={indegree:0,in:[],out:[],vs:[a.v],i:b};void 0!==a.barycenter&&(c.barycenter=a.barycenter,c.weight=a.weight),g[a.v]=c}),d.edges().forEach(a=>{let b=g[a.v],c=g[a.w];void 0!==b&&void 0!==c&&(c.indegree++,b.out.push(c))}),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=>_(a,["vs","i","barycenter","weight"]))}(Object.values(g).filter(a=>!a.indegree)));!function(a,b){a.forEach(a=>{a.vs=a.vs.flatMap(a=>b[a]?b[a].vs:a)})}(w,u);let x=(j=(f=a=>Object.hasOwn(a,"barycenter"),h={lhs:[],rhs:[]},w.forEach(a=>{f(a)?h.lhs.push(a):h.rhs.push(a)}),i=h).lhs,k=i.rhs.sort((a,b)=>b.i-a.i),l=[],m=0,n=0,o=0,j.sort(function(a){return(b,c)=>b.barycenter<c.barycenter?-1:b.barycenter>c.barycenter?1:a?c.i-b.i:b.i-c.i}(!!e)),o=az(l,k,o),j.forEach(a=>{o+=a.vs.length,l.push(a.vs),m+=a.barycenter*a.weight,n+=a.weight,o=az(l,k,o)}),p={vs:l.flat(1)},n&&(p.barycenter=m/n,p.weight=n),p);if(s&&t){x.vs=[s,x.vs,t].flat(1);let a=b.predecessors(s);if(a&&a.length){let c=b.node(a[0]),d=b.predecessors(t),e=b.node(d[0]);Object.hasOwn(x,"barycenter")||(x.barycenter=0,x.weight=0),x.barycenter=(x.barycenter*x.weight+c.order+e.order)/(x.weight+2),x.weight+=2}}return x}(a,h,d,b);i.vs.forEach((b,c)=>a.node(b).order=c),e=i.vs,f={},e.forEach(b=>{let c=a.parent(b),e,h;for(;c;){if((e=a.parent(c))?(h=f[e],f[e]=c):(h=g,g=c),h&&h!==c)return void d.setEdge(h,c);c=e}})})})(a%2?h:i,a%4>=2,m),j=T(b);let d=function(a,b){let c=0;for(let d=1;d<b.length;++d)c+=function(a,b,c){var d;let e=(d=c.map((a,b)=>b),c.reduce((a,b,c)=>(a[b]=d[c],a),{})),f=b.flatMap(b=>{let c=a.outEdges(b);return c?c.map(b=>({pos:e[b.w],weight:a.edge(b).weight})).sort((a,b)=>a.pos-b.pos):[]}),g=1;for(;g<c.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[d-1],b[d]);return c}(b,j);d<k?(c=0,l=Object.assign({},j),k=d):d===k&&(l=structuredClone(j))}aB(b,l)})(a,f)),e(" insertSelfEdges",()=>{var b;T(b=a).forEach(a=>{let c=0;a.forEach((a,d)=>{let e=b.node(a);e.order=d+c,(e.selfEdges||[]).forEach(a=>{Q(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})})}),e(" adjustCoordinateSystem",()=>{var b;let c;("lr"===(c=null==(b=a.graph().rankdir)?void 0:b.toLowerCase())||"rl"===c)&&av(a)}),e(" position",()=>{var b,c,d,e;let f,g,h,i,j,k,l,m,o,p,q,r,s,t,u;q=T(e=b=R(b=a)),s=(r=e.graph()).ranksep,t=r.rankalign,u=0,q.forEach(a=>{let b=a.reduce((a,b)=>{var c;let d=null!=(c=e.node(b).height)?c:0;return a>d?a:d},0);a.forEach(a=>{let c=e.node(a);"top"===t?c.y=u+c.height/2:"bottom"===t?c.y=u+b-c.height/2:c.y=u+b/2}),u+=b+s}),Object.entries((g=T(c=b),h=Object.assign((f={},g.length&&g.reduce(function(a,b){let d=0,e=0,g=a.length,h=b[b.length-1];return b.forEach((a,i)=>{let j=function(a,b){if(a.node(b).dummy){let c=a.predecessors(b);if(c)return c.find(b=>a.node(b).dummy)}}(c,a),k=j?c.node(j).order:g;(j||a===h)&&(b.slice(e,i+1).forEach(a=>{let b=c.predecessors(a);b&&b.forEach(b=>{let e=c.node(b),g=e.order;(g<d||k<g)&&!(e.dummy&&c.node(a).dummy)&&aC(f,b,a)})}),e=i+1,d=k)}),b}),f),function(a,b){let c={};function d(b,d,e,f,g){$(d,e).forEach(d=>{let e=b[d];if(void 0!==e&&a.node(e).dummy){let b=a.predecessors(e);b&&b.forEach(b=>{if(void 0===b)return;let d=a.node(b);d.dummy&&(d.order<f||d.order>g)&&aC(c,b,e)})}})}return b.length&&b.reduce(function(b,c){let e=-1,f=-1,g=0;return c.forEach((h,i)=>{if("border"===a.node(h).dummy){let b=a.predecessors(h);if(b&&b.length){let h=b[0];if(void 0===h)return;f=a.node(h).order,d(c,g,i,e,f),g=i,e=f}}d(c,g,c.length,f,b.length)}),c}),c}(c,g)),i={},["u","d"].forEach(a=>{j="u"===a?g:Object.values(g).reverse(),["l","r"].forEach(b=>{var d,e;let f,g,k;"r"===b&&(j=j.map(a=>Object.values(a).reverse()));let l=(d=j,e=b=>("u"===a?c.predecessors(b):c.successors(b))||[],f={},g={},k={},d.forEach(a=>{a.forEach((a,b)=>{f[a]=a,g[a]=a,k[a]=b})}),d.forEach(a=>{let b=-1;a.forEach(a=>{let c=e(a);if(c&&c.length){let d=c.sort((a,b)=>{let c=k[a],d=k[b];return(void 0!==c?c:0)-(void 0!==d?d:0)}),e=(d.length-1)/2;for(let c=Math.floor(e),i=Math.ceil(e);c<=i;++c){let e=d[c];if(void 0===e)continue;let i=k[e];if(void 0!==i&&g[a]===a&&b<i&&!function(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];return void 0!==d&&Object.hasOwn(d,c)}(h,a,e)){let c=f[e];void 0!==c&&(g[e]=a,g[a]=f[a]=c,b=i)}}}})}),{root:f,align:g}),m=function(a,b,c,d,e=!1){var f,g,h,i,j,k,l;let m,o,p,q={},r=(f=a,g=b,h=c,i=e,m=new n,p=(j=(o=f.graph()).nodesep,k=o.edgesep,l=i,(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+=l?g:-g),g=void 0,f+=(d.dummy?k:j)/2,f+=(e.dummy?k:j)/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+=l?g:-g),f}),g.forEach(a=>{let b;a.forEach(a=>{let c=h[a];if(void 0!==c){if(m.setNode(c),void 0!==b){let d=h[b];if(void 0!==d){let e=m.edge(d,c);m.setEdge(d,c,Math.max(p(f,a,b),e||0))}}b=a}})}),m),s=e?"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){let b=r.inEdges(a);b?q[a]=b.reduce((a,b)=>{var c;let d=null!=(c=q[b.v])?c:0,e=r.edge(b);return Math.max(a,d+(void 0!==e?e:0))},0):q[a]=0},function(a){return r.predecessors(a)||[]}),t(function(b){let c=r.outEdges(b),d=1/0;c&&(d=c.reduce((a,b)=>{let c=q[b.w],d=r.edge(b);return Math.min(a,(void 0!==c?c:0)-(void 0!==d?d:0))},1/0));let e=a.node(b);d!==1/0&&e.borderType!==s&&(q[b]=Math.max(void 0!==q[b]?q[b]:0,d))},function(a){return r.successors(a)||[]}),Object.keys(d).forEach(a=>{var b;let d=c[a];void 0!==d&&(q[a]=null!=(b=q[d])?b:0)}),q}(c,j,l.root,l.align,"r"===b);"r"===b&&(m=aa(m,a=>-a)),i[a+b]=m})}),k=Object.values(i).reduce((a,b)=>{let d=-1/0,e=1/0;Object.entries(b).forEach(([a,b])=>{var f,g;let h=(f=c,g=a,f.node(g).width/2);d=Math.max(b+h,d),e=Math.min(b-h,e)});let f=d-e;return f<a[0]&&(a=[f,b]),a},[1/0,null])[1],m=V(Math.min,l=Object.values(k)),o=V(Math.max,l),["u","d"].forEach(a=>{["l","r"].forEach(b=>{let c=a+b,d=i[c];if(!d||d===k)return;let e=Object.values(d),f=m-V(Math.min,e);"l"!==b&&(f=o-V(Math.max,e)),f&&(i[c]=aa(d,a=>a+f))})}),d=c.graph().align,(p=i.ul)?aa(p,(a,b)=>{var c,e;if(d){let a=i[d.toLowerCase()];if(a&&void 0!==a[b])return a[b]}let f=Object.values(i).map(a=>{let c=a[b];return void 0!==c?c:0}).sort((a,b)=>a-b);return((null!=(c=f[1])?c:0)+(null!=(e=f[2])?e:0))/2}):{})).forEach(([a,c])=>b.node(a).x=c)}),e(" positionSelfEdges",()=>{var b;(b=a).nodes().forEach(a=>{let c=b.node(a);if("selfedge"===c.dummy){let 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}})}),e(" 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)})}),e(" normalize.undo",()=>{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)})}),e(" 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}})}),e(" undoCoordinateSystem",()=>{var b,c,d;let e;("bt"===(e=null==(b=a.graph().rankdir)?void 0:b.toLowerCase())||"rl"===e)&&((c=a).nodes().forEach(a=>ax(c.node(a))),c.edges().forEach(a=>{var b;let d=c.edge(a);null==(b=d.points)||b.forEach(ax),Object.hasOwn(d,"y")&&ax(d)})),("lr"===e||"rl"===e)&&((d=a).nodes().forEach(a=>ay(d.node(a))),d.edges().forEach(a=>{var b;let c=d.edge(a);null==(b=c.points)||b.forEach(ay),Object.hasOwn(c,"x")&&ay(c)}),av(a))}),e(" 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)),e(" 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(S(d,f)),c.points.push(S(e,g))})}),e(" reversePoints",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);c.reversed&&c.points.reverse()})}),e(" acyclic.undo",()=>{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)}})}))}),c(" updateInputGraph",()=>{var b,c;return b=a,c=d,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)}),d})};let aO={direction:"LR",ranksep:200,nodesep:30};function aP(a="ltr"){return{...aO,direction:"rtl"===a?"RL":"LR"}}let aQ={featureNode:{width:388,height:140},repositoryNode:{width:400,height:140}};function aR(a,b){let c=a.data;return c&&"number"==typeof c.width&&"number"==typeof c.height?{width:c.width,height:c.height}:aQ[a.type??""]??b}function aS(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 i.Graph({multigraph:!0});h.setDefaultEdgeLabel(()=>({})),h.setGraph({rankdir:d,ranksep:f,nodesep:g});let j=new Set;for(let a of b)j.add(a.source),j.add(a.target);let k=a.filter(a=>j.has(a.id)),l=a.filter(a=>!j.has(a.id));for(let a of k){let b=aR(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);aN(h);let{targetPosition:m,sourcePosition:n}=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),o="LR"===d||"RL"===d,p=new Map;for(let a of k){let b=h.node(a.id),c=aR(a,e);p.set(a.id,{cx:b.x,cy:b.y,w:c.width,h:c.height})}let q=0;for(let a of p.values()){q=o?a.cx:a.cy;break}for(let a of l){let b=aR(a,e);p.set(a.id,{cx:o?q:0,cy:o?0:q,w:b.width,h:b.height})}let r=new Map;for(let a of b)p.has(a.source)&&p.has(a.target)&&(r.has(a.source)||r.set(a.source,[]),r.get(a.source).push(a.target));let s=new Map;for(let b=0;b<a.length;b++)s.set(a[b].id,b);for(let[,a]of r)a.sort((a,b)=>(s.get(a)??0)-(s.get(b)??0));let t=new Set;for(let a of r.values())for(let b of a)t.add(b);let u=[...[...j].filter(a=>p.has(a)&&!t.has(a)),...l.map(a=>a.id)];u.sort((a,b)=>(s.get(a)??0)-(s.get(b)??0));let v=new Map;for(let a of u)!function a(b){if(v.has(b))return v.get(b);let c=p.get(b),d=o?c.h:c.w,e=r.get(b);if(!e||0===e.length)return v.set(b,d),d;let f=0;for(let b of e)f+=a(b);let h=Math.max(d,f+=(e.length-1)*g);return v.set(b,h),h}(a);let w=0;for(let a of u){let b=v.get(a)??0;!function a(b,c){let d=p.get(b);o?d.cy=c:d.cx=c;let e=r.get(b);if(!e||0===e.length)return;let f=0;for(let a of e)f+=v.get(a)??0;let h=c-(f+=(e.length-1)*g)/2;for(let b of e){let c=v.get(b)??0;a(b,h+c/2),h+=c+g}}(a,w+b/2),w+=b+g}let x=[];for(let b of a){let a=p.get(b.id);a&&x.push({...b,targetPosition:m,sourcePosition:n,position:{x:a.cx-a.w/2,y:a.cy-a.h/2}})}return{nodes:x,edges:[...b]}}function aT(a,b){let c=new Map;for(let a of b)"dependencyEdge"===a.type&&c.set(a.target,a.source);let d=new Map,e=new Map;for(let b of a)"featureNode"===b.type?d.set(b.id,{nodeId:b.id,data:b.data,parentNodeId:c.get(b.id)}):"repositoryNode"===b.type&&e.set(b.id,{nodeId:b.id,data:b.data});return{featureMap:d,repoMap:e}}function aU(a,b){return(void 0===b.state||b.state===a.state)&&(void 0===b.lifecycle||b.lifecycle===a.lifecycle)&&(void 0===b.name||b.name===a.name)&&(void 0===b.description||b.description===a.description)}function aV(a,b){if(a.size!==b.size)return!1;for(let[c,d]of a){let a=b.get(c);if(!a||d.parentNodeId!==a.parentNodeId||d.data!==a.data&&JSON.stringify(d.data)!==JSON.stringify(a.data))return!1}return!0}var aW=a.i(6120);let aX=(0,aW.createServerReference)("40264230f863970e48854876df9f3fc11a8bf79378",aW.callServer,void 0,aW.findSourceMapURL,"getFeatureMetadata");var aY=a.i(84871);let aZ=(0,aW.createServerReference)("409e7f6d9000f7ab91dd4401f2543b2147adb23f81",aW.callServer,void 0,aW.findSourceMapURL,"archiveFeature"),a$=(0,aW.createServerReference)("78e46dbafd792b86405e361f7de33fab8345767ddd",aW.callServer,void 0,aW.findSourceMapURL,"deleteFeature");var a_=a.i(93106),a0=a.i(3045),a1=a.i(37303);let a2=(0,aW.createServerReference)("402537786e22ad05934fa43a551ed5b45acf5ff3c0",aW.callServer,void 0,aW.findSourceMapURL,"unarchiveFeature");var a3=a.i(4152);let a4=(0,aW.createServerReference)("404720e2231380d52c29929a6a219b7cc885ea0502",aW.callServer,void 0,aW.findSourceMapURL,"deleteRepository");var a5=a.i(19884);let a6=(0,e.createLogger)("[Polling]"),a7=0;a.s(["useControlCenterState",0,function(a,e){let h=(0,c.useRouter)(),[i,j]=(0,b.useState)(!1),{nodes:k,edges:l,reconcile:m,updateFeature:n,addPendingFeature:o,removeFeature:p,restoreFeature:q,addRepository:r,removeRepository:s,replaceRepository:t,getFeatureRepositoryPath:u,getRepositoryData:v,getRepoMapSize:w,setCallbacks:x,beginMutation:y,endMutation:z,isMutating:A}=function(a,c,d=!1){var e;let f,{i18n:h}=(0,g.useTranslation)(),i=(0,b.useMemo)(()=>aP(h.dir()),[h]),j=(0,b.useMemo)(()=>aT(a,c),[]),[k,l]=(0,b.useState)(j.featureMap),[m,n]=(0,b.useState)(j.repoMap),[o,p]=(0,b.useState)(new Map),q=(0,b.useRef)(new Map),r=(0,b.useRef)(new Set),s=(0,b.useRef)(0),t=(0,b.useRef)(new Set),u=(0,b.useRef)(new Set),v=(0,b.useRef)({}),w=(0,b.useMemo)(()=>({onNodeAction:a=>v.current.onNodeAction?.(a),onNodeSettings:a=>v.current.onNodeSettings?.(a),onFeatureDelete:(a,b,c,d)=>v.current.onFeatureDelete?.(a,b,c,d),onRepositoryAdd:a=>v.current.onRepositoryAdd?.(a),onRepositoryClick:a=>v.current.onRepositoryClick?.(a),onRepositoryDelete:a=>v.current.onRepositoryDelete?.(a),onRetryFeature:a=>v.current.onRetryFeature?.(a),onStartFeature:a=>v.current.onStartFeature?.(a),onArchiveFeature:a=>v.current.onArchiveFeature?.(a),onUnarchiveFeature:a=>v.current.onUnarchiveFeature?.(a)}),[]),x=(0,b.useRef)(k);x.current=k;let y=(0,b.useRef)(m);y.current=m;let z=(0,b.useMemo)(()=>{if(d)return k;let a=new Map;for(let[b,c]of k)"archived"!==c.data.state&&a.set(b,c);return a.size===k.size?k:a},[k,d]),{nodes:A,edges:B}=(e=(0,b.useMemo)(()=>(function(a,b,c,d){let e=[],f=[],g=a=>a.replace(/\\/g,"/"),h=new Map;for(let[a,c]of b)c.data.repositoryPath&&h.set(g(c.data.repositoryPath),a);let i=new Map;for(let[a,c]of[...b.entries()].sort((a,b)=>{let c=a[1].data.createdAt,d=b[1].data.createdAt;return("number"!=typeof c||Number.isNaN(c)?1/0:c)-("number"!=typeof d||Number.isNaN(d)?1/0:d)})){let b={...c.data,...d?.onRepositoryAdd&&{onAdd:()=>d.onRepositoryAdd(a)},...d?.onRepositoryClick&&{onClick:()=>d.onRepositoryClick(a)},...d?.onRepositoryDelete&&{onDelete:d.onRepositoryDelete}};e.push({id:a,type:"repositoryNode",position:{x:0,y:0},data:b})}for(let[b,j,k]of[...[...a.entries()].map(([a,b])=>[a,b,!1]),...[...c.entries()].filter(([b])=>!a.has(b)).map(([a,b])=>[a,b,!0])]){let l="creating"===j.data.state||k,m={...j.data,...!l&&d?.onNodeAction&&{onAction:()=>d.onNodeAction(b)},...!l&&d?.onNodeSettings&&{onSettings:()=>d.onNodeSettings(b)},...!l&&d?.onFeatureDelete&&{onDelete:d.onFeatureDelete},...!l&&"error"===j.data.state&&d?.onRetryFeature&&{onRetry:d.onRetryFeature},...!l&&"pending"===j.data.state&&d?.onStartFeature&&{onStart:d.onStartFeature},...!l&&("running"===j.data.state||"action-required"===j.data.state)&&d?.onStopFeature&&{onStop:d.onStopFeature},...!l&&"archived"!==j.data.state&&"deleting"!==j.data.state&&d?.onArchiveFeature&&{onArchive:d.onArchiveFeature},...!l&&"archived"===j.data.state&&d?.onUnarchiveFeature&&{onUnarchive:d.onUnarchiveFeature}};if(e.push({id:b,type:"featureNode",position:{x:0,y:0},data:m}),j.parentNodeId&&(a.has(j.parentNodeId)||c.has(j.parentNodeId)))f.push({id:`dep-${j.parentNodeId}-${b}`,source:j.parentNodeId,target:b,type:"dependencyEdge"});else{let a=g(j.data.repositoryPath),c=h.get(a)??function(a){if(i.has(a))return i.get(a);let b=`virtual-repo-${a}`,c=a.split("/").filter(Boolean).at(-1)??a;return e.push({id:b,type:"repositoryNode",position:{x:0,y:0},data:{name:c,repositoryPath:a}}),i.set(a,b),b}(a);f.push({id:`edge-${c}-${b}`,source:c,target:b,style:{strokeDasharray:"5 5"}})}}let j=new Set;for(let a of f)"dependencyEdge"===a.type&&j.add(a.source);let k=f.length>0;for(let a of e){let b=a.data;b.showHandles=k,"featureNode"===a.type&&(b.hasChildren=j.has(a.id))}return{nodes:e,edges:f}})(z,m,o,w),[z,m,o,w]),f=(0,b.useRef)({key:"",positions:new Map}),(0,b.useMemo)(()=>{let a=e.nodes.map(a=>a.id).sort().join(","),b=e.edges.map(a=>`${a.source}-${a.target}`).sort().join(","),c=`${a}|${b}|${i.direction}`;if(c!==f.current.key){let a=aS(e.nodes,e.edges,i),b=new Map;for(let c of a.nodes)b.set(c.id,{position:c.position,targetPosition:c.targetPosition,sourcePosition:c.sourcePosition});let d=f.current.positions;if(d.size>0){let c=0,e=0;for(let[a,f]of b){let b=d.get(a);if(b){c=b.position.x-f.position.x,e=b.position.y-f.position.y;break}}if(0!==c||0!==e){for(let a of b.values())a.position={x:a.position.x+c,y:a.position.y+e};for(let b of a.nodes)b.position={x:b.position.x+c,y:b.position.y+e}}}return f.current={key:c,positions:b},a}let{positions:d}=f.current;return{nodes:e.nodes.map(a=>{let b=d.get(a.id);return b?{...a,...b}:a}),edges:e.edges}},[e,i])),C=(0,b.useCallback)((a,b)=>{if(s.current>0)return;let{featureMap:c,repoMap:d}=aT(a,b),e=new Set([...c.values()].map(a=>`${a.data.name}\0${a.data.repositoryPath}`));l(a=>{let b=[...a.entries()].filter(([,a])=>"creating"===a.data.state),d=new Map(c);for(let[a,c]of b){let b=`${c.data.name}\0${c.data.repositoryPath}`;e.has(b)||d.set(a,c)}let f=new Set;for(let[b,c]of a)"deleting"===c.data.state&&(d.has(b)?d.set(b,{...d.get(b),data:{...d.get(b).data,state:"deleting"}}):u.current.has(b)||(d.set(b,c),f.add(b)));for(let[a,b]of(u.current=f,q.current)){let c=d.get(a);c&&(d.set(a,{...c,data:{...c.data,...b}}),q.current.delete(a))}return aV(a,d)?a:d}),p(a=>{if(0===a.size)return a;let b=!1,c=new Map(a);for(let[d,f]of a){let a=`${f.data.name}\0${f.data.repositoryPath}`;e.has(a)&&(c.delete(d),b=!0)}return b?c:a}),n(a=>{let b=new Map(d),c=new Set([...d.values()].map(a=>a.data.repositoryPath));for(let[d,e]of a){if(b.has(d)||c.has(e.data.repositoryPath)){r.current.delete(d);continue}(d.startsWith("repo-temp-")||r.current.has(d))&&b.set(d,e)}return aV(a,b)?a:b})},[]),D=(0,b.useCallback)((a,b)=>{l(c=>{let d=c.get(a);if(!d)return q.current.set(a,{...q.current.get(a),...b}),c;if(q.current.delete(a),aU(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e}),p(c=>{let d=c.get(a);if(!d||aU(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e})},[]),E=(0,b.useCallback)((a,b,c)=>{p(d=>{let e=new Map(d);return e.set(a,{nodeId:a,data:b,parentNodeId:c}),e})},[]),F=(0,b.useCallback)(a=>{p(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),G=(0,b.useCallback)(a=>{l(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),H=(0,b.useCallback)((a,b)=>{l(c=>{let d=new Map(c);return d.set(a,b),d})},[]),I=(0,b.useCallback)((a,b)=>{r.current.add(a),n(c=>{let d=new Map(c);return d.set(a,{nodeId:a,data:b}),d})},[]),J=(0,b.useCallback)(a=>{r.current.delete(a),n(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),K=(0,b.useCallback)((a,b,c)=>{r.current.delete(a),r.current.add(b),n(d=>{if(!d.has(a))return d;let e=new Map(d);return e.delete(a),e.set(b,{nodeId:b,data:c}),e})},[]),L=(0,b.useCallback)(a=>x.current.get(a)?.data.repositoryPath,[]),M=(0,b.useCallback)(a=>y.current.get(a)?.data,[]),N=(0,b.useCallback)(()=>y.current.size,[]),O=(0,b.useCallback)(a=>{v.current=a},[]),P=(0,b.useCallback)(()=>{s.current++},[]),Q=(0,b.useCallback)((a=3e3)=>{let b=setTimeout(()=>{s.current=Math.max(0,s.current-1),t.current.delete(b)},a);t.current.add(b)},[]),R=(0,b.useCallback)(()=>s.current>0,[]);return(0,b.useEffect)(()=>{let a=t.current;return()=>{for(let b of a)clearTimeout(b);a.clear()}},[]),{nodes:A,edges:B,reconcile:C,updateFeature:D,addPendingFeature:E,removePendingFeature:F,removeFeature:G,restoreFeature:H,addRepository:I,removeRepository:J,replaceRepository:K,getFeatureRepositoryPath:L,getRepositoryData:M,getRepoMapSize:N,setCallbacks:O,beginMutation:P,endMutation:Q,isMutating:R}}(a,e,i),B=(0,b.useRef)(k),C=(0,b.useRef)(l);(0,b.useEffect)(()=>{B.current=k,C.current=l},[k,l]);let D=(0,b.useMemo)(()=>a.map(a=>a.id).sort().join(","),[a]),E=(0,b.useMemo)(()=>a.filter(a=>"featureNode"===a.type).map(a=>{let b=a.data;return`${a.id}:${b.state}:${b.lifecycle}`}).sort().join(","),[a]),F=(0,b.useRef)("");(0,b.useEffect)(()=>{let b=`${D}|${E}`;b!==F.current&&(F.current=b,m(a,e))},[D,E,a,e,m]);let G=(0,b.useRef)(new Map),{events:H}=(0,aY.useAgentEventsContext)();(0,b.useEffect)(()=>{let b=G.current;for(let c of a){if("featureNode"!==c.type)continue;let a=c.data,e=b.get(c.id);void 0!==e&&e!==a.state&&(H.some(b=>b.featureId===a.featureId&&(0,f.mapEventTypeToState)(b.eventType)===a.state)||("done"===a.state?d.toast.success(a.name,{description:"Feature completed!"}):"action-required"===a.state?d.toast.warning(a.name,{description:"Waiting for your approval",action:{label:"Review",onClick:()=>h.push(`/feature/${a.featureId}`)}}):"error"===a.state&&d.toast.error(a.name,{description:a.errorMessage??"Agent failed"}))),b.set(c.id,a.state)}},[E,a,H,h]),function({nodesRef:a,updateFeature:c,isMutating:d,beginMutation:e,endMutation:g}){let{events:h}=(0,aY.useAgentEventsContext)(),i=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(i.current>h.length&&(i.current=0),h.length<=i.current)return;let b=h.slice(i.current);for(let{featureId:e,state:g,lifecycle:j}of(i.current=h.length,(0,f.resolveSseEventUpdates)(b)))if(void 0!==g||void 0!==j){let b=`feat-${e}`,f=a.current.find(a=>a.id===b),h=f?f.data.state:void 0;if("deleting"===h||"error"===g&&d()&&"running"===h)continue;c(b,{...void 0!==g&&{state:g},...void 0!==j&&{lifecycle:j}})}},[h,c,d,a]),(0,b.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;e(),c(`feat-${b}`,{state:"running"}),g()};return window.addEventListener("shipit-ai:feature-approved",a),()=>window.removeEventListener("shipit-ai:feature-approved",a)},[c,e,g]);let j=(0,b.useRef)(new Set),k=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(k.current>h.length&&(k.current=0),h.length<=k.current)return;let a=h.slice(k.current);for(let b of(k.current=h.length,a)){if("Feature metadata updated"!==b.message||j.current.has(b.featureId))continue;j.current.add(b.featureId);let a=`feat-${b.featureId}`;aX(b.featureId).then(b=>{b&&c(a,{name:b.name,description:b.description})}).catch(()=>{})}},[h,c])}({nodesRef:B,updateFeature:n,isMutating:A,beginMutation:y,endMutation:z}),(0,b.useEffect)(()=>{a6.debug("polling enabled (15000ms interval)");let a=setInterval(async()=>{if(!document.hidden&&!A())try{let a=await fetch("/api/graph-data");if(!a.ok)throw Error(`status ${a.status}`);let{nodes:b,edges:c}=await a.json();m(b,c)}catch{a6.warn("poll fetch failed — will retry next interval")}},15e3);return()=>{a6.debug("polling disabled"),clearInterval(a)}},[m,A]);let{handleRetryFeature:I,handleStartFeature:J,handleStopFeature:K,handleArchiveFeature:L,handleUnarchiveFeature:M,handleDeleteFeature:N,handleDeleteRepository:O,handleLayout:P,handleAddRepository:Q}=function({nodesRef:a,edgesRef:e,updateFeature:f,removeFeature:g,restoreFeature:h,addRepositoryToMap:i,removeRepository:j,replaceRepository:k,getRepositoryData:l,getRepoMapSize:m,reconcile:n,beginMutation:o,endMutation:p}){let q=(0,c.useRouter)(),r=(0,a5.useSoundAction)("delete"),s=(0,a5.useSoundAction)("create"),t=(0,b.useRef)(0),u=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"running"}),(0,a_.resumeFeature)(a).then(a=>{a.error?(f(b,{state:"error"}),d.toast.error(a.error)):d.toast.success("Feature resumed")}).catch(()=>{f(b,{state:"error"}),d.toast.error("Failed to resume feature")}).finally(()=>p())},[f,o,p]),v=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"running"}),(0,a0.startFeature)(a).then(a=>{a.error?(f(b,{state:"pending"}),d.toast.error(a.error)):d.toast.success("Feature started")}).catch(()=>{f(b,{state:"pending"}),d.toast.error("Failed to start feature")}).finally(()=>p())},[f,o,p]),w=(0,b.useCallback)(a=>{o(),(0,a1.stopFeature)(a).then(a=>{a.error?d.toast.error(a.error):d.toast.success("Agent stopped")}).catch(()=>{d.toast.error("Failed to stop agent")}).finally(()=>p())},[o,p]),x=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"archived"}),aZ(a).then(a=>{a.error?(f(b,{state:"done"}),d.toast.error(a.error)):d.toast.success("Feature archived")}).catch(()=>{f(b,{state:"done"}),d.toast.error("Failed to archive feature")}).finally(()=>p())},[f,o,p]),y=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"done"}),a2(a).then(a=>{a.error?(f(b,{state:"archived"}),d.toast.error(a.error)):d.toast.success("Feature unarchived")}).catch(()=>{f(b,{state:"archived"}),d.toast.error("Failed to unarchive feature")}).finally(()=>p())},[f,o,p]),z=(0,b.useCallback)((b,c,h,i)=>{let j=`feat-${b}`,k=[];if(!0===h){let a=[j];for(;a.length>0;){let b=a.shift();for(let c of e.current)"dependencyEdge"===c.type&&c.source===b&&(k.push(c.target),a.push(c.target))}}let l=new Map;for(let b of[j,...k]){let c=a.current.find(a=>a.id===b);c&&l.set(b,c.data.state)}for(let a of(o(),f(j,{state:"deleting"}),k))f(a,{state:"deleting"});r.play(),q.push("/"),a$(b,c,h,i).then(a=>{if(a.error){for(let[a,b]of l)b&&f(a,{state:b});d.toast.error(a.error)}else for(let a of(g(j),k))g(a)}).catch(()=>{for(let[a,b]of l)b&&f(a,{state:b});d.toast.error("Failed to delete feature")}).finally(()=>p())},[q,r,f,g,o,p,a,e]),A=(0,b.useCallback)(async b=>{let c=`repo-${b}`,f=new Set(e.current.filter(a=>a.source===c).map(a=>a.target)),k=l(c),m=new Map;for(let b of f){let c=a.current.find(a=>a.id===b);c&&m.set(b,{nodeId:b,data:c.data})}let n=()=>{for(let[a,b]of(k&&i(c,k),m))h(a,b)};for(let a of(o(),j(c),f))g(a);try{let a=await a4(b);if(!a.success){d.toast.error(a.error??"Failed to remove repository"),n();return}r.play()}catch{d.toast.error("Failed to remove repository"),n()}finally{p()}},[r,j,g,i,h,l,o,p,a,e]);return{handleRetryFeature:u,handleStartFeature:v,handleStopFeature:w,handleArchiveFeature:x,handleUnarchiveFeature:y,handleDeleteFeature:z,handleDeleteRepository:A,handleLayout:(0,b.useCallback)(b=>{let c=aS(a.current,e.current,{...aP(),direction:b});n(c.nodes,c.edges)},[n,a,e]),handleAddRepository:(0,b.useCallback)(a=>{let b=0===m(),c=`repo-temp-${++t.current}`,e=a.replace(/[\\/]+$/,"").split(/[\\/]/).pop()??a;return o(),i(c,{name:e,repositoryPath:a,id:c,createdAt:Date.now(),gitInfoStatus:"loading"}),(0,a3.addRepository)({path:a,name:e}).then(a=>{if(a.error){j(c),d.toast.error(a.error);return}let b=a.repository;k(c,`repo-${b.id}`,{name:b.name,repositoryPath:b.path,id:b.id,createdAt:b.createdAt instanceof Date?b.createdAt.getTime():Number(b.createdAt)}),s.play()}).catch(()=>{j(c),d.toast.error("Failed to add repository")}).finally(()=>p()),{wasEmpty:b,repoPath:a}},[i,j,k,s,m,o,p])}}({nodesRef:B,edgesRef:C,updateFeature:n,removeFeature:p,restoreFeature:q,addRepositoryToMap:r,removeRepository:s,replaceRepository:t,getRepositoryData:v,getRepoMapSize:w,reconcile:m,beginMutation:y,endMutation:z}),R=(0,b.useCallback)(a=>{},[]);return{nodes:k,edges:l,onNodesChange:R,handleConnect:(0,b.useCallback)(a=>{},[]),handleAddRepository:Q,handleArchiveFeature:L,handleLayout:P,handleDeleteFeature:N,handleRetryFeature:I,handleStartFeature:J,handleStopFeature:K,handleUnarchiveFeature:M,handleDeleteRepository:O,createFeatureNode:(0,b.useCallback)((a,b,c)=>{let d=b?.featureId?`feat-${b.featureId}`:`feature-${Date.now()}-${a7++}`,e={name:b?.name??"New Feature",description:b?.description??"Describe what this feature does",featureId:b?.featureId??`#${d.slice(-4)}`,lifecycle:"requirements",state:b?.state??"running",progress:0,repositoryPath:b?.repositoryPath??"",branch:b?.branch??""};return o(d,e,"dependencyEdge"===c&&a?a:void 0),d},[o]),showArchived:i,setShowArchived:j,getFeatureRepositoryPath:u,getRepositoryData:v,setCallbacks:x}}],16533)},59949,a=>{"use strict";var b=a.i(53083),c=a.i(16790),d=a.i(43707),e=a.i(11321),f=a.i(40674),g=a.i(33177),h=a.i(31271),i=a.i(37545);let j=(0,e.forwardRef)(({width:a=24,height:c=24,...d},e)=>(0,b.jsx)("svg",{ref:e,role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:a,height:c,fill:"currentColor",...d,children:(0,b.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})}));j.displayName="GithubIcon";var k=a.i(29370);a.i(98617);var l=a.i(50040),m=a.i(85536),n=a.i(18948);a.i(38702);var o=a.i(16223);a.i(54250);var p=a.i(1330),q=a.i(86933),r=a.i(32471),s=a.i(8685),t=a.i(83813),u=a.i(65350),v=a.i(7434),w=a.i(28604),x=a.i(30536),y=a.i(74407),z=a.i(25670),A=a.i(6804),B=a.i(73952);a.i(69029);var C=a.i(5623),D=a.i(45670),E=a.i(82934),F=a.i(18662),G=a.i(21333),H=a.i(55628),I=a.i(5555),J=a.i(33419),K=a.i(61583);function L({data:a,selected:d}){let{t:g,i18n:h}=(0,l.useTranslation)("web"),o=(0,f.useRouter)(),p="rtl"===h.dir(),M=p?q.Position.Right:q.Position.Left,N=p?q.Position.Left:q.Position.Right,O=(0,G.useFeatureFlags)(),[P,Q]=(0,e.useState)(!1),R=a.id?`repo-${a.id}`:`repo-${a.name}`,S=(0,J.useTurnStatus)(R),T=(0,H.useRepositoryActions)(a.repositoryPath?{repositoryId:a.id,repositoryPath:a.repositoryPath}:null),U=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),V="Booting"===U.status||"Ready"===U.status,W=(0,e.useCallback)((b,c)=>{if(!a.repositoryPath)return;let d=b.preview?b.preview.slice(0,200):"Unknown conversation",e=["Continue work from a previous agent session.","","## Session Context",`- Session ID: ${b.id}`,`- Messages: ${b.messageCount}`,b.lastMessageAt?`- Last active: ${b.lastMessageAt}`:"",`- Conversation file: ${c}`,"","## Session Preview",`> ${d}`,"","## Instructions","1. Read the full conversation history from the file above","2. Analyze the current state of the repository — what was done, what remains","3. Create or update spec files to accurately reflect the current state and remaining work","4. Continue implementing any unfinished work from the conversation"].filter(Boolean).join("\n"),f=new URLSearchParams({repo:a.repositoryPath,prompt:e});o.push(`/create?${f.toString()}`)},[a.repositoryPath,o]);return(0,b.jsxs)("div",{className:(0,m.cn)("group relative",a.onDelete&&a.id&&"ps-10"),style:{direction:p?"rtl":"ltr"},children:[a.showHandles?(0,b.jsx)(c.Handle,{type:"target",position:M,isConnectable:!1,className:"opacity-0!",style:{top:70}}):null,a.onDelete&&a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"absolute -start-3 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100",children:(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":g("repositoryNode.removeRepository"),"data-testid":"repository-node-delete-button",onClick:a=>{a.stopPropagation(),Q(!0)},className:"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors",children:(0,b.jsx)(u.Trash2,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.removeRepository")})]})})}),(0,b.jsx)(D.Dialog,{open:P,onOpenChange:Q,children:(0,b.jsxs)(D.DialogContent,{className:"max-w-xs",children:[(0,b.jsxs)(D.DialogHeader,{children:[(0,b.jsx)(D.DialogTitle,{children:g("repositoryNode.removeConfirmTitle")}),(0,b.jsx)(D.DialogDescription,{children:g("repositoryNode.removeConfirmDescription",{name:a.name})})]}),(0,b.jsxs)(D.DialogFooter,{className:"grid grid-cols-2 gap-2 sm:flex-none",children:[(0,b.jsx)(D.DialogClose,{asChild:!0,children:(0,b.jsx)(n.Button,{variant:"outline",children:g("repositoryNode.cancel")})}),(0,b.jsx)(n.Button,{variant:"destructive",onClick:()=>{Q(!1),a.onDelete?.(a.id)},children:g("repositoryNode.remove")})]})]})})]}):null,(0,b.jsxs)("div",{role:"button",tabIndex:0,"data-testid":"repository-node-card","data-repo-name":a.name,onClick:b=>{b.stopPropagation(),a.onClick?.()},onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),b.stopPropagation(),a.onClick?.())},className:(0,m.cn)("nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm transition-[border-color,box-shadow] duration-200 dark:bg-neutral-800/80",d&&"border-blue-400 dark:border-amber-500/60"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-3",children:[(0,b.jsx)(j,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,b.jsx)("span",{"data-testid":"repository-node-name",className:"min-w-0 truncate text-sm font-medium",children:a.name}),(0,b.jsxs)("div",{className:(0,m.cn)("flex shrink-0 items-center gap-2",(a.repositoryPath??a.onAdd)&&"ms-auto"),onClick:a=>a.stopPropagation(),children:[a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openInIde"),onClick:T.openInIde,loading:T.ideLoading,error:!!T.ideError,icon:r.Code2,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openInIde")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openInShell"),onClick:T.openInShell,loading:T.shellLoading,error:!!T.shellError,icon:s.Terminal,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openInShell")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openFolder"),onClick:T.openFolder,loading:T.folderLoading,error:!!T.folderError,icon:t.FolderOpen,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openFolder")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(n.Button,{variant:"ghost",size:"icon-xs","aria-label":g("repositoryNode.chatWithAgent"),onClick:b=>{b.stopPropagation(),a.id&&o.push(`/repository/${a.id}/chat`)},className:"nodrag relative cursor-pointer text-violet-500 hover:text-violet-600 dark:text-violet-400 dark:hover:text-violet-300",children:[(0,b.jsx)(B.MessageSquare,{className:"h-3 w-3"}),(0,b.jsx)(I.ChatDotIndicator,{status:S})]})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.chatWithAgent")})]})}),(0,b.jsx)(K.FeatureSessionsDropdown,{repositoryPath:a.repositoryPath,includeWorktrees:!0,onCreateFromSession:W})]}):null,a.onAdd?(0,b.jsx)("div",{className:"ms-1.5"}):null,a.onAdd?(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("button",{"aria-label":g("repositoryNode.newFeature"),"data-testid":"repository-node-add-button",onClick:b=>{b.stopPropagation(),a.onAdd?.()},className:(0,m.cn)("flex h-6 shrink-0 cursor-pointer items-center gap-0.5 rounded bg-blue-500 px-1.5 text-[11px] font-bold text-white transition-colors hover:bg-blue-600 dark:bg-amber-500 dark:hover:bg-amber-400",a.pulseAdd&&"animate-pulse-cta"),children:[(0,b.jsx)(k.Plus,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"translate-y-px",children:g("repositoryNode.new")})]})}),(0,b.jsx)(E.TooltipContent,{side:"top",children:g("repositoryNode.newFeature")})]})}):null]})]}),a.branch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-git-info",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1 truncate","data-testid":"repository-node-branch",children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.branch})]}),null!=a.behindCount&&a.behindCount>0?(0,b.jsxs)("span",{className:"flex shrink-0 items-center gap-1 whitespace-nowrap text-amber-500","data-testid":"repository-node-behind",children:[(0,b.jsx)(y.ArrowDown,{className:"h-3 w-3 shrink-0"}),g("repositoryNode.behind",{count:a.behindCount})]}):null]})}),a.commitMessage?(0,b.jsx)("div",{"data-testid":"repository-node-commit-info",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(x.GitCommitHorizontal,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate","data-testid":"repository-node-commit-message",children:a.commitMessage}),a.committer?(0,b.jsxs)("span",{className:"text-muted-foreground/70 ms-auto flex shrink-0 items-center gap-1","data-testid":"repository-node-committer",children:[(0,b.jsx)(z.User,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:a.committer})]}):null]})}):null]}):"not-a-repo"===a.gitInfoStatus?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-not-repo",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(t.FolderOpen,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate opacity-60",children:a.repositoryPath??"Unknown path"})]})}),(0,b.jsx)("div",{className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs opacity-40",children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:g("repositoryNode.notAGitRepository")})]})})]}):"ready"!==a.gitInfoStatus?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-git-loading",className:"border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex h-4 items-center gap-2 text-xs",children:[(0,b.jsx)(i.GitBranch,{className:"text-muted-foreground h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"bg-muted h-3 w-20 animate-pulse rounded"})]})}),(0,b.jsx)("div",{className:"border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex h-4 items-center gap-2 text-xs",children:[(0,b.jsx)(x.GitCommitHorizontal,{className:"text-muted-foreground h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"bg-muted h-3 w-36 animate-pulse rounded"})]})})]}):null,O.envDeploy&&a.repositoryPath?(0,b.jsx)("div",{"data-testid":"repository-node-dev-preview",className:"border-border/50 border-t px-4 py-2",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[U.deployError?(0,b.jsx)("span",{className:"truncate text-xs text-red-500",children:U.deployError}):V?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"me-0.5 inline-block h-2 w-2 shrink-0 rounded-full bg-green-500"}),U.url?(0,b.jsx)("a",{href:U.url,target:"_blank",rel:"noopener noreferrer",className:"truncate text-green-700 hover:underline dark:text-green-400",children:U.url}):(0,b.jsx)("span",{className:"text-muted-foreground",children:g("repositoryNode.starting")})]}):(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-baseline gap-2",children:[(0,b.jsx)("span",{children:g("repositoryNode.run")}),(0,b.jsx)("span",{className:"text-muted-foreground/50 text-[10px]",children:g("repositoryNode.startLocalEnvironment")})]}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:(0,m.cn)("ms-auto flex items-center",!V&&!U.deployError&&"[&_button]:text-green-600 [&_button]:hover:text-green-700 dark:[&_button]:text-green-400 dark:[&_button]:hover:text-green-300"),children:(0,b.jsx)(C.ActionButton,{label:g(U.deployError?"repositoryNode.retry":V?"repositoryNode.stopDevServer":"repositoryNode.startDevServer"),onClick:V?U.stop:U.deploy,loading:U.deployLoading||U.stopLoading,error:!1,icon:U.deployError?A.RotateCcw:V?w.Square:v.Play,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g(V?"repositoryNode.stopDevServer":"repositoryNode.startDevServer")})]})})]})}):null]}),a.onAdd||a.showHandles?(0,b.jsx)(c.Handle,{type:"source",position:N,isConnectable:!a.showHandles,className:"opacity-0!",style:{top:70}}):null]})}function M(a){let[d]=(0,q.getBezierPath)({sourceX:a.sourceX,sourceY:a.sourceY,targetX:a.targetX,targetY:a.targetY,sourcePosition:a.sourcePosition,targetPosition:a.targetPosition});return(0,b.jsx)(c.BaseEdge,{id:a.id,path:d,style:{strokeDasharray:"5 5"}})}a.i(78454),a.i(2824),a.i(13126);let N={x:30,y:30,zoom:.85};function O({nodes:a,edges:d,selectedFeatureId:f,selectedRepository:g,defaultViewport:h,onNodesChange:i,onAddFeature:j,onConnect:q,onNodeClick:r,onPaneClick:s,onCanvasDrag:t,onMoveEnd:u,toolbar:v,emptyState:w}){let{t:x}=(0,l.useTranslation)("web"),y=(0,e.useMemo)(()=>({featureNode:p.FeatureNode,repositoryNode:L}),[]),z=(0,e.useMemo)(()=>({dependencyEdge:M}),[]),A=(0,e.useMemo)(()=>{let b=null!=f,c=null!=g&&(null!=g.id||null!=g.path);return b||c?a.map(a=>{if(b&&"featureNode"===a.type&&a.data.featureId===f)return{...a,selected:!0};if(c&&"repositoryNode"===a.type){let b=a.data,c=null!=g.id&&(a.id===g.id||b.id===g.id),d=null!=g.path&&b.repositoryPath===g.path;if(c||d)return{...a,selected:!0}}return a}):a},[a,f,g]),B=0===a.length,[C,D]=(0,e.useState)(B),[E,F]=(0,e.useState)(!1),G=(0,e.useRef)(B);(0,e.useEffect)(()=>{if(G.current&&!B){F(!0);let a=setTimeout(()=>{D(!1),F(!1)},300);return G.current=B,()=>clearTimeout(a)}!G.current&&B&&D(!0),G.current=B},[B]);let H=B&&!w?(0,b.jsx)(o.EmptyState,{title:x("canvas.noFeatures"),description:x("canvas.noFeaturesDescription"),action:(0,b.jsxs)(n.Button,{onClick:j,children:[(0,b.jsx)(k.Plus,{className:"me-2 h-4 w-4"}),x("canvas.newFeature")]})}):null,I=w??H;return(0,b.jsxs)("div",{"data-testid":B?"features-canvas-empty":"features-canvas","data-no-drawer-close":!0,className:"dark:bg-background pointer-events-auto relative h-full w-full bg-[#f6f7f8]",children:[(0,b.jsxs)(c.ReactFlow,{nodes:A,edges:d,nodeTypes:y,edgeTypes:z,onConnect:q,onNodesChange:i,onNodeClick:r,onPaneClick:s,onMoveStart:t,onMoveEnd:u,defaultViewport:h??N,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,proOptions:{hideAttribution:!0},className:"[&_.react-flow__pane]:!cursor-default",children:[(0,b.jsx)(c.Background,{variant:c.BackgroundVariant.Dots,gap:24,size:1,color:"#b8bcc4",className:"dark:[&_circle]:!fill-white/[0.1]"}),!B&&v?(0,b.jsx)(c.Panel,{position:"top-right",className:"!me-3 !mt-3",children:v}):null]}),C&&I?(0,b.jsx)("div",{className:(0,m.cn)("pointer-events-none absolute inset-0 z-10 flex items-center justify-center transition-opacity duration-300",E?"opacity-0":"animate-in fade-in opacity-100 duration-200"),children:(0,b.jsx)("div",{className:"pointer-events-auto h-full w-full",children:I})}):null]})}var P=a.i(14355),Q=a.i(97624);let R=(0,Q.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),S=(0,Q.default)("zoom-in",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),T=(0,Q.default)("zoom-out",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),U=(0,Q.default)("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);function V({showArchived:a,onToggleArchived:d,onResetViewport:f}){let{t:g}=(0,l.useTranslation)("web"),{zoomIn:h,zoomOut:i,fitView:j,setViewport:k}=(0,c.useReactFlow)(),m=(0,e.useCallback)(()=>{h({duration:200})},[h]),n=(0,e.useCallback)(()=>{i({duration:200})},[i]),o=(0,e.useCallback)(()=>{j({duration:400,padding:.3})},[j]),p=(0,e.useCallback)(()=>{f&&k(f(),{duration:400})},[f,k]);return(0,b.jsxs)("div",{className:"bg-background flex items-center gap-1 rounded-xl border px-2 py-1.5 shadow-md dark:bg-neutral-900",children:[(0,b.jsx)(W,{onClick:d,title:g(a?"canvas.hideArchived":"canvas.showArchived"),active:a,label:g(a?"canvas.hideArchivedLabel":"canvas.showArchivedLabel"),children:a?(0,b.jsx)(P.Eye,{className:"h-4 w-4"}):(0,b.jsx)(R,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"bg-border mx-1 h-5 w-px"}),(0,b.jsx)(W,{onClick:n,title:g("canvas.zoomOut"),children:(0,b.jsx)(T,{className:"h-4 w-4"})}),(0,b.jsx)(W,{onClick:m,title:g("canvas.zoomIn"),children:(0,b.jsx)(S,{className:"h-4 w-4"})}),(0,b.jsx)(W,{onClick:o,title:g("canvas.fitView"),children:(0,b.jsx)(U,{className:"h-4 w-4"})}),f?(0,b.jsx)(W,{onClick:p,title:g("canvas.resetView"),children:(0,b.jsx)(A.RotateCcw,{className:"h-4 w-4"})}):null]})}function W({children:a,onClick:c,title:d,label:e,active:f}){return(0,b.jsxs)("button",{type:"button",onClick:c,"aria-label":d,title:d,className:(0,m.cn)("inline-flex items-center gap-1.5 rounded-lg px-2 py-1.5 text-xs font-medium transition-colors","hover:bg-accent hover:text-accent-foreground",f?"text-primary bg-primary/10":"text-muted-foreground"),children:[a,e?(0,b.jsx)("span",{children:e}):null]})}var X=a.i(20901),Y=a.i(83695);function Z({actions:a,className:c,style:d}){let{t:f}=(0,l.useTranslation)("web"),[g,h]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{if(g)return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a);function a(a){"Escape"===a.key&&h(!1)}},[g]),(0,b.jsxs)(b.Fragment,{children:[g?(0,b.jsx)("div",{"data-testid":"fab-overlay",className:"fixed inset-0 z-40",onClick:()=>h(!1),"aria-hidden":"true"}):null,(0,b.jsxs)("div",{"data-testid":"floating-action-button",className:(0,m.cn)("relative z-50",c),style:d,children:[(0,b.jsx)("div",{className:(0,m.cn)("absolute start-0 bottom-[calc(100%+24px)] flex flex-col items-start gap-2",!g&&"pointer-events-none"),"data-testid":"fab-actions",children:a.map((c,d)=>{let e=(a.length-1-d)*50;return(0,b.jsxs)("button",{"data-testid":`fab-action-${c.id}`,"aria-label":c.label,disabled:c.disabled??c.loading,className:(0,m.cn)("flex h-10 items-center gap-2.5 rounded-full px-4","bg-background text-foreground shadow-md","border-border border","hover:bg-accent hover:text-accent-foreground","disabled:pointer-events-none disabled:opacity-50","text-sm font-medium whitespace-nowrap",g?"translate-y-0 opacity-100":"pointer-events-none translate-y-0 opacity-0"),style:{transition:`opacity ${g?250:120}ms ease-out ${g?e:0}ms, transform ${g?250:120}ms ease-out ${g?e:0}ms`},onClick:()=>{c.onClick(),h(!1)},children:[(0,b.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:c.loading?(0,b.jsx)(X.LoaderCircle,{className:"h-4 w-4 animate-spin"}):c.icon}),(0,b.jsx)("span",{children:c.label})]},c.id)})}),(0,b.jsxs)(n.Button,{size:"icon","data-testid":"fab-trigger","aria-label":f(g?"fab.closeActions":"fab.createNew"),className:(0,m.cn)("relative h-14 w-14 rounded-full shadow-lg","bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400","transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95"),onClick:()=>h(a=>!a),children:[(0,b.jsx)(k.Plus,{className:(0,m.cn)("absolute h-7 w-7 stroke-[2.5] transition-all",g?"scale-0 rotate-90 opacity-0":"scale-100 rotate-0 opacity-100"),style:{transitionDuration:"250ms"}}),(0,b.jsx)(Y.X,{className:(0,m.cn)("absolute h-6 w-6 stroke-[2.5] transition-all",g?"scale-100 rotate-0 opacity-100":"scale-0 -rotate-90 opacity-0"),style:{transitionDuration:"250ms"}})]})]})]})}var $=a.i(1356),_=a.i(19884),aa=a.i(96213);let ab="shipit-ai-canvas-viewport",ac={x:30,y:30,zoom:.85};var ad=a.i(55003),ae=a.i(48265),af=a.i(34948),ag=a.i(60197),ah=a.i(82912),ai=a.i(63843),aj=a.i(29345),ak=a.i(2),al=a.i(1377);a.i(21434);var am=a.i(34379),an=a.i(6120);let ao=(0,an.createServerReference)("00ea2e4aeb96147be0df27de0fb0811dcd46d7b284",an.callServer,void 0,an.findSourceMapURL,"isAgentSetupComplete"),ap=(0,an.createServerReference)("0095abc4000335aa7827a56915d9196e945df0ab50",an.callServer,void 0,an.findSourceMapURL,"checkAgentAuth"),aq=(0,an.createServerReference)("00d00bca5810b627fd7f843fa04a97b6756eac2112",an.callServer,void 0,an.findSourceMapURL,"checkToolStatus");var ar=a.i(40227),as=a.i(55944),at=a.i(40179),au=a.i(35571),av=a.i(17606),aw=a.i(83852);let ax=["select-agent","select-model"];function ay({onComplete:a,className:c}){let{t:d}=(0,l.useTranslation)("web"),[f,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!0),[j,k]=(0,e.useState)("select-agent"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!0),[v,w]=(0,e.useState)(!0),x=(0,e.useRef)(void 0);(0,e.useEffect)(()=>{(0,at.getAllAgentModels)().then(g).finally(()=>i(!1)),aq().then(a=>w(a.gh.installed)).catch(()=>void 0)},[]);let y=n?f.find(a=>a.agentType===n):null,z=(0,e.useCallback)((a,b)=>{s(!0),u(!1),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{b?.(),k(a),requestAnimationFrame(()=>{u(!0),s(!1)})},150)},[]);(0,e.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let A=(0,e.useCallback)(async(b,c)=>{q(!0);try{await (0,au.updateAgentAndModel)(b,c),u(!1),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{a()},200)}catch{q(!1)}},[a]),B=(0,e.useCallback)(a=>{let b=f.find(b=>b.agentType===a);b&&b.models.length>0?z("select-model",()=>{o(a)}):A(a,null)},[f,z,A]),C=(0,e.useCallback)(a=>{n&&A(n,a)},[n,A]),D=(0,e.useCallback)(()=>{"select-model"===j&&z("select-agent",()=>{o(null)})},[j,z]);if(h)return(0,b.jsxs)("div",{"data-testid":"welcome-agent-setup",className:(0,m.cn)("flex flex-col items-center justify-center gap-4",c),children:[(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground h-5 w-5 animate-spin"}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:d("welcome.loadingAgents")})]});let E=ax.indexOf(j),F=d("select-agent"===j?"welcome.chooseAgent":"welcome.pickModel"),G="select-agent"===j?d("welcome.selectAgentSubtitle"):y?d("welcome.chooseModelSubtitle",{label:y.label}):"";return(0,b.jsxs)("div",{"data-testid":"welcome-agent-setup",className:(0,m.cn)("flex w-full flex-col items-center",c),children:[(0,b.jsx)("div",{className:"mb-8 flex w-full max-w-xs items-center gap-1.5",children:ax.map((a,c)=>(0,b.jsx)("div",{className:(0,m.cn)("h-[3px] flex-1 rounded-full transition-colors duration-300",c<=E?"bg-foreground/60":"bg-muted")},a))}),(0,b.jsxs)("div",{className:(0,m.cn)("flex w-full flex-col items-center transition-opacity duration-200",t&&!r?"opacity-100":"opacity-0"),children:[(0,b.jsx)("h1",{className:"text-foreground/90 text-center text-5xl font-extralight tracking-tight",children:F}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light",children:G}),"select-agent"===j&&!v&&(0,b.jsxs)("div",{"data-testid":"gh-cli-notice",className:"mt-5 flex items-start gap-2 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 dark:border-amber-900 dark:bg-amber-950/40",children:[(0,b.jsx)(as.TriangleAlert,{className:"mt-0.5 h-4 w-4 shrink-0 text-amber-500"}),(0,b.jsxs)("p",{className:"text-sm leading-relaxed text-amber-800 dark:text-amber-300",children:[(0,b.jsx)("span",{className:"font-medium",children:d("welcome.ghCliRequired")})," ",d("welcome.ghCliRequiredText")," ",(0,b.jsx)("a",{href:"https://cli.github.com/",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 hover:text-amber-900 dark:hover:text-amber-200",children:d("welcome.installHere")}),"."]})]}),(0,b.jsxs)("div",{className:"mt-8 flex w-full flex-col items-center",children:["select-agent"===j&&(0,b.jsx)("div",{"data-testid":"agent-list",className:"grid w-full max-w-lg gap-3",style:{gridTemplateColumns:`repeat(${Math.min(f.length,4)}, minmax(0, 1fr))`},children:f.map(a=>{let c=(0,av.getAgentTypeIcon)(a.agentType);return(0,b.jsxs)("button",{type:"button",disabled:p,"data-testid":`agent-option-${a.agentType}`,className:"border-border hover:bg-accent hover:border-foreground/20 flex cursor-pointer flex-col items-center gap-3 rounded-2xl border px-4 py-5 transition-all duration-150 active:scale-[0.97] disabled:opacity-50",onClick:()=>B(a.agentType),children:[(0,b.jsx)(c,{className:"text-foreground/70 h-7 w-7"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:a.label})]},a.agentType)})}),"select-model"===j&&y?(0,b.jsxs)("div",{"data-testid":"model-list",className:"flex w-full max-w-lg flex-col items-center gap-4",children:[(0,b.jsxs)("button",{type:"button",disabled:p,className:"text-muted-foreground hover:text-foreground flex cursor-pointer items-center gap-1.5 self-start text-sm transition-colors",onClick:D,children:[(0,b.jsx)(ar.ChevronLeft,{className:"h-4 w-4"}),d("welcome.back")]}),(0,b.jsx)("div",{className:"grid w-full gap-3",style:{gridTemplateColumns:`repeat(${Math.min(y.models.length,3)}, minmax(0, 1fr))`},children:y.models.map(a=>{let c=(0,aw.getModelMeta)(a.id);return(0,b.jsxs)("button",{type:"button",disabled:p,"data-testid":`model-option-${a.id}`,className:"border-border hover:bg-accent hover:border-foreground/20 flex cursor-pointer flex-col items-center gap-2 rounded-2xl border px-4 py-5 text-center transition-all duration-150 active:scale-[0.97] disabled:opacity-50",onClick:()=>C(a.id),children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:c.displayName||a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs leading-tight",children:c.description||a.description})]},a.id)})})]}):null]})]})]})}let az=["cd ~/my-repo",'shipit-ai feat new "sleek dashboard"'];function aA({onRepositorySelect:a,className:c}){let{t:d}=(0,l.useTranslation)("web"),[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(null),[r,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),{reactFileManager:x}=(0,G.useFeatureFlags)();async function y(){if(!h){if(x)return void k(!0);i(!0);try{let b=await (0,al.pickFolder)();b&&a?.(b)}catch{k(!0)}finally{i(!1)}}}(0,e.useEffect)(()=>{ao().then(a=>{o(a)})},[]),(0,e.useEffect)(()=>{n&&(ap().then(q),aq().then(w))},[n]);let z=(0,e.useCallback)(async()=>{await navigator.clipboard.writeText(az.join("\n")),g(!0),setTimeout(()=>g(!1),2e3)},[]),A=(0,e.useCallback)(()=>{o(!0)},[]),B=(0,e.useCallback)(()=>{q(null),ap().then(q)},[]);return null===n?null:(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,m.cn)("relative flex h-full w-full flex-col items-center justify-center px-8",c),children:[n?(0,b.jsxs)("div",{className:"animate-in fade-in flex w-full max-w-md flex-col items-center duration-300",children:[(0,b.jsx)("h1",{className:"text-foreground/90 text-center text-5xl font-extralight tracking-tight",children:d("emptyState.addProject")}),(0,b.jsxs)("p",{className:"text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light",children:[d("emptyState.addProjectDescription"),(0,b.jsx)("br",{}),d("emptyState.addProjectDescriptionLine2")]}),(0,b.jsxs)("div",{className:"mt-8 flex w-full flex-col gap-3",children:[(0,b.jsx)(aB,{status:p,onRetry:B}),(0,b.jsx)(aC,{label:d("emptyState.git"),status:v?.git??null,missingHint:d("emptyState.gitRequired")}),(0,b.jsx)(aC,{label:d("emptyState.githubCli"),status:v?.gh??null,missingHint:d("emptyState.githubCliRequired")})]}),(0,b.jsxs)("button",{type:"button","data-testid":"empty-state-add-repository",onClick:y,disabled:h,className:"bg-foreground text-background hover:bg-foreground/90 mt-10 flex w-full cursor-pointer items-center justify-center gap-2.5 rounded-xl px-6 py-4 text-base font-medium shadow-lg transition-all duration-200 hover:shadow-xl active:scale-[0.98] disabled:cursor-wait disabled:opacity-50",children:[h?(0,b.jsx)(X.LoaderCircle,{className:"h-5 w-5 animate-spin"}):(0,b.jsx)(t.FolderOpen,{className:"h-5 w-5"}),d(h?"emptyState.opening":"emptyState.chooseFolder")]}),(0,b.jsx)("p",{className:"text-muted-foreground/60 mt-3 text-center text-sm",children:d("emptyState.folderHint")})]}):(0,b.jsx)(ay,{onComplete:A}),n?(0,b.jsxs)("div",{className:"absolute bottom-8 flex flex-col items-center",style:{animationDelay:"400ms",animationDuration:"600ms",animationFillMode:"both"},children:[(0,b.jsxs)("button",{type:"button",onClick:()=>u(!r),className:"text-muted-foreground hover:text-foreground flex cursor-pointer items-center gap-1.5 transition-colors duration-200",children:[(0,b.jsx)(s.Terminal,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-sm",children:d("emptyState.orUseCli")}),(0,b.jsx)(aj.ChevronDown,{className:(0,m.cn)("h-3.5 w-3.5 transition-transform duration-200",r?"":"rotate-180")})]}),r?(0,b.jsx)("div",{className:"animate-in fade-in slide-in-from-top-1 mt-3 w-80 duration-200",children:(0,b.jsxs)("div",{"data-testid":"cli-code-block",className:"relative rounded-xl bg-zinc-900 px-5 py-4 font-mono text-[13px] leading-relaxed text-zinc-400",children:[(0,b.jsx)("button",{type:"button","data-testid":"cli-code-block-copy",onClick:z,className:"absolute top-3 right-3 cursor-pointer rounded-md p-1.5 text-zinc-600 transition-colors hover:bg-zinc-800 hover:text-zinc-300","aria-label":d("emptyState.copyCommands"),children:f?(0,b.jsx)(ag.Check,{className:"h-3.5 w-3.5 text-emerald-400"}):(0,b.jsx)(af.Copy,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("div",{className:"space-y-1",children:az.map(a=>(0,b.jsxs)("div",{className:"whitespace-nowrap",children:[(0,b.jsx)("span",{className:"text-zinc-600 select-none",children:"$ "}),(0,b.jsx)("span",{className:"text-zinc-300",children:a})]},a))})]})}):null]}):null,(0,b.jsx)(am.ReactFileManagerDialog,{open:j,onOpenChange:a=>{a||k(!1)},onSelect:function(b){b&&a?.(b),k(!1)}})]})}function aB({status:a,onRetry:c}){let{t:d}=(0,l.useTranslation)("web");return a?a.installed&&a.authenticated?(0,b.jsx)(aD,{icon:(0,b.jsx)(ah.CircleCheck,{className:"h-4 w-4 text-emerald-500"}),children:(0,b.jsx)("span",{className:"text-sm text-emerald-600 dark:text-emerald-400",children:d("emptyState.ready",{label:a.label})})}):a.installed?(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:d("emptyState.needsAuth",{label:a.label})}),a.authCommand?(0,b.jsx)(aE,{command:a.authCommand}):null,(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[a.binaryName?(0,b.jsxs)("button",{type:"button","data-testid":"auth-banner-open-terminal",onClick:async()=>{try{let b="claude-code"===a.agentType?"claude-code":a.agentType;await fetch(`/api/tools/${b}/launch`,{method:"POST"})}catch{}},className:"flex items-center gap-1 text-xs font-medium text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:[(0,b.jsx)(s.Terminal,{className:"h-3 w-3"}),d("emptyState.open",{label:a.label})]}):null,(0,b.jsx)("button",{type:"button",onClick:c,className:"text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:d("emptyState.reCheck")})]})]}):(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:d("emptyState.notInstalled",{label:a.label})}),a.installCommand?(0,b.jsx)(aE,{command:a.installCommand}):null,(0,b.jsx)("button",{type:"button",onClick:c,className:"text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:d("emptyState.reCheck")})]}):(0,b.jsx)(aD,{icon:(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground/50 h-4 w-4 animate-spin"}),children:(0,b.jsx)("span",{className:"text-muted-foreground/50 text-sm",children:d("emptyState.checkingSetup")})})}function aC({label:a,status:c,missingHint:d}){let{t:e}=(0,l.useTranslation)("web");return c?c.installed?(0,b.jsx)(aD,{icon:(0,b.jsx)(ah.CircleCheck,{className:"h-4 w-4 text-emerald-500"}),children:(0,b.jsxs)("span",{className:"flex items-baseline gap-2",children:[(0,b.jsx)("span",{className:"text-sm text-emerald-600 dark:text-emerald-400",children:e("emptyState.ready",{label:a})}),c.version?(0,b.jsxs)("span",{className:"text-muted-foreground/40 text-xs",children:["v",c.version]}):null]})}):(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:e("emptyState.notFound",{label:a})}),(0,b.jsx)("span",{className:"text-muted-foreground/50 text-xs",children:d}),c.installCommand?(0,b.jsx)(aE,{command:c.installCommand}):null,c.installUrl?(0,b.jsxs)("a",{href:c.installUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:[e("emptyState.docs")," ",(0,b.jsx)(ak.ExternalLink,{className:"h-3 w-3"})]}):null]}):(0,b.jsx)(aD,{icon:(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground/50 h-4 w-4 animate-spin"}),children:(0,b.jsx)("span",{className:"text-muted-foreground/50 text-sm",children:e("emptyState.checking",{label:a})})})}function aD({icon:a,children:c}){return(0,b.jsxs)("div",{className:"animate-in fade-in flex items-start gap-2.5",children:[(0,b.jsx)("div",{className:"mt-0.5 shrink-0",children:a}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:c})]})}function aE({command:a}){let[c,d]=(0,e.useState)(!1);return(0,b.jsxs)("button",{type:"button",onClick:async()=>{await navigator.clipboard.writeText(a),d(!0),setTimeout(()=>d(!1),2e3)},className:"group/cmd flex cursor-pointer items-center justify-between gap-2 rounded-md bg-zinc-100 py-1 ps-2.5 pe-2 text-start transition-colors hover:bg-zinc-200 dark:bg-zinc-800 dark:hover:bg-zinc-700",children:[(0,b.jsx)("code",{className:"min-w-0 truncate text-[11px] leading-relaxed text-zinc-600 dark:text-zinc-300",children:a}),c?(0,b.jsx)(ag.Check,{className:"h-3 w-3 shrink-0 text-emerald-500"}):(0,b.jsx)(af.Copy,{className:"h-3 w-3 shrink-0 text-zinc-400 opacity-0 transition-opacity group-hover/cmd:opacity-100"})]})}var aF=a.i(16533);let aG={maxZoom:1,padding:.5,duration:500};function aH({initialNodes:a,initialEdges:d}){let k,m,n,o,p,q,{t:r}=(0,l.useTranslation)("web"),s=(0,f.useRouter)(),t=(0,f.usePathname)(),u=(k=(0,f.usePathname)().match(/^\/feature\/([^/]+)/),k?.[1]??null),v=(m=(0,f.usePathname)(),n=(0,f.useSearchParams)(),o=m.match(/^\/repository\/([^/]+)/),{id:o?.[1]??null,path:m.startsWith("/create")?n.get("repo"):null}),w=(0,_.useSoundAction)("click"),{guardedNavigate:x}=(0,aa.useDrawerCloseGuard)(),{fitView:y}=(0,c.useReactFlow)(),z=(0,e.useRef)(null),{defaultViewport:A,onMoveEnd:B,resetViewport:C}=(p=(0,e.useRef)(function(){try{let a=localStorage.getItem(ab);if(null==a)return ac;let b=JSON.parse(a);return!(null==b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.x&&"number"==typeof b.y&&"number"==typeof b.zoom&&Number.isFinite(b.x)&&Number.isFinite(b.y)&&Number.isFinite(b.zoom)&&b.zoom>0?b:ac}catch{return ac}}()).current,q=(0,e.useRef)(null),(0,e.useEffect)(()=>()=>{null!=q.current&&clearTimeout(q.current)},[]),{defaultViewport:p,onMoveEnd:(0,e.useCallback)(a=>{null!=q.current&&clearTimeout(q.current),q.current=setTimeout(()=>{try{localStorage.setItem(ab,JSON.stringify(a))}catch{}},500)},[]),resetViewport:(0,e.useCallback)(()=>{try{localStorage.removeItem(ab)}catch{}return ac},[])}),{nodes:D,edges:E,onNodesChange:F,handleConnect:H,handleAddRepository:I,handleArchiveFeature:J,handleDeleteFeature:K,handleRetryFeature:L,handleStartFeature:M,handleStopFeature:N,handleUnarchiveFeature:P,handleDeleteRepository:Q,createFeatureNode:R,showArchived:S,setShowArchived:T,setCallbacks:U}=(0,aF.useControlCenterState)(a,d),{setFeatures:W,setHasRepositories:X}=(0,$.useSidebarFeaturesContext)(),Y=(0,e.useMemo)(()=>D.filter(a=>"featureNode"===a.type),[D]),Z=(0,e.useMemo)(()=>Y.map(a=>{let b=a.data;return`${b.featureId}:${b.state}:${b.name}:${b.repositoryPath}`}).sort().join(","),[Y]);(0,e.useEffect)(()=>{W(Y.map(a=>{let b=a.data,c=(0,$.mapNodeStateToSidebarStatus)(b.state);if(!c)return null;let d=b.repositoryPath??"";return{featureId:b.featureId,name:b.name,status:c,repositoryPath:d,repositoryName:b.repositoryName??d.split("/").filter(Boolean).pop()??d,...null!=b.startedAt&&{startedAt:b.startedAt},...null!=b.runtime&&{duration:b.runtime},...b.agentType&&{agentType:b.agentType},...b.modelId&&{modelId:b.modelId}}}).filter(Boolean))},[Z,Y,W]);let ad=(0,e.useCallback)((a,b)=>{if("featureNode"===b.type){let c=b.data;"creating"!==c.state&&"deleting"!==c.state&&a.target.closest('[data-testid="feature-node-card"]')&&x(()=>{w.play(),s.push(`/feature/${c.featureId}`)})}},[s,w,x]),ae=(0,e.useCallback)(()=>{w.play(),s.push("/create")},[s,w]),af=(0,e.useCallback)(a=>{w.play();let b=D.find(b=>b.id===a),c=b?.data?.repositoryPath;c?s.push(`/create?repo=${encodeURIComponent(c)}`):s.push("/create")},[D,s,w]),ag=(0,e.useCallback)(a=>{let b=a.startsWith("feat-")?a.slice(5):a,c=E.find(b=>b.target===a),d=c?D.find(a=>a.id===c.source):null,e=d?.data?.repositoryPath;w.play();let f=new URLSearchParams;e&&f.set("repo",e),f.set("parent",b),s.push(`/create?${f.toString()}`)},[D,E,s,w]),ah=(0,e.useCallback)(a=>{let b=D.find(b=>b.id===a);if(b?.type==="repositoryNode"){let a=b.data;a.id&&x(()=>s.push(`/repository/${a.id}`))}},[D,s,x]),ai=(0,e.useCallback)(()=>{"/"!==t&&x(()=>s.push("/"))},[s,t,x]),aj=(0,e.useCallback)(a=>{setTimeout(()=>{y(aG),z.current=setTimeout(()=>{x(()=>s.push(`/create?repo=${encodeURIComponent(a)}`))},600)},0)},[y,x,s]),ak=(0,e.useCallback)(a=>{let{wasEmpty:b,repoPath:c}=I(a);b&&aj(c)},[I,aj]);(0,e.useEffect)(()=>{let a=a=>{ak(a.detail.path)};return window.addEventListener("shipit-ai:add-repository",a),()=>{window.removeEventListener("shipit-ai:add-repository",a),null!=z.current&&clearTimeout(z.current)}},[ak]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail;if(b.parentId)return void R(`feat-${b.parentId}`,{state:"creating",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath},"dependencyEdge");let c=D.find(a=>"repositoryNode"===a.type&&a.data.repositoryPath===b.repositoryPath);R(c?.id??null,{state:"running",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath})};return window.addEventListener("shipit-ai:feature-created",a),()=>window.removeEventListener("shipit-ai:feature-created",a)},[D,R]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b,cleanup:c,cascadeDelete:d,closePr:e}=a.detail;K(b,c,d,e)};return window.addEventListener("shipit-ai:feature-delete-requested",a),()=>window.removeEventListener("shipit-ai:feature-delete-requested",a)},[K]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;J(b)};return window.addEventListener("shipit-ai:feature-archive-requested",a),()=>window.removeEventListener("shipit-ai:feature-archive-requested",a)},[J]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;P(b)};return window.addEventListener("shipit-ai:feature-unarchive-requested",a),()=>window.removeEventListener("shipit-ai:feature-unarchive-requested",a)},[P]),(0,e.useEffect)(()=>{U({onNodeAction:ag,onFeatureDelete:K,onRetryFeature:L,onStartFeature:M,onStopFeature:N,onArchiveFeature:J,onUnarchiveFeature:P,onRepositoryAdd:af,onRepositoryClick:ah,onRepositoryDelete:Q})},[U,ag,J,K,L,M,N,P,af,ah,Q]);let al=(0,e.useCallback)((a,b)=>{B(b)},[B]),am=D.some(a=>"repositoryNode"===a.type);(0,e.useEffect)(()=>{X(am)},[am,X]);let[an,ao]=(0,e.useState)(am),ap=(0,e.useRef)(null);(0,e.useEffect)(()=>(am?(ap.current&&(clearTimeout(ap.current),ap.current=null),ao(!0)):an&&(C(),ap.current=setTimeout(()=>{ao(!1),ap.current=null},500)),()=>{ap.current&&clearTimeout(ap.current)}),[am,an,C]);let aq=t.startsWith("/create"),ar=(0,e.useMemo)(()=>{let a=D.filter(a=>"repositoryNode"===a.type),b=D.some(a=>"featureNode"===a.type);return 1!==a.length||b||aq?D:D.map(a=>"repositoryNode"===a.type?{...a,data:{...a.data,pulseAdd:!0}}:a)},[D,aq]),as=(0,e.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shipit-ai:pick-folder"))},[]),at=(0,G.useFeatureFlags)(),au=(0,e.useMemo)(()=>{let a=[{id:"new-feature",label:r("fab.newFeature"),icon:(0,b.jsx)(g.Sparkles,{className:"h-4 w-4"}),onClick:()=>{w.play(),x(()=>s.push("/create"))}},{id:"add-local-repo",label:r("fab.localFolder"),icon:(0,b.jsx)(h.FolderPlus,{className:"h-4 w-4"}),onClick:as}];return at.adoptBranch&&a.push({id:"adopt-branch",label:r("fab.adoptBranch"),icon:(0,b.jsx)(i.GitBranch,{className:"h-4 w-4"}),onClick:()=>{x(()=>s.push("/adopt"))}}),at.githubImport&&a.push({id:"add-github-repo",label:r("fab.fromGithub"),icon:(0,b.jsx)(j,{className:"h-4 w-4"}),onClick:()=>{window.dispatchEvent(new CustomEvent("shipit-ai:open-github-import"))}}),a},[r,w,x,s,as,at.adoptBranch,at.githubImport]),av=(0,b.jsx)(V,{showArchived:S,onToggleArchived:()=>T(!S),onResetViewport:C});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O,{nodes:an?ar:[],edges:an?E:[],selectedFeatureId:u,selectedRepository:v,defaultViewport:A,onNodesChange:F,onConnect:H,onAddFeature:ae,onNodeClick:ad,onPaneClick:ai,onMoveEnd:al,toolbar:av,emptyState:(0,b.jsx)(aA,{onRepositorySelect:ak})}),an?(0,b.jsx)(aI,{actions:au}):null]})}function aI({actions:a}){let{state:c}=(0,ad.useSidebar)(),{i18n:d}=(0,l.useTranslation)("web"),{swapPosition:e}=(0,ae.useFabLayout)(),f="rtl"===d.dir();if(e)return(0,b.jsx)(Z,{actions:a,className:"!fixed bottom-6",style:f?{left:"calc(var(--sidebar-width-icon) + 32px)",transition:"left 200ms ease-in-out"}:{right:"32px",transition:"right 200ms ease-in-out"}});let g="expanded"===c?"calc(var(--sidebar-width) + 32px)":"calc(var(--sidebar-width-icon) + 32px)";return(0,b.jsx)(Z,{actions:a,className:"!fixed bottom-6",style:f?{right:g,transition:"right 200ms ease-in-out"}:{left:g,transition:"left 200ms ease-in-out"}})}a.s(["ControlCenter",0,function({initialNodes:a,initialEdges:e,drawer:f}){return(0,b.jsxs)("div",{"data-testid":"control-center",className:"h-full w-full",children:[(0,b.jsx)(d.SessionsProvider,{children:(0,b.jsx)(c.ReactFlowProvider,{children:(0,b.jsx)(aH,{initialNodes:a,initialEdges:e})})}),(0,b.jsx)("div",{children:f},"drawer")]})}],59949)}];
|
|
1
|
+
module.exports=[16533,a=>{"use strict";var b=a.i(11321),c=a.i(40674),d=a.i(52313),e=a.i(87139),f=a.i(74146);a.i(98617);var g=a.i(50040),h=Object.defineProperty,i={},j={Graph:()=>n,alg:()=>w,json:()=>t,version:()=>s};for(var k in j)h(i,k,{get:j[k],enumerable:!0});var l=Object.defineProperty,m=(a,b)=>{for(var c in b)l(a,c,{get:b[c],enumerable:!0})},n=class{constructor(a){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},a&&(this._isDirected=!("directed"in a)||a.directed,this._isMultigraph="multigraph"in a&&a.multigraph,this._isCompound="compound"in a&&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"function"!=typeof a?this._defaultNodeLabelFn=()=>a:this._defaultNodeLabelFn=a,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(a=>0===Object.keys(this._in[a]).length)}sinks(){return this.nodes().filter(a=>0===Object.keys(this._out[a]).length)}setNodes(a,b){return a.forEach(a=>{void 0!==b?this.setNode(a,b):this.setNode(a)}),this}setNode(a,b){return a in this._nodes?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 a in this._nodes}removeNode(a){if(a in this._nodes){let b=a=>this.removeEdge(this._edgeObjs[a]);delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],this.children(a).forEach(a=>{this.setParent(a)}),delete this._children[a]),Object.keys(this._in[a]).forEach(b),delete this._in[a],delete this._preds[a],Object.keys(this._out[a]).forEach(b),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(let 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}parent(a){if(this._isCompound){let b=this._parent[a];if("\0"!==b)return b}}children(a="\0"){if(this._isCompound){let b=this._children[a];if(b)return Object.keys(b)}else{if("\0"===a)return this.nodes();this.hasNode(a)}return[]}predecessors(a){let b=this._preds[a];if(b)return Object.keys(b)}successors(a){let b=this._sucs[a];if(b)return Object.keys(b)}neighbors(a){let b=this.predecessors(a);if(b){let c=new Set(b);for(let b of this.successors(a))c.add(b);return Array.from(c.values())}}isLeaf(a){return 0===(this.isDirected()?this.successors(a):this.neighbors(a)).length}filterNodes(a){let b=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});b.setGraph(this.graph()),Object.entries(this._nodes).forEach(([c,d])=>{a(c)&&b.setNode(c,d)}),Object.values(this._edgeObjs).forEach(a=>{b.hasNode(a.v)&&b.hasNode(a.w)&&b.setEdge(a,this.edge(a))});let c={},d=a=>{let e=this.parent(a);return!e||b.hasNode(e)?(c[a]=null!=e?e:void 0,null!=e?e:void 0):e in c?c[e]:d(e)};return this._isCompound&&b.nodes().forEach(a=>b.setParent(a,d(a))),b}setDefaultEdgeLabel(a){return"function"!=typeof a?this._defaultEdgeLabelFn=()=>a:this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(a,b){return a.reduce((a,c)=>(void 0!==b?this.setEdge(a,c,b):this.setEdge(a,c),c)),this}setEdge(a,b,c,d){let e,f,g,h,i=!1;"object"==typeof a&&null!==a&&"v"in a?(e=a.v,f=a.w,g=a.name,2==arguments.length&&(h=b,i=!0)):(e=a,f=b,g=d,arguments.length>2&&(h=c,i=!0)),e=""+e,f=""+f,void 0!==g&&(g=""+g);let j=q(this._isDirected,e,f,g);if(j in this._edgeLabels)return i&&(this._edgeLabels[j]=h),this;if(void 0!==g&&!this._isMultigraph)throw Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(f),this._edgeLabels[j]=i?h:this._defaultEdgeLabelFn(e,f,g);let k=function(a,b,c,d){let e=""+b,f=""+c;if(!a&&e>f){let a=e;e=f,f=a}let g={v:e,w:f};return d&&(g.name=d),g}(this._isDirected,e,f,g);return e=k.v,f=k.w,Object.freeze(k),this._edgeObjs[j]=k,o(this._preds[f],e),o(this._sucs[e],f),this._in[f][j]=k,this._out[e][j]=k,this._edgeCount++,this}edge(a,b,c){let d=1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c);return this._edgeLabels[d]}edgeAsObj(a,b,c){let d=1==arguments.length?this.edge(a):this.edge(a,b,c);return"object"!=typeof d?{label:d}:d}hasEdge(a,b,c){return(1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c))in this._edgeLabels}removeEdge(a,b,c){let d=1==arguments.length?r(this._isDirected,a):q(this._isDirected,a,b,c),e=this._edgeObjs[d];if(e){let a=e.v,b=e.w;delete this._edgeLabels[d],delete this._edgeObjs[d],p(this._preds[b],a),p(this._sucs[a],b),delete this._in[b][d],delete this._out[a][d],this._edgeCount--}return 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)}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}filterEdges(a,b,c){if(!a)return;let d=Object.values(a);return c?d.filter(a=>a.v===b&&a.w===c||a.v===c&&a.w===b):d}};function o(a,b){a[b]?a[b]++:a[b]=1}function p(a,b){void 0===a[b]||--a[b]||delete a[b]}function q(a,b,c,d){let e=""+b,f=""+c;if(!a&&e>f){let a=e;e=f,f=a}return e+"\x01"+f+"\x01"+(void 0===d?"\0":d)}function r(a,b){return q(a,b.v,b.w,b.name)}var s="4.0.1",t={};function u(a){var b,c;let d={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:(b=a).nodes().map(a=>{let 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(a=>{let 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})},e=a.graph();return void 0!==e&&(d.value=structuredClone(e)),d}function v(a){let b=new n(a.options);return void 0!==a.value&&b.setGraph(a.value),a.nodes.forEach(a=>{b.setNode(a.v,a.value),a.parent&&b.setParent(a.v,a.parent)}),a.edges.forEach(a=>{b.setEdge({v:a.v,w:a.w,name:a.name},a.value)}),b}m(t,{read:()=>v,write:()=>u});var w={};m(w,{CycleException:()=>I,bellmanFord:()=>y,components:()=>z,dijkstra:()=>C,dijkstraAll:()=>D,findCycles:()=>F,floydWarshall:()=>H,isAcyclic:()=>K,postorder:()=>M,preorder:()=>N,prim:()=>O,shortestPaths:()=>P,tarjan:()=>E,topsort:()=>J});var x=()=>1;function y(a,b,c,d){return function(a,b,c,d){let e={},f,g=0,h=a.nodes(),i=function(a){let 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){let 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,predecessor:""}});let k=h.length;for(let a=1;a<k&&(f=!1,g++,j(),f);a++);if(g===k-1&&(f=!1,j(),f))throw Error("The graph contains a negative weight cycle");return e}(a,String(b),c||x,d||function(b){return a.outEdges(b)})}function z(a){let b={},c=[],d;return a.nodes().forEach(function(e){d=[],function c(e){e in b||(b[e]=!0,d.push(e),a.successors(e).forEach(c),a.predecessors(e).forEach(c))}(e),d.length&&c.push(d)}),c}var A=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(a=>a.key)}has(a){return a in this._keyIndices}priority(a){let 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){let c=this._keyIndices,d=String(a);if(!(d in c)){let a=this._arr,e=a.length;return c[d]=e,a.push({key:d,priority:b}),this._decrease(e),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key}decrease(a,b){let c=this._keyIndices[a];if(void 0===c)throw Error(`Key not found: ${a}`);let d=this._arr[c].priority;if(b>d)throw Error(`New priority is greater than current priority. Key: ${a} Old: ${d} New: ${b}`);this._arr[c].priority=b,this._decrease(c)}_heapify(a){let 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){let b=this._arr,c=b[a].priority,d;for(;0!==a&&!(b[d=a>>1].priority<c);)this._swap(a,d),a=d}_swap(a,b){let 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}},B=()=>1;function C(a,b,c,d){return function(a,b,c,d){let e={},f=new A,g,h,i=function(a){let b=a.v!==g?a.v:a.w,d=e[b],i=c(a),j=h.distance+i;if(i<0)throw Error("dijkstra does not allow negative edge weights. Bad edge: "+a+" Weight: "+i);j<d.distance&&(d.distance=j,d.predecessor=g,f.decrease(b,j))};for(a.nodes().forEach(function(a){let c=a===b?0:1/0;e[a]={distance:c,predecessor:""},f.add(a,c)});f.size()>0&&(h=e[g=f.removeMin()]).distance!==1/0;)d(g).forEach(i);return e}(a,String(b),c||B,d||function(b){return a.outEdges(b)})}function D(a,b,c){return a.nodes().reduce(function(d,e){return d[e]=C(a,e,b,c),d},{})}function E(a){let b=0,c=[],d={},e=[];return a.nodes().forEach(function(f){f in d||function f(g){let h=d[g]={onStack:!0,lowlink:b,index:b++};if(c.push(g),a.successors(g).forEach(function(a){a in d?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){let a=[],b;do d[b=c.pop()].onStack=!1,a.push(b);while(g!==b)e.push(a)}}(f)}),e}function F(a){return E(a).filter(function(b){return b.length>1||1===b.length&&a.hasEdge(b[0],b[0])})}var G=()=>1;function H(a,b,c){var d,e,f;let g,h;return d=a,e=b||G,f=c||function(b){return a.outEdges(b)},g={},(h=d.nodes()).forEach(function(a){g[a]={},g[a][a]={distance:0,predecessor:""},h.forEach(function(b){a!==b&&(g[a][b]={distance:1/0,predecessor:""})}),f(a).forEach(function(b){let c=b.v===a?b.w:b.v,d=e(b);g[a][c]={distance:d,predecessor:a}})}),h.forEach(function(a){let b=g[a];h.forEach(function(c){let d=g[c];h.forEach(function(c){let e=d[a],f=b[c],g=d[c],h=e.distance+f.distance;h<g.distance&&(g.distance=h,g.predecessor=f.predecessor)})})}),g}var I=class extends Error{constructor(...a){super(...a)}};function J(a){let b={},c={},d=[];if(a.sinks().forEach(function e(f){if(f in c)throw new I;f in b||(c[f]=!0,b[f]=!0,a.predecessors(f).forEach(e),delete c[f],d.push(f))}),Object.keys(b).length!==a.nodeCount())throw new I;return d}function K(a){try{J(a)}catch(a){if(a instanceof I)return!1;throw a}return!0}function L(a,b,c){var d,e,f;let g,h;return d=b,e=function(a,b){return a.push(b),a},f=[],Array.isArray(d)||(d=[d]),g=b=>{var c;return null!=(c=a.isDirected()?a.successors(b):a.neighbors(b))?c:[]},h={},d.forEach(function(b){if(!a.hasNode(b))throw Error("Graph does not have node: "+b);f=function a(b,c,d,e,f,g,h){return c in e||(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,h,g,e,f)}),f}function M(a,b){return L(a,b,"post")}function N(a,b){return L(a,b,"pre")}function O(a,b){let c=new n,d={},e=new A,f;function g(a){let c=a.v===f?a.w:a.v,g=e.priority(c);if(void 0!==g){let h=b(a);h<g&&(d[c]=f,e.decrease(c,h))}}if(0===a.nodeCount())return c;a.nodes().forEach(function(a){e.add(a,1/0),c.setNode(a)}),e.decrease(a.nodes()[0],0);let h=!1;for(;e.size()>0;){if((f=e.removeMin())in d)c.setEdge(f,d[f]);else{if(h)throw Error("Input graph is not connected: "+a);h=!0}a.nodeEdges(f).forEach(g)}return c}function P(a,b,c,d){return function(a,b,c,d){if(void 0===c)return C(a,b,c,d);let e=!1,f=a.nodes();for(let g=0;g<f.length;g++){let h=d(f[g]);for(let a=0;a<h.length;a++){let b=h[a],d=b.v===f[g]?b.v:b.w,i=d===b.v?b.w:b.v;0>c({v:d,w:i})&&(e=!0)}if(e)return y(a,b,c,d)}return C(a,b,c,d)}(a,b,c,null!=d?d:b=>{let c=a.outEdges(b);return null!=c?c:[]})}function Q(a,b,c,d){let e=d;for(;a.hasNode(e);)e=d+""+ ++Z;return c.dummy=b,a.setNode(e,c),e}function R(a){let b=new n({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}function S(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}}function T(a){let b=$(W(a)+1).map(()=>[]);return a.nodes().forEach(c=>{let d=a.node(c),e=d.rank;void 0!==e&&(b[e]||(b[e]=[]),b[e][d.order]=c)}),b}function U(a,b,c,d){let e={width:0,height:0};return arguments.length>=4&&(e.rank=c,e.order=d),Q(a,"border",e,b)}function V(a,b){return b.length>65535?a(...(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).map(b=>a(...b))):a(...b)}function W(a){return V(Math.max,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?5e-324:c}))}function X(a,b){let c=Date.now();try{return b()}finally{console.log(a+" time: "+(Date.now()-c)+"ms")}}function Y(a,b){return b()}var Z=0;function $(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 _(a,b){let c={};for(let d of b)void 0!==a[d]&&(c[d]=a[d]);return c}function aa(a,b){let c;return c="string"==typeof b?a=>a[b]:b,Object.entries(a).reduce((a,[b,d])=>(a[b]=c(d,b),a),{})}var ab=class{constructor(){((a,b,c)=>{let d;return(d="symbol"!=typeof b?b+"":b)in a?h(a,d,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[d]=c})(this,"_sentinel");let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,b=a._prev;if(b!==a)return ac(b),b}enqueue(a){let b=this._sentinel;a._prev&&a._next&&ac(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,ad)),c=c._prev;return"["+a.join(", ")+"]"}};function ac(a){a._prev._next=a._next,a._next._prev=a._prev,delete a._next,delete a._prev}function ad(a,b){if("_next"!==a&&"_prev"!==a)return b}var ae=()=>1;function af(a,b,c,d,e){let f=[],g=e?f: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,ag(b,c,h)}),(a.outEdges(d.v)||[]).forEach(d=>{let e=a.edge(d),f=d.w,g=a.node(f);g.in-=e,ag(b,c,g)}),a.removeNode(d.v),g}function ag(a,b,c){var d,e,f;c.out?c.in?null==(f=a[c.out-c.in+b])||f.enqueue(c):null==(e=a[a.length-1])||e.enqueue(c):null==(d=a[0])||d.enqueue(c)}function ah(a){let b={};a.sources().forEach(function c(d){let e=a.node(d);if(Object.hasOwn(b,d))return e.rank;b[d]=!0;let f=a.outEdges(d),g=V(Math.min,f?f.map(b=>null==b?1/0:c(b.w)-a.edge(b).minlen):[]);return g===1/0&&(g=0),e.rank=g})}function ai(a,b){return a.node(b.w).rank-a.node(b.v).rank-a.edge(b).minlen}var aj=function(a){var b,c,d,e;let f,g,h=new n({directed:!1}),i=a.nodes();if(0===i.length)throw Error("Graph must have at least one node");let j=i[0],k=a.nodeCount();for(h.setNode(j,{});b=h,c=a,b.nodes().forEach(function a(d){let e=c.nodeEdges(d);e&&e.forEach(e=>{let f=e.v,g=d===f?e.w:f;b.hasNode(g)||ai(c,e)||(b.setNode(g,{}),b.setEdge(d,g,{}),a(g))})}),b.nodeCount()<k&&(d=h,f=(e=a).edges().reduce((a,b)=>{let c=1/0;return d.hasNode(b.v)!==d.hasNode(b.w)&&(c=ai(e,b)),c<a[0]?[c,b]:a},[1/0,null])[1]);)g=h.hasNode(f.v)?ai(a,f):-ai(a,f),function(a,b,c){a.nodes().forEach(a=>b.node(a).rank+=c)}(h,a,g);return h},{preorder:ak,postorder:al}=w;function am(a){var b;let c,d,e;b=a,e=new n().setGraph(b.graph()),b.nodes().forEach(a=>e.setNode(a,b.node(a))),b.edges().forEach(a=>{let c=e.edge(a.v,a.w)||{weight:0,minlen:1},d=b.edge(a);e.setEdge(a.v,a.w,{weight:c.weight+d.weight,minlen:Math.max(c.minlen,d.minlen)})}),ah(a=e);let f=aj(a);for(ap(f),an(f,a);c=aq(f);)d=ar(f,a,c),as(f,a,c,d)}function an(a,b){let c=al(a,a.nodes());(c=c.slice(0,c.length-1)).forEach(c=>{var d,e,f;let g;return d=a,e=b,f=c,g=d.node(f).parent,void(d.edge(f,g).cutvalue=ao(d,e,f))})}function ao(a,b,c){let d=a.node(c).parent,e=!0,f=b.edge(c,d),g=0;f||(e=!1,f=b.edge(d,c)),g=f.weight;let h=b.nodeEdges(c);return h&&h.forEach(f=>{let h=f.v===c,i=h?f.w:f.v;if(i!==d){var j,k,l;let d=h===e,m=b.edge(f).weight;if(g+=d?m:-m,j=a,k=c,l=i,j.hasEdge(k,l)){let b=a.edge(c,i).cutvalue;g+=d?-b:b}}}),g}function ap(a,b){arguments.length<2&&(b=a.nodes()[0]),function a(b,c,d,e,f){let g=d,h=b.node(e);c[e]=!0;let i=b.neighbors(e);return i&&i.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 aq(a){return a.edges().find(b=>a.edge(b).cutvalue<0)}function ar(a,b,c){let d=c.v,e=c.w;b.hasEdge(d,e)||(d=c.w,e=c.v);let f=a.node(d),g=a.node(e),h=f,i=!1;return f.lim>g.lim&&(h=g,i=!0),b.edges().filter(b=>i===at(a,a.node(b.v),h)&&i!==at(a,a.node(b.w),h)).reduce((a,c)=>ai(b,c)<ai(b,a)?c:a)}function as(a,b,c,d){let e=c.v,f=c.w;a.removeEdge(e,f),a.setEdge(d.v,d.w,{}),ap(a),an(a,b),function(a,b){let c=a.nodes().find(b=>!a.node(b).parent);if(!c)return;let d=ak(a,[c]);(d=d.slice(1)).forEach(c=>{let d=a.node(c).parent,e=b.edge(c,d),f=!1;e||(e=b.edge(d,c),f=!0),b.node(c).rank=b.node(d).rank+(f?e.minlen:-e.minlen)})}(a,b)}function at(a,b,c){return c.low<=b.lim&&b.lim<=c.lim}am.initLowLimValues=ap,am.initCutValues=an,am.calcCutValue=ao,am.leaveEdge=aq,am.enterEdge=ar,am.exchangeEdges=as;function au(a,b,c,d,e,f){let g=e[b][f-1],h=Q(a,"border",{width:0,height:0,rank:f,borderType:b},c);e[b][f]=h,a.setParent(h,d),g&&a.setEdge(g,h,{weight:1})}function av(a){a.nodes().forEach(b=>aw(a.node(b))),a.edges().forEach(b=>aw(a.edge(b)))}function aw(a){let b=a.width;a.width=a.height,a.height=b}function ax(a){a.y=-a.y}function ay(a){let b=a.x;a.x=a.y,a.y=b}function az(a,b,c){let d;for(;b.length&&(d=b[b.length-1]).i<=c;)b.pop(),a.push(d.vs),c++;return c}function aA(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){var e;let f,g;return e=d.get(b)||[],f=function(a){let b;for(;a.hasNode(b="_root"+ ++Z););return b}(a),g=new n({compound:!0}).setGraph({root:f}).setDefaultNodeLabel(b=>a.node(b)),e.forEach(d=>{let e=a.node(d),h=a.parent(d);if(e.rank===b||e.minRank<=b&&b<=e.maxRank){g.setNode(d),g.setParent(d,h||f);let i=a[c](d);i&&i.forEach(b=>{let c=b.v===d?b.w:b.v,e=g.edge(c,d),f=void 0!==e?e.weight:0;g.setEdge(c,d,{weight:a.edge(b).weight+f})}),Object.hasOwn(e,"minRank")&&g.setNode(d,{borderLeft:e.borderLeft[b],borderRight:e.borderRight[b]})}}),g})}function aB(a,b){Object.values(b).forEach(b=>b.forEach((b,c)=>a.node(b).order=c))}function aC(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];d||(a[b]=d={}),d[c]=!0}var aD=["nodesep","edgesep","ranksep","marginx","marginy"],aE={ranksep:50,edgesep:20,nodesep:50,rankdir:"TB",rankalign:"center"},aF=["acyclicer","ranker","rankdir","align","rankalign"],aG=["width","height","rank"],aH={width:0,height:0},aI=["minlen","weight","width","height","labeloffset"],aJ={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},aK=["labelpos"];function aL(a,b){return aa(_(a,b),Number)}function aM(a){let b={};return a&&Object.entries(a).forEach(([a,c])=>{"string"==typeof a&&(a=a.toLowerCase()),b[a]=c}),b}var aN=function(a,b={}){let c=b.debugTiming?X:Y;return c("layout",()=>{let d=c(" buildLayoutGraph",()=>{var b;let c,d;return b=a,c=new n({multigraph:!0,compound:!0}),d=aM(b.graph()),c.setGraph(Object.assign({},aE,aL(d,aD),_(d,aF))),b.nodes().forEach(a=>{let d=aL(aM(b.node(a)),aG);Object.keys(aH).forEach(a=>{void 0===d[a]&&(d[a]=aH[a])}),c.setNode(a,d);let e=b.parent(a);void 0!==e&&c.setParent(a,e)}),b.edges().forEach(a=>{let d=aM(b.edge(a));c.setEdge(a,Object.assign({},aJ,aL(d,aI),_(d,aK)))}),c});return c(" runLayout",()=>{var a,e,f;return a=d,e=c,f=b,void(e(" 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)}))}),e(" removeSelfEdges",()=>{var b;(b=a).edges().forEach(a=>{if(a.v===a.w){let c=b.node(a.v);c.selfEdges||(c.selfEdges=[]),c.selfEdges.push({e:a,label:b.edge(a)}),b.removeEdge(a)}})}),e(" acyclic",()=>{var b,c;let d,e,f;("greedy"===a.graph().acyclicer?function(a,b){var c,d;let e,f,g,h,i;if(1>=a.nodeCount())return[];let j=(c=a,d=b||ae,e=new n,f=0,g=0,c.nodes().forEach(a=>{e.setNode(a,{v:a,in:0,out:0})}),c.edges().forEach(a=>{let b=e.edge(a.v,a.w)||0,c=d(a);e.setEdge(a.v,a.w,b+c);let h=e.node(a.v),i=e.node(a.w);g=Math.max(g,h.out+=c),f=Math.max(f,i.in+=c)}),h=(function(a){let b=[];for(let c=0;c<a;c++)b.push(c);return b})(g+f+3).map(()=>new ab),i=f+1,e.nodes().forEach(a=>{ag(h,i,e.node(a))}),{graph:e,buckets:h,zeroIdx:i});return(function(a,b,c){var d;let e=[],f=b[b.length-1],g=b[0],h;for(;a.nodeCount();){for(;h=g.dequeue();)af(a,b,c,h);for(;h=f.dequeue();)af(a,b,c,h);if(a.nodeCount()){for(let f=b.length-2;f>0;--f)if(h=null==(d=b[f])?void 0:d.dequeue()){e=e.concat(af(a,b,c,h,!0)||[]);break}}}return e})(j.graph,j.buckets,j.zeroIdx).flatMap(b=>a.outEdges(b.v,b.w)||[])}(a,(b=a,a=>b.edge(a).weight)):(d=[],e={},f={},(c=a).nodes().forEach(function a(b){Object.hasOwn(f,b)||(f[b]=!0,e[b]=!0,c.outEdges(b).forEach(b=>{Object.hasOwn(e,b.w)?d.push(b):a(b.w)}),delete e[b])}),d)).forEach(b=>{let c=a.edge(b);a.removeEdge(b),c.forwardName=b.name,c.reversed=!0,a.setEdge(b.w,b.v,c,"rev"+ ++Z)})}),e(" nestingGraph.run",()=>{var b,c;let d,e,f,g,h,i;return d=Q(a,"root",{},"_root"),g=2*(f=V(Math.max,Object.values((i={},(b=a).children("\0").forEach(a=>(function a(c,d){let e=b.children(c);e&&e.length&&e.forEach(b=>a(b,d+1)),i[c]=d})(a,1)),e=i)))-1)+1,a.graph().nestingRoot=d,a.edges().forEach(b=>a.edge(b).minlen*=g),h=(c=a).edges().reduce((a,b)=>a+c.edge(b).weight,0)+1,void(a.children("\0").forEach(b=>(function a(b,c,d,e,f,g,h){var i;let j=b.children(h);if(!j.length){h!==c&&b.setEdge(c,h,{weight:0,minlen:d});return}let k=U(b,"_bt"),l=U(b,"_bb"),m=b.node(h);b.setParent(k,h),m.borderTop=k,b.setParent(l,h),m.borderBottom=l,j.forEach(i=>{var j;a(b,c,d,e,f,g,i);let m=b.node(i),n=m.borderTop?m.borderTop:i,o=m.borderBottom?m.borderBottom:i,p=m.borderTop?e:2*e,q=n!==o?1:f-(null!=(j=g[h])?j:0)+1;b.setEdge(k,n,{weight:p,minlen:q,nestingEdge:!0}),b.setEdge(o,l,{weight:p,minlen:q,nestingEdge:!0})}),b.parent(h)||b.setEdge(c,k,{weight:0,minlen:f+(null!=(i=g[h])?i:0)})})(a,d,g,h,f,e,b)),a.graph().nodeRankFactor=g)}),e(" rank",()=>(function(a){let b=a.graph().ranker;if("function"==typeof b)return b(a);switch(b){case"network-simplex":default:am(a);break;case"tight-tree":var c;ah(c=a),aj(c);break;case"longest-path":ah(a);case"none":}})(R(a))),e(" 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};Q(b,"edge-proxy",d,"_ep")}})}),e(" removeEmptyRanks",()=>{let b,c,d,e;return b=V(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)}),d=0,e=a.graph().nodeRankFactor,void 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)})}),e(" nestingGraph.cleanup",()=>{let b;return b=a.graph(),void(a.removeNode(b.nestingRoot),delete b.nestingRoot,a.edges().forEach(b=>{a.edge(b).nestingEdge&&a.removeEdge(b)}))}),e(" normalizeRanks",()=>{let b;return b=V(Math.min,a.nodes().map(b=>{let c=a.node(b).rank;return void 0===c?Number.MAX_VALUE:c})),void a.nodes().forEach(c=>{let d=a.node(c);Object.hasOwn(d,"rank")&&(d.rank-=b)})}),e(" 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)}),e(" 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))})}),e(" normalize.run",()=>{a.graph().dummyChains=[],a.edges().forEach(b=>(function(a,b){let c,d,e,f=b.v,g=a.node(f).rank,h=b.w,i=a.node(h).rank,j=b.name,k=a.edge(b),l=k.labelRank;if(i!==g+1){for(a.removeEdge(b),e=0,++g;g<i;++e,++g)k.points=[],c=Q(a,"edge",d={width:0,height:0,edgeLabel:k,edgeObj:b,rank:g},"_d"),g===l&&(d.width=k.width,d.height=k.height,d.dummy="edge-label",d.labelpos=k.labelpos),a.setEdge(f,c,{weight:k.weight},j),0===e&&a.graph().dummyChains.push(c),f=c;a.setEdge(f,h,{weight:k.weight},j)}})(a,b))}),e(" parentDummyChains",()=>{var b,c;let d,e,f;return f=(d={},e=0,(c=b=a).children("\0").forEach(function a(b){let f=e;c.children(b).forEach(a),d[b]={low:f,lim:e++}}),d),void b.graph().dummyChains.forEach(a=>{let c=b.node(a),d=c.edgeObj,e=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;i=c;do e.push(i=a.parent(i));while(i&&(b[i].low>g||h>b[i].lim))let j=i,k=d;for(;(k=a.parent(k))!==j;)f.push(k);return{path:e.concat(f.reverse()),lca:j}}(b,f,d.v,d.w),g=e.path,h=e.lca,i=0,j=g[0],k=!0;for(;a!==d.w;){if(c=b.node(a),k){for(;(j=g[i])!==h&&b.node(j).maxRank<c.rank;)i++;j===h&&(k=!1)}if(!k){for(;i<g.length-1&&b.node(g[i+1]).minRank<=c.rank;)i++;j=g[i]}void 0!==j&&b.setParent(a,j),a=b.successors(a)[0]}})}),e(" addBorderSegments",()=>{var b;(b=a).children("\0").forEach(function a(c){let d=b.children(c),e=b.node(c);if(d.length&&d.forEach(a),Object.hasOwn(e,"minRank")){e.borderLeft=[],e.borderRight=[];for(let a=e.minRank,d=e.maxRank+1;a<d;++a)au(b,"borderLeft","_bl",c,e,a),au(b,"borderRight","_br",c,e,a)}})}),e(" order",()=>(function a(b,c={}){let d,e,f;if("function"==typeof c.customOrder)return void c.customOrder(b,a);let g=W(b),h=aA(b,$(1,g+1),"inEdges"),i=aA(b,$(g-1,-1,-1),"outEdges"),j=(d={},f=$(V(Math.max,(e=b.nodes().filter(a=>!b.children(a).length)).map(a=>b.node(a).rank))+1).map(()=>[]),e.sort((a,c)=>b.node(a).rank-b.node(c).rank).forEach(function a(c){if(d[c])return;d[c]=!0,f[b.node(c).rank].push(c);let e=b.successors(c);e&&e.forEach(a)}),f);if(aB(b,j),c.disableOptimalOrderHeuristic)return;let k=1/0,l,m=c.constraints||[];for(let a=0,c=0;c<4;++a,++c){(function(a,b,c){let d=new n;a.forEach(function(a){var e;let f,g;c.forEach(a=>d.setEdge(a.left,a.right));let h=a.graph().root,i=function a(b,c,d,e){var f;let g,h,i,j,k,l,m,n,o,p,q=b.children(c),r=b.node(c),s=r?r.borderLeft:void 0,t=r?r.borderRight:void 0,u={};s&&(q=q.filter(a=>a!==s&&a!==t));let v=function(a,b=[]){return b.map(b=>{let c=a.inEdges(b);if(!c||!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}}})}(b,q);v.forEach(c=>{if(b.children(c.v).length){var f,g;let h=a(b,c.v,d,e);u[c.v]=h,Object.hasOwn(h,"barycenter")&&(f=c,g=h,void 0!==f.barycenter?(f.barycenter=(f.barycenter*f.weight+g.barycenter*g.weight)/(f.weight+g.weight),f.weight+=g.weight):(f.barycenter=g.barycenter,f.weight=g.weight))}});let w=(g={},v.forEach((a,b)=>{let c={indegree:0,in:[],out:[],vs:[a.v],i:b};void 0!==a.barycenter&&(c.barycenter=a.barycenter,c.weight=a.weight),g[a.v]=c}),d.edges().forEach(a=>{let b=g[a.v],c=g[a.w];void 0!==b&&void 0!==c&&(c.indegree++,b.out.push(c))}),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=>_(a,["vs","i","barycenter","weight"]))}(Object.values(g).filter(a=>!a.indegree)));!function(a,b){a.forEach(a=>{a.vs=a.vs.flatMap(a=>b[a]?b[a].vs:a)})}(w,u);let x=(j=(f=a=>Object.hasOwn(a,"barycenter"),h={lhs:[],rhs:[]},w.forEach(a=>{f(a)?h.lhs.push(a):h.rhs.push(a)}),i=h).lhs,k=i.rhs.sort((a,b)=>b.i-a.i),l=[],m=0,n=0,o=0,j.sort(function(a){return(b,c)=>b.barycenter<c.barycenter?-1:b.barycenter>c.barycenter?1:a?c.i-b.i:b.i-c.i}(!!e)),o=az(l,k,o),j.forEach(a=>{o+=a.vs.length,l.push(a.vs),m+=a.barycenter*a.weight,n+=a.weight,o=az(l,k,o)}),p={vs:l.flat(1)},n&&(p.barycenter=m/n,p.weight=n),p);if(s&&t){x.vs=[s,x.vs,t].flat(1);let a=b.predecessors(s);if(a&&a.length){let c=b.node(a[0]),d=b.predecessors(t),e=b.node(d[0]);Object.hasOwn(x,"barycenter")||(x.barycenter=0,x.weight=0),x.barycenter=(x.barycenter*x.weight+c.order+e.order)/(x.weight+2),x.weight+=2}}return x}(a,h,d,b);i.vs.forEach((b,c)=>a.node(b).order=c),e=i.vs,f={},e.forEach(b=>{let c=a.parent(b),e,h;for(;c;){if((e=a.parent(c))?(h=f[e],f[e]=c):(h=g,g=c),h&&h!==c)return void d.setEdge(h,c);c=e}})})})(a%2?h:i,a%4>=2,m),j=T(b);let d=function(a,b){let c=0;for(let d=1;d<b.length;++d)c+=function(a,b,c){var d;let e=(d=c.map((a,b)=>b),c.reduce((a,b,c)=>(a[b]=d[c],a),{})),f=b.flatMap(b=>{let c=a.outEdges(b);return c?c.map(b=>({pos:e[b.w],weight:a.edge(b).weight})).sort((a,b)=>a.pos-b.pos):[]}),g=1;for(;g<c.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[d-1],b[d]);return c}(b,j);d<k?(c=0,l=Object.assign({},j),k=d):d===k&&(l=structuredClone(j))}aB(b,l)})(a,f)),e(" insertSelfEdges",()=>{var b;T(b=a).forEach(a=>{let c=0;a.forEach((a,d)=>{let e=b.node(a);e.order=d+c,(e.selfEdges||[]).forEach(a=>{Q(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})})}),e(" adjustCoordinateSystem",()=>{var b;let c;("lr"===(c=null==(b=a.graph().rankdir)?void 0:b.toLowerCase())||"rl"===c)&&av(a)}),e(" position",()=>{var b,c,d,e;let f,g,h,i,j,k,l,m,o,p,q,r,s,t,u;q=T(e=b=R(b=a)),s=(r=e.graph()).ranksep,t=r.rankalign,u=0,q.forEach(a=>{let b=a.reduce((a,b)=>{var c;let d=null!=(c=e.node(b).height)?c:0;return a>d?a:d},0);a.forEach(a=>{let c=e.node(a);"top"===t?c.y=u+c.height/2:"bottom"===t?c.y=u+b-c.height/2:c.y=u+b/2}),u+=b+s}),Object.entries((g=T(c=b),h=Object.assign((f={},g.length&&g.reduce(function(a,b){let d=0,e=0,g=a.length,h=b[b.length-1];return b.forEach((a,i)=>{let j=function(a,b){if(a.node(b).dummy){let c=a.predecessors(b);if(c)return c.find(b=>a.node(b).dummy)}}(c,a),k=j?c.node(j).order:g;(j||a===h)&&(b.slice(e,i+1).forEach(a=>{let b=c.predecessors(a);b&&b.forEach(b=>{let e=c.node(b),g=e.order;(g<d||k<g)&&!(e.dummy&&c.node(a).dummy)&&aC(f,b,a)})}),e=i+1,d=k)}),b}),f),function(a,b){let c={};function d(b,d,e,f,g){$(d,e).forEach(d=>{let e=b[d];if(void 0!==e&&a.node(e).dummy){let b=a.predecessors(e);b&&b.forEach(b=>{if(void 0===b)return;let d=a.node(b);d.dummy&&(d.order<f||d.order>g)&&aC(c,b,e)})}})}return b.length&&b.reduce(function(b,c){let e=-1,f=-1,g=0;return c.forEach((h,i)=>{if("border"===a.node(h).dummy){let b=a.predecessors(h);if(b&&b.length){let h=b[0];if(void 0===h)return;f=a.node(h).order,d(c,g,i,e,f),g=i,e=f}}d(c,g,c.length,f,b.length)}),c}),c}(c,g)),i={},["u","d"].forEach(a=>{j="u"===a?g:Object.values(g).reverse(),["l","r"].forEach(b=>{var d,e;let f,g,k;"r"===b&&(j=j.map(a=>Object.values(a).reverse()));let l=(d=j,e=b=>("u"===a?c.predecessors(b):c.successors(b))||[],f={},g={},k={},d.forEach(a=>{a.forEach((a,b)=>{f[a]=a,g[a]=a,k[a]=b})}),d.forEach(a=>{let b=-1;a.forEach(a=>{let c=e(a);if(c&&c.length){let d=c.sort((a,b)=>{let c=k[a],d=k[b];return(void 0!==c?c:0)-(void 0!==d?d:0)}),e=(d.length-1)/2;for(let c=Math.floor(e),i=Math.ceil(e);c<=i;++c){let e=d[c];if(void 0===e)continue;let i=k[e];if(void 0!==i&&g[a]===a&&b<i&&!function(a,b,c){if(b>c){let a=b;b=c,c=a}let d=a[b];return void 0!==d&&Object.hasOwn(d,c)}(h,a,e)){let c=f[e];void 0!==c&&(g[e]=a,g[a]=f[a]=c,b=i)}}}})}),{root:f,align:g}),m=function(a,b,c,d,e=!1){var f,g,h,i,j,k,l;let m,o,p,q={},r=(f=a,g=b,h=c,i=e,m=new n,p=(j=(o=f.graph()).nodesep,k=o.edgesep,l=i,(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+=l?g:-g),g=void 0,f+=(d.dummy?k:j)/2,f+=(e.dummy?k:j)/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+=l?g:-g),f}),g.forEach(a=>{let b;a.forEach(a=>{let c=h[a];if(void 0!==c){if(m.setNode(c),void 0!==b){let d=h[b];if(void 0!==d){let e=m.edge(d,c);m.setEdge(d,c,Math.max(p(f,a,b),e||0))}}b=a}})}),m),s=e?"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){let b=r.inEdges(a);b?q[a]=b.reduce((a,b)=>{var c;let d=null!=(c=q[b.v])?c:0,e=r.edge(b);return Math.max(a,d+(void 0!==e?e:0))},0):q[a]=0},function(a){return r.predecessors(a)||[]}),t(function(b){let c=r.outEdges(b),d=1/0;c&&(d=c.reduce((a,b)=>{let c=q[b.w],d=r.edge(b);return Math.min(a,(void 0!==c?c:0)-(void 0!==d?d:0))},1/0));let e=a.node(b);d!==1/0&&e.borderType!==s&&(q[b]=Math.max(void 0!==q[b]?q[b]:0,d))},function(a){return r.successors(a)||[]}),Object.keys(d).forEach(a=>{var b;let d=c[a];void 0!==d&&(q[a]=null!=(b=q[d])?b:0)}),q}(c,j,l.root,l.align,"r"===b);"r"===b&&(m=aa(m,a=>-a)),i[a+b]=m})}),k=Object.values(i).reduce((a,b)=>{let d=-1/0,e=1/0;Object.entries(b).forEach(([a,b])=>{var f,g;let h=(f=c,g=a,f.node(g).width/2);d=Math.max(b+h,d),e=Math.min(b-h,e)});let f=d-e;return f<a[0]&&(a=[f,b]),a},[1/0,null])[1],m=V(Math.min,l=Object.values(k)),o=V(Math.max,l),["u","d"].forEach(a=>{["l","r"].forEach(b=>{let c=a+b,d=i[c];if(!d||d===k)return;let e=Object.values(d),f=m-V(Math.min,e);"l"!==b&&(f=o-V(Math.max,e)),f&&(i[c]=aa(d,a=>a+f))})}),d=c.graph().align,(p=i.ul)?aa(p,(a,b)=>{var c,e;if(d){let a=i[d.toLowerCase()];if(a&&void 0!==a[b])return a[b]}let f=Object.values(i).map(a=>{let c=a[b];return void 0!==c?c:0}).sort((a,b)=>a-b);return((null!=(c=f[1])?c:0)+(null!=(e=f[2])?e:0))/2}):{})).forEach(([a,c])=>b.node(a).x=c)}),e(" positionSelfEdges",()=>{var b;(b=a).nodes().forEach(a=>{let c=b.node(a);if("selfedge"===c.dummy){let 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}})}),e(" 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)})}),e(" normalize.undo",()=>{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)})}),e(" 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}})}),e(" undoCoordinateSystem",()=>{var b,c,d;let e;("bt"===(e=null==(b=a.graph().rankdir)?void 0:b.toLowerCase())||"rl"===e)&&((c=a).nodes().forEach(a=>ax(c.node(a))),c.edges().forEach(a=>{var b;let d=c.edge(a);null==(b=d.points)||b.forEach(ax),Object.hasOwn(d,"y")&&ax(d)})),("lr"===e||"rl"===e)&&((d=a).nodes().forEach(a=>ay(d.node(a))),d.edges().forEach(a=>{var b;let c=d.edge(a);null==(b=c.points)||b.forEach(ay),Object.hasOwn(c,"x")&&ay(c)}),av(a))}),e(" 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)),e(" 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(S(d,f)),c.points.push(S(e,g))})}),e(" reversePoints",()=>{var b;(b=a).edges().forEach(a=>{let c=b.edge(a);c.reversed&&c.points.reverse()})}),e(" acyclic.undo",()=>{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)}})}))}),c(" updateInputGraph",()=>{var b,c;return b=a,c=d,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)}),d})};let aO={direction:"LR",ranksep:200,nodesep:30};function aP(a="ltr"){return{...aO,direction:"rtl"===a?"RL":"LR"}}let aQ={featureNode:{width:388,height:140},repositoryNode:{width:400,height:140}};function aR(a,b){let c=a.data;return c&&"number"==typeof c.width&&"number"==typeof c.height?{width:c.width,height:c.height}:aQ[a.type??""]??b}function aS(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 i.Graph({multigraph:!0});h.setDefaultEdgeLabel(()=>({})),h.setGraph({rankdir:d,ranksep:f,nodesep:g});let j=new Set;for(let a of b)j.add(a.source),j.add(a.target);let k=a.filter(a=>j.has(a.id)),l=a.filter(a=>!j.has(a.id));for(let a of k){let b=aR(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);aN(h);let{targetPosition:m,sourcePosition:n}=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),o="LR"===d||"RL"===d,p=new Map;for(let a of k){let b=h.node(a.id),c=aR(a,e);p.set(a.id,{cx:b.x,cy:b.y,w:c.width,h:c.height})}let q=0;for(let a of p.values()){q=o?a.cx:a.cy;break}for(let a of l){let b=aR(a,e);p.set(a.id,{cx:o?q:0,cy:o?0:q,w:b.width,h:b.height})}let r=new Map;for(let a of b)p.has(a.source)&&p.has(a.target)&&(r.has(a.source)||r.set(a.source,[]),r.get(a.source).push(a.target));let s=new Map;for(let b=0;b<a.length;b++)s.set(a[b].id,b);for(let[,a]of r)a.sort((a,b)=>(s.get(a)??0)-(s.get(b)??0));let t=new Set;for(let a of r.values())for(let b of a)t.add(b);let u=[...[...j].filter(a=>p.has(a)&&!t.has(a)),...l.map(a=>a.id)];u.sort((a,b)=>(s.get(a)??0)-(s.get(b)??0));let v=new Map;for(let a of u)!function a(b){if(v.has(b))return v.get(b);let c=p.get(b),d=o?c.h:c.w,e=r.get(b);if(!e||0===e.length)return v.set(b,d),d;let f=0;for(let b of e)f+=a(b);let h=Math.max(d,f+=(e.length-1)*g);return v.set(b,h),h}(a);let w=0;for(let a of u){let b=v.get(a)??0;!function a(b,c){let d=p.get(b);o?d.cy=c:d.cx=c;let e=r.get(b);if(!e||0===e.length)return;let f=0;for(let a of e)f+=v.get(a)??0;let h=c-(f+=(e.length-1)*g)/2;for(let b of e){let c=v.get(b)??0;a(b,h+c/2),h+=c+g}}(a,w+b/2),w+=b+g}let x=[];for(let b of a){let a=p.get(b.id);a&&x.push({...b,targetPosition:m,sourcePosition:n,position:{x:a.cx-a.w/2,y:a.cy-a.h/2}})}return{nodes:x,edges:[...b]}}function aT(a,b){let c=new Map;for(let a of b)"dependencyEdge"===a.type&&c.set(a.target,a.source);let d=new Map,e=new Map;for(let b of a)"featureNode"===b.type?d.set(b.id,{nodeId:b.id,data:b.data,parentNodeId:c.get(b.id)}):"repositoryNode"===b.type&&e.set(b.id,{nodeId:b.id,data:b.data});return{featureMap:d,repoMap:e}}function aU(a,b){return(void 0===b.state||b.state===a.state)&&(void 0===b.lifecycle||b.lifecycle===a.lifecycle)&&(void 0===b.name||b.name===a.name)&&(void 0===b.description||b.description===a.description)}function aV(a,b){if(a.size!==b.size)return!1;for(let[c,d]of a){let a=b.get(c);if(!a||d.parentNodeId!==a.parentNodeId||d.data!==a.data&&JSON.stringify(d.data)!==JSON.stringify(a.data))return!1}return!0}var aW=a.i(6120);let aX=(0,aW.createServerReference)("405c0161a824d7c6bfb099b9a201402629f9a809f4",aW.callServer,void 0,aW.findSourceMapURL,"getFeatureMetadata");var aY=a.i(84871);let aZ=(0,aW.createServerReference)("40a85456a342184720e7bd43147ef6d61ed80fe86a",aW.callServer,void 0,aW.findSourceMapURL,"archiveFeature"),a$=(0,aW.createServerReference)("7830a0050246cf0a7c64eb408158d03b581fa9fd2d",aW.callServer,void 0,aW.findSourceMapURL,"deleteFeature");var a_=a.i(62271),a0=a.i(54321),a1=a.i(60742);let a2=(0,aW.createServerReference)("401724219fbd15d0044167e2ceadcb426a1b88b6f1",aW.callServer,void 0,aW.findSourceMapURL,"unarchiveFeature");var a3=a.i(21443);let a4=(0,aW.createServerReference)("4094b8bc3c9b9c623df2845c71dc8335b7bc03f8dc",aW.callServer,void 0,aW.findSourceMapURL,"deleteRepository");var a5=a.i(19884);let a6=(0,e.createLogger)("[Polling]"),a7=0;a.s(["useControlCenterState",0,function(a,e){let h=(0,c.useRouter)(),[i,j]=(0,b.useState)(!1),{nodes:k,edges:l,reconcile:m,updateFeature:n,addPendingFeature:o,removeFeature:p,restoreFeature:q,addRepository:r,removeRepository:s,replaceRepository:t,getFeatureRepositoryPath:u,getRepositoryData:v,getRepoMapSize:w,setCallbacks:x,beginMutation:y,endMutation:z,isMutating:A}=function(a,c,d=!1){var e;let f,{i18n:h}=(0,g.useTranslation)(),i=(0,b.useMemo)(()=>aP(h.dir()),[h]),j=(0,b.useMemo)(()=>aT(a,c),[]),[k,l]=(0,b.useState)(j.featureMap),[m,n]=(0,b.useState)(j.repoMap),[o,p]=(0,b.useState)(new Map),q=(0,b.useRef)(new Map),r=(0,b.useRef)(new Set),s=(0,b.useRef)(0),t=(0,b.useRef)(new Set),u=(0,b.useRef)(new Set),v=(0,b.useRef)({}),w=(0,b.useMemo)(()=>({onNodeAction:a=>v.current.onNodeAction?.(a),onNodeSettings:a=>v.current.onNodeSettings?.(a),onFeatureDelete:(a,b,c,d)=>v.current.onFeatureDelete?.(a,b,c,d),onRepositoryAdd:a=>v.current.onRepositoryAdd?.(a),onRepositoryClick:a=>v.current.onRepositoryClick?.(a),onRepositoryDelete:a=>v.current.onRepositoryDelete?.(a),onRetryFeature:a=>v.current.onRetryFeature?.(a),onStartFeature:a=>v.current.onStartFeature?.(a),onArchiveFeature:a=>v.current.onArchiveFeature?.(a),onUnarchiveFeature:a=>v.current.onUnarchiveFeature?.(a)}),[]),x=(0,b.useRef)(k);x.current=k;let y=(0,b.useRef)(m);y.current=m;let z=(0,b.useMemo)(()=>{if(d)return k;let a=new Map;for(let[b,c]of k)"archived"!==c.data.state&&a.set(b,c);return a.size===k.size?k:a},[k,d]),{nodes:A,edges:B}=(e=(0,b.useMemo)(()=>(function(a,b,c,d){let e=[],f=[],g=a=>a.replace(/\\/g,"/"),h=new Map;for(let[a,c]of b)c.data.repositoryPath&&h.set(g(c.data.repositoryPath),a);let i=new Map;for(let[a,c]of[...b.entries()].sort((a,b)=>{let c=a[1].data.createdAt,d=b[1].data.createdAt;return("number"!=typeof c||Number.isNaN(c)?1/0:c)-("number"!=typeof d||Number.isNaN(d)?1/0:d)})){let b={...c.data,...d?.onRepositoryAdd&&{onAdd:()=>d.onRepositoryAdd(a)},...d?.onRepositoryClick&&{onClick:()=>d.onRepositoryClick(a)},...d?.onRepositoryDelete&&{onDelete:d.onRepositoryDelete}};e.push({id:a,type:"repositoryNode",position:{x:0,y:0},data:b})}for(let[b,j,k]of[...[...a.entries()].map(([a,b])=>[a,b,!1]),...[...c.entries()].filter(([b])=>!a.has(b)).map(([a,b])=>[a,b,!0])]){let l="creating"===j.data.state||k,m={...j.data,...!l&&d?.onNodeAction&&{onAction:()=>d.onNodeAction(b)},...!l&&d?.onNodeSettings&&{onSettings:()=>d.onNodeSettings(b)},...!l&&d?.onFeatureDelete&&{onDelete:d.onFeatureDelete},...!l&&"error"===j.data.state&&d?.onRetryFeature&&{onRetry:d.onRetryFeature},...!l&&"pending"===j.data.state&&d?.onStartFeature&&{onStart:d.onStartFeature},...!l&&("running"===j.data.state||"action-required"===j.data.state)&&d?.onStopFeature&&{onStop:d.onStopFeature},...!l&&"archived"!==j.data.state&&"deleting"!==j.data.state&&d?.onArchiveFeature&&{onArchive:d.onArchiveFeature},...!l&&"archived"===j.data.state&&d?.onUnarchiveFeature&&{onUnarchive:d.onUnarchiveFeature}};if(e.push({id:b,type:"featureNode",position:{x:0,y:0},data:m}),j.parentNodeId&&(a.has(j.parentNodeId)||c.has(j.parentNodeId)))f.push({id:`dep-${j.parentNodeId}-${b}`,source:j.parentNodeId,target:b,type:"dependencyEdge"});else{let a=g(j.data.repositoryPath),c=h.get(a)??function(a){if(i.has(a))return i.get(a);let b=`virtual-repo-${a}`,c=a.split("/").filter(Boolean).at(-1)??a;return e.push({id:b,type:"repositoryNode",position:{x:0,y:0},data:{name:c,repositoryPath:a}}),i.set(a,b),b}(a);f.push({id:`edge-${c}-${b}`,source:c,target:b,style:{strokeDasharray:"5 5"}})}}let j=new Set;for(let a of f)"dependencyEdge"===a.type&&j.add(a.source);let k=f.length>0;for(let a of e){let b=a.data;b.showHandles=k,"featureNode"===a.type&&(b.hasChildren=j.has(a.id))}return{nodes:e,edges:f}})(z,m,o,w),[z,m,o,w]),f=(0,b.useRef)({key:"",positions:new Map}),(0,b.useMemo)(()=>{let a=e.nodes.map(a=>a.id).sort().join(","),b=e.edges.map(a=>`${a.source}-${a.target}`).sort().join(","),c=`${a}|${b}|${i.direction}`;if(c!==f.current.key){let a=aS(e.nodes,e.edges,i),b=new Map;for(let c of a.nodes)b.set(c.id,{position:c.position,targetPosition:c.targetPosition,sourcePosition:c.sourcePosition});let d=f.current.positions;if(d.size>0){let c=0,e=0;for(let[a,f]of b){let b=d.get(a);if(b){c=b.position.x-f.position.x,e=b.position.y-f.position.y;break}}if(0!==c||0!==e){for(let a of b.values())a.position={x:a.position.x+c,y:a.position.y+e};for(let b of a.nodes)b.position={x:b.position.x+c,y:b.position.y+e}}}return f.current={key:c,positions:b},a}let{positions:d}=f.current;return{nodes:e.nodes.map(a=>{let b=d.get(a.id);return b?{...a,...b}:a}),edges:e.edges}},[e,i])),C=(0,b.useCallback)((a,b)=>{if(s.current>0)return;let{featureMap:c,repoMap:d}=aT(a,b),e=new Set([...c.values()].map(a=>`${a.data.name}\0${a.data.repositoryPath}`));l(a=>{let b=[...a.entries()].filter(([,a])=>"creating"===a.data.state),d=new Map(c);for(let[a,c]of b){let b=`${c.data.name}\0${c.data.repositoryPath}`;e.has(b)||d.set(a,c)}let f=new Set;for(let[b,c]of a)"deleting"===c.data.state&&(d.has(b)?d.set(b,{...d.get(b),data:{...d.get(b).data,state:"deleting"}}):u.current.has(b)||(d.set(b,c),f.add(b)));for(let[a,b]of(u.current=f,q.current)){let c=d.get(a);c&&(d.set(a,{...c,data:{...c.data,...b}}),q.current.delete(a))}return aV(a,d)?a:d}),p(a=>{if(0===a.size)return a;let b=!1,c=new Map(a);for(let[d,f]of a){let a=`${f.data.name}\0${f.data.repositoryPath}`;e.has(a)&&(c.delete(d),b=!0)}return b?c:a}),n(a=>{let b=new Map(d),c=new Set([...d.values()].map(a=>a.data.repositoryPath));for(let[d,e]of a){if(b.has(d)||c.has(e.data.repositoryPath)){r.current.delete(d);continue}(d.startsWith("repo-temp-")||r.current.has(d))&&b.set(d,e)}return aV(a,b)?a:b})},[]),D=(0,b.useCallback)((a,b)=>{l(c=>{let d=c.get(a);if(!d)return q.current.set(a,{...q.current.get(a),...b}),c;if(q.current.delete(a),aU(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e}),p(c=>{let d=c.get(a);if(!d||aU(d.data,b))return c;let e=new Map(c);return e.set(a,{...d,data:{...d.data,...b}}),e})},[]),E=(0,b.useCallback)((a,b,c)=>{p(d=>{let e=new Map(d);return e.set(a,{nodeId:a,data:b,parentNodeId:c}),e})},[]),F=(0,b.useCallback)(a=>{p(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),G=(0,b.useCallback)(a=>{l(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),H=(0,b.useCallback)((a,b)=>{l(c=>{let d=new Map(c);return d.set(a,b),d})},[]),I=(0,b.useCallback)((a,b)=>{r.current.add(a),n(c=>{let d=new Map(c);return d.set(a,{nodeId:a,data:b}),d})},[]),J=(0,b.useCallback)(a=>{r.current.delete(a),n(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},[]),K=(0,b.useCallback)((a,b,c)=>{r.current.delete(a),r.current.add(b),n(d=>{if(!d.has(a))return d;let e=new Map(d);return e.delete(a),e.set(b,{nodeId:b,data:c}),e})},[]),L=(0,b.useCallback)(a=>x.current.get(a)?.data.repositoryPath,[]),M=(0,b.useCallback)(a=>y.current.get(a)?.data,[]),N=(0,b.useCallback)(()=>y.current.size,[]),O=(0,b.useCallback)(a=>{v.current=a},[]),P=(0,b.useCallback)(()=>{s.current++},[]),Q=(0,b.useCallback)((a=3e3)=>{let b=setTimeout(()=>{s.current=Math.max(0,s.current-1),t.current.delete(b)},a);t.current.add(b)},[]),R=(0,b.useCallback)(()=>s.current>0,[]);return(0,b.useEffect)(()=>{let a=t.current;return()=>{for(let b of a)clearTimeout(b);a.clear()}},[]),{nodes:A,edges:B,reconcile:C,updateFeature:D,addPendingFeature:E,removePendingFeature:F,removeFeature:G,restoreFeature:H,addRepository:I,removeRepository:J,replaceRepository:K,getFeatureRepositoryPath:L,getRepositoryData:M,getRepoMapSize:N,setCallbacks:O,beginMutation:P,endMutation:Q,isMutating:R}}(a,e,i),B=(0,b.useRef)(k),C=(0,b.useRef)(l);(0,b.useEffect)(()=>{B.current=k,C.current=l},[k,l]);let D=(0,b.useMemo)(()=>a.map(a=>a.id).sort().join(","),[a]),E=(0,b.useMemo)(()=>a.filter(a=>"featureNode"===a.type).map(a=>{let b=a.data;return`${a.id}:${b.state}:${b.lifecycle}`}).sort().join(","),[a]),F=(0,b.useRef)("");(0,b.useEffect)(()=>{let b=`${D}|${E}`;b!==F.current&&(F.current=b,m(a,e))},[D,E,a,e,m]);let G=(0,b.useRef)(new Map),{events:H}=(0,aY.useAgentEventsContext)();(0,b.useEffect)(()=>{let b=G.current;for(let c of a){if("featureNode"!==c.type)continue;let a=c.data,e=b.get(c.id);void 0!==e&&e!==a.state&&(H.some(b=>b.featureId===a.featureId&&(0,f.mapEventTypeToState)(b.eventType)===a.state)||("done"===a.state?d.toast.success(a.name,{description:"Feature completed!"}):"action-required"===a.state?d.toast.warning(a.name,{description:"Waiting for your approval",action:{label:"Review",onClick:()=>h.push(`/feature/${a.featureId}`)}}):"error"===a.state&&d.toast.error(a.name,{description:a.errorMessage??"Agent failed"}))),b.set(c.id,a.state)}},[E,a,H,h]),function({nodesRef:a,updateFeature:c,isMutating:d,beginMutation:e,endMutation:g}){let{events:h}=(0,aY.useAgentEventsContext)(),i=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(i.current>h.length&&(i.current=0),h.length<=i.current)return;let b=h.slice(i.current);for(let{featureId:e,state:g,lifecycle:j}of(i.current=h.length,(0,f.resolveSseEventUpdates)(b)))if(void 0!==g||void 0!==j){let b=`feat-${e}`,f=a.current.find(a=>a.id===b),h=f?f.data.state:void 0;if("deleting"===h||"error"===g&&d()&&"running"===h)continue;c(b,{...void 0!==g&&{state:g},...void 0!==j&&{lifecycle:j}})}},[h,c,d,a]),(0,b.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;e(),c(`feat-${b}`,{state:"running"}),g()};return window.addEventListener("shipit-ai:feature-approved",a),()=>window.removeEventListener("shipit-ai:feature-approved",a)},[c,e,g]);let j=(0,b.useRef)(new Set),k=(0,b.useRef)(0);(0,b.useEffect)(()=>{if(k.current>h.length&&(k.current=0),h.length<=k.current)return;let a=h.slice(k.current);for(let b of(k.current=h.length,a)){if("Feature metadata updated"!==b.message||j.current.has(b.featureId))continue;j.current.add(b.featureId);let a=`feat-${b.featureId}`;aX(b.featureId).then(b=>{b&&c(a,{name:b.name,description:b.description})}).catch(()=>{})}},[h,c])}({nodesRef:B,updateFeature:n,isMutating:A,beginMutation:y,endMutation:z}),(0,b.useEffect)(()=>{a6.debug("polling enabled (15000ms interval)");let a=setInterval(async()=>{if(!document.hidden&&!A())try{let a=await fetch("/api/graph-data");if(!a.ok)throw Error(`status ${a.status}`);let{nodes:b,edges:c}=await a.json();m(b,c)}catch{a6.warn("poll fetch failed — will retry next interval")}},15e3);return()=>{a6.debug("polling disabled"),clearInterval(a)}},[m,A]);let{handleRetryFeature:I,handleStartFeature:J,handleStopFeature:K,handleArchiveFeature:L,handleUnarchiveFeature:M,handleDeleteFeature:N,handleDeleteRepository:O,handleLayout:P,handleAddRepository:Q}=function({nodesRef:a,edgesRef:e,updateFeature:f,removeFeature:g,restoreFeature:h,addRepositoryToMap:i,removeRepository:j,replaceRepository:k,getRepositoryData:l,getRepoMapSize:m,reconcile:n,beginMutation:o,endMutation:p}){let q=(0,c.useRouter)(),r=(0,a5.useSoundAction)("delete"),s=(0,a5.useSoundAction)("create"),t=(0,b.useRef)(0),u=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"running"}),(0,a_.resumeFeature)(a).then(a=>{a.error?(f(b,{state:"error"}),d.toast.error(a.error)):d.toast.success("Feature resumed")}).catch(()=>{f(b,{state:"error"}),d.toast.error("Failed to resume feature")}).finally(()=>p())},[f,o,p]),v=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"running"}),(0,a0.startFeature)(a).then(a=>{a.error?(f(b,{state:"pending"}),d.toast.error(a.error)):d.toast.success("Feature started")}).catch(()=>{f(b,{state:"pending"}),d.toast.error("Failed to start feature")}).finally(()=>p())},[f,o,p]),w=(0,b.useCallback)(a=>{o(),(0,a1.stopFeature)(a).then(a=>{a.error?d.toast.error(a.error):d.toast.success("Agent stopped")}).catch(()=>{d.toast.error("Failed to stop agent")}).finally(()=>p())},[o,p]),x=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"archived"}),aZ(a).then(a=>{a.error?(f(b,{state:"done"}),d.toast.error(a.error)):d.toast.success("Feature archived")}).catch(()=>{f(b,{state:"done"}),d.toast.error("Failed to archive feature")}).finally(()=>p())},[f,o,p]),y=(0,b.useCallback)(a=>{let b=`feat-${a}`;o(),f(b,{state:"done"}),a2(a).then(a=>{a.error?(f(b,{state:"archived"}),d.toast.error(a.error)):d.toast.success("Feature unarchived")}).catch(()=>{f(b,{state:"archived"}),d.toast.error("Failed to unarchive feature")}).finally(()=>p())},[f,o,p]),z=(0,b.useCallback)((b,c,h,i)=>{let j=`feat-${b}`,k=[];if(!0===h){let a=[j];for(;a.length>0;){let b=a.shift();for(let c of e.current)"dependencyEdge"===c.type&&c.source===b&&(k.push(c.target),a.push(c.target))}}let l=new Map;for(let b of[j,...k]){let c=a.current.find(a=>a.id===b);c&&l.set(b,c.data.state)}for(let a of(o(),f(j,{state:"deleting"}),k))f(a,{state:"deleting"});r.play(),q.push("/"),a$(b,c,h,i).then(a=>{if(a.error){for(let[a,b]of l)b&&f(a,{state:b});d.toast.error(a.error)}else for(let a of(g(j),k))g(a)}).catch(()=>{for(let[a,b]of l)b&&f(a,{state:b});d.toast.error("Failed to delete feature")}).finally(()=>p())},[q,r,f,g,o,p,a,e]),A=(0,b.useCallback)(async b=>{let c=`repo-${b}`,f=new Set(e.current.filter(a=>a.source===c).map(a=>a.target)),k=l(c),m=new Map;for(let b of f){let c=a.current.find(a=>a.id===b);c&&m.set(b,{nodeId:b,data:c.data})}let n=()=>{for(let[a,b]of(k&&i(c,k),m))h(a,b)};for(let a of(o(),j(c),f))g(a);try{let a=await a4(b);if(!a.success){d.toast.error(a.error??"Failed to remove repository"),n();return}r.play()}catch{d.toast.error("Failed to remove repository"),n()}finally{p()}},[r,j,g,i,h,l,o,p,a,e]);return{handleRetryFeature:u,handleStartFeature:v,handleStopFeature:w,handleArchiveFeature:x,handleUnarchiveFeature:y,handleDeleteFeature:z,handleDeleteRepository:A,handleLayout:(0,b.useCallback)(b=>{let c=aS(a.current,e.current,{...aP(),direction:b});n(c.nodes,c.edges)},[n,a,e]),handleAddRepository:(0,b.useCallback)(a=>{let b=0===m(),c=`repo-temp-${++t.current}`,e=a.replace(/[\\/]+$/,"").split(/[\\/]/).pop()??a;return o(),i(c,{name:e,repositoryPath:a,id:c,createdAt:Date.now(),gitInfoStatus:"loading"}),(0,a3.addRepository)({path:a,name:e}).then(a=>{if(a.error){j(c),d.toast.error(a.error);return}let b=a.repository;k(c,`repo-${b.id}`,{name:b.name,repositoryPath:b.path,id:b.id,createdAt:b.createdAt instanceof Date?b.createdAt.getTime():Number(b.createdAt)}),s.play()}).catch(()=>{j(c),d.toast.error("Failed to add repository")}).finally(()=>p()),{wasEmpty:b,repoPath:a}},[i,j,k,s,m,o,p])}}({nodesRef:B,edgesRef:C,updateFeature:n,removeFeature:p,restoreFeature:q,addRepositoryToMap:r,removeRepository:s,replaceRepository:t,getRepositoryData:v,getRepoMapSize:w,reconcile:m,beginMutation:y,endMutation:z}),R=(0,b.useCallback)(a=>{},[]);return{nodes:k,edges:l,onNodesChange:R,handleConnect:(0,b.useCallback)(a=>{},[]),handleAddRepository:Q,handleArchiveFeature:L,handleLayout:P,handleDeleteFeature:N,handleRetryFeature:I,handleStartFeature:J,handleStopFeature:K,handleUnarchiveFeature:M,handleDeleteRepository:O,createFeatureNode:(0,b.useCallback)((a,b,c)=>{let d=b?.featureId?`feat-${b.featureId}`:`feature-${Date.now()}-${a7++}`,e={name:b?.name??"New Feature",description:b?.description??"Describe what this feature does",featureId:b?.featureId??`#${d.slice(-4)}`,lifecycle:"requirements",state:b?.state??"running",progress:0,repositoryPath:b?.repositoryPath??"",branch:b?.branch??""};return o(d,e,"dependencyEdge"===c&&a?a:void 0),d},[o]),showArchived:i,setShowArchived:j,getFeatureRepositoryPath:u,getRepositoryData:v,setCallbacks:x}}],16533)},59949,a=>{"use strict";var b=a.i(53083),c=a.i(16790),d=a.i(43707),e=a.i(11321),f=a.i(40674),g=a.i(33177),h=a.i(31271),i=a.i(37545);let j=(0,e.forwardRef)(({width:a=24,height:c=24,...d},e)=>(0,b.jsx)("svg",{ref:e,role:"img",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",width:a,height:c,fill:"currentColor",...d,children:(0,b.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})}));j.displayName="GithubIcon";var k=a.i(29370);a.i(98617);var l=a.i(50040),m=a.i(85536),n=a.i(18948);a.i(38702);var o=a.i(16223);a.i(54250);var p=a.i(1330),q=a.i(86933),r=a.i(32471),s=a.i(8685),t=a.i(83813),u=a.i(65350),v=a.i(7434),w=a.i(28604),x=a.i(30536),y=a.i(74407),z=a.i(25670),A=a.i(6804),B=a.i(73952);a.i(69029);var C=a.i(5623),D=a.i(45670),E=a.i(82934),F=a.i(18662),G=a.i(21333),H=a.i(55628),I=a.i(5555),J=a.i(33419),K=a.i(61583);function L({data:a,selected:d}){let{t:g,i18n:h}=(0,l.useTranslation)("web"),o=(0,f.useRouter)(),p="rtl"===h.dir(),M=p?q.Position.Right:q.Position.Left,N=p?q.Position.Left:q.Position.Right,O=(0,G.useFeatureFlags)(),[P,Q]=(0,e.useState)(!1),R=a.id?`repo-${a.id}`:`repo-${a.name}`,S=(0,J.useTurnStatus)(R),T=(0,H.useRepositoryActions)(a.repositoryPath?{repositoryId:a.id,repositoryPath:a.repositoryPath}:null),U=(0,F.useDeployAction)(a.repositoryPath?{targetId:a.repositoryPath,targetType:"repository",repositoryPath:a.repositoryPath}:null),V="Booting"===U.status||"Ready"===U.status,W=(0,e.useCallback)((b,c)=>{if(!a.repositoryPath)return;let d=b.preview?b.preview.slice(0,200):"Unknown conversation",e=["Continue work from a previous agent session.","","## Session Context",`- Session ID: ${b.id}`,`- Messages: ${b.messageCount}`,b.lastMessageAt?`- Last active: ${b.lastMessageAt}`:"",`- Conversation file: ${c}`,"","## Session Preview",`> ${d}`,"","## Instructions","1. Read the full conversation history from the file above","2. Analyze the current state of the repository — what was done, what remains","3. Create or update spec files to accurately reflect the current state and remaining work","4. Continue implementing any unfinished work from the conversation"].filter(Boolean).join("\n"),f=new URLSearchParams({repo:a.repositoryPath,prompt:e});o.push(`/create?${f.toString()}`)},[a.repositoryPath,o]);return(0,b.jsxs)("div",{className:(0,m.cn)("group relative",a.onDelete&&a.id&&"ps-10"),style:{direction:p?"rtl":"ltr"},children:[a.showHandles?(0,b.jsx)(c.Handle,{type:"target",position:M,isConnectable:!1,className:"opacity-0!",style:{top:70}}):null,a.onDelete&&a.id?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"absolute -start-3 top-1/2 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100",children:(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{"aria-label":g("repositoryNode.removeRepository"),"data-testid":"repository-node-delete-button",onClick:a=>{a.stopPropagation(),Q(!0)},className:"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors",children:(0,b.jsx)(u.Trash2,{className:"h-3.5 w-3.5"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.removeRepository")})]})})}),(0,b.jsx)(D.Dialog,{open:P,onOpenChange:Q,children:(0,b.jsxs)(D.DialogContent,{className:"max-w-xs",children:[(0,b.jsxs)(D.DialogHeader,{children:[(0,b.jsx)(D.DialogTitle,{children:g("repositoryNode.removeConfirmTitle")}),(0,b.jsx)(D.DialogDescription,{children:g("repositoryNode.removeConfirmDescription",{name:a.name})})]}),(0,b.jsxs)(D.DialogFooter,{className:"grid grid-cols-2 gap-2 sm:flex-none",children:[(0,b.jsx)(D.DialogClose,{asChild:!0,children:(0,b.jsx)(n.Button,{variant:"outline",children:g("repositoryNode.cancel")})}),(0,b.jsx)(n.Button,{variant:"destructive",onClick:()=>{Q(!1),a.onDelete?.(a.id)},children:g("repositoryNode.remove")})]})]})})]}):null,(0,b.jsxs)("div",{role:"button",tabIndex:0,"data-testid":"repository-node-card","data-repo-name":a.name,onClick:b=>{b.stopPropagation(),a.onClick?.()},onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),b.stopPropagation(),a.onClick?.())},className:(0,m.cn)("nodrag bg-card flex w-[26rem] cursor-pointer flex-col overflow-hidden rounded-xl border shadow-sm transition-[border-color,box-shadow] duration-200 dark:bg-neutral-800/80",d&&"border-blue-400 dark:border-amber-500/60"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-3",children:[(0,b.jsx)(j,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,b.jsx)("span",{"data-testid":"repository-node-name",className:"min-w-0 truncate text-sm font-medium",children:a.name}),(0,b.jsxs)("div",{className:(0,m.cn)("flex shrink-0 items-center gap-2",(a.repositoryPath??a.onAdd)&&"ms-auto"),onClick:a=>a.stopPropagation(),children:[a.repositoryPath?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openInIde"),onClick:T.openInIde,loading:T.ideLoading,error:!!T.ideError,icon:r.Code2,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openInIde")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openInShell"),onClick:T.openInShell,loading:T.shellLoading,error:!!T.shellError,icon:s.Terminal,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openInShell")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"flex items-center",children:(0,b.jsx)(C.ActionButton,{label:g("repositoryNode.openFolder"),onClick:T.openFolder,loading:T.folderLoading,error:!!T.folderError,icon:t.FolderOpen,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.openFolder")})]})}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(n.Button,{variant:"ghost",size:"icon-xs","aria-label":g("repositoryNode.chatWithAgent"),onClick:b=>{b.stopPropagation(),a.id&&o.push(`/repository/${a.id}/chat`)},className:"nodrag relative cursor-pointer text-violet-500 hover:text-violet-600 dark:text-violet-400 dark:hover:text-violet-300",children:[(0,b.jsx)(B.MessageSquare,{className:"h-3 w-3"}),(0,b.jsx)(I.ChatDotIndicator,{status:S})]})}),(0,b.jsx)(E.TooltipContent,{children:g("repositoryNode.chatWithAgent")})]})}),(0,b.jsx)(K.FeatureSessionsDropdown,{repositoryPath:a.repositoryPath,includeWorktrees:!0,onCreateFromSession:W})]}):null,a.onAdd?(0,b.jsx)("div",{className:"ms-1.5"}):null,a.onAdd?(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("button",{"aria-label":g("repositoryNode.newFeature"),"data-testid":"repository-node-add-button",onClick:b=>{b.stopPropagation(),a.onAdd?.()},className:(0,m.cn)("flex h-6 shrink-0 cursor-pointer items-center gap-0.5 rounded bg-blue-500 px-1.5 text-[11px] font-bold text-white transition-colors hover:bg-blue-600 dark:bg-amber-500 dark:hover:bg-amber-400",a.pulseAdd&&"animate-pulse-cta"),children:[(0,b.jsx)(k.Plus,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"translate-y-px",children:g("repositoryNode.new")})]})}),(0,b.jsx)(E.TooltipContent,{side:"top",children:g("repositoryNode.newFeature")})]})}):null]})]}),a.branch?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-git-info",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-3 text-xs",children:[(0,b.jsxs)("span",{className:"flex items-center gap-1 truncate","data-testid":"repository-node-branch",children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.branch})]}),null!=a.behindCount&&a.behindCount>0?(0,b.jsxs)("span",{className:"flex shrink-0 items-center gap-1 whitespace-nowrap text-amber-500","data-testid":"repository-node-behind",children:[(0,b.jsx)(y.ArrowDown,{className:"h-3 w-3 shrink-0"}),g("repositoryNode.behind",{count:a.behindCount})]}):null]})}),a.commitMessage?(0,b.jsx)("div",{"data-testid":"repository-node-commit-info",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(x.GitCommitHorizontal,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate","data-testid":"repository-node-commit-message",children:a.commitMessage}),a.committer?(0,b.jsxs)("span",{className:"text-muted-foreground/70 ms-auto flex shrink-0 items-center gap-1","data-testid":"repository-node-committer",children:[(0,b.jsx)(z.User,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:a.committer})]}):null]})}):null]}):"not-a-repo"===a.gitInfoStatus?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-not-repo",className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(t.FolderOpen,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"min-w-0 truncate opacity-60",children:a.repositoryPath??"Unknown path"})]})}),(0,b.jsx)("div",{className:"text-muted-foreground border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs opacity-40",children:[(0,b.jsx)(i.GitBranch,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{children:g("repositoryNode.notAGitRepository")})]})})]}):"ready"!==a.gitInfoStatus?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{"data-testid":"repository-node-git-loading",className:"border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex h-4 items-center gap-2 text-xs",children:[(0,b.jsx)(i.GitBranch,{className:"text-muted-foreground h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"bg-muted h-3 w-20 animate-pulse rounded"})]})}),(0,b.jsx)("div",{className:"border-border/50 border-t px-4 py-2",children:(0,b.jsxs)("div",{className:"flex h-4 items-center gap-2 text-xs",children:[(0,b.jsx)(x.GitCommitHorizontal,{className:"text-muted-foreground h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"bg-muted h-3 w-36 animate-pulse rounded"})]})})]}):null,O.envDeploy&&a.repositoryPath?(0,b.jsx)("div",{"data-testid":"repository-node-dev-preview",className:"border-border/50 border-t px-4 py-2",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[U.deployError?(0,b.jsx)("span",{className:"truncate text-xs text-red-500",children:U.deployError}):V?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"me-0.5 inline-block h-2 w-2 shrink-0 rounded-full bg-green-500"}),U.url?(0,b.jsx)("a",{href:U.url,target:"_blank",rel:"noopener noreferrer",className:"truncate text-green-700 hover:underline dark:text-green-400",children:U.url}):(0,b.jsx)("span",{className:"text-muted-foreground",children:g("repositoryNode.starting")})]}):(0,b.jsxs)("span",{className:"text-muted-foreground inline-flex items-baseline gap-2",children:[(0,b.jsx)("span",{children:g("repositoryNode.run")}),(0,b.jsx)("span",{className:"text-muted-foreground/50 text-[10px]",children:g("repositoryNode.startLocalEnvironment")})]}),(0,b.jsx)(E.TooltipProvider,{children:(0,b.jsxs)(E.Tooltip,{children:[(0,b.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:(0,m.cn)("ms-auto flex items-center",!V&&!U.deployError&&"[&_button]:text-green-600 [&_button]:hover:text-green-700 dark:[&_button]:text-green-400 dark:[&_button]:hover:text-green-300"),children:(0,b.jsx)(C.ActionButton,{label:g(U.deployError?"repositoryNode.retry":V?"repositoryNode.stopDevServer":"repositoryNode.startDevServer"),onClick:V?U.stop:U.deploy,loading:U.deployLoading||U.stopLoading,error:!1,icon:U.deployError?A.RotateCcw:V?w.Square:v.Play,iconOnly:!0,variant:"ghost",size:"icon-xs"})})}),(0,b.jsx)(E.TooltipContent,{children:g(V?"repositoryNode.stopDevServer":"repositoryNode.startDevServer")})]})})]})}):null]}),a.onAdd||a.showHandles?(0,b.jsx)(c.Handle,{type:"source",position:N,isConnectable:!a.showHandles,className:"opacity-0!",style:{top:70}}):null]})}function M(a){let[d]=(0,q.getBezierPath)({sourceX:a.sourceX,sourceY:a.sourceY,targetX:a.targetX,targetY:a.targetY,sourcePosition:a.sourcePosition,targetPosition:a.targetPosition});return(0,b.jsx)(c.BaseEdge,{id:a.id,path:d,style:{strokeDasharray:"5 5"}})}a.i(78454),a.i(2824),a.i(13126);let N={x:30,y:30,zoom:.85};function O({nodes:a,edges:d,selectedFeatureId:f,selectedRepository:g,defaultViewport:h,onNodesChange:i,onAddFeature:j,onConnect:q,onNodeClick:r,onPaneClick:s,onCanvasDrag:t,onMoveEnd:u,toolbar:v,emptyState:w}){let{t:x}=(0,l.useTranslation)("web"),y=(0,e.useMemo)(()=>({featureNode:p.FeatureNode,repositoryNode:L}),[]),z=(0,e.useMemo)(()=>({dependencyEdge:M}),[]),A=(0,e.useMemo)(()=>{let b=null!=f,c=null!=g&&(null!=g.id||null!=g.path);return b||c?a.map(a=>{if(b&&"featureNode"===a.type&&a.data.featureId===f)return{...a,selected:!0};if(c&&"repositoryNode"===a.type){let b=a.data,c=null!=g.id&&(a.id===g.id||b.id===g.id),d=null!=g.path&&b.repositoryPath===g.path;if(c||d)return{...a,selected:!0}}return a}):a},[a,f,g]),B=0===a.length,[C,D]=(0,e.useState)(B),[E,F]=(0,e.useState)(!1),G=(0,e.useRef)(B);(0,e.useEffect)(()=>{if(G.current&&!B){F(!0);let a=setTimeout(()=>{D(!1),F(!1)},300);return G.current=B,()=>clearTimeout(a)}!G.current&&B&&D(!0),G.current=B},[B]);let H=B&&!w?(0,b.jsx)(o.EmptyState,{title:x("canvas.noFeatures"),description:x("canvas.noFeaturesDescription"),action:(0,b.jsxs)(n.Button,{onClick:j,children:[(0,b.jsx)(k.Plus,{className:"me-2 h-4 w-4"}),x("canvas.newFeature")]})}):null,I=w??H;return(0,b.jsxs)("div",{"data-testid":B?"features-canvas-empty":"features-canvas","data-no-drawer-close":!0,className:"dark:bg-background pointer-events-auto relative h-full w-full bg-[#f6f7f8]",children:[(0,b.jsxs)(c.ReactFlow,{nodes:A,edges:d,nodeTypes:y,edgeTypes:z,onConnect:q,onNodesChange:i,onNodeClick:r,onPaneClick:s,onMoveStart:t,onMoveEnd:u,defaultViewport:h??N,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,proOptions:{hideAttribution:!0},className:"[&_.react-flow__pane]:!cursor-default",children:[(0,b.jsx)(c.Background,{variant:c.BackgroundVariant.Dots,gap:24,size:1,color:"#b8bcc4",className:"dark:[&_circle]:!fill-white/[0.1]"}),!B&&v?(0,b.jsx)(c.Panel,{position:"top-right",className:"!me-3 !mt-3",children:v}):null]}),C&&I?(0,b.jsx)("div",{className:(0,m.cn)("pointer-events-none absolute inset-0 z-10 flex items-center justify-center transition-opacity duration-300",E?"opacity-0":"animate-in fade-in opacity-100 duration-200"),children:(0,b.jsx)("div",{className:"pointer-events-auto h-full w-full",children:I})}):null]})}var P=a.i(14355),Q=a.i(97624);let R=(0,Q.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),S=(0,Q.default)("zoom-in",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),T=(0,Q.default)("zoom-out",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),U=(0,Q.default)("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);function V({showArchived:a,onToggleArchived:d,onResetViewport:f}){let{t:g}=(0,l.useTranslation)("web"),{zoomIn:h,zoomOut:i,fitView:j,setViewport:k}=(0,c.useReactFlow)(),m=(0,e.useCallback)(()=>{h({duration:200})},[h]),n=(0,e.useCallback)(()=>{i({duration:200})},[i]),o=(0,e.useCallback)(()=>{j({duration:400,padding:.3})},[j]),p=(0,e.useCallback)(()=>{f&&k(f(),{duration:400})},[f,k]);return(0,b.jsxs)("div",{className:"bg-background flex items-center gap-1 rounded-xl border px-2 py-1.5 shadow-md dark:bg-neutral-900",children:[(0,b.jsx)(W,{onClick:d,title:g(a?"canvas.hideArchived":"canvas.showArchived"),active:a,label:g(a?"canvas.hideArchivedLabel":"canvas.showArchivedLabel"),children:a?(0,b.jsx)(P.Eye,{className:"h-4 w-4"}):(0,b.jsx)(R,{className:"h-4 w-4"})}),(0,b.jsx)("div",{className:"bg-border mx-1 h-5 w-px"}),(0,b.jsx)(W,{onClick:n,title:g("canvas.zoomOut"),children:(0,b.jsx)(T,{className:"h-4 w-4"})}),(0,b.jsx)(W,{onClick:m,title:g("canvas.zoomIn"),children:(0,b.jsx)(S,{className:"h-4 w-4"})}),(0,b.jsx)(W,{onClick:o,title:g("canvas.fitView"),children:(0,b.jsx)(U,{className:"h-4 w-4"})}),f?(0,b.jsx)(W,{onClick:p,title:g("canvas.resetView"),children:(0,b.jsx)(A.RotateCcw,{className:"h-4 w-4"})}):null]})}function W({children:a,onClick:c,title:d,label:e,active:f}){return(0,b.jsxs)("button",{type:"button",onClick:c,"aria-label":d,title:d,className:(0,m.cn)("inline-flex items-center gap-1.5 rounded-lg px-2 py-1.5 text-xs font-medium transition-colors","hover:bg-accent hover:text-accent-foreground",f?"text-primary bg-primary/10":"text-muted-foreground"),children:[a,e?(0,b.jsx)("span",{children:e}):null]})}var X=a.i(20901),Y=a.i(83695);function Z({actions:a,className:c,style:d}){let{t:f}=(0,l.useTranslation)("web"),[g,h]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{if(g)return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a);function a(a){"Escape"===a.key&&h(!1)}},[g]),(0,b.jsxs)(b.Fragment,{children:[g?(0,b.jsx)("div",{"data-testid":"fab-overlay",className:"fixed inset-0 z-40",onClick:()=>h(!1),"aria-hidden":"true"}):null,(0,b.jsxs)("div",{"data-testid":"floating-action-button",className:(0,m.cn)("relative z-50",c),style:d,children:[(0,b.jsx)("div",{className:(0,m.cn)("absolute start-0 bottom-[calc(100%+24px)] flex flex-col items-start gap-2",!g&&"pointer-events-none"),"data-testid":"fab-actions",children:a.map((c,d)=>{let e=(a.length-1-d)*50;return(0,b.jsxs)("button",{"data-testid":`fab-action-${c.id}`,"aria-label":c.label,disabled:c.disabled??c.loading,className:(0,m.cn)("flex h-10 items-center gap-2.5 rounded-full px-4","bg-background text-foreground shadow-md","border-border border","hover:bg-accent hover:text-accent-foreground","disabled:pointer-events-none disabled:opacity-50","text-sm font-medium whitespace-nowrap",g?"translate-y-0 opacity-100":"pointer-events-none translate-y-0 opacity-0"),style:{transition:`opacity ${g?250:120}ms ease-out ${g?e:0}ms, transform ${g?250:120}ms ease-out ${g?e:0}ms`},onClick:()=>{c.onClick(),h(!1)},children:[(0,b.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:c.loading?(0,b.jsx)(X.LoaderCircle,{className:"h-4 w-4 animate-spin"}):c.icon}),(0,b.jsx)("span",{children:c.label})]},c.id)})}),(0,b.jsxs)(n.Button,{size:"icon","data-testid":"fab-trigger","aria-label":f(g?"fab.closeActions":"fab.createNew"),className:(0,m.cn)("relative h-14 w-14 rounded-full shadow-lg","bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400","transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95"),onClick:()=>h(a=>!a),children:[(0,b.jsx)(k.Plus,{className:(0,m.cn)("absolute h-7 w-7 stroke-[2.5] transition-all",g?"scale-0 rotate-90 opacity-0":"scale-100 rotate-0 opacity-100"),style:{transitionDuration:"250ms"}}),(0,b.jsx)(Y.X,{className:(0,m.cn)("absolute h-6 w-6 stroke-[2.5] transition-all",g?"scale-100 rotate-0 opacity-100":"scale-0 -rotate-90 opacity-0"),style:{transitionDuration:"250ms"}})]})]})]})}var $=a.i(1356),_=a.i(19884),aa=a.i(96213);let ab="shipit-ai-canvas-viewport",ac={x:30,y:30,zoom:.85};var ad=a.i(55003),ae=a.i(48265),af=a.i(34948),ag=a.i(60197),ah=a.i(82912),ai=a.i(63843),aj=a.i(29345),ak=a.i(2),al=a.i(1377);a.i(21434);var am=a.i(34379),an=a.i(6120);let ao=(0,an.createServerReference)("004c1cd5bd750d92e24559b76d2d8a527b9fcb81f2",an.callServer,void 0,an.findSourceMapURL,"isAgentSetupComplete"),ap=(0,an.createServerReference)("008bb64e62c8da45930ed722f946b39495438d9fe4",an.callServer,void 0,an.findSourceMapURL,"checkAgentAuth"),aq=(0,an.createServerReference)("002809c4bbafc76cdc68bbb45f0e98f2c4f4a2c326",an.callServer,void 0,an.findSourceMapURL,"checkToolStatus");var ar=a.i(40227),as=a.i(55944),at=a.i(78771),au=a.i(64325),av=a.i(17606),aw=a.i(83852);let ax=["select-agent","select-model"];function ay({onComplete:a,className:c}){let{t:d}=(0,l.useTranslation)("web"),[f,g]=(0,e.useState)([]),[h,i]=(0,e.useState)(!0),[j,k]=(0,e.useState)("select-agent"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!0),[v,w]=(0,e.useState)(!0),x=(0,e.useRef)(void 0);(0,e.useEffect)(()=>{(0,at.getAllAgentModels)().then(g).finally(()=>i(!1)),aq().then(a=>w(a.gh.installed)).catch(()=>void 0)},[]);let y=n?f.find(a=>a.agentType===n):null,z=(0,e.useCallback)((a,b)=>{s(!0),u(!1),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{b?.(),k(a),requestAnimationFrame(()=>{u(!0),s(!1)})},150)},[]);(0,e.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let A=(0,e.useCallback)(async(b,c)=>{q(!0);try{await (0,au.updateAgentAndModel)(b,c),u(!1),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{a()},200)}catch{q(!1)}},[a]),B=(0,e.useCallback)(a=>{let b=f.find(b=>b.agentType===a);b&&b.models.length>0?z("select-model",()=>{o(a)}):A(a,null)},[f,z,A]),C=(0,e.useCallback)(a=>{n&&A(n,a)},[n,A]),D=(0,e.useCallback)(()=>{"select-model"===j&&z("select-agent",()=>{o(null)})},[j,z]);if(h)return(0,b.jsxs)("div",{"data-testid":"welcome-agent-setup",className:(0,m.cn)("flex flex-col items-center justify-center gap-4",c),children:[(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground h-5 w-5 animate-spin"}),(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:d("welcome.loadingAgents")})]});let E=ax.indexOf(j),F=d("select-agent"===j?"welcome.chooseAgent":"welcome.pickModel"),G="select-agent"===j?d("welcome.selectAgentSubtitle"):y?d("welcome.chooseModelSubtitle",{label:y.label}):"";return(0,b.jsxs)("div",{"data-testid":"welcome-agent-setup",className:(0,m.cn)("flex w-full flex-col items-center",c),children:[(0,b.jsx)("div",{className:"mb-8 flex w-full max-w-xs items-center gap-1.5",children:ax.map((a,c)=>(0,b.jsx)("div",{className:(0,m.cn)("h-[3px] flex-1 rounded-full transition-colors duration-300",c<=E?"bg-foreground/60":"bg-muted")},a))}),(0,b.jsxs)("div",{className:(0,m.cn)("flex w-full flex-col items-center transition-opacity duration-200",t&&!r?"opacity-100":"opacity-0"),children:[(0,b.jsx)("h1",{className:"text-foreground/90 text-center text-5xl font-extralight tracking-tight",children:F}),(0,b.jsx)("p",{className:"text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light",children:G}),"select-agent"===j&&!v&&(0,b.jsxs)("div",{"data-testid":"gh-cli-notice",className:"mt-5 flex items-start gap-2 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 dark:border-amber-900 dark:bg-amber-950/40",children:[(0,b.jsx)(as.TriangleAlert,{className:"mt-0.5 h-4 w-4 shrink-0 text-amber-500"}),(0,b.jsxs)("p",{className:"text-sm leading-relaxed text-amber-800 dark:text-amber-300",children:[(0,b.jsx)("span",{className:"font-medium",children:d("welcome.ghCliRequired")})," ",d("welcome.ghCliRequiredText")," ",(0,b.jsx)("a",{href:"https://cli.github.com/",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 hover:text-amber-900 dark:hover:text-amber-200",children:d("welcome.installHere")}),"."]})]}),(0,b.jsxs)("div",{className:"mt-8 flex w-full flex-col items-center",children:["select-agent"===j&&(0,b.jsx)("div",{"data-testid":"agent-list",className:"grid w-full max-w-lg gap-3",style:{gridTemplateColumns:`repeat(${Math.min(f.length,4)}, minmax(0, 1fr))`},children:f.map(a=>{let c=(0,av.getAgentTypeIcon)(a.agentType);return(0,b.jsxs)("button",{type:"button",disabled:p,"data-testid":`agent-option-${a.agentType}`,className:"border-border hover:bg-accent hover:border-foreground/20 flex cursor-pointer flex-col items-center gap-3 rounded-2xl border px-4 py-5 transition-all duration-150 active:scale-[0.97] disabled:opacity-50",onClick:()=>B(a.agentType),children:[(0,b.jsx)(c,{className:"text-foreground/70 h-7 w-7"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:a.label})]},a.agentType)})}),"select-model"===j&&y?(0,b.jsxs)("div",{"data-testid":"model-list",className:"flex w-full max-w-lg flex-col items-center gap-4",children:[(0,b.jsxs)("button",{type:"button",disabled:p,className:"text-muted-foreground hover:text-foreground flex cursor-pointer items-center gap-1.5 self-start text-sm transition-colors",onClick:D,children:[(0,b.jsx)(ar.ChevronLeft,{className:"h-4 w-4"}),d("welcome.back")]}),(0,b.jsx)("div",{className:"grid w-full gap-3",style:{gridTemplateColumns:`repeat(${Math.min(y.models.length,3)}, minmax(0, 1fr))`},children:y.models.map(a=>{let c=(0,aw.getModelMeta)(a.id);return(0,b.jsxs)("button",{type:"button",disabled:p,"data-testid":`model-option-${a.id}`,className:"border-border hover:bg-accent hover:border-foreground/20 flex cursor-pointer flex-col items-center gap-2 rounded-2xl border px-4 py-5 text-center transition-all duration-150 active:scale-[0.97] disabled:opacity-50",onClick:()=>C(a.id),children:[(0,b.jsx)("span",{className:"text-sm font-medium",children:c.displayName||a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs leading-tight",children:c.description||a.description})]},a.id)})})]}):null]})]})]})}let az=["cd ~/my-repo",'shipit-ai feat new "sleek dashboard"'];function aA({onRepositorySelect:a,className:c}){let{t:d}=(0,l.useTranslation)("web"),[f,g]=(0,e.useState)(!1),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(null),[r,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),{reactFileManager:x}=(0,G.useFeatureFlags)();async function y(){if(!h){if(x)return void k(!0);i(!0);try{let b=await (0,al.pickFolder)();b&&a?.(b)}catch{k(!0)}finally{i(!1)}}}(0,e.useEffect)(()=>{ao().then(a=>{o(a)})},[]),(0,e.useEffect)(()=>{n&&(ap().then(q),aq().then(w))},[n]);let z=(0,e.useCallback)(async()=>{await navigator.clipboard.writeText(az.join("\n")),g(!0),setTimeout(()=>g(!1),2e3)},[]),A=(0,e.useCallback)(()=>{o(!0)},[]),B=(0,e.useCallback)(()=>{q(null),ap().then(q)},[]);return null===n?null:(0,b.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,m.cn)("relative flex h-full w-full flex-col items-center justify-center px-8",c),children:[n?(0,b.jsxs)("div",{className:"animate-in fade-in flex w-full max-w-md flex-col items-center duration-300",children:[(0,b.jsx)("h1",{className:"text-foreground/90 text-center text-5xl font-extralight tracking-tight",children:d("emptyState.addProject")}),(0,b.jsxs)("p",{className:"text-muted-foreground mt-3 text-center text-lg leading-relaxed font-light",children:[d("emptyState.addProjectDescription"),(0,b.jsx)("br",{}),d("emptyState.addProjectDescriptionLine2")]}),(0,b.jsxs)("div",{className:"mt-8 flex w-full flex-col gap-3",children:[(0,b.jsx)(aB,{status:p,onRetry:B}),(0,b.jsx)(aC,{label:d("emptyState.git"),status:v?.git??null,missingHint:d("emptyState.gitRequired")}),(0,b.jsx)(aC,{label:d("emptyState.githubCli"),status:v?.gh??null,missingHint:d("emptyState.githubCliRequired")})]}),(0,b.jsxs)("button",{type:"button","data-testid":"empty-state-add-repository",onClick:y,disabled:h,className:"bg-foreground text-background hover:bg-foreground/90 mt-10 flex w-full cursor-pointer items-center justify-center gap-2.5 rounded-xl px-6 py-4 text-base font-medium shadow-lg transition-all duration-200 hover:shadow-xl active:scale-[0.98] disabled:cursor-wait disabled:opacity-50",children:[h?(0,b.jsx)(X.LoaderCircle,{className:"h-5 w-5 animate-spin"}):(0,b.jsx)(t.FolderOpen,{className:"h-5 w-5"}),d(h?"emptyState.opening":"emptyState.chooseFolder")]}),(0,b.jsx)("p",{className:"text-muted-foreground/60 mt-3 text-center text-sm",children:d("emptyState.folderHint")})]}):(0,b.jsx)(ay,{onComplete:A}),n?(0,b.jsxs)("div",{className:"absolute bottom-8 flex flex-col items-center",style:{animationDelay:"400ms",animationDuration:"600ms",animationFillMode:"both"},children:[(0,b.jsxs)("button",{type:"button",onClick:()=>u(!r),className:"text-muted-foreground hover:text-foreground flex cursor-pointer items-center gap-1.5 transition-colors duration-200",children:[(0,b.jsx)(s.Terminal,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{className:"text-sm",children:d("emptyState.orUseCli")}),(0,b.jsx)(aj.ChevronDown,{className:(0,m.cn)("h-3.5 w-3.5 transition-transform duration-200",r?"":"rotate-180")})]}),r?(0,b.jsx)("div",{className:"animate-in fade-in slide-in-from-top-1 mt-3 w-80 duration-200",children:(0,b.jsxs)("div",{"data-testid":"cli-code-block",className:"relative rounded-xl bg-zinc-900 px-5 py-4 font-mono text-[13px] leading-relaxed text-zinc-400",children:[(0,b.jsx)("button",{type:"button","data-testid":"cli-code-block-copy",onClick:z,className:"absolute top-3 right-3 cursor-pointer rounded-md p-1.5 text-zinc-600 transition-colors hover:bg-zinc-800 hover:text-zinc-300","aria-label":d("emptyState.copyCommands"),children:f?(0,b.jsx)(ag.Check,{className:"h-3.5 w-3.5 text-emerald-400"}):(0,b.jsx)(af.Copy,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("div",{className:"space-y-1",children:az.map(a=>(0,b.jsxs)("div",{className:"whitespace-nowrap",children:[(0,b.jsx)("span",{className:"text-zinc-600 select-none",children:"$ "}),(0,b.jsx)("span",{className:"text-zinc-300",children:a})]},a))})]})}):null]}):null,(0,b.jsx)(am.ReactFileManagerDialog,{open:j,onOpenChange:a=>{a||k(!1)},onSelect:function(b){b&&a?.(b),k(!1)}})]})}function aB({status:a,onRetry:c}){let{t:d}=(0,l.useTranslation)("web");return a?a.installed&&a.authenticated?(0,b.jsx)(aD,{icon:(0,b.jsx)(ah.CircleCheck,{className:"h-4 w-4 text-emerald-500"}),children:(0,b.jsx)("span",{className:"text-sm text-emerald-600 dark:text-emerald-400",children:d("emptyState.ready",{label:a.label})})}):a.installed?(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:d("emptyState.needsAuth",{label:a.label})}),a.authCommand?(0,b.jsx)(aE,{command:a.authCommand}):null,(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[a.binaryName?(0,b.jsxs)("button",{type:"button","data-testid":"auth-banner-open-terminal",onClick:async()=>{try{let b="claude-code"===a.agentType?"claude-code":a.agentType;await fetch(`/api/tools/${b}/launch`,{method:"POST"})}catch{}},className:"flex items-center gap-1 text-xs font-medium text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:[(0,b.jsx)(s.Terminal,{className:"h-3 w-3"}),d("emptyState.open",{label:a.label})]}):null,(0,b.jsx)("button",{type:"button",onClick:c,className:"text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:d("emptyState.reCheck")})]})]}):(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:d("emptyState.notInstalled",{label:a.label})}),a.installCommand?(0,b.jsx)(aE,{command:a.installCommand}):null,(0,b.jsx)("button",{type:"button",onClick:c,className:"text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:d("emptyState.reCheck")})]}):(0,b.jsx)(aD,{icon:(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground/50 h-4 w-4 animate-spin"}),children:(0,b.jsx)("span",{className:"text-muted-foreground/50 text-sm",children:d("emptyState.checkingSetup")})})}function aC({label:a,status:c,missingHint:d}){let{t:e}=(0,l.useTranslation)("web");return c?c.installed?(0,b.jsx)(aD,{icon:(0,b.jsx)(ah.CircleCheck,{className:"h-4 w-4 text-emerald-500"}),children:(0,b.jsxs)("span",{className:"flex items-baseline gap-2",children:[(0,b.jsx)("span",{className:"text-sm text-emerald-600 dark:text-emerald-400",children:e("emptyState.ready",{label:a})}),c.version?(0,b.jsxs)("span",{className:"text-muted-foreground/40 text-xs",children:["v",c.version]}):null]})}):(0,b.jsxs)(aD,{icon:(0,b.jsx)(ai.CircleAlert,{className:"h-4 w-4 text-amber-500"}),children:[(0,b.jsx)("span",{className:"text-sm font-medium text-amber-600 dark:text-amber-400",children:e("emptyState.notFound",{label:a})}),(0,b.jsx)("span",{className:"text-muted-foreground/50 text-xs",children:d}),c.installCommand?(0,b.jsx)(aE,{command:c.installCommand}):null,c.installUrl?(0,b.jsxs)("a",{href:c.installUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400",children:[e("emptyState.docs")," ",(0,b.jsx)(ak.ExternalLink,{className:"h-3 w-3"})]}):null]}):(0,b.jsx)(aD,{icon:(0,b.jsx)(X.LoaderCircle,{className:"text-muted-foreground/50 h-4 w-4 animate-spin"}),children:(0,b.jsx)("span",{className:"text-muted-foreground/50 text-sm",children:e("emptyState.checking",{label:a})})})}function aD({icon:a,children:c}){return(0,b.jsxs)("div",{className:"animate-in fade-in flex items-start gap-2.5",children:[(0,b.jsx)("div",{className:"mt-0.5 shrink-0",children:a}),(0,b.jsx)("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:c})]})}function aE({command:a}){let[c,d]=(0,e.useState)(!1);return(0,b.jsxs)("button",{type:"button",onClick:async()=>{await navigator.clipboard.writeText(a),d(!0),setTimeout(()=>d(!1),2e3)},className:"group/cmd flex cursor-pointer items-center justify-between gap-2 rounded-md bg-zinc-100 py-1 ps-2.5 pe-2 text-start transition-colors hover:bg-zinc-200 dark:bg-zinc-800 dark:hover:bg-zinc-700",children:[(0,b.jsx)("code",{className:"min-w-0 truncate text-[11px] leading-relaxed text-zinc-600 dark:text-zinc-300",children:a}),c?(0,b.jsx)(ag.Check,{className:"h-3 w-3 shrink-0 text-emerald-500"}):(0,b.jsx)(af.Copy,{className:"h-3 w-3 shrink-0 text-zinc-400 opacity-0 transition-opacity group-hover/cmd:opacity-100"})]})}var aF=a.i(16533);let aG={maxZoom:1,padding:.5,duration:500};function aH({initialNodes:a,initialEdges:d}){let k,m,n,o,p,q,{t:r}=(0,l.useTranslation)("web"),s=(0,f.useRouter)(),t=(0,f.usePathname)(),u=(k=(0,f.usePathname)().match(/^\/feature\/([^/]+)/),k?.[1]??null),v=(m=(0,f.usePathname)(),n=(0,f.useSearchParams)(),o=m.match(/^\/repository\/([^/]+)/),{id:o?.[1]??null,path:m.startsWith("/create")?n.get("repo"):null}),w=(0,_.useSoundAction)("click"),{guardedNavigate:x}=(0,aa.useDrawerCloseGuard)(),{fitView:y}=(0,c.useReactFlow)(),z=(0,e.useRef)(null),{defaultViewport:A,onMoveEnd:B,resetViewport:C}=(p=(0,e.useRef)(function(){try{let a=localStorage.getItem(ab);if(null==a)return ac;let b=JSON.parse(a);return!(null==b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.x&&"number"==typeof b.y&&"number"==typeof b.zoom&&Number.isFinite(b.x)&&Number.isFinite(b.y)&&Number.isFinite(b.zoom)&&b.zoom>0?b:ac}catch{return ac}}()).current,q=(0,e.useRef)(null),(0,e.useEffect)(()=>()=>{null!=q.current&&clearTimeout(q.current)},[]),{defaultViewport:p,onMoveEnd:(0,e.useCallback)(a=>{null!=q.current&&clearTimeout(q.current),q.current=setTimeout(()=>{try{localStorage.setItem(ab,JSON.stringify(a))}catch{}},500)},[]),resetViewport:(0,e.useCallback)(()=>{try{localStorage.removeItem(ab)}catch{}return ac},[])}),{nodes:D,edges:E,onNodesChange:F,handleConnect:H,handleAddRepository:I,handleArchiveFeature:J,handleDeleteFeature:K,handleRetryFeature:L,handleStartFeature:M,handleStopFeature:N,handleUnarchiveFeature:P,handleDeleteRepository:Q,createFeatureNode:R,showArchived:S,setShowArchived:T,setCallbacks:U}=(0,aF.useControlCenterState)(a,d),{setFeatures:W,setHasRepositories:X}=(0,$.useSidebarFeaturesContext)(),Y=(0,e.useMemo)(()=>D.filter(a=>"featureNode"===a.type),[D]),Z=(0,e.useMemo)(()=>Y.map(a=>{let b=a.data;return`${b.featureId}:${b.state}:${b.name}:${b.repositoryPath}`}).sort().join(","),[Y]);(0,e.useEffect)(()=>{W(Y.map(a=>{let b=a.data,c=(0,$.mapNodeStateToSidebarStatus)(b.state);if(!c)return null;let d=b.repositoryPath??"";return{featureId:b.featureId,name:b.name,status:c,repositoryPath:d,repositoryName:b.repositoryName??d.split("/").filter(Boolean).pop()??d,...null!=b.startedAt&&{startedAt:b.startedAt},...null!=b.runtime&&{duration:b.runtime},...b.agentType&&{agentType:b.agentType},...b.modelId&&{modelId:b.modelId}}}).filter(Boolean))},[Z,Y,W]);let ad=(0,e.useCallback)((a,b)=>{if("featureNode"===b.type){let c=b.data;"creating"!==c.state&&"deleting"!==c.state&&a.target.closest('[data-testid="feature-node-card"]')&&x(()=>{w.play(),s.push(`/feature/${c.featureId}`)})}},[s,w,x]),ae=(0,e.useCallback)(()=>{w.play(),s.push("/create")},[s,w]),af=(0,e.useCallback)(a=>{w.play();let b=D.find(b=>b.id===a),c=b?.data?.repositoryPath;c?s.push(`/create?repo=${encodeURIComponent(c)}`):s.push("/create")},[D,s,w]),ag=(0,e.useCallback)(a=>{let b=a.startsWith("feat-")?a.slice(5):a,c=E.find(b=>b.target===a),d=c?D.find(a=>a.id===c.source):null,e=d?.data?.repositoryPath;w.play();let f=new URLSearchParams;e&&f.set("repo",e),f.set("parent",b),s.push(`/create?${f.toString()}`)},[D,E,s,w]),ah=(0,e.useCallback)(a=>{let b=D.find(b=>b.id===a);if(b?.type==="repositoryNode"){let a=b.data;a.id&&x(()=>s.push(`/repository/${a.id}`))}},[D,s,x]),ai=(0,e.useCallback)(()=>{"/"!==t&&x(()=>s.push("/"))},[s,t,x]),aj=(0,e.useCallback)(a=>{setTimeout(()=>{y(aG),z.current=setTimeout(()=>{x(()=>s.push(`/create?repo=${encodeURIComponent(a)}`))},600)},0)},[y,x,s]),ak=(0,e.useCallback)(a=>{let{wasEmpty:b,repoPath:c}=I(a);b&&aj(c)},[I,aj]);(0,e.useEffect)(()=>{let a=a=>{ak(a.detail.path)};return window.addEventListener("shipit-ai:add-repository",a),()=>{window.removeEventListener("shipit-ai:add-repository",a),null!=z.current&&clearTimeout(z.current)}},[ak]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail;if(b.parentId)return void R(`feat-${b.parentId}`,{state:"creating",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath},"dependencyEdge");let c=D.find(a=>"repositoryNode"===a.type&&a.data.repositoryPath===b.repositoryPath);R(c?.id??null,{state:"running",featureId:b.featureId,name:b.name,description:b.description,repositoryPath:b.repositoryPath})};return window.addEventListener("shipit-ai:feature-created",a),()=>window.removeEventListener("shipit-ai:feature-created",a)},[D,R]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b,cleanup:c,cascadeDelete:d,closePr:e}=a.detail;K(b,c,d,e)};return window.addEventListener("shipit-ai:feature-delete-requested",a),()=>window.removeEventListener("shipit-ai:feature-delete-requested",a)},[K]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;J(b)};return window.addEventListener("shipit-ai:feature-archive-requested",a),()=>window.removeEventListener("shipit-ai:feature-archive-requested",a)},[J]),(0,e.useEffect)(()=>{let a=a=>{let{featureId:b}=a.detail;P(b)};return window.addEventListener("shipit-ai:feature-unarchive-requested",a),()=>window.removeEventListener("shipit-ai:feature-unarchive-requested",a)},[P]),(0,e.useEffect)(()=>{U({onNodeAction:ag,onFeatureDelete:K,onRetryFeature:L,onStartFeature:M,onStopFeature:N,onArchiveFeature:J,onUnarchiveFeature:P,onRepositoryAdd:af,onRepositoryClick:ah,onRepositoryDelete:Q})},[U,ag,J,K,L,M,N,P,af,ah,Q]);let al=(0,e.useCallback)((a,b)=>{B(b)},[B]),am=D.some(a=>"repositoryNode"===a.type);(0,e.useEffect)(()=>{X(am)},[am,X]);let[an,ao]=(0,e.useState)(am),ap=(0,e.useRef)(null);(0,e.useEffect)(()=>(am?(ap.current&&(clearTimeout(ap.current),ap.current=null),ao(!0)):an&&(C(),ap.current=setTimeout(()=>{ao(!1),ap.current=null},500)),()=>{ap.current&&clearTimeout(ap.current)}),[am,an,C]);let aq=t.startsWith("/create"),ar=(0,e.useMemo)(()=>{let a=D.filter(a=>"repositoryNode"===a.type),b=D.some(a=>"featureNode"===a.type);return 1!==a.length||b||aq?D:D.map(a=>"repositoryNode"===a.type?{...a,data:{...a.data,pulseAdd:!0}}:a)},[D,aq]),as=(0,e.useCallback)(()=>{window.dispatchEvent(new CustomEvent("shipit-ai:pick-folder"))},[]),at=(0,G.useFeatureFlags)(),au=(0,e.useMemo)(()=>{let a=[{id:"new-feature",label:r("fab.newFeature"),icon:(0,b.jsx)(g.Sparkles,{className:"h-4 w-4"}),onClick:()=>{w.play(),x(()=>s.push("/create"))}},{id:"add-local-repo",label:r("fab.localFolder"),icon:(0,b.jsx)(h.FolderPlus,{className:"h-4 w-4"}),onClick:as}];return at.adoptBranch&&a.push({id:"adopt-branch",label:r("fab.adoptBranch"),icon:(0,b.jsx)(i.GitBranch,{className:"h-4 w-4"}),onClick:()=>{x(()=>s.push("/adopt"))}}),at.githubImport&&a.push({id:"add-github-repo",label:r("fab.fromGithub"),icon:(0,b.jsx)(j,{className:"h-4 w-4"}),onClick:()=>{window.dispatchEvent(new CustomEvent("shipit-ai:open-github-import"))}}),a},[r,w,x,s,as,at.adoptBranch,at.githubImport]),av=(0,b.jsx)(V,{showArchived:S,onToggleArchived:()=>T(!S),onResetViewport:C});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(O,{nodes:an?ar:[],edges:an?E:[],selectedFeatureId:u,selectedRepository:v,defaultViewport:A,onNodesChange:F,onConnect:H,onAddFeature:ae,onNodeClick:ad,onPaneClick:ai,onMoveEnd:al,toolbar:av,emptyState:(0,b.jsx)(aA,{onRepositorySelect:ak})}),an?(0,b.jsx)(aI,{actions:au}):null]})}function aI({actions:a}){let{state:c}=(0,ad.useSidebar)(),{i18n:d}=(0,l.useTranslation)("web"),{swapPosition:e}=(0,ae.useFabLayout)(),f="rtl"===d.dir();if(e)return(0,b.jsx)(Z,{actions:a,className:"!fixed bottom-6",style:f?{left:"calc(var(--sidebar-width-icon) + 32px)",transition:"left 200ms ease-in-out"}:{right:"32px",transition:"right 200ms ease-in-out"}});let g="expanded"===c?"calc(var(--sidebar-width) + 32px)":"calc(var(--sidebar-width-icon) + 32px)";return(0,b.jsx)(Z,{actions:a,className:"!fixed bottom-6",style:f?{right:g,transition:"right 200ms ease-in-out"}:{left:g,transition:"left 200ms ease-in-out"}})}a.s(["ControlCenter",0,function({initialNodes:a,initialEdges:e,drawer:f}){return(0,b.jsxs)("div",{"data-testid":"control-center",className:"h-full w-full",children:[(0,b.jsx)(d.SessionsProvider,{children:(0,b.jsx)(c.ReactFlowProvider,{children:(0,b.jsx)(aH,{initialNodes:a,initialEdges:e})})}),(0,b.jsx)("div",{children:f},"drawer")]})}],59949)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_components_features_control-center_0l3oxx9._.js.map
|