prime-dev-cli 2.0.5 → 2.0.7
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/server/.next/BUILD_ID +1 -1
- package/dist/server/.next/app-build-manifest.json +8 -8
- package/dist/server/.next/app-path-routes-manifest.json +7 -0
- package/dist/server/.next/build-manifest.json +6 -6
- package/dist/server/.next/cache/.rscinfo +1 -1
- package/dist/server/.next/cache/.tsbuildinfo +1 -1
- package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
- package/dist/server/.next/fallback-build-manifest.json +6 -6
- package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
- package/dist/server/.next/next-server.js.nft.json +1 -1
- package/dist/server/.next/prerender-manifest.json +12 -12
- package/dist/server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
- package/dist/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/_not-found.html +1 -1
- package/dist/server/.next/server/app/_not-found.rsc +2 -2
- package/dist/server/.next/server/app/api/admin-git-batch-create-branch/route.js +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-create-branch/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-delete-branch/route.js +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-delete-branch/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-merge/route.js +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-merge/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-probe-remote-branch/route.js +1 -1
- package/dist/server/.next/server/app/api/admin-git-batch-probe-remote-branch/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/all-projects-envs/route.js +1 -1
- package/dist/server/.next/server/app/api/all-projects-envs/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/batch-list-branches/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route.js +8 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route.js.map +5 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/batch-list-branches/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route.js +8 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route.js.map +5 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/batch-list-submodule-branches/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route.js +8 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route.js.map +5 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/batch-switch-branch/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route.js +8 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route.js.map +5 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/batch-switch-submodule-branch/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/branch/switch/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/branch/switch/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/branch/switch/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/branch/switch/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/branch/switch/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/branch/switch/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/branch/switch/route.js +8 -0
- package/dist/server/.next/server/app/api/branch/switch/route.js.map +5 -0
- package/dist/server/.next/server/app/api/branch/switch/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/branch/switch/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/branches/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/branches/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/branches/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/branches/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/branches/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/branches/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/branches/route.js +8 -0
- package/dist/server/.next/server/app/api/branches/route.js.map +5 -0
- package/dist/server/.next/server/app/api/branches/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/branches/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/check-mock-intercept/route.js +1 -1
- package/dist/server/.next/server/app/api/check-mock-intercept/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/check-workspace/route.js +1 -1
- package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/cleanup-mock/route.js +1 -1
- package/dist/server/.next/server/app/api/cleanup-mock/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/delete-mock-api/route.js +1 -1
- package/dist/server/.next/server/app/api/delete-mock-api/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/get-mock-data/route.js +1 -1
- package/dist/server/.next/server/app/api/get-mock-data/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/gwh-git-flow/route.js +1 -1
- package/dist/server/.next/server/app/api/gwh-git-flow/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
- package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/memory-status/route.js +1 -1
- package/dist/server/.next/server/app/api/memory-status/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-file/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-file/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-file-content/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-file-content/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-open-status/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-open-status/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-setting/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-setting/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/open-all-mock/route.js +1 -1
- package/dist/server/.next/server/app/api/open-all-mock/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/open-project/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/process/start/route.js +1 -1
- package/dist/server/.next/server/app/api/process/start/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/process/status/route.js +1 -1
- package/dist/server/.next/server/app/api/process/status/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/project-config/route.js +1 -1
- package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/retry-project/route.js +1 -1
- package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/submodule-info/route/app-build-manifest.json +10 -0
- package/dist/server/.next/server/app/api/submodule-info/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/submodule-info/route/build-manifest.json +16 -0
- package/dist/server/.next/server/app/api/submodule-info/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/submodule-info/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/submodule-info/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/submodule-info/route.js +8 -0
- package/dist/server/.next/server/app/api/submodule-info/route.js.map +5 -0
- package/dist/server/.next/server/app/api/submodule-info/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/submodule-info/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/api/uat-git-flow/route.js +1 -1
- package/dist/server/.next/server/app/api/uat-git-flow/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/uat-git-flow/step/route.js +1 -1
- package/dist/server/.next/server/app/api/uat-git-flow/step/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/workspace/create/route.js +1 -1
- package/dist/server/.next/server/app/api/workspace/create/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +3 -3
- package/dist/server/.next/server/app/configuration/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/configuration.html +1 -1
- package/dist/server/.next/server/app/configuration.rsc +3 -3
- package/dist/server/.next/server/app/index.html +1 -1
- package/dist/server/.next/server/app/index.rsc +2 -2
- package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +3 -3
- package/dist/server/.next/server/app/initialization/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/initialization.html +1 -1
- package/dist/server/.next/server/app/initialization.rsc +3 -3
- package/dist/server/.next/server/app/page/app-build-manifest.json +1 -1
- package/dist/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app-paths-manifest.json +7 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__dda45cac._.js → [root-of-the-server]__061fab1d._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__dda45cac._.js.map → [root-of-the-server]__061fab1d._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__4ec3205b._.js → [root-of-the-server]__09313e5e._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__4ec3205b._.js.map → [root-of-the-server]__09313e5e._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__0c170d21._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__0c170d21._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__131fe141._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__131fe141._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__139ed483._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__139ed483._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__37bfbf6b._.js → [root-of-the-server]__1ebda8c2._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__37bfbf6b._.js.map → [root-of-the-server]__1ebda8c2._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__326fc423._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__326fc423._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__ec681197._.js → [root-of-the-server]__32f4379a._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__ec681197._.js.map → [root-of-the-server]__32f4379a._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__e0b7050d._.js → [root-of-the-server]__36b796c6._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__e0b7050d._.js.map → [root-of-the-server]__36b796c6._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__36b87de0._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__36b87de0._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2f8b52da._.js → [root-of-the-server]__3987d53e._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2f8b52da._.js.map → [root-of-the-server]__3987d53e._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__9e44bbc8._.js → [root-of-the-server]__3f941970._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__9e44bbc8._.js.map → [root-of-the-server]__3f941970._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__d3078133._.js → [root-of-the-server]__5a926dad._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__d3078133._.js.map → [root-of-the-server]__5a926dad._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__0d56f35b._.js → [root-of-the-server]__5d6739e4._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__0d56f35b._.js.map → [root-of-the-server]__5d6739e4._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__3952b86e._.js → [root-of-the-server]__6004758a._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__3952b86e._.js.map → [root-of-the-server]__6004758a._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__54f2f032._.js → [root-of-the-server]__6496ee9b._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__54f2f032._.js.map → [root-of-the-server]__6496ee9b._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__c18498ef._.js → [root-of-the-server]__66952f53._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__c18498ef._.js.map → [root-of-the-server]__66952f53._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__6bf6dd19._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__6bf6dd19._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__4fd52ac1._.js → [root-of-the-server]__72882dad._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__4fd52ac1._.js.map → [root-of-the-server]__72882dad._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__77a38b01._.js +16 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__77a38b01._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__5c9f62f9._.js → [root-of-the-server]__7f6ec3b4._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__5c9f62f9._.js.map → [root-of-the-server]__7f6ec3b4._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2ffbf0d3._.js → [root-of-the-server]__86c123b3._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2ffbf0d3._.js.map → [root-of-the-server]__86c123b3._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__8713ccda._.js +16 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__8713ccda._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__0e8a08fc._.js → [root-of-the-server]__9d9f55dd._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__0e8a08fc._.js.map → [root-of-the-server]__9d9f55dd._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__452b5f9c._.js → [root-of-the-server]__a75af746._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__452b5f9c._.js.map → [root-of-the-server]__a75af746._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__ae9fe9b7._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__ae9fe9b7._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2a29597f._.js → [root-of-the-server]__b49d8c86._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__2a29597f._.js.map → [root-of-the-server]__b49d8c86._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__c43cf810._.js → [root-of-the-server]__b96ce42e._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__c43cf810._.js.map → [root-of-the-server]__b96ce42e._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__8637b7f1._.js → [root-of-the-server]__e2654a76._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__8637b7f1._.js.map → [root-of-the-server]__e2654a76._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__4b595942._.js → [root-of-the-server]__e96f0857._.js} +2 -2
- package/dist/server/.next/server/chunks/ssr/{_a1ab1c09._.js → _283bdc73._.js} +2 -2
- package/dist/server/.next/server/chunks/ssr/_283bdc73._.js.map +1 -0
- package/dist/server/.next/server/chunks/ssr/_89496b8a._.js +1 -1
- package/dist/server/.next/server/chunks/ssr/_89496b8a._.js.map +1 -1
- package/dist/server/.next/server/chunks/ssr/_9f432559._.js +2 -2
- package/dist/server/.next/server/chunks/ssr/_9f432559._.js.map +1 -1
- package/dist/server/.next/server/chunks/ssr/{_ee0c9da0._.js → _c7905e3c._.js} +2 -2
- package/dist/server/.next/server/chunks/ssr/_c7905e3c._.js.map +1 -0
- package/dist/server/.next/server/chunks/ssr/packages_server_src_65e3de99._.js +3 -0
- package/dist/server/.next/server/chunks/ssr/packages_server_src_65e3de99._.js.map +1 -0
- package/dist/server/.next/server/middleware-build-manifest.js +4 -4
- package/dist/server/.next/server/pages/404.html +1 -1
- package/dist/server/.next/server/pages/500.html +1 -1
- package/dist/server/.next/server/pages/_app/build-manifest.json +2 -2
- package/dist/server/.next/server/pages/_error/build-manifest.json +2 -2
- package/dist/server/.next/server/server-reference-manifest.js +1 -1
- package/dist/server/.next/server/server-reference-manifest.json +1 -1
- package/dist/server/.next/static/chunks/063f4e9959195b1d.js +57 -0
- package/dist/server/.next/static/chunks/09cba5d1f6b48977.js.map +1 -0
- package/dist/server/.next/static/chunks/{cf8cd3228a692db3.js → 0c6009607901038e.js} +2 -2
- package/dist/server/.next/static/chunks/1427afaf93da978b.css +3 -0
- package/dist/server/.next/static/chunks/{43c514797c454939.js → 1ae3fa2333c12687.js} +2 -2
- package/dist/server/.next/{server/chunks/ssr/_ee0c9da0._.js.map → static/chunks/227a962f4584edf8.js.map} +1 -1
- package/dist/server/.next/{server/chunks/ssr/_a1ab1c09._.js.map → static/chunks/51509164bafe1e57.js.map} +1 -1
- package/dist/server/.next/static/chunks/{b18e8b227375accd.js.map → 6a92a3cb924fd124.js.map} +1 -1
- package/dist/server/.next/static/chunks/6f824bb5811ceebd.js +3 -0
- package/dist/server/.next/static/chunks/{9148331cad3a934e.js → 736431eeff70b2b7.js} +2 -2
- package/dist/server/.next/static/chunks/{8ade09a4b436cb9d.js → 9793bc87a71ec278.js} +2 -2
- package/dist/server/.next/static/chunks/{aa6cbf0011bc69d5.js → dad6616f7b6f4060.js} +1 -1
- package/dist/server/.next/static/chunks/e0fb1a1f78246e35.css.map +1 -0
- package/dist/server/.next/static/chunks/f9854e63365b2956.js.map +1 -0
- package/dist/server/.next/static/chunks/pages/_app.js +2 -2
- package/dist/server/.next/static/chunks/pages/_error.js +2 -2
- package/dist/server/.next/trace +2 -2
- package/package.json +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__0879b2d6._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__0879b2d6._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__2a78acef._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__2a78acef._.js.map +0 -1
- package/dist/server/.next/server/chunks/ssr/packages_server_src_7cef6dbd._.js +0 -3
- package/dist/server/.next/server/chunks/ssr/packages_server_src_7cef6dbd._.js.map +0 -1
- package/dist/server/.next/static/chunks/0e37440325dbbf50.js.map +0 -1
- package/dist/server/.next/static/chunks/3dc9d6a79fb35214.js.map +0 -1
- package/dist/server/.next/static/chunks/45e30917848bc72f.js +0 -3
- package/dist/server/.next/static/chunks/813ed5c3558fc63e.css +0 -3
- package/dist/server/.next/static/chunks/888146b3e75fe817.js.map +0 -1
- package/dist/server/.next/static/chunks/8ccce022eadc0aa8.js +0 -57
- package/dist/server/.next/static/chunks/d1dc973f55175a52.css.map +0 -1
- package/dist/server/.next/static/chunks/e70508cc9f59709d.js.map +0 -1
- /package/dist/server/.next/server/chunks/{[root-of-the-server]__4b595942._.js.map → [root-of-the-server]__e96f0857._.js.map} +0 -0
- /package/dist/server/.next/static/{KXkoiu11_AYB_0w9kpOdD → Dz7Ultbv0aaqF3m4OrOHQ}/_buildManifest.js +0 -0
- /package/dist/server/.next/static/{KXkoiu11_AYB_0w9kpOdD → Dz7Ultbv0aaqF3m4OrOHQ}/_clientMiddlewareManifest.json +0 -0
- /package/dist/server/.next/static/{KXkoiu11_AYB_0w9kpOdD → Dz7Ultbv0aaqF3m4OrOHQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports={94011:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>l});var d=a.i(99559),e=a.i(57560),f=a.i(50923),g=a.i(94688),h=a.i(24640),i=a.i(72408),j=a.i(37897),k=a.i(56414);let b="submodules/common";function l({projectName:a,variant:c,onSwitched:l,refreshSignal:m}){let n="sub"===c,[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(""),[C,D]=(0,e.useState)(null),[E,F]=(0,e.useState)(null),G=(0,e.useRef)(null),H=a=>{F(a),G.current&&clearTimeout(G.current),G.current=setTimeout(()=>F(null),5e3)},I=(0,e.useCallback)(async()=>{if(n)try{let c=await fetch(`/api/submodule-info?project=${encodeURIComponent(a)}&subPath=${encodeURIComponent(b)}`),d=await c.json();d.success&&d.data&&(r(!!d.data.exists),p(d.data))}catch(b){console.error(`获取子仓库信息失败 (${a}):`,b)}else try{let b=await fetch(`/api/branches?project=${encodeURIComponent(a)}`),c=await b.json();c.success&&c.data?.exists&&p({exists:!0,currentBranch:c.data.currentBranch||null,detached:!1,commitHash:""})}catch(b){console.error(`获取项目分支信息失败 (${a}):`,b)}},[n,a]),J=(0,e.useCallback)(async()=>{x(!0),z(null);try{let c=n?`&subPath=${encodeURIComponent(b)}`:"",d=await fetch(`/api/branches?project=${encodeURIComponent(a)}${c}`),e=await d.json();e.success?v(e.data?.branches||[]):z(e.error||"获取远程分支失败")}catch(b){console.error(`获取远程分支失败 (${a}):`,b),z("网络请求失败")}finally{x(!1)}},[n,a]);(0,e.useEffect)(()=>{I()},[I,m]),(0,e.useEffect)(()=>()=>{G.current&&clearTimeout(G.current)},[]);let K=async c=>{if(!C&&c!==o?.currentBranch){D(c);try{let d=await fetch("/api/branch/switch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n?{projectName:a,branchName:c,subPath:b}:{projectName:a,branchName:c})}),e=await d.json();e.success?(t(!1),B(""),await I(),l?.()):(t(!1),B(""),H(e.error||"切换分支失败"))}catch(b){console.error(`切换分支失败 (${a}):`,b),t(!1),H("切换分支失败: 网络错误")}finally{D(null)}}};if(n&&!1===q)return null;let L=o?o.detached?o.commitHash?`(detached) ${o.commitHash}`:"(detached)":o.currentBranch||"未知分支":"",{visible:M,total:N}=(0,k.filterBranchOptions)(u,A),O=n?"flex items-center gap-1.5 px-2 py-1 bg-purple-50 border border-purple-200 rounded-md min-w-0":"flex items-center gap-1.5 px-2 py-1 bg-blue-50 border border-blue-200 rounded-md min-w-0",P=n?"text-xs font-medium text-purple-700 truncate shrink-0 max-w-[8rem]":"text-xs font-medium text-blue-700 truncate shrink-0 max-w-[8rem]",Q=n?"flex items-center gap-1 text-xs font-medium text-purple-800 hover:bg-purple-100 rounded px-1 transition-colors min-w-0":"flex items-center gap-1 text-xs font-medium text-blue-800 hover:bg-blue-100 rounded px-1 transition-colors min-w-0";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:O,children:[n&&(0,d.jsx)("span",{className:P,title:`子仓库: ${a}/${b}`,children:"common"}),(0,d.jsxs)(h.DropdownMenu,{open:s,onOpenChange:a=>{t(a),a&&(B(""),J())},children:[(0,d.jsx)(h.DropdownMenuTrigger,{asChild:!0,children:(0,d.jsxs)("button",{type:"button",className:Q,title:n?`点击切换子仓库(${a}/submodules/common)分支`:`点击切换 ${a} 分支`,children:[(0,d.jsx)("span",{className:"truncate max-w-[10rem]",children:L}),(0,d.jsx)(j.ChevronDownIcon,{className:"size-3 opacity-60 shrink-0"})]})}),(0,d.jsxs)(h.DropdownMenuContent,{align:"start",className:"w-72",children:[(0,d.jsx)("div",{className:"p-1",children:(0,d.jsx)(g.Input,{value:A,onChange:a=>B(a.target.value),placeholder:"搜索分支...",className:"h-8"})}),(0,d.jsx)(h.DropdownMenuSeparator,{}),w&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 px-3 py-4 text-sm text-gray-500",children:[(0,d.jsx)("span",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),"加载远程分支中..."]}),!w&&y&&(0,d.jsxs)("div",{className:"px-3 py-3 text-sm",children:[(0,d.jsx)("p",{className:"text-red-600",children:y}),(0,d.jsx)(f.Button,{variant:"outline",size:"sm",onClick:J,className:"mt-2 h-7 px-2 text-xs",children:"重试"})]}),!w&&!y&&0===u.length&&(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"暂无远程分支"}),!w&&!y&&u.length>0&&0===N&&(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"没有匹配的分支"}),!w&&!y&&N>0&&(0,d.jsxs)("div",{className:"max-h-64 overflow-y-auto",children:[M.map(a=>(0,d.jsxs)(h.DropdownMenuItem,{disabled:null!==C,className:"flex items-center justify-between",onSelect:b=>{b.preventDefault(),K(a)},children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a}),(0,d.jsxs)("span",{className:"flex items-center gap-2 shrink-0",children:[a===o?.currentBranch&&(0,d.jsx)(i.CheckIcon,{className:"size-4 text-blue-600"}),C===a&&(0,d.jsx)("span",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"})]})]},a)),N>M.length&&(0,d.jsxs)("div",{className:"px-3 py-2 text-xs text-gray-400 border-t",children:["共 ",N," 个匹配分支,仅展示前 ",M.length," 项,更多请使用上方搜索"]})]})]})]})]}),E&&(0,d.jsx)("div",{className:"fixed top-16 right-4 z-50 max-w-sm px-4 py-3 bg-red-50 border border-red-200 rounded-md shadow-lg text-sm text-red-600",children:E})]})}}},67450:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({PROJECT_CONFIG_PATH:()=>c,ProjectStatus:()=>f,WORKSPACE_CONFIG:()=>b});var d=a.i(13442),e=a.i(30331);let b={WORKSPACE_ROOT:(0,e.join)((0,d.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,d.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},c=(0,e.join)((0,d.homedir)(),".prime-projects.json");var f=function(a){return a.PENDING="pending",a.EXISTING="existing",a.CLONING="cloning",a.SUCCESS="success",a.FAILED="failed",a.RETRYING="retrying",a.INCOMPLETE="incomplete",a}({})}},90250:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({buildBatchProbeRemoteBranchPayload:()=>w,buildBatchSwitchBranchPayload:()=>t,buildBatchSwitchSubBranchPayload:()=>v,default:()=>b,mapProbeRemoteBranchResultText:()=>x,validateBatchProbeRemoteBranchForm:()=>r,validateBatchSwitchBranchForm:()=>s,validateBatchSwitchSubBranchForm:()=>u});var d=a.i(99559),e=a.i(57560),f=a.i(40490),g=a.i(50923),h=a.i(2031),i=a.i(94011),j=a.i(94688),k=a.i(58413),l=a.i(24640),m=a.i(72408),n=a.i(37897),o=a.i(22529),p=a.i(67450),q=a.i(56414);function r(a,b){let c=[];return 0===a.length&&c.push("请先选择至少一个项目。"),b.trim()||c.push("请填写远端分支名称。"),c}function s(a,b){let c=[];return 0===a.length&&c.push("请先选择至少一个项目。"),b.trim()||c.push("请选择目标分支。"),c}function t(a,b,c){return{projects:[a],branchName:b.trim(),dryRun:c}}function u(a,b){let c=[];return 0===a.length&&c.push("请先选择至少一个项目。"),b.trim()||c.push("请选择子仓库目标分支。"),c}function v(a,b,c){return{projects:[a],branchName:b.trim(),dryRun:c}}function w(a,b,c){return{projects:[a],branchName:b.trim(),dryRun:c}}function x(a){return!0===a.exists?"存在":!1===a.exists?"不存在":a.success?"成功":"执行失败"}let b=()=>{let a=(0,f.useRouter)(),[b,c]=(0,e.useState)({isInitializing:!1,isCompleted:!1,isLoading:!0,hasCompleted:!1,globalProgress:0,globalMessage:"正在检查工作空间状态...",projects:{}}),[y,z]=(0,e.useState)({selectedProjects:[],createBranch:"release/",baseBranch:"main",mergeBranch:"feature/"}),[A,B]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],runId:""}),[C,D]=(0,e.useState)({selectedProjects:[],createBranch:"release/",baseBranch:"GWH",mergeBranch:"feature/"}),[E,F]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],runId:""}),[G,H]=(0,e.useState)({selectedProjects:[],targetBranch:"main",sourceBranch:""}),[I,J]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[K,L]=(0,e.useState)({selectedProjects:[],createBranch:"",baseBranch:"main"}),[M,N]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[O,P]=(0,e.useState)({selectedProjects:[],branchName:""}),[Q,R]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[S,T]=(0,e.useState)({selectedProjects:[],branchName:""}),[U,V]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[W,X]=(0,e.useState)({selectedProjects:[],branchName:""}),[Y,Z]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[$,_]=(0,e.useState)([]),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(null),[ae,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(""),[ai,aj]=(0,e.useState)([]),[ak,al]=(0,e.useState)(!1),[am,an]=(0,e.useState)({selectedProjects:[],branchName:""}),[ao,ap]=(0,e.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[aq,ar]=(0,e.useState)([]),[as,at]=(0,e.useState)(!1),[au,av]=(0,e.useState)(null),[aw,ax]=(0,e.useState)(!1),[ay,az]=(0,e.useState)(""),[aA,aB]=(0,e.useState)([]),[aC,aD]=(0,e.useState)(!1),[aE,aF]=(0,e.useState)(!1),[aG,aH]=(0,e.useState)(null),[aI,aJ]=(0,e.useState)(!1),[aK,aL]=(0,e.useState)(!1),[aM,aN]=(0,e.useState)([]),[aO,aP]=(0,e.useState)({}),[aQ,aR]=(0,e.useState)({});(0,e.useEffect)(()=>{aS()},[]),(0,e.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/admin-status"),b=await a.json();aF(!!b?.isAdmin)}catch(a){console.error("获取管理员状态失败:",a),aF(!1)}})()},[]);let aS=async()=>{try{c(a=>({...a,isLoading:!0,globalMessage:"正在检查工作空间状态..."}));let a=await fetch("/api/check-workspace"),b=await a.json();if(b.success){let a={};b.projects.forEach(b=>{a[b.name]={name:b.name,status:b.status,progress:100*(b.status===p.ProjectStatus.EXISTING),message:b.message,canRetry:!1,needsCleanup:b.needsCleanup||!1}}),c(c=>({...c,isLoading:!1,projects:a,globalMessage:b.message||"检查完成"}))}else c(a=>({...a,isLoading:!1,globalMessage:b.error||"检查工作空间状态失败"}))}catch(a){c(a=>({...a,isLoading:!1,globalMessage:"无法连接到服务器,请刷新页面重试"})),console.error("检查工作空间状态失败:",a)}},aT=a=>{switch(a.type){case"initialization":case"workspace_created":case"projects_loaded":if(c(b=>({...b,globalProgress:a.progress||0,globalMessage:a.message||""})),a.projects&&Array.isArray(a.projects)){let b={};a.projects.forEach(a=>{b[a]={name:a,status:p.ProjectStatus.PENDING,progress:0,message:"等待开始...",canRetry:!1}}),c(a=>({...a,projects:b}))}break;case"project_existing":if(a.projectName){let b=a.projectName;c(c=>({...c,globalProgress:a.progress??c.globalProgress,globalMessage:a.message??"",projects:{...c.projects,[b]:{...c.projects[b],status:p.ProjectStatus.EXISTING,message:"项目已存在",progress:100,canRetry:!1}}}))}break;case"project_start":if(a.projectName){let b=a.projectName;c(c=>({...c,globalProgress:a.progress??c.globalProgress,globalMessage:a.message??"",projects:{...c.projects,[b]:{...c.projects[b],status:p.ProjectStatus.CLONING,message:"开始克隆...",progress:0}}}))}break;case"project_progress":if(a.projectName){let b=a.projectName;c(c=>({...c,globalProgress:a.progress??c.globalProgress,projects:{...c.projects,[b]:{...c.projects[b],message:a.message??"",progress:Math.min(a.progress??0,100)}}}))}break;case"project_success":if(a.projectName){let b=a.projectName;c(c=>({...c,globalProgress:a.progress??c.globalProgress,projects:{...c.projects,[b]:{...c.projects[b],status:p.ProjectStatus.SUCCESS,message:"克隆成功",progress:100,canRetry:!1}}}))}break;case"project_failed":if(a.projectName){let b=a.projectName;c(c=>({...c,globalProgress:a.progress??c.globalProgress,projects:{...c.projects,[b]:{...c.projects[b],status:p.ProjectStatus.FAILED,message:"克隆失败",error:a.error,canRetry:!0}}}))}break;case"command_log":if(a.projectName&&a.logType&&void 0!==a.content&&a.timestamp){let b=a.projectName,d=a.logType,e=a.content,f=a.timestamp;c(a=>({...a,projects:{...a.projects,[b]:{...a.projects[b],logs:[...a.projects[b]?.logs||[],{type:d,content:e,timestamp:f}].slice(-1e3)}}}))}break;case"completion":c(b=>({...b,isInitializing:!1,isCompleted:!0,hasCompleted:!0,globalProgress:100,globalMessage:a.message??"初始化完成",completionSummary:a.result?{success:a.result.success,totalProjects:a.result.totalProjects,successCount:a.result.successCount,failedCount:a.result.failedCount,duration:a.result.duration}:void 0}));break;case"error":c(b=>({...b,isInitializing:!1,hasCompleted:!0,globalMessage:a.message??"发生错误",globalProgress:a.progress??b.globalProgress}))}},aU=async(a,b="cursor")=>{c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],isOpening:!0}}}));try{let d=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:a,editor:b})}),e=await d.json();if(e.success&&e.editorUrl){let a=document.createElement("a");a.href=e.editorUrl,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)}else console.error("打开项目失败:",e.error);c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],isOpening:!1}}}))}catch(b){c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],isOpening:!1}}})),console.error("打开项目失败:",b)}},aV=async a=>{c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],isCleaningUp:!0}}}));try{let b=await fetch("/api/cleanup-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:a})}),d=await b.json();d.success?c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],status:p.ProjectStatus.PENDING,message:"已清理,待克隆",isCleaningUp:!1,needsCleanup:!1}}})):c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],isCleaningUp:!1,error:d.error}}}))}catch(b){c(c=>({...c,projects:{...c.projects,[a]:{...c.projects[a],isCleaningUp:!1,error:b instanceof Error?b.message:String(b)}}}))}},aW=async a=>{c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],status:p.ProjectStatus.RETRYING,message:"正在重试...",progress:0,canRetry:!1}}}));try{let b=await fetch("/api/retry-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:a})}),d=await b.json();c(b=>({...b,projects:{...b.projects,[a]:{...b.projects[a],status:d.success?p.ProjectStatus.SUCCESS:p.ProjectStatus.FAILED,message:d.message,error:d.error,progress:d.success?100:b.projects[a].progress,canRetry:!d.success}}}))}catch(b){c(c=>({...c,projects:{...c.projects,[a]:{...c.projects[a],status:p.ProjectStatus.FAILED,message:"重试失败",error:b instanceof Error?b.message:String(b),canRetry:!0}}}))}},aX=a=>{switch(a){case p.ProjectStatus.EXISTING:case p.ProjectStatus.SUCCESS:return"text-green-600 bg-green-50 border-green-200";case p.ProjectStatus.FAILED:return"text-red-600 bg-red-50 border-red-200";case p.ProjectStatus.INCOMPLETE:return"text-orange-600 bg-orange-50 border-orange-200";case p.ProjectStatus.CLONING:case p.ProjectStatus.RETRYING:return"text-blue-600 bg-blue-50 border-blue-200";case p.ProjectStatus.PENDING:default:return"text-gray-600 bg-gray-50 border-gray-200"}},aY=a=>{switch(a){case p.ProjectStatus.PENDING:return"待克隆";case p.ProjectStatus.EXISTING:return"已存在";case p.ProjectStatus.CLONING:return"克隆中";case p.ProjectStatus.SUCCESS:return"成功";case p.ProjectStatus.FAILED:return"失败";case p.ProjectStatus.INCOMPLETE:return"不完整";case p.ProjectStatus.RETRYING:return"重试中";default:return"未知"}},aZ=()=>{let a=Object.values(b.projects);return a.length>0&&a.every(a=>a.status===p.ProjectStatus.EXISTING)},a$=b=>{a.push(`/configuration?project=${encodeURIComponent(b)}`)},a_=(a,b)=>{z(c=>({...c,[a]:b}))},a0=(a,b)=>{D(c=>({...c,[a]:b}))},a1=(a,b)=>{H(c=>({...c,[a]:b}))},a2=(a,b)=>{L(c=>({...c,[a]:b}))},a3=a=>{P(b=>({...b,branchName:a}))},a4=a=>{T(b=>({...b,branchName:a}))},a5=a=>{X(b=>({...b,branchName:a})),af(!1),ah("")},a6=async()=>{let a=W.selectedProjects.length>0?W.selectedProjects:Object.keys(b.projects);if(0===a.length){ad("暂无可用的项目"),_([]);return}ab(!0),ad(null);try{let b=await fetch("/api/batch-list-branches",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:a})}),c=await b.json();c.success?(_(c.branches||[]),Array.isArray(c.failedProjects)&&c.failedProjects.length>0&&ad(`${c.failedProjects.length} 个项目获取分支失败(已跳过): ${c.failedProjects.map(a=>a.projectName).join(", ")}`)):(ad(c.error||"获取分支列表失败"),_([]))}catch(a){console.error("获取批量分支列表失败:",a),ad("网络请求失败"),_([])}finally{ab(!1)}},a7=async a=>{let b=[];if(0===G.selectedProjects.length&&b.push("请先选择至少一个项目。"),G.targetBranch.trim()||b.push("请填写合入分支名称。"),G.sourceBranch.trim()||b.push("请填写被合入分支名称。"),b.length>0)return void J({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=G.selectedProjects.length;J({isRunning:!0,operationLogs:[`开始批量分支合并,共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let d=[],e=[];for(let b=0;b<G.selectedProjects.length;b++){let f=G.selectedProjects[b];J(a=>({...a,currentProject:f,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${f}`]}));try{let b=await fetch("/api/admin-git-batch-merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[f],targetBranch:G.targetBranch.trim(),sourceBranch:G.sourceBranch.trim(),dryRun:a})}),c=await b.json(),g=Array.isArray(c.operationLogs)?c.operationLogs:[],h=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];J(a=>({...a,operationLogs:[...a.operationLogs,...g],feedbacks:[...a.feedbacks,...h]})),e.push(...h),Array.isArray(c.projectResults)&&d.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";J(b=>({...b,operationLogs:[...b.operationLogs,`[${f}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${f}] ${a}`]})),e.push(`[${f}] ${a}`),d.push({projectName:f,success:!1,reason:a})}}J(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,"批量分支合并执行完成。"],feedbacks:e.length>0?e:a.feedbacks})),d.length>0?(aN(d),aL(!0)):(aN([]),aL(!1))},a8=async a=>{let b=[];if(0===K.selectedProjects.length&&b.push("请先选择至少一个项目。"),K.createBranch.trim()||b.push("请填写新分支名称。"),K.baseBranch.trim()||b.push("请填写来源分支名称。"),b.length>0)return void N({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=K.selectedProjects.length;N({isRunning:!0,operationLogs:[`开始批量新建分支,共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let d=[],e=[];for(let b=0;b<K.selectedProjects.length;b++){let f=K.selectedProjects[b];N(a=>({...a,currentProject:f,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${f}`]}));try{let b=await fetch("/api/admin-git-batch-create-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[f],createBranch:K.createBranch.trim(),baseBranch:K.baseBranch.trim(),dryRun:a})}),c=await b.json(),g=Array.isArray(c.operationLogs)?c.operationLogs:[],h=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];N(a=>({...a,operationLogs:[...a.operationLogs,...g],feedbacks:[...a.feedbacks,...h]})),e.push(...h),Array.isArray(c.projectResults)&&d.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";N(b=>({...b,operationLogs:[...b.operationLogs,`[${f}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${f}] ${a}`]})),e.push(`[${f}] ${a}`),d.push({projectName:f,success:!1,reason:a})}}N(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,"批量新建分支执行完成。"],feedbacks:e.length>0?e:a.feedbacks})),d.length>0?(aN(d),aL(!0)):(aN([]),aL(!1))},a9=async a=>{let b=[];if(0===O.selectedProjects.length&&b.push("请先选择至少一个项目。"),O.branchName.trim()||b.push("请填写远端分支名称。"),b.length>0)return void R({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=O.selectedProjects.length;R({isRunning:!0,operationLogs:[`开始批量删除远端分支,共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let d=[],e=[];for(let b=0;b<O.selectedProjects.length;b++){let f=O.selectedProjects[b];R(a=>({...a,currentProject:f,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${f}`]}));try{let b=await fetch("/api/admin-git-batch-delete-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[f],branchName:O.branchName.trim(),dryRun:a})}),c=await b.json(),g=Array.isArray(c.operationLogs)?c.operationLogs:[],h=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];R(a=>({...a,operationLogs:[...a.operationLogs,...g],feedbacks:[...a.feedbacks,...h]})),e.push(...h),Array.isArray(c.projectResults)&&d.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";R(b=>({...b,operationLogs:[...b.operationLogs,`[${f}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${f}] ${a}`]})),e.push(`[${f}] ${a}`),d.push({projectName:f,success:!1,reason:a})}}R(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,"批量删除远端分支执行完成。"],feedbacks:e.length>0?e:a.feedbacks})),d.length>0?(aN(d),aL(!0)):(aN([]),aL(!1))},ba=async a=>{let b=r(S.selectedProjects,S.branchName);if(b.length>0)return void V({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=S.selectedProjects.length;V({isRunning:!0,operationLogs:[`开始批量探测远端分支,共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let d=[],e=[];for(let b=0;b<S.selectedProjects.length;b++){let f=S.selectedProjects[b];V(a=>({...a,currentProject:f,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${f}`]}));try{let b=await fetch("/api/admin-git-batch-probe-remote-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(w(f,S.branchName,a))}),c=await b.json(),g=Array.isArray(c.operationLogs)?c.operationLogs:[],h=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];V(a=>({...a,operationLogs:[...a.operationLogs,...g],feedbacks:[...a.feedbacks,...h]})),e.push(...h),Array.isArray(c.projectResults)&&d.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";V(b=>({...b,operationLogs:[...b.operationLogs,`[${f}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${f}] ${a}`]})),e.push(`[${f}] ${a}`),d.push({projectName:f,success:!1,reason:a})}}V(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,"批量探测远端分支执行完成。"],feedbacks:e.length>0?e:a.feedbacks})),d.length>0?(aN(d),aL(!0)):(aN([]),aL(!1))},bb=async a=>{let b=s(W.selectedProjects,W.branchName);if(b.length>0)return void Z({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=W.selectedProjects.length,d=W.branchName.trim();Z({isRunning:!0,operationLogs:[`开始批量切换分支${a?"(DRY RUN)":""},目标分支: ${d},共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let e=[],f=[];for(let b=0;b<W.selectedProjects.length;b++){let g=W.selectedProjects[b];Z(a=>({...a,currentProject:g,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${g}`]}));try{let b=await fetch("/api/batch-switch-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t(g,d,a))}),c=await b.json(),h=Array.isArray(c.operationLogs)?c.operationLogs:[],i=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];Z(a=>({...a,operationLogs:[...a.operationLogs,...h],feedbacks:[...a.feedbacks,...i]})),f.push(...i),Array.isArray(c.projectResults)&&e.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";Z(b=>({...b,operationLogs:[...b.operationLogs,`[${g}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${g}] ${a}`]})),f.push(`[${g}] ${a}`),e.push({projectName:g,success:!1,reason:a})}}let g=e.filter(a=>a.success).length,h=e.length-g;Z(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,`批量切换分支执行完成。总结: 共 ${e.length} 个项目,成功 ${g} 个,失败 ${h} 个。`],feedbacks:f.length>0?f:a.feedbacks})),e.length>0?(aj(e),al(!0)):(aj([]),al(!1)),bc(e.map(a=>a.projectName))},bc=a=>{aR(b=>{let c={...b};return a.forEach(a=>{c[a]=(c[a]||0)+1}),c})},bd=a=>{an(b=>({...b,branchName:a})),ax(!1),az("")},be=async()=>{let a=am.selectedProjects.length>0?am.selectedProjects:Object.keys(b.projects);if(0===a.length){av("暂无可用的项目"),ar([]);return}at(!0),av(null);try{let b=await fetch("/api/batch-list-submodule-branches",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:a})}),c=await b.json();c.success?(ar(c.branches||[]),Array.isArray(c.failedProjects)&&c.failedProjects.length>0&&av(`${c.failedProjects.length} 个项目获取子仓库分支失败(已跳过): ${c.failedProjects.map(a=>a.projectName).join(", ")}`)):(av(c.error||"获取子仓库分支列表失败"),ar([]))}catch(a){console.error("获取批量子仓库分支列表失败:",a),av("网络请求失败"),ar([])}finally{at(!1)}},bf=async a=>{let b=u(am.selectedProjects,am.branchName);if(b.length>0)return void ap({isRunning:!1,operationLogs:[],feedbacks:b,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let c=am.selectedProjects.length,d=am.branchName.trim();ap({isRunning:!0,operationLogs:[`开始批量切换子仓库(submodules/common)分支${a?"(DRY RUN)":""},目标分支: ${d},共 ${c} 个项目...`],feedbacks:[],progress:0,totalProjects:c,completedProjects:0,currentProject:""});let e=[],f=[];for(let b=0;b<am.selectedProjects.length;b++){let g=am.selectedProjects[b];ap(a=>({...a,currentProject:g,completedProjects:b,progress:Math.round(b/c*100),operationLogs:[...a.operationLogs,`[进度] ${b+1}/${c} 开始处理项目 ${g}`]}));try{let b=await fetch("/api/batch-switch-submodule-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v(g,d,a))}),c=await b.json(),h=Array.isArray(c.operationLogs)?c.operationLogs:[],i=Array.isArray(c.feedbacks)?c.feedbacks:[c.error||"执行失败"];ap(a=>({...a,operationLogs:[...a.operationLogs,...h],feedbacks:[...a.feedbacks,...i]})),f.push(...i),Array.isArray(c.projectResults)&&e.push(...c.projectResults)}catch(b){let a=b instanceof Error?b.message:"执行失败";ap(b=>({...b,operationLogs:[...b.operationLogs,`[${g}] 请求失败: ${a}`],feedbacks:[...b.feedbacks,`[${g}] ${a}`]})),f.push(`[${g}] ${a}`),e.push({projectName:g,success:!1,reason:a})}}let g=e.filter(a=>a.success).length,h=e.length-g;ap(a=>({...a,isRunning:!1,progress:100,completedProjects:c,currentProject:"",operationLogs:[...a.operationLogs,`批量切换子仓库分支执行完成。总结: 共 ${e.length} 个项目,成功 ${g} 个,失败 ${h} 个。`],feedbacks:f.length>0?f:a.feedbacks})),e.length>0?(aB(e),aD(!0)):(aB([]),aD(!1)),bc(e.map(a=>a.projectName))},bg=async a=>{let b=[];if(0===y.selectedProjects.length&&b.push("请先选择至少一个项目。"),y.createBranch.trim()||b.push("请填写创建分支名。"),y.baseBranch.trim()||b.push("请填写从 origin 哪个分支创建。"),y.mergeBranch.trim()||b.push("请填写被合并分支名称。"),b.length>0)return void B({isRunning:!1,operationLogs:[],feedbacks:b,runId:""});let c=`uat-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;B({isRunning:!0,operationLogs:[],feedbacks:[],runId:c});try{let b=await fetch("/api/uat-git-flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:y.selectedProjects,createBranch:y.createBranch.trim(),baseBranch:"main",mergeBranch:y.mergeBranch.trim(),dryRun:a,runId:c})}),d=await b.json();B({isRunning:!1,operationLogs:Array.isArray(d.operationLogs)?d.operationLogs:[],feedbacks:Array.isArray(d.feedbacks)?d.feedbacks:[d.error||"执行失败"],runId:""}),Array.isArray(d.projectResults)&&(aN(d.projectResults),aL(!0))}catch(a){B({isRunning:!1,operationLogs:[],feedbacks:[a instanceof Error?a.message:"执行失败"],runId:""}),aN([]),aL(!1)}},bh=async a=>{let b=[];if(0===C.selectedProjects.length&&b.push("请先选择至少一个项目。"),C.createBranch.trim()||b.push("请填写创建分支名。"),C.baseBranch.trim()||b.push("请填写从 origin 哪个分支创建。"),C.mergeBranch.trim()||b.push("请填写被合并分支名称。"),b.length>0)return void F({isRunning:!1,operationLogs:[],feedbacks:b,runId:""});let c=`gwh-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;F({isRunning:!0,operationLogs:[],feedbacks:[],runId:c});try{let b=await fetch("/api/gwh-git-flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:C.selectedProjects,createBranch:C.createBranch.trim(),baseBranch:"GWH",mergeBranch:C.mergeBranch.trim(),dryRun:a,runId:c})}),d=await b.json();F({isRunning:!1,operationLogs:Array.isArray(d.operationLogs)?d.operationLogs:[],feedbacks:Array.isArray(d.feedbacks)?d.feedbacks:[d.error||"执行失败"],runId:""}),Array.isArray(d.projectResults)&&(aN(d.projectResults),aL(!0))}catch(a){F({isRunning:!1,operationLogs:[],feedbacks:[a instanceof Error?a.message:"执行失败"],runId:""}),aN([]),aL(!1)}},bi=async()=>{if(aG&&A.runId)try{let a=await fetch("/api/uat-git-flow/step",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"execute",runId:A.runId,stepId:aG.stepId})}),b=await a.json(),c=Array.isArray(b.operationLogs)?b.operationLogs:[],d=Array.isArray(b.feedbacks)?b.feedbacks:[b.error||"执行失败"];if(!b.success){B(a=>({...a,isRunning:!1,operationLogs:c,feedbacks:d,runId:""})),aH(null),aJ(!1);return}B(a=>({...a,operationLogs:c,feedbacks:d,isRunning:!b.isComplete,runId:b.isComplete?"":a.runId})),b.nextStep?(aH(b.nextStep),aJ(!0)):(aH(null),aJ(!1),Array.isArray(b.projectResults)&&(aN(b.projectResults),aL(!0)))}catch(a){B(b=>({...b,isRunning:!1,operationLogs:b.operationLogs,feedbacks:[...b.feedbacks,a instanceof Error?a.message:"执行失败"],runId:""})),aH(null),aJ(!1)}},bj=async()=>{if(A.runId)try{let a=await fetch("/api/uat-git-flow/abort",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runId:A.runId})}),b=await a.json();b&&Array.isArray(b.operationLogs)?B(a=>({...a,isRunning:!1,operationLogs:b.operationLogs,feedbacks:Array.isArray(b.feedbacks)?b.feedbacks:a.feedbacks,runId:""})):B(a=>({...a,isRunning:!1,runId:""})),Array.isArray(b.projectResults)&&(aN(b.projectResults),aL(!0)),aH(null),aJ(!1)}catch(a){B(b=>({...b,feedbacks:[...b.feedbacks,a instanceof Error?a.message:"中断失败"]}))}},bk=async()=>{if(E.runId)try{let a=await fetch("/api/gwh-git-flow/abort",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runId:E.runId})}),b=await a.json();b&&Array.isArray(b.operationLogs)?F(a=>({...a,isRunning:!1,operationLogs:b.operationLogs,feedbacks:Array.isArray(b.feedbacks)?b.feedbacks:a.feedbacks,runId:""})):F(a=>({...a,isRunning:!1,runId:""})),Array.isArray(b.projectResults)&&(aN(b.projectResults),aL(!0))}catch(a){F(b=>({...b,feedbacks:[...b.feedbacks,a instanceof Error?a.message:"中断失败"]}))}},bl=(0,q.filterBranchOptions)($,ag),bm=(0,q.filterBranchOptions)(aq,ay);return(0,d.jsxs)("div",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,d.jsx)("h1",{className:"text-2xl font-bold",children:"项目初始化"}),b.isLoading?(0,d.jsx)(g.Button,{disabled:!0,children:"检查中..."}):(0,d.jsx)(g.Button,{onClick:()=>{c(a=>({...a,isInitializing:!0,isCompleted:!1,hasCompleted:!1,globalProgress:0,globalMessage:"正在连接服务器...",projects:{},completionSummary:void 0}));let a=new EventSource("/api/initialize-workspace");a.onmessage=a=>{try{let b=JSON.parse(a.data);aT(b)}catch(a){console.error("解析 SSE 消息失败:",a)}},a.onerror=()=>{c(a=>a.hasCompleted?a:{...a,isInitializing:!1,globalMessage:"连接服务器失败,请重试"}),a.close()},a.addEventListener("error",()=>{a.close()})},disabled:b.isInitializing,children:b.isInitializing?"初始化中...":"创建项目空间"})]}),(b.isInitializing||b.isCompleted)&&!aZ()&&(0,d.jsxs)("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,d.jsx)("span",{className:"text-sm font-medium",children:b.globalMessage}),(0,d.jsxs)("span",{className:"text-sm text-gray-600",children:[b.globalProgress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${b.globalProgress}%`}})})]}),b.completionSummary&&!aZ()&&(0,d.jsxs)("div",{className:`mb-6 p-4 rounded-lg border ${b.completionSummary.success?"bg-green-50 border-green-200":"bg-yellow-50 border-yellow-200"}`,children:[(0,d.jsx)("h3",{className:"font-semibold mb-2",children:"初始化完成"}),(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[(0,d.jsxs)("div",{children:["总项目数: ",b.completionSummary.totalProjects]}),(0,d.jsxs)("div",{className:"text-green-600",children:["成功: ",b.completionSummary.successCount]}),(0,d.jsxs)("div",{className:"text-red-600",children:["失败: ",b.completionSummary.failedCount]}),(0,d.jsxs)("div",{children:["耗时: ",Math.round(b.completionSummary.duration/1e3),"s"]})]})]}),(0,d.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:Object.keys(b.projects).length>0?Object.values(b.projects).map(a=>(0,d.jsxs)("div",{className:`border rounded-lg p-4 ${aX(a.status)}`,children:[(0,d.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,d.jsx)("h2",{className:"font-semibold cursor-pointer hover:text-blue-600 transition-colors",onClick:()=>a$(a.name),title:"点击进入项目配置",children:a.name}),(0,d.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-white",children:aY(a.status)})]}),(0,d.jsx)("p",{className:"text-sm mb-2",children:a.message}),a.status===p.ProjectStatus.CLONING||a.status===p.ProjectStatus.RETRYING?(0,d.jsxs)("div",{className:"mb-2",children:[(0,d.jsx)("div",{className:"w-full bg-white rounded-full h-1",children:(0,d.jsx)("div",{className:"bg-current h-1 rounded-full transition-all duration-300",style:{width:`${a.progress}%`}})}),(0,d.jsxs)("span",{className:"text-xs",children:[a.progress,"%"]})]}):null,a.error&&(0,d.jsx)("p",{className:"text-xs text-red-600 mb-2",children:a.error}),(a.status===p.ProjectStatus.EXISTING||a.status===p.ProjectStatus.SUCCESS)&&(0,d.jsx)("div",{className:"mb-2",children:(0,d.jsx)(i.default,{projectName:a.name,variant:"main",refreshSignal:aQ[a.name]||0,onSwitched:()=>aR(b=>({...b,[a.name]:(b[a.name]||0)+1}))})}),(a.status===p.ProjectStatus.EXISTING||a.status===p.ProjectStatus.SUCCESS)&&(0,d.jsx)("div",{className:"mb-2",children:(0,d.jsx)(i.default,{projectName:a.name,variant:"sub",refreshSignal:aQ[a.name]||0})}),(0,d.jsxs)("div",{className:"space-y-2",children:[a.canRetry&&(0,d.jsx)(g.Button,{size:"sm",variant:"outline",onClick:()=>aW(a.name),className:"w-full",children:"重试"}),a.needsCleanup&&a.status===p.ProjectStatus.INCOMPLETE&&(0,d.jsx)(g.Button,{size:"sm",variant:"destructive",onClick:()=>aV(a.name),disabled:a.isCleaningUp,className:"w-full",children:a.isCleaningUp?"清理中...":"清理项目"}),(a.status===p.ProjectStatus.EXISTING||a.status===p.ProjectStatus.SUCCESS)&&(0,d.jsx)(h.EditorSplitButton,{onOpen:b=>aU(a.name,b),loading:a.isOpening,loadingText:"打开中...",size:"sm",variant:"default",className:"w-full"}),a.logs&&a.logs.length>0&&(0,d.jsx)(g.Button,{size:"sm",variant:"outline",onClick:()=>aP(b=>({...b,[a.name]:!b[a.name]})),className:"w-full",children:aO[a.name]?"隐藏日志":`查看日志 (${a.logs.length})`})]}),aO[a.name]&&a.logs&&a.logs.length>0&&(0,d.jsx)("div",{className:"mt-3 border-t pt-3",children:(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:a.logs.map((a,b)=>(0,d.jsxs)("div",{className:`mb-1 ${"stderr"===a.type?"text-red-400":"progress"===a.type?"text-yellow-400":"text-green-400"}`,children:[(0,d.jsx)("span",{className:"text-gray-500 mr-2",children:new Date(a.timestamp).toLocaleTimeString()}),(0,d.jsxs)("span",{className:"text-blue-400 mr-2",children:["[",a.type,"]"]}),(0,d.jsx)("span",{className:"whitespace-pre-wrap",children:a.content})]},b))})})]},a.name)):(0,d.jsx)("div",{className:"col-span-full text-center text-gray-500 py-8",children:b.isLoading?"正在检查项目状态...":b.isInitializing?"正在加载项目...":'点击"创建项目空间"开始初始化'})}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"UAT上线前 Git 操作流"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>bg(!1),disabled:A.isRunning,children:A.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>bg(!0),disabled:A.isRunning,children:"DRY RUN"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:bj,disabled:!A.isRunning,children:"中断"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"uat-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"uat-projects",multiple:!0,value:y.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);z(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsxs)("div",{className:"grid gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"uat-create-branch",children:"创建分支名"}),(0,d.jsx)(j.Input,{id:"uat-create-branch",value:y.createBranch,onChange:a=>a_("createBranch",a.target.value),placeholder:"例如: release/uat-2026-01"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"uat-base-branch",children:"从 origin 哪个分支创建(固定)"}),(0,d.jsx)(j.Input,{id:"uat-base-branch",value:y.baseBranch,disabled:!0,placeholder:"main"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"uat-merge-branch",children:"被合并分支名称"}),(0,d.jsx)(j.Input,{id:"uat-merge-branch",value:y.mergeBranch,onChange:a=>a_("mergeBranch",a.target.value),placeholder:"例如: feature/xxx"})]})]})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===A.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:A.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===A.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:A.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"武汉协和版本上线前 Git 操作流"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>bh(!1),disabled:E.isRunning,children:E.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>bh(!0),disabled:E.isRunning,children:"DRY RUN"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:bk,disabled:!E.isRunning,children:"中断"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"gwh-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"gwh-projects",multiple:!0,value:C.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);D(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsxs)("div",{className:"grid gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"gwh-create-branch",children:"创建分支名"}),(0,d.jsx)(j.Input,{id:"gwh-create-branch",value:C.createBranch,onChange:a=>a0("createBranch",a.target.value),placeholder:"例如: release/whxh-2026-03"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"gwh-base-branch",children:"从 origin 哪个分支创建(固定)"}),(0,d.jsx)(j.Input,{id:"gwh-base-branch",value:C.baseBranch,disabled:!0,placeholder:"GWH"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"gwh-merge-branch",children:"被合并分支名称"}),(0,d.jsx)(j.Input,{id:"gwh-merge-branch",value:C.mergeBranch,onChange:a=>a0("mergeBranch",a.target.value),placeholder:"例如: feature/xxx"})]})]})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===E.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:E.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===E.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:E.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量分支合并"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>a7(!1),disabled:I.isRunning,children:I.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>a7(!0),disabled:I.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-merge-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-merge-projects",multiple:!0,value:G.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);H(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsxs)("div",{className:"grid gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-merge-target-branch",children:"合入分支名称"}),(0,d.jsx)(j.Input,{id:"batch-merge-target-branch",value:G.targetBranch,onChange:a=>a1("targetBranch",a.target.value),placeholder:"例如: main"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-merge-source-branch",children:"被合入分支名称"}),(0,d.jsx)(j.Input,{id:"batch-merge-source-branch",value:G.sourceBranch,onChange:a=>a1("sourceBranch",a.target.value),placeholder:"例如: release/candidate"})]})]})]}),(I.isRunning||I.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",I.completedProjects,"/",I.totalProjects,I.currentProject?` \xb7 当前项目: ${I.currentProject}`:""]}),(0,d.jsxs)("span",{children:[I.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${I.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===I.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:I.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===I.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:I.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量新建分支"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>a8(!1),disabled:M.isRunning,children:M.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>a8(!0),disabled:M.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-create-branch-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-create-branch-projects",multiple:!0,value:K.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);L(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsxs)("div",{className:"grid gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-create-branch-name",children:"新分支名称"}),(0,d.jsx)(j.Input,{id:"batch-create-branch-name",value:K.createBranch,onChange:a=>a2("createBranch",a.target.value),placeholder:"例如: release/2026-03"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-create-branch-base",children:"来源分支名称"}),(0,d.jsx)(j.Input,{id:"batch-create-branch-base",value:K.baseBranch,onChange:a=>a2("baseBranch",a.target.value),placeholder:"例如: main"})]})]})]}),(M.isRunning||M.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",M.completedProjects,"/",M.totalProjects,M.currentProject?` \xb7 当前项目: ${M.currentProject}`:""]}),(0,d.jsxs)("span",{children:[M.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${M.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===M.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:M.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===M.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:M.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量删除远端分支"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>a9(!1),disabled:Q.isRunning,children:Q.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>a9(!0),disabled:Q.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-delete-branch-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-delete-branch-projects",multiple:!0,value:O.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);P(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsx)("div",{className:"grid gap-4",children:(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-delete-branch-name",children:"远端分支名称"}),(0,d.jsx)(j.Input,{id:"batch-delete-branch-name",value:O.branchName,onChange:a=>a3(a.target.value),placeholder:"例如: release/2026-03"})]})})]}),(Q.isRunning||Q.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",Q.completedProjects,"/",Q.totalProjects,Q.currentProject?` \xb7 当前项目: ${Q.currentProject}`:""]}),(0,d.jsxs)("span",{children:[Q.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${Q.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===Q.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:Q.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===Q.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:Q.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),aE&&(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量探测远端分支"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>ba(!1),disabled:U.isRunning,children:U.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>ba(!0),disabled:U.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-probe-branch-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-probe-branch-projects",multiple:!0,value:S.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);T(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,d.jsx)("div",{className:"grid gap-4",children:(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-probe-branch-name",children:"远端分支名称"}),(0,d.jsx)(j.Input,{id:"batch-probe-branch-name",value:S.branchName,onChange:a=>a4(a.target.value),placeholder:"例如: release/2026-03"})]})})]}),(U.isRunning||U.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",U.completedProjects,"/",U.totalProjects,U.currentProject?` \xb7 当前项目: ${U.currentProject}`:""]}),(0,d.jsxs)("span",{children:[U.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${U.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===U.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:U.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===U.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:U.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量切换分支"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>bb(!1),disabled:Y.isRunning,children:Y.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>bb(!0),disabled:Y.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-switch-branch-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-switch-branch-projects",multiple:!0,value:W.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);X(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选;未选择时下拉聚合所有项目公共分支"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-switch-branch-name",children:"目标分支"}),(0,d.jsxs)(l.DropdownMenu,{open:ae,onOpenChange:a=>{af(a),a&&(ah(""),a6())},children:[(0,d.jsx)(l.DropdownMenuTrigger,{asChild:!0,children:(0,d.jsxs)(g.Button,{variant:"outline",className:"w-full justify-between font-normal",children:[(0,d.jsx)("span",{className:"truncate",children:W.branchName||(aa?"加载中...":"点击选择目标分支")}),(0,d.jsx)(n.ChevronDownIcon,{className:"size-4 opacity-50 shrink-0"})]})}),(0,d.jsxs)(l.DropdownMenuContent,{align:"start",className:"w-72",children:[(0,d.jsx)("div",{className:"p-1",children:(0,d.jsx)(j.Input,{value:ag,onChange:a=>ah(a.target.value),placeholder:"搜索分支...",className:"h-8"})}),(0,d.jsx)(l.DropdownMenuSeparator,{}),aa&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 px-3 py-4 text-sm text-gray-500",children:[(0,d.jsx)("span",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),"聚合获取各项目公共分支中..."]}),!aa&&ac&&(0,d.jsxs)("div",{className:"px-3 py-3 text-sm",children:[(0,d.jsx)("p",{className:"text-red-600",children:ac}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:a6,className:"mt-2 h-7 px-2 text-xs",children:"重试"})]}),!aa&&!ac&&(0,d.jsx)(d.Fragment,{children:0===$.length?(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"暂无可用的公共分支"}):0===bl.total?(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"没有匹配的分支"}):(0,d.jsxs)(d.Fragment,{children:[bl.visible.map(a=>(0,d.jsxs)(l.DropdownMenuItem,{className:"flex items-center justify-between",onSelect:b=>{b.preventDefault(),a5(a)},children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a}),a===W.branchName&&(0,d.jsx)(m.CheckIcon,{className:"size-4 text-blue-600 shrink-0"})]},a)),bl.total>bl.visible.length&&(0,d.jsxs)("div",{className:"px-3 py-2 text-xs text-gray-400 border-t",children:["共 ",bl.total," 个匹配分支,仅展示前 ",bl.visible.length," 项,更多请使用上方搜索"]})]})})]})]}),W.branchName&&(0,d.jsxs)("p",{className:"text-xs text-gray-500",children:["目标分支: ",(0,d.jsx)("span",{className:"text-blue-600 font-medium",children:W.branchName})]})]})]}),(Y.isRunning||Y.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",Y.completedProjects,"/",Y.totalProjects,Y.currentProject?` \xb7 当前项目: ${Y.currentProject}`:""]}),(0,d.jsxs)("span",{children:[Y.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${Y.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===Y.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:Y.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===Y.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:Y.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),(0,d.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量切换子仓库(submodules/common)分支"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>bf(!1),disabled:ao.isRunning,children:ao.isRunning?"执行中...":"执行"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>bf(!0),disabled:ao.isRunning,children:"DRY RUN"})]})]}),(0,d.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-switch-sub-projects",children:"选择项目"}),(0,d.jsx)("select",{id:"batch-switch-sub-projects",multiple:!0,value:am.selectedProjects,onChange:a=>{let b=Array.from(a.target.selectedOptions).map(a=>a.value);an(a=>({...a,selectedProjects:b}))},className:"w-full min-h-[140px] rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:0===Object.keys(b.projects).length?(0,d.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(b.projects).map(a=>(0,d.jsx)("option",{value:a,children:a},a))}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选;未选择时下拉聚合所有项目子仓库公共分支"})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"batch-switch-sub-name",children:"目标分支"}),(0,d.jsxs)(l.DropdownMenu,{open:aw,onOpenChange:a=>{ax(a),a&&(az(""),be())},children:[(0,d.jsx)(l.DropdownMenuTrigger,{asChild:!0,children:(0,d.jsxs)(g.Button,{variant:"outline",className:"w-full justify-between font-normal",children:[(0,d.jsx)("span",{className:"truncate",children:am.branchName||(as?"加载中...":"点击选择目标分支")}),(0,d.jsx)(n.ChevronDownIcon,{className:"size-4 opacity-50 shrink-0"})]})}),(0,d.jsxs)(l.DropdownMenuContent,{align:"start",className:"w-72",children:[(0,d.jsx)("div",{className:"p-1",children:(0,d.jsx)(j.Input,{value:ay,onChange:a=>az(a.target.value),placeholder:"搜索分支...",className:"h-8"})}),(0,d.jsx)(l.DropdownMenuSeparator,{}),as&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 px-3 py-4 text-sm text-gray-500",children:[(0,d.jsx)("span",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),"聚合获取各项目子仓库公共分支中..."]}),!as&&au&&(0,d.jsxs)("div",{className:"px-3 py-3 text-sm",children:[(0,d.jsx)("p",{className:"text-red-600",children:au}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:be,className:"mt-2 h-7 px-2 text-xs",children:"重试"})]}),!as&&!au&&(0,d.jsx)(d.Fragment,{children:0===aq.length?(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"暂无可用的公共子仓库分支"}):0===bm.total?(0,d.jsx)("div",{className:"px-3 py-4 text-sm text-gray-500",children:"没有匹配的分支"}):(0,d.jsxs)(d.Fragment,{children:[bm.visible.map(a=>(0,d.jsxs)(l.DropdownMenuItem,{className:"flex items-center justify-between",onSelect:b=>{b.preventDefault(),bd(a)},children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a}),a===am.branchName&&(0,d.jsx)(m.CheckIcon,{className:"size-4 text-blue-600 shrink-0"})]},a)),bm.total>bm.visible.length&&(0,d.jsxs)("div",{className:"px-3 py-2 text-xs text-gray-400 border-t",children:["共 ",bm.total," 个匹配分支,仅展示前 ",bm.visible.length," 项,更多请使用上方搜索"]})]})})]})]}),am.branchName&&(0,d.jsxs)("p",{className:"text-xs text-gray-500",children:["目标分支: ",(0,d.jsx)("span",{className:"text-blue-600 font-medium",children:am.branchName})]})]})]}),(ao.isRunning||ao.progress>0)&&(0,d.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,d.jsxs)("span",{children:["进度: ",ao.completedProjects,"/",ao.totalProjects,ao.currentProject?` \xb7 当前项目: ${ao.currentProject}`:""]}),(0,d.jsxs)("span",{children:[ao.progress,"%"]})]}),(0,d.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,d.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${ao.progress}%`}})})]}),(0,d.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===ao.operationLogs.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,d.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:ao.operationLogs.map((a,b)=>(0,d.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:a},b))})]}),(0,d.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===ao.feedbacks.length?(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,d.jsx)("div",{className:"space-y-1 text-sm",children:ao.feedbacks.map((a,b)=>(0,d.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:a},b))})]})]})]}),(0,d.jsx)(o.Dialog,{open:!1,onOpenChange:a=>{!a&&aG&&A.isRunning||aJ(a)},children:(0,d.jsxs)(o.DialogContent,{showCloseButton:!1,children:[(0,d.jsxs)(o.DialogHeader,{children:[(0,d.jsx)(o.DialogTitle,{children:"确认执行下一步"}),(0,d.jsx)(o.DialogDescription,{children:aG?`${aG.projectName} \xb7 ${aG.description}`:"准备下一步执行"})]}),(0,d.jsx)("div",{className:"rounded-md border bg-gray-50 p-3 text-sm font-mono text-gray-700",children:aG?aG.command:""}),(0,d.jsxs)(o.DialogFooter,{children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:bj,children:"取消执行"}),(0,d.jsx)(g.Button,{onClick:bi,disabled:!aG,children:"确认并执行"})]})]})}),(0,d.jsx)(o.Dialog,{open:aE&&aK,onOpenChange:aL,children:(0,d.jsxs)(o.DialogContent,{children:[(0,d.jsxs)(o.DialogHeader,{children:[(0,d.jsx)(o.DialogTitle,{children:"操作结果"}),(0,d.jsx)(o.DialogDescription,{children:"查看所有项目执行结果"})]}),(0,d.jsx)("div",{className:"space-y-2",children:0===aM.length?(0,d.jsx)("p",{className:"text-sm text-gray-500",children:"暂无结果"}):aM.map(a=>(0,d.jsxs)("div",{className:`rounded-md border px-3 py-2 text-sm ${a.success?"bg-green-50 text-green-700":"bg-red-50 text-red-700"}`,children:[(0,d.jsxs)("div",{className:"flex items-start justify-between",children:[(0,d.jsx)("span",{className:"font-medium",children:a.projectName}),(0,d.jsx)("span",{className:"ml-4 text-right",children:!0===a.exists||!1===a.exists?x(a):a.success?"成功":a.reason||"失败"})]}),!a.success&&a.rollbackActions&&a.rollbackActions.length>0&&(0,d.jsxs)("div",{className:"mt-2 text-xs text-gray-600",children:[(0,d.jsx)("div",{className:"font-semibold text-gray-700",children:"已回滚操作:"}),(0,d.jsx)("ul",{className:"mt-1 list-disc pl-4",children:a.rollbackActions.map((b,c)=>(0,d.jsx)("li",{children:b},`${a.projectName}-rollback-${c}`))})]})]},a.projectName))}),(0,d.jsx)(o.DialogFooter,{children:(0,d.jsx)(g.Button,{onClick:()=>aL(!1),children:"关闭"})})]})}),(0,d.jsx)(o.Dialog,{open:ak,onOpenChange:al,children:(0,d.jsxs)(o.DialogContent,{children:[(0,d.jsxs)(o.DialogHeader,{children:[(0,d.jsx)(o.DialogTitle,{children:"批量切换分支结果"}),(0,d.jsx)(o.DialogDescription,{children:(()=>{let a=ai.filter(a=>a.success).length,b=ai.length-a;return`共 ${ai.length} 个项目,成功 ${a} 个,失败 ${b} 个`})()})]}),(0,d.jsx)("div",{className:"space-y-2",children:0===ai.length?(0,d.jsx)("p",{className:"text-sm text-gray-500",children:"暂无结果"}):ai.map(a=>(0,d.jsx)("div",{className:`rounded-md border px-3 py-2 text-sm ${a.success?"bg-green-50 text-green-700":"bg-red-50 text-red-700"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between",children:[(0,d.jsx)("span",{className:"font-medium",children:a.projectName}),(0,d.jsx)("span",{className:"ml-4 text-right",children:a.success?"成功":a.reason||"失败"})]})},a.projectName))}),(0,d.jsx)(o.DialogFooter,{children:(0,d.jsx)(g.Button,{onClick:()=>al(!1),children:"关闭"})})]})}),(0,d.jsx)(o.Dialog,{open:aC,onOpenChange:aD,children:(0,d.jsxs)(o.DialogContent,{children:[(0,d.jsxs)(o.DialogHeader,{children:[(0,d.jsx)(o.DialogTitle,{children:"批量切换子仓库分支结果"}),(0,d.jsx)(o.DialogDescription,{children:(()=>{let a=aA.filter(a=>a.success).length,b=aA.length-a;return`共 ${aA.length} 个项目,成功 ${a} 个,失败 ${b} 个`})()})]}),(0,d.jsx)("div",{className:"space-y-2",children:0===aA.length?(0,d.jsx)("p",{className:"text-sm text-gray-500",children:"暂无结果"}):aA.map(a=>(0,d.jsx)("div",{className:`rounded-md border px-3 py-2 text-sm ${a.success?"bg-green-50 text-green-700":"bg-red-50 text-red-700"}`,children:(0,d.jsxs)("div",{className:"flex items-start justify-between",children:[(0,d.jsx)("span",{className:"font-medium",children:a.projectName}),(0,d.jsx)("span",{className:"ml-4 text-right",children:a.success?"成功":a.reason||"失败"})]})},a.projectName))}),(0,d.jsx)(o.DialogFooter,{children:(0,d.jsx)(g.Button,{onClick:()=>aD(!1),children:"关闭"})})]})})]})}}}};
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=packages_server_src_65e3de99._.js.map
|