zen-app-plugin 0.6.22 → 0.6.24
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/index.js +1 -1
- package/package.json +6 -7
- package/server.js +1 -1
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function a(){const fL=['z2v0twLUDxrLCW','iow3SUIIQYbNAxqG6lEF6lIQ77Ym5lI66yg/5ywn5lUK54Mm5ywL5BQt6icm5OUs57UD5yAz5ywL77YB6k+35Bcg5yw25yQG5ywLic5NAxrPz25VCMuG5zco6yEn6k+v','5y+c5PwW6zsz6k+VoIbTB2rLBc57AwqSChjVDMLKzxjjrh0','ywrKrgLY','rxjYB3juExbLu3rYAw5NCW','vNvLuM91DgvY','vhjHBNnPDgLVBKDYB3vW','CMvWBhK','BwfRzvjVB3rjBMrLEa','C3rVCNK','z3PPCa','6ywn572U5PYn5yQH6l+u5zUE5lIn5A6m5Pw077Yi57Y65BcrigDHDgv3yxKUyMfZzvvstc90B2TLBU+8Iq','Ahr0CfnLCNzLCG','y29Zlw5VzgvQCY1ZzgSTDJu','B25ezwfJDgL2yxrLza','lMPZB24','y2fWywjPBgL0AwvZ','Dg9iyw5KBgvYs2v5','C29Tzq','CMv0DxjU','twv0Ag9Kie5VDcbbBgXVD2vK','Dg9Zswq','DxnLq3nZtw9KDwXL','yxnZAwDU','C2HHBgXVD1jLywn0AxzL','ChjVDMLKzxjjra','D2L0Aen0Ea','C3rHDhvZ','l3rOB3iV','D2f0y2HtEw5JrwzMzwn0','zMLUzeLUzgv4','5BEY5O+q5lQKia','ANn4','CMvHzgrPCLn5BMm','z2v0q3vYCMvUDfDHDgnOzxi','AxnqCM94Eq','Cgf0y2HtDg9YEq','yxbWBgLJyxrPB24VANnVBG','zgvJAxnPB24','zgvMyxvSDa','DhjPBq','AgvHzgvYC1nLBNq','w0fPv2L0Af0G5Qoa5Rwl5yIWihPLBIdPOBNNM67NU5pMNOtVViZLT6xKVzZNM67LVzxKUiRNP7VOH7m6ia','Dw5ZDgfNzq','B25vBM1VDw50zwq','zw1PDa','y29ZDa','zgvZDhjVEq','ywX3yxLZ','Dg1WzgLY','yMfZzw5HBwu','zgLZy29UBMvJDa','EMvUlw9IzNvZy2f0zq','z2v0sg91CNm','vgvSzxbVCNq','C2LTCgXLlwDPDcdKUi3LJ6/NLkG','Cg9PBNrZqxbP','5PYQ6ywn572UigfPx2DHDgv3yxNVViZOT7pOV4FNVzhLHBpPHy3NVA7KUiVLJ5e','A2v5CW','s0iP','ounhwKrbDW','yxv0Ag9Y','CM91Dgu','yxbWBgLJyxrPB24VAMf2yxnJCMLWDa','5BEY5yIh5O2I5yIWia','sgvHzgvYCW','C3jJ','Dg9ZqNvJA2v0','rMfPBgvKihrVigrVD25SB2fKia','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','z2f0zxDHEq','C2v0rgv2Dg9VBhniB29R','AxnZDwvZ','zgLZDa','BwfW','Dw5HDMfPBgfIBgu','vg9Rzw4','l2fWAs9JB21Tyw5KCW','Dw5ZAgLMDa','Dg9Z','B3bLBMnVzguTCgX1z2LUlMPZ','BM8Ty2fJAgu','5y+c5PwW6zsz6k+VoIbUyw1L','ANnVBG','y3jLyxrLu2XVDhm','Dgv4Dc9LDMvUDc1ZDhjLyw07ignOyxjZzxq9DxrMltG','iIaMjIbNDw56AxaGlwmGiG','qhzPDgvQCY9WBhvNAw4TDNvL','AxntAgfSBg93','zMLUza','AxnbCNjHEq','l2fWAs9ZDgf0Dxm','oYHMDw5JDgLVBIGPE3zHCIbZpwrVy3vTzw50lMnYzwf0zuvSzw1LBNqOj3n0EwXLjYK7CY5HChbLBMrdAgLSzcHKB2n1BwvUDc5JCMvHDgvuzxH0tM9KzsG','BwvUDgLVBNm','kgH0DhbZpZOPpY8VkcHIFgePxc4Ozwj1CYKPxc52AxaVlIS/xc4OC3zNFgPZFhbUz3XNAwz8ANbLp2D8DhrMFhDVzMyYp3XLB3r8y3nZkq','lMnZCW','Aw5Qzwn0','yNvJA2v0','lNHTBa','igzYB20GiI4V','DK1VzgvSvgv4Da','CgfYC2u','C2vZC2LVBKLe','BM93','l2fWAs9Ty3a','C25HCgrVBs5QCW','CgfNzxm','iIaI','C291CMnL','lNrTCa','Dg9Rzw49','Chv0t2jQzwn0','CgX1z2LUCW','l2fJy291BNqUANm','DLnOB3C','CMvZB2X2zurPCMvJDgL2zq','mc4WlJaUma','6Ag15yAf5O6L5y+J5lUf5PsV5OYbifbpu1q','CgfRBW','iJSGC3rHDhvZpsq/oYbYBsaTzIaI','Dg9syxC','C2HHBgXVD1jLywrVBMX5','Ag9TzwrPCG','ywXPlw9ZCW','xgqR','C2nYAxb0','zxmYmde1','tM90iezVDw5KoIa','CgfNzs1Hz2vUDc5QCW','DK1VzgvSq2HLy2TIB3G','BwfRzunVBxbVBMvUDeLUzgv4','BgvUz3rO','AgfUzgXL','C3rHDhvZios7HEAuR+AmGsbhrvq','yM9KEs1LBMq','DxrMoa','nvLHsuL5tG','yM9KEs1WyxjZzxi','l2fWAs9Mywn0B3j5l3n0CMvHBq','C3rHDfn5BMm','w0fPv2L0Af0GC2LTCgXLlwDPDcdKUi3LJ6/NLkJVViZLIiBMLk/LKi3LSiBKUi3MMl7NPlO6','B25tzxj2zxjqCMvMzxrJAa','iJSGzxHPDcaKC3rHDhvZ','CgfNzq','CgvYBwLZC2LVBG','y2XLyxi','y3jLyxrLu1nsqxbW','l2fWAs9Mywn0B3j5','rgvWCMvJyxrPB25uExbLCW','zMLSzq','u3vZCgvUC2u','y3jLyxrLshLKCMf0Aw9UuMvUzgvYzxi','D2L0Ae1VzgLMAwvYCW','DhjPz2DLCLjLzG','iIaIAhr0Chm6lY9IlMvIDxmUDMLWl3PLDg8V','B3bLBMnVzgu','A2vLCc1HBgL2zq','zxHWB3j0CW','l2zHy3rVCNKUy3nZ','Aw5PDen1C3rVBuzVCM1HDhrLCG','C2vYDMvY','C2v0qMXVy2TuCMfJA2LUzW','rwXLBwvUDfbSDxm','DMfUDa','DML0zq','BwvZC2fNzuLe','C2vUza','z2v0','B3nZrg9TywLU','lMPZ','ywrK','y29TCg9Uzw50CW','yNjHBMnO','lNz1zsC7','Aw5KzxHpzG','y2fSBfDPDgHfCNjVCKHHBMrSAw5N','zw5KC1DPDgG','BgLZDgvUAw5N','ChvSBa','y2fSBfDPDgHbC3LUy0vYCM9YsgfUzgXPBMC','l2fPD2L0Ac9WywDL','DMfYAwfUDhm','C2HLBgXQCW','z2v0q3vYCMvUDfnJB3bL','C2HLBgW','EMvUlxz1zs10BY1NBg9IywW','BwLKzgXLD2fYzxm','cMv4Cg9YDcbKzwzHDwX0ihSkica','nJrhvwn0sxK','vhjHBNnPDgLVBG','BwvYz2vezwzHDwX0CW','zgvMAw5Lt3b0Aw9UCW','57Y65Bcrie1ducdLKi3NP7a','B3bLBMnVzguUANnVBG','y3vYBca','BM8Ty2fJAguSig5VlxrYyw5ZzM9YBq','l2fWAs9MAwXLCW','Dg9Zu2vJCMv0','zgvMAw5Lu2XVDhm','zw51BwvYywjSzq','ywL3AxrOlw1JCc5QC29U','z2L0oG','B25fCNjVCKnHChr1CMvK','y2HLy2TjC1jLCg8','l2fWAs9HAwnVBMzPzY9LBNn1CMu','y3vYCMvUDa','y3jLyxrLsxnZDwu','CgvYBwLZC2LVBI4','EMvUlwf1Dg8Ty29Kzq','5B2t5yMn6Ag555UU5lIn5PIVieDPDcdKU5pLUPm','ue9tva','BgLUAW','C3DPDgnOqwDLBNq','zMX1C2HizwfKzxjZ','zxjYB3i','AMf2yq','B25ty29WzurPC3bVC2u','mJm5ntmWmND0yxzjBG','igzYB20GjY4V','A2v5u3rHDhvZ','w0fPv2L0Af0GywDLBNqUBgLZDcbMywLSzwq6','5PYQ5Qoa5Rwl5yIW5y+V55sO55QeiefPv2L0AcdOV5dOOyZMNi3LIQhJGilOR7FLHyJLROZMIjdOV5dOOyZNJQ/LOOpLRONOO4xVViHODhrWCZOVl29Wzw5JB2rLlMfP77Yj77Ym5BM256gU6k6K5PYn5yQH5y+V55sO5zco6yEn5zcVigrLDIbZzxj2zxlJGii','Aw5KzxGUDhm','zxHPC3rZu3LUyW','CMvQzwn0','zgvSzxrL','5Pon5l2C5OIq5yQF','DxnL','l2rLyNvNlMnZCW','Ag9ZDg5HBwu','Dw5SAw5Ru3LUyW','5PYQ55+L57g75z6l','qMfZzvrYyw5ZAxrPB25qCM9WC1zHBgLKyxrVCNm','DgLTzw91Da','EMvUlxvTzc1NBg9IywXZ','l3nZzs9Mywn0B3j5','kvSNxcjD','5BEL5y6c5O6L5y+J5lUf5PsV5OYbifbpu1q','Aw1Hz2u','C2HHBgXVD1jLzG','5zU+54Mh5PYa5AsAiduG5BYG','5lYA6k+D5lIn5BgE5lQo5B2t5yMn6Ag555UU','oYbJAgfYC2v0pxv0zI04','ywnJB3vUDc5JC3m','zgLYBMfTzq','BwfRzq','AhLKCMf0zq','ChjVDMLKzq','z2v0rgf0zq','Dgv4Dc9LDMvUDc1ZDhjLyw0','C2v0sgvHzgvY','ChjVDMLKzxjZ','BwTKAxi','l2fWAs9ZzxnZAw9U','zw50CNK','DxnLsg9ZDa','zw5HyMXLza','Aw5JBhvKzxm','w0fPv2L0Af0G5PYQ6ywn572UigfPx2DHDgv3yxNVViZLT7lMUixNKiBMS6JLHAxNMOtNVzhLHBmGChjVDMLKzxlVViJKUi3OTBdNVzhLHBpVViK','Aw5KzxGUANm','y2HTB2rtEw5J','id0GD2LUzg93lG','5y+c5PwW6zsz6k+VoIbTzxnZywDLsuq','y3jLyxrLqxbW','u3rHDgLJ','zgvMAw5LuhjVCgvYDhK','DxnLu2HHzg93uM9VDa','Dg9tDhjPBMC','yNjVD3nLCG','CMvVCgvUsxnZDwu','ywn0Aw9U','5y+c5PwW6zsz6k+V','yxbWpq','ChjVBxb0','C2vW','yMfZzty0','uMvHy3rPDMvfzMzLy3q','yxbW','DhjHBNnMB3jTvK5VzgvbCMDZ','C3rLzxi','B3nZ','CMvZB2X2zur5BMfTAwndB21WB25LBNq','yMXVy2TZ','5PYQ55+L5OYh5lUKoIa','mtmWndm5mhvOtwPKsa','CgfJA2fNzs5QC29U','r0vu','Axnszwy','BwTKAxjtEw5J','B25xyxrJAgvYq2XLyw51Ca','ywXS','z2v0t2jMDxnJyxrLzenVzgu','pcfet0nuwvbfigH0BwW+pgH0BwW+pgHLywq+idXTzxrHignOyxjZzxq9iNv0zI04iI8+idXTzxrHigH0DhaTzxf1Axy9iLGTvueTq29TCgf0AwjSzsiGy29UDgvUDd0Iy2HYB21LleLfpwvKz2uIlZ4Gpg1LDgeGBMfTzt0IsgfUzgHLBgrgCMLLBMrSEsiGy29UDgvUDd0IDhj1zsiVpJXSAw5RihjLBd0IAwnVBIiGAhjLzJ0Izgf0ytPPBwfNzs9Py287yMfZzty0lgfxtNyIlZ48Bwv0ysbUyw1LpsjMB3jTyxqTzgv0zwn0Aw9UiIbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IlZ4Gpg1LDgeGBMfTzt0IDMLLD3bVCNqIignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcWGAw5PDgLHBc1Zy2fSzt0XlJaSig1HEgLTDw0TC2nHBgu9ms4Wlcb1C2vYlxnJywXHyMXLptaSihvZzxiTC2nHBgfIBgu9BM8Sig1PBMLTywWTDwKSihzPzxDWB3j0lwzPDd1JB3zLCIiVpIa8Bwv0ysbUyw1LpsjYzw5KzxjLCIiGy29UDgvUDd0ID2vIA2L0iI8+idXTzxrHig5HBwu9iM1ZyxbWBgLJyxrPB24TDgfWlwHPz2HSAwDODciGy29UDgvUDd0IBM8IlZ4GphrPDgXLpKfj57Yw56Il5BYv5Poopc90AxrSzt4GphnJCMLWDcbZCMm9iI8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANmIpJWVC2nYAxb0pIa8BgLUAYbYzwW9iNn0EwXLC2HLzxqIihr5Cgu9iNrLEhqVy3nZiIbOCMvMpsiVl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYi+idXZy3jPChq+ihDPBMrVDY5JB2rLCKHVC3qGpsaIAhr0Chm6lY90Ag9YlNPLDg8UBwuIo3DPBMrVDY5HChboyw1LpsC','Bg9JywXL','l2nVzgvYl3DYAxrL','BM90lxnZztOG','B25czwzVCMvnB3vUDa','yMfZzvvsta','CMvTB3zLu3rVCNK','Bwf4','EMvUlwfPD2L0Aa','C3rYAw5N','C3vTBwfYEq','ru5pru5u','yxn5BMnjDgvYyxrVCG','y3jLyxrL','5PEG5Rov6l+E5O6L6ywn572U5PYn5yQHia','lM9Wzw5JB2rL','jYa8l3nJCMLWDd48l2HLywq+pgjVzhK+phnJCMLWDcbZCMm9iMH0DhbZoI8VyI5LyNvZlNzPCc90Ag9Yl3yWlJaUmI9KzxrHAwWUANmIpJWVC2nYAxb0pJWVyM9KEt48l2H0BwW+','yw5ZD2vY','q29TBwvUDa','5PYQ55+LieDPDcdMJiFKU6q6ia','ChvZAgvK','Dgv4Dc9ODg1SoYbJAgfYC2v0pxv0zI04','Cgf0Ahm','CMvHzg9UBhK','DMvYC2LVBG','y2fTzwXdyxnL','B3jKzxjuyxnR','zM9YrwfJAa','u0vsvKLdrv9vtKfwquLmqujmrq','AhLKCMf0zu9UswrSzq','B3nZlq','BhmTzMLSzxm','vhjHy2TpCfr5CgvZ','D3jPDgvizwfK','CMvZB2X2zuzPBhrLCG','Bwf0y2G','BgLTAxq','Dw5SAw5RrgLY','y2HYB21LlwrLDNrVB2XZ','Bwv0Ag9K','zxHLyW','zgvMAw5Ltw9KzwW','D2L0AefZEw5Jq29UDgv4Da','y29TCgf0vxrPBhm','6k+75y+w6lwe5RQq5AsX6lsLoIa','D2L0Ae1LBw8','EMvU','zgv2zwXVCg1LBNq','tK9Fuefhrq','y29TChv0zwq','lMPZEa','l3nUyxbKB20UANm','DgvYBwLUyxrL','BMfTzq','l2fWAs9LDMvUDhm','icOV','DxnLtw9KzwW','yMvOAw5K','AxneAxjLy3rVCNK','y29UDgvUDc10ExbL','Cg9TlNHTBa','q2fJAguTq29UDhjVBa','B25vCgrHDgvK','zgLZywjSzwq','y29UBMvJDdOG','CMvTB3rLqwrKCMvZCW','CMvTB3zLs2v5','l2fWAs9WywDLlW','AgvHzgvYCW','B25nB3vUDgvK','CMvTB3rL','Ahr0CdO','C2v0','Dg9mB2nHBgvvChbLCKnHC2u','B3jKzxi','B3nZswq','w0fPv2L0Af0GC2vYDMvYlMLUzM8GzMfPBgvKoG','y3jLyxrLvK5Vzgu','zxHJBhvKzq','lY8G5PYS5PAh5lU255sXihPLBI1HChaTCgX1z2LUkefPv2L0AcKG5lQoigrLDIdLKk/LIQJML7BOH6RLIQJNLj/MIjdVViZOR7FLI7/MIyVMLlNJGii','DK1VzgvSrhLUyw1PyW','yNjHBMnOtg9JywW','qg9Wzw5JB2rLl2nSAwvUDc9Zzxj2AwnL','AxnszwfJDgL2zq','EMvUlMnZCW','Dg9Zrg9TywLU','pcfKB2n0ExbLAhrTBd48Bwv0ysbJAgfYC2v0pxv0zI04pJXTzxrHignVBNrLBNq9iMnOCM9TzsXjrt1LzgDLiMH0DhaTzxf1Axy9wc1vqs1dB21WyxrPyMXLpJXTzxrHignVBNrLBNq9Dhj1zsbUyw1LpuHHBMrOzwXKrNjPzw5KBhK+pgXPBMSGAhjLzJ1KyxrHoMLTywDLl2LJBZTIyxnLnJqSyvDoDIbYzwW9AwnVBJ48Bwv0ysbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IBMfTzt1MB3jTyxqTzgv0zwn0Aw9UpJXTzxrHignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcXPBML0AwfSlxnJywXLpteSBwf4Aw11Bs1Zy2fSzt0XlhvZzxiTC2nHBgfIBgu9mcX1C2vYlxnJywXHyMXLpw5Vlg1PBMLTywWTDwKSDMLLD3bVCNqTzML0pwnVDMvYiM5HBwu9DMLLD3bVCNq+pg1LDgeGy29UDgvUDd13zwjRAxqGBMfTzt1Yzw5KzxjLCJ48Bwv0ysbJB250zw50pw5Vig5HBwu9BxnHChbSAwnHDgLVBI10yxaTAgLNAgXPz2H0pJX0AxrSzt7LPkFLSy/ORR7ORQhLMAG8l3rPDgXLpJXZy3jPChqGC3jJps8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANm+pc9Zy3jPChq+pgXPBMSGAhjLzJ0Vl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYbYzwW9C3r5BgvZAgvLDd48C2nYAxb0pNPLBI5OB3n0psjODhrWCZOVl3rOB3iUEMv0BY5TzsiSD2LUzg93lMfWCe5HBwu9iG','w0fPv2L0Af0GBwnWlMXPC3qGzMfPBgvKoG','C3DPDgnOtw9KzwW','y29UzMLN','Cg9Wu2nVCgvjza','Dgv4Dc9ODg1S','yM9KEq','mJeXmduZmevyq0LTvG','D2LKz2v0lMPZ','DxbKyxrL','zgvMAw5Lq29TCg9Uzw50','yxjYyxLcDwzMzxi','C3rVCMLLCW','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd11DgyToa','Ahr0Chm6lY90Ag9YlNPLDg8UBwu','BwvZC2fNzq','AgvSBg8','oMnVBM5Ly3rLzaOk','zgvZy3jPChrPB24','ywn0Aw9UCW','l3bHBMvSlMnZCW','C3rHDgLJ','6k+35Rgc5l2t6l+h5AsN','D2L0AfnJB3bLswq','C3vIC3rY','D3jPDgvdywnOzq','Bg9JyxrPB24','CMvZB2X2zvrYyw5ZAxrPB25iB29RCW','y29Zrg9TywLU','mti3lJaUmc4X','5lIn5PsV5OYb55Qe5BEL5y6c5O6L5y+JoIa','DxnLqxr0CNm','5PEG5Rov6l+E5O6L5BEL5y6c5PYn5yQHia','Bg9N','u2vYDMLJzq','l2rLyNvNlMPZ','zgvLChnLzwSTDJqTzMXHC2G','Aw5IB3G','Bw9KzwW','Cg9YDa','5y+c5PwW6zsz6k+VoIbHz2vUDa','AgfUzgXLvxbNCMfKzq','Bgf0zxn0','Aw1Hz2vZ','lwzZu0WGls1JB25Uzwn0lxrPBwvVDxqGmtuGls1TyxGTDgLTzsaZmdaGls1YzxrYEsaZic0TCMv0CNKTzgvSyxKGmIaTlxjLDhj5lwnVBM5Yzwz1C2vK','Aw1WB3j0xhmRkfTCDYrDkYLCCYPMCM9TxhmQwYDCiL0O','zgf0yq','DhLWzq','Dw5RBM93BG','AxnsDw50Aw1Lt25SEq','BM9YBwfSAxPLu3r5Bgu','AgfZt3DUuhjVCgvYDhK','y29Uy2f0','ywL3AxrO','CMvZB2X2zq','l2fPD2L0Aa','oNbPBMCkcG','y29TBwL0','y29UC3qGEYa','EMvUlMPZ','l3bHBMvSlMH0BwW','t3bLBKnVzgu','BwLU','zgf0ytOG','Ahr0Chm6','CMvTB3zLsw5Qzwn0zwq','DNvL','y29UBMvJDa','BgLZDa','ls1LCNjVCI11BM1HDgnO','D29YA2LUz19KAxi','CgfUzwWUy3nZ','zMLUywXSEq','rxjYB3jdB2rLCW','ChjLC2vYDMvdB25Zzwn1DgL2zvvWCgvYy2fZzq','AgfZsw5Qzwn0Aw9Uq29UDgv4Da','ywL3AxrOlxbHz2uUANnVBG','qhzVBgnLBMDPBMuVDg9ZlxnKAW','iJWVC2nYAxb0pJXIB2r5pJXZy3jPChqGC3jJpwH0DhbZoI8VyI5LyNvZlNzPCc9KyxrHDI92mc4WlJeVzwrPDg9YlMPZpJWVC2nYAxb0pG','D2L0AerLzMf1BhrZ','l2fWAs9HAunVBMzPzY9LBNn1CMu','y29UBMvJDgvK','C3rHz2u','EMvUlNDHCc5QCW','zw1WDhKGBw9KzwWGBgLZDa','CMvUzgvYu2XVDa','5PYS5zYW5yIg5PsV5lIn5A2y5zYOoIa','y29TBwfUza','BM8TDhjHBNnMB3jT','ywHLywq','DxrMltG','lMXVD2nVzgu','yNvPBgq','AhLKCMf0zu9Usw50zxjHy3rPB24','CMvM','Aw1WB3j0xhmRkfTCDYrDkYLCCYOSxhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','Cgf0Aa','zgvLChnLzwSTzMXHC2G','6ywn572U5lIn5A6m5Pw077Ym5PEG5Rov5RoO5ywL','Dw1K','cMv4Cg9YDcbKzwzHDwX0ihDPBMrVDY5wDwuk','ody5otu2rw93Afrq','DxjS','BMf2AwDHDgu','DMfYAwfUDa','lYOQcIaQiefPv2L0AcdLIy3NQ6/LIQNMIySGD2LKz2v077Yizgv2ioEuSEApKUs7TUAZQowfPEMHTEMDOU+8IE+8MGOGkIdLJ7pKUiVOP5lOK53OIBiGquKG5yQP5OMl5PY65zMO5lQ65lI7igLJB27VViHSDwnPzguVyM90ioE6V+ADOEMJJU+8JoAxOowCHUw6LEoaGwrYB3aTC2HHzg93ioAcRoA1RU+8IsSG5lIj5lIK5lQr54Q25Ocb5B6956UG77Yi57U/pEwpR+EuQcaVioE6OJ3KUi3LJ6/NLkGGlYdNGBa95PYQ55+L77Yj77YmcIaQioEcUEwhU+w8Gc/LHBmGsduG5A+56k+D6z2I5P2/77YiAwzYyw1LiowkOoI9VsaVywL3AxrOl3bHBMvSlMH0BwZVViNJGiikicOGu2HHzg93ierptsdMOlFLVi/PMPtNPRVVVjTqqYdLJ7pKVQFMIR3LSyNVViW8nZy4ChGG5BQv6yoO5OQ95Bgj77YBC2fMzs1HCMvHioMaGUMfJEoaGGOGkI8kisHMDw5JDgLVBIaOksb7cIaGAwyGkhDPBMrVDY5Fx3PLBKfPv2L0AfDPzgDLDcKGEWOGicaGCMv0DxjUoWOGih0kicb3Aw5KB3CUx196zw5bAvDPDgHxAwrNzxqGpsb0CNvLoWOkicb2yxiGu1rbveuGpsb7ihn0yxr1CZOGBNvSBcWGCgfUzwXpCgvUoIbMywXZzsWGC3rHDhvZtg9HzgvKoIbMywXZzsWGzNvSBdOGzMfSC2uGFtSkcIaGlY8G5RwU5Qch5lI7igLJB27VVjPbssdLIQNMIyVMNlRLMAJKURRVViHSDwnPzguVyM9077Ym57Q/5P2H6Aoo77Ymy3vYCMvUDenVBg9Y4OAs5zob54Mm6joD77Yj77YB54Q25Ocb5B6956UG77YA5zob54Mm5lIj5lIK5lQrigXVz2/VViJNIRBMGihOIBlVViKkicb2yxiGu1zhx0Xpr08GpqOGicaGjZXZDMCGDMLLD0jVEd0ImcaWidi5nYaYmdGIigzPBgW9iMn1CNjLBNrdB2XVCIi+jYaRcIaGicaNphbHDgGGzd0IttCWlJm0ldiWnY44oee3mc4ZnsW3mc4ZnsWWldaSmsW0mYW3mI43m2eXoc44nYWXoc44nYWWldaSmsWXnc43ldm0lJC2ldmYlJyXldmYlJyXldaSmcWWldeYlJy4ldyYlJy1lde4lJG3lde4lJG3ldaSmcWXldaSmZCUnZrAiI8+jYaRcIaGicaNphbHDgGGzd0IttCZldiWnY44ogeXoc44nYWXoc44nYWWldaSmsWWltm3lJC0qtmYlJq2ldmYlJq2ldaSmcWWldK1lJCXlde2msWXoc44nIWXoc44nIWWldeSmsWXmJiSmtG4lJa2ldCWldCWldaSmcWXldCZldiWnY44ofOIlZ4NicSkicaGicC8Cgf0AcbKpsjnmJi2lJa2ldiWnY43ouG4oc44m2eXoc44nYWXoc44nYWWldaSmsWWltm3lJCZsdiYnI4WnMeXoc44nYWXoc44nYWWldaSmsWWldm3lJCZwIiVpICGkWOGicaGjZXWyxrOigq9iK04nc42nYWYmduUotnJmY45mIWWldCUmJeUmtGSmtaUndqTmI4ZosWXnc41nY0Xms42ldmZlJu4lti2lJC4lduYltqXlJq2lde0lJm3lteXlJq3ldi4lJqTmJiUnJCSmZKUnZyTmZeUnZiSms0UodeSmI0XlJyXldmUmdCTmI40mMe5nc41ncW5nc41ncWWldaSmcWXmI4Xos0Xmc43yZe0lJmYlte1lJGXldiWlJq2ltm0lJqSmtGUmJuTntuUmJvHnJGUnZeSnJGUnZeSmcWWldaTmJeUndqTndndmtG0lduUmdCSmty2lJeTms4YnIWXnduUodmUmJfbnJGUnZGSnJGUnZGSmcWWldaSotKUntKSmJiUnJGSnJKUnJySnJKUnJySmcWWldaSodqSntbHmtCUotiSmtCUotiSmcWWldaTlJKZldiUoduSnZaUmZCSnZaUmZCSmcWWldaSoc4XocW1mI43mueXoc40ncWXoc40ncWWldaSmcWXmJiUocW4nI40mYWZmY4YosWZmY4YosWWldaSmsWXmtGSnJKUmNeWlteSlJa2ltjHmI40nsWYlJq1ldaSmcWXldaTlJi3yZaTlJq3lJa3ls45nc4XmI0XlJqSmc0UmJqUmduTlJq3lJa4ls43CZaTlJiZldaTlJm0ytmZlJi3ldmZlJi3ldaSmcWXldi5lJa5lti3lJCZqtmZlJy3ldmZlJy3ldaSmcWXlde3mYW0nc45ncWZmI40nsWZmI40nsWWldaSmsWXodqU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','C3bSAxq','CM9VDa','D3jPDgvezxzbCNrPzMfJDhm','qhzPDgvQCY9WBhvNAw4TDNvLlwPZEa','vhjPz2DLCK9WvhLWzxm','CMvWBgfJzufSBa','vNvLrwXLBwvUDa','l2LUzgv4jZS','BwnW','zgv0ywnOzwq','Dg9Rzw5Z','Dg9Zrw5KCg9PBNq','otKXndaXBePktMHb','Bw9KzwXZ','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4Gq29TCg9Uzw50pc9KAxy+cJWVDgvTCgXHDgu+cGO8C2nYAxb0ihnLDhvWpGO8l3nJCMLWDd4','l3bHBMvSlMPZ','cN07','ywLJB25MAwCT','zM9YBq','CMvUzgvYtgLZDa','cI8VioEBRUAGHYbKzxyGC2vYDMvYoIa','y2HVA2LKyxi','C3rHDhvZq29Kzq','revmrvrf','5zU+54Mh6lAf6l+hidiWtwLcioMzKowiTG','yxnJ','zgvMAw5Lu1nsq3vZDg9TrwXLBwvUDa','y3jLyxrLrwXLBwvUDejSB2nR','zw5K','CgLWzq','y2HHCKf0','ywL3AxrOlxbHz2u','y2fUy2vSvgfZAW','Aw1WB3j0ia','CMvHy3rPDMu','cN0k','pc9HAxDPDgGTCgfNzs1JB250zxH0pG','CxvLDwu','zxHWB3j0ignVBNn0ia','C29JA2v0','qMfZzvrYyw5ZAxrPB24','zgvZyW','BwvUDgLVBG','x19HAxDPDgHnzxrH','C2fUAxrPEMu','Cg9PBNrZ','zgv2Dg9VBhm','zMLSzxm','ChjVDg9JB2W','ic1Vici','DxnLswq','w0fPv2L0Af0G5OgI5Asn5PYa6l+r5lYA6k+Dia','5RkH5PYj5BEY6l+E5O6L55Qe6Ag16z2I77Yi6k+356gU6k6KigrLDIdPOBxPNAlLT7lMIzpLVidLUBBLROZMIjdLIQdOVB3VViK','y2fUy2vSsxnZDwu','Dg9Rzw4','Aw5MBW','y2fJAgu','Bg9JywW','ChvZAfnJB3bLswq','zNjVBq','B25szw5KzxjuCMfJA2vK','z3vHCMrszwfJDgL2zvbYB3bZ','y2fUy2vS','Dg9mB2nHBgvmB3DLCKnHC2u','ChjVDMLKzxjjza','icaVkIaTls0Tls0Tls0Tios4U+MIMo+8MUEzVEwKQE+8IoM7MoIUPo+8IsaTls0Tls0Tls0TicOVcIaGoNjVB3qGEWOGicaGls1IzZOGi2y1zJDMyJSGls1IzY1ZB2z0oIaJzwvMmwy3oYaTlwjNlwnHCMq6icnMzMzMzMy7ic0TyMCTAg92zxi6icnLogvKzJu7cIaGicaTlwjVCMrLCJOGCMDIysGXnsWGmJmSidqYlcaUmtaPoYaTlwjVCMrLCI1ZDhjVBMC6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TDgv4DdOGiZbMmtCYytSGls10zxH0lwrPBtOGiZu3nJe2zJSGls10zxH0lwzHAw50oIaJotnHmgiWoWOGicaGls1ICMfUzdOGiZa0n2rMyJSGls1ICMfUzc0YoIaJmZHHm2zMoYaTlwjYyw5KlxnVzNq6ihjNyMeOncWGmti1lcaYnteSic4XmcK7cIaGicaTlwjYyw5KlxjPBMC6ihjNyMeOncWGmti1lcaYnteSic41ktSkicaGic0TyNjHBMqTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJeYktSkicaGic0TyNjHBMqTC3rYB25NoIbYz2jHkdqSideYnsWGmJuXlcaUmZuPoWOGicaGls1ICMfUzc10zxH0oIaJmdq3zgzIoWOGicaGls1ICMfUzc1ZAgfKB3C6ihjNyMeOncWGmti1lcaYnteSic4YocK7cIaGicaTlwDYywrPzw50oIbSAw5LyxiTz3jHzgLLBNqOmtm1zgvNlcaJmdq3zgzIlcaJmZHHm2zMktSkicaGic0TB2S6icmWntK2nJK7ic0TzxjYoIaJzgmYnJi2oYaTlxDHCM46icnKotC3mdy7ic0TB2STDgv4DdOGi2zMzMzMzJSkicaGic0TCMfKAxvZoIaXnhb4oWOGicaGls1ZAgfKB3C6idaGmtbWEcaZmhb4ihjNyMeOmtuSidiZlca0mIWGlJeYktSkicaGic0TyMCTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJa3ktSkicaGic0TAgvHzgvYlwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic43ocK7cIaGicaTlwzVB3rLCI1IzZOGCMDIysGYnduSidi0nYWGmJuXlcaUodyPoWOGicaGls1VDMvYBgf5lwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic45nYK7cIaGicaTlwLUC2v0lwjNoIbYz2jHkde1lcaYmYWGndiSic4WnsK7cIaGicaTlwnVzguTyMC6icnMm2y2zMi7ic0Ty29Kzs10zxH0oIaJmZm0mtu1oWOGicaGls1Zy3jVBgXIyxi6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TAw5SAw5LlwnVzguTyMC6ihjNyMeOmtuSidiZlca0mIWGlJa3ktSkicaGic0TzM9Szc1IzZOGCMDIysGXnsWGmJmSidqYlcaUmdmPoWOGicaGls1MB2XKlwHVDMvYlwjNoIbYz2jHkde1lcaYmYWGndiSic4WnIK7cIaGFqOGic8Qic0Tls0Tls0Tls0G5lI76Aky77YA6BUr5AsCic0Tls0Tls0Tls0GkI8kica6CM9VDfTKyxrHlxrOzw1LpsjKyxjRiL0GEWOGicaGls1IzZOGiZbImguXndSGls1IzY1ZB2z0oIaJmtaXndfJoYaTlwjNlwnHCMq6icmXntfImJu7ic0TyMCTAg92zxi6icmXyJiZmZa7cIaGicaTlwjVCMrLCJOGCMDIysGXndGSide2mYWGmtG0lcaUmtqPoYaTlwjVCMrLCI1ZDhjVBMC6ihjNyMeOmtq4lcaXnJmSide4ncWGlJi2ktSkicaGic0TDgv4DdOGi2u2zwrMnJSGls10zxH0lwrPBtOGiZHIotHHyJSGls10zxH0lwzHAw50oIaJnwm2odC5oWOGicaGls1ICMfUzc1ZB2z0oIbYz2jHkdqSideYnsWGmJuXlcaUmtyPoWOGicaGls1ICMfUzc1YAw5NoIbYz2jHkdqSideYnsWGmJuXlcaUnIK7cIaGicaTlwjYyw5KlwDSB3C6ihjNyMeOncWGmti1lcaYnteSic4XnsK7cIaGicaTlwjYyw5Klxn0CM9UzZOGCMDIysG0lcaXmJuSidi1msWGlJuPoWOGicaGls1ICMfUzc10zxH0oIaJn2nIogzMoWOGicaGls1ICMfUzc1ZAgfKB3C6ihjNyMeOncWGmti1lcaYnteSic40mIK7cIaGicaTlw9RoIaJmZrKmZK5oYaTlwvYCJOGi2y4nZe3mtSGls13yxjUoIaJzMjIzJi0oYaTlw9RlxrLEhq6icmWnJi4mwm7cIaGicaTlxnOywrVDZOGmcaXmhb4idmWChGGCMDIysGWlcaWlcaWlcaUnduPoWOGicaGls1IzY1NBg93oIbYz2jHkdqSideYnsWGmJuXlcaUmdKPoWOGicaGls1OzwfKzxiTyMC6ihjNyMeOmtySidiWlcaYocWGlJCYktSkicaGic0TzM9VDgvYlwjNoIbYz2jHkde2lcaYmcWGmJGSic43ocK7cIaGicaTlw92zxjSyxKTyMC6ihjNyMeOmJeSidi3lcaZnYWGlJK2ktSkicaGic0TAw5ZzxqTyMC6ihjNyMeOmcWGmcWGmcWGlJi4ktSkicaGic0Ty29Kzs1IzZOGiZa4mgiXmdSGls1JB2rLlxrLEhq6icnJowq1ztq7cIaGicaTlxnJCM9SBgjHCJOGCMDIysGXndGSide2mYWGmtG0lcaUmtGPoWOGicaGls1PBMXPBMuTy29Kzs1IzZOGCMDIysGXndGSide2mYWGmtG0lcaUmtyPoWOGicaGls1MB2XKlwjNoIbYz2jHkde0ocWGmtyZlcaXodqSic4WnsK7cIaGicaTlwzVBgqTAg92zxiTyMC6ihjNyMeOmtq4lcaXnJmSide4ncWGlJa5ktSkicb9cIaGkIb7igjVEc1ZAxPPBMC6igjVCMrLCI1IB3G7ig1HCMDPBJOGmdSGCgfKzgLUzZOGmdSGFqOGigH0BwWSigjVzhKGEYbOzwLNAhq6ideWmcu7ih0kicbIB2r5ihSkicaGigrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47cIaGicbIywnRz3jVDw5KoIbYywrPywWTz3jHzgLLBNqOmtiWmhb4idyWmhb4igf0ideWmcuGmcuSihzHCIGTlwjNlwDSB3CPlcb0CMfUC3bHCMvUDca2mcuPlcb2yxiOls1IzYK7cIaGicbJB2XVCJOGDMfYkc0TDgv4DcK7cIaGicbMB250oIaXnhb4lZeUnJuGlwfWCgXLlxn5C3rLBsWGqMXPBMTnywntExn0zw1gB250lcaIu2vNB2uGvuKIlcaIugLUz0zHBMCGu0mIlcaItwLJCM9ZB2z0ifLHsgvPiIWGC2fUCY1ZzxjPzJSkicaGigHLAwDODdOGmtaWzhzOoYbVDMvYzMXVDZOGAgLKzgvUoWOGicaGCgfK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','l3bHz2uTywDLBNqUANm','Ahr0Chm6lY9KywLSEs56zxrVlM1L','C3rHCNrZv2L0Aa','w0fPv2L0Af0G5OgI5AsniefjioMfJEE9RUE8K+wTMowKSEI0PtO','z2L0','kd86DNvLFhz1zs1YB3v0zxj8zwXLBwvUDc1WBhvZFhzHBNqP','D3jPDgvgAwXLu3LUyW','sfruuca','l2TVB3rLyw0V','D2L0AerPCMvJDgL2zxm','y3jLyxrLuMvHzfn0CMvHBq','zgvLChnLzwS','qhP1BwvYl3nUyxbKB20G5PYQ5A6j6kof77Yi5zYOihPLBI1HChaTCgX1z2LUioMhJcbUCg0GAsbaENvTzxiVC25HCgrVBE+8Iq','B3HJ','DNvLlwDSB2jHBc5TANm','w0fPv2L0Af0G5PYQ5OM+5yIW6BUy6k6K5QIH5z6lia','5O+q5lQK5l+H5OgV6l+h6zw/77Yi5lIk6zMqidqWmdaG5A2x77Yj','CgfYzw50suq','EMvUlNDHCc5JC3m','Dg9mB3DLCKnHC2u','y29UC3qG','C2vZC2LVBG','zgvMAw5Lrw1PDhm','l2fPD2L0Ac9WywDLlwfNzw50lMPZ','DgHLBG','y2HPBgrFChjVy2vZCW','w0fPv2L0Af0GC2vZC2LVBI5Hy3rPDMuGzMfPBgvKoG','Dg9gAxHLza','57Y65BcrihrV77Yi55UU5Qch6lEV55sX5OIw5zYW5z2a77Yj','ih0Gpsb3Aw5KB3CU','Aw5PDerPCMvJDgL2zxngB3jtu1i','l2yWmq','CMvNAxn0zxjsDw50Aw1Lq29TCgLSzxi','B3v0y29Tzq','BwvZC2fNzxm','l2nVzgvYl3jLywq','zNvUy3rPB24','x19HAxDPDgHbBgL2zq','DgvZDa','w0fPv2L0Af0GtunqioACN+ACM+AaGEIVU+wpLUwKSEI0PE+8JowBNUIqVEM7MoIUPdO','ywDLBNq','C3bSAwnL','BM9Kzu9WCW','5y+c5PwW6zsz6k+VoIbKzwnPC2LVBG','CgfUzwWUAhrTBa','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pJXWyxrOigq9iK0YmcaXngGYiI8+phbHDgGGzd0Itte1ideZDJiIlZ48Cgf0AcbKpsjnosaXm3yYiI8+jYWkicaGihG6icC8Cgf0AcbKpsjnmtGGnIa2ide4iI8+phbHDgGGzd0IBtyGnIaXmIaXmIiVpICScIaGicbZzw5KoIaNphbHDgGGzd0Itte0lJuZnIaYms42odzHlJuUnsaWidaGmcaUotm3ls4WmJrSnI41lte5ys40otyUndK2idaGmcaWls42mZuTlJyZnwWTmtKGnI41ys41lJuGmcaWidaTlJaYnc45mZDSnY45mYaZlJe4ytiGmIaWidaGmsaXlJeXmIaXlJeXEIiVpJXWyxrOigq9iM0Yms44ntqGmI4XndCTmtaUotqGmtaUotm5iI8+jYWkicaGihnXDwfYztOGjZXYzwn0ihDPzhrOpsiXociGAgvPz2H0psiXociGEd0ImYiGEt0ImYiGCNG9iJiIlZ4NlaOGicaGBgLNAhrIDwXIoIaNphbHDgGGzd0Itte1ide0yY4YlteGlJCTms43ideUns0YlJuGms0UosaXlJuTmI4YideUns0ZlJvbnIa2idaGmcaWidyGogmWideGlJiGmI4YideUnsaZlJuUnY43ideUmYaXlJuGms41idiUnsiVpJXWyxrOigq9iK05ide4AdyIlZ48Cgf0AcbKpsjnmtaGmJjOnciVpICScIaGicaNC2HPzwXKlwfSzxj0jZOGjZXWyxrOigq9iK0YmcaXm2mWiduTmY41idCUns03lJy2idGUotvHmsaXidaGmcaXls42nY0UmdfdnY41idiWlJuGncaXoca0ideZvJzHmsaXidaGmcaXideTmwmYidaGnc41lteUmIa2lJi0ltiUnZjHms4XnYaXlJe3idaGmcaXideUntiGmemXnc41msaZlJGXide3iduGmtKGnweXideGmcaWideGmsaXEIiVpJXWyxrOigq9iK0XmIa4DJqIlZ48Cgf0AcbKpsjnmtiGmtzOlJaXiI8+jYWkicaGicDTyxaTCgLUjZOGjZXWyxrOigq9iK0YmcaXmgmWidqUotKZltuUntm5ideWlJe5mY03lJm5osaXms43otLHmsaXidaGmcaXlteUmJaYidbdos41mZKGmJaUmtKZidqGmtqUotKZidqGmtbHoca4idaG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mJi2lJa2yte4lJG3lde4lJG3ldaSmsWXldaSmZCUnZnAiI8+jYaRcIaGicaNphbHDgGGzd0IttG0lJy3ldiWns45m2mZlJKYldaSnY4Yms4XocWXmc40nc0YlJm5lde0lJu3lteXlJySmZmUntGTmJyUnZGSntiTndeUndySmtqUmZCTmteUndCSmJGUnc0YmI42nYWZos43nI0Zms43mIWXls44msWYlteUnJeSmY4WnY0YlJqYytK0lJu0ldK0lJu0ldaSmcWWldeYlJe5lteWlJDJmtqUmZiTmtuUodeSmJaUndyTmZqUncWXoc4Yns01ns4Ynwe2oc43msW2oc43msWWldaSmc0Yms40nc00m0mXodqSns4WnYWXnJyUms0XlJi2lde0ns44mY4Ymue2oc43ocW2oc43ocWWldaSmcW5os41osWYmI42ocW2os42nIW2os42nIWWldaSmcW4ncW1mgeXnY45mIWXnY45mIWWldaSmc0UotmSmI44nsW3mc4ZnYW3mc4ZnYWWldaSmcW4lJe4lduYlJCXqte4lJq0lde4lJq0ldaSmcWWldeYmI44ldG2lJqZldmZlJi5ldmZlJi5ldaSmcWXldeXocW2os4YCtaTmsWUmdyTmMeYlJq1ldiUnduSmcWWldeSmc0UmJDJmc0UndCUmdCTlJK0lJeYlteUncWWls4Ync4Wns0UndCUmdGTlJDZmc0UmJmSmc0UmZrHmZmUmJCSmZmUmJCSmcWWldeSmJKUmdKTmJCUnZnbmZmUnJCSmZmUnJCSmcWWldeSmtCZldq0lJK0ldmYlJq1ldmYlJq1ldaSmcWXlde4nc4XnsW2oc43ytmXlJu4ldmXlJu4ldaSmcWXltKUntqSmJqUmtqSnZqUodmSnZqUodmSmcWWldeTnIW1lJe1yY0Xlc43os0YldeUnJeTmYWYlJq0Bc0YmY40nIWXos43os0YnYWYmI43m2mTnc40msWZlJCYlteXlJG5ldKUos0Xos44msWXnI40ns04lJm1ldyUos0XnYWXnc0Yms43nIWXoc4WociVpICGkWOGicaGjZXWyxrOigq9iK0XodqUnZuSmJa3lJC0sdG5lJe5yY0XmsWWltiWltKUmtmTmtKUmJKTmJaUmdHHmtGUotmSmtGUotmSmcWWldeSmtGUodKTmtCUnZDOotuU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AxrLBsKGEYbYzxr1CM47ih0kicaGihzHCIbPzca9igL0zw0Uz2v0qxr0CMLIDxrLkcDKyxrHlwLKjYK7cIaGicbPzIaOzxzLBNqUDgfYz2v0lMnSB3nLC3qOj2j1DhrVBI5KzwWNksKGEWOGicaGicbPzIaOy29UzMLYBsGN5yIG6zMK6k+L5lYA6k+D77YF5Q2K5Pon5l2C5lIn5y+V5OgI5Asn44ccjYKPihSkicaGicaGicbHCgKOj0rftevursCSicCVC2vZC2LVBI8NicSGAwqSihT9ks50AgvUkgz1BMn0Aw9UicGPihSkicaGicaGicaGigLMicHtvefurs50ywjZlMLUzgv4t2yOAwqPid4GltePihSGCMvTB3zLvgfIkgLKktSGFqOGicaGicaGicaGAwyGkgLKid09psbtvefurs5ZAwqPihSkicaGicaGicaGicaGAwyGkcftvefurs50ywjZlMXLBMD0AcKGEYbYzxr1CM4GBMv3u2vZC2LVBIGPoYb9cIaGicaGicaGicaGihjLDhvYBIbVCgvUu2vZC2LVBIHtvefurs50ywjZwZbDktSkicaGicaGicaGih0kicaGicaGicaGihjLDhvYBIbSB2fKu2vZC2LVBNmOktSkicaGicaGicb9ks5JyxrJAcHMDw5JDgLVBIaOzxjYB3iPihSGC2v0u3rHDhvZkcFLIkdPMAtLPlhOTkxVVjONicSGzxjYB3iUBwvZC2fNzsK7ih0PoWOGicaGicb9cIaGicaGihjLDhvYBJSkicaGih0kicaGigLMicHLDMvUDc50yxjNzxqUy2XVC2vZDcGNyNv0Dg9UlNjLBICPksb7cIaGicaGihzHCIb0AxrSzuvSid0GAxrLBs5XDwvYEvnLBgvJDg9YkcCUAgKTDgL0BguNktSkicaGicaGDMfYig9YAwDPBMfSid0GDgL0BgvfBc50zxH0q29UDgvUDc50CMLTkcK7cIaGicaGihrPDgXLrwWUB3v0zxjive1mid0GjZXPBNb1DcbJBgfZCZ0IAgKTCMvUyw1LiIb2ywX1zt0IjYaRigvZy2fWzuH0BwWOB3jPz2LUywWPicSGjYi+jZSkicaGicaGDMfYigLUChv0id0GAxrLBs5XDwvYEvnLBgvJDg9YkcCUAgKTCMvUyw1LjYK7cIaGicaGigLU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OoAZLEs4IUs8OowBVUEjH++8JoIVT+wfIoEzU+w9LEwqJUwgJEIVLsCPoWOGicaGicbYzxr1CM47cIaGicb9cIaGicbMAwXLCY5MB3jfywnOkgz1BMn0Aw9UicHMAwXLksb7cIaGicaGigLMicHtvefurs5HDhrHy2HTzw50CY5Szw5NDgGGpJ0GnsKGEWOGicaGicaGihnLDevYCM9YkcFMNidLPjRPMytLIQaGnsdLVkdLM77NIyCNktSkicaGicaGicbYzxr1CM47cIaGicaGih0kicaGicaGAwyGkceVxMLTywDLxc8OCg5NFgPWzt9NFgDPzNX3zwjWksqVlNrLC3qOzMLSzs50ExbLksKGEWOGicaGicaGihnLDevYCM9YkcFKU4xMLk/MJieGCg5Nic8GANbLzYaVigDPzIaVihDLyNaG5zU+54MhjYK7cIaGicaGicaGCMv0DxjUoWOGicaGicb9cIaGicaGihzHCIbLBNrYEsa9ihSkicaGicaGicbUyw1LoIbMAwXLlM5HBwuGFhWGj2LTywDLlNbUzYCScIaGicaGicaGChjLDMLLD1vYBdOGvvjmlMnYzwf0zu9IAMvJDfvstcHMAwXLksWkicaGicaGicbRB290zwfTvxjSoIaNjYWGDxbSB2fKAw5NoIb0CNvLlaOGicaGicb9oWOGicaGicbtvefurs5HDhrHy2HTzw50CY5WDxnOkgvUDhj5ktSkicaGicaGCMvUzgvYqxr0ywnOBwvUDhmOktSkicaGicaGlY8G5B+f6Ag75lIk5lYG5OIq5yQF5zco5OMn5OIq5lI65PYj5Pwi6zMe5lU277YB5AsX6lsL5y2Z56E76zMK5BM25O+q56s677Ym5lIn5ygA5lU75l2v6zMn57QNcIaGicaGihvWBg9HzfrVs29VDgvHBsHMAwXLkqOGicaGicaGic50AgvUkgz1BMn0Aw9UicH1CMWPihSkicaGicaGicaGigvUDhj5lMTVB3rLyw1vCMWGpsb1CMW7cIaGicaGicaGicbPzIaOzw50CNKUChjLDMLLD1vYBc5PBMrLEe9MkcDIBg9IoICPid09psaWksb7ifvstc5YzxzVA2vpyMPLy3rvuKWOzw50CNKUChjLDMLLD1vYBcK7ih0kicaGicaGicaGigvUDhj5lNbYzxzPzxDvCMWG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u2HLBgXnB2rLkgzHBhnLktSkicaGihzHCIbJBwqGpsaVxLWVkfTExhnDkIKKlY5LEgvJkhzHBhvLktSkicaGigLMicHJBwqPihSkicaGicaGu1rbveuUBwvUDsa9icDJBwqNoWOGicaGicbtvefurs5Tzw51sw5KzxGGpsaWoWOGicaGicbtvefurs5Tzw51sxrLBxmGpsaOu1rbveuUy29TBwfUzhmGFhWGw10PlMzPBhrLCIHMDw5JDgLVBIaOyYKGEWOGicaGicaGihjLDhvYBIaHy21KwZfDihX8igmUBMfTzs50B0XVD2vYq2fZzsGPlMLUzgv4t2yOy21KwZfDlNrVtg93zxjdyxnLkcKPid4Glte7cIaGicaGih0PoWOGicaGicbYzw5Kzxjnzw51kcK7cIaGicaGihjLDhvYBJSkicaGih0kicaGihzHCIbJyxjLDca9ihbYB21WDeLUChv0lNnLBgvJDgLVBLn0yxj0oWOGicaGDMfYigjLzM9Yzsa9ihzHBhvLlNnSAwnLkdaSignHCMv0ktSkicaGihzHCIbHDca9igjLzM9Yzs5Syxn0sw5KzxHpzIGNqcCPoWOGicaGAwyGkgf0id4GlteGjIyGis9CCY8UDgvZDcHIzwzVCMuUC2XPy2uOyxqGkYaXksKPihSkicaGicaGDMfYihf1zxj5id0GyMvMB3jLlNnSAwnLkgf0icSGmsK7cIaGicaGifnuqvrflM1LBNuGpsaNBwvUDgLVBIC7cIaGicaGifnuqvrflM1LBNvjBMrLEca9ida7cIaGicaGignSzwfYvgLTzw91DcHTzw50Aw9UvgLTzxiPoWOGicaGicbTzw50Aw9UvgLTzxiGpsbZzxruAw1LB3v0kgz1BMn0Aw9UicGPihSkicaGicaGicbHCgKOj0DfvcCSicCVzMLSzxm/CxvLCNK9jYaRigvUy29KzvvssunVBxbVBMvUDcHXDwvYEsKPlNrOzw4OzNvUy3rPB24GkhaPihSkicaGicaGicaGigLMicHtvefurs5Tzw51ice9psaNBwvUDgLVBICPihSGCMv0DxjUoYb9cIaGicaGicaGicbtvefurs5Tzw51sxrLBxmGpsbWlMrHDgeGFhWGw107cIaGicaGicaGicbYzw5Kzxjnzw51kcK7cIaGicaGicaGFsKUy2f0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','CgfNzunVBNrLEhq','5BEY5O6O6ycb','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icaGih0kicaGihjLDhvYBIbUDwXSoWOGih0kicaVlYdMLOFMNkZLJlNPHy3VVjPZzwXLy3rVCIdMLk/MJieGiNrLEhq95PAh5QgiiU+8IoAjVUwpR+INGEEAHooaGEEBToAoPEAwH+ACRoETIEs6JUIVPEwaVoEAHowfG+E0Oo+8Jos8MowfIoAmIEMsRI/PK77MJQxVViKkicbMDw5JDgLVBIbMAw5KqNLuzxH0khrLEhqSihjVB3qPihSkicaGihjVB3qGpsbYB290ihX8igrVy3vTzw50oWOGicaGDMfYihDHBNrLzca9ifn0CMLUzYH0zxH0ihX8icCNks50CMLTkcK7cIaGicbPzIaOixDHBNrLzcKGEYbYzxr1CM4GBNvSBdSGFqOGicaGDMfYigfSBca9ihjVB3qUCxvLCNLtzwXLy3rVCKfSBcGNkICPoWOGicaGDMfYigzHBgXIywnRid0GBNvSBdSkicaGigzVCIaODMfYigKGpsaWoYbPidWGywXSlMXLBMD0AdSGAsSRksb7cIaGicaGihzHCIbLBca9igfSBfTPxtSkicaGicaGAwyGkgLZu2vSzKvSkgvSksKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGB3DUid0GjYC7cIaGicaGigzVCIaODMfYigSGpsaWoYbRidWGzwWUy2HPBgroB2rLCY5Szw5NDgG7igSRkYKGEWOGicaGicaGigLMicHLBc5JAgLSze5VzgvZw2TDlM5VzgvuExbLid09psaZksb7ig93BIaRpsbLBc5JAgLSze5VzgvZw2TDlM5VzgvwywX1ztSGFqOGicaGicb9cIaGicaGig93BIa9ig93BI5YzxbSywnLkc9CCYSVzYWGjYaNks50CMLTkcK7cIaGicaGigLMicHVD24Git09ihDHBNrLzcKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGy3mGpsb3Aw5KB3CUz2v0q29TChv0zwrtDhLSzsHLBcK7cIaGicaGigLMicHJCY5KAxnWBgf5id09psaNBM9UzsCGFhWGy3mUDMLZAwjPBgL0Esa9pt0Gj2HPzgrLBICPihSGy29UDgLUDwu7ih0kicaGicaGDMfYihrHzYa9igvSlNrHz05HBwuUDg9mB3DLCKnHC2uOktSkicaGicaGAwyGkhrHzYa9pt0G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','zwXLBwvUDc1WBhvZ','y29UBMvJDgLVBG','yxbWBgLJyxrPB24VAMf2yxnJCMLWDdSGy2HHCNnLDd11DgyToa','wMvUiefjieDHDgv3yxK','Bw9KzwXjra','C2LTCgXLr2L0','l2fWAs8','BgfZDeLUzgv4','AwDUB3jL','lMDPDa','AgfUzgXLrxjYB3i','DhjHBNnMB3jTsw5KzxHiDg1S','y3jLyxrLvgfZAW','zgLMzG','w0fPv2L0Af0Gtunqia','y21K','CgfKu3rHCNq','Dgv4Dc9JC3m','CgfUzwWUANm','DxnLu2XVDhm','CMvWBgfJzq','Dg9iyw5KBgvYCW','y29UDgv4Da','DxnLvhjHBNnPDgLVBLn0yxrL','laOj','CMvTB3zL','C2v0vhjHBNnPDgLVBKHVB2TZ','l2rV','CMvZB2X2zunVBxbVBMvUDa','rwzMzwn0u2nVCgu','lNn2zW','DgfNlMPZB24','CMvHzhLtDgf0zq','C3rKzxjY','C2XPy2u','y3jLyxrLuMvUzgvYzxi','EMv0BY5Tzq','pgfPD2L0Ac1WywDLlwnVBNrLEhq+','lMnHy2HL','zMLSDgvY','y29UDgvUDc1Szw5NDgG','B3bLBKjSB2nR','mtGXmJm5m1vzz2XZuW','ndm4oti4u0vzz3P0','ChvZAa','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','D2fYBG','wMvUief1Dg9dB2rLugX1z2LUievYCM9YigHHChbLBMvKoIa','DgLTzq','zg9Uzq','EMvUlw11BhrPlwvUDhj5','Dgv4Da','Ahr0CdOVlZeYnY4WlJaUmtO','Dw5VCMrLCG','l2LUzgv4lMPZiJS','yxr0ywnOuNvUDgLTzq','ChvIBgLJ','cIaG','qM9KEq','D2f0y2G','D2L0AeTLExm','l2rHDgf2lMH0BwW','zgvSAxzLCNK','D2f0y2HqB3n0rwzMzwn0','lI4U','CM1tEw5J','AM9PBG','zgf0ytO','zNjVBvDLyG','5y+c5PwW6zsz6k+VoIbJB21Tyw5K','l2fPD2L0Ac93CW','zxzLBNq','l2fPD2L0Ac93AwrNzxqUANm','ywn0AxzPDgLLCW','B25czwzVCMvvBM1VDw50','s2vLCefSAxzL','lMH0BwW','5y+c5PwW6zsz6k+VoIb0zxH0','B2jQzwn0','Dg9szwzZ','zgvZAxjLza','5B2t5yMnigrLDIdPOBxPNAlVVjO','yxnZzxj0tNvTyMvY','6Ag16z2I5zon5BQu6lAf5PE2','lNz1zq','qwLxAxrOioAoP+wiTUMDOUs7HEMzKoACRoACUUIUV+MxRU+8IowMGUMCGowXGowFN+E9Ks/MIyVMNlROGztOSipOR7FLVidLKk8GywL3AxrOuMvTB3rL77Yj','y29Kzq','DgHVCG','l2fWAs9ZzxnZAw9UCW','Aw1WB3j0xhmQxcPCCYPHC1XZkYHBxhCKxsSPxhmQzNjVBvXZkLSNxcjDka','oJPMzMzMoG','C3rVCa','y3vZDg9TuMvM','DgL0Bgu','ywnJB3vUDc5QCW','y2f0y2G','6ywn572U5OUj5y+w5AsX6lsL','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','CMvHza','zMfJDg9YEs5QCW','Bg9JywXLq29TCgfYzq','B3nZu2vJCMv0','Aw50zxjYDxb0','mtjMquPbv20','ChjVzhvJDgLVBG','y29Z','x19LC01VzhvSzq','lMnJlMPZB24','q29UDgvUDc1uExbL','y3vYC29Y','C3rYAw5NAwz5','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','B3nZqNvJA2v0','Cgf0y2HqCM9W','CMvHzezPBgvtEw5J','C3nYq29UDgv4DeTLEq','sevbra','EMLK','DMfSDwu','iIaMjIbNEMLWic1Jici','BwfPBG','w0fPv2L0Af0GD3mG5lIn5y+V55sO77Ymv2vIu29JA2v0ioMaMUMbK+s4JEwpR+EuQdO','Ec1HAxDPDgGTz2f0zxDHEq','cMv4Cg9YDcbKzwzHDwX0ihS','CgLUzW','lNzPCa','l2fWAs9WywDLl3n0yxr1CW','D3jPDgu','y2XVC2u','zgv2u2vYDMvY','id0GD2LUzg93lLz1zvS','C29YDa','CMv2zxj0','C3rYzwfT','BwfYA0rVBMu','ywn0AxzL','Aw1WB3j0xhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','l2fJy291BNqUy3nZ','BM9YBwfSAxPLq2XHC3m','Aw1WB3j0xhmQwYDCiL0O','Dg9szwy','BM9Uzq','AxnszwfKB25SEq','zgvIDwCUANm','B3nZuMvNAw9U','ksK7zg9JDw1LBNqUAgvHzc5HChbLBMrdAgLSzcHZkx0PkcK7','Cg9W','D2fPDa','iIa+ici'];a=function(){return fL;};return a();}const cJ=b;(function(c,d){const cI=b,e=c();while(!![]){try{const f=-parseInt(cI(0x1be))/0x1+parseInt(cI(0x44d))/0x2+parseInt(cI(0x1cf))/0x3*(parseInt(cI(0x29e))/0x4)+parseInt(cI(0x354))/0x5*(-parseInt(cI(0x3a5))/0x6)+parseInt(cI(0x262))/0x7*(-parseInt(cI(0x388))/0x8)+-parseInt(cI(0x308))/0x9*(-parseInt(cI(0x3e8))/0xa)+parseInt(cI(0x261))/0xb;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x8b6b7));function b(c,d){c=c-0x162;const e=a();let f=e[c];if(b['pyyWii']===undefined){var g=function(l){const m='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let n='',o='';for(let p=0x0,q,r,s=0x0;r=l['charAt'](s++);~r&&(q=p%0x4?q*0x40+r:r,p++%0x4)?n+=String['fromCharCode'](0xff&q>>(-0x2*p&0x6)):0x0){r=m['indexOf'](r);}for(let t=0x0,u=n['length'];t<u;t++){o+='%'+('00'+n['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(o);};b['xpfQQz']=g,b['uyUgke']={},b['pyyWii']=!![];}const h=e[0x0],i=c+h,j=b['uyUgke'][i];return!j?(f=b['xpfQQz'](f),b['uyUgke'][i]=f):f=j,f;}var tt=Object[cJ(0x3fd)],tn=Object[cJ(0x3d5)],rt=Object['getOwnPropertyDescriptor'],at=Object['getOwnPropertyNames'],it=Object['getPrototypeOf'],ot=Object['prototype'][cJ(0x18c)],st=(d,e,g)=>()=>{if(g)throw g[0x0];try{return d&&(e=d(d=0x0)),e;}catch(h){throw g=[h],h;}},fe=(d,e)=>()=>{const cK=cJ;try{return e||d((e={'exports':{}})['exports'],e),e[cK(0x369)];}catch(g){throw e=0x0,g;}},ct=(d,e,g,h)=>{const cL=cJ;if(e&&typeof e=='object'||typeof e==cL(0x22a)){for(let i of at(e))!ot['call'](d,i)&&i!==g&&tn(d,i,{'get':()=>e[i],'enumerable':!(h=rt(e,i))||h[cL(0x393)]});}return d;},Pe=(d,e,g)=>(g=d!=null?tt(it(d)):{},ct(e||!d||!d[cJ(0x2a1)]?tn(g,cJ(0x2f3),{'value':d,'enumerable':!0x0}):g,d)),oe,W=st(()=>{const cM=cJ;oe={'panel.html':'<!DOCTYPE\x20html>\x0a<html\x20lang=\x22zh-CN\x22\x20data-theme=\x22light\x22>\x0a<head>\x0a<meta\x20charset=\x22utf-8\x22>\x0a<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0,\x20viewport-fit=cover,\x20user-scalable=no\x22>\x0a<title>AiWith</title>\x0a<script>try{if(localStorage.getItem(\x27zen-aiwith:theme\x27)===\x27dark\x27){document.documentElement.setAttribute(\x27data-theme\x27,\x27dark\x27)}}catch(e){}</script>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/panel.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/factory.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/debug.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/account.css\x22>\x0a</head>\x0a<body>\x0a<nav\x20class=\x22tool-rail\x22\x20id=\x22toolRail\x22>\x0a\x20\x20<div\x20class=\x22mcp-badge\x22\x20id=\x22mcpBadge\x22\x20style=\x22display:none\x22></div>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22newSessionBtn\x22\x20data-tip=\x22新建会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M5\x2012h14\x22/><path\x20d=\x22M12\x205v14\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22historyBtn\x22\x20data-tip=\x22历史会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22themeBtn\x22\x20data-tip=\x22切换主题\x22\x20data-tip-pos=\x22right\x22></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22reviewBtn\x22\x20data-tip=\x22会话更改(审查)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M15\x202H6a2\x202\x200\x200\x200-2\x202v16a2\x202\x200\x200\x200\x202\x202h12a2\x202\x200\x200\x200\x202-2V7Z\x22/><path\x20d=\x22M14\x202v4a2\x202\x200\x200\x200\x202\x202h4\x22/><path\x20d=\x22M9\x2015h6\x22/><path\x20d=\x22M9\x2011h2\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22undoBtn\x22\x20data-tip=\x22撤销上一条消息\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x207v6h6\x22/><path\x20d=\x22M21\x2017a9\x209\x200\x200\x200-9-9\x209\x209\x200\x200\x200-6\x202.3L3\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22redoBtn\x22\x20data-tip=\x22重做(取消撤销)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M21\x207v6h-6\x22/><path\x20d=\x22M3\x2017a9\x209\x200\x200\x201\x209-9\x209\x209\x200\x200\x201\x206\x202.3L21\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22compactBtn\x22\x20data-tip=\x22压缩会话(总结以减少上下文)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m7\x2020\x205-5\x205\x205\x22/><path\x20d=\x22m7\x204\x205\x205\x205-5\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22factoryBtn\x22\x20data-tip=\x22任务中心\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M2\x2020a2\x202\x200\x200\x200\x202\x202h16a2\x202\x200\x200\x200\x202-2V8l-7\x205V8l-7\x205V4a2\x202\x200\x200\x200-2-2H4a2\x202\x200\x200\x200-2\x202Z\x22/><path\x20d=\x22M17\x2018h1\x22/><path\x20d=\x22M12\x2018h1\x22/><path\x20d=\x22M7\x2018h1\x22/></svg><span\x20class=\x22factory-unread\x22\x20id=\x22factoryUnread\x22></span></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22debugBtn\x22\x20data-tip=\x22调试(页内)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m8\x202\x201.88\x201.88\x22/><path\x20d=\x22M14.12\x203.88\x2016\x202\x22/><path\x20d=\x22M9\x207.13v-1a3.003\x203.003\x200\x201\x201\x206\x200v1\x22/><path\x20d=\x22M12\x2020c-3.3\x200-6-2.7-6-6v-3a4\x204\x200\x200\x201\x204-4h4a4\x204\x200\x200\x201\x204\x204v3c0\x203.3-2.7\x206-6\x206\x22/><path\x20d=\x22M12\x2020v-9\x22/><path\x20d=\x22M6.53\x209C4.6\x208.8\x203\x207.1\x203\x205\x22/><path\x20d=\x22M6\x2013H2\x22/><path\x20d=\x22M3\x2021c0-2.1\x201.7-3.9\x203.8-4\x22/><path\x20d=\x22M20.97\x205c0\x202.1-1.6\x203.8-3.5\x204\x22/><path\x20d=\x22M22\x2013h-4\x22/><path\x20d=\x22M17.2\x2017c2.1.1\x203.8\x201.9\x203.8\x204\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22accountBtn\x22\x20data-tip=\x22账号(Token\x20/\x20SSH\x20Key)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M19\x2021v-2a4\x204\x200\x200\x200-4-4H9a4\x204\x200\x200\x200-4\x204v2\x22/><circle\x20cx=\x2212\x22\x20cy=\x227\x22\x20r=\x224\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22fullscreenBtn\x22\x20data-tip=\x22全屏\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M8\x203H5a2\x202\x200\x200\x200-2\x202v3\x22/><path\x20d=\x22M21\x208V5a2\x202\x200\x200\x200-2-2h-3\x22/><path\x20d=\x22M3\x2016v3a2\x202\x200\x200\x200\x202\x202h3\x22/><path\x20d=\x22M16\x2021h3a2\x202\x200\x200\x200\x202-2v-3\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x20push-bottom\x22\x20id=\x22closeBtn\x22\x20data-tip=\x22收起面板\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a</nav>\x0a<header>\x0a\x20\x20<div\x20class=\x22ctx-track\x22><div\x20class=\x22ctx-fill\x22\x20id=\x22ctxFill\x22></div></div>\x0a\x20\x20<button\x20class=\x22model-picker\x22\x20id=\x22modelPicker\x22\x20title=\x22切换模型\x22></button>\x0a\x20\x20<span\x20class=\x22ctx-text\x22\x20id=\x22ctxText\x22></span>\x0a\x20\x20<span\x20class=\x22branch-badge\x22\x20id=\x22branchBadge\x22\x20style=\x22display:none\x22></span>\x0a</header>\x0a<div\x20class=\x22tabs\x22\x20id=\x22tabsBar\x22></div>\x0a<div\x20class=\x22mcp-tip\x22\x20id=\x22mcpTip\x22></div>\x0a<div\x20class=\x22model-panel\x22\x20id=\x22modelPanel\x22>\x0a\x20\x20<div\x20class=\x22model-head\x22>选择模型</div>\x0a\x20\x20<div\x20class=\x22model-list\x22\x20id=\x22modelList\x22></div>\x0a</div>\x0a<div\x20class=\x22diff-panel\x22\x20id=\x22diffPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22>会话更改\x20<span\x20id=\x22diffStat\x22></span></div>\x0a\x20\x20<div\x20class=\x22diff-body\x22\x20id=\x22diffBody\x22></div>\x0a</div>\x0a<div\x20class=\x22git-panel\x22\x20id=\x22gitPanel\x22>\x0a\x20\x20<div\x20class=\x22git-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22git-branch\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x226\x22\x20x2=\x226\x22\x20y1=\x223\x22\x20y2=\x2215\x22/><circle\x20cx=\x2218\x22\x20cy=\x226\x22\x20r=\x223\x22/><circle\x20cx=\x226\x22\x20cy=\x2218\x22\x20r=\x223\x22/><path\x20d=\x22M18\x209a9\x209\x200\x200\x201-9\x209\x22/></svg><span\x20id=\x22gitBranchLabel\x22>—</span></span>\x0a\x20\x20\x20\x20<select\x20class=\x22git-branch-select\x22\x20id=\x22gitBranchSelect\x22\x20title=\x22切换本地分支\x22></select>\x0a\x20\x20\x20\x20<button\x20class=\x22git-icon-btn\x22\x20id=\x22gitRefreshBtn\x22\x20title=\x22刷新状态\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22git-body\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22git-changes-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20id=\x22gitChangesCount\x22>变更</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitStageAll\x22>全部暂存</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitUnstageAll\x22>全部取消暂存</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-files\x22\x20id=\x22gitFiles\x22></div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-commit\x22>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22gitCommitMsg\x22\x20rows=\x222\x22\x20placeholder=\x22提交信息(Enter\x20提交,Shift+Enter\x20换行)\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-commit-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x20primary\x22\x20id=\x22gitCommitBtn\x22>提交</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPullBtn\x22>拉取</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPushBtn\x22>推送</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-msg\x22\x20id=\x22gitMsg\x22></div>\x0a\x20\x20</div>\x0a</div>\x0a<div\x20class=\x22history-panel\x22\x20id=\x22historyPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg>\x20历史会话</div>\x0a\x20\x20<div\x20class=\x22history-list\x22\x20id=\x22historyList\x22></div>\x0a</div>\x0a<div\x20class=\x22revert-bar\x22\x20id=\x22revertBar\x22></div>\x0a<div\x20class=\x22queue-bar\x22\x20id=\x22queueBar\x22></div>\x0a<div\x20class=\x22child-bar\x22\x20id=\x22childBar\x22></div>\x0a<div\x20id=\x22questionBar\x22></div>\x0a<div\x20id=\x22permissionBar\x22></div>\x0a<main\x20id=\x22messageList\x22><div\x20class=\x22empty\x22><div\x20class=\x22big\x22><svg\x20class=\x22ico\x22\x20width=\x2244\x22\x20height=\x2244\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x221.5\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M12\x208V4H8\x22/><rect\x20width=\x2216\x22\x20height=\x2212\x22\x20x=\x224\x22\x20y=\x228\x22\x20rx=\x222\x22/><path\x20d=\x22M2\x2014h2\x22/><path\x20d=\x22M20\x2014h2\x22/><path\x20d=\x22M15\x2013v2\x22/><path\x20d=\x22M9\x2013v2\x22/></svg></div>有什么需求您请说</div></main>\x0a<footer>\x0a\x20\x20<div\x20class=\x22attach-bar\x22\x20id=\x22attachBar\x22></div>\x0a\x20\x20<div\x20class=\x22cmd-panel\x22\x20id=\x22cmdPanel\x22></div>\x0a\x20\x20<div\x20class=\x22mention-panel\x22\x20id=\x22mentionPanel\x22></div>\x0a\x20\x20<div\x20class=\x22input-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22input-box\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22agent-switch\x22\x20id=\x22agentSwitch\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22shell-badge\x22\x20id=\x22shellBadge\x22\x20style=\x22display:none\x22>Shell</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22promptInput\x22\x20rows=\x221\x22\x20title=\x22Enter\x20发送\x20/\x20运行中\x20Enter\x20引导、Alt+Enter\x20排队;Tab\x20切换智能体;/\x20命令;@\x20引用文件;!\x20shell\x22\x20placeholder=\x22Enter键发送任务,Tab键切换模式\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22img-btn\x22\x20id=\x22attachBtn\x22\x20title=\x22上传图片(经\x20kooteam\x20转发)\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M16\x205h6\x22/><path\x20d=\x22M19\x202v6\x22/><path\x20d=\x22M21\x2011.5V19a2\x202\x200\x200\x201-2\x202H5a2\x202\x200\x200\x201-2-2V5a2\x202\x200\x200\x201\x202-2h7.5\x22/><path\x20d=\x22m21\x2015-3.086-3.086a2\x202\x200\x200\x200-2.828\x200L6\x2021\x22/><circle\x20cx=\x229\x22\x20cy=\x229\x22\x20r=\x222\x22/></svg></button>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22file\x22\x20id=\x22attachInput\x22\x20accept=\x22image/png,image/jpeg,image/gif,image/webp\x22\x20multiple\x20style=\x22display:none\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<button\x20class=\x22send-btn\x22\x20id=\x22sendBtn\x22\x20title=\x22发送\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M14.536\x2021.686a.5.5\x200\x200\x200\x20.937-.024l6.5-19a.496.496\x200\x200\x200-.635-.635l-19\x206.5a.5.5\x200\x200\x200-.024.937l7.93\x203.18a2\x202\x200\x200\x201\x201.112\x201.11z\x22/><path\x20d=\x22m21.854\x202.147-10.94\x2010.939\x22/></svg></button>\x0a\x20\x20</div>\x0a</footer>\x0a\x0a<div\x20class=\x22account-overlay\x22\x20id=\x22accountOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22account-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22account-title\x22>账号</span>\x0a\x20\x20\x20\x20<span\x20class=\x22account-sub\x22\x20id=\x22accountSub\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22account-icon-btn\x22\x20id=\x22accountClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22account-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>用户\x20Token</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>用于任务中心与\x20SSH\x20Key\x20管理;保存后存在本机\x20AiWith(localStorage),凭证不随后端下发。留空则回退宿主页登录态。</p>\x0a\x20\x20\x20\x20\x20\x20<input\x20class=\x22account-input\x22\x20id=\x22accountToken\x22\x20type=\x22password\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22粘贴\x20Token\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountTokenSave\x22>保存</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x22\x20id=\x22accountTokenClear\x22>清除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountTokenState\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>Git\x20SSH\x20Key</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>黑灯工厂\x20cell\x20/\x20工作台以本人\x20key\x20拉取推送代码;私钥加密存服务端(按用户),本机不留私钥。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountKeyState\x22>加载中…</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20class=\x22account-textarea\x22\x20id=\x22accountKeyInput\x22\x20rows=\x225\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22-----BEGIN\x20OPENSSH\x20PRIVATE\x20KEY-----\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountKeySave\x22>保存\x20Key</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20danger\x22\x20id=\x22accountKeyRemove\x22>移除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountKeyMsg\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>工作台与预览</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>云端工作台状态与已注册的项目预览入口(本地\x20dev\x20打开的面板无需工作台)。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountCellState\x22>未加载</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-preview-list\x22\x20id=\x22accountPreviewList\x22></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a</div>\x0a\x0a<div\x20class=\x22factory-overlay\x22\x20id=\x22factoryOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22factory-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-title\x22>任务中心</span>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-app\x22\x20id=\x22factoryApp\x22\x20title=\x22当前应用\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-tabs\x22\x20id=\x22factoryTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x20active\x22\x20data-tab=\x22task\x22>任务</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22story\x22>需求</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22issue\x22>问题</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22factory-filters\x22\x20id=\x22factoryFilters\x22></div>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-new\x22\x20id=\x22factoryNew\x22>新建</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-body\x22\x20id=\x22factoryBody\x22></div>\x0a\x20\x20<div\x20class=\x22factory-detail\x22\x20id=\x22factoryDetail\x22\x20style=\x22display:none\x22></div>\x0a\x20\x20<div\x20class=\x22factory-msg\x22\x20id=\x22factoryMsg\x22></div>\x0a</div>\x0a\x0a<div\x20class=\x22debug-overlay\x22\x20id=\x22debugOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22debug-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-title\x22>调试</span>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-target\x20offline\x22\x20id=\x22debugTarget\x22>未连接页面</span>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-tabs\x22\x20id=\x22debugTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x20active\x22\x20data-tab=\x22debug\x22>调试</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22click\x22>点击</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22eval\x22>执行JS</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22shot\x22>截图</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22debug\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22debugSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>节点上限</label><input\x20id=\x22debugMaxNodes\x22\x20type=\x22number\x22\x20value=\x22250\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22debugRun\x22>采集</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22debug-auto\x22><input\x20type=\x22checkbox\x22\x20id=\x22debugAuto\x22\x20checked>自动刷新</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>页面</h4><pre\x20id=\x22debugMeta\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>错误\x20<span\x20id=\x22debugErrorCount\x22></span></h4><pre\x20id=\x22debugErrors\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>控制台</h4><pre\x20id=\x22debugConsole\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>网络</h4><pre\x20id=\x22debugNet\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>DOM\x20摘要</h4><pre\x20id=\x22debugDom\x22></pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22click\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>选择器</label><input\x20id=\x22clickSelector\x22\x20placeholder=\x22#app\x20.btn\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x22\x20id=\x22clickFind\x22>查询</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22clickRun\x22>点击</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22clickResult\x22>—</pre></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>匹配元素(点条目直接点击)</h4><div\x20class=\x22debug-list\x22\x20id=\x22clickList\x22></div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22eval\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><label>JavaScript(Ctrl/Cmd+Enter\x20执行)</label></div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22evalCode\x22\x20rows=\x225\x22\x20placeholder=\x22document.title\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22evalRun\x22>执行</button><span\x20class=\x22debug-hint\x22>最后表达式的值即结果</span></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22evalResult\x22>—</pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22shot\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22shotSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>缩放</label><input\x20id=\x22shotScale\x22\x20type=\x22number\x22\x20value=\x221\x22\x20step=\x220.5\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22shotRun\x22>截图</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20class=\x22debug-btn\x22\x20id=\x22shotDownload\x22\x20download=\x22aiwith-shot.png\x22\x20style=\x22display:none\x22>下载</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22debug-hint\x22>自动排除\x20AiWith\x20浮标/抽屉</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><div\x20class=\x22debug-shot\x22\x20id=\x22shotBox\x22>暂无截图</div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-msg\x22\x20id=\x22debugMsg\x22></div>\x0a</div>\x0a<script\x20src=\x22/aiwith/panel.js\x22></script>\x0a<script\x20src=\x22/aiwith/factory.js\x22></script>\x0a<script\x20src=\x22/aiwith/debug.js\x22></script>\x0a<script\x20src=\x22/aiwith/account.js\x22></script>\x0a</body>\x0a</html>\x0a','panel.css':cM(0x204),'panel.js':cM(0x233),'widget.js':cM(0x1c2),'factory.css':'/*\x20AiWith\x20任务中心(Thor)覆盖层\x20——\x20复用\x20panel.css\x20的主题变量\x20*/\x0a#factoryBtn\x20{\x20position:\x20relative;\x20}\x0a.factory-unread\x20{\x20position:\x20absolute;\x20top:\x202px;\x20right:\x202px;\x20width:\x208px;\x20height:\x208px;\x20border-radius:\x2050%;\x20background:\x20var(--err);\x20display:\x20none;\x20}\x0a.factory-unread.show\x20{\x20display:\x20block;\x20}\x0a\x0a.factory-overlay\x20{\x0a\x20\x20position:\x20fixed;\x20top:\x200;\x20right:\x200;\x20bottom:\x200;\x20left:\x2046px;\x20z-index:\x2088;\x0a\x20\x20display:\x20none;\x20flex-direction:\x20column;\x0a\x20\x20background:\x20var(--bg);\x20color:\x20var(--text);\x20font-size:\x2013px;\x0a}\x0a.factory-overlay.show\x20{\x20display:\x20flex;\x20}\x0a\x0a.factory-head\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20padding:\x2010px\x2012px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--header-bg);\x20backdrop-filter:\x20blur(8px);\x0a}\x0a.factory-title\x20{\x20font-weight:\x20600;\x20font-size:\x2014px;\x20}\x0a.factory-app\x20{\x0a\x20\x20margin-left:\x20auto;\x20font-size:\x2012px;\x20padding:\x202px\x209px;\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border-strong);\x20background:\x20var(--bg-card);\x20color:\x20var(--text-dim);\x0a\x20\x20max-width:\x20150px;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x0a}\x0a.factory-icon-btn\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20justify-content:\x20center;\x20width:\x2026px;\x20height:\x2026px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x0a}\x0a.factory-icon-btn:hover\x20{\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a\x0a.factory-tabs\x20{\x20display:\x20flex;\x20gap:\x204px;\x20padding:\x208px\x2012px\x200;\x20}\x0a.factory-tab\x20{\x0a\x20\x20border:\x20none;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20font-size:\x2013px;\x20padding:\x206px\x2012px\x208px;\x0a\x20\x20border-radius:\x208px\x208px\x200\x200;\x20cursor:\x20pointer;\x20border-bottom:\x202px\x20solid\x20transparent;\x0a}\x0a.factory-tab.active\x20{\x20color:\x20var(--brand-text);\x20border-bottom-color:\x20var(--brand);\x20font-weight:\x20600;\x20}\x0a\x0a.factory-toolbar\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20padding:\x208px\x2012px;\x20border-bottom:\x201px\x20solid\x20var(--border);\x20}\x0a.factory-filters\x20{\x20display:\x20flex;\x20gap:\x206px;\x20flex:\x201;\x20overflow-x:\x20auto;\x20}\x0a.factory-filter\x20{\x0a\x20\x20font-size:\x2012px;\x20padding:\x203px\x209px;\x20border-radius:\x20999px;\x20border:\x201px\x20solid\x20var(--border);\x0a\x20\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x20white-space:\x20nowrap;\x0a}\x0a.factory-filter.active\x20{\x20background:\x20var(--brand-soft);\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20}\x0a.factory-new\x20{\x20font-size:\x2012px;\x20padding:\x205px\x2012px;\x20border-radius:\x208px;\x20border:\x20none;\x20background:\x20var(--gradient);\x20color:\x20#fff;\x20cursor:\x20pointer;\x20}\x0a\x0a.factory-body\x20{\x20flex:\x201;\x20overflow-y:\x20auto;\x20padding:\x2010px\x2012px\x2024px;\x20}\x0a.factory-item\x20{\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x2010px;\x20padding:\x209px\x2011px;\x20margin-bottom:\x208px;\x20background:\x20var(--bg-card);\x20cursor:\x20pointer;\x20}\x0a.factory-item:hover\x20{\x20border-color:\x20var(--brand-strong);\x20}\x0a.factory-item-top\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20}\x0a.factory-item-title\x20{\x20flex:\x201;\x20font-size:\x2013px;\x20font-weight:\x20500;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20}\x0a.factory-tag\x20{\x20font-size:\x2011px;\x20padding:\x201px\x207px;\x20border-radius:\x20999px;\x20color:\x20#fff;\x20white-space:\x20nowrap;\x20}\x0a.factory-item-sub\x20{\x20margin-top:\x205px;\x20font-size:\x2011px;\x20color:\x20var(--text-faint);\x20display:\x20flex;\x20gap:\x2010px;\x20flex-wrap:\x20wrap;\x20}\x0a.factory-fail\x20{\x20color:\x20var(--err);\x20font-size:\x2011px;\x20margin-top:\x204px;\x20word-break:\x20break-all;\x20}\x0a.factory-empty\x20{\x20text-align:\x20center;\x20color:\x20var(--text-faint);\x20font-size:\x2012px;\x20padding:\x2040px\x200;\x20}\x0a\x0a.factory-form,\x20.factory-detail\x20{\x20position:\x20absolute;\x20inset:\x200;\x20z-index:\x205;\x20display:\x20none;\x20flex-direction:\x20column;\x20background:\x20var(--bg);\x20}\x0a.factory-form.show,\x20.factory-detail.show\x20{\x20display:\x20flex;\x20}\x0a.factory-panel-head\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20padding:\x2010px\x2012px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--header-bg);\x20backdrop-filter:\x20blur(8px);\x0a}\x0a.factory-panel-title\x20{\x20flex:\x201;\x20font-weight:\x20600;\x20font-size:\x2014px;\x20}\x0a.factory-panel-body\x20{\x20flex:\x201;\x20overflow-y:\x20auto;\x20padding:\x2012px;\x20}\x0a\x0a.factory-field\x20{\x20margin-bottom:\x2012px;\x20}\x0a.factory-label\x20{\x20display:\x20block;\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20margin-bottom:\x205px;\x20}\x0a.factory-input,\x20.factory-textarea\x20{\x0a\x20\x20width:\x20100%;\x20box-sizing:\x20border-box;\x20font-size:\x2013px;\x20padding:\x208px\x2010px;\x20border-radius:\x208px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border-strong);\x20background:\x20var(--bg-card);\x20color:\x20var(--text);\x20font-family:\x20inherit;\x0a}\x0a.factory-textarea\x20{\x20min-height:\x20110px;\x20resize:\x20vertical;\x20}\x0a.factory-submit\x20{\x0a\x20\x20width:\x20100%;\x20padding:\x209px;\x20border:\x20none;\x20border-radius:\x209px;\x20background:\x20var(--gradient);\x20color:\x20#fff;\x0a\x20\x20font-size:\x2013px;\x20cursor:\x20pointer;\x0a}\x0a.factory-submit[disabled]\x20{\x20opacity:\x20.6;\x20cursor:\x20default;\x20}\x0a.factory-check\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20font-size:\x2013px;\x20color:\x20var(--text-dim);\x20margin:\x204px\x200\x2014px;\x20cursor:\x20pointer;\x20}\x0a.factory-check\x20input\x20{\x20width:\x2015px;\x20height:\x2015px;\x20accent-color:\x20var(--brand);\x20}\x0a\x0a.factory-group\x20{\x20margin-bottom:\x2014px;\x20}\x0a.factory-group-title\x20{\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20margin-bottom:\x206px;\x20font-weight:\x20600;\x20}\x0a.factory-row\x20{\x20display:\x20flex;\x20gap:\x208px;\x20padding:\x205px\x200;\x20font-size:\x2013px;\x20border-bottom:\x201px\x20dashed\x20var(--border);\x20}\x0a.factory-row-k\x20{\x20color:\x20var(--text-dim);\x20min-width:\x2062px;\x20}\x0a.factory-row-v\x20{\x20flex:\x201;\x20word-break:\x20break-all;\x20}\x0a.factory-stage\x20{\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x209px;\x20padding:\x208px\x2010px;\x20margin-bottom:\x207px;\x20background:\x20var(--bg-card);\x20cursor:\x20pointer;\x20}\x0a.factory-stage:hover\x20{\x20border-color:\x20var(--brand-strong);\x20}\x0a.factory-actions\x20{\x20display:\x20flex;\x20flex-wrap:\x20wrap;\x20gap:\x208px;\x20margin:\x2010px\x200;\x20}\x0a.factory-btn\x20{\x20padding:\x206px\x2014px;\x20border-radius:\x208px;\x20border:\x201px\x20solid\x20var(--border-strong);\x20background:\x20none;\x20color:\x20var(--text);\x20font-size:\x2012px;\x20cursor:\x20pointer;\x20}\x0a.factory-btn.primary\x20{\x20background:\x20var(--brand-soft);\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20}\x0a.factory-btn.danger\x20{\x20background:\x20rgba(220,\x2038,\x2038,\x20.08);\x20color:\x20var(--err);\x20border-color:\x20rgba(220,\x2038,\x2038,\x20.35);\x20}\x0a.factory-btn[disabled]\x20{\x20opacity:\x20.5;\x20cursor:\x20default;\x20}\x0a.factory-msg-item\x20{\x20font-size:\x2012px;\x20padding:\x206px\x200;\x20border-bottom:\x201px\x20dashed\x20var(--border);\x20}\x0a.factory-msg-type\x20{\x20color:\x20var(--brand-text);\x20margin-right:\x206px;\x20}\x0a\x0a.factory-msg\x20{\x0a\x20\x20position:\x20absolute;\x20left:\x2050%;\x20bottom:\x2018px;\x20transform:\x20translateX(-50%);\x20max-width:\x2088%;\x0a\x20\x20padding:\x208px\x2014px;\x20border-radius:\x209px;\x20font-size:\x2012px;\x20background:\x20#1f2733;\x20color:\x20#dbe4f0;\x0a\x20\x20box-shadow:\x20var(--shadow);\x20display:\x20none;\x20z-index:\x209;\x20word-break:\x20break-all;\x0a}\x0a.factory-msg.show\x20{\x20display:\x20block;\x20}\x0a.factory-msg.err\x20{\x20background:\x20rgba(220,\x2038,\x2038,\x20.95);\x20color:\x20#fff;\x20}\x0a','factory.js':'/**\x0a\x20*\x20AiWith\x20任务中心(Thor)面板模块(仅\x20dev)。\x0a\x20*\x20与\x20panel.js\x20解耦:自身持有工具栏按钮、覆盖层、请求与渲染;SSE\x20实时\x20+\x20轮询兜底。\x0a\x20*\x20只管理「当前应用」——应用名由插件启动时的\x20name\x20决定,桥接层统一注入,面板不做应用切换。\x0a\x20*\x20契约:面板\x20→\x20/aiwith/api/factory*(桥接)→\x20Thor;Thor\x20一律\x20POST\x20+\x20JSON,\x0a\x20*\x20\x20\x20\x20\x20\x20响应信封\x20{\x20success,\x20action,\x20data,\x20message\x20}(action\x200=成功\x20/\x202=未登录\x20/\x209=错误)。\x0a\x20*/\x0a!(function\x20()\x20{\x0a\x20\x20\x27use\x20strict\x27;\x0a\x20\x20var\x20$\x20=\x20function\x20(id)\x20{\x20return\x20document.getElementById(id);\x20};\x0a\x20\x20if\x20(!$(\x27factoryOverlay\x27))\x20{\x20return;\x20}\x0a\x0a\x20\x20//\x20----------\x20字典(与\x20Thor\x20factoryTaskStatus\x20等一致)----------\x0a\x20\x20var\x20DICT\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x200:\x20[\x27已创建\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27规划\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27执行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stage:\x20{\x200:\x20[\x27排队\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已派发\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27运行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20story:\x20{\x200:\x20[\x27待办\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已下单\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已完成\x27,\x20\x27#10B981\x27],\x206:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20priority:\x20{\x200:\x20[\x27高\x27,\x20\x27#EF4444\x27],\x202:\x20[\x27中\x27,\x20\x27#F59E0B\x27],\x204:\x20[\x27低\x27,\x20\x27#94A3B8\x27]\x20},\x0a\x20\x20\x20\x20issue:\x20{\x200:\x20[\x27待处理\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27修复中\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已解决\x27,\x20\x27#10B981\x27],\x206:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x208:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stageName:\x20{\x20plan:\x20\x27规划\x27,\x20confirm:\x20\x27双重确认\x27,\x20models:\x20\x27建模\x27,\x20tools:\x20\x27工具\x27,\x20pages:\x20\x27页面\x27,\x20backend:\x20\x27后端\x27,\x20review:\x20\x27复核\x27,\x20fix:\x20\x27修复\x27,\x20verify:\x20\x27门禁\x27,\x20e2e:\x20\x27e2e\x20验收\x27,\x20merge:\x20\x27合并发布\x27\x20},\x0a\x20\x20\x20\x20msgType:\x20{\x20text:\x20\x27文本\x27,\x20thinking:\x20\x27思考\x27,\x20tool_use:\x20\x27工具\x27,\x20tool_result:\x20\x27结果\x27,\x20user:\x20\x27用户\x27,\x20assistant:\x20\x27Agent\x27\x20},\x0a\x20\x20\x20\x20source:\x20{\x201:\x20\x27手动提交\x27,\x202:\x20\x27任务副产物\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20ENDPOINTS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x20list:\x20\x27/api/factory/tasks\x27,\x20detail:\x20\x27/api/factory/task\x27,\x20activities:\x20\x27/api/factory/activities\x27,\x20messages:\x20\x27/api/factory/messages\x27,\x20idKey:\x20\x27taskId\x27\x20},\x0a\x20\x20\x20\x20story:\x20{\x20list:\x20\x27/api/factoryStory/stories\x27,\x20detail:\x20\x27/api/factoryStory/story\x27,\x20activities:\x20\x27/api/factoryStory/activities\x27,\x20idKey:\x20\x27storyId\x27\x20},\x0a\x20\x20\x20\x20issue:\x20{\x20list:\x20\x27/api/factoryIssue/issues\x27,\x20detail:\x20\x27/api/factoryIssue/issue\x27,\x20activities:\x20\x27/api/factoryIssue/activities\x27,\x20messages:\x20\x27/api/factoryIssue/messages\x27,\x20idKey:\x20\x27issueId\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20FILTERS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x27active\x27,\x20\x27进行中\x27],\x20[\x27done\x27,\x20\x27完成\x27],\x20[\x27failed\x27,\x20\x27失败\x27],\x20[\x27cancelled\x27,\x20\x27取消\x27]],\x0a\x20\x20\x20\x20story:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待办\x27],\x20[\x272\x27,\x20\x27已下单\x27],\x20[\x274\x27,\x20\x27已完成\x27],\x20[\x276\x27,\x20\x27已取消\x27]],\x0a\x20\x20\x20\x20issue:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待处理\x27],\x20[\x272\x27,\x20\x27修复中\x27],\x20[\x274\x27,\x20\x27已解决\x27],\x20[\x276\x27,\x20\x27失败\x27],\x20[\x278\x27,\x20\x27已取消\x27]],\x0a\x20\x20};\x0a\x20\x20var\x20TAB_LABEL\x20=\x20{\x20task:\x20\x27任务\x27,\x20story:\x20\x27需求\x27,\x20issue:\x20\x27问题\x27\x20};\x0a\x20\x20var\x20ACTIVE_TASK\x20=\x20[0,\x202,\x204,\x206];\x0a\x0a\x20\x20var\x20S\x20=\x20{\x0a\x20\x20\x20\x20open:\x20false,\x20booted:\x20false,\x20app:\x20\x27\x27,\x0a\x20\x20\x20\x20tab:\x20\x27task\x27,\x20filters:\x20{\x20task:\x20\x27all\x27,\x20story:\x20\x27all\x27,\x20issue:\x20\x27all\x27\x20},\x0a\x20\x20\x20\x20lists:\x20{\x20task:\x20[],\x20story:\x20[],\x20issue:\x20[]\x20},\x0a\x20\x20\x20\x20detail:\x20null,\x20detailKind:\x20\x27\x27,\x20detailStage:\x20null,\x20activities:\x20[],\x20detailStageMessages:\x20[],\x0a\x20\x20\x20\x20streamDownUntil:\x200,\x0a\x20\x20};\x0a\x20\x20var\x20POLL_MS\x20=\x204000,\x20SAFETY_MS\x20=\x2030000,\x20BG_MS\x20=\x2030000;\x0a\x20\x20var\x20timers\x20=\x20{\x20poll:\x20null,\x20safety:\x20null,\x20bg:\x20null,\x20retry:\x20null,\x20debounce:\x20null\x20};\x0a\x20\x20var\x20streamAbort\x20=\x20null,\x20streamAlive\x20=\x20false;\x0a\x0a\x20\x20//\x20----------\x20工具\x20----------\x0a\x20\x20function\x20esc(s)\x20{\x0a\x20\x20\x20\x20return\x20String(s\x20==\x20null\x20?\x20\x27\x27\x20:\x20s).replace(/[&<>\x22\x27]/g,\x20function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20\x27&\x27:\x20\x27&\x27,\x20\x27<\x27:\x20\x27<\x27,\x20\x27>\x27:\x20\x27>\x27,\x20\x27\x22\x27:\x20\x27"\x27,\x20\x22\x27\x22:\x20\x27'\x27\x20}[c];\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20getToken()\x20{\x20try\x20{\x20return\x20localStorage.getItem(\x27zen-aiwith:token\x27)\x20||\x20localStorage.getItem(\x27_token_\x27)\x20||\x20\x27\x27;\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x20}\x0a\x20\x20function\x20fmtTime(sec)\x20{\x0a\x20\x20\x20\x20if\x20(!sec)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20d\x20=\x20new\x20Date(Number(sec)\x20*\x201000);\x0a\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20function\x20(n)\x20{\x20return\x20n\x20<\x2010\x20?\x20\x270\x27\x20+\x20n\x20:\x20\x27\x27\x20+\x20n;\x20};\x0a\x20\x20\x20\x20\x20\x20return\x20d.getFullYear()\x20+\x20\x27-\x27\x20+\x20p(d.getMonth()\x20+\x201)\x20+\x20\x27-\x27\x20+\x20p(d.getDate())\x20+\x20\x27\x20\x27\x20+\x20p(d.getHours())\x20+\x20\x27:\x27\x20+\x20p(d.getMinutes());\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20tag(map,\x20val)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20map[val];\x0a\x20\x20\x20\x20var\x20label\x20=\x20it\x20?\x20it[0]\x20:\x20String(val);\x0a\x20\x20\x20\x20var\x20color\x20=\x20it\x20?\x20it[1]\x20:\x20\x27#6B7280\x27;\x0a\x20\x20\x20\x20return\x20\x27<span\x20class=\x22factory-tag\x22\x20style=\x22background:\x27\x20+\x20color\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</span>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20msg(text,\x20isErr)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryMsg\x27);\x0a\x20\x20\x20\x20el.textContent\x20=\x20text;\x0a\x20\x20\x20\x20el.className\x20=\x20\x27factory-msg\x20show\x27\x20+\x20(isErr\x20?\x20\x27\x20err\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20clearTimeout(msg._t);\x0a\x20\x20\x20\x20msg._t\x20=\x20setTimeout(function\x20()\x20{\x20el.className\x20=\x20\x27factory-msg\x27;\x20},\x20isErr\x20?\x205200\x20:\x202600);\x0a\x20\x20}\x0a\x20\x20function\x20promptLogin()\x20{\x0a\x20\x20\x20\x20msg(\x27未登录:请先登录任务中心服务后重试\x27,\x20true);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20请求(面板\x20→\x20桥接\x20→\x20Thor;app\x20由桥接统一注入)----------\x0a\x20\x20function\x20head()\x20{\x0a\x20\x20\x20\x20return\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27,\x20Token:\x20getToken()\x20};\x0a\x20\x20}\x0a\x20\x20function\x20post(path,\x20body)\x20{\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith\x27\x20+\x20path,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20head(),\x20body:\x20JSON.stringify(body\x20||\x20{})\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20r.text().then(function\x20(t)\x20{\x20var\x20p\x20=\x20{};\x20try\x20{\x20p\x20=\x20JSON.parse(t);\x20}\x20catch\x20(e)\x20{\x20/*\x20非\x20JSON\x20*/\x20}\x20return\x20{\x20r:\x20r,\x20p:\x20p\x20};\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20o.p;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(p\x20&&\x20p.action\x20===\x202)\x20{\x20var\x20e\x20=\x20new\x20Error(\x27未登录\x27);\x20e.login\x20=\x20true;\x20throw\x20e;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!o.r.ok\x20||\x20(p\x20&&\x20p.success\x20===\x20false))\x20{\x20throw\x20new\x20Error((p\x20&&\x20p.message)\x20||\x20(\x27HTTP\x20\x27\x20+\x20o.r.status));\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20p\x20?\x20p.data\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20头部\x20/\x20启动\x20----------\x0a\x20\x20function\x20renderHead()\x20{\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).textContent\x20=\x20S.app\x20||\x20\x27未配置应用\x27;\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).title\x20=\x20S.app\x20?\x20(\x27当前应用:\x27\x20+\x20S.app)\x20:\x20\x27未取到应用名(插件启动\x20name)\x27;\x0a\x20\x20}\x0a\x20\x20function\x20boot()\x20{\x0a\x20\x20\x20\x20if\x20(S.booted)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20S.booted\x20=\x20true;\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/factory/config\x27).then(function\x20(r)\x20{\x20return\x20r.json();\x20}).then(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(c)\x20{\x20S.app\x20=\x20c.app\x20||\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20renderHead();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20renderHead();\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20列表\x20----------\x0a\x20\x20function\x20filtered(tab)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20S.filters[tab];\x0a\x20\x20\x20\x20var\x20list\x20=\x20S.lists[tab]\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(f\x20===\x20\x27all\x27)\x20{\x20return\x20list;\x20}\x0a\x20\x20\x20\x20return\x20list.filter(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(tab\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27active\x27)\x20{\x20return\x20ACTIVE_TASK.indexOf(it.status)\x20>\x20-1;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27done\x27)\x20{\x20return\x20it.status\x20===\x208;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27failed\x27)\x20{\x20return\x20it.status\x20===\x2010;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27cancelled\x27)\x20{\x20return\x20it.status\x20===\x2012;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20it.status\x20===\x20Number(f);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20renderTabs()\x20{\x0a\x20\x20\x20\x20var\x20tabs\x20=\x20$(\x27factoryTabs\x27).querySelectorAll(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20tabs.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20tabs[i].classList.toggle(\x27active\x27,\x20tabs[i].getAttribute(\x27data-tab\x27)\x20===\x20S.tab);\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20renderFilters()\x20{\x0a\x20\x20\x20\x20var\x20opts\x20=\x20FILTERS[S.tab]\x20||\x20[];\x0a\x20\x20\x20\x20$(\x27factoryFilters\x27).innerHTML\x20=\x20opts.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-filter\x27\x20+\x20(S.filters[S.tab]\x20===\x20o[0]\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-f=\x22\x27\x20+\x20o[0]\x20+\x20\x27\x22>\x27\x20+\x20o[1]\x20+\x20\x27</button>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20itemTask(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22task\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20(\x27任务\x20\x27\x20+\x20String(it.id).slice(-6)))\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.task,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.gitBranch\x20?\x20\x27<span>\x27\x20+\x20esc(it.gitBranch)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20(it.destructive\x20?\x20\x27<span>高风险</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemStory(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22story\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20\x27需求\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.story,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20tag(DICT.priority,\x20it.priority)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.taskId\x20?\x20\x27<span>任务\x20\x27\x20+\x20esc(String(it.taskId).slice(-6))\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemIssue(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22issue\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20it.content\x20||\x20\x27问题\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.issue,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(DICT.source[it.source]\x20||\x20\x27手动提交\x27)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.createGmt)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderList()\x20{\x0a\x20\x20\x20\x20renderFilters();\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryBody\x27);\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>未取到应用名(插件启动\x20name),无法管理工厂任务</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rows\x20=\x20filtered(S.tab);\x0a\x20\x20\x20\x20if\x20(!rows.length)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>暂无\x27\x20+\x20TAB_LABEL[S.tab]\x20+\x20\x27</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20rows.map(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27task\x27)\x20{\x20return\x20itemTask(it);\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27story\x27)\x20{\x20return\x20itemStory(it);\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20itemIssue(it);\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20loadList(tab)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[tab].list,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.lists[tab]\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20d;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20refresh()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20renderList();\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20loadList(S.tab).then(renderList).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27加载失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20详情\x20----------\x0a\x20\x20function\x20panelHead(title)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-panel-head\x22><button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryBack\x22\x20title=\x22返回\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m15\x2018-6-6\x206-6\x22/></svg></button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22factory-panel-title\x22>\x27\x20+\x20esc(title)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20openDetail(kind,\x20id)\x20{\x0a\x20\x20\x20\x20S.detailKind\x20=\x20kind;\x20S.detailStage\x20=\x20null;\x20S.detailStageMessages\x20=\x20[];\x20S.detail\x20=\x20null;\x20S.activities\x20=\x20[];\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>加载中…</div></div>\x27;\x0a\x20\x20\x20\x20loadDetail(id);\x0a\x20\x20}\x0a\x20\x20function\x20closeDetail()\x20{\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x20el.classList.remove(\x27show\x27);\x20el.innerHTML\x20=\x20\x27\x27;\x20S.detail\x20=\x20null;\x20S.detailStage\x20=\x20null;\x20}\x0a\x20\x20function\x20loadDetail(id)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[S.detailKind].detail,\x20{\x20id:\x20id\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detail\x20=\x20d\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20return\x20loadActivities(S.detailKind,\x20id).then(function\x20(acts)\x20{\x20S.activities\x20=\x20acts\x20||\x20[];\x20renderDetail();\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(el)\x20{\x20el.innerHTML\x20=\x20panelHead(\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>\x27\x20+\x20esc(e.login\x20?\x20\x27未登录\x27\x20:\x20(\x27加载失败:\x27\x20+\x20e.message))\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20loadActivities(kind,\x20id)\x20{\x0a\x20\x20\x20\x20var\x20body\x20=\x20{};\x20body[ENDPOINTS[kind].idKey]\x20=\x20id;\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[kind].activities,\x20body).catch(function\x20()\x20{\x20return\x20[];\x20});\x0a\x20\x20}\x0a\x20\x20function\x20infoRow(k,\x20v)\x20{\x20return\x20v\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>\x27\x20+\x20esc(k)\x20+\x20\x27</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(v)\x20+\x20\x27</span></div>\x27\x20:\x20\x27\x27;\x20}\x0a\x20\x20function\x20renderDetail()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.detailKind,\x20o\x20=\x20S.detail\x20||\x20{};\x0a\x20\x20\x20\x20var\x20body\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>任务信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.task,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27创建人\x27,\x20o.creator)\x20+\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.destructive\x20?\x20infoRow(\x27标记\x27,\x20\x27高风险(删除/重构/迁移)\x27)\x20:\x20\x27\x27)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.result\x20&&\x20o.result.summary)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>本地执行结果</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.result.summary)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20(Array.isArray(o.result.files)\x20&&\x20o.result.files.length\x20?\x20\x27<div\x20class=\x22factory-item-sub\x22\x20style=\x22margin-top:6px\x22>\x27\x20+\x20o.result.files.map(function\x20(f)\x20{\x20return\x20\x27<span>\x27\x20+\x20esc(f)\x20+\x20\x27</span>\x27;\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>故事信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.story,\x20o.status)\x20+\x20\x27\x20\x27\x20+\x20tag(DICT.priority,\x20o.priority)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.taskId\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>关联任务</span><span\x20class=\x22factory-row-v\x22><a\x20href=\x22javascript:void(0)\x22\x20data-open-task=\x22\x27\x20+\x20esc(o.taskId)\x20+\x20\x27\x22>\x27\x20+\x20esc(o.taskId)\x20+\x20\x27</a></span></div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述\x20/\x20验收条件</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.issue,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27来源\x27,\x20DICT.source[o.source]\x20||\x20\x27手动提交\x27)\x20+\x20infoRow(\x27来源任务\x27,\x20o.taskId)\x20+\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.content)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题内容</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.content)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20if\x20(o.stages\x20&&\x20o.stages.length)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>修复阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(S.detailStage)\x20{\x20body\x20+=\x20transcriptHtml(S.detailStage);\x20}\x0a\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>活动时间线</div>\x27\x20+\x20activitiesHtml()\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20$(\x27factoryDetail\x27).innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22>\x27\x20+\x20body\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20stagesHtml(kind,\x20stages)\x20{\x0a\x20\x20\x20\x20if\x20(!stages\x20||\x20!stages.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无阶段</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20stages.map(function\x20(t)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-stage\x22\x20data-stage=\x22\x27\x20+\x20esc(t.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(DICT.stageName[t.stage]\x20||\x20t.stage)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.stage,\x20t.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(t.model\x20||\x20\x27-\x27)\x20+\x20\x27</span><span>第\x27\x20+\x20esc(t.attempt)\x20+\x20\x27次</span>\x27\x20+\x20(t.failureReason\x20?\x20\x27<span\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(t.failureReason)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20isLocalTask(o)\x20{\x20return\x20!!(o\x20&&\x20o.gitBranch\x20&&\x20String(o.gitBranch).indexOf(\x27local-\x27)\x20===\x200);\x20}\x0a\x20\x20function\x20actionsHtml(kind,\x20o)\x20{\x0a\x20\x20\x20\x20var\x20b\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x20b.push(\x27<button\x20class=\x22factory-btn\x20primary\x22\x20data-act=\x22localStart\x22>本地执行</button>\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x208\x20},\x20\x27确认本地执行已完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记失败\x27,\x20\x27danger\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x2010\x20},\x20\x27确认本地执行失败?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20//\x20本地任务(gitBranch=local-*):提供「转远端重跑」,把需求交回远端工厂流水线\x0a\x20\x20\x20\x20\x20\x20if\x20(isLocalTask(o)\x20&&\x20[0,\x204,\x208,\x2010].indexOf(o.status)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(\x27<button\x20class=\x22factory-btn\x22\x20data-act=\x22remoteRerun\x22>转远端重跑</button>\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(ACTIVE_TASK.indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelTask\x27,\x20\x27取消任务\x27,\x20\x27danger\x27,\x20\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此任务?进行中的阶段将停止\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27orderTask\x27,\x20\x27下单到工厂\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/orderTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定下单?将生成工厂任务并自动执行\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27removeStory\x27,\x20\x27删除\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/removeStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定删除此待办需求?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(o.status\x20===\x202)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27markDone\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/markDone\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定验收通过并标记完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27unorder\x27,\x20\x27撤回下单\x27,\x20\x27\x27,\x20\x27/api/factoryStory/unorder\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定撤回下单?运行中任务将一并取消\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20!==\x204)\x20{\x20b.push(btn(\x27cancelStory\x27,\x20\x27取消\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/cancelStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此需求?\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x204,\x206].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27reopenIssue\x27,\x20\x27重新修复\x27,\x20\x27primary\x27,\x20\x27/api/factoryIssue/reopenIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定重新修复此问题?\x27));\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x202].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelIssue\x27,\x20\x27取消问题\x27,\x20\x27danger\x27,\x20\x27/api/factoryIssue/cancelIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此问题?\x27));\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20b.length\x20?\x20\x27<div\x20class=\x22factory-actions\x22>\x27\x20+\x20b.join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27;\x0a\x20\x20}\x0a\x20\x20function\x20btn(name,\x20label,\x20cls,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-btn\x20\x27\x20+\x20(cls\x20||\x20\x27\x27)\x20+\x20\x27\x22\x20data-act=\x22\x27\x20+\x20name\x20+\x20\x27\x22\x20data-ep=\x22\x27\x20+\x20esc(ep)\x20+\x20\x27\x22\x20data-body=\x22\x27\x20+\x20esc(JSON.stringify(body))\x20+\x20\x27\x22\x20data-confirm=\x22\x27\x20+\x20esc(confirmText\x20||\x20\x27\x27)\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</button>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20activitiesHtml()\x20{\x0a\x20\x20\x20\x20var\x20acts\x20=\x20S.activities\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!acts.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无活动</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20acts.map(function\x20(a)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(a.summary\x20||\x20\x27\x27)\x20+\x20\x27</span><span\x20style=\x22color:var(--text-faint);font-size:11px\x22>\x27\x20+\x20fmtTime(a.createGmt)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20transcriptHtml(stageId)\x20{\x0a\x20\x20\x20\x20var\x20m\x20=\x20S.detailStageMessages\x20||\x20[];\x0a\x20\x20\x20\x20var\x20list\x20=\x20m.length\x20?\x20m.map(function\x20(x)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-msg-item\x22><span\x20class=\x22factory-msg-type\x22>\x27\x20+\x20esc(DICT.msgType[x.type]\x20||\x20x.type)\x20+\x20\x27</span>\x27\x20+\x20esc(x.content\x20||\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20:\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无执行消息</div>\x27;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>执行记录\x20<span\x20style=\x22color:var(--text-faint)\x22>#\x27\x20+\x20esc(String(stageId).slice(-6))\x20+\x20\x27</span></div>\x27\x20+\x20list\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20动作\x20----------\x0a\x20\x20function\x20runAction(name,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20if\x20(confirmText\x20&&\x20!window.confirm(confirmText))\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20post(ep,\x20body).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已提交\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20return\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg((name\x20?\x20name\x20+\x20\x27:\x27\x20:\x20\x27\x27)\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20//\x20转远端重跑:新建一个非本地任务承接同一需求;当前本地任务若仍活跃则取消\x0a\x20\x20function\x20rerunRemote(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/createTask\x27,\x20{\x20title:\x20task.title\x20||\x20\x27\x27,\x20description:\x20task.description\x20||\x20\x27\x27\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已转远端工厂执行\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(task.status\x20===\x200\x20||\x20task.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20post(\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20task.id\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27转远端失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20openTranscript(stageId)\x20{\x0a\x20\x20\x20\x20S.detailStage\x20=\x20stageId;\x20S.detailStageMessages\x20=\x20[];\x0a\x20\x20\x20\x20renderDetail();\x0a\x20\x20\x20\x20var\x20ep\x20=\x20ENDPOINTS[S.detailKind].messages;\x0a\x20\x20\x20\x20if\x20(!ep)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(ep,\x20{\x20stageId:\x20stageId,\x20page:\x200,\x20pageSize:\x20100\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detailStageMessages\x20=\x20(d\x20&&\x20(d.list\x20||\x20d.data))\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detailStage\x20===\x20stageId)\x20{\x20renderDetail();\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20新建\x20----------\x0a\x20\x20function\x20openCreate()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20msg(\x27未取到应用名,无法创建\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20var\x20fields\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20var\x20localPref\x20=\x20true;\x0a\x20\x20\x20\x20try\x20{\x20localPref\x20=\x20localStorage.getItem(\x27zen-aiwith:factoryLocal\x27)\x20!==\x20\x270\x27;\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20=\x20field(\x27title\x27,\x20\x27需求标题\x27,\x20\x27input\x27,\x20\x27\x27,\x20true)\x20+\x20field(\x27description\x27,\x20\x27需求描述\x27,\x20\x27textarea\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<label\x20class=\x22factory-check\x22><input\x20type=\x22checkbox\x22\x20id=\x22f_local\x22\x27\x20+\x20(localPref\x20?\x20\x27\x20checked\x27\x20:\x20\x27\x27)\x20+\x20\x27>\x20本地执行(不排远端,创建后在本地\x20AiWith\x20跑;夜间/批量/大改造建议取消勾选走远端)</label>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20=\x20field(\x27title\x27,\x20\x27故事标题\x27,\x20\x27input\x27,\x20\x27\x27,\x20true)\x20+\x20field(\x27description\x27,\x20\x27需求描述\x20/\x20验收条件\x27,\x20\x27textarea\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>优先级</label><select\x20class=\x22factory-input\x22\x20id=\x22f_priority\x22><option\x20value=\x220\x22>高</option><option\x20value=\x222\x22\x20selected>中</option><option\x20value=\x224\x22>低</option></select></div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20=\x20field(\x27title\x27,\x20\x27问题标题\x27,\x20\x27input\x27,\x20\x27\x27,\x20true)\x20+\x20field(\x27content\x27,\x20\x27问题描述\x27,\x20\x27textarea\x27,\x20\x27\x27,\x20true);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20panelHead(\x27新建\x27\x20+\x20TAB_LABEL[kind])\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22>\x27\x20+\x20fields\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22factory-submit\x22\x20id=\x22factorySubmit\x22>创建\x27\x20+\x20TAB_LABEL[kind]\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:10px\x200;text-align:left\x22>提交后自动进入工厂流水线(应用\x20\x27\x20+\x20esc(S.app)\x20+\x20\x27,同应用串行)。</div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20field(name,\x20label,\x20type,\x20val,\x20required)\x20{\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27textarea\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>\x27\x20+\x20esc(label)\x20+\x20(required\x20?\x20\x27\x20*\x27\x20:\x20\x27\x27)\x20+\x20\x27</label><textarea\x20class=\x22factory-textarea\x22\x20id=\x22f_\x27\x20+\x20name\x20+\x20\x27\x22>\x27\x20+\x20esc(val\x20||\x20\x27\x27)\x20+\x20\x27</textarea></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>\x27\x20+\x20esc(label)\x20+\x20(required\x20?\x20\x27\x20*\x27\x20:\x20\x27\x27)\x20+\x20\x27</label><input\x20class=\x22factory-input\x22\x20id=\x22f_\x27\x20+\x20name\x20+\x20\x27\x22\x20value=\x22\x27\x20+\x20esc(val\x20||\x20\x27\x27)\x20+\x20\x27\x22></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20submitCreate()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20var\x20body\x20=\x20{};\x0a\x20\x20\x20\x20var\x20title\x20=\x20($(\x27f_title\x27)\x20||\x20{}).value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(!title.trim())\x20{\x20msg(\x27标题不能为空\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20body.title\x20=\x20title.trim();\x0a\x20\x20\x20\x20var\x20local\x20=\x20kind\x20===\x20\x27task\x27\x20&&\x20!!($(\x27f_local\x27)\x20||\x20{}).checked;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20localStorage.setItem(\x27zen-aiwith:factoryLocal\x27,\x20local\x20?\x20\x271\x27\x20:\x20\x270\x27);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20\x20\x20body.description\x20=\x20($(\x27f_description\x27)\x20||\x20{}).value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(local)\x20{\x20body.local\x20=\x201;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x20body.description\x20=\x20($(\x27f_description\x27)\x20||\x20{}).value\x20||\x20\x27\x27;\x20body.priority\x20=\x20Number(($(\x27f_priority\x27)\x20||\x20{}).value\x20||\x202);\x20}\x0a\x20\x20\x20\x20else\x20{\x20body.content\x20=\x20($(\x27f_content\x27)\x20||\x20{}).value\x20||\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20ep\x20=\x20{\x20task:\x20\x27/api/factory/createTask\x27,\x20story:\x20\x27/api/factoryStory/createStory\x27,\x20issue:\x20\x27/api/factoryIssue/createIssue\x27\x20}[kind];\x0a\x20\x20\x20\x20var\x20submit\x20=\x20$(\x27factorySubmit\x27);\x0a\x20\x20\x20\x20submit.disabled\x20=\x20true;\x0a\x20\x20\x20\x20post(ep,\x20body).then(function\x20(id)\x20{\x0a\x20\x20\x20\x20\x20\x20closeDetail();\x0a\x20\x20\x20\x20\x20\x20if\x20(local)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27本地任务已创建,开始本地执行…\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20startLocal({\x20id:\x20id,\x20title:\x20body.title,\x20description:\x20body.description\x20});\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27已创建,工厂开始执行\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20submit.disabled\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27创建失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20本地执行:把需求交给本地\x20AiWith\x20会话,在当前项目里跑\x20----------\x0a\x20\x20function\x20composeLocalPrompt(task)\x20{\x0a\x20\x20\x20\x20var\x20lines\x20=\x20[\x27【任务中心\x20·\x20本地执行】请在当前项目中完成以下任务,完成后简要总结改动:\x27,\x20\x27\x27];\x0a\x20\x20\x20\x20lines.push(\x27标题:\x27\x20+\x20(task.title\x20||\x20\x27\x27));\x0a\x20\x20\x20\x20if\x20(task.description)\x20{\x20lines.push(\x27描述:\x27);\x20lines.push(task.description);\x20}\x0a\x20\x20\x20\x20return\x20lines.join(\x27\x5cn\x27);\x0a\x20\x20}\x0a\x20\x20function\x20startLocal(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20先写回「执行中(4)」;失败不阻断本地执行\x0a\x20\x20\x20\x20post(\x27/api/factory/localResult\x27,\x20{\x20id:\x20task.id,\x20status:\x204\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20var\x20prompt\x20=\x20composeLocalPrompt(task);\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/session/reset\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20\x27{}\x27\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x20return\x20r.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20(payload\x20&&\x20payload.data)\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20throw\x20new\x20Error(\x27未创建本地会话\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/session/\x27\x20+\x20session.id\x20+\x20\x27/prompt\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20JSON.stringify({\x20text:\x20prompt\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20close();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.dispatchEvent(new\x20CustomEvent(\x27aiwith:open-session\x27,\x20{\x20detail:\x20{\x20id:\x20session.id,\x20title:\x20task.title\x20}\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20msg(\x27本地执行启动失败:\x27\x20+\x20(e\x20&&\x20e.message\x20?\x20e.message\x20:\x20e),\x20true);\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20SSE\x20实时\x20+\x20轮询兜底\x20----------\x0a\x20\x20function\x20scheduleRefresh()\x20{\x0a\x20\x20\x20\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.debounce\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x0a\x20\x20\x20\x20},\x20350);\x0a\x20\x20}\x0a\x20\x20function\x20connectStream()\x20{\x0a\x20\x20\x20\x20if\x20(!S.open)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20后端推送已知不可用:不反复请求,等低频重探时间到再试(轮询兜底接管)\x0a\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20clearTimeout(timers.retry);\x0a\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20S.streamDownUntil\x20-\x20Date.now());\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20ac\x20=\x20new\x20AbortController();\x0a\x20\x20\x20\x20streamAbort\x20=\x20ac;\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/factory/stream\x27,\x20{\x20headers:\x20{\x20Token:\x20getToken()\x20},\x20signal:\x20ac.signal\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(res)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.ok\x20||\x20!res.body)\x20{\x20throw\x20new\x20Error(\x27stream\x20http\x20\x27\x20+\x20res.status);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.streamDownUntil\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20reader\x20=\x20res.body.getReader();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20dec\x20=\x20new\x20TextDecoder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20buf\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pump\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20reader.read().then(function\x20(chunk)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(chunk.done)\x20{\x20throw\x20new\x20Error(\x27stream\x20ended\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20+=\x20dec.decode(chunk.value,\x20{\x20stream:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20idx;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while\x20((idx\x20=\x20buf.indexOf(\x27\x5cn\x5cn\x27))\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20handleFrame(buf.slice(0,\x20idx));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20=\x20buf.slice(idx\x20+\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ac.signal.aborted)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20delay;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.streamDownUntil\x20-\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x20(S.retries\x20||\x200)\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.retries\x20<=\x204\x20?\x201000\x20*\x20Math.pow(2,\x20S.retries)\x20:\x2060000;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20delay);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20handleFrame(frame)\x20{\x0a\x20\x20\x20\x20var\x20datas\x20=\x20frame.split(\x27\x5cn\x27).filter(function\x20(l)\x20{\x20return\x20l.indexOf(\x27data:\x27)\x20===\x200;\x20}).map(function\x20(l)\x20{\x20return\x20l.slice(5).trim();\x20});\x0a\x20\x20\x20\x20if\x20(!datas.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20evt\x20=\x20null;\x0a\x20\x20\x20\x20try\x20{\x20evt\x20=\x20JSON.parse(datas.join(\x27\x5cn\x27));\x20}\x20catch\x20(e)\x20{\x20evt\x20=\x20null;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27ping\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27unavailable\x27)\x20{\x20S.streamDownUntil\x20=\x20Date.now()\x20+\x205\x20*\x2060\x20*\x201000;\x20return;\x20}\x0a\x20\x20\x20\x20scheduleRefresh();\x0a\x20\x20}\x0a\x20\x20function\x20startSync()\x20{\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20connectStream();\x0a\x20\x20\x20\x20timers.poll\x20=\x20setInterval(function\x20()\x20{\x20if\x20(!streamAlive)\x20{\x20refresh();\x20}\x20},\x20POLL_MS);\x0a\x20\x20\x20\x20timers.safety\x20=\x20setInterval(function\x20()\x20{\x20refresh();\x20},\x20SAFETY_MS);\x0a\x20\x20}\x0a\x20\x20function\x20stopSync()\x20{\x0a\x20\x20\x20\x20clearInterval(timers.poll);\x20clearInterval(timers.safety);\x20clearTimeout(timers.retry);\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.poll\x20=\x20timers.safety\x20=\x20timers.retry\x20=\x20timers.debounce\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(streamAbort)\x20{\x20try\x20{\x20streamAbort.abort();\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x20streamAbort\x20=\x20null;\x20}\x0a\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20后台低频(关闭时维护未读点)----------\x0a\x20\x20function\x20startBg()\x20{\x20stopBg();\x20timers.bg\x20=\x20setInterval(bgPoll,\x20BG_MS);\x20}\x0a\x20\x20function\x20stopBg()\x20{\x20clearInterval(timers.bg);\x20timers.bg\x20=\x20null;\x20}\x0a\x20\x20function\x20bgPoll()\x20{\x0a\x20\x20\x20\x20if\x20(S.open\x20||\x20!S.app)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/tasks\x27,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20setUnread(list.some(function\x20(t)\x20{\x20return\x20ACTIVE_TASK.indexOf(t.status)\x20>\x20-1;\x20}));\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20function\x20setUnread(on)\x20{\x20var\x20dot\x20=\x20$(\x27factoryUnread\x27);\x20if\x20(dot)\x20{\x20dot.classList.toggle(\x27show\x27,\x20!!on);\x20}\x20}\x0a\x20\x20function\x20clearUnread()\x20{\x20setUnread(false);\x20}\x0a\x0a\x20\x20//\x20----------\x20打开/关闭\x20----------\x0a\x20\x20function\x20open()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20true;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.add(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20clearUnread();\x0a\x20\x20\x20\x20boot().then(function\x20()\x20{\x20refresh();\x20});\x0a\x20\x20\x20\x20startSync();\x0a\x20\x20\x20\x20stopBg();\x0a\x20\x20}\x0a\x20\x20function\x20close()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20false;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20\x20\x20closeDetail();\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20startBg();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20事件绑定\x20----------\x0a\x20\x20$(\x27factoryBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20else\x20{\x20open();\x20}\x20});\x0a\x20\x20//\x20切换到其它工具栏功能时收起工厂面板(主题切换除外,不打断),避免面板开在覆盖层之下\x0a\x20\x20var\x20toolRail\x20=\x20document.querySelector(\x27.tool-rail\x27);\x0a\x20\x20if\x20(toolRail)\x20{\x0a\x20\x20\x20\x20//\x20capture\x20阶段:panel.js\x20对\x20history/review\x20调了\x20stopPropagation,冒泡监听收不到\x0a\x20\x20\x20\x20toolRail.addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20b\x20=\x20e.target.closest(\x27.icon-btn\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!b\x20||\x20b.id\x20===\x20\x27factoryBtn\x27\x20||\x20b.id\x20===\x20\x27themeBtn\x27\x20||\x20b.id\x20===\x20\x27fullscreenBtn\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.open)\x20{\x20close();\x20}\x0a\x20\x20\x20\x20},\x20true);\x0a\x20\x20}\x0a\x20\x20$(\x27factoryClose\x27).addEventListener(\x27click\x27,\x20close);\x0a\x20\x20$(\x27factoryRefresh\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20refresh();\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20$(\x27factoryNew\x27).addEventListener(\x27click\x27,\x20openCreate);\x0a\x20\x20$(\x27factoryTabs\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20t\x20=\x20e.target.closest(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20if\x20(!t)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.tab\x20=\x20t.getAttribute(\x27data-tab\x27);\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20refresh();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryFilters\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20e.target.closest(\x27.factory-filter\x27);\x0a\x20\x20\x20\x20if\x20(!f)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.filters[S.tab]\x20=\x20f.getAttribute(\x27data-f\x27);\x0a\x20\x20\x20\x20renderList();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryBody\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20e.target.closest(\x27.factory-item\x27);\x0a\x20\x20\x20\x20if\x20(it)\x20{\x20openDetail(it.getAttribute(\x27data-kind\x27),\x20it.getAttribute(\x27data-id\x27));\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryDetail\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factoryBack\x27))\x20{\x20closeDetail();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factorySubmit\x27))\x20{\x20submitCreate();\x20return;\x20}\x0a\x20\x20\x20\x20var\x20openTask\x20=\x20e.target.closest(\x27[data-open-task]\x27);\x0a\x20\x20\x20\x20if\x20(openTask)\x20{\x20openDetail(\x27task\x27,\x20openTask.getAttribute(\x27data-open-task\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20stage\x20=\x20e.target.closest(\x27.factory-stage\x27);\x0a\x20\x20\x20\x20if\x20(stage)\x20{\x20openTranscript(stage.getAttribute(\x27data-stage\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20localBtn\x20=\x20e.target.closest(\x27[data-act=\x22localStart\x22]\x27);\x0a\x20\x20\x20\x20if\x20(localBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20startLocal({\x20id:\x20S.detail.id,\x20title:\x20S.detail.title,\x20description:\x20S.detail.description\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20rerunBtn\x20=\x20e.target.closest(\x27[data-act=\x22remoteRerun\x22]\x27);\x0a\x20\x20\x20\x20if\x20(rerunBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.confirm(\x27转远端工厂重跑?将新建一个远端任务,当前本地任务将被取消\x27))\x20{\x20rerunRemote(S.detail\x20||\x20{});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20act\x20=\x20e.target.closest(\x27.factory-btn[data-act]\x27);\x0a\x20\x20\x20\x20if\x20(act)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20body\x20=\x20{};\x20try\x20{\x20body\x20=\x20JSON.parse(act.getAttribute(\x27data-body\x27)\x20||\x20\x27{}\x27);\x20}\x20catch\x20(err)\x20{\x20body\x20=\x20{};\x20}\x0a\x20\x20\x20\x20\x20\x20runAction(act.getAttribute(\x27data-act\x27),\x20act.getAttribute(\x27data-ep\x27),\x20body,\x20act.getAttribute(\x27data-confirm\x27));\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27keydown\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.key\x20===\x20\x27Escape\x27\x20&&\x20S.open)\x20{\x20close();\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20启动:取工厂源与当前应用,开启后台未读轮询\x0a\x20\x20boot().then(startBg);\x0a})();\x0a','debug.css':cM(0x311),'debug.js':cM(0x2a6),'account.css':cM(0x264),'account.js':cM(0x298),'page-agent.js':cM(0x236),'opencode-plugin.js':'/**\x0a\x20*\x20AiWith\x20页内调试工具(OpenCode\x20插件模板)。\x0a\x20*\x0a\x20*\x20由\x20zen-app-plugin\x20在\x20dev\x20server\x20启动时生成到\x20<工程>/.opencode/plugins/aiwith-page/index.ts,\x0a\x20*\x20其中\x20origin\x20占位符会被替换为本次\x20dev\x20server\x20的真实地址。\x0a\x20*\x0a\x20*\x20为什么不用\x20chrome-devtools\x20MCP:\x0a\x20*\x20\x20\x20①\x20MCP\x20工具每次调用都要过授权弹窗,无法无人值守自动化;\x0a\x20*\x20\x20\x20②\x20本插件注册的是\x20OpenCode\x20原生工具,不走\x20MCP\x20权限流,任务中心的「本地执行」才能闭环。\x0a\x20*\x20目标页\x20=\x20AiWith\x20注入\x20page-agent\x20的宿主页;本插件只做\x20HTTP\x20转发到桥接(/aiwith/api/page/*),\x0a\x20*\x20仅\x20screenshot\x20会把图片落盘(node_modules/.cache/aiwith/shots,退回系统临时目录)。\x0a\x20*\x0a\x20*\x20⚠️\x20不要\x20import\x20\x22@opencode/plugin\x22:该包在目标工程内通常不可解析(工程\x20node_modules\x20没有它),\x0a\x20*\x20\x20\x20\x20一旦「使用」其绑定(如\x20Plugin.define(...))就会因解析失败导致整个插件加载失败\x0a\x20*\x20\x20\x20\x20(实测\x20opencode\x202.0.21:state=failed\x20\x22Plugin\x20failed\x20to\x20load\x22)。插件协议本身接受**纯对象**\x0a\x20*\x20\x20\x20\x20默认导出(`export\x20default\x20{\x20id,\x20setup\x20}`),Plugin.define\x20只是\x20identity\x20辅助函数,去掉零影响。\x0a\x20*/\x0aimport\x20{\x20mkdirSync,\x20writeFileSync\x20}\x20from\x20\x22node:fs\x22\x0aimport\x20{\x20join\x20}\x20from\x20\x22node:path\x22\x0aimport\x20{\x20tmpdir\x20}\x20from\x20\x22node:os\x22\x0a\x0aconst\x20ORIGIN\x20=\x20\x22__AIWITH_ORIGIN__\x22\x0a\x0aasync\x20function\x20call(cmd,\x20args,\x20signal)\x20{\x0a\x20\x20//\x20超时兜底:桥接侧\x20wait\x20最长\x2063s,这里给\x2070s;并与外部\x20signal\x20联动\x0a\x20\x20const\x20ctrl\x20=\x20new\x20AbortController()\x0a\x20\x20let\x20timedOut\x20=\x20false\x0a\x20\x20const\x20timer\x20=\x20setTimeout(()\x20=>\x20{\x20timedOut\x20=\x20true;\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20},\x2070000)\x0a\x20\x20const\x20onAbort\x20=\x20()\x20=>\x20{\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20}\x0a\x20\x20if\x20(signal)\x20{\x20signal.aborted\x20?\x20onAbort()\x20:\x20signal.addEventListener(\x22abort\x22,\x20onAbort,\x20{\x20once:\x20true\x20})\x20}\x0a\x20\x20let\x20res\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20res\x20=\x20await\x20fetch(ORIGIN\x20+\x20\x22/aiwith/api/page/\x22\x20+\x20cmd,\x20{\x0a\x20\x20\x20\x20\x20\x20method:\x20\x22POST\x22,\x0a\x20\x20\x20\x20\x20\x20headers:\x20{\x20\x22Content-Type\x22:\x20\x22application/json\x22\x20},\x0a\x20\x20\x20\x20\x20\x20body:\x20JSON.stringify(args\x20||\x20{}),\x0a\x20\x20\x20\x20\x20\x20signal:\x20ctrl.signal,\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(timedOut\x0a\x20\x20\x20\x20\x20\x20?\x20\x22页内接口超时(70s,dev\x20页面可能未响应)\x22\x0a\x20\x20\x20\x20\x20\x20:\x20(\x22连接\x20AiWith\x20dev\x20server\x20失败(\x22\x20+\x20ORIGIN\x20+\x20\x22):\x22\x20+\x20((error\x20&&\x20error.message)\x20||\x20error)))\x0a\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20clearTimeout(timer)\x0a\x20\x20\x20\x20if\x20(signal\x20&&\x20signal.removeEventListener)\x20{\x20signal.removeEventListener(\x22abort\x22,\x20onAbort)\x20}\x0a\x20\x20}\x0a\x20\x20const\x20json\x20=\x20await\x20res.json().catch(()\x20=>\x20null)\x0a\x20\x20if\x20(!json\x20||\x20json.ok\x20!==\x20true)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error((json\x20&&\x20json.message)\x20||\x20(\x22页内接口失败:HTTP\x20\x22\x20+\x20res.status))\x0a\x20\x20}\x0a\x20\x20return\x20json.data\x0a}\x0a\x0a//\x20紧凑\x20JSON(工具输出直供模型,pretty\x20缩进会放大约\x203\x20倍\x20token)\x0afunction\x20text(value)\x20{\x0a\x20\x20return\x20typeof\x20value\x20===\x20\x22string\x22\x20?\x20value\x20:\x20JSON.stringify(value)\x0a}\x0a\x0afunction\x20schema(properties,\x20required)\x20{\x0a\x20\x20return\x20{\x20type:\x20\x22object\x22,\x20properties:\x20properties,\x20required:\x20required\x20||\x20[],\x20additionalProperties:\x20false\x20}\x0a}\x0a\x0afunction\x20saveScreenshot(directory,\x20dataUrl)\x20{\x0a\x20\x20const\x20match\x20=\x20/^data:image\x5c/([a-z]+);base64,(.*)$/.exec(String(dataUrl\x20||\x20\x22\x22))\x0a\x20\x20if\x20(!match)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(\x22截图数据无法解析\x22)\x0a\x20\x20}\x0a\x20\x20const\x20ext\x20=\x20match[1]\x20===\x20\x22jpeg\x22\x20?\x20\x22jpg\x22\x20:\x20match[1]\x0a\x20\x20const\x20buffer\x20=\x20Buffer.from(match[2],\x20\x22base64\x22)\x0a\x20\x20//\x20时间戳\x20+\x20随机后缀,避免同毫秒内多次截图互相覆盖\x0a\x20\x20const\x20name\x20=\x20\x22aiwith-\x22\x20+\x20Date.now()\x20+\x20\x22-\x22\x20+\x20Math.random().toString(36).slice(2,\x208)\x20+\x20\x22.\x22\x20+\x20ext\x0a\x20\x20const\x20candidates\x20=\x20[\x0a\x20\x20\x20\x20join(directory,\x20\x22node_modules\x22,\x20\x22.cache\x22,\x20\x22aiwith\x22,\x20\x22shots\x22),\x0a\x20\x20\x20\x20join(tmpdir(),\x20\x22aiwith-shots\x22),\x0a\x20\x20]\x0a\x20\x20let\x20path\x20=\x20join(candidates[candidates.length\x20-\x201],\x20name)\x0a\x20\x20for\x20(const\x20dir\x20of\x20candidates)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20mkdirSync(dir,\x20{\x20recursive:\x20true\x20})\x0a\x20\x20\x20\x20\x20\x20writeFileSync(join(dir,\x20name),\x20buffer)\x0a\x20\x20\x20\x20\x20\x20path\x20=\x20join(dir,\x20name)\x0a\x20\x20\x20\x20\x20\x20break\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x20/*\x20换下一个目录\x20*/\x20}\x0a\x20\x20}\x0a\x20\x20return\x20{\x20path:\x20path,\x20mime:\x20ext\x20===\x20\x22jpg\x22\x20?\x20\x22image/jpeg\x22\x20:\x20\x22image/\x22\x20+\x20ext\x20}\x0a}\x0a\x0aexport\x20default\x20{\x0a\x20\x20id:\x20\x22aiwith.page\x22,\x0a\x20\x20async\x20setup(ctx)\x20{\x0a\x20\x20\x20\x20const\x20directory\x20=\x20(ctx.location\x20&&\x20ctx.location.directory)\x20||\x20process.cwd()\x0a\x0a\x20\x20\x20\x20await\x20ctx.tool.transform((editor)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20editor.namespace({\x20name:\x20\x22page\x22,\x20description:\x20\x22AiWith\x20当前\x20dev\x20页面的调试与交互能力(免浏览器授权)\x22\x20})\x0a\x20\x20\x20\x20\x20\x20//\x20⚠️\x20生效名\x20=\x20<options.namespace>_<name>:命名空间前缀必须逐工具用\x20options.namespace\x20指定,\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20editor.namespace()\x20只登记分组描述、**不会**给后续工具加前缀(实测\x20opencode\x202.0.21)。\x0a\x20\x20\x20\x20\x20\x20const\x20add\x20=\x20(tool)\x20=>\x20editor.add(Object.assign({\x20options:\x20{\x20namespace:\x20\x22page\x22\x20}\x20},\x20tool))\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22debug\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22读取当前\x20dev\x20页面的调试信息:页面地址/视口、最近的控制台输出、未捕获错误、网络请求,以及可选区域的\x20DOM\x20结构摘要。字段多、输出可能偏大——定位用\x20page_query/page_eval,本工具尽量传\x20selector\x20聚焦、调小各上限。调试问题优先用它,而不是截图。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只摘要该选择器命中的区域(默认整页\x20body)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maxNodes:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22DOM\x20摘要节点上限,默认\x20120,最大\x20800\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条控制台日志,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条错误,默认\x2010\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20net:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条网络请求,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22debug\x22,\x20Object.assign({\x20maxNodes:\x20120,\x20console:\x2020,\x20errors:\x2010,\x20net:\x2020\x20},\x20input),\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22click\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面点击匹配的元素(自动滚动到可视区,穿透开放\x20Shadow\x20DOM)。selector\x20支持\x20CSS\x20或文本匹配\x20\x5c\x22text=新建\x5c\x22。用于触发交互后,再用\x20page_debug\x20/\x20page_wait\x20验证结果。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器,或\x20\x5c\x22text=按钮文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22click\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22点击失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已点击\x20\x22\x20+\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22query\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22按选择器查询当前\x20dev\x20页面的元素清单(tag/id/class/text/rect/visible),用于定位可操作元素、拿选择器。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22(默认\x20*)\x22\x20},\x20limit:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22最多返回条数,默认\x2050\x22\x20}\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22query\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22查询失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data.items\x20||\x20[])\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22type\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面的输入框写入文本(自动\x20focus,触发\x20input/change\x20事件,兼容\x20Vue\x20v-model)。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=标签文案\x5c\x22。用于表单填写后,再用\x20page_debug\x20/\x20page_eval\x20验证。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22输入框选择器(CSS\x20或\x20\x5c\x22text=文案\x5c\x22)\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要写入的文本\x22\x20}\x20},\x20[\x22selector\x22,\x20\x22value\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22type\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22写入失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22fill\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22一次性批量写入多个表单字段(比多次\x20page_type\x20省往返)。fields=[{selector,value}],任一失败即中止并回报已完成项。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20fields:\x20{\x20type:\x20\x22array\x22,\x20description:\x20\x22字段数组:[{selector,value}]\x22,\x20items:\x20{\x20type:\x20\x22object\x22,\x20properties:\x20{\x20selector:\x20{\x20type:\x20\x22string\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22\x20}\x20},\x20required:\x20[\x22selector\x22,\x20\x22value\x22],\x20additionalProperties:\x20false\x20}\x20}\x20},\x20[\x22fields\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22fill\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data.error\x20||\x20\x22批量写入失败\x22)\x20+\x20\x22(已完成\x20\x22\x20+\x20(data.done\x20||\x20[]).length\x20+\x20\x22\x20项)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20(data\x20&&\x20data.count)\x20+\x20\x22\x20个字段\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22press\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面按键(Enter/Escape/Tab\x20等):触发\x20keydown/keyup\x20事件,依赖\x20JS\x20按键监听(如\x20Vue\x20`@keyup.enter`)——**不会触发浏览器原生默认行为**(原生表单\x20Enter\x20提交、原生\x20Tab\x20焦点移动等不生效)。默认作用于当前焦点元素(如刚\x20page_type\x20的输入框),也可用\x20selector\x20指定。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20key:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22键名,如\x20Enter\x20/\x20Escape\x20/\x20Tab\x22\x20},\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22可选,目标元素选择器(默认焦点元素)\x22\x20}\x20},\x20[\x22key\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22press\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22按键失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已按键\x20\x22\x20+\x20input.key\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22hover\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22悬停到匹配元素:触发\x20mouseover/mouseenter/mousemove\x20事件,适用依赖\x20JS\x20监听的悬停。**注意:合成事件不会触发\x20CSS\x20伪类\x20`:hover`**——纯\x20CSS\x20hover\x20驱动的菜单/提示打不开,那种用\x20chrome-devtools\x20的\x20hover。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22hover\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22悬停失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已悬停\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22navigate\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面内跳转路由:hash\x20路由(如\x20\x5c\x22#/order/list\x5c\x22)为\x20SPA\x20内跳转,不重载、连接不丢;跨路径整页跳转会等待新页面就绪。用于打开指定页面后再\x20page_debug\x20/\x20page_wait。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20to:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22目标地址:#/route\x20形式的\x20hash\x20路由,或完整\x20URL\x22\x20},\x20replace:\x20{\x20type:\x20\x22boolean\x22,\x20description:\x20\x22是否替换当前历史记录(默认\x20false)\x22\x20}\x20},\x20[\x22to\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22navigate\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22导航失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已导航至\x20\x22\x20+\x20((data\x20&&\x20data.url)\x20||\x20input.to)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22wait\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22等待当前\x20dev\x20页面满足条件:元素出现(selector)、文本出现(text)或地址变化(url),命中即返回,超时即失败。替代固定等待,用于等列表刷新/toast\x20出现。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待该\x20CSS\x20选择器出现\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待页面出现该文本\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20url:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待地址包含该子串\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timeout:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22超时毫秒,默认\x2015000,最小\x201000,最大\x2060000\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22wait\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.timeout)\x20{\x20throw\x20new\x20Error(\x22等待超时(条件未满足)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(data.error\x20||\x20\x22等待失败\x22)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22条件已满足(\x22\x20+\x20((data\x20&&\x20data.matched)\x20||\x20\x22ok\x22)\x20+\x20\x22)\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22eval\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面执行一段\x20JavaScript\x20并返回结果(JSON\x20化)。用于读取任意页面状态、调用页面内\x20API、构造测试数据。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20code:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要执行的\x20JavaScript\x20源码,最后表达式的值即返回结果\x22\x20}\x20},\x20[\x22code\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22eval\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22执行失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data\x20&&\x20data.result)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22screenshot\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22对当前\x20dev\x20页面(或指定区域)截图,返回\x20PNG\x20文件路径与图片内容,便于直接查看渲染效果。自动排除\x20AiWith\x20自身的浮标/抽屉等开发期元素。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只截取该选择器命中的元素(默认整页)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scale:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22缩放倍数,默认\x201(会再乘以设备像素比)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22screenshot\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22截图失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20saved\x20=\x20saveScreenshot(directory,\x20data.dataUrl)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20content:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22text\x22,\x20text:\x20\x22截图完成\x20\x22\x20+\x20data.width\x20+\x20\x22×\x22\x20+\x20data.height\x20+\x20\x22,已保存:\x22\x20+\x20saved.path\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22file\x22,\x20uri:\x20\x22file://\x22\x20+\x20saved.path,\x20mime:\x20saved.mime,\x20name:\x20saved.path.split(/[\x5c\x5c/]/).pop()\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20})\x0a\x20\x20},\x0a}\x0a'};}),an=fe(c=>{W(),(function(){const cN=b;let d=/[\p{Lu}]/u,e=/[\p{Ll}]/u,g=/^[\p{Lu}](?![\p{Lu}])/gu,h=/([\p{Alpha}\p{N}_]|$)/u,i=/[_.\- ]+/,l=new RegExp('^'+i[cN(0x338)]),m=new RegExp(i[cN(0x338)]+h[cN(0x338)],'gu'),n=new RegExp(cN(0x348)+h[cN(0x338)],'gu'),o=(s,t,u,x)=>{const cO=cN;let z=!0x1,C=!0x1,E=!0x1,F=!0x1;for(let G=0x0;G<s[cO(0x34f)];G++){let I=s[G];F=G>0x2?s[G-0x3]==='-':!0x0,z&&d[cO(0x22c)](I)?(s=s[cO(0x259)](0x0,G)+'-'+s[cO(0x259)](G),z=!0x1,E=C,C=!0x0,G++):C&&E&&e[cO(0x22c)](I)&&(!F||x)?(s=s[cO(0x259)](0x0,G-0x1)+'-'+s[cO(0x259)](G-0x1),E=C,C=!0x1,z=!0x0):(z=t(I)===I&&u(I)!==I,E=C,C=u(I)===I&&t(I)!==I);}return s;},p=(s,t)=>(g[cN(0x23e)]=0x0,s[cN(0x1c8)](g,u=>t(u))),r=(s,t)=>(m['lastIndex']=0x0,n['lastIndex']=0x0,s[cN(0x1c8)](n,(u,w,x)=>['_','-'][cN(0x3cd)](s['charAt'](x+u[cN(0x34f)]))?u:t(u))['replaceAll'](m,(u,w)=>t(w)));c[cN(0x409)]=function(s,t){const cP=cN;if(!(typeof s=='string'||Array[cP(0x326)](s)))throw new TypeError('Expected\x20the\x20input\x20to\x20be\x20`string\x20|\x20string[]`');if(t={'pascalCase':!0x1,'preserveConsecutiveUppercase':!0x1,...t},Array['isArray'](s)?s=s[cP(0x316)](x=>x[cP(0x2f4)]())['filter'](x=>x[cP(0x34f)])['join']('-'):s=s[cP(0x2f4)](),s[cP(0x34f)]===0x0)return'';let u=t[cP(0x3f1)]===!0x1?x=>x[cP(0x219)]():x=>x[cP(0x202)](t[cP(0x3f1)]),w=t['locale']===!0x1?x=>x['toUpperCase']():x=>x[cP(0x439)](t['locale']);return s[cP(0x34f)]===0x1?i[cP(0x22c)](s)?'':t['pascalCase']?w(s):u(s):(s!==u(s)&&(s=o(s,u,w,t[cP(0x1a3)])),s=s[cP(0x24b)](l,''),s=t[cP(0x1a3)]?p(s,u):u(s),t['pascalCase']&&(s=w(s[cP(0x1e1)](0x0))+s[cP(0x259)](0x1)),r(s,w));};}());}),on=fe(c=>{W(),(function(){const cQ=b;let d=require(cQ(0x1b9)),e=require('fs'),g=[cQ(0x377),'blocks'],{camelCase:h}=an(),i=function(n){const cR=cQ;let o=[],p=[],r=[];e[cR(0x2ed)](n)[cR(0x2ba)]((u,w)=>u[cR(0x29b)](w))['forEach'](u=>{const cS=cR;let w=d[cS(0x279)](n,u,cS(0x3cf));if(e[cS(0x3ab)](w))o[cS(0x263)](cS(0x1e4)+u+cS(0x3a6)+u+cS(0x1ca)),p['push'](u);else{let x=d['join'](n,u,u+cS(0x28b));if(e[cS(0x3ab)](x))o[cS(0x263)]('import\x20'+u+'\x20from\x20\x27./'+u+'/'+u+cS(0x379)),r[cS(0x263)](''+u);else{if(u[cS(0x37a)]('.')>-0x1)return;j(d[cS(0x279)](n,u),u,n)&&(o[cS(0x263)](cS(0x1e4)+u+cS(0x3a6)+u+cS(0x1ca)),p[cS(0x263)](u));}}});let s=r[cR(0x34f)]>0x0?'const\x20vueFiles\x20=\x20{\x0a\x09'+r[cR(0x279)](cR(0x24f))+cR(0x1d3):'',t=o['join']('\x0a')+'\x0a'+s+cR(0x2b2)+(s?'\x0a\x09...vueFiles,':'')+cR(0x270)+(p[cR(0x34f)]>0x0?'...'+p['join'](',\x0a\x09...'):'')+cR(0x1d3);e[cR(0x20c)](d[cR(0x279)](n,cR(0x3cf)),t,()=>{});},j=function(n,o,p){const cT=cQ;let r=d[cT(0x279)](n,cT(0x3cf)),s=[],t=[];if(!e[cT(0x3ab)](n)||o[0x0]==='.'||g[cT(0x3cd)](o))return!0x1;let u=!e[cT(0x3ab)](r);if(e[cT(0x2ed)](n)[cT(0x2ba)]((x,z)=>x[cT(0x29b)](z))[cT(0x40b)](x=>{const cU=cT;let z=d[cU(0x279)](n,x,cU(0x3cf)),C=[];if(e[cU(0x3ab)](z)){C[cU(0x263)](x),s['push'](cU(0x1e4)+x+cU(0x32f)+x+cU(0x26d)),t['push'](cU(0x277)+x);return;}let E=d[cU(0x279)](n,x,x+'.vue');if(x[cU(0x37a)]('.')>-0x1||!e['existsSync'](E))return;let F=h(o['replace'](/\//gi,'_')+'_'+x,{'pascalCase':!0x0});s[cU(0x263)]('import\x20'+F+cU(0x32f)+x+'/'+x+'\x22;'),t[cU(0x263)]('\x27'+o+'/'+x+'\x27:\x20'+F);}),s[cT(0x34f)]===0x0)return!0x1;let w=s[cT(0x279)]('\x0a')+'\x0a\x0aexport\x20default\x20{\x0a\x09'+t[cT(0x279)](cT(0x24f))+'\x0a}';return e[cT(0x20c)](r,w),i(p),u&&i(p),!0x0;};function l(n){const cV=cQ;let o=d[cV(0x279)](n,cV(0x3cf)),p=e['readdirSync'](n),r=[],s=[];p[cV(0x316)](u=>{const cW=cV;if(u[cW(0x37a)]('.')>-0x1)return;let w=d[cW(0x279)](n,u,u+'.vue');e['existsSync'](w)&&(s[cW(0x263)](u),r[cW(0x31a)]('import\x20'+u+cW(0x32f)+u+'/'+u+'\x22;'));});let t=r[cV(0x279)]('\x0a')+cV(0x387)+s[cV(0x279)](cV(0x24f))+cV(0x1e6);return e[cV(0x20c)](o,t);}c[cQ(0x2d4)]=i,c['makeSonIndex']=j,c[cQ(0x34e)]=l;}());}),sn=fe(c=>{W(),(function(){const cX=b;let e=require('os'),g=require(cX(0x382)),h=require(cX(0x342)),i=new RegExp(cX(0x32a),'gi'),n=[cX(0x375),'.css',cX(0x255)],o=[cX(0x375),cX(0x32b),cX(0x32e)],p=require('fs'),{join:r,dirname:s,resolve:t,extname:u}=require('path'),C=cX(0x185),E='/',G=require(cX(0x2d9)),I=require(cX(0x347)),{TosClient:J}=require(cX(0x1a6)),M,P,Q,U,Y;function a0(ac){const cY=cX;let ad=r(ac,cY(0x3e9)),ae=p[cY(0x2a9)](ad,cY(0x353));return JSON[cY(0x331)](ae);}function a1(ac,ad){const cZ=cX;let ae={'Bucket':Q[cZ(0x32d)],'Region':Q['region'],'Key':ac,'StorageClass':'STANDARD'},af=ac['indexOf'](cZ(0x375))>-0x1;af||ac[cZ(0x37a)]('.css')>-0x1?(ae[cZ(0x30d)]={'Content-Encoding':cZ(0x2d6),'Content-Type':af?cZ(0x30b):cZ(0x248)},ae[cZ(0x271)]=Buffer[cZ(0x1fe)](h[cZ(0x2d6)](p[cZ(0x2a9)](ad,'utf8')))):ae[cZ(0x271)]=p[cZ(0x210)](ad),P['putObject'](ae,(ag,ah)=>{const d0=cZ;if(ag)return console[d0(0x17a)](ag,ah);console[d0(0x17a)](E+ac);});}function a2(ac,ad){const d1=cX;let ae={'bucket':Q[d1(0x30f)],'key':ac},af=ac[d1(0x37a)](d1(0x375))>-0x1;af||ac[d1(0x37a)](d1(0x32b))>-0x1?(ae[d1(0x434)]={'Content-Encoding':d1(0x2d6),'Content-Type':af?d1(0x30b):d1(0x248)},ae['body']=Buffer[d1(0x1fe)](h[d1(0x2d6)](p[d1(0x2a9)](ad,d1(0x353))))):ae[d1(0x44c)]=p['createReadStream'](ad),P[d1(0x33b)](ae,(ag,ah)=>{const d2=d1;if(ag)return console['log'](ag,ah);console[d2(0x17a)](E+ac);});}function a3(ac,ad){const d3=cX;let ae,af,ag=ac['indexOf'](d3(0x375))>-0x1;ag||ac[d3(0x37a)](d3(0x32b))>-0x1?(af={'Content-Encoding':'gzip','Content-Type':ag?d3(0x30b):'text/css'},ae=Buffer[d3(0x1fe)](h[d3(0x2d6)](p[d3(0x2a9)](ad,'utf8')))):(ae=p[d3(0x210)](ad),af={}),P['put'](ac,ae,{'headers':af});}function a4(ac,ad){const d4=cX;p['readdirSync'](ac)[d4(0x40b)](ae=>{const d5=d4;if(ae['indexOf']('.')===0x0||ae['indexOf'](d5(0x283))>-0x1)return;let af=r(ac,ae),ag=p['statSync'](af);if(ag[d5(0x42a)]()&&a4(af,r(ad,ae)),ag['isFile']()){let ah=r(ad,ae)[d5(0x24b)](/\\/gi,'/');console['log'](ah),Y(ah,af);}});}function a5(ac){const d6=cX;let ad=ac[d6(0x171)](ac[d6(0x37a)](d6(0x2b4))+0x4);ad['startsWith'](d6(0x225))&&(ad=ad[d6(0x171)](0x4));let ae=r(M,ad),af=u(ae);if(!p[d6(0x3ab)](ae)||o[d6(0x3cd)](af)){g['mkdir']('-p',s(ae));let ag=ac[d6(0x37a)](':')>-0x1?ac:d6(0x199)+ac,ah='curl\x20'+C+d6(0x1f4)+ae+d6(0x337)+ag+'\x22';if(ae[d6(0x37a)](d6(0x375))>-0x1||ae[d6(0x37a)]('.css')>-0x1){let aj=ae+d6(0x339);ah='curl\x20'+C+'\x20-o\x20\x22'+aj+d6(0x337)+ag+d6(0x2ae)+aj+d6(0x2cb)+ae+'\x22;\x20status=$?;\x20rm\x20-f\x20\x22'+aj+d6(0x35a);}let ai=g[d6(0x418)](ah);if(ai[d6(0x28d)]!==0x0)return console[d6(0x3a2)](d6(0x310)+ah+':\x20'+ai[d6(0x258)]),ac;}return ad;}function a6(ac){const d7=cX;let ad=u(ac);if(ac['indexOf']('.')===0x0||ad===d7(0x283))return;let ae;if(ac['indexOf'](d7(0x315))>-0x1?ae=M+ac[d7(0x171)](U[d7(0x34f)]+0x5):ae=M+ac[d7(0x171)](U[d7(0x34f)]+0x7),g[d7(0x3c8)]('-p',s(ae)),!n['includes'](ad))return g['cp'](ac,ae);let af=p['readFileSync'](ac,d7(0x353))[d7(0x24b)](i,ag=>ag[d7(0x37a)]('\x27')>-0x1||ag[d7(0x37a)]('\x22')>-0x1?ag:a5(ag));p[d7(0x20c)](ae,Buffer[d7(0x1fe)](h[d7(0x2d6)](af)),'utf8');}function a7(ac){const d8=cX;let ad=p[d8(0x2ed)](ac);for(let ae of ad){if(ae[d8(0x208)]('.'))continue;let af=r(ac,ae),ag=p[d8(0x357)](af);ag[d8(0x42a)]()?a7(af):ag['isFile']()&&a6(af);}}function a8(ac,ad,ae){const d9=cX;let af=p[d9(0x2ed)](ac);for(let ag of af){let ah=r(ac,ag);if(p[d9(0x357)](ah)[d9(0x42a)]())a8(ah,ad,ae);else{if(ac[d9(0x37a)](d9(0x1b4))>-0x1&&ag===d9(0x187)){let ai=p['readFileSync'](ah,d9(0x353)),{path:aj,basic:ak,actions:al=[]}=JSON[d9(0x331)](ai);if(!aj)continue;let am=ak[d9(0x1bf)];am&&(ae[am]?ae[am][d9(0x263)](aj):ae[am]=[aj]);let ao=[];ak[d9(0x16c)][d9(0x40b)](({_id:ap,label:aq,mode:ar,href:as,url:au})=>{const da=d9;let av=ap+'',aw={'id':av,'label':aq};ar===da(0x39f)&&as&&(aw['link']=as[da(0x171)](0x1)),ao['push'](aw),au&&(ae[au]?ae[au][da(0x263)](av):ae[au]=[av]);}),al[d9(0x40b)](({_id:ap,label:aq,mode:ar,href:as,url:au})=>{const db=d9;let av=ap+'',aw={'id':av,'label':aq};ar==='link'&&as&&(aw['link']=as[db(0x171)](0x1)),ao[db(0x263)](aw),au&&(ae[au]?ae[au][db(0x263)](av):ae[au]=[av]);}),ao[d9(0x34f)]>0x0&&(ad[aj]=ao);}}}}function a9(){const dc=cX;let ac=new Date(),ad=ac['getFullYear']()[dc(0x3d7)]()['slice'](-0x2),ae=(ac['getMonth']()+0x1)[dc(0x3d7)]()[dc(0x247)](0x2,'0'),af=ac[dc(0x3c4)]()[dc(0x3d7)]()[dc(0x247)](0x2,'0'),ag=ac[dc(0x301)]()[dc(0x3d7)]()[dc(0x247)](0x2,'0'),ah=ac[dc(0x2cc)]()['toString']()['padStart'](0x2,'0');return ad+ae+af+ag+ah;}function aa(ac){const dd=cX;let ad=r(M,'..');if(!p[dd(0x3ab)](ad))return;let ae={},af={};a8(r(ac,dd(0x30e)),ae,af);let ag=r(ad,dd(0x1f0)),ah=r(ad,dd(0x304));p[dd(0x20c)](ah,JSON['stringify'](af),'utf8'),p[dd(0x20c)](ag,JSON['stringify'](ae),'utf8');}async function ab(ac){const de=cX;let ad=r(M,'..'),ae=a9();if(!p['existsSync'](ad)){let ag=r(ac,de(0x256));return p[de(0x20c)](ag,ae,de(0x353)),ae;}let af=r(ad,de(0x449),de(0x3e1));p['existsSync'](af)||g[de(0x3c8)]('-p',s(af));try{let ah={};return p[de(0x3ab)](af)&&(ah=JSON['parse'](p[de(0x2a9)](af,de(0x353)))),ah['fd']=ae,p[de(0x20c)](af,JSON[de(0x2a5)](ah),de(0x353)),ae;}catch(ai){return console[de(0x17a)](ai),'';}}c[cX(0x436)]=async function(ac,ad,ae){const df=cX;if(!ad)return;U=ac,Q=JSON[df(0x331)](p[df(0x2a9)](r(e[df(0x346)](),df(0x2a2)))),ad===df(0x31b)?(P=new J({'accessKeyId':Q[df(0x2e1)],'accessKeySecret':Q[df(0x391)],'region':Q['tosRegion'],'endpoint':Q[df(0x1ce)]}),E=Q[df(0x445)]+'/',Y=a2):ad==='oss'?(P=new I({'accessKeyId':Q[df(0x43b)],'accessKeySecret':Q[df(0x29c)],'bucket':Q[df(0x2a7)],'region':df(0x40e)+Q[df(0x2c7)],'authorizationV4':!0x0}),E=Q[df(0x374)]+'/',Y=a3):(P=new G({'SecretId':Q['id'],'SecretKey':Q['key']}),E=Q[df(0x175)]+'/',Y=a1);let af=a0(ac),ag=af[df(0x425)],ah,ai;if(ah=r(ac,df(0x315)),ai=r(ac,df(0x26f)),af[df(0x309)]!==df(0x41e)){let al=[df(0x194),df(0x444),df(0x1ac),df(0x218)];g['mkdir']('-p',ai),al[df(0x40b)](am=>{const dg=df;let ao=r(ai,am),ap=ao+dg(0x339),aq=dg(0x38e)+C+dg(0x1f4)+ap+dg(0x366)+ae+'/'+am+'\x22\x20&&\x20gunzip\x20-c\x20\x22'+ap+dg(0x2cb)+ao+'\x22;\x20status=$?;\x20rm\x20-f\x20\x22'+ap+dg(0x35a);console[dg(0x17a)](aq);let ar=g[dg(0x418)](aq);ar[dg(0x28d)]!==0x0&&console[dg(0x3a2)](dg(0x310)+aq+':\x20'+ar[dg(0x258)]);});}M=t(ac,'..',ag,'src',df(0x2af),'resources',df(0x16e));let aj=await ab(ah),ak=ag+'/'+aj;aa(ac),a4(ah,ak),p[df(0x3ab)](ai)&&a4(ai,ak);},c[cX(0x3f1)]=async function(ac,ad){const dh=cX;U=ac;let ae=a0(ac)[dh(0x425)];M=t(ac,'..',ae,dh(0x30e),dh(0x2af),'resources',dh(0x16e)),aa(ac);let af=r(ac,dh(0x315));await ab(af);let ag=r(ac,'public');g['mkdir']('-p',ag),[dh(0x194),dh(0x444),dh(0x1ac),dh(0x218)]['forEach'](ah=>{const di=dh;let ai=r(ag,ah),aj=ai+'.tmp',ak=di(0x38e)+C+'\x20-o\x20\x22'+aj+'\x22\x20\x22https://b.ebus.vip/zeto/'+ad+'/'+ah+di(0x322)+aj+di(0x2cb)+ai+di(0x343)+aj+'\x22;\x20exit\x20$status';console['log'](ak);let al=g['exec'](ak);al[di(0x28d)]!==0x0&&console[di(0x3a2)](di(0x310)+ak+':\x20'+al['stderr']);}),a7(af),p[dh(0x3ab)](ag)&&a7(ag);};}());}),ln=fe((c,d)=>{W(),(function(){const dj=b;let e=require(dj(0x1b9)),g=require('fs'),h=require(dj(0x1d8)),i=require(dj(0x355)),n=on(),{remote:o,locale:p}=sn(),{makeRootIndex:r,makeSonIndex:s,makeComponentIndex:t}=n,u=[dj(0x377),dj(0x3e6)];function x(P){const dk=dj;return dk(0x3f0)+P+dk(0x400);}function z(P){const dl=dj;return dl(0x446)+P+dl(0x1a7);}function C(P,Q){const dm=dj;if(Q[dm(0x34f)]<0x2)return;let R,T=Q[dm(0x25e)]((U,V)=>(V===0x0&&(R=e[dm(0x279)](P,U),g[dm(0x3ab)](R)||g['mkdirSync'](R)),V>0x0));C(R,T);}let E='<template>\x0a\x20\x20\x20\x20<div>Zen\x20Page</div>\x0a</template>\x0a\x0a<script\x20setup>\x0a</script>',F=dj(0x1d1);function G(P,Q){const dn=dj;P[dn(0x3c6)](dn(0x2a3),dn(0x2f1)),P['end'](JSON[dn(0x2a5)](Q));}function I(P,Q){const dp=dj;P[dp(0x3c6)](dp(0x2a3),dp(0x405)),P[dp(0x1df)](Q);}function J(P,Q){const dq=dj;let R=e[dq(0x279)](P,'src',dq(0x336)),T=i[dq(0x31f)]();return function(U,V,Y){const dr=dq;let {url:Z,method:a0}=U;if(a0===dr(0x3ea)&&Z==='/coder.html')return I(V,x(Q));if(a0==='GET'&&Z===dr(0x274))return I(V,z(Q));if(a0===dr(0x39e)&&Z===dr(0x229))return T(U,V,()=>{const ds=dr;let {file:a1}=U[ds(0x44c)]||{};if(!a1)return G(V,{'code':0x2711,'message':ds(0x3db)});let a2=e['join'](R,a1);return g[ds(0x3ab)](a2)?G(V,{'code':0x2710,'data':g[ds(0x2a9)](a2,ds(0x1b3))}):G(V,{'code':0x2710,'data':null});});if(a0===dr(0x39e)&&Z===dr(0x3f2))return T(U,V,()=>{const dt=dr;let {file:a1,content:a2,type:a3}=U['body']||{};if(!a1)return G(V,{'code':0x2711,'message':'\u53C2\u6570\u9519\u8BEF'});let a4=a1[dt(0x1c3)]('/');C(R,a4);let a5=e['join'](R,a1);if(g[dt(0x20c)](a5,a2),a3===dt(0x35b)){let a6=a4[dt(0x22f)](0x0,a4[dt(0x34f)]-0x2),a7=e[dt(0x279)](R,a6['join'](e['sep']));if(a6[dt(0x34f)]===0x0)return r(R);s(a7,a6[dt(0x279)]('/'),R);}return G(V,{'code':0x2710,'message':dt(0x3ae)});});Y();};}function K(P){const du=dj;let Q=e[du(0x279)](P,du(0x30e),du(0x336));if(!g[du(0x3ab)](Q))return null;let R=h[du(0x272)](Q,{'depth':0x2,'usePolling':!0x1});return R['on'](du(0x2cf),U=>{const dv=du;let V=e[dv(0x279)](U,'index.js');if(g[dv(0x3ab)](V)||U[dv(0x37a)](dv(0x1b4))>-0x1)return;let Y=e[dv(0x18f)](U)[dv(0x1c3)](e['sep']),Z=Y['pop'](),a0=Y[Y[dv(0x34f)]-0x1],a1=e[dv(0x279)](U,Z+dv(0x28b));g[dv(0x3ab)](a1)||u[dv(0x3cd)](Z)||u[dv(0x3cd)](a0)||(Y[dv(0x34f)]-Y[dv(0x37a)](a0)===0x1&&Y[dv(0x34f)]-Y['indexOf'](dv(0x336))!==0x2&&(a0=Y[Y[dv(0x34f)]-0x2]+e[dv(0x3de)]+a0),g[dv(0x20c)](a1,E),s(Y[dv(0x279)](e['sep']),a0,Q));}),R['on'](du(0x415),T=>{const dw=du;let U=e['resolve'](T)[dw(0x1c3)](e['sep']);U[dw(0x2c9)]();let V=U[dw(0x279)](e[dw(0x3de)]),Y=U[dw(0x2c9)]();Y===dw(0x336)?r(Q):(U[dw(0x34f)]-U[dw(0x37a)]('pages')===0x2&&(Y=U[dw(0x2c9)]()+e[dw(0x3de)]+Y),s(V,Y,Q));}),r(Q),R['on'](du(0x3a2),function(T){const dx=du;console[dx(0x3a2)](dx(0x266),T);}),R;}function M(P){const dy=dj;let Q=e[dy(0x279)](P,dy(0x30e),dy(0x377));if(!g[dy(0x3ab)](Q))return null;let R=h[dy(0x272)](Q,{'depth':0x1,'usePolling':!0x1});return R['on']('addDir',U=>{const dz=dy;let V=e['resolve'](U)[dz(0x1c3)](e['sep']),Y=V[dz(0x2c9)](),Z=e[dz(0x279)](U,Y+dz(0x28b)),a0=e['join'](U,Y+dz(0x375));g[dz(0x3ab)](Z)||g['existsSync'](a0)||Y===dz(0x377)||V[V['length']-0x1]!==dz(0x377)||(g[dz(0x20c)](Z,F),t(Q));}),R['on'](dy(0x415),T=>{const dA=dy;let U=e[dA(0x18f)](T)[dA(0x1c3)](e[dA(0x3de)]);U[U[dA(0x34f)]-0x2]===dA(0x377)&&t(Q);}),R['on']('error',function(T){const dB=dy;console[dB(0x3a2)](dB(0x266),T);}),R;}d[dj(0x369)]=function({target:P,ROOT:Q,name:R,core:T,isDev:U}){const dC=dj;return{'name':dC(0x39c),'configureServer'(V){const dD=dC;V[dD(0x386)]['use'](J(Q,R));let Y=[K(Q),M(Q)];V[dD(0x2d8)]&&V['httpServer']['on'](dD(0x2b7),()=>{const dE=dD;Y[dE(0x40b)](Z=>Z&&Z['close']());});},'closeBundle'(){U||setTimeout(()=>{const dF=b;P===dF(0x1fc)?p(Q,T):P&&o(Q,P,T);},0x64);}};};}());}),Ke=fe((c,d)=>{W(),(function(){const dG=b;let e=require('fs'),f=require(dG(0x1b9));d[dG(0x369)]=function({outDir:g}){return{'name':'zen-css-inject','closeBundle'(){const dH=b;if(!g||!e[dH(0x3ab)](g))return;e['readdirSync'](g)[dH(0x25e)](h=>h[dH(0x37c)](dH(0x32b)))['forEach'](h=>{const dI=dH;let i=e['readFileSync'](f['join'](g,h),'utf8'),l=f['join'](g,h[dI(0x24b)](/\.css$/,dI(0x375)));if(e[dI(0x3ab)](l)){let m=e['readFileSync'](l,dI(0x353)),n=dI(0x328)+JSON[dI(0x2a5)](i)+dI(0x2c8);e[dI(0x20c)](l,n+m);}e[dI(0x3b2)](f[dI(0x279)](g,h));});}};};}());}),pn=fe((c,d)=>{W(),(function(){const dJ=b;let e=require('fs'),g=require(dJ(0x1b9)),h={'compact':!0x0,'stringArray':!0x0,'stringArrayEncoding':[dJ(0x3df)],'stringArrayThreshold':0.75,'identifierNamesGenerator':'mangled','selfDefending':!0x1,'target':dJ(0x3d8),'renameGlobals':!0x1};d[dJ(0x369)]=function({outDir:i}){const dK=dJ;return{'name':dK(0x300),'closeBundle'(){const dL=dK;if(!i||!e[dL(0x3ab)](i))return;let j=e['readdirSync'](i)[dL(0x25e)](m=>m[dL(0x37c)]('.js'));if(j[dL(0x34f)]===0x0)return;let l;try{l=require('javascript-obfuscator');}catch{throw new Error('obfuscate:\x20true\x20\u9700\u8981\u5B89\u88C5\x20javascript-obfuscator\uFF0C\u8BF7\u6267\u884C\x20npm\x20i\x20-D\x20javascript-obfuscator');}j[dL(0x40b)](m=>{const dM=dL;let n=g[dM(0x279)](i,m),o=e[dM(0x2a9)](n,dM(0x353)),p=l['obfuscate'](o,h)[dM(0x3ef)]();e[dM(0x20c)](n,p),console[dM(0x17a)]('\u6DF7\u6DC6\u5B8C\u6210\uFF1A'+m,'('+(p[dM(0x34f)]/0x400)[dM(0x221)](0x1)+dM(0x307));});}};};}());}),mn=fe((c,d)=>{W(),(function(){const dN=b;let e=require('path'),g=Ke(),h=[dN(0x19b),dN(0x237),'vue-router',dN(0x36f)],i={'vue':'Vue','vue-router':dN(0x2d1),'element-plus':'ElementPlus','vant':'vant'};d[dN(0x369)]=function({outDir:l,extraEntries:m,ROOT:n,srcRoot:o}){const dO=dN;return{'name':dO(0x269),async 'closeBundle'(){const dP=dO;if(!m||m['length']===0x0)return;let {default:p}=await import(dP(0x323)),{default:r}=await import(dP(0x1c6)),{build:s}=await import(dP(0x370));for(let t of m){let u=e[dP(0x2fe)](t,dP(0x375));await s({'configFile':!0x1,'root':n,'logLevel':dP(0x3a2),'plugins':[p(),r({'include':/\.(jsx|js)/}),g({'outDir':l})],'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1},'resolve':{'extensions':[dP(0x375),dP(0x28b),'.jsx','.json'],'alias':{'@':o,'@icons':e[dP(0x18f)](n,dP(0x205))}},'css':{'cssCodeSplit':!0x1},'build':{'outDir':l,'emptyOutDir':!0x1,'copyPublicDir':!0x1,'minify':dP(0x213),'target':dP(0x34a),'sourcemap':!0x1,'lib':{'entry':t,'formats':[dP(0x1bc)],'name':dP(0x41e),'fileName':()=>u+dP(0x375),'cssFileName':u},'rolldownOptions':{'external':h,'output':{'globals':i,'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':dP(0x2c4)}}}}}});}}};};}());}),hn=fe((c,d)=>{W(),(function(){const dQ=b;let e={'vue':'Vue','vue-router':dQ(0x2d1),'element-plus':dQ(0x36e),'vant':'vant'},g=dQ(0x20b),h=new RegExp(dQ(0x290)+g+dQ(0x3b8),'g'),i=new RegExp(dQ(0x1b8)+g+dQ(0x3b8),'g'),j=new RegExp(dQ(0x2bf)+g+')[\x27\x5c\x22]','g'),l=new RegExp(dQ(0x186)+g+dQ(0x3b8),'g'),m=new RegExp(dQ(0x2c2)+g+dQ(0x3b8),'g');d[dQ(0x369)]=function({isDev:n}){const dR=dQ;return{'name':dR(0x3b6),'transform'(o,p){const dS=dR;if(!n||!o||p[dS(0x37a)]('node_modules')>-0x1)return null;let r=!0x1;return o=o['replace'](h,(s,t,u)=>(r=!0x0,dS(0x21a)+t+'\x20=\x20window.'+e[u])),o=o[dS(0x24b)](i,(s,t,u,x)=>{const dT=dS;r=!0x0;let y=u[dT(0x2f4)]()[dT(0x24b)](/\s+as\s+/g,':\x20');return dT(0x21a)+t+dT(0x3d1)+e[x]+';\x0aconst\x20{\x20'+y+dT(0x223)+e[x];}),o=o[dS(0x24b)](j,(s,t,u)=>(r=!0x0,dS(0x193)+t[dS(0x2f4)]()['replace'](/\s+as\s+/g,':\x20')+'\x20}\x20=\x20window.'+e[u])),o=o[dS(0x24b)](l,(s,t,u)=>(r=!0x0,'const\x20'+t+dS(0x3d1)+e[u])),o=o[dS(0x24b)](m,(s,t)=>(r=!0x0,'/*\x20global\x20'+e[t]+dS(0x427))),r?{'code':o,'map':null}:null;}};};}());}),bn=fe((c,d)=>{const dU=cJ;W();var e=require('fs'),f=require('os'),g=require('path'),h=['compile',dU(0x389),dU(0x2d2),dU(0x1c9),dU(0x3d3),dU(0x35e),'defineCustomElement',dU(0x1dd),dU(0x3c2),dU(0x224),dU(0x230),dU(0x2a8),'render',dU(0x2e2),'useCssVars',dU(0x3cb),dU(0x3d6),dU(0x34d),dU(0x440),'vModelRadio','vModelSelect',dU(0x330),dU(0x33e),dU(0x273),dU(0x364),dU(0x254),dU(0x3e0),dU(0x410),dU(0x1c7),dU(0x293),'effect','effectScope',dU(0x383),dU(0x2ee),dU(0x2ef),dU(0x443),dU(0x2c5),dU(0x3eb),dU(0x324),'markRaw',dU(0x3a4),dU(0x3ed),'proxyRefs',dU(0x1e5),dU(0x407),dU(0x1b7),dU(0x2e4),dU(0x345),dU(0x3bb),dU(0x292),dU(0x344),dU(0x2c3),dU(0x286),'toValue',dU(0x365),'unref','camelize','capitalize',dU(0x2c1),'normalizeProps',dU(0x18b),'toDisplayString',dU(0x2dd),dU(0x1eb),dU(0x3b4),dU(0x402),dU(0x360),dU(0x1a2),dU(0x2d0),'Fragment',dU(0x282),dU(0x3d4),dU(0x362),dU(0x302),'Text',dU(0x289),dU(0x37f),dU(0x37b),'cloneVNode',dU(0x41b),dU(0x421),'createBlock','createCommentVNode',dU(0x1de),'createElementVNode',dU(0x363),'createPropsRestProxy',dU(0x25a),dU(0x320),'createStaticVNode','createTextVNode',dU(0x43d),'defineAsyncComponent',dU(0x163),dU(0x21c),'defineExpose',dU(0x419),dU(0x38b),'defineProps',dU(0x392),dU(0x1f1),'getCurrentInstance','getTransitionRawChildren',dU(0x200),'h',dU(0x241),dU(0x1a4),dU(0x40d),dU(0x1b6),'hydrateOnMediaQuery','hydrateOnVisible',dU(0x36b),dU(0x32c),'isMemoSame',dU(0x18a),'isVNode',dU(0x38a),'mergeModels','mergeProps','nextTick','onActivated',dU(0x3f4),dU(0x281),'onBeforeUpdate',dU(0x2da),dU(0x396),dU(0x435),dU(0x1ff),'onRenderTriggered',dU(0x359),dU(0x2f8),dU(0x42e),dU(0x260),dU(0x44a),dU(0x3c3),dU(0x1fd),'queuePostFlushCb',dU(0x226),dU(0x1d6),dU(0x1ae),dU(0x253),dU(0x33f),dU(0x3e5),dU(0x412),dU(0x174),dU(0x36d),dU(0x313),dU(0x251),dU(0x2aa),'ssrUtils',dU(0x24c),dU(0x3e2),dU(0x178),dU(0x1f5),dU(0x428),'useSSRContext',dU(0x24a),'useTemplateRef',dU(0x24e),dU(0x408),dU(0x265),'watch','watchEffect',dU(0x276),dU(0x2e9),dU(0x41a),dU(0x2e6),dU(0x1a8),dU(0x20f),dU(0x41d),dU(0x170)];d[dU(0x369)]=function(){const dV=dU;let i=g[dV(0x279)](f[dV(0x2fd)](),dV(0x214)),j='//\x20自动生成:vue\x20具名导出指向宿主\x20window.Vue(dev\x20双\x20Vue\x20修复)\x0a'+h[dV(0x316)](k=>dV(0x1e9)+k+dV(0x2b9)+JSON['stringify'](k)+']')['join']('\x0a')+dV(0x1bd);try{e[dV(0x20c)](i,j);}catch{return null;}return{'file':i,'rolldownPlugin':{'name':dV(0x385),'resolveId'(k){const dW=dV;if(k===dW(0x19b))return i;}}};};}),Tn=fe((c,d)=>{'use strict';const dX=cJ;W();var e=require('fs'),f=require('os'),g=require(dX(0x1b9)),h='zen',i=g[dX(0x279)](f[dX(0x346)](),dX(0x25d),dX(0x18e)),j='opencode.json',k='/'+j;function l(w){const dY=dX;return String(w||dY(0x2f3))[dY(0x24b)](/[^a-zA-Z0-9._-]/g,'_');}function m(w){const dZ=dX;return g[dZ(0x279)](i,dZ(0x1d4)+l(w)+dZ(0x2db));}function n(w){const e0=dX;try{return JSON[e0(0x331)](e[e0(0x2a9)](m(w),'utf8'));}catch{return null;}}function o(w,x){const e1=dX;let y=m(w);e[e1(0x3ec)](i,{'recursive':!0x0,'mode':0x1c0}),e[e1(0x20c)](y,JSON[e1(0x2a5)](x,null,0x2),{'mode':0x180});try{e['chmodSync'](y,0x180);}catch{}return y;}function p(w){const e2=dX;let x={};return(w||[])[e2(0x40b)](function(y){const e3=e2;let z=typeof y=='string'?y:y&&y['id'];if(!z)return;let A={'name':y&&y[e3(0x425)]||String(z)};y&&y[e3(0x414)]&&(A[e3(0x414)]=y[e3(0x414)]),y&&y[e3(0x2dc)]&&(A[e3(0x2dc)]=y[e3(0x2dc)]),x[z]=A;}),x;}function q(w){const e4=dX;return{'providerId':w[e4(0x203)]||h,'entry':{'name':w[e4(0x312)]&&w[e4(0x312)][e4(0x425)]||e4(0x23a),'package':'aisdk:@ai-sdk/openai-compatible','settings':{'baseURL':w[e4(0x312)]['baseURL'],'apiKey':w[e4(0x312)]['token']},'models':p(w[e4(0x1d0)])}};}function r(w,x){const e5=dX;if(!w||!x||!x[e5(0x312)]||!x[e5(0x312)][e5(0x3f5)]||!x[e5(0x312)]['token'])throw new Error(e5(0x1bb));let y=g[e5(0x279)](w,j);if(e['existsSync'](y)&&s(w,j))throw new Error(j+e5(0x2cd));let z={};try{z=JSON[e5(0x331)](e[e5(0x2a9)](y,'utf8'))||{};}catch{z={};}let A=q(x);(!z[e5(0x3c7)]||typeof z[e5(0x3c7)]!=e5(0x285))&&(z[e5(0x3c7)]={}),z[e5(0x3c7)][A[e5(0x203)]]=A[e5(0x3ca)],e[e5(0x20c)](y,JSON[e5(0x2a5)](z,null,0x2),{'mode':0x180});try{e[e5(0x3d0)](y,0x180);}catch{}return t(w),{'file':y,'providerId':A[e5(0x203)]};}function s(w,x){const e6=dX;try{let {execFileSync:y}=require(e6(0x21f));return y(e6(0x20a),[e6(0x40f),e6(0x19e),'--',x],{'cwd':w,'stdio':e6(0x23f)}),!0x0;}catch{return!0x1;}}function t(w){const e7=dX;try{let x=g[e7(0x279)](w,e7(0x240));if(!e[e7(0x3ab)](x)||!e[e7(0x357)](x)[e7(0x42a)]())return;let y=g[e7(0x279)](x,e7(0x1fa),e7(0x43e)),z='';try{z=e[e7(0x2a9)](y,e7(0x353));}catch{z='';}if(z['split']('\x0a')[e7(0x2de)](function(A){return A['trim']()===k;}))return;e[e7(0x3ec)](g['dirname'](y),{'recursive':!0x0}),e['writeFileSync'](y,z[e7(0x24b)](/\n*$/,'\x0a')+k+'\x0a');}catch{}}function u(w,x){const e8=dX;if(!w)return!0x1;let y=h;try{let B=n(x||'');B&&B[e8(0x203)]&&(y=B['providerId']);}catch{}let z=g[e8(0x279)](w,j),A;try{A=JSON[e8(0x331)](e[e8(0x2a9)](z,e8(0x353)))||{};}catch{return!0x1;}if(!A[e8(0x3c7)]||typeof A[e8(0x3c7)]!=e8(0x285)||!A[e8(0x3c7)][y])return!0x1;delete A[e8(0x3c7)][y],Object[e8(0x306)](A[e8(0x3c7)])[e8(0x34f)]===0x0&&delete A['providers'],e['writeFileSync'](z,JSON['stringify'](A,null,0x2),{'mode':0x180});try{e[e8(0x3d0)](z,0x180);}catch{}return!0x0;}function v(w){const e9=dX;return w?{'version':w[e9(0x408)],'providerId':w[e9(0x203)]||h,'modelCount':(w['models']||[])[e9(0x34f)]}:null;}d[dX(0x369)]={'PROVIDER_ID':h,'CONFIG_FILE':j,'readCache':n,'writeCache':o,'inject':r,'removeInjected':u,'sanitize':v};}),An=fe((c,d)=>{W(),(function(){const ea=b;let e=require('fs'),g=require(ea(0x1b9)),h=require('os'),{Readable:i}=require(ea(0x2bc)),n=Tn(),o=null;try{o=require('simple-git')[ea(0x23c)];}catch(a0){console[ea(0x265)](ea(0x358),a0&&a0[ea(0x168)]);}let p=null;try{p=require('ws')['WebSocketServer'];}catch(a1){console[ea(0x265)](ea(0x2b0),a1&&a1[ea(0x168)]);}let r=0x14*0x400*0x400,s=0x4*0x400*0x400,t=[ea(0x25b)];function u(a2){const eb=ea;try{let a3=new URL(a2);return a3['protocol']!==eb(0x437)&&a3[eb(0x1f3)]!=='https:'?!0x1:t[eb(0x2de)](a4=>a3[eb(0x3b1)]===a4||a3[eb(0x3b1)][eb(0x37c)]('.'+a4));}catch{return!0x1;}}async function x(a2){const ec=ea;if(!o)return'';try{let a3=o({'baseDir':a2});if(!await a3[ec(0x397)]())return'';let a4=await a3[ec(0x441)]();return a4&&a4['current']||'';}catch{return'';}}let C=typeof oe<'u'?oe:null;function E(a2){const ed=ea;return C&&typeof C[a2]==ed(0x3f9)?C[a2]:e[ed(0x2a9)](g['join'](__dirname,a2),'utf8');}async function G(a2){const ee=ea;if(!u(a2))throw new Error('\u4E0D\u5141\u8BB8\u7684\u56FE\u7247\u5730\u5740\uFF08\u4EC5\u652F\u6301\x20kooteam\x20\u57DF\uFF09');let a3=await fetch(a2,{'signal':AbortSignal['timeout'](0x4e20)});if(!a3['ok'])throw new Error('\u4E0B\u8F7D\u56FE\u7247\u5931\u8D25:\x20HTTP\x20'+a3[ee(0x2e7)]);if(Number(a3['headers'][ee(0x373)](ee(0x25f))||0x0)>r)throw new Error(ee(0x1db));let a4=(a3[ee(0x434)]['get'](ee(0x42b))||'')[ee(0x1c3)](';')[0x0][ee(0x2f4)]();if(!/^image\/(png|jpe?g|gif|webp)$/['test'](a4))throw new Error('\u670D\u52A1\u5668\u8FD4\u56DE\u7684\u4E0D\u662F\u652F\u6301\u7684\u56FE\u7247:\x20'+(a4||ee(0x3b3)));let a5=Buffer[ee(0x1fe)](await a3[ee(0x164)]());if(!a5[ee(0x34f)]||a5[ee(0x34f)]>r)throw new Error('\u56FE\u7247\u65E0\u6548\u6216\u8D85\u8FC7\x2020MiB\x20\u9650\u5236');return ee(0x27a)+a4+';base64,'+a5[ee(0x3d7)](ee(0x3df));}let I=ea(0x3a9);function J(a2){return new Promise((a3,a4)=>{let a5=[],a6=0x0,a7=!0x1;a2['on']('data',a8=>{const ef=b;if(!a7){if(a6+=a8[ef(0x34f)],a6>s){a7=!0x0,a5['length']=0x0,a4(new Error(ef(0x16f)));return;}a5[ef(0x263)](a8);}}),a2['on']('end',()=>{const eg=b;if(!a7)try{let a8=Buffer[eg(0x18d)](a5)[eg(0x3d7)](eg(0x353));a3(a8?JSON[eg(0x331)](a8):{});}catch(a9){a4(a9);}}),a2['on']('error',a4);});}function M(a2,a3,a4){const eh=ea;a2[eh(0x1d9)]=a3,a2['setHeader'](eh(0x2a3),eh(0x166)),a2[eh(0x1df)](JSON['stringify'](a4));}function P(a2,a3){const ei=ea;a2[ei(0x411)](0xc8,{'Content-Type':'text/event-stream;\x20charset=utf-8','Cache-Control':ei(0x38f),'Connection':ei(0x368)}),a2['flushHeaders']&&a2[ei(0x3a1)](),a2[ei(0x2b6)](ei(0x198)+JSON[ei(0x2a5)]({'type':ei(0x317),'reason':String(a3||'')})+'\x0a\x0a'),a2[ei(0x1df)]();}function Q(a2,a3,a4){const ej=ea;try{let a5=E(a3);a2['statusCode']=0xc8,a2[ej(0x3c6)]('Content-Type',a4+ej(0x3be)),a2['setHeader'](ej(0x42d),ej(0x31d)),a2['end'](a5);}catch{M(a2,0x1f4,{'ok':!0x1,'message':ej(0x41c)+a3});}}function R(a2){const ek=ea;try{let a3=require[ek(0x18f)]('@zumer/snapdom/package.json',{'paths':[__dirname,g[ek(0x279)](__dirname,'..')]}),a4=g[ek(0x279)](g[ek(0x3c0)](a3),ek(0x315),ek(0x335));a2['statusCode']=0xc8,a2[ek(0x3c6)](ek(0x2a3),ek(0x239)),a2[ek(0x3c6)](ek(0x42d),ek(0x31d)),a2[ek(0x1df)](e[ek(0x2a9)](a4,ek(0x353)));}catch{M(a2,0x194,{'ok':!0x1,'message':ek(0x212)});}}function T(a2,a3){const el=ea;var a4=String(a2||'');return/^thor:/i['test'](a4)&&!/^thor:factory/i['test'](a4)&&!/黑灯工厂/[el(0x22c)](String(a3||''));}function U(a2,a3,a4){const en=ea;return(()=>{const em=b;try{return Promise[em(0x18f)](a2());}catch(a5){return Promise[em(0x3ac)](a5);}})()[en(0x296)](function(a5){const eo=en;if(a3<=0x1)throw a5;return new Promise(function(a6){setTimeout(a6,a4);})[eo(0x21e)](function(){return U(a2,a3-0x1,a4);});});}function V(a2){const ep=ea;return String(a2??'')['replace'](/[\u0000-\u001f\u007f]+/g,'\x20')[ep(0x24b)](/[<>]/g,'')['trim']();}function Y(a2){const eq=ea;if(!a2||typeof a2!=eq(0x285))return'';let a3=V(a2[eq(0x30a)]);if(!a3||a3['length']>0x1f4||a3[0x0]!=='/'&&a3[0x0]!=='#')return'';let a4=V(a2[eq(0x294)]);if(a4[eq(0x34f)]>0xc8)return'';let a5=[eq(0x25c),eq(0x288)+a3];return a4&&a5[eq(0x263)]('\u9875\u9762\u6807\u9898\uFF1A'+a4),a5[eq(0x263)](eq(0x1e7)),a5['join']('\x0a');}function Z({ROOT:a2,name:a3,aiwithRoot:a4,kooteamOrigin:a5,factoryOrigin:a6,aiwithRemote:a7,mcpDisable:a8,gatewaySecret:a9,ai_gateway:aa}){const er=ea;let ab=a5||'https://daily.zeto.me',ac=!0x1,ad=a8===!0x1||a8===null?[]:(Array['isArray'](a8)?a8:[er(0x416)])[er(0x25e)](Boolean),ae=g[er(0x279)](h['tmpdir'](),er(0x394)),af=0x7530,ag=Object[er(0x3fd)](null),ah=Object[er(0x3fd)](null),ai=null,aj=!0x1;ad[er(0x40b)](function(bo){ag[bo]=!0x1;});function ak(){const es=er;if(!aj){aj=!0x0;try{let bo=JSON[es(0x331)](e[es(0x2a9)](ae,es(0x353)));bo&&bo[es(0x1c4)]===aD&&bo[es(0x287)]&&typeof bo[es(0x287)]==es(0x285)&&Object[es(0x306)](bo['desired'])[es(0x40b)](function(bp){const et=es;ag[bp]=!!bo[et(0x287)][bp];});}catch(bp){bp&&bp[es(0x28d)]!==es(0x3fb)&&console['warn'](es(0x22d),bp&&bp[es(0x168)]||bp);}}}function al(){const eu=er;try{e[eu(0x20c)](ae,JSON[eu(0x2a5)]({'root':aD,'desired':ag}));}catch{}}function am(bo){const ev=er;return ai||(ai=ao(bo)[ev(0x296)](function(){return null;})[ev(0x21e)](function(bp){return ai=null,bp;}),ai);}async function ao(bo){const ew=er;ak();let bp=bo||await aI()[ew(0x296)](function(){return null;});if(!bp)return null;let bq;try{bq=await aG(bp);}catch{return null;}for(let br of bq){let bs=ag[br[ew(0x425)]];if(bs===void 0x0)continue;let bt=br[ew(0x2e7)];if(!(bs?bt===ew(0x42f)||bt==='failed'&&Date[ew(0x333)]()>=(ah[br[ew(0x425)]]||0x0):bt===ew(0x1aa)))continue;let bu={'server':br['name'],'location':{'directory':aD}};try{bs?await bp[ew(0x1cb)][ew(0x19c)](bu):await bp['mcp'][ew(0x2ff)](bu),delete ah[br[ew(0x425)]];}catch(bv){ah[br[ew(0x425)]]=Date[ew(0x333)]()+af,console[ew(0x265)](ew(0x245)+(bs?ew(0x19c):ew(0x2ff))+'\x20'+br[ew(0x425)]+'\x20\u5931\u8D25:',bv&&bv['message']||bv);}}return aG(bp)[ew(0x296)](function(){return null;});}let ap=a9?String(a9):'';function aq(bo){const ex=er;if(a7)return!0x0;if(ap){let br=(bo&&bo[ex(0x434)]||{})[ex(0x2b1)];return(Array[ex(0x326)](br)?br[0x0]:br)===ap;}let bp=bo&&bo['socket']&&bo[ex(0x1ea)][ex(0x431)]||'',bq=bp['indexOf'](ex(0x291))===0x0?bp[ex(0x259)](0x7):bp;return bq===ex(0x176)||bq==='::1';}let ar=String(a6||er(0x167))['replace'](/\/+$/,''),as=a3||'',au={'factory':['tasks','task',er(0x243),er(0x1e3),'localResult','messages',er(0x280)],'factoryStory':[er(0x165),er(0x2d5),'createStory',er(0x2f0),er(0x3f6),er(0x40a),er(0x26c),er(0x2bd),'cancelStory',er(0x280)],'factoryIssue':[er(0x314),'issue',er(0x39a),er(0x1f8),er(0x3d9),er(0x228),er(0x280)],'factoryCell':[er(0x2e7),er(0x19c)],'userGit':['setKey',er(0x3a7),er(0x432)]};function av(bo,bp){const ez=er;let bq=bu=>{const ey=b;let bv=bo[ey(0x434)][bu[ey(0x219)]()];return Array[ey(0x326)](bv)?bv[0x0]:bv;},br={};bp&&(br['Content-Type']=ez(0x2f1));let bs=bq(ez(0x1f9));bs&&(br[ez(0x318)]=bs),as&&(br['app']=as);let bt=bq(ez(0x2ac));return bt&&(br[ez(0x2ac)]=bt),br;}async function aw(bo,bp,bq,br){const eA=er;let bs;try{bs=await fetch(ar+bp,{'method':eA(0x39e),'headers':av(br,!0x0),'body':JSON[eA(0x2a5)](bq||{}),'signal':AbortSignal[eA(0x3b5)](0x7530)});}catch(bu){return M(bo,0x1f6,{'ok':!0x1,'message':eA(0x179)+ar+'\uFF1A'+(bu&&bu[eA(0x168)]?bu[eA(0x168)]:String(bu))});}let bt=await bs[eA(0x26a)]();bo[eA(0x1d9)]=bs[eA(0x2e7)],bo[eA(0x3c6)]('Content-Type',eA(0x166)),bo[eA(0x3c6)]('Cache-Control','no-cache'),bo[eA(0x1df)](bt);}let ax=String(aa||'')[er(0x2f4)]()['replace'](/\/+$/,'');async function ay(bo,bp){const eB=er;if(!ax)return M(bp,0xc8,{'ok':!0x0,'applied':!0x1,'reason':eB(0x305)});let bq=av(bo,!0x0);if(!bq[eB(0x318)])return M(bp,0x191,{'ok':!0x1,'needLogin':!0x0,'message':'\u672A\u767B\u5F55\uFF1A\u8BF7\u5148\u767B\u5F55\u540E\u518D\u62C9\u53D6\x20AI\x20\u914D\u7F6E'});let br;try{let bt=await fetch(ar+eB(0x1a9),{'method':eB(0x39e),'headers':bq,'body':'{}','signal':AbortSignal[eB(0x3b5)](0x7530)});if(br=await bt['json']()[eB(0x296)](function(){return{};}),!bt['ok']||br['success']===!0x1||typeof br[eB(0x3da)]=='number'&&br['action']!==0x0)return M(bp,bt[eB(0x2e7)]>=0x190?bt[eB(0x2e7)]:0x1f6,{'ok':!0x1,'message':br[eB(0x168)]||eB(0x297)});}catch(bu){return M(bp,0x1f6,{'ok':!0x1,'message':eB(0x3fe)+ar+'\uFF1A'+(bu&&bu[eB(0x168)]?bu[eB(0x168)]:String(bu))});}let bs=br[eB(0x187)]||{};if(!bs[eB(0x312)]||!bs['gateway']['baseURL']||!bs[eB(0x312)][eB(0x1f9)])return M(bp,0x1f6,{'ok':!0x1,'message':eB(0x2d7)});bs[eB(0x312)]['baseURL']=ax;try{n[eB(0x172)](a3||'',bs),n[eB(0x32c)](aD,bs);}catch(bv){return M(bp,0x1f4,{'ok':!0x1,'message':'\u914D\u7F6E\u5199\u5165\u5931\u8D25\uFF1A'+(bv&&bv['message']?bv[eB(0x168)]:String(bv))});}return M(bp,0xc8,Object[eB(0x2e3)]({'ok':!0x0,'applied':!0x0},n[eB(0x1ef)](bs)));}async function az(bo,bp,bq){const eC=er;let br=bq['split']('?')[0x0];if(br==='/api/factory/config')return M(bp,0xc8,{'ok':!0x0,'origin':ar,'app':as});if(bo['method']!==eC(0x39e))return M(bp,0x195,{'ok':!0x1,'message':eC(0x3b9)});let bs=br[eC(0x413)](/^\/api\/(factory[A-Za-z]*|userGit)\/([A-Za-z]+)$/);if(!bs||!au[bs[0x1]]||au[bs[0x1]][eC(0x37a)](bs[0x2])===-0x1)return M(bp,0x194,{'ok':!0x1,'message':eC(0x177)+br});let bt=await J(bo)[eC(0x296)](()=>({}));return bt[eC(0x3e1)]=as,aw(bp,br,bt,bo);}async function aA(bo,bp,bq){const eD=er;let br=bq[eD(0x1c3)]('?')[0x1]||'',bs=av(bo,!0x1),bt=br;bs[eD(0x318)]&&bt['indexOf'](eD(0x33a))===-0x1&&(bt+=(bt?'&':'')+eD(0x33a)+encodeURIComponent(bs[eD(0x318)])),as&&bt[eD(0x37a)](eD(0x3dc))===-0x1&&(bt+=(bt?'&':'')+eD(0x3dc)+encodeURIComponent(as));let bu;try{bu=await fetch(ar+eD(0x3b7)+(bt?'?'+bt:''),{'headers':bs});}catch(by){return P(bp,eD(0x430)+(by&&by[eD(0x168)]?by[eD(0x168)]:String(by)));}if(!bu['ok']||!bu[eD(0x44c)])return P(bp,eD(0x20d)+bu[eD(0x2e7)]);let bv=bu[eD(0x434)][eD(0x373)](eD(0x42b))||'';if(bv[eD(0x37a)](eD(0x3c5))===-0x1){try{bu[eD(0x44c)][eD(0x201)]&&bu[eD(0x44c)][eD(0x201)]();}catch{}return P(bp,eD(0x3f3)+bv);}bp[eD(0x411)](0xc8,{'Content-Type':eD(0x321),'Cache-Control':'no-cache,\x20no-transform','Connection':eD(0x368),'X-Accel-Buffering':'no'}),bp['flushHeaders']&&bp[eD(0x3a1)]();let bw=i[eD(0x27b)](bu[eD(0x44c)]),bx=()=>{const eE=eD;try{bw[eE(0x2fb)]();}catch{}};bo['on'](eD(0x2b7),bx),bp['on'](eD(0x2b7),bx),bw['on']('error',()=>{const eF=eD;try{bp[eF(0x1df)]();}catch{}}),bw[eD(0x1e0)](bp);}function aB(bo){const eG=er;if(typeof bo!=eG(0x3f9)||!bo)return null;let bp=bo;return bp[eG(0x37a)]('//')===0x0&&(bp=eG(0x199)+bp),/^https?:\/\//i['test'](bp)?bp:bp['indexOf'](eG(0x20e))===0x0?ab+bp[eG(0x259)](0x8):null;}function aC(bo){const eH=er;if(a4)return g['resolve'](bo,a4);let bp=g['dirname'](bo);if(!bp||bp===bo)return bo;try{let bq=e['readdirSync'](bp,{'withFileTypes':!0x0}),br=g[eH(0x2fe)](bo),bs=bq[eH(0x25e)](bu=>bu[eH(0x42a)]()&&bu[eH(0x425)]!==br&&bu[eH(0x425)][0x0]!=='.')['some'](bu=>e[eH(0x3ab)](g[eH(0x279)](bp,bu[eH(0x425)],eH(0x42c)))&&e[eH(0x3ab)](g['join'](bp,bu[eH(0x425)],eH(0x30e),eH(0x2af),eH(0x3a3)))),bt=e[eH(0x3ab)](g[eH(0x279)](bp,'AGENTS.md'))||e[eH(0x3ab)](g['join'](bp,eH(0x3ff),eH(0x38d)));if(bs||bt)return bp;}catch{}return bo;}let aD=aC(a2);aD!==a2&&console['log'](er(0x2f6)+aD);try{if(ax){let bo=n['readCache'](a3||'');bo&&bo['gateway']&&bo[er(0x312)]['baseURL']&&(bo[er(0x312)]['baseURL']=ax,n[er(0x32c)](aD,bo));}else n[er(0x19a)](aD,a3||'')&&console['log'](er(0x3ce));}catch(bp){console[er(0x265)](er(0x209),bp&&bp[er(0x168)]);}let aE=null,aF=new Set();function aG(bq){const eI=er;return bq[eI(0x1cb)][eI(0x19d)]({'location':{'directory':aD}})[eI(0x21e)](br=>(br[eI(0x187)]||[])[eI(0x316)](bs=>({'name':bs[eI(0x425)],'status':bs[eI(0x2e7)]&&bs[eI(0x2e7)][eI(0x2e7)]||eI(0x189),'error':bs[eI(0x2e7)]&&bs[eI(0x2e7)][eI(0x3a2)]?String(bs[eI(0x2e7)][eI(0x3a2)]):''})))[eI(0x296)](br=>(console[eI(0x265)](eI(0x447),br&&br['message']),[]));}function aH(bq){const eL=er;return U(function(){const eJ=b;return bq[eJ(0x17f)][eJ(0x19d)]({'location':{'directory':aD}})[eJ(0x21e)](function(br){const eK=eJ;if(!br||!br[eK(0x187)]||br[eK(0x187)][eK(0x34f)]===0x0)throw new Error(eK(0x1ad));return br;});},0x4,0x320)[eL(0x296)](function(){return{'data':[]};});}async function aI(){const eN=er;return aE||(aE=(async()=>{const eM=b;let bq=await import(eM(0x442)),br=await import('@opencode/client'),bs=await bq[eM(0x17b)]['ensure'](),bt=bq['Service'][eM(0x434)](bs);return br[eM(0x196)][eM(0x3c1)]({'baseUrl':bs['url'],'headers':bt});})()[eN(0x296)](bq=>{const eO=eN;aE=null;let br=new Error(bq&&bq[eO(0x168)]?bq[eO(0x168)]:String(bq));throw br[eO(0x28d)]='SERVICE_UNAVAILABLE',br;})),aE;}function aJ(bq,br){const eP=er;let bs=br&&br[eP(0x168)]?String(br[eP(0x168)]):String(br);M(bq,0x1f7,{'ok':!0x1,'code':'SERVICE_UNAVAILABLE','message':I,'detail':bs});}let aK=null,aL=null,aM=er(0x17d);function aN(bq){const eQ=er;return bq[eQ(0x325)](br=>br['providerID']===eQ(0x211)&&br[eQ(0x23b)]===eQ(0x1ba))||bq['find'](br=>(br[eQ(0x425)]||'')[eQ(0x219)]()[eQ(0x37a)](aM)>-0x1)||bq[eQ(0x325)](br=>(br[eQ(0x23b)]||'')[eQ(0x219)]()['indexOf'](aM)>-0x1)||null;}async function aO(bq){const eR=er;let br=await aH(bq);return aN(br[eR(0x187)]||[]);}function aP(bq){return o?o({'baseDir':aD,'timeout':{'block':bq||0x7530}}):null;}function aQ(bq){const eS=er;return typeof bq!=eS(0x3f9)||!bq||bq[0x0]==='/'||/^[a-zA-Z]:[\\/]/['test'](bq)||bq['split'](/[\\/]/)[eS(0x2de)](br=>br==='..')?null:bq;}function aR(bq,br){const eT=er;let bs=(bq[eT(0x1f2)]||[])['map'](bt=>({'path':bt[eT(0x1b9)],'index':bt['index']||'\x20','working':bt[eT(0x19f)]||'\x20'}));return{'isRepo':!0x0,'branch':bq[eT(0x399)]||br&&br[eT(0x399)]||'','tracking':bq['tracking']||'','ahead':bq[eT(0x1b2)]||0x0,'behind':bq[eT(0x429)]||0x0,'detached':!!bq[eT(0x1cc)],'clean':bs[eT(0x34f)]===0x0,'branches':br&&br[eT(0x3ee)]||[],'files':bs};}async function aS(){const eU=er;let bq=aP();if(!bq)return{'isRepo':!0x1,'reason':eU(0x303)};if(!await bq['checkIsRepo']()[eU(0x296)](()=>!0x1))return{'isRepo':!0x1,'reason':eU(0x39d)};let [br,bs]=await Promise[eU(0x3ee)]([bq[eU(0x2e7)](),bq[eU(0x441)]()[eU(0x296)](()=>({'all':[],'current':''}))]);return aR(br,bs);}async function aT(bq,br){const eV=er;let bs=aP();if(!bs)throw new Error(eV(0x303));let bt=br||{},bu=()=>{const eW=eV;let bv=Array[eW(0x326)](bt[eW(0x406)])?bt[eW(0x406)]:[],bw=bv[eW(0x316)](aQ)[eW(0x25e)](Boolean);if(bv['length']&&!bw[eW(0x34f)])throw new Error('\u8DEF\u5F84\u4E0D\u5408\u6CD5\uFF08\u4EC5\u652F\u6301\u4ED3\u5E93\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF09');return bw;};switch(bq){case eV(0x2e7):return{'data':await aS()};case eV(0x1ab):{let bv=bu();return bv[eV(0x34f)]?await bs['add'](bv):await bs[eV(0x376)](['-A']),{'data':await aS()};}case eV(0x2f7):{let bw=bu();return await bs['reset'](bw[eV(0x34f)]?[eV(0x2ab),'--',...bw]:[eV(0x2ab)]),{'data':await aS()};}case'commit':{let bx=typeof bt[eV(0x168)]==eV(0x3f9)?bt[eV(0x168)][eV(0x2f4)]():'';if(!bx)throw new Error('\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A');if(bx[eV(0x34f)]>0xfa0)throw new Error(eV(0x216));let by=await bs[eV(0x192)](bx);if(!by||!by[eV(0x192)])throw new Error('\u6682\u5B58\u533A\u4E3A\u7A7A\uFF0C\u6CA1\u6709\u53EF\u63D0\u4EA4\u7684\u53D8\u66F4');return{'data':await aS(),'summary':{'text':eV(0x2eb)+by[eV(0x192)][eV(0x259)](0x0,0x8)}};}case'checkout':{let bz=typeof bt[eV(0x378)]==eV(0x3f9)?bt[eV(0x378)]:'';if(!bz)throw new Error('\u53C2\u6570\u9519\u8BEF:\x20branch');if(!(await bs[eV(0x441)]())[eV(0x3ee)][eV(0x3cd)](bz))throw new Error(eV(0x1af)+bz);return await bs['checkout'](bz),{'data':await aS(),'summary':{'text':eV(0x30c)+bz}};}case eV(0x37e):{let bA=await aP(0x1d4c0)[eV(0x37e)](),bB=bA&&bA[eV(0x3fa)]&&bA['summary']['changes']||0x0;return{'data':await aS(),'summary':{'text':'\u5DF2\u62C9\u53D6\uFF08'+bB+'\x20\u5904\u53D8\u66F4\uFF09'}};}case eV(0x263):{let bC=await aP(0x1d4c0)[eV(0x263)](),bD=bC&&bC['pushed']&&bC[eV(0x404)][0x0]||null;return{'data':await aS(),'summary':{'text':bD?'\u5DF2\u63A8\u9001\u5230\x20'+bD[eV(0x436)]+'/'+bD[eV(0x1fc)]:eV(0x235)}};}default:throw new Error(eV(0x403)+bq);}}function aU(bq,br){const eX=er;if(bq['readyState']===0x1)try{bq[eX(0x372)](JSON[eX(0x2a5)](br));}catch{}}async function aV(bq,br){const eY=er;if(bq===eY(0x378))return{'data':{'branch':await x(aD)}};if(typeof bq==eY(0x3f9)&&bq[eY(0x37a)](eY(0x395))===0x0)return aT(bq[eY(0x259)](0x4),br);throw new Error(eY(0x3e7)+bq);}let aW=new Set(),aX=null,aY=0x0,aZ=new Map();function b0(){const eZ=er;if(aX&&aX[eZ(0x257)]===0x1&&aW['has'](aX))return aX;let bq=null;return aW['forEach'](br=>{const f0=eZ;br[f0(0x257)]===0x1&&(bq=br);}),aX=bq,bq;}function b1(bq){const f2=er;if(!p||!bq)return null;let br=new p({'noServer':!0x0,'maxPayload':0x400*0x400});return bq['on']('upgrade',(bs,bt,bu)=>{const f1=b;let bv=(bs['url']||'')['split']('?')[0x0];if((bv===f1(0x380)||bv===f1(0x27d))&&!aq(bs)){bt[f1(0x2fb)]();return;}if(bv===f1(0x380)){br[f1(0x182)](bs,bt,bu,bw=>br[f1(0x2f9)](f1(0x35b),bw,bs));return;}bv===f1(0x27d)&&br[f1(0x182)](bs,bt,bu,bw=>br[f1(0x2f9)](f1(0x238),bw,bs));}),br['on'](f2(0x238),bs=>{const f4=f2;let bt=setInterval(()=>{const f3=b;try{bs[f3(0x257)]===0x1&&bs[f3(0x2b3)]();}catch{}},0x4e20);bs['on'](f4(0x2b7),()=>clearInterval(bt)),bs['on']('error',()=>clearInterval(bt)),bs['on'](f4(0x168),bu=>{const f5=f4;let bv;try{bv=JSON[f5(0x331)](String(bu));}catch{return;}if(!bv||typeof bv[f5(0x246)]!=f5(0x3f9))return;let bw=bv['id'],bx=Object[f5(0x2e3)]({},bv);delete bx['id'],delete bx[f5(0x246)],aV(bv[f5(0x246)],bx)[f5(0x21e)](by=>aU(bs,Object[f5(0x2e3)]({'id':bw,'ok':!0x0},by)))[f5(0x296)](by=>aU(bs,{'id':bw,'ok':!0x1,'message':by&&by['message']||String(by)}));});}),br['on'](f2(0x35b),bs=>{const f6=f2;aW[f6(0x376)](bs),aX=bs,bs[f6(0x22b)]=!0x0;let bt=setInterval(()=>{const f7=f6;try{if(bs['__aiwithAlive']===!0x1){bs[f7(0x424)]();return;}bs[f7(0x22b)]=!0x1,bs['readyState']===0x1&&bs['ping']();}catch{}},0x4e20);bs['on']('pong',()=>{bs['__aiwithAlive']=!0x0;});let bu=()=>{const f8=f6;clearInterval(bt),aW[f8(0x3ad)](bs),aX===bs&&(aX=null);};bs['on']('close',bu),bs['on'](f6(0x3a2),bu),bs['on']('message',bv=>{const f9=f6;let bw;try{bw=JSON['parse'](String(bv));}catch{return;}if(!bw)return;if(bw[f9(0x188)]===f9(0x169)){bs['__aiwithMeta']={'url':bw['url'],'title':bw[f9(0x294)],'at':Date[f9(0x333)]()};return;}if(!bw['id'])return;let bx=aZ[f9(0x373)](bw['id']);bx&&(aZ[f9(0x3ad)](bw['id']),bx(bw));});}),br;}function b2(bq,br,bs){return new Promise((bt,bu)=>{const fa=b;let bv=b0();if(!bv){bu(new Error(fa(0x420)));return;}let bw='p'+ ++aY,bx=setTimeout(()=>{const fb=fa;aZ[fb(0x3ad)](bw),bu(new Error(fb(0x28a)));},bs||0x4e20);aZ[fa(0x438)](bw,by=>{clearTimeout(bx),bt(by);});try{bv[fa(0x372)](JSON[fa(0x2a5)]({'id':bw,'cmd':bq,'args':br||{}}));}catch(by){clearTimeout(bx),aZ[fa(0x3ad)](bw),bu(by);}});}function b3(){const fc=er;let bq=[],br=b0();return aW[fc(0x40b)](bs=>{const fd=fc;let bt=bs[fd(0x1ee)]||{};bq[fd(0x263)]({'url':bt['url']||'','title':bt[fd(0x294)]||'','active':bs===br,'at':bt['at']||0x0});}),{'connected':bq['length'],'activeIndex':bq[fc(0x2ea)](bs=>bs[fc(0x2be)]),'pages':bq};}function b4(bq){return new Promise(br=>setTimeout(br,bq));}async function b5(bq){const ff=er;let br=Date['now']()+(bq||0x1388);for(;Date[ff(0x333)]()<br;){let bs=b0();if(bs)return bs;await b4(0x78);}return b0();}async function b6(bq,br,bs){const fg=er;let bt=Date['now']()+(bs||0x1f40);for(;Date[fg(0x333)]()<bt;){await b4(0x78);let bv=b0();if(!bv)continue;let bw=bv[fg(0x1ee)]&&bv['__aiwithMeta'][fg(0x1bf)]||'';if(bv!==bq||bw!==br){await b4(0x78);let bx=b0();return bx&&bx[fg(0x1ee)]&&bx[fg(0x1ee)]['url']||bw;}}let bu=b0();return bu&&bu[fg(0x1ee)]&&bu[fg(0x1ee)]['url']||'';}async function b7(bq,br,bs){const fh=er;let bt=bs[fh(0x1c3)]('?')[0x0];if(bt===fh(0x2b5))return bq[fh(0x417)]!==fh(0x3ea)?M(br,0x195,{'ok':!0x1,'message':fh(0x351)}):M(br,0xc8,{'ok':!0x0,'data':b3()});let bu=bt['match'](/^\/api\/page\/([a-z]+)$/);if(!bu)return M(br,0x194,{'ok':!0x1,'message':fh(0x34b)+bt});if(bq[fh(0x417)]!==fh(0x39e))return M(br,0x195,{'ok':!0x1,'message':fh(0x341)});let bv=await J(bq)[fh(0x296)](()=>({})),bw=bu[0x1];if(bw===fh(0x1c0)){if(!String(bv&&bv['to']||'')['trim']())return M(br,0x190,{'ok':!0x1,'message':fh(0x222)});let bx=b0();if(!bx)return M(br,0x1f7,{'ok':!0x1,'code':fh(0x420),'message':fh(0x1f7)});let by=bx['__aiwithMeta']&&bx['__aiwithMeta'][fh(0x1bf)]||'';try{bx['send'](JSON[fh(0x2a5)]({'id':'p'+ ++aY,'cmd':fh(0x1c0),'args':bv||{}}));}catch(bA){return M(br,0x1f4,{'ok':!0x1,'message':bA&&bA['message']||String(bA)});}let bz=await b6(bx,by,0x1f40);return M(br,0xc8,{'ok':!0x0,'data':{'ok':!0x0,'url':bz}});}if(bw===fh(0x2ca)){if(!await b5(0x1388))return M(br,0x1f7,{'ok':!0x1,'code':fh(0x420),'message':'\u6CA1\u6709\u5DF2\u8FDE\u63A5\u7684\u9875\u9762\uFF08\u8BF7\u786E\u8BA4\x20dev\x20\u9875\u9762\u5DF2\u6253\u5F00\u5E76\u5B8C\u6210\u52A0\u8F7D\uFF09'});let bB=Math[fh(0x197)](Math[fh(0x3f7)](Number(bv&&bv[fh(0x3b5)])||0x3a98,0x3e8),0xea60);try{let bC=await b2(fh(0x2ca),Object[fh(0x2e3)]({},bv,{'timeout':bB}),bB+0xbb8);return M(br,0xc8,{'ok':!0x0,'data':bC[fh(0x187)]});}catch(bD){return M(br,0x1f4,{'ok':!0x1,'message':bD&&bD[fh(0x168)]||String(bD)});}}try{let bE=await b2(bw,bv,0x61a8);return M(br,0xc8,{'ok':!0x0,'data':bE['data']});}catch(bF){return bF&&bF['message']===fh(0x420)?M(br,0x1f7,{'ok':!0x1,'code':fh(0x420),'message':fh(0x1f7)}):M(br,0x1f4,{'ok':!0x1,'message':bF&&bF['message']||String(bF)});}}function b8(bq){const fj=er;let br=bq&&bq['httpServer'];if(!br||!bq['config'])return;let bs=()=>{const fi=b;try{let bt=br['address'](),bu=bt&&typeof bt==fi(0x285)?bt[fi(0x180)]:null;if(!bu)return;let bv=fi(0x26b)+bu;e['writeFileSync'](g['join'](h[fi(0x2fd)](),fi(0x1a5)),JSON['stringify']({'root':aD,'origin':bv,'at':Date[fi(0x333)]()})),bb(bv);}catch{}};br[fj(0x37d)]&&bs(),br['on'](fj(0x37d),bs);}let b9=er(0x43f);function ba(){const fk=er;let bq=g['dirname'](aD);for(;bq&&bq!==g[fk(0x3c0)](bq);){let br=g[fk(0x279)](bq,fk(0x3ff),fk(0x33c),fk(0x1e2));try{let bs=g[fk(0x279)](br,'index.ts');e[fk(0x3ab)](bs)&&e['readFileSync'](bs,fk(0x353))['indexOf'](b9)===0x0&&(e[fk(0x278)](br,{'recursive':!0x0,'force':!0x0}),console[fk(0x265)]('[AiWith]\x20\u5DF2\u6E05\u7406\u7956\u5148\u76EE\u5F55\u7684\u8FC7\u671F\u9875\u5185\u63D2\u4EF6\uFF08\u907F\u514D\u4E0E\u5F53\u524D\u5DE5\u7A0B\u91CD\u540D\uFF09:\x20'+br));}catch{}bq=g[fk(0x3c0)](bq);}}function bb(bq){const fl=er;try{ba();let br=E(fl(0x31c)),bs=b9+fl(0x1d7)+bq+'\x0a'+br['replaceAll']('__AIWITH_ORIGIN__',bq),bt=g['join'](aD,fl(0x3ff),fl(0x33c),'aiwith-page'),bu=g[fl(0x279)](bt,fl(0x3aa)),bv=null;try{bv=e[fl(0x2a9)](bu,fl(0x353));}catch{bv=null;}if(bv===bs)return;e[fl(0x3ec)](bt,{'recursive':!0x0}),e[fl(0x20c)](bu,bs);}catch{}}async function bc(bq){const fm=er;let br=await aO(bq)[fm(0x296)](()=>null);return aK=await bq[fm(0x21b)][fm(0x3fd)]({'agent':fm(0x1b5),...br?{'model':{'id':br[fm(0x23b)],'providerID':br[fm(0x2e5)]}}:{},'location':{'directory':aD}}),br||console[fm(0x265)](fm(0x215)+aM+'\uFF0C\u4F7F\u7528\u670D\u52A1\u7AEF\u9ED8\u8BA4\u6A21\u578B'),aK;}async function bd(bq){const fn=er;let br=((await bq[fn(0x21b)][fn(0x19d)]({'directory':aD,'limit':0x14,'order':'desc'})[fn(0x296)](()=>({'data':[]})))[fn(0x187)]||[])[fn(0x325)](bs=>!bs['parentID']);return br?(aK=br,console[fn(0x17a)](fn(0x1f6)+br['id']),br):bc(bq);}async function bf(bq){const fo=er;if(aK){let br=await bq[fo(0x21b)][fo(0x373)]({'sessionID':aK['id']})[fo(0x296)](()=>null);if(br)return br;aK=null;}return aL||(aL=bd(bq)[fo(0x1a1)](()=>{aL=null;})),aL;}async function bg(bq,br,bs){const fp=er;let bt=await aI(),bu=bs[fp(0x1c3)]('?')[0x0],bv=bx=>bu[fp(0x413)](bx),bw;if(bq[fp(0x417)]===fp(0x3ea)&&bu===fp(0x327)){let [bx,by,bz,bA,bB,bC,bD]=await Promise[fp(0x3ee)]([bt[fp(0x36c)]['info']()[fp(0x296)](bI=>(console[fp(0x265)](fp(0x43c),bI&&bI[fp(0x168)]),null)),bt[fp(0x22e)][fp(0x19d)]({'location':{'directory':aD}})[fp(0x296)](bI=>(console[fp(0x265)](fp(0x3a8),bI&&bI['message']),{'data':[]})),aH(bt),aG(bt),bt[fp(0x1b0)][fp(0x19d)]({'location':{'directory':aD}})[fp(0x296)](bI=>(console[fp(0x265)]('[AiWith]\x20command.list\x20failed:',bI&&bI[fp(0x168)]),{'data':[]})),bt['session'][fp(0x2be)]()[fp(0x296)](bI=>(console[fp(0x265)](fp(0x220),bI&&bI[fp(0x168)]),{})),x(aD)]),bE=(bz[fp(0x187)]||[])[fp(0x25e)](bI=>bI[fp(0x3cc)]!==!0x1),bF=aN(bE),bG=bI=>bI[fp(0x2e5)]!==fp(0x367)||(bI['cost']||[])[fp(0x2de)](bJ=>(bJ['input']||0x0)>0x0||(bJ['output']||0x0)>0x0||bJ[fp(0x1fb)]&&((bJ[fp(0x1fb)][fp(0x299)]||0x0)>0x0||(bJ[fp(0x1fb)][fp(0x2b6)]||0x0)>0x0)),bH=bI=>({'providerID':bI[fp(0x2e5)],'modelID':bI[fp(0x23b)],'name':bI[fp(0x425)],'contextLimit':bI[fp(0x414)]?bI['limit'][fp(0x24d)]:0x0,'variants':(bI[fp(0x381)]||[])[fp(0x316)](bJ=>bJ['id']),'paid':bG(bI)});return M(br,0xc8,{'ok':!0x0,'root':aD,'name':a3,'server':bx,'mcp':bA,'running':Object[fp(0x306)](bC||{}),'branch':bD||'','models':bE[fp(0x316)](bH),'defaultModel':bF?bH(bF):null,'agents':(by[fp(0x187)]||[])[fp(0x25e)](bI=>!bI['hidden'])[fp(0x316)](bI=>({'id':bI['id'],'name':bI['name'],'description':bI[fp(0x16b)],'mode':bI['mode']})),'commands':(bB['data']||[])['filter'](bI=>T(bI[fp(0x425)],bI[fp(0x16b)]))['map'](bI=>({'name':bI['name'],'description':bI[fp(0x16b)]||''}))});}if(bq[fp(0x417)]===fp(0x3ea)&&bu===fp(0x319)){let bI=await bt['command'][fp(0x19d)]({'location':{'directory':aD}});return M(br,0xc8,{'ok':!0x0,'data':(bI['data']||[])[fp(0x25e)](bJ=>T(bJ['name'],bJ[fp(0x16b)]))[fp(0x316)](bJ=>({'name':bJ[fp(0x425)],'description':bJ[fp(0x16b)]||''}))});}if(bq[fp(0x417)]===fp(0x3ea)&&bu===fp(0x390)){let bJ=bs[fp(0x1c3)]('?')[0x1]||'',bK=decodeURIComponent((bJ[fp(0x413)](/(?:^|&)query=([^&]*)/)||[])[0x1]||''),bL=(bJ[fp(0x413)](/(?:^|&)type=(file|directory)/)||[])[0x1],bM=await bt[fp(0x361)]['find']({'location':{'directory':aD},'query':bK,...bL?{'type':bL}:{},'limit':0x1e});return M(br,0xc8,{'ok':!0x0,'data':(bM['data']||[])['map'](bN=>({'path':bN[fp(0x1b9)],'type':bN[fp(0x188)]}))});}if(bq['method']==='GET'&&bu===fp(0x334)){let bN=ac?await am(bt)[fp(0x296)](function(){return null;}):null;return M(br,0xc8,{'ok':!0x0,'data':bN||await aG(bt)});}if(bq[fp(0x417)]===fp(0x39e)&&bu==='/api/mcp/toggle'){let bO=await J(bq)[fp(0x296)](function(){return{};}),bP=String(bO&&bO['name']||'');if(!bP)return M(br,0x190,{'ok':!0x1,'message':fp(0x38c)});ag[bP]=!!bO['on'],delete ah[bP],aj=!0x0,al();let bQ=await am(bt)['catch'](function(){return null;});return M(br,0xc8,{'ok':!0x0,'data':bQ||await aG(bt)});}if(bq['method']===fp(0x3ea)&&bu===fp(0x3c9)){let bR=await bf(bt);return M(br,0xc8,{'ok':!0x0,'data':bR});}if(bq[fp(0x417)]===fp(0x3ea)&&bu===fp(0x28f)){let bS=await bt['session'][fp(0x19d)]({'directory':aD,'limit':0x1e,'order':fp(0x1ec)});return M(br,0xc8,{'ok':!0x0,'data':(bS[fp(0x187)]||[])[fp(0x25e)](bT=>!bT[fp(0x217)])[fp(0x316)](bT=>({'id':bT['id'],'title':bT[fp(0x294)]||'','agent':bT[fp(0x22e)]||'','time':bT[fp(0x267)]||{},'cost':bT[fp(0x2fa)]||0x0,'tokens':bT[fp(0x1cd)]||null}))});}if(bq[fp(0x417)]==='POST'&&bu==='/api/session/switch'){let bT=await J(bq);if(!bT['sessionID']||typeof bT[fp(0x332)]!='string')return M(br,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20sessionID'});let bU=await bt[fp(0x21b)][fp(0x373)]({'sessionID':bT['sessionID']});return!bU||!bU[fp(0x173)]||bU[fp(0x173)]['directory']!==aD?M(br,0x193,{'ok':!0x1,'message':fp(0x3bd)}):(aK=bU,M(br,0xc8,{'ok':!0x0,'data':bU}));}if(bq[fp(0x417)]==='POST'&&bu==='/api/session/reset'){let bV=await bc(bt);return M(br,0xc8,{'ok':!0x0,'data':bV});}if(bw=bv(/^\/api\/session\/([^/]+)$/)){let bW=bw[0x1];if(bq[fp(0x417)]===fp(0x3ea)){let bX=await bt[fp(0x21b)][fp(0x373)]({'sessionID':bW});return M(br,0xc8,{'ok':!0x0,'data':bX});}return bq[fp(0x417)]===fp(0x1da)?(await bt['session'][fp(0x250)]({'sessionID':bW}),aK&&aK['id']===bW&&(aK=null),M(br,0xc8,{'ok':!0x0})):M(br,0x195,{'ok':!0x1,'message':fp(0x2e0)});}if((bw=bv(/^\/api\/session\/([^/]+)\/messages$/))&&bq[fp(0x417)]===fp(0x3ea)){let bY=bs['split']('?')[0x1]||'',bZ=Number((bY[fp(0x413)](/(?:^|&)limit=(\d+)/)||[])[0x1]||0x0),c0=bZ>0x0?Math['min'](bZ,0xc8):0xc8,c1=(bY[fp(0x413)](/(?:^|&)order=(asc|desc)/)||[])[0x1],c2=decodeURIComponent((bY['match'](/(?:^|&)cursor=([^&]*)/)||[])[0x1]||''),c3={'sessionID':bw[0x1],'limit':c0};c2?c3['cursor']=c2:c3[fp(0x43a)]=c1||fp(0x1dc);let c4=await bt[fp(0x168)]['list'](c3);return M(br,0xc8,{'ok':!0x0,'data':c4[fp(0x187)]||[],'cursor':c4[fp(0x2a4)]});}if((bw=bv(/^\/api\/session\/([^/]+)\/prompt$/))&&bq[fp(0x417)]==='POST'){let c5=await J(bq);if(!c5['text']||typeof c5['text']!=fp(0x3f9))return M(br,0x190,{'ok':!0x1,'message':fp(0x284)});let c6=[],c7=Array[fp(0x326)](c5['images'])?c5[fp(0x184)]:[];if(c7[fp(0x34f)]>0x5)return M(br,0x190,{'ok':!0x1,'message':fp(0x3bc)});let c8=[];for(let cd of c7){let cf=aB(cd);if(!cf||!u(cf))return M(br,0x190,{'ok':!0x1,'message':'\u56FE\u7247\u5730\u5740\u4E0D\u5728\u5141\u8BB8\u7684\u57DF\u540D\uFF08\u4EC5\u652F\u6301\x20kooteam\x20\u57DF\uFF09'});c8[fp(0x263)](cf);}if(c8[fp(0x34f)]){let cg=await Promise[fp(0x3ee)](c8[fp(0x316)](async ch=>{const fq=fp;let ci=await G(ch),cj=fq(0x3ba);try{cj=decodeURIComponent(ch[fq(0x1c3)]('?')[0x0][fq(0x1c3)]('/')[fq(0x2c9)]()||'')[fq(0x259)](0x0,0x78)||fq(0x3ba);}catch{}return{'uri':ci,'name':cj};}));c6['push'](...cg);}let c9=Array['isArray'](c5[fp(0x329)])?c5[fp(0x329)]:[];for(let ch of c9){if(!ch||typeof ch['path']!=fp(0x3f9)||!ch[fp(0x1b9)])continue;let ci=g['resolve'](aD,ch[fp(0x1b9)]);ci!==aD&&ci['indexOf'](aD+g['sep'])!==0x0||c6['push']({'uri':'file://'+ci,'name':ch[fp(0x1b9)],...ch[fp(0x16b)]?{'description':ch[fp(0x16b)]}:{},...ch[fp(0x1ed)]?{'mention':ch[fp(0x1ed)]}:{}});}let ca=c5[fp(0x275)]===fp(0x3e3)||c5[fp(0x275)]===fp(0x1e8)?c5['delivery']:void 0x0,cb=Y(c5[fp(0x234)]),cc=await bt[fp(0x21b)][fp(0x3dd)]({'sessionID':bw[0x1],'text':cb?c5[fp(0x26a)]+'\x0a\x0a'+cb:c5[fp(0x26a)],...c6[fp(0x34f)]?{'files':c6}:{},...c8[fp(0x34f)]?{'metadata':{'images':c8}}:{},...ca?{'delivery':ca}:{}});return M(br,0xc8,{'ok':!0x0,'data':cc});}if((bw=bv(/^\/api\/session\/([^/]+)\/command$/))&&bq[fp(0x417)]===fp(0x39e)){let cj=await J(bq);return!cj['name']||typeof cj[fp(0x425)]!=fp(0x3f9)?M(br,0x190,{'ok':!0x1,'message':fp(0x31e)}):(await bt[fp(0x21b)][fp(0x1b0)]({'sessionID':bw[0x1],'name':cj[fp(0x425)],'text':typeof cj[fp(0x26a)]==fp(0x3f9)?cj[fp(0x26a)]:'',...Array[fp(0x326)](cj[fp(0x1f2)])&&cj['files'][fp(0x34f)]?{'files':cj[fp(0x1f2)]}:{}}),M(br,0xc8,{'ok':!0x0}));}if((bw=bv(/^\/api\/session\/([^/]+)\/shell$/))&&bq[fp(0x417)]==='POST'){let ck=await J(bq);return!ck['command']||typeof ck['command']!='string'?M(br,0x190,{'ok':!0x1,'message':fp(0x27c)}):(await bt[fp(0x21b)][fp(0x384)]({'sessionID':bw[0x1],'command':ck[fp(0x1b0)]}),M(br,0xc8,{'ok':!0x0}));}if((bw=bv(/^\/api\/session\/([^/]+)\/compact$/))&&bq[fp(0x417)]===fp(0x39e)){let cl=await J(bq)['catch'](()=>({})),cm=cl[fp(0x275)]===fp(0x3e3)||cl['delivery']===fp(0x1e8)?cl[fp(0x275)]:fp(0x1e8),cn=await bt[fp(0x21b)]['compact']({'sessionID':bw[0x1],'delivery':cm});return M(br,0xc8,{'ok':!0x0,'data':cn});}if((bw=bv(/^\/api\/session\/([^/]+)\/revert\/stage$/))&&bq['method']==='POST'){let co=await J(bq);if(!co['messageID']||typeof co[fp(0x371)]!=fp(0x3f9))return M(br,0x190,{'ok':!0x1,'message':fp(0x3d2)});let cp=await bt[fp(0x21b)][fp(0x2bb)]['stage']({'sessionID':bw[0x1],'messageID':co[fp(0x371)]});return M(br,0xc8,{'ok':!0x0,'data':cp});}if((bw=bv(/^\/api\/session\/([^/]+)\/revert\/clear$/))&&bq['method']===fp(0x39e))return await bt['session'][fp(0x2bb)]['clear']({'sessionID':bw[0x1]}),M(br,0xc8,{'ok':!0x0});if((bw=bv(/^\/api\/session\/([^/]+)\/revert\/commit$/))&&bq[fp(0x417)]===fp(0x39e))return await bt[fp(0x21b)][fp(0x2bb)][fp(0x192)]({'sessionID':bw[0x1]}),M(br,0xc8,{'ok':!0x0});if((bw=bv(/^\/api\/session\/([^/]+)\/diff$/))&&bq[fp(0x417)]===fp(0x3ea)){let cq=await bt[fp(0x21b)][fp(0x244)]({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cq||[]});}if((bw=bv(/^\/api\/session\/([^/]+)\/children$/))&&bq[fp(0x417)]===fp(0x3ea)){let cr=await bt[fp(0x21b)][fp(0x19d)]({'parentID':bw[0x1],'limit':0x14,'order':fp(0x1dc)})[fp(0x296)](()=>({'data':[]}));return M(br,0xc8,{'ok':!0x0,'data':(cr[fp(0x187)]||[])[fp(0x316)](cs=>({'id':cs['id'],'title':cs[fp(0x294)]||'','agent':cs['agent']||'','outcome':cs[fp(0x227)]||'','time':cs[fp(0x267)]||{}}))});}if((bw=bv(/^\/api\/session\/([^/]+)\/forms$/))&&bq[fp(0x417)]===fp(0x3ea)){let cs=await bt['session'][fp(0x1d5)][fp(0x19d)]({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cs||[]});}if((bw=bv(/^\/api\/session\/([^/]+)\/forms\/([^/]+)$/))&&bq['method']===fp(0x3ea)){let cu=await bt[fp(0x21b)]['form'][fp(0x373)]({'sessionID':bw[0x1],'formID':bw[0x2]});return M(br,0xc8,{'ok':!0x0,'data':cu});}if((bw=bv(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/reply$/))&&bq['method']==='POST'){let cv=await J(bq);return!cv[fp(0x401)]||typeof cv['answer']!=fp(0x285)?M(br,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20answer'}):(await bt[fp(0x21b)][fp(0x1d5)][fp(0x2d3)]({'sessionID':bw[0x1],'formID':bw[0x2],'answer':cv[fp(0x401)]}),M(br,0xc8,{'ok':!0x0}));}if((bw=bv(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/cancel$/))&&bq[fp(0x417)]===fp(0x39e)){let cw=await J(bq)['catch'](()=>({}));return await bt[fp(0x21b)][fp(0x1d5)][fp(0x201)]({'sessionID':bw[0x1],'formID':bw[0x2],...cw[fp(0x168)]?{'message':cw[fp(0x168)]}:{}}),M(br,0xc8,{'ok':!0x0});}if((bw=bv(/^\/api\/session\/([^/]+)\/inbox$/))&&bq[fp(0x417)]===fp(0x3ea)){let cx=await bt[fp(0x21b)][fp(0x17e)]['list']({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cx||[]});}if((bw=bv(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/delivery$/))&&bq[fp(0x417)]===fp(0x39e)){let cy=await J(bq);return cy[fp(0x275)]!==fp(0x3e3)&&cy[fp(0x275)]!==fp(0x1e8)?M(br,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20delivery'}):(await bt['session'][fp(0x17e)][fp(0x162)]({'sessionID':bw[0x1],'inboxID':bw[0x2],'delivery':cy[fp(0x275)]}),M(br,0xc8,{'ok':!0x0}));}if((bw=bv(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/cancel$/))&&bq['method']==='POST')return await bt[fp(0x21b)][fp(0x17e)][fp(0x201)]({'sessionID':bw[0x1],'inboxID':bw[0x2]}),M(br,0xc8,{'ok':!0x0});if((bw=bv(/^\/api\/session\/([^/]+)\/title$/))&&bq['method']===fp(0x39e)){let cz=await J(bq);if(typeof cz[fp(0x294)]!=fp(0x3f9)||!cz[fp(0x294)][fp(0x2f4)]())return M(br,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20title'});await bt['session'][fp(0x162)]({'sessionID':bw[0x1],'title':cz[fp(0x294)][fp(0x2f4)]()});let cA=await bt[fp(0x21b)]['get']({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cA});}if((bw=bv(/^\/api\/session\/([^/]+)\/interrupt$/))&&bq[fp(0x417)]===fp(0x39e)){let cB=await bt[fp(0x21b)][fp(0x29d)]({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cB});}if((bw=bv(/^\/api\/session\/([^/]+)\/agent$/))&&bq[fp(0x417)]===fp(0x39e)){let cC=await J(bq);if(!cC['agent']||typeof cC[fp(0x22e)]!='string')return M(br,0x190,{'ok':!0x1,'message':fp(0x181)});await bt['session'][fp(0x3a0)]({'sessionID':bw[0x1],'agent':cC['agent']});let cD=await bt['session']['get']({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cD});}if((bw=bv(/^\/api\/session\/([^/]+)\/model$/))&&bq[fp(0x417)]===fp(0x39e)){let cE=await J(bq);if(!cE['model']||!cE[fp(0x17f)]['id']||!cE[fp(0x17f)][fp(0x2e5)])return M(br,0x190,{'ok':!0x1,'message':fp(0x2ce)});await bt['session'][fp(0x448)]({'sessionID':bw[0x1],'model':{'id':cE[fp(0x17f)]['id'],'providerID':cE[fp(0x17f)][fp(0x2e5)],...cE[fp(0x17f)][fp(0x1c1)]?{'variant':cE['model']['variant']}:{}}});let cF=await bt[fp(0x21b)]['get']({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cF});}if((bw=bv(/^\/api\/session\/([^/]+)\/permissions$/))&&bq[fp(0x417)]===fp(0x3ea)){let cG=await bt['permission'][fp(0x19d)]({'sessionID':bw[0x1]});return M(br,0xc8,{'ok':!0x0,'data':cG||[]});}if((bw=bv(/^\/api\/session\/([^/]+)\/permissions\/([^/]+)\/reply$/))&&bq['method']===fp(0x39e)){let cH=await J(bq);return['once',fp(0x2fc),fp(0x3ac)][fp(0x37a)](cH[fp(0x2f2)])===-0x1?M(br,0x190,{'ok':!0x1,'message':fp(0x231)}):(await bt[fp(0x35c)][fp(0x2d3)]({'sessionID':bw[0x1],'requestID':bw[0x2],'decision':cH[fp(0x2f2)]}),M(br,0xc8,{'ok':!0x0}));}return bu===fp(0x426)?bh(bq,br,bt,bs):M(br,0x194,{'ok':!0x1,'message':fp(0x34b)+bs});}async function bh(bq,br,bs,bt){const fr=er;let bu=bt['split']('?')[0x1]||'',bv=decodeURIComponent((bu[fr(0x413)](/(?:^|&)session=([^&]*)/)||[])[0x1]||'');br['writeHead'](0xc8,{'Content-Type':fr(0x3c5),'Cache-Control':'no-cache,\x20no-transform','Connection':fr(0x368),'X-Accel-Buffering':'no'}),br[fr(0x3a1)]&&br[fr(0x3a1)](),br[fr(0x2b6)](fr(0x16a));let bw=setInterval(()=>{const fs=fr;try{br[fs(0x2b6)](fs(0x191));}catch{}},0x3a98),bx=!0x1,by=bs[fr(0x27e)]['subscribe']()[Symbol[fr(0x3fc)]](),bz=()=>{const ft=fr;by[ft(0x2df)]&&Promise[ft(0x18f)](by[ft(0x2df)]())[ft(0x296)](()=>{});},bA=()=>{bx=!0x0,clearInterval(bw),aF['delete'](br),bz();};bq['on'](fr(0x2b7),bA),br['on'](fr(0x2b7),bA),aF[fr(0x376)](br);try{for(;!bx;){let bB=await by['next']();if(bB[fr(0x268)]||bx)break;let bC=bB[fr(0x2ad)];if(!bC)continue;let bD=bC['type']||'',bE=bC[fr(0x187)]||{},bF=bD['indexOf'](fr(0x39b))===0x0;bv&&!bF&&bE[fr(0x332)]&&bE[fr(0x332)]!==bv||br[fr(0x2b6)](fr(0x198)+JSON[fr(0x2a5)]({'type':bD,'data':bE})+'\x0a\x0a');}}catch{}finally{if(clearInterval(bw),bz(),!bx)try{br['end']();}catch{}}}function bi(bq,br){const fu=er;let bs=bq[fu(0x1bf)]||'/';if(!aq(bq))return M(br,0x193,{'ok':!0x1,'message':fu(0x28c)});if(bs==='/widget.js')return Q(br,fu(0x44e),fu(0x30b));if(bs===fu(0x195))return Q(br,fu(0x232),fu(0x44b));if(bs===fu(0x16d))return Q(br,fu(0x1a0),fu(0x248));if(bs===fu(0x1d2))return Q(br,fu(0x249),fu(0x30b));if(bs===fu(0x36a))return Q(br,'factory.css','text/css');if(bs==='/factory.js')return Q(br,fu(0x29a),fu(0x30b));if(bs===fu(0x3b0))return Q(br,'debug.css','text/css');if(bs===fu(0x17c))return Q(br,fu(0x2c6),fu(0x30b));if(bs===fu(0x2c0))return Q(br,fu(0x3bf),fu(0x248));if(bs===fu(0x33d))return Q(br,fu(0x295),fu(0x30b));if(bs===fu(0x206))return Q(br,fu(0x34c),fu(0x30b));if(bs===fu(0x423))return R(br);if(bs['split']('?')[0x0][fu(0x37a)](fu(0x433))===0x0){b7(bq,br,bs)[fu(0x296)](bt=>{const fv=fu;if(br[fv(0x2f5)]){try{br[fv(0x1df)]();}catch{}return;}M(br,0x1f4,{'ok':!0x1,'message':bt&&bt[fv(0x168)]?bt['message']:String(bt)});});return;}if(bs['split']('?')[0x0]===fu(0x398)){ay(bq,br)[fu(0x296)](bt=>{const fw=fu;if(br[fw(0x2f5)]){try{br[fw(0x1df)]();}catch{}return;}M(br,0x1f4,{'ok':!0x1,'message':bt&&bt[fw(0x168)]?bt[fw(0x168)]:String(bt)});});return;}if(bs[fu(0x1c3)]('?')[0x0][fu(0x37a)](fu(0x35f))===0x0){(bs[fu(0x1c3)]('?')[0x0]===fu(0x356)?aA(bq,br,bs):az(bq,br,bs))[fu(0x296)](bt=>{const fx=fu;if(br[fx(0x2f5)]){try{br['end']();}catch{}return;}M(br,0x1f4,{'ok':!0x1,'message':bt&&bt[fx(0x168)]?bt[fx(0x168)]:String(bt)});});return;}if(bs[fu(0x37a)](fu(0x23d))===0x0){bg(bq,br,bs)[fu(0x296)](bt=>{const fy=fu;if(br['headersSent']){try{br[fy(0x1df)]();}catch{}return;}if(bt&&bt[fy(0x28d)]===fy(0x40c))return aJ(br,bt);let bu=bt&&bt['message']?bt['message']:String(bt),bv=/not found|NoSuchKey|no such/i[fy(0x22c)](bu);M(br,bv?0x194:0x1f4,{'ok':!0x1,'message':bu});});return;}M(br,0x194,{'ok':!0x1,'message':'Not\x20Found:\x20'+bs});}let bj=null;function bk(bq,br){const fz=er;return ac=!!(br||{})[fz(0x2b8)],aI()[fz(0x296)](()=>{}),ac&&aI()['then'](function(bs){return am(bs);})['catch'](()=>{}),bj=b1(bq),bj;}function bl(){const fA=er;if(bj){bj['clients'][fA(0x40b)](bq=>{const fB=fA;try{bq[fB(0x424)]();}catch{}});try{bj[fA(0x2b7)]();}catch{}bj=null;}aF[fA(0x40b)](bq=>{const fC=fA;try{bq[fC(0x2fb)]();}catch{}}),aF[fA(0x35d)]();}function bm(){const fD=er;return[{'tag':fD(0x349),'attrs':{'src':fD(0x21d)},'injectTo':'head-prepend'},{'tag':'script','attrs':{'src':fD(0x27f),'defer':!0x0},'injectTo':fD(0x352)}];}return{'handle':bi,'attachRuntime':bk,'close':bl,'transformIndexHtml':bm,'writeDevArtifacts':b8,'writeAgentPlugin':bb,get 'root'(){return aD;}};}d['exports']={'createBridge':Z,'composePageContextSuffix':Y};}());}),Mn=fe((c,d)=>{const fE=cJ;W();var {createBridge:e}=An();d[fE(0x369)]=function(g){const fF=fE;let h=e(g||{});return{'name':fF(0x3f8),'configureServer'(i){const fG=fF;h[fG(0x26e)](i[fG(0x2d8)],{'devServer':!!(i&&i[fG(0x449)])}),h[fG(0x1c5)](i),i[fG(0x386)][fG(0x3af)](fG(0x190),(j,k)=>h[fG(0x350)](j,k)),i['httpServer']&&i[fG(0x2d8)]['on'](fG(0x2b7),()=>h[fG(0x2b7)]());},'transformIndexHtml'(){const fH=fF;return h[fH(0x242)]();}};};});W(),(function(){const fI=cJ;let d=require('path'),e=require('fs'),g=ln(),h=Ke(),i=pn(),l=mn(),m=hn(),n=bn(),o=Mn(),p=[fI(0x1fc),fI(0x31b),fI(0x2a0),fI(0x3e4),fI(0x436)];module[fI(0x369)]=({core:r=fI(0x183),command:s,plugins:t=[],obfuscate:u=!0x1,ROOT:G,port:J,name:P,ws:Q,apps:R={},moduled:U,aiwith:Y=!0x0,aiwithRoot:a0,factoryOrigin:a1,aiwithRemote:a2=!0x1,mcpDisable:a3,ai_gateway:a4})=>{const fJ=fI;let a5=s==='serve',a6=s===fJ(0x1b5)&&p['includes'](process.env.TARGET)?process.env.TARGET:'',a7=d[fJ(0x18f)](G,fJ(0x30e)),a8=(e['existsSync'](a7)?e['readdirSync'](a7):[])[fJ(0x25e)](ai=>ai[fJ(0x37c)](fJ(0x375)))['map'](ai=>ai[fJ(0x24b)](/\.js$/,''))[fJ(0x2ba)](),a9=a8[0x0]||fJ(0x3e1),aa=a8[fJ(0x259)](0x1)[fJ(0x316)](ai=>d[fJ(0x18f)](a7,ai+fJ(0x375))),ab={[a9]:d[fJ(0x18f)](a7,a9+fJ(0x375))},ac=JSON['parse'](e[fJ(0x2a9)](d[fJ(0x18f)](G,'package.json'),fJ(0x353))),ad=U?d[fJ(0x18f)](G,'..',fJ(0x19b),fJ(0x26f),ac[fJ(0x425)]):d[fJ(0x18f)](G,'dist'),ae=a5?n():null,af=fJ(0x207),ag={};a5&&(ag['/api']={'target':fJ(0x26b)+J,'secure':!0x1,'changeOrigin':!0x0},ag[fJ(0x252)]={'target':fJ(0x26b)+J,'secure':!0x1,'changeOrigin':!0x0},ag[fJ(0x2e8)]={'target':fJ(0x167),'secure':!0x1,'changeOrigin':!0x0},ag['/'+P+'/']={'target':fJ(0x26b)+J,'secure':!0x1,'changeOrigin':!0x0,'compress':!0x1,'headers':{'Content-Type':fJ(0x1b1)},'ws':!!Q},ag[fJ(0x20e)]||(ag[fJ(0x20e)]={'target':af,'secure':!0x1,'changeOrigin':!0x0}),Object[fJ(0x306)](R)[fJ(0x40b)](ai=>{const fK=fJ;let aj=R[ai]+'';aj['indexOf'](':')===-0x1&&(aj=fK(0x26b)+aj),ag['/'+ai+'/']={'target':aj,'secure':!0x1,'changeOrigin':!0x0};}));let ah=JSON[fJ(0x2a5)](a5?fJ(0x41f):fJ(0x29f));return{'root':G,'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1,'process.env':'{}','process.env.NODE_ENV':ah},'optimizeDeps':{'rolldownOptions':{'moduleTypes':{'.js':fJ(0x2ec)},...ae?{'plugins':[ae['rolldownPlugin']]}:{}},'exclude':[fJ(0x19b),'vue-router',fJ(0x237),fJ(0x36f)]},'plugins':[...t,m({'isDev':a5}),h({'outDir':ad}),l({'outDir':ad,'extraEntries':aa,'ROOT':G,'srcRoot':a7}),u&&i({'outDir':ad}),g({'target':a6,'ROOT':G,'name':P,'isDev':a5,'core':r}),a5&&Y!==!0x1&&o({'ROOT':G,'name':P,'aiwithRoot':a0,'kooteamOrigin':af,'factoryOrigin':a1,'aiwithRemote':a2,'mcpDisable':a3,'ai_gateway':a4})][fJ(0x25e)](Boolean),'resolve':{'extensions':[fJ(0x375),'.vue',fJ(0x422),'.json'],'alias':{'@':d['resolve'](G,fJ(0x30e)),'@icons':d['resolve'](G,'node_modules/zen-app-icon/extend'),...ae?{'vue':ae['file']}:{}}},'css':{'cssCodeSplit':!0x1},'server':{'host':fJ(0x340),'open':!0x0,'cors':!0x0,'allowedHosts':!0x0,'hmr':P!==fJ(0x28e),'proxy':ag},'build':{'minify':fJ(0x213),'target':fJ(0x34a),'sourcemap':!0x1,'emptyOutDir':!0x0,'copyPublicDir':!0x1,'outDir':ad,'chunkSizeWarningLimit':0x200,'lib':{'entry':ab,'formats':[fJ(0x1bc)],'name':fJ(0x41e),'fileName':()=>a9+fJ(0x375),'cssFileName':a9},'rolldownOptions':{'external':['vue','element-plus','vue-router',fJ(0x36f)],'output':{'globals':{'vue':'Vue','vue-router':'VueRouter','element-plus':'ElementPlus','vant':fJ(0x36f)},'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':fJ(0x2c4)}}}}}};};}());
|
|
1
|
+
function a(){const gb=['EMvUlNDHCc5JC3m','CMvWBgfJzq','nZq3mJfJthf6C2K','Dw5SAw5Ru3LUyW','AxnsDw50Aw1Lt25SEq','Cg9Wu2nVCgvjza','l2fWAs9Ty3a','Aw5PDerPCMvJDgL2zxngB3jtu1i','zNjVBvDLyG','zMXVB3i','CgfUzwWUANm','rxjYB3jdB2rLCW','C2HHBgXVD1jLzG','C3rLzxi','ywLJB25MAwCT','icaVkIaTls0Tls0Tls0Tios4U+MIMo+8MUEzVEwKQE+8IoM7MoIUPo+8IsaTls0Tls0Tls0TicOVcIaGoNjVB3qGEWOGicaGls1IzZOGi2y1zJDMyJSGls1IzY1ZB2z0oIaJzwvMmwy3oYaTlwjNlwnHCMq6icnMzMzMzMy7ic0TyMCTAg92zxi6icnLogvKzJu7cIaGicaTlwjVCMrLCJOGCMDIysGXnsWGmJmSidqYlcaUmtaPoYaTlwjVCMrLCI1ZDhjVBMC6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TDgv4DdOGiZbMmtCYytSGls10zxH0lwrPBtOGiZu3nJe2zJSGls10zxH0lwzHAw50oIaJotnHmgiWoWOGicaGls1ICMfUzdOGiZa0n2rMyJSGls1ICMfUzc0YoIaJmZHHm2zMoYaTlwjYyw5KlxnVzNq6ihjNyMeOncWGmti1lcaYnteSic4XmcK7cIaGicaTlwjYyw5KlxjPBMC6ihjNyMeOncWGmti1lcaYnteSic41ktSkicaGic0TyNjHBMqTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJeYktSkicaGic0TyNjHBMqTC3rYB25NoIbYz2jHkdqSideYnsWGmJuXlcaUmZuPoWOGicaGls1ICMfUzc10zxH0oIaJmdq3zgzIoWOGicaGls1ICMfUzc1ZAgfKB3C6ihjNyMeOncWGmti1lcaYnteSic4YocK7cIaGicaTlwDYywrPzw50oIbSAw5LyxiTz3jHzgLLBNqOmtm1zgvNlcaJmdq3zgzIlcaJmZHHm2zMktSkicaGic0TB2S6icmWntK2nJK7ic0TzxjYoIaJzgmYnJi2oYaTlxDHCM46icnKotC3mdy7ic0TB2STDgv4DdOGi2zMzMzMzJSkicaGic0TCMfKAxvZoIaXnhb4oWOGicaGls1ZAgfKB3C6idaGmtbWEcaZmhb4ihjNyMeOmtuSidiZlca0mIWGlJeYktSkicaGic0TyMCTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJa3ktSkicaGic0TAgvHzgvYlwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic43ocK7cIaGicaTlwzVB3rLCI1IzZOGCMDIysGYnduSidi0nYWGmJuXlcaUodyPoWOGicaGls1VDMvYBgf5lwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic45nYK7cIaGicaTlwLUC2v0lwjNoIbYz2jHkde1lcaYmYWGndiSic4WnsK7cIaGicaTlwnVzguTyMC6icnMm2y2zMi7ic0Ty29Kzs10zxH0oIaJmZm0mtu1oWOGicaGls1Zy3jVBgXIyxi6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TAw5SAw5LlwnVzguTyMC6ihjNyMeOmtuSidiZlca0mIWGlJa3ktSkicaGic0TzM9Szc1IzZOGCMDIysGXnsWGmJmSidqYlcaUmdmPoWOGicaGls1MB2XKlwHVDMvYlwjNoIbYz2jHkde1lcaYmYWGndiSic4WnIK7cIaGicaVkIdKU6pNOihPQ5JKUQ7KU6tNIyZOIBlVViHNAxrODwiTBgLNAhqG6l+r5lY877YjicOVcIaGicaTlwHSlwnVBw1LBNq6icm2ytCZn2q7ic0TAgWTA2v5D29YzdOGi2q3m2e0otSGls1OBc1ZDhjPBMC6icmWmZjMnJi7cIaGicaTlwHSlw51BwjLCJOGiZaWnwnJntSGls1OBc10AxrSztOGiZzMndjJmtSGls1OBc1HDhrYoIaJztm2mJa5oYaTlwHSlxrHzZOGiZiYodyZytSkicb9cIaGlYOGls0Tls0Tls0TlsdKUlVPOPJVVjRPU5hLPjWGls0Tls0Tls0TlsaQlWOGidPYB290w2rHDgeTDgHLBwu9iMrHCMSIxsb7cIaGicaTlwjNoIaJmgiWzte0oYaTlwjNlxnVzNq6icmXmde0mwm7ic0TyMCTy2fYzdOGiZe1mwiYntSGls1IzY1OB3zLCJOGiZfImJmZmdSkicaGic0TyM9YzgvYoIbYz2jHkde0ocWGmtyZlcaXodqSic4XncK7ic0TyM9YzgvYlxn0CM9UzZOGCMDIysGXndGSide2mYWGmtG0lcaUmJyPoWOGicaGls10zxH0oIaJztzLzgy2oYaTlxrLEhqTzgLToIaJogi5ogfIoYaTlxrLEhqTzMfPBNq6icm1yZy4nZK7cIaGicaTlwjYyw5KlxnVzNq6ihjNyMeOncWGmti1lcaYnteSic4XnIK7cIaGicaTlwjYyw5KlxjPBMC6ihjNyMeOncWGmti1lcaYnteSic42ktSkicaGic0TyNjHBMqTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJe1ktSkicaGic0TyNjHBMqTC3rYB25NoIbYz2jHkdqSideYnsWGmJuXlcaUnsK7cIaGicaTlwjYyw5KlxrLEhq6icm3y2i4zMy7cIaGicaTlwjYyw5KlxnOywrVDZOGCMDIysG0lcaXmJuSidi1msWGlJqYktSkicaGic0TB2S6icmZngqZotK7ic0TzxjYoIaJzJG3mtCXoYaTlxDHCM46icnMyMjMmJq7ic0TB2STDgv4DdOGiZa2mJGXyZSkicaGic0TC2HHzg93oIaWideWChGGmZbWEcbYz2jHkdaSidaSidaSic40nsK7cIaGicaTlwjNlwDSB3C6ihjNyMeOncWGmti1lcaYnteSic4WosK7cIaGicaTlwHLywrLCI1IzZOGCMDIysGXnIWGmJaSidi4lcaUnZiPoWOGicaGls1MB290zxiTyMC6ihjNyMeOmtySidiWlcaYocWGlJC4ktSkicaGic0TB3zLCMXHEs1IzZOGCMDIysGYmsWGmJCSidm3lcaUotyPoWOGicaGls1PBNnLDc1IzZOGCMDIysGWlcaWlcaWlcaUmJGPoWOGicaGls1JB2rLlwjNoIaJmdGWyJeWoYaTlwnVzguTDgv4DdOGi2m5zdvLndSkicaGic0TC2nYB2XSyMfYoIbYz2jHkde0ocWGmtyZlcaXodqSic4XocK7cIaGicaTlwLUBgLUzs1JB2rLlwjNoIbYz2jHkde0ocWGmtyZlcaXodqSic4XnIK7cIaGicaTlwzVBgqTyMC6ihjNyMeOmtq4lcaXnJmSide4ncWGlJa1ktSkicaGic0TzM9Szc1OB3zLCI1IzZOGCMDIysGXndGSide2mYWGmtG0lcaUmdKPoWOGicaGlYOG5lUJ56cb6AUy5lQU5lUK54Mm6iMY77Yiz2L0AhvIlwrHCMSG6l+r5lY877YjicOVcIaGicaTlwHSlwnVBw1LBNq6icm4yJK0owu7ic0TAgWTA2v5D29YzdOGi2zMn2i3mJSGls1OBc1ZDhjPBMC6icnHnwq2zMy7cIaGicaTlwHSlw51BwjLCJOGiZC5yZbMzJSGls1OBc10AxrSztOGi2qYytHMzJSGls1OBc1HDhrYoIaJzMzHnJu3oYaTlwHSlxrHzZOGiZDLztC4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','DgHLBG','zgLZy29UBMvJDa','yM9KEs1WyxjZzxi','oMnVBM5Ly3rLzaOk','lYOQcIaQiefPv2L0AcdLIy3NQ6/LIQNMIySGD2LKz2v077Yizgv2ioEuSEApKUs7TUAZQowfPEMHTEMDOU+8IE+8MGOGkIdLJ7pKUiVOP5lOK53OIBiGquKG5yQP5OMl5PY65zMO5lQ65lI7igLJB27VViHSDwnPzguVyM90ioE6V+ADOEMJJU+8JoAxOowCHUw6LEoaGwrYB3aTC2HHzg93ioAcRoA1RU+8IsSG5lIj5lIK5lQr54Q25Ocb5B6956UG77Yi57U/pEwpR+EuQcaVioE6OJ3KUi3LJ6/NLkGGlYdNGBa95PYQ55+L77Yj77YmcIaQioEcUEwhU+w8Gc/LHBmGsduG5A+56k+D6z2I5P2/77YiAwzYyw1LiowkOoI9VsaVywL3AxrOl3bHBMvSlMH0BwZVViNJGiikicOGu2HHzg93ierptsdMOlFLVi/PMPtNPRVVVjTqqYdLJ7pKVQFMIR3LSyNVViW8nZy4ChGG5BQv6yoO5OQ95Bgj77Ym5PEG57Q/77YiD2fW77Yj6Ag15y+Z5l6N5zU65A6Aidy1DNCG5ygC6z2G6z2I5P2/77YBC2fMzs1HCMvHioMaGUMfJEoaGGOGkI8kisHMDw5JDgLVBIaOksb7cIaGAwyGkhDPBMrVDY5Fx3PLBKfPv2L0AfDPzgDLDcKGEWOGicaGCMv0DxjUoWOGih0kicb3Aw5KB3CUx196zw5bAvDPDgHxAwrNzxqGpsb0CNvLoWOkicb2yxiGu1rbveuGpsb7ihn0yxr1CZOGBNvSBcWGCgfUzwXpCgvUoIbMywXZzsWGC3rHDhvZtg9HzgvKoIbMywXZzsWGzNvSBdOGzMfSC2uGFtSkcIaGlY8G5RwU5Qch5lI7igLJB27VVjPbssdLIQNMIyVMNlRLMAJKURRVViHSDwnPzguVyM9077Ym57Q/5P2H6Aoo77Ymy3vYCMvUDenVBg9Y4OAs5zob54Mm6joD77Yj77YB54Q25Ocb5B6956UG77YA5zob54Mm5lIj5lIK5lQrigXVz2/VViJNIRBMGihOIBlVViKkicb2yxiGu1zhx0Xpr08GpqOGicaGjZXZDMCGDMLLD0jVEd0ImcaWidi5nYaYmdGIigzPBgW9iMn1CNjLBNrdB2XVCIi+jYaRcIaGicaNphbHDgGGzd0IttCWlJm0ldiWnY44oee3mc4ZnsW3mc4ZnsWWldaSmsW0mYW3mI43m2eXoc44nYWXoc44nYWWldaSmsWXnc43ldm0lJC2ldmYlJyXldmYlJyXldaSmcWWldeYlJy4ldyYlJy1lde4lJG3lde4lJG3ldaSmcWXldaSmZCUnZrAiI8+jYaRcIaGicaNphbHDgGGzd0IttCZldiWnY44ogeXoc44nYWXoc44nYWWldaSmsWWltm3lJC0qtmYlJq2ldmYlJq2ldaSmcWWldK1lJCXlde2msWXoc44nIWXoc44nIWWldeSmsWXmJiSmtG4lJa2ldCWldCWldaSmcWXldCZldiWnY44ofOIlZ4NicSkicaGicC8Cgf0AcbKpsjnmJi2lJa2ldiWnY43ouG4oc44m2eXoc44nYWXoc44nYWWldaSmsWWltm3lJCZsdiYnI4WnMeXoc44nYWXoc44nYWWldaSmsWWldm3lJCZwIiVpICGkWOGicaGjZXWyxrOigq9iK04nc42nYWYmduUotnJmY45mIWWldCUmJeUmtGSmtaUndqTmI4ZosWXnc41nY0Xms42ldmZlJu4lti2lJC4lduYltqXlJq2lde0lJm3lteXlJq3ldi4lJqTmJiUnJCSmZKUnZyTmZeUnZiSms0UodeSmI0XlJyXldmUmdCTmI40mMe5nc41ncW5nc41ncWWldaSmcWXmI4Xos0Xmc43yZe0lJmYlte1lJGXldiWlJq2ltm0lJqSmtGUmJuTntuUmJvHnJGUnZeSnJGUnZeSmcWWldaTmJeUndqTndndmtG0lduUmdCSmty2lJeTms4YnIWXnduUodmUmJfbnJGUnZGSnJGUnZGSmcWWldaSotKUntKSmJiUnJGSnJKUnJySnJKUnJySmcWWldaSodqSntbHmtCUotiSmtCUotiSmcWWldaTlJKZldiUoduSnZaUmZCSnZaUmZCSmcWWldaSoc4XocW1mI43mueXoc40ncWXoc40ncWWldaSmcWXmJiUocW4nI40mYWZmY4YosWZmY4YosWWldaSmsWXmtGSnJKUmNeWlteSlJa2ltjHmI40nsWYlJq1ldaSmcWXldaTlJi3yZaTlJq3lJa3ls45nc4XmI0XlJqSmc0UmJqUmduTlJq3lJa4ls43CZaTlJiZldaTlJm0ytmZlJi3ldmZlJi3ldaSmcWXldi5lJa5lti3lJCZ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','D3jPDgvdywnOzq','laOjlI4U','B3nZrg9TywLU','zgvMAw5Lu1nsq3vZDg9TrwXLBwvUDa','rMfPBgvKihrVigrVD25SB2fKia','DxnLswq','B25tzxj2zxjqCMvMzxrJAa','BM8Ty2fJAguSig5VlxrYyw5ZzM9YBq','zxjYB3i','l3DPzgDLDc5QCW','D3jPDgu','BwvZC2fNzq','Dg9iyw5KBgvYCW','77Ym5l2/55sO5PYn5yQH56UV6BUy6k6K5QIH5z6l','B25szw5KzxjuCMLNz2vYzwq','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','yxn5BMnjDgvYyxrVCG','ywn0AxzPDgLLCW','BwfPBG','AgfUzgXLvxbNCMfKzq','y3jLyxrLvK5Vzgu','5BEY5O6O6ycb5yIWia','B2jQzwn0','5lYA6k+D5lIn5BgE5lQo5B2t5yMn6Ag555UU','DML0zq','C2vW','DgvZDa','B3bLBMnVzguTCgX1z2LUlMPZ','C2HHBgXVD1jLywn0AxzL','l2fWAs9ZzxnZAw9Ul3jLC2v0','ywn0AxzL','mtjlEw9LuNG','zw5ZDxjLq29TCgfJDgLVBKrLzMf1Bhq','BgLTAxq','u3rHDgLJ','zxHPC3rZu3LUyW','AxnZDwu','Aw5WDxq','x19HAxDPDgHbBgL2zq','CMvTB3zLsw5Qzwn0zwq','6ywn572U5PYn5yQH6l+u5zUE5lIn5A6m5Pw077Yi57Y65BcrigDHDgv3yxKUyMfZzvvstc90B2TLBU+8Iq','lNHTBa','y3jLyxrLshLKCMf0Aw9UuMvUzgvYzxi','tM90iezVDw5KoIa','lMPZB24','ChvZAgvK','lMDPDa','u0vsvKLdrv9vtKfwquLmqujmrq','A2v5u3rHDhvZ','Dgv4Dc9LDMvUDc1ZDhjLyw07ignOyxjZzxq9DxrMltG','Cg9PBNrZ','DgLTzw91Da','C2v0sgvHzgvY','DxrMoa','EMvUlNDHCc5QCW','zw1WDhKGBw9KzwWGBgLZDa','l2fPD2L0Aa','mtaWnZq2nJjTzuHlvKK','AgvSBg8','ou91zhLRqG','ywL3AxrOlxbHz2uUANnVBG','DNvLlxjVDxrLCG','BwTKAxjtEw5J','6ywn572U5yAz5ywL5AsX6lsL77YA','BwfYA0rVBMu','y2HLy2TVDxq','CMv2zxj0','y2fWywjPBgL0AwvZ','ios4JEwCQoEzVEwqJEwnLEwgHE+8Ig1JCefSBg9377Yj77Ym5BEY6zMq5yI25lI65PAT5BYa','C291CMnL','w0fPv2L0Af0G5BEY5zcm5Q2L6BUy6k6KignVBxbHy3rPB24G6ywn572U77Yi5QIH5z6lia','Axnszwy','D2L0Ae1LBw8','y2fSBa','yM9KEq','5PEG5Rov6l+E5O6L6ywn572U5PYn5yQHia','odaXotmYC1f1Ehjg','zwXLBwvUDc1WBhvZ','DxnLsg9ZDa','lMPZEa','w0fPv2L0Af0GD3mG5lIn5y+V55sO77Ymv2vIu29JA2v0ioMaMUMbK+s4JEwpR+EuQdO','y2fWAxrHBgL6zq','AxnZDwvZ','CgvYBwLZC2LVBG','5y+c5PwW6zsz6k+VoIbTzxnZywDLsuq','AxneAxjLy3rVCNK','l2fWAs9TB2rLBc91C2fNzq','ywrKrgLY','oJOX','5lIn5yAz77Yi6lwWig9Wzw5JB2rLioM7MoIUPo+8Iq','B3nZ','zgvSzxrL','zgvMAw5LuhjVCgvYDhK','u3vZCgvUC2u','ChjVDMLKzxjjra','lY8G6iEQ5yQO55sF5OIq77YADNvLiowfT+wqJEwVVowhUUAmH+wqKEwUV+s4UYb3Aw5KB3CUvNvL77Yizgv2iowpJcbwDwuG5l+U5Asn77YjcG','w0fPv2L0Af0GC2vZC2LVBI5Hy3rPDMuGzMfPBgvKoG','C2HHBgXVD1jLywrVBMX5','DxrMltG','lwzZu0WGls1JB25Uzwn0lxrPBwvVDxqGmtuGls1TyxGTDgLTzsaZmdaGls1YzxrYEsaZic0TCMv0CNKTzgvSyxKGmIaTlxjLDhj5lwnVBM5Yzwz1C2vK','CMvHzgrPCLn5BMm','CMvZB2X2zunVBxbVBMvUDa','DxnLvhjHBNnPDgLVBLn0yxrL','CgfUzwWUAhrTBa','cMv4Cg9YDcbKzwzHDwX0ihSkica','CMvUzgvYu2XVDa','nLf3yxHTuG','z2v0uhjVDg90ExbLt2y','Dw5RBM93BG','CM9SBgrVD25qBhvNAw4','C2XPy2u','Cg9UzW','BgvUz3rO','w0fPv2L0Af0Gtunqia','5y+c5PwW6zsz6k+VoIb0zxH0','igzYB20GjY4V','B3jKzxi','lMPZ','iowKHowpMoABTo+8Iq','y3jLyxrLuMvUzgvYzxi','CMvHzezPBgvtEw5J','o2jHC2u2ncW','5PEG5Rov6l+E5O6L5BEL5y6c5PYn5yQHia','lNz1zq','ywXPlw9ZCW','yxnJ','CMvTB3zLs2v5','CMvZzxq','D2L0Ae1VzgLMAwvYCW','vg9Rzw4','yw5ZD2vY','iJSGzxHPDcaKC3rHDhvZ','6k+75y+w5AsX6lsL77YA','l2zHy3rVCNKUANm','CMvWBhK','5PYn5yQH5zMO6l+u5zUE55Qe5lIn5PIV5PsV5OYb55Qe5zU+54MhoIa','C3rYzwfT','zMfJDg9YEs5JC3m','yM9KEs1LBMq','Dg9eAxnWBgf5u3rYAw5N','zgLYzwn0B3j5','Bg9JywW','y3jLyxrLu2XVDhm','Aw1Hz2u','ndG0nJC0C3fjtgvY','EMvUlMPZ','y3jLyxrL','zgLZDa','zM9YBq','iIaIAhr0Chm6lY9IlMvIDxmUDMLWl3PLDg8V','y29TCg9Uzw50CW','DgvYBwLUyxrL','Dg9Zrg9TywLU','ChjVEhLszwzZ','yxbWBgLJyxrPB24VAMf2yxnJCMLWDdSGy2HHCNnLDd11DgyToa','AwDUB3jL','Bw9KzwW','5B2t5yMn6Ag555UU5lIn5PIVieDPDcdKU5pLUPm','l2fWAs9Mywn0B3j5','CMvTB3rL','y2fUy2vS','Dg9tDhjPBMC','EMvU','BMfTzq','AM9PBG','D29YA2LUz19KAxi','zw1PDa','DxbKyxrL','Dg9wywX1zq','Bg9N','A2vLCc1HBgL2zq','AgvHzgvYCW','l2fWAs9ZzxnZAw9U','pcfet0nuwvbfigH0BwW+pgH0BwW+pgHLywq+idXTzxrHignOyxjZzxq9iNv0zI04iI8+idXTzxrHigH0DhaTzxf1Axy9iLGTvueTq29TCgf0AwjSzsiGy29UDgvUDd0Iy2HYB21LleLfpwvKz2uIlZ4Gpg1LDgeGBMfTzt0IsgfUzgHLBgrgCMLLBMrSEsiGy29UDgvUDd0IDhj1zsiVpJXSAw5RihjLBd0IAwnVBIiGAhjLzJ0Izgf0ytPPBwfNzs9Py287yMfZzty0lgfxtNyIlZ48Bwv0ysbUyw1LpsjMB3jTyxqTzgv0zwn0Aw9UiIbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IlZ4Gpg1LDgeGBMfTzt0IDMLLD3bVCNqIignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcWGAw5PDgLHBc1Zy2fSzt0XlJaSig1HEgLTDw0TC2nHBgu9ms4Wlcb1C2vYlxnJywXHyMXLptaSihvZzxiTC2nHBgfIBgu9BM8Sig1PBMLTywWTDwKSihzPzxDWB3j0lwzPDd1JB3zLCIiVpIa8Bwv0ysbUyw1LpsjYzw5KzxjLCIiGy29UDgvUDd0ID2vIA2L0iI8+idXTzxrHig5HBwu9iM1ZyxbWBgLJyxrPB24TDgfWlwHPz2HSAwDODciGy29UDgvUDd0IBM8IlZ4GphrPDgXLpKfj57Yw56Il5BYv5Poopc90AxrSzt4GphnJCMLWDcbZCMm9iI8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANmIpJWVC2nYAxb0pIa8BgLUAYbYzwW9iNn0EwXLC2HLzxqIihr5Cgu9iNrLEhqVy3nZiIbOCMvMpsiVl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYi+idXZy3jPChq+ihDPBMrVDY5JB2rLCKHVC3qGpsaIAhr0Chm6lY90Ag9YlNPLDg8UBwuIo3DPBMrVDY5HChboyw1LpsC','Dg9Zrw5KCg9PBNq','Dgv4Dc9JC3m','zMfJDg9YEs5QCW','l2fWAs9Mywn0B3j5l3n0CMvHBq','DNvLlwDSB2jHBc5TANm','cIaG','lNrTCa','vgv4Da','yNvJA2v0','C2vYDMu','mZiZmdaWENrHC1ny','iIaMjIbNDw56AxaGlwmGiG','AxntAgfSBg93','D2f0y2G','l3zPzxDLCI5QCW','l3rOB3iV','C3bSAwnL','ode5mZm0nhHbv1rRra','C3rHDgLJ','qM9KEq','z2v0twLUDxrLCW','Aw5KzxHpzG','B25czwzVCMvvCgrHDgu','z2v0rNvSBfLLyxi','qg9Wzw5JB2rLl2nSAwvUDa','ChvZAa','zwzMzwn0','iIaMjIbNEMLWic1Jici','y29TBwL0','DxnLvgvTCgXHDgvszwy','ChvIBgLJ','C3DPDgnOqwDLBNq','5RE35REg5A6m5OIq77YA','BM9Kzv9TB2r1BgvZl3PLBI1HChaTAwnVBI9LEhrLBMq','zgLMzG','Ag9TzwrPCG','y2HTB2rtEw5J','pc9HAxDPDgGTCgfNzs1JB250zxH0pG','A2v5CW','vNvLrwXLBwvUDa','5B2t5yMnigrLDIdPOBxPNAlVVjO','ywnJB3vUDc5JC3m','Chv0','l2fWAs9JB21Tyw5KCW','Dw5HDMfPBgfIBgu','zw5ZDxjL','l2zHy3rVCNKUy3nZ','w0fPv2L0Af0G5BEY5RIf55cg56ww5ywi55UU5B2v55Qe6l+h5PYF6Ag15yAf5O+s5lU277Yi6yg/5ywn5lIo5B2t5yMn5BEL56Il6yEn5zcn77YjoIa','lY8G5PYS5PAh5lU255sXihPLBI1HChaTCgX1z2LUkefPv2L0AcKG5lQoigrLDIdLKk/LIQJML7BOH6RLIQJNLj/MIjdVViZOR7FLI7/MIyVMLlNJGii','CgfKu3rHCNq','Dg9szwy','C25HCgrVBs5QCW','Ahr0Chm6lY90Ag9YlNPLDg8UBwu','B3jKzxjuyxnR','C3bSAxq','zgLZywjSzwq','ChvSBa','BwvUDgLVBNm','CxvLDwu','AgvHzgvYC1nLBNq','AxnszwfKB25SEq','B3nZswq','CMvZB2X2zurPCMvJDgL2zq','z2v0','zMfPBgvK','l2fJy291BNqUy3nZ','CgfZy2fSq2fZzq','y29Uy2f0','zMLSzq','BwfRzunVBxbVBMvUDeLUzgv4','BgfZDeLUzgv4','D2LKz2v0lMPZ','EMvUlw9IzNvZy2f0zq','CMvZB2X2zvrYyw5ZAxrPB25iB29RCW','l2fWAs9HAwnVBMzPzY9LBNn1CMu','Aw5MBW','w0fPv2L0Af0GBwnWlMXPC3qGzMfPBgvKoG','Aw1WB3j0xhmQxcPCCYPHC1XZkYHBxhCKxsSPxhmQzNjVBvXZkLSNxcjDka','BgLUAW','w0fPv2L0Af0G5PYQ6ywn572UigfPx2DHDgv3yxNVViZLT7lMUixNKiBMS6JLHAxNMOtNVzhLHBmGChjVDMLKzxlVViJKUi3OTBdNVzhLHBpVViK','5y+c5PwW6zsz6k+VoIbUyw1L','y29UBMvJDgvK','s2vLCefSAxzL','Dg9Zu2vJCMv0','yxnZzxj0tNvTyMvY','C2nYAxb0','zwzMzwn0u2nVCgu','y29Kzq','B3v0Chv0','Aw5JBhvKzxm','y2HLy2TjC1jLCg8','C2v0qMXVy2TuCMfJA2LUzW','DxnLu1nsq29UDgv4Da','ChjLC2vYDMvdB25Zzwn1DgL2zvvWCgvYy2fZzq','DgfZAW','C3vTBwfYEq','w0fPv2L0Af0GtunqioACN+ACM+AaGEIVU+wpLUwKSEI0PE+8JowBNUIqVEM7MoIUPdO','5y+c5PwW6zsz6k+VoIbTB2rLBc57AwqSChjVDMLKzxjjrh0','cI8VioEBRUAGHYbKzxyGC2vYDMvYoIa','zNjVBq','BwfRzq','yMfZzty0','CMvHzhLtDgf0zq','BhmTzMLSzxm','y3jLyxrLqMXVy2S','5lUf5PsV5OYb6Ag555UU5yAf55U45A+56lEV5B6e','tK9Fuefhrq','y29UC3qGDNvLrMLSzxmGpsb7cGK','sgvHzgvYCW','A2v5','yxjYyxLcDwzMzxi','z2v0t2jMDxnJyxrLzenVzgu','q29UDgvUDc1uExbL','v2vIu29JA2v0u2vYDMvY','qhzPDgvQCY9WBhvNAw4TDNvL','iIaI','5y+c5PwW6zsz6k+VoIbJB21Tyw5K','l2LUzgv4jZS','zgvSAxzLCNK','zMLUywXSEq','iJWVC2nYAxb0pJXIB2r5pJXZy3jPChqGC3jJpwH0DhbZoI8VyI5LyNvZlNzPCc9KyxrHDI92mc4WlJeVzwrPDg9YlMPZpJWVC2nYAxb0pG','BwvZC2fNzuLe','Dg9Z','l2fWAs9MAwXL','zgvMAw5LrxHWB3nL','r0vu','C3rYAw5NAwz5','yxbWBgLJyxrPB24VAMf2yxnJCMLWDa','D3jPDgvgAwXLu3LUyW','BM93','EMLK','l2fPD2L0Ac9WywDLlwfNzw50lMPZ','cN07','cMv4Cg9YDcbKzwzHDwX0ihS','y29UC3qG','CMvTB3rLqwrKCMvZCW','AhLKCMf0zu9UswrSzq','5BEY5O6O6ycb','mJHZBuDeBg4','zMLSztOVlW','C3rHCNrZv2L0Aa','CM1tEw5J','CgfJA2fNzs5QC29U','zgv2u2vYDMvY','CgfRBW','D2fPDa','C3rKzxjY','rxjYB3juExbLu3rYAw5NCW','DMfSDwu','DgfNlMPZB24','kvSNxcjD','z2v0q3vYCMvUDeLUC3rHBMnL','5PYQ5Qoa5Rwl5yIW5y+V55sO55QeiefPv2L0AcdOV5dOOyZMNi3LIQhJGilOR7FLHyJLROZMIjdOV5dOOyZNJQ/LOOpLRONOO4xVViHODhrWCZOVl29Wzw5JB2rLlMfP77Yj77Ym5BM256gU6k6K5PYn5yQH5y+V55sO5zco6yEn5zcVigrLDIbZzxj2zxlJGii','igzYB20GiI4V','6ywn572U5OUj5y+w5AsX6lsL','ic1Vici','DhjHBNnMB3jTsw5KzxHiDg1S','l2TVB3rLyw0V','yNjHBMnO','y29UDgvUDc1Szw5NDgG','y2XVC2u','ih0Gpsb3Aw5KB3CU','DMfUDa','wMvUiefjieDHDgv3yxK','Cgf0Ahm','oYHMDw5JDgLVBIGPE3zHCIbZpwrVy3vTzw50lMnYzwf0zuvSzw1LBNqOj3n0EwXLjYK7CY5HChbLBMrdAgLSzcHKB2n1BwvUDc5JCMvHDgvuzxH0tM9KzsG','Aw5IB3G','jYa8l3nJCMLWDd48l2HLywq+pgjVzhK+phnJCMLWDcbZCMm9iMH0DhbZoI8VyI5LyNvZlNzPCc90Ag9Yl3yWlJaUmI9KzxrHAwWUANmIpJWVC2nYAxb0pJWVyM9KEt48l2H0BwW+','y29UBMvJDgLVBG','D2L0AerPCMvJDgL2zxm','Dw1K','C2vUza','ywL3AxrO','Dgv4Dc9ODg1S','ywX3yxLZ','zxHWB3j0ignVBNn0ia','y29TCgfJDgLVBG','qwLxAxrOioAoP+wiTUMDOUs7HEMzKoACRoACUUIUV+MxRU+8IowMGUMCGowXGowFN+E9Ks/MIyVMNlROGztOSipOR7FLVidLKk8GywL3AxrOuMvTB3rL77Yj','iJSGC3rHDhvZpsq/oYbYBsaTzIaI','BM9Kzu9WCW','DxnLq3nZvMfYCW','y29UBMvJDdOG','77Ym5lIk5lIl5PAhia','nZe5mZiYmxDVDvjJCW','5y+c5PwW6zsz6k+V','l3bHz2uTywDLBNqUANm','Dg9Rzw4','l2fWAq','Bwf0y2G','DK1VzgvSrhLUyw1PyW','BwfRzvjVB3rjBMrLEa','laOj','ywL3AxrOlxbHz2u','Aw1WB3j0ia','yxbW','lI4U','yxbWBgLJyxrPB24VANnVBG','Dgv4Da','CMvZB2X2zq','w0fPv2L0Af0G5OgI5Asn5PYa6l+r5lYA6k+Dia','rxHWzwn0zwqGDgHLigLUChv0ihrVigjLigbZDhjPBMCGFcbZDhjPBMDBxwa','DxjS','AxnbCNjHEq','l3zPzxDLCI5JC3m','BgLZDa','lNz1zsC7','ru5pru5u','zgf0ytO','Cg9YDa','5BEY5O+q5lQKia','C3rLChm','Bw9KzwXZ','yMvOAw5K','BwvZC2fNzxm','Cg9W','EMvUlxz1zs10BY1NBg9IywW','CMvSyxrPDMu','ls1LCNjVCI11BM1HDgnO','B3v0y29Tzq','DhLWzq','5RkH5PYj5BEY6l+E5O6L55Qe6Ag16z2I77Yi6k+356gU6k6KigrLDIdPOBxPNAlLT7lMIzpLVidLUBBLROZMIjdLIQdOVB3VViK','zgvLChnLzwSTDJqTzMXHC2G','C2v0rgv2Dg9VBhniB29R','mtflsvnwtgy','y3jLyxrLuMvHzfn0CMvHBq','Dg9Zswq','BwvUDgLVBG','5y+c5PwW6zsz6k+VoIbHBNn3zxi','zgv2zwXVCg1LBNq','C29JA2v0','B3nZuMvNAw9U','l2fWAs9WywDLl3n0yxr1CW','y2fUy2vSvgfZAW','Aw1WB3j0xhmRkfTCDYrDkYLCCYOSxhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','DxnLq3nZtw9KDwXL','lMnZCW','mtv4qNHKDeu','lMXVD2nVzgu','AxngAwXL','y29UBMvJDa','BwTKAxi','Bw9KzwXjra','vhjHy2TpCfr5CgvZ','CMvZB3vYy2vZ','DK1VzgvSuMfKAw8','qhP1BwvYl3nUyxbKB20G5PYQ5A6j6kof77Yi5zYOihPLBI1HChaTCgX1z2LUioMhJcbUCg0GAsbaENvTzxiVC25HCgrVBE+8Iq','l2nVzgvYl3DYAxrL','Dg9mB2nHBgvmB3DLCKnHC2u','yMfZzvvsta','zxHWB3j0CW','y29Z','ksK7zg9JDw1LBNqUAgvHzc5HChbLBMrdAgLSzcHZkx0PkcK7','w0fPv2L0Af0G5Qoa5Rwl5yIWigDPDcdMOlNVViZLT6xKVzZNM67LVzxKUiRNP7VOH7m6ia','D2L0AefZEw5Jq29UDgv4Da','ywn0Aw9UCW','D2L0Aen0Ea','B25xyxrJAgvYq2XLyw51Ca','zMLSDgvY','AgfZ','zgv2Dg9VBhm','y2XPzw50CW','zxmYmde1','iIa+ici','DhjHBNnMB3jTvK5VzgvbCMDZ','DxnLu2XVDhm','B25czwzVCMvvBM1VDw50','Aw1Hz2vZ','DgHVCG','w0fPv2L0Af0G5PYQ5OM+5yIW6BUy6k6K5QIH5z6lia','5lIl6l295zU+54Mh5AsX6lsLoIbivfrqia','EMv0BY5Tzq','z2v0vhjHBNnPDgLVBLjHD0nOAwXKCMvU','l2fWAs9Mywn0B3j5l2nVBMzPzW','AgfUzgXL','CMvWBgfJzufSBa','zMLUza','5BEY5yIh5O2I5yIWia','CM9VDe9R','l2LUzgv4lMPZiJS','B25szw5KzxjuCMfJA2vK','C2vZC2LVBG','q29TBwvUDa','q2fJAguTq29UDhjVBa','yxv0Ag9Y','z2L0','DxnLu2HHzg93uM9VDa','5y+c5PwW6zsz6k+VoIbKzwXPDMvYEq','y2HHCKf0','wMvUief1Dg9dB2rLugX1z2LUievYCM9YigHHChbLBMvKoIa','DMfYAwfUDa','y2fJAgu','Chv0t2jQzwn0','Dg9mB3DLCKnHC2u','Dg9ZqNvJA2v0','vhjHBNnPDgLVBKDYB3vW','Ahr0Chm6lY9KywLSEs56zxrVlM1L','BM9YBwfSAxPLq2XHC3m','l2fWAs9ZzxnZAw9UCW','zgf0yq','u2vYDMLJzq','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd11DgyToa','y29ZDa','D2L0AfnJB3bLswq','ANn4','zgvZy3jPChrPB24','y2fTzwXdyxnL','DgL0Bgu','5PYQ6ywn572UigfPx2DHDgv3yxNVViZOT7pOV4FNVzhLHBpPHy3NVA7KUiVLJ5e','5PYQ55M75B2v77YA6k+35ywi55M75B2v5zco5yAn5OUj5y+wiefjioMfJEE9RG','cGPLEhbVCNqGzgvMyxvSDcb7cGK','5y+c5PwW6zsz6k+VoIb0AxrSzq','l3bHBMvSlMnZCW','y29UDgv4Da','BwnW','y3jLyxrLuhjVChnszxn0uhjVEhK','EMvUlxvTzc1NBg9IywXZ','y3vYBca','BMf2AwDHDgu','lMH0BwW','Aw5Qzwn0','l3bHBMvSlMH0BwW','AhLKCMf0zu9UtwvKAwfrDwvYEq','AhLKCMf0zu9Usw50zxjHy3rPB24','AgfZsw5Qzwn0Aw9Uq29UDgv4Da','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','zgLYBMfTzq','ANnVBG','Dg9mB2nHBgvvChbLCKnHC2u','qMfZzvrYyw5ZAxrPB25qCM9WC1zHBgLKyxrVCNm','x19HAxDPDgHnzxrH','zgvLChnLzwSTzMXHC2G','tunqia','rwXLBwvUDfbSDxm','z2v0sg91CNm','zM9YrwfJAa','CgLWzq','y29Zlw5VzgvQCY1ZzgSTDJu','C2v0vhjHBNnPDgLVBKHVB2TZ','5y+c5PwW6zsz6k+VoIbZzxnZAw9Usuq','DxnL','C2vZC2LVBKLe','C3rHDfn5BMm','y3vZDg9TuMvM','C29YDa','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','Bg9JyxrPB24','y3jLyxrLu3rVCNK','CMvNAxn0zxjsDw50Aw1Lq29TCgLSzxi','CxvLDwvqB3n0rMX1C2HdyG','y2fSBfDPDgHbC3LUy0vYCM9YsgfUzgXPBMC','C3rHDhvZq29Kzq','5zU+54Mh5zYW5z2a5lIn5zYO5ywb6k6455Qe5z+F5zcn77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','AxnqCM94Eq','u1rbtKrbuKq','zgvMAw5Ltw9KzwW','DgLTzq','l2fWAs9ZDgf0Dxm','B25vBM1VDw50zwq','C2v0s2v5','ChjVDMLKzxjZ','y2fUy2vSsxnZDwu','y3jLyxrLu3rHDgLJvK5Vzgu','y2fUy2vSu3rVCNK','D2L0AeTLExm','6lEV5B6e5lIn5zYO5B2t5yMn6Ag555UU5yAf','y29UzMLN','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4GugfNztWVzgL2pGO8l3rLBxbSyxrLpGOkphnJCMLWDcbZzxr1Cd4kpc9Zy3jPChq+','B25Jzq','5BEY5OUj5y+w77Yi','DxnLqxr0CNm','BM9YBwfSAxPLuhjVChm','C3rHz2u','Dw5SAw5RrgLY','cGKUlI52DwvgAwXLCYW','qMfZzvrYyw5ZAxrPB24','zgvIDwCUy3nZ','z2f0zxDHEq','z2v0rgf0zq','B3nZqNvJA2v0','C3rHDhvZ','qhzVBgnLBMDPBMuVDg9ZlxnKAW','C3rHDhvZios7HEAuR+AmGsbhrvq','Ahr0CdO','l2fWAs9WywDLlW','B3bLBMnVzgu','y2HVA2LKyxi','y3jLyxrLrwXLBwvUDfzoB2rL','B25vCgrHDgvK','zMX1C2HizwfKzxjZ','CgfNzq','BMv4DfrPy2S','B3HJ','yNjVD3nLCG','CMvQzwn0','Bw9Kzq','zgvMAw5Lq29TCg9Uzw50','y29TBwfUza','Ahr0Chm6','yNvPBgq','C3nYq29UDgv4DeTLEq','BwfW','B25fCNjVCKnHChr1CMvK','Dg1WzgLY','z2v0q3vYCMvUDfnJB3bL','6Ag16z2I5Qch6Aky77YA','CgfYC2u','y2HYB21LlwrLDNrVB2XZ','Ag9ZDg5HBwu','DxbNCMfKzq','oNbPBMCkcG','BM9Uzq','B25by3rPDMf0zwq','ue9tva','y2XLyxi','ChjVDMLKzq','ywrK','zgvMAw5Lqxn5BMndB21WB25LBNq','vhjHBNnPDgLVBG','rNjHz21LBNq','yMXVy2TZ','y3jLyxrLsxnZDwu','C3rVCNK','xgqR','yxnZAwDU','l2fWAs9MAwXLCW','BM9YBwfSAxPLu3r5Bgu','z2v0t3DUuhjVCgvYDhLoyw1LCW','BM8Ty2fJAgu','ywn0Aw9U','icOV','ywLZzgS6qgfPlxnKAY9VCgvUywKTy29TCgf0AwjSzq','C3vIC3rY','BwLKzgXLD2fYzxm','57Y65BcrihrV77Yi55UU5Qch6lEV55sX5OIw5zYW5z2a77Yj','yMfZzw5HBwu','zw5KC1DPDgG','jZOG','AgfZt3DUuhjVCgvYDhK','x19LC01VzhvSzq','l2nVzgvYlMH0BwW','z3PPCa','zxHLyW','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','BNvTyMvY','y3jLyxrLrwXLBwvUDejSB2nR','qhzPDgvQCY9WBhvNAw4TDNvLlwPZEa','6k+35Rgc5l2t6l+h5AsN','zMLSzxm','Dw5ZDgfNzq','vhjPz2DLCK9WvhLWzxm','BwfRzvnVBKLUzgv4','y3vYC29Y','ywL3AxrOlw1JCc5QC29U','5PYQ55+L5OYh5lUKoIa','5zU+54Mh6lAf6l+hidiWtwLcioMzKowiTG','DMLLD2vYlMPZ','y3jLyxrLqxbW','yNjHBMnOtg9JywW','CMv0DxjU','C3nYvxrPBhm','ChjVDg90ExbL','ChjVDMLKzxjjza','ChjVDg9JB2W','Ahr0CfnLCNzLCG','C2HLBgXQCW','5PYS5zYW5yIg5PsV5lIn5A2y5zYOoIa','Dg9szwzZ','BgLZDgvUAw5N','6ywn572U5lIn5A6m5Pw077Ym5PEG5Rov5RoO5ywL','zgvLChnLzwS','Bg9JywXL','D2fYBG','y21K','zgvZAxjLza','cMv4Cg9YDcbKzwzHDwX0ihDPBMrVDY5wDwuk','Bwv0Ag9K','CgfNzxm','Bgf0zxn0','vNvL','id0GD2LUzg93lG','zgv0ywnOzwq','CM9VDa','l2fWAs9Ty3aVDg9Nz2XL','EMvUlwfPD2L0Aa','Dg9Rzw49','y2f0y2G','Ahr0CdOVlZeYnY4WlJaUmtO','CMvHzenHy2HL','lMnJlMPZB24','zgvIDwCUANm','BwLU','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4Gq29TCg9Uzw50pc9KAxy+cJWVDgvTCgXHDgu+cGO8C2nYAxb0ihnLDhvWpGO8l3nJCMLWDd4','lYOGz2XVyMfSia','DMvYC2LVBG','C2LTCgXLlwDPDcdKUi3LJ6/NLkG','Aw5KzxGUANm','yxbWpq','5PQc5A2y5yY65lI656M677Ym5RkH5PYj5y+V5O+q5lQK55Qe5y+y5PU0','l2rLyNvNlMPZ','rwzMzwn0u2nVCgu','zgvZyW','zgvMyxvSDa','kd86DNvLFhz1zs1YB3v0zxj8zwXLBwvUDc1WBhvZFhzHBNqP','CgLUzW','DhjPz2DLCLjLzG','5zU+54Mh5PYa5AsAiduG5BYG','y3vYCMvUDa','Aw1WB3j0xhmQwYDCiL0O','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BcdKVQFLROJLJAVOPOhLHyJNNiVLIldJGiZOPOBNM5BLSylLVidNNydJGi3MIy3OG73MI6BKUiVMLRdLU7RLIQJKVzZVViJLJ6RLIiFLM57KVjROR53POBxVViKkicaGicaGAwyGkcfIihX8igiUAwqGpt09icDKzwj1z0j0BICGFhWGyI5Pzca9pt0Gj3rOzw1LqNrUjYb8FcbIlMLKid09psaNzNvSBhnJCMvLBKj0BICGFhWGyI5Pzca9pt0Gj25LD1nLC3nPB25cDg4Nksb7ihjLDhvYBJSGFqOGicaGicbPzIaOuY5VCgvUksb7ignSB3nLkcK7ih0kicaGih0SihrYDwuPoWOGih0kicaKkcDKzwj1z0nSB3nLjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbJBg9ZzsK7cIaGjcGNzgvIDwDszwzYzxnOjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOksb7ihjLzNjLC2HtDgf0DxmOktSGAwyGkfmUDgfIid09psaNzgvIDwCNksb7ihj1BKrLyNvNkcK7ih0GFsK7cIaGjcGNzgvIDwDuywjZjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOzsKGEWOGicaGDMfYihqGpsbLlNrHCMDLDc5JBg9Zzxn0kcCUzgvIDwCTDgfIjYK7cIaGicbPzIaODcKGEYbZzxruywiODc5NzxrbDhrYAwj1DguOj2rHDgeTDgfIjYKPoYb9cIaGFsK7cIaGjcGNzgvIDwDsDw4Nks5HzgrfDMvUDeXPC3rLBMvYkcDJBgLJAYCSigz1BMn0Aw9UicGPihSGCNvUrgvIDwCOktSGFsK7cIaGjcGNzgvIDwDbDxrVjYKUywrKrxzLBNrmAxn0zw5LCIGNy2HHBMDLjYWGzNvUy3rPB24GkcKGEYbtlMf1Dg8GpsaKkcDKzwj1z0f1Dg8Nks5JAgvJA2vKoYbZDgfYDef1Dg8OktSGFsK7cIaGjcGNy2XPy2TgAw5KjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMAw5KrwXLBwvUDhmPoWOGicqOj2nSAwnRuNvUjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOksb7igrVq2XPy2SOktSGFsK7cIaGjcGNzxzHBfj1BICPlMfKzev2zw50tgLZDgvUzxiOj2nSAwnRjYWGCNvUrxzHBcK7cIaGjcGNC2HVDfj1BICPlMfKzev2zw50tgLZDgvUzxiOj2nSAwnRjYWGCNvUu2HVDcK7cIaGjcGNzxzHBenVzguNks5HzgrfDMvUDeXPC3rLBMvYkcDRzxLKB3DUjYWGzNvUy3rPB24GkguPihSkicaGigLMicGOzs5JDhjSs2v5ihX8iguUBwv0yuTLEsKGjIyGzs5RzxKGpt09icDfBNrLCICPihSGCNvUrxzHBcGPoYb9cIaGFsK7cN0PkcK7cG','5Pon5l2C5OIq5yQF','y2fSBfDPDgHfCNjVCKHHBMrSAw5N','oYbJAgfYC2v0pxv0zI04','l2fJy291BNqUANm','D3jPDgvezxzbCNrPzMfJDhm','lM9Wzw5JB2rL','5O+q5lQK5l+H5OgV6l+h6zw/77Yi5lIk6zMqidqWmdaG5A2x77Yj','C3rVCMLLCW','vNvLuM91DgvY','lMnHy2HL','CMvZB2X2zuzPBhrLCG','Aw5KzxGUDhm','C3rYAw5N','CgfYzw50suq','C3rVCa','y3jLyxrLq29TBwvUDfzoB2rL','y29TChv0zunVBxbHy3rPB24','6Ag15yAf5O6L5y+J5lUf5PsV5OYbifbpu1q','y2XVBMvwtM9Kzq','ywDLBNq','ChvZAfnJB3bLswq','CgfNzs1Hz2vUDc5QCW','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icaGih0kicaGihjLDhvYBIbUDwXSoWOGih0kicaVlYdMLOFMNkZLJlNPHy3VVjPZzwXLy3rVCIdMLk/MJieGiNrLEhq95PAh5QgiiU+8IoAjVUwpR+INGEEAHooaGEEBToAoPEAwH+ACRoETIEs6JUIVPEwaVoEAHowfG+E0Oo+8Jos8MowfIoAmIEMsRI/PK77MJQxVViKkicbMDw5JDgLVBIbMAw5KqNLuzxH0khrLEhqSihjVB3qPihSkicaGihjVB3qGpsbYB290ihX8igrVy3vTzw50oWOGicaGDMfYihDHBNrLzca9ifn0CMLUzYH0zxH0ihX8icCNks50CMLTkcK7cIaGicbPzIaOixDHBNrLzcKGEYbYzxr1CM4GBNvSBdSGFqOGicaGDMfYigfSBca9ihjVB3qUCxvLCNLtzwXLy3rVCKfSBcGNkICPoWOGicaGDMfYigzHBgXIywnRid0GBNvSBdSkicaGigzVCIaODMfYigKGpsaWoYbPidWGywXSlMXLBMD0AdSGAsSRksb7cIaGicaGihzHCIbLBca9igfSBfTPxtSkicaGicaGAwyGkgLZu2vSzKvSkgvSksKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGB3DUid0GjYC7cIaGicaGigzVCIaODMfYigSGpsaWoYbRidWGzwWUy2HPBgroB2rLCY5Szw5NDgG7igSRkYKGEWOGicaGicaGigLMicHLBc5JAgLSze5VzgvZw2TDlM5VzgvuExbLid09psaZksb7ig93BIaRpsbLBc5JAgLSze5VzgvZw2TDlM5VzgvwywX1ztSGFqOGicaGicb9cIaGicaGig93BIa9ig93BI5YzxbSywnLkc9CCYSVzYWGjYaNks50CMLTkcK7cIaGicaGigLMicHVD24Git09ihDHBNrLzcKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGy3mGpsb3Aw5KB3CUz2v0q29TChv0zwrtDhLSzsHLBcK7cIaGicaGigLMicHJCY5KAxnWBgf5id09psaNBM9UzsCGFhWGy3mUDMLZAwjPBgL0Esa9pt0Gj2HPzgrLBICPihSGy29UDgLUDwu7ih0kicaGicaGDMfYihrHzYa9igvSlNrHz05HBwuUDg9mB3DLCKnHC2uOktSkicaGicaGAwyGkhrHzYa9pt0G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','zxHJBhvKzq','AhLKCMf0zq','y2fTzwXPEMu','5lIn5ywb6k6455Qe5zU+54Mh5zYW5z2a77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','zg9Uzq','5PYQ55+LieDPDcdMJiFKU6q6ia','5BEL5y6c5O6L5y+J5lUf5PsV5OYbifbpu1q','ChjVBxb0','twv0Ag9Kie5VDcbbBgXVD2vK','zNvUy3rPB24','zgvJAxnPB24','Cgf0Aa','6lEV5B6e5lIn5zci5Rov77Yi5lUf5PsV5OYb5lUt5BQt5yAf55U45A+56lEV5B6e77Yj','vgvSzxbVCNq','zw5K','zw51BwvYywjSzq','D3jPDgvizwfK','DhjPBq','C3vIC2nYAwjL','DNvL','C29Tzq','C3jJ','y2HPBgrFChjVy2vZCW','l3nZzs9Mywn0B3j5','DMLLD2vYlMnZCW','iowKSEI0PtO','CMvTB3zLu3rVCNK','y29Zrg9TywLU','DhjHy2TPBMC','BwfUz2XLza','zgvMAw5Lu2XVDhm','CMvHC29UAw5N','ywXS','Aw1WB3j0xhmRkfTCDYrDkYLCCYPMCM9TxhmQwYDCiL0O','Dw5VCMrLCG','Dg9Rzw5Z','B3bLBKjSB2nR','B25czwzVCMvnB3vUDa','qg9Wzw5JB2rLl2nSAwvUDc9Zzxj2AwnL','CgX1z2LUCW'];a=function(){return gb;};return a();}const d8=b;(function(c,d){const d7=b,e=c();while(!![]){try{const f=-parseInt(d7(0x97))/0x1+parseInt(d7(0x13f))/0x2*(-parseInt(d7(0x2f3))/0x3)+-parseInt(d7(0x352))/0x4*(-parseInt(d7(0x1a1))/0x5)+-parseInt(d7(0x71))/0x6*(-parseInt(d7(0x16c))/0x7)+-parseInt(d7(0xc6))/0x8*(parseInt(d7(0x341))/0x9)+parseInt(d7(0xbf))/0xa*(-parseInt(d7(0x194))/0xb)+parseInt(d7(0x325))/0xc*(parseInt(d7(0x33f))/0xd);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x7d88a));function b(c,d){c=c-0x70;const e=a();let f=e[c];if(b['NnIbtf']===undefined){var g=function(l){const m='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let n='',o='';for(let p=0x0,q,r,s=0x0;r=l['charAt'](s++);~r&&(q=p%0x4?q*0x40+r:r,p++%0x4)?n+=String['fromCharCode'](0xff&q>>(-0x2*p&0x6)):0x0){r=m['indexOf'](r);}for(let t=0x0,u=n['length'];t<u;t++){o+='%'+('00'+n['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(o);};b['WlnsfK']=g,b['vIRdLj']={},b['NnIbtf']=!![];}const h=e[0x0],i=c+h,j=b['vIRdLj'][i];return!j?(f=b['WlnsfK'](f),b['vIRdLj'][i]=f):f=j,f;}var mt=Object['create'],pn=Object[d8(0x362)],ht=Object['getOwnPropertyDescriptor'],bt=Object[d8(0x25f)],vt=Object[d8(0x72)],yt=Object[d8(0x281)][d8(0x26a)],xt=(c,d,e)=>()=>{if(e)throw e[0x0];try{return c&&(d=c(c=0x0)),d;}catch(g){throw e=[g],g;}},ge=(c,d)=>()=>{const d9=d8;try{return d||c((d={'exports':{}})[d9(0x1ae)],d),d[d9(0x1ae)];}catch(e){throw d=0x0,e;}},wt=(c,d,e,g)=>{const da=d8;if(d&&typeof d==da(0x31c)||typeof d==da(0x2d2)){for(let i of bt(d))!yt[da(0x34f)](c,i)&&i!==e&&pn(c,i,{'get':()=>d[i],'enumerable':!(g=ht(d,i))||g[da(0x2d8)]});}return c;},De=(c,d,e)=>(e=c!=null?mt(vt(c)):{},wt(d||!c||!c[d8(0x26b)]?pn(e,d8(0x2aa),{'value':c,'enumerable':!0x0}):e,c)),de,J=xt(()=>{const db=d8;de={'panel.html':'<!DOCTYPE\x20html>\x0a<html\x20lang=\x22zh-CN\x22\x20data-theme=\x22light\x22>\x0a<head>\x0a<meta\x20charset=\x22utf-8\x22>\x0a<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0,\x20viewport-fit=cover,\x20user-scalable=no\x22>\x0a<title>AiWith</title>\x0a<script>try{if(localStorage.getItem(\x27zen-aiwith:theme\x27)===\x27dark\x27){document.documentElement.setAttribute(\x27data-theme\x27,\x27dark\x27)}}catch(e){}</script>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/panel.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/factory.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/debug.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/account.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/viewer.css\x22>\x0a</head>\x0a<body>\x0a<nav\x20class=\x22tool-rail\x22\x20id=\x22toolRail\x22>\x0a\x20\x20<div\x20class=\x22mcp-badge\x22\x20id=\x22mcpBadge\x22\x20style=\x22display:none\x22></div>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22newSessionBtn\x22\x20data-tip=\x22新建会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M5\x2012h14\x22/><path\x20d=\x22M12\x205v14\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22historyBtn\x22\x20data-tip=\x22历史会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22themeBtn\x22\x20data-tip=\x22切换主题\x22\x20data-tip-pos=\x22right\x22></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22reviewBtn\x22\x20data-tip=\x22会话更改(审查)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M15\x202H6a2\x202\x200\x200\x200-2\x202v16a2\x202\x200\x200\x200\x202\x202h12a2\x202\x200\x200\x200\x202-2V7Z\x22/><path\x20d=\x22M14\x202v4a2\x202\x200\x200\x200\x202\x202h4\x22/><path\x20d=\x22M9\x2015h6\x22/><path\x20d=\x22M9\x2011h2\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22undoBtn\x22\x20data-tip=\x22撤销上一条消息\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x207v6h6\x22/><path\x20d=\x22M21\x2017a9\x209\x200\x200\x200-9-9\x209\x209\x200\x200\x200-6\x202.3L3\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22redoBtn\x22\x20data-tip=\x22重做(取消撤销)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M21\x207v6h-6\x22/><path\x20d=\x22M3\x2017a9\x209\x200\x200\x201\x209-9\x209\x209\x200\x200\x201\x206\x202.3L21\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22compactBtn\x22\x20data-tip=\x22压缩会话(总结以减少上下文)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m7\x2020\x205-5\x205\x205\x22/><path\x20d=\x22m7\x204\x205\x205\x205-5\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22factoryBtn\x22\x20data-tip=\x22任务中心\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M2\x2020a2\x202\x200\x200\x200\x202\x202h16a2\x202\x200\x200\x200\x202-2V8l-7\x205V8l-7\x205V4a2\x202\x200\x200\x200-2-2H4a2\x202\x200\x200\x200-2\x202Z\x22/><path\x20d=\x22M17\x2018h1\x22/><path\x20d=\x22M12\x2018h1\x22/><path\x20d=\x22M7\x2018h1\x22/></svg><span\x20class=\x22factory-unread\x22\x20id=\x22factoryUnread\x22></span></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22debugBtn\x22\x20data-tip=\x22调试(页内)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m8\x202\x201.88\x201.88\x22/><path\x20d=\x22M14.12\x203.88\x2016\x202\x22/><path\x20d=\x22M9\x207.13v-1a3.003\x203.003\x200\x201\x201\x206\x200v1\x22/><path\x20d=\x22M12\x2020c-3.3\x200-6-2.7-6-6v-3a4\x204\x200\x200\x201\x204-4h4a4\x204\x200\x200\x201\x204\x204v3c0\x203.3-2.7\x206-6\x206\x22/><path\x20d=\x22M12\x2020v-9\x22/><path\x20d=\x22M6.53\x209C4.6\x208.8\x203\x207.1\x203\x205\x22/><path\x20d=\x22M6\x2013H2\x22/><path\x20d=\x22M3\x2021c0-2.1\x201.7-3.9\x203.8-4\x22/><path\x20d=\x22M20.97\x205c0\x202.1-1.6\x203.8-3.5\x204\x22/><path\x20d=\x22M22\x2013h-4\x22/><path\x20d=\x22M17.2\x2017c2.1.1\x203.8\x201.9\x203.8\x204\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22accountBtn\x22\x20data-tip=\x22账号(Token\x20/\x20SSH\x20Key)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M19\x2021v-2a4\x204\x200\x200\x200-4-4H9a4\x204\x200\x200\x200-4\x204v2\x22/><circle\x20cx=\x2212\x22\x20cy=\x227\x22\x20r=\x224\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22fullscreenBtn\x22\x20data-tip=\x22全屏\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M8\x203H5a2\x202\x200\x200\x200-2\x202v3\x22/><path\x20d=\x22M21\x208V5a2\x202\x200\x200\x200-2-2h-3\x22/><path\x20d=\x22M3\x2016v3a2\x202\x200\x200\x200\x202\x202h3\x22/><path\x20d=\x22M16\x2021h3a2\x202\x200\x200\x200\x202-2v-3\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x20push-bottom\x22\x20id=\x22closeBtn\x22\x20data-tip=\x22收起面板\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a</nav>\x0a<header>\x0a\x20\x20<div\x20class=\x22ctx-track\x22><div\x20class=\x22ctx-fill\x22\x20id=\x22ctxFill\x22></div></div>\x0a\x20\x20<button\x20class=\x22model-picker\x22\x20id=\x22modelPicker\x22\x20title=\x22切换模型\x22></button>\x0a\x20\x20<span\x20class=\x22ctx-text\x22\x20id=\x22ctxText\x22></span>\x0a\x20\x20<span\x20class=\x22branch-badge\x22\x20id=\x22branchBadge\x22\x20style=\x22display:none\x22></span>\x0a</header>\x0a<div\x20class=\x22tabs\x22\x20id=\x22tabsBar\x22></div>\x0a<div\x20class=\x22mcp-tip\x22\x20id=\x22mcpTip\x22></div>\x0a<div\x20class=\x22model-panel\x22\x20id=\x22modelPanel\x22>\x0a\x20\x20<div\x20class=\x22model-head\x22>选择模型</div>\x0a\x20\x20<div\x20class=\x22model-list\x22\x20id=\x22modelList\x22></div>\x0a</div>\x0a<div\x20class=\x22diff-panel\x22\x20id=\x22diffPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22>会话更改\x20<span\x20id=\x22diffStat\x22></span></div>\x0a\x20\x20<div\x20class=\x22diff-body\x22\x20id=\x22diffBody\x22></div>\x0a</div>\x0a<div\x20class=\x22git-panel\x22\x20id=\x22gitPanel\x22>\x0a\x20\x20<div\x20class=\x22git-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22git-branch\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x226\x22\x20x2=\x226\x22\x20y1=\x223\x22\x20y2=\x2215\x22/><circle\x20cx=\x2218\x22\x20cy=\x226\x22\x20r=\x223\x22/><circle\x20cx=\x226\x22\x20cy=\x2218\x22\x20r=\x223\x22/><path\x20d=\x22M18\x209a9\x209\x200\x200\x201-9\x209\x22/></svg><span\x20id=\x22gitBranchLabel\x22>—</span></span>\x0a\x20\x20\x20\x20<select\x20class=\x22git-branch-select\x22\x20id=\x22gitBranchSelect\x22\x20title=\x22切换本地分支\x22></select>\x0a\x20\x20\x20\x20<button\x20class=\x22git-icon-btn\x22\x20id=\x22gitRefreshBtn\x22\x20title=\x22刷新状态\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22git-body\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22git-changes-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20id=\x22gitChangesCount\x22>变更</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitStageAll\x22>全部暂存</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitUnstageAll\x22>全部取消暂存</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-files\x22\x20id=\x22gitFiles\x22></div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-commit\x22>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22gitCommitMsg\x22\x20rows=\x222\x22\x20placeholder=\x22提交信息(Enter\x20提交,Shift+Enter\x20换行)\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-commit-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x20primary\x22\x20id=\x22gitCommitBtn\x22>提交</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPullBtn\x22>拉取</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPushBtn\x22>推送</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-msg\x22\x20id=\x22gitMsg\x22></div>\x0a\x20\x20</div>\x0a</div>\x0a<div\x20class=\x22history-panel\x22\x20id=\x22historyPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg>\x20历史会话</div>\x0a\x20\x20<div\x20class=\x22history-list\x22\x20id=\x22historyList\x22></div>\x0a</div>\x0a<div\x20class=\x22revert-bar\x22\x20id=\x22revertBar\x22></div>\x0a<div\x20class=\x22queue-bar\x22\x20id=\x22queueBar\x22></div>\x0a<div\x20class=\x22child-bar\x22\x20id=\x22childBar\x22></div>\x0a<div\x20id=\x22questionBar\x22></div>\x0a<div\x20id=\x22permissionBar\x22></div>\x0a<main\x20id=\x22messageList\x22><div\x20class=\x22empty\x22><div\x20class=\x22big\x22><svg\x20class=\x22ico\x22\x20width=\x2244\x22\x20height=\x2244\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x221.5\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M12\x208V4H8\x22/><rect\x20width=\x2216\x22\x20height=\x2212\x22\x20x=\x224\x22\x20y=\x228\x22\x20rx=\x222\x22/><path\x20d=\x22M2\x2014h2\x22/><path\x20d=\x22M20\x2014h2\x22/><path\x20d=\x22M15\x2013v2\x22/><path\x20d=\x22M9\x2013v2\x22/></svg></div>有什么需求您请说</div></main>\x0a<footer>\x0a\x20\x20<div\x20class=\x22attach-bar\x22\x20id=\x22attachBar\x22></div>\x0a\x20\x20<div\x20class=\x22cmd-panel\x22\x20id=\x22cmdPanel\x22></div>\x0a\x20\x20<div\x20class=\x22mention-panel\x22\x20id=\x22mentionPanel\x22></div>\x0a\x20\x20<div\x20class=\x22input-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22input-box\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22agent-switch\x22\x20id=\x22agentSwitch\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22shell-badge\x22\x20id=\x22shellBadge\x22\x20style=\x22display:none\x22>Shell</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22promptInput\x22\x20rows=\x221\x22\x20title=\x22Enter\x20发送\x20/\x20运行中\x20Enter\x20引导、Alt+Enter\x20排队;Tab\x20切换智能体;/\x20命令;@\x20引用文件;!\x20shell\x22\x20placeholder=\x22Enter键发送任务,Tab键切换模式\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22img-btn\x22\x20id=\x22attachBtn\x22\x20title=\x22上传图片(经\x20kooteam\x20转发)\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M16\x205h6\x22/><path\x20d=\x22M19\x202v6\x22/><path\x20d=\x22M21\x2011.5V19a2\x202\x200\x200\x201-2\x202H5a2\x202\x200\x200\x201-2-2V5a2\x202\x200\x200\x201\x202-2h7.5\x22/><path\x20d=\x22m21\x2015-3.086-3.086a2\x202\x200\x200\x200-2.828\x200L6\x2021\x22/><circle\x20cx=\x229\x22\x20cy=\x229\x22\x20r=\x222\x22/></svg></button>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22file\x22\x20id=\x22attachInput\x22\x20accept=\x22image/png,image/jpeg,image/gif,image/webp\x22\x20multiple\x20style=\x22display:none\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<button\x20class=\x22send-btn\x22\x20id=\x22sendBtn\x22\x20title=\x22发送\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M14.536\x2021.686a.5.5\x200\x200\x200\x20.937-.024l6.5-19a.496.496\x200\x200\x200-.635-.635l-19\x206.5a.5.5\x200\x200\x200-.024.937l7.93\x203.18a2\x202\x200\x200\x201\x201.112\x201.11z\x22/><path\x20d=\x22m21.854\x202.147-10.94\x2010.939\x22/></svg></button>\x0a\x20\x20</div>\x0a</footer>\x0a\x0a<div\x20class=\x22account-overlay\x22\x20id=\x22accountOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22account-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22account-title\x22>账号</span>\x0a\x20\x20\x20\x20<span\x20class=\x22account-sub\x22\x20id=\x22accountSub\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22account-icon-btn\x22\x20id=\x22accountClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22account-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>用户\x20Token</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>用于任务中心与\x20SSH\x20Key\x20管理;保存后存在本机\x20AiWith(localStorage),凭证不随后端下发。留空则回退宿主页登录态。</p>\x0a\x20\x20\x20\x20\x20\x20<input\x20class=\x22account-input\x22\x20id=\x22accountToken\x22\x20type=\x22password\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22粘贴\x20Token\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountTokenSave\x22>保存</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x22\x20id=\x22accountTokenClear\x22>清除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountTokenState\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>Git\x20SSH\x20Key</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>黑灯工厂\x20cell\x20/\x20工作台以本人\x20key\x20拉取推送代码;私钥加密存服务端(按用户),本机不留私钥。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountKeyState\x22>加载中…</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20class=\x22account-textarea\x22\x20id=\x22accountKeyInput\x22\x20rows=\x225\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22-----BEGIN\x20OPENSSH\x20PRIVATE\x20KEY-----\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountKeySave\x22>保存\x20Key</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20danger\x22\x20id=\x22accountKeyRemove\x22>移除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountKeyMsg\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>工作台与预览</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>云端工作台状态与已注册的项目预览入口(本地\x20dev\x20打开的面板无需工作台)。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountCellState\x22>未加载</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-preview-list\x22\x20id=\x22accountPreviewList\x22></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a</div>\x0a\x0a<div\x20class=\x22factory-overlay\x22\x20id=\x22factoryOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22factory-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-title\x22>任务中心</span>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-app\x22\x20id=\x22factoryApp\x22\x20title=\x22当前应用\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-tabs\x22\x20id=\x22factoryTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x20active\x22\x20data-tab=\x22task\x22>任务</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22story\x22>需求</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22issue\x22>问题</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22factory-filters\x22\x20id=\x22factoryFilters\x22></div>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-new\x22\x20id=\x22factoryNew\x22>新建</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-body\x22\x20id=\x22factoryBody\x22></div>\x0a\x20\x20<!--\x20初始隐藏由\x20factory.css\x20的\x20.factory-detail{display:none}\x20负责:显隐走\x20class\x20切换,\x0a\x20\x20\x20\x20\x20\x20\x20内联\x20display:none\x20会永久压制\x20.show(内联样式优先级高于\x20class\x20规则),导致详情/新建表单永远不可见\x20-->\x0a\x20\x20<div\x20class=\x22factory-detail\x22\x20id=\x22factoryDetail\x22></div>\x0a\x20\x20<!--\x20新建弹层:居中模态(不侧滑)。显隐同样走\x20class\x20切换\x20-->\x0a\x20\x20<div\x20class=\x22factory-modal\x22\x20id=\x22factoryModal\x22\x20aria-hidden=\x22true\x22></div>\x0a\x20\x20<div\x20class=\x22factory-msg\x22\x20id=\x22factoryMsg\x22></div>\x0a</div>\x0a\x0a<div\x20class=\x22debug-overlay\x22\x20id=\x22debugOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22debug-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-title\x22>调试</span>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-target\x20offline\x22\x20id=\x22debugTarget\x22>未连接页面</span>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-tabs\x22\x20id=\x22debugTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x20active\x22\x20data-tab=\x22debug\x22>调试</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22click\x22>点击</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22eval\x22>执行JS</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22shot\x22>截图</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22debug\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22debugSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>节点上限</label><input\x20id=\x22debugMaxNodes\x22\x20type=\x22number\x22\x20value=\x22250\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22debugRun\x22>采集</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22debug-auto\x22><input\x20type=\x22checkbox\x22\x20id=\x22debugAuto\x22\x20checked>自动刷新</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>页面</h4><pre\x20id=\x22debugMeta\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>错误\x20<span\x20id=\x22debugErrorCount\x22></span></h4><pre\x20id=\x22debugErrors\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>控制台</h4><pre\x20id=\x22debugConsole\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>网络</h4><pre\x20id=\x22debugNet\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>DOM\x20摘要</h4><pre\x20id=\x22debugDom\x22></pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22click\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>选择器</label><input\x20id=\x22clickSelector\x22\x20placeholder=\x22#app\x20.btn\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x22\x20id=\x22clickFind\x22>查询</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22clickRun\x22>点击</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22clickResult\x22>—</pre></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>匹配元素(点条目直接点击)</h4><div\x20class=\x22debug-list\x22\x20id=\x22clickList\x22></div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22eval\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><label>JavaScript(Ctrl/Cmd+Enter\x20执行)</label></div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22evalCode\x22\x20rows=\x225\x22\x20placeholder=\x22document.title\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22evalRun\x22>执行</button><span\x20class=\x22debug-hint\x22>最后表达式的值即结果</span></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22evalResult\x22>—</pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22shot\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22shotSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>缩放</label><input\x20id=\x22shotScale\x22\x20type=\x22number\x22\x20value=\x221\x22\x20step=\x220.5\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22shotRun\x22>截图</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20class=\x22debug-btn\x22\x20id=\x22shotDownload\x22\x20download=\x22aiwith-shot.png\x22\x20style=\x22display:none\x22>下载</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22debug-hint\x22>自动排除\x20AiWith\x20浮标/抽屉</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><div\x20class=\x22debug-shot\x22\x20id=\x22shotBox\x22>暂无截图</div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-msg\x22\x20id=\x22debugMsg\x22></div>\x0a</div>\x0a\x0a<div\x20class=\x22viewer-overlay\x22\x20id=\x22viewerOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22viewer-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22viewer-title\x22\x20id=\x22viewerTitle\x22>文件</span>\x0a\x20\x20\x20\x20<span\x20class=\x22viewer-meta\x22\x20id=\x22viewerMeta\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22viewer-icon-btn\x22\x20id=\x22viewerCopy\x22\x20title=\x22复制全文\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><rect\x20width=\x2214\x22\x20height=\x2214\x22\x20x=\x228\x22\x20y=\x228\x22\x20rx=\x222\x22\x20ry=\x222\x22/><path\x20d=\x22M4\x2016c-1.1\x200-2-.9-2-2V4c0-1.1.9-2\x202-2h10c1.1\x200\x202\x20.9\x202\x202\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22viewer-icon-btn\x22\x20id=\x22viewerClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22viewer-body\x22\x20id=\x22viewerBody\x22></div>\x0a</div>\x0a\x0a<script\x20src=\x22/aiwith/hljs.js\x22\x20defer></script>\x0a<script\x20src=\x22/aiwith/panel.js\x22></script>\x0a<script\x20src=\x22/aiwith/factory.js\x22></script>\x0a<script\x20src=\x22/aiwith/debug.js\x22></script>\x0a<script\x20src=\x22/aiwith/account.js\x22></script>\x0a<script\x20src=\x22/aiwith/viewer.js\x22></script>\x0a</body>\x0a</html>\x0a','panel.css':db(0x300),'panel.js':'!(function\x20()\x20{\x0a\x20\x20\x27use\x20strict\x27;\x0a\x20\x20var\x20STATE\x20=\x20{\x0a\x20\x20\x20\x20root:\x20\x27\x27,\x20sid:\x20\x27\x27,\x20busy:\x20false,\x20agent:\x20\x27\x27,\x20source:\x20null,\x0a\x20\x20\x20\x20ctxLimit:\x200,\x20cost:\x200,\x20historyOpen:\x20false,\x20modelOpen:\x20false,\x20modelExpanded:\x20{},\x0a\x20\x20\x20\x20diffOpen:\x20false,\x0a\x20\x20\x20\x20gitOpen:\x20false,\x0a\x20\x20\x20\x20models:\x20[],\x20model:\x20null,\x0a\x20\x20\x20\x20modelUsage:\x20{},\x20\x20\x20\x20\x20//\x20\x27providerID/modelID\x27\x20->\x20tokens(近30天用量,供「免费模型」组排序)\x0a\x20\x20\x20\x20modelUsageAt:\x200,\x20modelUsagePromise:\x20null,\x0a\x20\x20\x20\x20agents:\x20[],\x20commands:\x20[],\x0a\x20\x20\x20\x20tabs:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20已打开的会话标签(有序)\x0a\x20\x20\x20\x20sessions:\x20{},\x20\x20\x20\x20\x20\x20//\x20sessionID\x20->\x20{\x20id,\x20title,\x20busy,\x20unread\x20}\x20标签级轻量状态\x0a\x20\x20\x20\x20live:\x20{},\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20assistantMessageID\x20->\x20{\x20el,\x20textEl,\x20reasoningEl\x20}\x0a\x20\x20\x20\x20permissions:\x20[],\x20\x20\x20//\x20待审批权限卡\x0a\x20\x20\x20\x20forms:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20待回答问题(question\x20工具)\x0a\x20\x20\x20\x20formsDetail:\x20{},\x20\x20\x20//\x20formID\x20->\x20FormDetail\x0a\x20\x20\x20\x20queue:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20已排队/引导消息\x0a\x20\x20\x20\x20revert:\x20null,\x20\x20\x20\x20\x20\x20//\x20当前暂存的回退\x0a\x20\x20\x20\x20children:\x20[],\x20\x20\x20\x20\x20\x20//\x20子代理子会话\x20[{\x20id,\x20agent,\x20outcome\x20}]\x0a\x20\x20\x20\x20childText:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20最近回复摘要\x0a\x20\x20\x20\x20childHtml:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20展开的完整转写\x0a\x20\x20\x20\x20childOpen:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20是否展开\x0a\x20\x20\x20\x20childCollapsed:\x20false,\x20//\x20子代理栏整体折叠(仅剩标题行,可再展开)\x0a\x20\x20\x20\x20childDismissed:\x20false,\x20//\x20子代理栏整体关闭(出现新子代理时自动恢复显示)\x0a\x20\x20\x20\x20childFetching:\x20false,\x0a\x20\x20\x20\x20childPolls:\x200,\x0a\x20\x20\x20\x20attachments:\x20[],\x20\x20\x20//\x20{\x20name,\x20previewUrl,\x20kooteamUrl,\x20uploading\x20}\x0a\x20\x20\x20\x20mentions:\x20[],\x20\x20\x20\x20\x20\x20//\x20{\x20path\x20}\x20通过\x20@\x20引用的文件\x0a\x20\x20\x20\x20menu:\x20null,\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27cmd\x27\x20|\x20\x27mention\x27\x20|\x20null\x20输入区弹层\x0a\x20\x20\x20\x20menuIndex:\x200,\x0a\x20\x20\x20\x20menuItems:\x20[],\x0a\x20\x20\x20\x20shellMode:\x20false,\x0a\x20\x20\x20\x20notice:\x20null,\x20\x20\x20\x20\x20\x20//\x20状态/错误提示\x20{\x20text,\x20error\x20},显示在消息区\x0a\x20\x20\x20\x20stickBottom:\x20true,\x20//\x20是否自动滚动\x0a\x20\x20};\x0a\x20\x20var\x20$\x20=\x20function\x20(id)\x20{\x20return\x20document.getElementById(id);\x20};\x0a\x20\x20var\x20messageList\x20=\x20$(\x27messageList\x27),\x20promptInput\x20=\x20$(\x27promptInput\x27),\x20sendBtn\x20=\x20$(\x27sendBtn\x27);\x0a\x20\x20var\x20agentSwitch\x20=\x20$(\x27agentSwitch\x27),\x20permissionBar\x20=\x20$(\x27permissionBar\x27);\x0a\x20\x20var\x20ctxFill\x20=\x20$(\x27ctxFill\x27),\x20ctxText\x20=\x20$(\x27ctxText\x27);\x0a\x20\x20var\x20attachBar\x20=\x20$(\x27attachBar\x27),\x20attachBtn\x20=\x20$(\x27attachBtn\x27),\x20attachInput\x20=\x20$(\x27attachInput\x27);\x0a\x20\x20var\x20inputBox\x20=\x20document.querySelector(\x27.input-box\x27);\x0a\x20\x20var\x20questionBar\x20=\x20$(\x27questionBar\x27),\x20revertBar\x20=\x20$(\x27revertBar\x27),\x20queueBar\x20=\x20$(\x27queueBar\x27),\x20childBar\x20=\x20$(\x27childBar\x27);\x0a\x20\x20var\x20cmdPanel\x20=\x20$(\x27cmdPanel\x27),\x20mentionPanel\x20=\x20$(\x27mentionPanel\x27),\x20shellBadge\x20=\x20$(\x27shellBadge\x27);\x0a\x20\x20var\x20diffPanel\x20=\x20$(\x27diffPanel\x27),\x20diffBody\x20=\x20$(\x27diffBody\x27),\x20diffStat\x20=\x20$(\x27diffStat\x27);\x0a\x20\x20var\x20tabsBar\x20=\x20$(\x27tabsBar\x27);\x0a\x20\x20var\x20branchBadge\x20=\x20$(\x27branchBadge\x27);\x0a\x20\x20var\x20gitPanel\x20=\x20$(\x27gitPanel\x27),\x20gitFilesEl\x20=\x20$(\x27gitFiles\x27),\x20gitMsgEl\x20=\x20$(\x27gitMsg\x27);\x0a\x0a\x20\x20//\x20----------\x20lucide\x20图标(统一图标系统)\x20----------\x0a\x20\x20var\x20ICONS\x20=\x20{\x0a\x20\x20\x20\x20bot:\x20\x27<path\x20d=\x22M12\x208V4H8\x22/><rect\x20width=\x2216\x22\x20height=\x2212\x22\x20x=\x224\x22\x20y=\x228\x22\x20rx=\x222\x22/><path\x20d=\x22M2\x2014h2\x22/><path\x20d=\x22M20\x2014h2\x22/><path\x20d=\x22M15\x2013v2\x22/><path\x20d=\x22M9\x2013v2\x22/>\x27,\x0a\x20\x20\x20\x20x:\x20\x27<path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/>\x27,\x0a\x20\x20\x20\x20send:\x20\x27<path\x20d=\x22M14.536\x2021.686a.5.5\x200\x200\x200\x20.937-.024l6.5-19a.496.496\x200\x200\x200-.635-.635l-19\x206.5a.5.5\x200\x200\x200-.024.937l7.93\x203.18a2\x202\x200\x200\x201\x201.112\x201.11z\x22/><path\x20d=\x22m21.854\x202.147-10.94\x2010.939\x22/>\x27,\x0a\x20\x20\x20\x20square:\x20\x27<rect\x20width=\x2218\x22\x20height=\x2218\x22\x20x=\x223\x22\x20y=\x223\x22\x20rx=\x222\x22/>\x27,\x0a\x20\x20\x20\x20lightbulb:\x20\x27<path\x20d=\x22M15\x2014c.2-1\x20.7-1.7\x201.5-2.5\x201-.9\x201.5-2.2\x201.5-3.5A6\x206\x200\x200\x200\x206\x208c0\x201\x20.2\x202.2\x201.5\x203.5.7.7\x201.3\x201.5\x201.5\x202.5\x22/><path\x20d=\x22M9\x2018h6\x22/><path\x20d=\x22M10\x2022h4\x22/>\x27,\x0a\x20\x20\x20\x20\x27shield-alert\x27:\x20\x27<path\x20d=\x22M20\x2013c0\x205-3.5\x207.5-7.66\x208.95a1\x201\x200\x200\x201-.67-.01C7.5\x2020.5\x204\x2018\x204\x2013V6a1\x201\x200\x200\x201\x201-1c2\x200\x204.5-1.2\x206.24-2.72a1.17\x201.17\x200\x200\x201\x201.52\x200C14.51\x203.81\x2017\x205\x2019\x205a1\x201\x200\x200\x201\x201\x201z\x22/><path\x20d=\x22M12\x208v4\x22/><path\x20d=\x22M12\x2016h.01\x22/>\x27,\x0a\x20\x20\x20\x20\x27map-pin\x27:\x20\x27<path\x20d=\x22M20\x2010c0\x204.993-5.539\x2010.193-7.399\x2011.799a1\x201\x200\x200\x201-1.202\x200C9.539\x2020.193\x204\x2014.993\x204\x2010a8\x208\x200\x200\x201\x2016\x200\x22/><circle\x20cx=\x2212\x22\x20cy=\x2210\x22\x20r=\x223\x22/>\x27,\x0a\x20\x20\x20\x20\x27triangle-alert\x27:\x20\x27<path\x20d=\x22m21.73\x2018-8-14a2\x202\x200\x200\x200-3.48\x200l-8\x2014A2\x202\x200\x200\x200\x204\x2021h16a2\x202\x200\x200\x200\x201.73-3\x22/><path\x20d=\x22M12\x209v4\x22/><path\x20d=\x22M12\x2017h.01\x22/>\x27,\x0a\x20\x20\x20\x20\x27circle-x\x27:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x2210\x22/><path\x20d=\x22m15\x209-6\x206\x22/><path\x20d=\x22m9\x209\x206\x206\x22/>\x27,\x0a\x20\x20\x20\x20sun:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x224\x22/><path\x20d=\x22M12\x202v2\x22/><path\x20d=\x22M12\x2020v2\x22/><path\x20d=\x22m4.93\x204.93\x201.41\x201.41\x22/><path\x20d=\x22m17.66\x2017.66\x201.41\x201.41\x22/><path\x20d=\x22M2\x2012h2\x22/><path\x20d=\x22M20\x2012h2\x22/><path\x20d=\x22m6.34\x2017.66-1.41\x201.41\x22/><path\x20d=\x22m19.07\x204.93-1.41\x201.41\x22/>\x27,\x0a\x20\x20\x20\x20moon:\x20\x27<path\x20d=\x22M20.985\x2012.486a9\x209\x200\x201\x201-9.473-9.472c.405-.022.617.46.402.803a6\x206\x200\x200\x200\x208.268\x208.268c.344-.215.825-.004.803.401\x22/>\x27,\x0a\x20\x20\x20\x20server:\x20\x27<rect\x20width=\x2220\x22\x20height=\x228\x22\x20x=\x222\x22\x20y=\x222\x22\x20rx=\x222\x22\x20ry=\x222\x22/><rect\x20width=\x2220\x22\x20height=\x228\x22\x20x=\x222\x22\x20y=\x2214\x22\x20rx=\x222\x22\x20ry=\x222\x22/><line\x20x1=\x226\x22\x20x2=\x226.01\x22\x20y1=\x226\x22\x20y2=\x226\x22/><line\x20x1=\x226\x22\x20x2=\x226.01\x22\x20y1=\x2218\x22\x20y2=\x2218\x22/>\x27,\x0a\x20\x20\x20\x20cpu:\x20\x27<path\x20d=\x22M12\x2020v2\x22/><path\x20d=\x22M12\x202v2\x22/><path\x20d=\x22M17\x2020v2\x22/><path\x20d=\x22M17\x202v2\x22/><path\x20d=\x22M2\x2012h2\x22/><path\x20d=\x22M2\x2017h2\x22/><path\x20d=\x22M2\x207h2\x22/><path\x20d=\x22M20\x2012h2\x22/><path\x20d=\x22M20\x2017h2\x22/><path\x20d=\x22M20\x207h2\x22/><path\x20d=\x22M7\x2020v2\x22/><path\x20d=\x22M7\x202v2\x22/><rect\x20x=\x224\x22\x20y=\x224\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20rx=\x222\x22/><rect\x20x=\x228\x22\x20y=\x228\x22\x20width=\x228\x22\x20height=\x228\x22\x20rx=\x221\x22/>\x27,\x0a\x20\x20\x20\x20\x27chevron-right\x27:\x20\x27<path\x20d=\x22m9\x2018\x206-6-6-6\x22/>\x27,\x0a\x20\x20\x20\x20plus:\x20\x27<path\x20d=\x22M5\x2012h14\x22/><path\x20d=\x22M12\x205v14\x22/>\x27,\x0a\x20\x20\x20\x20info:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x2210\x22/><path\x20d=\x22M12\x2016v-4\x22/><path\x20d=\x22M12\x208h.01\x22/>\x27,\x0a\x20\x20\x20\x20maximize:\x20\x27<path\x20d=\x22M8\x203H5a2\x202\x200\x200\x200-2\x202v3\x22/><path\x20d=\x22M21\x208V5a2\x202\x200\x200\x200-2-2h-3\x22/><path\x20d=\x22M3\x2016v3a2\x202\x200\x200\x200\x202\x202h3\x22/><path\x20d=\x22M16\x2021h3a2\x202\x200\x200\x200\x202-2v-3\x22/>\x27,\x0a\x20\x20\x20\x20minimize:\x20\x27<path\x20d=\x22M8\x203v3a2\x202\x200\x200\x201-2\x202H3\x22/><path\x20d=\x22M21\x208h-3a2\x202\x200\x200\x201-2-2V3\x22/><path\x20d=\x22M3\x2016h3a2\x202\x200\x200\x201\x202\x202v3\x22/><path\x20d=\x22M16\x2021v-3a2\x202\x200\x200\x201\x202-2h3\x22/>\x27,\x0a\x20\x20\x20\x20\x27git-branch\x27:\x20\x27<line\x20x1=\x226\x22\x20x2=\x226\x22\x20y1=\x223\x22\x20y2=\x2215\x22/><circle\x20cx=\x2218\x22\x20cy=\x226\x22\x20r=\x223\x22/><circle\x20cx=\x226\x22\x20cy=\x2218\x22\x20r=\x223\x22/><path\x20d=\x22M18\x209a9\x209\x200\x200\x201-9\x209\x22/>\x27,\x0a\x20\x20};\x0a\x20\x20function\x20icon(name,\x20size)\x20{\x0a\x20\x20\x20\x20return\x20\x27<svg\x20class=\x22ico\x22\x20width=\x22\x27\x20+\x20(size\x20||\x2016)\x20+\x20\x27\x22\x20height=\x22\x27\x20+\x20(size\x20||\x2016)\x20+\x20\x27\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20aria-hidden=\x22true\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20ICONS[name]\x20+\x20\x27</svg>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20品牌标识(回复消息头像)\x0a\x20\x20var\x20BRAND_LOGO\x20=\x0a\x20\x20\x20\x20\x27<svg\x20class=\x22brand-logo\x22\x20viewBox=\x220\x200\x20297.13\x20208.05\x22\x20fill=\x22currentColor\x22\x20aria-hidden=\x22true\x22>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M70.34,207.88A70.35,70.35,0,0,1,43,72.73a18.87,18.87,0,0,1,14.7,34.76,32.61,32.61,0,0,0,12.68,62.65,18.87,18.87,0,0,1,0,37.74Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M73,207.88a18.87,18.87,0,0,1,0-37.74A32.46,32.46,0,0,0,95.71,161,18.86,18.86,0,1,1,122,188.06,70,70,0,0,1,73,207.88Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M226.06,207.79H88.83a18.87,18.87,0,0,1,0-37.73H226.06a18.87,18.87,0,1,1,0,37.73Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M84.67,205.93c3.92,0,7.21.18,10.44-2.39,14.57-11.6,33.58-26.78,52-41.46,14.37-11.47,28.4-22.67,39.76-31.72,1-.81,2-1.61,3.07-2.42a94.54,94.54,0,0,0,12.19-10.7c14.32-15.81,20.46-34.4,18.25-55.25a68.71,68.71,0,0,0-21.44-43C184,5.07,166.1-1.26,145.83.21A68.78,68.78,0,0,0,99.59,22.68,69.66,69.66,0,0,0,84,50a17.92,17.92,0,0,0-.93,2.85,70.37,70.37,0,0,0,8.18,52.71A18.44,18.44,0,0,0,122.8,86.43,33.29,33.29,0,0,1,118,69.2q0-1,.06-2a2.45,2.45,0,0,1,0-.27c0-.47.07-.94.12-1.4,0-.24.05-.47.08-.7s0-.23,0-.34a33.27,33.27,0,0,1,29.09-27.73A33.67,33.67,0,0,1,173,44.94,32.45,32.45,0,0,1,184.15,68.7a31.58,31.58,0,0,1-9.54,24.14,74.83,74.83,0,0,1-6,5.15c-1,.79-2,1.61-3,2.44l-23.46,19.79-27,22.73c-4.41,3.72-11.89,9.9-19.81,16.45-8.35,6.9-17,14-21.76,18.08\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M184.75,207.74H89.19c-11,0-20-9.13-19.29-20.08a18.93,18.93,0,0,1,18.89-17.77h95.56A19.19,19.19,0,0,1,203.64,190,18.93,18.93,0,0,1,184.75,207.74Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x2237.34\x22\x20stroke-linejoin=\x22round\x22\x20stroke-linecap=\x22round\x22\x20d=\x22M191.29,102.63a50.94,50.94,0,1,1,36.23,86.75\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27</svg>\x27;\x0a\x0a\x20\x20//\x20----------\x20主题:默认白天,手动切换后记忆\x20----------\x0a\x20\x20var\x20THEME_KEY\x20=\x20\x27zen-aiwith:theme\x27;\x0a\x20\x20function\x20savedTheme()\x20{\x0a\x20\x20\x20\x20try\x20{\x20return\x20localStorage.getItem(THEME_KEY);\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20applyTheme(theme)\x20{\x0a\x20\x20\x20\x20document.documentElement.setAttribute(\x27data-theme\x27,\x20theme);\x0a\x20\x20\x20\x20var\x20button\x20=\x20$(\x27themeBtn\x27);\x0a\x20\x20\x20\x20//\x20白天显示月亮(点击转黑),黑夜显示太阳(点击转白)\x0a\x20\x20\x20\x20button.innerHTML\x20=\x20theme\x20===\x20\x27dark\x27\x20?\x20icon(\x27sun\x27,\x2016)\x20:\x20icon(\x27moon\x27,\x2016);\x0a\x20\x20\x20\x20button.setAttribute(\x27data-tip\x27,\x20theme\x20===\x20\x27dark\x27\x20?\x20\x27切换到白天模式\x27\x20:\x20\x27切换到黑夜模式\x27);\x0a\x20\x20}\x0a\x20\x20$(\x27themeBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20var\x20next\x20=\x20document.documentElement.getAttribute(\x27data-theme\x27)\x20===\x20\x27dark\x27\x20?\x20\x27light\x27\x20:\x20\x27dark\x27;\x0a\x20\x20\x20\x20try\x20{\x20localStorage.setItem(THEME_KEY,\x20next);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20applyTheme(next);\x0a\x20\x20});\x0a\x20\x20applyTheme(savedTheme()\x20===\x20\x27dark\x27\x20?\x20\x27dark\x27\x20:\x20\x27light\x27);\x0a\x0a\x20\x20//\x20----------\x20工具\x20----------\x0a\x20\x20//\x20/status\x20静态缓存(模块常量,仅内存不落\x20localStorage):models/agents/commands/mcp\x20等准静态配置\x0a\x20\x20//\x20页面生命周期内只调一次接口:优先复用宿主页\x20widget\x20挂在\x20window\x20的请求\x20Promise(同源),\x0a\x20\x20//\x20独立面板(无父级)或父级未就绪时回落自取;配置热更靠刷新页面。\x0a\x20\x20//\x20断线重连对账(running\x20实时态)不走此缓存。\x0a\x20\x20var\x20STATUS_CACHE\x20=\x20null;\x0a\x20\x20function\x20loadStatus()\x20{\x0a\x20\x20\x20\x20if\x20(STATUS_CACHE)\x20{\x20return\x20Promise.resolve(STATUS_CACHE);\x20}\x0a\x20\x20\x20\x20if\x20(window.parent\x20&&\x20window.parent\x20!==\x20window)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20shared\x20=\x20window.parent.__zenAiWithStatusPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(shared)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20shared.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20宿主请求失败时其\x20Promise\x20resolve\x20undefined(widget\x20内部已吞异常),回落自取\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(own)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20own;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20own;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20payload;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20跨域父级,回落自取\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20payload;\x0a\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20function\x20api(method,\x20path,\x20body)\x20{\x0a\x20\x20\x20\x20var\x20headers\x20=\x20{};\x0a\x20\x20\x20\x20if\x20(body)\x20{\x20headers[\x27Content-Type\x27]\x20=\x20\x27application/json\x27;\x20}\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(token)\x20{\x20headers.Token\x20=\x20token;\x20}\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api\x27\x20+\x20path,\x20{\x0a\x20\x20\x20\x20\x20\x20method:\x20method,\x0a\x20\x20\x20\x20\x20\x20headers:\x20headers,\x0a\x20\x20\x20\x20\x20\x20body:\x20body\x20?\x20JSON.stringify(body)\x20:\x20undefined,\x0a\x20\x20\x20\x20}).then(function\x20(response)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20response.json().catch(function\x20()\x20{\x20return\x20{};\x20}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!response.ok\x20||\x20payload.ok\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20error\x20=\x20new\x20Error(payload.message\x20||\x20(\x27HTTP\x20\x27\x20+\x20response.status));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.status\x20=\x20response.status;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20宿主页上下文:面板\x20iframe\x20与宿主页同源,发送时实时读取当前页路由(多标签各读各的,天然正确)。\x0a\x20\x20//\x20有\x20hash\x20用\x20hash(zen\x20为\x20hash\x20路由),否则退回\x20pathname;不含\x20origin/search。读不到则不注入。\x0a\x20\x20function\x20hostPageContext()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.parent\x20===\x20window)\x20{\x20return\x20null;\x20}\x20\x20\x20//\x20用户直接打开\x20panel.html:不注入\x0a\x20\x20\x20\x20\x20\x20var\x20loc\x20=\x20window.parent.location;\x0a\x20\x20\x20\x20\x20\x20var\x20hash\x20=\x20loc.hash;\x0a\x20\x20\x20\x20\x20\x20var\x20route\x20=\x20(hash\x20&&\x20hash\x20!==\x20\x27#\x27)\x20?\x20hash\x20:\x20loc.pathname;\x0a\x20\x20\x20\x20\x20\x20var\x20title\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20title\x20=\x20String(window.parent.document.title\x20||\x20\x27\x27);\x20}\x20catch\x20(e2)\x20{\x20title\x20=\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20route\x20=\x20String(route\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!route)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20route:\x20route,\x20title:\x20title\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20剥离注入的页面上下文块:只删「文末\x20+\x20首行为『当前\x20dev\x20页面:』」的那一个,避免误删用户自贴的同名标签\x0a\x20\x20function\x20stripPageContext(text)\x20{\x0a\x20\x20\x20\x20return\x20String(text\x20==\x20null\x20?\x20\x27\x27\x20:\x20text)\x0a\x20\x20\x20\x20\x20\x20.replace(/\x5cn*\x5cs*<aiwith-page-context>\x5cs*\x5cn\x5cs*当前\x20dev\x20页面:[\x5cs\x5cS]*?<\x5c/aiwith-page-context>\x5cs*$/,\x20\x27\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20状态/错误提示显示在消息区内(而非输入框下方)\x0a\x20\x20function\x20renderNotice()\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20messageList.querySelector(\x27.chat-notice\x27);\x0a\x20\x20\x20\x20if\x20(!STATE.notice\x20||\x20!STATE.notice.text)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(el)\x20{\x20el.remove();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!el)\x20{\x0a\x20\x20\x20\x20\x20\x20el\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(el);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(el);\x20//\x20始终移到末尾,跟随最新内容\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20el.className\x20=\x20\x27sys-line\x20chat-notice\x27\x20+\x20(STATE.notice.error\x20?\x20\x27\x20error\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20el.textContent\x20=\x20STATE.notice.text;\x0a\x20\x20\x20\x20scrollBottom();\x0a\x20\x20}\x0a\x20\x20function\x20setStatus(text)\x20{\x0a\x20\x20\x20\x20STATE.notice\x20=\x20text\x20?\x20{\x20text:\x20text,\x20error:\x20false\x20}\x20:\x20null;\x0a\x20\x20\x20\x20renderNotice();\x0a\x20\x20}\x0a\x20\x20function\x20setError(text)\x20{\x0a\x20\x20\x20\x20STATE.notice\x20=\x20text\x20?\x20{\x20text:\x20text,\x20error:\x20true\x20}\x20:\x20null;\x0a\x20\x20\x20\x20renderNotice();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20上下文用量:取最后一条\x20assistant\x20消息的\x20tokens(input\x20+\x20cache\x20即当前上下文占用)\x20----------\x0a\x20\x20function\x20fmtTokens(count)\x20{\x0a\x20\x20\x20\x20if\x20(count\x20>=\x201000000)\x20{\x20return\x20(count\x20/\x201000000).toFixed(1)\x20+\x20\x27M\x27;\x20}\x0a\x20\x20\x20\x20return\x20count\x20>=\x201000\x20?\x20(count\x20/\x201000).toFixed(1)\x20+\x20\x27k\x27\x20:\x20String(count);\x0a\x20\x20}\x0a\x20\x20function\x20contextFromMessages(messages)\x20{\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x20messages.length\x20-\x201;\x20i\x20>=\x200;\x20i--)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20message\x20=\x20messages[i];\x0a\x20\x20\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27assistant\x27\x20&&\x20message.tokens)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20cache\x20=\x20message.tokens.cache\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20(message.tokens.input\x20||\x200)\x20+\x20(cache.read\x20||\x200)\x20+\x20(cache.write\x20||\x200);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20renderCtx(used)\x20{\x0a\x20\x20\x20\x20if\x20(!used)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20无上下文数据:不显示任何内容(含占位符与分隔符)\x0a\x20\x20\x20\x20\x20\x20ctxFill.style.width\x20=\x20\x270\x27;\x0a\x20\x20\x20\x20\x20\x20ctxText.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20limit\x20=\x20STATE.ctxLimit;\x0a\x20\x20\x20\x20var\x20percent\x20=\x20limit\x20?\x20Math.min(100,\x20(used\x20/\x20limit)\x20*\x20100)\x20:\x200;\x0a\x20\x20\x20\x20ctxFill.style.width\x20=\x20percent.toFixed(1)\x20+\x20\x27%\x27;\x0a\x20\x20\x20\x20ctxFill.className\x20=\x20\x27ctx-fill\x27\x20+\x20(percent\x20>=\x2085\x20?\x20\x27\x20danger\x27\x20:\x20percent\x20>=\x2060\x20?\x20\x27\x20warn\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20ctxText.innerHTML\x20=\x20\x27<b>\x27\x20+\x20fmtTokens(used)\x20+\x20\x27</b>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(limit\x20?\x20\x27\x20/\x20\x27\x20+\x20fmtTokens(limit)\x20+\x20\x27\x20·\x20\x27\x20+\x20percent.toFixed(0)\x20+\x20\x27%\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.cost\x20>\x200\x20?\x20\x27\x20·\x20$\x27\x20+\x20STATE.cost.toFixed(3)\x20:\x20\x27\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20距底部小于阈值视为「贴底」,可重启自动滚动。阈值取小:\x0a\x20\x20//\x20用户一旦明显上滚就停跟随,回到底部才恢复(与常见\x20IM\x20交互一致)\x0a\x20\x20var\x20STICK_THRESHOLD\x20=\x2024;\x0a\x20\x20function\x20nearBottom()\x20{\x0a\x20\x20\x20\x20return\x20messageList.scrollHeight\x20-\x20messageList.scrollTop\x20-\x20messageList.clientHeight\x20<=\x20STICK_THRESHOLD;\x0a\x20\x20}\x0a\x20\x20function\x20scrollBottom(force)\x20{\x0a\x20\x20\x20\x20if\x20(force\x20||\x20STATE.stickBottom)\x20{\x0a\x20\x20\x20\x20\x20\x20messageList.scrollTop\x20=\x20messageList.scrollHeight;\x0a\x20\x20\x20\x20\x20\x20STATE.stickBottom\x20=\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20escapeHtml(text)\x20{\x0a\x20\x20\x20\x20return\x20String(text).replace(/&/g,\x20\x27&\x27).replace(/</g,\x20\x27<\x27)\x0a\x20\x20\x20\x20\x20\x20.replace(/>/g,\x20\x27>\x27).replace(/\x22/g,\x20\x27"\x27).replace(/\x27/g,\x20\x27'\x27);\x0a\x20\x20}\x0a\x20\x20//\x20内容是否「有正文」:SDK\x20在\x20text/reasoning\x20的\x20*.started\x20阶段会先建\x20text\x20为空的\x20part\x0a\x20\x20//\x20再增量填充(见\x20@opencode/client\x20的\x20session.text/reasoning.started),provider\x20无输出时\x0a\x20\x20//\x20空\x20part\x20会留存;渲染一律以「有正文」为准,避免出现空卡\x20/\x20空行(与\x20TUI\x20一致)。\x0a\x20\x20function\x20hasText(value)\x20{\x0a\x20\x20\x20\x20return\x20String(value\x20==\x20null\x20?\x20\x27\x27\x20:\x20value).trim().length\x20>\x200;\x0a\x20\x20}\x0a\x20\x20//\x20轻量\x20markdown:围栏代码块\x20/\x20行内码\x20/\x20加粗\x20/\x20标题\x20/\x20链接\x20/\x20列表\x20/\x20换行\x0a\x20\x20function\x20renderMarkdown(text)\x20{\x0a\x20\x20\x20\x20var\x20blocks\x20=\x20[];\x0a\x20\x20\x20\x20var\x20source\x20=\x20String(text\x20==\x20null\x20?\x20\x27\x27\x20:\x20text).replace(/```([\x5cw-]*)\x5cn?([\x5cs\x5cS]*?)```/g,\x20function\x20(all,\x20lang,\x20code)\x20{\x0a\x20\x20\x20\x20\x20\x20blocks.push(\x27<pre><code\x20data-lang=\x22\x27\x20+\x20escapeHtml(lang)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(code.replace(/\x5cn$/,\x20\x27\x27))\x20+\x20\x27</code></pre>\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x5cu0000BLOCK\x27\x20+\x20(blocks.length\x20-\x201)\x20+\x20\x27\x5cu0000\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20var\x20html\x20=\x20escapeHtml(source);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/`([^`\x5cn]+)`/g,\x20\x27<code>$1</code>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5c*\x5c*([^*\x5cn]+)\x5c*\x5c*/g,\x20\x27<strong>$1</strong>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/^###\x20(.+)$/gm,\x20\x27<h3>$1</h3>\x27).replace(/^##\x20(.+)$/gm,\x20\x27<h2>$1</h2>\x27).replace(/^#\x20(.+)$/gm,\x20\x27<h1>$1</h1>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5c[([^\x5c]]+)\x5c]\x5c((https?:\x5c/\x5c/[^)\x5cs]+)\x5c)/g,\x20\x27<a\x20href=\x22$2\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>$1</a>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/^\x5cs*[-*]\x20(.+)$/gm,\x20\x27<li>$1</li>\x27).replace(/(<li>[\x5cs\x5cS]*?<\x5c/li>)(?!\x5cs*<li>)/g,\x20\x27<ul>$1</ul>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5cn/g,\x20\x27<br>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5cu0000BLOCK(\x5cd+)\x5cu0000/g,\x20function\x20(all,\x20index)\x20{\x20return\x20blocks[Number(index)];\x20});\x0a\x20\x20\x20\x20return\x20html;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20复制文本:优先异步\x20clipboard\x20API(被拒时降级),再退化到\x20execCommand(iframe\x20内非安全上下文等)\x0a\x20\x20function\x20fallbackCopy(text)\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20document.createElement(\x27textarea\x27);\x0a\x20\x20\x20\x20box.value\x20=\x20text;\x20box.style.position\x20=\x20\x27fixed\x27;\x20box.style.opacity\x20=\x20\x270\x27;\x0a\x20\x20\x20\x20document.body.appendChild(box);\x20box.select();\x0a\x20\x20\x20\x20try\x20{\x20document.execCommand(\x27copy\x27);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20box.remove();\x0a\x20\x20}\x0a\x20\x20function\x20copyText(value)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(value\x20==\x20null\x20?\x20\x27\x27\x20:\x20value);\x0a\x20\x20\x20\x20if\x20(navigator.clipboard\x20&&\x20navigator.clipboard.writeText)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20navigator.clipboard.writeText(text);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(pending\x20&&\x20pending.catch)\x20{\x20pending.catch(function\x20()\x20{\x20fallbackCopy(text);\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20同步失败\x20→\x20降级\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fallbackCopy(text);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20代码块增强:语法高亮(hljs\x20懒生效)+\x20复制按钮。已处理节点打\x20data-hl\x20防止刷新时重复高亮;\x0a\x20\x20//\x20语言未知时清掉\x20language-\x20类交给\x20hljs\x20自动检测(未注册语言直接指定会静默不高亮)\x0a\x20\x20function\x20enhanceCode(scope)\x20{\x0a\x20\x20\x20\x20if\x20(!window.hljs\x20||\x20typeof\x20window.hljs.highlightElement\x20!==\x20\x27function\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20(scope\x20||\x20messageList).querySelectorAll(\x27pre\x20>\x20code:not([data-hl])\x27).forEach(function\x20(code)\x20{\x0a\x20\x20\x20\x20\x20\x20code.setAttribute(\x27data-hl\x27,\x20\x271\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20lang\x20=\x20(code.getAttribute(\x27data-lang\x27)\x20||\x20\x27\x27).trim().toLowerCase();\x0a\x20\x20\x20\x20\x20\x20var\x20known\x20=\x20lang\x20&&\x20typeof\x20window.hljs.getLanguage\x20===\x20\x27function\x27\x20&&\x20window.hljs.getLanguage(lang);\x0a\x20\x20\x20\x20\x20\x20code.className\x20=\x20known\x20?\x20\x27language-\x27\x20+\x20lang\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.hljs.highlightElement(code);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20pre\x20=\x20code.parentElement;\x0a\x20\x20\x20\x20\x20\x20if\x20(pre\x20&&\x20!pre.querySelector(\x27.code-copy\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20btn\x20=\x20document.createElement(\x27button\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.className\x20=\x20\x27code-copy\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.type\x20=\x20\x27button\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.textContent\x20=\x20\x27复制\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pre.appendChild(btn);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(pre\x20&&\x20known\x20&&\x20!pre.querySelector(\x27.code-lang\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tag\x20=\x20document.createElement(\x27span\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20tag.className\x20=\x20\x27code-lang\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20tag.textContent\x20=\x20lang;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pre.appendChild(tag);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20可点文件\x20chip:点击经\x20CustomEvent\x20唤起查看器;data-file\x20原样透传(file://\x20URI\x20或相对路径,桥接层统一归一)\x0a\x20\x20function\x20fileChip(target)\x20{\x0a\x20\x20\x20\x20var\x20raw\x20=\x20String(target\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20if\x20(!raw)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20label\x20=\x20raw.replace(/^file:\x5c/\x5c//,\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20name\x20=\x20label.slice(label.lastIndexOf(\x27/\x27)\x20+\x201)\x20||\x20label;\x0a\x20\x20\x20\x20return\x20\x27<button\x20type=\x22button\x22\x20class=\x22code-file\x22\x20data-file=\x22\x27\x20+\x20escapeHtml(raw)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(label)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27<span\x20class=\x22cf-name\x22>\x27\x20+\x20escapeHtml(name)\x20+\x20\x27</span></button>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20消息渲染\x20----------\x0a\x20\x20function\x20toolSummary(input)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20parsed\x20=\x20typeof\x20input\x20===\x20\x27string\x27\x20?\x20JSON.parse(input)\x20:\x20input;\x0a\x20\x20\x20\x20\x20\x20if\x20(!parsed)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20keys\x20=\x20Object.keys(parsed);\x0a\x20\x20\x20\x20\x20\x20if\x20(!keys.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20keys.slice(0,\x204).map(function\x20(key)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20String(parsed[key]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20key\x20+\x20\x27:\x20\x27\x20+\x20(value.length\x20>\x20120\x20?\x20value.slice(0,\x20120)\x20+\x20\x27…\x27\x20:\x20value);\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x5cn\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20String(input\x20||\x20\x27\x27).slice(0,\x20160);\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20待办(todowrite/todoread\x20工具输出)\x0a\x20\x20function\x20renderTodos(part,\x20input)\x20{\x0a\x20\x20\x20\x20if\x20(!/todo/i.test(part.name\x20||\x20\x27\x27))\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20todos\x20=\x20(input\x20&&\x20(input.todos\x20||\x20input.items))\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!Array.isArray(todos)\x20||\x20!todos.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20done\x20=\x20todos.filter(function\x20(t)\x20{\x20return\x20(t.status\x20||\x20t.state)\x20===\x20\x27completed\x27\x20||\x20t.done;\x20}).length;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22fold-body\x22><div\x20class=\x22tool-chip\x22\x20style=\x22margin-bottom:4px\x22>待办事项\x20·\x20已完成\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20done\x20+\x20\x27\x20/\x20\x27\x20+\x20todos.length\x20+\x20\x27</div><div\x20class=\x22todo-list\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20todos.map(function\x20(t)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20isDone\x20=\x20(t.status\x20||\x20t.state)\x20===\x20\x27completed\x27\x20||\x20t.done;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22todo-item\x27\x20+\x20(isDone\x20?\x20\x27\x20done\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22><span\x20class=\x22td-box\x22>\x27\x20+\x20(isDone\x20?\x20\x27✓\x27\x20:\x20\x27○\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</span><span>\x27\x20+\x20escapeHtml(t.content\x20||\x20t.text\x20||\x20t.title\x20||\x20\x27\x27)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20工具调用合并卡:同一条消息里的工具调用收成一张卡,避免刷屏\x0a\x20\x20function\x20renderToolList(parts)\x20{\x0a\x20\x20\x20\x20if\x20(!parts.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20anyRunning\x20=\x20parts.some(function\x20(part)\x20{\x20return\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27running\x27\x20||\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27streaming\x27;\x20});\x0a\x20\x20\x20\x20var\x20anyError\x20=\x20parts.some(function\x20(part)\x20{\x20return\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27error\x27;\x20});\x0a\x20\x20\x20\x20var\x20dotClass\x20=\x20anyError\x20?\x20\x27error\x27\x20:\x20anyRunning\x20?\x20\x27running\x27\x20:\x20\x27completed\x27;\x0a\x20\x20\x20\x20var\x20skipped\x20=\x20parts.filter(function\x20(part)\x20{\x20return\x20part.executed\x20===\x20false;\x20}).length;\x0a\x20\x20\x20\x20var\x20items\x20=\x20parts.map(function\x20(part)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20status\x20=\x20(part.state\x20&&\x20part.state.status)\x20||\x20\x27running\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20itemDot\x20=\x20status\x20===\x20\x27completed\x27\x20?\x20\x27completed\x27\x20:\x20status\x20===\x20\x27error\x27\x20?\x20\x27error\x27\x20:\x20\x27running\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20part.state\x20&&\x20part.state.input;\x0a\x20\x20\x20\x20\x20\x20var\x20error\x20=\x20part.state\x20&&\x20part.state.error;\x0a\x20\x20\x20\x20\x20\x20var\x20summary\x20=\x20toolSummary(input);\x0a\x20\x20\x20\x20\x20\x20var\x20todoHtml\x20=\x20renderTodos(part,\x20input);\x0a\x20\x20\x20\x20\x20\x20var\x20content\x20=\x20(part.state\x20&&\x20part.state.content)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20outHtml\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20content.forEach(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!c)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(c.type\x20===\x20\x27text\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hasText(c.text))\x20{\x20outHtml\x20+=\x20\x27<div\x20class=\x22tool-output\x22>\x27\x20+\x20escapeHtml(c.text)\x20+\x20\x27</div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20if\x20(c.type\x20===\x20\x27file\x27)\x20{\x20outHtml\x20+=\x20fileChip(c.uri\x20||\x20c.name);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22tool-item\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22tool-line\x22><span\x20class=\x22tool-dot\x20\x27\x20+\x20itemDot\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tool-name\x22>\x27\x20+\x20escapeHtml(part.name\x20||\x20\x27tool\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(part.executed\x20===\x20false\x20?\x20\x27<span\x20class=\x22tool-skip\x22>未执行</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(error\x20?\x20\x27<div\x20class=\x22tool-error\x22>\x27\x20+\x20icon(\x27circle-x\x27,\x2012)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(error.message\x20||\x20String(error))\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20todoHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(!todoHtml\x20&&\x20summary\x20?\x20\x27<div\x20class=\x22tool-input\x22>\x27\x20+\x20escapeHtml(summary)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20outHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22><span\x20class=\x22tool-chip\x22><span\x20class=\x22tool-dot\x20\x27\x20+\x20dotClass\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27工具调用\x20·\x20\x27\x20+\x20parts.length\x20+\x20(skipped\x20?\x20\x27(\x27\x20+\x20skipped\x20+\x20\x27\x20个未执行)\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27</span></div><div\x20class=\x22fold-body\x20tool-list\x22>\x27\x20+\x20items\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderReasoning(text)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22>\x27\x20+\x20icon(\x27lightbulb\x27,\x2013)\x20+\x20\x27\x20思考过程</div><div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(text)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderFileChips(files)\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20files\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!list.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-grid\x22\x20style=\x22justify-content:flex-end\x22>\x27\x20+\x20list.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20name\x20=\x20f.name\x20||\x20(f.source\x20&&\x20f.source.uri)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22tool-file-ref\x22>\x27\x20+\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(name)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20OpenCode\x20注入的合成提示(切模式/自动续跑等,text\x20常为\x20<system-reminder>…</system-reminder>):\x0a\x20\x20//\x20模式切换类提醒整条不展示——面板的模式指示已动态反映\x20build/plan(TUI\x20同样不显示这类协议消息);\x0a\x20\x20//\x20其余默认折叠成一行,避免把原始\x20XML(含绝对路径、长指令)直接铺进对话流。\x0a\x20\x20function\x20renderSyntheticNote(text)\x20{\x0a\x20\x20\x20\x20var\x20synthText\x20=\x20String(text\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20wrapped\x20=\x20/<system-reminder>([\x5cs\x5cS]*?)<\x5c/system-reminder>/.exec(synthText);\x0a\x20\x20\x20\x20var\x20inner\x20=\x20(wrapped\x20?\x20wrapped[1]\x20:\x20synthText).trim();\x0a\x20\x20\x20\x20if\x20(!inner)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20if\x20(/NO\x20LONGER\x20in\x20Plan\x20mode/i.test(inner)\x20||\x20/You\x20are\x20in\x20Plan\x20mode/i.test(inner))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!wrapped\x20&&\x20inner.length\x20<=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(inner)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20\x27<details\x20class=\x22fold\x20sys-fold\x22><summary>\x27\x20+\x20icon(\x27info\x27,\x2012)\x20+\x20\x27\x20系统提示</summary>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(inner)\x20+\x20\x27</div></details>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderMessage(message)\x20{\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27user\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20兼容以\x20user\x20形态落库的系统提醒(与\x20synthetic\x20同一渲染口径,不铺原始\x20XML)\x0a\x20\x20\x20\x20\x20\x20if\x20(/^\x5cs*<system-reminder>/.test(String(message.text\x20||\x20\x27\x27)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20renderSyntheticNote(message.text);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20images\x20=\x20(message.metadata\x20&&\x20message.metadata.images)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20attachHtml\x20=\x20images.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27<div\x20class=\x22attach-grid\x22>\x27\x20+\x20images.map(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(url)\x20+\x20\x27\x22\x20alt=\x22\x22\x20loading=\x22lazy\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20attachHtml\x20+=\x20renderFileChips(message.files);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20user\x22\x20data-msgid=\x22\x27\x20+\x20escapeHtml(message.id\x20||\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22点击可回退到此处\x22><div\x20class=\x22bubble\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20attachHtml\x20+\x20renderMarkdown(stripPageContext(message.text))\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27assistant\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20content\x20=\x20message.content\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20//\x20合并同类内容:思考过程\x20/\x20工具调用各自收成一张折叠卡,避免每\x20step\x20一张造成刷屏\x0a\x20\x20\x20\x20\x20\x20//\x20只收「有正文」的\x20part:SDK\x20会先建空\x20part\x20再填充,provider\x20无输出时留空,不过滤会渲染空卡\x20/\x20空块\x0a\x20\x20\x20\x20\x20\x20var\x20reasoningText\x20=\x20content.filter(function\x20(part)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20part.type\x20===\x20\x27reasoning\x27\x20&&\x20hasText(part.text);\x0a\x20\x20\x20\x20\x20\x20}).map(function\x20(part)\x20{\x20return\x20part.text;\x20}).join(\x27\x5cn\x5cn\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20toolParts\x20=\x20content.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27tool\x27;\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20textParts\x20=\x20content.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27text\x27\x20&&\x20hasText(part.text);\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20parts\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(reasoningText)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20parts\x20+=\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22>\x27\x20+\x20icon(\x27lightbulb\x27,\x2013)\x20+\x20\x27\x20思考过程\x20·\x20\x27\x20+\x20reasoningText.length\x20+\x20\x27\x20字</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(reasoningText)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20parts\x20+=\x20renderToolList(toolParts);\x0a\x20\x20\x20\x20\x20\x20parts\x20+=\x20textParts.map(function\x20(part)\x20{\x20return\x20\x27<div>\x27\x20+\x20renderMarkdown(part.text)\x20+\x20\x27</div>\x27;\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(message.error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20parts\x20+=\x20\x27<div\x20class=\x22err-text\x22>\x27\x20+\x20icon(\x27triangle-alert\x27,\x2013)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(message.error.message\x20||\x20String(message.error))\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20ai\x22><div\x20class=\x22avatar\x22>\x27\x20+\x20BRAND_LOGO\x20+\x20\x27</div><div\x20class=\x22bubble\x22>\x27\x20+\x20(parts\x20||\x20\x27<span\x20style=\x22color:var(--text-dim)\x22>…</span>\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27compaction\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20manual\x20=\x20message.reason\x20===\x20\x27manual\x27\x20?\x20\x27(手动)\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(message.status\x20===\x20\x27failed\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20errType\x20=\x20(message.error\x20&&\x20message.error.type)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20errMsg\x20=\x20(message.error\x20&&\x20(message.error.message\x20||\x20message.error.type))\x20||\x20\x27未知原因\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20「暂无可压缩内容」是正常结果(刚压缩过/没有新增对话),不算失败\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(errType\x20===\x20\x27compaction.unavailable\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27无需压缩\x27\x20+\x20manual\x20+\x20\x27:\x27\x20+\x20errMsg)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x20compaction-error\x22>\x27\x20+\x20icon(\x27triangle-alert\x27,\x2012)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(\x27压缩失败\x27\x20+\x20manual\x20+\x20\x27:\x27\x20+\x20errMsg)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(message.status\x20===\x20\x27running\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27正在压缩上下文…\x27\x20+\x20manual)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20summary\x20=\x20message.summary\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20metaText\x20=\x20summary\x20?\x20\x27摘要约\x20\x27\x20+\x20summary.length\x20+\x20\x27\x20字\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20message.cost\x20===\x20\x27number\x27\x20&&\x20message.cost\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20costText\x20=\x20String(Number(message.cost.toPrecision(2)));\x0a\x20\x20\x20\x20\x20\x20\x20\x20metaText\x20+=\x20(metaText\x20?\x20\x27\x20·\x20\x27\x20:\x20\x27\x27)\x20+\x20\x27$\x27\x20+\x20costText;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27上下文已压缩\x27\x20+\x20manual)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(summary\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27<details\x20class=\x22fold\x20compaction-summary\x22><summary>\x27\x20+\x20icon(\x27lightbulb\x27,\x2012)\x20+\x20\x27\x20压缩摘要\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(metaText\x20?\x20\x27\x20·\x20\x27\x20+\x20escapeHtml(metaText)\x20:\x20\x27\x27)\x20+\x20\x27</summary>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20renderMarkdown(summary)\x20+\x20\x27</div></details>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27shell\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20out\x20=\x20(message.output\x20&&\x20message.output.output)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20user\x22><div\x20class=\x22bubble\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderMarkdown(\x27!\x20\x27\x20+\x20message.command)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(out\x20?\x20\x27<div\x20class=\x22tool-output\x22>\x27\x20+\x20escapeHtml(out)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27agent-switched\x27\x20||\x20message.type\x20===\x20\x27model-switched\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20message.type\x20===\x20\x27location-switched\x27\x20||\x20message.type\x20===\x20\x27idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27skill\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20skillName\x20=\x20message.name\x20||\x20message.skill\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20skillName\x20?\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27加载技能\x20\x27\x20+\x20skillName)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27synthetic\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20renderSyntheticNote(message.text);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20hint\x20=\x20message.text\x20||\x20message.description\x20||\x20message.type\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(hint)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20var\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20function\x20refreshMessages()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20var\x20sid\x20=\x20STATE.sid;\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20sid\x20+\x20\x27/messages?order=desc&limit=200\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20desc\x20取「最新」200\x20条,再反转为时间顺序\x0a\x20\x20\x20\x20\x20\x20var\x20data\x20=\x20(payload.data\x20||\x20[]).slice().reverse();\x0a\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20renderCtx(contextFromMessages(data));\x0a\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20data.map(renderMessage).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20//\x20同会话刷新时保留已展开的折叠与滚动位置,避免流式期间被反复重置\x0a\x20\x20\x20\x20\x20\x20var\x20sameSession\x20=\x20renderedSid\x20===\x20sid;\x0a\x20\x20\x20\x20\x20\x20var\x20openFolds\x20=\x20sameSession\x20?\x20captureFolds(messageList)\x20:\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20prevTop\x20=\x20sameSession\x20?\x20messageList.scrollTop\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20messageList.innerHTML\x20=\x20html\x20||\x20\x27<div\x20class=\x22empty\x22><div\x20class=\x22big\x22>\x27\x20+\x20icon(\x27bot\x27,\x2044)\x20+\x20\x27</div>有什么需求您请说</div>\x27;\x0a\x20\x20\x20\x20\x20\x20restoreFolds(messageList,\x20openFolds);\x0a\x20\x20\x20\x20\x20\x20renderNotice();\x0a\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20sid;\x0a\x20\x20\x20\x20\x20\x20enhanceCode(messageList);\x0a\x20\x20\x20\x20\x20\x20//\x20用户正在阅读(已上滚、未贴底):保持原阅读位置;否则跟随到底部\x0a\x20\x20\x20\x20\x20\x20if\x20(sameSession\x20&&\x20!STATE.stickBottom)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20messageList.scrollTop\x20=\x20prevTop;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20scrollBottom(true);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(error.status\x20===\x20404)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20会话已不存在:用新会话替换当前标签\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/reset\x27,\x20{}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.tabs[index]\x20=\x20session.id;\x20delete\x20STATE.sessions[sid];\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x20STATE.tabs.push(session.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20applySession(session);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27消息加载失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20var\x20refreshTimer\x20=\x20null;\x0a\x20\x20function\x20scheduleRefresh()\x20{\x0a\x20\x20\x20\x20clearTimeout(refreshTimer);\x0a\x20\x20\x20\x20refreshTimer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20refreshMessages();\x0a\x20\x20\x20\x20\x20\x20refreshPermissions();\x0a\x20\x20\x20\x20},\x20350);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20流式增量:按\x20assistantMessageID\x20聚合到一个实时气泡\x0a\x20\x20function\x20onDelta(kind,\x20event)\x20{\x0a\x20\x20\x20\x20var\x20entry\x20=\x20STATE.live[event.assistantMessageID];\x0a\x20\x20\x20\x20if\x20(!entry)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20wrap\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20wrap.className\x20=\x20\x27msg\x20ai\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20avatar\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20avatar.className\x20=\x20\x27avatar\x27;\x0a\x20\x20\x20\x20\x20\x20avatar.innerHTML\x20=\x20BRAND_LOGO;\x0a\x20\x20\x20\x20\x20\x20var\x20bubble\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20bubble.className\x20=\x20\x27bubble\x27;\x0a\x20\x20\x20\x20\x20\x20wrap.appendChild(avatar);\x0a\x20\x20\x20\x20\x20\x20wrap.appendChild(bubble);\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(wrap);\x0a\x20\x20\x20\x20\x20\x20entry\x20=\x20STATE.live[event.assistantMessageID]\x20=\x20{\x20el:\x20bubble,\x20reasoning:\x20\x27\x27,\x20text:\x20\x27\x27\x20};\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20entry[kind]\x20+=\x20(event.delta\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20entry.el.innerHTML\x20=\x0a\x20\x20\x20\x20\x20\x20(entry.reasoning\x20&&\x20entry.reasoning.trim()\x20?\x20renderReasoning(entry.reasoning)\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div>\x27\x20+\x20renderMarkdown(entry.text)\x20+\x20\x27<span\x20class=\x22cursor\x22></span></div>\x27;\x0a\x20\x20\x20\x20if\x20(STATE.notice)\x20{\x20renderNotice();\x20}\x0a\x20\x20\x20\x20scrollBottom();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20权限审批\x20----------\x0a\x20\x20function\x20renderPermissions()\x20{\x0a\x20\x20\x20\x20permissionBar.style.display\x20=\x20STATE.permissions.length\x20?\x20\x27flex\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20permissionBar.innerHTML\x20=\x20STATE.permissions.map(function\x20(item,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22perm-card\x22\x20data-index=\x22\x27\x20+\x20index\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-title\x22>\x27\x20+\x20icon(\x27shield-alert\x27,\x2014)\x20+\x20\x27\x20请求授权:\x27\x20+\x20escapeHtml(item.action)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(item.message\x20?\x20\x27<div\x20class=\x22perm-msg\x22>\x27\x20+\x20escapeHtml(item.message)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-res\x22>\x27\x20+\x20escapeHtml((item.resources\x20||\x20[]).join(\x27\x5cn\x27))\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-actions\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22allow\x22\x20data-decision=\x22once\x22>允许一次</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22always\x22\x20data-decision=\x22always\x22>本次会话总是允许</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22reject\x22\x20data-decision=\x22reject\x22>拒绝</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20refreshPermissions()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/permissions\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.permissions\x20=\x20payload.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderPermissions();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20permissionBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-decision]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20card\x20=\x20button.closest(\x27.perm-card\x27);\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.permissions[Number(card.getAttribute(\x27data-index\x27))];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20button.disabled\x20=\x20true;\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/permissions/\x27\x20+\x20item.id\x20+\x20\x27/reply\x27,\x20{\x20decision:\x20button.getAttribute(\x27data-decision\x27)\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20STATE.permissions.splice(STATE.permissions.indexOf(item),\x201);\x20renderPermissions();\x20setStatus(\x27\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20button.disabled\x20=\x20false;\x20setStatus(\x27审批失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话元信息刷新(agent\x20/\x20model\x20/\x20revert)\x20----------\x0a\x20\x20function\x20updateSessionMeta(session)\x20{\x0a\x20\x20\x20\x20if\x20(!session)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(session.agent)\x20{\x20STATE.agent\x20=\x20session.agent;\x20}\x0a\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model);\x0a\x20\x20\x20\x20if\x20(matched)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20});\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20matched.contextLimit\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20STATE.revert\x20=\x20session.revert\x20||\x20null;\x0a\x20\x20\x20\x20STATE.cost\x20=\x20session.cost\x20||\x200;\x0a\x20\x20\x20\x20renderRevert();\x0a\x20\x20\x20\x20renderAgents();\x0a\x20\x20}\x0a\x20\x20function\x20refreshSessionState()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid).then(function\x20(p)\x20{\x20updateSessionMeta(p.data);\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20refreshRegistry()\x20{\x0a\x20\x20\x20\x20loadStatus().then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.commands\x20=\x20p.commands\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.agents\x20=\x20p.agents\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(!STATE.models.length)\x20{\x20STATE.models\x20=\x20p.models\x20||\x20[];\x20}\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.branch);\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20回退(撤销\x20/\x20重做)\x20----------\x0a\x20\x20function\x20renderRevert()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.revert\x20&&\x20STATE.revert.messageID)\x20{\x0a\x20\x20\x20\x20\x20\x20revertBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20revertBar.innerHTML\x20=\x20icon(\x27triangle-alert\x27,\x2013)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span>已回退到该消息,发送新消息即确认</span><button\x20id=\x22redoInline\x22>重做</button>\x27;\x0a\x20\x20\x20\x20\x20\x20$(\x27redoInline\x27).onclick\x20=\x20redo;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20revertBar.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20revertBar.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20lastUserMessageID()\x20{\x0a\x20\x20\x20\x20var\x20nodes\x20=\x20messageList.querySelectorAll(\x27.msg.user[data-msgid]\x27);\x0a\x20\x20\x20\x20return\x20nodes.length\x20?\x20nodes[nodes.length\x20-\x201].getAttribute(\x27data-msgid\x27)\x20:\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20stageRevert(messageID)\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.busy)\x20{\x20setStatus(\x27AI\x20处理中,无法回退\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!messageID)\x20{\x20setStatus(\x27没有可回退的消息\x27);\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/revert/stage\x27,\x20{\x20messageID:\x20messageID\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshSessionState();\x20setStatus(\x27已回退到该消息,发送新消息即确认\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27回退失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20}\x0a\x20\x20function\x20undo()\x20{\x0a\x20\x20\x20\x20var\x20id\x20=\x20lastUserMessageID();\x0a\x20\x20\x20\x20if\x20(!id)\x20{\x20setStatus(\x27没有可撤销的消息\x27);\x20return;\x20}\x0a\x20\x20\x20\x20stageRevert(id);\x0a\x20\x20}\x0a\x20\x20function\x20redo()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/revert/clear\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshSessionState();\x20setStatus(\x27已取消回退\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27重做失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20}\x0a\x20\x20$(\x27undoBtn\x27).addEventListener(\x27click\x27,\x20undo);\x0a\x20\x20$(\x27redoBtn\x27).addEventListener(\x27click\x27,\x20redo);\x0a\x20\x20messageList.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27a\x27))\x20{\x20return;\x20}\x20\x20//\x20点击消息内链接不触发回退\x0a\x20\x20\x20\x20var\x20bubble\x20=\x20event.target.closest(\x27.msg.user[data-msgid]\x20.bubble\x27);\x0a\x20\x20\x20\x20if\x20(!bubble\x20||\x20STATE.busy)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20msg\x20=\x20bubble.closest(\x27.msg.user\x27);\x0a\x20\x20\x20\x20if\x20(confirm(\x27回退到这条消息?之后的对话与文件更改会被撤销。\x27))\x20{\x20stageRevert(msg.getAttribute(\x27data-msgid\x27));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20压缩上下文\x20----------\x0a\x20\x20$(\x27compactBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.busy)\x20{\x20setStatus(\x27AI\x20处理中,无法压缩\x27);\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/compact\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已请求压缩会话\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27压缩失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20审查(会话更改\x20diff)\x20----------\x0a\x20\x20function\x20renderDiff(list)\x20{\x0a\x20\x20\x20\x20var\x20items\x20=\x20list\x20||\x20[];\x0a\x20\x20\x20\x20var\x20add\x20=\x200,\x20del\x20=\x200;\x0a\x20\x20\x20\x20items.forEach(function\x20(f)\x20{\x20add\x20+=\x20f.additions\x20||\x200;\x20del\x20+=\x20f.deletions\x20||\x200;\x20});\x0a\x20\x20\x20\x20diffStat.textContent\x20=\x20items.length\x20?\x20\x27+\x20\x27\x20+\x20add\x20+\x20\x27\x20/\x20-\x20\x27\x20+\x20del\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(!items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>此会话暂无更改</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20diffBody.innerHTML\x20=\x20items.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20lines\x20=\x20String(f.patch\x20||\x20\x27\x27).split(\x27\x5cn\x27).map(function\x20(line)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20cls\x20=\x20line.charAt(0)\x20===\x20\x27+\x27\x20?\x20\x27\x20add\x27\x20:\x20line.charAt(0)\x20===\x20\x27-\x27\x20?\x20\x27\x20del\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22diff-line\x27\x20+\x20cls\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(line)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22diff-file\x22><div\x20class=\x22diff-file-head\x22>\x27\x20+\x20fileChip(f.file)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22df-add\x22\x20style=\x22margin-left:auto\x22>+\x27\x20+\x20(f.additions\x20||\x200)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22df-del\x22>-\x27\x20+\x20(f.deletions\x20||\x200)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22diff-hunk\x22>\x27\x20+\x20lines\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20toggleDiff(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.diffOpen;\x0a\x20\x20\x20\x20STATE.diffOpen\x20=\x20open;\x0a\x20\x20\x20\x20diffPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open\x20&&\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>正在加载更改…</div>\x27;\x0a\x20\x20\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/diff\x27).then(function\x20(p)\x20{\x20renderDiff(p.data);\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>加载失败:\x27\x20+\x20escapeHtml(e.message)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20$(\x27reviewBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20toggleDiff();\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.diffOpen\x20&&\x20!event.target.closest(\x27#diffPanel\x27)\x20&&\x20!event.target.closest(\x27#reviewBtn\x27))\x20{\x20toggleDiff(false);\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20Git\x20基础管理(点击右上角分支徽标打开)\x20----------\x0a\x20\x20function\x20gitSetMsg(text,\x20isError)\x20{\x0a\x20\x20\x20\x20gitMsgEl.textContent\x20=\x20text\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20gitMsgEl.className\x20=\x20\x27git-msg\x27\x20+\x20(isError\x20?\x20\x27\x20error\x27\x20:\x20\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderGitFiles(files)\x20{\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>工作区干净</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20files.map(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20untracked\x20=\x20file.index\x20===\x20\x27?\x27\x20||\x20file.working\x20===\x20\x27?\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20staged\x20=\x20!untracked\x20&&\x20file.index\x20!==\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20unstaged\x20=\x20untracked\x20||\x20file.working\x20!==\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20cls\x20=\x20untracked\x20?\x20\x27untracked\x27\x20:\x20staged\x20?\x20\x27staged\x27\x20:\x20\x27unstaged\x27;\x0a\x20\x20\x20\x20\x20\x20//\x20两列(暂存区\x20/\x20工作区),untracked\x20显示为\x20??\x0a\x20\x20\x20\x20\x20\x20var\x20code\x20=\x20untracked\x20?\x20\x27??\x27\x20:\x20(file.index\x20+\x20file.working);\x0a\x20\x20\x20\x20\x20\x20var\x20path\x20=\x20escapeHtml(file.path);\x0a\x20\x20\x20\x20\x20\x20var\x20acts\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(staged)\x20{\x20acts\x20+=\x20\x27<button\x20class=\x22git-act\x22\x20data-act=\x22unstage\x22\x20data-path=\x22\x27\x20+\x20path\x20+\x20\x27\x22>取消暂存</button>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(unstaged)\x20{\x20acts\x20+=\x20\x27<button\x20class=\x22git-act\x22\x20data-act=\x22stage\x22\x20data-path=\x22\x27\x20+\x20path\x20+\x20\x27\x22>暂存</button>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22git-file\x22><span\x20class=\x22git-code\x20\x27\x20+\x20cls\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(code)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22git-path\x22\x20title=\x22\x27\x20+\x20path\x20+\x20\x27\x22>\x27\x20+\x20path\x20+\x20\x27</span>\x27\x20+\x20acts\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderGitStatus(data)\x20{\x0a\x20\x20\x20\x20if\x20(!data)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20label\x20=\x20$(\x27gitBranchLabel\x27),\x20select\x20=\x20$(\x27gitBranchSelect\x27);\x0a\x20\x20\x20\x20if\x20(!data.isRepo)\x20{\x0a\x20\x20\x20\x20\x20\x20label.textContent\x20=\x20\x27—\x27;\x0a\x20\x20\x20\x20\x20\x20label.removeAttribute(\x27title\x27);\x0a\x20\x20\x20\x20\x20\x20select.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20select.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20$(\x27gitChangesCount\x27).textContent\x20=\x20\x27变更\x27;\x0a\x20\x20\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>\x27\x20+\x20escapeHtml(data.reason\x20||\x20\x27当前项目不是\x20Git\x20仓库\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20renderBranch(data.branch);\x0a\x20\x20\x20\x20label.textContent\x20=\x20data.branch\x20||\x20\x27(detached)\x27;\x0a\x20\x20\x20\x20var\x20track\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(data.tracking)\x20{\x20track.push(\x27→\x20\x27\x20+\x20data.tracking);\x20}\x0a\x20\x20\x20\x20if\x20(data.ahead)\x20{\x20track.push(\x27↑\x27\x20+\x20data.ahead);\x20}\x0a\x20\x20\x20\x20if\x20(data.behind)\x20{\x20track.push(\x27↓\x27\x20+\x20data.behind);\x20}\x0a\x20\x20\x20\x20label.title\x20=\x20(data.branch\x20||\x20\x27\x27)\x20+\x20(track.length\x20?\x20\x27\x20\x20\x27\x20+\x20track.join(\x27\x20\x27)\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20branches\x20=\x20data.branches\x20||\x20[];\x0a\x20\x20\x20\x20select.innerHTML\x20=\x20branches.map(function\x20(b)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<option\x20value=\x22\x27\x20+\x20escapeHtml(b)\x20+\x20\x27\x22\x27\x20+\x20(b\x20===\x20data.branch\x20?\x20\x27\x20selected\x27\x20:\x20\x27\x27)\x20+\x20\x27>\x27\x20+\x20escapeHtml(b)\x20+\x20\x27</option>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20select.style.display\x20=\x20branches.length\x20?\x20\x27\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20var\x20count\x20=\x20(data.files\x20||\x20[]).length;\x0a\x20\x20\x20\x20$(\x27gitChangesCount\x27).textContent\x20=\x20count\x20?\x20\x27变更\x20·\x20\x27\x20+\x20count\x20:\x20\x27变更\x20·\x20干净\x27;\x0a\x20\x20\x20\x20renderGitFiles(data.files\x20||\x20[]);\x0a\x20\x20}\x0a\x20\x20function\x20refreshGit()\x20{\x0a\x20\x20\x20\x20return\x20wsCall(\x27git:status\x27).then(function\x20(p)\x20{\x20renderGitStatus(p.data);\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20gitSetMsg(\x27读取\x20Git\x20状态失败:\x27\x20+\x20error.message,\x20true);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20gitPost(action,\x20body,\x20doneText)\x20{\x0a\x20\x20\x20\x20gitSetMsg(\x27处理中…\x27);\x0a\x20\x20\x20\x20return\x20wsCall(\x27git:\x27\x20+\x20action,\x20body\x20||\x20{}).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(p.data)\x20{\x20renderGitStatus(p.data);\x20}\x0a\x20\x20\x20\x20\x20\x20gitSetMsg((p.summary\x20&&\x20p.summary.text)\x20||\x20doneText\x20||\x20\x27完成\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20gitSetMsg(error.message,\x20true);\x0a\x20\x20\x20\x20\x20\x20return\x20false;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20toggleGitPanel(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.gitOpen;\x0a\x20\x20\x20\x20STATE.gitOpen\x20=\x20open;\x0a\x20\x20\x20\x20gitPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(!open)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20toggleDiff(false);\x0a\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20gitSetMsg(\x27\x27);\x0a\x20\x20\x20\x20refreshGit();\x0a\x20\x20}\x0a\x20\x20branchBadge.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleGitPanel();\x0a\x20\x20});\x0a\x20\x20$(\x27gitRefreshBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20refreshGit();\x0a\x20\x20});\x0a\x20\x20$(\x27gitStageAll\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27stage\x27,\x20{\x20paths:\x20[]\x20},\x20\x27已全部暂存\x27);\x20});\x0a\x20\x20$(\x27gitUnstageAll\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27unstage\x27,\x20{\x20paths:\x20[]\x20},\x20\x27已全部取消暂存\x27);\x20});\x0a\x20\x20gitFilesEl.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27[data-act][data-path]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20act\x20=\x20button.getAttribute(\x27data-act\x27);\x0a\x20\x20\x20\x20gitPost(act,\x20{\x20paths:\x20[button.getAttribute(\x27data-path\x27)]\x20},\x20act\x20===\x20\x27stage\x27\x20?\x20\x27已暂存\x27\x20:\x20\x27已取消暂存\x27);\x0a\x20\x20});\x0a\x20\x20$(\x27gitCommitBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20$(\x27gitCommitMsg\x27);\x0a\x20\x20\x20\x20var\x20message\x20=\x20box.value.trim();\x0a\x20\x20\x20\x20if\x20(!message)\x20{\x20gitSetMsg(\x27请填写提交信息\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20gitPost(\x27commit\x27,\x20{\x20message:\x20message\x20},\x20\x27已提交\x27).then(function\x20(ok)\x20{\x20if\x20(ok)\x20{\x20box.value\x20=\x20\x27\x27;\x20}\x20});\x0a\x20\x20});\x0a\x20\x20$(\x27gitCommitMsg\x27).addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20&&\x20!event.shiftKey\x20&&\x20!event.isComposing)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20$(\x27gitCommitBtn\x27).click();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27gitPullBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27pull\x27,\x20{},\x20\x27已拉取\x27);\x20});\x0a\x20\x20$(\x27gitPushBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27push\x27,\x20{},\x20\x27已推送\x27);\x20});\x0a\x20\x20$(\x27gitBranchSelect\x27).addEventListener(\x27change\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20branch\x20=\x20event.target.value;\x0a\x20\x20\x20\x20gitPost(\x27checkout\x27,\x20{\x20branch:\x20branch\x20},\x20\x27已切换到\x20\x27\x20+\x20branch);\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.gitOpen\x20&&\x20!event.target.closest(\x27#gitPanel\x27)\x20&&\x20!event.target.closest(\x27#branchBadge\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleGitPanel(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20问题(question\x20工具\x20→\x20form)\x20----------\x0a\x20\x20function\x20refreshForms()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.forms\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.all(STATE.forms.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20f.id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(d)\x20{\x20STATE.formsDetail[f.id]\x20=\x20d.data;\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{});\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x20renderForms();\x20}).catch(function\x20()\x20{\x20renderForms();\x20});\x0a\x20\x20}\x0a\x20\x20function\x20fieldControl(field)\x20{\x0a\x20\x20\x20\x20var\x20key\x20=\x20escapeHtml(field.key);\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27external\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20extUrl\x20=\x20String(field.url\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!/^https?:\x5c/\x5c//i.test(extUrl))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22q-desc\x22>\x27\x20+\x20escapeHtml(field.title\x20||\x20extUrl)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<a\x20class=\x22q-link\x22\x20href=\x22\x27\x20+\x20escapeHtml(extUrl)\x20+\x20\x27\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.title\x20||\x20extUrl)\x20+\x20\x27</a>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27boolean\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<label\x20class=\x22q-opt\x22><input\x20type=\x22checkbox\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22>\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.title\x20||\x20field.key)\x20+\x20\x27</label>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.options\x20&&\x20field.options.length)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20multiple\x20=\x20field.type\x20===\x20\x27multiselect\x27;\x0a\x20\x20\x20\x20\x20\x20//\x20可自定义的单选题:用\x20datalist\x20原生组合框(可选建议亦可自由输入)\x0a\x20\x20\x20\x20\x20\x20if\x20(!multiple\x20&&\x20field.custom)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20listId\x20=\x20\x27dl_\x27\x20+\x20key;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<input\x20type=\x22text\x22\x20list=\x22\x27\x20+\x20listId\x20+\x20\x27\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22><datalist\x20id=\x22\x27\x20+\x20listId\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20field.options.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<option\x20value=\x22\x27\x20+\x20escapeHtml(o.value)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(o.label\x20||\x20\x27\x27)\x20+\x20\x27</option>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</datalist>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-options\x22>\x27\x20+\x20field.options.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<label\x20class=\x22q-opt\x22><input\x20type=\x22\x27\x20+\x20(multiple\x20?\x20\x27checkbox\x27\x20:\x20\x27radio\x27)\x20+\x20\x27\x22\x20name=\x22q_\x27\x20+\x20key\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20value=\x22\x27\x20+\x20escapeHtml(o.value)\x20+\x20\x27\x22>\x20\x27\x20+\x20escapeHtml(o.label\x20||\x20o.value)\x20+\x20\x27</label>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27number\x27\x20||\x20field.type\x20===\x20\x27integer\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<input\x20type=\x22number\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20\x27<textarea\x20rows=\x222\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22></textarea>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderForms()\x20{\x0a\x20\x20\x20\x20var\x20pending\x20=\x20STATE.forms\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!pending.length)\x20{\x20questionBar.style.display\x20=\x20\x27none\x27;\x20questionBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20questionBar.style.display\x20=\x20\x27flex\x27;\x0a\x20\x20\x20\x20questionBar.innerHTML\x20=\x20pending.map(function\x20(f,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20detail\x20=\x20STATE.formsDetail[f.id]\x20||\x20f;\x0a\x20\x20\x20\x20\x20\x20var\x20fields\x20=\x20detail.fields\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-card\x22\x20data-formid=\x22\x27\x20+\x20escapeHtml(f.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22q-title\x22>\x27\x20+\x20icon(\x27shield-alert\x27,\x2014)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(detail.title\x20||\x20\x27需要你的回答\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22q-progress\x22>\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20pending.length\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20fields.map(function\x20(field)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-field\x22\x20data-key=\x22\x27\x20+\x20escapeHtml(field.key)\x20+\x20\x27\x22\x20data-qtype=\x22\x27\x20+\x20escapeHtml(field.type)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(field.title\x20?\x20\x27<div\x20class=\x22q-label\x22>\x27\x20+\x20escapeHtml(field.title)\x20+\x20(field.required\x20?\x20\x27\x20*\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(field.description\x20?\x20\x27<div\x20class=\x22q-desc\x22>\x27\x20+\x20escapeHtml(field.description)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldControl(field)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22q-actions\x22><button\x20class=\x22q-send\x22>发送</button><button\x20class=\x22q-cancel\x22>拒绝</button></div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20questionBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20card\x20=\x20event.target.closest(\x27.q-card[data-formid]\x27);\x0a\x20\x20\x20\x20if\x20(!card)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20formID\x20=\x20card.getAttribute(\x27data-formid\x27);\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27.q-cancel\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20formID\x20+\x20\x27/cancel\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(refreshForms).catch(function\x20(e)\x20{\x20setError(\x27操作失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!event.target.closest(\x27.q-send\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20answer\x20=\x20{};\x0a\x20\x20\x20\x20card.querySelectorAll(\x27.q-field\x27).forEach(function\x20(fieldEl)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20key\x20=\x20fieldEl.getAttribute(\x27data-key\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20qtype\x20=\x20fieldEl.getAttribute(\x27data-qtype\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20multi\x20=\x20fieldEl.querySelectorAll(\x27input[type=checkbox][data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(fieldEl.querySelector(\x27.q-options\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(multi.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20values\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20multi.forEach(function\x20(c)\x20{\x20if\x20(c.checked)\x20{\x20values.push(c.value);\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20answer[key]\x20=\x20values;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20radio\x20=\x20fieldEl.querySelector(\x27input[type=radio][data-qkey]:checked\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(radio)\x20{\x20answer[key]\x20=\x20radio.value;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20box\x20=\x20fieldEl.querySelector(\x27input[type=checkbox][data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(box)\x20{\x20answer[key]\x20=\x20box.checked;\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20fieldEl.querySelector(\x27input[data-qkey],\x20textarea[data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(input)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20input.value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(qtype\x20===\x20\x27number\x27\x20||\x20qtype\x20===\x20\x27integer\x27)\x20{\x20value\x20=\x20value\x20===\x20\x27\x27\x20?\x200\x20:\x20Number(value);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20answer[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20formID\x20+\x20\x27/reply\x27,\x20{\x20answer:\x20answer\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshForms();\x20setStatus(\x27\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27提交失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20排队\x20/\x20引导消息\x20----------\x0a\x20\x20//\x20模式切换提醒(协议消息)不进排队条:面板模式指示已动态反映,TUI\x20亦不显示\x0a\x20\x20function\x20isPlanModeReminder(text)\x20{\x0a\x20\x20\x20\x20var\x20raw\x20=\x20String(text\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20return\x20/<system-reminder>[\x5cs\x5cS]*?(NO\x20LONGER\x20in\x20Plan\x20mode|You\x20are\x20in\x20Plan\x20mode)[\x5cs\x5cS]*?<\x5c/system-reminder>/i.test(raw)\x20||\x0a\x20\x20\x20\x20\x20\x20/^(NO\x20LONGER\x20in\x20Plan\x20mode|You\x20are\x20in\x20Plan\x20mode)/i.test(raw);\x0a\x20\x20}\x0a\x20\x20function\x20refreshQueue()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/inbox\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.queue\x20=\x20(p.data\x20||\x20[]).filter(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(m.type\x20!==\x20\x27user\x27\x20&&\x20m.type\x20!==\x20\x27synthetic\x27)\x20{\x20return\x20false;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20!isPlanModeReminder((m.payload\x20||\x20{}).text);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20renderQueue();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20queueText(m)\x20{\x0a\x20\x20\x20\x20var\x20payload\x20=\x20m.payload\x20||\x20{};\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(payload.text\x20||\x20payload.description\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20//\x20其它\x20<system-reminder>\x20系统提醒不铺原文,占位展示\x0a\x20\x20\x20\x20if\x20(/<system-reminder>/.test(text))\x20{\x20return\x20\x27系统提示\x27;\x20}\x0a\x20\x20\x20\x20return\x20stripPageContext(text);\x0a\x20\x20}\x0a\x20\x20function\x20renderQueue()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.queue.length)\x20{\x20queueBar.classList.remove(\x27show\x27);\x20queueBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20queueBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20queueBar.innerHTML\x20=\x20\x27<div\x20class=\x22queue-item\x22><span\x20class=\x22qi-badge\x22>\x27\x20+\x20STATE.queue.length\x20+\x20\x27\x20个已排队</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20STATE.queue.map(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22queue-item\x22\x20data-inbox=\x22\x27\x20+\x20escapeHtml(m.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22qi-text\x22>\x27\x20+\x20escapeHtml(queueText(m)\x20||\x20\x27(空)\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22qi-badge\x22>\x27\x20+\x20escapeHtml(m.delivery\x20||\x20\x27queue\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20title=\x22取消\x22>\x27\x20+\x20icon(\x27x\x27,\x2011)\x20+\x20\x27</button></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20queueBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20row\x20=\x20event.target.closest(\x27.queue-item[data-inbox]\x27);\x0a\x20\x20\x20\x20if\x20(!row\x20||\x20!event.target.closest(\x27button\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/inbox/\x27\x20+\x20row.getAttribute(\x27data-inbox\x27)\x20+\x20\x27/cancel\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(refreshQueue).catch(function\x20(e)\x20{\x20setError(\x27取消失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20子代理(subagent\x20子会话)\x20----------\x0a\x20\x20//\x20子会话的\x20sessionID\x20与父会话不同,事件按\x20sessionID\x20路由会丢弃其事件;这里用轮询在运行中实时呈现。\x0a\x20\x20function\x20assistantText(message)\x20{\x0a\x20\x20\x20\x20return\x20(message.content\x20||\x20[])\x0a\x20\x20\x20\x20\x20\x20.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27text\x27;\x20})\x0a\x20\x20\x20\x20\x20\x20.map(function\x20(part)\x20{\x20return\x20part.text;\x20})\x0a\x20\x20\x20\x20\x20\x20.join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20.trim();\x0a\x20\x20}\x0a\x20\x20//\x20折叠状态保留:整体重建前记录每个\x20<details>\x20的展开态,重建后逐一还原\x0a\x20\x20//\x20(思考过程默认\x20open,必须连「用户手动收起」也记录,否则刷新会被重新展开)\x0a\x20\x20function\x20captureFolds(root)\x20{\x0a\x20\x20\x20\x20var\x20states\x20=\x20[];\x0a\x20\x20\x20\x20root.querySelectorAll(\x27details.fold\x27).forEach(function\x20(d)\x20{\x20states.push(!!d.open);\x20});\x0a\x20\x20\x20\x20return\x20states;\x0a\x20\x20}\x0a\x20\x20function\x20restoreFolds(root,\x20states)\x20{\x0a\x20\x20\x20\x20if\x20(!states\x20||\x20!states.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20nodes\x20=\x20root.querySelectorAll(\x27details.fold\x27);\x0a\x20\x20\x20\x20states.forEach(function\x20(open,\x20i)\x20{\x20if\x20(nodes[i])\x20{\x20nodes[i].open\x20=\x20open;\x20}\x20});\x0a\x20\x20}\x0a\x20\x20function\x20childSnippet(c)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20STATE.childText[c.id];\x0a\x20\x20\x20\x20if\x20(text)\x20{\x20return\x20text;\x20}\x0a\x20\x20\x20\x20return\x20c.outcome\x20?\x20\x27(无文本输出)\x27\x20:\x20\x27(进行中…)\x27;\x0a\x20\x20}\x0a\x20\x20function\x20childItemHtml(c)\x20{\x0a\x20\x20\x20\x20var\x20label\x20=\x20c.agent\x20||\x20c.title\x20||\x20String(c.id).slice(-6);\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22child-item\x22\x20data-child=\x22\x27\x20+\x20escapeHtml(c.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22ci-head\x22><span\x20class=\x22ci-agent\x22>\x27\x20+\x20escapeHtml(label)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(c.outcome\x20?\x20\x27<span\x20class=\x22ci-outcome\x20\x27\x20+\x20escapeHtml(c.outcome)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(c.outcome)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22ci-open\x22>\x27\x20+\x20(STATE.childOpen[c.id]\x20?\x20\x27收起\x27\x20:\x20\x27展开\x27)\x20+\x20\x27</button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22ci-text\x22>\x27\x20+\x20escapeHtml(String(childSnippet(c)).slice(0,\x20240))\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.childOpen[c.id]\x20?\x20\x27<div\x20class=\x22child-body\x22>\x27\x20+\x20(STATE.childHtml[c.id]\x20||\x20\x27加载中…\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderChildren()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.children.length\x20||\x20STATE.childDismissed)\x20{\x20childBar.classList.remove(\x27show\x27);\x20childBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20childBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20childBar.innerHTML\x20=\x20\x27<div\x20class=\x22child-title\x22>\x27\x20+\x20icon(\x27bot\x27,\x2012)\x20+\x20\x27\x20子代理\x20·\x20\x27\x20+\x20STATE.children.length\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22cb-btn\x22\x20data-cb=\x22collapse\x22>\x27\x20+\x20(STATE.childCollapsed\x20?\x20\x27展开\x27\x20:\x20\x27收起\x27)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22cb-btn\x22\x20data-cb=\x22close\x22\x20title=\x22关闭(有新子代理时自动恢复)\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.childCollapsed\x20?\x20\x27\x27\x20:\x20STATE.children.map(childItemHtml).join(\x27\x27));\x0a\x20\x20}\x0a\x20\x20//\x20轮询时只更新文本\x20/\x20徽标,避免整体重建导致已展开的折叠被收起\x0a\x20\x20function\x20updateChildrenText()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.children.length)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20STATE.children.forEach(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20childBar.querySelector(\x27.child-item[data-child=\x22\x27\x20+\x20c.id\x20+\x20\x27\x22]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!item)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20textEl\x20=\x20item.querySelector(\x27.ci-text\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(textEl)\x20{\x20textEl.textContent\x20=\x20String(childSnippet(c)).slice(0,\x20240);\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20head\x20=\x20item.querySelector(\x27.ci-head\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20badge\x20=\x20item.querySelector(\x27.ci-outcome\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(c.outcome\x20&&\x20!badge\x20&&\x20head)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge\x20=\x20document.createElement(\x27span\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.className\x20=\x20\x27ci-outcome\x20\x27\x20+\x20c.outcome;\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.textContent\x20=\x20c.outcome;\x0a\x20\x20\x20\x20\x20\x20\x20\x20head.insertBefore(badge,\x20item.querySelector(\x27.ci-open\x27));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(badge)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.className\x20=\x20\x27ci-outcome\x20\x27\x20+\x20(c.outcome\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.textContent\x20=\x20c.outcome\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20fetchChildSummary(id)\x20{\x0a\x20\x20\x20\x20//\x20摘要取最近若干条里的最后一条\x20assistant(避免拉全量转写)\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/messages?limit=5&order=desc\x27).then(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20last\x20=\x20(m.data\x20||\x20[]).find(function\x20(x)\x20{\x20return\x20x.type\x20===\x20\x27assistant\x27;\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(last)\x20{\x20STATE.childText[id]\x20=\x20assistantText(last);\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20fetchChildFull(id)\x20{\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/messages?order=desc&limit=200\x27).then(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20body\x20=\x20childBar.querySelector(\x27.child-item[data-child=\x22\x27\x20+\x20id\x20+\x20\x27\x22]\x20.child-body\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!body)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20open\x20=\x20captureFolds(body);\x0a\x20\x20\x20\x20\x20\x20STATE.childHtml[id]\x20=\x20(m.data\x20||\x20[]).slice().reverse().map(renderMessage).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20body.innerHTML\x20=\x20STATE.childHtml[id];\x0a\x20\x20\x20\x20\x20\x20restoreFolds(body,\x20open);\x0a\x20\x20\x20\x20\x20\x20enhanceCode(body);\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20refreshChildren()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.childFetching)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20STATE.childFetching\x20=\x20true;\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/children\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20structureChanged\x20=\x20list.length\x20!==\x20STATE.children.length\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.some(function\x20(c,\x20i)\x20{\x20return\x20!STATE.children[i]\x20||\x20STATE.children[i].id\x20!==\x20c.id;\x20});\x0a\x20\x20\x20\x20\x20\x20//\x20出现新子代理时自动恢复显示(用户关闭过也重新弹出,便于跟踪新任务)\x0a\x20\x20\x20\x20\x20\x20if\x20(list.some(function\x20(c)\x20{\x20return\x20!STATE.children.some(function\x20(o)\x20{\x20return\x20o.id\x20===\x20c.id;\x20});\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.childDismissed\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20STATE.children\x20=\x20list;\x0a\x20\x20\x20\x20\x20\x20if\x20(!list.length)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(structureChanged)\x20{\x20renderChildren();\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.all(list.map(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tasks\x20=\x20[fetchChildSummary(c.id)];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.childOpen[c.id])\x20{\x20tasks.push(fetchChildFull(c.id));\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20Promise.all(tasks);\x0a\x20\x20\x20\x20\x20\x20})).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(structureChanged)\x20{\x20renderChildren();\x20}\x20else\x20{\x20updateChildrenText();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20静默:下一轮再试\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.childFetching\x20=\x20false;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20childBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20cb\x20=\x20event.target.closest(\x27button[data-cb]\x27);\x0a\x20\x20\x20\x20if\x20(cb)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(cb.getAttribute(\x27data-cb\x27)\x20===\x20\x27close\x27)\x20{\x20STATE.childDismissed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20else\x20{\x20STATE.childCollapsed\x20=\x20!STATE.childCollapsed;\x20}\x0a\x20\x20\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.child-item[data-child]\x27);\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20id\x20=\x20item.getAttribute(\x27data-child\x27);\x0a\x20\x20\x20\x20STATE.childOpen[id]\x20=\x20!STATE.childOpen[id];\x0a\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20if\x20(STATE.childOpen[id])\x20{\x20refreshChildren();\x20}\x0a\x20\x20});\x0a\x20\x20var\x20childTimer\x20=\x20null;\x0a\x20\x20var\x20CHILD_POLL_MS\x20=\x201500;\x0a\x20\x20var\x20CHILD_POLL_MAX\x20=\x20600;\x20\x20\x20//\x20安全上限(约\x2015\x20分钟),避免事件丢失时无限轮询\x0a\x20\x20function\x20startChildPoll()\x20{\x0a\x20\x20\x20\x20stopChildPoll();\x0a\x20\x20\x20\x20STATE.childPolls\x20=\x200;\x0a\x20\x20\x20\x20childTimer\x20=\x20setInterval(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.childPolls\x20=\x20(STATE.childPolls\x20||\x200)\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.childPolls\x20>\x20CHILD_POLL_MAX)\x20{\x20stopChildPoll();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20refreshChildren();\x0a\x20\x20\x20\x20},\x20CHILD_POLL_MS);\x0a\x20\x20}\x0a\x20\x20function\x20stopChildPoll()\x20{\x0a\x20\x20\x20\x20clearInterval(childTimer);\x0a\x20\x20\x20\x20childTimer\x20=\x20null;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20WebSocket\x20通道(仅\x20Git\x20指令\x20+\x20分支查询;大模型事件推送仍走\x20SSE)\x20----------\x0a\x20\x20var\x20WS_URL\x20=\x20(location.protocol\x20===\x20\x27https:\x27\x20?\x20\x27wss://\x27\x20:\x20\x27ws://\x27)\x20+\x20location.host\x20+\x20\x27/aiwith/ws\x27;\x0a\x20\x20var\x20ws\x20=\x20null,\x20wsSeq\x20=\x200,\x20wsPending\x20=\x20{},\x20wsRetry\x20=\x200,\x20wsTimer\x20=\x20null;\x0a\x0a\x20\x20//\x20指令请求:发\x20{\x20id,\x20cmd,\x20...args\x20},等服务端回\x20{\x20id,\x20ok,\x20data?,\x20summary?\x20}\x0a\x20\x20function\x20wsCall(cmd,\x20args,\x20timeoutMs)\x20{\x0a\x20\x20\x20\x20return\x20new\x20Promise(function\x20(resolve,\x20reject)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!ws\x20||\x20ws.readyState\x20!==\x201)\x20{\x20reject(new\x20Error(\x27通道未连接\x27));\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20id\x20=\x20++wsSeq;\x0a\x20\x20\x20\x20\x20\x20var\x20timer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20delete\x20wsPending[id];\x0a\x20\x20\x20\x20\x20\x20\x20\x20reject(new\x20Error(\x27请求超时\x27));\x0a\x20\x20\x20\x20\x20\x20},\x20timeoutMs\x20||\x2030000);\x0a\x20\x20\x20\x20\x20\x20wsPending[id]\x20=\x20{\x20resolve:\x20resolve,\x20reject:\x20reject,\x20timer:\x20timer\x20};\x0a\x20\x20\x20\x20\x20\x20ws.send(JSON.stringify(Object.assign({\x20id:\x20id,\x20cmd:\x20cmd\x20},\x20args\x20||\x20{})));\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20failPending(reason)\x20{\x0a\x20\x20\x20\x20Object.keys(wsPending).forEach(function\x20(id)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20wsPending[id];\x0a\x20\x20\x20\x20\x20\x20clearTimeout(item.timer);\x0a\x20\x20\x20\x20\x20\x20item.reject(new\x20Error(reason));\x0a\x20\x20\x20\x20\x20\x20delete\x20wsPending[id];\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20onWsMessage(raw)\x20{\x0a\x20\x20\x20\x20var\x20message;\x0a\x20\x20\x20\x20try\x20{\x20message\x20=\x20JSON.parse(raw);\x20}\x20catch\x20(e)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(typeof\x20message.id\x20!==\x20\x27number\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20pending\x20=\x20wsPending[message.id];\x0a\x20\x20\x20\x20if\x20(!pending)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20clearTimeout(pending.timer);\x0a\x20\x20\x20\x20delete\x20wsPending[message.id];\x0a\x20\x20\x20\x20if\x20(message.ok)\x20{\x20pending.resolve(message);\x20}\x0a\x20\x20\x20\x20else\x20{\x20pending.reject(new\x20Error(message.message\x20||\x20\x27请求失败\x27));\x20}\x0a\x20\x20}\x0a\x20\x20function\x20scheduleWsReconnect()\x20{\x0a\x20\x20\x20\x20clearTimeout(wsTimer);\x0a\x20\x20\x20\x20wsRetry\x20=\x20Math.min(wsRetry\x20+\x201,\x206);\x0a\x20\x20\x20\x20wsTimer\x20=\x20setTimeout(connectWs,\x20Math.min(800\x20*\x20Math.pow(2,\x20wsRetry\x20-\x201),\x2015000));\x0a\x20\x20}\x0a\x20\x20function\x20connectWs()\x20{\x0a\x20\x20\x20\x20if\x20(ws\x20&&\x20(ws.readyState\x20===\x200\x20||\x20ws.readyState\x20===\x201))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20try\x20{\x20ws\x20=\x20new\x20WebSocket(WS_URL);\x20}\x20catch\x20(e)\x20{\x20scheduleWsReconnect();\x20return;\x20}\x0a\x20\x20\x20\x20ws.onopen\x20=\x20function\x20()\x20{\x20wsRetry\x20=\x200;\x20};\x0a\x20\x20\x20\x20ws.onmessage\x20=\x20function\x20(frame)\x20{\x20onWsMessage(frame.data);\x20};\x0a\x20\x20\x20\x20ws.onclose\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20failPending(\x27通道已断开\x27);\x0a\x20\x20\x20\x20\x20\x20scheduleWsReconnect();\x0a\x20\x20\x20\x20};\x0a\x20\x20\x20\x20ws.onerror\x20=\x20function\x20()\x20{\x20/*\x20onclose\x20兜底重连\x20*/\x20};\x0a\x20\x20}\x0a\x0a\x20\x20//\x20断线重连后对账所有标签的运行态(期间错过的\x20execution.finished\x20会让标签卡在「运行中」)\x0a\x20\x20//\x20故意不走\x20STATUS_CACHE:running\x20是实时态,缓存会导致\x20busy\x20状态对账错误\x0a\x20\x20function\x20reconcileRunning()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20running\x20=\x20p.running\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.branch);\x0a\x20\x20\x20\x20\x20\x20STATE.tabs.forEach(function\x20(sid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item)\x20{\x20item.busy\x20=\x20running.indexOf(sid)\x20>\x20-1;\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.sid\x20&&\x20STATE.sessions[STATE.sid])\x20{\x20setBusy(STATE.sessions[STATE.sid].busy);\x20}\x0a\x20\x20\x20\x20\x20\x20else\x20{\x20renderTabs();\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默:下次事件或重连再对账\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20事件流(SSE:大模型事件推送,比\x20WebSocket\x20更稳定)\x20----------\x0a\x20\x20function\x20openEventStream()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.source)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20firstOpen\x20=\x20true;\x0a\x20\x20\x20\x20var\x20source\x20=\x20STATE.source\x20=\x20new\x20EventSource(\x27/aiwith/api/events\x27);\x0a\x20\x20\x20\x20source.onopen\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20首次连接由调用方主动刷新;断线重连时补拉当前会话数据、对账运行态与分支\x0a\x20\x20\x20\x20\x20\x20if\x20(firstOpen)\x20{\x20firstOpen\x20=\x20false;\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.sid)\x20{\x20refreshMessages();\x20refreshPermissions();\x20}\x0a\x20\x20\x20\x20\x20\x20reconcileRunning();\x0a\x20\x20\x20\x20\x20\x20refreshBranch();\x0a\x20\x20\x20\x20};\x0a\x20\x20\x20\x20source.onerror\x20=\x20function\x20()\x20{\x20/*\x20浏览器自动重连\x20*/\x20};\x0a\x20\x20\x20\x20source.onmessage\x20=\x20function\x20(frame)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20event;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20event\x20=\x20JSON.parse(frame.data);\x20}\x20catch\x20(e)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20handleEvent(event.type\x20||\x20\x27\x27,\x20event.data\x20||\x20{});\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20//\x20事件路由(SSE\x20推送),按\x20sessionID\x20分发到对应标签\x0a\x20\x20function\x20handleEvent(type,\x20data)\x20{\x0a\x20\x20\x20\x20var\x20sid\x20=\x20data.sessionID\x20||\x20\x27\x27;\x0a\x0a\x20\x20\x20\x20//\x20全局事件(无\x20sessionID):MCP\x20与注册表\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27mcp.status.changed\x27)\x20{\x20return\x20refreshMcp();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27command.updated\x27\x20||\x20type\x20===\x20\x27agent.updated\x27\x20||\x20type\x20===\x20\x27model.updated\x27)\x20{\x20return\x20refreshRegistry();\x20}\x0a\x0a\x20\x20\x20\x20//\x20会话生命周期(部分事件不带\x20sessionID,如\x20session.created\x20携带会话对象)\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.created\x27\x20||\x20type\x20===\x20\x27session.moved\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.renamed\x27\x20||\x20type\x20===\x20\x27session.deleted\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20rid\x20=\x20sid\x20||\x20(data.session\x20&&\x20data.session.id)\x20||\x20data.id\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.renamed\x27\x20&&\x20rid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20title\x20=\x20data.title\x20||\x20(data.session\x20&&\x20data.session.title);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(title)\x20{\x20ensureSession(rid,\x20{\x20title:\x20title\x20});\x20renderTabs();\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.deleted\x27\x20&&\x20rid\x20&&\x20STATE.tabs.indexOf(rid)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20dropTab(rid);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.historyOpen)\x20{\x20loadSessions();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return;\x20}\x0a\x0a\x20\x20\x20\x20//\x20非当前会话:仅维护本面板标签的运行态与未读;其它会话忽略\x0a\x20\x20\x20\x20if\x20(sid\x20!==\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20meta\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20\x20\x20var\x20changed\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.started\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!meta.busy)\x20{\x20meta.busy\x20=\x20true;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(type\x20===\x20\x27session.execution.succeeded\x27\x20||\x20type\x20===\x20\x27session.execution.failed\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.execution.interrupted\x27\x20||\x20type\x20===\x20\x27session.idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(meta.busy)\x20{\x20meta.busy\x20=\x20false;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!meta.unread)\x20{\x20meta.unread\x20=\x20true;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(changed)\x20{\x20renderTabs();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20当前会话:常规处理\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.text.delta\x27)\x20{\x20return\x20onDelta(\x27text\x27,\x20data);\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.reasoning.delta\x27)\x20{\x20return\x20onDelta(\x27reasoning\x27,\x20data);\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.started\x27)\x20{\x20setBusy(true);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.succeeded\x27\x20||\x20type\x20===\x20\x27session.execution.failed\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.execution.interrupted\x27\x20||\x20type\x20===\x20\x27session.idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20setBusy(false);\x0a\x20\x20\x20\x20\x20\x20return\x20scheduleRefresh();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.usage.updated\x27\x20||\x20type\x20===\x20\x27session.usage.recorded\x27)\x20{\x20return\x20scheduleRefresh();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.agent.selected\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.agent\x20=\x20data.agent\x20||\x20STATE.agent;\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.model.selected\x27)\x20{\x20return\x20refreshSessionState();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27permission.asked\x27)\x20{\x20refreshPermissions();\x20setStatus(\x27等待授权操作…\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27permission.replied\x27)\x20{\x20refreshPermissions();\x20setStatus(\x27\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27form.created\x27\x20||\x20type\x20===\x20\x27form.replied\x27\x20||\x20type\x20===\x20\x27form.cancelled\x27)\x20{\x20return\x20refreshForms();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.revert.staged\x27\x20||\x20type\x20===\x20\x27session.revert.cleared\x27\x20||\x20type\x20===\x20\x27session.revert.committed\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20refreshSessionState();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.compaction.\x27)\x20===\x200)\x20{\x20return\x20scheduleRefresh();\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.inbox.\x27)\x20===\x200)\x20{\x20return\x20refreshQueue();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.retry.scheduled\x27)\x20{\x20setStatus(\x27请求重试中…\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.tool.\x27)\x20===\x200\x20||\x20type\x20===\x20\x27session.message.content.updated\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.shell.started\x27\x20||\x20type\x20===\x20\x27session.shell.ended\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type.indexOf(\x27session.step.\x27)\x20===\x200\x20||\x20type\x20===\x20\x27session.skill.activated\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20scheduleRefresh();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20setBusy(busy)\x20{\x0a\x20\x20\x20\x20STATE.busy\x20=\x20busy;\x0a\x20\x20\x20\x20if\x20(STATE.sid)\x20{\x20ensureSession(STATE.sid).busy\x20=\x20busy;\x20}\x0a\x20\x20\x20\x20sendBtn.className\x20=\x20\x27send-btn\x27\x20+\x20(busy\x20?\x20\x27\x20stop\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20sendBtn.innerHTML\x20=\x20busy\x20?\x20icon(\x27square\x27,\x2017)\x20:\x20icon(\x27send\x27,\x2017);\x0a\x20\x20\x20\x20sendBtn.title\x20=\x20busy\x20?\x20\x27停止\x27\x20:\x20\x27发送\x27;\x0a\x20\x20\x20\x20setStatus(busy\x20?\x20\x27AI\x20正在处理…\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20if\x20(busy)\x20{\x20startChildPoll();\x20}\x20else\x20{\x20stopChildPoll();\x20refreshChildren();\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20MCP\x20状态指示(左上角激活个数,悬停详情)\x20----------\x0a\x20\x20var\x20mcpBadge\x20=\x20$(\x27mcpBadge\x27),\x20mcpTip\x20=\x20$(\x27mcpTip\x27);\x0a\x20\x20function\x20renderMcp(list)\x20{\x0a\x20\x20\x20\x20var\x20items\x20=\x20list\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20mcpBadge.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20mcpTip.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20active\x20=\x20items.filter(function\x20(item)\x20{\x20return\x20item.status\x20===\x20\x27connected\x27;\x20}).length;\x0a\x20\x20\x20\x20//\x20「已断开」是默认省\x20token\x20的正常态,不算异常;只有\x20failed/needs_auth\x20才标红\x0a\x20\x20\x20\x20var\x20manageable\x20=\x20items.filter(function\x20(item)\x20{\x20return\x20item.status\x20!==\x20\x27disabled\x27;\x20}).length;\x0a\x20\x20\x20\x20var\x20hasBad\x20=\x20items.some(function\x20(item)\x20{\x20return\x20item.status\x20===\x20\x27failed\x27\x20||\x20item.status\x20===\x20\x27needs_auth\x27\x20||\x20item.status\x20===\x20\x27needsAuth\x27;\x20});\x0a\x20\x20\x20\x20mcpBadge.style.display\x20=\x20\x27flex\x27;\x0a\x20\x20\x20\x20mcpBadge.className\x20=\x20\x27mcp-badge\x27\x20+\x20(hasBad\x20?\x20\x27\x20bad\x27\x20:\x20active\x20>=\x20manageable\x20?\x20\x27\x20all-ok\x27\x20:\x20\x27\x20warn\x27);\x0a\x20\x20\x20\x20mcpBadge.innerHTML\x20=\x20icon(\x27server\x27,\x2013)\x20+\x20\x27<span>\x27\x20+\x20active\x20+\x20\x27/\x27\x20+\x20items.length\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20mcpBadge.title\x20=\x20\x27MCP\x20服务(点击开关)\x27;\x0a\x20\x20\x20\x20mcpTip.innerHTML\x20=\x20\x27<div\x20class=\x22mcp-head\x22>MCP\x20服务</div>\x27\x20+\x20items.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20item.status\x20===\x20\x27pending\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20on\x20=\x20item.status\x20===\x20\x27connected\x27\x20||\x20pending;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22row\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22dot\x20\x27\x20+\x20escapeHtml(item.status)\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22name\x22>\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22state\x22>\x27\x20+\x20escapeHtml(item.status)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<label\x20class=\x22mcp-switch\x22\x20title=\x22\x27\x20+\x20(on\x20?\x20\x27断开(省下其工具上下文)\x27\x20:\x20\x27连接\x27)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<input\x20type=\x22checkbox\x22\x20data-mcp=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22\x27\x20+\x20(on\x20?\x20\x27\x20checked\x27\x20:\x20\x27\x27)\x20+\x20(pending\x20?\x20\x27\x20disabled\x27\x20:\x20\x27\x27)\x20+\x20\x27>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22track\x22></span></label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27\x20+\x20(item.error\x20?\x20\x27<div\x20class=\x22err\x22>\x27\x20+\x20escapeHtml(item.error)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27<div\x20class=\x22mcp-hint\x22>关闭后该\x20MCP\x20的工具不再进入模型上下文(省\x20token)</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20refreshMcp()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/mcp\x27).then(function\x20(payload)\x20{\x20renderMcp(payload.data);\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20右上角:当前\x20Git\x20分支\x20----------\x0a\x20\x20function\x20renderBranch(name)\x20{\x0a\x20\x20\x20\x20if\x20(!branchBadge)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(name\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(!text)\x20{\x0a\x20\x20\x20\x20\x20\x20branchBadge.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20branchBadge.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20branchBadge.removeAttribute(\x27title\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20branchBadge.style.display\x20=\x20\x27inline-flex\x27;\x0a\x20\x20\x20\x20branchBadge.innerHTML\x20=\x20icon(\x27git-branch\x27,\x2011)\x20+\x20\x27<span\x20class=\x22bb-name\x22>\x27\x20+\x20escapeHtml(text)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20branchBadge.title\x20=\x20\x27当前\x20Git\x20分支:\x27\x20+\x20text;\x0a\x20\x20}\x0a\x20\x20//\x20非会话覆盖层(任务中心/调试/账号)打开时,会话类按钮(MCP/新建会话)先切回会话页:\x0a\x20\x20//\x20不弹\x20MCP\x20开关、不新建会话(与点其它工具按钮先收起覆盖层的交互一致)\x0a\x20\x20function\x20chatHiddenByOverlay()\x20{\x0a\x20\x20\x20\x20return\x20[\x27factoryOverlay\x27,\x20\x27debugOverlay\x27,\x20\x27accountOverlay\x27,\x20\x27viewerOverlay\x27].some(function\x20(id)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20el\x20=\x20document.getElementById(id);\x0a\x20\x20\x20\x20\x20\x20return\x20el\x20&&\x20el.classList.contains(\x27show\x27);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20backToChat()\x20{\x0a\x20\x20\x20\x20document.dispatchEvent(new\x20CustomEvent(\x27zen-aiwith-back-to-chat\x27));\x0a\x20\x20}\x0a\x20\x20//\x20MCP\x20徽标:点击打开开关面板(原\x20hover\x20提示改为可交互的列表)\x0a\x20\x20mcpBadge.style.cursor\x20=\x20\x27pointer\x27;\x0a\x20\x20mcpBadge.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20if\x20(chatHiddenByOverlay())\x20{\x20backToChat();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!mcpTip.innerHTML)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rect\x20=\x20mcpBadge.getBoundingClientRect();\x0a\x20\x20\x20\x20mcpTip.style.top\x20=\x20Math.round(rect.top)\x20+\x20\x27px\x27;\x0a\x20\x20\x20\x20mcpTip.style.left\x20=\x20Math.round(rect.right\x20+\x208)\x20+\x20\x27px\x27;\x0a\x20\x20\x20\x20mcpTip.classList.toggle(\x27show\x27);\x0a\x20\x20});\x0a\x20\x20mcpTip.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20var\x20input\x20=\x20event.target\x20&&\x20event.target.closest\x20?\x20event.target.closest(\x27input[data-mcp]\x27)\x20:\x20null;\x0a\x20\x20\x20\x20if\x20(!input)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20mcpName\x20=\x20input.getAttribute(\x27data-mcp\x27);\x0a\x20\x20\x20\x20var\x20want\x20=\x20input.checked;\x0a\x20\x20\x20\x20input.disabled\x20=\x20true;\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/mcp/toggle\x27,\x20{\x20name:\x20mcpName,\x20on:\x20want\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x20renderMcp(payload.data);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20input.checked\x20=\x20!want;\x0a\x20\x20\x20\x20\x20\x20\x20\x20input.disabled\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20白名单拒绝等原因直呈(否则开关「打不开」没有任何反馈)\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20hint\x20=\x20mcpTip.querySelector(\x27.mcp-hint\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hint)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hint.textContent\x20=\x20(error\x20&&\x20error.message)\x20||\x20(\x27切换失败\x20HTTP\x20\x27\x20+\x20(error\x20&&\x20error.status));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20hint.textContent\x20=\x20\x27关闭后该\x20MCP\x20的工具不再进入模型上下文(省\x20token)\x27;\x20},\x203000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(!mcpTip.classList.contains(\x27show\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20target\x20=\x20event.target;\x0a\x20\x20\x20\x20if\x20(target\x20&&\x20target.closest\x20&&\x20(target.closest(\x27#mcpTip\x27)\x20||\x20target.closest(\x27#mcpBadge\x27)))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20mcpTip.classList.remove(\x27show\x27);\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20模型选择(顶栏)\x20----------\x0a\x20\x20var\x20modelPicker\x20=\x20$(\x27modelPicker\x27),\x20modelPanel\x20=\x20$(\x27modelPanel\x27),\x20modelList\x20=\x20$(\x27modelList\x27);\x0a\x20\x20function\x20shortModelName(item)\x20{\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return\x20\x27—\x27;\x20}\x0a\x20\x20\x20\x20var\x20name\x20=\x20item.name\x20||\x20item.modelID\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20var\x20slash\x20=\x20name.lastIndexOf(\x27/\x27);\x0a\x20\x20\x20\x20return\x20slash\x20>\x20-1\x20?\x20name.slice(slash\x20+\x201)\x20:\x20name;\x0a\x20\x20}\x0a\x20\x20function\x20findModel(ref)\x20{\x0a\x20\x20\x20\x20if\x20(!ref)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20return\x20STATE.models.find(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20item.providerID\x20===\x20ref.providerID\x20&&\x20item.modelID\x20===\x20(ref.modelID\x20||\x20ref.id);\x0a\x20\x20\x20\x20})\x20||\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20renderModelPicker()\x20{\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.model;\x0a\x20\x20\x20\x20modelPicker.innerHTML\x20=\x20icon(\x27cpu\x27,\x2012)\x20+\x20\x27<span\x20class=\x22label\x22>\x27\x20+\x20escapeHtml(shortModelName(current))\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20modelPicker.title\x20=\x20current\x20?\x20\x27当前模型:\x27\x20+\x20(current.name\x20||\x20current.modelID)\x20+\x20\x27(点击切换)\x27\x20:\x20\x27切换模型\x27;\x0a\x20\x20}\x0a\x20\x20//\x20免费模型组:opencode\x20官方池。组内只显示零计价(免费)模型,并过滤\x20deepseek。\x0a\x20\x20var\x20FREE_PROVIDER\x20=\x20\x27opencode\x27;\x0a\x20\x20function\x20isModelHidden(item)\x20{\x0a\x20\x20\x20\x20if\x20(item.providerID\x20!==\x20FREE_PROVIDER)\x20{\x20return\x20false;\x20}\x0a\x20\x20\x20\x20if\x20(item.paid)\x20{\x20return\x20true;\x20}\x0a\x20\x20\x20\x20var\x20text\x20=\x20((item.modelID\x20||\x20\x27\x27)\x20+\x20\x27\x20\x27\x20+\x20(item.name\x20||\x20\x27\x27)).toLowerCase();\x0a\x20\x20\x20\x20return\x20text.indexOf(\x27deepseek\x27)\x20>\x20-1;\x0a\x20\x20}\x0a\x20\x20function\x20groupLabel(providerID)\x20{\x0a\x20\x20\x20\x20return\x20providerID\x20===\x20FREE_PROVIDER\x20?\x20\x27免费模型\x27\x20:\x20providerID;\x0a\x20\x20}\x0a\x20\x20function\x20usageOf(item)\x20{\x0a\x20\x20\x20\x20return\x20STATE.modelUsage[item.providerID\x20+\x20\x27/\x27\x20+\x20item.modelID]\x20||\x200;\x0a\x20\x20}\x0a\x20\x20//\x20用量数据(近\x2030\x20天)懒拉取:仅在模型面板打开时取,60s\x20内不重复请求;失败静默回落默认排序\x0a\x20\x20function\x20refreshModelUsage(force)\x20{\x0a\x20\x20\x20\x20var\x20now\x20=\x20Date.now();\x0a\x20\x20\x20\x20if\x20(!force\x20&&\x20STATE.modelUsageAt\x20&&\x20now\x20-\x20STATE.modelUsageAt\x20<\x2060000)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20if\x20(STATE.modelUsagePromise)\x20{\x20return\x20STATE.modelUsagePromise;\x20}\x0a\x20\x20\x20\x20STATE.modelUsagePromise\x20=\x20api(\x27GET\x27,\x20\x27/model/usage\x27)\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsageAt\x20=\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsage\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20(payload.data\x20||\x20[]).forEach(function\x20(u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsage[u.providerID\x20+\x20\x27/\x27\x20+\x20u.modelID]\x20=\x20u.tokens\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20STATE.modelUsagePromise\x20=\x20null;\x20});\x0a\x20\x20\x20\x20return\x20STATE.modelUsagePromise;\x0a\x20\x20}\x0a\x20\x20function\x20renderModelList()\x20{\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.model;\x0a\x20\x20\x20\x20//\x20分组并按「付费优先」排序(公司场景付费模型优先使用);免费模型组按\x20isModelHidden\x20过滤\x0a\x20\x20\x20\x20var\x20groups\x20=\x20{};\x0a\x20\x20\x20\x20var\x20order\x20=\x20[];\x0a\x20\x20\x20\x20STATE.models.forEach(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(isModelHidden(item))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!groups[item.providerID])\x20{\x20groups[item.providerID]\x20=\x20[];\x20order.push(item.providerID);\x20}\x0a\x20\x20\x20\x20\x20\x20groups[item.providerID].push(item);\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20order.sort(function\x20(a,\x20b)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20paidA\x20=\x20groups[a].some(function\x20(m)\x20{\x20return\x20m.paid;\x20})\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20var\x20paidB\x20=\x20groups[b].some(function\x20(m)\x20{\x20return\x20m.paid;\x20})\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20if\x20(paidA\x20!==\x20paidB)\x20{\x20return\x20paidA\x20-\x20paidB;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20curA\x20=\x20current\x20&&\x20current.providerID\x20===\x20a\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20var\x20curB\x20=\x20current\x20&&\x20current.providerID\x20===\x20b\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20return\x20curA\x20-\x20curB;\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20if\x20(!order.length)\x20{\x0a\x20\x20\x20\x20\x20\x20modelList.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>暂无可用模型</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20modelList.innerHTML\x20=\x20order.map(function\x20(providerID)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20expanded\x20=\x20!!STATE.modelExpanded[providerID];\x0a\x20\x20\x20\x20\x20\x20//\x20免费模型组按实际用量降序(稳定排序:未用过的保持原有顺序垫后);其余组维持付费优先\x0a\x20\x20\x20\x20\x20\x20var\x20items\x20=\x20groups[providerID]\x0a\x20\x20\x20\x20\x20\x20\x20\x20.slice()\x0a\x20\x20\x20\x20\x20\x20\x20\x20.sort(providerID\x20===\x20FREE_PROVIDER\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20function\x20(a,\x20b)\x20{\x20return\x20usageOf(b)\x20-\x20usageOf(a);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20function\x20(a,\x20b)\x20{\x20return\x20(a.paid\x20?\x200\x20:\x201)\x20-\x20(b.paid\x20?\x200\x20:\x201);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20isCurrent\x20=\x20current\x20&&\x20item.providerID\x20===\x20current.providerID\x20&&\x20item.modelID\x20===\x20current.modelID;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20limit\x20=\x20item.contextLimit\x20?\x20fmtTokens(item.contextLimit)\x20+\x20\x27\x20上下文\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20variants\x20=\x20item.variants\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20variantHtml\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isCurrent\x20&&\x20variants.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variantHtml\x20=\x20\x27<div\x20class=\x22variant-chips\x22>\x27\x20+\x20variants.map(function\x20(v)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22variant-chip\x27\x20+\x20(v\x20===\x20current.variant\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x22\x20data-variant=\x22\x27\x20+\x20escapeHtml(v)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(v)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22model-item\x27\x20+\x20(isCurrent\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-provider=\x22\x27\x20+\x20escapeHtml(item.providerID)\x20+\x20\x27\x22\x20data-model=\x22\x27\x20+\x20escapeHtml(item.modelID)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22m-name\x22>\x27\x20+\x20escapeHtml(shortModelName(item))\x20+\x20(isCurrent\x20?\x20\x27\x20✓\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(limit\x20?\x20\x27<div\x20class=\x22m-meta\x22>\x27\x20+\x20escapeHtml(limit)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variantHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20currentInGroup\x20=\x20current\x20&&\x20current.providerID\x20===\x20providerID;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22model-group\x27\x20+\x20(expanded\x20?\x20\x27\x20expanded\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22model-group-head\x22\x20data-provider=\x22\x27\x20+\x20escapeHtml(providerID)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20icon(\x27chevron-right\x27,\x2012).replace(\x27class=\x22ico\x22\x27,\x20\x27class=\x22ico\x20chevron\x22\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mg-name\x22>\x27\x20+\x20escapeHtml(groupLabel(providerID))\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(currentInGroup\x20?\x20\x27<span\x20class=\x22cur-in-group\x22>\x27\x20+\x20escapeHtml(shortModelName(current))\x20+\x20\x27\x20✓</span>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div><div\x20class=\x22model-group-body\x22>\x27\x20+\x20items\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20toggleModelPanel(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.modelOpen;\x0a\x20\x20\x20\x20STATE.modelOpen\x20=\x20open;\x0a\x20\x20\x20\x20modelPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open)\x20{\x0a\x20\x20\x20\x20\x20\x20renderModelList();\x0a\x20\x20\x20\x20\x20\x20//\x20用量到位后重排一次(面板仍开着才重渲染,避免关面板后白画)\x0a\x20\x20\x20\x20\x20\x20refreshModelUsage().then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.modelOpen)\x20{\x20renderModelList();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20modelPicker.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleModelPanel();\x0a\x20\x20});\x0a\x20\x20modelPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20//\x20组标题:展开\x20/\x20收起\x0a\x20\x20\x20\x20var\x20head\x20=\x20event.target.closest(\x27.model-group-head\x27);\x0a\x20\x20\x20\x20if\x20(head)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20providerID\x20=\x20head.getAttribute(\x27data-provider\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20group\x20=\x20head.parentElement;\x0a\x20\x20\x20\x20\x20\x20STATE.modelExpanded[providerID]\x20=\x20!group.classList.contains(\x27expanded\x27);\x0a\x20\x20\x20\x20\x20\x20group.classList.toggle(\x27expanded\x27,\x20STATE.modelExpanded[providerID]);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20变体选择(如\x20#high)\x0a\x20\x20\x20\x20var\x20chip\x20=\x20event.target.closest(\x27.variant-chip[data-variant]\x27);\x0a\x20\x20\x20\x20if\x20(chip\x20&&\x20!STATE.busy\x20&&\x20STATE.sid\x20&&\x20STATE.model)\x20{\x0a\x20\x20\x20\x20\x20\x20switchModelTo(STATE.model.providerID,\x20STATE.model.modelID,\x20chip.getAttribute(\x27data-variant\x27));\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.model-item[data-model]\x27);\x0a\x20\x20\x20\x20if\x20(!item\x20||\x20STATE.busy\x20||\x20!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20providerID\x20=\x20item.getAttribute(\x27data-provider\x27);\x0a\x20\x20\x20\x20var\x20modelID\x20=\x20item.getAttribute(\x27data-model\x27);\x0a\x20\x20\x20\x20if\x20(STATE.model\x20&&\x20STATE.model.providerID\x20===\x20providerID\x20&&\x20STATE.model.modelID\x20===\x20modelID)\x20{\x0a\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20switchModelTo(providerID,\x20modelID,\x20null);\x0a\x20\x20});\x0a\x20\x20function\x20switchModelTo(providerID,\x20modelID,\x20variant)\x20{\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/model\x27,\x20{\x20model:\x20{\x20providerID:\x20providerID,\x20id:\x20modelID,\x20...(variant\x20?\x20{\x20variant:\x20variant\x20}\x20:\x20{})\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model)\x20||\x20STATE.models.find(function\x20(m)\x20{\x20return\x20m.providerID\x20===\x20providerID\x20&&\x20m.modelID\x20===\x20modelID;\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20matched\x20?\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20})\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20(matched\x20&&\x20matched.contextLimit)\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderModelList();\x0a\x20\x20\x20\x20\x20\x20\x20\x20refreshMessages();\x20\x20//\x20ctx\x20用量按新模型窗口重算\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setError(\x27切换模型失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20}\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.modelOpen\x20&&\x20!event.target.closest(\x27#modelPanel\x27)\x20&&\x20!event.target.closest(\x27#modelPicker\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话标签(多会话并发)\x20----------\x0a\x20\x20var\x20TABS_KEY\x20=\x20\x27zen-aiwith:tabs\x27;\x0a\x20\x20function\x20ensureSession(sid,\x20meta)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20item\x20=\x20STATE.sessions[sid]\x20=\x20{\x20id:\x20sid,\x20title:\x20\x27\x27,\x20busy:\x20false,\x20unread:\x20false\x20};\x20}\x0a\x20\x20\x20\x20if\x20(meta)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(meta.title)\x20{\x20item.title\x20=\x20meta.title;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20meta.busy\x20===\x20\x27boolean\x27)\x20{\x20item.busy\x20=\x20meta.busy;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20item;\x0a\x20\x20}\x0a\x20\x20function\x20saveTabs()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20localStorage.setItem(TABS_KEY,\x20JSON.stringify({\x20tabs:\x20STATE.tabs,\x20active:\x20STATE.sid\x20}));\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20忽略存储失败\x20*/\x20}\x0a\x20\x20}\x0a\x20\x20function\x20loadTabs()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20raw\x20=\x20JSON.parse(localStorage.getItem(TABS_KEY)\x20||\x20\x27null\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(raw\x20&&\x20Array.isArray(raw.tabs))\x20{\x20return\x20raw;\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20忽略解析失败\x20*/\x20}\x0a\x20\x20\x20\x20return\x20{\x20tabs:\x20[],\x20active:\x20\x27\x27\x20};\x0a\x20\x20}\x0a\x20\x20function\x20sessionLabel(sid)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20return\x20(item\x20&&\x20item.title)\x20||\x20(\x27会话\x20\x27\x20+\x20String(sid).slice(-6));\x0a\x20\x20}\x0a\x20\x20function\x20renderTabs()\x20{\x0a\x20\x20\x20\x20if\x20(!tabsBar)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20html\x20=\x20STATE.tabs.map(function\x20(sid)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20\x20\x20var\x20dot\x20=\x20item.busy\x20?\x20\x27running\x27\x20:\x20(item.unread\x20?\x20\x27unread\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22tab\x27\x20+\x20(sid\x20===\x20STATE.sid\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-sid=\x22\x27\x20+\x20escapeHtml(sid)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(sessionLabel(sid))\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tab-dot\x20\x27\x20+\x20dot\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tab-title\x22>\x27\x20+\x20escapeHtml(sessionLabel(sid))\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(STATE.tabs.length\x20>\x201\x20?\x20\x27<button\x20class=\x22tab-close\x22\x20data-close=\x22\x27\x20+\x20escapeHtml(sid)\x20+\x20\x27\x22\x20title=\x22关闭标签\x22>\x27\x20+\x20icon(\x27x\x27,\x2011)\x20+\x20\x27</button>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20tabsBar.innerHTML\x20=\x20html;\x0a\x20\x20}\x0a\x20\x20function\x20addTab(sid,\x20title)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20STATE.tabs.push(sid);\x20}\x0a\x20\x20\x20\x20ensureSession(sid,\x20title\x20?\x20{\x20title:\x20title\x20}\x20:\x20null);\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20}\x0a\x20\x20function\x20removeTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.tabs.splice(index,\x201);\x20}\x0a\x20\x20\x20\x20delete\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20}\x0a\x20\x20//\x20切换序号:快速连点标签时,仅最后一次请求的结果生效(丢弃过期响应)\x0a\x20\x20var\x20switchSeq\x20=\x200;\x0a\x20\x20//\x20打开/激活某会话为标签(历史点击与标签点击共用)\x0a\x20\x20function\x20openSession(sid)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20addTab(sid);\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20if\x20(item)\x20{\x20item.unread\x20=\x20false;\x20}\x0a\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20if\x20(sid\x20===\x20STATE.sid)\x20{\x20renderTabs();\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/switch\x27,\x20{\x20sessionID:\x20sid\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20applySession(payload.data\x20||\x20{\x20id:\x20sid\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20setStatus(\x27切换会话失败:\x27\x20+\x20error.message);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20//\x20关闭标签:仅移除标签,会话保留在历史面板可重新打开;运行中的先中断任务(尽力而为)\x0a\x20\x20function\x20closeTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20if\x20(item\x20&&\x20item.busy)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!confirm(\x27该会话仍在运行,关闭将停止任务。会话保留在历史中,可随时重新打开。确定关闭?\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20sid\x20+\x20\x27/interrupt\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setStatus(\x27停止任务失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20dropTab(sid);\x0a\x20\x20}\x0a\x20\x20//\x20移除标签并处理「关闭的是当前标签」的切换兜底(无确认)\x0a\x20\x20function\x20dropTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20if\x20(index\x20===\x20-1)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20wasActive\x20=\x20sid\x20===\x20STATE.sid;\x0a\x20\x20\x20\x20removeTab(sid);\x0a\x20\x20\x20\x20if\x20(!wasActive)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20newSession();\x20return;\x20}\x0a\x20\x20\x20\x20openSession(STATE.tabs[Math.min(index,\x20STATE.tabs.length\x20-\x201)]);\x0a\x20\x20}\x0a\x20\x20function\x20newSession()\x20{\x0a\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/reset\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20setStatus(\x27新建会话失败:服务端未返回会话\x27);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ensureSession(session.id,\x20{\x20title:\x20session.title\x20}).unread\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(session.id)\x20===\x20-1)\x20{\x20STATE.tabs.push(session.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20applySession(session);\x0a\x20\x20\x20\x20\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27已新建会话\x27);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20setStatus(\x27新建会话失败:\x27\x20+\x20error.message);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20tabsBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20closeBtn\x20=\x20event.target.closest(\x27.tab-close[data-close]\x27);\x0a\x20\x20\x20\x20if\x20(closeBtn)\x20{\x20event.stopPropagation();\x20closeTab(closeBtn.getAttribute(\x27data-close\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20tab\x20=\x20event.target.closest(\x27.tab[data-sid]\x27);\x0a\x20\x20\x20\x20if\x20(tab)\x20{\x20openSession(tab.getAttribute(\x27data-sid\x27));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话\x20----------\x0a\x20\x20function\x20applySession(session)\x20{\x0a\x20\x20\x20\x20if\x20(!session\x20||\x20!session.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20STATE.sid\x20=\x20session.id;\x0a\x20\x20\x20\x20ensureSession(session.id,\x20{\x20title:\x20session.title\x20}).unread\x20=\x20false;\x0a\x20\x20\x20\x20STATE.agent\x20=\x20session.agent\x20||\x20\x27build\x27;\x0a\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model);\x0a\x20\x20\x20\x20if\x20(matched)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20});\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20matched.contextLimit\x20||\x200;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20STATE.revert\x20=\x20session.revert\x20||\x20null;\x0a\x20\x20\x20\x20STATE.cost\x20=\x20session.cost\x20||\x200;\x0a\x20\x20\x20\x20//\x20会话级\x20UI\x20状态全部重置,避免上一会话的内容串到当前会话\x0a\x20\x20\x20\x20STATE.forms\x20=\x20[];\x0a\x20\x20\x20\x20STATE.formsDetail\x20=\x20{};\x0a\x20\x20\x20\x20STATE.permissions\x20=\x20[];\x0a\x20\x20\x20\x20STATE.queue\x20=\x20[];\x0a\x20\x20\x20\x20STATE.children\x20=\x20[];\x0a\x20\x20\x20\x20STATE.childText\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childHtml\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childOpen\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childCollapsed\x20=\x20false;\x0a\x20\x20\x20\x20STATE.childDismissed\x20=\x20false;\x0a\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20renderRevert();\x0a\x20\x20\x20\x20renderForms();\x0a\x20\x20\x20\x20renderPermissions();\x0a\x20\x20\x20\x20renderQueue();\x0a\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20//\x20运行态同步到输入区(sendBtn\x20图标\x20/\x20状态提示),并驱动子代理轮询\x0a\x20\x20\x20\x20setBusy(!!(STATE.sessions[session.id]\x20&&\x20STATE.sessions[session.id].busy));\x0a\x20\x20\x20\x20refreshMessages();\x0a\x20\x20\x20\x20refreshPermissions();\x0a\x20\x20\x20\x20refreshForms();\x0a\x20\x20\x20\x20refreshQueue();\x0a\x20\x20\x20\x20refreshChildren();\x0a\x20\x20\x20\x20if\x20(STATE.diffOpen)\x20{\x20toggleDiff(true);\x20}\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20if\x20(STATE.historyOpen)\x20{\x0a\x20\x20\x20\x20\x20\x20loadSessions();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20历史会话\x20----------\x0a\x20\x20function\x20relativeTime(ts)\x20{\x0a\x20\x20\x20\x20if\x20(!ts)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20diff\x20=\x20Date.now()\x20-\x20ts;\x0a\x20\x20\x20\x20if\x20(diff\x20<\x2060000)\x20{\x20return\x20\x27刚刚\x27;\x20}\x0a\x20\x20\x20\x20if\x20(diff\x20<\x203600000)\x20{\x20return\x20Math.floor(diff\x20/\x2060000)\x20+\x20\x27\x20分钟前\x27;\x20}\x0a\x20\x20\x20\x20if\x20(diff\x20<\x2086400000)\x20{\x20return\x20Math.floor(diff\x20/\x203600000)\x20+\x20\x27\x20小时前\x27;\x20}\x0a\x20\x20\x20\x20return\x20new\x20Date(ts).toLocaleDateString();\x0a\x20\x20}\x0a\x20\x20function\x20loadSessions()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/sessions\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20payload.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20list.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20current\x20=\x20item.id\x20===\x20STATE.sid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20label\x20=\x20item.title\x20||\x20(\x27会话\x20\x27\x20+\x20String(item.id).slice(-6));\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20meta\x20=\x20relativeTime(item.time\x20&&\x20(item.time.updated\x20||\x20item.time.created));\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.agent)\x20{\x20meta\x20=\x20(meta\x20?\x20meta\x20+\x20\x27\x20·\x20\x27\x20:\x20\x27\x27)\x20+\x20item.agent;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22history-item\x27\x20+\x20(current\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-id=\x22\x27\x20+\x20escapeHtml(item.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22hi-row\x22><div\x20class=\x22hi-title\x22>\x27\x20+\x20(current\x20?\x20icon(\x27map-pin\x27,\x2012)\x20+\x20\x27\x20\x27\x20:\x20\x27\x27)\x20+\x20escapeHtml(label)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22hi-acts\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22ren\x22\x20title=\x22重命名\x22>✎</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22del\x22\x20title=\x22删除\x22>\x27\x20+\x20icon(\x27x\x27,\x2012)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22hi-meta\x22>\x27\x20+\x20escapeHtml(meta)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20$(\x27historyList\x27).innerHTML\x20=\x20html\x20||\x20\x27<div\x20class=\x22history-empty\x22>暂无历史会话</div>\x27;\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20$(\x27historyList\x27).innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>加载失败:\x27\x20+\x20escapeHtml(error.message)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20toggleHistory(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.historyOpen;\x0a\x20\x20\x20\x20STATE.historyOpen\x20=\x20open;\x0a\x20\x20\x20\x20$(\x27historyPanel\x27).classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open)\x20{\x20loadSessions();\x20}\x0a\x20\x20}\x0a\x20\x20$(\x27historyBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleHistory();\x0a\x20\x20});\x0a\x20\x20$(\x27historyPanel\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.history-item[data-id]\x27);\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20id\x20=\x20item.getAttribute(\x27data-id\x27);\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27button.del\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(confirm(\x27删除该会话?此操作不可恢复。\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27DELETE\x27,\x20\x27/session/\x27\x20+\x20id,\x20{}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(id)\x20>\x20-1)\x20{\x20removeTab(id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(id\x20===\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20return\x20newSession();\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20openSession(STATE.tabs[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20loadSessions();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x20setStatus(\x27删除失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27button.ren\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20titleEl\x20=\x20item.querySelector(\x27.hi-title\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20original\x20=\x20titleEl.textContent.trim();\x0a\x20\x20\x20\x20\x20\x20titleEl.outerHTML\x20=\x20\x27<input\x20class=\x22hi-rename\x22\x20value=\x22\x27\x20+\x20escapeHtml(original)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20item.querySelector(\x27.hi-rename\x27);\x0a\x20\x20\x20\x20\x20\x20input.focus();\x0a\x20\x20\x20\x20\x20\x20input.select();\x0a\x20\x20\x20\x20\x20\x20var\x20done\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20var\x20commit\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(done)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20done\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20input.value.trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!value\x20||\x20value\x20===\x20original)\x20{\x20loadSessions();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/title\x27,\x20{\x20title:\x20value\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20loadSessions();\x20if\x20(id\x20===\x20STATE.sid)\x20{\x20setStatus(\x27已重命名\x27);\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setStatus(\x27重命名失败:\x27\x20+\x20error.message);\x20loadSessions();\x20});\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20input.addEventListener(\x27keydown\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.key\x20===\x20\x27Enter\x27)\x20{\x20e.preventDefault();\x20commit();\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.key\x20===\x20\x27Escape\x27)\x20{\x20e.preventDefault();\x20done\x20=\x20true;\x20loadSessions();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20input.addEventListener(\x27blur\x27,\x20commit);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(id\x20===\x20STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20openSession(id);\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.historyOpen\x20&&\x20!event.target.closest(\x27#historyPanel\x27)\x20&&\x20!event.target.closest(\x27#historyBtn\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20模式(agent)切换:输入框内文字标签,点击切换\x20build\x20/\x20plan\x20----------\x0a\x20\x20function\x20primaryAgents()\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20(STATE.agents\x20||\x20[]).filter(function\x20(a)\x20{\x20return\x20a.mode\x20===\x20\x27primary\x27\x20||\x20a.mode\x20===\x20\x27all\x27;\x20});\x0a\x20\x20\x20\x20return\x20list.length\x20?\x20list\x20:\x20[{\x20id:\x20\x27build\x27,\x20name:\x20\x27build\x27\x20},\x20{\x20id:\x20\x27plan\x27,\x20name:\x20\x27plan\x27\x20}];\x0a\x20\x20}\x0a\x20\x20function\x20agentLabel(id)\x20{\x0a\x20\x20\x20\x20var\x20found\x20=\x20(STATE.agents\x20||\x20[]).find(function\x20(a)\x20{\x20return\x20a.id\x20===\x20id;\x20});\x0a\x20\x20\x20\x20return\x20(found\x20&&\x20found.name)\x20||\x20id\x20||\x20\x27build\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderAgents()\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20primaryAgents();\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.agent\x20&&\x20list.some(function\x20(a)\x20{\x20return\x20a.id\x20===\x20STATE.agent;\x20})\x20?\x20STATE.agent\x20:\x20list[0].id;\x0a\x20\x20\x20\x20var\x20index\x20=\x20Math.max(0,\x20list.findIndex(function\x20(a)\x20{\x20return\x20a.id\x20===\x20current;\x20}));\x0a\x20\x20\x20\x20var\x20target\x20=\x20list[(index\x20+\x201)\x20%\x20list.length];\x0a\x20\x20\x20\x20//\x20复用同一按钮节点,仅更新属性(避免重建\x20DOM\x20引起闪烁)\x0a\x20\x20\x20\x20var\x20button\x20=\x20agentSwitch.querySelector(\x27button\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x0a\x20\x20\x20\x20\x20\x20agentSwitch.innerHTML\x20=\x20\x27<button></button>\x27;\x0a\x20\x20\x20\x20\x20\x20button\x20=\x20agentSwitch.querySelector(\x27button\x27);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20button.setAttribute(\x27data-agent\x27,\x20target.id);\x0a\x20\x20\x20\x20button.disabled\x20=\x20STATE.busy;\x0a\x20\x20\x20\x20button.title\x20=\x20\x27点击切换到\x20\x27\x20+\x20agentLabel(target.id)\x20+\x20\x27(Tab\x20/\x20Shift+Tab\x20循环)\x27;\x0a\x20\x20\x20\x20button.textContent\x20=\x20(list.length\x20>\x201\x20?\x20\x27\x27\x20:\x20\x27\x27)\x20+\x20agentLabel(current);\x0a\x20\x20}\x0a\x20\x20function\x20cycleAgent(direction)\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20primaryAgents();\x0a\x20\x20\x20\x20if\x20(list.length\x20<\x202)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.agent\x20&&\x20list.some(function\x20(a)\x20{\x20return\x20a.id\x20===\x20STATE.agent;\x20})\x20?\x20STATE.agent\x20:\x20list[0].id;\x0a\x20\x20\x20\x20var\x20index\x20=\x20list.findIndex(function\x20(a)\x20{\x20return\x20a.id\x20===\x20current;\x20});\x0a\x20\x20\x20\x20var\x20next\x20=\x20list[(index\x20+\x20(direction\x20||\x201)\x20+\x20list.length)\x20%\x20list.length];\x0a\x20\x20\x20\x20switchAgent(next.id);\x0a\x20\x20}\x0a\x20\x20//\x20切换智能体(按钮点击\x20/\x20输入框\x20Tab\x20键共用);busy\x20或未就绪时忽略\x0a\x20\x20function\x20switchAgent(target)\x20{\x0a\x20\x20\x20\x20if\x20(!target\x20||\x20!STATE.sid\x20||\x20STATE.busy\x20||\x20target\x20===\x20STATE.agent)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20agentSwitch.querySelectorAll(\x27button\x27).forEach(function\x20(item)\x20{\x20item.disabled\x20=\x20true;\x20});\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/agent\x27,\x20{\x20agent:\x20target\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20仅更新模式标签:消息历史与事件流不受影响,避免整屏重渲抖动\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.agent\x20=\x20(payload.data\x20&&\x20payload.data.agent)\x20||\x20target;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27切换失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20agentSwitch.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-agent]\x27);\x0a\x20\x20\x20\x20if\x20(!button\x20||\x20button.disabled)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20switchAgent(button.getAttribute(\x27data-agent\x27));\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20图片附件:必须经\x20kooteam\x20应用转发上传成功后才可发送(无降级)\x20----------\x0a\x20\x20//\x20自动获取登录\x20token:优先\x20AiWith\x20本机持久化(zen-aiwith:token),回退宿主页登录态\x0a\x20\x20function\x20getToken()\x20{\x0a\x20\x20\x20\x20try\x20{\x20return\x20localStorage.getItem(\x27zen-aiwith:token\x27)\x20||\x20localStorage.getItem(\x27_token_\x27);\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20uploadToKooteam(file)\x20{\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(!token)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.reject(new\x20Error(\x27未登录,无法上传图片,请先登录后再试\x27));\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20form\x20=\x20new\x20FormData();\x0a\x20\x20\x20\x20form.append(\x27file\x27,\x20file,\x20file.name);\x0a\x20\x20\x20\x20form.append(\x27public\x27,\x20\x27public\x27);\x0a\x20\x20\x20\x20return\x20fetch(\x27/kooteam/api/zen/pair\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20token:\x20token\x20},\x20body:\x20form\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x20return\x20response.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload\x20||\x20payload.success\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error((payload\x20&&\x20payload.message)\x20||\x20\x27kooteam\x20上传失败\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload.data\x20||\x20!payload.data.url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27kooteam\x20未返回图片地址\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload.data.url;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20renderAttachments()\x20{\x0a\x20\x20\x20\x20var\x20hasAny\x20=\x20STATE.attachments.length\x20||\x20STATE.mentions.length;\x0a\x20\x20\x20\x20attachBar.className\x20=\x20\x27attach-bar\x27\x20+\x20(hasAny\x20?\x20\x27\x20show\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20attachBar.innerHTML\x20=\x0a\x20\x20\x20\x20\x20\x20STATE.attachments.map(function\x20(item,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-thumb\x27\x20+\x20(item.uploading\x20?\x20\x27\x20pending\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(item.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22remove\x22\x20data-index=\x22\x27\x20+\x20index\x20+\x20\x27\x22\x20title=\x22移除\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.map(function\x20(m,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-thumb\x20mention\x22\x20title=\x22\x27\x20+\x20escapeHtml(m.path)\x20+\x20\x27\x22\x20style=\x22width:auto;max-width:160px;padding:6px\x208px;display:flex;align-items:center;font-size:11px\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tool-file-ref\x22>\x27\x20+\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(m.path)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22remove\x22\x20data-mention=\x22\x27\x20+\x20index\x20+\x20\x27\x22\x20title=\x22移除\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20addFiles(fileList)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20Array.prototype.slice.call(fileList\x20||\x20[]);\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20无降级:未登录直接拒绝上传\x0a\x20\x20\x20\x20if\x20(!getToken())\x20{\x0a\x20\x20\x20\x20\x20\x20setError(\x27未登录,无法上传图片,请先登录后再试\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20files.forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.attachments.length\x20>=\x205)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27最多附加\x205\x20张图片\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!/^image\x5c/(png|jpe?g|gif|webp)$/.test(file.type))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27仅支持\x20png\x20/\x20jpeg\x20/\x20gif\x20/\x20webp\x20图片\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20entry\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20file.name\x20||\x20\x27image.png\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20previewUrl:\x20URL.createObjectURL(file),\x0a\x20\x20\x20\x20\x20\x20\x20\x20kooteamUrl:\x20\x27\x27,\x20uploading:\x20true,\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20STATE.attachments.push(entry);\x0a\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20//\x20必须上传成功后才成为有效附件;失败即移除并提示,不做任何降级\x0a\x20\x20\x20\x20\x20\x20uploadToKooteam(file)\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.kooteamUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.previewUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.uploading\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20index\x20=\x20STATE.attachments.indexOf(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.attachments.splice(index,\x201);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27图片上传失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20attachBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20//\x20无降级:未登录先拦截,不进入选图流程\x0a\x20\x20\x20\x20if\x20(!getToken())\x20{\x0a\x20\x20\x20\x20\x20\x20setError(\x27未登录,无法上传图片,请先登录后再试\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20attachInput.click();\x0a\x20\x20});\x0a\x20\x20attachInput.addEventListener(\x27change\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20addFiles(attachInput.files);\x0a\x20\x20\x20\x20attachInput.value\x20=\x20\x27\x27;\x0a\x20\x20});\x0a\x20\x20attachBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20mentionBtn\x20=\x20event.target.closest(\x27button[data-mention]\x27);\x0a\x20\x20\x20\x20if\x20(mentionBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.splice(Number(mentionBtn.getAttribute(\x27data-mention\x27)),\x201);\x0a\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-index]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20entry\x20=\x20STATE.attachments[Number(button.getAttribute(\x27data-index\x27))];\x0a\x20\x20\x20\x20if\x20(!entry)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(entry.previewUrl\x20&&\x20entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20STATE.attachments.splice(STATE.attachments.indexOf(entry),\x201);\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20});\x0a\x20\x20//\x20从剪贴板/拖拽数据中提取图片文件:files\x20→\x20items(file)\x20→\x20HTML\x20img\x20src\x20兜底\x0a\x20\x20function\x20extractImageFiles(dataTransfer)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(!dataTransfer)\x20{\x20return\x20files;\x20}\x0a\x20\x20\x20\x20if\x20(dataTransfer.files\x20&&\x20dataTransfer.files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20Array.prototype.slice.call(dataTransfer.files).forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/^image\x5c//.test(file.type))\x20{\x20files.push(file);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!files.length\x20&&\x20dataTransfer.items\x20&&\x20dataTransfer.items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20dataTransfer.items.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20dataTransfer.items[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.kind\x20===\x20\x27file\x27\x20&&\x20/^image\x5c//.test(item.type\x20||\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20file\x20=\x20item.getAsFile();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x20files.push(file);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20files;\x0a\x20\x20}\x0a\x20\x20//\x20网页里复制的图片(HTML/URL)没有\x20File\x20对象,尽力抓取为\x20File\x0a\x20\x20function\x20fetchWebImage(dataTransfer)\x20{\x0a\x20\x20\x20\x20var\x20url\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20url\x20=\x20dataTransfer.getData(\x27text/uri-list\x27)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(!url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20dataTransfer.getData(\x27text/html\x27)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20match\x20=\x20html.match(/<img[^>]+src=[\x22\x27]([^\x22\x27]+)[\x22\x27]/i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20url\x20=\x20match\x20?\x20match[1]\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20Promise.resolve(null);\x20}\x0a\x20\x20\x20\x20if\x20(!/^(https?:|data:image\x5c/)/.test(url))\x20{\x20return\x20Promise.resolve(null);\x20}\x0a\x20\x20\x20\x20return\x20fetch(url)\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!response.ok)\x20{\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20response.status);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20response.blob();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(blob)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!/^image\x5c//.test(blob.type))\x20{\x20throw\x20new\x20Error(\x27非图片内容\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20ext\x20=\x20(blob.type.split(\x27/\x27)[1]\x20||\x20\x27png\x27).replace(\x27jpeg\x27,\x20\x27jpg\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20new\x20File([blob],\x20\x27pasted-image.\x27\x20+\x20ext,\x20{\x20type:\x20blob.type\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20return\x20null;\x20});\x0a\x20\x20}\x0a\x0a\x20\x20promptInput.addEventListener(\x27paste\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20data\x20=\x20event.clipboardData;\x0a\x20\x20\x20\x20if\x20(!data)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20files\x20=\x20extractImageFiles(data);\x0a\x20\x20\x20\x20if\x20(files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addFiles(files);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20无文件对象(网页图片)时尝试抓取\x0a\x20\x20\x20\x20fetchWebImage(data).then(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20\x20\x20addFiles([file]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20拖拽图片到输入区\x0a\x20\x20function\x20setDragging(on)\x20{\x0a\x20\x20\x20\x20inputBox.classList.toggle(\x27dragover\x27,\x20on);\x0a\x20\x20}\x0a\x20\x20promptInput.addEventListener(\x27dragover\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.dataTransfer\x20&&\x20Array.prototype.some.call(event.dataTransfer.items\x20||\x20[],\x20function\x20(item)\x20{\x20return\x20item.kind\x20===\x20\x27file\x27;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20setDragging(true);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20promptInput.addEventListener(\x27dragleave\x27,\x20function\x20()\x20{\x20setDragging(false);\x20});\x0a\x20\x20promptInput.addEventListener(\x27drop\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20extractImageFiles(event.dataTransfer);\x0a\x20\x20\x20\x20setDragging(false);\x0a\x20\x20\x20\x20if\x20(files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addFiles(files);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fetchWebImage(event.dataTransfer).then(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20\x20\x20addFiles([file]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20输入区弹层(/\x20命令、@\x20文件引用)\x20----------\x0a\x20\x20function\x20closeMenus()\x20{\x0a\x20\x20\x20\x20STATE.menu\x20=\x20null;\x0a\x20\x20\x20\x20STATE.menuItems\x20=\x20[];\x0a\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20cmdPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20mentionPanel.classList.remove(\x27show\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderMenu()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.menu\x20===\x20\x27cmd\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20cmdPanel.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20mentionPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20cmdPanel.innerHTML\x20=\x20STATE.menuItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20STATE.menuItems.map(function\x20(c,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22cmd-item\x27\x20+\x20(i\x20===\x20STATE.menuIndex\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-i=\x22\x27\x20+\x20i\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22ci-name\x22>/\x27\x20+\x20escapeHtml(c.name)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22ci-desc\x22>\x27\x20+\x20escapeHtml(c.description\x20||\x20\x27\x27)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27<div\x20class=\x22cmd-item\x22>无匹配命令</div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(STATE.menu\x20===\x20\x27mention\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20mentionPanel.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20cmdPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20mentionPanel.innerHTML\x20=\x20STATE.menuItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20STATE.menuItems.map(function\x20(e,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22mention-item\x27\x20+\x20(i\x20===\x20STATE.menuIndex\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-i=\x22\x27\x20+\x20i\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mi-path\x22>\x27\x20+\x20escapeHtml(e.path)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mi-type\x22>\x27\x20+\x20escapeHtml(e.type)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27<div\x20class=\x22mention-item\x22>无匹配文件</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20var\x20mentionTimer\x20=\x20null;\x0a\x20\x20function\x20detectMenu()\x20{\x0a\x20\x20\x20\x20var\x20value\x20=\x20promptInput.value;\x0a\x20\x20\x20\x20if\x20(/^!/.test(value))\x20{\x20closeMenus();\x20setShellMode(true);\x20return;\x20}\x0a\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20var\x20cmd\x20=\x20/^\x5c/([^\x5cs]*)$/.exec(value);\x0a\x20\x20\x20\x20if\x20(cmd)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.menu\x20=\x20\x27cmd\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20STATE.menuItems\x20=\x20(STATE.commands\x20||\x20[]).filter(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20!cmd[1]\x20||\x20c.name.toLowerCase().indexOf(cmd[1].toLowerCase())\x20>\x20-1;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20caret\x20=\x20promptInput.selectionStart;\x0a\x20\x20\x20\x20var\x20before\x20=\x20value.slice(0,\x20caret);\x0a\x20\x20\x20\x20var\x20at\x20=\x20before.lastIndexOf(\x27@\x27);\x0a\x20\x20\x20\x20if\x20(at\x20>\x20-1\x20&&\x20!/\x5cs/.test(before.slice(at\x20+\x201)))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20query\x20=\x20before.slice(at\x20+\x201);\x0a\x20\x20\x20\x20\x20\x20STATE.menu\x20=\x20\x27mention\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20clearTimeout(mentionTimer);\x0a\x20\x20\x20\x20\x20\x20mentionTimer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/files?query=\x27\x20+\x20encodeURIComponent(query)).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.menu\x20!==\x20\x27mention\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.menuItems\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20\x20\x20\x20\x20},\x20120);\x0a\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20}\x0a\x20\x20function\x20setShellMode(on)\x20{\x0a\x20\x20\x20\x20STATE.shellMode\x20=\x20on;\x0a\x20\x20\x20\x20shellBadge.style.display\x20=\x20on\x20?\x20\x27block\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20promptInput.placeholder\x20=\x20on\x0a\x20\x20\x20\x20\x20\x20?\x20\x27输入\x20shell\x20命令,Enter\x20运行(Esc\x20退出)\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27Enter键发送任务,Tab键切换模式\x27;\x0a\x20\x20}\x0a\x20\x20function\x20chooseMenuItem(index)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.menuItems[index];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.menu\x20===\x20\x27cmd\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20promptInput.value\x20=\x20\x27/\x27\x20+\x20item.name\x20+\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20\x20\x20promptInput.focus();\x0a\x20\x20\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20value\x20=\x20promptInput.value;\x0a\x20\x20\x20\x20var\x20caret\x20=\x20promptInput.selectionStart;\x0a\x20\x20\x20\x20var\x20at\x20=\x20value.slice(0,\x20caret).lastIndexOf(\x27@\x27);\x0a\x20\x20\x20\x20promptInput.value\x20=\x20value.slice(0,\x20at)\x20+\x20\x27@\x27\x20+\x20item.path\x20+\x20\x27\x20\x27\x20+\x20value.slice(caret);\x0a\x20\x20\x20\x20if\x20(!STATE.mentions.some(function\x20(m)\x20{\x20return\x20m.path\x20===\x20item.path;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.push({\x20path:\x20item.path\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20promptInput.focus();\x0a\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20}\x0a\x20\x20cmdPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20event.target.closest(\x27[data-i]\x27);\x0a\x20\x20\x20\x20if\x20(el)\x20{\x20chooseMenuItem(Number(el.getAttribute(\x27data-i\x27)));\x20}\x0a\x20\x20});\x0a\x20\x20mentionPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20event.target.closest(\x27[data-i]\x27);\x0a\x20\x20\x20\x20if\x20(el)\x20{\x20chooseMenuItem(Number(el.getAttribute(\x27data-i\x27)));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20输入\x20----------\x0a\x20\x20function\x20autoGrow()\x20{\x0a\x20\x20\x20\x20promptInput.style.height\x20=\x20\x27auto\x27;\x0a\x20\x20\x20\x20promptInput.style.height\x20=\x20Math.min(promptInput.scrollHeight,\x20132)\x20+\x20\x27px\x27;\x0a\x20\x20}\x0a\x20\x20function\x20clearInput()\x20{\x0a\x20\x20\x20\x20promptInput.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20STATE.attachments\x20=\x20[];\x0a\x20\x20\x20\x20STATE.mentions\x20=\x20[];\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20}\x0a\x20\x20function\x20appendUserBubble(text,\x20attachments)\x20{\x0a\x20\x20\x20\x20var\x20empty\x20=\x20messageList.querySelector(\x27.empty\x27);\x0a\x20\x20\x20\x20if\x20(empty)\x20{\x20empty.remove();\x20}\x0a\x20\x20\x20\x20var\x20attachHtml\x20=\x20attachments\x20&&\x20attachments.length\x0a\x20\x20\x20\x20\x20\x20?\x20\x27<div\x20class=\x22attach-grid\x22>\x27\x20+\x20attachments.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(item.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20var\x20wrap\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20wrap.className\x20=\x20\x27msg\x20user\x27;\x0a\x20\x20\x20\x20wrap.innerHTML\x20=\x20\x27<div\x20class=\x22bubble\x22>\x27\x20+\x20attachHtml\x20+\x20renderMarkdown(text)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20messageList.appendChild(wrap);\x0a\x20\x20\x20\x20scrollBottom(true);\x0a\x20\x20}\x0a\x20\x20promptInput.addEventListener(\x27input\x27,\x20function\x20()\x20{\x20autoGrow();\x20detectMenu();\x20});\x0a\x20\x20promptInput.addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.isComposing)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20弹层键盘导航\x0a\x20\x20\x20\x20if\x20(STATE.menu)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27ArrowDown\x27)\x20{\x20event.preventDefault();\x20STATE.menuIndex\x20=\x20Math.min(STATE.menuIndex\x20+\x201,\x20STATE.menuItems.length\x20-\x201);\x20renderMenu();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27ArrowUp\x27)\x20{\x20event.preventDefault();\x20STATE.menuIndex\x20=\x20Math.max(STATE.menuIndex\x20-\x201,\x200);\x20renderMenu();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20||\x20event.key\x20===\x20\x27Tab\x27)\x20{\x20event.preventDefault();\x20chooseMenuItem(STATE.menuIndex);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27)\x20{\x20event.preventDefault();\x20closeMenus();\x20return;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20Tab:在所有主智能体之间循环\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Tab\x27\x20&&\x20!event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20cycleAgent(1);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Tab\x27\x20&&\x20event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20cycleAgent(-1);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27\x20&&\x20STATE.shellMode)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20promptInput.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20&&\x20!event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20//\x20运行中:Enter\x20引导(steer),Alt+Enter\x20排队(queue)\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.busy)\x20{\x20submit(event.altKey\x20?\x20\x27queue\x27\x20:\x20\x27steer\x27);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20submit();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20messageList.addEventListener(\x27scroll\x27,\x20function\x20()\x20{\x20STATE.stickBottom\x20=\x20nearBottom();\x20});\x0a\x0a\x20\x20//\x20hljs\x20以\x20defer\x20加载:首屏渲染若跑在其之前(本地缓存/极快响应),load\x20后统一补一次增强\x0a\x20\x20window.addEventListener(\x27load\x27,\x20function\x20()\x20{\x20enhanceCode();\x20});\x0a\x0a\x20\x20//\x20代码块复制\x20+\x20文件\x20chip\x20打开查看器(文档级委托:消息流\x20/\x20子代理转写\x20/\x20diff\x20面板共用)\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20target\x20=\x20event.target;\x0a\x20\x20\x20\x20if\x20(!target\x20||\x20!target.closest)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20copy\x20=\x20target.closest(\x27.code-copy\x27);\x0a\x20\x20\x20\x20if\x20(copy)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20code\x20=\x20copy.parentElement\x20?\x20copy.parentElement.querySelector(\x27code\x27)\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20copyText(code\x20?\x20code.textContent\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20copy.textContent\x20=\x20\x27已复制\x27;\x0a\x20\x20\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20copy.textContent\x20=\x20\x27复制\x27;\x20},\x201200);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20chip\x20=\x20target.closest(\x27.code-file\x27);\x0a\x20\x20\x20\x20if\x20(chip)\x20{\x0a\x20\x20\x20\x20\x20\x20document.dispatchEvent(new\x20CustomEvent(\x27zen-aiwith-open-file\x27,\x20{\x20detail:\x20{\x20path:\x20chip.getAttribute(\x27data-file\x27)\x20||\x20\x27\x27\x20}\x20}));\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20function\x20submit(delivery)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20promptInput.value.trim();\x0a\x20\x20\x20\x20if\x20(!text\x20&&\x20!STATE.attachments.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.attachments.some(function\x20(item)\x20{\x20return\x20item.uploading;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27附件处理中,请稍候…\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20shell\x20模式:!command\x0a\x20\x20\x20\x20if\x20(/^!/.test(text))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20command\x20=\x20text.replace(/^!\x5cs?/,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!command)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20\x20\x20appendUserBubble(\x27!\x20\x27\x20+\x20command,\x20[]);\x0a\x20\x20\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/shell\x27,\x20{\x20command:\x20command\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已运行\x20shell\x20命令\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setBusy(false);\x20setStatus(\x27shell\x20失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20斜杠命令:/name\x20args\x0a\x20\x20\x20\x20var\x20cmd\x20=\x20/^\x5c/([^\x5cs]+)\x5cs*([\x5cs\x5cS]*)$/.exec(text);\x0a\x20\x20\x20\x20if\x20(cmd)\x20{\x0a\x20\x20\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20\x20\x20appendUserBubble(\x27/\x27\x20+\x20cmd[1]\x20+\x20(cmd[2]\x20?\x20\x27\x20\x27\x20+\x20cmd[2]\x20:\x20\x27\x27),\x20[]);\x0a\x20\x20\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/command\x27,\x20{\x20name:\x20cmd[1],\x20text:\x20cmd[2]\x20||\x20\x27\x27\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已运行命令\x20/\x27\x20+\x20cmd[1]);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setBusy(false);\x20setStatus(\x27命令失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20常规\x20prompt(图片\x20+\x20@\x20文件引用\x20+\x20delivery)\x0a\x20\x20\x20\x20var\x20attachments\x20=\x20STATE.attachments.slice();\x0a\x20\x20\x20\x20var\x20images\x20=\x20attachments\x0a\x20\x20\x20\x20\x20\x20.filter(function\x20(item)\x20{\x20return\x20item.kooteamUrl;\x20})\x0a\x20\x20\x20\x20\x20\x20.map(function\x20(item)\x20{\x20return\x20item.kooteamUrl;\x20});\x0a\x20\x20\x20\x20var\x20mentions\x20=\x20STATE.mentions.slice();\x0a\x20\x20\x20\x20var\x20pageContext\x20=\x20hostPageContext();\x0a\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20appendUserBubble(text\x20||\x20\x27请参考图片\x27,\x20attachments);\x0a\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/prompt\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20text:\x20text\x20||\x20\x27请参考图片\x27,\x0a\x20\x20\x20\x20\x20\x20...(images.length\x20?\x20{\x20images:\x20images\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(mentions.length\x20?\x20{\x20mentions:\x20mentions\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(delivery\x20?\x20{\x20delivery:\x20delivery\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(pageContext\x20?\x20{\x20pageContext:\x20pageContext\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(delivery\x20===\x20\x27queue\x27\x20?\x20\x27已排队,稍后发送\x27\x20:\x20delivery\x20===\x20\x27steer\x27\x20?\x20\x27已发送引导\x27\x20:\x20\x27已发送,等待\x20AI\x20处理…\x27);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setBusy(false);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27发送失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20interrupt()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/interrupt\x27,\x20{}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27停止失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20sendBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.busy)\x20{\x20interrupt();\x20}\x20else\x20{\x20submit();\x20}\x0a\x20\x20});\x0a\x0a\x20\x20$(\x27closeBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20parent.postMessage({\x20type:\x20\x27zen-aiwith-close\x27\x20},\x20\x27*\x27);\x0a\x20\x20});\x0a\x0a\x20\x20//\x20全屏:抽屉(右侧\x20min(520px,100vw))↔\x20整屏铺满(由\x20widget.js\x20的\x20.panel-wrap.full\x20承接样式)\x0a\x20\x20var\x20fullscreenOn\x20=\x20false;\x0a\x20\x20var\x20fullscreenBtn\x20=\x20$(\x27fullscreenBtn\x27);\x0a\x20\x20function\x20renderFullscreenBtn()\x20{\x0a\x20\x20\x20\x20if\x20(!fullscreenBtn)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20fullscreenBtn.innerHTML\x20=\x20icon(fullscreenOn\x20?\x20\x27minimize\x27\x20:\x20\x27maximize\x27,\x2016);\x0a\x20\x20\x20\x20fullscreenBtn.setAttribute(\x27data-tip\x27,\x20fullscreenOn\x20?\x20\x27退出全屏\x27\x20:\x20\x27全屏\x27);\x0a\x20\x20}\x0a\x20\x20if\x20(fullscreenBtn)\x20{\x0a\x20\x20\x20\x20fullscreenBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20fullscreenOn\x20=\x20!fullscreenOn;\x0a\x20\x20\x20\x20\x20\x20renderFullscreenBtn();\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20parent.postMessage({\x20type:\x20\x27zen-aiwith-fullscreen\x27,\x20on:\x20fullscreenOn\x20},\x20\x27*\x27);\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20renderFullscreenBtn();\x0a\x20\x20}\x0a\x20\x20$(\x27newSessionBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20//\x20覆盖层打开时:只切回会话页,不新建会话(见\x20chatHiddenByOverlay\x20注释)\x0a\x20\x20\x20\x20if\x20(chatHiddenByOverlay())\x20{\x20backToChat();\x20return;\x20}\x0a\x20\x20\x20\x20newSession();\x0a\x20\x20});\x0a\x0a\x20\x20//\x20任务中心「本地执行」:factory.js\x20新建本地会话并发出首个需求后,通知此处打开为标签\x0a\x20\x20window.addEventListener(\x27aiwith:open-session\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20detail\x20=\x20event\x20&&\x20event.detail;\x0a\x20\x20\x20\x20if\x20(detail\x20&&\x20detail.id)\x20{\x20openSession(detail.id);\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20分支名(WebSocket\x20指令):可能随\x20git\x20checkout\x20变化,定期\x20/\x20回到前台时刷新\x20----------\x0a\x20\x20var\x20BRANCH_POLL_MS\x20=\x2020000;\x0a\x20\x20function\x20refreshBranch()\x20{\x0a\x20\x20\x20\x20wsCall(\x27branch\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.data\x20&&\x20p.data.branch);\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20document.addEventListener(\x27visibilitychange\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!document.hidden)\x20{\x20refreshBranch();\x20}\x0a\x20\x20});\x0a\x20\x20setInterval(function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!document.hidden)\x20{\x20refreshBranch();\x20}\x0a\x20\x20},\x20BRANCH_POLL_MS);\x0a\x0a\x20\x20//\x20----------\x20启动\x20----------\x0a\x20\x20function\x20boot()\x20{\x0a\x20\x20\x20\x20//\x20先尝试拉取统一下发的网关配置并注入(未登录/网络失败不阻断启动,退回手工配置)\x0a\x20\x20\x20\x20var\x20pre\x20=\x20getToken()\x0a\x20\x20\x20\x20\x20\x20?\x20api(\x27POST\x27,\x20\x27/aiconfig/ensure\x27,\x20{}).catch(function\x20()\x20{\x20return\x20null;\x20})\x0a\x20\x20\x20\x20\x20\x20:\x20Promise.resolve(null);\x0a\x20\x20\x20\x20pre.then(function\x20()\x20{\x20return\x20loadStatus();\x20}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.root\x20=\x20payload.root\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20(payload.defaultModel\x20&&\x20payload.defaultModel.contextLimit)\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20STATE.models\x20=\x20payload.models\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20payload.defaultModel\x20||\x20STATE.models[0]\x20||\x20null;\x0a\x20\x20\x20\x20\x20\x20STATE.agents\x20=\x20payload.agents\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.commands\x20=\x20payload.commands\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20running\x20=\x20payload.running\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20\x20\x20renderMcp(payload.mcp);\x0a\x20\x20\x20\x20\x20\x20renderBranch(payload.branch);\x0a\x20\x20\x20\x20\x20\x20ctxText.title\x20=\x20STATE.model\x20?\x20\x27当前模型:\x27\x20+\x20(STATE.model.name\x20||\x20STATE.model.modelID)\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20//\x20恢复标签:校验本地记录的会话仍存在(排除子会话),再取桥接层默认会话兜底\x0a\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/sessions\x27).then(function\x20(listResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20existing\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20(listResult.data\x20||\x20[]).forEach(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.parentID)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20existing[item.id]\x20=\x20item;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.sessions[item.id]\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.id,\x20title:\x20item.title\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20busy:\x20running.indexOf(item.id)\x20>\x20-1,\x20unread:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20stored\x20=\x20loadTabs();\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.tabs\x20=\x20(stored.tabs\x20||\x20[]).filter(function\x20(id)\x20{\x20return\x20existing[id];\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session\x27).then(function\x20(result)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20current\x20=\x20result.data;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!current\x20||\x20!current.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ensureSession(current.id,\x20{\x20title:\x20current.title,\x20busy:\x20running.indexOf(current.id)\x20>\x20-1\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20STATE.tabs\x20=\x20[current.id];\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(current.id)\x20===\x20-1)\x20{\x20STATE.tabs.push(current.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20active\x20=\x20STATE.tabs.indexOf(stored.active)\x20>\x20-1\x20?\x20stored.active\x20:\x20STATE.tabs[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(active\x20===\x20current.id)\x20{\x20applySession(current);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/switch\x27,\x20{\x20sessionID:\x20active\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(p)\x20{\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20applySession(p.data\x20||\x20{\x20id:\x20active\x20});\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20applySession(current);\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20\x20\x20connectWs();\x0a\x20\x20\x20\x20\x20\x20openEventStream();\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27AiWith\x20服务不可用:\x27\x20+\x20(error.message\x20||\x20\x27未知错误\x27));\x0a\x20\x20\x20\x20\x20\x20messageList.innerHTML\x20=\x20\x27<div\x20class=\x22empty\x22><div\x20class=\x22big\x22>💤</div>AiWith\x20服务未就绪<br><br>请先完成运行环境安装后重启\x20dev\x20server<br><a\x20style=\x22color:#7ea6ff\x22\x20href=\x22https://opencode.ai\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>安装指引</a></div>\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20boot();\x0a})();\x0a','widget.js':db(0x305),'factory.css':db(0x1f9),'factory.js':'/**\x0a\x20*\x20AiWith\x20任务中心(Thor)面板模块(仅\x20dev)。\x0a\x20*\x20与\x20panel.js\x20解耦:自身持有工具栏按钮、覆盖层、请求与渲染;SSE\x20实时\x20+\x20轮询兜底。\x0a\x20*\x20只管理「当前应用」——应用名由插件启动时的\x20name\x20决定,桥接层统一注入,面板不做应用切换。\x0a\x20*\x20契约:面板\x20→\x20/aiwith/api/factory*(桥接)→\x20Thor;Thor\x20一律\x20POST\x20+\x20JSON,\x0a\x20*\x20\x20\x20\x20\x20\x20响应信封\x20{\x20success,\x20action,\x20data,\x20message\x20}(action\x200=成功\x20/\x202=未登录\x20/\x209=错误)。\x0a\x20*/\x0a!(function\x20()\x20{\x0a\x20\x20\x27use\x20strict\x27;\x0a\x20\x20var\x20$\x20=\x20function\x20(id)\x20{\x20return\x20document.getElementById(id);\x20};\x0a\x20\x20if\x20(!$(\x27factoryOverlay\x27))\x20{\x20return;\x20}\x0a\x0a\x20\x20//\x20----------\x20字典(与\x20Thor\x20factoryTaskStatus\x20等一致)----------\x0a\x20\x20var\x20DICT\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x200:\x20[\x27待执行\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27规划\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27执行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stage:\x20{\x200:\x20[\x27排队\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已派发\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27运行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20story:\x20{\x200:\x20[\x27待办\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已下单\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已完成\x27,\x20\x27#10B981\x27],\x206:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20priority:\x20{\x200:\x20[\x27高\x27,\x20\x27#EF4444\x27],\x202:\x20[\x27中\x27,\x20\x27#F59E0B\x27],\x204:\x20[\x27低\x27,\x20\x27#94A3B8\x27]\x20},\x0a\x20\x20\x20\x20issue:\x20{\x200:\x20[\x27待处理\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27修复中\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已解决\x27,\x20\x27#10B981\x27],\x206:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x208:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stageName:\x20{\x20plan:\x20\x27规划\x27,\x20confirm:\x20\x27双重确认\x27,\x20models:\x20\x27建模\x27,\x20tools:\x20\x27工具\x27,\x20pages:\x20\x27页面\x27,\x20backend:\x20\x27后端\x27,\x20review:\x20\x27复核\x27,\x20fix:\x20\x27修复\x27,\x20verify:\x20\x27门禁\x27,\x20e2e:\x20\x27e2e\x20验收\x27,\x20merge:\x20\x27合并发布\x27\x20},\x0a\x20\x20\x20\x20msgType:\x20{\x20text:\x20\x27文本\x27,\x20thinking:\x20\x27思考\x27,\x20tool_use:\x20\x27工具\x27,\x20tool_result:\x20\x27结果\x27,\x20user:\x20\x27用户\x27,\x20assistant:\x20\x27Agent\x27\x20},\x0a\x20\x20\x20\x20source:\x20{\x201:\x20\x27手动提交\x27,\x202:\x20\x27任务副产物\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20ENDPOINTS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x20list:\x20\x27/api/factory/tasks\x27,\x20detail:\x20\x27/api/factory/task\x27,\x20activities:\x20\x27/api/factory/activities\x27,\x20messages:\x20\x27/api/factory/messages\x27,\x20idKey:\x20\x27taskId\x27\x20},\x0a\x20\x20\x20\x20story:\x20{\x20list:\x20\x27/api/factoryStory/stories\x27,\x20detail:\x20\x27/api/factoryStory/story\x27,\x20activities:\x20\x27/api/factoryStory/activities\x27,\x20idKey:\x20\x27storyId\x27\x20},\x0a\x20\x20\x20\x20issue:\x20{\x20list:\x20\x27/api/factoryIssue/issues\x27,\x20detail:\x20\x27/api/factoryIssue/issue\x27,\x20activities:\x20\x27/api/factoryIssue/activities\x27,\x20messages:\x20\x27/api/factoryIssue/messages\x27,\x20idKey:\x20\x27issueId\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20FILTERS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x27active\x27,\x20\x27进行中\x27],\x20[\x27done\x27,\x20\x27完成\x27],\x20[\x27failed\x27,\x20\x27失败\x27],\x20[\x27cancelled\x27,\x20\x27取消\x27]],\x0a\x20\x20\x20\x20story:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待办\x27],\x20[\x272\x27,\x20\x27已下单\x27],\x20[\x274\x27,\x20\x27已完成\x27],\x20[\x276\x27,\x20\x27已取消\x27]],\x0a\x20\x20\x20\x20issue:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待处理\x27],\x20[\x272\x27,\x20\x27修复中\x27],\x20[\x274\x27,\x20\x27已解决\x27],\x20[\x276\x27,\x20\x27失败\x27],\x20[\x278\x27,\x20\x27已取消\x27]],\x0a\x20\x20};\x0a\x20\x20var\x20TAB_LABEL\x20=\x20{\x20task:\x20\x27任务\x27,\x20story:\x20\x27需求\x27,\x20issue:\x20\x27问题\x27\x20};\x0a\x20\x20var\x20ACTIVE_TASK\x20=\x20[0,\x202,\x204,\x206];\x0a\x0a\x20\x20var\x20S\x20=\x20{\x0a\x20\x20\x20\x20open:\x20false,\x20booted:\x20false,\x20app:\x20\x27\x27,\x0a\x20\x20\x20\x20tab:\x20\x27task\x27,\x20filters:\x20{\x20task:\x20\x27all\x27,\x20story:\x20\x27all\x27,\x20issue:\x20\x27all\x27\x20},\x0a\x20\x20\x20\x20lists:\x20{\x20task:\x20[],\x20story:\x20[],\x20issue:\x20[]\x20},\x0a\x20\x20\x20\x20detail:\x20null,\x20detailKind:\x20\x27\x27,\x20detailStage:\x20null,\x20activities:\x20[],\x20detailStageMessages:\x20[],\x0a\x20\x20\x20\x20createOpen:\x20false,\x20createImages:\x20[],\x0a\x20\x20\x20\x20streamDownUntil:\x200,\x0a\x20\x20};\x0a\x20\x20var\x20POLL_MS\x20=\x204000,\x20SAFETY_MS\x20=\x2030000,\x20BG_MS\x20=\x2030000;\x0a\x20\x20var\x20timers\x20=\x20{\x20poll:\x20null,\x20safety:\x20null,\x20bg:\x20null,\x20retry:\x20null,\x20debounce:\x20null\x20};\x0a\x20\x20var\x20streamAbort\x20=\x20null,\x20streamAlive\x20=\x20false;\x0a\x0a\x20\x20//\x20----------\x20工具\x20----------\x0a\x20\x20function\x20esc(s)\x20{\x0a\x20\x20\x20\x20return\x20String(s\x20==\x20null\x20?\x20\x27\x27\x20:\x20s).replace(/[&<>\x22\x27]/g,\x20function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20\x27&\x27:\x20\x27&\x27,\x20\x27<\x27:\x20\x27<\x27,\x20\x27>\x27:\x20\x27>\x27,\x20\x27\x22\x27:\x20\x27"\x27,\x20\x22\x27\x22:\x20\x27'\x27\x20}[c];\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20getToken()\x20{\x20try\x20{\x20return\x20localStorage.getItem(\x27zen-aiwith:token\x27)\x20||\x20localStorage.getItem(\x27_token_\x27)\x20||\x20\x27\x27;\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x20}\x0a\x20\x20function\x20fmtTime(sec)\x20{\x0a\x20\x20\x20\x20if\x20(!sec)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20d\x20=\x20new\x20Date(Number(sec)\x20*\x201000);\x0a\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20function\x20(n)\x20{\x20return\x20n\x20<\x2010\x20?\x20\x270\x27\x20+\x20n\x20:\x20\x27\x27\x20+\x20n;\x20};\x0a\x20\x20\x20\x20\x20\x20return\x20d.getFullYear()\x20+\x20\x27-\x27\x20+\x20p(d.getMonth()\x20+\x201)\x20+\x20\x27-\x27\x20+\x20p(d.getDate())\x20+\x20\x27\x20\x27\x20+\x20p(d.getHours())\x20+\x20\x27:\x27\x20+\x20p(d.getMinutes());\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20tag(map,\x20val)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20map[val];\x0a\x20\x20\x20\x20var\x20label\x20=\x20it\x20?\x20it[0]\x20:\x20String(val);\x0a\x20\x20\x20\x20var\x20color\x20=\x20it\x20?\x20it[1]\x20:\x20\x27#6B7280\x27;\x0a\x20\x20\x20\x20return\x20\x27<span\x20class=\x22factory-tag\x22\x20style=\x22background:\x27\x20+\x20color\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</span>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20msg(text,\x20isErr)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryMsg\x27);\x0a\x20\x20\x20\x20el.textContent\x20=\x20text;\x0a\x20\x20\x20\x20el.className\x20=\x20\x27factory-msg\x20show\x27\x20+\x20(isErr\x20?\x20\x27\x20err\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20clearTimeout(msg._t);\x0a\x20\x20\x20\x20msg._t\x20=\x20setTimeout(function\x20()\x20{\x20el.className\x20=\x20\x27factory-msg\x27;\x20},\x20isErr\x20?\x205200\x20:\x202600);\x0a\x20\x20}\x0a\x20\x20function\x20promptLogin()\x20{\x0a\x20\x20\x20\x20msg(\x27未登录:请先登录任务中心服务后重试\x27,\x20true);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20请求(面板\x20→\x20桥接\x20→\x20Thor;app\x20由桥接统一注入)----------\x0a\x20\x20function\x20head()\x20{\x0a\x20\x20\x20\x20return\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27,\x20Token:\x20getToken()\x20};\x0a\x20\x20}\x0a\x20\x20function\x20post(path,\x20body)\x20{\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith\x27\x20+\x20path,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20head(),\x20body:\x20JSON.stringify(body\x20||\x20{})\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20r.text().then(function\x20(t)\x20{\x20var\x20p\x20=\x20{};\x20try\x20{\x20p\x20=\x20JSON.parse(t);\x20}\x20catch\x20(e)\x20{\x20/*\x20非\x20JSON\x20*/\x20}\x20return\x20{\x20r:\x20r,\x20p:\x20p\x20};\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20o.p;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(p\x20&&\x20p.action\x20===\x202)\x20{\x20var\x20e\x20=\x20new\x20Error(\x27未登录\x27);\x20e.login\x20=\x20true;\x20throw\x20e;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!o.r.ok\x20||\x20(p\x20&&\x20p.success\x20===\x20false))\x20{\x20throw\x20new\x20Error((p\x20&&\x20p.message)\x20||\x20(\x27HTTP\x20\x27\x20+\x20o.r.status));\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20p\x20?\x20p.data\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20头部\x20/\x20启动\x20----------\x0a\x20\x20function\x20renderHead()\x20{\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).textContent\x20=\x20S.app\x20||\x20\x27未配置应用\x27;\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).title\x20=\x20S.app\x20?\x20(\x27当前应用:\x27\x20+\x20S.app)\x20:\x20\x27未取到应用名(插件启动\x20name)\x27;\x0a\x20\x20}\x0a\x20\x20function\x20boot()\x20{\x0a\x20\x20\x20\x20if\x20(S.booted)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20S.booted\x20=\x20true;\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/factory/config\x27).then(function\x20(r)\x20{\x20return\x20r.json();\x20}).then(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(c)\x20{\x20S.app\x20=\x20c.app\x20||\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20renderHead();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20renderHead();\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20列表\x20----------\x0a\x20\x20function\x20filtered(tab)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20S.filters[tab];\x0a\x20\x20\x20\x20var\x20list\x20=\x20S.lists[tab]\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(f\x20===\x20\x27all\x27)\x20{\x20return\x20list;\x20}\x0a\x20\x20\x20\x20return\x20list.filter(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(tab\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27active\x27)\x20{\x20return\x20ACTIVE_TASK.indexOf(it.status)\x20>\x20-1;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27done\x27)\x20{\x20return\x20it.status\x20===\x208;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27failed\x27)\x20{\x20return\x20it.status\x20===\x2010;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27cancelled\x27)\x20{\x20return\x20it.status\x20===\x2012;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20it.status\x20===\x20Number(f);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20renderTabs()\x20{\x0a\x20\x20\x20\x20var\x20tabs\x20=\x20$(\x27factoryTabs\x27).querySelectorAll(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20tabs.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20tabs[i].classList.toggle(\x27active\x27,\x20tabs[i].getAttribute(\x27data-tab\x27)\x20===\x20S.tab);\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20renderFilters()\x20{\x0a\x20\x20\x20\x20var\x20opts\x20=\x20FILTERS[S.tab]\x20||\x20[];\x0a\x20\x20\x20\x20$(\x27factoryFilters\x27).innerHTML\x20=\x20opts.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-filter\x27\x20+\x20(S.filters[S.tab]\x20===\x20o[0]\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-f=\x22\x27\x20+\x20o[0]\x20+\x20\x27\x22>\x27\x20+\x20o[1]\x20+\x20\x27</button>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20itemTask(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22task\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20(\x27任务\x20\x27\x20+\x20String(it.id).slice(-6)))\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.task,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.gitBranch\x20?\x20\x27<span>\x27\x20+\x20esc(it.gitBranch)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20(it.destructive\x20?\x20\x27<span>高风险</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemStory(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22story\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20\x27需求\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.story,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20tag(DICT.priority,\x20it.priority)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.taskId\x20?\x20\x27<span>任务\x20\x27\x20+\x20esc(String(it.taskId).slice(-6))\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemIssue(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22issue\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20it.content\x20||\x20\x27问题\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.issue,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(DICT.source[it.source]\x20||\x20\x27手动提交\x27)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.createGmt)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderList()\x20{\x0a\x20\x20\x20\x20renderFilters();\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryBody\x27);\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>未取到应用名(插件启动\x20name),无法管理工厂任务</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rows\x20=\x20filtered(S.tab);\x0a\x20\x20\x20\x20if\x20(!rows.length)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>暂无\x27\x20+\x20TAB_LABEL[S.tab]\x20+\x20\x27</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20rows.map(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27task\x27)\x20{\x20return\x20itemTask(it);\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27story\x27)\x20{\x20return\x20itemStory(it);\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20itemIssue(it);\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20loadList(tab)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[tab].list,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.lists[tab]\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20d;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20refresh()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20renderList();\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20loadList(S.tab).then(renderList).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27加载失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20详情\x20----------\x0a\x20\x20function\x20panelHead(title)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-panel-head\x22><button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryBack\x22\x20title=\x22返回\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m15\x2018-6-6\x206-6\x22/></svg></button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22factory-panel-title\x22>\x27\x20+\x20esc(title)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20openDetail(kind,\x20id)\x20{\x0a\x20\x20\x20\x20S.detailKind\x20=\x20kind;\x20S.detailStage\x20=\x20null;\x20S.detailStageMessages\x20=\x20[];\x20S.detail\x20=\x20null;\x20S.activities\x20=\x20[];\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>加载中…</div></div>\x27;\x0a\x20\x20\x20\x20loadDetail(id);\x0a\x20\x20}\x0a\x20\x20function\x20closeDetail()\x20{\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x20el.classList.remove(\x27show\x27);\x20el.innerHTML\x20=\x20\x27\x27;\x20S.detail\x20=\x20null;\x20S.detailStage\x20=\x20null;\x20}\x0a\x20\x20function\x20loadDetail(id)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[S.detailKind].detail,\x20{\x20id:\x20id\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detail\x20=\x20d\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20return\x20loadActivities(S.detailKind,\x20id).then(function\x20(acts)\x20{\x20S.activities\x20=\x20acts\x20||\x20[];\x20renderDetail();\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(el)\x20{\x20el.innerHTML\x20=\x20panelHead(\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>\x27\x20+\x20esc(e.login\x20?\x20\x27未登录\x27\x20:\x20(\x27加载失败:\x27\x20+\x20e.message))\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20loadActivities(kind,\x20id)\x20{\x0a\x20\x20\x20\x20var\x20body\x20=\x20{};\x20body[ENDPOINTS[kind].idKey]\x20=\x20id;\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[kind].activities,\x20body).catch(function\x20()\x20{\x20return\x20[];\x20});\x0a\x20\x20}\x0a\x20\x20function\x20infoRow(k,\x20v)\x20{\x20return\x20v\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>\x27\x20+\x20esc(k)\x20+\x20\x27</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(v)\x20+\x20\x27</span></div>\x27\x20:\x20\x27\x27;\x20}\x0a\x20\x20function\x20renderDetail()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.detailKind,\x20o\x20=\x20S.detail\x20||\x20{};\x0a\x20\x20\x20\x20var\x20body\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>任务信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.task,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27创建人\x27,\x20o.creator)\x20+\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.destructive\x20?\x20infoRow(\x27标记\x27,\x20\x27高风险(删除/重构/迁移)\x27)\x20:\x20\x27\x27)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.result\x20&&\x20o.result.summary)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>本地执行结果</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.result.summary)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20(Array.isArray(o.result.files)\x20&&\x20o.result.files.length\x20?\x20\x27<div\x20class=\x22factory-item-sub\x22\x20style=\x22margin-top:6px\x22>\x27\x20+\x20o.result.files.map(function\x20(f)\x20{\x20return\x20\x27<span>\x27\x20+\x20esc(f)\x20+\x20\x27</span>\x27;\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>故事信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.story,\x20o.status)\x20+\x20\x27\x20\x27\x20+\x20tag(DICT.priority,\x20o.priority)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.taskId\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>关联任务</span><span\x20class=\x22factory-row-v\x22><a\x20href=\x22javascript:void(0)\x22\x20data-open-task=\x22\x27\x20+\x20esc(o.taskId)\x20+\x20\x27\x22>\x27\x20+\x20esc(o.taskId)\x20+\x20\x27</a></span></div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述\x20/\x20验收条件</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.issue,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27来源\x27,\x20DICT.source[o.source]\x20||\x20\x27手动提交\x27)\x20+\x20infoRow(\x27来源任务\x27,\x20o.taskId)\x20+\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.content)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题内容</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.content)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20if\x20(o.stages\x20&&\x20o.stages.length)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>修复阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(S.detailStage)\x20{\x20body\x20+=\x20transcriptHtml(S.detailStage);\x20}\x0a\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>活动时间线</div>\x27\x20+\x20activitiesHtml()\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20$(\x27factoryDetail\x27).innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22>\x27\x20+\x20body\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20stagesHtml(kind,\x20stages)\x20{\x0a\x20\x20\x20\x20if\x20(!stages\x20||\x20!stages.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无阶段</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20stages.map(function\x20(t)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-stage\x22\x20data-stage=\x22\x27\x20+\x20esc(t.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(DICT.stageName[t.stage]\x20||\x20t.stage)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.stage,\x20t.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(t.model\x20||\x20\x27-\x27)\x20+\x20\x27</span><span>第\x27\x20+\x20esc(t.attempt)\x20+\x20\x27次</span>\x27\x20+\x20(t.failureReason\x20?\x20\x27<span\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(t.failureReason)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20isLocalTask(o)\x20{\x20return\x20!!(o\x20&&\x20o.gitBranch\x20&&\x20String(o.gitBranch).indexOf(\x27local-\x27)\x20===\x200);\x20}\x0a\x20\x20function\x20actionsHtml(kind,\x20o)\x20{\x0a\x20\x20\x20\x20var\x20b\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isLocalTask(o))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b.push(\x27<button\x20class=\x22factory-btn\x20primary\x22\x20data-act=\x22localStart\x22>本地执行</button>\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20待执行的远程任务:手工立即拉进流水线(默认等夜间\x2022:00\x20批次)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27startTask\x27,\x20\x27立即执行\x27,\x20\x27primary\x27,\x20\x27/api/factory/startTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定立即执行?任务将进入工厂流水线\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x208\x20},\x20\x27确认本地执行已完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记失败\x27,\x20\x27danger\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x2010\x20},\x20\x27确认本地执行失败?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20//\x20本地任务(gitBranch=local-*):提供「转远端重跑」,把需求交回远端工厂流水线\x0a\x20\x20\x20\x20\x20\x20if\x20(isLocalTask(o)\x20&&\x20[0,\x204,\x208,\x2010].indexOf(o.status)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(\x27<button\x20class=\x22factory-btn\x22\x20data-act=\x22remoteRerun\x22>转远端重跑</button>\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(ACTIVE_TASK.indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelTask\x27,\x20\x27取消任务\x27,\x20\x27danger\x27,\x20\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此任务?进行中的阶段将停止\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27orderTask\x27,\x20\x27下单到工厂\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/orderTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定下单?将生成工厂任务并自动执行\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27removeStory\x27,\x20\x27删除\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/removeStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定删除此待办需求?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(o.status\x20===\x202)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27markDone\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/markDone\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定验收通过并标记完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27unorder\x27,\x20\x27撤回下单\x27,\x20\x27\x27,\x20\x27/api/factoryStory/unorder\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定撤回下单?运行中任务将一并取消\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20!==\x204)\x20{\x20b.push(btn(\x27cancelStory\x27,\x20\x27取消\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/cancelStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此需求?\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x204,\x206].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27reopenIssue\x27,\x20\x27重新修复\x27,\x20\x27primary\x27,\x20\x27/api/factoryIssue/reopenIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定重新修复此问题?\x27));\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x202].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelIssue\x27,\x20\x27取消问题\x27,\x20\x27danger\x27,\x20\x27/api/factoryIssue/cancelIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此问题?\x27));\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20b.length\x20?\x20\x27<div\x20class=\x22factory-actions\x22>\x27\x20+\x20b.join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27;\x0a\x20\x20}\x0a\x20\x20function\x20btn(name,\x20label,\x20cls,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-btn\x20\x27\x20+\x20(cls\x20||\x20\x27\x27)\x20+\x20\x27\x22\x20data-act=\x22\x27\x20+\x20name\x20+\x20\x27\x22\x20data-ep=\x22\x27\x20+\x20esc(ep)\x20+\x20\x27\x22\x20data-body=\x22\x27\x20+\x20esc(JSON.stringify(body))\x20+\x20\x27\x22\x20data-confirm=\x22\x27\x20+\x20esc(confirmText\x20||\x20\x27\x27)\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</button>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20activitiesHtml()\x20{\x0a\x20\x20\x20\x20var\x20acts\x20=\x20S.activities\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!acts.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无活动</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20acts.map(function\x20(a)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(a.summary\x20||\x20\x27\x27)\x20+\x20\x27</span><span\x20style=\x22color:var(--text-faint);font-size:11px\x22>\x27\x20+\x20fmtTime(a.createGmt)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20transcriptHtml(stageId)\x20{\x0a\x20\x20\x20\x20var\x20m\x20=\x20S.detailStageMessages\x20||\x20[];\x0a\x20\x20\x20\x20var\x20list\x20=\x20m.length\x20?\x20m.map(function\x20(x)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-msg-item\x22><span\x20class=\x22factory-msg-type\x22>\x27\x20+\x20esc(DICT.msgType[x.type]\x20||\x20x.type)\x20+\x20\x27</span>\x27\x20+\x20esc(x.content\x20||\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20:\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无执行消息</div>\x27;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>执行记录\x20<span\x20style=\x22color:var(--text-faint)\x22>#\x27\x20+\x20esc(String(stageId).slice(-6))\x20+\x20\x27</span></div>\x27\x20+\x20list\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20动作\x20----------\x0a\x20\x20function\x20runAction(name,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20if\x20(confirmText\x20&&\x20!window.confirm(confirmText))\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20post(ep,\x20body).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已提交\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20return\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg((name\x20?\x20name\x20+\x20\x27:\x27\x20:\x20\x27\x27)\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20//\x20转远端重跑:新建一个非本地任务承接同一需求;当前本地任务若仍活跃则取消\x0a\x20\x20function\x20rerunRemote(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/createTask\x27,\x20{\x20title:\x20task.title\x20||\x20\x27\x27,\x20description:\x20task.description\x20||\x20\x27\x27\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已转远端工厂执行\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(task.status\x20===\x200\x20||\x20task.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20post(\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20task.id\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27转远端失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20openTranscript(stageId)\x20{\x0a\x20\x20\x20\x20S.detailStage\x20=\x20stageId;\x20S.detailStageMessages\x20=\x20[];\x0a\x20\x20\x20\x20renderDetail();\x0a\x20\x20\x20\x20var\x20ep\x20=\x20ENDPOINTS[S.detailKind].messages;\x0a\x20\x20\x20\x20if\x20(!ep)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(ep,\x20{\x20stageId:\x20stageId,\x20page:\x200,\x20pageSize:\x20100\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detailStageMessages\x20=\x20(d\x20&&\x20(d.list\x20||\x20d.data))\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detailStage\x20===\x20stageId)\x20{\x20renderDetail();\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20新建(居中弹层,不侧滑):标题合并原描述/内容;相关图片本地上传/粘贴;页面地址可取宿主页面\x20----------\x0a\x20\x20var\x20MAX_IMAGES\x20=\x205;\x0a\x20\x20var\x20IMAGE_RE\x20=\x20/^image\x5c/(png|jpe?g|gif|webp)$/;\x0a\x0a\x20\x20//\x20图片经\x20kooteam\x20转发上传(与聊天附件同通道),返回外链地址\x0a\x20\x20function\x20uploadImage(file)\x20{\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(!token)\x20{\x20return\x20Promise.reject(new\x20Error(\x27未登录,无法上传图片,请先登录后再试\x27));\x20}\x0a\x20\x20\x20\x20var\x20form\x20=\x20new\x20FormData();\x0a\x20\x20\x20\x20form.append(\x27file\x27,\x20file,\x20file.name);\x0a\x20\x20\x20\x20form.append(\x27public\x27,\x20\x27public\x27);\x0a\x20\x20\x20\x20return\x20fetch(\x27/kooteam/api/zen/pair\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20token:\x20token\x20},\x20body:\x20form\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x20return\x20r.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!p\x20||\x20p.success\x20===\x20false)\x20{\x20throw\x20new\x20Error((p\x20&&\x20p.message)\x20||\x20\x27上传失败\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!p.data\x20||\x20!p.data.url)\x20{\x20throw\x20new\x20Error(\x27未返回图片地址\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20p.data.url;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20revokePreview(it)\x20{\x0a\x20\x20\x20\x20if\x20(it\x20&&\x20it.previewUrl\x20&&\x20it.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20URL.revokeObjectURL(it.previewUrl);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20renderCreateThumbs()\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20$(\x27f_thumbs\x27);\x0a\x20\x20\x20\x20if\x20(!box)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20box.innerHTML\x20=\x20S.createImages.map(function\x20(it,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-thumb\x27\x20+\x20(it.uploading\x20?\x20\x27\x20pending\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20esc(it.name)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<img\x20src=\x22\x27\x20+\x20esc(it.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22rm\x22\x20data-rm=\x22\x27\x20+\x20i\x20+\x20\x27\x22\x20title=\x22移除\x22>×</button></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20addCreateFiles(fileList)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20Array.prototype.slice.call(fileList\x20||\x20[]).filter(function\x20(f)\x20{\x20return\x20IMAGE_RE.test(f.type);\x20});\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20files.forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.createImages.length\x20>=\x20MAX_IMAGES)\x20{\x20msg(\x27最多上传\x20\x27\x20+\x20MAX_IMAGES\x20+\x20\x27\x20张图片\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20entry\x20=\x20{\x20name:\x20file.name\x20||\x20\x27image.png\x27,\x20previewUrl:\x20URL.createObjectURL(file),\x20url:\x20\x27\x27,\x20uploading:\x20true\x20};\x0a\x20\x20\x20\x20\x20\x20S.createImages.push(entry);\x0a\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20uploadImage(file).then(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.url\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.uploading\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20revokePreview(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.previewUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20i\x20=\x20S.createImages.indexOf(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x20-1)\x20{\x20S.createImages.splice(i,\x201);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20revokePreview(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27图片上传失败:\x27\x20+\x20error.message,\x20true);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20onModalPaste(e)\x20{\x0a\x20\x20\x20\x20if\x20(!S.createOpen)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20files\x20=\x20e.clipboardData\x20&&\x20e.clipboardData.files;\x0a\x20\x20\x20\x20var\x20hasImage\x20=\x20files\x20&&\x20Array.prototype.some.call(files,\x20function\x20(f)\x20{\x20return\x20IMAGE_RE.test(f.type);\x20});\x0a\x20\x20\x20\x20if\x20(hasImage)\x20{\x0a\x20\x20\x20\x20\x20\x20e.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addCreateFiles(files);\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20//\x20勾选「当前页面」:取宿主页(父级)location.pathname\x20填入;取消勾选清空\x0a\x20\x20function\x20toggleCurPage()\x20{\x0a\x20\x20\x20\x20var\x20cb\x20=\x20$(\x27f_curPage\x27),\x20input\x20=\x20$(\x27f_page\x27);\x0a\x20\x20\x20\x20if\x20(!cb\x20||\x20!input)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!cb.checked)\x20{\x20input.value\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20var\x20path\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.parent\x20&&\x20window.parent\x20!==\x20window)\x20{\x20path\x20=\x20window.parent.location.pathname;\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20path\x20=\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20if\x20(path)\x20{\x20input.value\x20=\x20path;\x20}\x20else\x20{\x20cb.checked\x20=\x20false;\x20msg(\x27取不到宿主页面地址(跨域或独立面板)\x27,\x20true);\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20openCreate()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20msg(\x27未取到应用名,无法创建\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20S.createImages\x20=\x20[];\x0a\x20\x20\x20\x20S.createOpen\x20=\x20true;\x0a\x20\x20\x20\x20var\x20fields\x20=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>标题\x20*</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<input\x20class=\x22factory-input\x22\x20id=\x22f_title\x22\x20placeholder=\x22\x27\x20+\x20(kind\x20===\x20\x27issue\x27\x20?\x20\x27问题标题:现象\x20/\x20期望,可写完整些\x27\x20:\x20\x27需求标题:一句话说明,可写完整些\x27)\x20+\x20\x27\x22></div>\x27;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20+=\x20\x27<label\x20class=\x22factory-check\x22><input\x20type=\x22checkbox\x22\x20id=\x22f_start\x22>\x20立即执行(不勾选则待夜间\x2022:00\x20批次统一执行)</label>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>优先级</label><select\x20class=\x22factory-input\x22\x20id=\x22f_priority\x22><option\x20value=\x220\x22>高</option><option\x20value=\x222\x22\x20selected>中</option><option\x20value=\x224\x22>低</option></select></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>相关图片</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-thumbs\x22\x20id=\x22f_thumbs\x22></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-upzone\x22\x20id=\x22f_upzone\x22\x20title=\x22点击选择文件,或直接粘贴\x22>点击上传\x20/\x20Ctrl+V\x20粘贴图片(最多\x20\x27\x20+\x20MAX_IMAGES\x20+\x20\x27\x20张)</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<input\x20type=\x22file\x22\x20id=\x22f_files\x22\x20accept=\x22image/png,image/jpeg,image/gif,image/webp\x22\x20multiple\x20style=\x22display:none\x22></div>\x27;\x0a\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>页面地址</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-page-row\x22><input\x20class=\x22factory-input\x22\x20id=\x22f_page\x22\x20placeholder=\x22所在页面路径,可勾选自动填充\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<label\x20class=\x22factory-check\x22\x20style=\x22margin:0;white-space:nowrap\x22><input\x20type=\x22checkbox\x22\x20id=\x22f_curPage\x22>\x20当前页面</label></div></div>\x27;\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryModal\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-modal-card\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-head\x22><span\x20class=\x22factory-modal-title\x22>新建\x27\x20+\x20TAB_LABEL[kind]\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryModalClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-body\x22>\x27\x20+\x20fields\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-foot\x22><button\x20class=\x22factory-btn\x22\x20id=\x22factoryCancel\x22>取消</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22factory-btn\x20primary\x22\x20id=\x22factorySubmit\x22>创建\x27\x20+\x20TAB_LABEL[kind]\x20+\x20\x27</button></div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20closeCreate()\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryModal\x27);\x0a\x20\x20\x20\x20if\x20(!el)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20el.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20el.setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20S.createImages.forEach(revokePreview);\x0a\x20\x20\x20\x20S.createImages\x20=\x20[];\x0a\x20\x20\x20\x20S.createOpen\x20=\x20false;\x0a\x20\x20}\x0a\x20\x20function\x20composeCreated()\x20{\x0a\x20\x20\x20\x20//\x20页面地址\x20+\x20相关图片\x20→\x20组装为描述/内容(文本字段已合并进标题)\x0a\x20\x20\x20\x20var\x20parts\x20=\x20[];\x0a\x20\x20\x20\x20var\x20page\x20=\x20(($(\x27f_page\x27)\x20||\x20{}).value\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(page)\x20{\x20parts.push(\x27页面地址:\x27\x20+\x20page);\x20}\x0a\x20\x20\x20\x20var\x20urls\x20=\x20S.createImages.map(function\x20(it)\x20{\x20return\x20it.url;\x20}).filter(Boolean);\x0a\x20\x20\x20\x20if\x20(urls.length)\x20{\x20parts.push(\x27相关图片:\x5cn\x27\x20+\x20urls.map(function\x20(u)\x20{\x20return\x20\x27\x27;\x20}).join(\x27\x5cn\x27));\x20}\x0a\x20\x20\x20\x20return\x20parts.join(\x27\x5cn\x5cn\x27);\x0a\x20\x20}\x0a\x20\x20function\x20submitCreate()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20var\x20title\x20=\x20(($(\x27f_title\x27)\x20||\x20{}).value\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(!title)\x20{\x20msg(\x27标题不能为空\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.createImages.some(function\x20(it)\x20{\x20return\x20it.uploading;\x20}))\x20{\x20msg(\x27图片还在上传中,请稍候\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20var\x20composed\x20=\x20composeCreated();\x0a\x20\x20\x20\x20var\x20body\x20=\x20{\x20title:\x20title\x20};\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20立即执行:start=1\x20直接拉进流水线;默认待夜间\x2022:00\x20批次\x0a\x20\x20\x20\x20\x20\x20if\x20(($(\x27f_start\x27)\x20||\x20{}).checked)\x20{\x20body.start\x20=\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(composed)\x20{\x20body.description\x20=\x20composed;\x20}\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(composed)\x20{\x20body.description\x20=\x20composed;\x20}\x0a\x20\x20\x20\x20\x20\x20body.priority\x20=\x20Number(($(\x27f_priority\x27)\x20||\x20{}).value\x20||\x202);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27issue\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20问题:content\x20供修复\x20agent\x20使用,无图片/页面时兜底用标题\x0a\x20\x20\x20\x20\x20\x20body.content\x20=\x20composed\x20||\x20title;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(composed)\x20{\x0a\x20\x20\x20\x20\x20\x20body.description\x20=\x20composed;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20ep\x20=\x20{\x20task:\x20\x27/api/factory/createTask\x27,\x20story:\x20\x27/api/factoryStory/createStory\x27,\x20issue:\x20\x27/api/factoryIssue/createIssue\x27\x20}[kind];\x0a\x20\x20\x20\x20var\x20submit\x20=\x20$(\x27factorySubmit\x27);\x0a\x20\x20\x20\x20submit.disabled\x20=\x20true;\x0a\x20\x20\x20\x20post(ep,\x20body).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20closeCreate();\x0a\x20\x20\x20\x20\x20\x20//\x20文案随路径:任务勾选立即执行=已进流水线;默认待夜间批;需求仅入池(下单才建任务)\x0a\x20\x20\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(body.start\x20?\x20\x27已创建,立即执行\x27\x20:\x20\x27已创建,待夜间\x2022:00\x20批次执行\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27需求已创建,下单后进厂\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27问题已创建,进入修复流水线\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20submit.disabled\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27创建失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20本地执行:把需求交给本地\x20AiWith\x20会话,在当前项目里跑\x20----------\x0a\x20\x20function\x20composeLocalPrompt(task)\x20{\x0a\x20\x20\x20\x20var\x20lines\x20=\x20[\x27【任务中心\x20·\x20本地执行】请在当前项目中完成以下任务,完成后简要总结改动:\x27,\x20\x27\x27];\x0a\x20\x20\x20\x20lines.push(\x27标题:\x27\x20+\x20(task.title\x20||\x20\x27\x27));\x0a\x20\x20\x20\x20if\x20(task.description)\x20{\x20lines.push(\x27描述:\x27);\x20lines.push(task.description);\x20}\x0a\x20\x20\x20\x20return\x20lines.join(\x27\x5cn\x27);\x0a\x20\x20}\x0a\x20\x20function\x20startLocal(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20先写回「执行中(4)」;失败不阻断本地执行\x0a\x20\x20\x20\x20post(\x27/api/factory/localResult\x27,\x20{\x20id:\x20task.id,\x20status:\x204\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20var\x20prompt\x20=\x20composeLocalPrompt(task);\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/session/reset\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20\x27{}\x27\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x20return\x20r.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20(payload\x20&&\x20payload.data)\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20throw\x20new\x20Error(\x27未创建本地会话\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/session/\x27\x20+\x20session.id\x20+\x20\x27/prompt\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20JSON.stringify({\x20text:\x20prompt\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20close();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.dispatchEvent(new\x20CustomEvent(\x27aiwith:open-session\x27,\x20{\x20detail:\x20{\x20id:\x20session.id,\x20title:\x20task.title\x20}\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20msg(\x27本地执行启动失败:\x27\x20+\x20(e\x20&&\x20e.message\x20?\x20e.message\x20:\x20e),\x20true);\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20SSE\x20实时\x20+\x20轮询兜底\x20----------\x0a\x20\x20function\x20scheduleRefresh()\x20{\x0a\x20\x20\x20\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.debounce\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x0a\x20\x20\x20\x20},\x20350);\x0a\x20\x20}\x0a\x20\x20function\x20connectStream()\x20{\x0a\x20\x20\x20\x20if\x20(!S.open)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20后端推送已知不可用:不反复请求,等低频重探时间到再试(轮询兜底接管)\x0a\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20clearTimeout(timers.retry);\x0a\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20S.streamDownUntil\x20-\x20Date.now());\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20ac\x20=\x20new\x20AbortController();\x0a\x20\x20\x20\x20streamAbort\x20=\x20ac;\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/factory/stream\x27,\x20{\x20headers:\x20{\x20Token:\x20getToken()\x20},\x20signal:\x20ac.signal\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(res)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.ok\x20||\x20!res.body)\x20{\x20throw\x20new\x20Error(\x27stream\x20http\x20\x27\x20+\x20res.status);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.streamDownUntil\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20reader\x20=\x20res.body.getReader();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20dec\x20=\x20new\x20TextDecoder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20buf\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pump\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20reader.read().then(function\x20(chunk)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(chunk.done)\x20{\x20throw\x20new\x20Error(\x27stream\x20ended\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20+=\x20dec.decode(chunk.value,\x20{\x20stream:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20idx;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while\x20((idx\x20=\x20buf.indexOf(\x27\x5cn\x5cn\x27))\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20handleFrame(buf.slice(0,\x20idx));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20=\x20buf.slice(idx\x20+\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ac.signal.aborted)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20delay;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.streamDownUntil\x20-\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x20(S.retries\x20||\x200)\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.retries\x20<=\x204\x20?\x201000\x20*\x20Math.pow(2,\x20S.retries)\x20:\x2060000;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20delay);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20handleFrame(frame)\x20{\x0a\x20\x20\x20\x20var\x20datas\x20=\x20frame.split(\x27\x5cn\x27).filter(function\x20(l)\x20{\x20return\x20l.indexOf(\x27data:\x27)\x20===\x200;\x20}).map(function\x20(l)\x20{\x20return\x20l.slice(5).trim();\x20});\x0a\x20\x20\x20\x20if\x20(!datas.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20evt\x20=\x20null;\x0a\x20\x20\x20\x20try\x20{\x20evt\x20=\x20JSON.parse(datas.join(\x27\x5cn\x27));\x20}\x20catch\x20(e)\x20{\x20evt\x20=\x20null;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27ping\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27unavailable\x27)\x20{\x20S.streamDownUntil\x20=\x20Date.now()\x20+\x205\x20*\x2060\x20*\x201000;\x20return;\x20}\x0a\x20\x20\x20\x20scheduleRefresh();\x0a\x20\x20}\x0a\x20\x20function\x20startSync()\x20{\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20connectStream();\x0a\x20\x20\x20\x20timers.poll\x20=\x20setInterval(function\x20()\x20{\x20if\x20(!streamAlive)\x20{\x20refresh();\x20}\x20},\x20POLL_MS);\x0a\x20\x20\x20\x20timers.safety\x20=\x20setInterval(function\x20()\x20{\x20refresh();\x20},\x20SAFETY_MS);\x0a\x20\x20}\x0a\x20\x20function\x20stopSync()\x20{\x0a\x20\x20\x20\x20clearInterval(timers.poll);\x20clearInterval(timers.safety);\x20clearTimeout(timers.retry);\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.poll\x20=\x20timers.safety\x20=\x20timers.retry\x20=\x20timers.debounce\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(streamAbort)\x20{\x20try\x20{\x20streamAbort.abort();\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x20streamAbort\x20=\x20null;\x20}\x0a\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20后台低频(关闭时维护未读点)----------\x0a\x20\x20function\x20startBg()\x20{\x20stopBg();\x20timers.bg\x20=\x20setInterval(bgPoll,\x20BG_MS);\x20}\x0a\x20\x20function\x20stopBg()\x20{\x20clearInterval(timers.bg);\x20timers.bg\x20=\x20null;\x20}\x0a\x20\x20function\x20bgPoll()\x20{\x0a\x20\x20\x20\x20if\x20(S.open\x20||\x20!S.app)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/tasks\x27,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20setUnread(list.some(function\x20(t)\x20{\x20return\x20ACTIVE_TASK.indexOf(t.status)\x20>\x20-1;\x20}));\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20function\x20setUnread(on)\x20{\x20var\x20dot\x20=\x20$(\x27factoryUnread\x27);\x20if\x20(dot)\x20{\x20dot.classList.toggle(\x27show\x27,\x20!!on);\x20}\x20}\x0a\x20\x20function\x20clearUnread()\x20{\x20setUnread(false);\x20}\x0a\x0a\x20\x20//\x20----------\x20打开/关闭\x20----------\x0a\x20\x20function\x20open()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20true;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.add(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20clearUnread();\x0a\x20\x20\x20\x20boot().then(function\x20()\x20{\x20refresh();\x20});\x0a\x20\x20\x20\x20startSync();\x0a\x20\x20\x20\x20stopBg();\x0a\x20\x20}\x0a\x20\x20function\x20close()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20false;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20\x20\x20closeDetail();\x0a\x20\x20\x20\x20closeCreate();\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20startBg();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20事件绑定\x20----------\x0a\x20\x20$(\x27factoryBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20else\x20{\x20open();\x20}\x20});\x0a\x20\x20//\x20会话类按钮(MCP/新建会话)要求切回会话页时收起工厂面板\x0a\x20\x20document.addEventListener(\x27zen-aiwith-back-to-chat\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20});\x0a\x20\x20//\x20切换到其它工具栏功能时收起工厂面板(主题切换除外,不打断),避免面板开在覆盖层之下\x0a\x20\x20var\x20toolRail\x20=\x20document.querySelector(\x27.tool-rail\x27);\x0a\x20\x20if\x20(toolRail)\x20{\x0a\x20\x20\x20\x20//\x20capture\x20阶段:panel.js\x20对\x20history/review\x20调了\x20stopPropagation,冒泡监听收不到\x0a\x20\x20\x20\x20//\x20newSessionBtn\x20不在此收起:panel\x20侧守卫要先看到「覆盖层开着」才能拦下新建动作(只切回会话页)\x0a\x20\x20\x20\x20toolRail.addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20b\x20=\x20e.target.closest(\x27.icon-btn\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!b\x20||\x20b.id\x20===\x20\x27factoryBtn\x27\x20||\x20b.id\x20===\x20\x27themeBtn\x27\x20||\x20b.id\x20===\x20\x27fullscreenBtn\x27\x20||\x20b.id\x20===\x20\x27newSessionBtn\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.open)\x20{\x20close();\x20}\x0a\x20\x20\x20\x20},\x20true);\x0a\x20\x20}\x0a\x20\x20$(\x27factoryClose\x27).addEventListener(\x27click\x27,\x20close);\x0a\x20\x20$(\x27factoryRefresh\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20refresh();\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20$(\x27factoryNew\x27).addEventListener(\x27click\x27,\x20openCreate);\x0a\x20\x20$(\x27factoryTabs\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20t\x20=\x20e.target.closest(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20if\x20(!t)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.tab\x20=\x20t.getAttribute(\x27data-tab\x27);\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20refresh();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryFilters\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20e.target.closest(\x27.factory-filter\x27);\x0a\x20\x20\x20\x20if\x20(!f)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.filters[S.tab]\x20=\x20f.getAttribute(\x27data-f\x27);\x0a\x20\x20\x20\x20renderList();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryBody\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20e.target.closest(\x27.factory-item\x27);\x0a\x20\x20\x20\x20if\x20(it)\x20{\x20openDetail(it.getAttribute(\x27data-kind\x27),\x20it.getAttribute(\x27data-id\x27));\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryDetail\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factoryBack\x27))\x20{\x20closeDetail();\x20return;\x20}\x0a\x20\x20\x20\x20var\x20openTask\x20=\x20e.target.closest(\x27[data-open-task]\x27);\x0a\x20\x20\x20\x20if\x20(openTask)\x20{\x20openDetail(\x27task\x27,\x20openTask.getAttribute(\x27data-open-task\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20stage\x20=\x20e.target.closest(\x27.factory-stage\x27);\x0a\x20\x20\x20\x20if\x20(stage)\x20{\x20openTranscript(stage.getAttribute(\x27data-stage\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20localBtn\x20=\x20e.target.closest(\x27[data-act=\x22localStart\x22]\x27);\x0a\x20\x20\x20\x20if\x20(localBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20startLocal({\x20id:\x20S.detail.id,\x20title:\x20S.detail.title,\x20description:\x20S.detail.description\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20rerunBtn\x20=\x20e.target.closest(\x27[data-act=\x22remoteRerun\x22]\x27);\x0a\x20\x20\x20\x20if\x20(rerunBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.confirm(\x27转远端工厂重跑?将新建一个远端任务,当前本地任务将被取消\x27))\x20{\x20rerunRemote(S.detail\x20||\x20{});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20act\x20=\x20e.target.closest(\x27.factory-btn[data-act]\x27);\x0a\x20\x20\x20\x20if\x20(act)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20body\x20=\x20{};\x20try\x20{\x20body\x20=\x20JSON.parse(act.getAttribute(\x27data-body\x27)\x20||\x20\x27{}\x27);\x20}\x20catch\x20(err)\x20{\x20body\x20=\x20{};\x20}\x0a\x20\x20\x20\x20\x20\x20runAction(act.getAttribute(\x27data-act\x27),\x20act.getAttribute(\x27data-ep\x27),\x20body,\x20act.getAttribute(\x27data-confirm\x27));\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20//\x20新建弹层:点击(遮罩关闭/取消/提交/选图/移除图/勾选当前页面)+\x20change(文件选择)+\x20paste(粘贴图片)\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target\x20===\x20this)\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factoryModalClose\x27)\x20||\x20e.target.closest(\x27#factoryCancel\x27))\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factorySubmit\x27))\x20{\x20submitCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#f_upzone\x27))\x20{\x20var\x20fi\x20=\x20$(\x27f_files\x27);\x20if\x20(fi)\x20{\x20fi.click();\x20}\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rm\x20=\x20e.target.closest(\x27[data-rm]\x27);\x0a\x20\x20\x20\x20if\x20(rm)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20i\x20=\x20Number(rm.getAttribute(\x27data-rm\x27));\x0a\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x20-1\x20&&\x20S.createImages[i])\x20{\x20revokePreview(S.createImages[i]);\x20S.createImages.splice(i,\x201);\x20renderCreateThumbs();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(e.target.id\x20===\x20\x27f_curPage\x27)\x20{\x20toggleCurPage();\x20return;\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27change\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target\x20&&\x20e.target.id\x20===\x20\x27f_files\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20addCreateFiles(e.target.files);\x0a\x20\x20\x20\x20\x20\x20e.target.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27paste\x27,\x20onModalPaste);\x0a\x20\x20document.addEventListener(\x27keydown\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.key\x20!==\x20\x27Escape\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.createOpen)\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.open)\x20{\x20close();\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20启动:取工厂源与当前应用,开启后台未读轮询\x0a\x20\x20boot().then(startBg);\x0a})();\x0a','debug.css':'/*\x20AiWith\x20页内调试面板覆盖层\x20——\x20复用\x20panel.css\x20的主题变量(免\x20chrome-devtools\x20授权)\x20*/\x0a.debug-overlay\x20{\x0a\x20\x20position:\x20fixed;\x20top:\x200;\x20right:\x200;\x20bottom:\x200;\x20left:\x2046px;\x20z-index:\x2088;\x0a\x20\x20display:\x20none;\x20flex-direction:\x20column;\x0a\x20\x20background:\x20var(--bg);\x20color:\x20var(--text);\x20font-size:\x2013px;\x0a}\x0a.debug-overlay.show\x20{\x20display:\x20flex;\x20}\x0a\x0a.debug-head\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20padding:\x2010px\x2012px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--header-bg);\x20backdrop-filter:\x20blur(8px);\x0a}\x0a.debug-title\x20{\x20font-weight:\x20600;\x20font-size:\x2014px;\x20}\x0a.debug-target\x20{\x0a\x20\x20margin-left:\x20auto;\x20font-size:\x2012px;\x20padding:\x202px\x209px;\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border-strong);\x20background:\x20var(--bg-card);\x20color:\x20var(--text-dim);\x0a\x20\x20max-width:\x20320px;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x0a}\x0a.debug-target.online\x20{\x20color:\x20var(--ok);\x20border-color:\x20var(--ok);\x20}\x0a.debug-target.offline\x20{\x20color:\x20var(--err);\x20border-color:\x20var(--err);\x20}\x0a.debug-icon-btn\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20justify-content:\x20center;\x20width:\x2026px;\x20height:\x2026px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x0a}\x0a.debug-icon-btn:hover\x20{\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a\x0a.debug-tabs\x20{\x20display:\x20flex;\x20gap:\x204px;\x20padding:\x208px\x2012px\x200;\x20}\x0a.debug-tab\x20{\x0a\x20\x20border:\x20none;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20font-size:\x2013px;\x20padding:\x206px\x2012px\x208px;\x0a\x20\x20border-radius:\x208px\x208px\x200\x200;\x20cursor:\x20pointer;\x20border-bottom:\x202px\x20solid\x20transparent;\x0a}\x0a.debug-tab.active\x20{\x20color:\x20var(--brand-text);\x20border-bottom-color:\x20var(--brand);\x20font-weight:\x20600;\x20}\x0a\x0a.debug-body\x20{\x20flex:\x201;\x20overflow-y:\x20auto;\x20padding:\x2010px\x2012px\x2024px;\x20}\x0a.debug-pane\x20{\x20display:\x20flex;\x20flex-direction:\x20column;\x20gap:\x208px;\x20}\x0a.debug-pane[hidden]\x20{\x20display:\x20none;\x20}\x0a.debug-row\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20flex-wrap:\x20wrap;\x20}\x0a.debug-row\x20label\x20{\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20}\x0a.debug-row\x20input[type=\x22text\x22],\x20.debug-row\x20input:not([type]),\x20.debug-row\x20input[type=\x22number\x22]\x20{\x0a\x20\x20flex:\x200\x201\x20220px;\x20min-width:\x200;\x20padding:\x205px\x209px;\x20font-size:\x2012px;\x20color:\x20var(--text);\x0a\x20\x20background:\x20var(--bg-card);\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20outline:\x20none;\x0a}\x0a.debug-row\x20input[type=\x22number\x22]\x20{\x20flex:\x200\x200\x2078px;\x20}\x0a.debug-row\x20input:focus,\x20.debug-pane\x20textarea:focus\x20{\x20border-color:\x20var(--brand-strong);\x20}\x0a.debug-btn\x20{\x0a\x20\x20font-size:\x2012px;\x20padding:\x205px\x2012px;\x20border-radius:\x208px;\x20border:\x201px\x20solid\x20var(--border);\x0a\x20\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x20text-decoration:\x20none;\x0a}\x0a.debug-btn:hover\x20{\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a.debug-btn.primary\x20{\x20border:\x20none;\x20background:\x20var(--gradient);\x20color:\x20#fff;\x20}\x0a.debug-hint\x20{\x20font-size:\x2011px;\x20color:\x20var(--text-faint);\x20}\x0a.debug-auto\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x204px;\x20margin-left:\x20auto;\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20}\x0a\x0a.debug-grid\x20{\x20display:\x20grid;\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(280px,\x201fr));\x20gap:\x208px;\x20}\x0a.debug-card\x20{\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x2010px;\x20background:\x20var(--bg-card);\x20overflow:\x20hidden;\x20}\x0a.debug-card\x20>\x20h4\x20{\x0a\x20\x20margin:\x200;\x20padding:\x206px\x2010px;\x20font-size:\x2012px;\x20font-weight:\x20600;\x20color:\x20var(--text-dim);\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--bg-soft);\x0a}\x0a.debug-card\x20>\x20pre\x20{\x0a\x20\x20margin:\x200;\x20padding:\x208px\x2010px;\x20max-height:\x20260px;\x20overflow:\x20auto;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20font-size:\x2011.5px;\x20line-height:\x201.5;\x0a\x20\x20white-space:\x20pre-wrap;\x20word-break:\x20break-all;\x20color:\x20var(--text);\x0a}\x0a.debug-line\x20{\x20padding:\x201px\x200;\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20font-size:\x2011.5px;\x20word-break:\x20break-all;\x20}\x0a.debug-line.err\x20{\x20color:\x20var(--err);\x20}\x0a.debug-line.warn\x20{\x20color:\x20var(--warn);\x20}\x0a.debug-line.ok\x20{\x20color:\x20var(--ok);\x20}\x0a.debug-line.info,\x20.debug-line.debug\x20{\x20color:\x20var(--text-dim);\x20}\x0a.debug-pane\x20textarea\x20{\x0a\x20\x20width:\x20100%;\x20box-sizing:\x20border-box;\x20padding:\x208px\x2010px;\x20font-size:\x2012px;\x20line-height:\x201.5;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20color:\x20var(--text);\x0a\x20\x20background:\x20var(--bg-card);\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20outline:\x20none;\x20resize:\x20vertical;\x0a}\x0a.debug-list\x20{\x20padding:\x208px\x2010px;\x20display:\x20flex;\x20flex-direction:\x20column;\x20gap:\x204px;\x20max-height:\x20260px;\x20overflow:\x20auto;\x20}\x0a.debug-el\x20{\x0a\x20\x20text-align:\x20left;\x20font-size:\x2012px;\x20padding:\x204px\x208px;\x20border-radius:\x206px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border);\x20background:\x20none;\x20color:\x20var(--text);\x20cursor:\x20pointer;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x0a}\x0a.debug-el:hover\x20{\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a.debug-shot\x20{\x20min-height:\x20120px;\x20padding:\x208px;\x20display:\x20flex;\x20align-items:\x20flex-start;\x20justify-content:\x20center;\x20color:\x20var(--text-faint);\x20font-size:\x2012px;\x20}\x0a.debug-shot\x20img\x20{\x20max-width:\x20100%;\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20}\x0a.debug-msg\x20{\x20padding:\x206px\x2012px;\x20min-height:\x2018px;\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20border-top:\x201px\x20solid\x20var(--border);\x20}\x0a.debug-msg.err\x20{\x20color:\x20var(--err);\x20}\x0a','debug.js':db(0x2b1),'account.css':db(0x315),'account.js':db(0x20d),'viewer.css':db(0x26f),'viewer.js':'/**\x0a\x20*\x20AiWith\x20文件查看器(独立覆盖层,仅文本):\x0a\x20*\x20消息流\x20/\x20子代理转写\x20/\x20diff\x20面板里的文件\x20chip\x20经\x20CustomEvent\x20\x27zen-aiwith-open-file\x27\x20唤起,\x0a\x20*\x20GET\x20/aiwith/api/file\x20读取项目内文本文件(越界/二进制由桥接层拦截或标记),\x0a\x20*\x20正文按扩展名交给\x20hljs\x20高亮;Esc\x20/\x20点击头部外空白\x20/\x20关闭按钮收起。\x0a\x20*/\x0a!(function\x20()\x20{\x0a\x20\x20var\x20overlay\x20=\x20document.getElementById(\x27viewerOverlay\x27);\x0a\x20\x20if\x20(!overlay)\x20{\x20return;\x20}\x0a\x20\x20var\x20titleEl\x20=\x20document.getElementById(\x27viewerTitle\x27);\x0a\x20\x20var\x20metaEl\x20=\x20document.getElementById(\x27viewerMeta\x27);\x0a\x20\x20var\x20bodyEl\x20=\x20document.getElementById(\x27viewerBody\x27);\x0a\x20\x20var\x20copyBtn\x20=\x20document.getElementById(\x27viewerCopy\x27);\x0a\x20\x20var\x20closeBtn\x20=\x20document.getElementById(\x27viewerClose\x27);\x0a\x20\x20var\x20S\x20=\x20{\x20open:\x20false,\x20path:\x20\x27\x27,\x20text:\x20\x27\x27\x20};\x0a\x0a\x20\x20function\x20esc(value)\x20{\x0a\x20\x20\x20\x20return\x20String(value).replace(/&/g,\x20\x27&\x27).replace(/</g,\x20\x27<\x27)\x0a\x20\x20\x20\x20\x20\x20.replace(/>/g,\x20\x27>\x27).replace(/\x22/g,\x20\x27"\x27).replace(/\x27/g,\x20\x27'\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20扩展名\x20→\x20hljs\x20语言(未命中交给\x20hljs\x20自动检测)\x0a\x20\x20function\x20extLang(p)\x20{\x0a\x20\x20\x20\x20var\x20match\x20=\x20/\x5c.([a-z0-9]+)$/i.exec(p\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20ext\x20=\x20match\x20?\x20match[1].toLowerCase()\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20return\x20({\x0a\x20\x20\x20\x20\x20\x20js:\x20\x27javascript\x27,\x20mjs:\x20\x27javascript\x27,\x20cjs:\x20\x27javascript\x27,\x20jsx:\x20\x27javascript\x27,\x0a\x20\x20\x20\x20\x20\x20ts:\x20\x27typescript\x27,\x20tsx:\x20\x27typescript\x27,\x20json:\x20\x27json\x27,\x0a\x20\x20\x20\x20\x20\x20html:\x20\x27xml\x27,\x20xml:\x20\x27xml\x27,\x20vue:\x20\x27xml\x27,\x20svg:\x20\x27xml\x27,\x20jsp:\x20\x27xml\x27,\x0a\x20\x20\x20\x20\x20\x20css:\x20\x27css\x27,\x20scss:\x20\x27scss\x27,\x20less:\x20\x27less\x27,\x0a\x20\x20\x20\x20\x20\x20sh:\x20\x27bash\x27,\x20bash:\x20\x27bash\x27,\x20zsh:\x20\x27bash\x27,\x0a\x20\x20\x20\x20\x20\x20java:\x20\x27java\x27,\x20sql:\x20\x27sql\x27,\x20md:\x20\x27markdown\x27,\x20markdown:\x20\x27markdown\x27,\x0a\x20\x20\x20\x20\x20\x20yml:\x20\x27yaml\x27,\x20yaml:\x20\x27yaml\x27,\x20py:\x20\x27python\x27,\x20go:\x20\x27go\x27\x0a\x20\x20\x20\x20})[ext]\x20||\x20\x27\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20fmtSize(size)\x20{\x0a\x20\x20\x20\x20if\x20(!size)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20return\x20size\x20>=\x201024\x20?\x20Math.max(1,\x20Math.round(size\x20/\x201024))\x20+\x20\x27KB\x27\x20:\x20size\x20+\x20\x27B\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20copy()\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20S.text;\x0a\x20\x20\x20\x20if\x20(!text)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(navigator.clipboard\x20&&\x20navigator.clipboard.writeText)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20navigator.clipboard.writeText(text);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(pending\x20&&\x20pending.catch)\x20{\x20pending.catch(function\x20()\x20{\x20/*\x20权限被拒时静默\x20*/\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20\x27已复制\x27;\x0a\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20metaEl.textContent\x20=\x20S.meta\x20||\x20\x27\x27;\x20},\x201200);\x0a\x20\x20}\x0a\x0a\x20\x20function\x20close()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20false;\x0a\x20\x20\x20\x20overlay.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20overlay.setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20}\x0a\x0a\x20\x20function\x20render(payload)\x20{\x0a\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(!payload.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20metaEl.textContent\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20S.meta\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27<div\x20class=\x22viewer-empty\x22>\x27\x20+\x20esc(payload.message\x20||\x20\x27读取失败\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20data\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20if\x20(data.binary)\x20{\x0a\x20\x20\x20\x20\x20\x20S.text\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20S.meta\x20=\x20fmtSize(data.size)\x20+\x20\x27\x20·\x20二进制文件,不支持预览\x27;\x0a\x20\x20\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27<div\x20class=\x22viewer-empty\x22>二进制文件,仅支持文本预览</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20S.text\x20=\x20data.text\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20S.meta\x20=\x20[fmtSize(data.size),\x20data.truncated\x20?\x20\x27已截断\x20256KB\x27\x20:\x20\x27\x27].filter(Boolean).join(\x27\x20·\x20\x27);\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20var\x20code\x20=\x20document.createElement(\x27code\x27);\x0a\x20\x20\x20\x20var\x20lang\x20=\x20extLang(S.path);\x0a\x20\x20\x20\x20if\x20(lang\x20&&\x20window.hljs)\x20{\x20code.className\x20=\x20\x27language-\x27\x20+\x20lang;\x20}\x0a\x20\x20\x20\x20code.textContent\x20=\x20S.text;\x0a\x20\x20\x20\x20var\x20pre\x20=\x20document.createElement(\x27pre\x27);\x0a\x20\x20\x20\x20pre.appendChild(code);\x0a\x20\x20\x20\x20bodyEl.appendChild(pre);\x0a\x20\x20\x20\x20if\x20(window.hljs\x20&&\x20typeof\x20window.hljs.highlightElement\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.hljs.highlightElement(code);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20open(path)\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20true;\x0a\x20\x20\x20\x20S.path\x20=\x20String(path\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20S.text\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20S.meta\x20=\x20\x27加载中…\x27;\x0a\x20\x20\x20\x20overlay.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20overlay.setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20titleEl.textContent\x20=\x20S.path;\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/file?path=\x27\x20+\x20encodeURIComponent(S.path))\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x20return\x20response.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(render)\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20render({\x20ok:\x20false,\x20message:\x20error\x20&&\x20error.message\x20?\x20error.message\x20:\x20String(error)\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20document.addEventListener(\x27zen-aiwith-open-file\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20path\x20=\x20event.detail\x20&&\x20event.detail.path;\x0a\x20\x20\x20\x20if\x20(path)\x20{\x20open(path);\x20}\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27zen-aiwith-back-to-chat\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20});\x0a\x20\x20document.addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27\x20&&\x20S.open)\x20{\x20close();\x20}\x0a\x20\x20});\x0a\x20\x20closeBtn.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20close();\x20});\x0a\x20\x20copyBtn.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20copy();\x20});\x0a\x20\x20//\x20点击头部/正文以外的空白(overlay\x20自身)收起\x0a\x20\x20overlay.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20if\x20(event.target\x20===\x20overlay)\x20{\x20close();\x20}\x20});\x0a})();\x0a','hljs.js':'(()=>{var\x20Ut=Object.create;var\x20Ce=Object.defineProperty;var\x20Pt=Object.getOwnPropertyDescriptor;var\x20zt=Object.getOwnPropertyNames;var\x20$t=Object.getPrototypeOf,Gt=Object.prototype.hasOwnProperty;var\x20Ft=(e,t)=>()=>{try{return\x20t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw\x20t=0,n}};var\x20Ht=(e,t,n,r)=>{if(t&&typeof\x20t==\x22object\x22||typeof\x20t==\x22function\x22)for(let\x20l\x20of\x20zt(t))!Gt.call(e,l)&&l!==n&&Ce(e,l,{get:()=>t[l],enumerable:!(r=Pt(t,l))||r.enumerable});return\x20e};var\x20Kt=(e,t,n)=>(n=e!=null?Ut($t(e)):{},Ht(t||!e||!e.__esModule?Ce(n,\x22default\x22,{value:e,enumerable:!0}):n,e));var\x20Je=Ft((ui,Qe)=>{function\x20$e(e){return\x20e\x20instanceof\x20Map?e.clear=e.delete=e.set=function(){throw\x20new\x20Error(\x22map\x20is\x20read-only\x22)}:e\x20instanceof\x20Set&&(e.add=e.clear=e.delete=function(){throw\x20new\x20Error(\x22set\x20is\x20read-only\x22)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let\x20n=e[t],r=typeof\x20n;(r===\x22object\x22||r===\x22function\x22)&&!Object.isFrozen(n)&&$e(n)}),e}var\x20ge=class{constructor(t){t.data===void\x200&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function\x20Ge(e){return\x20e.replace(/&/g,\x22&\x22).replace(/</g,\x22<\x22).replace(/>/g,\x22>\x22).replace(/\x22/g,\x22"\x22).replace(/\x27/g,\x22'\x22)}function\x20Y(e,...t){let\x20n=Object.create(null);for(let\x20r\x20in\x20e)n[r]=e[r];return\x20t.forEach(function(r){for(let\x20l\x20in\x20r)n[l]=r[l]}),n}var\x20Zt=\x22</span>\x22,Le=e=>!!e.scope,Wt=(e,{prefix:t})=>{if(e.startsWith(\x22language:\x22))return\x20e.replace(\x22language:\x22,\x22language-\x22);if(e.includes(\x22.\x22)){let\x20n=e.split(\x22.\x22);return[`${t}${n.shift()}`,...n.map((r,l)=>`${r}${\x22_\x22.repeat(l+1)}`)].join(\x22\x20\x22)}return`${t}${e}`},we=class{constructor(t,n){this.buffer=\x22\x22,this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ge(t)}openNode(t){if(!Le(t))return;let\x20n=Wt(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Le(t)&&(this.buffer+=Zt)}value(){return\x20this.buffer}span(t){this.buffer+=`<span\x20class=\x22${t}\x22>`}},De=(e={})=>{let\x20t={children:[]};return\x20Object.assign(t,e),t},Ne=class\x20e{constructor(){this.rootNode=De(),this.stack=[this.rootNode]}get\x20top(){return\x20this.stack[this.stack.length-1]}get\x20root(){return\x20this.rootNode}add(t){this.top.children.push(t)}openNode(t){let\x20n=De({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return\x20this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return\x20JSON.stringify(this.rootNode,null,4)}walk(t){return\x20this.constructor._walk(t,this.rootNode)}static\x20_walk(t,n){return\x20typeof\x20n==\x22string\x22?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static\x20_collapse(t){typeof\x20t!=\x22string\x22&&t.children&&(t.children.every(n=>typeof\x20n==\x22string\x22)?t.children=[t.children.join(\x22\x22)]:t.children.forEach(n=>{e._collapse(n)}))}},ke=class\x20extends\x20Ne{constructor(t){super(),this.options=t}addText(t){t!==\x22\x22&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let\x20r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return\x20new\x20we(this,this.options).value()}finalize(){return\x20this.closeAllNodes(),!0}};function\x20ae(e){return\x20e?typeof\x20e==\x22string\x22?e:e.source:null}function\x20Fe(e){return\x20V(\x22(?=\x22,e,\x22)\x22)}function\x20Yt(e){return\x20V(\x22(?:\x22,e,\x22)*\x22)}function\x20Xt(e){return\x20V(\x22(?:\x22,e,\x22)?\x22)}function\x20V(...e){return\x20e.map(n=>ae(n)).join(\x22\x22)}function\x20jt(e){let\x20t=e[e.length-1];return\x20typeof\x20t==\x22object\x22&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function\x20be(...e){return\x22(\x22+(jt(e).capture?\x22\x22:\x22?:\x22)+e.map(r=>ae(r)).join(\x22|\x22)+\x22)\x22}function\x20He(e){return\x20new\x20RegExp(e.toString()+\x22|\x22).exec(\x22\x22).length-1}function\x20qt(e,t){let\x20n=e&&e.exec(t);return\x20n&&n.index===0}var\x20Vt=new\x20RegExp(be(/\x5c[(?:[^\x5c\x5c\x5c]]|\x5c\x5c.)*\x5c]/,/\x5c(\x5c?<(?![=!])[^>]+>/,/\x5c(\x5c?\x27[^\x27]+\x27/,/\x5c(\x5c??/,/\x5c\x5c([1-9][0-9]*)/,/\x5c\x5c./));function\x20Te(e,{joinWith:t}){let\x20n=0;return\x20e.map(r=>{n+=1;let\x20l=n,p=ae(r),o=\x22\x22;for(;p.length>0;){let\x20i=Vt.exec(p);if(!i){o+=p;break}o+=p.substring(0,i.index),p=p.substring(i.index+i[0].length),i[0][0]===\x22\x5c\x5c\x22&&i[1]?o+=\x22\x5c\x5c\x22+String(Number(i[1])+l):(o+=i[0],(i[0]===\x22(\x22||/^\x5c(\x5c?[<\x27]/.test(i[0]))&&n++)}return\x20o}).map(r=>`(${r})`).join(t)}var\x20Qt=/\x5cb\x5cB/,Ke=\x22[a-zA-Z]\x5c\x5cw*\x22,xe=\x22[a-zA-Z_]\x5c\x5cw*\x22,Ze=\x22\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd+)?\x22,We=\x22(-?)(\x5c\x5cb0[xX][a-fA-F0-9]+|(\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd*)?|\x5c\x5c.\x5c\x5cd+)([eE][-+]?\x5c\x5cd+)?)\x22,Ye=\x22\x5c\x5cb(0b[01]+)\x22,Jt=\x22!|!=|!==|%|%=|&|&&|&=|\x5c\x5c*|\x5c\x5c*=|\x5c\x5c+|\x5c\x5c+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\x5c\x5c?|\x5c\x5c[|\x5c\x5c{|\x5c\x5c(|\x5c\x5c^|\x5c\x5c^=|\x5c\x5c||\x5c\x5c|=|\x5c\x5c|\x5c\x5c||~\x22,en=(e={})=>{let\x20t=/^#![\x20]*\x5c//;return\x20e.binary&&(e.begin=V(t,/.*\x5cb/,e.binary,/\x5cb.*/)),Y({scope:\x22meta\x22,begin:t,end:/$/,relevance:0,\x22on:begin\x22:(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},se={begin:\x22\x5c\x5c\x5c\x5c[\x5c\x5cs\x5c\x5cS]\x22,relevance:0},tn={scope:\x22string\x22,begin:\x22\x27\x22,end:\x22\x27\x22,illegal:\x22\x5c\x5cn\x22,contains:[se]},nn={scope:\x22string\x22,begin:\x27\x22\x27,end:\x27\x22\x27,illegal:\x22\x5c\x5cn\x22,contains:[se]},rn={begin:/\x5cb(a|an|the|are|I\x27m|isn\x27t|don\x27t|doesn\x27t|won\x27t|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\x5cb/},pe=function(e,t,n={}){let\x20r=Y({scope:\x22comment\x22,begin:e,end:t,contains:[]},n);r.contains.push({scope:\x22doctag\x22,begin:\x22[\x20]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)\x22,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let\x20l=be(\x22I\x22,\x22a\x22,\x22is\x22,\x22so\x22,\x22us\x22,\x22to\x22,\x22at\x22,\x22if\x22,\x22in\x22,\x22it\x22,\x22on\x22,/[A-Za-z]+[\x27](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return\x20r.contains.push({begin:V(/[\x20]+/,\x22(\x22,l,/[.]?[:]?([.][\x20]|[\x20])/,\x22){3}\x22)}),r},on=pe(\x22//\x22,\x22$\x22),an=pe(\x22/\x5c\x5c*\x22,\x22\x5c\x5c*/\x22),sn=pe(\x22#\x22,\x22$\x22),cn={scope:\x22number\x22,begin:Ze,relevance:0},ln={scope:\x22number\x22,begin:We,relevance:0},dn={scope:\x22number\x22,begin:Ye,relevance:0},gn={scope:\x22regexp\x22,begin:/\x5c/(?=[^/\x5cn]*\x5c/)/,end:/\x5c/[gimuy]*/,contains:[se,{begin:/\x5c[/,end:/\x5c]/,relevance:0,contains:[se]}]},un={scope:\x22title\x22,begin:Ke,relevance:0},bn={scope:\x22title\x22,begin:xe,relevance:0},pn={begin:\x22\x5c\x5c.\x5c\x5cs*\x22+xe,relevance:0},fn=function(e){return\x20Object.assign(e,{\x22on:begin\x22:(t,n)=>{n.data._beginMatch=t[1]},\x22on:end\x22:(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},de=Object.freeze({__proto__:null,APOS_STRING_MODE:tn,BACKSLASH_ESCAPE:se,BINARY_NUMBER_MODE:dn,BINARY_NUMBER_RE:Ye,COMMENT:pe,C_BLOCK_COMMENT_MODE:an,C_LINE_COMMENT_MODE:on,C_NUMBER_MODE:ln,C_NUMBER_RE:We,END_SAME_AS_BEGIN:fn,HASH_COMMENT_MODE:sn,IDENT_RE:Ke,MATCH_NOTHING_RE:Qt,METHOD_GUARD:pn,NUMBER_MODE:cn,NUMBER_RE:Ze,PHRASAL_WORDS_MODE:rn,QUOTE_STRING_MODE:nn,REGEXP_MODE:gn,RE_STARTERS_RE:Jt,SHEBANG:en,TITLE_MODE:un,UNDERSCORE_IDENT_RE:xe,UNDERSCORE_TITLE_MODE:bn});function\x20mn(e,t){e.input[e.index-1]===\x22.\x22&&t.ignoreMatch()}function\x20hn(e,t){e.className!==void\x200&&(e.scope=e.className,delete\x20e.className)}function\x20En(e,t){t&&e.beginKeywords&&(e.begin=\x22\x5c\x5cb(\x22+e.beginKeywords.split(\x22\x20\x22).join(\x22|\x22)+\x22)(?!\x5c\x5c.)(?=\x5c\x5cb|\x5c\x5cs)\x22,e.__beforeBegin=mn,e.keywords=e.keywords||e.beginKeywords,delete\x20e.beginKeywords,e.relevance===void\x200&&(e.relevance=0))}function\x20_n(e,t){Array.isArray(e.illegal)&&(e.illegal=be(...e.illegal))}function\x20yn(e,t){if(e.match){if(e.begin||e.end)throw\x20new\x20Error(\x22begin\x20&\x20end\x20are\x20not\x20supported\x20with\x20match\x22);e.begin=e.match,delete\x20e.match}}function\x20vn(e,t){e.relevance===void\x200&&(e.relevance=1)}var\x20wn=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw\x20new\x20Error(\x22beforeMatch\x20cannot\x20be\x20used\x20with\x20starts\x22);let\x20n=Object.assign({},e);Object.keys(e).forEach(r=>{delete\x20e[r]}),e.keywords=n.keywords,e.begin=V(n.beforeMatch,Fe(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete\x20n.beforeMatch},Nn=[\x22of\x22,\x22and\x22,\x22for\x22,\x22in\x22,\x22not\x22,\x22or\x22,\x22if\x22,\x22then\x22,\x22parent\x22,\x22list\x22,\x22value\x22],kn=\x22keyword\x22;function\x20Xe(e,t,n=kn){let\x20r=Object.create(null);return\x20typeof\x20e==\x22string\x22?l(n,e.split(\x22\x20\x22)):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(p){Object.assign(r,Xe(e[p],t,p))}),r;function\x20l(p,o){t&&(o=o.map(i=>i.toLowerCase())),o.forEach(function(i){let\x20s=i.split(\x22|\x22);r[s[0]]=[p,Sn(s[0],s[1])]})}}function\x20Sn(e,t){return\x20t?Number(t):Tn(e)?0:1}function\x20Tn(e){return\x20Nn.includes(e.toLowerCase())}var\x20Be={},q=e=>{console.error(e)},Ue=(e,...t)=>{console.log(`WARN:\x20${e}`,...t)},J=(e,t)=>{Be[`${e}/${t}`]||(console.log(`Deprecated\x20as\x20of\x20${e}.\x20${t}`),Be[`${e}/${t}`]=!0)},ue=new\x20Error;function\x20je(e,t,{key:n}){let\x20r=0,l=e[n],p={},o={};for(let\x20i=1;i<=t.length;i++)o[i+r]=l[i],p[i+r]=!0,r+=He(t[i-1]);e[n]=o,e[n]._emit=p,e[n]._multi=!0}function\x20xn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw\x20q(\x22skip,\x20excludeBegin,\x20returnBegin\x20not\x20compatible\x20with\x20beginScope:\x20{}\x22),ue;if(typeof\x20e.beginScope!=\x22object\x22||e.beginScope===null)throw\x20q(\x22beginScope\x20must\x20be\x20object\x22),ue;je(e,e.begin,{key:\x22beginScope\x22}),e.begin=Te(e.begin,{joinWith:\x22\x22})}}function\x20On(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw\x20q(\x22skip,\x20excludeEnd,\x20returnEnd\x20not\x20compatible\x20with\x20endScope:\x20{}\x22),ue;if(typeof\x20e.endScope!=\x22object\x22||e.endScope===null)throw\x20q(\x22endScope\x20must\x20be\x20object\x22),ue;je(e,e.end,{key:\x22endScope\x22}),e.end=Te(e.end,{joinWith:\x22\x22})}}function\x20An(e){e.scope&&typeof\x20e.scope==\x22object\x22&&e.scope!==null&&(e.beginScope=e.scope,delete\x20e.scope)}function\x20Rn(e){An(e),typeof\x20e.beginScope==\x22string\x22&&(e.beginScope={_wrap:e.beginScope}),typeof\x20e.endScope==\x22string\x22&&(e.endScope={_wrap:e.endScope}),xn(e),On(e)}function\x20Mn(e){function\x20t(o,i){return\x20new\x20RegExp(ae(o),\x22m\x22+(e.case_insensitive?\x22i\x22:\x22\x22)+(e.unicodeRegex?\x22u\x22:\x22\x22)+(i?\x22g\x22:\x22\x22))}class\x20n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,i]),this.matchAt+=He(i)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let\x20i=this.regexes.map(s=>s[1]);this.matcherRe=t(Te(i,{joinWith:\x22|\x22}),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;let\x20s=this.matcherRe.exec(i);if(!s)return\x20null;let\x20d=s.findIndex((w,m)=>m>0&&w!==void\x200),f=this.matchIndexes[d];return\x20s.splice(0,d),Object.assign(s,f)}}class\x20r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return\x20this.multiRegexes[i];let\x20s=new\x20n;return\x20this.rules.slice(i).forEach(([d,f])=>s.addRule(d,f)),s.compile(),this.multiRegexes[i]=s,s}resumingScanAtSamePosition(){return\x20this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(i,s){this.rules.push([i,s]),s.type===\x22begin\x22&&this.count++}exec(i){let\x20s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let\x20d=s.exec(i);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let\x20f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(i)}return\x20d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function\x20l(o){let\x20i=new\x20r;return\x20o.contains.forEach(s=>i.addRule(s.begin,{rule:s,type:\x22begin\x22})),o.terminatorEnd&&i.addRule(o.terminatorEnd,{type:\x22end\x22}),o.illegal&&i.addRule(o.illegal,{type:\x22illegal\x22}),i}function\x20p(o,i){let\x20s=o;if(o.isCompiled)return\x20s;[hn,yn,Rn,wn].forEach(f=>f(o,i)),e.compilerExtensions.forEach(f=>f(o,i)),o.__beforeBegin=null,[En,_n,vn].forEach(f=>f(o,i)),o.isCompiled=!0;let\x20d=null;return\x20typeof\x20o.keywords==\x22object\x22&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),d=o.keywords.$pattern,delete\x20o.keywords.$pattern),d=d||/\x5cw+/,o.keywords&&(o.keywords=Xe(o.keywords,e.case_insensitive)),s.keywordPatternRe=t(d,!0),i&&(o.begin||(o.begin=/\x5cB|\x5cb/),s.beginRe=t(s.begin),!o.end&&!o.endsWithParent&&(o.end=/\x5cB|\x5cb/),o.end&&(s.endRe=t(s.end)),s.terminatorEnd=ae(s.end)||\x22\x22,o.endsWithParent&&i.terminatorEnd&&(s.terminatorEnd+=(o.end?\x22|\x22:\x22\x22)+i.terminatorEnd)),o.illegal&&(s.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(f){return\x20In(f===\x22self\x22?o:f)})),o.contains.forEach(function(f){p(f,s)}),o.starts&&p(o.starts,i),s.matcher=l(s),s}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes(\x22self\x22))throw\x20new\x20Error(\x22ERR:\x20contains\x20`self`\x20is\x20not\x20supported\x20at\x20the\x20top-level\x20of\x20a\x20language.\x20\x20See\x20documentation.\x22);return\x20e.classNameAliases=Y(e.classNameAliases||{}),p(e)}function\x20qe(e){return\x20e?e.endsWithParent||qe(e.starts):!1}function\x20In(e){return\x20e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return\x20Y(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:qe(e)?Y(e,{starts:e.starts?Y(e.starts):null}):Object.isFrozen(e)?Y(e):e}var\x20Cn=\x2211.12.0\x22,Se=class\x20extends\x20Error{constructor(t,n){super(t),this.name=\x22HTMLInjectionError\x22,this.html=n}},ve=Ge,Pe=Y,ze=Symbol(\x22nomatch\x22),Ln=7,Ve=function(e){let\x20t=Object.create(null),n=Object.create(null),r=[],l=!0,p=\x22Could\x20not\x20find\x20the\x20language\x20\x27{}\x27,\x20did\x20you\x20forget\x20to\x20load/include\x20a\x20language\x20module?\x22,o={disableAutodetect:!0,name:\x22Plain\x20text\x22,contains:[]},i={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\x5cblang(?:uage)?-([\x5cw-]+)\x5cb/i,classPrefix:\x22hljs-\x22,cssSelector:\x22pre\x20code\x22,languages:null,__emitter:ke};function\x20s(a){return\x20i.noHighlightRe.test(a)}function\x20d(a){let\x20u=a.className+\x22\x20\x22;u+=a.parentNode?a.parentNode.className:\x22\x22;let\x20g=i.languageDetectRe.exec(u);if(g){let\x20E=B(g[1]);return\x20E||(Ue(p.replace(\x22{}\x22,g[1])),Ue(\x22Falling\x20back\x20to\x20no-highlight\x20mode\x20for\x20this\x20block.\x22,a)),E?g[1]:\x22no-highlight\x22}return\x20u.split(/\x5cs+/).find(E=>s(E)||B(E))}function\x20f(a,u,g){let\x20E=\x22\x22,v=\x22\x22;typeof\x20u==\x22object\x22?(E=a,g=u.ignoreIllegals,v=u.language):(J(\x2210.7.0\x22,\x22highlight(lang,\x20code,\x20...args)\x20has\x20been\x20deprecated.\x22),J(\x2210.7.0\x22,`Please\x20use\x20highlight(code,\x20options)\x20instead.\x0ahttps://github.com/highlightjs/highlight.js/issues/2277`),v=a,E=u),g===void\x200&&(g=!0);let\x20R={code:E,language:v};W(\x22before:highlight\x22,R);let\x20U=R.result?R.result:w(R.language,R.code,g);return\x20U.code=R.code,W(\x22after:highlight\x22,U),U}function\x20w(a,u,g,E){let\x20v=Object.create(null);function\x20R(c,b){return\x20c.keywords[b]}function\x20U(){if(!h.keywords){L.addText(T);return}let\x20c=0;h.keywordPatternRe.lastIndex=0;let\x20b=h.keywordPatternRe.exec(T),_=\x22\x22;for(;b;){_+=T.substring(c,b.index);let\x20k=K.case_insensitive?b[0].toLowerCase():b[0],P=R(h,k);if(P){let[Z,Dt]=P;if(L.addText(_),_=\x22\x22,v[k]=(v[k]||0)+1,v[k]<=Ln&&(le+=Dt),Z.startsWith(\x22_\x22))_+=b[0];else{let\x20Bt=K.classNameAliases[Z]||Z;H(b[0],Bt)}}else\x20_+=b[0];c=h.keywordPatternRe.lastIndex,b=h.keywordPatternRe.exec(T)}_+=T.substring(c),L.addText(_)}function\x20F(){if(T===\x22\x22)return;let\x20c=null;if(typeof\x20h.subLanguage==\x22string\x22){if(!t[h.subLanguage]){L.addText(T);return}c=w(h.subLanguage,T,!0,Ie[h.subLanguage]),Ie[h.subLanguage]=c._top}else\x20c=y(T,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(le+=c.relevance),L.__addSublanguage(c._emitter,c.language)}function\x20G(){h.subLanguage!=null?F():U(),T=\x22\x22}function\x20H(c,b){c!==\x22\x22&&(L.startScope(b),L.addText(c),L.endScope())}function\x20Oe(c,b){let\x20_=1,k=b.length-1;for(;_<=k;){if(!c._emit[_]){_++;continue}let\x20P=K.classNameAliases[c[_]]||c[_],Z=b[_];P?H(Z,P):(T=Z,U(),T=\x22\x22),_++}}function\x20Ae(c,b){return\x20c.scope&&typeof\x20c.scope==\x22string\x22&&L.openNode(K.classNameAliases[c.scope]||c.scope),c.beginScope&&(c.beginScope._wrap?(H(T,K.classNameAliases[c.beginScope._wrap]||c.beginScope._wrap),T=\x22\x22):c.beginScope._multi&&(Oe(c.beginScope,b),T=\x22\x22)),h=Object.create(c,{parent:{value:h}}),h}function\x20Re(c,b,_){let\x20k=qt(c.endRe,_);if(k){if(c[\x22on:end\x22]){let\x20P=new\x20ge(c);c[\x22on:end\x22](b,P),P.isMatchIgnored&&(k=!1)}if(k){for(;c.endsParent&&c.parent;)c=c.parent;return\x20c}}if(c.endsWithParent)return\x20Re(c.parent,b,_)}function\x20Rt(c){return\x20h.matcher.regexIndex===0?(T+=c[0],1):(ye=!0,0)}function\x20Mt(c){let\x20b=c[0],_=c.rule,k=new\x20ge(_),P=[_.__beforeBegin,_[\x22on:begin\x22]];for(let\x20Z\x20of\x20P)if(Z&&(Z(c,k),k.isMatchIgnored))return\x20Rt(b);return\x20_.skip?T+=b:(_.excludeBegin&&(T+=b),G(),!_.returnBegin&&!_.excludeBegin&&(T=b)),Ae(_,c),_.returnBegin?0:b.length}function\x20It(c){let\x20b=c[0],_=u.substring(c.index),k=Re(h,c,_);if(!k)return\x20ze;let\x20P=h;h.endScope&&h.endScope._wrap?(G(),H(b,h.endScope._wrap)):h.endScope&&h.endScope._multi?(G(),Oe(h.endScope,c)):P.skip?T+=b:(P.returnEnd||P.excludeEnd||(T+=b),G(),P.excludeEnd&&(T=b));do\x20h.scope&&L.closeNode(),!h.skip&&!h.subLanguage&&(le+=h.relevance),h=h.parent;while(h!==k.parent);return\x20k.starts&&Ae(k.starts,c),P.returnEnd?0:b.length}function\x20Ct(){let\x20c=[];for(let\x20b=h;b!==K;b=b.parent)b.scope&&c.unshift(b.scope);c.forEach(b=>L.openNode(b))}let\x20ce={};function\x20Me(c,b){let\x20_=b&&b[0];if(T+=c,_==null)return\x20G(),0;if(ce.type===\x22begin\x22&&b.type===\x22end\x22&&ce.index===b.index&&_===\x22\x22){if(T+=u.slice(b.index,b.index+1),!l){let\x20k=new\x20Error(`0\x20width\x20match\x20regex\x20(${a})`);throw\x20k.languageName=a,k.badRule=ce.rule,k}return\x201}if(ce=b,b.type===\x22begin\x22)return\x20Mt(b);if(b.type===\x22illegal\x22&&!g){let\x20k=new\x20Error(\x27Illegal\x20lexeme\x20\x22\x27+_+\x27\x22\x20for\x20mode\x20\x22\x27+(h.scope||\x22<unnamed>\x22)+\x27\x22\x27);throw\x20k.mode=h,k}else\x20if(b.type===\x22end\x22){let\x20k=It(b);if(k!==ze)return\x20k}if(b.type===\x22illegal\x22&&_===\x22\x22)return\x20b.index===u.length||(T+=`\x0a`),1;if(_e>1e5&&_e>b.index*3)throw\x20new\x20Error(\x22potential\x20infinite\x20loop,\x20way\x20more\x20iterations\x20than\x20matches\x22);return\x20T+=_,_.length}let\x20K=B(a);if(!K)throw\x20q(p.replace(\x22{}\x22,a)),new\x20Error(\x27Unknown\x20language:\x20\x22\x27+a+\x27\x22\x27);let\x20Lt=Mn(K),Ee=\x22\x22,h=E||Lt,Ie={},L=new\x20i.__emitter(i);Ct();let\x20T=\x22\x22,le=0,j=0,_e=0,ye=!1;try{if(K.__emitTokens)K.__emitTokens(u,L);else{for(h.matcher.considerAll();;){_e++,ye?ye=!1:h.matcher.considerAll(),h.matcher.lastIndex=j;let\x20c=h.matcher.exec(u);if(!c)break;let\x20b=u.substring(j,c.index),_=Me(b,c);j=c.index+_}Me(u.substring(j))}return\x20L.finalize(),Ee=L.toHTML(),{language:a,value:Ee,relevance:le,illegal:!1,_emitter:L,_top:h}}catch(c){if(c.message&&c.message.includes(\x22Illegal\x22))return{language:a,value:ve(u),illegal:!0,relevance:0,_illegalBy:{message:c.message,index:j,context:u.slice(j-100,j+100),mode:c.mode,resultSoFar:Ee},_emitter:L};if(l)return{language:a,value:ve(u),illegal:!1,relevance:0,errorRaised:c,_emitter:L,_top:h};throw\x20c}}function\x20m(a){let\x20u={value:ve(a),illegal:!1,relevance:0,_top:o,_emitter:new\x20i.__emitter(i)};return\x20u._emitter.addText(a),u}function\x20y(a,u){u=u||i.languages||Object.keys(t);let\x20g=m(a),E=u.filter(B).filter(Q).map(G=>w(G,a,!1));E.unshift(g);let\x20v=E.sort((G,H)=>{if(G.relevance!==H.relevance)return\x20H.relevance-G.relevance;if(G.language&&H.language){if(B(G.language).supersetOf===H.language)return\x201;if(B(H.language).supersetOf===G.language)return-1}return\x200}),[R,U]=v,F=R;return\x20F.secondBest=U,F}function\x20S(a,u,g){let\x20E=u&&n[u]||g;a.classList.add(\x22hljs\x22),a.classList.add(`language-${E}`)}function\x20N(a){let\x20u=null,g=d(a);if(s(g))return;if(W(\x22before:highlightElement\x22,{el:a,language:g}),a.dataset.highlighted){console.log(\x22Element\x20previously\x20highlighted.\x20To\x20highlight\x20again,\x20first\x20unset\x20`dataset.highlighted`.\x22,a);return}if(a.children.length>0&&(i.ignoreUnescapedHTML||(console.warn(\x22One\x20of\x20your\x20code\x20blocks\x20includes\x20unescaped\x20HTML.\x20This\x20is\x20a\x20potentially\x20serious\x20security\x20risk.\x22),console.warn(\x22https://github.com/highlightjs/highlight.js/wiki/security\x22),console.warn(\x22The\x20element\x20with\x20unescaped\x20HTML:\x22),console.warn(a)),i.throwUnescapedHTML))throw\x20new\x20Se(\x22One\x20of\x20your\x20code\x20blocks\x20includes\x20unescaped\x20HTML.\x22,a.innerHTML);u=a;let\x20E=u.textContent,v=g?f(E,{language:g,ignoreIllegals:!0}):y(E);a.innerHTML=v.value,a.dataset.highlighted=\x22yes\x22,S(a,g,v.language),a.result={language:v.language,re:v.relevance,relevance:v.relevance},v.secondBest&&(a.secondBest={language:v.secondBest.language,relevance:v.secondBest.relevance}),W(\x22after:highlightElement\x22,{el:a,result:v,text:E})}function\x20O(a){i=Pe(i,a)}let\x20x=()=>{D(),J(\x2210.6.0\x22,\x22initHighlighting()\x20deprecated.\x20\x20Use\x20highlightAll()\x20now.\x22)};function\x20M(){D(),J(\x2210.6.0\x22,\x22initHighlightingOnLoad()\x20deprecated.\x20\x20Use\x20highlightAll()\x20now.\x22)}let\x20I=!1;function\x20D(){function\x20a(){D()}if(document.readyState===\x22loading\x22){I||window.addEventListener(\x22DOMContentLoaded\x22,a,!1),I=!0;return}document.querySelectorAll(i.cssSelector).forEach(N)}function\x20A(a,u){let\x20g=null;try{g=u(e)}catch(E){if(q(\x22Language\x20definition\x20for\x20\x27{}\x27\x20could\x20not\x20be\x20registered.\x22.replace(\x22{}\x22,a)),l)q(E);else\x20throw\x20E;g=o}g.name||(g.name=a),t[a]=g,g.rawDefinition=u.bind(null,e),g.aliases&&$(g.aliases,{languageName:a})}function\x20C(a){delete\x20t[a];for(let\x20u\x20of\x20Object.keys(n))n[u]===a&&delete\x20n[u]}function\x20X(){return\x20Object.keys(t)}function\x20B(a){return\x20a=(a||\x22\x22).toLowerCase(),t[a]||t[n[a]]}function\x20$(a,{languageName:u}){typeof\x20a==\x22string\x22&&(a=[a]),a.forEach(g=>{n[g.toLowerCase()]=u})}function\x20Q(a){let\x20u=B(a);return\x20u&&!u.disableAutodetect}function\x20ne(a){a[\x22before:highlightBlock\x22]&&!a[\x22before:highlightElement\x22]&&(a[\x22before:highlightElement\x22]=u=>{a[\x22before:highlightBlock\x22](Object.assign({block:u.el},u))}),a[\x22after:highlightBlock\x22]&&!a[\x22after:highlightElement\x22]&&(a[\x22after:highlightElement\x22]=u=>{a[\x22after:highlightBlock\x22](Object.assign({block:u.el},u))})}function\x20ie(a){ne(a),r.push(a)}function\x20re(a){let\x20u=r.indexOf(a);u!==-1&&r.splice(u,1)}function\x20W(a,u){let\x20g=a;r.forEach(function(E){E[g]&&E[g](u)})}function\x20oe(a){return\x20J(\x2210.7.0\x22,\x22highlightBlock\x20will\x20be\x20removed\x20entirely\x20in\x20v12.0\x22),J(\x2210.7.0\x22,\x22Please\x20use\x20highlightElement\x20now.\x22),N(a)}Object.assign(e,{highlight:f,highlightAuto:y,highlightAll:D,highlightElement:N,highlightBlock:oe,configure:O,initHighlighting:x,initHighlightingOnLoad:M,registerLanguage:A,unregisterLanguage:C,listLanguages:X,getLanguage:B,registerAliases:$,autoDetection:Q,inherit:Pe,addPlugin:ie,removePlugin:re}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=Cn,e.regex={concat:V,lookahead:Fe,either:be,optional:Xt,anyNumberOfTimes:Yt};for(let\x20a\x20in\x20de)typeof\x20de[a]==\x22object\x22&&$e(de[a]);return\x20Object.assign(e,de),e},ee=Ve({});ee.newInstance=()=>Ve({});Qe.exports=ee;ee.HighlightJS=ee;ee.default=ee});var\x20et=Kt(Je(),1);var\x20z=et.default;var\x20tt=\x22[A-Za-z$_][0-9A-Za-z$_]*\x22,Dn=[\x22as\x22,\x22in\x22,\x22of\x22,\x22if\x22,\x22for\x22,\x22while\x22,\x22finally\x22,\x22var\x22,\x22new\x22,\x22function\x22,\x22do\x22,\x22return\x22,\x22void\x22,\x22else\x22,\x22break\x22,\x22catch\x22,\x22instanceof\x22,\x22with\x22,\x22throw\x22,\x22case\x22,\x22default\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22typeof\x22,\x22delete\x22,\x22let\x22,\x22yield\x22,\x22const\x22,\x22class\x22,\x22debugger\x22,\x22async\x22,\x22await\x22,\x22static\x22,\x22import\x22,\x22from\x22,\x22export\x22,\x22extends\x22,\x22using\x22],Bn=[\x22true\x22,\x22false\x22,\x22null\x22,\x22undefined\x22,\x22NaN\x22,\x22Infinity\x22],nt=[\x22Object\x22,\x22Function\x22,\x22Boolean\x22,\x22Symbol\x22,\x22Math\x22,\x22Date\x22,\x22Number\x22,\x22BigInt\x22,\x22String\x22,\x22RegExp\x22,\x22Array\x22,\x22Float32Array\x22,\x22Float64Array\x22,\x22Int8Array\x22,\x22Uint8Array\x22,\x22Uint8ClampedArray\x22,\x22Int16Array\x22,\x22Int32Array\x22,\x22Uint16Array\x22,\x22Uint32Array\x22,\x22BigInt64Array\x22,\x22BigUint64Array\x22,\x22Set\x22,\x22Map\x22,\x22WeakSet\x22,\x22WeakMap\x22,\x22ArrayBuffer\x22,\x22SharedArrayBuffer\x22,\x22Atomics\x22,\x22DataView\x22,\x22JSON\x22,\x22Promise\x22,\x22Generator\x22,\x22GeneratorFunction\x22,\x22AsyncFunction\x22,\x22Reflect\x22,\x22Proxy\x22,\x22Intl\x22,\x22WebAssembly\x22],it=[\x22Error\x22,\x22EvalError\x22,\x22InternalError\x22,\x22RangeError\x22,\x22ReferenceError\x22,\x22SyntaxError\x22,\x22TypeError\x22,\x22URIError\x22],rt=[\x22setInterval\x22,\x22setTimeout\x22,\x22clearInterval\x22,\x22clearTimeout\x22,\x22require\x22,\x22exports\x22,\x22eval\x22,\x22isFinite\x22,\x22isNaN\x22,\x22parseFloat\x22,\x22parseInt\x22,\x22decodeURI\x22,\x22decodeURIComponent\x22,\x22encodeURI\x22,\x22encodeURIComponent\x22,\x22escape\x22,\x22unescape\x22],Un=[\x22arguments\x22,\x22this\x22,\x22super\x22,\x22console\x22,\x22window\x22,\x22document\x22,\x22localStorage\x22,\x22sessionStorage\x22,\x22module\x22,\x22self\x22,\x22global\x22],Pn=[].concat(rt,nt,it);function\x20ot(e){let\x20t=e.regex,n=(g,{after:E})=>{let\x20v=\x22</\x22+g[0].slice(1);return\x20g.input.indexOf(v,E)!==-1},r=tt,l={begin:\x22<>\x22,end:\x22</>\x22},p=/<[A-Za-z0-9\x5c\x5c._:-]+\x5cs*\x5c/>/,o={begin:/<[A-Za-z0-9\x5c\x5c._:-]+/,end:/\x5c/[A-Za-z0-9\x5c\x5c._:-]+>|\x5c/>/,isTrulyOpeningTag:(g,E)=>{let\x20v=g[0].length+g.index,R=g.input[v];if(R===\x22<\x22||R===\x22,\x22){E.ignoreMatch();return}R===\x22>\x22&&(n(g,{after:v})||E.ignoreMatch());let\x20U,F=g.input.substring(v);if(U=F.match(/^\x5cs*=/)){E.ignoreMatch();return}if((U=F.match(/^\x5cs+extends\x5cs+/))&&U.index===0){E.ignoreMatch();return}}},i={$pattern:tt,keyword:Dn,literal:Bn,built_in:Pn,\x22variable.language\x22:Un},s=\x22[0-9](_?[0-9])*\x22,d=`\x5c\x5c.(${s})`,f=\x220|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\x22,w={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${f})((${d})|\x5c\x5c.)?|(${d}))[eE][+-]?(${s})\x5c\x5cb`},{begin:`\x5c\x5cb(${f})\x5c\x5cb((${d})\x5c\x5cb|\x5c\x5c.)?|(${d})\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_?[0-9])*)n\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][0-1](_?[0-1])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[oO][0-7](_?[0-7])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[0-7]+n?\x5c\x5cb\x22}],relevance:0},m={className:\x22subst\x22,begin:\x22\x5c\x5c$\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,keywords:i,contains:[]},y={begin:\x22.?html`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22xml\x22}},S={begin:\x22.?css`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22css\x22}},N={begin:\x22.?gql`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22graphql\x22}},O={className:\x22string\x22,begin:\x22`\x22,end:\x22`\x22,contains:[e.BACKSLASH_ESCAPE,m]},M={className:\x22comment\x22,variants:[e.COMMENT(/\x5c/\x5c*\x5c*(?!\x5c/)/,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:\x22(?=@[A-Za-z]+)\x22,relevance:0,contains:[{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22},{className:\x22type\x22,begin:\x22\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:\x22variable\x22,begin:r+\x22(?=\x5c\x5cs*(-)|$)\x22,endsParent:!0,relevance:0},{begin:/(?=[^\x5cn])\x5cs/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},I=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,{match:/\x5c$\x5cd+/},w];m.contains=I.concat({begin:/\x5c{/,end:/\x5c}/,keywords:i,contains:[\x22self\x22].concat(I)});let\x20D=[].concat(M,m.contains),A=D.concat([{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,keywords:i,contains:[\x22self\x22].concat(D)}]),C={className:\x22params\x22,begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A},X={variants:[{match:[/class/,/\x5cs+/,r,/\x5cs+/,/extends/,/\x5cs+/,t.concat(r,\x22(\x22,t.concat(/\x5c./,r),\x22)*\x22)],scope:{1:\x22keyword\x22,3:\x22title.class\x22,5:\x22keyword\x22,7:\x22title.class.inherited\x22}},{match:[/class/,/\x5cs+/,r],scope:{1:\x22keyword\x22,3:\x22title.class\x22}}]},B={relevance:0,match:t.either(/\x5cbJSON/,/\x5cb[A-Z][a-z]+([A-Z][a-z]*|\x5cd)*/,/\x5cb[A-Z]{2,}([A-Z][a-z]+|\x5cd)+([A-Z][a-z]*)*/,/\x5cb[A-Z]{2,}[a-z]+([A-Z][a-z]+|\x5cd)*([A-Z][a-z]*)*/),className:\x22title.class\x22,keywords:{_:[...nt,...it]}},$={label:\x22use_strict\x22,className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20(strict|asm)[\x27\x22]/},Q={variants:[{match:[/function/,/\x5cs+/,r,/(?=\x5cs*\x5c()/]},{match:[/function/,/\x5cs*(?=\x5c()/]}],className:{1:\x22keyword\x22,3:\x22title.function\x22},label:\x22func.def\x22,contains:[C],illegal:/%/},ne={relevance:0,match:/\x5cb[A-Z][A-Z_0-9]+\x5cb/,className:\x22variable.constant\x22};function\x20ie(g){return\x20t.concat(\x22(?!\x22,g.join(\x22|\x22),\x22)\x22)}let\x20re={match:t.concat(/\x5cb/,ie([...rt,\x22super\x22,\x22import\x22,\x22await\x22].map(g=>`${g}\x5c\x5cs*\x5c\x5c(`)),r,t.lookahead(/\x5cs*\x5c(/)),className:\x22title.function\x22,relevance:0},W={begin:t.concat(/\x5c./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:\x22prototype\x22,className:\x22property\x22,relevance:0},oe={match:[/get|set/,/\x5cs+/,r,/(?=\x5c()/],className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[{begin:/\x5c(\x5c)/},C]},a=\x22(\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)|\x22+e.UNDERSCORE_IDENT_RE+\x22)\x5c\x5cs*=>\x22,u={match:[/const|var|let/,/\x5cs+/,r,/\x5cs*/,/=\x5cs*/,/(async\x5cs*)?/,t.lookahead(a)],keywords:\x22async\x22,className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[C]};return{name:\x22JavaScript\x22,aliases:[\x22js\x22,\x22jsx\x22,\x22mjs\x22,\x22cjs\x22],keywords:i,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:B},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:\x22shebang\x22,binary:\x22node\x22,relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,M,{match:/\x5c$\x5cd+/},w,B,{scope:\x22attr\x22,match:r+t.lookahead(\x22:\x22),relevance:0},u,{begin:\x22(\x22+e.RE_STARTERS_RE+\x22|\x5c\x5cb(case|return|throw)\x5c\x5cb)\x5c\x5cs*\x22,keywords:\x22return\x20throw\x20case\x22,relevance:0,contains:[M,e.REGEXP_MODE,{className:\x22function\x22,begin:a,returnBegin:!0,end:\x22\x5c\x5cs*=>\x22,contains:[{className:\x22params\x22,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A}]}]},{begin:/,/,relevance:0},{match:/\x5cs+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:p},{begin:o.begin,\x22on:begin\x22:o.isTrulyOpeningTag,end:o.end}],subLanguage:\x22xml\x22,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[\x22self\x22]}]}]},Q,{beginKeywords:\x22while\x20if\x20switch\x20catch\x20for\x22},{begin:\x22\x5c\x5cb(?!function)\x22+e.UNDERSCORE_IDENT_RE+\x22\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)\x5c\x5cs*\x5c\x5c{\x22,returnBegin:!0,label:\x22func.def\x22,contains:[C,e.inherit(e.TITLE_MODE,{begin:r,className:\x22title.function\x22})]},{match:/\x5c.\x5c.\x5c./,relevance:0},W,{match:\x22\x5c\x5c$\x22+r,relevance:0},{match:[/\x5cbconstructor(?=\x5cs*\x5c()/],className:{1:\x22title.function\x22},contains:[C]},re,ne,X,oe,{match:/\x5c$[(.]/}]}}var\x20fe=\x22[A-Za-z$_][0-9A-Za-z$_]*\x22,at=[\x22as\x22,\x22in\x22,\x22of\x22,\x22if\x22,\x22for\x22,\x22while\x22,\x22finally\x22,\x22var\x22,\x22new\x22,\x22function\x22,\x22do\x22,\x22return\x22,\x22void\x22,\x22else\x22,\x22break\x22,\x22catch\x22,\x22instanceof\x22,\x22with\x22,\x22throw\x22,\x22case\x22,\x22default\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22typeof\x22,\x22delete\x22,\x22let\x22,\x22yield\x22,\x22const\x22,\x22class\x22,\x22debugger\x22,\x22async\x22,\x22await\x22,\x22static\x22,\x22import\x22,\x22from\x22,\x22export\x22,\x22extends\x22,\x22using\x22],st=[\x22true\x22,\x22false\x22,\x22null\x22,\x22undefined\x22,\x22NaN\x22,\x22Infinity\x22],ct=[\x22Object\x22,\x22Function\x22,\x22Boolean\x22,\x22Symbol\x22,\x22Math\x22,\x22Date\x22,\x22Number\x22,\x22BigInt\x22,\x22String\x22,\x22RegExp\x22,\x22Array\x22,\x22Float32Array\x22,\x22Float64Array\x22,\x22Int8Array\x22,\x22Uint8Array\x22,\x22Uint8ClampedArray\x22,\x22Int16Array\x22,\x22Int32Array\x22,\x22Uint16Array\x22,\x22Uint32Array\x22,\x22BigInt64Array\x22,\x22BigUint64Array\x22,\x22Set\x22,\x22Map\x22,\x22WeakSet\x22,\x22WeakMap\x22,\x22ArrayBuffer\x22,\x22SharedArrayBuffer\x22,\x22Atomics\x22,\x22DataView\x22,\x22JSON\x22,\x22Promise\x22,\x22Generator\x22,\x22GeneratorFunction\x22,\x22AsyncFunction\x22,\x22Reflect\x22,\x22Proxy\x22,\x22Intl\x22,\x22WebAssembly\x22],lt=[\x22Error\x22,\x22EvalError\x22,\x22InternalError\x22,\x22RangeError\x22,\x22ReferenceError\x22,\x22SyntaxError\x22,\x22TypeError\x22,\x22URIError\x22],dt=[\x22setInterval\x22,\x22setTimeout\x22,\x22clearInterval\x22,\x22clearTimeout\x22,\x22require\x22,\x22exports\x22,\x22eval\x22,\x22isFinite\x22,\x22isNaN\x22,\x22parseFloat\x22,\x22parseInt\x22,\x22decodeURI\x22,\x22decodeURIComponent\x22,\x22encodeURI\x22,\x22encodeURIComponent\x22,\x22escape\x22,\x22unescape\x22],gt=[\x22arguments\x22,\x22this\x22,\x22super\x22,\x22console\x22,\x22window\x22,\x22document\x22,\x22localStorage\x22,\x22sessionStorage\x22,\x22module\x22,\x22self\x22,\x22global\x22],ut=[].concat(dt,ct,lt);function\x20zn(e){let\x20t=e.regex,n=(g,{after:E})=>{let\x20v=\x22</\x22+g[0].slice(1);return\x20g.input.indexOf(v,E)!==-1},r=fe,l={begin:\x22<>\x22,end:\x22</>\x22},p=/<[A-Za-z0-9\x5c\x5c._:-]+\x5cs*\x5c/>/,o={begin:/<[A-Za-z0-9\x5c\x5c._:-]+/,end:/\x5c/[A-Za-z0-9\x5c\x5c._:-]+>|\x5c/>/,isTrulyOpeningTag:(g,E)=>{let\x20v=g[0].length+g.index,R=g.input[v];if(R===\x22<\x22||R===\x22,\x22){E.ignoreMatch();return}R===\x22>\x22&&(n(g,{after:v})||E.ignoreMatch());let\x20U,F=g.input.substring(v);if(U=F.match(/^\x5cs*=/)){E.ignoreMatch();return}if((U=F.match(/^\x5cs+extends\x5cs+/))&&U.index===0){E.ignoreMatch();return}}},i={$pattern:fe,keyword:at,literal:st,built_in:ut,\x22variable.language\x22:gt},s=\x22[0-9](_?[0-9])*\x22,d=`\x5c\x5c.(${s})`,f=\x220|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\x22,w={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${f})((${d})|\x5c\x5c.)?|(${d}))[eE][+-]?(${s})\x5c\x5cb`},{begin:`\x5c\x5cb(${f})\x5c\x5cb((${d})\x5c\x5cb|\x5c\x5c.)?|(${d})\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_?[0-9])*)n\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][0-1](_?[0-1])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[oO][0-7](_?[0-7])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[0-7]+n?\x5c\x5cb\x22}],relevance:0},m={className:\x22subst\x22,begin:\x22\x5c\x5c$\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,keywords:i,contains:[]},y={begin:\x22.?html`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22xml\x22}},S={begin:\x22.?css`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22css\x22}},N={begin:\x22.?gql`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22graphql\x22}},O={className:\x22string\x22,begin:\x22`\x22,end:\x22`\x22,contains:[e.BACKSLASH_ESCAPE,m]},M={className:\x22comment\x22,variants:[e.COMMENT(/\x5c/\x5c*\x5c*(?!\x5c/)/,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:\x22(?=@[A-Za-z]+)\x22,relevance:0,contains:[{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22},{className:\x22type\x22,begin:\x22\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:\x22variable\x22,begin:r+\x22(?=\x5c\x5cs*(-)|$)\x22,endsParent:!0,relevance:0},{begin:/(?=[^\x5cn])\x5cs/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},I=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,{match:/\x5c$\x5cd+/},w];m.contains=I.concat({begin:/\x5c{/,end:/\x5c}/,keywords:i,contains:[\x22self\x22].concat(I)});let\x20D=[].concat(M,m.contains),A=D.concat([{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,keywords:i,contains:[\x22self\x22].concat(D)}]),C={className:\x22params\x22,begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A},X={variants:[{match:[/class/,/\x5cs+/,r,/\x5cs+/,/extends/,/\x5cs+/,t.concat(r,\x22(\x22,t.concat(/\x5c./,r),\x22)*\x22)],scope:{1:\x22keyword\x22,3:\x22title.class\x22,5:\x22keyword\x22,7:\x22title.class.inherited\x22}},{match:[/class/,/\x5cs+/,r],scope:{1:\x22keyword\x22,3:\x22title.class\x22}}]},B={relevance:0,match:t.either(/\x5cbJSON/,/\x5cb[A-Z][a-z]+([A-Z][a-z]*|\x5cd)*/,/\x5cb[A-Z]{2,}([A-Z][a-z]+|\x5cd)+([A-Z][a-z]*)*/,/\x5cb[A-Z]{2,}[a-z]+([A-Z][a-z]+|\x5cd)*([A-Z][a-z]*)*/),className:\x22title.class\x22,keywords:{_:[...ct,...lt]}},$={label:\x22use_strict\x22,className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20(strict|asm)[\x27\x22]/},Q={variants:[{match:[/function/,/\x5cs+/,r,/(?=\x5cs*\x5c()/]},{match:[/function/,/\x5cs*(?=\x5c()/]}],className:{1:\x22keyword\x22,3:\x22title.function\x22},label:\x22func.def\x22,contains:[C],illegal:/%/},ne={relevance:0,match:/\x5cb[A-Z][A-Z_0-9]+\x5cb/,className:\x22variable.constant\x22};function\x20ie(g){return\x20t.concat(\x22(?!\x22,g.join(\x22|\x22),\x22)\x22)}let\x20re={match:t.concat(/\x5cb/,ie([...dt,\x22super\x22,\x22import\x22,\x22await\x22].map(g=>`${g}\x5c\x5cs*\x5c\x5c(`)),r,t.lookahead(/\x5cs*\x5c(/)),className:\x22title.function\x22,relevance:0},W={begin:t.concat(/\x5c./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:\x22prototype\x22,className:\x22property\x22,relevance:0},oe={match:[/get|set/,/\x5cs+/,r,/(?=\x5c()/],className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[{begin:/\x5c(\x5c)/},C]},a=\x22(\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)|\x22+e.UNDERSCORE_IDENT_RE+\x22)\x5c\x5cs*=>\x22,u={match:[/const|var|let/,/\x5cs+/,r,/\x5cs*/,/=\x5cs*/,/(async\x5cs*)?/,t.lookahead(a)],keywords:\x22async\x22,className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[C]};return{name:\x22JavaScript\x22,aliases:[\x22js\x22,\x22jsx\x22,\x22mjs\x22,\x22cjs\x22],keywords:i,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:B},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:\x22shebang\x22,binary:\x22node\x22,relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,M,{match:/\x5c$\x5cd+/},w,B,{scope:\x22attr\x22,match:r+t.lookahead(\x22:\x22),relevance:0},u,{begin:\x22(\x22+e.RE_STARTERS_RE+\x22|\x5c\x5cb(case|return|throw)\x5c\x5cb)\x5c\x5cs*\x22,keywords:\x22return\x20throw\x20case\x22,relevance:0,contains:[M,e.REGEXP_MODE,{className:\x22function\x22,begin:a,returnBegin:!0,end:\x22\x5c\x5cs*=>\x22,contains:[{className:\x22params\x22,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A}]}]},{begin:/,/,relevance:0},{match:/\x5cs+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:p},{begin:o.begin,\x22on:begin\x22:o.isTrulyOpeningTag,end:o.end}],subLanguage:\x22xml\x22,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[\x22self\x22]}]}]},Q,{beginKeywords:\x22while\x20if\x20switch\x20catch\x20for\x22},{begin:\x22\x5c\x5cb(?!function)\x22+e.UNDERSCORE_IDENT_RE+\x22\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)\x5c\x5cs*\x5c\x5c{\x22,returnBegin:!0,label:\x22func.def\x22,contains:[C,e.inherit(e.TITLE_MODE,{begin:r,className:\x22title.function\x22})]},{match:/\x5c.\x5c.\x5c./,relevance:0},W,{match:\x22\x5c\x5c$\x22+r,relevance:0},{match:[/\x5cbconstructor(?=\x5cs*\x5c()/],className:{1:\x22title.function\x22},contains:[C]},re,ne,X,oe,{match:/\x5c$[(.]/}]}}function\x20bt(e){let\x20t=e.regex,n=zn(e),r=fe,l=[\x22any\x22,\x22void\x22,\x22number\x22,\x22boolean\x22,\x22string\x22,\x22object\x22,\x22never\x22,\x22symbol\x22,\x22bigint\x22,\x22unknown\x22],p={begin:[/namespace/,/\x5cs+/,e.IDENT_RE],beginScope:{1:\x22keyword\x22,3:\x22title.class\x22}},o={beginKeywords:\x22interface\x22,end:/\x5c{/,excludeEnd:!0,keywords:{keyword:\x22interface\x20extends\x22,built_in:l},contains:[n.exports.CLASS_REFERENCE]},i={className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20strict[\x27\x22]/},s=[\x22type\x22,\x22interface\x22,\x22public\x22,\x22private\x22,\x22protected\x22,\x22implements\x22,\x22declare\x22,\x22abstract\x22,\x22readonly\x22,\x22enum\x22,\x22override\x22,\x22satisfies\x22],d={$pattern:fe,keyword:at.concat(s),literal:st,built_in:ut.concat(l),\x22variable.language\x22:gt},f={className:\x22meta\x22,begin:\x22@\x22+r},w=(N,O,x)=>{let\x20M=N.contains.findIndex(I=>I.label===O);if(M===-1)throw\x20new\x20Error(\x22can\x20not\x20find\x20mode\x20to\x20replace\x22);N.contains.splice(M,1,x)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let\x20m=n.contains.find(N=>N.scope===\x22attr\x22),y=Object.assign({},m,{match:t.concat(r,t.lookahead(/\x5cs*\x5c?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,m,y]),n.contains=n.contains.concat([f,p,o,y]),w(n,\x22shebang\x22,e.SHEBANG()),w(n,\x22use_strict\x22,i);let\x20S=n.contains.find(N=>N.label===\x22func.def\x22);return\x20S.relevance=0,Object.assign(n,{name:\x22TypeScript\x22,aliases:[\x22ts\x22,\x22tsx\x22,\x22mts\x22,\x22cts\x22]}),n}var\x20$n=\x22([-+]?)(\x5c\x5cb0[xX][a-fA-F0-9]+|(\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd*)?|\x5c\x5c.\x5c\x5cd+)([eE][-+]?\x5c\x5cd+)?)|NaN|[-+]?Infinity\x22,Gn={scope:\x22number\x22,match:$n,relevance:0};function\x20pt(e){let\x20t={className:\x22attr\x22,begin:/((\x22(\x5c\x5c.|[^\x5c\x5c\x22\x5cr\x5cn])*\x22)|(\x27(\x5c\x5c.|[^\x5c\x5c\x27\x5cr\x5cn])*\x27))(?=\x5cs*:)/,relevance:1.01},n={match:/[{}[\x5c],:]/,className:\x22punctuation\x22,relevance:0},r=[\x22true\x22,\x22false\x22,\x22null\x22],l={scope:\x22literal\x22,beginKeywords:r.join(\x22\x20\x22)};return{name:\x22JSON\x22,aliases:[\x22jsonc\x22,\x22json5\x22],keywords:{literal:r},contains:[t,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,l,Gn,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:\x22\x5c\x5cS\x22}}function\x20ft(e){let\x20t=e.regex,n=t.concat(/[\x5cp{L}_]/u,t.optional(/[\x5cp{L}0-9_.-]*:/u),/[\x5cp{L}0-9_.-]*/u),r=/[\x5cp{L}0-9._:-]+/u,l={className:\x22symbol\x22,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},p={begin:/\x5cs/,contains:[{className:\x22keyword\x22,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\x5cn/}]},o=e.inherit(p,{begin:/\x5c(/,end:/\x5c)/}),i=e.inherit(e.APOS_STRING_MODE,{className:\x22string\x22}),s=e.inherit(e.QUOTE_STRING_MODE,{className:\x22string\x22}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:\x22attr\x22,begin:r,relevance:0},{begin:/=\x5cs*/,relevance:0,contains:[{className:\x22string\x22,endsParent:!0,variants:[{begin:/\x22/,end:/\x22/,contains:[l]},{begin:/\x27/,end:/\x27/,contains:[l]},{begin:/[^\x5cs\x22\x27=<>`]+/}]}]}]};return{name:\x22HTML,\x20XML\x22,aliases:[\x22html\x22,\x22xhtml\x22,\x22rss\x22,\x22atom\x22,\x22xjb\x22,\x22xsd\x22,\x22xsl\x22,\x22plist\x22,\x22wsf\x22,\x22svg\x22],case_insensitive:!0,unicodeRegex:!0,contains:[{className:\x22meta\x22,begin:/<![a-z]/,end:/>/,relevance:10,contains:[p,s,i,o,{begin:/\x5c[/,end:/\x5c]/,contains:[{className:\x22meta\x22,begin:/<![a-z]/,end:/>/,contains:[p,o,s,i]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\x5c[CDATA\x5c[/,end:/\x5c]\x5c]>/,relevance:10},l,{className:\x22meta\x22,end:/\x5c?>/,variants:[{begin:/<\x5c?xml/,relevance:10,contains:[s]},{begin:/<\x5c?[a-z][a-z0-9]+/}]},{className:\x22tag\x22,begin:/<style(?=\x5cs|>)/,end:/>/,keywords:{name:\x22style\x22},contains:[d],starts:{end:/<\x5c/style>/,returnEnd:!0,subLanguage:\x22css\x22}},{className:\x22tag\x22,begin:/<script(?=\x5cs|>)/,end:/>/,keywords:{name:\x22script\x22},contains:[d],starts:{end:/<\x5c/script>/,returnEnd:!0,subLanguage:\x22javascript\x22}},{className:\x22tag\x22,begin:/<>|<\x5c/>/},{className:\x22tag\x22,begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\x5c/>/,/>/,/\x5cs/)))),end:/\x5c/?>/,contains:[{className:\x22name\x22,begin:n,relevance:0,starts:d}]},{className:\x22tag\x22,begin:t.concat(/<\x5c//,t.lookahead(t.concat(n,/>/))),contains:[{className:\x22name\x22,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}var\x20Fn=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Hn=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],Kn=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],Zn=[...Hn,...Kn],Wn=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),Yn=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),Xn=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),jn=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse();function\x20mt(e){let\x20t=e.regex,n=Fn(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l=\x22and\x20or\x20not\x20only\x22,p=/@-?\x5cw[\x5cw]*(-\x5cw+)*/,o=\x22[a-zA-Z-][a-zA-Z0-9_-]*\x22,i=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:\x22CSS\x22,case_insensitive:!0,illegal:/[=|\x27\x5c$]/,keywords:{keyframePosition:\x22from\x20to\x22},classNameAliases:{keyframePosition:\x22selector-tag\x22},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:\x22selector-id\x22,begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:\x22selector-class\x22,begin:\x22\x5c\x5c.\x22+o,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-pseudo\x22,variants:[{begin:\x22:(\x22+Yn.join(\x22|\x22)+\x22)\x22},{begin:\x22:(:)?(\x22+Xn.join(\x22|\x22)+\x22)\x22}]},n.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+jn.join(\x22|\x22)+\x22)\x5c\x5cb\x22},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...i,{begin:/(url|data-uri)\x5c(/,end:/\x5c)/,relevance:0,keywords:{built_in:\x22url\x20data-uri\x22},contains:[...i,{className:\x22string\x22,begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:\x22[{;]\x22,relevance:0,illegal:/:/,contains:[{className:\x22keyword\x22,begin:p},{begin:/\x5cs/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:l,attribute:Wn.join(\x22\x20\x22)},contains:[{begin:/[a-z-]+(?=:)/,className:\x22attribute\x22},...i,n.CSS_NUMBER_MODE]}]},{className:\x22selector-tag\x22,begin:\x22\x5c\x5cb(\x22+Zn.join(\x22|\x22)+\x22)\x5c\x5cb\x22}]}}var\x20qn=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Vn=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],Qn=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],Jn=[...Vn,...Qn],ei=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),ti=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),ni=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),ii=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse();function\x20ht(e){let\x20t=qn(e),n=ni,r=ti,l=\x22@[a-z-]+\x22,p=\x22and\x20or\x20not\x20only\x22,i={className:\x22variable\x22,begin:\x22(\x5c\x5c$\x22+\x22[a-zA-Z-][a-zA-Z0-9_-]*\x22+\x22)\x5c\x5cb\x22,relevance:0};return{name:\x22SCSS\x22,case_insensitive:!0,illegal:\x22[=/|\x27]\x22,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:\x22selector-id\x22,begin:\x22#[A-Za-z0-9_-]+\x22,relevance:0},{className:\x22selector-class\x22,begin:\x22\x5c\x5c.[A-Za-z0-9_-]+\x22,relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-tag\x22,begin:\x22\x5c\x5cb(\x22+Jn.join(\x22|\x22)+\x22)\x5c\x5cb\x22,relevance:0},{className:\x22selector-pseudo\x22,begin:\x22:(\x22+r.join(\x22|\x22)+\x22)\x22},{className:\x22selector-pseudo\x22,begin:\x22:(:)?(\x22+n.join(\x22|\x22)+\x22)\x22},i,{begin:/\x5c(/,end:/\x5c)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+ii.join(\x22|\x22)+\x22)\x5c\x5cb\x22},{begin:\x22\x5c\x5cb(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\x5c\x5cb\x22},{begin:/:/,end:/[;}{]/,relevance:0,contains:[t.BLOCK_COMMENT,i,t.HEXCOLOR,t.CSS_NUMBER_MODE,t.UNICODE_RANGE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT,t.FUNCTION_DISPATCH]},{begin:\x22@(page|font-face)\x22,keywords:{$pattern:l,keyword:\x22@page\x20@font-face\x22}},{begin:\x22@\x22,end:\x22[{;]\x22,returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:ei.join(\x22\x20\x22)},contains:[{begin:l,className:\x22keyword\x22},{begin:/[a-z-]+(?=:)/,className:\x22attribute\x22},i,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}}var\x20ri=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),oi=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],ai=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],si=[...oi,...ai],ci=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),Et=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),_t=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),li=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse(),di=Et.concat(_t).sort().reverse();function\x20yt(e){let\x20t=ri(e),n=di,r=\x22and\x20or\x20not\x20only\x22,l=\x22[\x5c\x5cw-]+\x22,p=\x22(\x22+l+\x22|@\x5c\x5c{\x22+l+\x22\x5c\x5c})\x22,o=[],i=[],s=function(I){return{className:\x22string\x22,begin:\x22~?\x22+I+\x22.*?\x22+I}},d=function(I,D,A){return{className:I,begin:D,relevance:A}},f={$pattern:/[a-z-]+/,keyword:r,attribute:ci.join(\x22\x20\x22)},w={begin:\x22\x5c\x5c(\x22,end:\x22\x5c\x5c)\x22,contains:i,keywords:f,relevance:0};i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s(\x22\x27\x22),s(\x27\x22\x27),t.CSS_NUMBER_MODE,{begin:\x22(url|data-uri)\x5c\x5c(\x22,starts:{className:\x22string\x22,end:\x22[\x5c\x5c)\x5c\x5cn]\x22,excludeEnd:!0}},t.UNICODE_RANGE,t.HEXCOLOR,w,d(\x22variable\x22,\x22@@?\x22+l,10),d(\x22variable\x22,\x22@\x5c\x5c{\x22+l+\x22\x5c\x5c}\x22),d(\x22built_in\x22,\x22~?`[^`]*?`\x22),{className:\x22attribute\x22,begin:l+\x22\x5c\x5cs*:\x22,end:\x22:\x22,returnBegin:!0,excludeEnd:!0},t.IMPORTANT,{beginKeywords:\x22and\x20not\x22},t.FUNCTION_DISPATCH);let\x20m=i.concat({begin:/\x5c{/,end:/\x5c}/,contains:o}),y={beginKeywords:\x22when\x22,endsWithParent:!0,contains:[{beginKeywords:\x22and\x20not\x22}].concat(i)},S={begin:p+\x22\x5c\x5cs*:\x22,returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},t.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+li.join(\x22|\x22)+\x22)\x5c\x5cb\x22,end:/(?=:)/,starts:{endsWithParent:!0,illegal:\x22[<=$]\x22,relevance:0,contains:i}}]},N={className:\x22keyword\x22,begin:\x22@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\x5c\x5cb\x22,starts:{end:\x22[;{}]\x22,keywords:f,returnEnd:!0,contains:i,relevance:0}},O={className:\x22variable\x22,variants:[{begin:\x22@\x22+l+\x22\x5c\x5cs*:\x22,relevance:15},{begin:\x22@\x22+l}],starts:{end:\x22[;}]\x22,returnEnd:!0,contains:m}},x={variants:[{begin:\x22[\x5c\x5c.#:&\x5c\x5c[>]\x22,end:\x22[;{}]\x22},{begin:p,end:/\x5c{/}],returnBegin:!0,returnEnd:!0,illegal:`[<=\x27$\x22]`,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,y,d(\x22keyword\x22,\x22all\x5c\x5cb\x22),d(\x22variable\x22,\x22@\x5c\x5c{\x22+l+\x22\x5c\x5c}\x22),{begin:\x22\x5c\x5cb(\x22+si.join(\x22|\x22)+\x22)\x5c\x5cb\x22,className:\x22selector-tag\x22},t.CSS_NUMBER_MODE,d(\x22selector-tag\x22,p,0),d(\x22selector-id\x22,\x22#\x22+p),d(\x22selector-class\x22,\x22\x5c\x5c.\x22+p,0),d(\x22selector-tag\x22,\x22&\x22,0),t.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-pseudo\x22,begin:\x22:(\x22+Et.join(\x22|\x22)+\x22)\x22},{className:\x22selector-pseudo\x22,begin:\x22:(:)?(\x22+_t.join(\x22|\x22)+\x22)\x22},{begin:/\x5c(/,end:/\x5c)/,relevance:0,contains:m},{begin:\x22!important\x22},t.FUNCTION_DISPATCH]},M={begin:l+`:(:)?(${n.join(\x22|\x22)})`,returnBegin:!0,contains:[x]};return\x20o.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,N,O,M,S,x,y,t.FUNCTION_DISPATCH),{name:\x22Less\x22,case_insensitive:!0,illegal:`[=>\x27/<($\x22]`,contains:o}}function\x20vt(e){let\x20t=e.regex,n={},r={begin:/\x5c$\x5c{/,end:/\x5c}/,contains:[\x22self\x22,{begin:/:-/,contains:[n]}]};Object.assign(n,{className:\x22variable\x22,variants:[{begin:t.concat(/\x5c$[\x5cw\x5cd#@][\x5cw\x5cd_]*/,\x22(?![\x5c\x5cw\x5c\x5cd])(?![$])\x22)},r]});let\x20l={className:\x22subst\x22,begin:/\x5c$\x5c(/,end:/\x5c)/,contains:[e.BACKSLASH_ESCAPE]},p=e.inherit(e.COMMENT(),{match:[/(^|\x5cs)/,/#.*$/],scope:{2:\x22comment\x22}}),o={begin:/<<-?\x5cs*(?=\x5cw+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\x5cw+)/,end:/(\x5cw+)/,className:\x22string\x22})]}},i={className:\x22string\x22,begin:/\x22/,end:/\x22/,contains:[e.BACKSLASH_ESCAPE,n,l]};l.contains.push(i);let\x20s={match:/\x5c\x5c\x22/},d={className:\x22string\x22,begin:/\x27/,end:/\x27/},f={match:/\x5c\x5c\x27/},w={begin:/\x5c$?\x5c(\x5c(/,end:/\x5c)\x5c)/,contains:[{begin:/\x5cd+#[0-9a-f]+/,className:\x22number\x22},e.NUMBER_MODE,n]},m=[\x22fish\x22,\x22bash\x22,\x22zsh\x22,\x22sh\x22,\x22csh\x22,\x22ksh\x22,\x22tcsh\x22,\x22dash\x22,\x22scsh\x22],y=e.SHEBANG({binary:`(${m.join(\x22|\x22)})`,relevance:10}),S={className:\x22function\x22,begin:/\x5cw[\x5cw\x5cd_]*\x5cs*\x5c(\x5cs*\x5c)\x5cs*\x5c{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\x5cw[\x5cw\x5cd_]*/})],relevance:0},N=[\x22if\x22,\x22then\x22,\x22else\x22,\x22elif\x22,\x22fi\x22,\x22time\x22,\x22for\x22,\x22while\x22,\x22until\x22,\x22in\x22,\x22do\x22,\x22done\x22,\x22case\x22,\x22esac\x22,\x22coproc\x22,\x22function\x22,\x22select\x22],O=[\x22true\x22,\x22false\x22],x={match:/(\x5c/[a-z._-]+)+/},M=[\x22break\x22,\x22cd\x22,\x22continue\x22,\x22eval\x22,\x22exec\x22,\x22exit\x22,\x22export\x22,\x22getopts\x22,\x22hash\x22,\x22pwd\x22,\x22readonly\x22,\x22return\x22,\x22shift\x22,\x22test\x22,\x22times\x22,\x22trap\x22,\x22umask\x22,\x22unset\x22],I=[\x22alias\x22,\x22bind\x22,\x22builtin\x22,\x22caller\x22,\x22command\x22,\x22declare\x22,\x22echo\x22,\x22enable\x22,\x22help\x22,\x22let\x22,\x22local\x22,\x22logout\x22,\x22mapfile\x22,\x22printf\x22,\x22read\x22,\x22readarray\x22,\x22source\x22,\x22sudo\x22,\x22type\x22,\x22typeset\x22,\x22ulimit\x22,\x22unalias\x22],D=[\x22autoload\x22,\x22bg\x22,\x22bindkey\x22,\x22bye\x22,\x22cap\x22,\x22chdir\x22,\x22clone\x22,\x22comparguments\x22,\x22compcall\x22,\x22compctl\x22,\x22compdescribe\x22,\x22compfiles\x22,\x22compgroups\x22,\x22compquote\x22,\x22comptags\x22,\x22comptry\x22,\x22compvalues\x22,\x22dirs\x22,\x22disable\x22,\x22disown\x22,\x22echotc\x22,\x22echoti\x22,\x22emulate\x22,\x22fc\x22,\x22fg\x22,\x22float\x22,\x22functions\x22,\x22getcap\x22,\x22getln\x22,\x22history\x22,\x22integer\x22,\x22jobs\x22,\x22kill\x22,\x22limit\x22,\x22log\x22,\x22noglob\x22,\x22popd\x22,\x22print\x22,\x22pushd\x22,\x22pushln\x22,\x22rehash\x22,\x22sched\x22,\x22setcap\x22,\x22setopt\x22,\x22stat\x22,\x22suspend\x22,\x22ttyctl\x22,\x22unfunction\x22,\x22unhash\x22,\x22unlimit\x22,\x22unsetopt\x22,\x22vared\x22,\x22wait\x22,\x22whence\x22,\x22where\x22,\x22which\x22,\x22zcompile\x22,\x22zformat\x22,\x22zftp\x22,\x22zle\x22,\x22zmodload\x22,\x22zparseopts\x22,\x22zprof\x22,\x22zpty\x22,\x22zregexparse\x22,\x22zsocket\x22,\x22zstyle\x22,\x22ztcp\x22],A=[\x22chcon\x22,\x22chgrp\x22,\x22chown\x22,\x22chmod\x22,\x22cp\x22,\x22dd\x22,\x22df\x22,\x22dir\x22,\x22dircolors\x22,\x22ln\x22,\x22ls\x22,\x22mkdir\x22,\x22mkfifo\x22,\x22mknod\x22,\x22mktemp\x22,\x22mv\x22,\x22realpath\x22,\x22rm\x22,\x22rmdir\x22,\x22shred\x22,\x22sync\x22,\x22touch\x22,\x22truncate\x22,\x22vdir\x22,\x22b2sum\x22,\x22base32\x22,\x22base64\x22,\x22cat\x22,\x22cksum\x22,\x22comm\x22,\x22csplit\x22,\x22cut\x22,\x22expand\x22,\x22fmt\x22,\x22fold\x22,\x22head\x22,\x22join\x22,\x22md5sum\x22,\x22nl\x22,\x22numfmt\x22,\x22od\x22,\x22paste\x22,\x22ptx\x22,\x22pr\x22,\x22sha1sum\x22,\x22sha224sum\x22,\x22sha256sum\x22,\x22sha384sum\x22,\x22sha512sum\x22,\x22shuf\x22,\x22sort\x22,\x22split\x22,\x22sum\x22,\x22tac\x22,\x22tail\x22,\x22tr\x22,\x22tsort\x22,\x22unexpand\x22,\x22uniq\x22,\x22wc\x22,\x22arch\x22,\x22basename\x22,\x22chroot\x22,\x22date\x22,\x22dirname\x22,\x22du\x22,\x22echo\x22,\x22env\x22,\x22expr\x22,\x22factor\x22,\x22groups\x22,\x22hostid\x22,\x22id\x22,\x22link\x22,\x22logname\x22,\x22nice\x22,\x22nohup\x22,\x22nproc\x22,\x22pathchk\x22,\x22pinky\x22,\x22printenv\x22,\x22printf\x22,\x22pwd\x22,\x22readlink\x22,\x22runcon\x22,\x22seq\x22,\x22sleep\x22,\x22stat\x22,\x22stdbuf\x22,\x22stty\x22,\x22tee\x22,\x22test\x22,\x22timeout\x22,\x22tty\x22,\x22uname\x22,\x22unlink\x22,\x22uptime\x22,\x22users\x22,\x22who\x22,\x22whoami\x22,\x22yes\x22];return{name:\x22Bash\x22,aliases:[\x22sh\x22,\x22zsh\x22],keywords:{$pattern:/\x5cb[a-z][a-z0-9._-]+\x5cb/,keyword:N,literal:O,built_in:[...M,...I,\x22set\x22,\x22shopt\x22,...D,...A]},contains:[y,e.SHEBANG(),S,w,p,o,x,i,s,d,f,n]}}var\x20te=\x22[0-9](_*[0-9])*\x22,me=`\x5c\x5c.(${te})`,he=\x22[0-9a-fA-F](_*[0-9a-fA-F])*\x22,wt={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${te})((${me})|\x5c\x5c.)?|(${me}))[eE][+-]?(${te})[fFdD]?\x5c\x5cb`},{begin:`\x5c\x5cb(${te})((${me})[fFdD]?\x5c\x5cb|\x5c\x5c.([fFdD]\x5c\x5cb)?)`},{begin:`(${me})[fFdD]?\x5c\x5cb`},{begin:`\x5c\x5cb(${te})[fFdD]\x5c\x5cb`},{begin:`\x5c\x5cb0[xX]((${he})\x5c\x5c.?|(${he})?\x5c\x5c.(${he}))[pP][+-]?(${te})[fFdD]?\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_*[0-9])*)[lL]?\x5c\x5cb\x22},{begin:`\x5c\x5cb0[xX](${he})[lL]?\x5c\x5cb`},{begin:\x22\x5c\x5cb0(_*[0-7])*[lL]?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][01](_*[01])*[lL]?\x5c\x5cb\x22}],relevance:0};function\x20Nt(e,t,n){return\x20n===-1?\x22\x22:e.replace(t,r=>Nt(e,t,n-1))}function\x20kt(e){let\x20t=e.regex,n=\x22[\x5cxC0-\x5cu02B8a-zA-Z_$][\x5cxC0-\x5cu02B8a-zA-Z_$0-9]*\x22,r=\x22(?:(?:\x5c\x5cs*\x5c\x5c[\x5c\x5cs*])+)?\x22,l=n+\x22<@@@>\x22+r,o=\x22(?:\x22+(\x22\x5c\x5c?(?:\x5c\x5cs+(?:extends|super)\x5c\x5cs+\x22+l+\x22)?\x22)+\x22|\x22+l+\x22)\x22,i=Nt(\x22(?:\x5c\x5cs*<\x5c\x5cs*\x22+o+\x22(?:\x5c\x5cs*,\x5c\x5cs*\x22+o+\x22)*\x5c\x5cs*>)?\x22,/<@@@>/g,2),m={keyword:[\x22synchronized\x22,\x22abstract\x22,\x22private\x22,\x22var\x22,\x22static\x22,\x22if\x22,\x22const\x20\x22,\x22for\x22,\x22while\x22,\x22strictfp\x22,\x22finally\x22,\x22protected\x22,\x22import\x22,\x22native\x22,\x22final\x22,\x22void\x22,\x22enum\x22,\x22else\x22,\x22break\x22,\x22transient\x22,\x22catch\x22,\x22instanceof\x22,\x22volatile\x22,\x22case\x22,\x22assert\x22,\x22package\x22,\x22default\x22,\x22public\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22throws\x22,\x22protected\x22,\x22public\x22,\x22private\x22,\x22module\x22,\x22requires\x22,\x22exports\x22,\x22do\x22,\x22sealed\x22,\x22yield\x22,\x22permits\x22,\x22goto\x22,\x22when\x22],literal:[\x22false\x22,\x22true\x22,\x22null\x22],type:[\x22char\x22,\x22boolean\x22,\x22long\x22,\x22float\x22,\x22int\x22,\x22byte\x22,\x22short\x22,\x22double\x22],built_in:[\x22super\x22,\x22this\x22]},y={className:\x22meta\x22,begin:\x22@\x22+n,contains:[{begin:/\x5c(/,end:/\x5c)/,contains:[\x22self\x22]}]},S={className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,keywords:m,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:\x22Java\x22,aliases:[\x22jsp\x22],keywords:m,illegal:/<\x5c/|#/,contains:[e.COMMENT(\x22/\x5c\x5c*\x5c\x5c*\x22,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:/\x5cw+@/,relevance:0},{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22}]}),{begin:/import\x20java\x5c.[a-z]+\x5c./,keywords:\x22import\x22,relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/\x22\x22\x22/,end:/\x22\x22\x22/,className:\x22string\x22,contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\x5cb(?:class|interface|enum|extends|implements|new)/,/\x5cs+/,n],className:{1:\x22keyword\x22,3:\x22title.class\x22}},{match:/non-sealed/,scope:\x22keyword\x22},{beginKeywords:\x22new\x20throw\x20return\x20else\x20yield\x20assert\x22,relevance:0},{begin:[n,t.concat(i,r,/\x5cs+/),n,r,/\x5cs*/,/=(?!=)/],className:{1:\x22type\x22,3:\x22variable\x22,6:\x22operator\x22}},{begin:[/record/,/\x5cs+/,n],className:{1:\x22keyword\x22,3:\x22title.class\x22},contains:[S,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{begin:[n,t.concat(i,r,/\x5cs+/),n,/\x5cs*(?=\x5c()/],className:{1:\x22type\x22,3:\x22title.function\x22},keywords:m,contains:[{className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,keywords:m,relevance:0,contains:[y,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,wt,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},wt,y]}}function\x20St(e){let\x20t=e.regex,n=e.COMMENT(\x22--\x22,\x22$\x22),r={scope:\x22string\x22,variants:[{begin:/\x27/,end:/\x27/,contains:[{match:/\x27\x27/}]}]},l={begin:/\x22/,end:/\x22/,contains:[{match:/\x22\x22/}]},p=[\x22true\x22,\x22false\x22,\x22unknown\x22],o=[\x22double\x20precision\x22,\x22large\x20object\x22,\x22with\x20timezone\x22,\x22without\x20timezone\x22],i=[\x22bigint\x22,\x22binary\x22,\x22blob\x22,\x22boolean\x22,\x22char\x22,\x22character\x22,\x22clob\x22,\x22date\x22,\x22dec\x22,\x22decfloat\x22,\x22decimal\x22,\x22float\x22,\x22int\x22,\x22integer\x22,\x22interval\x22,\x22nchar\x22,\x22nclob\x22,\x22national\x22,\x22numeric\x22,\x22real\x22,\x22row\x22,\x22smallint\x22,\x22time\x22,\x22timestamp\x22,\x22varchar\x22,\x22varying\x22,\x22varbinary\x22],s=[\x22add\x22,\x22asc\x22,\x22collation\x22,\x22desc\x22,\x22final\x22,\x22first\x22,\x22last\x22,\x22view\x22],d=[\x22abs\x22,\x22acos\x22,\x22all\x22,\x22allocate\x22,\x22alter\x22,\x22and\x22,\x22any\x22,\x22are\x22,\x22array\x22,\x22array_agg\x22,\x22array_max_cardinality\x22,\x22as\x22,\x22asensitive\x22,\x22asin\x22,\x22asymmetric\x22,\x22at\x22,\x22atan\x22,\x22atomic\x22,\x22authorization\x22,\x22avg\x22,\x22begin\x22,\x22begin_frame\x22,\x22begin_partition\x22,\x22between\x22,\x22bigint\x22,\x22binary\x22,\x22blob\x22,\x22boolean\x22,\x22both\x22,\x22by\x22,\x22call\x22,\x22called\x22,\x22cardinality\x22,\x22cascaded\x22,\x22case\x22,\x22cast\x22,\x22ceil\x22,\x22ceiling\x22,\x22char\x22,\x22char_length\x22,\x22character\x22,\x22character_length\x22,\x22check\x22,\x22classifier\x22,\x22clob\x22,\x22close\x22,\x22coalesce\x22,\x22collate\x22,\x22collect\x22,\x22column\x22,\x22commit\x22,\x22condition\x22,\x22connect\x22,\x22constraint\x22,\x22contains\x22,\x22convert\x22,\x22copy\x22,\x22corr\x22,\x22corresponding\x22,\x22cos\x22,\x22cosh\x22,\x22count\x22,\x22covar_pop\x22,\x22covar_samp\x22,\x22create\x22,\x22cross\x22,\x22cube\x22,\x22cume_dist\x22,\x22current\x22,\x22current_catalog\x22,\x22current_date\x22,\x22current_default_transform_group\x22,\x22current_path\x22,\x22current_role\x22,\x22current_row\x22,\x22current_schema\x22,\x22current_time\x22,\x22current_timestamp\x22,\x22current_path\x22,\x22current_role\x22,\x22current_transform_group_for_type\x22,\x22current_user\x22,\x22cursor\x22,\x22cycle\x22,\x22date\x22,\x22day\x22,\x22deallocate\x22,\x22dec\x22,\x22decimal\x22,\x22decfloat\x22,\x22declare\x22,\x22default\x22,\x22define\x22,\x22delete\x22,\x22dense_rank\x22,\x22deref\x22,\x22describe\x22,\x22deterministic\x22,\x22disconnect\x22,\x22distinct\x22,\x22double\x22,\x22drop\x22,\x22dynamic\x22,\x22each\x22,\x22element\x22,\x22else\x22,\x22empty\x22,\x22end\x22,\x22end_frame\x22,\x22end_partition\x22,\x22end-exec\x22,\x22equals\x22,\x22escape\x22,\x22every\x22,\x22except\x22,\x22exec\x22,\x22execute\x22,\x22exists\x22,\x22exp\x22,\x22external\x22,\x22extract\x22,\x22false\x22,\x22fetch\x22,\x22filter\x22,\x22first_value\x22,\x22float\x22,\x22floor\x22,\x22for\x22,\x22foreign\x22,\x22frame_row\x22,\x22free\x22,\x22from\x22,\x22full\x22,\x22function\x22,\x22fusion\x22,\x22get\x22,\x22global\x22,\x22grant\x22,\x22group\x22,\x22grouping\x22,\x22groups\x22,\x22having\x22,\x22hold\x22,\x22hour\x22,\x22identity\x22,\x22in\x22,\x22indicator\x22,\x22initial\x22,\x22inner\x22,\x22inout\x22,\x22insensitive\x22,\x22insert\x22,\x22int\x22,\x22integer\x22,\x22intersect\x22,\x22intersection\x22,\x22interval\x22,\x22into\x22,\x22is\x22,\x22join\x22,\x22json_array\x22,\x22json_arrayagg\x22,\x22json_exists\x22,\x22json_object\x22,\x22json_objectagg\x22,\x22json_query\x22,\x22json_table\x22,\x22json_table_primitive\x22,\x22json_value\x22,\x22lag\x22,\x22language\x22,\x22large\x22,\x22last_value\x22,\x22lateral\x22,\x22lead\x22,\x22leading\x22,\x22left\x22,\x22like\x22,\x22like_regex\x22,\x22listagg\x22,\x22ln\x22,\x22local\x22,\x22localtime\x22,\x22localtimestamp\x22,\x22log\x22,\x22log10\x22,\x22lower\x22,\x22match\x22,\x22match_number\x22,\x22match_recognize\x22,\x22matches\x22,\x22max\x22,\x22member\x22,\x22merge\x22,\x22method\x22,\x22min\x22,\x22minute\x22,\x22mod\x22,\x22modifies\x22,\x22module\x22,\x22month\x22,\x22multiset\x22,\x22national\x22,\x22natural\x22,\x22nchar\x22,\x22nclob\x22,\x22new\x22,\x22no\x22,\x22none\x22,\x22normalize\x22,\x22not\x22,\x22nth_value\x22,\x22ntile\x22,\x22null\x22,\x22nullif\x22,\x22numeric\x22,\x22octet_length\x22,\x22occurrences_regex\x22,\x22of\x22,\x22offset\x22,\x22old\x22,\x22omit\x22,\x22on\x22,\x22one\x22,\x22only\x22,\x22open\x22,\x22or\x22,\x22order\x22,\x22out\x22,\x22outer\x22,\x22over\x22,\x22overlaps\x22,\x22overlay\x22,\x22parameter\x22,\x22partition\x22,\x22pattern\x22,\x22per\x22,\x22percent\x22,\x22percent_rank\x22,\x22percentile_cont\x22,\x22percentile_disc\x22,\x22period\x22,\x22portion\x22,\x22position\x22,\x22position_regex\x22,\x22power\x22,\x22precedes\x22,\x22precision\x22,\x22prepare\x22,\x22primary\x22,\x22procedure\x22,\x22ptf\x22,\x22range\x22,\x22rank\x22,\x22reads\x22,\x22real\x22,\x22recursive\x22,\x22ref\x22,\x22references\x22,\x22referencing\x22,\x22regr_avgx\x22,\x22regr_avgy\x22,\x22regr_count\x22,\x22regr_intercept\x22,\x22regr_r2\x22,\x22regr_slope\x22,\x22regr_sxx\x22,\x22regr_sxy\x22,\x22regr_syy\x22,\x22release\x22,\x22result\x22,\x22return\x22,\x22returns\x22,\x22revoke\x22,\x22right\x22,\x22rollback\x22,\x22rollup\x22,\x22row\x22,\x22row_number\x22,\x22rows\x22,\x22running\x22,\x22savepoint\x22,\x22scope\x22,\x22scroll\x22,\x22search\x22,\x22second\x22,\x22seek\x22,\x22select\x22,\x22sensitive\x22,\x22session_user\x22,\x22set\x22,\x22show\x22,\x22similar\x22,\x22sin\x22,\x22sinh\x22,\x22skip\x22,\x22smallint\x22,\x22some\x22,\x22specific\x22,\x22specifictype\x22,\x22sql\x22,\x22sqlexception\x22,\x22sqlstate\x22,\x22sqlwarning\x22,\x22sqrt\x22,\x22start\x22,\x22static\x22,\x22stddev_pop\x22,\x22stddev_samp\x22,\x22submultiset\x22,\x22subset\x22,\x22substring\x22,\x22substring_regex\x22,\x22succeeds\x22,\x22sum\x22,\x22symmetric\x22,\x22system\x22,\x22system_time\x22,\x22system_user\x22,\x22table\x22,\x22tablesample\x22,\x22tan\x22,\x22tanh\x22,\x22then\x22,\x22time\x22,\x22timestamp\x22,\x22timezone_hour\x22,\x22timezone_minute\x22,\x22to\x22,\x22trailing\x22,\x22translate\x22,\x22translate_regex\x22,\x22translation\x22,\x22treat\x22,\x22trigger\x22,\x22trim\x22,\x22trim_array\x22,\x22true\x22,\x22truncate\x22,\x22uescape\x22,\x22union\x22,\x22unique\x22,\x22unknown\x22,\x22unnest\x22,\x22update\x22,\x22upper\x22,\x22user\x22,\x22using\x22,\x22value\x22,\x22values\x22,\x22value_of\x22,\x22var_pop\x22,\x22var_samp\x22,\x22varbinary\x22,\x22varchar\x22,\x22varying\x22,\x22versioning\x22,\x22when\x22,\x22whenever\x22,\x22where\x22,\x22width_bucket\x22,\x22window\x22,\x22with\x22,\x22within\x22,\x22without\x22,\x22year\x22],f=[\x22abs\x22,\x22acos\x22,\x22array_agg\x22,\x22asin\x22,\x22atan\x22,\x22avg\x22,\x22cast\x22,\x22ceil\x22,\x22ceiling\x22,\x22coalesce\x22,\x22corr\x22,\x22cos\x22,\x22cosh\x22,\x22count\x22,\x22covar_pop\x22,\x22covar_samp\x22,\x22cume_dist\x22,\x22dense_rank\x22,\x22deref\x22,\x22element\x22,\x22exp\x22,\x22extract\x22,\x22first_value\x22,\x22floor\x22,\x22json_array\x22,\x22json_arrayagg\x22,\x22json_exists\x22,\x22json_object\x22,\x22json_objectagg\x22,\x22json_query\x22,\x22json_table\x22,\x22json_table_primitive\x22,\x22json_value\x22,\x22lag\x22,\x22last_value\x22,\x22lead\x22,\x22listagg\x22,\x22ln\x22,\x22log\x22,\x22log10\x22,\x22lower\x22,\x22max\x22,\x22min\x22,\x22mod\x22,\x22nth_value\x22,\x22ntile\x22,\x22nullif\x22,\x22percent_rank\x22,\x22percentile_cont\x22,\x22percentile_disc\x22,\x22position\x22,\x22position_regex\x22,\x22power\x22,\x22rank\x22,\x22regr_avgx\x22,\x22regr_avgy\x22,\x22regr_count\x22,\x22regr_intercept\x22,\x22regr_r2\x22,\x22regr_slope\x22,\x22regr_sxx\x22,\x22regr_sxy\x22,\x22regr_syy\x22,\x22row_number\x22,\x22sin\x22,\x22sinh\x22,\x22sqrt\x22,\x22stddev_pop\x22,\x22stddev_samp\x22,\x22substring\x22,\x22substring_regex\x22,\x22sum\x22,\x22tan\x22,\x22tanh\x22,\x22translate\x22,\x22translate_regex\x22,\x22treat\x22,\x22trim\x22,\x22trim_array\x22,\x22unnest\x22,\x22upper\x22,\x22value_of\x22,\x22var_pop\x22,\x22var_samp\x22,\x22width_bucket\x22],w=[\x22current_catalog\x22,\x22current_date\x22,\x22current_default_transform_group\x22,\x22current_path\x22,\x22current_role\x22,\x22current_schema\x22,\x22current_transform_group_for_type\x22,\x22current_user\x22,\x22session_user\x22,\x22system_time\x22,\x22system_user\x22,\x22current_time\x22,\x22localtime\x22,\x22current_timestamp\x22,\x22localtimestamp\x22],m=[\x22create\x20table\x22,\x22insert\x20into\x22,\x22primary\x20key\x22,\x22foreign\x20key\x22,\x22not\x20null\x22,\x22alter\x20table\x22,\x22add\x20constraint\x22,\x22grouping\x20sets\x22,\x22on\x20overflow\x22,\x22character\x20set\x22,\x22respect\x20nulls\x22,\x22ignore\x20nulls\x22,\x22nulls\x20first\x22,\x22nulls\x20last\x22,\x22depth\x20first\x22,\x22breadth\x20first\x22],y=f,S=[...d,...s].filter(A=>!f.includes(A)),N={scope:\x22variable\x22,match:/@[a-z0-9][a-z0-9_]*/},O={scope:\x22operator\x22,match:/[-+*/=%^~]|&&?|\x5c|\x5c|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},x={match:t.concat(/\x5cb/,t.either(...y),/\x5cs*\x5c(/),relevance:0,keywords:{built_in:y}};function\x20M(A){return\x20t.concat(/\x5cb/,t.either(...A.map(C=>C.replace(/\x5cs+/,\x22\x5c\x5cs+\x22))),/\x5cb/)}let\x20I={scope:\x22keyword\x22,match:M(m),relevance:0};function\x20D(A,{exceptions:C,when:X}={}){let\x20B=X;return\x20C=C||[],A.map($=>$.match(/\x5c|\x5cd+$/)||C.includes($)?$:B($)?`${$}|0`:$)}return{name:\x22SQL\x22,case_insensitive:!0,illegal:/[{}]|<\x5c//,keywords:{$pattern:/\x5cb[\x5cw\x5c.]+/,keyword:D(S,{when:A=>A.length<3}),literal:p,type:i,built_in:w},contains:[{scope:\x22type\x22,match:M(o)},I,x,N,r,l,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,O]}}function\x20Tt(e){let\x20t=e.regex,n={begin:/<\x5c/?[A-Za-z_]/,end:\x22>\x22,subLanguage:\x22xml\x22,relevance:0},r={match:/^\x20{0,3}([-*_])[\x20\x5ct]*(?:\x5c1[\x20\x5ct]*){2,}$/},l={className:\x22code\x22,variants:[{begin:\x22(`{3,})[^`](.|\x5c\x5cn)*?\x5c\x5c1`*[\x20]*\x22},{begin:\x22(~{3,})[^~](.|\x5c\x5cn)*?\x5c\x5c1~*[\x20]*\x22},{begin:\x22```\x22,end:\x22```+[\x20]*$\x22},{begin:\x22~~~\x22,end:\x22~~~+[\x20]*$\x22},{begin:\x22`.+?`\x22},{begin:\x22(?=^(\x20{4}|\x5c\x5ct))\x22,contains:[{begin:\x22^(\x20{4}|\x5c\x5ct)\x22,end:\x22(\x5c\x5cn)$\x22}],relevance:0}]},p={className:\x22bullet\x22,begin:\x22^[\x20\x09]*([*+-]|(\x5c\x5cd+\x5c\x5c.))(?=\x5c\x5cs+)\x22,end:\x22\x5c\x5cs+\x22,excludeEnd:!0},o={begin:/^\x5c[[^\x5cn]+\x5c]:/,returnBegin:!0,contains:[{className:\x22symbol\x22,begin:/\x5c[/,end:/\x5c]/,excludeBegin:!0,excludeEnd:!0},{className:\x22link\x22,begin:/:\x5cs*/,end:/$/,excludeBegin:!0}]},i=/[A-Za-z][A-Za-z0-9+.-]*/,s={variants:[{begin:/\x5c[.+?\x5c]\x5c[.*?\x5c]/,relevance:0},{begin:/\x5c[.+?\x5c]\x5c(((data|javascript|mailto):|(?:http|ftp)s?:\x5c/\x5c/).*?\x5c)/,relevance:2},{begin:t.concat(/\x5c[.+?\x5c]\x5c(/,i,/:\x5c/\x5c/.*?\x5c)/),relevance:2},{begin:/\x5c[.+?\x5c]\x5c([./?&#].*?\x5c)/,relevance:1},{begin:/\x5c[.*?\x5c]\x5c(.*?\x5c)/,relevance:0}],returnBegin:!0,contains:[{match:/\x5c[(?=\x5c])/},{className:\x22string\x22,relevance:0,begin:\x22\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,excludeBegin:!0,returnEnd:!0},{className:\x22link\x22,relevance:0,begin:\x22\x5c\x5c]\x5c\x5c(\x22,end:\x22\x5c\x5c)\x22,excludeBegin:!0,excludeEnd:!0},{className:\x22symbol\x22,relevance:0,begin:\x22\x5c\x5c]\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,excludeBegin:!0,excludeEnd:!0}]},d={className:\x22strong\x22,contains:[],variants:[{begin:/_{2}(?!\x5cs)/,end:/_{2}/},{begin:/\x5c*{2}(?!\x5cs)/,end:/\x5c*{2}/}]},f={className:\x22emphasis\x22,contains:[],variants:[{begin:/\x5c*(?![*\x5cs])/,end:/\x5c*/},{begin:/_(?![_\x5cs])/,end:/_/,relevance:0}]},w=e.inherit(d,{contains:[]}),m=e.inherit(f,{contains:[]});d.contains.push(m),f.contains.push(w);let\x20y=[n,s];return[d,f,w,m].forEach(x=>{x.contains=x.contains.concat(y)}),y=y.concat(d,f),{name:\x22Markdown\x22,aliases:[\x22md\x22,\x22mkdown\x22,\x22mkd\x22],contains:[{className:\x22section\x22,variants:[{begin:\x22^#{1,6}\x22,end:\x22$\x22,contains:y},{begin:\x22(?=^.+?\x5c\x5cn[=-]{2,}$)\x22,contains:[{begin:\x22^[=-]*$\x22},{begin:\x22^\x22,end:\x22\x5c\x5cn\x22,contains:y}]}]},n,p,r,d,f,{className:\x22quote\x22,begin:\x22^>\x5c\x5cs+\x22,contains:y,end:\x22$\x22},l,s,o,{scope:\x22literal\x22,match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function\x20xt(e){let\x20t=\x22true\x20false\x20yes\x20no\x20null\x22,n=\x22[\x5c\x5cw#;/?:@&=+$,.~*\x27()[\x5c\x5c]]+\x22,r={className:\x22attr\x22,variants:[{begin:/[\x5cw*@][\x5cw*@\x20:()\x5c./-]*:(?=[\x20\x5ct]|$)/},{begin:/\x22[\x5cw*@][\x5cw*@\x20:()\x5c./-]*\x22:(?=[\x20\x5ct]|$)/},{begin:/\x27[\x5cw*@][\x5cw*@\x20:()\x5c./-]*\x27:(?=[\x20\x5ct]|$)/}]},l={className:\x22template-variable\x22,variants:[{begin:/\x5c{\x5c{/,end:/\x5c}\x5c}/},{begin:/%\x5c{/,end:/\x5c}/}]},p={className:\x22string\x22,relevance:0,begin:/\x27/,end:/\x27/,contains:[{match:/\x27\x27/,scope:\x22char.escape\x22,relevance:0}]},o={className:\x22string\x22,relevance:0,variants:[{begin:/\x22/,end:/\x22/},{begin:/\x5cS+/}],contains:[e.BACKSLASH_ESCAPE,l]},i=e.inherit(o,{variants:[{begin:/\x27/,end:/\x27/,contains:[{begin:/\x27\x27/,relevance:0}]},{begin:/\x22/,end:/\x22/},{begin:/[^\x5cs,{}[\x5c]]+/}]}),m={className:\x22number\x22,begin:\x22\x5c\x5cb\x22+\x22[0-9]{4}(-[0-9][0-9]){0,2}\x22+\x22([Tt\x20\x5c\x5ct][0-9][0-9]?(:[0-9][0-9]){2})?\x22+\x22(\x5c\x5c.[0-9]*)?\x22+\x22([\x20\x5c\x5ct])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\x22+\x22\x5c\x5cb\x22},y={end:\x22,\x22,endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},S={begin:/\x5c{/,end:/\x5c}/,contains:[y],illegal:\x22\x5c\x5cn\x22,relevance:0},N={begin:\x22\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,contains:[y],illegal:\x22\x5c\x5cn\x22,relevance:0},O=[r,{className:\x22meta\x22,begin:\x22^---\x5c\x5cs*$\x22,relevance:10},{className:\x22string\x22,begin:\x22[\x5c\x5c|>]([1-9]?[+-])?[\x20]*\x5c\x5cn(\x20+)[^\x20][^\x5c\x5cn]*\x5c\x5cn(\x5c\x5c2[^\x5c\x5cn]+\x5c\x5cn?)*\x22},{begin:\x22<%[%=-]?\x22,end:\x22[%-]?%>\x22,subLanguage:\x22ruby\x22,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:\x22type\x22,begin:\x22!\x5c\x5cw+!\x22+n},{className:\x22type\x22,begin:\x22!<\x22+n+\x22>\x22},{className:\x22type\x22,begin:\x22!\x22+n},{className:\x22type\x22,begin:\x22!!\x22+n},{className:\x22meta\x22,begin:\x22&\x22+e.UNDERSCORE_IDENT_RE+\x22$\x22},{className:\x22meta\x22,begin:\x22\x5c\x5c*\x22+e.UNDERSCORE_IDENT_RE+\x22$\x22},{className:\x22bullet\x22,begin:\x22-(?=[\x20]|$)\x22,relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},m,{className:\x22number\x22,begin:e.C_NUMBER_RE+\x22\x5c\x5cb\x22,relevance:0},S,N,p,o],x=[...O];return\x20x.pop(),x.push(i),y.contains=x,{name:\x22YAML\x22,case_insensitive:!0,aliases:[\x22yml\x22],contains:O}}function\x20Ot(e){let\x20t=e.regex,n=/[\x5cp{XID_Start}_]\x5cp{XID_Continue}*/u,r=[\x22and\x22,\x22as\x22,\x22assert\x22,\x22async\x22,\x22await\x22,\x22break\x22,\x22case\x22,\x22class\x22,\x22continue\x22,\x22def\x22,\x22del\x22,\x22elif\x22,\x22else\x22,\x22except\x22,\x22finally\x22,\x22for\x22,\x22from\x22,\x22global\x22,\x22if\x22,\x22import\x22,\x22in\x22,\x22is\x22,\x22lambda\x22,\x22lazy\x22,\x22match\x22,\x22nonlocal|10\x22,\x22not\x22,\x22or\x22,\x22pass\x22,\x22raise\x22,\x22return\x22,\x22try\x22,\x22while\x22,\x22with\x22,\x22yield\x22],i={$pattern:/[A-Za-z]\x5cw+|__\x5cw+__/,keyword:r,built_in:[\x22__import__\x22,\x22abs\x22,\x22aiter\x22,\x22all\x22,\x22anext\x22,\x22any\x22,\x22ascii\x22,\x22bin\x22,\x22bool\x22,\x22breakpoint\x22,\x22bytearray\x22,\x22bytes\x22,\x22callable\x22,\x22chr\x22,\x22classmethod\x22,\x22compile\x22,\x22complex\x22,\x22delattr\x22,\x22dict\x22,\x22dir\x22,\x22divmod\x22,\x22enumerate\x22,\x22eval\x22,\x22exec\x22,\x22filter\x22,\x22float\x22,\x22format\x22,\x22frozendict\x22,\x22frozenset\x22,\x22getattr\x22,\x22globals\x22,\x22hasattr\x22,\x22hash\x22,\x22help\x22,\x22hex\x22,\x22id\x22,\x22input\x22,\x22int\x22,\x22isinstance\x22,\x22issubclass\x22,\x22iter\x22,\x22len\x22,\x22list\x22,\x22locals\x22,\x22map\x22,\x22max\x22,\x22memoryview\x22,\x22min\x22,\x22next\x22,\x22object\x22,\x22oct\x22,\x22open\x22,\x22ord\x22,\x22pow\x22,\x22print\x22,\x22property\x22,\x22range\x22,\x22repr\x22,\x22reversed\x22,\x22round\x22,\x22sentinel\x22,\x22set\x22,\x22setattr\x22,\x22slice\x22,\x22sorted\x22,\x22staticmethod\x22,\x22str\x22,\x22sum\x22,\x22super\x22,\x22tuple\x22,\x22type\x22,\x22vars\x22,\x22zip\x22],literal:[\x22__debug__\x22,\x22Ellipsis\x22,\x22False\x22,\x22None\x22,\x22NotImplemented\x22,\x22True\x22],type:[\x22Any\x22,\x22Callable\x22,\x22Coroutine\x22,\x22Dict\x22,\x22List\x22,\x22Literal\x22,\x22Generic\x22,\x22Optional\x22,\x22Sequence\x22,\x22Set\x22,\x22Tuple\x22,\x22Type\x22,\x22Union\x22]},s={className:\x22meta\x22,begin:/^(>>>|\x5c.\x5c.\x5c.)\x20/},d={className:\x22subst\x22,begin:/\x5c{/,end:/\x5c}/,keywords:i,illegal:/#/},f={begin:/\x5c{\x5c{/,relevance:0},w={className:\x22string\x22,contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\x27\x27\x27/,end:/\x27\x27\x27/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\x22\x22\x22/,end:/\x22\x22\x22/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x27\x27\x27/,end:/\x27\x27\x27/,contains:[e.BACKSLASH_ESCAPE,s,f,d]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x22\x22\x22/,end:/\x22\x22\x22/,contains:[e.BACKSLASH_ESCAPE,s,f,d]},{begin:/([uU]|[rR])\x27/,end:/\x27/,relevance:10},{begin:/([uU]|[rR])\x22/,end:/\x22/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])\x27/,end:/\x27/},{begin:/([bB]|[bB][rR]|[rR][bB])\x22/,end:/\x22/},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x27/,end:/\x27/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x22/,end:/\x22/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},m=\x22[0-9](_?[0-9])*\x22,y=`(\x5c\x5cb(${m}))?\x5c\x5c.(${m})|\x5c\x5cb(${m})\x5c\x5c.`,S=`\x5c\x5cb|${r.join(\x22|\x22)}`,N={className:\x22number\x22,relevance:0,variants:[{begin:`(\x5c\x5cb(${m})|(${y}))[eE][+-]?(${m})[jJ]?(?=${S})`},{begin:`(${y})[jJ]?`},{begin:`\x5c\x5cb([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${S})`},{begin:`\x5c\x5cb0[bB](_?[01])+[lL]?(?=${S})`},{begin:`\x5c\x5cb0[oO](_?[0-7])+[lL]?(?=${S})`},{begin:`\x5c\x5cb0[xX](_?[0-9a-fA-F])+[lL]?(?=${S})`},{begin:`\x5c\x5cb(${m})[jJ](?=${S})`}]},O={className:\x22comment\x22,begin:t.lookahead(/#\x20type:/),end:/$/,keywords:i,contains:[{begin:/#\x20type:/},{begin:/#/,end:/\x5cb\x5cB/,endsWithParent:!0}]},x={className:\x22params\x22,variants:[{className:\x22\x22,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:[\x22self\x22,s,N,w,e.HASH_COMMENT_MODE]}]};return\x20d.contains=[w,N,s],{name:\x22Python\x22,aliases:[\x22py\x22,\x22gyp\x22,\x22ipython\x22],unicodeRegex:!0,keywords:i,illegal:/(<\x5c/|\x5c?)|=>/,contains:[s,N,{scope:\x22variable.language\x22,match:/\x5cbself\x5cb/},{beginKeywords:\x22if\x22,relevance:0},{match:/\x5cbor\x5cb/,scope:\x22keyword\x22},w,O,e.HASH_COMMENT_MODE,{match:[/\x5cbdef/,/\x5cs+/,n],scope:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[x]},{variants:[{match:[/\x5cbclass/,/\x5cs+/,n,/\x5cs*/,/\x5c(\x5cs*/,n,/\x5cs*\x5c)/]},{match:[/\x5cbclass/,/\x5cs+/,n]}],scope:{1:\x22keyword\x22,3:\x22title.class\x22,6:\x22title.class.inherited\x22}},{className:\x22meta\x22,begin:/^[\x5ct\x20]*@/,end:/(?=#)|$/,contains:[N,x,w]}]}}function\x20At(e){let\x20p={keyword:[\x22break\x22,\x22case\x22,\x22chan\x22,\x22const\x22,\x22continue\x22,\x22default\x22,\x22defer\x22,\x22else\x22,\x22fallthrough\x22,\x22for\x22,\x22func\x22,\x22go\x22,\x22goto\x22,\x22if\x22,\x22import\x22,\x22interface\x22,\x22map\x22,\x22package\x22,\x22range\x22,\x22return\x22,\x22select\x22,\x22struct\x22,\x22switch\x22,\x22type\x22,\x22var\x22],type:[\x22bool\x22,\x22byte\x22,\x22complex64\x22,\x22complex128\x22,\x22error\x22,\x22float32\x22,\x22float64\x22,\x22int8\x22,\x22int16\x22,\x22int32\x22,\x22int64\x22,\x22string\x22,\x22uint8\x22,\x22uint16\x22,\x22uint32\x22,\x22uint64\x22,\x22int\x22,\x22uint\x22,\x22uintptr\x22,\x22rune\x22],literal:[\x22true\x22,\x22false\x22,\x22iota\x22,\x22nil\x22],built_in:[\x22append\x22,\x22cap\x22,\x22close\x22,\x22complex\x22,\x22copy\x22,\x22imag\x22,\x22len\x22,\x22make\x22,\x22new\x22,\x22panic\x22,\x22print\x22,\x22println\x22,\x22real\x22,\x22recover\x22,\x22delete\x22]};return{name:\x22Go\x22,aliases:[\x22golang\x22],keywords:p,illegal:\x22</\x22,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\x22string\x22,variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:\x22`\x22,end:\x22`\x22}]},{className:\x22number\x22,variants:[{match:/-?\x5cb0[xX]\x5c.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\x5cd(_?\x5cd)*i?/,relevance:0},{match:/-?\x5cb0[xX](_?[a-fA-F0-9])+((\x5c.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0},{match:/-?\x5cb0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\x5cb0[bB](_?[01])*i?/,relevance:0},{match:/-?\x5c.\x5cd(_?\x5cd)*([eE][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0},{match:/-?\x5cb\x5cd(_?\x5cd)*(\x5c.(\x5cd(_?\x5cd)*)?)?([eE][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0}]},{begin:/:=/},{className:\x22function\x22,beginKeywords:\x22func\x22,end:\x22\x5c\x5cs*(\x5c\x5c{|$)\x22,excludeEnd:!0,contains:[e.TITLE_MODE,{className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,endsParent:!0,keywords:p,illegal:/[\x22\x27]/}]}]}}z.registerLanguage(\x22javascript\x22,ot);z.registerLanguage(\x22typescript\x22,bt);z.registerLanguage(\x22json\x22,pt);z.registerLanguage(\x22xml\x22,ft);z.registerLanguage(\x22css\x22,mt);z.registerLanguage(\x22scss\x22,ht);z.registerLanguage(\x22less\x22,yt);z.registerLanguage(\x22bash\x22,vt);z.registerLanguage(\x22java\x22,kt);z.registerLanguage(\x22sql\x22,St);z.registerLanguage(\x22markdown\x22,Tt);z.registerLanguage(\x22yaml\x22,xt);z.registerLanguage(\x22python\x22,Ot);z.registerLanguage(\x22go\x22,At);globalThis.hljs=z;})();\x0a','page-agent.js':db(0x2c8),'opencode-plugin.js':'/**\x0a\x20*\x20AiWith\x20页内调试工具(OpenCode\x20插件模板)。\x0a\x20*\x0a\x20*\x20由\x20zen-app-plugin\x20在\x20dev\x20server\x20启动时生成到\x20<工程>/.opencode/plugins/aiwith-page/index.ts,\x0a\x20*\x20其中\x20origin\x20占位符会被替换为本次\x20dev\x20server\x20的真实地址。\x0a\x20*\x0a\x20*\x20为什么不用\x20chrome-devtools\x20MCP:\x0a\x20*\x20\x20\x20①\x20MCP\x20工具每次调用都要过授权弹窗,无法无人值守自动化;\x0a\x20*\x20\x20\x20②\x20本插件注册的是\x20OpenCode\x20原生工具,不走\x20MCP\x20权限流,任务中心的「本地执行」才能闭环。\x0a\x20*\x20目标页\x20=\x20AiWith\x20注入\x20page-agent\x20的宿主页;本插件只做\x20HTTP\x20转发到桥接(/aiwith/api/page/*),\x0a\x20*\x20仅\x20screenshot\x20会把图片落盘(node_modules/.cache/aiwith/shots,退回系统临时目录)。\x0a\x20*\x0a\x20*\x20⚠️\x20不要\x20import\x20\x22@opencode/plugin\x22:该包在目标工程内通常不可解析(工程\x20node_modules\x20没有它),\x0a\x20*\x20\x20\x20\x20一旦「使用」其绑定(如\x20Plugin.define(...))就会因解析失败导致整个插件加载失败\x0a\x20*\x20\x20\x20\x20(实测\x20opencode\x202.0.21:state=failed\x20\x22Plugin\x20failed\x20to\x20load\x22)。插件协议本身接受**纯对象**\x0a\x20*\x20\x20\x20\x20默认导出(`export\x20default\x20{\x20id,\x20setup\x20}`),Plugin.define\x20只是\x20identity\x20辅助函数,去掉零影响。\x0a\x20*/\x0aimport\x20{\x20mkdirSync,\x20writeFileSync\x20}\x20from\x20\x22node:fs\x22\x0aimport\x20{\x20join\x20}\x20from\x20\x22node:path\x22\x0aimport\x20{\x20tmpdir\x20}\x20from\x20\x22node:os\x22\x0a\x0aconst\x20ORIGIN\x20=\x20\x22__AIWITH_ORIGIN__\x22\x0a\x0aasync\x20function\x20call(cmd,\x20args,\x20signal)\x20{\x0a\x20\x20//\x20超时兜底:桥接侧\x20wait\x20最长\x2063s,这里给\x2070s;并与外部\x20signal\x20联动\x0a\x20\x20const\x20ctrl\x20=\x20new\x20AbortController()\x0a\x20\x20let\x20timedOut\x20=\x20false\x0a\x20\x20const\x20timer\x20=\x20setTimeout(()\x20=>\x20{\x20timedOut\x20=\x20true;\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20},\x2070000)\x0a\x20\x20const\x20onAbort\x20=\x20()\x20=>\x20{\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20}\x0a\x20\x20if\x20(signal)\x20{\x20signal.aborted\x20?\x20onAbort()\x20:\x20signal.addEventListener(\x22abort\x22,\x20onAbort,\x20{\x20once:\x20true\x20})\x20}\x0a\x20\x20let\x20res\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20res\x20=\x20await\x20fetch(ORIGIN\x20+\x20\x22/aiwith/api/page/\x22\x20+\x20cmd,\x20{\x0a\x20\x20\x20\x20\x20\x20method:\x20\x22POST\x22,\x0a\x20\x20\x20\x20\x20\x20headers:\x20{\x20\x22Content-Type\x22:\x20\x22application/json\x22\x20},\x0a\x20\x20\x20\x20\x20\x20body:\x20JSON.stringify(args\x20||\x20{}),\x0a\x20\x20\x20\x20\x20\x20signal:\x20ctrl.signal,\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(timedOut\x0a\x20\x20\x20\x20\x20\x20?\x20\x22页内接口超时(70s,dev\x20页面可能未响应)\x22\x0a\x20\x20\x20\x20\x20\x20:\x20(\x22连接\x20AiWith\x20dev\x20server\x20失败(\x22\x20+\x20ORIGIN\x20+\x20\x22):\x22\x20+\x20((error\x20&&\x20error.message)\x20||\x20error)))\x0a\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20clearTimeout(timer)\x0a\x20\x20\x20\x20if\x20(signal\x20&&\x20signal.removeEventListener)\x20{\x20signal.removeEventListener(\x22abort\x22,\x20onAbort)\x20}\x0a\x20\x20}\x0a\x20\x20const\x20json\x20=\x20await\x20res.json().catch(()\x20=>\x20null)\x0a\x20\x20if\x20(!json\x20||\x20json.ok\x20!==\x20true)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error((json\x20&&\x20json.message)\x20||\x20(\x22页内接口失败:HTTP\x20\x22\x20+\x20res.status))\x0a\x20\x20}\x0a\x20\x20return\x20json.data\x0a}\x0a\x0a//\x20紧凑\x20JSON(工具输出直供模型,pretty\x20缩进会放大约\x203\x20倍\x20token)\x0afunction\x20text(value)\x20{\x0a\x20\x20return\x20typeof\x20value\x20===\x20\x22string\x22\x20?\x20value\x20:\x20JSON.stringify(value)\x0a}\x0a\x0afunction\x20schema(properties,\x20required)\x20{\x0a\x20\x20return\x20{\x20type:\x20\x22object\x22,\x20properties:\x20properties,\x20required:\x20required\x20||\x20[],\x20additionalProperties:\x20false\x20}\x0a}\x0a\x0afunction\x20saveScreenshot(directory,\x20dataUrl)\x20{\x0a\x20\x20const\x20match\x20=\x20/^data:image\x5c/([a-z]+);base64,(.*)$/.exec(String(dataUrl\x20||\x20\x22\x22))\x0a\x20\x20if\x20(!match)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(\x22截图数据无法解析\x22)\x0a\x20\x20}\x0a\x20\x20const\x20ext\x20=\x20match[1]\x20===\x20\x22jpeg\x22\x20?\x20\x22jpg\x22\x20:\x20match[1]\x0a\x20\x20const\x20buffer\x20=\x20Buffer.from(match[2],\x20\x22base64\x22)\x0a\x20\x20//\x20时间戳\x20+\x20随机后缀,避免同毫秒内多次截图互相覆盖\x0a\x20\x20const\x20name\x20=\x20\x22aiwith-\x22\x20+\x20Date.now()\x20+\x20\x22-\x22\x20+\x20Math.random().toString(36).slice(2,\x208)\x20+\x20\x22.\x22\x20+\x20ext\x0a\x20\x20const\x20candidates\x20=\x20[\x0a\x20\x20\x20\x20join(directory,\x20\x22node_modules\x22,\x20\x22.cache\x22,\x20\x22aiwith\x22,\x20\x22shots\x22),\x0a\x20\x20\x20\x20join(tmpdir(),\x20\x22aiwith-shots\x22),\x0a\x20\x20]\x0a\x20\x20let\x20path\x20=\x20join(candidates[candidates.length\x20-\x201],\x20name)\x0a\x20\x20for\x20(const\x20dir\x20of\x20candidates)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20mkdirSync(dir,\x20{\x20recursive:\x20true\x20})\x0a\x20\x20\x20\x20\x20\x20writeFileSync(join(dir,\x20name),\x20buffer)\x0a\x20\x20\x20\x20\x20\x20path\x20=\x20join(dir,\x20name)\x0a\x20\x20\x20\x20\x20\x20break\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x20/*\x20换下一个目录\x20*/\x20}\x0a\x20\x20}\x0a\x20\x20return\x20{\x20path:\x20path,\x20mime:\x20ext\x20===\x20\x22jpg\x22\x20?\x20\x22image/jpeg\x22\x20:\x20\x22image/\x22\x20+\x20ext\x20}\x0a}\x0a\x0aexport\x20default\x20{\x0a\x20\x20id:\x20\x22aiwith.page\x22,\x0a\x20\x20async\x20setup(ctx)\x20{\x0a\x20\x20\x20\x20const\x20directory\x20=\x20(ctx.location\x20&&\x20ctx.location.directory)\x20||\x20process.cwd()\x0a\x0a\x20\x20\x20\x20await\x20ctx.tool.transform((editor)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20editor.namespace({\x20name:\x20\x22page\x22,\x20description:\x20\x22AiWith\x20当前\x20dev\x20页面的调试与交互能力(免浏览器授权)\x22\x20})\x0a\x20\x20\x20\x20\x20\x20//\x20⚠️\x20生效名\x20=\x20<options.namespace>_<name>:命名空间前缀必须逐工具用\x20options.namespace\x20指定,\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20editor.namespace()\x20只登记分组描述、**不会**给后续工具加前缀(实测\x20opencode\x202.0.21)。\x0a\x20\x20\x20\x20\x20\x20const\x20add\x20=\x20(tool)\x20=>\x20editor.add(Object.assign({\x20options:\x20{\x20namespace:\x20\x22page\x22\x20}\x20},\x20tool))\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22debug\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22读取当前\x20dev\x20页面的调试信息:页面地址/视口、最近的控制台输出、未捕获错误、网络请求,以及可选区域的\x20DOM\x20结构摘要。字段多、输出可能偏大——定位用\x20page_query/page_eval,本工具尽量传\x20selector\x20聚焦、调小各上限。调试问题优先用它,而不是截图。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只摘要该选择器命中的区域(默认整页\x20body)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maxNodes:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22DOM\x20摘要节点上限,默认\x20120,最大\x20800\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条控制台日志,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条错误,默认\x2010\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20net:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条网络请求,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22debug\x22,\x20Object.assign({\x20maxNodes:\x20120,\x20console:\x2020,\x20errors:\x2010,\x20net:\x2020\x20},\x20input),\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22click\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面点击匹配的元素(自动滚动到可视区,穿透开放\x20Shadow\x20DOM)。selector\x20支持\x20CSS\x20或文本匹配\x20\x5c\x22text=新建\x5c\x22。用于触发交互后,再用\x20page_debug\x20/\x20page_wait\x20验证结果。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器,或\x20\x5c\x22text=按钮文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22click\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22点击失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已点击\x20\x22\x20+\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22query\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22按选择器查询当前\x20dev\x20页面的元素清单(tag/id/class/text/rect/visible),用于定位可操作元素、拿选择器。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22(默认\x20*)\x22\x20},\x20limit:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22最多返回条数,默认\x2050\x22\x20}\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22query\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22查询失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data.items\x20||\x20[])\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22type\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面的输入框写入文本(自动\x20focus,触发\x20input/change\x20事件,兼容\x20Vue\x20v-model)。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=标签文案\x5c\x22。用于表单填写后,再用\x20page_debug\x20/\x20page_eval\x20验证。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22输入框选择器(CSS\x20或\x20\x5c\x22text=文案\x5c\x22)\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要写入的文本\x22\x20}\x20},\x20[\x22selector\x22,\x20\x22value\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22type\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22写入失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22fill\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22一次性批量写入多个表单字段(比多次\x20page_type\x20省往返)。fields=[{selector,value}],任一失败即中止并回报已完成项。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20fields:\x20{\x20type:\x20\x22array\x22,\x20description:\x20\x22字段数组:[{selector,value}]\x22,\x20items:\x20{\x20type:\x20\x22object\x22,\x20properties:\x20{\x20selector:\x20{\x20type:\x20\x22string\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22\x20}\x20},\x20required:\x20[\x22selector\x22,\x20\x22value\x22],\x20additionalProperties:\x20false\x20}\x20}\x20},\x20[\x22fields\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22fill\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data.error\x20||\x20\x22批量写入失败\x22)\x20+\x20\x22(已完成\x20\x22\x20+\x20(data.done\x20||\x20[]).length\x20+\x20\x22\x20项)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20(data\x20&&\x20data.count)\x20+\x20\x22\x20个字段\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22press\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面按键(Enter/Escape/Tab\x20等):触发\x20keydown/keyup\x20事件,依赖\x20JS\x20按键监听(如\x20Vue\x20`@keyup.enter`)——**不会触发浏览器原生默认行为**(原生表单\x20Enter\x20提交、原生\x20Tab\x20焦点移动等不生效)。默认作用于当前焦点元素(如刚\x20page_type\x20的输入框),也可用\x20selector\x20指定。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20key:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22键名,如\x20Enter\x20/\x20Escape\x20/\x20Tab\x22\x20},\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22可选,目标元素选择器(默认焦点元素)\x22\x20}\x20},\x20[\x22key\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22press\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22按键失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已按键\x20\x22\x20+\x20input.key\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22hover\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22悬停到匹配元素:触发\x20mouseover/mouseenter/mousemove\x20事件,适用依赖\x20JS\x20监听的悬停。**注意:合成事件不会触发\x20CSS\x20伪类\x20`:hover`**——纯\x20CSS\x20hover\x20驱动的菜单/提示打不开,那种用\x20chrome-devtools\x20的\x20hover。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22hover\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22悬停失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已悬停\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22navigate\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面内跳转路由:hash\x20路由(如\x20\x5c\x22#/order/list\x5c\x22)为\x20SPA\x20内跳转,不重载、连接不丢;跨路径整页跳转会等待新页面就绪。用于打开指定页面后再\x20page_debug\x20/\x20page_wait。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20to:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22目标地址:#/route\x20形式的\x20hash\x20路由,或完整\x20URL\x22\x20},\x20replace:\x20{\x20type:\x20\x22boolean\x22,\x20description:\x20\x22是否替换当前历史记录(默认\x20false)\x22\x20}\x20},\x20[\x22to\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22navigate\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22导航失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已导航至\x20\x22\x20+\x20((data\x20&&\x20data.url)\x20||\x20input.to)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22wait\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22等待当前\x20dev\x20页面满足条件:元素出现(selector)、文本出现(text)或地址变化(url),命中即返回,超时即失败。替代固定等待,用于等列表刷新/toast\x20出现。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待该\x20CSS\x20选择器出现\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待页面出现该文本\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20url:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待地址包含该子串\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timeout:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22超时毫秒,默认\x2015000,最小\x201000,最大\x2060000\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22wait\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.timeout)\x20{\x20throw\x20new\x20Error(\x22等待超时(条件未满足)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(data.error\x20||\x20\x22等待失败\x22)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22条件已满足(\x22\x20+\x20((data\x20&&\x20data.matched)\x20||\x20\x22ok\x22)\x20+\x20\x22)\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22eval\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面执行一段\x20JavaScript\x20并返回结果(JSON\x20化)。用于读取任意页面状态、调用页面内\x20API、构造测试数据。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20code:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要执行的\x20JavaScript\x20源码,最后表达式的值即返回结果\x22\x20}\x20},\x20[\x22code\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22eval\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22执行失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data\x20&&\x20data.result)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22screenshot\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22对当前\x20dev\x20页面(或指定区域)截图,返回\x20PNG\x20文件路径与图片内容,便于直接查看渲染效果。自动排除\x20AiWith\x20自身的浮标/抽屉等开发期元素。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只截取该选择器命中的元素(默认整页)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scale:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22缩放倍数,默认\x201(会再乘以设备像素比)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22screenshot\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22截图失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20saved\x20=\x20saveScreenshot(directory,\x20data.dataUrl)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20content:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22text\x22,\x20text:\x20\x22截图完成\x20\x22\x20+\x20data.width\x20+\x20\x22×\x22\x20+\x20data.height\x20+\x20\x22,已保存:\x22\x20+\x20saved.path\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22file\x22,\x20uri:\x20\x22file://\x22\x20+\x20saved.path,\x20mime:\x20saved.mime,\x20name:\x20saved.path.split(/[\x5c\x5c/]/).pop()\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20})\x0a\x20\x20},\x0a}\x0a'};}),gn=ge(c=>{J(),(function(){const dc=b;let d=/[\p{Lu}]/u,e=/[\p{Ll}]/u,g=/^[\p{Lu}](?![\p{Lu}])/gu,i=/([\p{Alpha}\p{N}_]|$)/u,j=/[_.\- ]+/,k=new RegExp('^'+j[dc(0x34b)]),l=new RegExp(j[dc(0x34b)]+i[dc(0x34b)],'gu'),m=new RegExp(dc(0x25b)+i[dc(0x34b)],'gu'),n=(r,s,t,u)=>{const dd=dc;let v=!0x1,z=!0x1,A=!0x1,E=!0x1;for(let F=0x0;F<r[dd(0x77)];F++){let H=r[F];E=F>0x2?r[F-0x3]==='-':!0x0,v&&d[dd(0x320)](H)?(r=r['slice'](0x0,F)+'-'+r[dd(0x75)](F),v=!0x1,A=z,z=!0x0,F++):z&&A&&e[dd(0x320)](H)&&(!E||u)?(r=r[dd(0x75)](0x0,F-0x1)+'-'+r[dd(0x75)](F-0x1),A=z,z=!0x1,v=!0x0):(v=s(H)===H&&t(H)!==H,A=z,z=t(H)===H&&s(H)!==H);}return r;},p=(r,s)=>(g[dc(0xfb)]=0x0,r[dc(0x1c7)](g,t=>s(t))),q=(r,s)=>(l['lastIndex']=0x0,m['lastIndex']=0x0,r[dc(0x1c7)](m,(t,u,v)=>['_','-'][dc(0x10e)](r[dc(0x1d4)](v+t[dc(0x77)]))?t:s(t))[dc(0x1c7)](l,(t,u)=>s(u)));c[dc(0x1e6)]=function(r,s){const df=dc;if(!(typeof r==df(0x2be)||Array[df(0x17f)](r)))throw new TypeError(df(0x17d));if(s={'pascalCase':!0x1,'preserveConsecutiveUppercase':!0x1,...s},Array[df(0x17f)](r)?r=r[df(0x245)](v=>v[df(0x2da)]())[df(0x1b6)](v=>v[df(0x77)])[df(0xab)]('-'):r=r[df(0x2da)](),r[df(0x77)]===0x0)return'';let t=s['locale']===!0x1?v=>v['toLowerCase']():v=>v[df(0x1ac)](s[df(0x28b)]),u=s['locale']===!0x1?v=>v['toUpperCase']():v=>v[df(0x1fc)](s[df(0x28b)]);return r['length']===0x1?j[df(0x320)](r)?'':s[df(0xf7)]?u(r):t(r):(r!==t(r)&&(r=n(r,t,u,s[df(0x112)])),r=r['replace'](k,''),r=s[df(0x112)]?p(r,t):t(r),s[df(0xf7)]&&(r=u(r[df(0x1d4)](0x0))+r[df(0x75)](0x1)),q(r,u));};}());}),mn=ge(c=>{J(),(function(){const dg=b;let d=require(dg(0x2d4)),e=require('fs'),g=['components','blocks'],{camelCase:i}=gn(),j=function(n){const dh=dg;let p=[],q=[],r=[];e[dh(0x36a)](n)[dh(0x20c)]((u,v)=>u['localeCompare'](v))[dh(0x203)](u=>{const di=dh;let v=d[di(0xab)](n,u,di(0x2a4));if(e['existsSync'](v))p[di(0xce)](di(0x176)+u+di(0x7a)+u+'/index\x27;'),q[di(0xce)](u);else{let z=d[di(0xab)](n,u,u+di(0x82));if(e[di(0x329)](z))p[di(0xce)](di(0x176)+u+di(0x7a)+u+'/'+u+di(0x182)),r[di(0xce)](''+u);else{if(u[di(0xca)]('.')>-0x1)return;k(d['join'](n,u),u,n)&&(p[di(0xce)]('import\x20'+u+di(0x7a)+u+di(0x12a)),q[di(0xce)](u));}}});let s=r['length']>0x0?dh(0x120)+r[dh(0xab)](dh(0x174))+dh(0x139):'',t=p[dh(0xab)]('\x0a')+'\x0a'+s+dh(0x13a)+(s?dh(0x22a):'')+dh(0xba)+(q[dh(0x77)]>0x0?dh(0x178)+q[dh(0xab)](dh(0x307)):'')+dh(0x139);e['writeFileSync'](d[dh(0xab)](n,'index.js'),t,()=>{});},k=function(n,p,q){const dj=dg;let r=d['join'](n,dj(0x2a4)),s=[],t=[];if(!e['existsSync'](n)||p[0x0]==='.'||g['includes'](p))return!0x1;let u=!e['existsSync'](r);if(e[dj(0x36a)](n)[dj(0x20c)]((z,A)=>z['localeCompare'](A))['forEach'](z=>{const dk=dj;let A=d[dk(0xab)](n,z,'index.js'),E=[];if(e[dk(0x329)](A)){E[dk(0xce)](z),s[dk(0xce)]('import\x20'+z+dk(0x14e)+z+dk(0x1cb)),t['push']('...'+z);return;}let F=d['join'](n,z,z+dk(0x82));if(z['indexOf']('.')>-0x1||!e[dk(0x329)](F))return;let H=i(p[dk(0x2f2)](/\//gi,'_')+'_'+z,{'pascalCase':!0x0});s[dk(0xce)](dk(0x176)+H+dk(0x14e)+z+'/'+z+'\x22;'),t[dk(0xce)]('\x27'+p+'/'+z+dk(0x269)+H);}),s[dj(0x77)]===0x0)return!0x1;let v=s[dj(0xab)]('\x0a')+dj(0x1ea)+t[dj(0xab)](dj(0x174))+'\x0a}';return e['writeFileSync'](r,v),j(q),u&&j(q),!0x0;};function l(n){const dl=dg;let p=d[dl(0xab)](n,dl(0x2a4)),q=e[dl(0x36a)](n),r=[],s=[];q['map'](u=>{const dm=dl;if(u[dm(0xca)]('.')>-0x1)return;let v=d[dm(0xab)](n,u,u+'.vue');e[dm(0x329)](v)&&(s['push'](u),r['unshift'](dm(0x176)+u+'\x20from\x20\x22./'+u+'/'+u+'\x22;'));});let t=r[dl(0xab)]('\x0a')+dl(0x36e)+s['join'](dl(0x174))+'\x0a}\x0a';return e[dl(0x135)](p,t);}c[dg(0x173)]=j,c[dg(0x277)]=k,c[dg(0xfa)]=l;}());}),hn=ge(c=>{J(),(function(){const dn=b;let e=require('os'),g=require(dn(0x285)),i=require(dn(0x145)),k=new RegExp('(https?:)?//((b|a)\x5c.(ebus))\x5c.vip/.+?\x5c.(svg|js|png|gif|jpe?g|ttf|woff2?|eot|css)','gi'),l=['.js',dn(0x1a0),'.svg'],n=[dn(0x7c),dn(0x1a0),dn(0x32f)],p=require('fs'),{join:r,dirname:s,resolve:t,extname:u}=require(dn(0x2d4)),z=dn(0x369),E='/',F=require(dn(0x205)),I=require(dn(0x83)),{TosClient:M}=require(dn(0x231)),N,Q,R,W,X;function Y(aa){const dp=dn;let ab=r(aa,dp(0x143)),ac=p[dp(0x7f)](ab,dp(0x33b));return JSON[dp(0x24a)](ac);}function Z(aa,ab){const dq=dn;let ac={'Bucket':R[dq(0xbd)],'Region':R['region'],'Key':aa,'StorageClass':dq(0x216)},ad=aa[dq(0xca)](dq(0x7c))>-0x1;ad||aa[dq(0xca)](dq(0x1a0))>-0x1?(ac[dq(0x121)]={'Content-Encoding':dq(0x26d),'Content-Type':ad?dq(0x134):dq(0xb6)},ac[dq(0xc8)]=Buffer['from'](i[dq(0x26d)](p[dq(0x7f)](ab,dq(0x33b))))):ac[dq(0xc8)]=p[dq(0x195)](ab),Q[dq(0x1d8)](ac,(af,ag)=>{const dr=dq;if(af)return console[dr(0xb0)](af,ag);console[dr(0xb0)](E+aa);});}function a0(aa,ab){const ds=dn;let ac={'bucket':R[ds(0x1da)],'key':aa},ad=aa['indexOf']('.js')>-0x1;ad||aa[ds(0xca)](ds(0x1a0))>-0x1?(ac[ds(0xb2)]={'Content-Encoding':ds(0x26d),'Content-Type':ad?ds(0x134):ds(0xb6)},ac[ds(0x350)]=Buffer[ds(0x118)](i[ds(0x26d)](p['readFileSync'](ab,'utf8')))):ac[ds(0x350)]=p[ds(0x195)](ab),Q['putObject'](ac,(af,ag)=>{const dt=ds;if(af)return console[dt(0xb0)](af,ag);console[dt(0xb0)](E+aa);});}function a1(aa,ab){const du=dn;let ac,ad,af=aa['indexOf'](du(0x7c))>-0x1;af||aa[du(0xca)](du(0x1a0))>-0x1?(ad={'Content-Encoding':du(0x26d),'Content-Type':af?du(0x134):'text/css'},ac=Buffer[du(0x118)](i[du(0x26d)](p['readFileSync'](ab,du(0x33b))))):(ac=p[du(0x195)](ab),ad={}),Q[du(0xdf)](aa,ac,{'headers':ad});}function a2(aa,ab){const dv=dn;p[dv(0x36a)](aa)[dv(0x203)](ac=>{const dw=dv;if(ac['indexOf']('.')===0x0||ac[dw(0xca)](dw(0x1f3))>-0x1)return;let ad=r(aa,ac),af=p[dw(0x20a)](ad);if(af[dw(0x35b)]()&&a2(ad,r(ab,ac)),af['isFile']()){let ag=r(ab,ac)[dw(0x2f2)](/\\/gi,'/');console[dw(0xb0)](ag),X(ag,ad);}});}function a3(aa){const dx=dn;let ab=aa[dx(0x264)](aa[dx(0xca)]('.vip')+0x4);ab[dx(0x141)]('/f01')&&(ab=ab[dx(0x264)](0x4));let ac=r(N,ab),ad=u(ac);if(!p[dx(0x329)](ac)||n[dx(0x10e)](ad)){g[dx(0x1a5)]('-p',s(ac));let af=aa['indexOf'](':')>-0x1?aa:dx(0x242)+aa,ag='curl\x20'+z+dx(0x150)+ac+'\x22\x20\x22'+af+'\x22';if(ac[dx(0xca)](dx(0x7c))>-0x1||ac[dx(0xca)](dx(0x1a0))>-0x1){let ai=ac+'.tmp';ag=dx(0x1f1)+z+dx(0x150)+ai+dx(0x128)+af+dx(0xd0)+ai+dx(0x1bb)+ac+dx(0x167)+ai+dx(0x8a);}let ah=g[dx(0x26e)](ag);if(ah[dx(0x10c)]!==0x0)return console[dx(0x30e)](dx(0x30a)+ag+':\x20'+ah[dx(0x147)]),aa;}return ab;}function a4(aa){const dy=dn;let ab=u(aa);if(aa[dy(0xca)]('.')===0x0||ab===dy(0x1f3))return;let ac;if(aa[dy(0xca)](dy(0x9a))>-0x1?ac=N+aa[dy(0x264)](W['length']+0x5):ac=N+aa[dy(0x264)](W[dy(0x77)]+0x7),g[dy(0x1a5)]('-p',s(ac)),!l[dy(0x10e)](ab))return g['cp'](aa,ac);let ad=p[dy(0x7f)](aa,'utf8')[dy(0x2f2)](k,af=>af[dy(0xca)]('\x27')>-0x1||af['indexOf']('\x22')>-0x1?af:a3(af));p[dy(0x135)](ac,Buffer[dy(0x118)](i[dy(0x26d)](ad)),dy(0x33b));}function a5(aa){const dz=dn;let ab=p['readdirSync'](aa);for(let ac of ab){if(ac[dz(0x141)]('.'))continue;let ad=r(aa,ac),af=p[dz(0x20a)](ad);af[dz(0x35b)]()?a5(ad):af[dz(0x1a3)]()&&a4(ad);}}function a6(aa,ab,ac){const dA=dn;let ad=p[dA(0x36a)](aa);for(let af of ad){let ag=r(aa,af);if(p[dA(0x20a)](ag)[dA(0x35b)]())a6(ag,ab,ac);else{if(aa[dA(0xca)]('.lowcode')>-0x1&&af===dA(0x1df)){let ah=p[dA(0x7f)](ag,dA(0x33b)),{path:ai,basic:aj,actions:ak=[]}=JSON[dA(0x24a)](ah);if(!ai)continue;let al=aj[dA(0x17e)];al&&(ac[al]?ac[al][dA(0xce)](ai):ac[al]=[ai]);let am=[];aj[dA(0x1b3)][dA(0x203)](({_id:an,label:ao,mode:ap,href:aq,url:ar})=>{const dB=dA;let as=an+'',at={'id':as,'label':ao};ap===dB(0x103)&&aq&&(at[dB(0x103)]=aq[dB(0x264)](0x1)),am[dB(0xce)](at),ar&&(ac[ar]?ac[ar][dB(0xce)](as):ac[ar]=[as]);}),ak['forEach'](({_id:an,label:ao,mode:ap,href:aq,url:ar})=>{const dC=dA;let as=an+'',at={'id':as,'label':ao};ap===dC(0x103)&&aq&&(at['link']=aq[dC(0x264)](0x1)),am['push'](at),ar&&(ac[ar]?ac[ar]['push'](as):ac[ar]=[as]);}),am[dA(0x77)]>0x0&&(ab[ai]=am);}}}}function a7(){const dD=dn;let aa=new Date(),ab=aa[dD(0xcc)]()[dD(0xa8)]()['slice'](-0x2),ac=(aa['getMonth']()+0x1)[dD(0xa8)]()[dD(0xe6)](0x2,'0'),ad=aa[dD(0x22e)]()[dD(0xa8)]()['padStart'](0x2,'0'),af=aa[dD(0x202)]()[dD(0xa8)]()[dD(0xe6)](0x2,'0'),ag=aa[dD(0xc9)]()[dD(0xa8)]()[dD(0xe6)](0x2,'0');return ab+ac+ad+af+ag;}function a8(aa){const dE=dn;let ab=r(N,'..');if(!p[dE(0x329)](ab))return;let ac={},ad={};a6(r(aa,dE(0x2de)),ac,ad);let af=r(ab,dE(0x338)),ag=r(ab,'pointsApi');p[dE(0x135)](ag,JSON['stringify'](ad),dE(0x33b)),p[dE(0x135)](af,JSON[dE(0x133)](ac),'utf8');}async function a9(aa){const dF=dn;let ab=r(N,'..'),ac=a7();if(!p[dF(0x329)](ab)){let af=r(aa,dF(0x14a));return p[dF(0x135)](af,ac,dF(0x33b)),ac;}let ad=r(ab,dF(0x222),'app');p[dF(0x329)](ad)||g[dF(0x1a5)]('-p',s(ad));try{let ag={};return p['existsSync'](ad)&&(ag=JSON['parse'](p[dF(0x7f)](ad,'utf8'))),ag['fd']=ac,p[dF(0x135)](ad,JSON['stringify'](ag),dF(0x33b)),ac;}catch(ah){return console['log'](ah),'';}}c[dn(0xa6)]=async function(aa,ab,ac){const dG=dn;if(!ab)return;W=aa,R=JSON[dG(0x24a)](p['readFileSync'](r(e[dG(0xd8)](),dG(0x29d)))),ab==='tos'?(Q=new M({'accessKeyId':R[dG(0x196)],'accessKeySecret':R[dG(0x108)],'region':R['tosRegion'],'endpoint':R[dG(0xb5)]}),E=R[dG(0x9f)]+'/',X=a0):ab===dG(0x360)?(Q=new I({'accessKeyId':R[dG(0xf2)],'accessKeySecret':R['ossSecret'],'bucket':R[dG(0x22f)],'region':'oss-'+R[dG(0x19b)],'authorizationV4':!0x0}),E=R[dG(0x308)]+'/',X=a1):(Q=new F({'SecretId':R['id'],'SecretKey':R[dG(0x122)]}),E=R[dG(0x2e4)]+'/',X=Z);let ad=Y(aa),af=ad[dG(0xaa)],ag,ah;if(ag=r(aa,dG(0x9a)),ah=r(aa,dG(0xd3)),ad[dG(0x1d0)]!==dG(0xa9)){let ak=[dG(0x98),'zen.css',dG(0x33c),dG(0x2f1)];g[dG(0x1a5)]('-p',ah),ak['forEach'](al=>{const dH=dG;let am=r(ah,al),an=am+dH(0xbb),ao='curl\x20'+z+dH(0x150)+an+dH(0x9c)+ac+'/'+al+dH(0xc0)+an+'\x22\x20>\x20\x22'+am+'\x22;\x20status=$?;\x20rm\x20-f\x20\x22'+an+dH(0x8a);console[dH(0xb0)](ao);let ap=g[dH(0x26e)](ao);ap['code']!==0x0&&console[dH(0x30e)](dH(0x30a)+ao+':\x20'+ap[dH(0x147)]);});}N=t(aa,'..',af,dG(0x2de),'main',dG(0x1a8),dG(0xc7));let ai=await a9(ag),aj=af+'/'+ai;a8(aa),a2(ag,aj),p[dG(0x329)](ah)&&a2(ah,aj);},c['locale']=async function(aa,ab){const dI=dn;W=aa;let ac=Y(aa)[dI(0xaa)];N=t(aa,'..',ac,dI(0x2de),dI(0x318),dI(0x1a8),dI(0xc7)),a8(aa);let ad=r(aa,dI(0x9a));await a9(ad);let af=r(aa,'public');g[dI(0x1a5)]('-p',af),[dI(0x98),'zen.css',dI(0x33c),dI(0x2f1)]['forEach'](ag=>{const dJ=dI;let ah=r(af,ag),ai=ah+dJ(0xbb),aj=dJ(0x1f1)+z+dJ(0x150)+ai+dJ(0x9c)+ab+'/'+ag+dJ(0xc0)+ai+'\x22\x20>\x20\x22'+ah+dJ(0x167)+ai+'\x22;\x20exit\x20$status';console[dJ(0xb0)](aj);let ak=g[dJ(0x26e)](aj);ak[dJ(0x10c)]!==0x0&&console[dJ(0x30e)]('Failed\x20to\x20download\x20'+aj+':\x20'+ak[dJ(0x147)]);}),a5(ad),p[dI(0x329)](af)&&a5(af);};}());}),vn=ge((c,d)=>{J(),(function(){const dK=b;let e=require('path'),g=require('fs'),i=require(dK(0x236)),k=require(dK(0x303)),l=mn(),{remote:n,locale:p}=hn(),{makeRootIndex:q,makeSonIndex:r,makeComponentIndex:s}=l,t=[dK(0x9d),dK(0x258)];function u(N){const dL=dK;return dL(0xb4)+N+dL(0x15c);}function v(N){const dM=dK;return'<!doctypehtml><meta\x20charset=utf-8><meta\x20content=\x22chrome,IE=edge\x22http-equiv=X-UA-Compatible><meta\x20content=true\x20name=HandheldFriendly><link\x20href=data:image/ico;base64,aWNv\x20rel=icon><meta\x20content=\x22telephone=no,email=no\x22name=format-detection><meta\x20content=\x22width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0,user-scalable=no,minimal-ui,viewport-fit=cover\x22name=viewport><meta\x20content=webkit\x20name=renderer><meta\x20content=no\x20name=msapplication-tap-highlight><title>大屏设计器</title><script\x20src=//b.ebus.vip/zeto/latest/zen.js></script><link\x20href=//b.ebus.vip/zeto/latest/zen.css\x20rel=stylesheet><script>zen.host=\x22https://thor.zeto.me\x22,window.appName=\x22'+N+dM(0x12d);}function z(N,P){const dN=dK;if(P[dN(0x77)]<0x2)return;let Q,R=P[dN(0x1b6)]((W,X)=>(X===0x0&&(Q=e[dN(0xab)](N,W),g[dN(0x329)](Q)||g['mkdirSync'](Q)),X>0x0));z(Q,R);}let A=dK(0x223),E=dK(0x2a0);function F(N,P){const dO=dK;N[dO(0x33a)](dO(0x125),dO(0x179)),N[dO(0x2d7)](JSON[dO(0x133)](P));}function H(N,P){const dP=dK;N['setHeader'](dP(0x125),'text/html;\x20charset=utf-8'),N[dP(0x2d7)](P);}function I(N,P){const dQ=dK;let Q=e[dQ(0xab)](N,dQ(0x2de),'pages'),R=k['json']();return function(W,X,Y){const dR=dQ;let {url:Z,method:a0}=W;if(a0===dR(0x132)&&Z===dR(0x26c))return H(X,u(P));if(a0===dR(0x132)&&Z==='/datav.html')return H(X,v(P));if(a0===dR(0x251)&&Z==='/coder/read')return R(W,X,()=>{const dS=dR;let {file:a1}=W[dS(0x350)]||{};if(!a1)return F(X,{'code':0x2711,'message':dS(0x16d)});let a2=e[dS(0xab)](Q,a1);return g['existsSync'](a2)?F(X,{'code':0x2710,'data':g[dS(0x7f)](a2,dS(0x368))}):F(X,{'code':0x2710,'data':null});});if(a0==='POST'&&Z===dR(0x1ab))return R(W,X,()=>{const dT=dR;let {file:a1,content:a2,type:a3}=W[dT(0x350)]||{};if(!a1)return F(X,{'code':0x2711,'message':dT(0x16d)});let a4=a1[dT(0xeb)]('/');z(Q,a4);let a5=e['join'](Q,a1);if(g['writeFileSync'](a5,a2),a3===dT(0x23a)){let a6=a4[dT(0xc5)](0x0,a4[dT(0x77)]-0x2),a7=e[dT(0xab)](Q,a6[dT(0xab)](e[dT(0x31f)]));if(a6[dT(0x77)]===0x0)return q(Q);r(a7,a6[dT(0xab)]('/'),Q);}return F(X,{'code':0x2710,'message':dT(0x2b2)});});Y();};}function K(N){const dU=dK;let P=e[dU(0xab)](N,'src',dU(0x291));if(!g[dU(0x329)](P))return null;let Q=i[dU(0xc2)](P,{'depth':0x2,'usePolling':!0x1});return Q['on'](dU(0x35d),R=>{const dV=dU;let W=e[dV(0xab)](R,dV(0x2a4));if(g[dV(0x329)](W)||R[dV(0xca)](dV(0x1a2))>-0x1)return;let X=e[dV(0x17b)](R)[dV(0xeb)](e['sep']),Y=X[dV(0x18b)](),Z=X[X['length']-0x1],a0=e[dV(0xab)](R,Y+dV(0x82));g[dV(0x329)](a0)||t[dV(0x10e)](Y)||t[dV(0x10e)](Z)||(X[dV(0x77)]-X[dV(0xca)](Z)===0x1&&X[dV(0x77)]-X[dV(0xca)]('pages')!==0x2&&(Z=X[X['length']-0x2]+e[dV(0x31f)]+Z),g[dV(0x135)](a0,A),r(X[dV(0xab)](e[dV(0x31f)]),Z,P));}),Q['on'](dU(0x229),R=>{const dW=dU;let W=e['resolve'](R)['split'](e[dW(0x31f)]);W['pop']();let X=W[dW(0xab)](e[dW(0x31f)]),Y=W[dW(0x18b)]();Y===dW(0x291)?q(P):(W[dW(0x77)]-W[dW(0xca)](dW(0x291))===0x2&&(Y=W[dW(0x18b)]()+e[dW(0x31f)]+Y),r(X,Y,P));}),q(P),Q['on'](dU(0x30e),function(R){const dX=dU;console[dX(0x30e)](dX(0x1d5),R);}),Q;}function M(N){const dY=dK;let P=e[dY(0xab)](N,dY(0x2de),dY(0x9d));if(!g[dY(0x329)](P))return null;let Q=i['watch'](P,{'depth':0x1,'usePolling':!0x1});return Q['on'](dY(0x35d),R=>{const dZ=dY;let W=e[dZ(0x17b)](R)['split'](e[dZ(0x31f)]),X=W[dZ(0x18b)](),Y=e['join'](R,X+'.vue'),Z=e[dZ(0xab)](R,X+dZ(0x7c));g['existsSync'](Y)||g['existsSync'](Z)||X==='components'||W[W[dZ(0x77)]-0x1]!==dZ(0x9d)||(g[dZ(0x135)](Y,E),s(P));}),Q['on'](dY(0x229),R=>{const e0=dY;let W=e[e0(0x17b)](R)[e0(0xeb)](e[e0(0x31f)]);W[W['length']-0x2]==='components'&&s(P);}),Q['on']('error',function(R){const e1=dY;console[e1(0x30e)](e1(0x1d5),R);}),Q;}d[dK(0x1ae)]=function({target:N,ROOT:P,name:Q,core:R,isDev:V}){return{'name':'zen-auto-code','configureServer'(W){const e2=b;W[e2(0x265)][e2(0x208)](I(P,Q));let X=[K(P),M(P)];W[e2(0x284)]&&W[e2(0x284)]['on'](e2(0x155),()=>{const e3=e2;X[e3(0x203)](Y=>Y&&Y[e3(0x155)]());});},'closeBundle'(){V||setTimeout(()=>{const e4=b;N===e4(0x94)?p(P,R):N&&n(P,N,R);},0x64);}};};}());}),en=ge((c,d)=>{J(),(function(){const e5=b;let e=require('fs'),f=require(e5(0x2d4));d['exports']=function({outDir:g}){return{'name':'zen-css-inject','closeBundle'(){const e6=b;if(!g||!e['existsSync'](g))return;e[e6(0x36a)](g)[e6(0x1b6)](h=>h[e6(0x268)](e6(0x1a0)))[e6(0x203)](h=>{const e7=e6;let i=e[e7(0x7f)](f[e7(0xab)](g,h),e7(0x33b)),j=f[e7(0xab)](g,h['replace'](/\.css$/,e7(0x7c)));if(e[e7(0x329)](j)){let k=e['readFileSync'](j,e7(0x33b)),l=e7(0x15a)+JSON[e7(0x133)](i)+e7(0x1b0);e[e7(0x135)](j,l+k);}e[e7(0x2f4)](f[e7(0xab)](g,h));});}};};}());}),wn=ge((c,d)=>{J(),(function(){const e8=b;let e=require('fs'),g=require(e8(0x2d4)),h={'compact':!0x0,'stringArray':!0x0,'stringArrayEncoding':['base64'],'stringArrayThreshold':0.75,'identifierNamesGenerator':e8(0x2e6),'selfDefending':!0x1,'target':e8(0x23d),'renameGlobals':!0x1};d[e8(0x1ae)]=function({outDir:i}){const e9=e8;return{'name':e9(0xfd),'closeBundle'(){const ea=e9;if(!i||!e[ea(0x329)](i))return;let j=e[ea(0x36a)](i)['filter'](l=>l[ea(0x268)](ea(0x7c)));if(j[ea(0x77)]===0x0)return;let k;try{k=require('javascript-obfuscator');}catch{throw new Error('obfuscate:\x20true\x20\u9700\u8981\u5B89\u88C5\x20javascript-obfuscator\uFF0C\u8BF7\u6267\u884C\x20npm\x20i\x20-D\x20javascript-obfuscator');}j[ea(0x203)](l=>{const eb=ea;let m=g[eb(0xab)](i,l),n=e['readFileSync'](m,'utf8'),p=k['obfuscate'](n,h)[eb(0x124)]();e['writeFileSync'](m,p),console[eb(0xb0)](eb(0xd5)+l,'('+(p[eb(0x77)]/0x400)['toFixed'](0x1)+'KB)');});}};};}());}),Sn=ge((c,d)=>{J(),(function(){const ec=b;let e=require(ec(0x2d4)),g=en(),h=['vue',ec(0x353),'vue-router',ec(0x157)],i={'vue':'Vue','vue-router':ec(0x2ba),'element-plus':ec(0x201),'vant':ec(0x157)};d[ec(0x1ae)]=function({outDir:j,extraEntries:k,ROOT:l,srcRoot:m}){return{'name':'zen-multi-entry',async 'closeBundle'(){const ed=b;if(!k||k[ed(0x77)]===0x0)return;let {default:n}=await import(ed(0x127)),{default:p}=await import(ed(0x272)),{build:q}=await import(ed(0x31e));for(let r of k){let s=e[ed(0x267)](r,ed(0x7c));await q({'configFile':!0x1,'root':l,'logLevel':'error','plugins':[n(),p({'include':/\.(jsx|js)/}),g({'outDir':j})],'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1},'resolve':{'extensions':['.js',ed(0x82),'.jsx',ed(0x332)],'alias':{'@':m,'@icons':e[ed(0x17b)](l,ed(0xd6))}},'css':{'cssCodeSplit':!0x1},'build':{'outDir':j,'emptyOutDir':!0x1,'copyPublicDir':!0x1,'minify':ed(0x23c),'target':ed(0x1ba),'sourcemap':!0x1,'lib':{'entry':r,'formats':[ed(0x15f)],'name':ed(0xa9),'fileName':()=>s+'.js','cssFileName':s},'rolldownOptions':{'external':h,'output':{'globals':i,'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':'none'}}}}}});}}};};}());}),En=ge((c,d)=>{J(),(function(){const ee=b;let e={'vue':ee(0x293),'vue-router':ee(0x2ba),'element-plus':'ElementPlus','vant':ee(0x157)},g=ee(0x2ab),i=new RegExp(ee(0x102)+g+ee(0x14b),'g'),j=new RegExp(ee(0x19e)+g+ee(0x14b),'g'),k=new RegExp('import\x5cs*\x5c{([^}]*)\x5c}\x5cs*from\x5cs*[\x27\x5c\x22]('+g+')[\x27\x5c\x22]','g'),l=new RegExp(ee(0x2ea)+g+ee(0x14b),'g'),m=new RegExp(ee(0x2b0)+g+ee(0x14b),'g');d['exports']=function({isDev:n}){const ef=ee;return{'name':ef(0x1f0),'transform'(p,q){const eg=ef;if(!n||!p||q[eg(0xca)]('node_modules')>-0x1)return null;let r=!0x1;return p=p[eg(0x2f2)](i,(s,t,u)=>(r=!0x0,eg(0x13b)+t+eg(0x294)+e[u])),p=p[eg(0x2f2)](j,(s,t,u,v)=>{const eh=eg;r=!0x0;let y=u[eh(0x2da)]()[eh(0x2f2)](/\s+as\s+/g,':\x20');return eh(0x13b)+t+eh(0x294)+e[v]+';\x0aconst\x20{\x20'+y+eh(0x156)+e[v];}),p=p[eg(0x2f2)](k,(s,t,u)=>(r=!0x0,'const\x20{\x20'+t[eg(0x2da)]()[eg(0x2f2)](/\s+as\s+/g,':\x20')+eg(0x156)+e[u])),p=p[eg(0x2f2)](l,(s,t,u)=>(r=!0x0,eg(0x13b)+t+eg(0x294)+e[u])),p=p[eg(0x2f2)](m,(s,t)=>(r=!0x0,eg(0x2a1)+e[t]+eg(0x262))),r?{'code':p,'map':null}:null;}};};}());}),_n=ge((c,d)=>{const ei=d8;J();var e=require('fs'),f=require('os'),g=require(ei(0x2d4)),h=['compile',ei(0x256),ei(0x1db),ei(0xdc),ei(0x27d),'createSSRApp','defineCustomElement',ei(0x309),ei(0x2ca),ei(0x2f8),ei(0x168),'patchProp','render',ei(0x19f),ei(0x169),ei(0x354),ei(0x1d2),'vModelCheckbox',ei(0x172),ei(0x1a9),'vModelSelect','vModelText','vShow',ei(0x220),ei(0x87),ei(0x2a8),'ReactiveEffect',ei(0x1a7),ei(0x276),ei(0x20b),ei(0xcf),ei(0x10b),ei(0x248),'getCurrentWatcher',ei(0x215),'isReactive',ei(0xf1),ei(0x34d),ei(0xc1),'markRaw','onScopeDispose',ei(0x1b5),ei(0xa0),'reactive','readonly','ref',ei(0x322),ei(0x367),ei(0x2fd),ei(0x2c0),'toRaw',ei(0xe7),ei(0x287),ei(0xaf),ei(0x2ad),'unref',ei(0x2cb),ei(0x357),ei(0x1dd),ei(0x227),ei(0x25e),ei(0x92),'toHandlerKey',ei(0x22b),ei(0x1fd),ei(0x1ce),'DeprecationTypes',ei(0x2fc),ei(0x148),ei(0x257),ei(0x107),ei(0x328),ei(0x363),ei(0x2d6),ei(0xbc),ei(0x109),ei(0x212),ei(0x2b3),ei(0x2c4),'compatUtils','computed',ei(0x11d),ei(0x2c1),ei(0x271),ei(0x237),ei(0x330),ei(0x1ef),ei(0x7e),ei(0x95),ei(0x21e),'createTextVNode',ei(0x31a),ei(0x255),ei(0x240),'defineEmits',ei(0x131),ei(0x217),'defineOptions','defineProps',ei(0x2e7),ei(0x1b8),ei(0x14c),ei(0x1c4),'guardReactiveProps','h','handleError',ei(0x1f8),ei(0x13d),ei(0x1f7),ei(0x1f6),'hydrateOnVisible','initCustomFormatter',ei(0x1f4),'isMemoSame',ei(0x2f5),'isVNode','mergeDefaults','mergeModels','mergeProps',ei(0x23b),ei(0x250),ei(0x2ee),ei(0x1be),ei(0xcb),'onDeactivated',ei(0x246),'onMounted',ei(0x1cc),ei(0x314),ei(0x30c),ei(0x21a),ei(0x238),ei(0x2ed),ei(0x2f6),ei(0x253),ei(0x2c6),ei(0x211),ei(0x210),'renderList',ei(0x70),ei(0x36b),ei(0xf3),'resolveDynamicComponent',ei(0x2bc),ei(0xfe),ei(0x110),ei(0x193),ei(0x206),ei(0x244),ei(0x280),ei(0x312),ei(0x1bc),ei(0x226),ei(0x30b),'useModel',ei(0x111),ei(0x1bd),ei(0xd2),ei(0x36c),ei(0x2a2),'warn','watch','watchEffect','watchPostEffect','watchSyncEffect',ei(0x1b2),ei(0x1b4),'withDefaults',ei(0x15e),ei(0x34e),ei(0x1e3)];d[ei(0x1ae)]=function(){const ej=ei;let i=g['join'](f['tmpdir'](),ej(0xb9)),j=ej(0x365)+h[ej(0x245)](k=>ej(0x164)+k+'\x20=\x20window.Vue['+JSON['stringify'](k)+']')[ej(0xab)]('\x0a')+ej(0x28f);try{e[ej(0x135)](i,j);}catch{return null;}return{'file':i,'rolldownPlugin':{'name':ej(0x18c),'resolveId'(k){const ek=ej;if(k===ek(0x2dc))return i;}}};};}),Bn=ge((c,d)=>{'use strict';const el=d8;J();var e=require('fs'),f=require('os'),g=require('path'),h=el(0xa9),i=g[el(0xab)](f[el(0xd8)](),el(0x2bb),el(0x161)),j='opencode.json',k='/'+j;function l(D){const em=el;return String(D||em(0x2aa))[em(0x2f2)](/[^a-zA-Z0-9._-]/g,'_');}function m(D){const eo=el;return g[eo(0xab)](i,eo(0x2ff)+l(D)+eo(0x332));}function n(D){const ep=el;try{return JSON[ep(0x24a)](e[ep(0x7f)](m(D),ep(0x33b)));}catch{return null;}}function o(D,E){const eq=el;let F=m(D);e[eq(0x344)](i,{'recursive':!0x0,'mode':0x1c0}),e[eq(0x135)](F,JSON['stringify'](E,null,0x2),{'mode':0x180});try{e['chmodSync'](F,0x180);}catch{}return F;}function p(D){const er=el;let E={};return(D||[])[er(0x203)](function(F){const es=er;let G=typeof F=='string'?F:F&&F['id'];if(!G)return;let H={'name':F&&F[es(0xaa)]||String(G)};F&&F['limit']&&(H[es(0x327)]=F['limit']),F&&F[es(0x349)]&&(H[es(0x349)]=F['capabilities']),E[G]=H;}),E;}function q(D){const et=el;return{'providerId':D[et(0x282)]||h,'entry':{'name':D['gateway']&&D['gateway'][et(0xaa)]||et(0x158),'package':et(0x263),'settings':{'baseURL':D[et(0x22d)][et(0x1ad)],'apiKey':D[et(0x22d)][et(0x16f)]},'models':p(D['models'])}};}function r(D,E){const eu=el;if(!D||!E||!E[eu(0x22d)]||!E[eu(0x22d)][eu(0x1ad)]||!E['gateway'][eu(0x16f)])throw new Error(eu(0x289));let F=g['join'](D,j);if(e['existsSync'](F)&&s(D,j))throw new Error(j+'\x20\u5DF2\u88AB\x20git\x20\u8DDF\u8E2A\uFF0C\u4E3A\u907F\u514D\u4EE4\u724C\u5165\u5E93\u800C\u62D2\u7EDD\u5199\u5165\uFF1B\u8BF7\u5C06\u5176\u52A0\u5165\x20.gitignore\x20\u540E\u91CD\u8BD5');let G={};try{G=JSON[eu(0x24a)](e[eu(0x7f)](F,eu(0x33b)))||{};}catch{G={};}let H=q(E);(!G[eu(0x21c)]||typeof G[eu(0x21c)]!=eu(0x31c))&&(G['providers']={}),G[eu(0x21c)][H['providerId']]=H['entry'],e['writeFileSync'](F,JSON[eu(0x133)](G,null,0x2),{'mode':0x180});try{e[eu(0xd9)](F,0x180);}catch{}return t(D),{'file':F,'providerId':H[eu(0x282)]};}function s(D,E){const ev=el;try{let {execFileSync:F}=require(ev(0x2df));return F(ev(0x1d1),[ev(0x11c),ev(0x18e),'--',E],{'cwd':D,'stdio':ev(0xa2)}),!0x0;}catch{return!0x1;}}function t(D){const ew=el;try{let E=g[ew(0xab)](D,ew(0x334));if(!e['existsSync'](E)||!e[ew(0x20a)](E)['isDirectory']())return;let F=g[ew(0xab)](E,ew(0x100),ew(0x2c9)),G='';try{G=e[ew(0x7f)](F,ew(0x33b));}catch{G='';}if(G['split']('\x0a')[ew(0x2dd)](function(H){const ex=ew;return H[ex(0x2da)]()===k;}))return;e[ew(0x344)](g[ew(0x1fa)](F),{'recursive':!0x0}),e['writeFileSync'](F,G[ew(0x2f2)](/\n*$/,'\x0a')+k+'\x0a');}catch{}}var u=0x5dc0,v=0xf4240,w=g[el(0xab)](i,'compaction-owned.json');function x(){const ey=el;try{return JSON[ey(0x24a)](e[ey(0x7f)](w,ey(0x33b)))||{};}catch{return{};}}function y(D){const ez=el;try{e['mkdirSync'](i,{'recursive':!0x0,'mode':0x1c0}),e[ez(0x135)](w,JSON[ez(0x133)](D,null,0x2),{'mode':0x180});}catch{}}function z(D){const eA=el;let E=Number(D)||0x0;return E>=v?{'buffer':Math[eA(0x2fa)](E/0x2),'keep':{'tokens':u}}:null;}function A(E,F){const eB=el;if(!E)return!0x1;let G=!!F&&typeof F==eB(0x31c),H=g[eB(0xab)](E,j),I={};if(e[eB(0x329)](H)){try{I=JSON[eB(0x24a)](e[eB(0x7f)](H,eB(0x33b)))||{};}catch{return!0x1;}if(typeof I!='object'||Array[eB(0x17f)](I)||s(E,j))return!0x1;}let K=x(),L=g['resolve'](E),M=I['compaction'],N=(Q,R)=>JSON['stringify'](Q)===JSON[eB(0x133)](R),P=K[L]!==void 0x0&&N(K[L],M);return G?M===void 0x0?(I[eB(0x165)]=F,e['writeFileSync'](H,JSON[eB(0x133)](I,null,0x2)),K[L]=F,y(K),!0x0):P?N(F,M)?!0x1:(I['compaction']=F,e[eB(0x135)](H,JSON[eB(0x133)](I,null,0x2)),K[L]=F,y(K),!0x0):(K[L]!==void 0x0&&(delete K[L],y(K)),!0x1):M===void 0x0?!0x1:P?(delete I[eB(0x165)],Object[eB(0xdb)](I)[eB(0x77)]===0x0?e[eB(0x142)](H,{'force':!0x0}):e[eB(0x135)](H,JSON[eB(0x133)](I,null,0x2)),delete K[L],y(K),!0x0):(K[L]!==void 0x0&&(delete K[L],y(K)),!0x1);}function B(D,E){const eC=el;if(!D)return!0x1;let F=h;try{let I=n(E||'');I&&I[eC(0x282)]&&(F=I[eC(0x282)]);}catch{}let G=g[eC(0xab)](D,j),H;try{H=JSON['parse'](e[eC(0x7f)](G,'utf8'))||{};}catch{return!0x1;}if(!H[eC(0x21c)]||typeof H[eC(0x21c)]!=eC(0x31c)||!H[eC(0x21c)][F])return!0x1;delete H[eC(0x21c)][F],Object[eC(0xdb)](H[eC(0x21c)])[eC(0x77)]===0x0&&delete H[eC(0x21c)],e[eC(0x135)](G,JSON[eC(0x133)](H,null,0x2),{'mode':0x180});try{e[eC(0xd9)](G,0x180);}catch{}return!0x0;}function C(D){const eD=el;return D?{'version':D[eD(0x2a2)],'providerId':D[eD(0x282)]||h,'modelCount':(D['models']||[])['length']}:null;}d[el(0x1ae)]={'PROVIDER_ID':h,'CONFIG_FILE':j,'COMPACTION_KEEP_TOKENS':u,'COMPACTION_BIG_CONTEXT':v,'computeCompaction':z,'readCache':n,'writeCache':o,'inject':r,'removeInjected':B,'ensureCompactionDefault':A,'sanitize':C};}),Rn=ge((c,d)=>{J(),(function(){const eE=b;let e=require('fs'),g=require(eE(0x2d4)),i=require('os'),{Readable:k}=require(eE(0x8f)),l=Bn(),n=null;try{n=require('simple-git')['simpleGit'];}catch(a0){console[eE(0x28c)]('[AiWith]\x20simple-git\x20\u4E0D\u53EF\u7528\uFF0C\u5206\u652F\u540D\u5C06\u4E0D\u663E\u793A:',a0&&a0[eE(0x311)]);}let p=null;try{p=require('ws')[eE(0x126)];}catch(a1){console[eE(0x28c)](eE(0x356),a1&&a1['message']);}let r=0x14*0x400*0x400,s=0x4*0x400*0x400,t=[eE(0x1c3)];function u(a2){const eF=eE;try{let a3=new URL(a2);return a3[eF(0x283)]!==eF(0x233)&&a3[eF(0x283)]!==eF(0x242)?!0x1:t['some'](a4=>a3[eF(0x24c)]===a4||a3[eF(0x24c)][eF(0x268)]('.'+a4));}catch{return!0x1;}}async function v(a2){const eG=eE;if(!n)return'';try{let a3=n({'baseDir':a2});if(!await a3['checkIsRepo']())return'';let a4=await a3[eG(0x27e)]();return a4&&a4['current']||'';}catch{return'';}}let z=typeof de<'u'?de:null;function A(a2){const eH=eE;return z&&typeof z[a2]==eH(0x2be)?z[a2]:e[eH(0x7f)](g[eH(0xab)](__dirname,a2),eH(0x33b));}async function E(a2){const eI=eE;if(!u(a2))throw new Error(eI(0x2cc));let a3=await fetch(a2,{'signal':AbortSignal['timeout'](0x4e20)});if(!a3['ok'])throw new Error(eI(0x1c2)+a3[eI(0x230)]);if(Number(a3[eI(0xb2)][eI(0xf4)](eI(0x154))||0x0)>r)throw new Error(eI(0x27b));let a4=(a3[eI(0xb2)]['get']('content-type')||'')[eI(0xeb)](';')[0x0][eI(0x2da)]();if(!/^image\/(png|jpe?g|gif|webp)$/[eI(0x320)](a4))throw new Error(eI(0x8e)+(a4||'\u672A\u77E5\u7C7B\u578B'));let a5=Buffer['from'](await a3[eI(0x123)]());if(!a5['length']||a5['length']>r)throw new Error('\u56FE\u7247\u65E0\u6548\u6216\u8D85\u8FC7\x2020MiB\x20\u9650\u5236');return eI(0x184)+a4+eI(0x80)+a5[eI(0xa8)](eI(0x11a));}let F=eE(0x14d);function I(a2){return new Promise((a3,a4)=>{const eJ=b;let a5=[],a6=0x0,a7=!0x1;a2['on'](eJ(0x1df),a8=>{const eK=eJ;if(!a7){if(a6+=a8[eK(0x77)],a6>s){a7=!0x0,a5['length']=0x0,a4(new Error(eK(0x273)));return;}a5[eK(0xce)](a8);}}),a2['on'](eJ(0x2d7),()=>{const eL=eJ;if(!a7)try{let a8=Buffer[eL(0xf8)](a5)[eL(0xa8)]('utf8');a3(a8?JSON['parse'](a8):{});}catch(a9){a4(a9);}}),a2['on']('error',a4);});}function M(a2,a3,a4){const eM=eE;a2[eM(0x213)]=a3,a2[eM(0x33a)](eM(0x125),eM(0x1e1)),a2[eM(0x2d7)](JSON[eM(0x133)](a4));}function N(a2,a3){const eN=eE;a2[eN(0x2d9)](0xc8,{'Content-Type':eN(0x337),'Cache-Control':eN(0x30d),'Connection':eN(0xb1)}),a2[eN(0x239)]&&a2[eN(0x239)](),a2['write']('data:\x20'+JSON[eN(0x133)]({'type':eN(0xe1),'reason':String(a3||'')})+'\x0a\x0a'),a2[eN(0x2d7)]();}function P(a2,a3,a4){const eO=eE;try{let a5=A(a3);a2[eO(0x213)]=0xc8,a2['setHeader'](eO(0x125),a4+eO(0x2b4)),a2[eO(0x33a)]('Cache-Control',eO(0x260)),a2['end'](a5);}catch{M(a2,0x1f4,{'ok':!0x1,'message':'\u8BFB\u53D6\u8D44\u6E90\u5931\u8D25:\x20'+a3});}}function Q(a2){const eP=eE;try{let a3=require[eP(0x17b)]('@zumer/snapdom/package.json',{'paths':[__dirname,g[eP(0xab)](__dirname,'..')]}),a4=g[eP(0xab)](g[eP(0x1fa)](a3),eP(0x9a),eP(0xe8));a2[eP(0x213)]=0xc8,a2[eP(0x33a)](eP(0x125),eP(0xa1)),a2['setHeader'](eP(0x1cf),eP(0x260)),a2[eP(0x2d7)](e['readFileSync'](a4,'utf8'));}catch{M(a2,0x194,{'ok':!0x1,'message':eP(0x1aa)});}}function R(a2,a3){const eQ=eE;var a4=String(a2||'');return/^thor:/i['test'](a4)&&!/^thor:factory/i[eQ(0x320)](a4)&&!/黑灯工厂/['test'](String(a3||''));}function W(a2,a3,a4){const eS=eE;return(()=>{const eR=b;try{return Promise[eR(0x17b)](a2());}catch(a5){return Promise[eR(0x23e)](a5);}})()[eS(0x29a)](function(a5){const eT=eS;if(a3<=0x1)throw a5;return new Promise(function(a6){setTimeout(a6,a4);})[eT(0x301)](function(){return W(a2,a3-0x1,a4);});});}function X(a2){const eU=eE;return String(a2??'')[eU(0x2f2)](/[\u0000-\u001f\u007f]+/g,'\x20')[eU(0x2f2)](/[<>]/g,'')[eU(0x2da)]();}function Y(a2){const eV=eE;if(!a2||typeof a2!=eV(0x31c))return'';let a3=X(a2['route']);if(!a3||a3['length']>0x1f4||a3[0x0]!=='/'&&a3[0x0]!=='#')return'';let a4=X(a2[eV(0x1e7)]);if(a4[eV(0x77)]>0xc8)return'';let a5=['<aiwith-page-context>',eV(0xdd)+a3];return a4&&a5[eV(0xce)](eV(0x249)+a4),a5['push'](eV(0xda)),a5[eV(0xab)]('\x0a');}function Z({ROOT:a2,name:a3,aiwithRoot:a4,kooteamOrigin:a5,factoryOrigin:a6,aiwithRemote:a7,mcpDisable:a8,mcpAllow:a9,gatewaySecret:aa,ai_gateway:ab}){const eW=eE;let ac=a5||eW(0x1dc),ad=!0x1,af=a8===!0x1||a8===null?[]:(Array['isArray'](a8)?a8:['chrome-devtools'])[eW(0x1b6)](Boolean),ag=a9===!0x1||a9===null||Array[eW(0x17f)](a9)&&a9[eW(0x77)]===0x0?[]:(Array[eW(0x17f)](a9)?a9:[eW(0x1c0),eW(0x24b)])[eW(0x1b6)](Boolean),ah=ag[eW(0x77)]?ag:null,ai=by=>!ah||ah[eW(0xca)](by)>-0x1,aj=g[eW(0xab)](i[eW(0x247)](),eW(0x279)),ak=0x7530,al=Object[eW(0x99)](null),am=Object[eW(0x99)](null),ao=null,ap=!0x1;af['forEach'](function(by){al[by]=!0x1;});function aq(){const eX=eW;if(!ap){ap=!0x0;try{let by=JSON[eX(0x24a)](e[eX(0x7f)](aj,eX(0x33b)));by&&by[eX(0x296)]===aK&&by[eX(0x28e)]&&typeof by[eX(0x28e)]==eX(0x31c)&&Object['keys'](by[eX(0x28e)])[eX(0x203)](function(bz){const eY=eX;al[bz]=!!by[eY(0x28e)][bz];});}catch(bz){bz&&bz[eX(0x10c)]!==eX(0x183)&&console[eX(0x28c)](eX(0x115),bz&&bz[eX(0x311)]||bz);}Object[eX(0xdb)](al)[eX(0x203)](function(bA){ai(bA)||(al[bA]=!0x1);});}}function ar(){const eZ=eW;try{e[eZ(0x135)](aj,JSON[eZ(0x133)]({'root':aK,'desired':al}));}catch{}}function as(by){const f0=eW;return ao||(ao=au(by)['catch'](function(){return null;})[f0(0x301)](function(bz){return ao=null,bz;}),ao);}async function au(by){const f1=eW;aq();let bz=by||await aP()[f1(0x29a)](function(){return null;});if(!bz)return null;let bA;try{bA=await aN(bz);}catch{return null;}for(let bB of bA){let bC=ai(bB[f1(0xaa)])?al[bB[f1(0xaa)]]:!0x1;if(bC===void 0x0)continue;let bD=bB[f1(0x230)];if(!(bC?bD===f1(0xec)||bD===f1(0xf5)&&Date['now']()>=(am[bB[f1(0xaa)]]||0x0):bD===f1(0x106)))continue;let bE={'server':bB[f1(0xaa)],'location':{'directory':aK}};try{bC?await bz[f1(0x1ee)][f1(0x1a4)](bE):await bz[f1(0x1ee)][f1(0x302)](bE),delete am[bB[f1(0xaa)]];}catch(bF){am[bB[f1(0xaa)]]=Date[f1(0x136)]()+ak,console[f1(0x28c)](f1(0x78)+(bC?f1(0x1a4):f1(0x302))+'\x20'+bB[f1(0xaa)]+f1(0x2e2),bF&&bF[f1(0x311)]||bF);}}return aN(bz)[f1(0x29a)](function(){return null;});}let av=aa?String(aa):'';function aw(by){const f2=eW;if(a7)return!0x0;if(av){let bB=(by&&by[f2(0xb2)]||{})['x-aiwith-gateway'];return(Array['isArray'](bB)?bB[0x0]:bB)===av;}let bz=by&&by[f2(0x19a)]&&by[f2(0x19a)][f2(0x13c)]||'',bA=bz[f2(0xca)]('::ffff:')===0x0?bz['slice'](0x7):bz;return bA==='127.0.0.1'||bA===f2(0x35e);}let ax=String(a6||eW(0xe9))[eW(0x2f2)](/\/+$/,''),ay=a3||'',az={'factory':['tasks',eW(0x113),'createTask','startTask',eW(0x19d),'localResult','messages','activities'],'factoryStory':[eW(0x2b9),eW(0x25a),eW(0x20f),'patchStory',eW(0x2e3),eW(0xea),eW(0x2eb),eW(0x346),eW(0x21f),eW(0x317)],'factoryIssue':[eW(0x358),eW(0x32a),eW(0x259),eW(0x21d),'reopenIssue',eW(0x18a),eW(0x317)],'factoryCell':[eW(0x230),eW(0x1a4)],'userGit':[eW(0x21b),eW(0x336),eW(0x85)]};function aA(by,bz){const f4=eW;let bA=bE=>{const f3=b;let bF=by[f3(0xb2)][bE[f3(0x1d9)]()];return Array[f3(0x17f)](bF)?bF[0x0]:bF;},bB={};bz&&(bB[f4(0x125)]=f4(0x179));let bC=bA(f4(0x16f));bC&&(bB[f4(0x88)]=bC),ay&&(bB['app']=ay);let bD=bA('zid');return bD&&(bB[f4(0x137)]=bD),bB;}async function aB(by,bz,bA,bB){const f5=eW;let bC;try{bC=await fetch(ax+bz,{'method':f5(0x251),'headers':aA(bB,!0x0),'body':JSON[f5(0x133)](bA||{}),'signal':AbortSignal[f5(0x339)](0x7530)});}catch(bE){return M(by,0x1f6,{'ok':!0x1,'message':f5(0x81)+ax+'\uFF1A'+(bE&&bE['message']?bE['message']:String(bE))});}let bD=await bC[f5(0x17a)]();by['statusCode']=bC[f5(0x230)],by[f5(0x33a)]('Content-Type',f5(0x1e1)),by[f5(0x33a)]('Cache-Control',f5(0x260)),by[f5(0x2d7)](bD);}let aC=String(ab||'')[eW(0x2da)]()[eW(0x2f2)](/\/+$/,'');async function aD(by,bz){const f6=eW;if(!aC)return M(bz,0xc8,{'ok':!0x0,'applied':!0x1,'reason':f6(0x1e8)});let bA=aA(by,!0x0);if(!bA[f6(0x88)])return M(bz,0x191,{'ok':!0x1,'needLogin':!0x0,'message':f6(0x1e9)});let bB;try{let bD=await fetch(ax+'/api/aiConfig/ensure',{'method':'POST','headers':bA,'body':'{}','signal':AbortSignal[f6(0x339)](0x7530)});if(bB=await bD[f6(0x1fb)]()[f6(0x29a)](function(){return{};}),!bD['ok']||bB['success']===!0x1||typeof bB[f6(0x261)]==f6(0x270)&&bB[f6(0x261)]!==0x0)return M(bz,bD[f6(0x230)]>=0x190?bD[f6(0x230)]:0x1f6,{'ok':!0x1,'message':bB[f6(0x311)]||f6(0x14f)});}catch(bE){return M(bz,0x1f6,{'ok':!0x1,'message':f6(0x351)+ax+'\uFF1A'+(bE&&bE['message']?bE['message']:String(bE))});}let bC=bB[f6(0x1df)]||{};if(!bC['gateway']||!bC[f6(0x22d)][f6(0x1ad)]||!bC[f6(0x22d)][f6(0x16f)])return M(bz,0x1f6,{'ok':!0x1,'message':f6(0x32e)});bC['gateway'][f6(0x1ad)]=aC;try{l[f6(0x306)](a3||'',bC),l[f6(0x1f4)](aK,bC);}catch(bF){return M(bz,0x1f4,{'ok':!0x1,'message':f6(0x345)+(bF&&bF[f6(0x311)]?bF[f6(0x311)]:String(bF))});}return M(bz,0xc8,Object[f6(0x25c)]({'ok':!0x0,'applied':!0x0},l['sanitize'](bC)));}async function aE(by,bz,bA){const f7=eW;let bB=bA[f7(0xeb)]('?')[0x0];if(bB===f7(0x1c5))return M(bz,0xc8,{'ok':!0x0,'origin':ax,'app':ay});if(by[f7(0x290)]!==f7(0x251))return M(bz,0x195,{'ok':!0x1,'message':f7(0x2cf)});let bC=bB['match'](/^\/api\/(factory[A-Za-z]*|userGit)\/([A-Za-z]+)$/);if(!bC||!az[bC[0x1]]||az[bC[0x1]][f7(0xca)](bC[0x2])===-0x1)return M(bz,0x194,{'ok':!0x1,'message':'\u4E0D\u652F\u6301\u7684\u5DE5\u5382\u63A5\u53E3:\x20'+bB});let bD=await I(by)[f7(0x29a)](()=>({}));return bD[f7(0x177)]=ay,aB(bz,bB,bD,by);}async function aF(by,bz,bA){const f8=eW;let bB=bA[f8(0xeb)]('?')[0x1]||'',bC=aA(by,!0x1),bD=bB;bC[f8(0x88)]&&bD['indexOf']('token=')===-0x1&&(bD+=(bD?'&':'')+f8(0x299)+encodeURIComponent(bC['Token'])),ay&&bD[f8(0xca)](f8(0x2a5))===-0x1&&(bD+=(bD?'&':'')+f8(0x2a5)+encodeURIComponent(ay));let bE;try{bE=await fetch(ax+f8(0x2e0)+(bD?'?'+bD:''),{'headers':bC});}catch(bI){return N(bz,f8(0x16a)+(bI&&bI['message']?bI['message']:String(bI)));}if(!bE['ok']||!bE['body'])return N(bz,'HTTP\x20'+bE[f8(0x230)]);let bF=bE['headers'][f8(0xf4)]('content-type')||'';if(bF[f8(0xca)]('text/event-stream')===-0x1){try{bE['body'][f8(0xa7)]&&bE[f8(0x350)][f8(0xa7)]();}catch{}return N(bz,'not-sse:\x20'+bF);}bz[f8(0x2d9)](0xc8,{'Content-Type':f8(0x337),'Cache-Control':'no-cache,\x20no-transform','Connection':f8(0xb1),'X-Accel-Buffering':'no'}),bz[f8(0x239)]&&bz['flushHeaders']();let bG=k[f8(0x2f9)](bE[f8(0x350)]),bH=()=>{try{bG['destroy']();}catch{}};by['on']('close',bH),bz['on']('close',bH),bG['on'](f8(0x30e),()=>{try{bz['end']();}catch{}}),bG[f8(0x204)](bz);}function aG(by){const f9=eW;if(typeof by!=f9(0x2be)||!by)return null;let bz=by;return bz[f9(0xca)]('//')===0x0&&(bz='https:'+bz),/^https?:\/\//i['test'](bz)?bz:bz[f9(0xca)](f9(0x152))===0x0?ac+bz[f9(0x75)](0x8):null;}function aH(by){const fa=eW;if(a4)return g[fa(0x17b)](by,a4);let bz=i[fa(0xd8)](),bA=g[fa(0x17b)](by);for(let bB=0x0;bB<=0x4&&bA!==bz;bB++){if(e['existsSync'](g[fa(0xab)](bA,'.git')))return bA;let bC=g['dirname'](bA);if(bC===bA)break;bA=bC;}return null;}let aI=aH(a2),aJ=typeof aI=='string'&&aI[eW(0x77)]>0x0,aK=g[eW(0x17b)](aI||a2);if(aJ&&aK!==g['resolve'](a2)&&console[eW(0xb0)](eW(0x1b1)+aK),aJ)try{if(aC){let by=l[eW(0x29c)](a3||'');by&&by[eW(0x22d)]&&by[eW(0x22d)][eW(0x1ad)]&&(by[eW(0x22d)][eW(0x1ad)]=aC,l[eW(0x1f4)](aK,by));}else l[eW(0x32d)](aK,a3||'')&&console[eW(0xb0)](eW(0x104));}catch(bz){console[eW(0x28c)]('[AiWith]\x20\u6062\u590D\x20AI\x20\u914D\u7F6E\u7F13\u5B58\u5931\u8D25:',bz&&bz[eW(0x311)]);}let aL=null,aM=new Set();function aN(bA){const fb=eW;return bA[fb(0x1ee)][fb(0x181)]({'location':{'directory':aK}})[fb(0x301)](bB=>(bB[fb(0x1df)]||[])[fb(0x245)](bC=>({'name':bC[fb(0xaa)],'status':bC[fb(0x230)]&&bC[fb(0x230)][fb(0x230)]||fb(0x73),'error':bC['status']&&bC[fb(0x230)][fb(0x30e)]?String(bC[fb(0x230)][fb(0x30e)]):''})))[fb(0x29a)](bB=>(console[fb(0x28c)](fb(0x101),bB&&bB[fb(0x311)]),[]));}function aO(bA){const fe=eW;return W(function(){const fc=b;return bA[fc(0xa3)][fc(0x181)]({'location':{'directory':aK}})[fc(0x301)](function(bB){const fd=fc;if(!bB||!bB['data']||bB[fd(0x1df)][fd(0x77)]===0x0)throw new Error(fd(0x33d));return bB;});},0x4,0x320)[fe(0x29a)](function(){return{'data':[]};});}async function aP(){const fg=eW;return aL||(aL=(async()=>{const ff=b;let bA=await import(ff(0x2ef)),bB=await import(ff(0xcd)),bC=await bA[ff(0x1e0)][ff(0xe2)](),bD=bA[ff(0x1e0)][ff(0xb2)](bC);return bB['OpenCode'][ff(0x119)]({'baseUrl':bC['url'],'headers':bD});})()[fg(0x29a)](bA=>{const fh=fg;aL=null;let bB=new Error(bA&&bA['message']?bA[fh(0x311)]:String(bA));throw bB[fh(0x10c)]=fh(0x335),bB;})),aL;}function aQ(bA,bB){const fi=eW;let bC=bB&&bB[fi(0x311)]?String(bB[fi(0x311)]):String(bB);M(bA,0x1f7,{'ok':!0x1,'code':fi(0x335),'message':F,'detail':bC});}let aR=null,aS=null,aT=eW(0x192),aU=bA=>bA[eW(0x364)]!==eW(0x235)||(bA[eW(0x1e2)]||[])[eW(0x2dd)](bB=>(bB[eW(0x32b)]||0x0)>0x0||(bB[eW(0x10d)]||0x0)>0x0||bB[eW(0x1d7)]&&((bB['cache']['read']||0x0)>0x0||(bB['cache'][eW(0x310)]||0x0)>0x0)),aV=bA=>(bA[eW(0xaa)]||'')[eW(0x1d9)]()[eW(0xca)](aT)>-0x1||(bA['modelID']||'')[eW(0x1d9)]()[eW(0xca)](aT)>-0x1;function aW(bA){const fj=eW;return bA[fj(0x1c8)](bB=>bB['providerID']===fj(0x28a)&&bB[fj(0x1a6)]===fj(0x1ff))||bA[fj(0x1c8)](bB=>aU(bB)&&aV(bB))||null;}async function aX(bA){let bB=await aO(bA);return aW(bB['data']||[]);}function aY(bA){return n?n({'baseDir':aK,'timeout':{'block':bA||0x7530}}):null;}function aZ(bA){const fk=eW;return typeof bA!=fk(0x2be)||!bA||bA[0x0]==='/'||/^[a-zA-Z]:[\\/]/[fk(0x320)](bA)||bA[fk(0xeb)](/[\\/]/)[fk(0x2dd)](bB=>bB==='..')?null:bA;}function b0(bA,bB){const fl=eW;let bC=(bA[fl(0x274)]||[])['map'](bD=>({'path':bD[fl(0x2d4)],'index':bD['index']||'\x20','working':bD[fl(0xac)]||'\x20'}));return{'isRepo':!0x0,'branch':bA[fl(0x2af)]||bB&&bB['current']||'','tracking':bA[fl(0x2e5)]||'','ahead':bA['ahead']||0x0,'behind':bA[fl(0x189)]||0x0,'detached':!!bA[fl(0x295)],'clean':bC['length']===0x0,'branches':bB&&bB[fl(0x2e9)]||[],'files':bC};}async function b1(){const fm=eW;let bA=aY();if(!bA)return{'isRepo':!0x1,'reason':'simple-git\x20\u4E0D\u53EF\u7528'};if(!await bA[fm(0x10f)]()[fm(0x29a)](()=>!0x1))return{'isRepo':!0x1,'reason':fm(0xa4)};let [bB,bC]=await Promise[fm(0x2e9)]([bA[fm(0x230)](),bA[fm(0x27e)]()['catch'](()=>({'all':[],'current':''}))]);return b0(bB,bC);}async function b2(bA,bB){const fn=eW;let bC=aY();if(!bC)throw new Error(fn(0x2a3));let bD=bB||{},bE=()=>{const fo=fn;let bF=Array[fo(0x17f)](bD[fo(0x159)])?bD[fo(0x159)]:[],bG=bF[fo(0x245)](aZ)[fo(0x1b6)](Boolean);if(bF[fo(0x77)]&&!bG[fo(0x77)])throw new Error(fo(0x2d5));return bG;};switch(bA){case'status':return{'data':await b1()};case'stage':{let bF=bE();return bF['length']?await bC[fn(0x254)](bF):await bC[fn(0x254)](['-A']),{'data':await b1()};}case fn(0x275):{let bG=bE();return await bC[fn(0x86)](bG[fn(0x77)]?['HEAD','--',...bG]:['HEAD']),{'data':await b1()};}case fn(0xd1):{let bH=typeof bD[fn(0x311)]==fn(0x2be)?bD[fn(0x311)]['trim']():'';if(!bH)throw new Error('\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A');if(bH[fn(0x77)]>0xfa0)throw new Error(fn(0x2b8));let bI=await bC[fn(0xd1)](bH);if(!bI||!bI[fn(0xd1)])throw new Error(fn(0x2a6));return{'data':await b1(),'summary':{'text':fn(0x186)+bI[fn(0xd1)]['slice'](0x0,0x8)}};}case fn(0x347):{let bJ=typeof bD['branch']==fn(0x2be)?bD['branch']:'';if(!bJ)throw new Error('\u53C2\u6570\u9519\u8BEF:\x20branch');if(!(await bC[fn(0x27e)]())[fn(0x2e9)][fn(0x10e)](bJ))throw new Error(fn(0x286)+bJ);return await bC['checkout'](bJ),{'data':await b1(),'summary':{'text':fn(0x1c9)+bJ}};}case'pull':{let bK=await aY(0x1d4c0)[fn(0xed)](),bL=bK&&bK[fn(0x114)]&&bK[fn(0x114)]['changes']||0x0;return{'data':await b1(),'summary':{'text':fn(0x225)+bL+fn(0x7d)}};}case fn(0xce):{let bM=await aY(0x1d4c0)[fn(0xce)](),bN=bM&&bM[fn(0x333)]&&bM[fn(0x333)][0x0]||null;return{'data':await b1(),'summary':{'text':bN?fn(0x31b)+bN[fn(0xa6)]+'/'+bN[fn(0x94)]:fn(0x13e)}};}default:throw new Error(fn(0x2ce)+bA);}}function b3(bA,bB){const fp=eW;if(bA['readyState']===0x1)try{bA[fp(0x160)](JSON['stringify'](bB));}catch{}}async function b4(bA,bB){const fq=eW;if(bA===fq(0x153))return{'data':{'branch':await v(aK)}};if(typeof bA==fq(0x2be)&&bA['indexOf']('git:')===0x0)return b2(bA[fq(0x75)](0x4),bB);throw new Error(fq(0x27a)+bA);}let b5=new Set(),b6=null,b7=0x0,b8=new Map();function b9(){const fr=eW;if(b6&&b6[fr(0x11b)]===0x1&&b5[fr(0x1b7)](b6))return b6;let bA=null;return b5['forEach'](bB=>{const fs=fr;bB[fs(0x11b)]===0x1&&(bA=bB);}),b6=bA,bA;}function ba(bA){const ft=eW;if(!p||!bA)return null;let bB=new p({'noServer':!0x0,'maxPayload':0x400*0x400});return bA['on'](ft(0x24d),(bC,bD,bE)=>{const fu=ft;let bF=(bC[fu(0x17e)]||'')[fu(0xeb)]('?')[0x0];if((bF==='/aiwith/page'||bF==='/aiwith/ws')&&!aw(bC)){bD['destroy']();return;}if(bF==='/aiwith/page'){bB[fu(0x319)](bC,bD,bE,bG=>bB[fu(0xad)](fu(0x23a),bG,bC));return;}bF==='/aiwith/ws'&&bB['handleUpgrade'](bC,bD,bE,bG=>bB[fu(0xad)](fu(0x15d),bG,bC));}),bB['on'](ft(0x15d),bC=>{const fv=ft;let bD=setInterval(()=>{try{bC['readyState']===0x1&&bC['ping']();}catch{}},0x4e20);bC['on'](fv(0x155),()=>clearInterval(bD)),bC['on'](fv(0x30e),()=>clearInterval(bD)),bC['on'](fv(0x311),bE=>{const fw=fv;let bF;try{bF=JSON[fw(0x24a)](String(bE));}catch{return;}if(!bF||typeof bF[fw(0x28d)]!=fw(0x2be))return;let bG=bF['id'],bH=Object[fw(0x25c)]({},bF);delete bH['id'],delete bH[fw(0x28d)],b4(bF[fw(0x28d)],bH)[fw(0x301)](bI=>b3(bC,Object['assign']({'id':bG,'ok':!0x0},bI)))['catch'](bI=>b3(bC,{'id':bG,'ok':!0x1,'message':bI&&bI[fw(0x311)]||String(bI)}));});}),bB['on'](ft(0x23a),bC=>{const fx=ft;b5['add'](bC),b6=bC,bC[fx(0x32c)]=!0x0;let bD=setInterval(()=>{const fy=fx;try{if(bC[fy(0x32c)]===!0x1){bC[fy(0x9e)]();return;}bC[fy(0x32c)]=!0x1,bC[fy(0x11b)]===0x1&&bC[fy(0x2ac)]();}catch{}},0x4e20);bC['on'](fx(0x76),()=>{bC['__aiwithAlive']=!0x0;});let bE=()=>{const fz=fx;clearInterval(bD),b5[fz(0x361)](bC),b6===bC&&(b6=null);};bC['on'](fx(0x155),bE),bC['on']('error',bE),bC['on']('message',bF=>{const fA=fx;let bG;try{bG=JSON[fA(0x24a)](String(bF));}catch{return;}if(!bG)return;if(bG[fA(0x190)]===fA(0x340)){bC['__aiwithMeta']={'url':bG[fA(0x17e)],'title':bG[fA(0x1e7)],'at':Date[fA(0x136)]()};return;}if(!bG['id'])return;let bH=b8[fA(0xf4)](bG['id']);bH&&(b8[fA(0x361)](bG['id']),bH(bG));});}),bB;}function bb(bA,bB,bC){return new Promise((bD,bE)=>{const fB=b;let bF=b9();if(!bF){bE(new Error(fB(0x11f)));return;}let bG='p'+ ++b7,bH=setTimeout(()=>{b8['delete'](bG),bE(new Error('\u9875\u9762\u54CD\u5E94\u8D85\u65F6'));},bC||0x4e20);b8['set'](bG,bI=>{clearTimeout(bH),bD(bI);});try{bF['send'](JSON[fB(0x133)]({'id':bG,'cmd':bA,'args':bB||{}}));}catch(bI){clearTimeout(bH),b8['delete'](bG),bE(bI);}});}function bc(){const fC=eW;let bA=[],bB=b9();return b5[fC(0x203)](bC=>{const fD=fC;let bD=bC['__aiwithMeta']||{};bA[fD(0xce)]({'url':bD[fD(0x17e)]||'','title':bD[fD(0x1e7)]||'','active':bC===bB,'at':bD['at']||0x0});}),{'connected':bA[fC(0x77)],'activeIndex':bA['findIndex'](bC=>bC[fC(0x324)]),'pages':bA};}function bd(bA){return new Promise(bB=>setTimeout(bB,bA));}async function bf(bA){const fE=eW;let bB=Date[fE(0x136)]()+(bA||0x1388);for(;Date['now']()<bB;){let bC=b9();if(bC)return bC;await bd(0x78);}return b9();}async function bg(bA,bB,bC){const fF=eW;let bD=Date[fF(0x136)]()+(bC||0x1f40);for(;Date[fF(0x136)]()<bD;){await bd(0x78);let bF=b9();if(!bF)continue;let bG=bF[fF(0x1fe)]&&bF[fF(0x1fe)][fF(0x17e)]||'';if(bF!==bA||bG!==bB){await bd(0x78);let bH=b9();return bH&&bH['__aiwithMeta']&&bH[fF(0x1fe)]['url']||bG;}}let bE=b9();return bE&&bE['__aiwithMeta']&&bE[fF(0x1fe)][fF(0x17e)]||'';}async function bh(bA,bB,bC){const fG=eW;let bD=bC[fG(0xeb)]('?')[0x0];if(bD===fG(0x19c))return bA[fG(0x290)]!=='GET'?M(bB,0x195,{'ok':!0x1,'message':fG(0x232)}):M(bB,0xc8,{'ok':!0x0,'data':bc()});let bE=bD[fG(0x171)](/^\/api\/page\/([a-z]+)$/);if(!bE)return M(bB,0x194,{'ok':!0x1,'message':fG(0x331)+bD});if(bA[fG(0x290)]!=='POST')return M(bB,0x195,{'ok':!0x1,'message':fG(0x2c3)});let bF=await I(bA)['catch'](()=>({})),bG=bE[0x1];if(bG===fG(0x1f2)){if(!String(bF&&bF['to']||'')[fG(0x2da)]())return M(bB,0x190,{'ok':!0x1,'message':fG(0x266)});let bH=b9();if(!bH)return M(bB,0x1f7,{'ok':!0x1,'code':fG(0x11f),'message':fG(0x191)});let bI=bH[fG(0x1fe)]&&bH[fG(0x1fe)][fG(0x17e)]||'';try{bH['send'](JSON[fG(0x133)]({'id':'p'+ ++b7,'cmd':fG(0x1f2),'args':bF||{}}));}catch(bK){return M(bB,0x1f4,{'ok':!0x1,'message':bK&&bK[fG(0x311)]||String(bK)});}let bJ=await bg(bH,bI,0x1f40);return M(bB,0xc8,{'ok':!0x0,'data':{'ok':!0x0,'url':bJ}});}if(bG===fG(0x146)){if(!await bf(0x1388))return M(bB,0x1f7,{'ok':!0x1,'code':'NO_PAGE','message':fG(0x191)});let bL=Math[fG(0x29f)](Math['max'](Number(bF&&bF['timeout'])||0x3a98,0x3e8),0xea60);try{let bM=await bb(fG(0x146),Object['assign']({},bF,{'timeout':bL}),bL+0xbb8);return M(bB,0xc8,{'ok':!0x0,'data':bM[fG(0x1df)]});}catch(bN){return M(bB,0x1f4,{'ok':!0x1,'message':bN&&bN[fG(0x311)]||String(bN)});}}try{let bO=await bb(bG,bF,0x61a8);return M(bB,0xc8,{'ok':!0x0,'data':bO[fG(0x1df)]});}catch(bP){return bP&&bP[fG(0x311)]===fG(0x11f)?M(bB,0x1f7,{'ok':!0x1,'code':fG(0x11f),'message':fG(0x191)}):M(bB,0x1f4,{'ok':!0x1,'message':bP&&bP[fG(0x311)]||String(bP)});}}function bi(bA){const fH=eW;let bB=bA&&bA[fH(0x284)];if(!bB||!bA[fH(0x222)])return;let bC=()=>{const fI=fH;try{let bD=bB['address'](),bE=bD&&typeof bD=='object'?bD[fI(0x185)]:null;if(!bE)return;let bF=fI(0x29b)+bE;e[fI(0x135)](g[fI(0xab)](i[fI(0x247)](),fI(0x342)),JSON[fI(0x133)]({'root':aK,'origin':bF,'at':Date[fI(0x136)]()})),bl(bF);}catch{}};bB[fH(0x288)]&&bC(),bB['on'](fH(0x288),bC);}let bj=eW(0xe5);function bk(){const fJ=eW;let bA=g['dirname'](aK);for(;bA&&bA!==g[fJ(0x1fa)](bA);){let bB=g[fJ(0xab)](bA,'.opencode',fJ(0x2f0),'aiwith-page');try{let bC=g[fJ(0xab)](bB,fJ(0x2bd));e['existsSync'](bC)&&e[fJ(0x7f)](bC,fJ(0x33b))[fJ(0xca)](bj)===0x0&&(e[fJ(0x142)](bB,{'recursive':!0x0,'force':!0x0}),console[fJ(0x28c)](fJ(0xe4)+bB));}catch{}bA=g[fJ(0x1fa)](bA);}}function bl(bA){const fK=eW;try{bk();let bB=A(fK(0x321)),bC=bj+fK(0x117)+bA+'\x0a'+bB[fK(0x1c7)]('__AIWITH_ORIGIN__',bA),bD=g[fK(0xab)](aK,fK(0x2b7),fK(0x2f0),fK(0x175)),bE=g[fK(0xab)](bD,'index.ts'),bF=null;try{bF=e[fK(0x7f)](bE,fK(0x33b));}catch{bF=null;}if(bF===bC)return;e['mkdirSync'](bD,{'recursive':!0x0}),e['writeFileSync'](bE,bC);}catch{}}async function bm(bA){const fL=eW;let bB=await aX(bA)[fL(0x29a)](()=>null);return aR=await bA[fL(0x1cd)][fL(0x99)]({'agent':fL(0x243),...bB?{'model':{'id':bB[fL(0x1a6)],'providerID':bB[fL(0x364)]}}:{},'location':{'directory':aK}}),bB||console[fL(0x28c)](fL(0x1c1)+aT+fL(0x313)),aR;}async function bn(bA){const fM=eW;let bB=((await bA[fM(0x1cd)][fM(0x181)]({'directory':aK,'limit':0x14,'order':'desc'})[fM(0x29a)](()=>({'data':[]})))[fM(0x1df)]||[])[fM(0x1c8)](bC=>!bC[fM(0x2bf)]);return bB?(aR=bB,console['log'](fM(0x17c)+bB['id']),bB):bm(bA);}async function bo(bA){const fN=eW;if(aR){let bB=await bA['session'][fN(0xf4)]({'sessionID':aR['id']})[fN(0x29a)](()=>null);if(bB)return bB;aR=null;}return aS||(aS=bn(bA)[fN(0x12c)](()=>{aS=null;})),aS;}async function bp(bA,bB,bC){const fO=eW;let bD=await aP(),bE=bC['split']('?')[0x0],bF=bH=>bE['match'](bH),bG;if(bA['method']==='GET'&&bE===fO(0x219)){let [bH,bI,bJ,bK,bL,bM,bN]=await Promise[fO(0x2e9)]([bD['server'][fO(0x100)]()['catch'](bR=>(console[fO(0x28c)]('[AiWith]\x20server.info\x20failed:',bR&&bR[fO(0x311)]),null)),bD[fO(0x2c5)][fO(0x181)]({'location':{'directory':aK}})['catch'](bR=>(console[fO(0x28c)]('[AiWith]\x20agent.list\x20failed:',bR&&bR['message']),{'data':[]})),aO(bD),aN(bD),bD[fO(0x241)]['list']({'location':{'directory':aK}})[fO(0x29a)](bR=>(console[fO(0x28c)]('[AiWith]\x20command.list\x20failed:',bR&&bR['message']),{'data':[]})),bD[fO(0x1cd)][fO(0x324)]()['catch'](bR=>(console[fO(0x28c)](fO(0x366),bR&&bR['message']),{})),v(aK)]),bO=(bJ[fO(0x1df)]||[])[fO(0x1b6)](bR=>bR['enabled']!==!0x1),bP=aW(bO),bQ=bR=>({'providerID':bR[fO(0x364)],'modelID':bR[fO(0x1a6)],'name':bR[fO(0xaa)],'contextLimit':bR['limit']?bR[fO(0x327)][fO(0x1ed)]:0x0,'variants':(bR['variants']||[])[fO(0x245)](bS=>bS['id']),'paid':aU(bR)});return M(bB,0xc8,{'ok':!0x0,'root':aK,'name':a3,'server':bH,'mcp':bK,'running':Object[fO(0xdb)](bM||{}),'branch':bN||'','models':bO[fO(0x245)](bQ),'defaultModel':bP?bQ(bP):null,'agents':(bI['data']||[])[fO(0x1b6)](bR=>!bR['hidden'])[fO(0x245)](bR=>({'id':bR['id'],'name':bR[fO(0xaa)],'description':bR[fO(0x1e5)],'mode':bR[fO(0x23f)]})),'commands':(bL[fO(0x1df)]||[])[fO(0x1b6)](bR=>R(bR['name'],bR[fO(0x1e5)]))[fO(0x245)](bR=>({'name':bR['name'],'description':bR['description']||''}))});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0xe0)){let bR=await bD['command']['list']({'location':{'directory':aK}});return M(bB,0xc8,{'ok':!0x0,'data':(bR['data']||[])[fO(0x1b6)](bS=>R(bS[fO(0xaa)],bS[fO(0x1e5)]))['map'](bS=>({'name':bS['name'],'description':bS[fO(0x1e5)]||''}))});}if(bA[fO(0x290)]==='GET'&&bE===fO(0x25d)){let bS=bC['split']('?')[0x1]||'',bT=decodeURIComponent((bS[fO(0x171)](/(?:^|&)query=([^&]*)/)||[])[0x1]||''),bU=(bS[fO(0x171)](/(?:^|&)type=(file|directory)/)||[])[0x1],bV=await bD[fO(0xf9)][fO(0x1c8)]({'location':{'directory':aK},'query':bT,...bU?{'type':bU}:{},'limit':0x1e});return M(bB,0xc8,{'ok':!0x0,'data':(bV[fO(0x1df)]||[])[fO(0x245)](bW=>({'path':bW[fO(0x2d4)],'type':bW['type']}))});}if(bA['method']==='GET'&&bE===fO(0x130)){let bW=bC[fO(0xeb)]('?')[0x1]||'',bX=decodeURIComponent((bW[fO(0x171)](/(?:^|&)path=([^&]*)/)||[])[0x1]||''),bY=bX[fO(0x141)](fO(0x140))?bX['slice'](0x7):bX;if(/^\//[fO(0x320)](bY)){let bZ=g[fO(0x17b)](bY);if(bZ!==aK&&!bZ['startsWith'](aK+g['sep']))return M(bB,0x190,{'ok':!0x1,'message':fO(0x221)});bY=g[fO(0x18d)](aK,bZ);}if(bY=bY[fO(0x2f2)](/^\.\//,''),!bY||bY[fO(0xeb)]('/')[fO(0x2dd)](c0=>c0==='..'||c0===''))return M(bB,0x190,{'ok':!0x1,'message':fO(0x11e)});try{let c0=Buffer[fO(0x118)](await bD[fO(0xf9)]['read']({'location':{'directory':aK},'path':bY})),c1=c0['length'];if(c0['subarray'](0x0,0x2000)[fO(0x10e)](0x0))return M(bB,0xc8,{'ok':!0x0,'data':{'path':bY,'binary':!0x0,'size':c1}});let c2=0x100*0x400,c3=c1>c2?c0['subarray'](0x0,c2):c0;return M(bB,0xc8,{'ok':!0x0,'data':{'path':bY,'size':c1,'truncated':c3[fO(0x77)]<c1,'text':c3[fO(0xa8)]('utf8')}});}catch(c4){return M(bB,0x194,{'ok':!0x1,'message':fO(0x8b)+(c4&&c4[fO(0x311)]?c4[fO(0x311)]:String(c4))});}}if(bA[fO(0x290)]==='GET'&&bE===fO(0x2f7)){let c5=ad?await as(bD)[fO(0x29a)](function(){return null;}):null;return M(bB,0xc8,{'ok':!0x0,'data':c5||await aN(bD)});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0x35c)){let c6=Date[fO(0x136)](),c7=c6-0x2d0*0xe10*0x3e8,c8=[];try{let c9=await bD[fO(0x1cd)]['stats']({'from':c7,'to':c6,'tools':fO(0x24f)});c8=(c9&&c9[fO(0x188)]||[])[fO(0x245)](ca=>{const fP=fO;let cb=ca['tokens']||{},cc=cb[fP(0x1d7)]||{};return{'providerID':ca[fP(0xa3)]?ca[fP(0xa3)][fP(0x364)]:'','modelID':ca['model']?ca[fP(0xa3)]['id']:'','steps':ca[fP(0x187)]||0x0,'tokens':(cb[fP(0x32b)]||0x0)+(cb[fP(0x10d)]||0x0)+(cb[fP(0x2e8)]||0x0)+(cc['read']||0x0)+(cc['write']||0x0)};})[fO(0x1b6)](ca=>ca[fO(0x364)]&&ca[fO(0x1a6)]);}catch(ca){console['warn']('[AiWith]\x20session.stats\x20failed:',ca&&ca['message']);}return M(bB,0xc8,{'ok':!0x0,'data':c8});}if(bA[fO(0x290)]===fO(0x251)&&bE===fO(0x297)){let cb=await I(bA)[fO(0x29a)](function(){return{};}),cc=String(cb&&cb['name']||'');if(!cc)return M(bB,0x190,{'ok':!0x1,'message':'\u7F3A\u5C11\x20MCP\x20\u540D\u79F0'});if(cb['on']&&!ai(cc))return M(bB,0x193,{'ok':!0x1,'message':fO(0x200)+cc+fO(0x34a)});al[cc]=!!cb['on'],delete am[cc],ap=!0x0,ar();let cd=await as(bD)[fO(0x29a)](function(){return null;});return M(bB,0xc8,{'ok':!0x0,'data':cd||await aN(bD)});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0xb3)){let cf=await bo(bD);return M(bB,0xc8,{'ok':!0x0,'data':cf});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0x1de)){let cg=await bD[fO(0x1cd)][fO(0x181)]({'directory':aK,'limit':0x1e,'order':fO(0x2a9)});return M(bB,0xc8,{'ok':!0x0,'data':(cg[fO(0x1df)]||[])[fO(0x1b6)](ch=>!ch[fO(0x2bf)])[fO(0x245)](ch=>({'id':ch['id'],'title':ch['title']||'','agent':ch[fO(0x2c5)]||'','time':ch[fO(0x218)]||{},'cost':ch[fO(0x1e2)]||0x0,'tokens':ch[fO(0x2ec)]||null}))});}if(bA['method']===fO(0x251)&&bE==='/api/session/switch'){let ch=await I(bA);if(!ch[fO(0x209)]||typeof ch[fO(0x209)]!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':fO(0x207)});let ci=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':ch['sessionID']});return!ci||!ci[fO(0x20e)]||ci[fO(0x20e)][fO(0x93)]!==aK?M(bB,0x193,{'ok':!0x1,'message':fO(0x31d)}):(aR=ci,M(bB,0xc8,{'ok':!0x0,'data':ci}));}if(bA[fO(0x290)]===fO(0x251)&&bE===fO(0x323)){let cj=await bm(bD);return M(bB,0xc8,{'ok':!0x0,'data':cj});}if(bG=bF(/^\/api\/session\/([^/]+)$/)){let ck=bG[0x1];if(bA[fO(0x290)]===fO(0x132)){let cl=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':ck});return M(bB,0xc8,{'ok':!0x0,'data':cl});}return bA[fO(0x290)]==='DELETE'?(await bD[fO(0x1cd)]['remove']({'sessionID':ck}),aR&&aR['id']===ck&&(aR=null),M(bB,0xc8,{'ok':!0x0})):M(bB,0x195,{'ok':!0x1,'message':fO(0x2d1)});}if((bG=bF(/^\/api\/session\/([^/]+)\/messages$/))&&bA[fO(0x290)]==='GET'){let cm=bC['split']('?')[0x1]||'',co=Number((cm[fO(0x171)](/(?:^|&)limit=(\d+)/)||[])[0x1]||0x0),cp=co>0x0?Math[fO(0x29f)](co,0xc8):0xc8,cq=(cm[fO(0x171)](/(?:^|&)order=(asc|desc)/)||[])[0x1],cs=decodeURIComponent((cm[fO(0x171)](/(?:^|&)cursor=([^&]*)/)||[])[0x1]||''),cu={'sessionID':bG[0x1],'limit':cp};cs?cu[fO(0x278)]=cs:cu[fO(0x7b)]=cq||fO(0x84);let cv=await bD[fO(0x311)]['list'](cu);return M(bB,0xc8,{'ok':!0x0,'data':cv['data']||[],'cursor':cv['cursor']});}if((bG=bF(/^\/api\/session\/([^/]+)\/prompt$/))&&bA['method']===fO(0x251)){let cw=await I(bA);if(!cw[fO(0x17a)]||typeof cw['text']!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':fO(0x79)});let cx=[],cy=Array['isArray'](cw[fO(0x1bf)])?cw[fO(0x1bf)]:[];if(cy['length']>0x5)return M(bB,0x190,{'ok':!0x1,'message':fO(0x2ae)});let cz=[];for(let cE of cy){let cF=aG(cE);if(!cF||!u(cF))return M(bB,0x190,{'ok':!0x1,'message':fO(0x214)});cz[fO(0xce)](cF);}if(cz[fO(0x77)]){let cG=await Promise['all'](cz[fO(0x245)](async cH=>{const fQ=fO;let cI=await E(cH),cJ=fQ(0x96);try{cJ=decodeURIComponent(cH[fQ(0xeb)]('?')[0x0][fQ(0xeb)]('/')['pop']()||'')['slice'](0x0,0x78)||'image';}catch{}return{'uri':cI,'name':cJ};}));cx[fO(0xce)](...cG);}let cA=Array[fO(0x17f)](cw[fO(0xee)])?cw[fO(0xee)]:[];for(let cH of cA){if(!cH||typeof cH[fO(0x2d4)]!='string'||!cH[fO(0x2d4)])continue;let cI=g[fO(0x17b)](aK,cH[fO(0x2d4)]);cI!==aK&&cI['indexOf'](aK+g[fO(0x31f)])!==0x0||cx['push']({'uri':'file://'+cI,'name':cH[fO(0x2d4)],...cH['description']?{'description':cH['description']}:{},...cH[fO(0x197)]?{'mention':cH['mention']}:{}});}let cB=cw['delivery']===fO(0x2fe)||cw['delivery']==='queue'?cw['delivery']:void 0x0,cC=Y(cw['pageContext']),cD=await bD[fO(0x1cd)][fO(0x2d0)]({'sessionID':bG[0x1],'text':cC?cw[fO(0x17a)]+'\x0a\x0a'+cC:cw['text'],...cx['length']?{'files':cx}:{},...cz[fO(0x77)]?{'metadata':{'images':cz}}:{},...cB?{'delivery':cB}:{}});return M(bB,0xc8,{'ok':!0x0,'data':cD});}if((bG=bF(/^\/api\/session\/([^/]+)\/command$/))&&bA['method']===fO(0x251)){let cJ=await I(bA);return!cJ[fO(0xaa)]||typeof cJ[fO(0xaa)]!=fO(0x2be)?M(bB,0x190,{'ok':!0x1,'message':fO(0x105)}):(await bD['session'][fO(0x241)]({'sessionID':bG[0x1],'name':cJ['name'],'text':typeof cJ['text']==fO(0x2be)?cJ[fO(0x17a)]:'',...Array['isArray'](cJ[fO(0x274)])&&cJ[fO(0x274)][fO(0x77)]?{'files':cJ[fO(0x274)]}:{}}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/shell$/))&&bA['method']==='POST'){let cK=await I(bA);return!cK[fO(0x241)]||typeof cK[fO(0x241)]!=fO(0x2be)?M(bB,0x190,{'ok':!0x1,'message':fO(0x129)}):(await bD['session']['shell']({'sessionID':bG[0x1],'command':cK[fO(0x241)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/compact$/))&&bA['method']===fO(0x251)){let cL=await I(bA)['catch'](()=>({})),cM=cL[fO(0x12b)]==='steer'||cL['delivery']==='queue'?cL['delivery']:fO(0xef),cN=await bD[fO(0x1cd)]['compact']({'sessionID':bG[0x1],'delivery':cM});return M(bB,0xc8,{'ok':!0x0,'data':cN});}if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/stage$/))&&bA[fO(0x290)]===fO(0x251)){let cO=await I(bA);if(!cO[fO(0x12e)]||typeof cO[fO(0x12e)]!='string')return M(bB,0x190,{'ok':!0x1,'message':fO(0x35a)});let cP=await bD[fO(0x1cd)]['revert'][fO(0x228)]({'sessionID':bG[0x1],'messageID':cO[fO(0x12e)]});return M(bB,0xc8,{'ok':!0x0,'data':cP});}if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/clear$/))&&bA['method']===fO(0x251))return await bD['session'][fO(0x348)][fO(0x252)]({'sessionID':bG[0x1]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/commit$/))&&bA['method']===fO(0x251))return await bD[fO(0x1cd)][fO(0x348)]['commit']({'sessionID':bG[0x1]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/diff$/))&&bA[fO(0x290)]==='GET'){let cQ=await bD['session'][fO(0xd7)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cQ||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/children$/))&&bA[fO(0x290)]===fO(0x132)){let cR=await bD[fO(0x1cd)]['list']({'parentID':bG[0x1],'limit':0x14,'order':fO(0x84)})[fO(0x29a)](()=>({'data':[]}));return M(bB,0xc8,{'ok':!0x0,'data':(cR[fO(0x1df)]||[])[fO(0x245)](cS=>({'id':cS['id'],'title':cS[fO(0x1e7)]||'','agent':cS[fO(0x2c5)]||'','outcome':cS[fO(0x18f)]||'','time':cS['time']||{}}))});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms$/))&&bA[fO(0x290)]===fO(0x132)){let cS=await bD[fO(0x1cd)][fO(0x9b)][fO(0x181)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cS||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)$/))&&bA[fO(0x290)]==='GET'){let cT=await bD[fO(0x1cd)][fO(0x9b)][fO(0xf4)]({'sessionID':bG[0x1],'formID':bG[0x2]});return M(bB,0xc8,{'ok':!0x0,'data':cT});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/reply$/))&&bA[fO(0x290)]===fO(0x251)){let cU=await I(bA);return!cU[fO(0x89)]||typeof cU[fO(0x89)]!=fO(0x31c)?M(bB,0x190,{'ok':!0x1,'message':fO(0x198)}):(await bD[fO(0x1cd)][fO(0x9b)][fO(0x8d)]({'sessionID':bG[0x1],'formID':bG[0x2],'answer':cU[fO(0x89)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/cancel$/))&&bA['method']===fO(0x251)){let cV=await I(bA)[fO(0x29a)](()=>({}));return await bD[fO(0x1cd)][fO(0x9b)][fO(0xa7)]({'sessionID':bG[0x1],'formID':bG[0x2],...cV[fO(0x311)]?{'message':cV[fO(0x311)]}:{}}),M(bB,0xc8,{'ok':!0x0});}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox$/))&&bA[fO(0x290)]==='GET'){let cW=await bD[fO(0x1cd)][fO(0x15b)]['list']({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cW||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/delivery$/))&&bA[fO(0x290)]===fO(0x251)){let cX=await I(bA);return cX[fO(0x12b)]!=='steer'&&cX[fO(0x12b)]!==fO(0xef)?M(bB,0x190,{'ok':!0x1,'message':fO(0x1d3)}):(await bD['session']['inbox'][fO(0xae)]({'sessionID':bG[0x1],'inboxID':bG[0x2],'delivery':cX[fO(0x12b)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/cancel$/))&&bA['method']===fO(0x251))return await bD[fO(0x1cd)]['inbox']['cancel']({'sessionID':bG[0x1],'inboxID':bG[0x2]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/title$/))&&bA[fO(0x290)]===fO(0x251)){let cY=await I(bA);if(typeof cY[fO(0x1e7)]!='string'||!cY[fO(0x1e7)][fO(0x2da)]())return M(bB,0x190,{'ok':!0x1,'message':fO(0x1eb)});await bD[fO(0x1cd)]['update']({'sessionID':bG[0x1],'title':cY['title'][fO(0x2da)]()});let cZ=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cZ});}if((bG=bF(/^\/api\/session\/([^/]+)\/interrupt$/))&&bA[fO(0x290)]===fO(0x251)){let d0=await bD[fO(0x1cd)]['interrupt']({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d0});}if((bG=bF(/^\/api\/session\/([^/]+)\/agent$/))&&bA[fO(0x290)]===fO(0x251)){let d1=await I(bA);if(!d1[fO(0x2c5)]||typeof d1[fO(0x2c5)]!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20agent'});await bD[fO(0x1cd)][fO(0xd4)]({'sessionID':bG[0x1],'agent':d1['agent']});let d2=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d2});}if((bG=bF(/^\/api\/session\/([^/]+)\/model$/))&&bA[fO(0x290)]==='POST'){let d3=await I(bA);if(!d3['model']||!d3['model']['id']||!d3['model']['providerID'])return M(bB,0x190,{'ok':!0x1,'message':fO(0x116)});await bD[fO(0x1cd)]['switchModel']({'sessionID':bG[0x1],'model':{'id':d3[fO(0xa3)]['id'],'providerID':d3[fO(0xa3)][fO(0x364)],...d3[fO(0xa3)][fO(0x1d6)]?{'variant':d3[fO(0xa3)][fO(0x1d6)]}:{}}}),ad&&aJ&&bu(bD,d3[fO(0xa3)])['catch'](()=>{});let d4=await bD['session'][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d4});}if((bG=bF(/^\/api\/session\/([^/]+)\/permissions$/))&&bA[fO(0x290)]==='GET'){let d5=await bD['permission'][fO(0x181)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d5||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/permissions\/([^/]+)\/reply$/))&&bA[fO(0x290)]===fO(0x251)){let d6=await I(bA);return[fO(0x224),fO(0x163),'reject'][fO(0xca)](d6[fO(0x2d3)])===-0x1?M(bB,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20decision'}):(await bD[fO(0x359)][fO(0x8d)]({'sessionID':bG[0x1],'requestID':bG[0x2],'decision':d6['decision']}),M(bB,0xc8,{'ok':!0x0}));}return bE==='/api/events'?bq(bA,bB,bD,bC):M(bB,0x194,{'ok':!0x1,'message':fO(0x331)+bC});}async function bq(bA,bB,bC,bD){const fR=eW;let bE=bD['split']('?')[0x1]||'',bF=decodeURIComponent((bE[fR(0x171)](/(?:^|&)session=([^&]*)/)||[])[0x1]||'');bB[fR(0x2d9)](0xc8,{'Content-Type':'text/event-stream','Cache-Control':'no-cache,\x20no-transform','Connection':fR(0xb1),'X-Accel-Buffering':'no'}),bB[fR(0x239)]&&bB[fR(0x239)](),bB[fR(0x310)](fR(0x304));let bG=setInterval(()=>{const fS=fR;try{bB[fS(0x310)](fS(0x24e));}catch{}},0x3a98),bH=!0x1,bI=bC['event'][fR(0x2db)]()[Symbol[fR(0x316)]](),bJ=()=>{const fT=fR;bI[fT(0x27f)]&&Promise[fT(0x17b)](bI[fT(0x27f)]())['catch'](()=>{});},bK=()=>{const fU=fR;bH=!0x0,clearInterval(bG),aM[fU(0x361)](bB),bJ();};bA['on'](fR(0x155),bK),bB['on']('close',bK),aM[fR(0x254)](bB);try{for(;!bH;){let bL=await bI['next']();if(bL[fR(0x2cd)]||bH)break;let bM=bL[fR(0x149)];if(!bM)continue;let bN=bM[fR(0x190)]||'',bO=bM[fR(0x1df)]||{},bP=bN[fR(0xca)]('permission.')===0x0;bF&&!bP&&bO[fR(0x209)]&&bO[fR(0x209)]!==bF||bB['write']('data:\x20'+JSON[fR(0x133)]({'type':bN,'data':bO})+'\x0a\x0a');}}catch{}finally{if(clearInterval(bG),bJ(),!bH)try{bB['end']();}catch{}}}function br(bA,bB){const fV=eW;let bC=bA[fV(0x17e)]||'/';if(!aw(bA))return M(bB,0x193,{'ok':!0x1,'message':fV(0x166)});if(bC===fV(0x30f))return P(bB,fV(0xfc),fV(0x134));if(bC===fV(0x1f5))return P(bB,fV(0x36d),fV(0x162));if(bC===fV(0x1ec))return P(bB,'panel.css',fV(0xb6));if(bC==='/panel.js')return P(bB,fV(0x2fb),'application/javascript');if(bC===fV(0xe3))return P(bB,fV(0x90),fV(0xb6));if(bC===fV(0x8c))return P(bB,fV(0xb7),'application/javascript');if(bC==='/debug.css')return P(bB,fV(0x22c),fV(0xb6));if(bC===fV(0x2a7))return P(bB,fV(0x29e),fV(0x134));if(bC===fV(0xf6))return P(bB,fV(0xde),fV(0xb6));if(bC===fV(0x2b5))return P(bB,'account.js',fV(0x134));if(bC===fV(0x180))return P(bB,fV(0x2e1),fV(0xb6));if(bC===fV(0xc3))return P(bB,fV(0x27c),fV(0x134));if(bC==='/hljs.js')return P(bB,'hljs.js',fV(0x134));if(bC===fV(0x16e))return P(bB,fV(0x2c7),fV(0x134));if(bC==='/snapdom.js')return Q(bB);if(bC['split']('?')[0x0][fV(0xca)](fV(0x234))===0x0){bh(bA,bB,bC)[fV(0x29a)](bD=>{const fW=fV;if(bB[fW(0xf0)]){try{bB[fW(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD[fW(0x311)]?bD[fW(0x311)]:String(bD)});});return;}if(bC[fV(0xeb)]('?')[0x0]===fV(0xff)){aD(bA,bB)['catch'](bD=>{const fX=fV;if(bB[fX(0xf0)]){try{bB[fX(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD[fX(0x311)]?bD[fX(0x311)]:String(bD)});});return;}if(bC[fV(0xeb)]('?')[0x0][fV(0xca)](fV(0xa5))===0x0){(bC[fV(0xeb)]('?')[0x0]===fV(0xb8)?aF(bA,bB,bC):aE(bA,bB,bC))['catch'](bD=>{const fY=fV;if(bB[fY(0xf0)]){try{bB[fY(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD['message']?bD[fY(0x311)]:String(bD)});});return;}if(bC[fV(0xca)]('/api/')===0x0){bp(bA,bB,bC)[fV(0x29a)](bD=>{const fZ=fV;if(bB['headersSent']){try{bB[fZ(0x2d7)]();}catch{}return;}if(bD&&bD['code']===fZ(0x335))return aQ(bB,bD);let bE=bD&&bD[fZ(0x311)]?bD[fZ(0x311)]:String(bD),bF=/not found|NoSuchKey|no such/i[fZ(0x320)](bE);M(bB,bF?0x194:0x1f4,{'ok':!0x1,'message':bE});});return;}M(bB,0x194,{'ok':!0x1,'message':fV(0x331)+bC});}let bs=null;async function bu(bA,bB){const g0=eW;let bC=((await aO(bA))['data']||[])['filter'](bG=>bG['enabled']!==!0x1),bD=bB?bC[g0(0x1c8)](bG=>bG[g0(0x364)]===bB[g0(0x364)]&&bG[g0(0x1a6)]===bB['id']):aW(bC),bE=bD&&bD[g0(0x327)]&&bD['limit']['context'];if(!bE)return;let bF=l[g0(0x2c2)](bE);l[g0(0x326)](aK,bF)&&console[g0(0xb0)](g0(0x34c)+(bB?bB[g0(0x364)]+'/'+bB['id']:'\u9ED8\u8BA4')+g0(0x16b)+bE+'\uFF09\uFF1A'+(bF?JSON[g0(0x133)](bF):g0(0x35f)));}function bv(bA,bB){const g1=eW;return ad=!!(bB||{})[g1(0x144)],aP()[g1(0x29a)](()=>{}),ad&&aP()[g1(0x301)](async function(bC){if(aJ)try{await bu(bC);}catch{}return as(bC);})[g1(0x29a)](()=>{}),bs=ba(bA),bs;}function bw(){const g2=eW;if(bs){bs[g2(0x1b9)]['forEach'](bA=>{try{bA['terminate']();}catch{}});try{bs[g2(0x155)]();}catch{}bs=null;}aM[g2(0x203)](bA=>{try{bA['destroy']();}catch{}}),aM['clear']();}function bx(){const g3=eW;return[{'tag':g3(0x10a),'attrs':{'src':g3(0x138)},'injectTo':'head-prepend'},{'tag':'script','attrs':{'src':'/aiwith/widget.js','defer':!0x0},'injectTo':g3(0x91)}];}return{'handle':br,'attachRuntime':bv,'close':bw,'transformIndexHtml':bx,'writeDevArtifacts':bi,'writeAgentPlugin':bl,get 'root'(){return aK;},get 'rootOk'(){return aJ;}};}d[eE(0x1ae)]={'createBridge':Z,'composePageContextSuffix':Y};}());}),Hn=ge((c,d)=>{const g4=d8;J();var {createBridge:e}=Rn();d[g4(0x1ae)]=function(g){const g5=g4;let h=e(g||{});return{'name':g5(0x298),'configureServer'(i){const g6=g5;h['rootOk']&&(h['attachRuntime'](i[g6(0x284)],{'devServer':!!(i&&i[g6(0x222)])}),h[g6(0x2b6)](i),i[g6(0x265)][g6(0x208)](g6(0x33e),(j,k)=>h[g6(0x1c6)](j,k)),i[g6(0x284)]&&i[g6(0x284)]['on'](g6(0x155),()=>h[g6(0x155)]()));},'transformIndexHtml'(){const g7=g5;return h[g7(0x1ca)]?h[g7(0x151)]():[];}};};});J(),(function(){const g8=d8;let c=require('path'),d=require('fs'),e=vn(),g=en(),i=wn(),j=Sn(),k=En(),l=_n(),m=Hn(),n=[g8(0x94),g8(0x12f),g8(0x1af),'oss',g8(0xa6)];module[g8(0x1ae)]=({core:p=g8(0x292),command:r,plugins:s=[],obfuscate:t=!0x1,ROOT:u,port:z,name:F,ws:I,apps:N={},moduled:Q,aiwith:W=!0x0,aiwithRoot:X,factoryOrigin:Y,aiwithRemote:a0=!0x1,mcpDisable:a1,mcpAllow:a2,ai_gateway:a3})=>{const g9=g8;let a4=r===g9(0xbe),a5=r==='build'&&n[g9(0x10e)](process.env.TARGET)?process.env.TARGET:'',a6=c['resolve'](u,g9(0x2de)),a7=(d['existsSync'](a6)?d[g9(0x36a)](a6):[])[g9(0x1b6)](ai=>ai[g9(0x268)](g9(0x7c)))[g9(0x245)](ai=>ai[g9(0x2f2)](/\.js$/,''))[g9(0x20c)](),a8=a7[0x0]||g9(0x177),a9=a7[g9(0x75)](0x1)[g9(0x245)](ai=>c['resolve'](a6,ai+g9(0x7c))),aa={[a8]:c[g9(0x17b)](a6,a8+g9(0x7c))},ab=JSON[g9(0x24a)](d[g9(0x7f)](c[g9(0x17b)](u,g9(0x143)),g9(0x33b))),ac=Q?c[g9(0x17b)](u,'..','vue',g9(0xd3),ab['name']):c['resolve'](u,g9(0x9a)),ad=a4?l():null,af=g9(0x1dc),ag={};a4&&(ag[g9(0x170)]={'target':'http://127.0.0.1:'+z,'secure':!0x1,'changeOrigin':!0x0},ag['/do']={'target':g9(0x29b)+z,'secure':!0x1,'changeOrigin':!0x0},ag[g9(0xc4)]={'target':g9(0xe9),'secure':!0x1,'changeOrigin':!0x0},ag['/'+F+'/']={'target':g9(0x29b)+z,'secure':!0x1,'changeOrigin':!0x0,'compress':!0x1,'headers':{'Content-Type':'no-transform'},'ws':!!I},ag[g9(0x152)]||(ag['/kooteam/']={'target':af,'secure':!0x1,'changeOrigin':!0x0}),Object[g9(0xdb)](N)[g9(0x203)](ai=>{const ga=g9;let aj=N[ai]+'';aj[ga(0xca)](':')===-0x1&&(aj=ga(0x29b)+aj),ag['/'+ai+'/']={'target':aj,'secure':!0x1,'changeOrigin':!0x0};}));let ah=JSON[g9(0x133)](a4?g9(0x199):'production');return{'root':u,'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1,'process.env':'{}','process.env.NODE_ENV':ah},'optimizeDeps':{'rolldownOptions':{'moduleTypes':{'.js':g9(0x1e4)},...ad?{'plugins':[ad[g9(0x74)]]}:{}},'exclude':['vue',g9(0x343),g9(0x353),g9(0x157)]},'plugins':[...s,k({'isDev':a4}),g({'outDir':ac}),j({'outDir':ac,'extraEntries':a9,'ROOT':u,'srcRoot':a6}),t&&i({'outDir':ac}),e({'target':a5,'ROOT':u,'name':F,'isDev':a4,'core':p}),a4&&W!==!0x1&&m({'ROOT':u,'name':F,'aiwithRoot':X,'kooteamOrigin':af,'factoryOrigin':Y,'aiwithRemote':a0,'mcpDisable':a1,'mcpAllow':a2,'ai_gateway':a3})]['filter'](Boolean),'resolve':{'extensions':['.js','.vue',g9(0x355),g9(0x332)],'alias':{'@':c[g9(0x17b)](u,g9(0x2de)),'@icons':c[g9(0x17b)](u,g9(0xd6)),...ad?{'vue':ad[g9(0xf9)]}:{}}},'css':{'cssCodeSplit':!0x1},'server':{'host':'0.0.0.0','open':!0x0,'cors':!0x0,'allowedHosts':!0x0,'hmr':F!=='thor','proxy':ag},'build':{'minify':g9(0x23c),'target':g9(0x1ba),'sourcemap':!0x1,'emptyOutDir':!0x0,'copyPublicDir':!0x1,'outDir':ac,'chunkSizeWarningLimit':0x200,'lib':{'entry':aa,'formats':[g9(0x15f)],'name':'zen','fileName':()=>a8+g9(0x7c),'cssFileName':a8},'rolldownOptions':{'external':['vue',g9(0x353),g9(0x343),'vant'],'output':{'globals':{'vue':'Vue','vue-router':g9(0x2ba),'element-plus':g9(0x201),'vant':g9(0x157)},'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':g9(0x24f)}}}}}};};}());
|