prime-dev-cli 1.0.23 → 2.0.0

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.
Files changed (96) hide show
  1. package/dist/server/.next/BUILD_ID +1 -1
  2. package/dist/server/.next/app-build-manifest.json +2 -2
  3. package/dist/server/.next/build-manifest.json +2 -2
  4. package/dist/server/.next/cache/.rscinfo +1 -1
  5. package/dist/server/.next/cache/.tsbuildinfo +1 -1
  6. package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
  7. package/dist/server/.next/fallback-build-manifest.json +2 -2
  8. package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
  9. package/dist/server/.next/next-server.js.nft.json +1 -1
  10. package/dist/server/.next/prerender-manifest.json +3 -3
  11. package/dist/server/.next/server/app/_not-found.html +1 -1
  12. package/dist/server/.next/server/app/_not-found.rsc +1 -1
  13. package/dist/server/.next/server/app/api/admin-git-batch-create-branch/route.js.nft.json +1 -1
  14. package/dist/server/.next/server/app/api/admin-git-batch-delete-branch/route.js.nft.json +1 -1
  15. package/dist/server/.next/server/app/api/admin-git-batch-merge/route.js.nft.json +1 -1
  16. package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
  17. package/dist/server/.next/server/app/api/gwh-git-flow/route.js.nft.json +1 -1
  18. package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
  19. package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
  20. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
  21. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
  22. package/dist/server/.next/server/app/api/open-project/route.js.nft.json +1 -1
  23. package/dist/server/.next/server/app/api/project-config/route.js +1 -1
  24. package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
  25. package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
  26. package/dist/server/.next/server/app/api/uat-git-flow/route.js.nft.json +1 -1
  27. package/dist/server/.next/server/app/api/uat-git-flow/step/route.js.nft.json +1 -1
  28. package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +1 -1
  29. package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
  30. package/dist/server/.next/server/app/configuration.html +1 -1
  31. package/dist/server/.next/server/app/configuration.rsc +2 -2
  32. package/dist/server/.next/server/app/index.html +1 -1
  33. package/dist/server/.next/server/app/index.rsc +1 -1
  34. package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +1 -1
  35. package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
  36. package/dist/server/.next/server/app/initialization.html +1 -1
  37. package/dist/server/.next/server/app/initialization.rsc +2 -2
  38. package/dist/server/.next/server/chunks/[root-of-the-server]__0879b2d6._.js.map +1 -1
  39. package/dist/server/.next/server/chunks/[root-of-the-server]__0d56f35b._.js.map +1 -1
  40. package/dist/server/.next/server/chunks/[root-of-the-server]__0e8a08fc._.js.map +1 -1
  41. package/dist/server/.next/server/chunks/[root-of-the-server]__1e792460._.js.map +1 -1
  42. package/dist/server/.next/server/chunks/[root-of-the-server]__2a29597f._.js.map +1 -1
  43. package/dist/server/.next/server/chunks/[root-of-the-server]__2a78acef._.js.map +1 -1
  44. package/dist/server/.next/server/chunks/[root-of-the-server]__2f8b52da._.js.map +1 -1
  45. package/dist/server/.next/server/chunks/[root-of-the-server]__2ffbf0d3._.js +1 -1
  46. package/dist/server/.next/server/chunks/[root-of-the-server]__2ffbf0d3._.js.map +1 -1
  47. package/dist/server/.next/server/chunks/[root-of-the-server]__37bfbf6b._.js.map +1 -1
  48. package/dist/server/.next/server/chunks/[root-of-the-server]__452b5f9c._.js.map +1 -1
  49. package/dist/server/.next/server/chunks/[root-of-the-server]__4ec3205b._.js.map +1 -1
  50. package/dist/server/.next/server/chunks/[root-of-the-server]__4fd52ac1._.js.map +1 -1
  51. package/dist/server/.next/server/chunks/[root-of-the-server]__54f2f032._.js +3 -0
  52. package/dist/server/.next/server/chunks/[root-of-the-server]__54f2f032._.js.map +1 -0
  53. package/dist/server/.next/server/chunks/[root-of-the-server]__5c9f62f9._.js.map +1 -1
  54. package/dist/server/.next/server/chunks/[root-of-the-server]__66dc5e6b._.js.map +1 -1
  55. package/dist/server/.next/server/chunks/[root-of-the-server]__8637b7f1._.js.map +1 -1
  56. package/dist/server/.next/server/chunks/[root-of-the-server]__8a8561ea._.js.map +1 -1
  57. package/dist/server/.next/server/chunks/[root-of-the-server]__9e44bbc8._.js +20 -0
  58. package/dist/server/.next/server/chunks/[root-of-the-server]__9e44bbc8._.js.map +1 -0
  59. package/dist/server/.next/server/chunks/[root-of-the-server]__9f7a6c58._.js.map +1 -1
  60. package/dist/server/.next/server/chunks/[root-of-the-server]__a6fbefc6._.js.map +1 -1
  61. package/dist/server/.next/server/chunks/[root-of-the-server]__ac6efee1._.js.map +1 -1
  62. package/dist/server/.next/server/chunks/[root-of-the-server]__c18498ef._.js.map +1 -1
  63. package/dist/server/.next/server/chunks/[root-of-the-server]__c43cf810._.js +5 -0
  64. package/dist/server/.next/server/chunks/[root-of-the-server]__c43cf810._.js.map +1 -0
  65. package/dist/server/.next/server/chunks/[root-of-the-server]__dda45cac._.js.map +1 -1
  66. package/dist/server/.next/server/chunks/[root-of-the-server]__de18efbd._.js.map +1 -1
  67. package/dist/server/.next/server/chunks/[root-of-the-server]__e0b7050d._.js.map +1 -1
  68. package/dist/server/.next/server/chunks/[root-of-the-server]__ec681197._.js.map +1 -1
  69. package/dist/server/.next/server/chunks/[root-of-the-server]__f111df8e._.js.map +1 -1
  70. package/dist/server/.next/server/chunks/ssr/_5579d68f._.js +2 -2
  71. package/dist/server/.next/server/chunks/ssr/_5579d68f._.js.map +1 -1
  72. package/dist/server/.next/server/chunks/ssr/_b0947ff2._.js +1 -1
  73. package/dist/server/.next/server/chunks/ssr/_b0947ff2._.js.map +1 -1
  74. package/dist/server/.next/server/chunks/ssr/packages_server_src_7cef6dbd._.js.map +1 -1
  75. package/dist/server/.next/server/pages/404.html +1 -1
  76. package/dist/server/.next/server/pages/500.html +1 -1
  77. package/dist/server/.next/server/server-reference-manifest.js +1 -1
  78. package/dist/server/.next/server/server-reference-manifest.json +1 -1
  79. package/dist/server/.next/static/chunks/{13acbe5989647429.js → 2d9a99312c08fbf9.js} +1 -1
  80. package/dist/server/.next/static/chunks/51208386dbc1874e.js.map +1 -0
  81. package/dist/server/.next/static/chunks/8c850efc5ffddd02.js +57 -0
  82. package/dist/server/.next/static/chunks/f36be6bae8f3723b.js.map +1 -0
  83. package/dist/server/.next/trace +2 -2
  84. package/package.json +1 -1
  85. package/dist/server/.next/server/chunks/[root-of-the-server]__a74239fc._.js +0 -3
  86. package/dist/server/.next/server/chunks/[root-of-the-server]__a74239fc._.js.map +0 -1
  87. package/dist/server/.next/server/chunks/[root-of-the-server]__aaa3fe74._.js +0 -5
  88. package/dist/server/.next/server/chunks/[root-of-the-server]__aaa3fe74._.js.map +0 -1
  89. package/dist/server/.next/server/chunks/[root-of-the-server]__b176e8df._.js +0 -20
  90. package/dist/server/.next/server/chunks/[root-of-the-server]__b176e8df._.js.map +0 -1
  91. package/dist/server/.next/static/chunks/205cbae70a6c50e1.js.map +0 -1
  92. package/dist/server/.next/static/chunks/2d2322acba49236a.js +0 -57
  93. package/dist/server/.next/static/chunks/f5014a46b22ea191.js.map +0 -1
  94. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_buildManifest.js +0 -0
  95. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_clientMiddlewareManifest.json +0 -0
  96. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/861aac2fba8d4e28.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1923d6510bea25be.js"/><script src="/_next/static/chunks/0e57f1354cda05d5.js" async=""></script><script src="/_next/static/chunks/e5e4fd3e83ab66f8.js" async=""></script><script src="/_next/static/chunks/c4c1da381d908575.js" async=""></script><script src="/_next/static/chunks/ecfccf4677b4777a.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Prime Dev CLI - 项目管理工具</title><meta name="description" content="管理多个前端项目的开发环境和配置"/><link rel="icon" href="/favicon.ico?favicon.45db1c09.ico" sizes="256x256" type="image/x-icon"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/ec548c7ce307cf6d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1923d6510bea25be.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[55889,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n3:I[54799,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n4:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"OutletBoundary\"]\n7:I[73794,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"AsyncMetadataOutlet\"]\n9:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"ViewportBoundary\"]\nb:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"MetadataBoundary\"]\nd:I[71163,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n:HL[\"/_next/static/chunks/861aac2fba8d4e28.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"FFQIKXlgcLTQYLDJOFtvJ\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/861aac2fba8d4e28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$L5\",\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"wefAARQMs8KGK4zs0DPD9v\",{\"children\":[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:\"$Sreact.suspense\"\nf:I[73794,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"AsyncMetadata\"]\nc:[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":[\"$\",\"$Lf\",null,{\"promise\":\"$@10\"}]}]}]\n6:null\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n5:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Prime Dev CLI - 项目管理工具\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"管理多个前端项目的开发环境和配置\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.45db1c09.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}]],\"error\":null,\"digest\":\"$undefined\"}\n10:{\"metadata\":\"$8:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/861aac2fba8d4e28.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1923d6510bea25be.js"/><script src="/_next/static/chunks/0e57f1354cda05d5.js" async=""></script><script src="/_next/static/chunks/e5e4fd3e83ab66f8.js" async=""></script><script src="/_next/static/chunks/c4c1da381d908575.js" async=""></script><script src="/_next/static/chunks/ecfccf4677b4777a.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Prime Dev CLI - 项目管理工具</title><meta name="description" content="管理多个前端项目的开发环境和配置"/><link rel="icon" href="/favicon.ico?favicon.45db1c09.ico" sizes="256x256" type="image/x-icon"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/ec548c7ce307cf6d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1923d6510bea25be.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[55889,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n3:I[54799,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n4:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"OutletBoundary\"]\n7:I[73794,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"AsyncMetadataOutlet\"]\n9:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"ViewportBoundary\"]\nb:I[67903,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"MetadataBoundary\"]\nd:I[71163,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"default\"]\n:HL[\"/_next/static/chunks/861aac2fba8d4e28.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"4KbwlsFdd1vqSOg9Nuj9R\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/861aac2fba8d4e28.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$L5\",\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"8a4q3HjxlnkwMMmHLgteFv\",{\"children\":[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:\"$Sreact.suspense\"\nf:I[73794,[\"/_next/static/chunks/ecfccf4677b4777a.js\"],\"AsyncMetadata\"]\nc:[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$e\",null,{\"fallback\":null,\"children\":[\"$\",\"$Lf\",null,{\"promise\":\"$@10\"}]}]}]\n6:null\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n5:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Prime Dev CLI - 项目管理工具\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"管理多个前端项目的开发环境和配置\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.45db1c09.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}]],\"error\":null,\"digest\":\"$undefined\"}\n10:{\"metadata\":\"$8:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/ec548c7ce307cf6d.js"></script><script src="/_next/static/chunks/7d7379cdf8fe9ec5.js" defer=""></script><script src="/_next/static/chunks/6803a56f8e33c487.js" defer=""></script><script src="/_next/static/chunks/8f80ca1e88635b12.js" defer=""></script><script src="/_next/static/chunks/cf6e515377591a1f.js" defer=""></script><script src="/_next/static/chunks/0a55e0a2ff3b09e0.js" defer=""></script><script src="/_next/static/FFQIKXlgcLTQYLDJOFtvJ/_ssgManifest.js" defer=""></script><script src="/_next/static/FFQIKXlgcLTQYLDJOFtvJ/_buildManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"FFQIKXlgcLTQYLDJOFtvJ","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/ec548c7ce307cf6d.js"></script><script src="/_next/static/chunks/7d7379cdf8fe9ec5.js" defer=""></script><script src="/_next/static/chunks/6803a56f8e33c487.js" defer=""></script><script src="/_next/static/chunks/8f80ca1e88635b12.js" defer=""></script><script src="/_next/static/chunks/cf6e515377591a1f.js" defer=""></script><script src="/_next/static/chunks/0a55e0a2ff3b09e0.js" defer=""></script><script src="/_next/static/4KbwlsFdd1vqSOg9Nuj9R/_ssgManifest.js" defer=""></script><script src="/_next/static/4KbwlsFdd1vqSOg9Nuj9R/_buildManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"4KbwlsFdd1vqSOg9Nuj9R","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"tp7JsWj8BHKWC6P+Xu/JDQGYDGw9TqzTgN/jZFjJ4sM=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"C5Iv2IC+1G6Dm97a1iyR5STiX/nXWqOljckjiL2ioaY=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "tp7JsWj8BHKWC6P+Xu/JDQGYDGw9TqzTgN/jZFjJ4sM="
4
+ "encryptionKey": "C5Iv2IC+1G6Dm97a1iyR5STiX/nXWqOljckjiL2ioaY="
5
5
  }
@@ -1,3 +1,3 @@
1
1
  (globalThis.TURBOPACK=globalThis.TURBOPACK||[]).push(["object"==typeof document?document.currentScript:void 0,{86442:function(e){var s,{g:r,__dirname:t,m:a,e:n}=e;"undefined"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab=t+"/"),(s={}).endianness=function(){return"LE"},s.hostname=function(){return"undefined"!=typeof location?location.hostname:""},s.loadavg=function(){return[]},s.uptime=function(){return 0},s.freemem=function(){return Number.MAX_VALUE},s.totalmem=function(){return Number.MAX_VALUE},s.cpus=function(){return[]},s.type=function(){return"Browser"},s.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},s.networkInterfaces=s.getNetworkInterfaces=function(){return{}},s.arch=function(){return"javascript"},s.platform=function(){return"browser"},s.tmpdir=s.tmpDir=function(){return"/tmp"},s.EOL="\n",s.homedir=function(){return"/"},a.exports=s},87733:function(e){var{g:s,__dirname:r,m:t,e:a}=e;!function(){"use strict";var e={114:function(e){function s(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function r(e,s){for(var r,t="",a=0,n=-1,o=0,c=0;c<=e.length;++c){if(c<e.length)r=e.charCodeAt(c);else if(47===r)break;else r=47;if(47===r){if(n===c-1||1===o);else if(n!==c-1&&2===o){if(t.length<2||2!==a||46!==t.charCodeAt(t.length-1)||46!==t.charCodeAt(t.length-2)){if(t.length>2){var i=t.lastIndexOf("/");if(i!==t.length-1){-1===i?(t="",a=0):a=(t=t.slice(0,i)).length-1-t.lastIndexOf("/"),n=c,o=0;continue}}else if(2===t.length||1===t.length){t="",a=0,n=c,o=0;continue}}s&&(t.length>0?t+="/..":t="..",a=2)}else t.length>0?t+="/"+e.slice(n+1,c):t=e.slice(n+1,c),a=c-n-1;n=c,o=0}else 46===r&&-1!==o?++o:o=-1}return t}var t={resolve:function(){for(var e,t,a="",n=!1,o=arguments.length-1;o>=-1&&!n;o--)o>=0?t=arguments[o]:(void 0===e&&(e=""),t=e),s(t),0!==t.length&&(a=t+"/"+a,n=47===t.charCodeAt(0));if(a=r(a,!n),n)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(s(e),0===e.length)return".";var t=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=r(e,!t)).length||t||(e="."),e.length>0&&a&&(e+="/"),t)?"/"+e:e},isAbsolute:function(e){return s(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,r=0;r<arguments.length;++r){var a=arguments[r];s(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":t.normalize(e)},relative:function(e,r){if(s(e),s(r),e===r||(e=t.resolve(e))===(r=t.resolve(r)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var n=e.length,o=n-a,c=1;c<r.length&&47===r.charCodeAt(c);++c);for(var i=r.length-c,l=o<i?o:i,d=-1,g=0;g<=l;++g){if(g===l){if(i>l){if(47===r.charCodeAt(c+g))return r.slice(c+g+1);else if(0===g)return r.slice(c+g)}else o>l&&(47===e.charCodeAt(a+g)?d=g:0===g&&(d=0));break}var p=e.charCodeAt(a+g);if(p!==r.charCodeAt(c+g))break;47===p&&(d=g)}var h="";for(g=a+d+1;g<=n;++g)(g===n||47===e.charCodeAt(g))&&(0===h.length?h+="..":h+="/..");return h.length>0?h+r.slice(c+d):(c+=d,47===r.charCodeAt(c)&&++c,r.slice(c))},_makeLong:function(e){return e},dirname:function(e){if(s(e),0===e.length)return".";for(var r=e.charCodeAt(0),t=47===r,a=-1,n=!0,o=e.length-1;o>=1;--o)if(47===(r=e.charCodeAt(o))){if(!n){a=o;break}}else n=!1;return -1===a?t?"/":".":t&&1===a?"//":e.slice(0,a)},basename:function(e,r){if(void 0!==r&&"string"!=typeof r)throw TypeError('"ext" argument must be a string');s(e);var t,a=0,n=-1,o=!0;if(void 0!==r&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var c=r.length-1,i=-1;for(t=e.length-1;t>=0;--t){var l=e.charCodeAt(t);if(47===l){if(!o){a=t+1;break}}else -1===i&&(o=!1,i=t+1),c>=0&&(l===r.charCodeAt(c)?-1==--c&&(n=t):(c=-1,n=i))}return a===n?n=i:-1===n&&(n=e.length),e.slice(a,n)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){a=t+1;break}}else -1===n&&(o=!1,n=t+1);return -1===n?"":e.slice(a,n)},extname:function(e){s(e);for(var r=-1,t=0,a=-1,n=!0,o=0,c=e.length-1;c>=0;--c){var i=e.charCodeAt(c);if(47===i){if(!n){t=c+1;break}continue}-1===a&&(n=!1,a=c+1),46===i?-1===r?r=c:1!==o&&(o=1):-1!==r&&(o=-1)}return -1===r||-1===a||0===o||1===o&&r===a-1&&r===t+1?"":e.slice(r,a)},format:function(e){var s,r;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return s=e.dir||e.root,r=e.base||(e.name||"")+(e.ext||""),s?s===e.root?s+r:s+"/"+r:r},parse:function(e){s(e);var r,t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var a=e.charCodeAt(0),n=47===a;n?(t.root="/",r=1):r=0;for(var o=-1,c=0,i=-1,l=!0,d=e.length-1,g=0;d>=r;--d){if(47===(a=e.charCodeAt(d))){if(!l){c=d+1;break}continue}-1===i&&(l=!1,i=d+1),46===a?-1===o?o=d:1!==g&&(g=1):-1!==o&&(g=-1)}return -1===o||-1===i||0===g||1===g&&o===i-1&&o===c+1?-1!==i&&(0===c&&n?t.base=t.name=e.slice(1,i):t.base=t.name=e.slice(c,i)):(0===c&&n?(t.name=e.slice(1,o),t.base=e.slice(1,i)):(t.name=e.slice(c,o),t.base=e.slice(c,i)),t.ext=e.slice(o,i)),c>0?t.dir=e.slice(0,c-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};t.posix=t,e.exports=t}},s={};function a(r){var t=s[r];if(void 0!==t)return t.exports;var n=s[r]={exports:{}},o=!0;try{e[r](n,n.exports,a),o=!1}finally{o&&delete s[r]}return n.exports}a.ab=r+"/",t.exports=a(114)}()},7647:e=>{"use strict";var{g:s,__dirname:r}=e;{e.s({PROJECT_CONFIG_PATH:()=>r,ProjectStatus:()=>n,WORKSPACE_CONFIG:()=>s});var t=e.i(86442),a=e.i(87733);let s={WORKSPACE_ROOT:(0,a.join)((0,t.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,t.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},r=(0,a.join)((0,t.homedir)(),".prime-projects.json");var n=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9993:e=>{"use strict";var{g:s,__dirname:r}=e;{e.s({default:()=>s});var t=e.i(20393),a=e.i(19886),n=e.i(42152),o=e.i(86871),c=e.i(75777),i=e.i(70599),l=e.i(80226),d=e.i(19579),g=e.i(7647);let s=()=>{let e=(0,n.useRouter)(),[s,r]=(0,a.useState)({isInitializing:!1,isCompleted:!1,isLoading:!0,hasCompleted:!1,globalProgress:0,globalMessage:"正在检查工作空间状态...",projects:{}}),[p,h]=(0,a.useState)({selectedProjects:[],createBranch:"release/",baseBranch:"main",mergeBranch:"feature/"}),[m,u]=(0,a.useState)({isRunning:!1,operationLogs:[],feedbacks:[],runId:""}),[j,x]=(0,a.useState)({selectedProjects:[],createBranch:"release/",baseBranch:"GWH",mergeBranch:"feature/"}),[b,f]=(0,a.useState)({isRunning:!1,operationLogs:[],feedbacks:[],runId:""}),[y,v]=(0,a.useState)({selectedProjects:[],targetBranch:"main",sourceBranch:""}),[N,P]=(0,a.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[w,C]=(0,a.useState)({selectedProjects:[],createBranch:"",baseBranch:"main"}),[k,S]=(0,a.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[L,R]=(0,a.useState)({selectedProjects:[],branchName:""}),[A,I]=(0,a.useState)({isRunning:!1,operationLogs:[],feedbacks:[],progress:0,totalProjects:0,completedProjects:0,currentProject:""}),[B,O]=(0,a.useState)(!1),[E,T]=(0,a.useState)(null),[$,D]=(0,a.useState)(!1),[G,M]=(0,a.useState)(!1),[_,U]=(0,a.useState)([]),[F,z]=(0,a.useState)({});(0,a.useEffect)(()=>{J()},[]),(0,a.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/admin-status"),s=await e.json();O(!!s?.isAdmin)}catch(e){console.error("获取管理员状态失败:",e),O(!1)}})()},[]);let J=async()=>{try{r(e=>({...e,isLoading:!0,globalMessage:"正在检查工作空间状态..."}));let e=await fetch("/api/check-workspace"),s=await e.json();if(s.success){let e={};s.projects.forEach(s=>{e[s.name]={name:s.name,status:s.status,progress:100*(s.status===g.ProjectStatus.EXISTING),message:s.message,canRetry:!1,needsCleanup:s.needsCleanup||!1}}),r(r=>({...r,isLoading:!1,projects:e,globalMessage:s.message||"检查完成"}))}else r(e=>({...e,isLoading:!1,globalMessage:s.error||"检查工作空间状态失败"}))}catch(e){r(e=>({...e,isLoading:!1,globalMessage:"无法连接到服务器,请刷新页面重试"})),console.error("检查工作空间状态失败:",e)}},X=e=>{switch(e.type){case"initialization":case"workspace_created":case"projects_loaded":if(r(s=>({...s,globalProgress:e.progress||0,globalMessage:e.message||""})),e.projects&&Array.isArray(e.projects)){let s={};e.projects.forEach(e=>{s[e]={name:e,status:g.ProjectStatus.PENDING,progress:0,message:"等待开始...",canRetry:!1}}),r(e=>({...e,projects:s}))}break;case"project_existing":if(e.projectName){let s=e.projectName;r(r=>({...r,globalProgress:e.progress??r.globalProgress,globalMessage:e.message??"",projects:{...r.projects,[s]:{...r.projects[s],status:g.ProjectStatus.EXISTING,message:"项目已存在",progress:100,canRetry:!1}}}))}break;case"project_start":if(e.projectName){let s=e.projectName;r(r=>({...r,globalProgress:e.progress??r.globalProgress,globalMessage:e.message??"",projects:{...r.projects,[s]:{...r.projects[s],status:g.ProjectStatus.CLONING,message:"开始克隆...",progress:0}}}))}break;case"project_progress":if(e.projectName){let s=e.projectName;r(r=>({...r,globalProgress:e.progress??r.globalProgress,projects:{...r.projects,[s]:{...r.projects[s],message:e.message??"",progress:Math.min(e.progress??0,100)}}}))}break;case"project_success":if(e.projectName){let s=e.projectName;r(r=>({...r,globalProgress:e.progress??r.globalProgress,projects:{...r.projects,[s]:{...r.projects[s],status:g.ProjectStatus.SUCCESS,message:"克隆成功",progress:100,canRetry:!1}}}))}break;case"project_failed":if(e.projectName){let s=e.projectName;r(r=>({...r,globalProgress:e.progress??r.globalProgress,projects:{...r.projects,[s]:{...r.projects[s],status:g.ProjectStatus.FAILED,message:"克隆失败",error:e.error,canRetry:!0}}}))}break;case"command_log":if(e.projectName&&e.logType&&void 0!==e.content&&e.timestamp){let s=e.projectName,t=e.logType,a=e.content,n=e.timestamp;r(e=>({...e,projects:{...e.projects,[s]:{...e.projects[s],logs:[...e.projects[s]?.logs||[],{type:t,content:a,timestamp:n}].slice(-1e3)}}}))}break;case"completion":r(s=>({...s,isInitializing:!1,isCompleted:!0,hasCompleted:!0,globalProgress:100,globalMessage:e.message??"初始化完成",completionSummary:e.result?{success:e.result.success,totalProjects:e.result.totalProjects,successCount:e.result.successCount,failedCount:e.result.failedCount,duration:e.result.duration}:void 0}));break;case"error":r(s=>({...s,isInitializing:!1,hasCompleted:!0,globalMessage:e.message??"发生错误",globalProgress:e.progress??s.globalProgress}))}},Y=async(e,s="cursor")=>{r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isOpening:!0}}}));try{let t=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e,editor:s})}),a=await t.json();if(a.success&&a.editorUrl){let e=document.createElement("a");e.href=a.editorUrl,e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)}else console.error("打开项目失败:",a.error);r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isOpening:!1}}}))}catch(s){r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isOpening:!1}}})),console.error("打开项目失败:",s)}},H=async e=>{r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isCleaningUp:!0}}}));try{let s=await fetch("/api/cleanup-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await s.json();t.success?r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:g.ProjectStatus.PENDING,message:"已清理,待克隆",isCleaningUp:!1,needsCleanup:!1}}})):r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isCleaningUp:!1,error:t.error}}}))}catch(s){r(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isCleaningUp:!1,error:s instanceof Error?s.message:String(s)}}}))}},W=async e=>{r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:g.ProjectStatus.RETRYING,message:"正在重试...",progress:0,canRetry:!1}}}));try{let s=await fetch("/api/retry-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await s.json();r(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:t.success?g.ProjectStatus.SUCCESS:g.ProjectStatus.FAILED,message:t.message,error:t.error,progress:t.success?100:s.projects[e].progress,canRetry:!t.success}}}))}catch(s){r(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:g.ProjectStatus.FAILED,message:"重试失败",error:s instanceof Error?s.message:String(s),canRetry:!0}}}))}},K=e=>{switch(e){case g.ProjectStatus.EXISTING:case g.ProjectStatus.SUCCESS:return"text-green-600 bg-green-50 border-green-200";case g.ProjectStatus.FAILED:return"text-red-600 bg-red-50 border-red-200";case g.ProjectStatus.INCOMPLETE:return"text-orange-600 bg-orange-50 border-orange-200";case g.ProjectStatus.CLONING:case g.ProjectStatus.RETRYING:return"text-blue-600 bg-blue-50 border-blue-200";case g.ProjectStatus.PENDING:default:return"text-gray-600 bg-gray-50 border-gray-200"}},V=e=>{switch(e){case g.ProjectStatus.PENDING:return"待克隆";case g.ProjectStatus.EXISTING:return"已存在";case g.ProjectStatus.CLONING:return"克隆中";case g.ProjectStatus.SUCCESS:return"成功";case g.ProjectStatus.FAILED:return"失败";case g.ProjectStatus.INCOMPLETE:return"不完整";case g.ProjectStatus.RETRYING:return"重试中";default:return"未知"}},q=()=>{let e=Object.values(s.projects);return e.length>0&&e.every(e=>e.status===g.ProjectStatus.EXISTING)},Q=s=>{e.push(`/configuration?project=${encodeURIComponent(s)}`)},Z=(e,s)=>{h(r=>({...r,[e]:s}))},ee=(e,s)=>{x(r=>({...r,[e]:s}))},es=(e,s)=>{v(r=>({...r,[e]:s}))},er=(e,s)=>{C(r=>({...r,[e]:s}))},et=e=>{R(s=>({...s,branchName:e}))},ea=async e=>{let s=[];if(0===y.selectedProjects.length&&s.push("请先选择至少一个项目。"),y.targetBranch.trim()||s.push("请填写合入分支名称。"),y.sourceBranch.trim()||s.push("请填写被合入分支名称。"),s.length>0)return void P({isRunning:!1,operationLogs:[],feedbacks:s,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let r=y.selectedProjects.length;P({isRunning:!0,operationLogs:[`开始批量分支合并,共 ${r} 个项目...`],feedbacks:[],progress:0,totalProjects:r,completedProjects:0,currentProject:""});let t=[],a=[];for(let s=0;s<y.selectedProjects.length;s++){let n=y.selectedProjects[s];P(e=>({...e,currentProject:n,completedProjects:s,progress:Math.round(s/r*100),operationLogs:[...e.operationLogs,`[进度] ${s+1}/${r} 开始处理项目 ${n}`]}));try{let s=await fetch("/api/admin-git-batch-merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[n],targetBranch:y.targetBranch.trim(),sourceBranch:y.sourceBranch.trim(),dryRun:e})}),r=await s.json(),o=Array.isArray(r.operationLogs)?r.operationLogs:[],c=Array.isArray(r.feedbacks)?r.feedbacks:[r.error||"执行失败"];P(e=>({...e,operationLogs:[...e.operationLogs,...o],feedbacks:[...e.feedbacks,...c]})),a.push(...c),Array.isArray(r.projectResults)&&t.push(...r.projectResults)}catch(s){let e=s instanceof Error?s.message:"执行失败";P(s=>({...s,operationLogs:[...s.operationLogs,`[${n}] 请求失败: ${e}`],feedbacks:[...s.feedbacks,`[${n}] ${e}`]})),a.push(`[${n}] ${e}`),t.push({projectName:n,success:!1,reason:e})}}P(e=>({...e,isRunning:!1,progress:100,completedProjects:r,currentProject:"",operationLogs:[...e.operationLogs,"批量分支合并执行完成。"],feedbacks:a.length>0?a:e.feedbacks})),t.length>0?(U(t),M(!0)):(U([]),M(!1))},en=async e=>{let s=[];if(0===w.selectedProjects.length&&s.push("请先选择至少一个项目。"),w.createBranch.trim()||s.push("请填写新分支名称。"),w.baseBranch.trim()||s.push("请填写来源分支名称。"),s.length>0)return void S({isRunning:!1,operationLogs:[],feedbacks:s,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let r=w.selectedProjects.length;S({isRunning:!0,operationLogs:[`开始批量新建分支,共 ${r} 个项目...`],feedbacks:[],progress:0,totalProjects:r,completedProjects:0,currentProject:""});let t=[],a=[];for(let s=0;s<w.selectedProjects.length;s++){let n=w.selectedProjects[s];S(e=>({...e,currentProject:n,completedProjects:s,progress:Math.round(s/r*100),operationLogs:[...e.operationLogs,`[进度] ${s+1}/${r} 开始处理项目 ${n}`]}));try{let s=await fetch("/api/admin-git-batch-create-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[n],createBranch:w.createBranch.trim(),baseBranch:w.baseBranch.trim(),dryRun:e})}),r=await s.json(),o=Array.isArray(r.operationLogs)?r.operationLogs:[],c=Array.isArray(r.feedbacks)?r.feedbacks:[r.error||"执行失败"];S(e=>({...e,operationLogs:[...e.operationLogs,...o],feedbacks:[...e.feedbacks,...c]})),a.push(...c),Array.isArray(r.projectResults)&&t.push(...r.projectResults)}catch(s){let e=s instanceof Error?s.message:"执行失败";S(s=>({...s,operationLogs:[...s.operationLogs,`[${n}] 请求失败: ${e}`],feedbacks:[...s.feedbacks,`[${n}] ${e}`]})),a.push(`[${n}] ${e}`),t.push({projectName:n,success:!1,reason:e})}}S(e=>({...e,isRunning:!1,progress:100,completedProjects:r,currentProject:"",operationLogs:[...e.operationLogs,"批量新建分支执行完成。"],feedbacks:a.length>0?a:e.feedbacks})),t.length>0?(U(t),M(!0)):(U([]),M(!1))},eo=async e=>{let s=[];if(0===L.selectedProjects.length&&s.push("请先选择至少一个项目。"),L.branchName.trim()||s.push("请填写远端分支名称。"),s.length>0)return void I({isRunning:!1,operationLogs:[],feedbacks:s,progress:0,totalProjects:0,completedProjects:0,currentProject:""});let r=L.selectedProjects.length;I({isRunning:!0,operationLogs:[`开始批量删除远端分支,共 ${r} 个项目...`],feedbacks:[],progress:0,totalProjects:r,completedProjects:0,currentProject:""});let t=[],a=[];for(let s=0;s<L.selectedProjects.length;s++){let n=L.selectedProjects[s];I(e=>({...e,currentProject:n,completedProjects:s,progress:Math.round(s/r*100),operationLogs:[...e.operationLogs,`[进度] ${s+1}/${r} 开始处理项目 ${n}`]}));try{let s=await fetch("/api/admin-git-batch-delete-branch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:[n],branchName:L.branchName.trim(),dryRun:e})}),r=await s.json(),o=Array.isArray(r.operationLogs)?r.operationLogs:[],c=Array.isArray(r.feedbacks)?r.feedbacks:[r.error||"执行失败"];I(e=>({...e,operationLogs:[...e.operationLogs,...o],feedbacks:[...e.feedbacks,...c]})),a.push(...c),Array.isArray(r.projectResults)&&t.push(...r.projectResults)}catch(s){let e=s instanceof Error?s.message:"执行失败";I(s=>({...s,operationLogs:[...s.operationLogs,`[${n}] 请求失败: ${e}`],feedbacks:[...s.feedbacks,`[${n}] ${e}`]})),a.push(`[${n}] ${e}`),t.push({projectName:n,success:!1,reason:e})}}I(e=>({...e,isRunning:!1,progress:100,completedProjects:r,currentProject:"",operationLogs:[...e.operationLogs,"批量删除远端分支执行完成。"],feedbacks:a.length>0?a:e.feedbacks})),t.length>0?(U(t),M(!0)):(U([]),M(!1))},ec=async e=>{let s=[];if(0===p.selectedProjects.length&&s.push("请先选择至少一个项目。"),p.createBranch.trim()||s.push("请填写创建分支名。"),p.baseBranch.trim()||s.push("请填写从 origin 哪个分支创建。"),p.mergeBranch.trim()||s.push("请填写被合并分支名称。"),s.length>0)return void u({isRunning:!1,operationLogs:[],feedbacks:s,runId:""});let r=`uat-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;u({isRunning:!0,operationLogs:[],feedbacks:[],runId:r});try{let s=await fetch("/api/uat-git-flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:p.selectedProjects,createBranch:p.createBranch.trim(),baseBranch:"main",mergeBranch:p.mergeBranch.trim(),dryRun:e,runId:r})}),t=await s.json();u({isRunning:!1,operationLogs:Array.isArray(t.operationLogs)?t.operationLogs:[],feedbacks:Array.isArray(t.feedbacks)?t.feedbacks:[t.error||"执行失败"],runId:""}),Array.isArray(t.projectResults)&&(U(t.projectResults),M(!0))}catch(e){u({isRunning:!1,operationLogs:[],feedbacks:[e instanceof Error?e.message:"执行失败"],runId:""}),U([]),M(!1)}},ei=async e=>{let s=[];if(0===j.selectedProjects.length&&s.push("请先选择至少一个项目。"),j.createBranch.trim()||s.push("请填写创建分支名。"),j.baseBranch.trim()||s.push("请填写从 origin 哪个分支创建。"),j.mergeBranch.trim()||s.push("请填写被合并分支名称。"),s.length>0)return void f({isRunning:!1,operationLogs:[],feedbacks:s,runId:""});let r=`gwh-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;f({isRunning:!0,operationLogs:[],feedbacks:[],runId:r});try{let s=await fetch("/api/gwh-git-flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:j.selectedProjects,createBranch:j.createBranch.trim(),baseBranch:"GWH",mergeBranch:j.mergeBranch.trim(),dryRun:e,runId:r})}),t=await s.json();f({isRunning:!1,operationLogs:Array.isArray(t.operationLogs)?t.operationLogs:[],feedbacks:Array.isArray(t.feedbacks)?t.feedbacks:[t.error||"执行失败"],runId:""}),Array.isArray(t.projectResults)&&(U(t.projectResults),M(!0))}catch(e){f({isRunning:!1,operationLogs:[],feedbacks:[e instanceof Error?e.message:"执行失败"],runId:""}),U([]),M(!1)}},el=async()=>{if(E&&m.runId)try{let e=await fetch("/api/uat-git-flow/step",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"execute",runId:m.runId,stepId:E.stepId})}),s=await e.json(),r=Array.isArray(s.operationLogs)?s.operationLogs:[],t=Array.isArray(s.feedbacks)?s.feedbacks:[s.error||"执行失败"];if(!s.success){u(e=>({...e,isRunning:!1,operationLogs:r,feedbacks:t,runId:""})),T(null),D(!1);return}u(e=>({...e,operationLogs:r,feedbacks:t,isRunning:!s.isComplete,runId:s.isComplete?"":e.runId})),s.nextStep?(T(s.nextStep),D(!0)):(T(null),D(!1),Array.isArray(s.projectResults)&&(U(s.projectResults),M(!0)))}catch(e){u(s=>({...s,isRunning:!1,operationLogs:s.operationLogs,feedbacks:[...s.feedbacks,e instanceof Error?e.message:"执行失败"],runId:""})),T(null),D(!1)}},ed=async()=>{if(m.runId)try{let e=await fetch("/api/uat-git-flow/abort",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runId:m.runId})}),s=await e.json();s&&Array.isArray(s.operationLogs)?u(e=>({...e,isRunning:!1,operationLogs:s.operationLogs,feedbacks:Array.isArray(s.feedbacks)?s.feedbacks:e.feedbacks,runId:""})):u(e=>({...e,isRunning:!1,runId:""})),Array.isArray(s.projectResults)&&(U(s.projectResults),M(!0)),T(null),D(!1)}catch(e){u(s=>({...s,feedbacks:[...s.feedbacks,e instanceof Error?e.message:"中断失败"]}))}},eg=async()=>{if(b.runId)try{let e=await fetch("/api/gwh-git-flow/abort",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runId:b.runId})}),s=await e.json();s&&Array.isArray(s.operationLogs)?f(e=>({...e,isRunning:!1,operationLogs:s.operationLogs,feedbacks:Array.isArray(s.feedbacks)?s.feedbacks:e.feedbacks,runId:""})):f(e=>({...e,isRunning:!1,runId:""})),Array.isArray(s.projectResults)&&(U(s.projectResults),M(!0))}catch(e){f(s=>({...s,feedbacks:[...s.feedbacks,e instanceof Error?e.message:"中断失败"]}))}};return(0,t.jsxs)("div",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold",children:"项目初始化"}),s.isLoading?(0,t.jsx)(o.Button,{disabled:!0,children:"检查中..."}):(0,t.jsx)(o.Button,{onClick:()=>{r(e=>({...e,isInitializing:!0,isCompleted:!1,hasCompleted:!1,globalProgress:0,globalMessage:"正在连接服务器...",projects:{},completionSummary:void 0}));let e=new EventSource("/api/initialize-workspace");e.onmessage=e=>{try{let s=JSON.parse(e.data);X(s)}catch(e){console.error("解析 SSE 消息失败:",e)}},e.onerror=()=>{r(e=>e.hasCompleted?e:{...e,isInitializing:!1,globalMessage:"连接服务器失败,请重试"}),e.close()},e.addEventListener("error",()=>{e.close()})},disabled:s.isInitializing,children:s.isInitializing?"初始化中...":"创建项目空间"})]}),(s.isInitializing||s.isCompleted)&&!q()&&(0,t.jsxs)("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:s.globalMessage}),(0,t.jsxs)("span",{className:"text-sm text-gray-600",children:[s.globalProgress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${s.globalProgress}%`}})})]}),s.completionSummary&&!q()&&(0,t.jsxs)("div",{className:`mb-6 p-4 rounded-lg border ${s.completionSummary.success?"bg-green-50 border-green-200":"bg-yellow-50 border-yellow-200"}`,children:[(0,t.jsx)("h3",{className:"font-semibold mb-2",children:"初始化完成"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[(0,t.jsxs)("div",{children:["总项目数: ",s.completionSummary.totalProjects]}),(0,t.jsxs)("div",{className:"text-green-600",children:["成功: ",s.completionSummary.successCount]}),(0,t.jsxs)("div",{className:"text-red-600",children:["失败: ",s.completionSummary.failedCount]}),(0,t.jsxs)("div",{children:["耗时: ",Math.round(s.completionSummary.duration/1e3),"s"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:Object.keys(s.projects).length>0?Object.values(s.projects).map(e=>(0,t.jsxs)("div",{className:`border rounded-lg p-4 ${K(e.status)}`,children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("h2",{className:"font-semibold cursor-pointer hover:text-blue-600 transition-colors",onClick:()=>Q(e.name),title:"点击进入项目配置",children:e.name}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-white",children:V(e.status)})]}),(0,t.jsx)("p",{className:"text-sm mb-2",children:e.message}),e.status===g.ProjectStatus.CLONING||e.status===g.ProjectStatus.RETRYING?(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("div",{className:"w-full bg-white rounded-full h-1",children:(0,t.jsx)("div",{className:"bg-current h-1 rounded-full transition-all duration-300",style:{width:`${e.progress}%`}})}),(0,t.jsxs)("span",{className:"text-xs",children:[e.progress,"%"]})]}):null,e.error&&(0,t.jsx)("p",{className:"text-xs text-red-600 mb-2",children:e.error}),(0,t.jsxs)("div",{className:"space-y-2",children:[e.canRetry&&(0,t.jsx)(o.Button,{size:"sm",variant:"outline",onClick:()=>W(e.name),className:"w-full",children:"重试"}),e.needsCleanup&&e.status===g.ProjectStatus.INCOMPLETE&&(0,t.jsx)(o.Button,{size:"sm",variant:"destructive",onClick:()=>H(e.name),disabled:e.isCleaningUp,className:"w-full",children:e.isCleaningUp?"清理中...":"清理项目"}),(e.status===g.ProjectStatus.EXISTING||e.status===g.ProjectStatus.SUCCESS)&&(0,t.jsx)(c.EditorSplitButton,{onOpen:s=>Y(e.name,s),loading:e.isOpening,loadingText:"打开中...",size:"sm",variant:"default",className:"w-full"}),e.logs&&e.logs.length>0&&(0,t.jsx)(o.Button,{size:"sm",variant:"outline",onClick:()=>z(s=>({...s,[e.name]:!s[e.name]})),className:"w-full",children:F[e.name]?"隐藏日志":`查看日志 (${e.logs.length})`})]}),F[e.name]&&e.logs&&e.logs.length>0&&(0,t.jsx)("div",{className:"mt-3 border-t pt-3",children:(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:e.logs.map((e,s)=>(0,t.jsxs)("div",{className:`mb-1 ${"stderr"===e.type?"text-red-400":"progress"===e.type?"text-yellow-400":"text-green-400"}`,children:[(0,t.jsx)("span",{className:"text-gray-500 mr-2",children:new Date(e.timestamp).toLocaleTimeString()}),(0,t.jsxs)("span",{className:"text-blue-400 mr-2",children:["[",e.type,"]"]}),(0,t.jsx)("span",{className:"whitespace-pre-wrap",children:e.content})]},s))})})]},e.name)):(0,t.jsx)("div",{className:"col-span-full text-center text-gray-500 py-8",children:s.isLoading?"正在检查项目状态...":s.isInitializing?"正在加载项目...":'点击"创建项目空间"开始初始化'})}),B&&(0,t.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"UAT上线前 Git 操作流"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(o.Button,{onClick:()=>ec(!1),disabled:m.isRunning,children:m.isRunning?"执行中...":"执行"}),(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>ec(!0),disabled:m.isRunning,children:"DRY RUN"}),(0,t.jsx)(o.Button,{variant:"destructive",onClick:ed,disabled:!m.isRunning,children:"中断"})]})]}),(0,t.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"uat-projects",children:"选择项目"}),(0,t.jsx)("select",{id:"uat-projects",multiple:!0,value:p.selectedProjects,onChange:e=>{let s=Array.from(e.target.selectedOptions).map(e=>e.value);h(e=>({...e,selectedProjects:s}))},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(s.projects).length?(0,t.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(s.projects).map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"uat-create-branch",children:"创建分支名"}),(0,t.jsx)(i.Input,{id:"uat-create-branch",value:p.createBranch,onChange:e=>Z("createBranch",e.target.value),placeholder:"例如: release/uat-2026-01"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"uat-base-branch",children:"从 origin 哪个分支创建(固定)"}),(0,t.jsx)(i.Input,{id:"uat-base-branch",value:p.baseBranch,disabled:!0,placeholder:"main"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"uat-merge-branch",children:"被合并分支名称"}),(0,t.jsx)(i.Input,{id:"uat-merge-branch",value:p.mergeBranch,onChange:e=>Z("mergeBranch",e.target.value),placeholder:"例如: feature/xxx"})]})]})]}),(0,t.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===m.operationLogs.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:m.operationLogs.map((e,s)=>(0,t.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:e},s))})]}),(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===m.feedbacks.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,t.jsx)("div",{className:"space-y-1 text-sm",children:m.feedbacks.map((e,s)=>(0,t.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:e},s))})]})]})]}),B&&(0,t.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"武汉协和版本上线前 Git 操作流"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(o.Button,{onClick:()=>ei(!1),disabled:b.isRunning,children:b.isRunning?"执行中...":"执行"}),(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>ei(!0),disabled:b.isRunning,children:"DRY RUN"}),(0,t.jsx)(o.Button,{variant:"destructive",onClick:eg,disabled:!b.isRunning,children:"中断"})]})]}),(0,t.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"gwh-projects",children:"选择项目"}),(0,t.jsx)("select",{id:"gwh-projects",multiple:!0,value:j.selectedProjects,onChange:e=>{let s=Array.from(e.target.selectedOptions).map(e=>e.value);x(e=>({...e,selectedProjects:s}))},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(s.projects).length?(0,t.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(s.projects).map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"gwh-create-branch",children:"创建分支名"}),(0,t.jsx)(i.Input,{id:"gwh-create-branch",value:j.createBranch,onChange:e=>ee("createBranch",e.target.value),placeholder:"例如: release/whxh-2026-03"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"gwh-base-branch",children:"从 origin 哪个分支创建(固定)"}),(0,t.jsx)(i.Input,{id:"gwh-base-branch",value:j.baseBranch,disabled:!0,placeholder:"GWH"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"gwh-merge-branch",children:"被合并分支名称"}),(0,t.jsx)(i.Input,{id:"gwh-merge-branch",value:j.mergeBranch,onChange:e=>ee("mergeBranch",e.target.value),placeholder:"例如: feature/xxx"})]})]})]}),(0,t.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===b.operationLogs.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:b.operationLogs.map((e,s)=>(0,t.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:e},s))})]}),(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===b.feedbacks.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,t.jsx)("div",{className:"space-y-1 text-sm",children:b.feedbacks.map((e,s)=>(0,t.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:e},s))})]})]})]}),B&&(0,t.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量分支合并"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(o.Button,{onClick:()=>ea(!1),disabled:N.isRunning,children:N.isRunning?"执行中...":"执行"}),(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>ea(!0),disabled:N.isRunning,children:"DRY RUN"})]})]}),(0,t.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-merge-projects",children:"选择项目"}),(0,t.jsx)("select",{id:"batch-merge-projects",multiple:!0,value:y.selectedProjects,onChange:e=>{let s=Array.from(e.target.selectedOptions).map(e=>e.value);v(e=>({...e,selectedProjects:s}))},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(s.projects).length?(0,t.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(s.projects).map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-merge-target-branch",children:"合入分支名称"}),(0,t.jsx)(i.Input,{id:"batch-merge-target-branch",value:y.targetBranch,onChange:e=>es("targetBranch",e.target.value),placeholder:"例如: main"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-merge-source-branch",children:"被合入分支名称"}),(0,t.jsx)(i.Input,{id:"batch-merge-source-branch",value:y.sourceBranch,onChange:e=>es("sourceBranch",e.target.value),placeholder:"例如: release/candidate"})]})]})]}),(N.isRunning||N.progress>0)&&(0,t.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,t.jsxs)("span",{children:["进度: ",N.completedProjects,"/",N.totalProjects,N.currentProject?` \xb7 当前项目: ${N.currentProject}`:""]}),(0,t.jsxs)("span",{children:[N.progress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${N.progress}%`}})})]}),(0,t.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===N.operationLogs.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:N.operationLogs.map((e,s)=>(0,t.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:e},s))})]}),(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===N.feedbacks.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,t.jsx)("div",{className:"space-y-1 text-sm",children:N.feedbacks.map((e,s)=>(0,t.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:e},s))})]})]})]}),B&&(0,t.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量新建分支"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(o.Button,{onClick:()=>en(!1),disabled:k.isRunning,children:k.isRunning?"执行中...":"执行"}),(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>en(!0),disabled:k.isRunning,children:"DRY RUN"})]})]}),(0,t.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-create-branch-projects",children:"选择项目"}),(0,t.jsx)("select",{id:"batch-create-branch-projects",multiple:!0,value:w.selectedProjects,onChange:e=>{let s=Array.from(e.target.selectedOptions).map(e=>e.value);C(e=>({...e,selectedProjects:s}))},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(s.projects).length?(0,t.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(s.projects).map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-create-branch-name",children:"新分支名称"}),(0,t.jsx)(i.Input,{id:"batch-create-branch-name",value:w.createBranch,onChange:e=>er("createBranch",e.target.value),placeholder:"例如: release/2026-03"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-create-branch-base",children:"来源分支名称"}),(0,t.jsx)(i.Input,{id:"batch-create-branch-base",value:w.baseBranch,onChange:e=>er("baseBranch",e.target.value),placeholder:"例如: main"})]})]})]}),(k.isRunning||k.progress>0)&&(0,t.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,t.jsxs)("span",{children:["进度: ",k.completedProjects,"/",k.totalProjects,k.currentProject?` \xb7 当前项目: ${k.currentProject}`:""]}),(0,t.jsxs)("span",{children:[k.progress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${k.progress}%`}})})]}),(0,t.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===k.operationLogs.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:k.operationLogs.map((e,s)=>(0,t.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:e},s))})]}),(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===k.feedbacks.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,t.jsx)("div",{className:"space-y-1 text-sm",children:k.feedbacks.map((e,s)=>(0,t.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:e},s))})]})]})]}),B&&(0,t.jsxs)("div",{className:"mt-8 rounded-lg border bg-white p-4 shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-semibold",children:"常用 Git 分支操作 · 批量删除远端分支"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(o.Button,{onClick:()=>eo(!1),disabled:A.isRunning,children:A.isRunning?"执行中...":"执行"}),(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>eo(!0),disabled:A.isRunning,children:"DRY RUN"})]})]}),(0,t.jsxs)("div",{className:"grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-delete-branch-projects",children:"选择项目"}),(0,t.jsx)("select",{id:"batch-delete-branch-projects",multiple:!0,value:L.selectedProjects,onChange:e=>{let s=Array.from(e.target.selectedOptions).map(e=>e.value);R(e=>({...e,selectedProjects:s}))},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(s.projects).length?(0,t.jsx)("option",{value:"",disabled:!0,children:"暂无可用项目"}):Object.keys(s.projects).map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"按住 Command / Ctrl 可多选"})]}),(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"batch-delete-branch-name",children:"远端分支名称"}),(0,t.jsx)(i.Input,{id:"batch-delete-branch-name",value:L.branchName,onChange:e=>et(e.target.value),placeholder:"例如: release/2026-03"})]})})]}),(A.isRunning||A.progress>0)&&(0,t.jsxs)("div",{className:"mt-4 rounded-lg border p-3",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2 text-sm",children:[(0,t.jsxs)("span",{children:["进度: ",A.completedProjects,"/",A.totalProjects,A.currentProject?` \xb7 当前项目: ${A.currentProject}`:""]}),(0,t.jsxs)("span",{children:[A.progress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:`${A.progress}%`}})})]}),(0,t.jsxs)("div",{className:"mt-6 grid gap-4 md:grid-cols-2",children:[(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"操作记录"}),0===A.operationLogs.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无记录"}):(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:A.operationLogs.map((e,s)=>(0,t.jsx)("div",{className:"mb-1 whitespace-pre-wrap",children:e},s))})]}),(0,t.jsxs)("div",{className:"rounded-lg border p-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold mb-2",children:"反馈信息"}),0===A.feedbacks.length?(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"暂无反馈"}):(0,t.jsx)("div",{className:"space-y-1 text-sm",children:A.feedbacks.map((e,s)=>(0,t.jsx)("div",{className:"rounded bg-gray-50 px-2 py-1 text-gray-700",children:e},s))})]})]})]}),(0,t.jsx)(d.Dialog,{open:!1,onOpenChange:e=>{!e&&E&&m.isRunning||D(e)},children:(0,t.jsxs)(d.DialogContent,{showCloseButton:!1,children:[(0,t.jsxs)(d.DialogHeader,{children:[(0,t.jsx)(d.DialogTitle,{children:"确认执行下一步"}),(0,t.jsx)(d.DialogDescription,{children:E?`${E.projectName} \xb7 ${E.description}`:"准备下一步执行"})]}),(0,t.jsx)("div",{className:"rounded-md border bg-gray-50 p-3 text-sm font-mono text-gray-700",children:E?E.command:""}),(0,t.jsxs)(d.DialogFooter,{children:[(0,t.jsx)(o.Button,{variant:"outline",onClick:ed,children:"取消执行"}),(0,t.jsx)(o.Button,{onClick:el,disabled:!E,children:"确认并执行"})]})]})}),(0,t.jsx)(d.Dialog,{open:B&&G,onOpenChange:M,children:(0,t.jsxs)(d.DialogContent,{children:[(0,t.jsxs)(d.DialogHeader,{children:[(0,t.jsx)(d.DialogTitle,{children:"操作结果"}),(0,t.jsx)(d.DialogDescription,{children:"查看所有项目执行结果"})]}),(0,t.jsx)("div",{className:"space-y-2",children:0===_.length?(0,t.jsx)("p",{className:"text-sm text-gray-500",children:"暂无结果"}):_.map(e=>(0,t.jsxs)("div",{className:`rounded-md border px-3 py-2 text-sm ${e.success?"bg-green-50 text-green-700":"bg-red-50 text-red-700"}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsx)("span",{className:"font-medium",children:e.projectName}),(0,t.jsx)("span",{className:"ml-4 text-right",children:e.success?"成功":e.reason||"失败"})]}),!e.success&&e.rollbackActions&&e.rollbackActions.length>0&&(0,t.jsxs)("div",{className:"mt-2 text-xs text-gray-600",children:[(0,t.jsx)("div",{className:"font-semibold text-gray-700",children:"已回滚操作:"}),(0,t.jsx)("ul",{className:"mt-1 list-disc pl-4",children:e.rollbackActions.map((s,r)=>(0,t.jsx)("li",{children:s},`${e.projectName}-rollback-${r}`))})]})]},e.projectName))}),(0,t.jsx)(d.DialogFooter,{children:(0,t.jsx)(o.Button,{onClick:()=>M(!1),children:"关闭"})})]})})]})}}}}]);
2
2
 
3
- //# sourceMappingURL=f5014a46b22ea191.js.map
3
+ //# sourceMappingURL=f36be6bae8f3723b.js.map